#1 MongoDB基本概念和特點

1.MongoDB的基本特點

  1. 非關系型數據庫,基于 Document data model(文檔數據模型)
  2. MongoDB以 BSON (BinaryJSON) 格式存儲數據,類似于 JSON 數據形式
  3. 關系型數據庫使用 table (tables of rows)形式存儲數據,而MongoDB使用 collections (collections of documents)
  4. 支持 臨時查詢(ad hoc queries): 系統不用提前定義可以接收的查詢類型
  5. 索引通過 B-tree 數據結構, 3.2版本的WiredTiger 支持 log-structured merge-trees(LSM)
  6. 支持索引和次級索引(secondary indexes): 次級索引是指文檔或row有一個 主鍵(primary key)作為索引,同時允許文檔或row內部還擁有一個索引,提升查詢的效率,這也是MongoDB比較大的一個特點
  7. 無架構(schema-less)
  8. MongoDB中的 document 相當于關系型數據庫中的 row; document 的集合稱之為 collection , 相當于關系型數據庫中的 table
MongoDB和關系型數據庫的區別.jpg

2.副本(Replication)

MongoDB通過拓撲學(replica set 副本集) 提供數據庫副本。

副本集的功能:

  • 副本集將數據分布在2個或多個機器上,用于自動故障轉移(automatic failover)和冗余
  • 擴大數據庫的讀取能力(scale database reads),這對讀入密集(read-intensive)的應用,可以通過副本集群方式分散數據庫的讀取

包含MongoDB服務的副本集通常分布在分散的物理設備上,通常稱之為 node (節點)

  • 在特定的時間,某個副本集作為主節點(primary node), 其余的副本集作為次級節點(secondary node)
  • primary node: 支持讀,寫
  • secondary node: 只支持讀取
  • 副本集最大的特點就是支持自動故障轉移,如果主節點出錯,則某個次級節點將變為主節點,等到出錯節點修復,將自動變為次級節點
#1副本集節點.png

3.速度和穩定性(speed and durability)

在數據庫領域,speed和durability存在一個相反的關系,write speed可以理解為 在給定時間單位幀inserts, updates, deletes 的容量。
durability 表示確保寫入操作變為持久數據的可靠級別。

數據庫設計者經常需要在讀寫速度和穩定性之間做出平衡決定。MongoDB這2者之間的平衡在于 寫入的語義(write semantics)是否開啟日志(enable journaling)

4.規模縮放(Scaling) 和 分片(shard)

分為:

  • 垂直縮放(vertically scaling): 比如更快的磁盤讀寫速度,更多內存,更強大的CPU
  • 水平縮放(horizontally scaling): 也稱之為 scaling out, 比如增加設備的數量

MongoDB是的水平縮放可控,通過基于范圍分區機制(range-based partitioning mechanism), 也稱之為sharding(分片),自動的掌握數據在不同節點的分布。除了基于范圍的分片機制,還有基于 hash-tag-based的分片機制。

分片系統處理其它的分片節點,同時使用自動故障轉移。獨立的分片由至少包含2個節點的副本集組成,這樣確保了單節點失敗時的自動修復

更多關于scaling可以參考這篇文章: How to scale a Nodejs app based on number of users

4.命令行工具

MongoDB提供了很多命令行工具:

  • mongodumpmongorestore: 用于備份和修復數據庫,mongodump將數據庫以原生的 BSON格式存儲數據庫數據,因此最好只用于備份,優勢在于可熱備份(hot backup), 然后 mongorestore 能夠很容易的恢復
  • mongoimportmongoexport: 導入和導出 JSON, CSV, TSV 數據。mongoimport 能夠很好的用于初始數據的導入
  • mongostat: 類似于 iostat,這個工具用于輪詢MongoDB,系統提供有用的統計(stats),包括每秒操作次數(inserts, queries, updates等等操作),查看虛擬內存的分布,連接服務器的數量
  • mongotop: 類似于 top, 這個工具輪詢MongoDB,顯示讀取和寫入每個collection的總時間
  • mongoperf: 幫助理解磁盤操作當運行MongoDB實例時
  • mongooplog: 顯示MongoDB oplog
  • Bsondump: 將BSON文件格式轉換為人類可讀的格式,比如 JSON
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容