本系列文章翻譯自《50 Tips and Tricks for MongoDB Developers》,暫時沒有找到中文版,反正自己最近也在深入學習mongodb,所以正好拿來翻譯一下。一方面加強自己學習的效果,另一方面讓大 家也一起來體驗一下需要我們這些mongodb使用者需要注意的地方。
首先聲明自己的英文水平不是太高,加之有些英文翻譯成中文也找不到合適的詞來表達,所以在文章中可能會出現(xiàn)英文原詞,或者說有些地方的翻譯會有些生 硬,也就是說會出現(xiàn)直譯的地方。翻譯該書的主要目的是為大家學習探討用的,如果有翻譯不精準的地方,或者說有更加精準的翻譯,還請大家指出,我會及時的更 正的,在此先謝過各位了。
Tip#7.Pre-populate anything you can
預先填充你能填充的
如果你知道,在將來,你的文檔中肯定會需要一些字段,在你插入文檔的時候就填充它們,而不是在需要它們的時候在創(chuàng)建,會更高效。例如,你正在創(chuàng)建一個站點分析的應用,可以查看一天中有每一頁都有多少用戶訪問。你會有一個pages collection,每個document記錄在過去的6個小時中,每分鐘和每小時的訪問量。
- {
- "_id":pageId,
- "start":time,
- "visits":{
- "minutes":[
- [num0,num1,...,num59],
- [num0,num1,...,num59],
- [num0,num1,...,num59],
- [num0,num1,...,num59],
- [num0,num1,...,num59],
- [num0,num1,...,num59]
- ],
- "hours":[num0,num1,...,num5]
- }
- }
這么做有一個優(yōu)勢,就是我們知道從現(xiàn)在到某一個時間點文檔會是什么樣子。是一個從現(xiàn)在開始,在接下來的6個小時,每分鐘和每小時的訪問量。后面的6個小時又會是一個新的文檔。
因此,我們需要一個批量處理的任務,在空閑的時候,或者是在一天的固定時間,插入這些模板文檔。插入的模板應該是下面的樣子。
- {
- "_id":pageId,
- "start":someTime,
- "visits":{
- "minutes":[
- [0,0,...,0],
- [0,0,...,0],
- [0,0,...,0],
- [0,0,...,0],
- [0,0,...,0],
- [0,0,...,0]
- ],
- "hours":[0,0,0,0,0]
- }
- }
現(xiàn)在,當你增加這些計數(shù)器的時候,mongodb不需要為他們現(xiàn)去分配空間。只是更新已經(jīng)插入的文檔的值,這么做速度會更快。
例如,在剛開始的一個小時,你只需要這么做。
- db.page.update({"_id":pageId,"start":thisHour},{"$inc":{"visits.0.0":3}})
這種做法也可以擴展到集合和數(shù)據(jù)庫的其他類型數(shù)據(jù),如果你每天需要一個新的集合,最好預先創(chuàng)建他們。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文標題:寫給MongoDB開發(fā)者的50條建議Tip7-創(chuàng)新互聯(lián)
本文路徑:http://chinadenli.net/article22/epjcc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、域名注冊、動態(tài)網(wǎng)站、網(wǎng)站導航、外貿網(wǎng)站建設、品牌網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容