lin*_*asy 6 .net php versioning business-logic java-ee
我们正在开发与业务相关的大型应用程序.您可以找到类似于某些ERP,CRM等的这些应用程序.
现在我们要求我们需要对用户输入的所有数据进行版本控制.
例如:在某个时间点,用户需要查看特定采购订单的更改历史记录是什么?
我正在寻找一个非常通用的版本控制处理程序(非严格),如果某些业务数据属性发生变化,它甚至可以处理.这个单一的版本控制处理程序应该能够处理几乎任何类型的业务对象/数据.
什么是最好的编程/数据库设计来处理这些.
任何想法或意见?
PS:我已经添加了一些编程标签,因为我希望程序员能够接受这个主题并提出他们的想法.
编辑:我正在寻找一种非常优化的方式,有点类似于存储差异存在而不是以序列化/转储方式存储对象.
现在可能正是采用纯函数式惰性数据结构的最佳时机。
简而言之,这需要禁止对对象进行任何变异操作,即使所有对象实例不可变。然后,您重新设计所有更改现有对象以基于旧对象创建新对象实例的操作。
例如,让您有一个Order包含 s 列表的实例OrderItem,并且您需要OrderItem向该列表添加特定的。在这种情况下,您要做的就是Order通过用新列表替换其项目列表来创建 的新实例,而新列表又是通过将新列表consOrderItem到旧列表来创建的。
让我用图片进一步说明这个例子。想象一下对象的存储(可以是 RAM 或关系数据库,任何东西):
地址 | 对象| 由...制作
--------+--------------------+-------------------- ----------------------
1000 | 1000 订单项目列表 | 空列表构造函数
1001 | 1001 订单| 订单构造函数,使用地址 1000
...
1300 | 1300 订单项目 | ...
1501 | 1501 订单项目列表 | addr 1300 到 addr 1000 的缺点
1502 | 1502 订单| 将 addr 1001 中的 order_items 替换为 addr 1501
以这种方式存储数据的结构本身是持久的(例如, Chris Okasaki 在他的论文中详细阐述了这一点)。您可以通过跟踪对象的创建历史记录来恢复对象的任何版本;版本控制变得微不足道。只需记住要点:不要改变数据,而是创建新实例。
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |