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
[Design Pattern] 01. Data Ingestion
https://yjinheon.netlify.app/posts/02de/de-design-pattern/02-data-ingestion/de-ingestion-legacy/de-01-ingestion-basics/