近日,《金融科技時代》(2020年第5期)刊發了騰訊金融雲總經理胡利明的專題文章——《分布式資料庫在金融行業的應用和展望》,文章全面回顧了資料庫技術的形成過程、分布式資料庫的分類以及雲原生資料庫對分布式資料庫發展的影響,深入分析了金融機構分布式資料庫轉型需關注的要點和轉型的主要路徑,詳細闡述了分布式資料庫應用於金融行業的主要發展方向,最後介紹了騰訊雲在分布式資料庫領域的技術探索和實踐,包括分布式資料庫TDSQL、分布式HTAP資料庫TBase。
騰訊金融雲總經理 胡利明
以下正文是重點內容的摘要:
一、資料庫技術的發展歷程和主要分類
目前資料庫技術的發展經歷了三個階段:
第一階段是系統層次和網狀資料庫管理系統,主要代表是IBM公司在1969年研製出的層次模型資料庫管理系統;第二階段是系統關係資料庫管理系統,IBM公司的研究員E.F.Codd在題為《大型共享資料庫數據的關係模型》的論文中提出了資料庫的關係模型,Oracle基於關係型資料庫的技術進步打造了Oracle資料庫系統;第三階段是新一代資料庫技術的研究和發展,一是在資料庫的模型建立方面出現了面向對象的資料庫模型,二是傳統的資料庫技術和其他計算機技術的結合、互相滲透,建立和實現了一系列新型的資料庫,如分布式資料庫、並行資料庫、演繹資料庫,三是面向專門應用領域的資料庫技術不斷產生,在傳統資料庫基礎上結合特有應用領域和場景,出現了如工程資料庫、統計資料庫、科學資料庫、空間資料庫等。
分布式資料庫主要分為以下三種類型:
一是分片式(Sharding),分片式是在傳統單機資料庫上進行數據分片,通過業務層或者一個中間路由層(Proxy)將不同的請求發送給不同的資料庫實例。分片為了滿足資料庫架構要求而犧牲業務層的應用性能和靈活性。
二是共享存儲(Shared-everything),分為SharedDisk和SharedLog。SharedDisk是將多個資料庫引擎節點底層掛載在一個共享的存儲系統上,各個資料庫引擎都可以看到所有的數據,在多個資料庫引擎實例之前加載一個類似負責均衡的資料庫代理層,將資料庫負載分布到不同的引擎上,從而達到擴展整個資料庫系統處理能力的目的。SharedLog是面向雲端的分布式存儲設計的分布式資料庫,通過利用分布式存儲的優勢,將資料庫日誌和分布式存儲結合,實現資料庫日誌的一致性和高可用性,日誌落地後其他數據再通過緩存逐漸落地,通過這種方式提高資料庫的處理能力。
三是純分布式架構(Shared-nothing),純分布式架構是目前業界最新的全分布解決方案,具有單點、無中心、無限平,在資料庫領域是非常有利的特性,同時具備自動分片,無關聯的請求沒有公共的依賴路徑。
二、分布式資料庫轉型需要關注的要點
金融行業大量使用了傳統的集中式資料庫,並具有長期運維的經驗,如何快速有效地實現從傳統的集中式資料庫轉型到分布式資料庫,成為金融機構必須面對的新課題。在啟動分布式資料庫轉型之前,金融機構需要關注以下要點:
一是系統適配。分布式資料庫通過將資料庫處理的任務分散到多個處理節點上來達到提高性能的目標,所以在原有的業務邏輯上要進行相應的適配,對業務系統進行分層解耦,確定應用層、服務層及數據層的邊界,以適應系統彈性擴展的需求。
二是數據分區。分布式資料庫要對數據進行分區,比如按照時間做Range分區、按照記錄的某個特徵值做Hash分區。保持每個分區的大小適中,才能更好的實現系統的負載均衡、調度以及擴展性。
三是並行處理。充分理解分布式資料庫的工作邏輯,從業務上要儘量利用分布式的並行處理能力,將不同的任務並行處理,從而提高整體效率。同時要理解分布式帶來的是整體效率的提升,針對具體的處理邏輯在低負載的情況下不一定比原有的集中式資料庫效率更高。
三、金融機構分布式資料庫轉型的路徑
一是按照先增量後存量順序。
對於網際網路跨界融合等增量業務,因為安全性要求較低,不會發生金融安全風險,可以先行替換試驗。當新上線分布式事務資料庫能夠滿足業務需求,並且相關業務人員已經適應相關操作方法和模式後,通過切割流量的方法逐步對存量的核心業務進行替換。在存量業務替換的同時,需要同時維護原系統的備份作為災備方案,當新系統穩定運行得到驗證後,逐步下線原系統。
二是按照業務性能瓶頸順序。
分布式事務資料庫會提供強大的吞吐/處理能力,金融機構可對當前各類業務性能瓶頸進行分析評估,找出急需分布式事務資料庫方案解決瓶頸問題的業務,按照一定的優先級順序,逐輪進行流量分割處理,在緩解現有業務壓力的同時,驗證新系統的各項能力,層層遞進。
三是按照業務不同的技術實現類型規劃。
金融機構的業務紛繁複雜,各類業務對信息系統的技術要求並不相同。例如轉帳業務主要要求大並發的事務能力,批量計提結息業務要求大規模數據的並行處理能力,日誌分析要求實時大規模數據的分析能力。所以金融機構可以按照不同業務對技術的要求安排改造順序,從而逐步驗證分布式事務資料庫能力。
四是注重知識儲備和傳遞。
分布式資料庫在業界處於實踐起步階段,金融機構應用分布式資料庫,需要在實施階段首先進行深入的知識傳遞和過渡。
四、騰訊雲分布式資料庫的探索和實踐
·分布式資料庫TDSQL
TDSQL是騰訊基於MySQL/Mariadb社區版本的基礎之上打造的一款面向金融行業的分布式資料庫。在內核層面,TDSQL針對MySQL社區版本和Mariadb社區版本的內核做了深度的優化,通過對數據複製模塊進行多線程的改造,使得TDSQL具備了一主多從的數據強一致同步能力,極大地提升了數據安全性和整體能力的可擴展性。相對原生內核的半同步複製機制,TDSQL強一致複製的性能也有極大提升,具備主備強一致切換與秒級恢復、自動化監控與運維等特點。
TDSQL提供了noshard與shard兩種使用模式:
Noshard模式,就是單實例模式,不做自動的分庫分表,在語法和功能上完全兼容於MySQL,缺點是只支持垂直擴容,這會受限於單實例伺服器的性能和容量上限,無法進行水平擴展。
Shard模式即AutoSharding模式,通過TDSQLSQLEngine模塊,實現資料庫的Sharding和分布式事務功能,底層的數據打散在多個資料庫實例上,對應用層還是統一的單庫視圖。Shard模式可以實現容量和性能的水平擴展,通過兩階段XA支持分布式事務和各種關聯操作。
TDSQL對內支撐騰訊公司近90%的金融、交易、計費類業務,2014年TDSQL首次嘗試對外輸出,成功應用於微眾銀行的核心系統,開始商業化探索。2019年TDSQL成功應用到張家港農商行新核心系統,成為國內第一家投產於銀行傳統核心系統的分布式資料庫,這是TDSQL又一個裡程碑式的發展。到目前為止,TDSQL已全面應用於國有大型商業銀行、股份制商業銀行、城市商業銀行和農村商業銀行等各類型的銀行。
·分布式HTAP資料庫TBase
Tbase是騰訊雲基於PostgreSQL內核打造的一款分布式資料庫,經過騰訊內部多年業務的打磨,在2017年更名為TBase後,正式對外推出。TBase以其功能強大、運行穩定、高性能高可靠性的特性得到用戶的普遍認可,目前已在金融、政務、醫療、公安、消防、電信等行業的解決方案中大量應用。
TBase的核心能力如下:
一是具備HTAP能力(即事務和分析混合處理技術),Tbase經過專門的設計很好地做到了HTAP,同時具備高效的OLAP能力和海量的OLTP處理能力。Tbase系統可以支持每分鐘完成的事務量超過310萬,系統的事務吞吐量會隨著集群規模準線性提升。
二是支持企業級特性,業務無需關注資料庫的事務特性,Tbase資料庫內核支持完整的分布式事務,保證事務的ACID,同時具備良好分布式查詢支持能力、高效的在線線性擴容能力。當前Tbase能夠兼容SQL2003標準,同時還能夠兼容常見的ORACLE語法,可以方便ORACLE深度用戶的遷移。
三是數據安全能力強,TBase設計了全面的數據安全體系,一是三權分立,把資料庫系統dba的角色分解為三個相互獨立的角色,安全管理員,審計管理員,數據管理員,這個三個角色之間相互制約;二是強制安全規則,通過安全管理員制定的強制安全規則,可做到行級可見和列級可見,進而限制用戶看到的數據,對不同的用戶做到權限的行列混合控制。三是透明數據脫敏管理,TBase實現了業務的透明脫敏,業務只需要根據自己的業務規則結合TBase的脫敏語法,設計業務邏輯,TBase內部就可以做到數據的脫敏;四是審計能力,Tbase設計了自己的審計系統,在內核中實現了審計的核心功能,做到在兼顧高精準的審計粒度的同時還能保證系統的性能。
原載《金融科技時代》(2020年第5期),經作者授權發布!
責任編輯:王超