Visual Studio Code の PostgreSQL 拡張機能とは (プレビュー)

Visual Studio Code用の PostgreSQL 拡張機能により、PostgreSQL データベースの管理と開発が簡略化されます。 PostgreSQL データベースへの接続、クエリの記述と実行、データベース オブジェクトの管理をVisual Studio Codeせずに行うことができます。

この拡張機能は、次のようなAzureマネージド PostgreSQL サービスと統合されます。

  • Azure HorizonDB - 階層 1 のエンタープライズ ワークロード用に構築されたクラウドネイティブ PostgreSQL サービス。 HorizonDB には、分離されたストレージ/コンピューティング アーキテクチャ、低待機時間のコミット、高速フェールオーバー、読み取り可能な HA レプリカ間での負荷分散された読み取りスケールアウト、および詳細な AI 統合が備わっています。

同じ拡張機能が両方のサービスに対して機能します。 動作が異なる場合 (接続エンドポイントやサポートされている認証方法など)、以降のセクションで呼び出されます。

拡張機能をインストールする方法

PostgreSQL 拡張機能は、Visual Studio Code の Extensions Marketplace から直接インストールできます。 次の手順に従います。

  1. アクティビティ バーの Extensions アイコンを選択するか、View: Extensions コマンドを使用して、Visual Studio Codeで拡張機能ビューを開きます。
  2. Extensions Marketplace で PostgreSQL を検索します。
  3. Microsoft によって作成された PostgreSQL 拡張機能を選択し、[ インストール] を選択します。

拡張機能をインストールすると、Visual Studio Code サイドバーの PostgreSQL ページを表す象アイコンが表示されます。

Features

Visual Studio Code 用 PostgreSQL 拡張機能では、Azure HorizonDB に対して次の機能が提供されます。

接続マネージャ

接続マネージャーは、ローカルおよびクラウドでホストされている PostgreSQL データベースへの接続を簡略化します。 主な機能は次のとおりです。

  • 複数の接続プロファイルをサポートしているため、複数の PostgreSQL インスタンスに並列で接続して管理できます。これには、Azure HorizonDB クラスターの組み合わせも含まれます。
  • ローカル データベースに接続しているかどうかに関係なく、シームレスな接続のための接続文字列解析、Azure HorizonDB クラスター。
  • Azure HorizonDB との統合により、サブスクリプション、リソース グループ、サーバー/クラスター、データベースによるインスタンスの直接参照とフィルター処理を行います。

Azure HorizonDB の接続エンドポイント

HorizonDB Azure 2 つのエンドポイントが公開されています。このエンドポイントは、拡張機能に個別の接続プロファイルとして追加できます。

  • 読み取り/書き込みエンドポイント - 読み取りトランザクションと書き込みトランザクションの両方を受け付けるプライマリに接続します。 このエンドポイントは、アプリケーションの書き込み、スキーマの変更、および最新のコミット済みデータを必要とする読み取りワークロードに使用します。 エンドポイントは、クラスター Overview ページと、Azure ポータルの Replicas ページに表示されます。
  • リーダー エンドポイント - クラスター内のすべての読み取り可能な HA レプリカ間で読み取り専用接続を自動的に負荷分散します。 このエンドポイントは、読み取りスケールアウト型ワークロード、レポート作成、分析に使用します。 現在、最大 4 つの読み取り可能な HA レプリカがサポートされています (8 個まで増加)。各レプリカのサイズはプライマリと同じです。

一般的なパターンは、読み取り/書き込みエンドポイントを指すプロファイルとリーダー エンドポイントを指すプロファイルの 2 つを接続マネージャーに保存し、手元のタスクに基づいてオブジェクト エクスプローラーでプロファイルを切り替える方法です。

オブジェクト エクスプローラー

拡張オブジェクト エクスプローラーは、データベース オブジェクトの階層ビューを提供し、スキーマ、テーブル、ビュー、および関数の参照と管理を容易にします。 注目すべき機能は次のとおりです。

  • 特定のオブジェクトをすばやく見つけるための高度なフィルター オプション。
  • テーブル、ビュー、ストアド プロシージャなどのデータベース オブジェクトを作成、変更、削除する機能。
  • 合理化されたナビゲーションのためのデータベース スキーマとリレーションシップの視覚化。
  • HorizonDB Azureの場合は、クエリ エディターから直接、pg_available_extensions カタログ ビューを使用して、クラスターで使用可能な 55 以上の許可リストの拡張機能を調べることができます。

クエリ エディター

クエリ エディターでは、次の機能を使用して、クエリの下書きと実行エクスペリエンスが向上します。

  • SQL キーワード、テーブル名、関数のオートコンプリートのためのコンテキスト対応 IntelliSense。
  • クエリの読みやすさを向上するための構文の強調表示とオートフォーマット。
  • クエリ履歴の追跡。以前に実行したクエリを再利用できます。

結果ビューアー

結果ビューアーを使用すると、次のような機能を使用してクエリ結果を操作できます。

  • 結果を CSV、JSON、または Excel の形式にエクスポートする。
  • データを効率的に分析するための検索、フィルター、並べ替えのオプション。
  • タブ間を移動しながらコンテキストを維持するための永続的なデータ ビュー。

スキーマの視覚化

スキーマ ビジュアライザーを使用すると、SQL を記述することなく、データベース構造の対話型のダイアグラム ベースのビューが提供されます。 オブジェクト エクスプローラーでデータベース (またはその下にある任意のオブジェクト) を右クリックし、[スキーマの表示 を選択してビジュアライザーを起動します。

主な機能は次のとおりです。

  • 完全なテーブル ビュー - すべてのテーブルは、その列とデータ型を示すカードとしてレンダリングされます。
  • リレーションシップ ライン - テーブル間の外部キー リレーションシップは接続線として描画されるため、データ モデルがどのように一緒に収まるかを一目で確認できます。
  • スキーマベースの組織 - テーブルは親スキーマ ( publichrecomなど) でグループ化されるため、大規模なデータベース間を簡単に移動できます。
  • スキーマで表示/非表示 を切り替える - スキーマ全体をオンまたはオフに切り替えて、関心のあるモデルの部分のみに集中し、大きなデータベースでダイアグラムを読みやすくします。
  • パンとズーム - 標準のパン、ズーム、画面に合わせたコントロールを使用して、大きな図を移動します。

スキーマの視覚化は、ローカル PostgreSQL や Azure HorizonDB クラスターなど、接続されているすべてのデータベースに対して機能します。

Apache AGE Graph の視覚化

Apache AGE Graph ビジュアライザーを使用すると、Apache AGE Cypher クエリを実行し、対話型のノードエッジ グラフとして結果を探索できます。 この拡張機能は、グラフ クエリの結果を自動的に検出し、ノードごとの吹き出し、ズームコントロールとパン コントロール、エクスポートのサポート、テーマに対応したスタイル設定を使用してビジュアル エクスプローラーに表示します。

age 拡張機能は、Azure HorizonDB で既定で許可一覧に表示されるため、グラフ ワークロードは追加の構成なしで HorizonDB クラスターで実行できます。 HorizonDB に対してCyher クエリを作成する場合も、同じ要件が適用されます。

  • スカラー プロパティではなく、完全なオブジェクトを返す - グラフ ビジュアライザーには、完全な頂点オブジェクトとエッジ オブジェクトが必要です。 スカラー プロパティ (RETURN p.name, p.title) を抽出するクエリはプレーン テキスト値を返し、ビジュアライザーではレンダリングされません。 代わりに、完全なオブジェクトを返し、リレーションシップ変数に名前を付けます。

    SELECT * FROM cypher('my_graph', $$
        MATCH (a:Product)-[r:BOUGHT_TOGETHER]->(b:Product)
        RETURN a, r, b
    $$) AS (a agtype, r agtype, b agtype);
    
  • 意味のあるノード テキストの disp_label を設定 する - disp_labelしない場合、ノードには内部 ID が表示されます。 ビジュアライザーに有用なラベルが表示されるように、このプロパティを設定します。

    SELECT * FROM cypher('my_graph', $$
        MATCH (a:Product)-[r:BOUGHT_TOGETHER]->(b:Product)
        SET a.disp_label = a.title
        SET b.disp_label = b.title
        RETURN a, r, b
    $$) AS (a agtype, r agtype, b agtype);
    
  • 出力列を返されたオブジェクトと一致させる - ラッパー AS (...) 句には、返されるオブジェクトごとに 1 つの列が必要です。 マルチホップ クエリの場合は、すべての中間ノードとエッジを含めます。

    SELECT * FROM cypher('my_graph', $$
        MATCH (a:Product)-[r1:BOUGHT_TOGETHER]->(mid:Product)-[r2:BOUGHT_TOGETHER]->(b:Product)
        RETURN a, r1, mid, r2, b
    $$) AS (a agtype, r1 agtype, mid agtype, r2 agtype, b agtype);
    

AI 統合 (Azure HorizonDB)

この拡張機能は、Azure HorizonDB クラスターに接続すると、HorizonDB の AI 機能のファースト クラスのオーサリング サーフェスを提供します。この機能は、標準の PostgreSQL 拡張機能と関数として公開されます。

  • pgvector
    • ベクター データ型と類似性演算子。
  • pg_diskann
    • 高度なフィルター処理を使用した高性能ベクター インデックス。ベクター グラフトラバーサル中にWHERE述語が評価されるため、フィルター処理された類似性クエリは、より速く一貫して返されます。
  • azure_ai
    • azure_ai.generate()azure_ai.is_true()azure_ai.extract()azure_openai.create_embeddings()などの AI 関数。
  • AI モデル管理 (限定プレビュー)
    • クラスターで有効にすると、HorizonDB は既定のチャット モデル (gpt-5) と既定の埋め込みモデル (text-embedding-3-small) を Microsoft Foundry を介して自動的にプロビジョニングし、azure_ai をインストールして構成し、それらのマネージド モデルに AI Functions を接続します。手動のキー処理は必要ありません。 独自の Microsoft Foundry デプロイ (Bring Your Own Model) を登録し、同じ AI 関数からエイリアスで呼び出すこともできます。

これらの AI ワークロードは、クエリ エディターから直接作成して実行でき、結果ビューアーによってベクターと JSONB の出力がインラインでレンダリングされます。

パイプラインとワークフロー

AI パイプラインまたは pg_durable ワークフローを使用して Azure HorizonDB クラスターに接続すると、拡張機能によってパイプラインと実行履歴を検査し、実行状態を監視するワークフロー ビュー。

データベースを右クリックし、[ パイプライン] と [ワークフロー] を選択してアクセスします。 次の 2 つのタブが表示されます。

  • AI パイプライン: パイプライン定義を表示し、実行を検査し、色分けされたステップの種類 (ソース/シンクの場合は青、処理用は緑、外部呼び出しの場合はピンク) で実行グラフを追跡します。 これを使用して、パイプラインの動作を確認し、実行状態、実行 ID、開始時刻、期間を確認します。
  • ワークフロー: グラフ、タイミング分析、結果のタブを使用して、 pg_durable ワークフロー インスタンスを検査します。 比較とトラブルシューティングのために、ワークフロー実行から関連するパイプライン定義に移動します。

このビューでは、SQL クエリとエディターを切り替える必要がなくなり、実行時間の長い AI ワークロードと pg_durable オーケストレーションを簡単に監視できます。

GitHub Copilot の統合

この拡張機能は GitHub Copilot と統合され、PostgreSQL 開発に合わせた AI 主導の支援を提供します。 @pgsql などのコマンドを使用すると、データベースのクエリを実行し、スキーマを最適化し、Azure HorizonDB クラスターに対して特定の SQL 操作を実行するためのCopilotを要求できます。 Copilot は、ターゲットにインストールされている拡張機能を含むライブ接続コンテキストを把握するため、HorizonDB 接続に対する候補は pgvectorpg_diskannazure_ai、および age を踏まえたものになります。

サポートされるオペレーティング システム

PostgreSQL 拡張機能は、次のオペレーティング システムで動作します。

  • Windows
  • macOS
  • Linux

この拡張機能では、Ubuntu、Fedora、Red Hat Enterprise Linux など、さまざまな Linux ディストリビューションがサポートされています。

フィードバックとサポート

バグ、機能要求、および問題については、Visual Studio Code の組み込みのフィードバック ツールを使用します。 このフィードバックは、Visual Studio Code の [ヘルプ] メニューまたは PGSQL コマンド パレットから完了できます。

  • [ヘルプ] メニュー
    • 問題の報告>ヘルプに移動する
  • コマンド パレット
    • Ctrl + Shift + Pでコマンド パレットを開き、次のコマンドを実行します。PGSQL: Report Issue