견고한 데이터 파이프라인 구축을 위한 사전 지식 쌓기
책 : OREILLY 데이터 파이프라인 핵심 가이드
공부 일자 : 23.09.06 ~ 23.09.10
데브코스 끝난 후, 마지막 특강에서 멘토님께서 추천해주신 책을 읽어보았다.
책의 내용은 데이터 파이프라인 관리 및 구축법, 클라우드 인프라에서 파이프라인 구축 방법 등 전반적인 데이터 엔지니어링 업무 및 파이프라인 설계 지식이 담겨 있다.
내용은 그리 얕지도 깊이있지도 않기에,
지금까지 배운 데이터 엔지니어 지식들을 정리하기에 좋았고,
코드와 내용도 그리 어렵지 않아 술술 빠르게 읽을 수 있었다.
- 난이도 : ⭐⭐⭐
- 추천 : ⭐⭐⭐⭐
책을 읽으면서 알았지만 새롭게 다가온 내용들 혹은 몰랐던 내용들을 아래에 기록해본다.
핵심 내용 요약
▶️ 지저분한 데이터란?
- 중복되거나 모호한 레코드
- 고립된 레코드
- 불완전하거나 누락된 레코드
- 텍스트 인코딩 오류
- 일지하지 않는 데이터 형식
- 레이블이 잘못되었거나 레이블이 지정되지 않은 데이터
▶️ 데이터 클렌징 작업과 유효성 검사
- 최악 가정하고 최상 기대하기
- 가장 적합한 시스템에서 데이터 정리&검증하기
- 데이터 원본 그대로를 데이터 레이크에 로드하고 나중에 파이프라인에 정형화 및 정리하는 것이 좋을 수도 있음
- 자주 검증하기
- 각 단계 마다 데이터 검증하기
▶️데이터 변환과 데이터 모델링
- 데이터 변환 : ETL나 ELT의 T(Transform); 변환은 간단하거나 혹은 복잡한 것일 수도 있음
- 데이터 모델링 : 구체적인 데이터 변환 유형; "데이터 분석"을 위해 데이터를 이해하고 최적화된 형식으로 정형화하고 정의함
▶️ EtLT 하위패턴 (비문맥적 변환)
데이터 엔지니어가 파이프라인에서 비문맥적 변환을 구축하지만, 데이터 분석가등이 데이터 변환을 처리하는 것이 일반적임
t는 비즈니스적 변환이 아닌 간단히 변환하는 것 (아래 예시)
- 테이블에서 레코드 중복 제거
- URL 파라미터를 개별 구성요소로 구문 분석
- 단 원본 url 유지한 것도 저장하는 것이 좋다.
- 민감한 데이터 마스킹 혹은 난독화
▶️ MySQL 데이터베이스에서 데이터 추출 방식
크게 2가지
- SQL을 사용한 전체 혹은 증분 추출
- 이진 로그(binlog 복제)
증분 추출의 경우 데이터웨어하우스에 저장된 MAX(LastUpdated)
을 기준으로 데이터를 가져올 수 있다.
▶️ Snowflake 데이터 웨어하우스
External Stage (Snowflake가 액세스할 수 있도록 외부 저장 위치를 가리키는 객체)를 데이터를 가져오려는 S3 버킷으로 설정함
▶️ 중복 레코드 제거 방법
- 쿼리 시퀀스 이용
- DISTINCT문 사용하여 테이블의 복사본 만들고 원본 테이블과 교체
- 윈도우 기능 이용하여 중복 행 그룹화 하여 삭제할 행과 유지할 행을 식별함
- PARTITION BY와 ROW_NUMBER 사용함
▶️ 검증 테스트 예제
- 수집 후 중복된 레코드
- '중복' 정의할 항목 정하기 : 단일ID 기반 혹은 ID와 두 번째 열까지 함께 확인
- 수집 후의 예기치 않은 행 개수 : 수집된 레코드 수가 어느 정도 일정할 것으로 예측되는 경우 통계 확인
- 지표 값 변동 : 데이터 모델링 이후 아무 문제가 없는지 확인하기 위해 아래 항목들 확인할 수 있음
- 지표 값이 특정 상한 및 하한 범위 내에 있는지 확인
- 데이터 모델에서 행 개수 증감확인
- 특정 지표 값에 예상치 못한 변동 있는 지 확인
▶️ 파이프라인 유지 관리 모범 사례
- 소스 시스템의 변경 사항 처리
- 추상화 도입
- 가능하면 소스 시스템과 수집 프로세스 사이에 추상화 계층 도입 (e.g. REST API)
- Schema-on-Read 고려사항
- 소스 데이터의 스키마 변경을 처리할때 schema-on-write에서 데이터를 읽을 때 데이터를 정의하는 방식 (schema-on-read) 방식으로 설계한다.
- 이는 스카마에 엄격한 정의 없이 S3 등의 스토리지에 기록되는 패턴이다.
- 로드 단계에서 스키마가 유연한 데이터를 읽는데 사용하는 모든 도구와 통합되는
데이터 카탈로그
를 활용한다. (e.g. AWS Glue Catalog)
'#️⃣ 책 리뷰' 카테고리의 다른 글
[책 정리] 빅데이터를 지탱하는 기술 - CH2 (1) (0) | 2022.10.09 |
---|---|
[책 정리] 빅데이터를 지탱하는 기술 - Chapter 1 (0) | 2022.02.07 |
[클린코드] 1•2장_의미있는 이름 (0) | 2021.12.15 |