Apache Kafka ‐ Group by와 Mview - thought-corner/Backend-PlayGround GitHub Wiki
KSQLDB Aggregate Functions
Group by
Group by절에 기술된 컬럼 값으로 그룹화한 뒤 집계(Aggregation) 함수와 함께 사용되어 그룹화된 집계 정보를 제공한다.
Group by절에 기술된 컬럼 값으로 반드시 1의 집합을 갖게 된다.
Select절에는 Group by절에 기술된 컬럼과 집계 함수만 사용될 수 있다.
latest_by_offset과 earliest_by_offset 이해
earliest_by_offset : 가장 먼저 들어온 데이터를 선택한다.
latest_by_offset : 가장 나중에 들어온 데이터를 선택한다.
Mview(Materialized View)
Mview는 대량의 데이터에 대한 분석 SQL을 보다 빠르게 추출하기 위해서 사용된다.
Mview 쿼리에 사용되는 테이블들의 변경사항을 즉각 또는 느리게 변경 로그를 적용하여 Mview에 반영한다.
- 사용자는 대용량 분석 SQL을 원본 테이블이 아닌
Mview를 통해 조회하여 보다 신속하게 결과 추출이 가능하다.
View와 다르게 Mview는 데이터가 저장되는 실제적인 Storage를 가진다.
Mview 쿼리에 사용되는 테이블들의 변경사항을 실시간으로 즉각 반영하면서 대용량 데이터의 Mview의 경우 DB 성능 전체에 큰 영향을 미치는 현상이 발생할 수 있다.
Mview CTAS
Create Table customer_activity_mv01
with (
KAFKA_TOPIC = 'customer_activity_mv01_topic',
KEY_FORMAT = 'KAFKA',
VALUE_FORMAT = 'JSON',
PARTITIONS = 3
)
As
Select
customer_id,
avg(activity_point) as avg_point
from customer_activity_stream group by customer_id;
Mview CTAS 데이터 처리 방법
Mview 생성 시 auto.offset.reset값에 따른 유의사항
Group by절에 여러 컬럼이 있는 Mview 생성 방법
as_value()를 이용하여 Mview 생성 시 Group by 컬럼을 토픽의 value로 만들기
Mview CTAS에서 RocksDB 동작 메커니즘
Mview CSAS
Mview CSAS 데이터 처리 방법
Group by의 Repartition