当前位置: 首页 > 知识库问答 >
问题:

非规范化的cassandra数据建模

祁宾白
2023-03-14

我阅读了cassandra数据建模,除了非规范化数据可能会发生变化之外,一切都很清楚。我如何同步它?当用户电子邮件更改时,更新email的方法是什么:

CREATE TABLE groups ( groupname text, username text, email text, age int, hash_prefix int, PRIMARY KEY ((groupname, hash_prefix), username) )

< code>groupname是组的一部分,数据模型中的用户可能不知道任何组,因此在用户更改后无法更新电子邮件。

下面描述的解决方案是否合适?

向用户模型中添加一列(类型set

如果用户模型有一个主键username,那么我可以向应用程序添加一些带有updateNameaddGroup方法的DA操作员(用户名)

对于每个用户名,实例化自己的对象(通过工厂),该对象将在初始化时从用户表中读取状态。这样,它将具有用户名和组,因此可以将更改视为两个表(用户)的写入批处理


共有1个答案

空枫涟
2023-03-14
匿名用户

插入或更新数据时,需要使用批处理语句来保持< code>users和< code>groups两个表之间的数据同步

例如:

BEGIN BATCH
  INSERT INTO users (...) VALUES (...);
  INSERT INTO groups (...) VALUES (...);
APPLY BATCH;

如果你感兴趣,有一个免费教程https://www.datastax.com/dev通过在同一个浏览器选项卡上运行的预先安装的Cassandra集群(原子性和批处理)上的实践练习,详细解释了这些概念。干杯

 类似资料:
  • 非规范化数据不存储规范化的数据。换句话说非规范化意味着相同数据的多个拷贝同时存在。 上一章中,我们在帖子中非规范化评论总数,以避免每次都加载所有的评论。在数据建模意义上说这是冗余的,因为我们可以通过计数每个评论,随时计算出该总数(当不考虑运行速度)。 非规范化通常意味着额外的开发工作。在例子中,我们每次添加或删除评论时,还需要同时更新相关的帖子,以确保 commentsCount 字段保持准确。这

  • 问题内容: 用例说明 我们有一个关系数据库,其中包含有关我们日常运营的数据。目的是允许用户使用全文本搜索引擎来搜索重要数据。数据经过规范化,因此不是进行全文查询的最佳形式,因此,其想法是对数据的一部分进行规范化,然后将其实时复制到Elasticsearch,这使我们能够创建快速而准确的搜索应用程序。 我们已经有了一个启用数据库操作(插入,更新,删除)事件搜索的系统。这些事件仅包含已更改的列和主键(

  • 问题内容: 我正在使用Ruby on Rails 3.0.7和MySQL5。在我的应用程序中,我有两个数据库表,即TABLE1和TABLE2,并且出于性能原因,我对TABLE2中的某些数据进行了非规范化,因此我在该表中重复了TABLE1的值。现在,在TABLE1中,我需要更新一些涉及的值,当然,我还必须在TABLE2中正确地更新非规范化的值。 我该如何以高效的方式更新这些值? 也就是说,如果TAB

  • 问题内容: 我有一个简单的表,其中包含学生编号和相应的教师编号,并且需要对它进行规范化,以输入到旧版系统中。 例如,下面是数据现在的样子: 我希望它看起来像这样,将每个Teacher分成一个单独的列,从左到右填充各列。一个业务规则是,每个学生最多只能有六位老师: 原始表中有10,000多行,因此我需要以编程方式执行此操作。谢谢! 问题答案: 您可以使用数据透视。您还需要“排名”您的老师1-6。请参

  • 问题内容: 好的,我刚开始使用Firebase。我已阅读:https://www.firebase.com/docs/data- structure.html, 并且已阅读:https://www.firebase.com/blog/2013-04-12-denormalizing- is- normal.html 所以我很困惑,因为一个似乎与另一个矛盾。您可以按层次结构组织数据,但是如果您想使其

  • 我在Cassandra中有两个结构相同的柱族: 在第二个表中,行数是第一个表的三倍。例如,在第一个表中,我会有一行(firstname,lastname,countryId): 在第二个表中,我将有行(firstname、lastname、countryId): 我只需要使用集合创建一个列系列,这样我就只有一行与主 countryId (100) 的 John Doe,而其他列的集合。我添加了一个