我试图了解在CQL样式表中插入行(列)时,内部存储引擎级别究竟发生了什么.
CREATE TABLE log_date (
userid bigint,
time timeuuid,
category text,
subcategory text,
itemid text,
count int,
price int,
PRIMARY KEY ((userid), time) - #1
PRIMARY KEY ((userid), time, category, subcategory, itemid, count, price) - #2
);
Run Code Online (Sandbox Code Playgroud)
假设我有一个像上面这样的表.
在#1的情况下,CQL行将在存储中生成6(或5?)列.
在#2的情况下,CQL行将在存储中生成非常复合的列.
我想知道将日志存储到Cassandra的更有效方法.
请关注两种情况.
我不需要任何实时读取.只是着作.
如果您想建议其他选项,请参阅以下内容.
我选择Cassandra存储日志的原因是
我正在研究将日志存储到Cassandra.
日志的架构将是这样的.
编辑:我已经改变了架构,以便做出一些澄清.
CREATE TABLE log_date (
userid bigint,
time timeuuid,
reason text,
item text,
price int,
count int,
PRIMARY KEY ((userid), time) - #1
PRIMARY KEY ((userid), time, reason, item, price, count) - #2
);
Run Code Online (Sandbox Code Playgroud)
每天都会创建一个新表.因此,表只包含一天的日志.
我的查询条件如下.
查询特定用户在特定日期(日期而非时间)的所有日志.
因此,原因,项目,价格,计数将不会被用作查询的提示或条件.
我的问题是哪种PRIMARY KEY设计更适合.
编辑:这里的关键是我想以原理图的方式存储日志.
如果我选择#1,那么每个日志会创建很多列.并且每个日志具有更多值的可能性非常高.上面的架构只是一个例子.日志可以包含subreason,friendid等值.
如果我选择#2,则每个日志将创建一个(非常)复合列,到目前为止,我找不到有关复合列开销的任何有价值的信息.
我应该选择哪一个?请帮忙.