在Cassandra中用于存储重复数据的模型

时间:2016-12-29 15:01:17

标签: cassandra cql

我试图存储数据非常相似的值列表。 我需要创建一个表格模型,避免使用upserts,并且可以使用(日期,小时和国家/地区)进行查询。

hour;date;country;unit;type;energy;price;offer;

1;01/01/2016;MI;C;3,6;180,30;O;
1;01/01/2016;MI;C;20,0;180,30;O;
1;01/01/2016;MI;C;837,3;180,30;O;
1;01/01/2016;MI;C;3,4;180,30;O
1;01/01/2016;MI;C;0,6;180,30;O;
1;01/01/2016;MI;C;0,8;180,30;O;
1;01/01/2016;MI;C;1,5;180,30;O;
1;16/12/2016;ES;V;1,5;0;C;
1;16/12/2016;ES;V;0,4;0;C;

我研究了一些用户定义类型(UDT)。这是实施它们的一个很好的例子吗?

例如,可以将复合分区键应用于(小时,日期和国家/地区),将字段readings应用于由" unidad,tipo oferta,energía,precio,ofertada&#组成的数据类型34;

这是保留和搜索数据的最佳方法吗?

2 个答案:

答案 0 :(得分:2)

根据我的理解,您的问题与必须共存的多个hour:date:country元组有关。

我会先"崩溃"小时和日期只到一个timestamp字段(可选),然后添加"随机" timeuuid字段作为群集密钥。这将允许具有属于同一元组time stamp:country的一组行。

表格看起来像

CREATE TABLE mutable (
    country text,
    ts timestamp,
    ck timeuuid,
    ....
    PRIMARY KEY ((country, ts), ck)
)

答案 1 :(得分:0)

这似乎是在Cassandra中使用时间序列的好例子,因为你有一个取决于时间的标量值 https://academy.datastax.com/resources/getting-started-time-series-data-modeling