이벤트 시간과 프로세스 시간
- 이벤트 시간 (event time)
- 프로세스 시간 (process time)
프로세스 시간에 의한 분할
- 분산 스토리지에 데이터를 넣을 때엔, 프로세스 시간(=서버 처리 시간)을 사용하는 것이 일반적
- 풀 스캔 (full scan) : 다수의 파일을 모두 검색하는 쿼리
- 불필요하게 전체 검사를 수행하면 자원 낭비가 심각
- 이벤트 시간을 기준으로 집계하려면? -> 데이터 정렬 고려 필요
시계열 인덱스 (time-series index)
- 이벤트 시간에 대한 인덱스 생성
- 카산드라 등 시계열 인덱스 (time-series index)에 대응하는 분산 DB 활용
- 이벤트 시간으로 인덱스된 테이블 생성
- -> 짧은 범위의 특정 시간에 맞춘 데이터 집계를 빠르게 수행 가능해짐
- 장기적인 데이터 분석에서는 부적절
조건절 푸쉬다운 (predicate pushdown)
- ex) 일일 배치 처리로 이벤트 시간으로 데이터 정렬하여 열 지향 스토리지 변환
- 열 지향 스토리지는 컬럼 단위의 통계 정보를 이용하여 최적화 수행
- 컬럼의 최소/최대값 등 -> 시간이면 시작시간, 종료시간
- 어떤 파일, 어떤 부분에 데이터가 있는지 알 수 있음
- 이 통계를 이용해, 필요 최소한의 데이터만을 읽도록 하는 최적화가 조건절 푸쉬다운
- 단, 주기가 지나치게 짧은 경우 과도하게 잘게 분산되어 데이터 로드 부하가 커짐
시계열 테이블 (time-series table)
데이터 마트만 이벤트 시간으로 정렬하는 방안
- 데이터 수집 단계에선, 프로세스 시간만으로 데이터를 저장하고
- 데이터 마트를 단계에서 이벤트 시간으로 정렬하여 구축
- 파일이 조각나지 않고, 필요한 파일만 접근하도록 최적화
reference