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
Cassandra 将浮动列表存储到多行与非规范化存储到多行之间是否有区别?_Cassandra - Fatal编程技术网

Cassandra 将浮动列表存储到多行与非规范化存储到多行之间是否有区别?

Cassandra 将浮动列表存储到多行与非规范化存储到多行之间是否有区别?,cassandra,Cassandra,我需要在Cassandra中为每条记录存储多个浮点数。我当前的架构如下所示: CREATE TABLE data_point ( account ASCII , groupkey TINYINT , productid TEXT , vectors LIST<FLOAT> , PRIMARY KEY ((account, groupkey), productid)) WITH CLUSTERING

我需要在Cassandra中为每条记录存储多个浮点数。我当前的架构如下所示:

 CREATE
  TABLE
        data_point
      ( account ASCII
      , groupkey TINYINT
      , productid TEXT
      , vectors LIST<FLOAT>
      , PRIMARY KEY ((account, groupkey), productid))
   WITH CLUSTERING
  ORDER
     BY
      ( productid ASC
      );
税务文件内容如下:

集合用于存储/反规范化相对较少的数据


…但我不确定是什么定义了一点点或很多。清单的顺序不相关。这些行永远不会单独读取。所有读取均来自Spark,并使用令牌范围读取大量数据。

如果数据从未更改,则使用列表的冻结版本,因此所有点将存储为一个二进制对象:

vectors frozen<LIST<FLOAT>>
向量冻结

只有当您只需要读取一个值或类似的值时,使用单独的行才有意义。如果始终读取整个数据集,请使用冻结列表。

如果数据从未更改,请使用列表的冻结版本,这样所有点都将存储为一个二进制对象:

vectors frozen<LIST<FLOAT>>
向量冻结

只有当您只需要读取一个值或类似的值时,使用单独的行才有意义。如果您总是阅读整个数据集-使用冻结列表。

我会响应Alex的建议,冻结列表比上面的非冻结列表更适合您的用例-不过我还要补充一些要点

在第二个表示例中,规范化后没有额外的列来表示不同的列表项-主键保持不变,因此本质上每个主键只存储1个值,而不是您想要的1280。键中必须有一个额外的列,以使每个列表条目仍然是唯一的行


对于第一个表,虽然您可以使用冻结列表-如果列表中的项目没有实际顺序,也没有重复,您可以选择一个更简单的集合,因为没有存储/考虑顺序位置。(第二个表格设计中没有任何顺序是考虑的催化剂)

我同意Alex的建议,冻结列表比上面的非冻结列表更适合您的用例-不过我还要补充一些要点

在第二个表示例中,规范化后没有额外的列来表示不同的列表项-主键保持不变,因此本质上每个主键只存储1个值,而不是您想要的1280。键中必须有一个额外的列,以使每个列表条目仍然是唯一的行

对于第一个表,虽然您可以使用冻结列表-如果列表中的项目没有实际顺序,也没有重复,您可以选择一个更简单的集合,因为没有存储/考虑顺序位置。(第二个表设计中未说明任何顺序是考虑的催化剂)