標籤:
固定集合:capped collection 是效能出色的固定大小的集合,以LRU演算法淘汰記錄,自助維護集合中的對象的插入順序,建立時預先制定大小,空間使用完,心對象取代舊的對象,保持最新的資料。
可以插入及更新,但更新不能超出
collection 的大小,否則更新失敗。不允許刪除,但是可 以調用 drop() 刪除集合中的所有行,但是drop 後需要顯式地重建集合。在 32 位機上,一 個 capped collection 的最大值約為 482.5M,64 位上只受系統檔案大小的限制。
屬性以及用法:
屬性:1、對固定集合插入速度極快。
2、按照插入順序的查詢輸出速度極快。
3、能夠在插入最新時候淘汰最早的資料。
用法:1、儲存日誌資訊。
2、儲存少量的文檔。
使用
1、可以在建立 capped collection 時指定 collection 中能夠存放的最大文檔數。但這時也要指
定 size, 因為總是先檢查 size 後檢查 maxRowNumber。 可以使用 validate()查看一個 collection 已經使用了多少空間,從而決定size 設為多大。如:
db.createCollection("mycoll", {capped:true, size:100000, max:100}); //100000表示位元組
注意:指定文檔上限,必須指定大小,文檔限制是在容量沒滿時進行淘汰,要是滿了,就根據容量限制來進行淘汰。
> db.createCollection("mycol",{capped:true,size:100000,max:100}){ "ok" : 1 }> db.mycol.valdb.mycol.validate( db.mycol.valueOf(> db.mycol.validate() //用來查看固定集合的使用方式{ "ns" : "admin.mycol", "capped" : true, "max" : 100, "firstExtent" : "0:8c000 ns:admin.mycol", "lastExtent" : "0:8c000 ns:admin.mycol", "extentCount" : 1, "datasize" : 0, "nrecords" : 0, "lastExtentSize" : 102400, "padding" : 1, "firstExtentDetails" : { "loc" : "0:8c000", "xnext" : "null", "xprev" : "null", "nsdiag" : "admin.mycol", "size" : 102400, "firstRecord" : "null", "lastRecord" : "null" }, "deletedCount" : 2, "deletedSize" : 102224, "nIndexes" : 1, "keysPerIndex" : { "admin.mycol.$_id_" : 0 }, "valid" : true, "errors" : [ ], "warning" : "Some checks omitted for speed. use {full:true} option to do more thorough scan.", "ok" : 1}> db.createCollection("mycol",{capped:true,size:100000,max:100,autoIndexId:false})//建立collection時還有一個參數”autoIndexID”,值可以為”true”和”false”,決定是否需要在”_id”上建立索引{ "ok" : 0, "errmsg" : "collection already exists" } > db.mycol.drop() true > db.createCollection("mycol",{capped:true,size:100000,max:100,autoIndexId:false}) { "ok" : 1 } >
2、轉換集合 把test普遍集合轉換為固定集合,大小為10000位元組.
db.runCommand( { convertTocapped:"test",size:10000 } );
3、自然排序
固定集合文檔按照插入順序儲存的,預設情況下查詢就是按照插入順序返回的,也可以使用$natural調整返回順序.
db.mycappedcolt.find().sort( {"$natural":1} );
參數1表示預設順序,-1則相反.
4、判斷集合是否為固定集合
db.colt.isCapped();
5、查看集合狀態資訊
db.colt.stats();
MongoDB-固定集合 capped collection 操作 介紹