我希望实现一个对象,即它具有日志记录或持久性事务。也就是说,该对象包含数据(可能是Map)。当对数据进行更改时,这些更改将被单独保留,沙盒化,以便任何外部对象可以引用基本状态(更改之前)或访问最新数据。然后,还有另一个操作将更改提交到基本状态。
这让我想起了Linux日志文件系统。文件系统更改会写入日志,并且只在稍后提交到永久存储器中。
这也可能更类似于关系数据库世界中的“事务”概念;也就是说,您有一些数据,您开始一个事务并以某种方式操作数据。并发进程将看到旧数据,而没有您的更改。然后,您可以“回滚”事务或“提交”您的更改。
我特别希望在Java中实现此功能,但显然这是一种通用的面向对象模式,如果存在的话。我希望至少可以创建它,但我不确定最佳实现方法。
此外,请假设该对象保存了大量数据,整个层次结构(子对象等)。因此,不能仅保留整个数据树的两个副本;这将浪费很多内存,并且复制操作(在提交时)需要太长时间。我希望在游戏上下文中实现这一点,每帧进行一次提交操作,因此它真的需要是最优的。
这让我想起了Linux日志文件系统。文件系统更改会写入日志,并且只在稍后提交到永久存储器中。
这也可能更类似于关系数据库世界中的“事务”概念;也就是说,您有一些数据,您开始一个事务并以某种方式操作数据。并发进程将看到旧数据,而没有您的更改。然后,您可以“回滚”事务或“提交”您的更改。
我特别希望在Java中实现此功能,但显然这是一种通用的面向对象模式,如果存在的话。我希望至少可以创建它,但我不确定最佳实现方法。
此外,请假设该对象保存了大量数据,整个层次结构(子对象等)。因此,不能仅保留整个数据树的两个副本;这将浪费很多内存,并且复制操作(在提交时)需要太长时间。我希望在游戏上下文中实现这一点,每帧进行一次提交操作,因此它真的需要是最优的。