Open KKambi opened 4 months ago
이번 챕터는 저희 조직에서 하는 일을 설명하는 부분이라서, 다른 챕터보다는 이해가 잘 되었고, 개인적으로는 현재 우리 조직의 설계와 비교하며 읽게 되었습니다. 담당자로서(?) 관련해서 책과 의견이 조금 다른 부분 등 의견을 공유해볼게요.
197p. API의 필터링 전략
이렇게 설계하면 모든 조합의 경우의 수를 필터 테이블에 넣어놔야 하는데 운영상 효율적인지 모르겠다.
문제가 되는 상황을 예를 들면, 대시보드에서 요청을 보낼 때, filter_id라는걸 알아야만 요청을 보낼 수 있게 되는데...
그리고 집계를 1분마다 하는데, 하나의 이벤트마다 여러개의 filter_id 조건을 각각 먹여서 여러개의 row로 풀어서 집계하는게 1분 안에 성능측면에서 가능한가..?도 의문
Parquet (파케이)
컬럼 방식으로 저장하는 데이터 파일
★대신 데이터 추가 시 불리함 (행 기반은 그냥 추가하면 되는데)
Star schema (별 모양의 스키마)
중심이 되는 팩트 테이블과 연결된 차원 테이블들이 존재한다.
핫스팟 해결 - Local Global Aggregation
왼쪽처럼 특정 집계 서비스에 데이터가 편향될 수 있다. 책에서는 스케일 아웃으로 대처했다.
color
에 따라 사전 집계를 수행했고, Global Agg에서 편향이 사라졌다.핫스팟 해결 - Split Distinct Aggregation
위와 같이 color를 group by 조건으로 사용하면서 + id를 distinct로 사용하려면 Local-Global Agg를 사용할 수 없다. id의 cardinality가 높으면 중복이 적어 편향은 여전히 발생한다.
Split Distinct는 각 미니 배치에서 사전 집계를 수행하지 않는다. 대신 id를 n개의 그룹으로 나눈다. 아래 슈도 코드를 보면 해쉬코드로 4개의 그룹으로 분할했다.