我已经看到站数据模型是否作为时间序列,因为我们将多个tempratures存储为一列rowkey的多列,即是否为stationId。 https://academy.datastax.com/resources/getting-started-time-series-data-modeling
但现在我的查询是 - 我需要数百万产品的商店可用性(可能在1分钟内改变10次)。 我将创建一个API,以便客户通过时间戳读取产品可用性。
因此,客户可以询问自时间戳(t1)以来所有可用的更改文章,然后我需要提供它们。
所以请建议一些可靠且足够快的数据模型
目前我们还没有创建表格 - 我想以更好的方式进行设计,因此请先咨询。 更具体一点 - 我们需要所有产品的可用性已经改变了一段时间..时间可以是任何(1个月大1岁,5岁)
提前致谢
答案 0 :(得分:0)
如果您只想保存产品日志,请使用以下数据模型 -
create table product_log(
productid int,
changedon bigint,
availability int,
primary key (productid,changedon)
)WITH CLUSTERING ORDER BY (changedon DESC);
插入查询 -
insert into product_log (productid,changedon,availability) values (100,1486562259037,28);-- oldest time stamp value for changedon
insert into product_log (productid,changedon,availability) values (100,1486562296492,29);
insert into product_log (productid,changedon,availability) values (200,1486562322372,30);
insert into product_log (productid,changedon,availability) values (200,1486562332019,31);
insert into product_log (productid,changedon,availability) values (300,1486562340851,32);
insert into product_log (productid,changedon,availability) values (300,1486562348963,33); -- latest time stamp value for changedon
选择*查询---
cqlsh:nasa> select * from product_log;
productid | changedon | availability
-----------+---------------+--------------
200 | 1486562332019 | 31
200 | 1486562322372 | 30
100 | 1486562296492 | 29
100 | 1486562259037 | 28
300 | 1486562348963 | 33
300 | 1486562340851 | 32
(6 rows)
基于changeon值的范围查询 -
cqlsh:nasa> select * from product_log where changedon > 1486562259037 and changedon < 1486562348963 ALLOW FILTERING;
productid | changedon | availability
-----------+---------------+--------------
200 | 1486562332019 | 31
200 | 1486562322372 | 30
100 | 1486562296492 | 29
300 | 1486562340851 | 32
(4 rows)
允许对群集列进行范围查询。只有这个设计的问题是,它会创建宽行。如果您对同一产品ID的更新太多,则分区将不均匀。