我阅读了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
,那么我可以向应用程序添加一些带有updateName
和addGroup
方法的DA操作员(用户名)
。
对于每个
用户名
,实例化自己的对象(通过工厂),该对象将在初始化时从用户
表中读取状态。这样,它将具有用户名
和组,因此可以将更改视为两个表(用户
和组
)的写入批处理
。
插入或更新数据时,需要使用批处理语句来保持< 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,而其他列的集合。我添加了一个