MongoDB學習筆記(4)–Capped Collection

來源:互聯網
上載者:User

簡單介紹

capped collections是效能出色的有著固定大小的集合(定容集合),以LRU(Least Recently Used最近最少使用)規則和插入順序進行 age-out(老化移出)處理,自動維護集合中對象的插入順序,在創 建時要預先指定大小。如果空間用完,新添加的對象將會取代集合中最舊的對象。

功能特點 

可以插入及更新,但更新不能超出 collection 的大小,否則更新失敗。不允許刪除,但是可 以調用 drop() 刪除集合中的所有行,但是 drop 後需要顯式地重建集合。在 32 位機上,一 個capped collection的最大值約為482.5M,64 位元上只受系統檔案大小的限制。

常見用處

1.logging

MongoDB 中日誌機制的首選,MongoDB 沒有使用記錄檔,而是把日誌事件儲存在數 據庫中。在一個沒有索引的capped collection中插入對象的速度與在檔案系統中記錄日 志的速度相當。 

2. cache 

 緩衝一些對象在資料庫中,比如計算出來的統計資訊。這樣的需要在 collection 上建立 一個索引,因為使用緩衝往往是讀比寫多。

3. auto archiving  

可以利用capped collection的age-out特性,省去了寫cron指令碼進行人工歸檔的工作。

推薦用法

1.為了發揮capped collection的最大效能,如果寫比讀多,最好不要在上面建索引,否則插入速度從"log speed"降為"database speed"。 

2.使用"nature ordering"可以有效地檢索最近插入的元素,因為capped collection能夠保證自然排序就是插入時的順序,類似於log檔案上的tail操作。 

注意事項

1.可以在建立capped collection時指定collection中能夠存放的最大文檔數。但這時也要指定size,因為總是先檢查size 後檢查maxRowNumber。可以使用validate()查看一個collection 已經使用了多少空間,從而決定size設為多大。

db.createCollection("mycoll", {capped:true, size:100000, max:100});

db.mycoll.validate();

max=1時會往collection中存放盡量多的documents。
 2.上述的 createCollection 函數也可以用來建立一般的 collection,還有一個參數"autoIndexID",值可以為"true"和"false"來決定是否需要在"_id"欄位上自動建立索引,如: db.createCollection("mycoll", {size:10000000, autoIndexId:false})。 預設情況下對一般的collection是建立索引的,但不會對capped collection建立。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.