memeory image内存映像
这是MF站点的一篇新文章:MemoryImage内存映像,主要说明我们以后要改变过去和数据库打交道方式,直接和内存中领域模型打交道。鉴于这个观点我以前反复强调这种改变,老外这篇文章可能更加有说服力。
当人们开始一个企业应用时,首先第一个问题是:我如何和数据库打交道呢?这段时间有了另外一个问题:我应该使用什么样的数据库呢?关系数据库或NoSQL一种?但是另外一个问题同时在考虑:我们一定要使用数据库吗?
企业应用的一个显著特点就是需要保存长期的数据,这样导致人们去访问数据库,持久所有数据是数据库主要的工作,如果使用内存映像memory image 将是另外一种持久的路由方式,这种方式并不包括数据库。
memory image主要因素是因为使用event sourcing, 这就意味着导致应用状态的每次变化都被记录到持久存储库中,将来更远来看,那就意味着你能够通过这些事件重放来重构应用系统的所有状态 。
借助于event sourcing,memory images 的主要好处是:它意味着再也不需要将应用系统的状态保存在一个时刻更新的持久化存储系统,而是你应该让应用状态保持在主内存中,当处理发生冲突崩溃,你可以从Event事件开始重新构建。
使用memory image能够让你获得高性能,因为每件东西都在内存中,没有IO,没有远程数据库调用,更重要的是可以帮助你克服掉数据库的ORM映射代码,更不要担心需要在in-memory状态和数据库 state之间进行同步。
当然另外一个需要保证的是:你需要能够确保保存这些事件然后处理他们(banq注:关于EventSourceing的胡思乱想谈及了),你也需要写代码保存和加载这些快照snapshots,然后分辨出如何快速地恢复他们,以便能够足够快地保证正常业务服务不被打断。数据库也提供事务性的并发,这样你必须搞清楚并发相关知识。
还有,你必须让内存大小要超过你的数据,内存大小要不断扩展。(内存是便宜的)
[该贴被banq于2011-10-29 11:01修改过]