MongoDB入門一之基本概念
一.資料庫的分類
目前的資料庫主要分為關係型資料庫和非關係型資料。
關係型資料庫:
- 通過SQL結構化查詢和儲存語句,最常見的就是Oracle和MySQL
- 保持資料一致性理論,遵循ACID原理
非關係型資料庫:
- Not Only SQL,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱,典型產品memcached (純記憶體),redis(持久化快取),mongodb(文件的資料庫)
- 用於超大規模資料的儲存,這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件
- CAP定理 ,高效能,高可用性和可伸縮性
二.MongoDB的概念
MongoDB是一個基於分散式檔案儲存的開源資料庫,由c++語言編寫。MongoDB 旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。它是非關係型資料庫中功能最豐富,最像關係型資料庫的。它支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是它支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
MongoDB 的設計目標是高效能、可擴充套件、易部署、易使用,儲存資料非常方便。其主要功能特性如下:
(1)面向集合儲存,容易儲存物件型別的資料。在MongoDB 中資料被分組儲存在集合中,集合類似RDBMS 中的表,一個集合中可以儲存無限多的文件。
(2)模式自由,採用無模式結構儲存。在MongoDB 中集合中儲存的資料是無模式的文件,採用無模式儲存資料是集合區別於RDBMS 中的表的一個重要特徵。
(3)支援完全索引,可以在任意屬性上建立索引,包含內部物件。MongoDB的索引和RDBMS 的索引基本一樣,可以在指定屬性、內部物件上建立索引以提高查詢的速度。除此之外,MongoDB 還提供建立基於地理空間的索引的能力。
(4)支援查詢。MongoDB 支援豐富的查詢操作,MongoDB 幾乎支援SQL中的大部分查詢。
(5)強大的聚合工具。MongoDB 除了提供豐富的查詢功能外,還提供強大的聚合工具,如count、group 等,支援使用MapReduce 完成複雜的聚合任務。
(6)支援複製和資料恢復。MongoDB 支援主從複製機制,可以實現資料備份、故障恢復、讀擴充套件等功能。而基於副本集的複製機制提供了自動故障恢復的功能,確保了叢集資料不會丟失。
(7)使用高效的二進位制資料儲存,包括大型物件(如視訊)。使用二進位制格式儲存,可以儲存任何型別的資料物件。
(8)自動處理分片,以支援雲端計算層次的擴充套件。MongoDB 支援叢集自動切分資料,對資料進行分片可以使叢集儲存更多的資料,實現更大的負載,也能保證儲存的負載均衡。
(9)支援Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++語言的驅動程式,MongoDB 提供了當前所有主流開發語言的資料庫驅動包,開發人員使用任何一種主流開發語言都可以輕鬆程式設計,實現訪問MongoDB 資料庫。
(10)檔案儲存格式為BSON(JSON 的一種擴充套件)。BSON 是對二進位制格式的JSON 的簡稱,BSON 支援文件和陣列的巢狀。
(11)可以通過網路遠端訪問MongoDB 資料庫。
MongoDB的基本概念有文件、集合和資料庫:
文件:
文件是基本單位,類似於關係資料庫中的行,比行稍微複雜。多個鍵值對有序的放在一起就構成了文件。格式如下:
{"name": "mongo", "value": "hello"}
key: 必須為字串型別。
value:可以包含如下型別。
● 基本型別,例如,string,int,float,timestamp,binary 等型別。
● 一個document。
● 陣列型別。
集合:
集合就是一組文件,類似於關係資料庫中的表,但是可以儲存不同結構的文件。例如,{“hello,word”:“Mike”}和{“foo”: 3},它們的鍵不同,值的型別也不同,但是它們可以存放在同一個集合中,也就是不同模式的文件都可以放在同一個集合中。
資料庫:
多個文件構成集合,多個集合構成資料庫。一個Mongo例項可以承載多個數據庫,資料庫之間可以看做相互獨立,它們有獨立的許可權控制。在磁碟上,不同的資料庫存放在不同的檔案中。
參考連結:
https://baike.baidu.com/item/mongodb/60411
https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
https://blog.csdn.net/xin_ge_cheng_xu/article/details/79663549