bin log 도입을 위해 힘써봤으나 ERROR 삼연타를 맞으며 ([Node.js] bin log(바이너리 로그) 도입기 BUT FAIL),
13일만에 투자받았다는 오픈소스 ELT 개발사인 Airbyte 의 서비스를 도입해 보기로 했다.
ETL vs ELT
ETL 은 Extract, Transform 및 Load 의 약어로, 다른 RDBMS 소스 시스템에서 데이터를 추출하여 데이터를 변환(가공)한 후 데이터웨어하우스 시스템에 데이터를 로드하는 방식이다.
ELT 는 데이터 이동에 대한 도구 접근 방식을 보는 다른 방법이다. 데이터를 쓰기 전에 변환하지 않고 그대로 로드해서 대상 시스템이 변환을 수행할 수 있도록 하는 방식이다. ELT 는 일반적으로 Hadoop 클러스터, 데이터 어플라이언스 또는 클라우드 설치와 같은 비 SQL 데이터베이스와 함께 사용된다 한다.
ETL | ELT | |
방법 | 스테이징 서버에서 데이터를 변환하고 데이터웨어하우스의 DB에 옮김 | 데이터웨어하우스의 DB에 데이터가 남음 |
코드 사용 | Compute-intensive 변형, 적은 양의 데이터 | 대용량 데이터 |
변환 | ETL 서버나 스테이징 서버에서 변환 실행 | 타겟 시스템에서 변환 실행 |
적재 시간 | 데이터가 스테이징 서버에 먼저 적재되고 나중에 타겟 시스템에 적재됨. 시간에 민감 | 타겟 시스템에 한번만 로드되기 때문에 빠름 |
변환 시간 | 데이터 변환이 완료될 때까지 기다려야 되기 때문에, 데이터 사이즈가 커질수록 변환에 소요되는 시간이 증가함 |
ELT 프로세스에서 속도는 데이터 사이즈에 절대 의존하지 않습니다. |
유지보수 시간 | 로드 및 변환할 데이터를 선택해야 하므로 높은 유지보수가 필요 | 데이터를 항상 사용할 수 있기 때문에 유지보수에 드는 시간이 낮음 |
구현 복잡도 | 초기 단계에서는 구현하기 쉬움 | 프로세스를 구현하기 위해서는 이에 대한 숙련된 기술과 툴에 대한 깊은 이해가 요구됨 |
(출처: www.guru99.com/etl-vs-elt.html)
Airbyte 도입하기
1. 설치하기
$ git clone https://github.com/airbytehq/airbyte.git
$ cd airbyte
2. .env 파일에서 LOCAL_ROOT, LOCAL_DOCKER_MOUNT 의 Path 수정
VERSION=0.18.2-alpha
DATABASE_USER=docker
DATABASE_PASSWORD=docker
DATABASE_DB=airbyte
CONFIG_ROOT=/data
WORKSPACE_ROOT=/tmp/workspace
DATA_DOCKER_MOUNT=airbyte_data
DB_DOCKER_MOUNT=airbyte_db
WORKSPACE_DOCKER_MOUNT=airbyte_workspace
# todo (cgardens) - when we are mount raw directories instead of named volumes, *_DOCKER_MOUNT must
# be the same as *_ROOT.
# Issue: https://github.com/airbytehq/airbyte/issues/578
LOCAL_ROOT=/Users/yonikim/Desktop/airbyte
LOCAL_DOCKER_MOUNT=/Users/yonikim/Desktop/airbyte
TRACKING_STRATEGY=segment
# todo (cgardens) - hack to handle behavior change in docker compose. *_PARENT directories MUST
# already exist on the host filesystem and MUST be parents of *_ROOT.
# Issue: https://github.com/airbytehq/airbyte/issues/577
HACK_LOCAL_ROOT_PARENT=/tmp
3. Airbyte 띄우기
$ docker-compose up
4. http://localhost:8000 으로 접속
- 나는 email 주소를 넣지 않고 [Continue] 버튼을 클릭했다.
5. 소스 가져올 DB 정보 입력
6. 타겟 정보 입력
- 나는 JSON 파일로 떨어지게끔 설정했는데, 데이터는 ${LOCAL_ROOT}/${destination_path} 에 떨어질 것이다.
7. Load 하고자 하는 데이터를 선택하고, Sync Frequency 를 선택해 준다.
8. Name 을 클릭하고 클릭하여 들어가면 Status 탭이 나올텐데, [Sync now] 버튼을 클릭하면 Extract 와 Load 가 실행된다.
9. Load 하고자 하는 데이터를 수정하거나 sync 방식을 변경하고 싶을 땐 Settings 탭으로 들어가면 된다.
'기타' 카테고리의 다른 글
개발 전 ADR 작성하기 (1) | 2024.02.28 |
---|---|
네이버 검색에서 티스토리 노출하기 (2) | 2023.11.19 |
[Copilot] 이제 코딩도 AI (0) | 2021.07.20 |