我的应用程序在内部列表中有许多对象,我需要能够记录它们(例如每秒一次),然后通过查询日志文件随时重新创建列表的状态。
当前实现每秒记录整个列表,这对于检索很有用,因为我可以简单地加载日志文件,扫描它直到达到所需的时间,然后加载存储的列表。
但是,我的大多数对象(约90%)很少更改,因此在磁盘空间方面浪费,以设置的间隔连续记录它们。
我正在考虑切换到基于“delta”的日志,其中每秒只记录更改的对象。不幸的是,这意味着在任何一个记录时间内都很难找到列表的真实状态,而没有“回放”整个文件以捕获那些在所需的召回时间之前没有改变一段时间的对象。
另一种方法是存储(每秒)更改的对象和每个未更改对象的最后更改时间,以便日志阅读器知道在哪里查找它们。我担心我在这里重新发明轮子 - 这一定是以前遇到过的问题。
我认为现有的可比技术是版本控制系统中使用的技术,但是如果可能的话,我想要一个原生的对象感知Java解决方案 - 在二进制文件上运行git commit
一次就好像它在滥用VCS的意图!
那么,我应该注意解决这个问题的标准方法吗?如果没有,我在开发自己的解决方案时可能遇到的任何陷阱?