MongoDB是一個高效能、開源、無模式的文檔型資料庫,設計用於提供高效能、水平可擴性、高可用性和進階可查詢性,為Web應用提供可擴充的高效能資料儲存解決方案。MongoDB的名稱取自單詞”humogous”中間的幾個字元,是很大、巨大的意思。該資料庫由10gen公司開發並提供支援人員,它屬於NoSQL資料庫家族中的一員,在許多情境下可以用來替代傳統光系型資料庫或key/value儲存方式。
MongoDB使用C++開發實現,不支援SQL,但擁有功能強大的查詢文法,其文法有點類似物件導向的查詢語言,幾乎可以實作類別似關聯式資料庫表查詢的絕大部分功能。
MongoDB使用BSON(Binary JSON)作為資料存放區和傳輸的單位。BSON是一種類似JSON的二進位序列化文檔,支援嵌套對象和數組。MongoDB很像關聯式資料庫MySQL,文檔(Document)對應MySQL的行(row),集合(Collection)對應MySQL中的表(Table)。MongoDB可以運行於Windows、Linux、OS X和Solaris等多種作業系統平台上,安裝部署也比較簡單。
MongoDB的設計目標是高效能、可擴充、易部署、易使用,儲存資料非常方便。其主要功能特性如下:
(1) 面向集合儲存,容易儲存物件類型的資料。在MongoDB中資料被分組儲存在集合中,集合類似RDBMS中的表,一個集合可以儲存無限多的文檔。
(2) 模式自由,採用無模式結構儲存。在MongoDB裡的集合中,儲存的是無模式的文檔,採用無模式儲存資料是集合(Collection)區別於RDBMS中的表(Table)的一個重要特徵。
(3) 支援完全索引,可以在任意屬性上建立索引,包含內部對象。MongoDB的索引和RDBMS的索引基本一樣,可以在指定屬性、內部對象上建立索引以提高查詢的速度。除此之外,MongoDB還可以提供建立基於地理空間的索引的能力。
(4) 支援查詢。MongoDB支援豐富的查詢操作,MongoDB幾乎支援SQL中的大部分查詢。
(5) 強大的彙總工具。MongoDB除了提供豐富的查詢功能外,還提供強大的彙總工具,如count、group等,支援使用MapReduce完成複雜的彙總任務。
(6) 支援複製和資料恢複。MongoDB支援主從複製機制,可以實現資料備份、故障恢複、讀擴充等功能。而基於複本集的複製機制提供了自動故障恢複的功能,確保了叢集資料不會丟失。
(7) 使用高效的位元據儲存,包括大型物件(如視頻)。使用二進位格式儲存,可以儲存任何類型的資料對象。
(8) 自動處理分區,以支援雲端運算層次的擴充。MongoDB支援叢集自動切分資料,對資料進行分區可以使叢集儲存更多的資料,實現更大的負載,也能保證儲存的負載平衡。
(9) 支援Perl、PHP、Java、C#、JavaScript、Ruby、C和C++語言的驅動程式,Mon提供了當前所有主流開發語言的資料庫驅動包,開發人員使用任何一種主流開發語言都可以輕鬆編程,實現訪問MongoDB資料庫。
(10) 檔案儲存體格式為BSON(JSON的一種拓展)。BSON是二進位格式JSON的簡稱,BSON支援文檔和數組的嵌套。
(11) 可以通過網路遠端存取MongoDB資料庫。