基于Validation构造NEO4J上层API实现serializable isolation

可能能用到的方法(类):

  • DatabaseManagementService.xxxregister(xxxlistener);
  • transactionData: creatednode, deleted node…

如何得到WS和RS?
WS应该好弄,在TransactionEventHandler的beforeCommit里面可以直接读到被修改的数据,然后将这个数据存到WS里面。但是RS就不好弄了,因为数据库读到的数据,和读操作返回的数据,是两个概念。我们需要记录的是数据库读到的数据,触发读操作的动作都有哪些?除了显示的调用读,是不是还有别的隐式调用读的操作?而且我们怎么才能记录每一个读到的数据?

另一个问题是,在一个事务A进行validation test的时候,另一个事务可能读了新的数据X,而这个X可能被A写。validation test的时候,暂停正在读的进程,会很影响速率啊。

现在的一个想法是,在transactionManager上面建立一个CustomTransactionManager,这个manager里面有一个listener,每当开启一个新事务的时候,CustomTransactionManager会记录这个事务的WS、RS(在事务执行的过程中,Manager会收集它的信息。比武beforecommit的时候获得WS集合并触发validation。事务运行的过程中将读过的数据(或许是ID)发给manager)。

可以建立一个类DnMonitor。这个类里面存放我们需要监测的所有信息,在连接数据库的时候被激活,并且有接受信息的接口,根据收到的信息执行相应的操作。这个类可以是一个中转站,我们再写一些别的类实现具体的,比如validation功能。这样的话,我们需要弄明白到底哪些类需要被customerized, 哪些不需要?

是否可以通过日志获得读操作?
validation是否可以增加规则,比如针对read only的事务等等,或者对RS也进行莫种程度上的验证?

Validation的时候,这个进程自己的RS和WS集合肯定是已经知道了的,至于RS集合未收集完成的进程,我们其实先不需要管他们啊!???

现在先:
建立monitor类获得我们所需要的所有信息
然后再想怎么弄validation test

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值