騰訊基於全時態資料庫技術的資料閃回
作者簡介:李海翔,網名“那海藍藍”,騰訊金融雲資料庫技術專家。中國人民大學資訊學院工程碩士企業導師。著有《資料庫事務處理的藝術:事務管理和併發訪問控制》、《資料庫查詢最佳化器的藝術:原理解析與SQL效能最佳化》,廣受好評。
2018年11月16日,中國資料技術嘉年華技術大會上,騰訊TDSQL團隊帶來騰訊最新的資料庫核心技術課題:基於全時態資料庫技術的資料閃回。騰訊專家工程師李海翔在大會上做了該課題的分享。
此次分享是基於騰訊研發的分散式全時態資料庫系統和分散式事務處理的創新技術,TDSQL原創性研發了全時態資料的閃回功能,並提出一種基於全時態資料模型的新型架構—HTAC叢集架構。主要內容包括:TDSQL概述、TDSQL全時態資料庫核心理念、TDSQL分散式全時態資料庫原理與架構、TDSQL基於HTAC的全閃回技術四個部分。
一、 TDSQL概述
TDSQL分散式資料庫已穩定執行十年之久,不僅支撐了騰訊公司的計費業務,而且在微眾銀行、數字廣東等金融、政務等領域有著廣泛應用。這幾年,TDSQL在技術層面不斷進步,研發諸多新特性,如多級分割槽、熱點更新、隱含主鍵、分散式事務等,不僅有力地支撐了事務型的資料庫應用,而且在體系結構上也朝Spanner架構邁進,是一個名副其實的NewSQL系統。
TDSQL分散式事務處理技術,有了長足進步,不僅表現在支援分散式事務,而且在MVCC技術的基礎上做了創新,使得TDSQL的事務處理技術基於原創技術不斷髮展。
騰訊資料庫技術的發展始終把握兩條線:一是從資料價值出發擴充套件資料庫的能力為業務提供服務;二是從技術角度出發提升資料庫的能力為資料處理提供服務。2018年,TDSQL提出全時態資料模型,對分散式全時態資料庫進行研發,並推出處理全時態資料型別的HTAC(Hybrid Transaction /Analytical Cluster,混合事務/分析叢集)架構。
二、TDSQL全時態資料庫核心理念
TDSQL的原創技術,是基於業務的需求,為解決業務問題而進行的創新。騰訊公司基於TDSQL關係型資料庫研發的時態資料庫,由資料庫系統統一管理海量的全時態資料、當前資料,解決了上述四個業務中的問題(應用開發複雜、資料邏輯割裂、實時特性丟失、資料管理複雜)。
因儲存成本等原因,現代的資料庫系統只保留有資料的當前值,歷史態資料被丟棄。而資料作為重要的資產,不管是當前資料,還是歷史資料,都具有重要價值。因此,歷史態資料儲存、被分析、被挖掘、被反覆使用,是當前網際網路企業的需求。尤其是金融類歷史態資料,出於資料安全的原因,需要被多次計算驗證,在騰訊公司的計費業務中,帶有時態屬性的資料被管理的需求日益旺盛。
“資料有價值,歷史資料也富有價值”,這是TDSQL時態資料庫的核心價值觀。TDSQL團隊認為:資料的狀態屬性,標識資料的生命週期軌跡。資料的生命週期分為三個階段,每個階段刻畫資料的不同狀態屬性,以標識資料的生命週期軌跡中所處的狀態。
當前態(Current State):資料項最新版本的資料,處於當前階段稱為當前態。
歷史態(Historical State):資料項歷史上的一個狀態,其值是舊值,不是當前值,稱為歷史態。一個資料項的歷史態,可以有多個,反映了資料的狀態變遷的過程。處於歷史態的資料,只能被讀取不能再被修改或刪除。
過渡態(Transitional State):處於從當前態向歷史態轉變的過程中。處於過渡態的資料,稱為半衰資料。
這三個狀態,涵蓋了一個資料項的生命週期,合稱為資料全態(full-state),或稱為全態資料。在MVCC機制下,資料的三種狀態均存在;在非MVCC機制下,資料只存在歷史態和當前態。
當前態:MVCC或封鎖併發訪問控制機制下,事務提交後的資料的新值處於當前態。
歷史態:MVCC機制下,當前活躍事務列表中最小的事務之前的事務生成的資料,其狀態處於歷史態。在封鎖併發訪問控制機制下,事務提交後,提交前的資料的值變為歷史態的值,即資料項的舊值處於歷史態。
過渡態:MVCC機制下,被讀取的版本上尚有活躍事務(非最新相關事務)在使用,因最新相關事務修改了資料項的值,其最新值已經處於一個當前態,被讀取到的值相對當前態已經處於一個歷史狀態,故其資料狀態介於當前態和歷史態之間,所以稱為過渡態。
資料的雙時態屬性,分別為有效時間屬性、事務時間屬性。
基於上述內容,TDSQL構建了全時態資料模型,包括全態資料和時態資料,以及其操作語義。TDSQL全時態資料庫,具備如下圖所示的特性,能夠涵蓋雙時態的資料應用、資料安全、資料分析、簡化應用開發等四大方面的問題。
三 、TDSQL分散式全時態資料庫原理與架構
TDSQL的核心技術之一,是資料模型的定義、全態資料模型和雙時態資料模型的結合。
TDSQL的核心技術一:資料模型
TDSQL全時態資料庫不僅支援全態和雙時態資料的儲存,還支援其他豐富操作。在這個模型中,全態資料體現在資料項的歷史版本上,時態資料不僅有事務時間時態,還有有效時間時態。全態資料的歷史態資料,可以追溯資料庫系統的操作發生時間以及發生的操作型別。具備豐富的操作語義,是TDSQL全時態資料庫的一個特色。
TDSQL的核心技術二:歷史資料轉儲時機
歷史資料的儲存時機,是TDSQL的另外一個核心技術。TDSQL巧妙地利用MySQL的回滾段和Purge機制,實現了歷史態資料的轉儲,原理圖如下:
TDSQL的核心技術三:在全時態資料模型上的事務操作
資料儲存之後,需要基於MVCC做歷史態資料的可見性判斷,原理如下:
TDSQL基於全時態資料模型,實現了新的資料一致性快照點的構建,可以獲取任何時間段(包括歷史發生過的時間)上的任何狀態的資料。
作為原創技術,TDSQL的核心技術點及其思路,相關論文已經在World Wide Web journal上以題為《Efficienttime-interval data extraction in MVCC-based RDBMS》發表,詳情可參見:
TDSQL分散式資料庫系統的歷史態資料的全域性計算,依賴如下圖所示的TDSQL分散式事務處理機制:
TDSQL的核心技術四:創新的HTAC架構
TDSQL既支援全時態資料的無限儲存,同時實現了TDSQL對全時態資料的強大計算能力,這得益於創新的HTAC架構。此架構使得全時態資料模型在分散式資料庫系統內做到了三個融合:全態資料融合、AP和TP處理融合、架構向資料模型融合。
如下圖,資料庫服務由HTAC提供:
HTAC是一個叢集系統,分為TP叢集和AP叢集,TP提供事務處理業務,AP提供歷史態資料的查詢、分析功能。
SR,SQLRouter層,根據查詢語句、查詢操作的語義和後設資料,路由查詢到TP或AP子系統。
TP處理當前態資料,每份資料為一個SET,一個SET存在多個副本,副本間透過TDSQL的強同步技術實現資料強一致。SET中的資料可以線性擴容。節點失效透過ZooKeeper進行管理。跨節點的寫事務透過2PC技術實現分散式事務對資料操作的原子性、一致性。
AP提供無限儲存功能,儲存歷史態資料,並提供歷史態資料的查詢、分析業務。TP中定義歷史態資料遷移策略,按策略把歷史資料原子遷移到AP系統,並註冊到MD後設資料管理器。
極高的效能
實現資料庫全時態能力之後,TDSQL全時態資料庫依舊保持近乎原系統效能,這是一件不容易的事情。使用業界通用的sysbench測試工具進行OLTP測試,TDSQL全時態資料庫的效能近乎完美。
四 、TDSQL全時態資料庫的閃回
今天,我們分享基於全時態資料庫基礎構建的技術之一:閃回。這是非常酷的特性,使用者在TDSQL系統中可以實現“一切過往兼可追溯”的夢想。閃回是DBA們特別歡迎的一個重要特性,TDSQL提供了任意時間點的任意資料的閃回能力,其他資料庫諸如Oracle只具備階段性資料的閃回能力。
一旦掌握了TDSQL全時態資料庫系統的實現原理,基於此所做的閃回就能很容易理解。其核心問題就是:在全態的資料上,怎麼做給定時間點的一致性查詢。這個問題在第三節已經談得十分充分了。接下來,我們來看看TDSQL全時態資料庫系統的閃回的特點。可以用一個字概括“全”,稱為“全閃回”。全的含義是多種層次的,一是在所有資料項的生命週期內可以進行任意時間點的閃回;二是TDSQL作為一個分散式系統,因為其創新的全域性讀一致性技術,做到了在分散式系統下的全域性閃回;三是閃回可以在HTAC系統中的AC子系統完成,這不影響生成系統。可隨時進行閃回,小夥伴們對此貼心的架構設計非常滿意。
五、 結語 :TDSQL的核心理念,為資料賦能
在TDSQL團隊看來,全時態這一概念,正是資料庫系統參與到資料創造環節的最佳契機。資料庫系統為資料賦於了事務時態,賦於了DML操作過程中的事件源,甚至可能為資料之間賦於關聯關係,使得資料庫系統也成為了資料的創造者。
原創技術的背後,是“為資料賦能”的理念推動著TDSQL團隊潛心鑽研全時態資料庫系統,從而讓資料擁有更多的價值,資料庫變成資料的生產者,參與資料的創造。
原文連結:https://mp.weixin.qq.com/s/MvZppUivX58KlE0K8GVoyA
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559354/viewspace-2220640/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於時間戳閃回資料庫時間戳資料庫
- Oracle閃回技術之閃回資料庫Oracle資料庫
- 【備份恢復】閃回資料庫(三)基於時間戳閃回資料庫資料庫時間戳
- 資料庫基於版本的閃回資料庫
- 基於SCN閃回資料庫資料庫
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- 閃回(關於閃回資料庫)資料庫
- 【備份恢復】閃回資料庫(四)基於可靠還原點閃回資料庫資料庫
- 閃回技術查詢資料
- 資料庫的閃回資料庫
- 閃回資料庫資料庫
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- 閃回資料庫的事情資料庫
- Oracle資料庫閃回Oracle資料庫
- Oracle閃回資料庫Oracle資料庫
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- Flashback Database 閃回資料庫Database資料庫
- 監視閃回資料庫資料庫
- 實驗-閃回資料庫資料庫
- [Flashback]開啟資料庫閃回資料庫功能資料庫
- 閃回資料庫(基礎例項講解)資料庫
- Backup And Recovery User's Guide-使用閃回資料庫來回退資料庫-監控閃回資料庫GUIIDE資料庫
- 開啟資料庫的閃回功能:資料庫
- Backup And Recovery User's Guide-使用閃回資料庫-開啟閃回資料庫GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫來回退資料庫-執行閃回資料庫操作GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫來回退資料庫-閃回資料庫的先決條件GUIIDE資料庫
- 【FLASHBACK】關於閃回資料庫的一點說明資料庫
- 閃回技術全瞭解
- Oracle 閃回資料庫測試Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 閃回資料庫時間視窗(flashback database window)資料庫Database
- 騰訊雲資料庫伍鑫:MPP資料庫HTAP技術探索資料庫
- Oracle資料庫的閃回恢復區Oracle資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫GUIIDE資料庫
- 巧用閃回資料庫來檢視歷史資料資料庫
- 閃回資料庫之後匯入資料實驗資料庫