現代のブロックチェーンインデックス構築スタートアップが直面する主な課題は、以下の通りです。
ブロックチェーン技術の普及により、ブロックチェーン上に保存されるデータ量は急増しています。利用者の増加や、各トランザクションごとに新たなデータが追加されることが主な要因です。さらに、ブロックチェーン技術の利用範囲は、Bitcoinのような単純な送金アプリケーションから、スマートコントラクトによるビジネスロジック実装を伴う高度なアプリケーションへと進化しています。こうしたスマートコントラクトは大量のデータを生成し、ブロックチェーンの複雑化と大規模化を促進しています。結果として、ブロックチェーンはより大きく、複雑なシステムへと成長しました。
本記事では、Footprint Analyticsの技術アーキテクチャの進化を段階的に振り返り、Iceberg-Trinoテクノロジースタックがオンチェーンデータの課題をどのように解決するか、ケーススタディとして解説します。
Footprint Analyticsは、約22のパブリックブロックチェーンデータ、17のNFTマーケットプレイス、1,900のGameFiプロジェクト、10万件超のNFTコレクションをセマンティック抽象化データレイヤーにインデックス化しています。これは世界で最も包括的なブロックチェーンデータウェアハウスソリューションです。
ブロックチェーンデータは、200億件を超える金融取引記録を含み、データアナリストによる頻繁なクエリ対象となっています。これは従来のデータウェアハウスのインジェスションログとは異なります。
ここ数カ月間で、成長するビジネス要件に対応するため、3度の大規模アップグレードを実施しました。
Footprint Analyticsの初期段階では、Google Bigqueryをストレージ兼クエリエンジンとして採用していました。Bigqueryは非常に高速で使いやすく、動的な演算能力や柔軟なUDF構文により、迅速な業務遂行を可能にする優れたプロダクトです。
しかし、Bigqueryにはいくつかの課題が存在しました。
こうした課題から、他のアーキテクチャの検討を開始しました。
当時、注目を集めていたOLAP製品に強い関心を持ちました。OLAPの最大の魅力は、膨大なデータに対するクエリ応答時間が非常に短く、数千件の同時クエリもサポートできる点です。
私たちは最良のOLAPデータベースの一つ「Doris」を選定し、試験的に導入しました。このエンジンは高いパフォーマンスを示しましたが、すぐに以下の課題が判明しました:
このため、Dorisを本番環境の全データパイプラインには利用できず、OLAPデータベースとしてデータ生産パイプラインの一部課題解決のために、クエリエンジンとして高速かつ高い同時実行性を提供する用途に限定しました。
BigqueryをDorisで完全に置き換えることはできなかったため、BigqueryからDorisへの定期的なデータ同期が必要となりました。しかし、この同期プロセスには課題があり、特にOLAPエンジンがフロントエンドクライアントへのクエリ応答で多忙な際、更新書き込みがすぐに滞留し、書き込み速度が低下、同期が大幅に遅延し、時には完了できないこともありました。
OLAPは私たちが直面するいくつかの課題を解決できるものの、Footprint Analyticsのデータ処理パイプライン全体における万能解とはならないことを認識しました。私たちの課題はより大きく、複雑であり、OLAPをクエリエンジンとして単独で用いるだけでは十分ではありませんでした。
Footprint Analyticsアーキテクチャ3.0へようこそ。基盤アーキテクチャを全面的に刷新し、データのストレージ・計算・クエリを3つの独立した構成要素に分離しました。これは、Footprint Analyticsの過去2つのアーキテクチャで得た知見や、Uber、Netflix、Databricksなど他の先進的なビッグデータプロジェクトの経験を活かしたものです。
まず注目したのはデータレイクです。データレイクは、構造化・非構造化データの両方を格納できる新しいタイプのデータストレージです。オンチェーンデータのフォーマットは非構造な生データから、Footprint Analyticsが得意とする構造化抽象データまで多岐にわたり、データレイクはオンチェーンデータ保存に最適です。データレイクを活用することでデータ保存の課題を解決し、SparkやFlinkなどの主流計算エンジンもサポートできれば、Footprint Analyticsの進化に合わせて多様な処理エンジンとの統合も容易になると期待しました。
IcebergはSpark、Flink、Trinoなどの計算エンジンと高い親和性を持ち、各種メトリクスごとに最適な計算方式を選択できます。例えば:
Icebergでストレージと計算の課題を解決した後、次はクエリエンジンの選定でした。選択肢は多くなく、検討対象は以下の通りです。
最も重視したのは、将来のクエリエンジンが現行アーキテクチャと高い互換性を持つことでした。
これら要件を踏まえ、Icebergとの親和性が高く、バグ報告にも迅速対応(翌日修正・翌週リリース)してくれるTrinoを選択しました。高い実装レスポンスが求められるFootprintチームにとって、最良の選択肢でした。
方向性を決定した後、Trino + Icebergの組み合わせでパフォーマンステストを実施し、要件を満たすか検証しました。結果は想像を超える高速なクエリ応答でした。
Presto + Hiveが長年OLAP分野で最も低評価だった一方、Trino + Icebergの組み合わせは私たちの予想を大きく上回りました。
以下はテスト結果です。
ケース1:大規模データセットの結合
800GBのtable1と50GBのtable2を結合し、複雑なビジネス計算を実施
ケース2:大規模単一テーブルでdistinctクエリ
テストSQL:select distinct(address) from table group by day

Trino+Icebergの組み合わせは、同一構成下でDorisの約3倍の速度を記録しました。
さらに、IcebergはParquetやORCなどのデータフォーマットを利用したデータ圧縮・保存が可能であり、Icebergのテーブルストレージは他のデータウェアハウスの約1/5のスペースしか使用しません。同一テーブルの3つのデータベースでのストレージサイズは以下の通りです。

注:上記テストは実際のプロダクション環境での個別事例であり、参考値です。
・アップグレード効果
パフォーマンステストで十分な性能を確認できたため、約2カ月で移行を完了しました。以下はアップグレード後のアーキテクチャ図です。

2021年8月のローンチ以来、Footprint Analyticsチームは1年半足らずで3回のアーキテクチャアップグレードを完了しました。これは、最高のデータベース技術の恩恵を暗号資産ユーザーに届けるという強い意志と、基盤インフラ・アーキテクチャの実装・アップグレードにおける確実な遂行力によるものです。
Footprint Analyticsアーキテクチャ3.0へのアップグレードにより、異なるバックグラウンドのユーザーがより多様な用途・アプリケーションでインサイトを得る新たな体験がもたらされました。