ETL vs CDC


1. ETL ( Extract, Transform, Load )

  • 추출, 전환, 적재

  • 컴퓨팅에서 데이터베이스 이용의 한 과정

    • 동일 기종, 또는 타 기종의 데이터 소스로부터 데이터를 추출한다.

    • 조회 또는 분석을 목적으로 적절하는 포멧이나 구조로 데이터를 저장하기 위해, 데이터를 변환한다.

    • 최종 대상으로 변환한 데이터를 적재한다.

  • 예시 ( Example )

    • 대용량의 소셜 미디어 데이터를 수집하여 HDFS(하둡 분산 파일 시스템)에 저장한다.

    • 이 때 데이터는 다양한 소스에서 텍스트나 이미지 비디오 등의 비정형 형태로 수집된다.

    • Apache Spark 를 활용하여 HDFS 에 저장된 데이터를 처리한다. Spark 는 대규모 데이터 처리에 최적화된 인메모리 기반의 분산 컴퓨팅 시스템이다.

    • Spark 에서 게시물의 텍스트 데이터에서 HTML 태그 제거, 소문자 변환, 불용어(Stop Words) 제거 등의 전처리 작업을 수행한다.

    • Spark 에서 전처리된 텍스트 데이터를 이용하여, 각 게시물의 감정(긍정적, 부정적, 중립적 등)을 분석하고 집계한다.

    • Apache Hive를 사용하여 변환된 데이터를 구조화하여 쿼리 가능한 형태로 저장한다.

    • Hive는 HDFS 위에 구축된 데이터 웨어하우스 시스템으로, SQL과 유사한 HiveQL을 통해 데이터를 쉽게 쿼리할 수 있게 해준다.

image



2. CDC ( Change Data Capture )

  • CDC 는 원천 데이터에서 실시간으로 “DB 전체”의 변경된 데이터를 저장하는 용도로 개발된 기술이다.

  • ETL 은 보통 배치작업을 통해 데이터를 업데이트 하는데, 그게 안될 경우를 대비하여 적용하기도 한다.

  • SQL log 기반으로 수행되는 만큼 DB 벤더사에 따라 기능 및 성능 차이가 있다.

  • 클라우드 전환 시 DB 마이그레이션 프로젝트에서 많이 사용하고 있다.

image



3. ETL vs CDC

  • 두 기술 모두 소스 DB로 → 목적 DB 전송의 역할은 동일하다.

  • CDC는 운영 장비의 Data 활용 관련 부하를 최소한으로 줄이기 위해 데이터 활용을 위한 별도 스토리지를 운영 장비의 Change(SQL) Log 기반으로 재구성하는 방식이며 ETL은 운영 장비의 환경에서 필요한 부분 데이터를 직접 추출하는 방식이 가장 큰 차이라고 할 수 있다.

  • 최근 강화된 성능의 클라우드로 인프라가 전환되면서 ETL의 약점으로 여겨졌던 서버의 부하가 완화되어 배치 및 실시간 요청 전송을 병행하여 데이터 변경 주기를 실시간에 가깝게 적용하는 것이 가능해지고 있다.

  • 반면에 데이터가 폭발적으로 생성되는 시스템에서 모든 DB 내 데이터를 전송하기 위한 CDC 전용 장비, 스토리지, CDC 인프라 관리 인원 등 추가 리소스를 사용하는 것은 운영 비용 증가의 원인 중 하나로 인식되고 있다.

  • 또한, 데이터 활용 목적에 따라 복제된 데이터 스토리지에서 ETL 작업이 추가적으로 발생할 수 있어 ETL 추가 구축 비용이 발생할 수 있다.

image



4. ETL 과 CDC 중에서 선택을 해야 할 때, 고려하면 좋은 점

  • ETL은 주로 배치 처리가 적합하고, 데이터 변환 및 통합 작업이 복잡한 상황에서 사용한다. 예를 들어, 매일 밤 대량의 데이터를 처리하고, 데이터 웨어하우스에 적재하는 작업에 적합합니다.

  • CDC는 실시간 데이터 통합과 처리가 중요한 경우, 예를 들어, 고객 데이터가 변경될 때마다 즉각적으로 대응해야 하는 상황에서 사용한다. 실시간 대시보드, 실시간 모니터링 시스템 등의 경우 CDC가 더 적합할 수 있습니다.






results matching ""

    No results matching ""