gpt4 book ai didi

Cassandra 表同步

转载 作者:行者123 更新时间:2023-12-03 01:34:31 24 4
gpt4 key购买 nike

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

如何处理对象更新?
例如,用户编辑他的电子邮件,我是手动UPDATE两个表还是仅INSERT包含所有列的对象并且不关心以前的数据(这些数据仍然在我的数据库,但列值错误 => 电子邮件)。

如果发生UPDATE,如何处理数据同步?
目前,我正在手动执行此操作,但是有没有工具可以帮助我?因为,我可能有 5 或 6 个具有不同分区/集群键的表。
听说Hadoop可以做到,或者Apache Spark。

最佳答案

为了确保包含相同数据但布局不同的多个表之间的数据一致性,建议您在 CQL 中使用 LOGGED BATCH 来执行更新。这样,您的 BATCH 中的 CQL 语句(更新数据)就是 ACID,您不必担心某些失败和重试。

使用链接文章的架构,它看起来像:

BEGIN BATCH
INSERT INTO users_by_email (email, username, age) VALUES ('fromanator@email.com', 'fromanator', 24);
INSERT INTO users_by_username (email, username, age) VALUES ('fromanator@email.com', 'fromanator', 24);
APPLY BATCH;

这整个语句是原子的,如果一个插入失败,它们都会失败并且不会进行任何更改。

关于Cassandra 表同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com