如何设计Cassandra评分系统的表格

jfewjypa  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(291)

我在Cassandra有一张table放我的产品。在这个表中,我存储了产品名称和卖家名称(可能有数千个卖家)以及分数(卖家的产品分数),如下所示

CREATE TABLE products
(
    product_name varchar,
    seller_name varchar,
    score    int,
    primary key (product_name, seller_name)
);

我需要更新代码中的分数

UPDATE products SET score = 2 WHERE product_name = "iphone-7" AND seller_name = "jack" ;

一切正常,除了选择查询:

SELECT * FROM products WHERE product_name = "iphone-7" ORDER BY SCORE DESC;

我需要按分数顺序获得产品,但如您所知,如果分数不是主键,则无法排序,但如果我将分数放入主键,则无法更新它解决方案是什么?

erhoui1w

erhoui1w1#

解决方案是有两个表来满足您的需求。例如,第二个表可以是

CREATE TABLE products_score
(
    product_name varchar,
    score    int,
    primary key (product_name, score)
);

所以你在写的时候就填充了,然后用第二个按分数排序

相关问题