天天看點

TDSQL原創技術的出發點

TDSQL的原創技術,不是為技術而技術,而是基于業務的需求,為解決業務問題而進行的創新。

騰訊公司的計費業務系統,是世界上領先的金融雲計費業務系統。這個系統包括SAAS、PAAS、IAAS三個層面。在SAAS層面,包括米大師、雲商店、TDSQL等系統。

TDSQL托管賬戶近280億,米大師依托TDSQL進行金融交易,騰訊充值及其相關合作夥伴的日流水量超過150億條,每天處理的交易量超過100億筆。金融資料在TDSQL資料庫中進行結算、對賬、審計、風控資料分析、建構使用者畫像等業務。如王者榮耀遊戲點券的對賬業務、使用者賬戶消費充值變化審計與風控業務等。

要進行諸如對賬、審計等業務,資料來源有兩部分。一部分資料來源是從不同系統(關系資料庫或NoSQL系統)的日志資料中來,稱為流水日志。但某個這樣的系統每天的日志流水資料近百G且從趨勢看增量資料遞增很快。另外,有些資料是在TDSQL中按時間分表,需在一段時間結束後對按時間分表的資料利用流水日志進行對賬計算。

對賬主要是解決幾種異常情況:

  1. 系統存在BUG,或者在故障時,未表現出預期的情況。這可能導緻發貨成功扣款不成功,或者扣款成功未發貨的情況。如騰訊視訊VIP管理系統的充值、發貨。
  2. 規避黑客/内部風險。例如不法人員繞過業務系統去給自己充值等舞弊行為。

這樣的對賬業務種類很多,不同的應用其日志流水格式不完全相同,TDSQL托管的賬戶需要定時對多級數千種業務和賬戶做資料一緻性對賬檢驗。

從技術的角度看,存在四個問題:

  1. 應用開發複雜:使用業務日志,需要業務系統不斷産生日志資訊,然後耗費計算資源對不同的日志格式進行解析,把日志資訊存儲到分析系統。由此帶來了開發的負擔和資源的浪費。
  2. 資料邏輯割裂:TDSQL中按時間分表,隻能按确定的時間段進行結算,不能靈活、友善的計算。如計算任意時間段内的資料,按時間段的分表在實體上割裂了資料按時間的邏輯連續特性,需要指定若幹個特定的分表才能進行計算。
  3. 實時特性丢失:如上兩個問題,隐含地,意味着進行計算的資料需要導入到一個新的分析系統進行計算,導出/導入資料的過程也帶來了資源和時間的消耗、使得分析系統難以具備實時計算特性。
  4. 資料管理複雜:另外,日志等資訊,是曆史态資料,需要長期儲存。在騰訊公司每日對不同格式的、超過150億條流水日志進行生成、存儲、解析與管理等,這成為一個巨大的挑戰。

現代的資料庫系統隻保留有資料的目前值,而因存儲成本等原因,曆史态資料被丢棄。而資料作為重要的資産,不管是目前資料,還是曆史上曾經存在過的資料,都具有重要價值。是以,曆史态資料存儲、被分析、被挖掘、被反複使用,是目前網際網路等企業的需求。尤其是金融類曆史态資料,因為安全、需要被多次計算的原因,在騰訊公司的計費業務中,帶有時态屬性的資料被管理的需求日益旺盛。

基于上述原因,騰訊公司基于TDSQL關系型資料庫研發了時态資料庫 T-TDSQL,由資料庫系統統一管理海量的全時态資料、目前資料,解決了上述四個業務中的問題。

業務痛點的解決,是基于資料庫的特點和業務場景進行深入分析和思考而得以解決的。

因為資料有價值,是以TDSQL團隊認為:曆史資料富有價值。這是TDSQL時态資料庫T-TDSQL的核心價值觀。是以,我們給出了TDSQL對于資料的新的認識。

TDSQL認為:

資料的狀态屬性,辨別資料的生命周期軌迹。資料的生命周期分為三個階段,每個階段刻畫資料的不同狀态屬性,以辨別資料的生命周期軌迹中所處的狀态。

  1. 目前态(Current State):資料項的最新版本的資料,是處于目前階段的資料。處于目前階段的資料的狀态,稱為目前态。
  2. 曆史态(Historical state):資料項在曆史上的一個狀态,其值是舊值,不是目前值。處于曆史階段的資料的狀态,稱為曆史态。一個資料項的曆史态,可以有多個,反映了資料的狀态變遷的過程。處于曆史态的資料,隻能被讀取不能再被修改或删除。
  3. 過渡态(Transitional State):不是資料項的最新的版本也不是曆史态版本,處于從目前态向曆史态轉變的過程中。處于過渡态的資料,稱為半衰資料。

這三個狀态,涵蓋了一個資料項的生命周期,合稱為資料全态(full-state),或稱為全态資料。在MVCC機制下,資料的三種狀态均存在;在非MVCC機制下,資料隻存在曆史态和目前态。

  1. 目前态:MVCC或封鎖并發通路控制機制下,事務送出後的資料的新值處于目前态。
  2. 曆史态:MVCC機制下,目前活躍事務清單中最小的事務之前的事務生成的資料,其狀态處于曆史态。在封鎖并發通路控制機制下,事務送出後,送出前的資料的值變為曆史态的值,即資料項的舊值處于曆史态。
  3. 過渡态:MVCC機制下,被讀取的版本上尚有活躍事務(非最新相關事務)在使用,因最新相關事務修改了資料項的值,其最新值已經處于一個目前态,被讀取到的值相對目前态已經處于一個曆史狀态,故其資料狀态介于目前态和曆史态之間,是以稱為過渡态。

資料的雙時态屬性,分别為有效時間屬性、事務時間屬性。

有效時間屬性表示資料表示的對象在時間屬性上的情況。如Kate中學起止時間是2000-09-01到2003-07-30,而大學起止時間是2003-09-01到2007-07-30,這裡的時間就是有效時間。

事務時間屬性表示資料的某個狀态的時間發生時刻。資料具有其時态屬性,即在何時資料庫系統進行了什麼樣的操作。某項操作在資料庫系統内被封裝為事務,而事務具有原子性。是以,我們采用了事務标志來辨別一個資料的事務時态屬性。

從形式上看,有效時間屬性和事務時間屬性,在資料模型中用普通的使用者自定義字段進行表示,隻是用特定的關鍵字加以描述,供資料庫引擎進行限制檢查和指派。

TDSQL團隊期望,建構一個資料庫系統,解決如上問題,新系統應該提供的特性如下:

TDSQL原創技術的出發點

是以,基于TDSQL的T-TDSQL時态資料庫,有了如下的特性,這些特性,能夠涵蓋雙時态的資料應用、資料安全、資料分析、簡化應用開發等四大方面的問題:

TDSQL原創技術的出發點