问题描述
我在解决方案中将Cassandra用作Nosql DB,并且有一个数据模型,其中我有2个表,一个是父表,另一个是子表
这是场景
- 客户端A试图更新父表记录以及子表记录
- 与此同时,客户端B也选择了请求(这对父表和子表都造成了打击)
- 客户端B从父表中接收最新记录,但从子表中获取旧记录
我可以使用批处理日志操作,以便可以实现原子性来更新两个表,但是不确定如何隔离或锁定来自客户端B的读取请求,以避免出现脏读取问题。 也尝试过评估轻量级交易,但在这种情况下似乎不起作用
只是想想我是否可以使用某些中间件应用程序来实现锁定功能,因为Cassandra似乎开箱即用。
请帮助我理解这方面的读/写同步
解决方法
正如您提到的那样-当您选择批处理时,Cassandra仅提供原子性。但是,当您进行单个分区批处理时,它确实提供了隔离,但是不幸的是,这并不是您的情况。
要回答您的问题-如果您确实需要交易,我会再次考虑问题和可能的解决方案。您要么应该不需要锁定,要么应该更改技术堆栈。