嗨,我是的新手,我找到了关于Cassandra数据建模的基本规则的文章。在示例1中,创建了2个表
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。但是如何保持表之间的数据一致性。例如,当我将数据插入第一个表而忘记将数据插入到第二个表时.或者另一种方式
发布于 2018-03-22 15:10:27
作为开发人员,确保数据同步是您的工作。尽管如此,您可以使用物化视图来生成另一个主键略有不同的“表”(对于可以更改的内容有一些规则)。例如,对于您的情况,您可以拥有以下内容:
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);如果您将数据插入
insert into users_by_username (username, email, age)
values ('test', 'test@domain.com', 30);除了按用户名查询之外,还可以查询物化视图中的数据。
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 | 30https://stackoverflow.com/questions/49431151
复制相似问题