当我们建列族的时候,如果使用这个 WITH COMPACT STORAGE 关键字,并且使用的是复合主键方式,每次存储数据的时候列名也会一起存储,并且使存储在磁盘上的同一个列。如清单 16 示例代码所示。
- CREATE TABLE sblocks(
- block_id uuid,
- subblock_id uuid,
- PRIMARY KEY(block_id, subblock_id)
- )
- WITH COMPACT STORAGE
注意,如果使用的是组合组件,并且也使用了压缩表策略,那么需要指定至少一个 Clustering Column(集群列)。并且,压缩表创建完毕后是不可以增加或者删除列的。
从字面上理解,Bloom_filter_fp_chance 这个参数控制着存储在磁盘上的 SSTables 的过滤精度。说得通俗一些,每次尝试检索数据时,如果我们在内存中已经存放了完整的数据映射表(数据具体在哪个 SSTable 上),那么我们的每次检索耗时会很短,如果我们保存在内存中的精度不高,那会出现我们搜索了很长时间的 SSTable,结果还是没能找到数据。同时,越精准也意味着需要更大的内存。
这个值为 0 表示最大化启用 Bloom Filter,1 表示关闭 Bloom Filter,推荐使用 0.1 这个值。
这个值对应着不同的压缩策略,如果设置为 0.01,那么需要设置压缩策略:SizeTieredCompactionStrategy,如果设置为 0.1,压缩策略:LeveledCompactionStrategy。
本文是"Apache Cassandra3.X"系列文章的第二篇,主要对数据模型进行了深入介绍,包括 KeySpace、Super Column、Column Family、Composite Key 等的设计理念及源代码解释,也针对一个从 RDBMS 到 Cassandra 的数据库设计迁移案例进行了举例说明。接下来介绍了与数据模型相关的各个属性,包括 KeySpace 属性、Column Family 属性,由于属性较多,这里并没有完全举例,只是列举了几个比较常用的,并且需要根据实际情况设定值的属性。
参考 developerWorks 上的 Apache Cassandra,了解更多 Apache Cassandra 知识。
参考书籍 《Cassandra The Definitive Guide 2nd Edition》 Jeff Carpenter&Eben Hewitt
来源: http://www.ibm.com/developerworks/cn/middleware/library/mw-1706-feillet-bluemix/1706-feillet.html