NFTScan x TiDB 一棧式 HTAP 數(shù)據(jù)庫為Web3業(yè)務(wù)提供毫秒級多維查詢 全球時訊

NFTScan 成立于 2021 年 4 月,是一個多鏈 NFT 數(shù)據(jù)基礎(chǔ)設(shè)施服務(wù)商,截止到 2023 年 1 月份,NFTScan 已經(jīng)支持了 11 條區(qū)塊鏈網(wǎng)絡(luò),包括 Ethereum、Solana、BNBChain、Moonbeam、Polygon、Arbitrum、Optimism、Avalanche、Fantom、Cronos、PlatON 網(wǎng)絡(luò)。

NFTScan 旗下有 2 個核心業(yè)務(wù):NFTScan.COM 多鏈 NFT 數(shù)據(jù)瀏覽器平臺和 NFTScan OpenAPI 開發(fā)者平臺。NFTScan 主要為 Web3 用戶提供高效簡潔的 NFT 資產(chǎn)搜索查詢服務(wù),以及為 Web3 開發(fā)者和新一代金融科技公司提供專業(yè)的 NFT API 數(shù)據(jù)服務(wù)。


(相關(guān)資料圖)

以前的 MySQL 解決方案的挑戰(zhàn)

此前,NFTScan 使用 Amazon Web Services (AWS) 上的 MySQL 和 Elasticsearch 作為其核心數(shù)據(jù)庫解決方案。MySQL 存儲了所有業(yè)務(wù)數(shù)據(jù),包括來自 B 端和 C 端用戶的用于分析和處理的數(shù)據(jù)。其中,NFT 的交易記錄和資產(chǎn)記錄是核心的業(yè)務(wù)數(shù)據(jù)模型,B 端和 C 端的查詢也大部分是圍繞這兩類核心數(shù)據(jù)展開的。由于 NFT 數(shù)據(jù)每天都在持續(xù)增長,多維度查詢會存在一些分布不均勻的現(xiàn)象,NFTScan 將 NFT 交易和資產(chǎn)相關(guān)數(shù)據(jù)以全索引方式同步到 Elasticsearch,以近乎全字段索引的方式響應(yīng)多維度 NFT 數(shù)據(jù)查詢,從而解決 MySQL 在多維度檢索海量數(shù)據(jù)方面的性能與效率瓶頸。

該解決方案在使用半年后, NFTScan 逐漸發(fā)現(xiàn)其無法滿足業(yè)務(wù)的快速增長,存在以下缺陷:

可擴(kuò)展性差,存儲和維護(hù)成本高。每天新的區(qū)塊鏈數(shù)據(jù)量急劇增加,但 MySQL 無法自動橫向擴(kuò)展以應(yīng)對不斷增加的工作負(fù)載。NFTScan 不得不手動對表進(jìn)行分片并新增 MySQL 的主備集群,來分?jǐn)偤途?CPU 和內(nèi)存資源的使用,這大大增加了存儲和維護(hù)成本。

隨著成本的增加,使用率下降。Elasticsearch 部署在 AWS 上,由于 AWS 原生集群配置的限制,NFTScan不得不增加更多的 Elasticsearch 高配置數(shù)據(jù)節(jié)點(diǎn)來提供在線查詢服務(wù),這導(dǎo)致成本上升和使用率降低。

反復(fù)出現(xiàn)的精度錯誤。Elasticsearch 數(shù)據(jù)庫更多的是為搜索而設(shè)計(jì)的,而不是為計(jì)算設(shè)計(jì),所以在聚合計(jì)算中存在精度誤差。

為什么選擇 TiDB?

經(jīng)過近一個月的調(diào)研和測試,NFTScan 最終選擇了 TiDB 來作為核心數(shù)據(jù)架構(gòu),替代原有數(shù)據(jù)庫系統(tǒng)。NFTScan 研發(fā)團(tuán)隊(duì)在調(diào)研中選擇 TiDB 主要有以下幾點(diǎn)考量因素:

高度兼容 MySQL :TiDB 在傳輸協(xié)議和 SQL 語法等方面與 MySQL 高度兼容,NFTScan 可以輕松地將數(shù)據(jù)遷移到 TiDB,MySQL 兼容性大大減少了研發(fā)團(tuán)隊(duì)使用新數(shù)據(jù)庫的學(xué)習(xí)成本、時間和精力,同時也能加速數(shù)據(jù)庫架構(gòu)的遷移工作;

彈性伸縮:TiDB 采用計(jì)算和存儲分離的分布式架構(gòu)以及底層分布式存儲數(shù)據(jù)的設(shè)計(jì)機(jī)制,NFTScan 可以根據(jù)讀寫流量的實(shí)時變化靈活伸縮計(jì)算存儲資源,最大限度地提高了資源使用率,并大幅降低了成本;

一體化 HTAP 架構(gòu):TiDB 的 HTAP 能力可以同時處理事務(wù)和分析工作負(fù)載,一套數(shù)據(jù)庫即可滿足事務(wù)型數(shù)據(jù)庫和分析型數(shù)據(jù)庫的需求,不僅完美地滿足了 NFTScan 不斷增長的業(yè)務(wù)需求,還降低了整體運(yùn)營成本;

高可用性:TiDB 本身的數(shù)據(jù)副本同步機(jī)制和內(nèi)置的災(zāi)備方案,保證了整體數(shù)據(jù)庫服務(wù)的高可用性。

遷移方案

經(jīng)過兩個月的時間,NFTScan 完成了將底層數(shù)據(jù)庫系統(tǒng)全部切換到 TiDB 的工作,通過部署 2 臺 TiDB 服務(wù)器、9 臺 TiKV 服務(wù)器和 2 臺 TiFlash 服務(wù)器,并在同一 region 下,跨三個可用區(qū)(AZ) 進(jìn)行部署,保證了整體架構(gòu)的高可用性。

截至 2022 年 11 月,NFTScan 的 TiDB 數(shù)據(jù)庫存儲了大約 6TB 的業(yè)務(wù)數(shù)據(jù),QPS 達(dá)到 5000,平均查詢時長40ms,各種應(yīng)用在 TiDB 上運(yùn)行穩(wěn)定。

流暢的遷移體驗(yàn)

在整個遷移過程中,NFTScan 對 TiDB 的性能與數(shù)據(jù)遷移的流暢性印象深刻。

TiDB 提供了 Dumpling、TiDB Data Migration (DM) 等一系列數(shù)據(jù)同步套件,幫助 NFTScan 將歷史數(shù)據(jù)從 MySQL 遷移到 TiDB。比如 NFTScan 的一些業(yè)務(wù)數(shù)據(jù)是不能直接遷移到 TiDB 的,必須在遷移前先進(jìn)行調(diào)整。在這種情況下,TiDB 的同步工具可以并發(fā)寫入大量數(shù)據(jù)。在解析存儲實(shí)時 NFT 數(shù)據(jù)時,執(zhí)行效率較之前的存儲方案提升了約 30%。

同時,TiDB 的 online schema update (在線 schema 更新)設(shè)計(jì),使得 NFTScan 可以在遷移過程中進(jìn)行異步更改字段和異步添加索引等數(shù)據(jù)定義語言 (DDL) 操作,而不會阻塞整個表的讀寫,這大大提高了業(yè)務(wù)邏輯調(diào)整時數(shù)據(jù)模式的靈活性。遷移完成后,NFTScan 對 B 端、C 端各類應(yīng)用程序的數(shù)據(jù)查詢進(jìn)行了改造,經(jīng)過充分調(diào)優(yōu)和測試后,逐步將生產(chǎn)環(huán)境的應(yīng)用全部切換到 TiDB。

用戶收益

TiDB 支持多維實(shí)時查詢,查詢時間短。TiDB 完美地滿足了 NFTScan 高吞吐量和低延遲的核心要求。以業(yè)務(wù)端的 API 服務(wù)為例,平均查詢時間從 10-100 毫秒下降到 10 毫秒或更少。即使處理 1,000 QPS,這樣的查詢速度也能保持穩(wěn)定。

TiDB 的列式存儲引擎 TiFlash ,可以高效地處理分析工作負(fù)載。例如,在對某張具有數(shù)億行的表執(zhí)行復(fù)雜查詢時,可以在幾秒鐘內(nèi)獲得結(jié)果。

TiDB 的智能 SQL 優(yōu)化器可以根據(jù)數(shù)據(jù)的分布情況選擇最具性價比的數(shù)據(jù)查詢執(zhí)行計(jì)劃,讓開發(fā)者可以靈活調(diào)整和優(yōu)化 SQL 執(zhí)行計(jì)劃。

推薦DIY文章
word中頁邊距怎么設(shè)置 如果要用A4紙打印最好的設(shè)置是什么
win7提示應(yīng)用程序無法正常啟動 如果遇到此應(yīng)用程序錯誤該怎么做
win10系統(tǒng)怎么獲得管理員權(quán)限 系統(tǒng)管理員的名字可以被修改嗎_當(dāng)前滾動
裝了固態(tài)硬盤怎么分區(qū) 有需要的朋友可以了解下這個方法
全球即時:公共DNS有哪些?免費(fèi)公共DNS服務(wù)器地址一覽表 DNS設(shè)置圖文方法來了
怎樣錄屏可以把聲音錄上 推薦下載迅捷屏幕錄像工具進(jìn)行使用
精彩新聞

超前放送