以 Gravity 快速實現跨資料庫的關聯查詢

懶惰鬼的資料庫整合機制

Photo by Federico Burgalassi on Unsplash

在許多企業都有數不清的各式 IT 系統,也一直持續有更多的新應用系統被建置,這導致了資料分散在各處的資料庫系統中,讓應用必須得想辦法跨資料庫系統去查詢資料。

過去在單一資料庫內很容易進行跨表關聯的查詢工作,而跨資料庫後,關聯不同的資料集就是一個噩夢。因為跨資料庫做關聯查詢,往往效率不佳,所以通常需要許多優化處理,種種工作讓許多開發人員傷透了腦筋。更別說,這種跨表關聯的工作如果一多,原始資料庫也會有巨大的查詢壓力存在,嚴重時更可能影響原有業務的運作。

過去有客戶在面對跨資料庫的資料處理需求時,就利用 Gravity 將需要的資料,從不同的原始資料庫抽離到外部,然後進行聚合再使用。先將資料挑選出來後放在一起,然後再進行複雜的查詢、分析處理或應用。

如此就不會衝擊原有資料庫系統,還可以很有效率的進行各種關聯查詢。

即時聚合和關聯資料並寫入快取資料庫

使用 Gravity 進行跨資料庫的聚合工作,並落地在目標快取資料庫

利用 Gravity 的資料挑選機制,可以從各資料庫系統中,選擇所需要的資料,然後關聯合併寫入到快取資料庫。而 Gravity 所提供的資料選擇顆粒度可以達到「欄位」,也就是能夠從特定資料表中,選擇特定數個欄位進行抽取的工作,然後依特定欄位的鍵(Key)做資料聚合的工作。

當資料聚合後,通常查詢複雜度就會降低,即便沒有降低,也是在同一個資料表或資料庫系統中查詢,速度會遠比在多個資料庫系統間查詢快,更不會造成原始資料庫系統的壓力。

關於資料的即時性,由於 Gravity 會進行即時的資料聚合,會監聽原始資料庫資料的資料變更事件,當資料源的資料一被寫入或變更,就會進行資料的抄寫和聚合,然後寫入到目標資料庫中。所以在目標資料庫上的資料,會與原始資料庫近乎一致。

Gravity 提供多種資料庫支援(如:MongoDB、MySQL、PostgreSQL、MSSQL 及 Oracle 等),可以將各類異質資料庫的資料進行聚合,然後寫入到目標的資料庫系統,而目標資料庫系統,也可以是各種類型的資料庫,端看實際應用需求而定。

產生多份聚合資料副本以增加併發查詢能力

為聚合後的資料,生成多份副本或是從中再分類抽取資料,滿足各種應用大量使用

應用 Gravity 的複寫機制(Replication),聚合的資料可以同時抄寫成多份副本寫到不同的資料庫中,提高併發查詢的能力,以滿足各種應用暴力的查詢需求。實際場景中,甚至可以依據查詢量,動態增減快取資料庫的數量,以節省資源或是支撐更大量的併發查詢。

無論快取資料庫的節點再多,由於原始資料庫只拋出資料一次,因此不會對原始資料庫產生不可接受的壓力。

甚至是可以依據應用需要,將資料寫到不同類型的資料庫,如:NoSQL 類型的 MongoDB。關於 Gravity 如何提高併發查詢的相關議題,可以參考另一篇文章:「以 Gravity 無痛提高資料庫的併發查詢能力」。

資料快照機制不怕原始資料庫意外離線

即使原有資料庫系統出問題,仍然可以繼續擴展新的查詢節點

Gravity 對聚合的資料會進行快照,因此當原始資料庫系統有意外發生而離線,雖然不會有新的資料進來,但仍可以就已經聚合完成的資料,依據應用需求量來彈性擴展快取資料庫節點,或是對快取資料庫進行復原工作。而當原始資料庫系統修復後,新的資料會接著最後的處理位置,持續進行資料聚合工作。

一些傳統複寫解決方案之所以資料庫還原、回復速度慢,一方面是還原時需要從原始資料庫拉取資料,被原始資料庫效能所限制;另一方面,是因為採用日誌、事件朔源的方式,導致需要處理回放大量事件才能還原出最後資料結果。

Gravity 快照機制也能夠改善這樣的問題,除了完全省去從日誌還原的時間而進行快速副本重建之外,在資料抄寫和副本回復的過程中,也完全不影響既有資料庫的正常業務運作及效能。

Gravity 還有哪些功能?

想要對已聚合的資料做第二次篩選分類?又或是對多批資料進行二次聚合?還是希望能有效率的進行跨雲資料遷移、聚合和存取管理?也許你也期望能順便實現資料即時熱備份和備援?欲知更多 Brobridge Gravity 的好處和功能,以及全方位的資料庫系統讀寫強化方案,歡迎與我們寬橋(Brobridge)聯絡。

--

--