MongoDB簡介
MongoDB時一個高性能,開源,無模式的文檔型資料庫,時目前NoSQL資料庫中比較熱門的一種。它在需要場景下可用于替代傳統的關系型資料庫或鍵/值存儲方式
傳統的關系性資料庫一般由資料庫(database),表(table),記錄(record)三個層次概念組成,MongoDB則是由資料庫(database),集合(collection),文檔對象(document)三個層次組成,MongoDB對應關系型資料庫中的表,但是集合中沒有列,行和關系的概念,這展現了模式自由的特點
MongoDB的特點
高性能,易部署,易是喲個,存儲資料非常友善
MongoDB的功能
- 面向集合的存儲:适合存儲對象及JSON形式的存儲
- 模式自由
- 動态查詢:Mongo支援豐富的查詢表達式。查詢指令使用JSON形式的标記,可輕易查詢文檔中内嵌的對象及數組
- 完整的索引支援:包括文檔内嵌對象及數組。Mongo的查詢優化器會分析查詢表達式,并生成一個高效的查詢計劃
- 查詢監視:Mongo包含一個監視工具,用于分析資料庫操作的性能
- 複制及自動故障轉移:Mongo資料庫支援伺服器之間的資料複制,支援主-從模式及伺服器之間的互相複制。複制的主要目标時提供備援及自動故障轉移
- 高效的傳統存儲方式:支援二進制資料及大型對象(如圖檔)
- 自動分片及支援雲級别的伸縮性:自動分片功能支援水準的資料庫叢集,可動态添加額外的機器
- 自動處理碎片,以及支援雲計算層次的擴充性
- 支援Phthon,PHP,Ruby,C,C#,Javascript,Perl及C++語言的驅動程式,社群中也提供了對Erlang及.NET等平台的驅動程式
- 支援存儲格式為BSON(一種jJSON的擴充)
- 可通過網絡通路
- 支援完全索引,包含内部對象
MongoDB的适用場合
- 網絡資料:Mongo非常适合實施插入,更新與查詢,并具備網站實時資料存儲所需的複制及高度伸縮性
- 緩存:由于性能很高,是以Mongo也适合作為資訊基礎設施的緩存層。在系統重新開機之後,由Mongo搭建的持久化層可以避免下層的資料源過載
- 大尺寸,低價值的資料:使用傳統的關系型資料庫存儲一些資料時可能會比較昂貴。在次之前,很多時候程式員往往會選擇傳統的檔案進行存儲
- 高伸縮性的場景:Mongo非常适合由數十或數百台伺服器組成的資料庫。Mongo的路線圖中已經包含對MapReduce引擎的内置支援
- 對于及JSON資料的存儲:Mongo的BSON資料格式非常适合文檔化格式的存儲及查詢。