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