騰訊與中國人民大學於 2017 年起,依託於騰訊 TEG 計費平臺部豐富的實戰經驗和中國人民大學數據工程與知識工程教育部重點實驗室的多年學術積累,在資料庫前沿研究領域開展了深入合作,研究成果已經連續兩年入選國際頂級會議 VLDB。(TDSQL 帶你走進資料庫頂會 VLDB 2018 | 論文縱覽)。
VLDB 會議是國際公認的數據管理與資料庫領域頂尖的三大學術會議(SIGMOD、VLDB、ICDE)之一,旨在展示和推廣領域內最新的研究成果和核心科技。自 1975 年開辦至今,VLDB 會議已經成功舉辦了 44 屆,每年的 VLDB 能在全球範圍內吸引到大量優秀的研究人員、企業代表以及行業精英到場參會,是一場不容錯過的學術盛會。
繼去年在 VLDB2018 上通過 DEMO 論文展示了合作成果 MSQL+ 後(基於 TDSQL 的插件式近似查詢工具)),今年騰訊與中國人民大學最新聯合研究成果「A Lightweight and Efficient Temporal Database Management System in TDSQL」成功被 VLDB2019 Industry Track 接收並將通過長文形式發表。該研究成果由騰訊 TEG 計費平臺部 TDSQL 資料庫團隊與中國人民大學數據工程與知識工程教育部重點實驗室深度合作完成。論文介紹了一款基於 TDSQL 擴展而來的全時態資料庫系統,該系統在保證 OLTP 性能的前提下,提供了輕量級的時態數據管理功能。本文將對論文研究成果進行詳細的分析解讀。
圖 1 VLDB 官網截圖
時態數據主要指隨時間推移不斷發生變化的數據,例如溫度、帳戶餘額等數據。時態數據在現實生活中非常普遍,而在金融場景下,在資料庫層面時態數據管理尤為重要。例如,金融審計時需要獲取 2018 年 11 月 08 日至 2018 年 11 月 10 日的帳戶餘額變動情況。如果通過傳統資料庫(RDBMS)中的普通關係表進行帳戶餘額管理(如圖 1 所示),帳戶餘額變動不會被維護,因而上層應用需要通過日誌等形式來額外記錄餘額的每次變動,這會大大提高應用複雜度;而採用如表 2 所示的時態數據表,餘額的變遷被原生維護在資料庫中,即可準確獲取到餘額變動數據(表中加粗數據)。
表 1 普通關係表
表 2 時態數據表
結合 TDSQL 系統的特點,研究團隊提出並實現了一個輕量且高效的全時態資料庫系統,該系統可以在保留原有 TDSQL 強勁的 OLTP 處理性能的同時,通過巧妙的系統設計,提供了內建的時態數據管理能力(如圖 2 所示)。
圖 2 系統概覽
TDSQL 全時態資料庫系統創新性地採用了一種混合存儲模式,來對時態數據進行管理。系統將時態數據拆分為當前數據和歷史數據,針對不同的數據類型,分別採用不同的存儲策略。當前數據管理模塊,採用了基於 MVCC(多版本並發訪問控制協議)設計的資料庫所普遍採用的段頁式結構,並且專門開闢回滾段,來對更新或刪除操作產生的舊版本進行暫存。在回滾段中暫存的數據會在資料庫進行資源回收操作(如 MySQL 中的 Purge 和 PostgreSQL 中的 VACUUM 等)時,遷移到歷史數據管理模塊,這個過程被稱為數據轉儲。這是一種異步的轉儲策略,因而幾乎不會造成性能損耗。歷史數據存儲模塊,通過 k-v 格式來進行組織,可以大幅度縮小存儲開銷。由於一個數據項會存在多個歷史版本,而這些歷史版本會在某些屬性上存在一樣的值,例如表一中的 James 被重複四次。因此,在歷史數據存儲模塊中,系統將每一個版本轉化為一條 k-v,並且只存儲相較於上一個版本發生變化的屬性值。
系統對時態查詢處理邏輯進行了針對性設計與優化。通過專門的時態查詢編譯器,部分時態查詢條件(如有效時間查詢)會被重寫並拼接到 WHERE 條件中。而對於事務時間查詢,系統將其查詢條件轉化為了內嵌的可見性判斷過程,從而使得時態查詢所獲取的數據滿足事務一致性的要求,保證數據的準確性,這點在金融場景下顯得尤為重要。
另外,通過持久維護事務狀態,系統可以快速獲取到事務的執行狀態,結合時態數據,即可原生支持事務級數據閃回等實用操作。對於歷史數據,系統利用 k-v 存儲的特性,可以根據時間條件快速定位到所需數據版本,具備了較好的時態查詢性能,且在 SQL 語句的寫法上方便用戶直接使用 SQL 語句進行查詢。
系統體現了 HTAC(Hybrid Transaction / Analytical Cluster,混合事務 / 分析集群)這一新型的系統架構設計理念,如圖 3。
TDSQL 全時態資料庫系統分為 OLTP 集群和 OLAP 集群,OLTP 集群負責事務型業務,OLAP 系統處理分析型業務,提供歷史數據的查詢分析等功能。通過統一路由模塊根據查詢語句、查詢操作的語義將 SQL 發送到對應集群進行處理。由於時態數據查詢等負載需要佔用大量系統資源,這種拆分的系統設計可以儘量影響減小生產系統受到的性能影響。其次,歷史數據量級較大,OLAP 集群通過擴展存儲的方式,即可實現歷史數據的無限存儲。
圖 3 T-TDSQL 全時態資料庫系統架構圖
論文提出了一種拓展的時態數據模型。除了在 SQL:2011 中定義的有效 / 事務時間屬性外,本模型通過新引入的事務 ID 屬性描述時間。MIN_ID 與創建記錄的事務相對應,MAX_ID 對應於刪除 / 更新記錄的事務。事務 ID 能夠識別在同一事務中插入 / 更新 / 刪除的所有記錄,從而實現由於業務邏輯破壞數據的修復。
論文提出了一種內建的時態資料庫解決方案,並針對 TDSQL 進行了大量優化,最終實現了 TDSQL 全時態資料庫系統。同時,該解決方案具有很強的通用性,可以方便的引入到其他資料庫系統中。通過引入異步數據遷移、增量歷史數據管理、原生時態查詢執行器等策略,該解決方案具有輕量且高效的特點。
通過在真實場景和 TPC 基準負載下的大量實驗,TDSQL 全時態資料庫系統具有非常小的性能損失(相較於原始 TDSQL 系統),並且能夠快速響應時態查詢,與其他現有的時態資料庫系統相比具有較好的性能。
通過 TPCC 測試基準,論文展示了時態數據管理對原有系統性能的影響情況。如圖 3 所示,在 256、512、1024 個數據倉庫的場景下,基於 TDSQL 實現的全時態資料庫系統的系統性能相較於原始 TDSQL 下降率不到 10%,領先於其他基於傳統關係資料庫實現的時態資料庫系統。
圖 4 TPCC 測試結果
另外,基於真實的批處理業務場景,論文展示了系統在實際業務場景下的表現。如圖 4 所示,通過連續 30 天對比原始系統和新型全時態資料庫系統(T-TDSQL)在處理該業務時所需的執行時間,實驗結果展示騰訊全時態資料庫系統在簡化業務應用開發的同時,可以縮短近一半的業務執行時間。
圖 5 實際業務場景測試
對於該論文,VLDB 評審委員會做出如下點評:
This paper extends the TDSQL system from Tencent for temporal data management. A new temporal data model is proposed with optimized implementation. Extensive experimental study has been conducted to compare the performance with existing temporal database systems over benchmarks and real data.
TDSQL 全時態資料庫核心價值觀是「歷史數據富有價值」,核心理念是「為數據賦能」,因而系統提供了如下特性:
全時態數據模型。資料庫系統通過統一的數據模型管理數據的生命周期,即數據的誕生、修改、消亡的全過程、過程中的狀態變遷操作等。
全時態數據存儲。全時態數據存儲保證了所有狀態數據的永久保存。解決了現有的資料庫系統,大部分只能保存當前數據,而舊版本數據被丟棄的問題。
全時態數據查詢。提供了對時態數據的快速查詢能力,由於歷史數據的數據量級巨大,在海量歷史數據上的查詢能力非常重要。
全時態數據計算。數據都是具有價值的,因此需要具備在海量時態數據上的分析計算能力。
TDSQL 全時態資料庫的意義主要體現在功能和成本兩個方面。從 功能角度 看,TDSQL 全時態資料庫(用 T-TDSQL 表示)可以支持如下功能特性:
精確的歷史數據讀取。可以查詢到對於歷史上任意一個時間段內的數據變化情況,如新插入的數據、連續被更新的數據、以及被刪除的數據。因此可以追蹤數據的歷史軌跡,並能方便的在增量數據的基礎上進行多表連接的增量計算。
資料庫中存儲有數據的歷史狀態信息,數據的安全性得到保證。防止篡改數據、數據誤刪除的恢復、帳戶變化軌跡追蹤、回溯歷史時空裡的「過去的」數據等功能,在 T-TDSQL 中成為現實。
T-TDSQL 管理海量時態數據,因而流水日誌不再重要。基於索引檢索歷史態數據時如同基於索引檢索當前數據一樣的方便快捷且消耗最少量的計算資源,這對於審計、安全、檔案等部門有幫助。另外,HTAC 系統架構提供不受限於單機系統的存儲能力,可以通過分布式網絡文件系統來支持單機無限數據量的存儲。
T-TDSQL 還可以參與到數據關聯分析的環節中,為數據賦予了事務時態、與用戶的關聯關係等,甚至還可以創造數據之間的關聯關係以實現「數據血統」的產生等。
全時態數據為數據安全、數據重演、數據挖掘和 AI 技術的施展提供了物理基礎。
本項目在騰訊 TEG 計費平臺部立項,研究內容和實現過程得到中國人民大學數據工程和知識工程教育部重點實驗室和騰訊公司的參與和支持,特別向項目參與人、支持者表示感謝。
你也「在看」嗎?👇