ClickHouse / 公式ブログ / 2026/07/15 / 通常
BulletがClickHouse CloudでDeFi分析を5秒以内へ短縮
公式ブログ原文
DeFi取引所Bulletは、毎時1億5,000万行超のイベントをClickHouse Cloudへ取り込み、取引履歴、P&L、ランキング、監視を数秒以内に更新する構成を紹介しました。
要点
- Databricks時代の10〜15秒の問い合わせをミリ秒級へ短縮し、DynamoDBの配信用層を廃止しました。
- データ鮮度は1〜2時間から5秒未満へ改善し、三環境で1,000倍のデータを同程度の費用で処理したとしています。
- Kafkaから専用テーブルへ取り込み、ReplacingMergeTreeで再投入時の重複を除きます。
今回のブログ記事で語られていること
BulletはSolana上のアプリケーション固有ロールアップとして、利用者が資産を自己保管したまま高速取引できる取引所を目指しています。実行系はp50約500マイクロ秒、p99約650マイクロ秒と説明されていますが、ブロックチェーンは状態を進める一方、税務確認に使う過去取引、損益グラフ、監査ログをそのまま高速検索する用途には向きません。そこで取引所が生成するイベントをClickHouse Cloudへ索引化し、利用者向け履歴、24時間出来高やランキング、内部監視の三用途を同じ基盤で扱います。毎分の状態スナップショットはGrafanaへ渡り、SlackとPagerDutyの通知にも使われます。
取り込みはRustのインデクサーからAWS MSKのKafkaへ送り、Redpanda Connectがイベント種別ごとのトピックへ分類し、S3 Glacierにも災害復旧用のコピーを置きます。ClickHouse側ではイベント別テーブルへ直接書き込み、各テーブルを検索項目に合わせて並べます。再試行や再索引で同じイベントが届く問題にはReplacingMergeTreeを使い、イベント番号、取引ハッシュ、時刻から最新版を残します。以前はSpark上の重複排除処理をメモリで回していましたが、再投入してもデータベース側で整合を取りやすい構成へ変わりました。
Databricks時代は問い合わせ準備に時間がかかるため、毎時集計した結果をDynamoDBへ移して画面へ配信していました。P&Lランキングの処理は20〜30分かかり、データが最大90分古くなる場合がありました。ClickHouseではAPIから直接ミリ秒級で問い合わせ、重いランキングもRefreshable Materialized Viewで10分ごとに更新しています。記事は問い合わせを約1万倍、鮮度を5秒未満へ改善し、三環境でデータ量を1,000倍にしながら月額費用は同程度とします。ただし、これはBullet固有の追加専用イベント、問い合わせ、移行前構成による顧客事例です。比較では運用人員、ストレージ圧縮、ピーク取り込み、再計算、障害復旧を含めて測る必要があります。
今回のブログ記事が関係する人
取引・ゲーム・観測データの即時分析を設計するデータ基盤担当、Kafkaから大量イベントを取り込む開発者、Sparkの集計結果を別配信層へ複製しているチームに関係します。
結局、今回のブログ記事をどう読むべきか
単純な速度比較より、履歴保存、即時検索、重複排除、画面配信、監視を一つの列指向基盤へまとめた点が参考になります。自社での価値は、問い合わせ時間だけでなく、別の配信データベースと再計算処理を減らせるかで判断すべきです。