Cassandra表同步

Div*_*ivi 7 cassandra nosql datastax

我刚刚阅读了DataStax文章" Cassandra数据建模的基本规则 ",总而言之,我们应该通过查询而不是我们的关系/对象来建模我们的数据库模式.因此,许多表可以具有相同的重复数据,例如users_by_email,users_by_username它们都具有相同的数据.

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

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

maa*_*asg 3

在 Cassadnra 中,给定现有记录,使用相同主键进行更新或插入将导致旧记录标记为删除(带有逻辑删除),而新记录将变为“活动”。插入和更新之间的区别很少,例如计数器和空值,但这些可能与问题无关。

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

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

另请注意:如果您发现您的数据高度相关,并且需要多个/多个视图才能使其可查询,那么 Cassandra 可能不太适合该问题空间,您可能应该考虑使用 RDBMS。

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