Cassandra多对多关系建模选项

时间:2015-03-06 17:51:35

标签: cassandra many-to-many cql composite-key nosql

this文章中,作者阐述了在Cassandra中建立多对多关系的几种选择。我想对其中两个做一些澄清:

  1. 为什么选项4会占用更多空间?看起来你只是"追加" Item_by_user 用户列空间。
  2. 此外,在选项4中,如何根据作者的建议定义复合列?您似乎有两组列:1)名称,电子邮件和2)喜欢,而后者是宽(?)。为用户表定义喜欢的名称,电子邮件和范围列的CQL代码是什么?
  3. 感谢。

    以下图片来自上述文章:

    enter image description here

    enter image description here

2 个答案:

答案 0 :(得分:2)

就第一个问题而言,在我看来,每个用户和每个项目只占用一行空间,因为您将所有内容保存在一行中。

关于第二个问题,您可以查看static columns(此处为cql documentation)。基本上,它是一种定义列的方法,该列将由一行中的所有值共享(用户表中的用户详细信息和项目表中的项详细信息),并且您只能使用partitioning key更新值。

第二个解决方案可以是将用户喜欢的项目建模为map type(此处为map documentation),同样的内容转到项目(创建喜欢该项目的用户地图)。

答案 1 :(得分:0)

我建议您在Cassandra中获取有关数据建模的更多信息。在这种情况下,我已将A Big Data Modeling Methodology for Apache CassandraBasic Rules of Cassandra Data Modeling视为有用的文章。它们将帮助您了解基于查询(查询驱动方法)和数据复制及其优缺点的表格建模。