809 words
4 minutes
[Design Pattern] 01. Data Ingestion

Overview#

데이터 파이프라인 구축시 일단 처음로 고려하는 것은 가져올 데이터가 정의되었다고 했을때 데이터를 어떻게 가져올 것인지에 대한 것이다. 여기서는 데이터 수집 관련 디자인 패턴 및 개념에 대해 다룬다.

01. Single Data Exposition Abstraction#

개념#

Single Data Exposition Abstraction은 데이터 소스가 자신의 데이터를 하나의 정확한 인터페이스로 외부에 노출 하는 것을 의미함

  • 원천 source에서 일관된 일관된 방식으로 데이터를 노출
  • consumer에서 복잡한 로직 없이 데이터를 읽을 수 있음
  • 중요한건 api든 db든 파일이든 하나의 명확한 접점을 제공하는 것
ex)
- 매일 동일한 S3에 parquet 업로드
- 동일한 rest endpoint하나로 모든 데이터 조회

02. Data Semantics#

개념#

Data Semantics는 데이터의 변경의 의미를 정의하는 개념. 데이터 수집 전략을 결정하는 핵심요소. 기본은 Append, Upsert, Delete로 매우 당연해보이지만 실제 대부분의 데이터 수집 업무는 단순히 저 세 가지 패턴을 어떻게 구현하냐의 문제임.

세 가지 주요 Semantics#

1) Append

  • 새로운 레코드가 계속 추가됨
  • 기존 레코드는 절대 변경되지 않음

2) Upsert

  • 새 레코드 추가 + 기존 레코드 업데이트
  • 보통 PK기반으로 Insert/Update 여부 확인
  • 고객 프로필, 상품마스터 등

3) Delete

  • 레코드가 삭제됨
  • Hard vs Soft Delete

03. Ingestion Window#

Ingestion Window는 데이터를 수집하는 시간 범위를 의미.

기본적으로 특정 타임 윈도우 대상으로 일부 데이터만 가져오겠다는 의미이기 때문에 Source 시스템 부하가 감소하며 네트워크 비용이 절감된다.


Concept

  • Single Data Explosion Abstraction : 데이터 소스가 하나의 명확하고 일관된 인터페이스 (api, 파일경로, view 등)로 데이터를 외부에 노출하는 패턴. Consumer가 복잡한 로직 없이 데이터를 읽을 수 있도록함.
  • Data Semantics : Data Semantics는 데이터의 변경의 의미를 정의하는 개념. 데이터 수집 전략을 결정하는 핵심요소임. Append, Upsert, Delete 의 세 가지 주요 타입이 존재
  • Append Semantic : 신규 레코드만 계속 추가되고 기존 레코드는 절대 변경되지 않는 Data Semantic
  • Upsert Semantic : PK기준으로 존재할 경우 업데이트 없을 경우 Insert
  • Soft Delete : 데이터를 물리적으로 삭제하지 않고 삭제 플래그를 박는 것
  • Ingestion Window : 데이터를 수집하는 시간 범위 . 전체 데이터 대신 특정 타임 윈도우의 데이터만 수집하여 네트워크 비용 절감, 처리 시간 단축
  • Watermark : 마지막으로 성공적으로 수집된 데이터 타임스탬프. Ingestion Window의 시작점을 결정하는 메타데이터
  • Window Overlap : Ingestion Window 시작 전에 안전 마진을 추가해 늦게 도착하는 데이터를 놓치지 않도록하는 전략

References#

  • Data Engineering Design Pattern