很难理解Cassandra查询
在Cassandra中,我理解应该根据需要查询的内容创建表。例如,我目前有一个Users和Users_By_Status表很难理解Cassandra查询,cassandra,nosql,cql,Cassandra,Nosql,Cql,在Cassandra中,我理解应该根据需要查询的内容创建表。例如,我目前有一个Users和Users_By_Status表 ##Users## CREATE TABLE Users ( user_id uuid, name text, password text, status int, username text, PRIMARY KEY (user_id) ); CREATE INDEX user_username_idx ON Users
##Users##
CREATE TABLE Users (
user_id uuid,
name text,
password text,
status int,
username text,
PRIMARY KEY (user_id)
);
CREATE INDEX user_username_idx ON Users (username);
##Users_By_Status##
CREATE TABLE Users_By_Status (
username text,
status int,
user_id uuid,
PRIMARY KEY (username, status, user_id)
);
在这种情况下,如果用户离开,他们的记录将不会被删除。相反,状态将从1更改为0
如果我将数据插入用户表,我是否也需要手动将数据插入用户按状态表?如果我更新用户中的状态会发生什么?我是否也需要手动更新Users_By_Status表中的记录
我有一种感觉,我对卡桑德拉的理解是错误的。感谢所有我能得到的帮助。简短回答:是的,在您的情况下,您需要手动删除。 在cassandra db中,您需要在应用程序层中编写更多代码来处理像这样的cenarios 但我们还有其他选择,如物化视图或批处理语句 对于您的解决方案,我认为物化视图是最好的选择。可以从表用户创建物化视图。像这样:
CREATE MATERIALIZED VIEW Users_By_Status
AS SELECT username, status, userid
FROM Users
PRIMARY KEY(username, status, userid);
是的,当您更新表用户时,更新也将在物化视图用户按状态进行
参考资料:简短回答:是的,在您的情况下,您需要手动删除。 在cassandra db中,您需要在应用程序层中编写更多代码来处理像这样的cenarios 但我们还有其他选择,如物化视图或批处理语句 对于您的解决方案,我认为物化视图是最好的选择。可以从表用户创建物化视图。像这样:
CREATE MATERIALIZED VIEW Users_By_Status
AS SELECT username, status, userid
FROM Users
PRIMARY KEY(username, status, userid);
是的,当您更新表用户时,更新也将在物化视图用户按状态进行
参考:
我是否也需要手动更新Users_By_Status表中的记录
所以CoutinhoBR暗示了这一点,但我会马上说出来。不能在Cassandra中更新主键值。因此,需要执行DELETE
操作才能从中获取旧的状态值,然后写入新的状态值
我是否也需要手动更新Users_By_Status表中的记录
所以CoutinhoBR暗示了这一点,但我会马上说出来。不能在Cassandra中更新主键值。因此,需要执行
DELETE
,才能从中获取旧的状态值,然后写入新的状态值。非常感谢!那好多了。非常感谢你的帮助,非常感谢!那好多了。非常感谢你的帮助。啊,是的。我想试试,但觉得那样不行。非常感谢。啊,是的。我想试试,但觉得那样不行。非常感谢。