NoSQL介紹:
NoSQL數據管理系統是目前非常流行的一種非關系性、分布式、不支持ACID設計規范式的數據庫;NoSQL簡單的數據模型、元數據和數據分離、弱一致性、高吞吐量、高水平擴展能力和低端硬件集群使其流行的主要原因,而mongodb就是NoSQL數據庫一種非常流行的實現方式。
常見的NoSQL數據存儲模型 | |
列式模型 | 文檔類型 |
應用場景:在分布式文件系統之上提供支持隨機讀寫分離的分布式數據庫 典型產品:HBase、Hypertable、Cassandra |
應用場景:非強事務的web應用 典型產品:MongoDB、Elasticsearch、CouchDB 數據模型:鍵值模型,以文檔存儲 優點:數據模型無須事先定義 |
鍵值模型 | 圖式模型 |
應用場景: 內容緩存,用于大量并發數據訪問的高負載場景 典型產品:DynamoDB、Redis、Riak 數據模型:基于hash表實現的key-value 優點:查詢速度快 |
應用場景:社交網絡、推薦系統、關系圖譜 典型產品:Neo4j、Infinite Graph、TITAN 數據模型:圖式結構 優點:適用于圖式場景計算 |
MongoDB的復制功能有兩種類型:
第一種類型:master/slave模型,這類模型與MySQL模型基本相同
第二種模型:replica set復制集、副本集;服務于同一數據集的多個mongodb實例;與mysql的主從類似,但是要比mysql主從工作效率要高
特性:(1)至少三個節點,至少為奇數個節點
(2)當節點數不足時,使用arbiter(仲裁者)來參與
(3)heartbeat每2s中的信息監測以及自動失效轉移
MongoDB復制集中特殊節點的類型:
(1)0優先級的節點:冷備節點,不會被選舉成為主節點,但可以參與選舉
(2)被隱藏的節點:首先是一個0優先級的從節點,且對客戶端不可見
(3)延遲復制的節點:首先是一個0優先級的從節點,且復制時間落后于主節點一個固定時長
(4)arbiter:仲裁者,沒有數據,只負責仲裁
MongoDB的復制架構:
(1)oplog:
是存儲在local數據庫中,最小為1G,大小為固定的文件;同時又只有主節點才可以有寫入操作,而從節點不會有寫入操作;而local數據存放了數據集的所有元數據和oplog,用于存儲oplog的是一個名為oplog.rs的collection,oplog.rs的大小依賴于OS和文件系統;但其大小可以自定義(oplogSize)
(2)heartbeat: 用于監測各個節點復制時的信息
MongoDB復制過程:
(1)初時同步:initial sync
首先克隆所有數據庫
其次應用數據集的所有改變;復制oplog并應用于本地
最后為所有collection構建索引
(2)回滾后追趕:post-rollback catch-up
(3)切分塊遷移: sharding chunk mingratings
MongoDB的索引類型:
單字段索引、組合索引(多字段索引)、多鍵索引、空間索引、文本索引、hash索引
以上是本人對學習mongodb的一些總結,只總結了一些基礎知識,常用命令沒有總結。大家有什么好的建議多給提一下。O(∩_∩)O
原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/7727