官方技术文档翻译,英文原文链接:
要选择合适的压实策略:
- 需要了解压实和压实策略是如何工作的,请阅读“如何维护数据?“
- 审视您的应用程序的需求,使用此信息来回答下面的问题。
- 配置表使用最合适的策略。
- 根据你的数据测试压实策略。
一、 哪种压实策略是最好的?
以下问题是基于使用这些压实策略的开发者和用户的经验提出的
Ø 您的表是否处理时间序列数据?
如果是,您最好的选择是TWCS.如果不是,下面的问题会引入其他考虑,以指导您的选择。
Ø 您的表是读多写少,还是写多读少?
LCS是一个很好的选择,如果你的表数据读取是写入的两倍甚至更多,特别是随机读。如果读写的比例接近,LCS的性能消耗可能并不值得使用。请注意,LCS很快会被大量的写入压垮。
Ø 您表中的数据是否经常发生变化?
LCS的一个优点是,它将相关联的数据保存在一小组SSTable中。如果您的数据是静态不变或不频繁更改,STCS压缩可以完成同样的SSTable分组,而不需要LCS一样的性能开销。
Ø 您是否需要可预测的读写活动级别?
LCS压实策略保持SSTable文件在可预测的大小和数量。例如,如果您的表的读/写比率很小(写多读少),但是期望读操作符合SLA,则为了在可预测的水平上保持读速率和读延迟,可能值得使用LCS,牺牲表的写性能,您可以通过水平扩展(添加更多的节点)来克服这种写性能问题。
Ø 您的表是否用于批处理进程?
在批量读和批量写过程中,STCS的性能优于LCS.批处理过程很少或没有碎片,因此不能发挥LCS的长处;批处理进程可能压跨使用LCS压实策略的表。
Ø 您的系统磁盘空间是否非常有限?
LCS处理磁盘空间比STCS更有效率:基于正在压实的数据文件的占用空间,它仅需要大约10%的额外空间。在某些情况下,STCS和DTCS通常需要50%的额外空间。(DateTieredStorageStrategy (DTCS)废弃)
Ø 你的系统达到I/O极限了吗?
LCS比DTCS或STCS的I/O强度要大得多,使用LCS可能会引入额外的I/O负载,从而抵消了LCS带来的优势。
二、 配置和运行压实
使用CREATE TABLE或者ALTER TABLE设置表的压实策略,具体请参见表_配置项
您可以手动使用nodetool compact命令启动压实操作。
三、 测试压实策略
关于哪个压实策略最适合您的系统的建议:
- 创建一个三节点的集群,使用一个压实策略,用cassandra-streess工具对集群进行压测,并分析结果。
- 在现有集群上建立一个节点,并使用写调查模式来对实时数据采样。