我是cassandra数据库的新手,我正在制作简单的电子商务模式。在关系世界中,我们有如下模式类别表(id,name(,产品表(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,
category_name text,
price decimal,
discounted_price decimal,
PRIMARY KEY (product_id)
)
CREATE TABLE products_by_category (
category_id text,
product_id text,
product_name text,
category_name 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 = ?
干杯!