卡桑德拉范围查询

时间:2016-06-09 07:03:59

标签: cassandra cqlsh cassandra-2.1

我有一套产品(product_Id,价格)。

'价格'所有产品都在不断变化,因此需要经常更新。

我想对价格进行范围查询:

select * from products where price > 10 and price < 100;

请注意 - 我想让产品在范围内。查询无所谓。

对此方案进行建模的最佳方法是什么?我正在使用cassandra 2.1.9。

1 个答案:

答案 0 :(得分:2)

如果您的价格是列密钥,则只能使用分区键创建范围查询。 E.g。

你的桌子:

products (product_Id text, price float, PRIMARY KEY(productId, price))

您的范围查询:

SELECT * FROM products 
WHERE productId = 'ysdf834234' AND price < 1000 AND price > 30;

但我认为这个查询真的没用。如果您需要价格范围而没有分区键,则需要一个新表。但我认为带有2列的Cassandra表是一个糟糕的数据库设计。在您的用例中,纯键值存储是更好的选择。 (与Redis一样)但您也可以添加productType,productVariation,productColor,productBrand ...作为列。在这种情况下,Cassandra是一个很好的选择。然后您可以创建如下表格:

productsByType_price PRIMARY KEY(productType, productPrice, productId)
productsByType_color PRIMARY KEY(productType, productColor, productId)
productsByType_brand PRIMARY KEY(productType, productBrand, productId)

一个提示:阅读更多有关cassandra如何管理数据的信息。这真的可以帮助您进行数据建模。

相关问题