论亚马逊QLDB与腾讯TDSQL对历史数据的管理和计算
AWS re: Invent 2018上,AWS CEO Andy Jassy發布了QLDB - Quantum Ledger Database(量子賬本數據庫)[1]。引用Amazon關于QLDB的FAQ[2],QLDB是一款特型數據庫,它能夠提供應用數據全部的歷史變遷。
QLDB與我們之前提出的TDSQL全時態數據庫有些相似,本文分析比較QLDB和TDSQL全時態數據庫的異同。
一、 生產背景
1.1 QLDB產生背景
Andy Jassy提到,QLDB其實已經在AWS中穩定運行了幾年,為EC2、S3等一批大規模服務提供支持,QLDB將所有的數據變化記錄下來,以簡化操作、計費等。
據Andy Jassy說,經過與數百位區塊鏈用戶溝通,AWS發現用戶最迫切的需求有二:中心化可信賬本(ledgers with centralized trust)和去中心化可信事務(transactions with de-centralized trust,本文不討論)。
供應鏈跟蹤、醫保記錄、機動車管理、個人履歷等應用有追溯數據變化的需求,用于記錄這些數據變化的稱為賬本(ledgers),賬本需要可靠、透明、不可更改、加密認證,QLDB即扮演中心化可信賬本的角色。
可見,此次AWS對外發布QLDB,是要將其作為進軍區塊鏈的一大利器(另一為Amazon Managed Blockchain[3],本文不討論)。
?
1.2 TDSQL全時態數據庫的產生背景
TDSQL全時態數據庫產生于騰訊計費業務。據統計,騰訊計費平臺部每天需要對363億獨立賬戶準確無誤地處理,在線交易要求極高的可靠性和準確性,因此,交易監控功能至關重要。
交易監控包括對賬、審計、風控等手段,以對賬為例,通過比對一段時間內的賬戶數據變化和流水數據來定位異常交易。
受限于傳統關系型數據模型和現有數據庫產品的實現,交易監控無法做到實時和精確。再以對賬為例,業界通用做法是:賬戶表按日分表,業務低谷時在當天賬戶表、前天賬戶表、流水表上做計算。此方法的問題在于只能在“天”的粒度上對賬,定位具體的問題交易還要借助其他手段。要細化對賬粒度,精確到異常交易,就需要記錄每一筆交易導致的數據變化。
另外,銀監會規定金融行業的重要數據須保存規定年限[4],深圳市互聯網金融協會要求賬戶信息、資金流水、交易數據等須保存超過15年[5]。
出于以上需求和規定,我們設計了TDSQL全時態數據庫,以管理歷史(后續在全時態模型下稱為歷史態數據)數據,包括了歷史數據的存儲、計算。
?
1.3 小結
QLDB和TDSQL全時態數據庫都誕生于業務、服務于業務:QLDB源于AWS EC2,S3等的內部支持,可作為區塊鏈中心化賬本。
TDSQL全時態數據庫源于互聯網在線交易監控,初衷是提供更精細的監控粒度,但應用場景不限于金融、計費、交易,任何有追溯過往需求的場景均適用。
但是,二者共同之處,在于提供歷史數據的生命周期的管理。這表明,騰訊和Amazon都認識到了歷史數據的價值,并在生產實踐中加以管理和使用。
?
2.數據模型
2.1 QLDB數據模型
2.1.1 QLDB的“賬本”
圖2-1(引用自ref[6])展示了QLDB“賬本”的設計理念,由Current、History和Journal組成:
1.Current:用戶的當前數據,比如,當前銀行賬戶的狀態;
2.History:用戶數據的歷史版本,比如,歷史上的銀行賬戶的狀態;
3.Journal:只可追加、無法修改的日志,存儲序列化的、可密碼驗證的數據變化,比如,銀行賬戶的交易記錄。
?
2.1.2 QLDB文檔數據模型
QLDB以文檔數據模型維護當前和歷史的應用數據,圖2-2(引用自ref[6])是一例,可以看到,QLDB支持嵌套的數據類型,與傳統關系數據模型相比,能夠集中完善地存儲、表現數據。
Journal中日志由兩部分組成:本次數據增量,SHA-256哈希值H(T)。
以圖2-3(引用自ref[6])為例,可以看到,數據增量包括應用數據的變更,以及操作類型、操作時間等元數據。
?
可以發現,QLDB參考區塊鏈,保證所記錄的“賬目”是不可修改的:
1.圖2-3所示,插入操作的日志,其HASH值為數據增量的SHA-256的值;
2.更新或刪除操作的日志,如圖2-4所示,其HASH值由兩部分組成,一是本條日志的數據增量,二是上一條日志的HASH值,如此構成一HASH鏈。
此HASH鏈維系了一個數據項的歷史操作和數據增量。一旦HASH鏈中某一條日志的數據被修改,那么該日志的HASH值會發生變化,之后的日志就無法連接到這條日志,這種機制保證了數據一旦寫入就無法篡改,做到了歷史發生不可修改。
于是QLDB的“賬目”是不可修改、加密認證的。
?
此處,我們簡單對比QLDB和騰訊區塊鏈TBaaS[7]采用的Hyperledger[8]。與QLDB不同,Hyperledger是去中心化的區塊鏈賬本,每個參與者保存一個區塊鏈賬本的副本,所有參與者通過協作共同維護著賬本。
?
4.1 QLDB:How it works節介紹QLDB文檔數據模型如何工作。
2.2 TDSQL全時態數據模型
TDSQL全時態數據是具有全態特性和時態屬性的數據的統稱。
?
2.2.1 TDSQL數據全態
數據在其變遷過程中,處于不同狀態,TDSQL提出將數據狀態劃分為3個階段:
?
1. 當前態(Current State):數據項的最新版本,是處于當前階段的數據。封鎖和MVCC機制下,能被讀取到的最新版本的數據為當前態數據。
?
2. 歷史態(Historical State):數據在歷史上的一個狀態,其值是舊值,而非當前值。一個數據項可以有多個歷史態,反映數據狀態的變遷過程。處于歷史態的數據,只能被讀取而不能再被修改或刪除。
封鎖機制下,更新操作發生后,原更新前的數據版本處于歷史態。MVCC機制下,當前活躍事務列表中最小的事務之前的事務產生的版本處于歷史態。
?
3. 過渡態(Transitional State):既非數據項最新版本,亦非歷史態版本,處于從當前態向歷史態轉變的中間狀態。基于封鎖實現并發控制的系統中不存在過渡態。
MVCC機制下,被讀取的版本上有最新的相關事務使用,因最新的事務修改了數據項的值,其最新值處于當前態,那么被讀取到的版本相對于最新值成為歷史。
而讀取此版本的事務還是活躍的,此版本還不處于歷史態。
這樣一種,從當前態向歷史態過渡的數據,稱為過渡態數據。
數據的當前態、歷史態、過渡態,合稱為數據的全態。
可以看到,QLDB有歷史數據,但沒有把數據的生命周期加以統一模型化管理。
?
2.2.2 TDSQL數據時態
時態,即時態數據庫概念中的時態。
依據時態數據庫理論,參考SQL:2011時態相關準則,TDSQL提供有效時間和事務時間的支持。
有效時間用來表示,數據所表達的事實在現實世界真實有效的這段時間。比如,小明在2000-9-1到2003-7-30上中學,那么“小明上中學”這個事實的有效時間為2000-9-1到2003-7-30。有效時間可用于保險在保、食品保質期等事實。
事務時間用來表示,數據在數據庫系統中發生變化的時間。比如,“小明在2000-9-1到2003-7-30上中學”這條數據在2003-9-1寫入學籍管理系統,2003-9-1是此數據入庫時間。事務時間維系了數據生命周期的時間線。
相比下,QLDB并沒有提供時態支持。
可參考ref[9]了解更多TDSQL時態內容。
?
2.2.3 TDSQL全時態
數據全態和數據時態合稱為TDSQL全時態,全時態刻畫了數據完全的生命周期。TDSQL在全時態概念的基礎上,進一步提出了全時態數據模型的概念,有基礎的全時態(全態+雙時態)數據結構,更有基于全時態的豐富的語義操作。在這一點上,還沒有看到QLDB有更多的信息展示。
另外,數據在變遷過程中所經歷的操作、操作者、操作發生時間等元信息都被維系下來,我們將此稱為數據血統。在TDSQL中,數據每一個版本、每一次操作都由血統維護起來,如此形成更完整的生命周期,此生命周期可以如此表述,即TDSQL能夠幫助用戶了解到:什么人在什么時間做了什么事情,數據項數據變遷的事件是什么。
?
2.3 小結
QLDB和TDSQL全時態數據庫的共同點是,二者都對數據狀態做出區分,QLDB把數據分為當前和歷史兩個狀態,TDSQL提出全態的概念。
QLDB采用文檔數據模型,相比于傳統的關系數據模型,具有支持數據類型更多、靈活性高的特點,關系型數據庫應用和非關系型數據庫應用都可與之對接,代價是模型不同的數據庫系統間數據遷移的復雜性。
TDSQL全時態數據模型是基于關系數據模型的,并包含數據狀態和時態兩個概念,具備更豐富的計算能力。作為全時態數據模型的子集,大量現行的關系型數據庫應用可以輕松遷移。完備的全時態數據模型使得TDSQL在處理歷史數據時更加富有優勢。
3.架構
3.1 QLDB之于Amazon數據庫生態
Andy Jassy展示了Amazon的database freedom,如圖3-1(引用自ref[1]),Amazon提供諸多數據解決方案,涵蓋關系型、K-V、內存等存儲,并包含圖、時序、賬本等特型數據庫,QLDB即特型數據庫之一。
?
QLDB作為Amazon整個數據庫服務生態的一個成員,與RDS、DynamoDB、ElasticCache等產品彼此獨立但緊密合作,互相補充共同構成database freedom。
QLDB如何與其他產品協作,還需等Amazon開放更多資料。
?
3.2 TDSQL全時態數據庫的HTAC架構
圖3-2展示了TDSQL全時態數據庫的HTAC架構,HTAC基于master-slave架構,此架構下全態數據管理方式為:
●?主節點Current存放當前數據,從節點History存放歷史數據;
●?主節點的更新操作引發:
? ?■?當前數據的版本推進;
? ?■?數據的舊版本同步至從節點,追加舊版本到歷史庫;
●?Proxy路由TP請求到主節點,操作當前數據;路由AP請求到從節點,執行全態查詢。
Master-Slave是目前廣泛采用的高可用方案之一,HTAC架構基于此,適用性廣泛。并且,在現有的數據庫服務中增加一備即可承載歷史,避免了重新設計部署數據庫服務。
主、備在物理上分別存放當前、歷史數據,保證數據安全。主節點數據出現問題時,可以使用該從節點的數據快速恢復。另外,當前和歷史數據物理上的隔離,導致TP和AP服務切割,因此可以針對AP業務針對優化此從節點。
在主備間傳輸的歷史數據,是原生數據,而非日志。其優勢在于,避免本地封裝數據,節約計算開銷,盡可能降低對業務系統的影響;避免異地解析日志,同樣節約計算開銷,使得歷史數據快速落地存儲,實時性高。
?
3.3 小結
QLDB是Amazon數據庫生態中的一環,作為RDS等“賬本”的存在,事務在RDS上執行,在QLDB上“入賬”。
TDSQL全時態數據庫采用基于Master-Slave的HTAC架構,在需要追溯歷史的數據庫實例上增加一備,作為歷史數據的存儲即可,避免了額外的系統設計和部署,而且數據安全得到進一步保障,快速恢復觸手可及。另外,節點間傳輸原生數據格式,具有對業務系統影響低、歷史數據落地快、實時性高的優勢。
4.功能
4.1 QLDB:How it works
根據ref[2] FAQ,QLDB支持事務并滿足ACID,并且提供SQL-like的接口。以機動車管理系統為例,圖4-1(引用自ref[6])為QLDB的插入操作,用戶使用SQL-like風格的語句,插入過程如下:
1)首先寫Journal,其數據為文檔數據格式,并計算其SHA-256哈希值也存放在日志中;
2)寫Journal完成,更新Current和History。(圖中以二維表的方式展現數據,但QLDB采用文檔數據模型)
?
圖4-2(引用自ref[6])和圖4-3(引用自ref[6])分別為QLDB更新和刪除操作,類似的,用戶使用SQL-like語句,更新和刪除過程先追加寫Journal,隨后更新Current和History。本質上,這種操作方式,就是“流水日志”,所以歷史數據被“Append”到歷史庫中。而TDSQL天然利用了MVCC中多版本技術,歷史數據自然以原生格式沉淀在數據庫系統中,沒有封裝為流水記錄、沒有重新插入到歷史表中的過程,非常自然和流暢地解決了歷史數據存儲的問題。
更多語義、操作、使用方法等,待Amazon開放更多資料。
?
4.2 TDSQL全時態數據庫功能
我們將TDSQL全時態數據庫的操作稱為全時態操作,全時態操作是傳統關系操作的超集。除傳統關系操作外,全時態操作還提供時態操作和全態操作。
4.2.1 時態操作
TDSQL提供有效時間和事務時間兩種時態語義和操作。
?
有效時間操作:
1.有效時間點查詢、有效時間段查詢;
2.有效時間區間更新、有效時間區間刪除。
?
事務時間操作:
1.獲取某時間點可見的數據;
2.獲取某時間段可見的數據集合;
3.獲取某事務操作的數據版本;
4.獲取事務狀態。
?ref[10]詳細介紹了時態操作的語法語義、內部機制。
?
4.2.2 全態操作
根據作用域不同,全態操作劃分為:
1.當前態數據讀取,作用域為當前態數據,即傳統關系型數據庫操作的作用域;
2.歷史態數據讀取,作用域為歷史態數據,只獲取歷史數據;
3.全態數據讀取,作用域為任意狀態數據。
?
在全態操作中,我們模糊過渡態這一概念。
在以MVCC作為并發控制機制的數據庫系統中,傳統數據讀取操作的作用域為當前態和過渡態。讀取到最新的數據版本即當前態,或如圖4-4 a例,讀已提交(或更高)隔離級別下,事務T1 read獲取數據為T2 write之前的值,即過渡態。
歷史態數據讀取中,獲取過去某時段的數據,很可能取到過渡態數據,如圖4-4 b。
因此,過渡態數據的讀取融于當前態數據讀取和歷史態數據讀取中,根據不同查詢要求和數據的可見性決定過渡態數據查出與否。
?
4.3 小結
Amazon目前開放的資料顯示,QLDB支持ACID事務,提供SQL-like接口。
TDSQL全時態數據庫的功能是完全適用關系型數據庫的SQL操作,沒有自定義一套新接口,方便了用戶的使用。
TDSQL還在時態維度上提供有效時間和事務時間操作,在狀態維度上提供全態數據獲取。
5.應用場景
QLDB和TDSQL全時態數據庫都誕生于內部計費、交易系統,都維系了數據的全生命周期,這樣看來,QLDB和TDSQL適用的場景應該是相似的。
QLDB定位是區塊鏈中心化可信賬本,可見其發力點主要在區塊鏈應用上,比如ref[6]提到的機動車管理、商品生產供應線、職業生涯等。當然,QLDB需要在Amazon的數據庫生態當中發揮作用。
TDSQL全時態數據庫并非針對某一應用方向所設計,所以有全時態數據管理需求的應用都可以使用,比如個人賬戶系統、服務器管理、職業生涯等。因為TDSQL全時態數據庫基于關系數據模型設計,現有關系型數據庫應用都可以方便使用。
6.總結
QLDB和TDSQL表現出Amazon和騰訊認識到了歷史數據的價值,引用TDSQL全時態數據庫的核心價值觀--歷史數據富有價值,核心理念--為數據賦能[11]。
?
下面以表格形式簡要總結QLDB和TDSQL全時態數據庫的異同。TDSQL和其他類似產品的對比,請參考ref[9]。
?
Quantum Ledger Database | TDSQL全時態數據庫 | |
產生背景 | 業務出發 | |
1. AWS內部服務 2. 區塊鏈中心化可信賬本 | 1. 在線交易監控 2. 金融數據留存 | |
數據模型 | 1.數據分為當前和歷史 2.保留數據的全部歷史 | 1.數據分為當前態、過渡態、歷史態 2.雙時態支持 |
文檔數據模型: ? 1.數據類型多,靈活性高 2.關系型/非關系型均可遷移 | 全時態數據模型: 1.維護數據血統和完全的生命周期 2.豐富的計算功能 3.關系型應用輕松遷移 4.非關系型應用遷移相對復雜 | |
架構 | Amazon數據庫生態的“賬本”: ? 1.業務系統使用,需遷移到Amazon數據庫服務 2.業務系統使用,需接入新系統QLDB,并了解操作 | HTAC主備架構: 1.現有數據庫服務的主備架構增加一備即可,無新系統接入,遷移方便 2.當前數據和歷史數據物理隔離,提高數據安全,用于快速回復 3.TP/AP服務隔離,針對優化 4.傳輸原生數據格式,業務影響低,歷史數據落地快,實時性強 |
功能 | 1.SQL-like接口 2.事務ACID | 1.遵循SQL標準 2.事務ACID、日志等傳統關系型數據庫功能 3.時態操作 4.全態操作 |
應用場景 | 1.發力點在區塊鏈應用 2.只在Amazon數據庫生態服務 | 1.任何有全態數據管理需求的應用 2.關系型數據庫應用輕松遷移 |
7.TDSQL關于歷史數據的思考
金融計費領域中,出于數據安全、交易可靠、計費精準等原因,追溯歷史是必要的。在騰訊公司的計費業務中,隨著業務不斷增長,帶有時態屬性的數據被管理的需求日益旺盛。這正是TDSQL全時態數據庫的萌芽,全面、方便地管理金融歷史數據,以便基于歷史數據做大量的計算驗證,進而保證金融數據安全、交易可靠、計費精準。
歷史數據的意義不僅限于金融領域,在地籍管理、電子政務等應用都可大顯身手。事實上,在數據量急速膨脹的今天,任何業務都存在歷史數據管理的需求,然而,現代的數據庫系統只保留數據的當前值,因存儲成本等原因,歷史數據被丟棄。
數據作為重要的資產,不論是當前數據,還是歷史上曾存在過的數據,都具有重要價值。歷史數據的存儲、被分析、被挖掘、被反復使用,是當前互聯網企業的需求,是金融行業的需求,也是數據管理未來的方向。
在歷史數據管理需求日益增長的趨勢下,TDSQL數據工作者提出核心價值觀:歷史數據富有價值,一切過往(數據的歷史和狀態)兼可追溯,并以“為數據賦能”作為核心理念,為用戶提供更可靠、更完善、更精準的數據服務。
References
1.?AWS re:Invent 2018 Keynote - Andy Jassy?
https://youtu.be/ZOIkOnW640A
2.?Amazon Quantum Ledger Database (QLDB)
https://aws.amazon.com/cn/qldb/
3.?Amazon Managed Blockchain?
https://aws.amazon.com/managed-blockchain/
4.?銀行業金融機構信息系統風險管理指引
http://www.cbrc.gov.cn/upload/zwgk/ml3/2/5-2-32.doc
5.?深圳市互金協會對銀監會存管指引的全面解讀
http://www.szifa.org.cn/enrollment_view.aspx?TypeId=121&Id=605
6.?Introduction to Amazon Quantum Ledger Database (QLDB)
https://youtu.be/7G9epn3BfqE
7.?騰訊區塊鏈服務TBaaS?
https://cloud.tencent.com/product/tbaas
8.?Hyperledger
https://www.hyperledger.org/
9.?TDSQL時態數據庫-理論與主流實現
http://blog.itpub.net/31544289/viewspace-2157766/
10.?TDSQL時態數據庫-功能實現
http://blog.itpub.net/31544289/viewspace-2157282/
11.?TDSQL時態數據庫-理念與愿景
http://blog.itpub.net/31540857/viewspace-2155687/
總結
以上是生活随笔為你收集整理的论亚马逊QLDB与腾讯TDSQL对历史数据的管理和计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 首届“腾讯云+社区开发者大会”正在直播!
- 下一篇: AI:你们是不是在等一顶红帽子?