Data Catalog を使用したリソースの管理

このページでは、Data Catalog を使用して Spanner リソースを検索および管理する方法について説明します。

Data Catalog は、Dataplex 内のフルマネージドでスケーラブルなメタデータ管理サービスです。Spanner インスタンス、データベース、テーブル、列、ビューに関する次のメタデータが自動的にカタログ化されます。

  • 名前と完全修飾名
  • ロケーション(リージョン)
  • 作成日と最終更新日
  • スキーマ(テーブルとビュー用)
  • 説明

Spanner のメタデータは、定期的に(通常は数時間ごとに)自動的に Data Catalog と同期されます。Data Catalog を使用することで、Spanner のメタデータを検出して理解できます。Data Catalog を使用して、次のアクティビティを支援します。

  • ユースケースの依存関係と適合性などの分析
  • チェンジ マネジメント
  • データの移動(パイプライン)
  • スキーマ進化

Data Catalog では、Spanner メタデータ エントリにタグを添付することで、メタデータをキュレートできます。各タグには複数のメタデータ フィールドを含めることができ、事前定義またはカスタムタグ テンプレートに基づいて作成できます。

たとえば、個人を特定できる情報(PII)である社会保障番号を含む列に次のタグを添付できます。

pii:true
pii_type:SSN

タグを使用するインスタンスを移動しても、タグは移動先インスタンスに自動的に移動されません。代わりに、インスタンスを移動する前にソース インスタンスからタグをエクスポートし、そのタグを宛先インスタンスにインポートする必要があります。詳細については、タグのエクスポートとインポートをご覧ください。

Data Catalog の詳細については、Data Catalog とはをご覧ください。

準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. プロジェクトで Data Catalog API を有効にします。

    Data Catalog API の有効化

  7. 権限を確認してください。

    タグを検索して Spanner アセットに添付するには、特定の Identity and Access Management(IAM)のロールと権限が必要です。詳細については、Data Catalog に必要な IAM ロールと権限をご覧ください。

タグ テンプレートを作成する

タグ テンプレートは、新しいタグをすばやく作成するために使用できる再利用可能な構造です。 テンプレートは、作業と不完全なタグの重複を避けるために役立ちます。必要な数のタグ テンプレートを作成します。

詳細については、タグとタグ テンプレートをご覧ください。

Spanner アセットにタグを添付する

Spanner アセットにタグを添付すると、次のことが可能になります。

  • ビジネス メタデータをアセットに追加します。
  • ビジネス メタデータとその他のカスタム メタデータでアセットを検索します。

詳細については、タグとタグ テンプレートをご覧ください。

Spanner アセットを検索する

Google Cloud コンソールの Dataplex の検索ページを使用して、Spanner アセットを検索します。

  1. Dataplex の検索ページに移動します。

    Dataplex に移動

  2. [フィルタ] パネルの [システム] で、[Spanner] を選択します。

    Dataplex によって、既知の Spanner アセットがすべて表示されます。

  3. 省略可: 検索を絞り込むには、次のいずれかを行います。

    • [検索] ページでファセット検索を使用します。[データ型]、[プロジェクト]、[タグ] の下にあるチェックボックスをオンにします。

    • 検索フィールドで、system=cloud_spanner の後に検索パラメータを追加します。パラメータをスペースで区切ります。

    たとえば、データベースのみを表示するには、検索フィールドに次のテキストを入力して、Enter を押します。

     system=cloud_spanner type=database
    

    複雑な式には、かっこと論理演算子 andor を使用することもできます。検索フィールドで使用できる式の詳細については、Data Catalog の検索構文をご覧ください。

  4. 結果の表でアセットの名前をクリックすると、そのアセットのメタデータが表示されます。

  5. 省略可: 必要に応じて次の操作を行います。

    • [概要を追加] をクリックして、アセットの詳細なテキストの説明を追加します。
    • [タグを添付] をクリックして、アセットにタグを追加します。
    • テーブルの [スキーマ] タブをクリックして、テーブル列を表示します。
    • インスタンス(サービス)に対してメンバー データベースを表示するには、[エントリリスト] タブをクリックし、[検索で子エントリを表示] をクリックします。([エントリリスト] タブが表示されない場合、インスタンスにデータベースがありません)。

ワークフローの例 - インスタンスから列へのドリルダウン

このワークフローの例では、まず Spanner インスタンスを検索して、メンバー データベースを表示し、そのデータベースのテーブルを表示してから、テーブル内の列を表示します。

  1. Dataplex の検索ページに移動します。

    Dataplex に移動

  2. [フィルタ] パネルの [システム] で、[Spanner] を選択します。

  3. Data Catalog 内のすべての Spanner インスタンスを表示するには、[データ型] の [サービス] チェックボックスをオンにするか、検索フィールドに次のテキストを入力して Enter キーを押します。

    system=cloud_spanner type=service
    
  4. インスタンス名を選択します。

  5. Spanner サービスの詳細ページで [エントリリスト] タブをクリックし、[検索で子エントリを表示] をクリックします。

    Dataplex がインスタンスのデータベースを表示します。

  6. Spanner データベースの詳細ページで、[エントリリスト] タブをクリックし、[検索で子エントリを表示] をクリックします。

    Dataplex がデータベース内のテーブルを表示します。

  7. テーブル名を選択し、[Spanner テーブルの詳細] ページで、[スキーマ] をクリックしてテーブルの列を表示します。

  8. 省略可: 列にタグを追加するには、[列タグ] のプラス記号をクリックします。

タグをエクスポートまたはインポートする

Spanner インスタンスを移動すると、移動プロセスによって、Data Catalog で作成したインスタンス タグが削除されます。タグを保持するには、次のことを行う必要があります。

  • インスタンスに関連付けられているタグを照会します。
  • タグの詳細をコピーします。
  • 移動されたインスタンスにタグを作成します。

Spanner は 6 時間ごとにデータを同期します。インスタンス、データベース、テーブル、ビュー、列などの Spanner アセットで行われたメタデータの変更は、Data Catalog に反映されるまでに約 6 時間かかります。

ソース インスタンスの構成からタグをエクスポートする

インスタンス(エントリまたはエントリ グループ)のタグを一覧表示するには、次のように Google Cloud CLI の gcloud data-catalog tags list コマンドを使用します。

curl \
'https://datacatalog.googleapis.com/v1/projects/PROJECT/locations/LOCATION/entryGroups/ENTRY_GROUP/tags?key=API_KEY' \
  --header 'Authorization: Bearer ACCESS_TOKEN' \
  --header 'Accept: application/json' \
  --compressed

次のように置き換えます。

  • PROJECT: タグを含むプロジェクト。
  • LOCATION: タグのロケーション。
  • API_KEY: API へのアクセスを可能にする一意の文字列。
  • ACCESS_TOKEN: アプリケーションがサービスを認証するために使用するアクセス トークン。

移行先の構成にタグをインポートする

この手順を行う前に、次のことを行います。

タグをコピーするには、次のように gcloud data-catalog tags create コマンドを使用して、移動したインスタンスにタグを作成します。

curl --request POST \
'https://datacatalog.googleapis.com/v1/entries:lookup?fullyQualifiedName=FQN&location=LOCATION&project=PROJECT&key=API_KEY' \
  --header 'Authorization: Bearer ACCESS_TOKEN' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"column":"myColumnName","name":"myTagName","template":"myTemplateName","fields":{"myDoubleField":{"doubleValue":0}}}' \
  --compressed

次のように置き換えます。

  • FQN: リソースの完全修飾名(FQN)。FQN には次の 2 つの形式があります。

    非リージョン リソースの場合: {SYSTEM}:{PROJECT}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}

    リージョン リソースの場合: {SYSTEM}:{PROJECT}.{LOCATION_ID}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}

    DPMS テーブルの例:

    dataproc_metastore:{PROJECT_ID}.{LOCATION_ID}.{INSTANCE_ID}.{DATABASE_ID}.{TABLE_ID}

  • LOCATION: ルックアップが実行される場所。

  • PROJECT: ルックアップが実行されるプロジェクト。

  • API_KEY: API へのアクセスを可能にする一意の文字列。

  • ACCESS_TOKEN: アプリケーションがサービスを認証するために使用するアクセス トークン。

Data Catalog に必要な IAM ロールと権限

次の表に、さまざまな Data Catalog オペレーションに必要な IAM のロールと権限を示します。

Data Catalog の操作 Spanner リソース 必要なロールまたは権限
タグ テンプレートを作成する なし roles/datacatalog.tagTemplateCreator
Spanner リソースを検索する インスタンス spanner.instances.get
データベース spanner.databases.get
テーブル spanner.databases.get
ビュー spanner.databases.get
公開タグを表示する インスタンス spanner.instances.get
データベース spanner.databases.get
テーブル spanner.databases.get
ビュー spanner.databases.get
非公開タグを表示する Instances datacatalog.tagTemplates.getTag + spanner.instances.get
データベース datacatalog.tagTemplates.getTag + spanner.databases.get
テーブル数 datacatalog.tagTemplates.getTag + spanner.databases.get
ビュー datacatalog.tagTemplates.getTag + spanner.databases.get
タグ テンプレートを使用して、Spanner リソースにタグを付加する Instances datacatalog.tagTemplates.use + spanner.instances.updateTag
データベース datacatalog.tagTemplates.use + spanner.databases.updateTag
テーブル数 datacatalog.tagTemplates.use + spanner.databases.updateTag
ビュー datacatalog.tagTemplates.use + spanner.databases.updateTag

spanner.instances.UpdateTag 権限は、次のロールに含まれています。

  • roles/spanner.admin

spanner.databases.UpdateTag 権限は、次のロールに含まれています。

  • roles/spanner.admin
  • roles/spanner.databaseAdmin
  • roles/spanner.databaseUser

詳しくは、事前定義のロールをご覧ください。

次のステップ