NFT:NFTScan x TiDB丨一栈式HTAP数据库为Web3数据服务提供毫秒级查询

导读

NFTScan是一家多链NFT数据基础设施服务商,为Web3用户提供高效简洁的NFT资产搜索查询服务,为Web3开发者和新一代金融科技公司提供专业的NFTAPI数据服务。

TiDB作为一种分布式HTAP数据库,可以同时满足海量数据存储和高并发读写的需求,在高可用性、分布式架构、ACID事务支持和实时多维查询等方面,都具备优势,适配Web3行业的场景需求。

NFTScan在快速发展中发现传统的MySQL数据库无法满足业务的快速增长,而TiDB能够提供毫秒级多维查询的能力,为NFTScan提供了更高效的服务,于是选择TiDB作为核心数据架构。本文介绍了NFTScan数据架构面临的挑战、选型的思考、迁移至TiDB的过程以及迁移后获得的收益。一体化的HTAP架构能够替代MySQL+Elasticsearch的能力,成为支撑在线数据服务的最佳选择。

NFTScan成立于2021年4月,是一个多链NFT数据基础设施服务商,截止到2023年1月份,我们已经支持了11条区块链网络,包括Ethereum、Solana、BNBChain、Moonbeam、Polygon、Arbitrum、Optimism、Avalanche、Fantom、Cronos、PlatON网络。

Animoca Brands将于明年初推出基于NFT的自行车:11月8日消息,Animoca Brands宣布与3D打印初创公司Arevo Inc.合作推出一个全新的NFT自行车项目,每辆自行车都有NFT验证,碳纤维车身上也将装饰配套的NFT图像,进一步将数字资产和实物融合,预计将于2023年一季度上市。(Endurance)[2022/11/8 12:33:41]

NFTScan旗下有2个核心业务:NFTScan.COM多链NFT数据浏览器平台和NFTScanOpenAPI开发者平台。NFTScan主要为Web3用户提供高效简洁的NFT资产搜索查询服务,以及为Web3开发者和新一代金融科技公司提供专业的NFTAPI数据服务。

目前,NFTScan数据库收录了100万+个NFT合约地址,7亿多枚NFT资产数据,17亿多链NFT链上交互记录。并且这个数字还在以每日3000个NFT合约地址和200万个NFT资产的速度在递增。从上述数据可以看出,NFTScan有着增量大,活跃度高两大特点。这样的业务特点决定了我们对数据库技术架构要求极高,需要具备全面、实时、高效等特性,并满足高并发、低延时等需求。选择一个合适的,能满足业务需求的数据存储体系对NFTScan来说至关重要。

美国新泽西州提出法案,禁止公职人员接受NFT或虚拟货币礼物:3月19日消息,通过新泽西州大会的一项法案将禁止公职人员接受NFT或其他虚拟货币作为与其角色相关的礼物。

该立法将以防止贿赂和腐败的长期规则为基础。它于周一获得了科学创新技术委员会的批准,尚未安排投票。(哔哔News)[2022/3/19 14:06:05]

此前,NFTScan使用AmazonWebServices(AWS)上的MySQL和Elasticsearch作为其核心数据库解决方案。MySQL存储了所有业务数据,包括来自B端和C端用户的用于分析和处理的数据。其中,NFT的交易记录和资产记录是核心的业务数据模型,B端和C端的查询也大部分是围绕这两类核心数据展开的。由于NFT数据每天都在持续增长,多维度查询会存在一些分布不均匀的现象,NFTScan将NFT交易和资产相关数据以全索引方式同步到Elasticsearch,以近乎全字段索引的方式响应多维度NFT数据查询,从而解决MySQL在多维度检索海量数据方面的性能与效率瓶颈。

DYP创始人以30万美元购买Bored Ape Yacht Club NFT#1112:1月4日消息,DeFi Yield Protocol(DYP)首席执行官兼创始人Mihai Nicusor Busica表示,他于1月3日从Bored Ape Yacht Club系列中以80ETH(304000美元)的价格购买了Bored Ape#1112。据悉,DYP计划于1月17日推出Cats and Watches Society系列NFT,包括10000只具有182种特征的猫,每只猫定价250美元。(globenewswire)[2022/1/4 8:23:09]

该解决方案在使用半年后,我们逐渐发现其无法满足业务的快速增长,存在以下缺陷:

可扩展性差,存储和维护成本高。每天新的区块链数据量急剧增加,但MySQL无法自动横向扩展以应对不断增加的工作负载。我们不得不手动对表进行分片并新增MySQL的主备集群,来分摊和均衡CPU和内存资源的使用,这大大增加了存储和维护成本。

高尔夫球巨星泰格·伍兹将发行1万枚NFT:9月23日消息,本周二,高尔夫球巨星老虎泰格·伍兹宣布推出首个个人NFT系列,旨在记录他整个职业生涯中的 10,000 张数字图像,这些NFT现在可以通过 Tom Brady 的数字纪念品公司 Autograph 购买。伍兹表示,通过发行NFT能让球迷以实惠的价格接近他本人创造的经典时刻。Tom Brady是美国橄榄球巨星,也是一位加密支持者,泰格·伍兹目前还担任Autograph公司的顾问委员会委员一职。[2021/9/23 16:59:59]

随着成本的增加,使用率下降。Elasticsearch部署在AWS上,由于AWS原生集群配置的限制,我们不得不增加更多的Elasticsearch高配置数据节点来提供在线查询服务,这导致成本上升和使用率降低。

反复出现的精度错误。Elasticsearch数据库更多的是为搜索而设计的,而不是为计算设计,所以在聚合计算中存在精度误差。

BW合作伙伴游戏公司NFT游戏上线TokenPocket、bitkeep钱包:据官方消息, BW合作伙伴游戏公司NFT游戏 Journey to the West于5月26日20:00(香港时间)TokenPocket、bitkeep钱包正式开启BSC链盲盒发售,西游记NFT被America Delaware Clouds 并购之后上线币安智能链BSC,并正式开启2.0阶段。

据悉,Journey to the West NFT前期采用卡牌盲盒预售模式,陆续开放卡牌交易市场、卡牌抵押挖矿、LP挖矿等功能。[2021/5/26 22:46:46]

经过近一个月的调研和测试,我们最终选择了TiDB来作为核心数据架构,替代原有数据库系统。NFTScan研发团队在调研中选择TiDB主要有以下几点考量因素:

高度兼容MySQL:TiDB在传输协议和SQL语法等方面与MySQL高度兼容,NFTScan可以轻松地将数据迁移到TiDB,MySQL兼容性大大减少了研发团队使用新数据库的学习成本、时间和精力,同时也能加速数据库架构的迁移工作;

弹性伸缩:TiDB采用计算和存储分离的分布式架构以及底层分布式存储数据的设计机制,NFTScan可以根据读写流量的实时变化灵活伸缩计算存储资源,最大限度地提高了资源使用率,并大幅降低了成本;

一体化HTAP架构:TiDB的HTAP能力可以同时处理事务和分析工作负载,一套数据库即可满足事务型数据库和分析型数据库的需求,不仅完美地满足了NFTScan不断增长的业务需求,还降低了整体运营成本;

高可用性:TiDB本身的数据副本同步机制和内置的灾备方案,保证了整体数据库服务的高可用性。

经过两个月的时间,我们完成了将底层数据库系统全部切换到TiDB的工作,通过部署2台TiDB服务器、9台TiKV服务器和2台TiFlash服务器,并在同一region下,跨三个可用区(AZ)进行部署,保证了整体架构的高可用性。

截至2022年11月,NFTScan的TiDB数据库存储了大约6TB的业务数据,QPS达到5000,平均查询时长40ms,各种应用在TiDB上运行稳定。

流畅的迁移体验

在整个迁移过程中,我们对TiDB的性能与数据迁移的流畅性印象深刻。

TiDB提供了Dumpling、TiDBDataMigration(DM)等一系列数据同步套件,帮助NFTScan将历史数据从MySQL迁移到TiDB。比如NFTScan的一些业务数据是不能直接迁移到TiDB的,必须在迁移前先进行调整。在这种情况下,TiDB的同步工具可以并发写入大量数据。在解析存储实时NFT数据时,执行效率较之前的存储方案提升了约30%。

同时,TiDB的onlineschemaupdate设计,使得NFTScan可以在迁移过程中进行异步更改字段和异步添加索引等数据定义语言(DDL)操作,而不会阻塞整个表的读写,这大大提高了业务逻辑调整时数据模式的灵活性。迁移完成后,NFTScan对B端、C端各类应用程序的数据查询进行了改造,经过充分调优和测试后,逐步将生产环境的应用全部切换到TiDB。

使用收益

TiDB支持多维实时查询,查询时间短。TiDB完美地满足了NFTScan高吞吐量和低延迟的核心要求。以业务端的API服务为例,平均查询时间从10-100毫秒下降到10毫秒或更少。即使处理1,000QPS,这样的查询速度也能保持稳定。

TiDB的列式存储引擎TiFlash,可以高效地处理分析工作负载。例如,在对某张具有数亿行的表执行复杂查询时,可以在几秒钟内获得结果。

TiDB的智能SQL优化器可以根据数据的分布情况选择最具性价比的数据查询执行计划,让开发者可以灵活调整和优化SQL执行计划。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:46ms0-0:550ms