DataModel用例登录Cassandra

时间:2018-02-22 06:28:43

标签: apache cassandra data-modeling cassandra-3.0

我正在尝试在Cassandra中设计应用程序日志表,

CREATE TABLE log(
  yyyymmdd varchar, 
  created timeuuid,  
  logMessage text,
  module text, 
  PRIMARY KEY(yyyymmdd, created)
);

现在,当我尝试执行以下查询时,它正在按预期工作,

select * from log where yymmdd = '20182302' LIMIT 50;

以上查询没有分组,有点全局。

目前我为'module'做了一个二级索引,所以我能够执行以下操作,

select * from log where yymmdd = '20182302' WHERE module LIKE 'test' LIMIT 50;     

现在我关注的是没有做 二级索引 ,是否有一种基于模块查询的有效方法并获取数据(或)是否有更好的设计?

另请告诉我当前设计中的性能问题。

谢谢,
哈利

1 个答案:

答案 0 :(得分:2)

对于基于module和日期的提取,您只能使用另一个表格,如下所示:

CREATE TABLE module_log(
  yyyymmdd varchar, 
  created timeuuid,  
  logMessage text,
  module text, 
  PRIMARY KEY((module,yyyymmdd), created)
);

这将允许module&的每个组合都有单个分区。 yyyymmdd值,因此您不会有非常宽的分区。

此外,考虑到如果您仅在module字段上创建了二级索引 - 您可能会遇到分区太大的问题(我假设您的module值非常有限?)

P.S。你使用的是纯粹的Cassandra,还是DSE?