- 第1部: NVMe Postgres を使い始め、そのパフォーマンスを体験する
- 第2部: ClickHouse と統合してリアルタイム分析を実現する
- NVMe による高性能を備えた Managed Postgres インスタンスを作成する
- 100 万件のサンプルイベントをロードし、NVMe の速度を実際に確認する
- クエリを実行し、低レイテンシのパフォーマンスを体感する
- リアルタイム分析のためにデータを ClickHouse にレプリケートする
pg_clickhouseを使用して Postgres から ClickHouse に直接クエリを実行する
第1部: NVMe Postgres を始める
データベースを作成する
データベースに接続する
psql の接続文字列をコピーして、データベースに接続します。DBeaver などの Postgres 互換クライアントや、各種アプリケーションライブラリも使用できます。
NVMe のパフォーマンスを体感する
データに対してクエリを実行する
Postgres の準備ができましたこれで、トランザクション処理のワークロードに対応できる、完全に機能する高性能な Postgres データベースを利用できます。第2部 に進み、ClickHouse のネイティブ連携によって分析機能をどのように大幅に強化できるかをご確認ください。
第2部: ClickHouse でリアルタイム分析を追加する
- アプリケーションのトランザクションデータ (挿入、更新、ポイントルックアップ) には Postgres
- 数十億行規模のデータに対するサブ秒レベルの分析には ClickHouse
ClickHouse 連携の設定
重要先に進む前に、選択した ClickHouse サービスが Running になっていることを確認してください。
- レプリケート先の ClickHouse データベースを選択します。
- public スキーマを展開し、先ほど作成した users テーブルと events テーブルを選択します。
- Replicate data to ClickHouse をクリックします。
Postgres から ClickHouse をクエリする
pg_clickhouse 拡張機能を使うと、標準 SQL で Postgres から ClickHouse のデータを直接クエリできます。つまり、アプリケーションは Postgres を、トランザクションデータと分析データの両方に対応する統一的なクエリレイヤーとして利用できます。詳細は、完全なドキュメントを参照してください。
拡張機能を有効にします:
8443 の http ドライバーを使用します。
<clickhouse_cloud_host> は ClickHouse のホスト名に、<database_name> はレプリケーションの設定時に選択したデータベース名に置き換えてください。ホスト名は、サイドバーの Connect をクリックすると ClickHouse サービス で確認できます。
次に、Postgres ユーザーを ClickHouse サービス の認証情報に対応付けます。
<database_name> は、サーバーの作成時に指定したものと同じデータベース名に置き換えてください。
これで、Postgres クライアントですべての ClickHouse テーブルを参照できます。
分析データが反映されていることを確認する
Postgres と ClickHouse のパフォーマンスを比較する
public_<table_name> という命名規則が使われる点に注意してください。
クエリ 1: アクティビティ別の上位ユーザー
このクエリは、複数の集計を使って最もアクティブなユーザーを抽出します。
| Query | Postgres (NVMe) | ClickHouse (via pg_clickhouse) | Speedup |
|---|---|---|---|
| 上位ユーザー (5つの集計) | 555 ms | 164 ms | 3.4x |
| ユーザーエンゲージメント (JOIN + 集計) | 1,246 ms | 170 ms | 7.3x |
クリーンアップ
- まず、ClickHouseサービスから ClickPipe インテグレーションを削除します
- 次に、Cloud Console から Managed Postgres インスタンスを削除します