概要
OneSignal + Greenplumインテグレーションにより、Greenplumデータベースからカスタムイベントを同期して、ユーザー行動に基づいた自動化されたメッセージングキャンペーンとJourneysをトリガーできます。 Greenplumは、大規模な分析ワークロード向けに設計された、PostgreSQLベースの超並列処理(MPP)データベースです。要件
- アウトバウンドメッセージイベント用のEvent Streamsへのアクセス(プランの制限と超過料金が適用されます)
- インバウンドイベント同期用のCustom Eventsへのアクセス(プランの制限と超過料金が適用されます)
- 更新されたアカウントプラン(無料アプリでは利用できません)
Greenplum
- ネットワークアクセスを持つGreenplumインスタンス
- 適切な権限を持つデータベースユーザー
- 構造化された行動データを含むイベントテーブル
同期エンジンと権限
OneSignalは、Greenplumのテーブルとビューからデータを読み取り、それを同期して自動化されたメッセージングキャンペーンをトリガーします。データベースへの負荷を制限するために、OneSignalは状態追跡テーブルを維持し、最後の同期以降に変更されたデータのみを同期できるようにします(増分同期)。Greenplum接続を構成する際、状態追跡の処理方法を決定する同期エンジンを選択します。 Basic Sync Engineは、OneSignalが所有するインフラストラクチャに状態追跡テーブルを維持し、読み取りアクセスのみが必要で、構成が簡単です。 Advanced Sync Engineは、独自のGreenplumインスタンス内の専用スキーマに状態追跡テーブルを維持することで、パフォーマンスを向上させます。セットアップ
1
Censusユーザーを作成する
OneSignalが使用する専用データベースユーザーを作成します:
2
同期エンジンを選択して権限を構成する
Basic Sync Engine(読み取り専用アクセス)の場合:イベントデータスキーマへの読み取りアクセスを付与します。Advanced Sync Engine(パフォーマンスの向上)の場合:最初に上記のBasic Sync Engineの手順を完了してから、次を追加します:
<your schema>をスキーマ名に置き換えます:3
OneSignalに接続する
OneSignalで、Data > Integrationsに移動し、Add Integrationをクリックします。Greenplumを選択して、次を提供します:
- **Host:**Greenplumマスターホスト
- **Port:**5432(またはカスタムポート)
- **Database:**データベース名
- Username:
CENSUS - **Password:**ステップ1のパスワード
- **Sync Engine:**ステップ2に基づいてBasicまたはAdvancedを選択します
イベントデータマッピング
をOneSignalのカスタムイベント形式にマッピングします:| OneSignalフィールド | 説明 | 必須 | |
|---|---|---|---|
name | event_name | イベント識別子 | はい |
external_id | user_id | ユーザー識別子 | はい |
timestamp | event_timestamp | イベントが発生した時刻 | いいえ |
properties | event_data | いいえ |
イベントテーブルスキーマの例
処理モード
テーブルモード
Greenplumデータベースから直接テーブルまたはビュー全体を同期します。OneSignalは列をイベントフィールドに自動的にマッピングします。SQLクエリモード
イベントデータを変換するためのカスタムPostgreSQL互換クエリを作成します:MPPクエリの最適化
イベントクエリが分散実行用に最適化されていることを確認して、Greenplumの並列処理を活用します。適切な分散キーを使用し、パフォーマンスを向上させるためにセグメント間のデータ移動を回避します。高度なネットワーク構成
OneSignalは、リージョン制約、IPアドレス許可リスト、またはSSHトンネリングなどの高度なネットワーク制御を使用しているGreenplumインスタンスに正常に接続できます。 すべての接続にTLS v1.2以降を使用するようにGreenplumインスタンスを構成することをお勧めします。制限事項
- 大規模な分析クエリはクラスタのパフォーマンスに影響を与える可能性があります
- JSON/JSONB操作は分散用に最適化する必要があります
- パフォーマンスのために、セグメント間の結合は最小限に抑える必要があります