gpt4 book ai didi

cassandra - 使用 Cassandra 处理时间序列数据

转载 作者:行者123 更新时间:2023-12-03 18:19:30 24 4
gpt4 key购买 nike

我正在研究将日志存储到 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
);

每天都会为当天创建一个新表。
所以一张表只包含一天的日志。

我的查询条件如下。
查询特定用户在特定日期(日期而不是时间)的所有日志。
因此,原因、商品、价格、数量根本不会用作查询的提示或条件。

我的问题是哪种 PRIMARY KEY 设计更适合。
编辑:这里的关键是我想以示意图的方式存储日志。

如果我选择 #1,那么每个日志会创建很多列。每个日志有更多值的可能性非常高。上面的模式只是一个例子。日志可以包含诸如 subreason、friendid 等值。

如果我选择 #2,每个日志将创建一个(非常)复合列,到目前为止,我找不到有关复合列开销的任何有值(value)的信息。

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

最佳答案

我的建议是,您的两个选项似乎都不适合您的时间序列,事实上您每天都在创建一个表格,这似乎也不是最佳选择。

相反,我建议创建一个表并按用户 ID 和日期进行分区,并使用时间 uuids 作为事件的聚集列,这样的示例如下所示:

CREATE TABLE log_per_day (
userid bigint,
date text,
time timeuuid,
value text,
PRIMARY KEY ((userid, date), time)
)

这将允许您将一天中的所有事件放在一行中,并允许您每天对每个用户进行查询。

通过声明 time聚集列允许有一个宽行,您可以在一天内根据需要插入尽可能多的事件。

所以行键是 composite key文本中的用户 ID 和加号日期,例如
insert into log_per_day (userid, date, time, value) values (1000,'2015-05-06',aTimeUUID1,'my value') insert into log_per_day (userid, date, time, value) values (1000,'2015-05-06',aTimeUUID2,'my value2')
上面的两个插入将在同一行中,因此您将能够在单个查询中读取。

另外,如果您想了解有关时间序列的更多信息,我强烈建议您查看 Getting Started with Time Series Data Modeling

希望能帮助到你,

何塞·路易斯

关于cassandra - 使用 Cassandra 处理时间序列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com