分散アーキテクチャ distributed-architectures
原則 principle
スケーラビリティをサポートし、24 時間 265 日のサービスをインバウンドチャネルに提供するために、インタラクションを分散アーキテクチャと組み合わせて使用できます。このタイプのアーキテクチャは、Message Center で既に使用されており、複数のインスタンスで構成されます。
- アウトバウンドチャネル専用で、マーケティングおよび環境のデザインベースを含む、1 つまたは複数のコントロールインスタンス
- インバウンドチャネル専用の、1 つまたは複数の実行インスタンス
提案の同期 proposition-synchronization
オファーの同期は、パッケージで実行されます。実行インスタンスでは、すべてのカタログオブジェクトに、外部アカウント名のプレフィックスが付加されます。これは、同じ実行インスタンスで複数のコントロールインスタンス(例:開発用インスタンスと本番用インスタンス)をサポートできることを意味します。
オファーは、自動的にデプロイされてから、実行インスタンスおよびコントロールインスタンスにパブリッシュされます。
デザイン環境で削除されたオファーは、すべてのオンラインインスタンスで無効化されます。不要になった提案やオファーは、パージ期間(各インスタンスのデプロイメントウィザードで指定)およびスライド期間(受信提案のタイポロジルールで指定)の後、自動的に削除されます。
提案の同期用に、各環境および外部アカウントごとにワークフローが作成されます。同期の頻度は、環境ごと、外部アカウントごとに調整できます。
制限事項 limitations
- 匿名環境から識別された環境へのフォールバック機能を使用する場合、それら 2 つの環境が同じ実行インスタンス上にある必要があります。
- 複数の実行インスタンス間の同期は、リアルタイムでは実行されません。同じコンタクト先のインタラクションは、同じインスタンスに送信される必要があります。コントロールインスタンスは、アウトバウンドチャネル(リアルタイムではない)専用である必要があります。
- マーケティングデータベースは、自動的には同期されません。重み付けや実施要件ルールで使用されるマーケティングデータは、実行インスタンスで複製される必要があります。このプロセスは標準では用意されていないので、統合期間中に開発する必要があります。
- 提案の同期は、FDA 接続によって排他的に実行されます。
- インタラクションと Message Center を同じインスタンス上で使用する場合は、どちらについても、同期は FDA プロトコルを使用しておこなわれます。
パッケージ設定 packages-configuration
インタラクション に直接リンクされているスキーマ拡張(オファー、提案、受信者など)は、実行インスタンスにデプロイする必要があります。
インタラクションパッケージは、すべてのインスタンス(コントロールおよび実行)上にインストールする必要があります。追加パッケージが 2 つ用意されています。1 つはコントロールインスタンスにインストールするパッケージで、もう 1 つは各実行インスタンスにインストールするパッケージです。
データ保持期間は、(デプロイウィザードの データパージ ウィンドウから)インスタンスごとに設定する必要があります。実行インスタンスでは、この期間が、タイポロジルールに必要な履歴深度(スライド期間)および計算される実施要件ルールに対応している必要があります。
コントロールインスタンス上で、次の手順を実行します。
-
実行インスタンスごとに外部アカウントを作成します。
-
ラベルを入力し、短くて明示的な内部名を追加します。
-
「実行インスタンス」を選択します。
-
「有効」オプションをオンにします。
-
その実行インスタンス用の接続パラメーターを入力します。
-
すべての実行インスタンスは、ID にリンクされている必要があります。この ID は、「接続を初期化」ボタンをクリックすると割り当てられます。
-
使用するアプリケーションのタイプとして、「Message Center」と「インタラクション」のどちらか、または両方を選択します。
-
使用する FDA アカウントを入力します。オペレーターは、実行インスタンスで作成し、次のように、該当するインスタンスのデータベースの読み取り権限と書き込み権限を付与する必要があります。
code language-none grant SELECT ON nmspropositionrcp, nmsoffer, nmsofferspace, xtkoption, xtkfolder TO user; grant DELETE, INSERT, UPDATE ON nmspropositionrcp TO user;
note note NOTE コントロールインスタンスの IP アドレスは、実行インスタンスで承認されている必要があります。 -
-
次のように環境を設定します。
-
実行インスタンスのリストを追加します。
-
インスタンスごとに、同期期間とフィルター条件(例:国ごと)を指定します。
note note NOTE エラーが発生した場合は、同期ワークフローおよびオファー通知を確認してください。これらはアプリケーションのテクニカルワークフローにあります。
-
最適化のために、実行インスタンスでマーケティングデータベースの一部のみを複製する場合、その実行インスタンスで利用できるデータのみをユーザーに使用させるよう、環境にリンクした制約付きスキーマを指定できます。オファーの作成には、実行インスタンスでは利用できないデータも使用できます。それには、このルールをアウトバウンドチャネルのみに制限することで、他のチャネルに対しては無効にする必要があります(「次の場合に考慮」フィールド)。
メンテナンスオプション maintenance-options
次に、コントロールインスタンスで使用できるメンテナンスオプションのリストを示します。
NmsInteraction_LastOfferEnvSynch_<offerEnvId>_<executionInstanceId>
:特定のインスタンスで環境が同期された直近の日付。NmsInteraction_LastPropositionSynch_<propositionSchema>_<executionInstanceIdSource>_<executionInstanceIdTarget>
:特定のスキーマの提案があるインスタンスから別のインスタンスに同期された直近の日付。NmsInteraction_MapWorkflowId
:生成されるすべての同期ワークフローのリストを含むオプション。
次のオプションは、実行インスタンスで使用できます。
NmsExecutionInstanceId:インスタンス ID を含むオプション。
パッケージのインストール packages-installation
インタラクションパッケージをインストールしたことがないインスタンスの場合、移行は必要ありません。デフォルトでは、パッケージがインストールされると、提案テーブルは 64 ビットになります。
- インスタンスに提案がない、または非常に少ない場合、提案テーブルを手作業で修正する必要はありません。パッケージをインストールすると、修正が実行されます。
- インスタンスに多数の提案がある場合、コントロールパッケージをインストールして実行する前に提案テーブルの構造を変更しておくと、より確実です。アクティビティが少ない期間にクエリを実行することをお勧めします。
PostgreSQL postgresql
次の 2 つの方法があります。第 1 の方法(ワークテーブルを使用)のほうが若干高速です。
ワークテーブル
CREATE TABLE NmsPropositionRcp_tmp AS SELECT * FROM nmspropositionrcp WHERE 0=1;
ALTER TABLE nmspropositionrcp_tmp
ALTER COLUMN ipropositionid TYPE bigint,
ALTER COLUMN iinteractionid TYPE bigint;
INSERT INTO nmspropositionrcp_tmp SELECT * FROM nmspropositionrcp;
DROP TABLE nmspropositionrcp;
CREATE INDEX proposition_id ON NmsPropositionRcp (ipropositionid);
CREATE INDEX nmspropositionrcp_deliveryid ON NmsPropositionRcp (ideliveryid);
CREATE INDEX nmspropositionrcp_lastmodified ON NmsPropositionRcp (tslastmodified);
CREATE INDEX nmspropositionrcp_offerid ON NmsPropositionRcp (iofferid);
CREATE INDEX nmspropositionrcp_offerspaceid ON NmsPropositionRcp (iofferspaceid);
CREATE INDEX nmspropositionrcp_recipientidid ON NmsPropositionRcp (irecipientid);
ALTER TABLE nmspropositionrcp_tmp RENAME TO nmspropositionrcp;
テーブルの変更
ALTER TABLE nmspropositionrcp
ALTER COLUMN ipropositionid TYPE bigint,
ALTER COLUMN iinteractionid TYPE bigint;
Oracle oracle
Number タイプのサイズを編集しても、値を読み込んだりインデックスを作り直したりしないので、実行はただちに完了します。
実行するクエリは次のとおりです。
ALTER TABLE nmspropositionrcp MODIFY (
ipropositionid NUMBER(19, 0),
iinteractionid NUMBER(19, 0)
);
MSSQL mssql
実行するクエリは次のとおりです。
SELECT * INTO NmsPropositionRcp_tmp FROM NmsPropositionRcp WHERE 1 = 0;
GO
ALTER TABLE NmsPropositionRcp_tmp ALTER COLUMN ipropositionid BIGINT;
GO
ALTER TABLE NmsPropositionRcp_tmp ALTER COLUMN iinteractionid BIGINT;
GO
INSERT INTO NmsPropositionRcp_tmp SELECT * FROM NmsPropositionRcp;
GO
DROP TABLE NmsPropositionRcp;
GO
sp_rename 'NmsPropositionRcp_tmp', NmsPropositionRcp
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR dWeight
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iDeliveryId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iEngineType
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iInteractionId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iOfferId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iOfferSpaceId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iPropositionId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iRank
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iRecipientId
GO
ALTER TABLE NmsPropositionRcp ADD DEFAULT ((0)) FOR iStatus
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_deliveryId ON NmsPropositionRcp (iDeliveryId)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_eventDate ON NmsPropositionRcp (tsEvent)
GO
CREATE UNIQUE NONCLUSTERED INDEX NmsPropositionRcp_id ON NmsPropositionRcp (iPropositionId)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_lastModified ON NmsPropositionRcp (tsLastModified)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_offerId ON NmsPropositionRcp (iOfferId)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_offerSpaceI ON NmsPropositionRcp (iOfferSpaceId)
GO
CREATE NONCLUSTERED INDEX NmsPropositionRcp_recipientId ON NmsPropositionRcp (iRecipientId)
GO