【问题标题】:Cassandra: Insert multiple rows containing different data with the same set of primary key valuesCassandra:插入包含具有相同主键值集的不同数据的多行
【发布时间】:2016-02-08 21:32:00
【问题描述】:

假设我有 2 行时间序列数据,它们的主键时间戳等完全相同。唯一的区别是其余数据不同。 所以如果 set 1 有 [timestamp, other keys...], value_col1, value_col2,那么 set 2 的 value_col1 和 value_col2 将有与 set 1 不同的值。

现在,如果我将这些集合放入一个批次中以插入或非常快速地使用单独的插入查询,我在数据库中看到的结果可能会有些不一致:可能是集合 1 中的 value_col1 与中的 value_col2 组合在一起最后一行。

我花了整个晚上才发现这实际上是一个错误(或者可能是预期的行为......)我现在有我的解决方法,对第 2 组使用稍微增加的时间戳。在许多情况下不会注意到症状,但在我的情况下,col1 是 col2 的部分解码密钥,那么我就有问题了! 有没有人有同样的问题或者知道问题出在哪里?

我在 nodejs 5.0.0 和 cassandra 2.0.14 上使用 cassandra-node 驱动器。

【问题讨论】:

    标签: node.js insert cassandra time-series cql


    【解决方案1】:

    您应该在 Cassandra 中定义架构以避免竞争条件。

    如果您在同一时刻提供具有相同分区和集群键的不同数据,您将无法定义应保留哪些数据。

    如果您希望保留 2 行,则应使用 uuidtimeuuid 数据类型。

    在 nodejs 驱动文档中查看更多信息:http://docs.datastax.com/en/developer/nodejs-driver/2.2/nodejs-driver/reference/uuids-timeuuids.html

    【讨论】:

    • 嗨 Jorgebg,对我来说,插入两组中的哪一组并不重要。恕我直言,cassandra/node-driver 不能通过从两组数据中随机选择列来正确处理它,它应该选择整个第一组或整个第二组。我知道这对大多数用户来说可能听起来没什么大不了的,但是当涉及到加密时,我就是不能让这弄乱我的数据。无论如何,解决方法很容易实现。
    猜你喜欢
    • 2017-07-15
    • 2014-11-07
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2018-08-11
    • 1970-01-01
    相关资源
    最近更新 更多