【问题标题】:ArangoDB comparison of documents in different databasesArangoDB 不同数据库中文档的比较
【发布时间】:2019-09-02 19:03:34
【问题描述】:

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

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

到目前为止一切正常。

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

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

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

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

  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
...         

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

【问题讨论】:

    标签: arangodb aql foxx arangodb-foxx


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 2021-12-16
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多