Skip to main content
분석, 보고 및 통합을 위해 Dodo Payments 데이터를 자체 데이터베이스로 동기화하세요. sync engine은 payments, customers, subscriptions, licenses를 MongoDB, PostgreSQL, MySQL 또는 ClickHouse에 자동으로 복제합니다.
Package: npm의 dodo-sync | Source: GitHub

무엇을 동기화할 수 있나요?

다음 entity를 원하는 조합으로 선택하세요:

Payments

일회성 결제, 환불 및 상태 업데이트를 포함한 모든 결제 거래입니다.

Customers

고객 프로필, 연락처 정보 및 메타데이터입니다.

Subscriptions

구독 데이터, 결제 주기 및 상태 변경입니다.

Licenses

라이선스 키, 활성화 및 상태 업데이트입니다.
scopes parameter를 사용하여 동기화할 entity를 지정합니다. 각 실행은 선택한 scope의 모든 레코드를 가져와 ID별로 기록하므로 기존 행이 중복되지 않고 제자리에서 업데이트됩니다. MongoDB에서는 라이선스 키가 subscription ID별로 저장되므로, 여러 라이선스 키가 있는 subscription은 그중 하나만 유지합니다.

데이터베이스 지원

Dodo Sync는 MongoDB, PostgreSQL, MySQL 및 ClickHouse를 지원합니다. Snowflake 및 기타 데이터베이스, ETL pipeline, realtime sync에 대한 지원은 개발 중입니다. 새로운 데이터베이스 통합을 추가하려면 GitHub repository에 pull request를 제출하세요.

시작하기

빠르게 설정하려면 CLI를 통해 Dodo Sync를 사용하고, 애플리케이션에 통합하려면 코드에서 programmatically 사용하세요. 두 방법 모두 동일한 기능을 제공합니다.

CLI 사용

어디서나 실행할 수 있도록 CLI를 전역으로 설치하세요:

CLI 실행

CLI는 두 가지 모드를 지원합니다. 안내에 따른 설정을 위한 interactive 모드와 직접 구성을 위한 manual 모드입니다. Interactive mode: 인수 없이 실행하여 설정 wizard를 시작합니다.
Manual mode: wizard를 건너뛰고 인수를 직접 전달합니다.
예시:

CLI 인수

number
필수
초 단위의 sync interval입니다. CLI는 이 interval로 계속 실행됩니다. 일회성 sync를 수행하려면 코드에서 .run()를 사용하세요.
string
필수
데이터베이스 type: "mongodb", "postgres", "mysql" 또는 "clickhouse"입니다.
string
필수
데이터베이스의 connection URI입니다:
  • MongoDB: mongodb://localhost:27017 또는 mongodb+srv://user:pass@cluster.mongodb.net/
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
string
필수
동기화할 entity의 쉼표로 구분된 목록입니다: licences, payments, customers, subscriptions. 예시: "payments,customers".
string
필수
Developer → API Keys에서 확인할 수 있는 Dodo Payments API key입니다. --env와 동일한 mode의 key를 사용하세요.
string
필수
Environment: "live_mode" 또는 "test_mode"입니다.
number
초당 requests 단위의 rate limit입니다. sync engine이 API requests를 수행하는 속도를 제어합니다. 기본값은 10이며, 100 이상의 값은 throttling을 해제합니다.

코드에서 사용

sync 기능을 애플리케이션에 직접 통합합니다. dependency로 설치하세요:

Automatic Sync (Interval-based)

일정한 interval로 sync를 계속 실행합니다:
.start()를 사용할 때는 interval option이 필요합니다. process가 중지될 때까지 지정된 interval로 sync가 계속 실행됩니다.

Manual Sync

cron job 또는 API endpoint 등에서 필요할 때 sync operation을 trigger합니다:
manual sync에는 interval option이 필요하지 않습니다. sync가 필요할 때마다 .run()를 호출하세요.

PostgreSQL 예시

MySQL 예시

ClickHouse 예시

Constructor Options

string
필수
데이터베이스 type: "mongodb", "postgres", "mysql" 또는 "clickhouse"입니다.
string
필수
데이터베이스의 connection string입니다:
  • MongoDB: mongodb://localhost:27017 또는 mongodb+srv://...
  • PostgreSQL: postgresql://user:password@localhost:5432/mydb
  • MySQL: mysql://user:password@localhost:3306/mydb
  • ClickHouse: http://localhost:8123
string[]
필수
동기화할 entity의 array입니다: "licences", "payments", "customers", "subscriptions". 원하는 조합을 포함하세요.
object
필수
Dodo Payments API configuration입니다. 전체 option은 TypeScript SDK types를 참조하세요.필수 properties:
  • bearerToken: Dodo Payments API key
  • environment: "test_mode" 또는 "live_mode"
number
automatic sync 사이의 초 단위 시간입니다. .start()에는 필요하고, .run()에는 선택 사항입니다.
number
초당 requests 단위의 rate limit입니다. 기본값은 10이며, 100 이상의 값은 throttling을 해제합니다.

중요 정보

MongoDB: dodopayments_sync라는 이름의 데이터베이스가 서버에 자동으로 생성됩니다. 이 데이터베이스 이름은 고정되어 변경할 수 없습니다.PostgreSQL: 테이블(Subscriptions, Payments, Licenses, Customers)은 connection URI에 지정된 데이터베이스에 생성됩니다. 데이터는 JSONB로 저장됩니다.MySQL: 테이블(Subscriptions, Payments, Licenses, Customers)은 connection URI에 지정된 데이터베이스에 생성됩니다. 데이터는 JSON으로 저장됩니다.ClickHouse: 테이블(Subscriptions, Payments, Licenses, Customers)은 ReplacingMergeTree engine을 사용하여 생성됩니다. 쿼리할 때는 FINAL keyword를 사용하여 중복 제거된 결과를 확인하세요.

추가 리소스

GitHub Repository

소스 코드를 확인하고, issue를 보고하거나 개선 사항에 기여하세요

npm Package

package 세부 정보와 설치 안내를 확인하세요
마지막 수정일 2026년 9월 26일