首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cassandra数据一致性问题

cassandra数据一致性问题
EN

Stack Overflow用户
提问于 2018-03-22 14:24:21
回答 1查看 398关注 0票数 0

嗨,我是的新手,我找到了关于Cassandra数据建模的基本规则的文章。在示例1中,创建了2个表

代码语言:javascript
复制
CREATE TABLE users_by_username (
    username text PRIMARY KEY,
    email text,
    age int
)

CREATE TABLE users_by_email (
    email text PRIMARY KEY,
    username text,
    age int
)

此表包含相同的数据(用户名、电子邮件和年龄)。这里我不明白如何将数据插入到两个表中。我想,我必须执行两个单独的插入。一个用于表users_by_username,另一个用于表users_by_email。但是如何保持表之间的数据一致性。例如,当我将数据插入第一个表而忘记将数据插入到第二个表时.或者另一种方式

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 15:10:27

作为开发人员,确保数据同步是您的工作。尽管如此,您可以使用物化视图来生成另一个主键略有不同的“表”(对于可以更改的内容有一些规则)。例如,对于您的情况,您可以拥有以下内容:

代码语言:javascript
复制
CREATE TABLE users_by_username (username text PRIMARY KEY, 
   email text, age int);

create MATERIALIZED VIEW users_by_email as SELECT * from 
   users_by_username where email is not null and 
   username is not null primary key (email, username);

如果您将数据插入

代码语言:javascript
复制
insert into users_by_username (username, email, age) 
   values ('test', 'test@domain.com', 30);

除了按用户名查询之外,还可以查询物化视图中的数据。

代码语言:javascript
复制
SELECT * from users_by_username  where username = 'test' ;

 username | age | email
----------+-----+-----------------
     test |  30 | test@domain.com

SELECT * from users_by_email where email = 'test@domain.com';

 email           | username | age
-----------------+----------+-----
 test@domain.com |     test |  30
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49431151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档