Spanner Graph スキーマを視覚的に作成して管理する

このドキュメントでは、Spanner Studio で Spanner Graph スキーマを視覚的に管理する方法について説明します。ビジュアル モデリングを使用すると、手動で DDL ステートメントを作成する代わりに、直感的なインターフェースでノードとエッジをマッピングできるため、グラフ設計が簡素化されます。この機能を使用すると、設計、理解、他のユーザーとの共同作業が容易になります。また、このアプローチでは Spanner Graph スキーマのベスト プラクティスが自動的に適用されるため、最初から最適化されます。

Spanner Graph スキーマは、DDL で作成および編集することもできます。プロパティ グラフ スキーマの詳細については、Spanner Graph スキーマの概要をご覧ください。プロパティ グラフのスキーマの作成時にエラーが発生した場合は、Spanner Graph のトラブルシューティングをご覧ください。

Spanner Studio でグラフ スキーマを編集する際のエッジの詳細パネル

グラフを作成する

まず、Spanner Studio に移動し、ホームページで [グラフを作成] をクリックします。グラフ モデリング ツールでは、グラフをさまざまな方法で柔軟に構築できます。

  • ゼロから: ビジュアル インターフェースを使用してノードとエッジを完全に設計します。Spanner は、必要な DDL とパフォーマンスを最適化するスキーマ オブジェクトを自動生成します。

  • 既存のテーブルから: 既存のリレーショナル テーブルが相互に接続されている場合は、それらをグラフモデルに直接マッピングします。

  • ハイブリッド アプローチ: 一部の要素をゼロからモデル化し、他の要素を既存のテーブルからマッピングします。

モデルノード

グラフにノードを追加する手順は次のとおりです。

ゼロから作成する

新しいノードを作成すると、Spanner はそのノードのデータベース テーブルを自動的に生成します。ノードのプロパティとキーを定義すると、Spanner はテーブルの列と主キーを構成します。

  1. Spanner Studio でグラフ モデリング キャンバスを開きます。
  2. グラフにノードを追加し、データソースとして [新規] を選択します。
  3. ノードに名前を割り当てます。このノード用に作成されるテーブルは、この値に従って命名されます。
  4. ノードにラベルを割り当てます。デフォルトでは、このラベルはノードの名前に一致しますが、変更できます。
  5. ラベルに関連付けられているプロパティ(名前やデータ型など)を定義します。少なくとも 1 つのプロパティで [要素キーですか?] を選択して、キーとして指定します。null 値を許可しない場合は、[Is not null] を選択します。

既存のテーブルから

ノードを既存のテーブルにマッピングすると、Spanner はテーブルのスキーマを基盤として使用します。ラベル、プロパティ、キーはテーブルから自動的に継承されますが、オーバーライドできます。

  1. Spanner Studio でグラフ モデリング キャンバスを開きます。
  2. グラフにノードを追加し、データソースとして [既存のデータソース] を選択します。
  3. ノードにラベルを割り当てます。デフォルトでは、このラベルはノードの名前に一致しますが、変更できます。
  4. ラベルに関連付けるプロパティを定義します。Spanner は、テーブルの列をプロパティに、主キーを要素キーにマッピングします。この設定は、次のいずれかの方法でカスタマイズできます。
    • 新しいプロパティを作成する: 新しいプロパティを追加します。これにより、Spanner はテーブルに基盤となる列を自動的に作成します。
    • プロパティを削除: このノードに不要なマッピングされた列を削除します。

モデルのエッジ

グラフにエッジを追加する手順は次のとおりです。

ゼロから作成する

エッジを新規に作成すると、基盤となるテーブルが自動的に作成されます。移行元ノードと移行先ノードを定義すると、Spanner は必要な主キーと参照列をバックグラウンドで構成します。

  1. Spanner Studio でグラフ モデリング キャンバスを開きます。

  2. グラフにエッジを追加し、そのデータソースとして [New] を選択します。エッジ名を入力します。

  3. 移行元ノードと移行先ノードを選択します。Spanner は、ソース要素キーと宛先要素キーの識別に必要なプロパティを生成し、それらをエッジのデフォルトの要素キーとして使用します。

    デフォルトでは、Spanner は送信元ノードと宛先ノードの要素キーを使用して各エッジを一意に識別するため、2 つの特定のノード間に存在できるエッジは 1 つだけです。同じ 2 つのノード間に複数のエッジが必要な場合(現実世界でよくあるユースケース)、追加のプロパティを定義し、[要素キー] を選択して、各エッジを一意に保ちます。

  4. エッジにラベルを割り当てます。デフォルトでは、これはエッジの名前に一致します。

  5. エッジの追加プロパティを定義します。

エッジを確定すると、Spanner はエッジ トラバーサルを最適化するために必要な DDL ステートメントを自動的に生成します。詳細については、DDL を確認して生成するをご覧ください。

既存のテーブルから

エッジを既存のテーブルにマッピングすると、Spanner はテーブルのスキーマを基盤として使用します。ラベル、プロパティ、キーはテーブルから自動的に継承されますが、オーバーライドしたり、新しいプロパティを追加したりできます。

  1. Spanner Studio でグラフ モデリング キャンバスを開きます。

  2. グラフにエッジを追加し、データソースとして [既存のテーブル] を選択します。

  3. ソースノードと宛先ノードを選択します。移行元と移行先の参照列を定義します。

  4. エッジにラベルを割り当てます。デフォルトでは、これはエッジの入力テーブル名と一致します。

  5. ラベルに関連付けるプロパティを定義します。Spanner は、テーブルの列をプロパティに、主キーをエッジ要素キーに自動的にマッピングします。この設定は、次の方法で変更できます。

    • 新しいプロパティを作成する: 新しいプロパティを追加します。Spanner は、テーブルに基盤となる列を作成します。
    • プロパティを削除: このエッジに不要なマッピングされた列を削除します。

既存のテーブルから作成されたエッジの場合、Spanner はエッジ トラバーサルを最適化する DDL ステートメントを生成しません。スキーマのベスト プラクティスを参照して、最適化を手動で適用します。

グラフを変更する

既存のプロパティ グラフを Spanner Studio に読み込んで、その構造を更新できます。

  1. オブジェクト エクスプローラで、編集するグラフを見つけて、 [その他のオプション] メニューから [視覚的に表示/変更] を選択します。
  2. 新しいノードまたはエッジをゼロから追加するか、既存のテーブルからマッピングします。
  3. 既存のノードとエッジのプロパティを更新します。基盤となるテーブルで使用可能な列を使用することも、新しいプロパティを追加することもできます。新しいプロパティを追加すると、対応する列が基盤となるテーブルに自動的に追加されます。
  4. グラフ定義からノードまたはエッジを削除します。

DDL を確認して生成する

モデリングが完了すると、Spanner はモデルに基づいて次の DDL ステートメントを生成します。

  • CREATE OR REPLACE PROPERTY GRAPH: グラフ定義を作成または更新します。
  • CREATE TABLE: スクラッチで構築されたノードまたはエッジの基盤となるテーブルを作成します。
  • ALTER TABLE ADD COLUMN: 既存のテーブルからマッピングされたノードまたはエッジに新しいプロパティ列を追加します。
  • ALTER TABLE ADD CONSTRAINT: 順方向エッジ トラバーサルを最適化するために外部キー制約を作成します。
  • CREATE INDEX: リバース エッジ トラバーサルを最適化するために、リバース エッジ インデックスを作成します。

グラフの変更を commit する手順は次のとおりです。

  1. [Generate DDL] ボタンをクリックして、スキーマを生成します。前述の必要な DDL ステートメントが作成されます。
  2. Spanner Studio エディタで、生成された DDL ステートメントを確認します。ステートメントは実行順に正しく並べられており、各スキーマ オブジェクトを説明するコメントが含まれています。手続きに進む前に、すべてのステートメントを編集できます。
  3. ステートメントを実行して、変更をデータベースに commit します。

制限事項

  • 追加変更のみ: 安全のため、このツールは DROP TABLE ステートメントまたは DROP COLUMN ステートメントを生成しません。ノード、エッジ、プロパティを削除すると、PROPERTY GRAPH 定義のみが更新されます。基盤となるテーブルと列は削除されません。
  • サポートされていないスキーマ オブジェクト: このツールは、考えられるすべてのスキーマ オブジェクト、列のデータ型、修飾子を自動的に生成しません。ただし、生成された DDL ステートメントは、コミットする前にエディタで手動で編集できます。
  • 下書きの保存はサポートされていません: グラフをモデル化するときに、ページを閉じると進行状況が保存されません。
  • スキーマレス データはサポートされていません: このツールは、正式な構造のグラフのみを生成します。ユースケースでスキーマレス データが必要な場合は、このスキーマの例を基盤として使用して、スキーマレス データグラフを作成できます。
  • ビューと名前付きスキーマ テーブルはサポートされていません: ノードとエッジを既存のデータソースにマッピングするときに、データベース ビューまたは名前付きスキーマ テーブルをデータソースとして選択することはできません。
  • マッピングされたエッジの制約またはインデックスがない: 既存のテーブルからマッピングされたエッジに対して、外部キー制約または逆エッジ インデックスが生成されません。手動作成については、ベスト プラクティスをご覧ください。

次のステップ