问题描述
我是cassandra db的新手,我正在制作简单的电子商务模式。在关系世界中,我们遵循以下模式 类别表(ID,名称), 产品表(id,categoryId,名称,价格,折扣价)
所以在cassandra中,如果我有以下查询,该如何为我的数据建模
- 选择所有类别;
- 选择所有产品;
- 选择具有类别名称的特定产品
- 选择特定类别的产品
如果我更新类别名称,是否会影响所有表格?
解决方法
这是一个可能的数据模型:
CREATE TABLE categories (
category_id text,category_name text,...
PRIMARY KEY (category_id)
)
CREATE TABLE products (
product_id text,category_id text,product_name text,price decimal,discounted_price decimal,PRIMARY KEY (product_id)
)
CREATE TABLE products_by_category (
category_id text,product_id text,PRIMARY KEY ((category_id),product_id)
)
要获取类别列表:
SELECT category_name FROM categories
这是一个全表扫描,除非您有数百个类别,否则应该没问题。
要获取产品列表:
SELECT product_name FROM products
如上所述,这也是一个全表扫描,如果您有成千上万的产品和/或大型集群,这将是一个问题。
要选择具有类别名称的特定产品:
SELECT product_name,category_name FROM products WHERE product_id = ?
要获取某个类别的产品列表:
SELECT category_name,product_name FROM products_by_category WHERE category_id = ?
干杯!