Skip to main content

개요

OneSignal + ClickHouse 통합을 사용하면 ClickHouse 분석 데이터베이스에서 OneSignal로 사용자 지정 이벤트를 자동으로 동기화할 수 있습니다. 이를 통해 고성능 열형 데이터베이스에 저장된 사용자 행동 데이터를 기반으로 자동화된 Journeys 및 개인화된 메시징 캠페인을 트리거할 수 있습니다.

요구 사항

ClickHouse

  • ClickHouse 서버 (자체 호스팅 또는 클라우드)
  • 이벤트 테이블에 대한 읽기 액세스 권한이 있는 데이터베이스 자격 증명
  • 적절한 스키마로 행동 데이터를 포함하는 이벤트 데이터 테이블

설정

1

OneSignal용 ClickHouse 사용자 만들기

이벤트 테이블에 대한 읽기 전용 액세스 권한이 있는 OneSignal용 전용 사용자 계정을 만드세요:
2

네트워크 액세스 구성

OneSignal이 ClickHouse 인스턴스에 연결할 수 있는지 확인하세요:
  • 자체 호스팅: OneSignal의 IP 주소에서 연결 허용
  • ClickHouse Cloud: 허용 목록에 OneSignal IP 추가
  • 포트: 기본 ClickHouse 포트는 8123(HTTP) 또는 9000(네이티브)입니다
3

OneSignal에서 통합 추가

OneSignal에서 Data > Integrations으로 이동하여 Add Integration을 클릭합니다.ClickHouse를 선택하고 다음을 제공하세요:
  • 호스트: ClickHouse 서버 호스트 이름 또는 IP
  • 포트: ClickHouse 포트(기본값: HTTP의 경우 8123, 네이티브의 경우 9000)
  • 데이터베이스: 이벤트 테이블을 포함하는 데이터베이스 이름
  • 사용자 이름: onesignal_reader(또는 선택한 사용자 이름)
  • 비밀번호: ClickHouse 사용자의 비밀번호
  • 프로토콜: HTTP 또는 Native(단순성을 위해 HTTP 권장)
4

이벤트 데이터 소스 구성

이벤트 데이터를 포함하는 ClickHouse 테이블을 지정하세요:
  • 테이블: 이벤트 레코드를 포함하는 테이블 이름(예: user_events)
  • 이벤트 쿼리: 이벤트 데이터를 필터링하거나 변환하는 선택적 SQL 쿼리
이벤트 테이블에는 다음 열이 포함되어야 합니다:
  • 이벤트 이름/유형 (String)
  • 사용자 식별자 (String)
  • 이벤트 타임스탬프 (DateTime)
  • 추가 이벤트 속성 (JSON 또는 개별 열)
5

연결 테스트

Test Connection을 클릭하여 OneSignal이 ClickHouse 데이터베이스에 액세스하고 이벤트 데이터를 읽을 수 있는지 확인하세요.

이벤트 데이터 매핑

를 OneSignal의 사용자 지정 이벤트 형식에 매핑합니다:
Sync Key는 동기화 중 각 행의 고유 식별자로 지정하는 열입니다. OneSignal은 이를 사용하여 행이 이미 처리되었는지 감지하므로, 데이터를 다시 동기화해도 중복 이벤트가 생성되지 않습니다. 행마다 고유한 텍스트 값을 가진 열을 선택하세요. 불리언 값이나 여러 행에서 반복되는 값은 사용하지 마세요.

고급 구성

사용자 지정 SQL 쿼리

OneSignal에 동기화하기 전에 사용자 지정 SQL을 사용하여 이벤트 데이터를 필터링하거나 변환하세요:

성능 최적화

ClickHouse는 분석 쿼리에 최적화되어 있습니다. 다음을 고려하세요:
  • 파티셔닝: 이벤트 타임스탬프에 날짜 기반 파티셔닝 사용
  • 인덱싱: user_id 및 event_name에 적절한 인덱스 생성
  • Materialized Views: 더 빠른 쿼리를 위해 이벤트 데이터를 사전 집계
ClickHouse는 추가 전용 워크로드에 최적화되어 있습니다. 최상의 성능을 위해 이벤트 데이터가 이 패턴을 따르는지 확인하세요.

FAQ

OneSignal이 ClickHouse에서 이벤트를 얼마나 자주 동기화하나요?

OneSignal은 구성된 일정에 따라 이벤트 데이터를 동기화하며 최소 간격은 15분입니다.

여러 ClickHouse 테이블에서 이벤트를 동기화할 수 있나요?

예, 다른 테이블에 대해 여러 통합을 만들거나 UNION 쿼리를 사용하여 여러 테이블의 데이터를 결합할 수 있습니다.