2013-10-24 107 views
0

我在我的應用程序中使用cassandra,它開始耗盡磁盤空間,比我預期的要快得多,而且比手冊中定義的要快得多。考慮這個最簡單的例子:Cassandra 2.0佔用磁盤空間

CREATE TABLE sizer (
    id ascii, 
    time timestamp, 
    value float, 
    PRIMARY KEY (id,time) 
) WITH compression={'sstable_compression': ''}" 

我關閉壓縮的目的是看看每個記錄有多少字節。

然後我插入幾個值,我運行nodetool flush然後我檢查磁盤上的數據文件的大小,看看它需要多少空間。

結果顯示巨大的空間浪費。每個記錄需要67個字節,我不確定這是可能的。

我的ID長度爲13個字節,在數據文件中只保存一次,因爲它在測試中總是相同的。

據:http://www.datastax.com/documentation/cassandra/2.0/webhelp/index.html#cassandra/architecture/architecturePlanningUserData_t.html

尺寸應該是:

  • 時間戳應該是8個字節
  • 值作爲列名需要6字節
  • 列值浮子需要4個字節
  • 柱開銷15字節
  • 總計:33字節

爲了測試,我的id始終是相同的,所以如果我理解正確,我實際上只有一行。

所以,我的問題是我如何結束在使用67個字節而不是33

數據文件大小是正確的,我試圖插入100,1000和10000條記錄。大小總是67個字節。

回答

2

在文件中討論了3個開銷。一個是列開銷,你已經適應了。第二個是行開銷。而且,如果您的replication_factor大於1,那麼也有一個頭腦。

+0

我的複製因素是一個,我只有一行,因爲我的id始終是相同的。所以如果我插入1000個值並且我只有一行,則整個行開銷大小並不重要。 – Rubycut

+0

另外,行開銷是18字節,所以即使我們把它加到總和上,我們仍然是16個字節。 – Rubycut