MongoDB에 연결
MongoDB에 연결
이 문서에서는 MongoDB용 Openflow 커넥터를 위해 소스 MongoDB 데이터베이스와 대상 Snowflake 계정을 구성하는 방법을 설명합니다.
출처: Snowflake 문서
본문
소스 MongoDB 데이터베이스 설정
커넥터는 Replica Set 또는 Sharded Cluster로 실행되는 MongoDB 배포가 필요합니다. 이 아키텍처는 고가용성을 보장하고, 커넥터가 데이터 변경을 실시간으로 추적·동기화하는 데 사용하는 Change Streams를 가능하게 합니다.
MongoDB 환경을 구성하려면 다음 단계를 수행하세요.
- 기본 Replica Set을 구성합니다. 다음 예시처럼 모든 노드의 mongod.conf에 동일한 replSetName이 있는지 확인하세요.
replication:
replSetName: "myReplicaSet"
- Replica set을 초기화합니다. mongosh 콘솔에서 이 명령을 실행하세요. 이 예시에서 replica set은 두 개의 노드로 구성됩니다.
rs.initiate({
_id: "myReplicaSet",
members: [
{
_id: 0,
host: "10.11.98.246:27017",
},
{
_id: 1,
host: "10.11.104.58:27017",
},
],
});
- 전용 데이터베이스 사용자를 만듭니다. 커넥터는 클러스터 수준 Change Stream을 여는데, 이는 admin 데이터베이스에 대한 readAnyDatabase 역할을 요구합니다. mongosh 콘솔에서 다음 명령을 실행해 해당 역할로 사용자를 만드세요.
use admin
db.createUser(
{
user: "openflowUser",
pwd: "yourSecurePassword",
roles: [
{
role: "readAnyDatabase",
db: "admin"
}
]
}
);
참고: readAnyDatabase 역할이 필요한 이유는 커넥터가 현재 클러스터 수준에서 변경 이벤트를 모니터링하기 때문입니다. 특정 데이터베이스에 더 좁은 읽기 역할을 허용하는 데이터베이스 범위 Change Stream 지원은 현재 제공되지 않습니다. 커넥터를 구성할 때 MongoDB Authentication Source를 admin으로 설정하세요. 자세한 내용은 'MongoDB source parameters'를 참조하세요.
대상 Snowflake 계정 설정
Openflow 관리자는 이 커넥터에 대해 다음 작업을 수행하세요. 기본 SNOWFLAKE_MANAGED 인증 전략에서는 런타임의 execute-as 역할이 커넥터가 Snowflake에 접근할 때 사용하는 신원이므로, 해당 역할에 권한을 부여하세요.
참고: Openflow - BYOC Deployments에 커넥터를 배포하면서 권장되는
SNOWFLAKE_MANAGED대신KEY_PAIR인증 전략을 사용한다면, 런타임 관리 토큰에 의존하는 대신 동일한 execute-as 역할을 서비스 사용자에게도 부여해야 합니다. 서비스 사용자 생성은 'Set up key-pair authentication for Openflow - BYOC Deployments'를 참조하세요.
- 복제된 데이터를 저장할 데이터베이스를 만들고, execute-as 역할에 해당 데이터베이스에 대한 USAGE와 CREATE SCHEMA를 부여하세요. 커넥터는 목적지 스키마를 자동으로 만듭니다. Snowflake는 다른 커넥터를 포함한 다른 데이터 소스와의 충돌을 피하기 위해 커넥터당 전용 목적지 데이터베이스를 권장합니다. 이 목적지 데이터베이스를 런타임, 커넥터, 시크릿 같은 Openflow 인프라 객체가 있는 데이터베이스와 분리해 두세요. 커넥터는 소스 스키마와 테이블 이름을 기반으로 목적지 객체를 만들기 때문에, 그 이름은 제어할 수 없고 소스가 바뀌면 변할 수 있습니다.
CREATE DATABASE IF NOT EXISTS <destination_database>;
GRANT USAGE ON DATABASE <destination_database> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
GRANT CREATE SCHEMA ON DATABASE <destination_database> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
- 커넥터가 사용할 웨어하우스를 지정하고, execute-as 역할에 USAGE와 OPERATE를 부여하세요. XSMALL 웨어하우스 크기에서 시작해 복제되는 테이블 수와 전송되는 데이터 양에 따라 크기를 실험해 보세요. 큰 테이블 수는 웨어하우스 크기보다 다중 클러스터 웨어하우스에서 더 잘 확장되는 경향이 있습니다.
CREATE WAREHOUSE <ingest_warehouse>
WITH
WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE;
GRANT USAGE, OPERATE ON WAREHOUSE <ingest_warehouse> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL;
- Snowflake 배포 전용: 런타임의 외부 접근 통합(EAI)이 허용하는 네트워크 규칙이 이 커넥터의 소스 호스트와 포트를 허용하는지 확인하세요. EAI 자체는 이 커넥터가 아니라 런타임에 속합니다. EAI는 한 번 만들고 런타임에 연결하며 execute-as 역할에 USAGE를 부여합니다. 이 단계는 'Creating network rules and external access integrations'를 참조하세요. 이 커넥터에 특화된 점은 소스 호스트를 EAI가 참조하는 규칙에 넣는 것입니다. 규칙은 소스의 호스트와 포트를 단일 값(예: db.example.com:
)으로 취합니다. 이는 커넥터 연결 URL에서 jdbc: 스킴, 드라이버 이름, 데이터베이스 경로를 뺀 호스트와 포트입니다. BYOC 배포는 클라우드 환경에서 아웃바운드 연결을 처리하므로 EAI나 네트워크 규칙을 사용하지 않습니다.
다음 단계
소스 MongoDB 데이터베이스와 대상 Snowflake 계정을 설정한 뒤 커넥터를 설정하세요.