我在一本书中读到:"Cassandra是一个NoSQL数据库,它促进了先读后写而不是关系模型".
"read-before-write"在NoSQL上下文中意味着什么?
写入前读取意味着在修改单元格之前检查单元格的值.
Read-Before write是Cassandra中一个巨大的反模式.你读过的任何鼓励这样做的书都应该怀疑.通常,执行Cassandra写操作时不会获得有关数据库当前状态的任何信息.其中一个副作用是对Cassandra的所有写操作实际上都是更新操作.这允许极快的写入,但确实有一些限制.
如果确实需要在写入之前检查数据库的状态,Cassandra提供"检查和设置"(CAS)操作,在修改记录之前使用PAXOS建立数据库状态.这些都写得像update table set x = 3 if y = 1
.CAS查询比C*中的正常写入慢几个数量级,应该谨慎使用.