5

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

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

我不认为这与很多人有关,因此我想知道为什么。

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

1 回答 1

2

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

在实际实践中,我们是否总是在中间的某个地方有 ACID 功能?我的意思是可能在应用层实现或添加一个中间件来处理它?

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

如果您要更新多个列以满足查询,您可以查看本演示文稿中的最终原子部分以了解如何执行此操作的想法。基本上你在写之前写了足够的关于你对 cassandra 的更新的信息。这样,如果写入失败,您可以稍后重试。

如果您可以以这种方式构建您的应用程序,那么使用 Zookeeper 或笼子之类的协调服务可能会很有用。

于 2011-09-06T06:04:17.543 回答