1. 程式人生 > >Mongodb-非關系型的數據庫

Mongodb-非關系型的數據庫

bms AR 面向 AS tle 分組 進制數 ext 得到

1.mongodb的簡介

  MongoDB(http://www.mongodb.org/)是一個高性能,開源(代震軍大牛正在研究MongoDB的源碼,大家可以去看看http://www.cnblogs.com/daizhj/),模式自由(schema-free)的文檔型數據庫,它在許多場景下可用於替代傳統的關系型數據庫或鍵/值(key-value)存儲方式。MongoDB使用C++開發,

2.他的特性有哪些?

  (官方語言都是百度所得)

  • 面向集合的存儲:適合存儲對象及JSON形式的數據。
  • 動態查詢:MongoDB支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  • 完整的索引支持:包括文檔內嵌對象及數組。MongoDB的查詢優化器會分析查詢表達式,並生成一個高效的查詢計劃。
  • 查詢監視:MongoDB包含一個監視工具用於分析數據庫操作的性能。
  • 復制及自動故障轉移:MongoDB數據庫支持服務器之間的數據復制,支持主從模式及服務器之間的相互復制。復制的主要目標是提供冗余及自動故障轉移。
  • 高效的傳統存儲方式:支持二進制數據及大型對象(如照片或圖片)。
  • 自動分片以支持雲級別的伸縮性(處於早期alpha階段):自動分片功能支持水平的數據庫集群,可動態添加額外的機器。 模式自由(schema-free),意味著對於存儲在MongoDB數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫裏。
  • 支持Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++語言的驅動程序,社區中也提供了對Erlang及.NET等平臺的驅動程序。

3.都是適合什麽場合使用的?

  • 網站數據:MongoDB非常適合實時的插入,更新與查詢,並具備網站實時數據存儲所需的復制及高度伸縮性。 緩存:由於性能很高,MongoDB也適合作為信息基礎設施的緩存層。在系統重啟之後,由MongoDB搭建的持久化緩存層可以避免下層的數據源過載。

  • 大尺寸,低價值的數據:使用傳統的關系型數據庫存儲一些數據時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統的文件進行存儲。

  • 高伸縮性的場景:MongoDB非常適合由數十或數百臺服務器組成的數據庫。MongoDB的路線圖中已經包含對MapReduce引擎的內置支持。

  • 用於對象及JSON數據的存儲:MongoDB的BSON數據格式非常適合文檔化格式的存儲及查詢。 所謂“面向集合”(Collenction-Orented),意思是數據被分組存儲在數據集中,被稱為一個集合(Collenction)。每個集合在數據庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合的概念類似關系型數據庫(RDBMS)裏的表(table),不同的是它不需要定義任何模式(schema)。

4.mongodb的語法總結和MySQL的對比

5.mongodb數據庫的優點

  快速!(當然,這和具體的應用方式有關,通常來說,它比一般的關系型數據庫快5位左右。)
很高的可擴展性 – 輕輕松松就可實現PB級的存儲(但是可能我們並不需要PB級的存儲,10TB可能就夠了)
他有一個很好的 replication 模式 (replica sets)
有很完善的Java API
他的存儲格式是Json的,這對Java來說非常好處理,對javascirpt亦然。
運維起來非常方便,你不用專門為它安排一個管理員。
它有一個非常活躍的社區(我提出的一個bug在20分鐘內就能得到修復。多謝Elliot)
他的版本控制非常清楚。

Mongodb-非關系型的數據庫