cassandra - 与 Cassandra 数据模型的事务

标签 cassandra consistency eventual-consistency

根据 CAP 理论,Cassandra 只能具有最终一致性。更糟糕的是,如果我们在一个请求中多次读取和写入而没有正确处理,我们甚至可能会失去逻辑一致性。换句话说,如果我们做事很快,我们可能会做错。

同时,为 Cassandra 设计数据模型的最佳实践是考虑我们将要进行的查询,然后向其中添加 CF。这样,在很多情况下,添加/更新一个实体意味着更新许多 View /CF。没有原子事务功能,很难做到正确。但是有了它,我们又失去了 A 和 P 部分。

我不认为这是很多人关心的问题,因此我想知道为什么。

  • 这是因为我们总能找到一种方法来设计我们的数据模型,以避免在一个 session 中进行多次读取和写入吗?
  • 这是因为我们可以忽略“正确”的部分吗?
  • 在实际实践中,我们是否总是在中间某个地方拥有 ACID 功能?我的意思是可能在应用程序层实现或添加一个中间件来处理它?
  • 最佳答案

    它确实与人们有关,但大概您正在使用 cassandra,因为由于可扩展性或可靠性问题,单个数据库服务器无法满足您的需求。因此,您被迫解决分布式系统的局限性。

    In real practice, do we always have ACID feature somewhere in the middle? I mean maybe implement in application layer or add a middleware to handle it?



    不,您通常不会在其他地方使用酸,因为大概其他地方也必须分布在多台机器上。相反,您可以围绕分布式系统的限制来设计您的应用程序。

    如果您正在更新多个列以满足查询,您可以查看 eventually atomic本演示文稿中的部分有关如何做到这一点的想法。基本上你在写之前写了足够的关于你对 cassandra 的更新的信息。这样,如果写入失败,您可以稍后重试。

    如果您可以使用 Zookeeper 或 cages 等协调服务以这种方式构建应用程序可能有用。

    关于cassandra - 与 Cassandra 数据模型的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297302/

    相关文章:

    apache-zookeeper - 领导选举与 : Etcd vs Zookeeper vs Hazelcast

    java - 使用 OWL API 4 检查本体一致性和可满足性

    rabbitmq - 有没有一种方法可以使用 RabbitMQ 以 100% 的交付保证来传输数据?

    google-app-engine - 如何在身份验证期间防止 Google App Engine/最终一致的数据存储中出现重复值

    cassandra - cassandra 中的一致性级别调整

    c# - Datastax C# 驱动程序 3.3.0 在连接到集群时死锁?

    cassandra - 在 Titan 图数据库中创建顶点和边的问题

    apache-zookeeper - ZooKeeper 如何提供顺序一致性

    cassandra - 如何有效地管理 cassandra 初始 token ?

    Cassandra : missing EOF at ')' when trying to create simple table