Documentation Index
Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
Use this file to discover all available pages before exploring further.
OneSignal + Greenplum 集成允许将自定义事件从您的 Greenplum 数据库同步到 OneSignal,以基于用户行为触发自动化消息推送活动和 Journeys。
Greenplum 是一个基于 PostgreSQL 构建的大規模并行处理 (MPP) 数据库,专为大規模分析工作负载而设计。
- 访问自定义事件(目前处于测试阶段)
- 升级账户计划(免费应用不可用)。
Greenplum 要求
- 具有网络访问权限的 Greenplum 实例
- 具有适当权限的 数据库用户
- 包含结构化行为数据的 事件表
同步引擎和权限
OneSignal 从 Greenplum 中的表和视图读取数据,并同步它以触发自动化消息推送活动。为了限制对数据库的负载,OneSignal 维护状态跟踪表,使其只能同步自上次同步以来已修改的数据(增量同步)。在配置 Greenplum 连接时,您将选择一个同步引擎来决定如何处理状态跟踪。
基本同步引擎 在 OneSignal 拥有的基础设施上维护状态跟踪表,配置更简单,只需要读取访问权限。
高级同步引擎 通过在您自己的 Greenplum 实例内的专用架构中维护状态跟踪表来提供增强的性能。
创建 Census 用户
为 OneSignal 创建一个专用的数据库用户:-- Create CENSUS user and set password
CREATE USER CENSUS WITH PASSWORD '<strong unique password>';
选择同步引擎并配置权限
对于基本同步引擎(只读访问):向您的事件数据模式授予读取访问权限。将 <your schema> 替换为您的模式名称:-- Let the census user read all existing tables in this schema
GRANT SELECT ON ALL TABLES IN SCHEMA "<your schema>" TO CENSUS;
-- Let the census user read any new tables added to this schema
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your schema>" GRANT SELECT ON TABLES TO CENSUS;
-- Let the census user execute any existing functions in this schema
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "<your schema>" TO CENSUS;
-- Let the census user execute any new functions added to this schema
ALTER DEFAULT PRIVILEGES IN SCHEMA "<your schema>" GRANT EXECUTE ON FUNCTIONS TO CENSUS;
对于高级同步引擎(增强性能):首先完成上面的基本同步引擎步骤,然后添加:-- Create a private bookkeeping schema where Census can store sync state
CREATE SCHEMA CENSUS;
-- Give the census user full access to the bookkeeping schema
GRANT ALL ON SCHEMA CENSUS TO CENSUS;
-- Ensure the census user has access to any existing objects in the bookkeeping schema
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA CENSUS TO CENSUS;
-- Let the census user see your data schema
GRANT USAGE ON SCHEMA "<your schema>" TO CENSUS;
连接到 OneSignal
在 OneSignal 中,前往 数据 > 集成,然后点击 添加集成。选择 Greenplum 并提供:
- 主机: 您的 Greenplum 主主机
- 端口: 5432(或自定义端口)
- 数据库: 您的数据库名称
- 用户名:
CENSUS
- 密码: 步骤 1 中的密码
- 同步引擎: 根据步骤 2 选择基本或高级
事件数据映射
将您的 映射到 OneSignal 的自定义事件格式:
| OneSignal 字段 | 描述 | 必需 | |
|---|
name | event_name | 事件标识符 | 是 |
external_id | user_id | 用户标识符 | 是 |
timestamp | event_timestamp | 事件发生时间 | 否 |
properties | event_data | 否 | |
示例事件表模式
-- Example Greenplum event table
CREATE TABLE analytics.user_events (
event_id BIGSERIAL,
event_name VARCHAR(100) NOT NULL,
user_id VARCHAR(255) NOT NULL,
event_timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
event_properties JSONB,
session_id VARCHAR(255),
device_type VARCHAR(50)
);
处理模式
表模式
直接从您的 Greenplum 数据库同步整个表或视图。OneSignal 将自动将列映射到事件字段。
SQL 查询模式
编写自定义的 PostgreSQL 兼容查询来转换您的事件数据:
-- Example: Recent high-value events
SELECT
event_name,
user_id,
event_timestamp,
event_properties
FROM analytics.user_events
WHERE event_timestamp >= NOW() - INTERVAL '7 days'
AND (event_properties->>'value')::NUMERIC > 100
ORDER BY event_timestamp DESC;
MPP 查询优化
通过确保您的事件查询针对分布式执行进行了优化,来利用 Greenplum 的并行处理能力。使用适当的分布键并避免跨段数据移动以获得更好的性能。
高级网络配置
OneSignal 可以成功连接到使用高级网络控制的 Greenplum 实例,包括区域约束、IP 地址允许列表或 SSH 隧道。
我们建议配置您的 Greenplum 实例使用 TLS v1.2 或更高版本进行所有连接。
- 大型分析查询可能影响集群性能
- JSON/JSONB 操作应该针对分布进行优化
- 为了获得性能,应尽量减少跨段连接
常见问题
我应该选择哪个同步引擎?
如果您喜欢更简单的设置和只读访问,请使用基本同步引擎。如果您需要增强的性能并允许 OneSignal 在您的 Greenplum 实例中创建表,请选择高级同步引擎。
如何为 Greenplum 的 MPP 架构优化查询?
确保查询有效利用分布键,避免段之间不必要的数据移动,并利用 Greenplum 的列式存储进行分析。
我可以使用 Greenplum 的外部表来存储事件数据吗?
是的,OneSignal 可以从引用存储在外部系统中的 Parquet 或 CSV 等格式数据的外部表中读取。