这可能不是这个问题的相关标题,但如果我解释我的意思,那就有意义了。
为了了解Cassandra的工作原理,我有以下几种情况:
考虑一下我的网上商店有很多不同的产品,比如汽车,智能手机,衣服等,每件产品都有自己的规格。
我需要一些关于如何为我的Products列系列建模的示例?
应该提到我需要按规格过滤它们。类似的东西:
SELECT * FROM Products WHERE Ram > 3;
答案 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是它的价值。