メタデータとイントロスペクション
メタデータには、データベースオブジェクト、その構造、データベースオブジェクトのソースコードなどに関する情報が含まれています。 DataGrip はこの情報を使用して、 データベースエクスプローラー 内のオブジェクトを表示し、その DDL を表示し、補完時に提案し、その他のコーディング支援、ナビゲーション、検索機能を提供します。
DataGrip では、データベースのメタデータを取得する方法として、minicatalogs と イントロスペクション があります。
- ミニカタログ
システムスキーマのミニカタログを使用すると、システムスキーマのメタデータが事前にイントロスペクトされ、IDE 自体に提供されます。 これにより、システムスキーマをイントロスペクトする前に、データベースに接続することなく、システムメタデータを使用するスクリプトを作成できます。
イントロスペクション
イントロスペクションとは、データベースのメタデータを読み込むプロセスです。 イントロスペクションを実行すると、データソース内の構造情報がインスペクションされ、テーブル、列、ルーチン、その他のデータベースオブジェクトとその属性が検出されます。
イントロスペクションは、データ構造とカタログを持つデータベースでのみサポートされます。
デフォルトでは、 データベースエクスプローラー に表示するために選択されたスキーマとデータベースのみがイントロスペクトされます。
データベースエクスプローラー (⌘ 1) で選択するか、 データソースおよびドライバー ダイアログ (Ctrl+Alt+Shift+S) ダイアログでデータソースプロパティを編集することで、イントロスペクトして表示するスキーマとデータベースを選択できます。
イントロスペクションのスキーマとデータベースを選択する
データベースエクスプローラー の場合:
データベースエクスプローラー を開くには、メインメニューから を選択します。 あるいは、 ⌘ 1 を押します。
データベースエクスプローラー で、データソース、データベース、スキーマ名の横にある N / M ボタンをクリックします。

スキーマ選択ポップアップウィンドウで、データベースまたはスキーマを選択し、 Enter を押します。
データソースおよびドライバー ダイアログの場合:
ダイアログを開くには、 データベースエクスプローラー のデータソースを右クリックし、
プロパティ を選択します。 または、ツールバーの
データソースのプロパティ アイコンをクリックします。
データソースおよびドライバー ダイアログの スキーマ タブで、データベースまたはスキーマを選択します。

オブジェクトフィルター フィールドは、 データベースエクスプローラー で表示されるオブジェクトを定義するだけで、イントロスペクションの範囲には影響しないことに注意してください。
変更を適用してダイアログを閉じます。
必要なデータベースとスキーマがイントロスペクトされると、IDE はスクリプト内のデータベースオブジェクトを適切なコンテキストに解決できるようになります。 以下の例は、イントロスペクトされたスキーマとイントロスペクトされていないスキーマのデータベースオブジェクトの解決方法を示しています。

イントロスペクトされていない
MySQLデータソース。PostgreSQLデータソースのうち、唯一イントロスペクトされたゲストデータベース。 このデータベースには 4 つのスキーマが含まれており、パブリックスキーマのみがイントロスペクトされています。クエリコンソール でのデータベースオブジェクトの解決:イントロスペクトされた
ゲストスキーマの場合は成功し、イントロスペクトされていないテストスキーマの場合は失敗します。
データソースごとに、データベースオブジェクトのソースコードがロードされるスキーマのカテゴリを選択することもできます。
異なるスキーマのデータベースオブジェクトのソースをロードする
データベースオブジェクトのソースがロードされるスキーマを選択するには、 データソースおよびドライバー ダイアログ (Ctrl+Alt+Shift+S) を開き、データソースを選択します。
オプション タブで、 ソースのロード 設定に移動し、スキーマのカテゴリを選択します。
変更を適用して、ダイアログを閉じます。

すべてのオブジェクトが処理されている場合、データベースユーザーはイントロスペクションに長い時間がかかることがありますが、日常業務やコーディング支援では通常、イントロスペクションは必要ありません。 イントロスペクトされるオブジェクトの数を減らすために、DataGrip には追加の イントロスペクションタイプと、一部サポートされているデータベース向けに イントロスペクションレベルも実装されています。
イントロスペクションの問題を報告するためのトラブルシューティング資料の収集の詳細については、 イントロスペクションの問題を報告する セクションを参照してください。
イントロスペクションの種類
イントロスペクションの種類は、イントロスペクション中にリフレッシュされるデータベースオブジェクトを定義します。 一部のデータベースでは、このイントロスペクションの範囲を特定のオブジェクトに絞り込むことができます。 DataGrip では、データベースに応じて、以下のイントロスペクションタイプが利用できます: フルイントロスペクション、 フラグメントイントロスペクション、 増分イントロスペクション。
- フルイントロスペクション
データベースエクスプローラー (スキーマセレクター) または データソースおよびドライバー ダイアログ (スキーマ タブ) でイントロスペクション用に選択されたスキーマとデータベースがリフレッシュされます。
- 増分イントロスペクション
前回のイントロスペクション実行後にデータベース内で変更されたデータベースオブジェクトのみがリフレッシュされます。
- フラグメントイントロスペクション
リフレッシュ アクションを呼び出すと、 データベースエクスプローラー で選択されたデータベースオブジェクトのみがリフレッシュされます。

クエリコンソール でステートメントを実行すると、 スマートリフレッシュのメカニズムが適用されます。 DataGrip は、このステートメントで変更される可能性があるオブジェクトを分析し、特定のオブジェクトだけをリフレッシュします。
サポートされている一部のデータベースでは、 イントロスペクションレベルごとにイントロスペクションを実行できます。
- レベルごとのイントロスペクション
イントロスペクションレベルは、データベースオブジェクトについて取得される詳細の量を定義します。
レベル 1: データベースオブジェクト名のみがロードされます。
レベル 2: データベースオブジェクトのソースコードを除くすべてがロードされます。
レベル 3: すべてがロードされました。
イントロスペクションレベルの詳細については、 イントロスペクションレベル トピックを参照してください。

データベースで特定のイントロスペクションタイプがサポートされていない場合、DataGrip はフルイントロスペクションを実行します。 以下のデータベースでは、特定のイントロスペクションタイプとイントロスペクションレベルがサポートされています。
データベース | 増分イントロスペクション | フラグメントイントロスペクション | イントロスペクションレベル |
|---|---|---|---|
はい | はい | はい | |
はい | はい | - | |
はい | - | - | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい |