메인 콘텐츠로 건너뛰기

개요

OneSignal + Trino 통합을 사용하면 Trino 클러스터에서 OneSignal로 사용자 지정 이벤트를 동기화하여 사용자 행동을 기반으로 자동화된 메시징 캠페인 및 저니를 트리거할 수 있습니다. Trino는 여러 소스의 대규모 데이터 세트에 대해 빠른 분석 쿼리를 실행하도록 설계된 분산 SQL 쿼리 엔진입니다.

요구사항

Trino

  • 네트워크 액세스가 가능한 Trino 클러스터
  • 적절한 권한이 있는 사용자 자격 증명
  • TLS 연결 지원(OneSignal 필요)
  • Trino 카탈로그를 통해 액세스할 수 있는 이벤트 데이터

설정

1

Trino 연결 구성

OneSignal에서 Data > Integrations으로 이동하여 Add Integration을 클릭합니다.Trino를 선택하고 다음 연결 세부 정보를 제공합니다:
  • Host: Trino 클러스터 호스트명
  • Username: Trino 사용자 이름
  • Password: Trino 비밀번호
  • Port: 443(기본값) 또는 사용자 지정 포트
OneSignal은 Trino에 대한 TLS 연결을 요구합니다. 인스턴스가 포트 443에서 실행되지 않는 경우 사용자 지정 포트를 지정하세요.
2

고급 동기화 엔진 구성(선택 사항)

성능 향상을 위해 전용 CENSUS 카탈로그를 설정합니다:
  1. CENSUS라는 카탈로그를 생성하고 CENSUS라는 스키마를 포함합니다
  2. 커넥터가 다음을 지원하는지 확인합니다:
    • CREATE TABLEDROP TABLE 작업
    • 테이블 쓰기(INSERT, DELETE, UPDATE)
    • CREATE OR REPLACE TABLE
  3. OneSignal 사용자에게 CENSUS.CENSUS 스키마에 대한 전체 권한을 부여합니다
테스트된 구성에는 MySQL, PostgreSQL, Snowflake, Iceberg 및 Delta Lake 커넥터가 포함됩니다.

이벤트 데이터 매핑

를 OneSignal의 사용자 지정 이벤트 형식에 매핑합니다:
OneSignal 필드설명필수
nameevent_name이벤트 식별자Yes
external_iduser_id사용자 식별자Yes
timestampevent_timestamp이벤트가 발생한 시간No
propertiesevent_dataNo

이벤트 쿼리 예시

-- Example: Recent high-value events across catalogs
SELECT
    event_name,
    user_id,
    event_timestamp,
    CAST(event_properties AS JSON) as event_properties
FROM catalog.schema.user_events
WHERE event_timestamp >= current_timestamp - INTERVAL '7' DAY
    AND JSON_EXTRACT_SCALAR(event_properties, '$.value') > '100'
ORDER BY event_timestamp DESC;

교차 카탈로그 이벤트 쿼리

-- Example: Federated query across multiple data sources
SELECT
    'combined_activity' as event_name,
    u.user_id,
    current_timestamp as event_timestamp,
    JSON_FORMAT(JSON_OBJECT(
        'web_sessions', w.session_count,
        'mobile_events', m.event_count,
        'purchase_value', p.total_value
    )) as event_properties
FROM postgres_catalog.users.profiles u
LEFT JOIN web_catalog.analytics.sessions w ON u.user_id = w.user_id
LEFT JOIN mobile_catalog.events.activities m ON u.user_id = m.user_id
LEFT JOIN purchases_catalog.orders.summary p ON u.user_id = p.user_id
WHERE u.created_date >= current_date - INTERVAL '30' DAY;

동기화 엔진 옵션

기본 동기화 엔진

  • 모든 Trino 카탈로그 및 커넥터와 작동
  • OneSignal 인프라에서 관리하는 상태 추적
  • 추가 요구 사항 없이 더 간단한 설정

고급 동기화 엔진

  • 로컬 상태 추적으로 향상된 성능
  • 전용 CENSUS.CENSUS 카탈로그 및 스키마 필요
  • 테이블 쓰기 작업이 있는 커넥터 지원
  • 대용량 이벤트 처리에 권장

지원되는 커넥터

OneSignal의 고급 동기화 엔진은 다음과 함께 테스트되었습니다:
  • MySQL 커넥터(읽기-쓰기 모드)
  • PostgreSQL 커넥터(읽기-쓰기 모드)
  • Snowflake 커넥터(읽기-쓰기 모드)
  • Iceberg 커넥터(S3 및 AWS Glue 포함)
  • Delta Lake 커넥터(AWS Glue 및 Starburst Galaxy 카탈로그 포함)

제한사항

  • TLS 연결 필요(OneSignal 보안 요구 사항)
  • 고급 동기화 엔진에는 CREATE OR REPLACE TABLE 지원 필요(Trino October 2023+)
  • Warehouse Writeback은 아직 지원되지 않음(곧 지원 예정)
  • WITH 절에서 사용자 지정 테이블 옵션을 제공할 수 없음

FAQ

OneSignal과 작동하는 Trino 커넥터는 무엇인가요?

읽기 작업을 지원하는 모든 커넥터는 기본 동기화 엔진과 작동합니다. 고급 동기화 엔진의 경우 테이블 쓰기 및 CREATE OR REPLACE TABLE을 지원하는 커넥터가 필요합니다.

단일 동기화에서 여러 카탈로그를 쿼리할 수 있나요?

예! Trino의 연합 쿼리 기능을 사용하면 단일 쿼리에서 여러 소스(PostgreSQL, MySQL, S3 등)의 이벤트 데이터를 결합할 수 있습니다.

고급 동기화 엔진이 필요한가요?

아니요, 기본 동기화 엔진은 대부분의 사용 사례에 잘 작동합니다. 향상된 성능이 필요하고 필요한 CENSUS.CENSUS 카탈로그를 설정할 수 있는 경우 고급 동기화 엔진을 사용하세요.