mongo取自“humongous”(海量的),是開源的文檔數據庫──nosql數據庫的一種。 MongoDB是一種面向集合(collection)的,模式自由的文檔(document)數據庫。 面向集合是說數據被分成集合的形式,每個集合在數據庫中有惟一的名稱,集合可以包含不限數目的文檔。除了模式不是預先定義好的,集合與RDBMS中的表概念類似,雖然二者并不是完全對等。數據庫和集合的創建是“lazy”的,即只有在第一個document被插入時集合和數據庫才真正創建——這時在磁盤的文件系統里才能看見。
Mongo 是一個高性能,開源,無模式的文檔型數據庫,它在許多場景下可用于替代傳統的關系型數據庫或鍵/值存儲方式。Mongo使用C++開發。
該文檔是翻譯自文檔[mongodb-docs-2010-10-24.pdf]的[Java Language Center]章節,根據自己的理解整理而成。?希望能給像我這樣開始接觸的朋友一點幫助,同時也做個備忘,因為是剛剛學習,其中的很多功能目前都用不上,以后萬一有什么功能不太清楚,也可以直接查閱該文檔了。 MongoDB Java Driver簡單操作?一、Java驅動一致性??MongoDB的Java驅動是線程安全的,對于一般的應用,只要一個Mongo實例即可,Mongo有個內置的連接池(池大小默認為10個)。?
MongoDB學習筆記
mongodb的Java驅動API。
Mongodb集群搭建。Mongodb一共有三種集群搭建的方式:ReplicaSet(副本集)Sharding(切片)Master-Slaver(主從)ReplicaSet和Sharding整合搭建ReplicaSet(副本集)Mongodb(M)表示主節點,Mongodb(S)表示備節點,Mongodb(A)表示仲裁節點。主備節點存儲數據,仲裁節點不存儲數據。
如何用Java操作MongoDB上一篇文章介紹到了在MongoDB的控制臺完成MongoDB的數據操作,通過前一篇文章我們對MongoDB有了全面的認識和理解。現在我們就用Java來操作MongoDB的數據。
長期以來我就對分布式系統原理與實踐非常感興趣,對于Mongodb我一直很好奇,最近終于有時間能動手實驗一把! 我在一臺Windows機器下搭建了一個 Replica Sets + Sharding 測試集群環境,以此作為我后續對于Mongodb更進一步學習的實驗平臺。
關于MongoDB的好處,優點之類的這里就不說了,唯一要講的一點就是MongoDB中有三元素:數據庫,集合,文檔,其中“集合”就是對應關系數據庫中的“表”,“文檔”對應“行”。
MongoDB由C++寫就,其名字來自humongous這個單詞的中間部分,從名字可見其野心所在就是海量數據的處理。關于它的一個最簡潔描述為:scalable, high-performance, open source, schema-free, document-oriented database。MongoDB的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RDBMS系統(豐富的功能)架起一座橋梁,集兩者的優勢于一身。 ???
mongo取自“humongous”(海量的),是開源的文檔數據庫──nosql數據庫的一種。MongoDB是一種面向集合(collection)的,模式自由的文檔(document)數據庫。 面向集合是說數據被分成集合的形式,每個集合在數據庫中有惟一的名稱,集合可以包含不限數目的文檔。除了模式不是預先定義好的,集合與RDBMS中的表概念類似,雖然二者并不是完全對等。數據庫和集合的創建是“lazy”的,即只有在第一個document被插入時集合和數據庫才真正創建——這時在磁盤的文件系統里才能看見。
MongoDB的默認數據目錄是/data/db,它負責存儲所有的MongoDB的數據文件。在MongoDB內部,每個數據庫都包含一個.ns文件和一些數據文件,而且這些數據文件會隨著數據量的增加而變得越來越多。所以如果系統中有一個叫做foo的數據庫,那么構成foo這個數據庫的文件就會由foo.ns,foo.0,foo.1,foo.2等等組成
文檔式存儲的特色就是允許文檔對象的嵌套,這能夠使我們的實體數據在MongoDB的存在形式更加自然。
內容主從復制MongoDB支持的主從復制模式:一對多多對多多對一貌似很強大!主從復制 - 選項副本集就是具有自動故障恢復功能的主從集群副本集故障轉移集群副本集——特點老陳:最大的特點就是MongoDB的副本集機制還沒開發完成。
索引分片與自動分片分片,其實很容易!片鍵與片鍵選擇片鍵與片鍵選擇老陳:實際應用中應當各自權衡,而不是一味的追求哪個更好!分片集群的組成部分創建分片管理分片結語老陳:最近我團隊的項目進入了關鍵時期,耽擱了這么久才放出第九課,實在是很慚愧!
MongoDB集群方案(5個mongod實例)
當前架構為單shard+replica Set模式,雙服務器為雙Shard+Replica Set模式。同一個Shard中的primary和Secondary存儲內容一致。而雙Shard則是兩個Shard分布式存儲不同數據,備份由shard內部進行。 雙服務器中的兩個Shard各含一個primary ,一個secondary,和一個arbiter(arbiter的唯一作用是在primary 宕機后選舉新的primary時擁有投票權,用以使存活節點數大于50%,不包括50%,否則系統將整個down掉,以及在票數相同的情況下用以打破選舉的平衡,并不存儲和讀取數據)。
CAP(Consistency,Availabiity,Partition tolerance)理論告訴我們,一個分布式系統不可能滿足一致性,可用性和分區容錯性這三個需求,最多只能同時滿足兩個。關系型數據庫通過把更新操作寫到事務型日志里實現了部分耐用性,但帶來的是寫性能的下降。MongoDB等NoSQL數據庫背后蘊涵的哲學是不同的平臺應該使用不同類型的數據庫,MongoDB通過降低一些特性來達到性能的提高,這在很多大型站點中是可行的。因為MongoDB是非原子性的,所以如果如果應用需要事務,還是需要選擇MySQL等關系數據庫。<br><br>NoSQL數據庫,顧名思義就是打破了傳統關系型數據庫的范式約束。很多NoSQL數據庫從數據存儲的角度看也不是關系型數據庫,而是key-value數據格式的hash數據庫。由于放棄了關系數據庫強大的SQL查詢語言和事務一致性以及范式約束,NoSQL數據庫在很大程度上解決了傳統關系型數據庫面臨的諸多挑戰。
新建三個節點目錄,用于存節點數據及日志,內網兩臺實體機,三個mongodb進程,硬盤或機器宕掉,可以真正做到自動切換,自動故障恢復等管理操作。
mongoDB是什么MongoDB由10gen公司開發,是一個基于分布式文件存儲的數據庫,也可以闡述為一種強大、靈活、可擴展的數據存儲方式。功能及使用場景MongoDB功能豐富,包括;內置對MapReduce式聚合的支持,以及對地理空間索引的支持等等。具備支撐今天主流web應用的關鍵功能:索引、復制、分片、豐富的查詢語法,靈活的數據模型,于此同時還不犧牲速度。MongoDB適用于大數據量、高并發、弱事務的互聯網應用,內置的水平擴展機制提供從百萬