天天看點

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

背景

随着業務複雜程度的提高、資料規模的增長,越來越多的公司選擇對其線上業務資料庫進行垂直或水準拆分,甚至選擇不同的資料庫類型以滿足其業務需求。原本在同一資料庫執行個體裡就能實作的SQL查詢,現在需要跨多個資料庫執行個體才能完成。業務的資料被“散落”在各個地方,如何友善地對這些資料進行彙總關聯查詢,已經成為困擾使用者的一大難題。

針對這類問題,傳統的解決方案需要使用者提前将所有執行個體的資料提前彙集到同一處,然後再做離線查詢分析。為此,使用者需要維護資料遷移鍊路,購買機器資源存儲彙集起來的資料,付出大量的資源和運維成本。不僅如此,資料遷移也意味着資料延遲,剛剛産生的線上業務資料,需要“等一會”甚至“等一天”才能去做分析,無法滿足實時性需求。

為了解決跨資料庫執行個體及時查詢的難題,

阿裡雲DMS(資料管理)

推出了跨執行個體查詢服務。

什麼是跨執行個體查詢服務

跨執行個體查詢服務為不同環境下的線上異構資料源,提供及時的關聯查詢服務。不論資料庫是MySQL、SQLServer、PostgreSQL還是Redis,不論資料庫執行個體部署在哪個阿裡雲region,無需資料彙集,僅通過一條SQL就能實作這些資料庫執行個體之間的關聯查詢。

不僅如此,資料庫執行個體也可以部署在不同的資源環境中,除了RDS之外,我們也支援ECS上的自建資料庫、具有公網ip的自建資料庫、使用者本地IDC自建資料庫、甚至是部署在其他雲廠商的資料庫。

功能特性

線上資料及時查詢

目前大多數資料分析的解決方案需要将 OLTP 資料庫的資料導出至離線資料系統再進行分析,但這種方案很難滿足實時性的要求,同時在資料導出至離線系統時也存在資料丢失的風險。

DMS的跨執行個體查詢服務,無需使用者遷移任務,直接編寫一條SQL,就能實作多個線上資料庫的直接關聯分析。由于無需資料同步,降低了業務架構的複雜性,同時也大大節省使用者持有離線計算資源的預算和運維成本。

DBLink

熟悉Oracle的人應該知道,我們可以在目前登入的Oracle上,建立一個DBLink指向另一個遠端的Oracle資料庫表。在跨執行個體查詢服務中,我們重新定義了DBLink的概念,它是一個指向使用者的任意資料庫執行個體的虛拟連接配接,是資料庫執行個體的别名。例如,對于MySQL來說,DBLink和ip/port一一對應。借助DBLink,即可實作對任意資料源的SQL通路。

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

支援多種關系型資料庫

目前已支援MySQL、SQLServer、PostgreSQL等多種關系型資料庫。

支援SQL方式通路NoSQL

除了關系型資料庫之外,跨執行個體查詢還支援以SQL方式通路Redis等NoSQL資料庫。由于支援了SQL文法,也可以實作RDBMS和NoSQL之間關聯查詢。是的,你沒看錯,一條SQL就能實作MySQL和Redis之間的關聯查詢。

支援跨地域以及混合雲查詢

企業發展到一定階段,使用者量、業務量不斷攀升,原來的單機房容量已經不能滿足業務發展的需求,再結合容災、高可用等因素,通常會選擇跨region部署,也叫單元化部署。同時,不少企業也需要将業務拓展到海外,通過本地就近部署,為國外使用者提供更好的體驗。類似這種水準拆分帶來的問題就是,如何對全局的業務資料進行統一的彙總關聯查詢。

借助DMS跨執行個體查詢服務,無論您的資料庫執行個體部署在阿裡雲的哪個region,無需跨region的資料遷移,即可實作所有region資料的統一查詢。

除了阿裡雲RDS,我們也支援使用者部署在阿裡雲ECS上的各種資料庫。不僅如此,如果您的資料庫部署在本地IDC機房,甚至其他雲廠商,都可以通過跨執行個體查詢服務,實作這些混合雲場景的跨執行個體關聯查詢。

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

跨執行個體資料導入導出

insert into b select * from a;

衆所周知,這條SQL語句可以将表a的資料導出到表b中,但如果a表和b表不在同一個資料庫執行個體上,那這條sql就無能為力了。

跨執行個體查詢服務的出現,打破了執行個體與執行個體之間資料導入導出的邊界。它可以将資料從一個MySQL執行個體的表導出到另外一個MySQL執行個體的表中;也可以将SQLServer表和PostgreSQL表關聯查詢的結果,導出到MySQL執行個體的表中,就是這麼靈活。

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

相容标準SQL

通過标準的SQL語句,即可實作跨執行個體查詢。同時跨執行個體查詢服務高度相容MySQL,支援MySQL協定,以及各種常用函數和文法。您可通過JDBC/ODBC驅動連接配接到跨執行個體查詢服務;也可以使用各種MySQL GUI工具來管理各種資料源;當然,您也可以在

DMS跨執行個體查詢控制台

上直接使用。

Serverless架構

跨執行個體查詢是無伺服器化的線上資料庫關聯查詢服務。使用者無需預購計算資源、無需維護資源、沒有運維和更新成本,随時随地使用。

高性能低延遲

跨執行個體查詢服務底層基于強大的MPP計算引擎,持續不斷地對SQL查詢進行優化,包括pushdown、join算法、執行計劃緩存、Meta緩存、本地排程、連接配接池等技術。目前單表查詢以及跨執行個體的多表關聯查詢,都能在毫秒級完成。

技術架構

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

使用者可以在應用程式中,直接使用MySQL JDBC驅動連接配接跨執行個體查詢服務,進行跨執行個體查詢。當然,我們也提供了

控制台頁面

,直接輸入SQL即可執行。

應用場景

垂直拆分後的跨資料庫查詢

某電商公司原先将會員、訂單、商品等資料都存放在一個資料庫執行個體中,但業務發展迅猛,通路量極速增長,導緻資料庫容量及性能遭遇瓶頸,是以使用者決定對架構進行垂直拆分,将會員、商品、訂單資料垂直拆分至三個資料庫執行個體中。此時業務上需要展示某個品類商品的售賣訂單量,原本在同一資料庫裡的查詢,要變成跨兩個資料庫執行個體的查詢。業務上要怎麼進行關聯查詢?

使用者首先想到的方法是,對現有業務代碼進行重構,分别從兩個資料庫查詢資料,然後在業務代碼中進行join關聯。那麼問題來了,如果采用這個解決方案,業務上那麼多查詢改造起來,拆分難度極大,操作起來過于複雜。跨庫join操作又沒有非常高效的辦法,需要從各個業務庫疊代查詢,查詢效率也會有一定影響。

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

我們發現使用者遇到的其實就是典型的跨執行個體查詢問題。目前,阿裡雲DMS跨執行個體查詢服務已經支援跨多個資料庫執行個體的SQL查詢的能力,使用者利用一條SQL即可解決上述難題。不僅能夠滿足“跨庫Join”這一核心訴求,還能極大地簡化使用者的技術方案。

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

水準拆分後的跨資料庫查詢

某酒店在多個城市都有對應的門店,其資料庫在每個城市也會單獨部署一套,業務上有對多個城市全局資料查詢的訴求。同樣,現在越來越多的網際網路行業開始引入單元化架構,在每個城市會單獨部署機房和資料庫,進行多單中繼資料彙總查詢的需求也越來越強。

為了滿足雲上這些跨單元、跨region的資料庫查詢需求,跨執行個體查詢服務打通region之間的屏障,使用者通過一條SQL就能實作這些需求。

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

異構資料庫的關聯查詢

某公司考慮成本和未來可擴充性,正在将業務資料從SQLServer遷移到MySQL上。在這期間,必然存在某些業務子系統仍然在SQLServer上,另外一些業務子系統已經全部遷移到MySQL上,這時兩個子系統之間的聯合查詢,就可以借助阿裡雲的跨執行個體查詢服務實作。不僅如此,在遷移過程中,還可以通過跨執行個體查詢服務,來校驗SQLServer和MySQL上的資料是否一緻。

混合雲場景的關聯查詢

某遊戲公司,由于各種原因,同時保有阿裡雲、騰訊、UCloud、AWS等環境的資料庫執行個體,同時在自己自建的IDC也部署了部分資料庫。業務的資料如此分散,單是統計一下目前遊戲線上使用者數,都要分别到各個環境去查詢一遍再做彙總。借助阿裡雲跨執行個體查詢服務,一條SQL就能實作跨雲廠商和IDC之間的關聯查詢。

【實操手冊】如何玩轉跨庫Join?跨資料庫執行個體查詢應用實踐背景什麼是跨執行個體查詢服務功能特性技術架構應用場景

小結

阿裡雲DMS(資料管理)跨執行個體查詢服務,不僅覆寫了異構資料源關聯查詢的場景,還解決了跨region、跨雲的資料庫關聯查詢的難題。不僅如此,我們對查詢性能進行了大幅優化,使得大部分查詢能在毫秒級完成。使用者無需通過資料彙集,即可通過标準的SQL實作跨執行個體的交叉查詢。

立即體驗請猛戳→ https://dsql.console.aliyun.com/