代码之家  ›  专栏  ›  技术社区  ›  Kumar D

Cassandra-交易支持

  •  27
  • Kumar D  · 技术社区  · 16 年前

    我将介绍ApacheCassandra,并致力于示例数据插入、检索等工作。

    文件非常有限。

    我想知道

    • 我们可以用cassandra完全替换关系数据库吗,比如mysql/oracle?
    • Cassandra是否支持回滚/提交?
    • Cassandra客户机(Thrift/Hector)是否支持获取关联的对象(我们在另一个超级列族中保存一个超级列的键的对象)?

    这将有助于我进一步发展。

    提前谢谢。

    3 回复  |  直到 7 年前
        1
  •  29
  •   Lautis    16 年前

    简短回答:不。

    通过设计,Cassandra将可用性和分区公差的值定为一致性。 1 . 基本上,在保持所有三个特性的同时,不可能获得可接受的延迟:必须牺牲一个特性。这就是所谓的上限定理。

    一致性的数量在Cassandra中可以使用一致性级别进行配置,但不存在任何回滚语义。即使第一次写入成功,也不能保证您能够回滚更改。

    如果您不想在Cassandra之上构建带有事务或锁的应用程序,那么您可能需要查看ZooKeeper,它可以用来提供分布式同步。

    你可能已经猜到了,但是卡桑德拉没有外带钥匙或者类似的东西。这必须手动处理。我不太熟悉赫克托,但是一个更高级别的客户可以半自动地完成这项工作。

    您是否可以使用Cassandra轻松地替换RDBMS取决于您的特定用例。在您的用例中(基于您的问题),可能很难做到这一点。

        2
  •  6
  •   sedovav    11 年前

    在版本2.x中,您可以将cql语句合并到日志中 batch 那是原子的。要么全部成功,要么全部失败。你也可以阅读 lightweight transactions . 不仅如此,Cassandra还有几个持久性管理器。您可以使用它们在客户机级别实现外键行为。例如, Achilles Kundera .

        3
  •  2
  •   Mattias    14 年前

    如果ZooKeeper能够处理具有Oracle质量的事务,那么它就是一个完成的事务。关系和关系完整性在任何数据库之上都可以实现。外键只是另一个数据字段。酸性/交易是关键问题。