데이터 원천·유형과 수집 방식
데이터 원천과 유형에 맞는 수집 방식과 설계 기준을 구분한다.
핵심 요약
데이터 원천은 조직 내부와 외부로 나눌 수 있고, 데이터 형식은 정형·반정형·비정형으로 나눌 수 있다. 내부 데이터라고 모두 정형인 것도 아니며 외부 데이터라고 모두 비정형인 것도 아니다. 분류 축을 섞지 않아야 적절한 수집·저장·분석 방법을 선택할 수 있다.
수집은 데이터를 한 번 복사하는 행위가 아니다. 원천의 의미와 기준 시점, 변경·삭제, 중복·유실, 출처와 권한을 추적할 수 있어야 이후 분석을 재현할 수 있다. 재시도와 재처리 후에도 같은 원천 변화가 결과에 중복 반영되지 않도록 식별자·기준점·멱등성 규칙을 설계해야 한다.
학습 목표
- 내부·외부 데이터와 정형·반정형·비정형 데이터를 구분한다.
- 배치·스트림, 밀어넣기·가져오기 방식의 적용 조건을 설명한다.
- 파일·API·데이터베이스·로그 수집의 장단점을 판정한다.
- 출처·기준 시점·수집 실패를 포함한 수집 품질을 검증한다.
- 전체·증분·변경 데이터 수집과 스키마 변경 대응을 판정한다.
1. 데이터 원천과 형식
1.1 내부·외부 데이터
내부 데이터는 조직의 거래, 고객 접점, 설비, 인사, 회계 시스템 등에서 생성된다. 업무 의미와 책임자를 확인하기 쉽지만 시스템별 코드와 기준 시점이 다를 수 있다. 외부 데이터는 공공데이터, 제휴사, 시장·날씨 정보 등에서 얻으며 라이선스, 제공 안정성, 갱신 주기와 정의 변경을 확인해야 한다.
| 분류 축 | 대표 구분 | 답하는 질문 | 주의점 |
|---|---|---|---|
| 출처·통제 | 내부·외부 | 어디에서 생성되고 누가 통제하는가? | 내부도 권한·품질 문제가 있고 외부도 정형일 수 있음 |
| 구조 | 정형·반정형·비정형 | 구조 표지가 얼마나 고정·명시되어 있는가? | 파일 확장자만으로 품질·구조를 단정하지 않음 |
| 시간 흐름 | 배치·스트림 | 묶음으로 주기 처리하는가, 연속 이벤트로 처리하는가? | 필요 지연시간과 재처리 방식을 함께 봄 |
| 전달 주체 | push·pull | 원천이 보내는가, 수집기가 가져오는가? | 배치·스트림과 일대일 대응하지 않음 |
| 변화 범위 | 전체·증분·변경 데이터 수집 | 전체 상태, 변경된 범위, 개별 변경 사건 중 무엇을 받는가? | 기준점·삭제·재처리 규칙 필요 |
1.2 정형·반정형·비정형
| 유형 | 구조 | 예시 | 수집·해석 시 주의점 |
|---|---|---|---|
| 정형 | 고정된 열과 자료형 | 관계형 테이블, 정형 CSV | 키, 코드, 제약조건, 기준 시점 |
| 반정형 | 태그·키 등 구조 표지가 있으나 유연함 | JSON, XML, 이벤트 로그 | 중첩 구조, 선택 필드, 스키마 버전 |
| 비정형 | 고정된 표 구조가 약함 | 문서, 이미지, 음성, 영상 | 메타데이터, 인코딩, 특징 추출, 개인정보 |
CSV는 흔히 정형 교환 파일로 쓰이지만 구분자, 인코딩, 헤더와 자료형 제약이 파일 자체에 충분히 표현되지 않을 수 있다. 형식 이름만으로 품질을 단정하지 않는다.
2. 수집 시점과 흐름
2.1 배치 수집
일정 주기마다 파일이나 변경분을 모아 가져온다. 구현과 재처리가 비교적 단순하지만 최신성은 주기에 제한된다. 전체 추출과 증분 추출을 구분하고 마지막 성공 기준점을 관리해야 한다.
2.2 스트림 수집
이벤트가 발생할 때 연속적으로 전달한다. 짧은 지연시간에 적합하지만 중복, 순서, 늦게 도착한 이벤트, 재처리와 상태 관리가 중요하다.
2.3 밀어넣기와 가져오기
원천이 이벤트를 보내는 방식은 밀어넣기, 수집 시스템이 주기적으로 조회하는 방식은 가져오기로 볼 수 있다. 전자는 변화에 빠르게 반응할 수 있고, 후자는 수집 주체가 일정과 부하를 통제하기 쉽다.
| 구분 | 배치 | 스트림 |
|---|---|---|
| 입력 흐름 | 정한 범위·주기의 묶음 | 계속 도착하는 이벤트 |
| 대표 기준점 | 파일·날짜·증분 키·마지막 성공 시점 | 이벤트 ID·오프셋·체크포인트 |
| 강점 | 범위 재계산·재처리와 대량 교환이 비교적 단순 | 변화에 짧은 지연으로 반응 |
| 주요 통제 | 중복 파일, 부분 성공, 기준점, 삭제 반영 | 중복·순서·지연 이벤트, 상태·재처리 |
| 선택 질문 | 결과가 언제까지 필요하며 묶음 재계산이 가능한가? | 이벤트 단위로 얼마나 빨리 반응해야 하는가? |
배치와 스트림은 배타적이지 않다. 실시간 경보는 스트림으로 제공하고 일별 배치 재계산으로 누락·지연 이벤트를 반영해 확정 결과를 만들 수 있다.
2.4 전체·증분·변경 데이터 수집
| 방식 | 의미 | 적합 상황 | 핵심 통제 |
|---|---|---|---|
| 전체 추출 | 기준 시점의 대상 전체를 다시 받음 | 데이터가 작거나 완전 재구성이 필요 | 원천 부하, 스냅샷 시점, 교체 원자성 |
| 증분 추출 | 마지막 기준점 이후 추가·변경된 범위를 조회 | 갱신 시각·순번 등 신뢰 가능한 증분 키가 있음 | 기준점 저장, 동일 시각 경계, 재조회 구간 |
| 변경 데이터 수집 | 삽입·수정·삭제 변화 사건을 포착 | 변경 이력과 낮은 지연이 중요 | 트랜잭션 순서, 삭제, 스키마 변경, 재처리 |
증분 수집에서 수정 시각 > 마지막 시각만 사용하면 같은 시각의 레코드나 늦게 반영된 변경을 놓칠 수 있다. 시간과 고유 순번을 함께 쓰거나 일정 겹침 구간을 재조회한 뒤 식별자로 중복을 제거하는 방안을 검토한다. 삭제는 현재 테이블 조회만으로 사라진 사실을 알기 어려울 수 있으므로 삭제 표시, 변경 로그, 주기적 전체 대사 같은 절차가 필요하다.
3. 대표 수집 방식
| 방식 | 강점 | 주요 위험 | 필수 통제 예시 |
|---|---|---|---|
| 데이터베이스 조회·변경 수집 | 구조와 증분 기준 활용 | 원천 부하, 트랜잭션 의미, 삭제 누락 | 읽기 부하 제한, 일관된 시점, 기준점·삭제 대사 |
| 파일 전송 | 대량 묶음 교환과 재처리 | 지연·중복·부분 전송·스키마 변경 | 임시명 후 완료 전환, 파일 ID·체크섬, 매니페스트 |
| API | 공식 인터페이스와 접근 통제 | 호출 제한, 페이지·버전·장애 | 인증, 재시도 간격, 페이지 완료, 응답 버전 |
| 애플리케이션·센서 이벤트 | 발생 맥락과 저지연 수집 | 유실·중복·순서·시간 동기화 | 이벤트 ID, 발생·수집 시각, 체크포인트, 멱등 처리 |
| 웹 수집 | 공개 정보 구조화 가능 | 이용 조건, 구조 변경, 과도한 요청, 품질 | 허용 범위·요청 간격, 출처·시각, 구조 변경 감시 |
수집 방식은 하나만 선택하지 않을 수 있다. 기준 정보는 API로, 대량 이력은 파일로, 실시간 상태는 이벤트로 받을 수 있다.
3.1 API와 파일 수집의 완료 판단
| 방식 | 완료로 보기 전에 확인할 것 | 대표 실패 |
|---|---|---|
| API | 모든 페이지·기간을 조회했고 실패 호출을 재처리했는가? | 마지막 페이지 누락, 호출 제한 후 일부 누락 |
| 파일 | 전송 완료가 확인되고 매니페스트·체크섬·건수가 일치하는가? | 쓰는 중인 파일 수집, 중복 파일 재처리 |
| DB 증분 | 시작·종료 기준점과 스냅샷 시점이 기록됐는가? | 경계 레코드 누락, 실행 중 데이터 변경 |
| 이벤트 | 처리 기준점이 저장되고 재시도 결과가 중복 반영되지 않는가? | 재전송 중복, 체크포인트 유실 |
4. 수집 품질과 계보
수집 레코드에는 가능하면 원천, 원천 식별자, 발생 시각, 수집 시각, 스키마 버전, 배치 또는 이벤트 ID를 남긴다. 이를 통해 중복 제거, 지연 분석, 재처리와 계보 추적이 가능해진다.
수집 성공률은 받은 건수만으로 판단하지 않는다. 원천 예상 건수, 누락 구간, 체크섬, 마지막 변경 시점, 오류 응답을 함께 확인한다. 시간이 다른 시스템을 결합할 때는 표준 시간대와 발생 시각·처리 시각을 구분한다.
4.1 공통 수집 메타데이터
| 메타데이터 | 목적 | 활용 예시 |
|---|---|---|
| 원천·원천 식별자 | 출처와 중복 기준 식별 | 재처리 시 동일 레코드 판정 |
| 발생·변경 시각 | 실제 사건·변화의 기준 시점 | 시간 창 집계, 증분 경계 |
| 수집·처리 시각 | 지연과 처리 흐름 측정 | 수집 지연·병목 분석 |
| 스키마·계약 버전 | 구조와 의미의 변경 추적 | 파서 선택, 호환성 검증 |
| 배치·파일·이벤트 ID | 실행 단위와 재처리 추적 | 중복 방지, 실패 범위 재실행 |
| 품질·검수 상태 | 검증 통과 여부 기록 | 격리·승인·재수집 결정 |
4.2 스키마 변경과 데이터 계약
원천 필드가 추가·삭제되거나 자료형·코드 의미가 바뀌면 수집은 성공해도 분석 결과가 잘못될 수 있다. 데이터 계약에는 필드 의미·자료형·필수 여부·시간대·허용 코드·변경 통지·호환성 원칙을 정할 수 있다.
| 변경 | 위험 | 대응 예시 |
|---|---|---|
| 선택 필드 추가 | 구버전 처리기가 무시 가능한지 불명확 | 허용 규칙과 버전 기록 |
| 필수 필드 삭제·이름 변경 | 파싱 실패 또는 값 누락 | 사전 통지, 호환 기간, 차단 |
| 자료형 변경 | 값 손실·변환 오류 | 스키마 검증, 격리, 명시적 변환 |
| 코드 의미 변경 | 값은 정상이나 해석이 틀림 | 코드 사전 버전, 적용일 관리 |
| 시간대 변경 | 시계열 순서·집계 왜곡 | 원천 시간대 보존, 표준화 규칙 |
스키마 변경을 자동으로 모두 허용하거나 모두 거부하지 않는다. 하위 호환 여부와 업무 영향에 따라 수용·격리·차단 기준을 정한다.
4.3 수집 품질 대사
| 품질 축 | 검증 질문 | 지표·근거 예시 |
|---|---|---|
| 완전성 | 받아야 할 범위와 레코드를 모두 받았는가? | 원천 대비 건수, 누락 기간·페이지 |
| 유일성 | 재전송·재처리로 중복 반영됐는가? | 원천 ID 중복률, 파일 ID |
| 적시성 | 허용 지연시간 안에 도착했는가? | 발생–수집 지연 분포 |
| 유효성 | 스키마·코드·범위 규칙을 만족하는가? | 파싱 실패율, 코드 위반률 |
| 일관성 | 원천·다른 시스템·집계와 맞는가? | 합계 대사, 참조키 매칭률 |
| 추적성 | 출처·버전·실행·변환을 재현할 수 있는가? | 계보, 체크섬, 실행 ID |
5. 사례 적용
상황: 관광 수요를 예측하기 위해 예약 데이터, 날씨 API, 후기 텍스트와 실시간 입장 이벤트를 모은다.
주어진 조건: 예약은 내부 정형 테이블, 날씨는 외부 반정형 응답, 후기는 비정형 텍스트, 입장 기록은 연속 이벤트다.
판단 과정: 각 원천의 출처·구조·갱신 주기·허용 지연을 별도로 정의한다. 예약은 수정 시각과 예약 ID를 기준으로 겹침 구간을 둔 증분 조회를 수행하고 취소·삭제 반영을 대사한다. 날씨는 호출 시각·예보 생성 시각·대상 시각과 API 버전을 저장하고 모든 페이지·지역의 완료 여부를 검증한다. 후기는 이용 조건을 확인한 배치 수집으로 출처·게시 시각·수집 시각을 남긴다. 입장은 고유 이벤트 ID와 발생·수집 시각, 체크포인트를 사용해 재전송에도 중복 반영되지 않도록 처리한다.
결론: 하나의 수집 기술로 통일하기보다 원천별 특성에 맞추고, 공통 메타데이터·스키마 버전·원천 대사·재처리 기준으로 통합한다. 실시간 입장 집계는 이후 배치 재대사로 누락·지연 이벤트를 보정할 수 있다.
오답 함정: 외부 API 응답을 언제나 정확한 사실로 보거나, 실시간 이벤트의 수신 시각을 실제 발생 시각과 같은 것으로 가정하지 않는다.
내부·외부는 데이터 원천의 축이고 정형·반정형·비정형은 형식의 축이다. 예를 들어 외부 API의 JSON은 원천 기준으로 외부, 형식 기준으로 반정형이므로 두 축을 같은 분류 목록처럼 섞지 않는다.
| 수집 구분 | 판단 기준 | 대표 사용 |
|---|---|---|
| 배치·스트림 | 허용 지연과 처리 연속성 | 정산·보고 / 경보·실시간 반응 |
| Push·Pull | 누가 전송을 시작하는가 | 웹훅 / API 주기 조회 |
| 전체·증분 | 매번 전체인지 변경분인지 | 초기 적재 / 일상 갱신 |
| CDC | 변경 로그를 포착하는가 | DB 삽입·수정·삭제 반영 |
수집 방식은 “최신 기술”이 아니라 지연 요구·원천 지원·변경 식별·재처리·비용으로 선택한다. 수집 대상 건수를 $N_{expected}$, 정상 수집 건수를 $N_{received}$라 하면 대사율은 분모와 기간을 명시해 계산한다.
시험 판단 포인트
- 내부·외부는 출처 축, 정형·반정형·비정형은 구조 축이다.
- 배치 수집은 주기적 묶음, 스트림 수집은 연속 이벤트에 적합하다.
- API는 호출 제한·버전·페이지 처리, 파일은 중복·부분 전송·스키마 변경을 점검한다.
- 발생 시각과 수집 시각, 전체 추출과 증분 추출을 구분한다.
- 수집 데이터에는 출처·스키마·배치 식별자 등 계보 정보를 남긴다.
- 배치·스트림과 push·pull, 전체·증분·변경 데이터 수집은 서로 다른 설계 축이다.
- 증분 기준점과 삭제 반영, 스키마·코드 의미 변경을 함께 관리한다.
자주 틀리는 부분
- 내부 데이터이면 품질과 권한 문제가 없다고 보지 않는다.
- JSON이라는 이유만으로 비정형 데이터로 분류하지 않는다.
- 스트림 수집에서는 중복이 발생하지 않는다고 가정하지 않는다.
- 공개 웹페이지의 데이터가 사용 조건과 법적 검토 없이 자유롭게 수집 가능하다고 판단하지 않는다.
- API가 HTTP 성공을 반환했다는 사실만으로 모든 페이지가 수집됐다고 보지 않는다.
- 정확히 한 번 처리된다는 표현만 믿고 식별자·체크포인트·멱등성 설계를 생략하지 않는다.
개념 확인 문제
문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.
01데이터 분류에 관해 올바르게 설명하시오.
내부 로그도 반정형 또는 비정형일 수 있다.
내부·외부는 출처를, 정형·반정형·비정형은 구조를 구분하는 서로 다른 축이다. 내부 애플리케이션 로그도 JSON이나 자유 텍스트 형태일 수 있고, 외부 데이터도 정형 표로 제공될 수 있다.
02배치와 스트림 수집의 차이를 비교하여 설명하시오.
배치는 정해진 주기의 묶음 수집에 적합하다.
배치는 일정 기간의 데이터를 묶어 처리하는 데 적합하다. 전체와 증분 방식 모두 가능하다. 스트림에서는 중복·순서·지연 이벤트를 관리해야 하며, 업무 목적에 따라 배치와 함께 사용할 수 있다.
03API 수집 검증 순서를 서술하시오.
접근·이용 조건 확인 → 호출·페이지 규칙 설계 → 원천 대비 건수 검증 → 변경 모니터링
외부 API는 먼저 접근 권한과 이용 조건을 확인한다. 호출 제한·페이지·재시도 규칙을 설계하고, 원천의 예상 건수와 수집 결과를 비교한 뒤 버전과 응답 구조 변화를 모니터링한다.
04이벤트의 발생 시각보다 수집 시각이 20분 늦는 경우가 있다. 어떻게 판단해야 하는지 서술하시오.
발생 시각과 수집 시각을 분리하고 지연 이벤트 처리 기준을 둔다.
이벤트가 실제 발생한 시간과 수집 시스템에 도착한 시간은 다를 수 있다. 두 시각을 보존해야 시간 창 집계와 지연 분석을 올바르게 수행할 수 있으며, 늦은 이벤트를 포함할 기준도 정할 수 있다.