MongoDB 데이터 소스 구성
AE 데이터 개발 플랫폼의 오프라인 동기화 계획은 MongoDB 데이터 소스의 쓰기(Writer)를 지원합니다. 이 문서에서는 MongoDB 데이터 동기화 기능의 지원 현황을 소개합니다.
MongoDB는 문서 데이터베이스(JSON을 데이터 모델로 사용)입니다.
MongoDB는 비관계형 데이터베이스 중에서 기능이 가장 풍부하고 관계형 데이터베이스와 가장 비슷합니다. 지원하는 데이터 형식은 BSON으로, JSON과 유사한 바이너리 형태의 저장 형식이며 Binary JSON의 약칭입니다. JSON과 마찬가지로 내장 문서 객체와 배열 객체를 지원하므로 비교적 복잡한 데이터 타입을 저장할 수 있습니다.
| SQL 개념 | MongoDB 개념 | 설명 |
|---|---|---|
| 데이터베이스(database) | 데이터베이스(database) | 논리적인 네임스페이스로, 하나의 데이터베이스에는 이름이 서로 다른 여러 컬렉션이 포함됩니다 |
| 테이블(table) | 컬렉션(collection) | SQL의 테이블에 해당하며, 하나의 컬렉션에는 필드(타입)가 서로 다른 여러 문서를 저장할 수 있습니다 |
| 행(row) | 문서(document) | 하나의 문서는 데이터 테이블의 한 행에 해당하며, 여러 필드로 구성됩니다 |
| 열(column) | 필드(field) | 문서의 속성 하나로, 열(column)에 해당합니다 |
| 인덱스(index) | 인덱스(index) | SQL 개념과 동일 |
| 기본 키(primary key) | _id(필드) | 모든 문서에는 고유한 id 필드가 있습니다 |
| 뷰(view) | 뷰(view) | 가상의(실제로 존재하지 않는) 컬렉션 |
| 테이블 조인(table joins) | 집계 연산($lookup) | 테이블 조인(tablejoin)과 "유사한" 집계 연산자 |
MongoDB의 가장 큰 특징은 지원하는 쿼리 언어가 매우 강력하다는 점입니다. 구문이 객체 지향 쿼리 언어와 다소 비슷하여 관계형 데이터베이스의 단일 테이블 쿼리 기능 대부분을 구현할 수 있으며, 데이터에 인덱스를 생성하는 것도 지원합니다.
게임 시나리오: MongoDB에 게임 유저 정보를 저장하고, 유저의 장비, 포인트 등을 내장 문서 형태로 바로 저장하여 조회와 업데이트를 편리하게 할 수 있습니다.
지원 버전
MongoDB 4.0+
사용 제한
현재는 다음 구성 방식만 지원합니다.
- AE 사전 설정 스토리지 공간 테이블에서 MongoDB로 쓰기 지원(오프라인 쓰기)
참고:
- MongoDB 데이터 소스 읽기는 아직 지원하지 않습니다(오프라인 읽기)
지원 필드 타입
| 필드 타입 | 오프라인 쓰기(MongoDB Writer) | 설명 |
|---|---|---|
| INT | 지원 | 32비트 정수형 |
| LONG | 지원 | 64비트 정수형 |
| STRING | 지원 | |
| OBJECTID | 지원 | |
| DECIMAL | 지원 | Decimal128, 최대 34자리 정밀도 |
| NULL | 지원 | |
| DOUBLE | 지원 | |
| DATE | 지원 | 초 단위 정밀도 |
| TIMESTAMP | 지원 | 밀리초 단위 정밀도 |
| BOOLEAN | 지원 | |
| BINDATA | 미지원 | |
| REGEX | 미지원 | |
| JAVASCRIPT | 미지원 | |
| MINKEY | 미지원 | |
| MAXKEY | 미지원 |
MongoDB 데이터 소스 생성
데이터 개발 플랫폼 - 통합 모듈에서 MongoDB 데이터 소스 추가를 선택할 수 있습니다.
데이터 소스 설정 파라미터 정보
데이터 소스에 필요한 설정 정보를 입력하고 연결 테스트를 완료하면 MongoDB 데이터 소스가 생성됩니다.
파라미터 이름 앞에 *가 있는 항목은 필수 파라미터이고, *가 없는 항목은 선택 파라미터입니다.
| 필드 이름 | 설명 |
|---|---|
| 기본 정보 | |
| *데이터 소스 이름 | 데이터 개발 플랫폼 공간 내에서 고유해야 하며, 영문자, 숫자, 밑줄로 구성하고 숫자나 밑줄로 시작할 수 없습니다 |
| 비고 | 선택 사항 |
| 데이터 소스 설정 | |
| 환경 구분 없음 / 독립 환경 설정 | 둘 중 하나 선택: 환경 구분 없음은 운영 환경과 개발 환경이 하나의 설정을 공유하고, 독립 환경 설정은 두 환경을 각각 독립적으로 설정합니다 |
| *배포 모드 | 다음 배포 모드를 지원합니다
|
| *서비스 주소/IP | 데이터베이스가 있는 서비스 주소 클러스터 배포 시 여러 노드 정보를 입력하려면 추가를 클릭하십시오 |
| *포트 | MongoDB에 접근하는 데 사용하는 포트 |
| *데이터베이스명 | 연결할 MongoDB 데이터베이스 이름 |
| *사용자 이름 | 데이터베이스에 접근할 권한이 있는 사용자 이름 |
| *비밀번호 | 사용자 이름에 대응하는 비밀번호 |
| 인증 데이터베이스 | 사용자를 생성할 때 사용한 데이터베이스 이름. 예: admin |
| 복제본 세트 이름 | 배포 모드가 복제본 모드인 경우 복제본 세트 이름을 입력하십시오 |
| 고급 설정 | 데이터베이스 연결에 필요한 기타 고급 파라미터. 직접 입력할 수 있습니다 예: SSL 인증서로 연결해야 하는 경우 ssl=true 파라미터로 제어할 수 있습니다 |
참고: 위 파라미터 정보를 조합하여 connection string을 구성하며, 이는 MongoDB 데이터베이스와 연결을 설정하는 데 사용하는 문자열입니다
예: mongodb://<username>:<password>@<instance_ip>:<instance_port>/<database_name>?authSource=admin&ssl=true
오프라인 동기화 작업 생성
위 단계에 따라 MongoDB 데이터 소스 생성을 완료하고 연결 테스트에 성공했다면, 실제 시나리오에 맞게 MongoDB 오프라인 쓰기 오프라인 동기화 작업을 구성할 수 있습니다.
MongoDB를 데이터 목적지로 사용
데이터 목적지에서 MongoDB를 선택하고 다음 관련 파라미터를 설정합니다.
| 필드 이름 | 설명 |
|---|---|
| *소스 타입 | 데이터 목적지의 대상 타입으로 MongoDB 선택 |
| *데이터 소스 이름 | 데이터 소스 관리 화면에 등록된 MongoDB 데이터 소스이며, 드롭다운에서 선택할 수 있습니다. 해당 데이터 소스를 아직 만들지 않았다면 데이터 소스 관리 버튼을 클릭하여 MongoDB 데이터 소스를 생성할 수 있습니다. |
| *데이터베이스명 | 읽을 데이터베이스 이름 |
| *컬렉션 이름 | 드롭다운에서 컬렉션 이름(collection)을 선택할 수 있습니다
|
| *쓰기 모드 |
|
전처리 구문 | 기능: MongoDB에 데이터를 쓰기 전에 MongoDB의 기존 데이터에 대해 수행하는 사전 작업 입력한 전처리 구문은 JSON 문법 요구 사항을 충족해야 합니다. 전처리 조건(PreSQL) 설정에는
|
| 고급 설정 | 일괄 건수: 1회 배치로 MongoDB에 쓰는 데이터양 |
| 일괄 쓰기 간격: 메모리 버퍼의 데이터를 MongoDB로 플러시(Flush)하는 최대 시간 간격을 제어하며, 단위는 밀리초(ms)입니다 |
파라미터 이름 앞에 *가 있는 항목은 필수 파라미터이고, *가 없는 항목은 선택 파라미터입니다.
필드 매핑 설명
데이터 소스와 타겟 설정을 완료한 후에는 필드 매핑 관계를 설정해야 합니다. 시스템은 매핑 관계에 따라 소스 필드의 데이터로 타겟 collection의 필드를 자동으로 생성합니다.
- 분석에 성공하면 동일 이름으로 매핑 생성을 클릭하여 소스 테이블의 데이터 타입에 따라 Mongo Document 구조를 생성합니다.
- 사용자는 쓰기 대상 Document의 필드 이름과 필드 데이터 타입을 다시 편집할 수 있습니다.
하나의 타겟 필드는 하나의 소스 필드에만 대응할 수 있다는 점에 유의하십시오.
필드 타입 매핑 방식(공간 테이블 —— Mongo):
| 소스 파일 타입 | 공간 테이블 | MongoDB BSON 타입 | 설명 |
|---|---|---|---|
orc、parquet | tinyint | Int | |
| smallint | Int | ||
| integer | Int | 32비트 정수형 | |
| bigint | Long | 64비트 정수형 | |
| varchar | String or ObjectID | ||
| boolean | Boolean | ||
| double | Double | ||
| date | Date | ||
| timestamp | Timestamp | 밀리초 단위 정밀도 | |
| decimal | Decimal(10) | Decimal128 | |
| array | Array | 배열 타입 | |
| row | Object | ||
| map | Object | ||
| csv、text | varchar | String or ObjectID |
결과 미리보기
결과 미리보기를 클릭하면 소스 데이터를 샘플링하여 쓰기 결과 예시 3건을 생성합니다.
주의⚠️: 소스 필드가 Null이면 쓰기 미리보기에서는 해당 필드가 표시되지 않지만, 실제로 Mongo에 쓸 때는 해당 필드가 "key" :null로 기록됩니다.
기본 정보 설정
마지막으로 통합 계획의 기본 정보를 설정해야 합니다. 계획 이름, 담당자, 통합 동기화 속도, 비고 등이 포함됩니다.
설정을 완료한 후 저장 버튼을 클릭하면 통합 계획 생성이 완료됩니다.
참고: 계획 이름은 저장 후 수정할 수 없습니다
상세 페이지:
오프라인 동기화 계획을 작업 플로우에 연결
작업 플로우에 연결
1. 연결 시작
- 통합 계획 상세 페이지에서 오른쪽 상단의 작업 플로우에 연결 버튼을 클릭합니다
2. 작업 플로우 선택
-
드롭다운 메뉴에서 대상 작업 플로우를 선택합니다
-
새 작업 플로우를 만들려면:
- 드롭다운 메뉴 아래의 새 작업 플로우 바로가기 버튼을 클릭합니다
- 또는 개발 모듈로 이동하여 생성합니다
-
팁: 대상 작업 플로우가 표시되지 않으면 오른쪽의 ↻ 새로고침 버튼을 클릭합니다
3. 동기화 노드 생성
- 작업 플로우에서 오프라인 동기화 계획 타입의 노드를 새로 만듭니다
- 이 노드는 현재 통합 계획과 연관되며, 노드가 실행되면 해당 통합 계획의 실행이 트리거됩니다
4. 연결 완료
- 노드 생성 및 연결을 클릭하여 설정을 완료합니다
- 연결에 성공하면 작업 플로우로 이동을 클릭하여 연결 결과를 바로 확인할 수 있습니다
참고: 작업 플로우에 연결하여 생성된 작업 노드는 아직 배포되지 않은 상태입니다. 작업 플로우로 이동하여 확인한 후 해당 노드를 배포하여 라이브 상태로 전환하는 것을 권장합니다.
작업 플로우 연결 해제
오프라인 동기화 계획의 작업 플로우 연결을 해제하려면 다음과 같이 진행합니다.
- 작업 플로우가 아직 배포되지 않았다면, 해당 계획이 연결된 작업 플로우로 이동하여 개발 모드에서 해당 오프라인 동기화 계획 작업 노드를 삭제하면 됩니다.
- 작업 플로우가 이미 배포되어 라이브 상태라면, 개발 모드에서 해당 오프라인 동기화 계획 작업 노드를 삭제한 후 작업 플로우를 다시 배포해야 합니다. 이렇게 하면 운영 환경에서도 해당 노드의 연결이 함께 해제됩니다.

