Cassandra不像RDBMS那样遵守ACID,而是CAP。因此,Cassandra从CAP中选择AP并将其留给用户以进行调整一致性。 我绝对不能使用Cassandra进行核心银行交易,因为C *略有不一致。 但Cassandra写的非常快,这对OLTP有好处。 我可以使用C * for OLAP,因为读取非常快,这对于报告也是有益的。 所以我理解只有当你的应用程序不需要你的数据在一段时间内保持一致但是读写应该很快时,C *才是好的? 如果我的理解是正确的,请列出一些申请?
答案 0 :(得分:7)
ACID是关系数据库的属性,其中BASE是大多数nosql数据库的属性,而Cassandra是其中之一。 CAP定理只是解释了分布式系统中的一致性,可用性和分区容错问题。关于Cassandra的好处是它具有可调整的一致性,因此您可以非常一致(以分区容差的代价),因此OLTP是可行的。正如phact所说,甚至有一些银行在Cassandra之上构建了他们的交易软件。 OLAP也是可行的,但不仅仅是Cassandra,因为它的分区行存储限制了它的功能。你需要像Spark那样能够进行复杂的查询。
答案 1 :(得分:-2)
对于OLTP应用程序应该避免使用Cassandra,即使它们声明这可能不是OLTP的完美用例,即使您可以通过将Write Consistency设置为All来实现完全一致的模型,这也会使编写过程变得很困难,以便协调器节点将该数据写入所有复制节点的所有分区。而且,如果您的Cassandra系统在不同数据中心(也许在不同大陆)之间进行了大规模复制,那么写入所花费的时间将大大增加。