MongoDB是一個基於分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:
*面向集合存儲,易存儲對象類型的數據。
*模式自由。
*支持動態查詢。
*支持完全索引,包含內部對象。
*支持查詢。
*支持復制和故障恢復。
*使用高效的二進制數據存儲,包括大型對象(如視頻等)。
*自動處理碎片,以支持雲計算層次的擴展性
*支持RUBY,PYTHON,JAVA,C++,PHP等多種語言。
*文件存儲格式為BSON(一種JSON的擴展)
*可通過網絡訪問
使用原理:
所謂“面向集合”(Collenction-Oriented),意思是數據被分組存儲在數據集中,被稱為一個集合(Collenction)。每個集合 在數據庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合的概念類似關系型數據庫(RDBMS)裡的表(table),不同的是它不需要定義任 何模式(schema)。
模式自由(schema-free),意味著對於存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫裡。
存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用於唯一標識一個文檔,為字符串類型,而值則可以是各種復雜的文件類型。我們稱這種存儲形式為BSON(Binary Serialized dOcument Format)。
MongoDb並不能完全替代MySQL 等的關系型數據庫,MongoDB主要用於大型的網站,因為丟棄關系的約束就可以讓服務器執行效率更高,避免數據庫因為關系的繁雜給數據庫帶來的壓力。
使用MongoDB 會吃掉更多的硬盤,因為每條數據都要盡量不去聯系其他collection(相當於mysql的表)。現在硬盤價格如此便宜,用的再多也無妨了。
使用mongoDB會讓程序員在處理關系上稍微多加了點工作。
使用mongo靈活性非常強,因為你可以用mongo::command 定義一個查詢,讓數據庫成為程序員的定制。
Very easy to install.
PHP module available.
Very easy replication, including master-master support. In testing this caught up with our live DB very quickly and stayed in sync without difficulty.
Automated sharding being developed.
Good documentation.
作者“tongxiaoming520”