Oracle

集成:保持兩個系統同步

  • November 9, 2020

我有一個包含 40 個表的 GIS 系統,每個表的行數從 1,000 到 60,000 行不等。這些表格是市政當局資產的記錄系統

表格中的 GIS 資產每週都會集成到工作訂單管理系統(WMS)。該集成基於將 GIS 表提供給 WMS 的Web 服務。

約束 #1:

與工單管理系統的集成是多用途的

  1. assetWMS 中有一個表通過cron 任務進行更新,其中包含對 GIS 資產(新資產、更改的資產和退役資產)所做的任何編輯。只有已編輯的資產會在 WMS 中更新。
  2. 該集成還用於將資產動態地提供給 WMS 中的Web 地圖(地圖中使用了所有 GIS 資產,而不僅僅是已編輯的資產)。WMS 中的地圖直接連接到 GIS Web 服務——它不使用asset表中的記錄或 cron 任務。

約束#2:

WMS cron 任務非常緩慢鑑於我組織的基礎架構,我的供應商說 WMS cron 任務每分鐘只能同步150 條記錄。

  • 測試正在進行中,但我們被告知僅同步實際需要同步(編輯)的記錄,因為存在重大的性能問題。換句話說,我們不能一直整合或複制**所有記錄。
  • 給你一個想法,這就是 cron 任務過程的樣子:REST GIS Web 服務 >> JSON 對象 >> 將 JSON 解析為單獨的記錄 >> 為每個記錄生成 XML >> 使用Java 類處理 XML 記錄>>將記錄插入數據庫

約束#3:

GIS 數據是出了名的混亂

在約束 #2 中,我提到記錄使用 Java 類進行處理。Java 類檢查錯誤(父/子、欄位規則等)並標記任何失敗的記錄。

  • 這些記錄不會集成到 WMS 中。
  • 由 GIS 團隊來糾正 GIS 表中的錯誤,然後我們將在下一個集成實例(下週)再次嘗試將 GIS 記錄同步到 WMS。

問題:

鑑於上述限制,我認為我需要找到一種將所有 GIS 資產集成到 WMS 的方法(限制 1.2),但還要標記由於編輯而需要同步的記錄(限制 1.1)。

  • 對於無法同步的已編輯資產——我需要在以後的同步中重試它們,直到它們成功。
  • 由於性能問題,我需要避免不必要地同步記錄。

我怎樣才能做到這一點?

你在執行閃回數據庫嗎?如果你是,你可以執行一個在每小時結束後開始的程序。該過程將在每小時開始時查看每個表,並在源數據庫和目標數據庫之間執行合併命令以進行單向同步。然後,您將能夠每小時複製所有表。如果由於某種原因,此過程需要一個多小時,那麼您將每隔一小時複製一次,使用每偶數小時或奇數小時的頂部作為起點。您每次都將基於所有表中的一致數據進行複制。

如果您獲得許可,Goldengate 可能會更好地工作。這將使數據在更多時間保持最新。政府應該比公司獲得更高的折扣。即使您發現 Goldengate 的價格太高,也值得為 Goldengate 定價。

如果系統支持/允許,我會傾向於在應用程序或數據庫中建構一個排隊表並使用觸發器(如果適用)將同步請求插入到排隊表中。然後,您可以擁有一個讀取隊列表的作業,執行請求的同步,可能將同步請求復製到同步審核表,然後刪除同步請求。如果同步失敗,應該有一個可以設置為ERROR或的狀態標誌RETRY

引用自:https://dba.stackexchange.com/questions/249384