RRM*_*RRM 8 cassandra cassandra-2.0
有没有办法可以控制SSTable的最大大小,例如100 MB,这样当CF实际上有超过100MB的数据时,Cassandra会创建下一个SSTable?
不幸的是,答案并非如此简单,您的SSTables的大小将受到您的压缩策略的影响,并且没有直接的方法来控制您的最大sstable大小.
当memtables作为SSTables刷新到磁盘时,最初会创建SSTable.这些表的大小最初取决于您的memtable设置和堆的大小(memtable_total_space_in_mb作为一个大影响者).通常这些SSTables非常小.SSTables作为压缩过程的一部分合并在一起.
如果您使用大小分层压缩策略,您将有机会拥有非常大的SSTable.当至少min_threshold(默认4个)相同大小的sstables通过将它们组合成一个文件,过期数据和合并键时,STCS将SSTables组合成一个小的压缩.这有可能在一段时间后创建非常大的SSTable.
使用Leveled Compaction Strategy可以sstable_size_in_mb选择控制SSTables的目标大小.通常,SSTables将小于或等于此大小,除非您有一个包含大量数据的分区键("宽行").
我还没有尝试使用Date-Tiered Compaction Strategy,但是它与STCS类似,因为它合并了相同大小的文件,但它按时间顺序保存数据,并且它有一个配置来停止压缩旧数据(max_sstable_age_days)这可能很有趣.
关键是要找到最适合您的数据的压缩策略,然后围绕最适合您的数据模型/环境的属性进行调整.
您可以在此处阅读有关压缩的配置设置的更多信息,并阅读本指南以帮助了解STCS或LCS是否适合您.