DDD 缓存何时持久化
持久化选用SqlServer
我所知的三种持久化方式
1:定时:内存模型在某个时间点回写到数据库文件中(弱一致性-最终一致性)
2:异步:每次模型状态改变后,提交持久化操作到工作队列中去异步执行(弱一致性)
3:即时:每次模型状态改变后,立刻以阻塞的方式进行持久化
我在实践第一种方法,但以此而来产生了一些问题,请各位道友赐教
A1:选用第一种方法后,模型在某个时间点才回与数据库文件一致。那此时需要按照几个条件查询一个列表,排序后选取某一页返回。此时因为内存与数据库并未同步,如何实现这个查询呢?
如果换做第二个方法来实现,因为不同步产生的精确度还在可以容忍的范围内。
但这里也有一个问题
A2:
假设一个模型,有三个业务方法 A、B和C
因为某个命令,模型需要执行方法 A ,再执行方法 B,之后保存
模型在执行方法A时,是通过的。但之后执行B的时候,模型验证报错。
此时,另外一个线程在执行方法C,之后也提交保存了。
由于内存中,模型是同一个,就导致了数据库里保存下了一份错误的数据。
对于A2,我觉得是自己某个地方弄错了,但不知道错在哪里
希望 @banq 和道友们严厉的指出批评我
[该贴被tbyes于2013-03-04 19:09修改过]
[该贴被tbyes于2013-03-04 19:09修改过]