Transactions 如何在Cassandra中跨多个表更新实现锁定,从而实现隔离并避免脏读问题

Transactions 如何在Cassandra中跨多个表更新实现锁定,从而实现隔离并避免脏读问题,transactions,nosql,cassandra-3.0,consistency,transaction-isolation,Transactions,Nosql,Cassandra 3.0,Consistency,Transaction Isolation,在我的解决方案中,我使用Cassandra作为NoSQL数据库,并且有一个数据模型,其中我有两个表,一个是父表,另一个是子表 下面是一个场景 客户端A正在尝试更新父表记录以及子表记录 同时,客户机B也执行select请求(它同时命中父表和子表) 客户端B从父表接收最新的记录,但从子表获取较旧的记录 我可以使用批处理日志操作,以便实现更新两个表的原子性,但不确定如何隔离或锁定来自客户端B的读取请求,以避免出现脏读取问题。 也尝试过评估轻量级交易,但在这种情况下似乎不起作用 我正在考虑是否可以使用一

在我的解决方案中,我使用Cassandra作为NoSQL数据库,并且有一个数据模型,其中我有两个表,一个是父表,另一个是子表

下面是一个场景

  • 客户端A正在尝试更新父表记录以及子表记录
  • 同时,客户机B也执行select请求(它同时命中父表和子表)
  • 客户端B从父表接收最新的记录,但从子表获取较旧的记录
  • 我可以使用批处理日志操作,以便实现更新两个表的原子性,但不确定如何隔离或锁定来自客户端B的读取请求,以避免出现脏读取问题。 也尝试过评估轻量级交易,但在这种情况下似乎不起作用

    我正在考虑是否可以使用一些中间件应用程序来实现锁定功能,因为Cassandra中似乎没有现成的东西


    请帮助我了解如何在这方面实现读/写同步

    如您所述-当您选择批处理时,Cassandra仅提供原子性。但当您进行单个分区批处理时,它确实提供了隔离,不幸的是,这不是您的情况

    回答你的问题-如果你真的需要交易,我会再次考虑问题和可能的解决方案。要么消除锁定的需要,要么更改技术堆栈