我有一套产品(product_Id,价格)。
'价格'所有产品都在不断变化,因此需要经常更新。
我想对价格进行范围查询:
select * from products where price > 10 and price < 100;
请注意 - 我想让产品在范围内。查询无所谓。
对此方案进行建模的最佳方法是什么?我正在使用cassandra 2.1.9。
答案 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如何管理数据的信息。这真的可以帮助您进行数据建模。