Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
很难理解Cassandra查询_Cassandra_Nosql_Cql - Fatal编程技术网

很难理解Cassandra查询

很难理解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

在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 (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
,才能从中获取旧的状态值,然后写入新的状态值。

非常感谢!那好多了。非常感谢你的帮助,非常感谢!那好多了。非常感谢你的帮助。啊,是的。我想试试,但觉得那样不行。非常感谢。啊,是的。我想试试,但觉得那样不行。非常感谢。