Cassandra 将浮动列表存储到多行与非规范化存储到多行之间是否有区别?
我需要在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
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。键中必须有一个额外的列,以使每个列表条目仍然是唯一的行 对于第一个表,虽然您可以使用冻结列表-如果列表中的项目没有实际顺序,也没有重复,您可以选择一个更简单的集合,因为没有存储/考虑顺序位置。(第二个表设计中未说明任何顺序是考虑的催化剂)