根据 CAP 理论,Cassandra 只能具有最终一致性。更糟糕的是,如果我们在一个请求中进行多次读取和写入,而没有得到适当的处理,我们甚至可能会失去逻辑一致性。换句话说,如果我们做事快,我们可能做错了。
同时,为 Cassandra 设计数据模型的最佳实践是考虑我们将要进行的查询,然后向其中添加 CF。这样,添加/更新一个实体在很多情况下意味着更新许多视图/CF。没有原子事务特性,就很难做好。但是有了它,我们又失去了 A 和 P 部分。
我不认为这与很多人有关,因此我想知道为什么。
- 这是因为我们总能找到一种方法来设计我们的数据模型以避免在一个会话中进行多次读取和写入吗?
- 这是因为我们可以忽略“正确”的部分吗?
- 在实际实践中,我们是否总是在中间的某个地方有 ACID 功能?我的意思是可能在应用层实现或添加一个中间件来处理它?