默认值是 256。大家知道,Cassandra 的数据存储是由 N 个节点组成的环形,每个节点通过虚拟节点(vnodes)区分,数据被存储在节点上,每个节点随机地被分配一定数量的令牌(tokens)。一个节点有越多的令牌,意味着它也存储了更多的数据。
默认值是 true。这个值是为了设置是否开启或者关闭 hinted handoff 特性。如果你想要针对数据中心进行设置,需要通过这种方式:hinted_handoff_enabled: DC1,DC2。Hinted 特性是为了避免出现数据脏读(数据更新过程中一个节点离线了,等大家都更新完毕后它又活过来了,造成"僵尸"数据的出现),hint 就是为了避免出现这种情况而向 Coordinator 节点写入信息。我会在后续的文章里具体介绍 hinted_handoff 的实现方法及源代码。
针对无响应节点的最大 hint 时间。这段时间结束之后,新的 hints 不会再生成,直到这个离线节点恢复响应。如果这个节点再次宕机,那么新的中断时间开始。这个值的默认值是 3 小时(10800000 微秒)。
这个值的单位是分钟,指的是一个 memtable 应该在写入磁盘前内存中保留多长时间的数据,默认是 24 小时(1440 分钟)。我们会每隔 10 秒钟检查一次 memtable 里面存放的数据。在时间周期范围内,如果列族的主键 memtabl 或者任意的 secondary 索引 memtables 有收到数据,它们需要写入磁盘。
如果我们把这个值设置得很小,那么可能会造成很多个 memtables 同时过期,我们可以通过调整 memtable_flush_writers 和 memtable_flush_queue_size 的值减少对于磁盘的压力,但是依然会造成磁盘 I/O 压力。最好的方式是调整其他 memtable 的触发阈值。
默认值是 org.apache.cassandra.dht.Murmur3Partitioner。通过分区键分布的行横贯整个集群的所有节点。针对这个参数,我们可以配置为 Murmur3Partitioner 、RandomPartitioner、ByteOrderedPartitioner、OrderPreservingPartitioner(已淘汰)中的任意一个。
设置 Cassandra 处理磁盘失败的方式,默认值是 stop,推荐值是 stop 或者 best_effort。配置可选值包括:
记录所有 seed 主机地址。Seed 中文叫种子,它的作用也确实和"种子"差不多,这些"种子"节点会记录整个集群的状态,其他节点可以通过从这些"种子"节点同步状态来了解整个集群的当前实际状况。
用于设置横贯节点的压缩数据总的吞吐量。你越快速地插入数据,你越应该快速地压缩数据,用于保证 SSTable 的数量。推荐值是 16 到 32MB/s。
Cassandra 绑定用于连接到其他节点的 IP 地址,默认值是 localhost(主机名),推荐设置为 IP 地址。
默认值是 org.apache.cassandra.locator.SimpleSnitch。Cassandra 使用 snitches(告密者)锁定节点的位置和路由请求。主要有以下几个值可以被用于设置:
当我们建列族的时候,如果使用这个 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/iot/library/iot-php-app-location-aware/index.html