繁体   English   中英

ArangoDB比较不同数据库中的文档

[英]ArangoDB comparison of documents in different databases

我想知道是否可以比较存储在不同数据库中的两个具有相同“ _id”(相同的集合名称和“ _keys”)的文档。

我的用例是一个自定义的“地图/布局引擎”,它“主要”由外部地理数据系统中的“自动导入/转换作业”提供。

到目前为止,一切正常。

但是,在某些情况下,必须手动调整某些对象的“ x / y”坐标,以使它们更有用。 通过再次运行导入作业,所有手动调整都将丢失,因为所有手动调整都被“自动”数据简单覆盖了。

因此,我想到一个由几个结构相同的ArangoDB数据库组成的系统设置,用于数据生命周期的不同“阶段”,例如:

  • “登台”-新的“自动导入”数据放置在此处。
  • “生产”-提供给用户的“最终数据”,包括所有最新的手动调整,都存储在这里。

相应的(简化的)生命周期将是这样的:

  1. 自动导入“暂存”
  2. 比较并将所有手动调整从“生产”导入到“登台”
  3. 将1.和2.中的“合并”内容部署为新的“生产”版本。

因此,本主题全都涉​​及步骤2在“生产”和“登台”数据值之间的“比较阶段”。

在SQL中,我用sth表示。 像这样:

SELECT
x, y
FROM databaseA.layout AS layoutA
JOIN databaseB.layout ON (layoutA.id = layoutB.id) AS layoutB
WHERE
...         

感谢您提供有关如何使用AQL查询或FOXX服务在ArangoDB中解决此问题的任何提示!

假设,如果您有一个版本控制图数据库,则可以执行以下操作:

  1. 首次导入时,插入新数据,为每个插入的节点创建一个新的修订版R0
  2. 手动更改节点的某些字段,例如此数据中的N ,从而引起N的新修订版本,例如R1 您的先前版本R0不会丢失。
  3. 根据需要重复步骤1和2多次。

最后,当您需要向最终用户显示此数据时,请使用自定义应用程序逻辑将所需的多个先前版本与当前版本进行合并,进行n-way合并而不是2-way合并。

如果您认为这可能是一个潜在的解决方案,则可以看看CivicGraph ,它是建立在ArangoDB之上的版本控制层。

注意:我是CivicGraph的创建者,这个答案可以作为产品的促销,但是我也相信它可以帮助解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM