ege*_*ard 2 cql cassandra cassandra-2.0
是否可以在Cassandra中的UUID/TIMEUUID列上创建索引?我正在测试一个模型设计,它会在UUID列上有一个索引,但是对该列的查询总是返回0行.
我有这样一张桌子:
create table some_data (site_id int, user_id int, run_id uuid, value int, primary key((site_id, user_id), run_id));
Run Code Online (Sandbox Code Playgroud)
我用这个命令创建一个索引:
create index idx on some_data (run_id) ;
Run Code Online (Sandbox Code Playgroud)
创建此索引时,CQL不会抛出任何错误.
我在表格中有一小部分测试数据:
site_id | user_id | run_id | value
---------+---------+--------------------------------------+-----------------
1 | 1 | 9e118af0-ac92-11e4-81ae-8d1bc921f26d | 3
Run Code Online (Sandbox Code Playgroud)
但是,当我运行查询时:
select * from some_data where run_id = 9e118af0-ac92-11e4-81ae-8d1bc921f26d
Run Code Online (Sandbox Code Playgroud)
CQLSH只返回: (0 rows)
如果我使用a int
,run_id
则索引的行为与预期一致.
是的,您可以在UUID上创建二级索引.真正的问题是"你应该吗?"
无论如何,我按照你的步骤,让它工作.
Connected to Test Cluster at 192.168.23.129:9042.
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
aploetz@cqlsh> use stackoverflow ;
aploetz@cqlsh:stackoverflow> create table some_data (site_id int, user_id int, run_id uuid, value int, primary key((site_id, user_id), run_id));
aploetz@cqlsh:stackoverflow> create index idx on some_data (run_id) ;
aploetz@cqlsh:stackoverflow> INSERT INTO some_data (site_id, user_id, run_id, value) VALUES (1,1,9e118af0-ac92-11e4-81ae-8d1bc921f26d,3);
aploetz@cqlsh:stackoverflow> select * from usr_rec3 where run_id = 9e118af0-ac92-11e4-81ae-8d1bc921f26d;
code=2200 [Invalid query] message="unconfigured columnfamily usr_rec3"
aploetz@cqlsh:stackoverflow> select * from some_data where run_id = 9e118af0-ac92-11e4-81ae-8d1bc921f26d;
site_id | user_id | run_id | value
---------+---------+--------------------------------------+-------
1 | 1 | 9e118af0-ac92-11e4-81ae-8d1bc921f26d | 3
(1 rows)
Run Code Online (Sandbox Code Playgroud)
但请注意,当我运行此命令时,它失败了:
select * from usr_rec3 where run_id = 9e118af0-ac92-11e4-81ae-8d1bc921f26d
Run Code Online (Sandbox Code Playgroud)
你确定你不是故意选择some_data
吗?
此外,在高基数列(如UUID)上创建二级索引通常不是一个好主意.如果您需要查询run_id
,那么您应该重新访问您的数据模型并提供适当的查询表来提供服务.
澄清:
归档时间: |
|
查看次数: |
489 次 |
最近记录: |