mongodb用法小結(jié)

mongodb用法小結(jié)

ID:6127693

大小:26.56 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2018-01-04

mongodb用法小結(jié)_第1頁(yè)
mongodb用法小結(jié)_第2頁(yè)
mongodb用法小結(jié)_第3頁(yè)
mongodb用法小結(jié)_第4頁(yè)
mongodb用法小結(jié)_第5頁(yè)
資源描述:

《mongodb用法小結(jié)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、http://www.open-china.net/http://club.sm160.com/showtopic-873892.aspxhttp://club.sm160.com/showforum-113.aspxmongoDB小結(jié)用了一陣子mongodb,作一些小結(jié),作為將來(lái)的參考。按照以往的習(xí)慣,先作一個(gè)總覽,然后再挑出一些自己比較關(guān)注的幾個(gè)點(diǎn),作為珠璣,加以串聯(lián)闡述。mongodb由C++寫(xiě)就,其名字來(lái)自humongous這個(gè)單詞的中間部分,從名字可見(jiàn)其野心所在就是海量數(shù)據(jù)的處理。關(guān)于它的一個(gè)最簡(jiǎn)潔描述為:scalab

2、le,high-performance,opensource,schema-free,document-orienteddatabase。我對(duì)于文檔型數(shù)據(jù)庫(kù)有一些個(gè)人的偏好,這種偏好是從半年前研究couchdb而來(lái)的,因?yàn)槲矣X(jué)得用它來(lái)描述一個(gè)具有個(gè)性化特征的實(shí)體對(duì)象正合適,比如網(wǎng)站上的用戶或商品書(shū)籍之類(lèi)的條目。一些概念:跟mysqld一樣,一個(gè)mongod服務(wù)可以有建立多個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)可以有多張表,這里的表名叫collection,每個(gè)collection可以存放多個(gè)文檔(document),每個(gè)文檔都以BSON(bina

3、ryjson)的形式存放于硬盤(pán)中。跟關(guān)系型數(shù)據(jù)庫(kù)不一樣的地方是,它是的以單文檔為單位存儲(chǔ)的,你可以任意給一個(gè)或一批文檔新增或刪除字段,而不會(huì)對(duì)其它文檔造成影響,這就是所謂的schema-free,這也是文檔型數(shù)據(jù)庫(kù)最主要的優(yōu)點(diǎn)。跟一般的key-value數(shù)據(jù)庫(kù)不一樣的是,它的value中存儲(chǔ)了結(jié)構(gòu)信息,所以你又可以像關(guān)系型數(shù)據(jù)庫(kù)那樣對(duì)某些域進(jìn)行讀寫(xiě)、統(tǒng)計(jì)等操作??梢哉f(shuō)是兼?zhèn)淞薻ey-value數(shù)據(jù)庫(kù)的方便高效與關(guān)系型數(shù)據(jù)庫(kù)的強(qiáng)大功能。索引跟關(guān)系型數(shù)據(jù)庫(kù)類(lèi)似,mongodb可以對(duì)某個(gè)字段建立索引,可以建立組合索引、唯一索引,也可以

4、刪除索引。當(dāng)然建立索引就意味著增加空間開(kāi)銷(xiāo),我的建議是,如果你能把一個(gè)文檔作為一個(gè)對(duì)象的來(lái)考慮,在線上應(yīng)用中,你通常只要對(duì)對(duì)象ID建立一個(gè)索引即可,根據(jù)ID取出對(duì)象某些數(shù)據(jù)放在memcache即可。如果是后臺(tái)的分析需要,響應(yīng)要求不高,查詢非索引的字段即便直接掃表也費(fèi)不了太多時(shí)間。如果還受不了,就再建一個(gè)索引得了。默認(rèn)情況下每個(gè)表都會(huì)有一個(gè)唯一索引:_id,如果插入數(shù)據(jù)時(shí)沒(méi)有指定_id,服務(wù)會(huì)自動(dòng)生成一個(gè)_id,為了充分利用已有索引,減少空間開(kāi)銷(xiāo),最好是自己指定一個(gè)unique的key為_(kāi)id,通常用對(duì)象的ID比較合適,比如商品的

5、ID。cappedcollectioncappedcollection是一種特殊的表,它的建表命令為:db.createCollection("mycoll",{capped:true,size:100000})允許在建表之初就指定一定的空間大小,接下來(lái)的插入操作會(huì)不斷地按順序APPEND數(shù)據(jù)在這個(gè)預(yù)分配好空間的文件中,如果已經(jīng)超出空間大小,則回到文件頭覆蓋原來(lái)的數(shù)據(jù)繼續(xù)插入。這種結(jié)構(gòu)保證了插入和查詢的高效性,它不允許刪除單個(gè)記錄,更新的也有限制:不能超過(guò)原有記錄的大小。這種表效率很高,它適用于一些暫時(shí)保存數(shù)據(jù)的場(chǎng)合,比如網(wǎng)站中

6、登錄用戶的session信息,又比如一些程序的監(jiān)控日志,都是屬于過(guò)了一定的時(shí)間就可以被覆蓋的數(shù)據(jù)。復(fù)制與分片mongodb的復(fù)制架構(gòu)跟mysql也很類(lèi)似,除了包括master-slave構(gòu)型和master-master構(gòu)型之外,還有一個(gè)Replicapairs構(gòu)型,這種構(gòu)型在平??梢韵駇aster-slave那樣工作,一但master出現(xiàn)問(wèn)題,應(yīng)用會(huì)自動(dòng)了連接slave。要做復(fù)制也很簡(jiǎn)單,我自己使用過(guò)master-slave構(gòu)型,只要在某一個(gè)服務(wù)啟動(dòng)時(shí)加上–master參數(shù),而另一個(gè)服務(wù)加上–slave與–source參數(shù),即可

7、實(shí)現(xiàn)同步。分片是個(gè)很頭疼的問(wèn)題,數(shù)據(jù)量大了肯定要分片,mysql下的分片正是成為無(wú)數(shù)DBA的噩夢(mèng)。在mongodb下,文檔數(shù)據(jù)庫(kù)類(lèi)似key-value數(shù)據(jù)庫(kù)那樣的易分布特性就顯現(xiàn)出來(lái)了,無(wú)論構(gòu)造分片服務(wù),新增節(jié)點(diǎn)還是刪除節(jié)點(diǎn)都非常容易實(shí)現(xiàn)。但mongodb在這方面做還不足夠成熟,現(xiàn)在分片的工作還只做到alpha2版本(mongodbv1.1),估計(jì)還有很多問(wèn)題要解決,所以只能期待,就不多說(shuō)了。性能在我的使用場(chǎng)合下,千萬(wàn)級(jí)別的文檔對(duì)象,近10G的數(shù)據(jù),對(duì)有索引的ID的查詢不會(huì)比mysql慢,而對(duì)非索引字段的查詢,則是全面勝出。my

8、sql實(shí)際無(wú)法勝任大數(shù)據(jù)量下任意字段的查詢,而mongodb的查詢性能實(shí)在讓我驚訝。寫(xiě)入性能同樣很令人滿意,同樣寫(xiě)入百萬(wàn)級(jí)別的數(shù)據(jù),mongodb比我以前試用過(guò)的couchdb要快得多,基本10分鐘以下可以解決。補(bǔ)上一句,觀察過(guò)程中mongodb都遠(yuǎn)算不上是CP

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。