隨着業務複雜程度的提高、數據規模的增長,越來越多的公司選擇對其在線業務數據庫進行垂直或水平拆分,甚至選擇不同的數據庫類型以滿足其業務需求。原本在同一數據庫實例裏就能實現的SQL查詢,現在需要跨多個數據庫實例才能完成。業務的數據被“散落”在各個地方,如何方便地對這些數據進行彙總關聯查詢,已經成爲困擾用戶的一大難題。

針對這類問題,傳統的解決方案需要用戶提前將所有實例的數據提前彙集到彙總庫進行查詢分析。這種方案不僅無法滿足查詢時效性,且用戶還需要承擔數據彙集的鏈路穩定性風險及數據冗餘的經濟成本。

爲了解決跨數據庫實例及時查詢的難題,阿里雲DMS(數據管理)推出了跨數據庫實例查詢服務。

跨實例查詢服務支持通過標準SQL進行跨同異構數據庫的實時查詢。除了關係型數據庫MySQL、SQLServer、PostgreSQL,還支持Redis。同時,跨實例查詢服務還支持跨地域、跨雲及線下IDC自建數據庫及跨雲廠商數據庫實例間的數據實時查詢,被廣泛應用於多地域部署業務的全局數據查詢場景。

本文以MySQL及Redis爲例,介紹如何通過一條SQL輕鬆完成跨數據庫實例的查詢。

跨實例查詢服務支持通過SQL查詢Redis中的任意key,同時支持跨key之間的join查詢。在進行SQL查詢前,您需要先在跨實例查詢服務中,創建Redis實例的DBLink。接下來簡單介紹創建DBLink及進行SQL查詢的流程。

在跨實例查詢服務的控制檯,創建DBLink,配置Redis實例的連接信息。

當完成DBLink創建後,需要使用這個DBLink編寫查詢SQL。

跨實例查詢服務提供WEB SQL命令窗口,可以直接在命令窗口中,通過標準的SQL進行Key查詢。具體支持的SQL命令可以參考使用文檔。

對於每一個redis的database, DMS會自動創建6張表,分別如下:

all: 存儲所有的key

string: 存儲數據類型爲string的可以

hash:存儲數據類型爲hash的key

list: 存儲數據類型爲list的key

set:存儲數據類型爲set的key

zset:存儲數據類型爲score set的key

每張表的表結構如下:

此處,我們通過通過如下的select語句查詢all表中的前5個key。

select * from redis_test.db0.all limit 5;

日前接到某遊戲客戶跨MySQL及Redis查詢的需求。該客戶將用戶積分排行榜存儲在redis myzset中,而將用戶元信息維護在MySQL user 表中。用戶的某個簡單訴求是:在遊戲APP中能實時刷新用戶的積分排行榜。

通過redis score set存儲用戶積分情況,存儲用戶ID及score, key的名稱爲user_scrore, value爲用戶ID, score爲用戶積分。樣例數據如下表:

通過MyQL User表存儲用戶的基本信息,包括user_id, user_name,province, city, gmt_create等,其中:

User_id 爲用戶ID, User_name 爲用戶名

Province 爲用戶所屬省份, city 爲用戶所屬市

Gmt_create 爲用戶第一次登陸遊戲APP的時間

樣例數據如下表:

通過如下SQL,可方便得查詢用戶的積分排行榜。

select user.user_name,zset.score from redis_test.db0.zset as zset join mysql.db0.user as user where

user.user_id=zset.value and zset.key='user_score' order by zset.score desc;

這個SQL將redis中的用戶ID跟MySQL中的user_id進行關聯,且只查詢存儲用戶積分的key。

由於篇幅有限,本文只是簡單介紹了DMS 跨數據庫查詢的功能及其在Redis上的使用案例。您可以立即體驗跨數據庫實例查詢>>

跨數據庫查詢的詳細功能及使用場景可以參考:使用文檔(https://help.aliyun.com/document_detail/99896.html?spm=a2c4e.11153940.blogcont696369.15.5f3e417dCXojoA)

教你用一條SQL搞定跨數據庫查詢:如何玩轉跨庫Join(https://yq.aliyun.com/articles/686027?spm=a2c4e.11153940.blogcont696369.16.5f3e417dCXojoA)

--------------------------------------

本文作者:lyrewu

原文鏈接:https://yq.aliyun.com/articles/696369?utm_content=g_1000051310

本文爲雲棲社區原創內容,未經允許不得轉載。

聲明:該文觀點僅代表作者本人,搜狐號系信息發佈平臺,搜狐僅提供信息存儲空間服務。
相關文章