不幸的是,这是一个非常笼统的问题...
想象一个创作应用程序来创建例如电气原理图。工程师绘制原理图,直到对他们的产品满意为止,并准备好进行生产。
这时将启动“修订”(例如,修订“#1”)。从现在开始,此修订版本的所有数据/文档都无法更改。它是只读的。
随着时间的流逝,工程师们有了聪明的主意,并开始根据修订版1更新现有的原理图。他们添加了新功能,删除了功能,用较新的版本替换了一些组件等,直到获得修订版#2。
这是一个共同的要求:在修订版1和2之间发生了什么变化?需要一些增量报告。
RavenDB意味着什么/将意味着什么?
如果工程师开始进行新的修订,是否意味着 复制所有文档并使用新的ID将其插入 “ / proj-1 / rev-2 / component-1000”?我将如何更新文档之间的关系 然后?可以“手动”调整所有关系吗?
快照数据库?我可以将快照数据库与当前数据库进行比较吗?
任何暗示如何为这样的系统建模的方法都将受到高度赞赏。
答案 0 :(得分:3)
RavenDB具有文档修订版本的概念,该版本创建文档的只读快照。它们是在您每次修改文档时创建的。
根据您的需要,我建议创建:plans/1238-A
作为文档本身。
每当您需要标记只读修订时,请使用:plans/1238-A/revisions/1
或类似的东西。
我建议不要修改任何引用,指向同一位置,但是在阅读修订时,请询问引用的修订。