ClickHouse Managed Postgres は、NVMe ストレージを基盤とするエンタープライズグレードの Postgres サービスです。EBS のようなネットワーク接続型ストレージと比較して、ディスクバウンドなワークロードに対して最大 10 倍高速なパフォーマンスを実現します。このクイックスタートは 2 つのパートに分かれています:イベント用とユーザー用のサンプルテーブルを2つ作成します。それでは、100万件のイベントを挿入して、NVMeの速度を見てみましょう:1,000 人のユーザーを挿入します:JSONB フィルタリングと日付範囲を使用したクエリ:イベントとユーザーを結合する:
次へをクリックすると、テーブルピッカーに移動します。ここで必要な操作は以下のとおりです:次に、ClickHouse への foreign server 接続を作成します。セキュアな接続には、ポート 次に、ClickHouse のテーブルを Postgres のスキーマにインポートします。クエリ 2: 国別・プラットフォーム別のユーザーエンゲージメントこのクエリはイベントとユーザーを結合し、エンゲージメントメトリクスを計算します:パフォーマンス比較:
- 第1部: NVMe Postgres を使い始め、そのパフォーマンスを体感する
- 第2部: ClickHouse と統合してリアルタイム分析を実現する
- NVMe による高性能を備えた Managed Postgres インスタンスを作成
- 100万件のサンプルイベントを読み込み、NVMe の速度を実際に確認
- クエリを実行し、低レイテンシのパフォーマンスを体感
- リアルタイム分析のためにデータを ClickHouse にレプリケート
pg_clickhouseを使用して、Postgres から ClickHouse に直接クエリ
第1部: NVMe Postgres を使い始める
データベースを作成する
新しい Managed Postgres サービスを作成するには、Cloud Console のサービス一覧にある New service ボタンをクリックします。その後、データベースタイプとして Postgres を選択できます。データベースインスタンスの名前を入力し、Create service をクリックします。概要ページに移動します。Managed Postgres インスタンスは 3~5 分で準備が完了し、使用できるようになります。データベースに接続する
左側のサイドバーに Connect ボタン が表示されます。クリックすると、接続の詳細と複数のフォーマットの接続文字列を確認できます。psql の接続文字列をコピーして、データベースに接続します。DBeaver などの Postgres 互換クライアントや、任意のアプリケーションライブラリを使用することもできます。NVMe のパフォーマンスを体感する
NVMe によるパフォーマンスを実際に確認してみましょう。まず、クエリの実行時間を測定できるよう、psql でタイミング計測を有効にします。データに対してクエリを実行する
それでは、NVMe ストレージを使用した場合に Postgres がどれほど高速に応答するか、いくつかのクエリを実行して確認してみましょう。100万件のイベントをタイプ別に集計する:Postgres の準備が整いましたこの時点で、トランザクションワークロードに対応できる、高性能で完全に機能する Postgres データベースが利用可能になっています。第2部に進み、ネイティブな ClickHouse 連携が分析性能をどのように大幅に高めるかをご覧ください。
第2部: ClickHouse でリアルタイム分析を追加する
Postgres はトランザクション系ワークロード (OLTP) に優れている一方、ClickHouse は大規模データセットに対する分析クエリ (OLAP) に特化して設計されています。両者を統合することで、それぞれの長所を最大限に活かすことができます:- アプリケーションのトランザクションデータ (挿入、更新、ポイントルックアップ) には Postgres
- 数十億行規模のデータに対するサブ秒の分析には ClickHouse
ClickHouse 連携のセットアップ
Postgres にテーブルとデータが揃ったので、分析のためにテーブルを ClickHouse にレプリケートしましょう。まず、サイドバーの ClickHouse 連携 をクリックします。次に、Replicate data in ClickHouse をクリックします。次のフォームでは、インテグレーションの名前を入力し、レプリケート先となる既存の ClickHouse インスタンスを選択できます。ClickHouse インスタンスをまだお持ちでない場合は、このフォームから直接作成することもできます。重要次に進む前に、選択した ClickHouse service が Running 状態であることを確認してください。
- レプリケート先の ClickHouse データベースを選択します。
- public スキーマを展開し、先ほど作成した users テーブルと events テーブルを選択します。
- Replicate data to ClickHouse をクリックします。
Postgres から ClickHouse をクエリする
pg_clickhouse 拡張機能を使用すると、Standard SQL を使って Postgres から直接 ClickHouse のデータをクエリできます。これにより、アプリケーションはトランザクションデータと分析データの両方に対して、Postgres を統合クエリレイヤーとして利用できます。詳細については、完全なドキュメントを参照してください。拡張機能を有効にします:8443 を使用する http ドライバーを指定します:<clickhouse_cloud_host> をご使用の ClickHouse のホスト名に、<database_name> をレプリケーション設定時に選択したデータベース名に置き換えてください。ホスト名は、サイドバーの Connect をクリックすることで ClickHouse サービス上で確認できます。次に、Postgres ユーザーを ClickHouse サービスの認証情報にマップします:<database_name> には、サーバーの作成時に使用したデータベース名と同じ名前を指定してください。これで、Postgres クライアントですべての ClickHouse テーブルを確認できます:分析機能を実際に確認する
インテグレーションページに戻って確認してみましょう。初期レプリケーションが完了していることが確認できるはずです。詳細を表示するには、インテグレーション名をクリックしてください。サービス名をクリックして ClickHouse コンソールを開き、レプリケートテーブルを確認します。Postgres と ClickHouse のパフォーマンスを比較する
次に、いくつかの分析クエリを実行して、Postgres と ClickHouse のパフォーマンスを比較してみましょう。なお、レプリケートテーブルはpublic_<table_name> という命名規則を使用します。クエリ 1: アクティビティ別上位ユーザーこのクエリは、複数の集計を用いて最もアクティブなユーザーを見つけます。クリーンアップ
このクイックスタートで作成したリソースを削除するには:- まず、ClickHouse サービスから ClickPipe インテグレーションを削除します
- 次に、Cloud Console から Managed Postgres インスタンスを削除します