复杂的控制依赖于内存还是数据库?
我在研究一个产品时形成了两种方案:
方案一:xml配置脚本文件拆分成数据库库表,控制依赖于存在于库表的节点的状态信息并以及存放在库表中逻辑关系。
方案二:xml文件映射到java数据结构中,控制依赖于数据结构的状态以及数据结构中的逻辑关系,数据库作为当前运行数据的备份(用来恢复中断的运行)以及存放运行历史。
数据量分析:
要求支持上万个节点的控制,逻辑比较简单,并发量比较大,对性能、稳定性要求很高。
分析:
方案一:控制的逻辑依赖于数据库。问题在于数据库和程序是两个部件,需要将xml脚本拆分成不同的库表,用以表示其复杂的控制逻辑;控制的过程中程序需要不断轮询数据库中存放的状态信息。
方案二:控制的逻辑依赖于内存中的数据结构,以内存为主。需要将xml脚本映射成内存数据结构,逻辑控制根据该数据结构保存每个节点的状态进行控制。外部的对其控制根据这个数据结构的状态,为了做断点恢复,需要将内存的数据保存一份冗余到数据库中。库表结构会比较简单,记录的是运行的状态信息(xml不需要拆分成难以表达的库表结构),所有的状态变化需要经过该数据结构,节点状态的变化触发的事件可以主动通知,而不需要轮询,效率(放在内存中)以及控制的方便应该更好一些?
问题:
请问大家是如何看这个问题?选择一还是二或者其他?