天天看點

寫給MongoDB開發者的50條建議Tip15

本系列文章翻譯自《50 Tips and Tricks for MongoDB Developers》,暫時沒有找到中文版,反正自己最近也在深入學習mongodb,是以正好拿來翻譯一下。一方面加強自己學習的效果,另一方面讓大 家也一起來體驗一下需要我們這些mongodb使用者需要注意的地方。

首先聲明自己的英文水準不是太高,加之有些英文翻譯成中文也找不到合适的詞來表達,是以在文章中可能會出現英文原詞,或者說有些地方的翻譯會有些生 硬,也就是說會出現直譯的地方。翻譯該書的主要目的是為大家學習探讨用的,如果有翻譯不精準的地方,或者說有更加精準的翻譯,還請大家指出,我會及時的更 正的,在此先謝過各位了。

Tip#15.Override _id when you have your own simple,unique id

當你的資料有簡單的,唯一的主鍵的時候,可以覆寫内部的_id

如果你的資料沒有自定義的主鍵,那麼就使用預設的ObejctId吧。可是,如果你的資料有自己的主鍵,那麼就不需要ObjectId,就可以使用你自定義的主鍵覆寫内部的ObjectId。這可以節約及bit的空間,如果給你的主鍵做索引的時候會特别有用,因為可以節約索引空間和資源(在儲存資料的時候比較重要)。

有兩個不适用你自己的主鍵的原因需要你考慮:

1.你必須确認你的主鍵是唯一的,而且包含了對于重複主鍵的處理機制。

2.你必須記住索引的樹形結構,如何随即和非随機的插入資料。

就索引樹而言,ObjectId在插入順序方面表現的很優秀,它們總是自增的,意味着資料總是被放在B樹的右邊葉子。mongodb隻需将B樹的右邊儲存在記憶體中就可以了。

相反的,如果_id列是随機值,意味着_id将會被插入樹的到處都是。就需要把索引頁整個放在記憶體中,更新很小的一部分,可能會忽視它,直到它再次滑出記憶體。這麼做是比較低效的。

本文轉自 virusswb 51CTO部落格,原文連結:http://blog.51cto.com/virusswb/802893,如需轉載請自行聯系原作者