極簡實現 TiDB 冷熱資料分層儲存 | He3 團隊訪談
參加 Hackathon 可以接觸到核心、工具、生態各個領域中志同道合的小夥伴,通過他們的專案學習到非常好的創意。大家的想法都很奇妙,充滿了創新力,在平時的研發過程中,很少能接觸到這些,Hackathon 能夠幫助我們開啟思維,讓我們知道原來 TiDB 還可以這麼玩。 —— He3 團隊
在剛剛收官的 TiDB Hackathon 2021 中, He3 團隊就選擇了冷熱資料分層儲存來降低 TiDB 的儲存成本。他們在設計中將熱資料存放在 TiKV 上,將查詢和分析機率比較少的冷資料存放到便宜通用的雲端儲存 S3,同時使 S3 儲存引擎支援 TiDB 部分運算元下推,實現 TiDB 基於 S3 冷資料的分析查詢。專案獲得了評委的一致好評,力奪本屆賽事的一等獎。
這個專案為後面 TiDB 與 S3 的整合打下不錯的基礎,在這次 Hackathon 驗證了可行性。它的原理其實很簡單,將冷的資料放到 S3,將運算元儘量下推到 S3,通過 S3 原生的 select 功能加速查詢。當然,如果資料已經在 S3,還可以通過 Cloud 上其他的服務,譬如 Athena, 來做更多的查詢聚合操作,加速查詢。這次大家都是在通過 partition 做文章,畢竟根據時間片來分的 partition 是非常常用的一種操作。我們內部現在也在通過 LSM 做一些跟 S3 整合的研究,我還是很期待這些都能在今年看到不少的成果產出。譬如 TiDB Cloud dev tier 叢集就可以完全用這套機制來驗證。
—— 評委唐劉點評
為什麼選擇冷熱資料分層儲存這個方向?
該專案解決了什麼問題?
-
支援建立 S3 外部表; -
支援通過 insert into s3_table select from tikv_table where ... ,把 TiKV 內部表的資料轉儲到 S3 物件儲存上; -
支援通過 insert into tikv_table select from s3_table where ... ,把 S3 外部表的資料轉儲到 TiKV 內部表。
-
內部 TiKV 分割槽表資料轉存到 S3 物件儲存中; -
更改分割槽表後設資料,把 TiKV 內部分割槽錶轉化成 S3 外部表,核心要點保留 S3 外部表和主表的分割槽關係; -
刪除 TiKV 內部分割槽表資料。
-
S3 外部表支援所有的資料型別; -
S3 外部表支援所有的運算元; -
優化 S3 外部表操作效能在使用者可接受的範圍內。
SQL Parser 模組、系統表模組
-
增加一個新的系統表,用於儲存 S3 後設資料, 每一條記錄對應一個 S3 儲存後設資料:包含 S3 的 endpoint, access key, secret key, s3 bucket。insert into mysql.serverobject values("s3object","http://192.168.117.220:9000","minioadmin", "minioadmin","s3bucket"); -
支援建立外部表,相比普通表增加了 s3option 選型,對應 S3 後設資料物件,外部表對應 S3 的儲存路徑:Bucketname/DBName/TableName create table s3_table(id1 int8,id2 char(30)) s3options s3object; -
支援分片表自動轉換成 S3 外部表
執行器模組
-
能夠區分操作表是否是 S3 外部表,如果是外部表,寫入時,資料以 256M 為粒度儲存到 S3 的一個物件中 , 當查詢 S3 外部表時,S3 物件會被以流式的方式裝配到 chunk 中,以支援上層運算元操作; -
支援運算元下推到 S3 節點,利用 S3 節點的計算能力加速 S3 外部表的效能; -
S3 外部表支援所有的資料型別,儲存在 S3 的資料按 S3 外部表的 schema 對應的資料型別儲存到 chunk 裡,相關列都會基於資料型別編碼; -
支援 Alter 實現內部分片表資料自動轉儲到 S3 外部表中,同時保留主表和 S3 外部表的主從關係不變。
優化器模組
來自效能測試的挑戰
He3 在 Hackathon 中的 TPC-H 測試成績
本次參賽的心路歷程
-
通過新的編碼方式以及加速演算法,降低資料在 S3 的儲存容量,基於本次比賽中實現的效果再降低 50% 的儲存容量; -
持續優化 TiDB 對接 S3 的儲存差異效能,在這次比賽的後期,這塊效能每天都有 20% 的效能提升,He3 認為這裡其實還有很大的提升空間; -
進一步簡化使用者的冷熱資料分離方式。對這次專案的最終實現, He3 其實還有一些遺憾,一開始設計的時候他們想過現在冷熱資料分離還需要 DBA 來做一些操作,如果能將這個工作進一步實現自動化操作,就可以讓冷熱資料分離應用性再上一個臺階,不過由於時間比較有限的原因沒能實現。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994146/viewspace-2853904/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TiDB 冷熱儲存分離解決方案TiDB
- Shopee ClickHouse 冷熱資料分離儲存架構與實踐架構
- TiDB Hackathon 2021 — pCloud : 做資料庫上的 iCloud丨pCloud 團隊訪談TiDBCloud資料庫
- TiDB資料儲存TiDB
- 當 TiDB 遇上 Flink:TiDB 高效入湖“新玩法” | TiLaker 團隊訪談TiDB
- Curve 檔案儲存在 Elasticsearch 冷熱資料儲存中的應用實踐Elasticsearch
- 實現報表資料分庫儲存
- ELK冷熱資料分離
- TIDB儲存TiKV的鍵值對資料TiDB
- 只有天空才是你的極限,我們熱愛探索的過程並沉浸其中丨圖資料庫 TiMatch 團隊訪談資料庫
- 熱資料&冷資料
- TiDB 底層儲存結構 LSM 樹原理介紹TiDB
- 【冷熱分離】
- Ti-Click:通過瀏覽器快速搭建 TiDB 線上實驗室 | Ti-可立刻團隊訪談瀏覽器TiDB
- Redis vs Tendis:冷熱混合儲存版架構揭秘Redis架構
- 《資料儲存》之《分庫,分表》
- 談一談資料儲存與物聯網
- MySQL如何實現萬億級資料儲存?MySql
- 美團李凱揭祕資料庫發展三大趨勢 | TiDB Hackathon 評委訪談資料庫TiDB
- 談談資料產品團隊的角色和職責
- 報表資料分庫儲存
- c# 冷儲存示例C#
- newsql新品TiDB之儲存SQLTiDB
- 淺談分散式儲存系統的資料分佈演算法分散式演算法
- 2、JSP實現資料傳遞和儲存JS
- MySQL資料庫儲存引擎簡介MySql資料庫儲存引擎
- 資料倉儲分層你清楚了嗎
- 資料倉儲架構分層設計架構
- 資料倉儲分層概念之我見
- ORACLE PL/SQL 物件、表資料對比功能儲存過程簡單實現OracleSQL物件儲存過程
- DataLeap資料資產實戰:如何實現儲存最佳化?
- AES實現財務資料的加密解密儲存加密解密
- RocketMQ(十):資料儲存模型設計與實現MQ模型
- 如何實現企業雲盤資料化儲存
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- 極簡架構模式-資料訪問物件模式架構模式物件
- docker檔案系統分層儲存原理Docker
- 瀏覽器端儲存資料的終極指南瀏覽器