スキーマでのキー管理 management-of-keys
データスキーマに関連付けられた各テーブルには、テーブル内のレコードを識別するためのキーが少なくとも 1 つ必要です。 このページでは、Campaign Classic v7 テーブルで使用される自動インクリメンタルキーについて説明します。
Campaign v7 から v8 への移行の一環として、Campaign Classic のドキュメントセットを効率化および再編成しました。 共通機能は、Campaign v8 ドキュメントセットでのみ使用できるようになりました。 キー管理について詳しくは、Campaign v8 ドキュメント を参照してください。
自動インクリメンタルキー auto-incremental-key
ほとんどのAdobe Campaign テーブルの主キーは、データベースエンジンによって自動生成される32 ビットの長い整数です。 キー値の計算は、データベース全体で一意の数値を生成するシーケンス(デフォルトではXtkNewId SQL関数)によって異なります。 キーの内容は、レコードの挿入時に自動的に入力されます。
増分キーの利点は、テーブル間の結合に変更不可能なテクニカルキーを提供できることです。 さらに、このキーは2 バイトの整数を使用するため、メモリをあまり消費しません。
ソーススキーマで、pkSequence属性で使用するシーケンスの名前を指定できます。 この属性がソーススキーマで指定されていない場合、XtkNewIdのデフォルトシーケンスが使用されます。 このアプリケーションは、最も多くのレコードを含むテーブルであるため、nms:broadLogおよびnms:trackingLog スキーマ (NmsBroadLogIdおよびNmsTrackingLogId)に専用シーケンスを使用します。
ACC 18.10以降、XtkNewIdは、標準スキーマのシーケンスのデフォルト値ではなくなりました。 専用のシーケンスを使用して、スキーマを構築したり、既存のスキーマを拡張したりできるようになりました。
Adobe Campaign スキーマで参照されているシーケンス(NmsTrackingLogIdなど)は、パラメーター内のIDの数をコンマで区切って返すSQL関数に関連付ける必要があります。 この関数はGetNew XXX Idsと呼ぶ必要があります。ここで、XXXはシーケンスの名前です(GetNewNmsTrackingLogIds例)。 datakit/nms/eng/sql/ ディレクトリのアプリケーションに付属しているpostgres-nms.sql、mssql-nms.sqlまたはoracle-nms.sql ファイルを表示して、各データベースエンジンの「NmsTrackingLogId」シーケンス作成例を復元します。
一意のキーを宣言するには、データスキーマのメイン要素に autopk 属性(値「true」)を入力します。
例:
ソーススキーマでの増分キーの宣言:
<srcSchema name="recipient" namespace="cus">
<element name="recipient" autopk="true">
...
</element>
</srcSchema>
生成されたスキーマ:
<schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema">
<element name="recipient" autopk="true" pkSequence="XtkNewId" sqltable="CusRecipient">
<dbindex name="id" unique="true">
<keyfield xpath="@id"/>
</dbindex>
<key internal="true" name="id">
<keyfield xpath="@id"/>
</key>
<attribute desc="Internal primary key" label="Primary key" name="id" sqlname="iRecipientId" type="long"/>
</element>
</schema>
キーとそのインデックスの定義に加えて、自動生成されたプライマリキーを格納するために、「id」という数値フィールドが拡張スキーマに追加されました。
詳細情報
詳細については、次のリンクを参照してください。
- スキーマの基本を学ぶ
- スキーマの構造
- データベースマッピング
- リンク管理 (Campaign v8 ドキュメント)
- Campaign データモデル (Campaign v8 ドキュメント)