我们建议将Cassandra实现为大型归档解决方案的数据库后端(与读取相比,大量写入)。我们正在寻找有关Cassandra复制和部署策略的输入,以适应我们的用例。
Cassandra的选择基于以下因素:
数据估算
使用案例
我们有两个数据中心 - Operations DC和Analytics DC(用于隔离读写工作负载)。在这篇文章的最后是描述所提出的架构的图表。 由于存储限制,我们无法在Operations DC上存储终生生成的数据。因此,我们计划根据定义的政策将操作DC中的数据移至Analytics DC(让我们说在1周后)。
问题
我们计划使用Cassandra内置的生存时间功能来删除数据(仅限于操作DC)。从Operations DC中删除的数据不应从Analytics DC中删除。如何防止删除数据的复制?
我已经读过单个Cassandra节点最多可以处理2-3 TB的数据。任何较大的Cassandra实现的任何文档参考都会有所帮助。
应该部署多少个Cassandra节点来处理这种增长?什么是推荐的部署策略?
性能注意事项:尽管Operations DC的存储空间有限(3-7天数据,大约5-10 TB),但Analytics DC上的数据存储是累积的,并且会随着时间的推移而持续增长。分析DC上的数据库增长是否会影响复制并降低Operations DC的性能。
这里的目的是了解Cassandra的内置功能是否可用于支持上述要求。我知道最明显的解决方案。两个DC之间没有复制。从Operations DC转储最近一周的数据并将其移至Analytics DC。
答案 0 :(得分:1)
我认为在你的情况下,只有"分开" DC - 例如,一个DC中的键空间不会复制到另一个DC中 - 只需创建具有必要的相应复制设置的键空间。
或者你可以复制" transactional"加载到两个DC,并有一个工作,将定期从"事务" keypace into" analytics"键空间,然后从"事务中删除数据" keypace释放空间。
但是,在你使用类似DSE的高级复制之类的东西之前,不可能有类似于你所描述的东西(但它不是关于DC,而是关于单独的集群)。
答案 1 :(得分:1)
否
是的,复制是按每个键空间配置的。
开箱即用,但可以使它起作用。我可以想到两个相对简单的选择。最简单的方法是批量写入两个密钥空间/ DC,一个写入TTL,另一个不写入。您还可以每月/每年创建一个密钥空间,从其复制到多个DC开始,并在适当时删除“正常” DC。
Cassandra cluster - data density (data size per node) - looking for feedback and advises
Cassandra在一个集群中最多可以容纳约800-1000个实例,但是为了便于操作,通常建议将其分片小于一个实例
DC可以不对称。