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