我目前正在使用CouchDB开发一个具有Wiki风格的应用程序,并且正在尝试实现文档版本控制方案。我看到它的方式有两种:
- 将每个版本存储为单独的文档
- 将较旧的版本存储为单个文档的附件。
现在,我有一种排名第一的工作方式。当用户编辑文档并保存时,后端首先将以前的修订版本复制到新文档中,然后保存新版本。每个文档都有一个“历史”数组,其中包含每个版本的数据(旧版本的文档_id,时间戳,编辑器等)。
由于此历史记录数组对于经常更新的文档可能会很漫长,因此我有一个视图,该视图在正常读取期间会获取没有历史记录的文档(还有另一个用于获取历史记录的视图)。
我的问题是:我对目前的方法感到不安,并一直在考虑更改为“附件”方法。但我不确定。我希望有一个比我更了解CouchDB的人(我才来这两个星期了-这是我的第一个使用CouchDB和NoSQL的项目)可以告诉我每种方法的优缺点方法。还是有其他我忽略的版本控制方案?
2
尽管我完全无法谈及性能影响,但是您使用的系统在精神上与CouchDB一致。将以前的版本存储为响应层次结构是很习惯的,因为在CouchDB的“精神祖先”中,Lotus Notes文档数据库(NSF)(Damien Katz在开发另一个版本之前进行了深入研究,并保持并改进了它的最佳性能)。在提出基本和向后/向下兼容性要求的同时,许多更基本的结构性问题也会在注释中给出答案。)