簡體   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