命名空间: Apache.Cassandra

 

Cassandra 1.0 参考(2) ColumnFamily的定义_Cassandra ColumnFami

属性:

名称
类型
默认值
说明
Column_metadata
List<ColumnDef>
n/a
构造属性
Column_type
string
Standard
所保存的Column的类型,所设置数据为Standard或Super,Super就是SuperColumn
Comment
string
n/a
备注
Compaction_strategy
string
SizeTiered
SizeTiered 这是在1.0之前唯一的压实策略,这个压实策略会导致很大I/O操作,长时间的压实操作会导致文件规模更大,会对磁盘的操作产生负面影响,但不影响读写性能。当使用此策略时,会导致会使用1倍以上的磁盘空间。
LeveledCompactionStrategy 平整压实策略限制SSTables大小一个小的文件大小默认5 MB的,使SSTables继续增长的大小每个连续的压实磁盘I/O更均匀和可预见的SSTables​​不断压缩逐渐变大水平在每个级别上行键合并重叠SSTables这可以提高读取性能因为卡桑德拉可以决定每个级别SSTables检查的关键数据存在是仿照谷歌的leveldb实施压实战略
Compaction_strategy_options
Dictionary
<string, string>
sstable_size_in_mb,5
当使用LeveledCompactionStrategy 时,sstable_size_in_mb才生效
Comparator_type
string
BytesType
定义的数据类型用于验证和排序的列名几个内置的比较请注意,ColumnFamily创建后将不能被更改
Compression_options
Dictionary
<string, string>
n/a
ColumnFamily的压缩属性
sstable_compression:指定压缩算法压缩SSTable文件使用Cassandra支持两个内置压缩类SnappyCompressor(Snappy Compression LibraryDeflateCompressor(JAVA zip implementationSnappy Compression Library提供更快压缩/解压缩而JAVA zip implementation提供更好压缩比选择是正确的取决于读取性能节省空间要求对于沉重的工作量,建议使用Snappy Compression Library开发人员还可以实现自定义压缩类,可以继承org.apache.cassandra.io.compress.ICompressor接口
chunk_length_kb 设置压缩块的大小以KB为单位默认值(64一个比较好的建议数字对于多个列的行它允许无需解压整个行列数据64KB
Default_validation_class
string
 
定义用来验证列的数据类型
Gc_grace_seconds
int
864000
默认值为10天。因为Cassandra刪除的時候是伪刪除,通过增加一个刪除标记(Tombstone)來标识数据数据已经被删除;当进行Compaction操作时(压实),存在时间超过gc_grace的Tombstone才会被真正的删除。减少这个值可以使垃圾更快被回收(存储空间更快地释放)。这个值不应该被设置的太小(例如:少于一天),设置的太小可能造成数据部一致,例如:如果使用CL.ONE來進行刪除操作时,当gc_grace太小导致在通过Read repair或Anti Entropy削减Inconsistency Window之前就发生Compaction,那么刪除实际上是失败的(因為其他副本节点没有进行删除也没有进行标记)。
Id
int
 
 
Key_alias
byte[]
 
 
Key_cache_save_period_in_seconds
int
n/a
多少时间会将Key Cache保存在磁盘上
Key_cache_size
double
100000
Key Cache的大小
Key_validation_class
string
 
定义数据类型用来验证Key的值几个内置的关键验证器CounterColumnType分布式计数器不能作为一个的Key验证器使用
Keyspace
string
 
ColumnFamily所属的KeySpace
Max_compaction_threshold
int
32
设定Minor Compaction最多允許多少个相似大小的SSTables合并成一个SSTable。降低这个值会让Minor Compaction更频繁发生。
Merge_shards_chance
double
 
 
Min_compaction_threshold
int
4
设定Minor Compaction(合并大小相似的SSTables)最少需要多少个SSTables。调高这个值会减少Minor Compaction的发生。
Name
string
 
ColumnFamily的名称
Read_repair_chance
double
100
如果读取的Consistency Level设定成ONE,我们可以设定一個值來決定是不是要在背景进行Read Repair。预设值是一定会进行Read Repair,可以通过降低这个值來提升Read的Throughput。对于当写入用CL.ALL而读取采用ONE的,可以很放心的降低这个值。
Replicate_on_write
bool
 
 
Row_cache_keys_to_save
int
 
 
Row_cache_provider
string
ConcurrentLinkedHash
CacheProvider
指定家庭使用行缓存允许的值是* ConcurrentLinkedHashCacheProvider - Row Cache使用的JVM的Heap内存提供同一行Cassandra到0.8之前版本缓存行为 *(默认)SerializingCacheProvider - 缓存行被序列化并存储在内存中JVM Heap的,它可以减少垃圾收集(GC在JVM上压力,从而提高系统的性能序列化反序列化较小的8-12倍是推荐的设置只要你jna.jar在CLASSPATH,使本地方法
Row_cache_save_period_in_seconds
int
n/a
多少时间保存Row Cache到磁盘上
Row_cache_size
double
0
Row Cache的大小
Subcomparator_type
string
BytesType
当使用superColumn时,该设置才生效

方法:

名称
参数
说明
CfDef
<无>
构造函数    
Read
TProtocol iprot
从Cassandra读取相关信息
ToString
<无>
输出KeySpeace的定义:
名称,策略类,策略选项,同步因子,ColumnFamily定义,是否持久化
Write
TProtocol oprot
将相关信息写到Cassandra

 

本文参考:

Compaction and Repair http://blog.labin.cc/?p=332