第二部分 Mongodb固定集合與性能


學習內容:
Mongodb固定集合與性能

增刪改查的高級應用
Capped Collection(固定集合)
CridFS大文件管理

drop();刪除指定集合
db.c1.drop();

dropDatabase(); 刪除指定數據庫
db.dropDatabase();

顯示創建集合
db.createCollection('c1');


Capped Collection(固定集合)簡單介紹:
Cappend collection是性能出色的有着固定大小的集合,以LUR(Least Recently Used最近最少使用)規則和插入順序進行age-out(老化移出)處理,自動維護集合中對象的插入順序,在創建時要預先指定大小,如果空間用完,新添加的對象將會取代集合最舊的對像,永遠保持最新的數據

功能特點:
可以插入及更新,但更新不能超過collection的大小,否則更新失敗,不允許刪除,但是可以調用drop()刪除集合中的所有行,但是drop后需要顯示的重建集合,在32位機目前一個capped collection的最大值約為482.5M,64位上只受系統文件大小的限制

屬性及用法:
屬性1:對固定集合進行插入速度比較快
屬性2:按照插入順序的查詢速度比較快
屬性3:能夠在插入最新數據時,淘汰最早的數據

用法1:儲存日志信息
用法2:緩存一些少量的文檔

創建固定集合
不像普通集合,固定集合需要顯式的創建使用
createCollection命令來創建

db.createCollection('my_collection', {capped:true, size:10000});
創建一個集合為"my_collection"的固定庥合,大小為10000字節,還可以限定文檔個數,加上Max 100屬性
注意: 指定的文檔上限,必須指定大小,文檔限制是容量沒滿時進行淘汰,要是滿了,就根據容量限制進行淘汰

db.c1.stats(); //查看集合的詳細信息,capped是否為真表示為固定集合

轉換集合
把普通的集合轉換成固定集合
需要使用convertTocapped命令
db.runCommand({convertToCapped:"test",size:10000});
//注意單詞的大小寫

把test普通集合轉換為固定集合,大小為10000字節
自然順序
固定集合文檔按照插入儲存的,默認情況下查謁就是按照插入順序返回的,也可以使用$natural調整返回順序
db.my_collection.find().sort({$natural:1});
1表示默認順序, -1則相反
判斷用db.c2.isCapped()
db.c2.status();

GridFS
GridFS是一種在MongoDB中存儲大二進制文件的機制,使用GridFS的原因是以下幾種

儲存巨大的文件,比如視頻,高清圖片等
利用GrndFS可以簡化需求
GridFS會直接利用已經建立的復制或分片機制,故障恢復和擴展都很容易
GridFS可以避免用戶上傳內容的文件系統出現問題
GridFS不產生磁盤碎片

GridFS使用兩個表來存儲數據:
files 包含元數據對象
chunks 包含其他一些相關信息的二進制塊
為了使多個GridFS命名為一個單一的數據庫,文件和塊都有一個前綴,默認情況下,前綴是fs.所以任何默認的GridFS存儲將包括命名空間fs.files和fs.chunks
各種第二方語言可能更改其前綴

使用GridFS mongofiles
mongofiles是從命令行操作GridFS的一種工具,
三個命令: put(存儲) get(取得) list(列表) delete(刪除)
我們將testfile這個文件存儲到庫里面
./mongofiles put a.zip;

下面我們查看一下庫里有哪里些GridFS文件
./mongofiles list;

我們繼承查看fs.file中的內容
字段說明:
Filename: 存儲的文件名
chunkSize: chunks分塊的大小
uploadDate: 入庫時間
md5: 此文件的md5
length: 文件大小,單位字節
fs.files中存儲的是一些基礎的元數據信息

fs.chunks的內容為
_id: 塊自身的id
file_id: 包含這個塊的元數據文檔文件id
n:它代表的是chunks的序號,此序號是從0開始
date: 組成文件塊的二進制文件
fs.chunks中存儲的是一些實際的內容數據信息

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM