如何在 Cassandra 中设计一个 Table 的评分系统

How to Design a Table for scoring system in Cassandra

我的产品在 Cassandra 中有一个 table。在这个table中我存储了产品名称和卖家名称(可能有数千个卖家)和score(卖家的产品评分),如下

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 查询:

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

我需要按分数顺序获取产品但是如你所知,如果没有分数作为主键是无法排序的但是如果我将分数放在主键中,将无法更新它是什么解决方案?

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

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

所以你在写作时填充两个并使用第二个按分数排序