Skip to content

[Volume 2][Chapter 06] Q&A #22

@KKambi

Description

@KKambi

Parquet (파케이)

제목 없음
컬럼 방식으로 저장하는 데이터 파일

  • 압축 효율 증가
  • 컬럼별로 유리한 인코딩 사용 가능
  • 필요한 컬럼의 데이터만 조회하기 쉬움
  • 쿼리할 때 개연성이 없는 데이터를 신속하게 건너뛸 수 있음

★대신 데이터 추가 시 불리함 (행 기반은 그냥 추가하면 되는데)


Star schema (별 모양의 스키마)

제목 없음

중심이 되는 팩트 테이블과 연결된 차원 테이블들이 존재한다.

  • 정규화 X (중복 O)
  • 팩트테이블
    • 사실을 포함하는 수치 정보 (낮은 수준의 데이터)
    • 차원 테이블에 매핑되는 외래 키

핫스팟 해결 - Local Global Aggregation

w
왼쪽처럼 특정 집계 서비스에 데이터가 편향될 수 있다. 책에서는 스케일 아웃으로 대처했다.

  • Local-Global Agg는 집계 노드로 보내기 전, 미니 배치에서 사전 집계를 수행하는 방법
  • 오른쪽에서 color에 따라 사전 집계를 수행했고, Global Agg에서 편향이 사라졌다.

핫스팟 해결 - Split Distinct Aggregation

w2
위와 같이 color를 group by 조건으로 사용하면서 + id를 distinct로 사용하려면 Local-Global Agg를 사용할 수 없다. id의 cardinality가 높으면 중복이 적어 편향은 여전히 발생한다.


w3
Split Distinct는 각 미니 배치에서 사전 집계를 수행하지 않는다. 대신 id를 n개의 그룹으로 나눈다.
아래 슈도 코드를 보면 해쉬코드로 4개의 그룹으로 분할했다.

# Apache Flink SQL
SELECT color, SUM(cnt)
FROM (
    SELECT color, COUNT(DISTINCT id) as cnt
    FROM T
    GROUP BY color, MOD(HASH_CODE(id), 4)
)
GROUP BY color

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions