【问题标题】:How to Increment the ID value in Cassandra Table Automatically?如何自动增加 Cassandra 表中的 ID 值?
【发布时间】:2015-04-14 04:33:51
【问题描述】:

当我在 Cassandra 表中插入一个值时,我遇到了一个挑战,我有一个列名为“ID”,这个 ID 列的值会像 mysql auto_increment 列一样自动增加。我认为 Counter DataType 不适合这种场景。请任何人帮助我设计架构,我也不想使用 UUID 来替换 ID 列

【问题讨论】:

    标签: cassandra-2.0 cqlsh


    【解决方案1】:

    简而言之,我不相信这是可能的。 Cassandra 的本质是它不会先读再写。只有一个例外,轻量级事务,但它们所做的只是所谓的“比较和交换”,但没有办法,可以在服务器端实现自动增量。

    即使使用计数器,也无法达到预期的效果,如果每次向表中添加记录时都增加计数器,因为您将不知道当前值是否(即使它完全一致) ),是您的进程或并发进程增量的结果。

    唯一的办法就是在应用端实现这个机制。

    【讨论】:

    • 你说得对——Cassandra 不处理这种情况!加一个
    • 感谢您的回复。您知道如何使用 Java 从应用程序端实现上述概念
    • 我没有想到任何具体的实现,因为很多设计细节取决于特定的用例和应用程序设计。但这应该是某种同步层,它将为请求分配顺序 Id,或为每个请求分配 Id 范围给应用程序,保持自己的计数器,并实现自己的锁定机制。由于请求并发,这当然会减慢写入操作。
    • 也许如果你解释你的架构目标——为什么你需要一个连续的 ID,社区可以提出不同的设计来实现相同的目标。
    • 我们不需要连续的 ID,这些 ID 应该是数字,但那些应该是唯一的数字,绝不是重复的值(如 UUIDS)。
    猜你喜欢
    • 1970-01-01
    • 2014-11-18
    • 2021-10-20
    • 2015-01-15
    • 1970-01-01
    • 2017-06-14
    • 2014-08-03
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多