cassandra壓縮特性介紹

oxoxooxx發表於2011-09-26
cassandra1.0 compress特性介紹:
cassandra版本1.0增加了壓縮特性,與關係型資料庫資料檔案壓縮可能帶來系統讀寫效能損失相比,因為cassandra
資料檔案時一次重新整理的,而且不可修改的,所以對系統的效能反而有10%的效能提升。

一、cassandra compress適用的場景:
一個row中具有大量的column,而且column相同,至少具有大量共同的column,這種情況下可以達到很高的壓縮比,並且獲得
很好的讀效能。


二、如何配置cassandra壓縮:
cassandra的壓縮可以指定columnfamily級別的壓縮。壓縮具有兩個屬性(compression_options):
sstable_compression:指定壓縮演算法。
有兩種演算法:
SnappyCompressor ->google開源的Snappy壓縮庫,特點是壓縮解壓縮速度快
DeflateCompressor ->java zip 壓縮演算法,特點是壓縮率高
chunk_length_kb:指定壓縮資料塊的大小,以KB為單位,預設是64。

三、如何定義壓縮的columnfamily:
可以在定義CF指定壓縮屬性:
CREATE COLUMN FAMILY users
WITH key_validation_class=UTF8Type
AND column_metadata = [
{column_name: name, validation_class: UTF8Type}
{column_name: email, validation_class: UTF8Type}
{column_name: state, validation_class: UTF8Type}
{column_name: gender, validation_class: UTF8Type}
{column_name: birth_year, validation_class: LongType}
]
AND compression_options={sstable_compression:SnappyCompressor, chunk_length_kb:64};

也可以當前系統中修改CF屬性,新增壓縮特性:
update CF...

四、如果是更新CF,對現有資料如何處理:
當前已經存在的SSTable不會立刻進行壓縮,在正常的compaction過程是會對舊SSTable進行壓縮,新建立的SSTable會進行壓縮。
如果必要,可以透過使用nodetool scrub重建SSTable壓縮當前所有的SSTable檔案。


五、總結:
Cassandra 1.0的壓縮特性是一種簡單的在降低磁碟空間需求的同時提高系統效能的方式。壓縮特性可以很容易的更新到當前已存在的CF,
並且其實現允許高階使用者調整壓縮塊(chunk)的大小以獲取最大的效能。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23937368/viewspace-1055348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章