[빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (3)

2023. 9. 20. 23:57·Data Engineering/책 리뷰

4-3. 시계열 데이터의 최적화

프로세스 시간과 이벤트 시간

▪ 스마트 폰에서 데이터를 수집할 때 메시지가 며칠 늦게 도착하는 경우가 발생, 지연을 예측해서 데이터 분석을 고려해야 함

▪ 이벤트 시간(event time): 클라이언트 상에서 메시지가 생성된 시간 

▪ 프로세스 시간(process time): 서버가 처리하는 시간 

▪ 데이터 분석의 대상이 되는 시간은 '이벤트 시간'

프로세스 시간에 의한 분할과 문제점

이벤트 시간과 프로세스 시간의 차이

 

▪ 늦게 도달하는 데이터가 있기 때문에 실제에 가까운 집계 결과를 위해서는 '이벤트 시간'보다 며칠 정도 지난 시점에서 집계해야 함

 

프로세스 시간을 사용해서 파일을 작성하기

 

▪ 분산 스토리지에 데이터를 넣는 단계에서는 이벤트 시간이 아니라 '프로세스 시간'을 사용

▪ 파일에 다수의 이벤트 시간 별 과거 데이터가 포함됨 

▪ 특정 일에 발생한 이벤트를 집계하고 싶을때, 모든 파일을 열고 해당 날짜의 데이터만 뽑아내야 함

▪ 이는 데이터가 이벤트 시간으로 정렬되지 않아 모든 데이터를 로드하므로 시간과 자원 낭비가 큼 

▪ 다수의 파일을 모두 검색하는 쿼리를 '풀 스캔(full scan)'이라 부름, 이는 시스템의 부하를 크게 높임

시계열 인덱스

▪ 이벤트 시간에 대해 인덱스를 만들어 데이터를 정렬

▪ Cassandra와 같은 '시계열 인덱스(time-series index)'에 대응하는 분산 데이터베이스를 이용

▪ 시계열 인덱스를 사용하면 짧은 범위의 특정 시간에 맞춘 데이터 집계를 빠르게 실행할 수 있음

▪ 하지만 장기간에 걸친 대량의 데이터를 집계하는 경우 분산 데이터베이스가 효율적이지 않음

▪ 장기적인 데이터 분석에서는 집계 효율이 높은 열 지향 스토리지를 사용 

조건절 푸쉬다운

이벤트 시간으로 정렬하기

 

▪ 매일 한 번씩 도착한 데이터를 배치 처리로 변환하는 것을 고려 

▪ 이벤트 시간으로 데이터를 정렬한 후에 열 지향 스토리지로 변환

 

조건절 푸쉬다운에 의한 최적화

 

▪ 열 지향 스토리지는 '칼럼 단위의 통계 정보'를 이용하여 최적화가 이루어짐 ex) 시간이면 각 칼럼의 시작 시각과 종료 시각이 모든 파일에 메타 정보로 저장

▪ 해당 통계를 이용하여 최소한의 데이터를 읽도록 하는 최적화를 '조건절 푸시 다운(predicate pushdown)'이라고 함 

이벤트 시간에 의한 분할

시계열 테이블에 의한 최적화

 

▪ 프로세스 시간으로 파일을 나누고 있는 한, 동일 이벤트 시간 데이터가 다수의 파일에 분산되어 많은 파일을 열어야함

▪ 이벤트 시간을 사용하여 테이블을 분할

▪ 시간을 이용하여 분할된 테이블을 '시계열 테이블(time-series table)'이라고 함

▪ 새로 도착한 데이터를 새로운 파일로 만드는 경우 대량의 작은 파일이 만들어지게 되어 쿼리 성능이 악화

▪ 작은 데이터를 효율적으로 추가할 분산 데이터베이스를 만들거나 너무 오래된 데이터는 버리는 것이 필요

데이터 마트를 이벤트 시간으로 정렬하기

데이터 마트를 재생성

 

▪ 데이터 수집 단계에서는 프로세스 시간만을 사용하여 데이터를 저장

▪ 데이터 마트를 만드는 단계에서 이벤트 시간에 의한 정렬을 함

▪ 그러면 파일이 조각나는 일도 없고, 최적의 데이터 마트를 유지할 수 있음 

 

[참고]

빅데이터를 지탱하는 기술(니시다 케이스케)


 

'Data Engineering > 책 리뷰' 카테고리의 다른 글

[빅데이터를 지탱하는 기술] 5. 빅데이터의 파이프라인 (1)  (2) 2023.11.12
[빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (4)  (0) 2023.10.08
[빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (2)  (0) 2023.09.12
[빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (1)  (0) 2023.09.08
[빅데이터를 지탱하는 기술] 3. 빅데이터의 분산 처리 (3)  (0) 2023.09.07
'Data Engineering/책 리뷰' 카테고리의 다른 글
  • [빅데이터를 지탱하는 기술] 5. 빅데이터의 파이프라인 (1)
  • [빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (4)
  • [빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (2)
  • [빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (1)
Doodo
Doodo
  • Doodo
    Doodo
    Doodo
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • CS (17)
        • Network (11)
        • Database (6)
      • Language (19)
        • Python (11)
        • SQL (6)
        • R (2)
      • Linux (17)
      • DevOps (35)
        • Git (7)
        • Docker (8)
        • Kubernetes (9)
        • GCP (4)
        • AWS (7)
      • Data Engineering (50)
        • 책 리뷰 (14)
        • Airflow (35)
        • Redis (1)
      • DBMS (21)
        • CUBRID (21)
      • ML & DL (2)
      • 코딩테스트 (24)
      • 프로젝트 (7)
        • 서울시 대기현황 데이터 적재 프로젝트 (4)
        • CryptoStream (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Doodo
[빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (3)
상단으로

티스토리툴바