(与数据库架构的版本控制无关)
与数据库交互的应用程序通常具有由许多表中的数据组成的域对象。假设应用程序要支持这些域对象的 CVS 意义上的版本控制。
对于某些任意域对象,您将如何设计数据库模式来处理此需求?有什么经验可以分享吗?
仔细考虑修改的要求。一旦您的代码库在操作系统中内置了普遍的历史记录跟踪,它将变得非常复杂。保险 http://www.xchanging.com/Sectors/Software.htm 承保 http://www.roomsolutions.net/insurance-software/policy-administrator-system/subscribe.aspx systems http://www.intechsolutions.co.uk/London_Market.htm对此尤其不利,模式通常运行超过 1000 个表。查询也往往非常复杂,这可能会导致性能问题。
如果历史状态确实只需要用于报告,请考虑实施一个“当前状态”事务系统,并在后面悬挂一个数据仓库结构来跟踪历史记录。缓慢变化的维度 http://en.wikipedia.org/wiki/Slowly_changing_dimension与尝试将临时历史跟踪机制直接嵌入到操作系统中相比,跟踪历史状态的结构要简单得多。
Also, 更改数据捕获 http://en.wikipedia.org/wiki/Changed_data_capture对于“当前状态”系统来说更简单,对记录进行更改 - 记录的主键不会更改,因此您不必匹配将同一实体的不同版本保存在一起的记录。有效的 CDC 机制将使增量仓库加载流程变得相当轻量,并且可以非常频繁地运行。如果您不需要历史状态的最新跟踪(几乎,但不完全是,矛盾的),这可能是一个有效的解决方案,其代码库比直接构建到应用程序中的完整历史跟踪机制简单得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)