[限定提供]{class="badge informative"}

関係スキーマ

AVAILABILITY
Data Mirrorとリレーショナルスキーマは、Adobe Journey Optimizer オーケストレーションキャンペーン​のライセンス保有者が利用できます。 また、ライセンスと機能の有効化に応じて、Customer Journey Analytics ユーザー向けの​ 限定リリース ​としても利用できます。 アクセスについては、Adobe担当者にお問い合わせください。

関係スキーマは、Adobe Experience Platform データレイク内の構造化データを表現するための、柔軟で制御されたモデリングパターンを提供します。 結合スキーマや包括的なリレーショナルデータベースシステムに依存することなく、強制的なプライマリキー、スキーマレベルの関係、レコードの詳細な制御などをサポートします。

IMPORTANT
データ削除に関する考慮事項は、すべてのリレーショナルスキーマ実装に適用されます。 これらのスキーマを使用するアプリケーションは、削除が関連するデータセット、コンプライアンス要件、下流プロセスにどのような影響を与えるかを理解する必要があります。 削除シナリオの計画を立て、実装する前に​ データハイジーンガイダンス ​を確認します。

リレーショナルスキーマを使用すると、次のことが可能になります。

  • 強制された単一フィールドまたは複合プライマリキーを使用して、データの整合性を確保できます。
  • 挿入、更新、削除にバージョン管理を使用した、正確な変更追跡を実現します。
  • 再利用可能なスキーマレベルの関係を定義して、実際のエンティティ接続をモデル化します。
  • 複数のデータモデルをサポートすることで、アプリケーションをまたいでスキーマ構造を重複する必要はありません。
  • 結合スキーマの制約をバイパスして、オンボーディングを合理化し、スキーマの肥大化を減らし、不要なスキーマ変更を回避します。

リレーショナルスキーマと標準XDM スキーマの違い

Experience Platformの標準XDM スキーマは、レコード、時系列、アドホックの3つのデータビヘイビアーのいずれかに従います。 定義と詳細については、XDM データ動作を参照してください。

従来のモデルでは、レコードと時系列のスキーマは結合スキーマ ​に参加します(結合スキーマ UI ガイド ​も参照)。 これらのスキーマは、共有​ フィールドグループ ​が更新され、カスタムフィールドをテナント名前空間の下にネストする必要がある場合に、自動的に進化します。 このモデルは強力ですが、オンボーディングが遅くなったり、未使用のフィールドを含む複雑すぎるスキーマが生成されたり、追加のデータマッピングや変換が必要になったりする可能性があります。 これらの要因により、学習時間と継続的なメンテナンスの労力が増加します。

リレーショナルスキーマは、結合スキーマの依存関係を削除します。これにより、共有フィールドグループからの自動更新が不要になり、テナント名前空間の制限なしに直接フィールド定義を行うことができます。 プライマリキー、関係、初期スキーマ設計などを明示的に制御できるため、作成時のニーズに合わせてデータを容易にモデル化できます。

関係スキーマの機能

ガバナンス、統合性、相互運用性を維持しながら、データレイク内の構造化データをモデル化するために、次の機能を使用します。

  • スキーマ動作のサポート:次で構成する:

    • 行動を記録:顧客、アカウント、キャンペーンなどのエンティティの現在の状態をキャプチャします。
    • 時系列動作: イベントとその発生時間をキャプチャします。シーケンスや変更を経時的に追跡するのに役立ちます。
  • プライマリキーの適用:各レコードを一意に識別し、取り込み中の重複を防ぐためのプライマリキーを定義します。

  • バージョン管理: バージョン識別子 (記述子)を使用して、レコードがシーケンス外に到着した場合でも、更新が正しい順序で適用されるようにします。

  • 関係マッピング:関係スキーマ間または関係スキーマと標準スキーマ間の1対1または多対1の関係を作成します。 関係定義は、効率的な結合を可能にするための記述子として保存されます。

  • 簡略化された進化:関係スキーマは結合ビューに参加せず、共有フィールドグループが変更されたときに更新されないため、予期しない下流の変更が発生しないようにします。

  • 柔軟なフィールド定義: テナント ID名前空間を使用せずにフィールドを直接追加します。 リレーショナルスキーマはXDM フィールドグループをサポートしていません。

  • 結合スキーマへの依存なし: クエリのパフォーマンスを向上させ、グローバル スキーマ ビューの管理の運用オーバーヘッドを削減します。

  • イベント時刻の順序付け:時系列スキーマの場合、タイムスタンプ識別子​を使用して、取り込み時間ではなく発生時間でイベントを順序付けします。

必須フィールド

関係スキーマには、主要な動作と制約を制御するスキーマ定義内のメタデータという、特定の記述子が必要です。 スキーマ定義の一部として、次の記述子を追加します。

プライマリキー記述子

プライマリキー記述子を使用して、各レコードが一意に識別できるようにします。 サポートされる設定は次のとおりです。

  • 単一フィールドのプライマリキー:各レコードに一意の値を持つ1つのフィールドを使用します。
  • 複合プライマリキー:複数のフィールドを使用して一意のIDを形成します。 時系列スキーマの場合、複合キーには、タイムスタンプ記述子で識別されるタイムスタンプフィールドを含める必要があります。
NOTE
UI スキーマエディターでは、バージョン記述子とタイムスタンプ記述子はそれぞれ「​ バージョン識別子」と「​ タイムスタンプ識別子」として表示されます。

例(単一フィールド):

{
  "xdm:descriptor": "xdm:descriptorPrimaryKey",
  "xdm:sourceProperty": "customerId"
}

例(時系列の複合)

{
  "xdm:descriptor": "xdm:descriptorPrimaryKey",
  "xdm:sourceProperty": ["customerId", "eventTimestamp"]
}

バージョン記述子(識別子)

バージョン記述子(識別子)を定義して、正しいレコードの状態を維持し、最新の更新が適用されるようにします。 複数のレコードが同じプライマリキーを共有する場合、バージョン値が最も高いレコードは最新と見なされます。

例:

{
  "xdm:descriptor": "xdm:descriptorVersion",
  "xdm:sourceProperty": "lastModified"
}

タイムスタンプ記述子(識別子)

時系列スキーマの場合は、順序のイベント時間を設定するタイムスタンプ記述子(識別子)を定義します。

例:

{
  "xdm:descriptor": "xdm:descriptorTimestamp",
  "xdm:sourceProperty": "eventTimestamp"
}
NOTE
記述子はスキーマ定義メタデータの一部であり、データ行には保存されません。

スキーマエディターで記述子を作成する方法については、​ スキーマエディターで記述子を作成を参照してください。 API ベースの作成については、APIを使用した記述子の作成を参照してください。

関係サポート relationship-support

関係データモデリングは、関係スキーマの主な用途です。 アプリケーションユースケースでは、これらのスキーマを「関係スキーマ」と呼ぶこともあります。 関係記述子は、外部キーをデータ行に埋め込まずに、スキーマ間でデータセットをリンクすることで、これらの接続を有効にします。 参照整合性を向上させ、再利用可能なモデリングパターンを実現し、アプリケーションをまたいで接続されたクエリをサポートします。

クエリ時の動的解決のために、スキーマレベルで関係記述子を作成します。 基数値(1:1、多対一)はガイダンスを提供しますが、取り込み中に制約を適用することはなく、接続されたデータセット全体で柔軟なデータモデリングをサポートします。

関係記述子を追加する前に、適切なタイプとターゲットを決定します。

  • 1対1 - ソーススキーマ内の各レコードは、宛先スキーマ内の最大1つのレコードに対応します。
  • 多対一 - ソーススキーマ内の複数のレコードが、宛先スキーマ内の同じレコードを参照する場合があります。
NOTE
2つのリレーショナルスキーマ間、またはリレーショナルスキーマと標準スキーマ間の関係を定義できます。 アドホックスキーマとの関係はサポートされていません。

例:1対1の関係

{
  "xdm:descriptor": "xdm:descriptorRelationship",
  "xdm:sourceProperty": "accountId",
  "xdm:destinationSchema": "https://ns.adobe.com/xdm/context/account",
  "xdm:destinationProperty": "accountId"
}

例:多対一の関係

{
  "xdm:descriptor": "xdm:descriptorRelationship",
  "xdm:sourceProperty": "customerId",
  "xdm:destinationSchema": "https://ns.adobe.com/xdm/context/customer",
  "xdm:destinationProperty": "customerId"
}

関係記述子のタイプと構文の一覧については、記述子API リファレンス ​を参照してください。これらの概念を実際に適用する方法については、APIでの関係の定義またはUIでの関係の作成のチュートリアルに従ってください。

NOTE
関係がスキーマレベルで定義される場合は、クエリ内の関連データセットを明示的に結合するようにしてください。 Data Distillerのようなツールを使用して、クエリ時にこのような関係を解決します。
IMPORTANT
関係基数は情報であり、取り込み中に適用されません。 クエリまたは分析中に関係を解決する場合にのみ適用されます。 取り込み中にデータを検証するために基数設定を使用しないでください。 自社でデータを確認してクリーニングし、定義した関係ルールがデータのクエリや分析の方法と一致していることを確認します。
NOTE
リレーショナルスキーマは標準スキーマにリンクできますが、アドホックスキーマにリンクすることはできません。

データの削除と健全性への配慮 data-hygiene-support

関係スキーマは、あらゆるアプリケーションとユースケースに普遍的な影響を与える、正確なレコードレベルの削除を可能にします。 プライマリキー、バージョン、およびタイムスタンプ記述子は、削除処理中に正確なレコードを識別するための基盤を提供します。

普遍的な削除の影響

リレーショナルスキーマを使用するすべてのアプリケーションでは、次のことを考慮する必要があります。

  • 参照整合性:削除は、接続されたデータセット全体の関連レコードに影響を与える可能性があります
  • コンプライアンス要件:一部の業界では、特定の削除動作と監査証跡が必要です
  • アプリケーションの動作:ダウンストリーム システムで削除イベントを適切に処理する必要がある場合があります
  • データの一貫性:関連するデータセットは、削除操作中に一貫性を維持する必要があります
  • 削除計画:設計段階で、接続されているすべてのデータセットとアプリケーションの下流工程の影響を考慮します

実装ガイダンスについては、関係スキーマに基づくデータセットからのレコードの削除を参照してください。

制限と考慮事項 limitations

リレーショナルスキーマを使用する前に、次の制限事項を確認してください。

  • 関係スキーマは、結合スキーマに参加しません。
  • スキーマの進化は手動で行われます。フィールドグループが変更されても自動更新されません。
IMPORTANT
スキーマを使用してデータセットを初期化すると、スキーマの進化が制限されます。 フィールド名とタイプは事前に注意深く計画する必要があります。データを取り込んだ後は、フィールドを削除または変更することはできません。
  • 関係は1対1と多対1に限定されます。
  • ご利用いただけるかどうかは、ライセンスまたは機能のイネーブルメントによって異なります。
  • 時系列スキーマには、複合プライマリキーが必要です。
recommendation-more-help
experience-platform-help-xdm