将动态数据插入Cassandra列族

时间:2018-01-30 17:24:11

标签: filter cassandra where-clause data-modeling cql

这可能不是这个问题的相关标题,但如果我解释我的意思,那就有意义了。

为了了解Cassandra的工作原理,我有以下几种情况:

考虑一下我的网上商店有很多不同的产品,比如汽车,智能手机,衣服等,每件产品都有自己的规格。

我需要一些关于如何为我的Products列系列建模的示例?

应该提到我需要按规格过滤它们。类似的东西:

SELECT * FROM Products WHERE Ram > 3;

2 个答案:

答案 0 :(得分:0)

Cassandra数据建模为每个查询建议一个表。 现在,如果您想查询规格,我们需要将规格作为关键之一。使用该表,您可以查询如下内容:

SELECT * from products where specs = 'RAM';

如果您要对品牌进行过滤,则需要将brand_name保留为其中一列,您的查询将如下所示:

SELECT * from from products where brand_name = 'brandname';

所以,我们在这里看到的是我们需要制作“内存”。作为其中一个专栏。 您需要进行数据争用以为每个规范创建数据。例如:您拥有product_id,spec,inventory的数据。您需要进行一些分析,看看是否需要为每个规范创建列,或者您可以对许多规范进行分组并创建新列。最终数据可能如下所示: product_id,ram product_id,hdd等。您明白了。

如果你有很多规格,那么你可能需要为不同的产品创建单独的表,然后从那里设计数据模型。

我建议您使用data modeling course来更好地了解cassandra数据建模。

答案 1 :(得分:0)

我不太确定这是否是最好的答案。但经过一些研究,我发现THIS

这样我就可以将产品规格存储在MAP<TEXT, TEXT>数据类型的列中。然后在上面创建INDEX。

然后我可以像下面这样查询:

SELECT * FROM Products WHERE Specs['Ram'] > '3GB';

因此,Ram是MAP的关键,3GB是它的价值。