なぜ Postgres ではなく ClickHouse を使うのですか?
GROUP BY クエリ向けに設計された OLAP データベースである一方、Postgres はトランザクションワークロード向けに設計された OLTP データベースだからです。
OLTP、すなわちオンライン・トランザクション処理データベースは、トランザクション情報を管理するために設計されています。これらのデータベースの主な目的は、Postgres がその代表例ですが、エンジニアがデータベースに一連の更新を送信したとき、それが全体として必ず成功するか失敗するかのいずれかになることを保証することです。こうした ACID 特性を備えたトランザクション保証は、OLTP データベースの中心的な特長であり、Postgres の大きな強みでもあります。こうした要件があるため、OLTP データベースは大規模なデータセットに対する分析クエリに使うと、一般にパフォーマンス上の限界にぶつかります。
OLAP、すなわちオンライン分析処理データベースは、そうしたニーズ、つまり分析ワークロードを扱うために設計されています。これらのデータベースの主な目的は、エンジニアが膨大なデータセットに対して効率的にクエリを実行し、集計できるようにすることです。ClickHouse のようなリアルタイム OLAP システムでは、データがリアルタイムに取り込まれるのと同時に、この分析を行えます。
ClickHouse と PostgreSQL のより詳しい比較については、こちらを参照してください。
分析クエリにおける ClickHouse と Postgres の性能差の可能性を確認するには、Rewriting PostgreSQL Queries in ClickHouseを参照してください。
移行戦略
リアルタイムレプリケーション (CDC (変更データキャプチャ) )
手動による一括ロード + 定期的な更新
INSERT コマンドを直接実行するか、CSVファイルをエクスポートしてインポートすることで、PostgreSQL から ClickHouse へデータを一括でロードします。初回の移行後は、一定間隔で PostgreSQL から変更を同期することで、ClickHouse 内のデータを定期的に更新できます。
一括ロードのプロセスはシンプルで柔軟ですが、リアルタイムで更新されないという欠点があります。初期データを ClickHouse に取り込んだ後も、更新内容はすぐには反映されないため、PostgreSQL からの変更を同期する定期更新をスケジュールする必要があります。この方法は、時間の厳密さがそれほど求められないユースケースには適していますが、PostgreSQL でデータが変更されてから、その変更が ClickHouse に反映されるまでに遅延が生じます。
どの戦略を選ぶべきですか?
PostgreSQL 移行ガイドはこちらから開始します.