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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArangoDB比较不同数据库中的文件相关的知识,希望对你有一定的参考价值。

我有兴趣比较两个存储在不同数据库中的具有相同“ _id”(相同的集合名称和“ _keys”)的文档。

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

到目前为止,一切正常。

但是在某些情况下,有必要手动进行调整,例如的一些对象的“ x / y”坐标,以使其更可用。通过再次运行导入作业(例如以获取最新数据)所有手动调整都会丢失,因为它们只会被“自动”数据。

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

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

相应的(简化的)生命周期将是这种方式:

  1. 自动导入到“ staging”中
  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的创建者,这个答案可以作为产品的促销,但我也相信它可以帮助解决您的问题。

以上是关于ArangoDB比较不同数据库中的文件的主要内容,如果未能解决你的问题,请参考以下文章

ArangoDB图数据库--总参

ArangoDB 链接文档

ArangoDB集合操作

ArangoDB集合操作

如何从 arangodb udf 中的集合返回数据

ArangoDB:Foxx服务中的交易限制