
OLTP類系統數據結轉最佳實踐
一、 背景介紹
業務系統在長期運行的過程中會積累大量的數據,這些數據有些是需要長期保存的,例如一些訂單數據,有些只需要短期保存,例如一些日志信息。業務數據一般都會有一個生命周期,生命周期內的我們叫生產數據,生命周期之外(即業務已經關閉)的叫歷史數據,我們這里提到的數據結轉,指的是將需要長期保存的歷史數據從生產庫遷移到歷史庫(轉),而將需要短期保存的數據定期刪除(結)。
我們已經進入了大數據時代,但在OLTP類系統中,關系型數據庫依然占據主導地位,在關系型數據庫中,如果不及時進行數據結轉,會嚴重影響系統的性能。
關系型數據庫單機容量有限,因此業界普遍的做法是進行垂直分庫和水平分片,一些大型互聯網企業由于業務量龐大,僅分片的集群規模就能達到上千節點,再加上分庫的集群,規模非常巨大。傳統的數據歸檔方法往往針對單庫操作,難以處理如此大規模集群的數據歸檔。
同時,在大型互聯網企業,每日的數據增長量非常大,數據結轉的頻率遠大于傳統行業,這些行業的IT系統往往是7*24小時不間斷提供服務,而且全天24小時的并發量都很大,因此數據結轉操作必須盡量減少對生產庫的性能影響。
為此,我們自主研發了數據結轉平臺,以解決大數據背景下的數據結轉問題。
二、 技術架構
2.1 設計要點
(1)盡量減少對生產庫的影響
數據結轉操作沒有復雜的業務邏輯,因此對數據庫性能的影響主要體現在IO方面,減少對生產庫的影響,最主要的就是減少對生產庫的IO操作。目前我們采用的方案是通過從庫查詢數據,將數據插入歷史庫,然后再從主庫中刪除,如圖1數據結轉邏輯圖所示,將查詢的IO操作轉嫁到從庫上,可以大大減輕對主庫的影響。為了保障數據庫的高可用,業內基本都采用了主從部署模式,因此這個方案具有很高的通用性。
圖1 數據結轉邏輯圖
(2)支持分庫分片集群
我們希望數據結轉平臺的配置足夠簡單并且易于理解。在和用戶的溝通過程中,我們發現他們最強烈的需求就是分庫分片集群的數據結轉。傳統的單機數據結轉操作可以抽象描述為:將數據庫實例A中表B的歷史數據結轉到歷史庫C,用戶的配置主要有4個元素:生產庫實例A、結轉表B、結轉條件和歷史庫。對于大規模的分庫分片集群規模,如果采用傳統單機數據結轉的配置方式,每一個數據庫實例都要配置4個元素,配置量非常大。
在我們的方案中,按照圖2所示對數據庫集群進行劃分,將主庫、從庫、歷史庫作為一個結轉單元,對于分片的數據庫集群,表結構相同,我們將其作為一個分組,對于分庫的集群,表結構不同則劃分為不同的分組。用戶進行配置的時候不是面向一個數據庫實例,而是面向一個分組,數據結轉操作抽象為:結轉分組X中表B的歷史數據,用戶的配置元素有3個:分組X、結轉表B和結轉條件。分組信息僅需配置一次。這樣大大簡化了用戶的配置工作。
(3)支持水平擴展
由于數據庫集群規模較大,數據結轉平臺應該具備水平擴展能力。我們采用的方案是將數據結轉最核心的組件定時任務和數據庫操作(數據結轉執行器)獨立出來,進行分布式部署。如下圖3所示,
圖2 數據庫集群模型
配置中心為用戶的入口,用戶通過配置中心定義數據結轉任務,任務的關鍵屬性包括:觸發條件、執行條件、目標分組等,配置中心將結轉任務分發給代理程序,同時對代理程序的執行狀態進行監控。結轉任務的觸發條件配置在代理程序中的定時任務中,而執行條件和目標分組則作為數據結轉執行器的執行參數。通過水平擴展代理程序,我們對更多的數據庫進行結轉。
圖3 數據結轉組件關系圖
2.2 總體架構
綜合上面提到的3個設計要點,我們得到圖4所示的總體架構,需要特別說明的是,對于水平分片的分組,我們采用的是多線程結轉,對于不同結轉單元不存在數據共享問題,所以無需考慮并發鎖等問題。
三、 一些經驗總結
a) 配置中心與代理程序之間的信息同步
圖4 數據結轉總體架構圖
配置中心和代理程序在我們的方案中被設計為一種松耦合結構:在系統的運行過程中,代理程序宕機不會影響配置中心的運行,同樣配置中心短暫的不可用也不會影響代理程序的運行。松耦合結構可以大大增強系統的可用性,而且配置中心、代理程序升級的時候不會影響整個系統的正常運行。
為了實現松耦合的結構,配置中心與代理程序之間的信息同步我們都是采用的異步處理,比如配置中心向代理程序分發結轉任務,實際處理的時候我們采用的是拉的方式,而不是推的方式,我們在配置中心和代理程序之間維持了一個心跳,心跳的內容是代理程序負載的所有結轉任務的校驗碼(該校驗碼在代理程序向配置中心發送心跳信息時由配置中心計算),當代理程序發現從配置中心得到的校驗碼和本地校驗碼不同時,則說明用戶對結轉任務進行了修改(包括新增、修改、刪除),此時代理程序主動向配置中心發起同步結轉任務的請求。這樣做的好處是,代理程序在發生宕機重啟后,會自動進行任務的同步。
b) 進度可視化
結轉任務的進度在我們的方案中是實時匯總到配置中心的,我們稱為進度可視化,代理程序通過一個獨立的線程來異步處理進度可視化,一方面這樣可以降低對結轉任務性能的干擾,另一方面可以避免由于網絡問題、配置中心暫時不可用等問題導致結轉任務異常。進度可視化對于用戶來說非常重要,用戶在第一次定義結轉任務并執行該任務的時候,進度可視化信息是用戶和系統互動的唯一窗口,對用戶來說是莫大的心理安慰。
c) 異??梢暬?
代理程序在執行數據結轉任務時,會遇到各種異常信息,比如數據庫URL配置錯誤,歷史庫生產庫表結構不一致等,對于這些異常信息,除了在本地記錄日志外,我們還將它們發送到了配置中心。將這些異??梢暬?,而不是讓用戶在大量的日志中去檢索,這種方式非常便于在線問題的診斷。
d) 事務一致性
將生產庫數據轉到歷史庫本身是一個分布式的事務,在我們的方案中,不能保證數據的強一致性,比如在歷史數據Insert到歷史庫的瞬間,用戶修改了生產庫的數據,我們的方案不會檢測這種變化,會導致用戶的修改并不會反映到歷史庫中,造成數據不一致。雖然在生產庫中刪除歷史數據時,可以增加強一致性的校驗,以解決這種問題,但是這樣會對生產庫造成一定的壓力,同時考慮到這種情況發生的概率極低,因此并沒有進行特殊處理。
歷史數據Insert到歷史庫后,可能由于某種異常導致生產庫執行Delete操作時失敗,此時會造成數據冗余(生產庫和歷史庫存在相同數據)。對于這種問題,我們的方案是利用Redo Log(重做日志)機制,在結轉任務重新執行時根據Redo Log恢復異?,F場,糾正異常數據。
e) 結轉數據的回滾
我們提供了一個數據回滾功能,可以將已經結轉到歷史庫的數據逆向回滾到生產庫,用戶可以配置Where條件精確指定需要回滾的數據。有些特殊情況,業務上需要對已經結轉的歷史數據進行修改,該功能主要用于處理這種情況。同時在測試階段,我們可以通過該功能快速恢復測試數據,方便對數據結轉平臺的測試。
f) 代理程序的自動升級
代理程序和配置中心本質上是一種典型的C/S(客戶端/服務端)結構,客戶端是多實例部署,服務器端是集群部署,為了系統能夠平滑地進行升級,我們需要對客戶端的版本進行統一管理,同時我們提供了代理程序的自動升級功能,系統管理員可以通過配置中心對代理程序部署實例進行升級。自動升級功能,統一了代理程序的版本,使得我們可以不用被兼容性問題羈絆,是我們能夠進行快速迭代開發有力支撐。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25