簡體   English   中英

couchdb文件的大小

[英]Size of couchdb documents

我在couchdb數據庫中有以下文檔:

{
   "_id": "000013a7-4df6-403b-952c-ed767b61554a",
   "_rev": "1-54dc1794443105e9d16ba71531dd2850",
   "tags": [
       "auto_import"
   ],
   "ZZZZZZZZZZZ": "910111",
   "UUUUUUUUUUUUU": "OOOOOOOOO",
   "RECEIVING_OPERATOR": "073",
   "type": "XXXXXXXXXXXXXXXXXXX",
   "src_file": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

如果保存在我的本地文件系統中,此JSON文件只需319個字節。 我的文檔都是這樣的(給出或取幾個字節,因為一些字段有不同的長度)。

在我的數據庫中,我目前有大約600萬個文檔,它們使用15 GB。 這提供了大約2.5KBytes /文檔。 這意味着文件在CouchDB上占用的空間比在磁盤上多8倍。

這是為什么?

問題與文檔ID的使用方式有關:它不僅存儲在文檔中,還存儲在其他數據結構中。 這意味着使用標准UUID( 000013a7-4df6-403b-952c-ed767b61554a 36個字符)將占用大量磁盤空間。 如果collission是一個小問題,使用base64你可以只有4個字符,只有4個字符,超過10萬個5個字符的文檔。 字典的一個很好的選擇是有序的(在“查看整理”意義上):

-@0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ

使用此方法,我將數據庫的大小從2.5Kbytes / doc減少到0.4Kbytes / doc。 我的新數據庫僅使用舊數據庫的16%的空間,我認為這是一個非常大的改進。

CouchDB使用稱為MVCC的東西,這基本上意味着它會在您修改文檔時保留文檔的先前版本。 它使用這些以前的版本來幫助在發生沖突時進行復制,並且默認情況下會保留1000個版本(有關詳細信息,請參閱內容)。

如果您不使用復制,可以降低要保留的修訂數量,或者知道這些類型的沖突永遠不會發生。

您也可能希望熟悉壓縮,因為這可以幫助(暫時)降低存儲空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM