【问题标题】:how to archive and purge Cassandra data如何归档和清除 Cassandra 数据
【发布时间】:2015-12-02 20:42:57
【问题描述】:

我有一个包含多个数据中心的 cassandra 集群。我想每月存档数据并清除该数据。有很多关于备份和恢复的文章,但没有提到在 cassandra 集群中存档数据。

有人可以告诉我如何每月将我的数据存档在 cassandra 集群中并清除数据。

【问题讨论】:

  • 你可以使用 Java 或 C# 吗?您可以创建一个控制台,从 cassandra 中提取数据并将其归档
  • 除了使用 cassandra 内置的 spark 作业之外,还有其他方法吗?
  • 让我们谈谈存档,这是我们需要定期做的事情以节省磁盘空间,所以它不是实时工作,所以让批处理来做,第二件事是我们需要做为了释放空间以便 CQL 运行得更快,它只不过是获取数据 -> 压缩它 -> 将它放在另一个位置,所以我建议有一个批处理作业,将数据从 cassandra 中取出并将其压缩到集群之外......或withing集群snappy

标签: cassandra cassandra-2.0


【解决方案1】:

我认为没有这样的工具可以用于存档 cassandra。您必须编写使用 CqlInputFormat 存档数据的 Spark Jobs 或 map reduce 作业。您可以按照以下链接帮助您了解人们的情况在 cassandra 中归档数据:

[1] - [http://docs.wso2.org/display/BAM240/Archive+Cassandra+Data]

[2] - http://docs.wso2.org/pages/viewpage.action?pageId=32345660

[3] - http://accelconf.web.cern.ch/AccelConf/ICALEPCS2013/papers/tuppc004.pdf

还有一种方法可以在 cassandra 中打开增量备份,可以像 CDC 一样使用。

【讨论】:

  • 我无法访问任何链接。
【解决方案2】:

最佳实践是使用 timewindow compaction 策略并在您的表上设置每月窗口以及 TTL(month),以便可以清除超过一个月的数据。

如果您编写一个清除作业来执行此删除工作(在未应用正确压缩策略的表上),那么这可能会影响集群性能,因为搜索基本日期/月份的数据将使集群不堪重负。

我经历过这种情况,我们最终不得不回去改变表的结构并改变压缩策略。这就是为什么一开始就做好桌子设计非常重要的原因。我们需要考虑(在开始时)不仅要考虑如何在表中插入和读取数据,还要考虑如何将其删除,然后框定键、压缩、ttl 等。

对于存档,只需编写几行代码即可从 Cassandra 读取数据并将其放到您的存档位置。

让我知道这是否有助于获得您想要的最终结果,或者如果您还有其他问题需要我提供帮助。

【讨论】:

  • 改数据就不行了……TWCS的用处很有限
  • Cassandra 在设计上是不可变的,所以你根本无法改变任何东西。即使您需要更改/更新任何记录,它也将是一个 INSERT 并且较旧的记录将被标记为墓碑。 TWCS 有助于支持高效删除。
  • 我知道 Cassandra 中磁盘上的数据是不可变的……我的观点是 TWCS 仅在您不进行太多更改的情况下才能正常工作,并且使用情况有限有可能实现...
  • 上面的问题需要知道如何按月清除数据,所以对于这种情况,TWCS 可以正常工作。对于您的担忧 - 如果您说您想回到过去并更改历史或进行任何类型的设计更改,那么机会就更少了。同样在这种情况下,我建议重新选择工具本身。 Cassandra 可能不是每个用例的正确选择。我希望这是有道理的。
  • 我见过很多有数据删除需求的客户,但是数据一直在变化——想想事务处理。您摄取状态为“已开始”的初始事务,然后将变为“正在检查”,然后变为“已付款”,然后变为“完成” - 一切都可能在 1 秒内完成。但这些都是变化,之后数据不可变,需要清除......
猜你喜欢
  • 2014-05-05
  • 2020-05-27
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多