ETL은 아는데 CDC는 처음 봤다
어제 방법론 세 개(KDD, CRISP-DM, SEMMA) 외우다 지쳐서 오늘은 좀 쉬운 파트이길 바랐는데, 데이터 수집과 저장(적재) 계획도 생각보다 낯선 용어가 많았다.
일단 데이터 유형 구분부터 다시 짚었다. 정형데이터는 필드가 고정된 형태로, 엑셀이나 RDBMS처럼 스키마가 이미 정해져 있는 것들이다. 반정형데이터는 XML, HTML, JSON처럼 스키마 정보를 데이터 자체에 함께 들고 다니는 경우고, 비정형데이터는 아예 정해진 구조가 없는 영상이나 SNS 댓글, 위치 데이터 같은 걸 말한다. 이 셋을 나누는 기준 자체는 예전에 한 번 본 적이 있어서 그런지 크게 안 헷갈렸는데, 문제는 그다음이었다.
수집 방법이 데이터 유형별로 다르게 나뉘어 있다는 걸 오늘 처음 제대로 봤다. 정형데이터는 ETL, FTP, API 같은 방식으로 가져오고, 비정형데이터는 크롤링, RSS, Open API, 그리고 Flume이나 Scribe, 카프카(Kafka) 같은 도구를 쓴다고 나온다. 크롤링이랑 Open API 차이도 헷갈렸는데, 정리하자면 크롤링은 웹 페이지 자체를 긁어오는 거고 Open API는 애초에 서비스 쪽에서 열어둔 창구로 데이터를 요청해서 받는 거라, 후자가 훨씬 안정적이고 합법적인 방식에 가깝다고 보면 될 것 같다.
오늘 가장 새로 알게 된 개념은 ETL과 CDC의 차이였다. ETL은 추출(Extract)-변환(Transform)-적재(Load) 순서로 데이터를 옮기는 건데, 이게 보통 배치(batch) 단위로, 그러니까 정해진 시간마다 한 덩어리씩 옮기는 방식이라고 한다. 반면 CDC(Change Data Capture)는 원천 데이터베이스에서 바뀐 부분만 실시간으로 감지해서 타깃 쪽에 계속 복제해주는 방식이다. “실시간이냐 배치냐”라는 기준 하나로 이 둘을 구분하면 되는 건데, 처음 볼 땐 그냥 둘 다 “데이터 옮기는 기술” 정도로만 뭉뚱그려 이해하고 있었어서 시험에 나오면 확실히 틀렸을 것 같다.
저장 쪽에서는 데이터 웨어하우스(DW), 데이터 마트(DM), 데이터 레이크 세 개를 비교하는 내용이 나왔다. 데이터 레이크는 원본 그대로 쌓아두는 곳이고, 데이터 웨어하우스는 정제된 데이터만 담아두는 전사 차원의 저장소, 데이터 마트는 그중에서도 특정 부서나 주제에 맞게 떼어낸 작은 단위라는 설명이었다. 회사 전체 창고가 DW라면 마트는 그 창고에서 필요한 코너만 따로 빼놓은 매대 같은 느낌이랄까, 이렇게 비유해두니 셋의 관계가 좀 더 그림처럼 그려졌다.
수집 도구 이름도 여러 개 나왔는데 Sqoop, Flume, Fluentd, Logstash 정도가 자주 언급되는 편이었다. 다 외우기보다는 “정형은 Sqoop 계열, 로그성 비정형은 Flume·Logstash 계열”이라는 큰 갈래만 잡아두는 쪽으로 방향을 잡았다. 이름 하나하나를 다 구분해서 외우려니 끝이 없어서, 일단은 큰 흐름 위주로 가고 나중에 기출 풀면서 세부적으로 채워 넣어야겠다.
내일은 데이터 전처리 쪽, 결측값이랑 이상값 다루는 부분으로 넘어갈 예정이다.