MongoDB 使用大數據量的collection

使用大數據量的collection.

在MongoDB存儲信息用多個collection來替代一個collection。這樣做每個重複的數據不必存在每個對象中,
並且也不必再這個鍵上創建索引了。更重要的是性能,可以通過指定組來分佈數據。

舉個例子,假使我們要存儲日誌。並且有N種類型,如dev,debug,ops等。我們用一個collection來存儲。
{log : 'dev', ts : ..., info : ...}

我們現在把這個collection按照類型進行拆分。  'logs.dev' collection, a 'logs.debug' collection, 'logs.ops', 等.:

// logs.dev:
{ts : ..., info : ...}

當然,如果我們不需要同時查詢多個日誌,這麼做是有意義的。
一般來說,數量較大的collection不會有顯著的性能缺陷。

限制

默認的情況下,MongoDB的每個數據庫有24000左右命名空間的限制。
每個命名空間有628字節。.nsfile默認爲16MB。

每個collection以及索引都算作namespace。因此如果每個collection有一個索引,
我們能創建12000個collection。
--nssize允許提升這個限制。

小心的是每個collection都會佔用一些存儲-很少的KB。更近一步說,任何的索引都需要至少8KB的數據空間,
也就意味着每個b-tree page大小爲8KB.
如果有很多collection以及元數據經常要頁輸出,會導致核心的操作速度變慢。

 

--nssize


如果需要更多的collection,運行mongod --nssize參數。這個參數會讓.ns文件更大,
支持更多的collection。注意的是 --nssize 用於最新創建數據庫。如果你運行在一個存在的數據庫,
希望重新定義大小,那麼在運行--nssize之後,要運行db.repairDatabase()命令來調整大小。

.ns 文件最大爲 2GB.

發佈了121 篇原創文章 · 獲贊 44 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章