Cassandra表同步

我刚刚阅读了DataStax帖子“ Basic Rules of Cassandra Data Modeling”,总而言之,我们应该通过查询而不是我们的关系/对象来建模我们的数据库模式.因此,许多表可以具有相同的重复数据,例如users_by_email和users_by_username,它们都具有相同的数据.

我该如何处理对象更新?
例如,用户编辑他的电子邮件,我是手动更新两个表还是仅使用所有列插入对象而不关心以前的数据(它们仍在我的数据库中,但列值错误=>电子邮件).

如果是UPDATE,我该如何处理数据同步?
目前,我手动完成,但有工具可以帮助我吗?因为,我可能有5或6个表具有不同的分区/群集键.
我听说Hadoop可以做到,或者Apache Spark.

在Cassadnra中,给定现有记录,使用相同主键的更新或插入将导致标记为删除的旧记录(使用墓碑)并且新记录变为“活动”.插入和更新之间的差异很少有细微差别,比如计数器和空值,但这些可能与问题无关.

在Cassandra 3.0中,维护同步数据的多个视图的责任在于客户端应用程序.是的,它意味着在需要它的所有不同表中插入/更新新数据.

Cassandra 3.0引入了“Materialized Views”,它允许您维护数据的“主”表和几个视图,所有这些都由Cassandra管理.它需要仔细的数据建模,以便“主”表的主键包含创建所需的不同视图和相关查询所需的实体.

还有一个注意事项:如果您发现您的数据是高度关系的并且需要多个/多个视图才能使其可查询,那么Cassandra可能不适合问题空间,您可能应该考虑使用RDBMS.

为了扩展所提供的示例,可能用户信息是我们希望保留在关系数据库中的内容,而这些用户的大量操作可以在Cassandra中注册. (购买,点击,心率样本……)

相关文章
相关标签/搜索