NFTScan 成立于 2021 年 4 月,是一个多链 NFT 数据基础设施服务商,截止到 2023 年 1 月份,NFTScan 已经支持了 11 条区块链网络,包括 Ethereum、Solana、BNBChain、Moonbeam、Polygon、Arbitrum、Optimism、Avalanche、Fantom、Cronos、PlatON 网络。
NFTScan 旗下有 2 个核心业务:NFTScan.COM 多链 NFT 数据浏览器平台和 NFTScan OpenAPI 开发者平台。NFTScan 主要为 Web3 用户提供高效简洁的 NFT 资产搜索查询服务,以及为 Web3 开发者和新一代金融科技公司提供专业的 NFT API 数据服务。
目前,NFTScan 数据库收录了 100 万+ 个 NFT 合约地址,7 亿多枚 NFT 资产数据,17 亿多链 NFT 链上交互记录。并且这个数字还在以每日 3000 个 NFT 合约地址和 200 万个 NFT 资产的速度在递增。从上述数据可以看出,NFTScan 有着增量大,活跃度高两大特点。这样的业务特点决定了 NFTScan 对数据库技术架构要求极高,需要具备全面、实时、高效等特性,并满足高并发、低延时等需求。选择一个合适的,能满足业务需求的数据存储体系对 NFTScan 来说至关重要。
此前,NFTScan 使用 Amazon Web Services (AWS) 上的 MySQL 和 Elasticsearch 作为其核心数据库解决方案。MySQL 存储了所有业务数据,包括来自 B 端和 C 端用户的用于分析和处理的数据。其中,NFT 的交易记录和资产记录是核心的业务数据模型,B 端和 C 端的查询也大部分是围绕这两类核心数据展开的。由于 NFT 数据每天都在持续增长,多维度查询会存在一些分布不均匀的现象,NFTScan 将 NFT 交易和资产相关数据以全索引方式同步到 Elasticsearch,以近乎全字段索引的方式响应多维度 NFT 数据查询,从而解决 MySQL 在多维度检索海量数据方面的性能与效率瓶颈。
该解决方案在使用半年后, NFTScan 逐渐发现其无法满足业务的快速增长,存在以下缺陷:
经过近一个月的调研和测试,NFTScan 最终选择了 TiDB 来作为核心数据架构,替代原有数据库系统。NFTScan 研发团队在调研中选择 TiDB 主要有以下几点考量因素:
经过两个月的时间,NFTScan 完成了将底层数据库系统全部切换到 TiDB 的工作,通过部署 2 台 TiDB 服务器、9 台 TiKV 服务器和 2 台 TiFlash 服务器,并在同一 region 下,跨三个可用区(AZ) 进行部署,保证了整体架构的高可用性。
截至 2022 年 11 月,NFTScan 的 TiDB 数据库存储了大约 6TB 的业务数据,QPS 达到 5000,平均查询时长 40ms,各种应用在 TiDB 上运行稳定。
在整个迁移过程中,NFTScan 对 TiDB 的性能与数据迁移的流畅性印象深刻。
TiDB 提供了 Dumpling、TiDB Data Migration (DM) 等一系列数据同步套件,帮助 NFTScan 将历史数据从 MySQL 迁移到 TiDB。比如 NFTScan 的一些业务数据是不能直接迁移到 TiDB 的,必须在迁移前先进行调整。在这种情况下,TiDB 的同步工具可以并发写入大量数据。在解析存储实时 NFT 数据时,执行效率较之前的存储方案提升了约 30%。
同时,TiDB 的 online schema update (在线 schema 更新)设计,使得 NFTScan 可以在迁移过程中进行异步更改字段和异步添加索引等数据定义语言 (DDL) 操作,而不会阻塞整个表的读写,这大大提高了业务逻辑调整时数据模式的灵活性。迁移完成后,NFTScan 对 B 端、C 端各类应用程序的数据查询进行了改造,经过充分调优和测试后,逐步将生产环境的应用全部切换到 TiDB。
领取专属 10元无门槛券
私享最新 技术干货