MongoDB實戰(3)固定集合與GridFS

來源:互聯網
上載者:User

一、固定集合(Capped Collection)

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

可以插入及更新,但更新不能超出 collection 的大小,否則更新失敗。不允許刪除,但是可以調用 drop() 刪除集合中的所有行,但是 drop 後需要顯式地重建集合。

常見用處:

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 操作。

實際案例:

可以在建立 capped collection 時指定 collection 中能夠存放的最大文檔數。但這時也要指定 size,因為總是先檢查 size 後檢查 maxRowNumber。

可以使用 validate()查看一個 collection已經使用了多少空間,從而決定 size 設為多大。

下面我們建立一個集合:

db.createCollection('mycappc1',{capped:true,size:100000,max:10})

這是一個最多10行記錄的固定集合。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.