インフラ・DevOps
WalShadow: 物理WALからのPostgresレプリケーションをClickHouseへサブ秒で
WalShadow: Sub-second Postgres replication to ClickHouse from physical WAL (clickhouse.com)
要約
ClickHouseは、Postgresの物理WALストリームを直接読み取り、デコードしてClickHouseネイティブブロックとして書き込むオープンソースエンジン「WalShadow」を発表しました。これにより、PostgresのコミットからClickHouseでの可視化まで約200ミリ秒という低遅延と、毎秒289K行という高スループットを実現します。従来の論理レプリケーションベースのCDCシステムと比較して、運用オーバーヘッドとソースインスタンスへの負荷を大幅に削減します。
全文翻訳
本日、WalShadowを発表します。これは、Postgresデータを物理WALから直接ClickHouseにレプリケートするオープンソースエンジンです。ベンチマークでは、Postgresでコミットされたトランザクションが約200ミリ秒でClickHouseで可視化され、WalShadowは毎秒289K行を維持し、ソースPostgresインスタンスのペースに効果的に追随しました。従来のCDCベースのシステムとは異なり、WalShadowはPostgresの論理レプリケーションを使用しません。Postgresレプリカが使用するのと同じ物理WALストリームを消費し、ソースデータベースの外でデコードし、ClickHouseネイティブブロックを直接ClickHouseに書き込みます。その結果、Postgres物理スタンバイの遅延とスループットに近づき、ClickHouseでの分析にデータが即座に利用可能になるレプリケーションアーキテクチャが実現します。WalShadowは、初期ロード、継続的なレプリケーション、スキーマ進化、再起動リカバリ、計画的なソース切り替えを含む、完全なレプリケーションライフサイクルをサポートします。物理WALを直接消費することにより、WalShadowは論理レプリケーションスロットの必要性を排除し、論理レプリケーションに関連する多くの運用オーバーヘッドを削除し、ソースPostgresインスタンスのリソース消費を大幅に削減します。また、ADD COLUMN、RENAME COLUMN、DROP COLUMN、CREATE TABLEなどの複雑なスキーマ変更もサポートします。WalShadowは完全にオープンソースであり、本日よりGitHubで利用可能です。
ClickHouse Managed PostgresへのWalShadowの提供
完全にマネージドな体験のために、ClickHouse Managed Postgres向けのWalShadowプライベートプレビューも開始します。物理WALはWalShadowのアーキテクチャの鍵ですが、ほとんどのマネージドPostgresサービスは顧客にそれを公開しないため、WalShadowの使用は不可能です。ClickHouse Managed Postgresはスタックの両側を管理するため、WalShadowをPostgresレプリケーションレイヤーに直接統合し、Postgres WALからClickHouseへのネイティブパスを提供できます。ClickHouse Managed Postgres上のWalShadowのプライベートプレビューにサインアップしてください。
アーキテクチャ:物理WALからClickHouseネイティブブロックへ
WalShadowは、PostgresからClickHouseへのレプリケーションに新しいアプローチを取り、ClickHouseを分析用の物理スタンバイに効果的に変えます。WalShadowは、Postgresが物理レプリケーションとリカバリのために生成するのと同じWALストリームを消費します。ソースデータベースに変更を論理イベントにデコードするように要求するのではなく、WalShadowは4つのステージを経てソース外でWALを処理します。
ライブスキーマを追跡します。WalShadowはカタログWALレコードをフィルタリングし、スキーマのみのシャドウPostgresインスタンスにリプレイします。これにより、ソーススキーマが進化するにつれて、テーブル、カラム、Postgresタイプの最新のカタログが維持されます。
データ変更を並列でデコードします。ヒープレコードは、シャドウPostgresインスタンスを通過することなく、Rustベースのデコーダーのプールに分散されます。
ClickHouseネイティブブロックを構築します。バッチャーは、デコードされた行をテーブルごとにグループ化し、中間フォーマット変換なしでデータ忠実性を維持する完全なClickHouseネイティブブロックを作成します。
並列で挿入します。別のインサーターのプールが複数のブロックをClickHouseに並列で書き込み、デコードと挿入が独立してスケーリングできるようにします。これにより、PostgresからClickHouseへの直接パスが作成されます。論理デコード出力プラグイン、Kafka、JSONシリアライゼーション、または個別の正規化ステップは不要です。WalShadowはブロックを並列で処理するため、ClickHouseに到着する順序が前後する可能性があります。WalShadowは、各キーの最新バージョンを保持できるように、ソースWAL位置(_lsn)を各行に添付することで、正確性を維持します。スキーマ変更やトランケーションなど、厳密な順序が必要な操作は、先行するすべてのデータが耐久性を持つまで待機するバリアを導入してから適用されます。ソースは物理WALを送信するだけでよく、これにより、変更が1秒以内にClickHouseに到達することを可能にしながら、物理スタンバイと同様の負荷プロファイルが得られます。アーキテクチャの詳細については、アーキテクチャドキュメントを参照してください。パフォーマンスと機能に影響を与えるさまざまなチューニング設定を理解するには、設定ガイドを参照してください。
パフォーマンスベンチマーク
WalShadowを、ClickPipesを支える論理レプリケーションを搭載した最先端のPostgresからClickHouseへのCDCツールであるPeerDBと比較しました。私にとって、この比較はほろ苦いです。私たちが作成したPeerDBが数千もの顧客にサービスを提供していることを誇りに思っています。WalShadowは、物理WALからのレプリケーションを再考し、PostgresとClickHouseの統合スタックに近づくことで、その旅を前進させます。ベンチマークでは、単一テーブルからの継続的な変更ストリームをレプリケートしました。Postgres、ClickHouse、および各レプリケーションツールは同じリージョンで実行されました。それぞれ8 vCPUを持つ控えめなc8i.2xlargeインスタンスを使用しました。パフォーマンスはワークロードによって異なりますが、これらの結果はWalShadowが提供できるものの有用な指標となります。
約200ミリ秒のコミットから可視化までの遅延
コミットから可視化までの遅延は、Postgresでのトランザクションコミットからその行がClickHouseで可視化されるまでの時間を測定します。ネイティブPostgres物理レプリカは、約50ミリ秒の実用的なベースラインを確立しました。WalShadowは約200ミリ秒を達成しました。一方、PeerDBは約10秒でした。このベンチマークでは約50倍の低遅延です。
毎秒289,000行の持続スループット
ソースPostgresインスタンスは、毎秒約290,000行の挿入を維持し、レプリケーションパイプラインが処理できる最大レートを確立しました。WalShadowは毎秒289,000行をレプリケートし、ボトルネックになることなくソースの速度に効果的に匹敵しました。PeerDBは毎秒約120,000行、つまりソースレートの約40%を維持しました。これらの結果は、低遅延がスループットを犠牲にする必要はないことを示しています。WalShadowは、ソースのほぼ全速で動作しながら、データをリアルタイムに保ちます。
結論とビジョン
ClickHouseでは、PostgresとClickHouseをより近づけるためにいくつかの大きなステップを踏みました。PeerDBの買収、ClickPipesでのPostgres CDCの開始、そして高速OLTPのためのローカルNVMeストレージ上に構築され、高速OLAPのためにClickHouseとネイティブに統合されたエンタープライズグレードのPostgresサービスであるClickHouse Managed Postgresの導入です。これらの取り組みは一つの目標を共有しています。開発者に、Postgresをトランザクションに、ClickHouseを分析に使用できる統合データスタックを、複雑さを追加することなく提供することです。WalShadowは、そのビジョンに向けた重要なマイルストーンを表しています。物理WALから直接ClickHouseネイティブブロックにレプリケートすることにより、サブ秒分析を提供し、論理レプリケーションの運用オーバーヘッドの多くを排除し、従来の論理デコードパイプラインでは処理が難しい高度なスキーマ変更をサポートします。今後数ヶ月間、お客様と協力して、実際のワークロード全体でWalShadowを強化していきます。初期の設計パートナーグループとすでに協力しており、アクセスを拡大する準備が整いました。プライベートプレビューにサインアップしてください。1〜2日以内にアクセスを提供します。WalShadowへのアクセスをリクエストするClickHouse Managed Postgres上のWalShadowのプライベートプレビューにサインアップする。WalShadowは、PostgresとClickHouseをシームレスに連携させるためのいくつかのイニシアチブの1つです。さらに多くの情報にご期待ください。今日からClickHouse Managed Postgresを使い始めるデータでClickHouse Managed Postgresがどのように機能するかを確認することに興味がありますか?数分でClickHouse Cloudの利用を開始し、300ドルの無料クレジットを受け取ってください。サインアップ