Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra多对多关系建模选项_Cassandra_Many To Many_Cql_Composite Key_Nosql - Fatal编程技术网

Cassandra多对多关系建模选项

Cassandra多对多关系建模选项,cassandra,many-to-many,cql,composite-key,nosql,Cassandra,Many To Many,Cql,Composite Key,Nosql,在这篇文章中,作者举例说明了在Cassandra中建模多对多关系的几个选项。我想就其中两项作进一步澄清: 为什么选项4会占用更多空间?似乎您只是将用户的项目添加到列空间中 另外,在选项4中,如何按照作者的建议定义复合列?你似乎有两组栏:1)姓名、电子邮件和2)喜欢,而后者是宽(?)。为用户表定义姓名、电子邮件和宽列的CQL代码是什么 谢谢 以下图片取自上述文章: 就第一个问题而言,在我看来,每个用户只占用一行空间,每个项目占用的空间更少,因为您将所有内容都保留在一行中 至于第二个问题,您可以查

在这篇文章中,作者举例说明了在Cassandra中建模多对多关系的几个选项。我想就其中两项作进一步澄清:

  • 为什么选项4会占用更多空间?似乎您只是将用户的项目添加到列空间中
  • 另外,在选项4中,如何按照作者的建议定义复合列?你似乎有两组栏:1)姓名、电子邮件和2)喜欢,而后者是宽(?)。为用户表定义姓名、电子邮件和宽列的CQL代码是什么
  • 谢谢

    以下图片取自上述文章:


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

    至于第二个问题,您可以查看
    静态列
    (这里是)。基本上,这是一种定义列的方法,该列将由一行中的所有值共享(用户表中的用户详细信息和项目表中的项目详细信息),并且您只能通过使用分区键来更新值


    第二个解决方案可以是将用户喜欢的项目建模为
    映射类型(这里是),同样的事情也可以建模到项目(创建喜欢该项目的用户的映射)。

    我建议您获取有关Cassandra中数据建模的更多信息。我已经阅读并将其视为本案例中的有用文章。它们将帮助您了解基于您的查询(查询驱动的方法)和数据复制及其优缺点对表进行建模