寫給MongoDB開發(fā)者的50條建議Tip7

本系列文章翻譯自《50 Tips and Tricks for MongoDB Developers》,暫時(shí)沒(méi)有找到中文版,反正自己最近也在深入學(xué)習(xí)mongodb,所以正好拿來(lái)翻譯一下。一方面加強(qiáng)自己學(xué)習(xí)的效果,另一方面讓大 家也一起來(lái)體驗(yàn)一下需要我們這些mongodb使用者需要注意的地方。

創(chuàng)新互聯(lián)長(zhǎng)期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鄂城企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,鄂城網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

首先聲明自己的英文水平不是太高,加之有些英文翻譯成中文也找不到合適的詞來(lái)表達(dá),所以在文章中可能會(huì)出現(xiàn)英文原詞,或者說(shuō)有些地方的翻譯會(huì)有些生 硬,也就是說(shuō)會(huì)出現(xiàn)直譯的地方。翻譯該書的主要目的是為大家學(xué)習(xí)探討用的,如果有翻譯不精準(zhǔn)的地方,或者說(shuō)有更加精準(zhǔn)的翻譯,還請(qǐng)大家指出,我會(huì)及時(shí)的更 正的,在此先謝過(guò)各位了。

Tip#7.Pre-populate anything you can

預(yù)先填充你能填充的

如果你知道,在將來(lái),你的文檔中肯定會(huì)需要一些字段,在你插入文檔的時(shí)候就填充它們,而不是在需要它們的時(shí)候在創(chuàng)建,會(huì)更高效。例如,你正在創(chuàng)建一個(gè)站點(diǎn)分析的應(yīng)用,可以查看一天中有每一頁(yè)都有多少用戶訪問(wèn)。你會(huì)有一個(gè)pages collection,每個(gè)document記錄在過(guò)去的6個(gè)小時(shí)中,每分鐘和每小時(shí)的訪問(wèn)量。

 

  1.   "_id":pageId, 
  2.   "start":time, 
  3.   "visits":{ 
  4.     "minutes":[ 
  5.       [num0,num1,...,num59], 
  6.       [num0,num1,...,num59], 
  7.       [num0,num1,...,num59], 
  8.       [num0,num1,...,num59], 
  9.       [num0,num1,...,num59], 
  10.       [num0,num1,...,num59] 
  11.     ], 
  12.     "hours":[num0,num1,...,num5] 
  13.   } 

 

這么做有一個(gè)優(yōu)勢(shì),就是我們知道從現(xiàn)在到某一個(gè)時(shí)間點(diǎn)文檔會(huì)是什么樣子。是一個(gè)從現(xiàn)在開始,在接下來(lái)的6個(gè)小時(shí),每分鐘和每小時(shí)的訪問(wèn)量。后面的6個(gè)小時(shí)又會(huì)是一個(gè)新的文檔。

因此,我們需要一個(gè)批量處理的任務(wù),在空閑的時(shí)候,或者是在一天的固定時(shí)間,插入這些模板文檔。插入的模板應(yīng)該是下面的樣子。

 

  1.   "_id":pageId, 
  2.   "start":someTime, 
  3.   "visits":{ 
  4.     "minutes":[ 
  5.       [0,0,...,0], 
  6.       [0,0,...,0],
  7.       [0,0,...,0], 
  8.       [0,0,...,0], 
  9.       [0,0,...,0], 
  10.       [0,0,...,0] 
  11.     ], 
  12.     "hours":[0,0,0,0,0] 
  13.   } 

現(xiàn)在,當(dāng)你增加這些計(jì)數(shù)器的時(shí)候,mongodb不需要為他們現(xiàn)去分配空間。只是更新已經(jīng)插入的文檔的值,這么做速度會(huì)更快。

例如,在剛開始的一個(gè)小時(shí),你只需要這么做。

 

  1. db.page.update({"_id":pageId,"start":thisHour},{"$inc":{"visits.0.0":3}}) 

這種做法也可以擴(kuò)展到集合和數(shù)據(jù)庫(kù)的其他類型數(shù)據(jù),如果你每天需要一個(gè)新的集合,最好預(yù)先創(chuàng)建他們。

 

網(wǎng)站標(biāo)題:寫給MongoDB開發(fā)者的50條建議Tip7
文章出自:http://muchs.cn/article32/ihiipc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、面包屑導(dǎo)航、動(dòng)態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈Google、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化