用于在 Cassandra 中登录的 DataModel 用例

DataModel use case for logging in Cassandra

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

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;     

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

也让我知道当前设计中的性能问题。

对于基于module和日期的抓取,你只能使用另一个table,像这样:

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

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

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

P.S。您使用的是纯 Cassandra 还是 DSE?