SOFTWARE
DBridge
DB Bridge
이기종 DBMS 간 대용량 데이터 이관을 위한 ETL 배치 엔진입니다.
Architecture
해결하려는 문제
이기종 DBMS 간 데이터 이관은 일회성 마이그레이션이든 주기 적재든 병목이 코어 한 곳에 집중되기 쉽습니다 — 단일 커넥션의 네트워크 왕복, 클라이언트 측 메모리 한도, Long Transaction. DBridge는 테이블을 논리 단위로 N등분하고 벤더별 Server-Side Cursor로 메모리를 안정시킨 뒤 멀티프로세스로 H/W 한계까지 처리량을 끌어올립니다.
지원 DBMS · 데이터스토어 (6종)
- PostgreSQL Source · TargetServer-Side Cursor (기본)
- Oracle Source · TargetServer-Side Cursor · CLOB 처리
- MySQL · MariaDB Source · TargetServer-Side Cursor
- MSSQL Source · TargetClient-Side (대용량 시 분할 권장)
- Memgraph Target 위주Graph DB — 노드/관계 적재 (batch_sep=G/R)
- MeiliSearch Target검색 인덱싱 (쓰기 전용)
관계형 4종 + 그래프(Memgraph) + 검색(MeiliSearch). 각 벤더의 특성에 맞춰 Source/Target 어댑터를 분리 구현 — "모든 DB를 동일하게 보지 않는다".
구성요소
- 멀티프로세스 워커 풀 다중 워커 풀. Stage 0 백그라운드와 메인 풀로 동적 할당
- 논리 분할 RANGE / MOD / ROWID / HASH 4종. 단일 테이블을 N등분해 병렬 처리
- 스테이지 의존성 스테이지 간 순차, 스테이지 내 병렬. 선행 실패 시 종속 작업 자동 취소
- Server-Side Cursor 메모리 안정성 + 네트워크 효율. Oracle · PostgreSQL · MySQL 벤더별 구현
- 이중 Lock PID + DB 이중 락 + Stale Lock 자동 정리. 다중 인스턴스 안전
- ErrorDebugger 실패 시 이진 탐색으로 문제 행 자동 추적
ETL/ELT 모델
DBridge는 Transform을 타깃 DBMS의 SQL에 위임합니다.
컬럼 매핑·필터·집계·Join은 메타 쿼리 정의의
SELECT 쿼리에 정의하고, 엔진은 데이터 타입 변환·NULL 정규화·LOB
처리만 담당합니다.
이는 시각적 매퍼 GUI 대신 SQL 그대로 쓰는 ELT 패턴입니다. 타깃 DB 옵티마이저의 실행 계획을 그대로 살리고, 프로젝트별로 변형이 큰 비즈니스 규칙은 SQL 레이어에 박아 엔진을 손대지 않는 설계 — 그래서 "프로젝트별 하드코딩 금지" 원칙이 코어에 그대로 유지됩니다.
실측 처리량
- 단일 프로세스 (INSERT)
- ~10,000 rows/sec (네트워크 병목)
- 10 병렬 프로세스 (Split INSERT)
- ~80,000 rows/sec
- 1억 row 이관 (10 병렬)
- 약 16분
- 1억 row CSV Export (10 병렬)
- 약 2분 (수동 Import 별도)
출처 — 내부 측정 (Oracle 19c · PostgreSQL 17 단일 박스 환경, 표준 INSERT 기준). 적재 대상·인덱스·트리거 구성에 따라 달라질 수 있습니다.
운영 / 안정성
- 일별 폴더 로그 (
app/log/YYYYMMDD/batch_main.log) - 1분 주기 진행률 — 성공 / 실패 / 실행중 / 대기 카운트
- 의존성 실패 전파 — 선행 실패 시 종속 작업 자동 취소
- TRUNCATE → INSERT idempotent 설계 (재실행 안전)
- Stale Lock 자동 정리 (PID + DB 이중)
- 폐쇄망 전제 — 외부 네트워크·CDN 의존 없음
운영 콘솔 예시
배치 진행률·실패 행·처리량 추이를 한 화면에서 다루는 운영 UI 구성의 예시(MOCKUP)입니다. 실제 프로젝트 도입 환경에 맞춰 구성합니다.
| 작업 ID | 상태 | 스테이지 | 진행 | 경과 |
|---|---|---|---|---|
BT_USER_HIST_2024 | running | 2 / 4 | 6.4M / 12.0M | 04:21 |
BT_TXN_LOG_RANGE_03 | running | 3 / 4 | 1.2M / 3.0M | 01:08 |
BT_DOC_INDEX_MEILI | queued | 0 / 2 | — | — |
BT_GRAPH_REL_LOAD | success | 4 / 4 | 8.9M / 8.9M | 12:47 |
BT_LEGACY_HWPX_BLOB | failed | 2 / 3 | 0.8M / 4.5M | 03:12 |
사양
- 버전
- v1.0.0
- 라이선스
- 비공개 (내부 프로젝트)
- 런타임
- 멀티프로세스 ETL 엔진 · 6종 DB 어댑터
- 메타 저장
- PostgreSQL 18 (배치 규칙 · 실행 이력 등 메타 테이블)
- 배포 형태
- Docker compose · 단일 박스 · 폐쇄망 전제
- 진입점
- CLI 배치 (`app/main.py`) — exit code 0/1로 외부 cron 연계
- 운영 UI
- 계획 단계 (시안 — 위 §운영 콘솔 참조)
- 마지막 갱신
- 2026-04
추가 측정값(메모리 풋프린트·CPU 점유·동시 배치 한계 등)은 위 실측 처리량에 측정 환경과 함께 명시되어 있습니다.
보안 · 컴플라이언스
- 라이선스
- 비공개 (README "내부 사용 목적")
- 운영 전제
- 폐쇄망 — 외부 네트워크 의존 없음, 단일 박스 배치
- 데이터 안전
- Source DB 읽기 전용, Target DB INSERT 전용 — Source 변경 금지
- 잠금 · 복구
- PID + DB 이중 Lock, Stale Lock 자동 정리, 다층 타임아웃
- 실패 격리
- 스테이지 단위 재시도, 실패 행 별도 적재
- 기술 지원
- 프로젝트별 전담 기술 조직을 배정하고, 장애 모니터링과 지원 채널을 운영합니다.
도입 · 시작하기
- 요건 검토 — 원본/목적 DBMS 종류·테이블 규모·이관 윈도우·네트워크
- 매핑 정의 — 메타 테이블(배치 규칙·메타 쿼리 정의)에 스테이지·테이블·분할 정책 등록
- 리허설 → 본 이관 — 부분 → 전체, 검증 후 운영 전환
도입을 검토하고 계신가요?
고객 요건과 운영 환경에 맞춰 구성·도입 절차를 안내해 드립니다. 데모·제안 요청은 문의로 받습니다.