【问题标题】:How to model cassandra columnfamily如何建模 cassandra 列族
【发布时间】:2014-11-23 15:43:19
【问题描述】:

对于我定义的列族是否可以进行以下选择查询,因为我收到了错误的请求错误。我应该如何对我的列族建模以获得正确的结果。

CREATE TABLE recordhistory ( userid bigint, objectid bigint, operation text, record_link_id bigint, time timestamp, username text, value map<bigint, text>, PRIMARY KEY ((userid, objectid), operation, record_link_id, time) ) WITH CLUSTERING ORDER BY (operation ASC, record_link_id ASC, time DESC)

选择查询:

SELECT * FROM recordhistory WHERE userid=439035 AND objectid=20011009 AND operation='update' AND time>=1389205800000 AND time<=1402338600000 ALLOW FILTERING;

错误请求:PRIMARY KEY 列“时间”不能被限制(前面的列“record_link_id”要么不受限制,要么受非 EQ 关系限制)

SELECT * FROM recordhistory WHERE userid=439035 AND objectid=20011009 AND record_link_id=20011063 ALLOW FILTERING;

错误请求:PRIMARY KEY 列“record_link_id”不能被限制(前面的列“操作”要么不受限制,要么受非 EQ 关系限制)

【问题讨论】:

标签: cassandra cql cql3 cqlsh


【解决方案1】:
create table recordhistory (
userid bigint,
objectid bigint,
operation text,
record_link_id bigint,
time timestamp,
username text,
value map<bigint, text>,
PRIMARY KEY ((userid, objectid), time, operation, record_link_id)) WITH CLUSTERING ORDER BY (time DESC, operation ASC, record_link_id ASC);

select * from recordhistory where userid=12346 AND objectid=45646 and time >=1389205800000 and time <1402338700000 ALLOW FILTERING;

 userid | objectid | time                     | operation | record_link_id | username | value
--------+----------+--------------------------+-----------+----------------+----------+-------
  12346 |    45646 | 2014-06-09 11:30:00-0700 |     myop4 |          78946 |    name3 |  null
  12346 |    45646 | 2014-01-08 10:30:00-0800 | myop99999 |         999999 |    name3 |  null

【讨论】:

  • 感谢您的回答,如果我在 record_link_id 上创建索引并且我会查询 select * from recordhistory where userid = 12346 and objectid = 45646 and record_link_id = 78946;在这个查询中,cassandra 会触及所有节点吗?
  • 是的,我想是的。 Cassandra 不会让您执行这样一个可能导致系统崩溃的潜在昂贵查询。要进行范围查询,数据必须在磁盘上按连续顺序排列。因此,如果将 Time 设为第一个聚类列,则可以按 Time 范围查询。
猜你喜欢
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2014-05-05
  • 2020-05-28
相关资源
最近更新 更多