2011-12-14 94 views
2

众所周知,我们在cassandra中具有ConsistencyLevel的ReplicationFactor。我们只是想要保持数据一致性。因为它应该保持价格信息。使用cassandra并保持数据一致性

那么哪种策略更好?

全部写入 确保在响应客户端之前写入所有N个副本。任何无响应的副本将无法执行操作

全部读取 将查询所有副本,并在所有副本已答复后返回具有最新时间戳记的记录。任何无响应的副本都会使操作失败。

它似乎写所有肯定是最安全的。 但不知道如果读取所有更好?任何关于它的利弊的意见?你认为哪种nosql更好?

+0

我需要添加一些评论,如果你认为在这个用例中其他一些nosql数据库比cassandra更好。告诉我原因。事实上,我猜HBase可以在保持一致性方面做得更好。只是不知道非常详细。 – 2011-12-14 01:27:47

+0

http://wiki.apache.org/cassandra/API – 2011-12-15 02:18:26

回答

2

“更好”取决于你想达到的目标。在一致性级别使用写入或读取ALL意味着如果即使一个节点没有响应,您的群集也将不可用于写入(或读取)。

通常,在一致性级别QUORUM写入和读取都是一种有效的均衡方法,因为它提供了完全一致性(您永远不会读取过时的值),但也可以容忍少数节点的故障。

但“最佳”方法取决于您的应用程序以及您实际需要多少一致性。特别是,如果您可以容忍较低的一致性,您可以获得更好的读写性能(以及更好的可用性)。