应用层的RavenDB版本管理
不幸的是,这是一个非常普遍的问题 想象一个创作应用程序来创建例如电气原理图。工程师绘制示意图,直到他们对产品感到满意并准备好生产为止 此时将启动“修订”(如修订“#1”)。从现在起,此版本的所有数据/文件都不能再更改。它是只读的 随着时间的推移,工程师们有了聪明的想法,并开始根据修订版1更新现有的示意图。他们添加新功能、删除功能、用新版本替换某些组件等,直到有修订版2 那么,一个共同的要求是:Rev.1和Rev.2之间发生了什么变化?需要一些增量报告 这对RavenDB意味着什么应用层的RavenDB版本管理,ravendb,data-modeling,Ravendb,Data Modeling,不幸的是,这是一个非常普遍的问题 想象一个创作应用程序来创建例如电气原理图。工程师绘制示意图,直到他们对产品感到满意并准备好生产为止 此时将启动“修订”(如修订“#1”)。从现在起,此版本的所有数据/文件都不能再更改。它是只读的 随着时间的推移,工程师们有了聪明的想法,并开始根据修订版1更新现有的示意图。他们添加新功能、删除功能、用新版本替换某些组件等,直到有修订版2 那么,一个共同的要求是:Rev.1和Rev.2之间发生了什么变化?需要一些增量报告 这对RavenDB意味着什么 如果工程师们开
任何关于如何为这样一个系统建模的提示都将受到高度赞赏。RavenDB有文档修订的概念,这将创建文档的只读快照。无论何时修改文档,都会创建它们 根据您的需要,我建议创建:
plans/1238-A
作为文档本身。
每当您需要在只读修订版上盖章时,请使用:plans/1238-a/revisions/1
或类似内容
我建议不要修改任何引用,指向同一位置,但在阅读修订时,请询问引用的修订。不太确定我是否理解您的建议。1.启用内置修订。2.如果需要在应用程序级别进行修订,并且文档得到更新,请使用新ID存储文档(换句话说:复制它)。添加的文档也会获得新Id。如何处理Rev.2中的已删除?如果启用了修订功能,则当您删除包含修订的文档时,您仍然可以通过“修订箱”访问其修订。看。我想我应该用新的Id存储它,然后立即删除它。否则,我无法区分Rev1开发时的删除和Rev2中的删除。另一个问题是如何质疑这一切?我会收到带有“旧”ID的文档和带有新ID的文档。如何仅获取属于Rev2(最新修改日期)的内容?无法查询Id(或部分Id),对吗?要加载包含公共前缀的多个实体,请使用LoadStartingWith方法。看@Danielle不知道这件事!令人惊叹的!