我正在寻找一种有效的方法来在Cassandra中更长时间地保留数据。例如:我想保留最近2年的数据,用于真实的查询目的,而在此之前的2年不会被查询,但需要保留用于必要的审计目的。
期待着真实的的选择,如果有的话。版本:Cassandra 3.11 / 4.0
fivyi3re1#
在不知道您的访问模式(特别是主键)和写入模式(批处理/流)的情况下,以下几个建议可以解决您的问题:
1/具有TTL的历史记录表
设计一个可以通过临时键存储数据的表,并为写入的每一行应用4年的TTL用于审计目的的数据(超过2年),处理日期以阻止后端API中的恢复建议PK+CC:((year,month,day),dataId)注意TTL位于列级(See this medium article)
2/历史记录的表,有计划清除
与之前的建议相同,但使用计划作业而不是TTL来清除超过4年的数据。为了实现这一点,使用Spark Cassandra Connector从Cassandra中提取历史化的表,识别要删除的行并清除Cassandra中的数据我个人推荐使用Dataframe API而不是RDD(Official GitHub project)
1条答案
按热度按时间fivyi3re1#
在不知道您的访问模式(特别是主键)和写入模式(批处理/流)的情况下,以下几个建议可以解决您的问题:
1/具有TTL的历史记录表
设计一个可以通过临时键存储数据的表,并为写入的每一行应用4年的TTL
用于审计目的的数据(超过2年),处理日期以阻止后端API中的恢复
建议PK+CC:((year,month,day),dataId)
注意TTL位于列级(See this medium article)
2/历史记录的表,有计划清除
与之前的建议相同,但使用计划作业而不是TTL来清除超过4年的数据。
为了实现这一点,使用Spark Cassandra Connector从Cassandra中提取历史化的表,识别要删除的行并清除Cassandra中的数据
我个人推荐使用Dataframe API而不是RDD(Official GitHub project)