摘要:查詢結果支持操作。文件存儲該軟件實現了一個稱為的協議,這個協議是用來幫助從數據庫中存儲和獲取文件的。支持被稱為定量集合的定長集合。目前提供多種語言的。在系統重啟之后,由搭建的持久化緩存層可以避免下層的數據源過載。
MongoDB是一個開源的,高性能,無模式(或者說是模式自由),使用C++語言編寫的面向文檔的數據庫。正因為MongoDB是面向文檔的,所以它可以管理類似JSON的文檔集合。又因為數據可以被嵌套到復雜的體系中并保持可以查詢可索引,這樣一來,應用程序便可以以一種更加自然的方式來為數據建模。
下面介紹MongoDB的特點:
統一的UTF-8編碼:不是UTF-8編碼集合的數據也可以通過使用一種特殊的二進制數據類型來保存,查詢。
跨平臺支持:二進制文件可以在Windows,Linux,OS X和Solaris平臺上使用。MongoDB可以在大多數小端系統上編譯通過。
支持豐富的類型:支持 dates, regular expressions, code, binary data 等類型。
查詢結果支持Cursor操作。
支持Ad hoc queries(Ad hoc query:即席查詢,數據庫應用最普遍的一種查詢,利用數據倉庫技術,可以讓用戶隨時可以面對數據庫,獲取所希望的數據。在MongoDB中,可以在任何時候查詢任何一個field。它支持 range queries,regular expression searches 和其他特殊的查詢類型。同時查詢也可以包含用戶定義的javascript函數。
支持嵌套域的查詢:查詢可以深入到嵌套的對象和數組中,如果下面的對象被插入到users集合。
支持索引:支持二級索引包括 single-key, compound, unique, non-unique, geospatial indexes.嵌套的域同樣也可以被索引。如果我們對一個數組類型進行索引,那么數組中所有元素也會自動被索引。當一個查詢執行時,MongoDB的查詢優化器會嘗試多個不同的query plan,并選擇執行速度最快的。開發者可以通過explain功能看到索引被使用的過程,然后可以通過hint功能來選擇另一個不同的索引。可以在任何時候創建和刪除索引。
aggregation:除了ad hoc queries外,MongoDB還支持一系列工具來支持聚合,例如MapReduce和其他類似于SQL的GROUP BY的函數集合。
文件存儲:該軟件實現了一個稱為GridFS的協議,這個協議是用來幫助從數據庫中存儲和獲取文件的。
支持服務器端javascript執行:javaScript是MongoDB的一種通用語言,它可以被用在查詢,聚集函數,直接由數據庫執行。
capped collection:MongoDB支持被稱為capped collections(定量集合)的定長集合。Capped collections是唯一一種維持插入順序的集合,其中,如果達到容量最大值,那么就會覆蓋第一個元素,也就是說capped collection的行為類似于一個環形隊列。一種特殊的cursor類型,稱為tailable cursor,可以被用在capped collection上,當完成結果返回時,這種cursor不會關閉,而是會繼續等待更多的結果來返回。也就是說如果有新的記錄插入到capped collection的話,cursor會自動返回。
目前提供多種語言的driver。
部署:MongoDB使用的是memory-mapped files(內存映射文件),所以在32位機器上限制數據的最大大小為2GB,同時MongoDB服務器只能在小端系統上運行。
Replication:MongoDB不應被部署到少于兩臺的服務器上,也就是說至少有一臺作為master,另一臺作為slave。Master可以用來執行讀寫,而slave可以從master上復制數據,但是它只能執行讀操作或備份操作。開發者可以根據情況讓一個operation可以被replicate到多個servers上。
下面的代碼是啟動一個master服務器和對應的slave服務器:
$ mkdir –p ~/dbs/master ~/dbs/slave $ ./mongod –master –port 10000 –dbpath ~/dbs/master $ ./mongod –slave --port10001 –dbpath ~/dbs/slave -- source localhost:10000補充知識
所謂“面向集合”(Collenction-Orented),意思是數據被分組存儲在數據集中,被稱為一個集合(Collenction)。每個集合在數據庫中都有一個唯一的標識名,并且可以包含無限數目的文檔。集合的概念類似關系型數據庫(RDBMS)里的表(table),不同的是它不需要定義任何模式(schema)。
模式自由(schema-free),意味著對于存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫里。
存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一標識一個文檔,為字符串類型,而值則可以是各中復雜的文件類型。我們稱這種存儲形式為BSON(Binary Serialized dOcument Format)。
MongoDB把數據存儲在文件中(默認路徑為:/data/db),為提高效率使用內存映射文件進行管理。MongoDB的主要目標是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統的RDBMS系統(豐富的功能)架起一座橋梁,集兩者的優勢于一身。
根據官方網站的描述,Mongo適合用于以下場景:
網站數據:Mongo非常適合實時的插入,更新與查詢,并具備網站實時數據存儲所需的復制及高度伸縮性。
緩存:由于性能很高,Mongo也適合作為信息基礎設施的緩存層。在系統重啟之后,由Mongo搭建的持久化緩存層可以避免下層的數據源過載。
大尺寸,低價值的數據:使用傳統的關系型數據庫存儲一些數據時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統的文件進行存儲。
高伸縮性的場景:Mongo非常適合由數十或數百臺服務器組成的數據庫。Mongo的路線圖中已經包含對MapReduce引擎的內置支持。
用于對象及JSON數據的存儲:Mongo的BSON數據格式非常適合文檔化格式的存儲及查詢。
自然,MongoDB的使用也會有一些限制,例如它不適合:
高度事務性的系統:例如銀行或會計系統。傳統的關系型數據庫目前還是更適用于需要大量原子性復雜事務的應用程序。
傳統的商業智能應用:針對特定問題的BI數據庫會對產生高度優化的查詢方式。對于此類應用,數據倉庫可能是更合適的選擇。
需要SQL的問題
MongoDB主頁
via nowamagic.net
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17437.html
摘要:查詢結果支持操作。文件存儲該軟件實現了一個稱為的協議,這個協議是用來幫助從數據庫中存儲和獲取文件的。支持被稱為定量集合的定長集合。目前提供多種語言的。在系統重啟之后,由搭建的持久化緩存層可以避免下層的數據源過載。 MongoDB是一個開源的,高性能,無模式(或者說是模式自由),使用C++語言編寫的面向文檔的數據庫。正因為MongoDB是面向文檔的,所以它可以管理類似JSON的文檔集合。...
閱讀 1141·2021-11-23 10:04
閱讀 2401·2021-11-22 15:29
閱讀 2743·2021-11-19 09:40
閱讀 715·2021-09-22 15:26
閱讀 2117·2019-08-29 16:27
閱讀 2484·2019-08-29 16:10
閱讀 1918·2019-08-29 15:43
閱讀 3275·2019-08-29 12:43