Cortex Code CLI とSnowflake Postgresの使用

Cortex Code CLI Postgresでは、Postgresデータベースについて自然言語で質問し、Cortex Codeを生成して SQL を実行できます。デバッグ、スキーマ探索、軽量分析のために設計されており、すべてのクエリを手動で記述する必要がありません。

インストール、接続設定、一般的なCortex Code CLI の使用法については、 Cortexコード CLI をご参照ください。

このPostgres固有のスキル:

  • Snowflake Postgresインスタンスの作成と管理を支援します。

  • 自然言語の質問をPostgres SQL に変換します。

  • 生成された SQL を構成されたPostgresインスタンスに対して実行します。

  • 短くて判読可能な要約と、任意の生の結果を返します。

  • SnowflakeステージまたはS3バケットを介してPostgresとSnowflake間のオブジェクトストレージおよびデータ移動のための pg_lake を設定できます。

接続の管理

スキルは PostgreSQL のネイティブ ~/.pg_service.conf および ~/.pgpass ファイルを使用して接続を保存し、それらにすべての標準 PostgreSQL クライアント( psql 、pgAdmin、 DBeaver など)と互換性を持たせます。Cortex Codeにインスタンスの作成、または認証情報のリセットを依頼すると、接続は pg_connect.py を介して自動的に保存されます。

警告

チャットやログに .pgpass コンテンツを表示することはありません。すべての認証情報操作に pg_connect.py を使用します。

クエリの実行

接続が保存されると、Cortex Codeはチャットからインスタンスに対して直接 psql コマンドを実行できます。パスワードは ~/.pgpass から自動的に解決されます。自然言語のプロンプトを使うことができます。

  • "Show me all tables on my_instance"

  • "Run a SELECT on the orders table to get the last 10 rows"

  • "What indexes exist on the users table?"

Cortex Codeはこれらを psql コマンドに変換し、インスタンスの準備ができていることを確認し(一時停止された場合は自動再開)、クエリを実行し、結果を表示します。

You:          How many orders were placed this month?
Cortex Code:  Running: psql "service=my_instance" -c \
         "SELECT count(*) FROM orders
          WHERE created >= date_trunc('month', current_date);"

         count
        -------
           142

Cortex Codeは、明示的に求めない限り、書き込み操作を実行しません( INSERTUPDATEDELETEDROPTRUNCATE )。書き込み操作には、続行する前に確認が必要です。

Postgresのヘルスチェック

pg_doctor は、30秒のステートメントタイムアウトが設定された、Postgresインスタンスに対してヘルスチェックを実行する読み取り専用の診断ツールです。

チェック

説明

しきい値

cache_hit

インデックスとテーブルキャッシュのヒット率

合格: >= 99% / 警告:95-99% / 失敗: < 95%

bloat

テーブルとインデックスの肥大化推定

合格:< 30% / Warn: 30-50% / Fail: > 50%

vacuum_stats

デッド行と自動バキュームのステータス

テーブルにバキュームが必要な場合に警告

connections

ロールごとの接続数

情報

locks

保持された排他的ロック

ロックが存在する場合は警告

blocking

ブロックされたクエリ

クエリがブロックされている場合は失敗する

long_running

5分より長く実行されているクエリ

見つかった場合は警告

outliers

上位の遅いクエリ(pg_stat_statements が必要)

情報

unused_indexes

一度もスキャンされていないインデックス

見つかった場合は警告

table_sizes

テーブルサイズの内訳(合計、インデックス、トースト)

情報

結果を提示した後、Cortex Codeはフラグの付いたチェックを説明し、さらに調査することを提案します。何らかの修復アクション( VACUUMREINDEX など)は、実行前の明示的な確認を必要とします。

pg_lakeの設定

pg_lake は、Snowflake PostgresインスタンスでのオブジェクトストレージとS3データの移動を可能にする PostgreSQL 拡張機能です。拡張機能自体の詳細については、 pg_lake用のS3ストレージの構成 をご参照ください。

Cortex Codeのスキルは、SnowflakeステージとSnowflakeの外部で管理されるS3バケットの両方でマルチシステムセットアップを支援します(Snowflake SQL 、 AWS IAM 、Postgres SQL )。Cortex Codeにインタラクティブに設定方法を説明してもらうことができます。

  • "Set up pg_lake on my_instance with s3://my-bucket/data/"

  • "Configure pg_lake with a Snowflake managed stage on my_instance"

承認ゲート

Cortex Codeは、請求可能、破壊的、またはセキュリティセンシティブな操作を実行する前に確認を求めます。

操作

理由

インスタンスの作成/一時停止

請求可能なリソースまたはアクティブな接続のドロップ

ネットワークポリシーの変更

アクセス制御の変更

ストレージ統合の作成/変更

クラウドリソース( ACCOUNTADMIN が必要)

AWS 信頼ポリシーの更新

IAM 権限の変更

ドロップ/破壊的操作

永続的なデータ損失

診断からの書き込み操作

VACUUMREINDEXpg_terminate_backend など。

読み取り専用操作( SHOWDESCRIBE ヘルスチェック、 SELECT クエリ)は承認を必要としません。