将许多与多个关系转换为Cassandra中的表

时间:2018-02-14 17:15:40

标签: cassandra many-to-many data-modeling conceptual

我的模型中有以下表格:

Store table:            domain(key), name
Product table:          url(key), name
Products_Stores table:  store_domain(key), product_url(key), url, score

我从DataStax学习了一些课程,但仍然不知道如何将这个概念模型转换为逻辑模型。我的意思是我需要像关系数据库这样的3个表吗?如果是这样,怎么样?

请完全清楚,因为我的实体之间有更多这样的关系。

1 个答案:

答案 0 :(得分:0)

如果您的cassandra版本是2.0+,您可以使用以下方法。

除了存储有关商店和产品的信息的表格,这是您的前两个("商店表"和"产品表"),表示多对多关系,您需要两个附加表格(总共4个):

  • 商店产品表:store_domain(partition key), product_url(clustering column)
  • 按产品分类的商店:product_url(partition key), store_domain(clustering column)

因此,要检索商店的所有产品,您需要请求指定store_domain的第1个表。要检索产品的所有商店,请请求指定product_url的第二个表。

对于这两个表格,combound键由store_domainproduct_url组成,这使得每个store_domain + product_url对的记录都是唯一的。

在产品和商店之间添加新关系时,需要将其保存在两个表中。考虑使用Batch保存它以使其成为原子。