?mongodb與mysql命令對比傳統的關系數據庫一般由數據庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB是由數據庫(database)、集合(collection)、文檔對象(document)三個層次組成。MongoDB對于關系型數據庫里的表,但是集合中沒有列、行和關系概念,這體現了模式自由的特點。?
mongoDB 高可用 mongoDB支持在多個機器中通過異步復制達到故障轉移和實現冗余。多機器中 同一時刻只有一臺是用于寫操作。正是由于這個情況,為mongoDB提供了數據 一致性的保障。擔當主角色的機器能把讀操作分發給slaves/secondaries。
測試方案:用js腳本創建向一個collection里插入一百萬個文檔,測量mongo占用內存,硬盤數據文件大小(優化數據庫設計),插入時間,在一百萬條基礎上做find操作。內存:啟動mongodb后,內存: 插入100w條數據過程: 未導入數據: 導入數據: 做查詢:導入數據: 創建100w個文檔,時間2分26秒左右(測試5次)Find查詢:未建索引情況下,測試5次,擊中索引,基本只需要0ms(測試不到),平均3.4秒。
mongoDB部署 集群包含一個或者多個shard shard存儲數據集合的一部分數據 shard為replica set集群 一個replica set由一個primary和多個secondary和arbiter(可選)組成 如果primary失效,自動選舉一個secondary為primary 寫入請求只能在primary上做單點寫入維持數據一致性 讀取請求會發送給primary,最終的讀取操作分布在多個secondary上 數據讀取和寫入請求自動路由到集群的shard 集群包含多個配置服務器 數據分區信息(哪些數據存放在哪些shard上) 集群中包含多個請求路由器 Mongos,接收數據寫入讀取請求,并將請求路由到目標shard上 一個路由器可以服務多個客戶端app App通過程序擴展接口連接mongos
比較全面的介紹mongodb數據的優化;MongoDB高可用架構mongoDB高可用mongoDB支持在多個機器中通過異步復制達到故障轉移和實現冗余。多機器中同一時刻只有一臺是用于寫操作。正是由于這個情況,為mongoDB提供了數據一致性的保障。擔當主角色的機器能把讀操作分發給slaves/secondaries。mongodb高可用可用分兩種
MongoDB是一個基于分布式文件存儲的數據庫,由C++語言編寫,旨在為WEB應用提供可擴展的高性能數據存儲解決方案。其名字來自humongous這個單詞的中間部分,從名字可見其野心所在就是海量數據的處理。本文是一個MongoDB的入門級教程,手把手的教會讀者使用MongoDB,并將學習過程中可能遇到的問題一一列舉。本文不是用長篇的文字來理論性描述MongoDB的各方面知識,而是用圖文并茂的方法來討論MongoDB,希望用最短的時間使開發人員熟悉MongoDB。
MongoDB是一個面向文檔的數據庫系統。使用C++編寫,不支持SQL,但有自己功能強大的查詢語法。MongoDB使用BSON作為數據存儲和傳輸的格式。BSON是一種類似JSON的二進制序列化文檔,支持嵌套對象和數組。MongoDB很像MySQL,document對應MySQL的row,collection對應MySQL的table。Windows下MongoDB操作MongoDB在Windows上的安裝運行很方便。
mongoDB支持在多個機器中通過異步復制達到故障轉移和實現冗余。多機器中 同一時刻只有一臺是用于寫操作。正是由于這個情況,為mongoDB提供了數據 一致性的保障。擔當主角色的機器能把讀操作分發給slaves/secondaries。采用Replica Sets的集群方案,這個方案與Master-Slave Replication的集群方案類 似,數據服務器也有主從的區別。優點是主數據服務器或從數據服務器掛掉后,會自動 切換主數據庫,不用人工干預,穩定性比Master-Slave Replication。缺點是需要客戶 端的驅動支持,因為客戶端在與主服務器連接失敗后,會向集群的其他服務器發一條特 殊的指令詢問,誰是新的主數據服務器。集群的服務器在不做分區的前提下,分成三 種,主數據服務器,從數據服務器,選舉服務器(只做投票不存儲數據),若做數據分 區還有配置服務器。
MongoDB集群中包含一個自動分片模塊("mongos").自動分片可以用于構建一個大規模的可擴展的數據庫集群,這個集群可以并入動態增加的機器。自動建立一個水平擴展的數據庫集群系統,將數據庫分表存儲在sharding的各個節點上。在一個mongodb的集群中包括一些shards(mongod進程),mongos的路由進程,一個或多個config服務器。sharding是一種對大規模數據存儲的一種策略,關于sharding的詳細信息可以查看這里。也許有人會問,為什么需要做這種策略,因為在一個大型系統中最后的瓶頸會落在網絡的帶寬和磁盤的讀寫上,如果將數據分布在多個機器上的多個磁盤上,將會系統數據的處理能有所提高。
MongoDB是一個高性能,開源,無模式的文檔型數據庫,是當前NoSql數據庫中比較熱門的一種。它在許多場景下可用于替代傳統的關系型數據庫或鍵/值存儲方式。
知不覺房產系統已經使用MongoDB一年多了,記得一年多以前,正是NOSQL被熱炒時,MongoDB更是作為NOSQL中的佼佼者,被炒得火燙,也應該就在當時被這股火燙著了,所以義無反顧的選擇了MongoDB,現在想想當時確實有些沖動了,當時MongoDB的資料還是比較少,更別說中文資料了,后來還出現使用MongoDB成功應用的范例Foursquare的宕機事件。現在確實應該很感謝MongoDB為我們的系統服務了一年了,在這一年的時間里,確實出現過不少的小問題,特別是在管理操作上,這大概也是因為MongoDB在系統維護上不如Mysql那樣有著各種的業界實踐,往往就只能通過管理員自己去摸索。
MongoDB 快速入門
介紹到了在MongoDB的控制臺完成MongoDB的數據操作,通過前一篇文章我們對MongoDB有了全面的認識和理解。現在我們就用Java來操作MongoDB的數據。
MongoDB是一款開源,高性能,可擴展,無模式,面向文檔(與JSON類似的數據模式)的數據庫。后文有詳細說明。Cassandra是一個網絡社交云計算方面理想的數據庫。是有一堆數據庫節點共同構建的一個分布式網絡服務。對Cassandra的一個寫操作,會被復制到其它節點上去,讀操作時,會被路由到某個節點去讀取。
mongodb 簡單使用
Mongo是一個高性能,開源,無模式的文檔型數據庫,它在許多場景下可用于替代傳統的關系型數據庫或鍵/值存儲方式。Mongo使用C++開發,提供了以下功能: ◆面向集合的存儲:適合存儲對象及JSON形式的數據。 ◆動態查詢:Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。 ◆完整的索引支持:包括文檔內嵌對象及數組。Mongo的查詢優化器會分析查詢表達式,并生成一個高效的查詢計劃。 ◆查詢監視:Mongo包含一個監視工具用于分析數據庫操作的性能。 ◆復制及自動故障轉移:Mongo數據庫支持服務器之間的數據復制,支持主-從模式及服務器之間的相互復制。復制的主要目標是提供冗余及自動故障轉移。 ◆高效的傳統存儲方式:支持二進制數據及大型對象(如照片或圖片)。 ◆自動分片以支持云級別的伸縮性(處于早期alpha階段):自動分片功能支持水平的數據庫集群,可動態添加額外的機器。 MongoDB的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RDBMS系統(豐富的功能)架起一座橋梁,集兩者的優勢于一身。
??Java端要向mongoDB插入java對象時,我用了到morphia開源組件。官網:code.google.com/p/morphia ??只寫了DAO層的java代碼,能夠滿足常用的增、刪、改、查、分頁等操作。