MongoDB入門一:基本概念
一.資料庫的分類
目前的資料庫主要分為關係型資料庫和非關係型資料。
關係型資料庫:
-
通過SQL結構化查詢和儲存語句,最常見的就是Oracle和MySQL
-
保持資料一致性理論,遵循ACID原理
非關係型資料庫:
- Not Only SQL,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱,典型產品memcached (純記憶體),redis(持久化快取),mongodb(文件的資料庫)
- 用於超大規模資料的儲存,這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件
- CAP定理 ,高效能,高可用性和可伸縮性
二.MongoDB的概念
MongoDB是一個開源文件資料庫(Document Database)
1.主要特性
高效能
MongoDB具有高效能的資料儲存功能。尤其是下面兩方面:
- 對嵌入式資料模型的支援減少了資料庫系統的I/O互動
- 文件和資料的鍵可以建立索引,提高查詢效率
豐富的查詢語言
MongoDB提供豐富的查詢語言,除了支援增刪改查(CRUD)操作,還支援以下操作:
- 資料聚合
- 文字搜尋和地理空間搜素
高可用性
MongoDB的複製工具,也稱為副本集,有如下特點:
- 自動的故障轉移機制
- 資料備份
水平擴充
MongoDB的核心功能之一就是水平可擴充套件:
- 通過分片將資料分佈在叢集機器中
- 從3.4開始,MongoDB支援基於碎片鍵建立資料區域。在一個平衡的叢集中,MongoDB只將區域覆蓋的讀寫定向到區域內的碎片。有關更多資訊,請參閱
支援多儲存引擎
- WiredTiger儲存引擎(包括對靜止加密的支援)
- 記憶體儲存引擎
- MMAPv1儲存引擎(MongoDB 4.0棄用)
2.文件、集合和資料庫的概念
文件:
文件是基本單位,類似於關係資料庫中的行,比行稍微複雜。多個鍵值對有序的放在一起就構成了文件。格式如下:
{“name”: “mongo”, “value”: “hello”}
key: 必須為字串型別。
value:可以包含如下型別。
● 基本型別,例如,string,int,float,timestamp,binary 等型別。
● 一個document。
● 陣列型別。
使用文件的優勢:
- 在許多程式語言中,文件對應其本地的資料型別
- 嵌入式的文件和陣列減少了資料連線的代價
- 動態模式的支援使其靈活多變
集合:
集合就是一組文件,類似於關係資料庫中的表,但是可以儲存不同結構的文件。例如,{“hello,word”:“Mike”}和{“foo”: 3},它們的鍵不同,值的型別也不同,但是它們可以存放在同一個集合中,也就是不同模式的文件都可以放在同一個集合中。
資料庫:
多個文件構成集合,多個集合構成資料庫。一個Mongo例項可以承載多個數據庫,資料庫之間可以看做相互獨立,它們有獨立的許可權控制。在磁碟上,不同的資料庫存放在不同的檔案中。
參考連結: