【问题标题】:Counter Vs Int column in Cassandra?Cassandra中的Counter Vs Int列?
【发布时间】:2016-05-26 12:58:51
【问题描述】:

我是 Cassandra 的新手。我不明白在表中使用计数器有什么好处(如果非计数器列不是复合主键的一部分,甚至在不同的表中)?为什么我们不使用 Int 类型的列,当我会有一些像 x=x++; 这样的语句时使用 int 和 counter 有什么区别?
是否可以在 Cassandra 中使用 Int Type 的增量或减量?

【问题讨论】:

    标签: cassandra counter cql3 nosql


    【解决方案1】:

    为什么我们不使用 Int 类型的列,当我会有一些像 x=x++; 这样的语句时使用 int 和 counter 有什么区别?

    因为使用普通的 Int 列需要 read-before-writelock 来进行x=x++

    之类的操作

    确实,对于分布式数据库,当您可以对同一值进行并发更新时,保证x=x++ 行为一致的唯一方法是:

    1. 锁定当前记录
    2. 读取x的当前值,加1
    3. 写回 x 的新值
    4. 释放锁

    Counter 类型允许同时增加/减少值,而不需要 read-before-write 也不需要 locking

    【讨论】:

    • 感谢您的好回答。但是,我需要更多信息。我们可以在 CQL 中管理一致性级别;当我们有计数器时这可能吗?如果我们选择高 CL,那么 Counter 是否需要 Locking?如果一致性对我们的场景很重要,哪种方法更好?使用INT?还是使用高 CL 的 Counter?
    • 您可以将一致性级别与计数器一起使用。它与锁定无关。请查看这些幻灯片以了解一致性级别:slideshare.net/doanduyhai/cassandra-introduction-nantesjug/24
    • 我不明白使用Counter类型本身是否可以保证其一致性。当我们只使用 x=x++;它如何理解它之前是否增加了。 LTW 可以在这种情况下帮助我们吗?如果是,如何?谢谢。
    • 您可以使用 QUORUM 一致性级别来写入和读取计数器值。它保证在写入时已将增量/减量应用于大多数副本,并保证您读取最新写入值。计数器不支持 LWT。
    • 想知道计数器列如何在内部工作以避免读取-更新(增量)-写入操作和锁定
    猜你喜欢
    • 2015-12-07
    • 2012-02-10
    • 2021-10-20
    • 1970-01-01
    • 2021-10-03
    • 2015-03-04
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多