如何在同步过程中将数据存储在临时位置的cassandra中?

时间:2016-05-08 07:44:37

标签: cassandra

我们正在运行一个运行应用程序写入的mysql服务器。为了进行一些批处理,我们编写了一个同步作业来将数据迁移到cassandra集群中。

1. A daily sync job which transfers by updated timestamp for that day.
2. A complete sync job which transfers complete data, overriding existing ones.

现在可能有一行从mysql中删除了,在这种情况下使用上面的方法它将永远存在于cassandra中。

为了解决这个问题,我们为每一行提供了15天的TTL。所以最终它会被删除,如果它没有删除,那么在下一次完全同步时,TTL将被重写。

就用例而言它的工作正常但问题是在完全同步时,完整的数据被覆盖并且sstable一直在生成,并且压缩始终发生,负载平均值随着缓慢和备份大小的增加而增加(本来可以避免的。)

基本上我们希望用新数据替换现有的表数据,但是我们不希望在开始作业之前截断,但只是在作业完成之后。

除了创建一个新表并在生成数据时丢弃过表之外,还有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

您可以查看我在此处介绍的双重迁移策略:http://www.slideshare.net/doanduyhai/from-rdbms-to-cassandra-without-a-hitch

如果出现问题,它具有允许100%正常运行时间和可能的回滚的优点。缺点是发布期间所需的工作量和码