NFTScan 成立于 2021 年 4 月,是一個多鏈 NFT 數據基礎設施服務商,截止到 2023 年 1 月份,NFTScan 已經支持了 11 條區(qū)塊鏈網絡,包括 Ethereum、Solana、BNBChain、Moonbeam、Polygon、Arbitrum、Optimism、Avalanche、Fantom、Cronos、PlatON 網絡。
NFTScan 旗下有 2 個核心業(yè)務:NFTScan.COM 多鏈 NFT 數據瀏覽器平臺和 NFTScan OpenAPI 開發(fā)者平臺。NFTScan 主要為 Web3 用戶提供高效簡潔的 NFT 資產搜索查詢服務,以及為 Web3 開發(fā)者和新一代金融科技公司提供專業(yè)的 NFT API 數據服務。
(相關資料圖)
以前的 MySQL 解決方案的挑戰(zhàn)
此前,NFTScan 使用 Amazon Web Services (AWS) 上的 MySQL 和 Elasticsearch 作為其核心數據庫解決方案。MySQL 存儲了所有業(yè)務數據,包括來自 B 端和 C 端用戶的用于分析和處理的數據。其中,NFT 的交易記錄和資產記錄是核心的業(yè)務數據模型,B 端和 C 端的查詢也大部分是圍繞這兩類核心數據展開的。由于 NFT 數據每天都在持續(xù)增長,多維度查詢會存在一些分布不均勻的現象,NFTScan 將 NFT 交易和資產相關數據以全索引方式同步到 Elasticsearch,以近乎全字段索引的方式響應多維度 NFT 數據查詢,從而解決 MySQL 在多維度檢索海量數據方面的性能與效率瓶頸。
該解決方案在使用半年后, NFTScan 逐漸發(fā)現其無法滿足業(yè)務的快速增長,存在以下缺陷:
可擴展性差,存儲和維護成本高。每天新的區(qū)塊鏈數據量急劇增加,但 MySQL 無法自動橫向擴展以應對不斷增加的工作負載。NFTScan 不得不手動對表進行分片并新增 MySQL 的主備集群,來分攤和均衡 CPU 和內存資源的使用,這大大增加了存儲和維護成本。
隨著成本的增加,使用率下降。Elasticsearch 部署在 AWS 上,由于 AWS 原生集群配置的限制,NFTScan不得不增加更多的 Elasticsearch 高配置數據節(jié)點來提供在線查詢服務,這導致成本上升和使用率降低。
反復出現的精度錯誤。Elasticsearch 數據庫更多的是為搜索而設計的,而不是為計算設計,所以在聚合計算中存在精度誤差。
為什么選擇 TiDB?
經過近一個月的調研和測試,NFTScan 最終選擇了 TiDB 來作為核心數據架構,替代原有數據庫系統。NFTScan 研發(fā)團隊在調研中選擇 TiDB 主要有以下幾點考量因素:
高度兼容 MySQL :TiDB 在傳輸協議和 SQL 語法等方面與 MySQL 高度兼容,NFTScan 可以輕松地將數據遷移到 TiDB,MySQL 兼容性大大減少了研發(fā)團隊使用新數據庫的學習成本、時間和精力,同時也能加速數據庫架構的遷移工作;
彈性伸縮:TiDB 采用計算和存儲分離的分布式架構以及底層分布式存儲數據的設計機制,NFTScan 可以根據讀寫流量的實時變化靈活伸縮計算存儲資源,最大限度地提高了資源使用率,并大幅降低了成本;
一體化 HTAP 架構:TiDB 的 HTAP 能力可以同時處理事務和分析工作負載,一套數據庫即可滿足事務型數據庫和分析型數據庫的需求,不僅完美地滿足了 NFTScan 不斷增長的業(yè)務需求,還降低了整體運營成本;
高可用性:TiDB 本身的數據副本同步機制和內置的災備方案,保證了整體數據庫服務的高可用性。
遷移方案
經過兩個月的時間,NFTScan 完成了將底層數據庫系統全部切換到 TiDB 的工作,通過部署 2 臺 TiDB 服務器、9 臺 TiKV 服務器和 2 臺 TiFlash 服務器,并在同一 region 下,跨三個可用區(qū)(AZ) 進行部署,保證了整體架構的高可用性。
截至 2022 年 11 月,NFTScan 的 TiDB 數據庫存儲了大約 6TB 的業(yè)務數據,QPS 達到 5000,平均查詢時長40ms,各種應用在 TiDB 上運行穩(wěn)定。
流暢的遷移體驗
在整個遷移過程中,NFTScan 對 TiDB 的性能與數據遷移的流暢性印象深刻。
TiDB 提供了 Dumpling、TiDB Data Migration (DM) 等一系列數據同步套件,幫助 NFTScan 將歷史數據從 MySQL 遷移到 TiDB。比如 NFTScan 的一些業(yè)務數據是不能直接遷移到 TiDB 的,必須在遷移前先進行調整。在這種情況下,TiDB 的同步工具可以并發(fā)寫入大量數據。在解析存儲實時 NFT 數據時,執(zhí)行效率較之前的存儲方案提升了約 30%。
同時,TiDB 的 online schema update (在線 schema 更新)設計,使得 NFTScan 可以在遷移過程中進行異步更改字段和異步添加索引等數據定義語言 (DDL) 操作,而不會阻塞整個表的讀寫,這大大提高了業(yè)務邏輯調整時數據模式的靈活性。遷移完成后,NFTScan 對 B 端、C 端各類應用程序的數據查詢進行了改造,經過充分調優(yōu)和測試后,逐步將生產環(huán)境的應用全部切換到 TiDB。
用戶收益
TiDB 支持多維實時查詢,查詢時間短。TiDB 完美地滿足了 NFTScan 高吞吐量和低延遲的核心要求。以業(yè)務端的 API 服務為例,平均查詢時間從 10-100 毫秒下降到 10 毫秒或更少。即使處理 1,000 QPS,這樣的查詢速度也能保持穩(wěn)定。
TiDB 的列式存儲引擎 TiFlash ,可以高效地處理分析工作負載。例如,在對某張具有數億行的表執(zhí)行復雜查詢時,可以在幾秒鐘內獲得結果。
TiDB 的智能 SQL 優(yōu)化器可以根據數據的分布情況選擇最具性價比的數據查詢執(zhí)行計劃,讓開發(fā)者可以靈活調整和優(yōu)化 SQL 執(zhí)行計劃。