?

基于客戶分類的海量數據動態路由存儲策略研究

2023-06-15 05:29劉文華
計算機時代 2023年6期

劉文華

摘? 要: 電商行業的海量數據存儲,多采用以客戶為切分鍵進行分庫分表的策略,但由于大客戶和普通客戶數據體量差距巨大,往往會導致數據在各庫表中分布嚴重不均。本文基于分布式數據庫存儲,設計了區分大客戶和普通客戶的分庫分表策略、能夠及時識別客戶數據變化的實時數據監控,以及基于客戶分類動態選擇存儲策略的動態路由組件,可有效保障數據的均勻分布。

關鍵詞: 客戶分類; 海量數據; 分庫分表; 動態路由策略; 實時數據監控

中圖分類號:TP311.1? ? ? ? ? 文獻標識碼:A ? 文章編號:1006-8228(2023)06-07-04

Dynamic routing storage strategy of mass data based on account classification

Liu Wenhua

(Beijing Wuzi University, Beijing 100000, China)

Abstract: The mass data storage in e-commerce and other industries mostly adopts the strategy of taking the account as the sharding key to divide databases and tables. However, due to the huge gap in the data volume between key account and ordinary account, the distribution of data in each database and table is often seriously uneven. Based on distributed database storage, a customized strategy of divide databases and tables for key account and ordinary account is designed. The real-time data monitoring can identify account data changes in time, and the dynamic routing component can dynamically select storage strategy based on account classification. It can effectively ensure the uniform distribution of data.

Key words: account classification; mass data; divide databases and tables; dynamic routing strategy; real-time data monitoring

0 引言

隨著互聯網各項技術的日臻成熟,物流體系逐步完善,電商行業快速發展。線上支付方式呈多樣性,網上交易量與日俱增,一些頭部電商平臺的日均交易量已至千萬量級,隨之而來,每天產生的各類業務數據也呈指數級增長,如訂單、支付、物流、營銷等海量業務數據日均數據增量已達到百億量級。如此海量數據通過傳統的單機數據庫存儲,從存儲性能和存儲容量上顯然都已無法滿足要求。

分布式數據庫[1,2],利用其多節點數據分片存儲的方式,突破了單機服務器容量和吞吐量的限制,配以合理的分庫分表策略、數據存儲路由策略,則可滿足海量數據高效存儲的使用場景。

數據存儲路由策略,一般以客戶編號為切分鍵,基于庫表數量進行取模計算,以定位數據存儲的庫表位置,使數據能均勻的分散存儲至各庫表之中。這種方案是以每個客戶產生的數據量相差不大為前提的,但實際場景中往往存在一些大客戶,其產生的業務數據量遠遠大于普通客戶,這種情況下,會出現大客戶海量數據存儲于個別庫表之中,導致數據庫數據分布嚴重不均,個別庫表數據量巨大(億量級),嚴重影響數據庫的性能、吞吐量和磁盤利用率。

1 存儲策略

由于客戶業務并非一成不變,隨著自身業務的發展,很可能會在普通客戶和大客戶之間來回轉換,通過設計客戶日增業務數據監控任務,來識別客戶身份轉換,動態調整數據路由策略,設計數據路由策略組件,支持實時動態切換路由策略,以便及時有效應對客戶身份變化。

為解決大客戶和普通客戶數據量不均衡所產生的數據存儲問題,本文主要從分庫分表[3,4]策略設計、大客戶動態識別,以及數據監控設計和動態路由組件設計三方面進行闡述,整體系統框架圖如圖1所示。

1.1 分庫分表策略設計

分庫分表策略的設計,主要針對大客戶和普通客戶,制定不同的分庫分表策略。

1.1.1 普通客戶

設計原則:普通客戶每日產生的業務數據量差異較小,則以客戶為切分鍵進行分庫分表設計,數據將均勻分散存儲至數據庫各庫表之中。

分庫分表規則:

分庫數量:N個數據庫

分表數量:M*N(每個數據庫M張表)

所在庫表計算方式:

所在分表=(Hash(客戶編號)%(M*N))+1

所在分庫=(Hash(客戶編號)%(M*N)/M)+1

1.1.2 大客戶

設計原則:大客戶每日產生的業務數據量龐大,可能達日增百萬量級,則設計為每日一張表存儲當日產生的數據,存儲一年數據,則共需創建366張表,平均分布于全量分庫當中。每年同一日期的數據,存儲在同一張表中,表可重復使用??紤]到大客戶數量多時,即使每日一張表,也可能會達到千萬甚至是上億量級,因此設計N套分表,每套為366張,共計N*366張表。將客戶平均分配到N個分組中,使各分表得以充分利用,數據可以均勻分配至數據庫各庫表之中。

分庫分表規則:

分庫數量:N個數據庫

分表數量:M(套)*366

1.2 大客戶動態識別及數據監控設計

大客戶動態識別及數據監控[5]設計主要為及時識別出大客戶和普通客戶身份的轉換,從而動態調整數據路由策略,及時應對客戶身份變化。

大客戶定義標準:連續M日,每日新增業務數據量>N萬

每日定時任務,查詢業務數據庫,以客戶維度匯總統計前一日該客戶產生的業務數據量,統計數據存儲至客戶日增數據統計表(表2)。

1.3 動態路由組件設計

動態路由組件可根據客戶分類動態地選擇數據存儲策略,結合大客戶動態識別及數據監控功能,可做到及時有效應對客戶身份變化。

動態加載大客戶配置信息,即將監控系統識別出的大客戶信息,動態加載至系統內存當中,以便當查詢路由時,可以及時高效的讀取使用。主要包含如下兩種加載方式:

⑴ 啟動加載

動態路由組件啟動時,查詢大客戶配置信息,并加載至內存當中。

⑵ 定時加載

動態路由組件啟動后,啟動定時任務,定時查詢大客戶配置信息,并加載至內存當中。

動態路由,即執行數據庫操作時,根據配置信息,動態選擇定位數據庫表的策略,以便準確定位數據所在庫表信息,主要流程如下。

⑴ 判斷查詢客戶是否在大客戶配置信息中。

⑵ 如果在大客戶配置信息中且查詢時間條件在生效時間范圍內,則根據大客戶路由策略定位所在庫表。

⑶ 如果不滿足條件⑵,則根據普通客戶路由策略定位所在庫表。

2 結論

本文針對高并發海量數據[6]存儲場景,由于大客戶數據量大,導致數據存儲分布不均,從而影響數據庫整體性能、吞吐量和磁盤利用率的問題,提出了一種高效可行的解決方案,并完整詳細闡述了該方案的理論依據和技術架構。設計了適用于大客戶和普通客戶各自的分庫分表規則,解決了不區分客戶分類統一分庫分表策略帶來的數據傾斜問題。設計了客戶數據監控策略,通過監控客戶業務數據的發展變化,能夠及時識別客戶身份的變化,輔助動態路由組件及時動態的調整路由策略。設計了動態路由組件,可以根據不同的客戶分類,選擇合適的路由策略,并實現了動態加載功能,可以準確及時的加載更新客戶配置和路由配置的變更。本方案普遍適用于存在海量數據存儲,且不同客戶分類業務數據量差異較大的場景,希望能給有類似場景的開發者,提供一些借鑒思路。

參考文獻(References):

[1] 劉曉光.基于MySQL的分布式SQL數據庫的設計與實現[D].

碩士,中國科學院大學(工程管理與信息技術學院),2016

[2] 喬洪宇.分布式數據庫中間件驅動模塊的設計與實現[D].

碩士,哈爾濱工業大學,2014

[3] 沈佳杰,盧修文,向望,等.分布式存儲系統讀寫一致性算法

性能優化研究綜述[J].計算機工程與科學,2022,44(4):571-583

[4] 王凌暉,解云月,周美華.Hadoop分布式存儲架構的性能

分析[J].現代電子技術,2018,41(18):92-95

[5] 孫超,肖文名,曾樂,等.海量監視數據云存儲服務模型的設計

與實現[J].武漢大學學報(信息科學版),2020,45(7):1099-1106

[6] 李韜睿,徐超,胡龍舟,等.基于云計算技術的海量信息分布式

存儲研究[J].微型電腦應用,2022,38(10):90-93

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合