小编Woo*_*Kim的帖子

卡桑德拉存储内部

我试图了解在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存储日志的原因是

  1. 线性可扩展性,适合繁重的写作.
  2. 它具有CQL中的模式.我真的更喜欢有一个架构.
  3. 似乎足够支持Spark.Datastax的cassandra-spark连接器似乎具有数据局部性感知.

time-series cql cassandra apache-spark

5
推荐指数
1
解决办法
2435
查看次数

使用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,则每个日志将创建一个(非常)复合列,到目前为止,我找不到有关复合列开销的任何有价值的信息.

我应该选择哪一个?请帮忙.

time-series composite-key cassandra

3
推荐指数
1
解决办法
1万
查看次数