成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

MongoDB 入門須知

王偉廷 / 683人閱讀

摘要:查詢結(jié)果支持操作。文件存儲該軟件實現(xiàn)了一個稱為的協(xié)議,這個協(xié)議是用來幫助從數(shù)據(jù)庫中存儲和獲取文件的。支持被稱為定量集合的定長集合。目前提供多種語言的。在系統(tǒng)重啟之后,由搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載。

MongoDB是一個開源的,高性能,無模式(或者說是模式自由),使用C++語言編寫的面向文檔的數(shù)據(jù)庫。正因為MongoDB是面向文檔的,所以它可以管理類似JSON的文檔集合。又因為數(shù)據(jù)可以被嵌套到復(fù)雜的體系中并保持可以查詢可索引,這樣一來,應(yīng)用程序便可以以一種更加自然的方式來為數(shù)據(jù)建模。

下面介紹MongoDB的特點:

統(tǒng)一的UTF-8編碼:不是UTF-8編碼集合的數(shù)據(jù)也可以通過使用一種特殊的二進(jìn)制數(shù)據(jù)類型來保存,查詢。

跨平臺支持:二進(jìn)制文件可以在Windows,Linux,OS X和Solaris平臺上使用。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ù)據(jù)庫,獲取所希望的數(shù)據(jù)。在MongoDB中,可以在任何時候查詢?nèi)魏我粋€field。它支持 range queries,regular expression searches 和其他特殊的查詢類型。同時查詢也可以包含用戶定義的javascript函數(shù)。

支持嵌套域的查詢:查詢可以深入到嵌套的對象和數(shù)組中,如果下面的對象被插入到users集合。

支持索引:支持二級索引包括 single-key, compound, unique, non-unique, geospatial indexes.嵌套的域同樣也可以被索引。如果我們對一個數(shù)組類型進(jìn)行索引,那么數(shù)組中所有元素也會自動被索引。當(dāng)一個查詢執(zhí)行時,MongoDB的查詢優(yōu)化器會嘗試多個不同的query plan,并選擇執(zhí)行速度最快的。開發(fā)者可以通過explain功能看到索引被使用的過程,然后可以通過hint功能來選擇另一個不同的索引??梢栽谌魏螘r候創(chuàng)建和刪除索引。

aggregation:除了ad hoc queries外,MongoDB還支持一系列工具來支持聚合,例如MapReduce和其他類似于SQL的GROUP BY的函數(shù)集合。

文件存儲:該軟件實現(xiàn)了一個稱為GridFS的協(xié)議,這個協(xié)議是用來幫助從數(shù)據(jù)庫中存儲和獲取文件的。

支持服務(wù)器端javascript執(zhí)行:javaScript是MongoDB的一種通用語言,它可以被用在查詢,聚集函數(shù),直接由數(shù)據(jù)庫執(zhí)行。

capped collection:MongoDB支持被稱為capped collections(定量集合)的定長集合。Capped collections是唯一一種維持插入順序的集合,其中,如果達(dá)到容量最大值,那么就會覆蓋第一個元素,也就是說capped collection的行為類似于一個環(huán)形隊列。一種特殊的cursor類型,稱為tailable cursor,可以被用在capped collection上,當(dāng)完成結(jié)果返回時,這種cursor不會關(guān)閉,而是會繼續(xù)等待更多的結(jié)果來返回。也就是說如果有新的記錄插入到capped collection的話,cursor會自動返回。

目前提供多種語言的driver。

部署:MongoDB使用的是memory-mapped files(內(nèi)存映射文件),所以在32位機(jī)器上限制數(shù)據(jù)的最大大小為2GB,同時MongoDB服務(wù)器只能在小端系統(tǒng)上運(yùn)行。

Replication:MongoDB不應(yīng)被部署到少于兩臺的服務(wù)器上,也就是說至少有一臺作為master,另一臺作為slave。Master可以用來執(zhí)行讀寫,而slave可以從master上復(fù)制數(shù)據(jù),但是它只能執(zhí)行讀操作或備份操作。開發(fā)者可以根據(jù)情況讓一個operation可以被replicate到多個servers上。

下面的代碼是啟動一個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ǔ)充知識

所謂“面向集合”(Collenction-Orented),意思是數(shù)據(jù)被分組存儲在數(shù)據(jù)集中,被稱為一個集合(Collenction)。每個集合在數(shù)據(jù)庫中都有一個唯一的標(biāo)識名,并且可以包含無限數(shù)目的文檔。集合的概念類似關(guān)系型數(shù)據(jù)庫(RDBMS)里的表(table),不同的是它不需要定義任何模式(schema)。

模式自由(schema-free),意味著對于存儲在mongodb數(shù)據(jù)庫中的文件,我們不需要知道它的任何結(jié)構(gòu)定義。如果需要的話,你完全可以把不同結(jié)構(gòu)的文件存儲在同一個數(shù)據(jù)庫里。

存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一標(biāo)識一個文檔,為字符串類型,而值則可以是各中復(fù)雜的文件類型。我們稱這種存儲形式為BSON(Binary Serialized dOcument Format)。

MongoDB把數(shù)據(jù)存儲在文件中(默認(rèn)路徑為:/data/db),為提高效率使用內(nèi)存映射文件進(jìn)行管理。MongoDB的主要目標(biāo)是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統(tǒng)的RDBMS系統(tǒng)(豐富的功能)架起一座橋梁,集兩者的優(yōu)勢于一身。

根據(jù)官方網(wǎng)站的描述,Mongo適合用于以下場景:

網(wǎng)站數(shù)據(jù):Mongo非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性。

緩存:由于性能很高,Mongo也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由Mongo搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載。

大尺寸,低價值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較昂貴,在此之前,很多時候程序員往往會選擇傳統(tǒng)的文件進(jìn)行存儲。

高伸縮性的場景:Mongo非常適合由數(shù)十或數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。Mongo的路線圖中已經(jīng)包含對MapReduce引擎的內(nèi)置支持。

用于對象及JSON數(shù)據(jù)的存儲:Mongo的BSON數(shù)據(jù)格式非常適合文檔化格式的存儲及查詢。

自然,MongoDB的使用也會有一些限制,例如它不適合:

高度事務(wù)性的系統(tǒng):例如銀行或會計系統(tǒng)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫目前還是更適用于需要大量原子性復(fù)雜事務(wù)的應(yīng)用程序。

傳統(tǒng)的商業(yè)智能應(yīng)用:針對特定問題的BI數(shù)據(jù)庫會對產(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://m.hztianpu.com/yun/17437.html

相關(guān)文章

  • MongoDB 入門須知

    摘要:查詢結(jié)果支持操作。文件存儲該軟件實現(xiàn)了一個稱為的協(xié)議,這個協(xié)議是用來幫助從數(shù)據(jù)庫中存儲和獲取文件的。支持被稱為定量集合的定長集合。目前提供多種語言的。在系統(tǒng)重啟之后,由搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載。 MongoDB是一個開源的,高性能,無模式(或者說是模式自由),使用C++語言編寫的面向文檔的數(shù)據(jù)庫。正因為MongoDB是面向文檔的,所以它可以管理類似JSON的文檔集合。...

    EastWoodYang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<