들어가기 전 이 글은 카프카 스트림즈와 ksqlDB 정복의 11장을 공부하며 작성한 글입니다. 11.1 데이터 보강 (Data Enrich) 데이터 보강은 Raw Data에 새로운 데이터를 추가해서 더 의미있는 데이터를 만들어내는 행위를 의미한다. 단순히 데이터를 변경하는 작업과는 다르다. 데이터 보강의 대표적인 행위는 Join이 있다. 11.1.1 Join RDBMS에는 여러 테이블이 존재하고 각 테이블에서 데이터를 가져와 Join해서 의미있는 데이터를 만들어낸다. 마찬가지로 ksqlDB에서는 여러 Stream / Table에 데이터가 존재하고 여기서 메세지를 가져와 Join해서 의미있는 데이터를 만들어 낼 수 있다. Join은 두 가지 차원으로 분리할 수 있다. Join에 사용하는 식 : Inner,..
들어가기 전 이 글은 카프카 스트림즈와 ksqlDB 정복 10장을 공부하며 작성한 글입니다. 10.1 데이터 타입 ksqlDB는 여러 형태의 데이터 타입을 지원해준다. 타입 설명 ARRAY 동일 데이터 타입 요소들의 집합. → ARRAY BOOLEAN True / False INT 32비트 부호가 있는 정수 BIGINT 64비트 부호가 있는 정수 DOUBLE 754 부동 소수점 수 DECIMAL(precision, scale) 전체 자릿수(precisio와 소수점 자릿수 MAP(key-type, element-type) 각 데이터 타입과 일치하는 키와 값을 포함하는 객체 STRUCT 구조체 STRUCT VARCHAR / STRING 유니코드 문자열 (UTF8) 기본적으로는 쿼리를 생성할 때 각각의 컬럼명..
들어가기 전 이 글은 Kafka Streams와 ksqlDB 정복 8장을 공부하며 작성한 글입니다. 8.1 ksqlDB 시작하기 ksqlDB는 카프카 스트림즈 위에 한층 더 추상화 된 녀석이다. ksqlDB와 카프카 스트림즈는 스트리밍 처리 도구로 이해를 하면 되는데 각 컴포넌트마다 서로 다른 특성이 있기 때문에 필요한 곳에 적절히 사용할 수 있어야 한다. ksqlDB는 SQL 문법으로 되어있어 진입장벽이 낮은 대신에 복잡한 스트리밍 로직을 처리하는데 있어서는 한계가 존재한다. 반면 카프카 스트림즈는 진입장벽이 상대적으로 높은 대신 더 많은 자유도를 제공한다. 그리고 ksqlDB는 카프카 스트림즈가 한층 더 추상회 된 도구이기 때문에 카프카 스트림즈를 이해하는 것이 ksqlDB를 운영하는데 있어 큰 도움..
Pseudo Column Pseudo Column은 Table / Stream을 생성할 때 선언하지 않았지만 SELECT문으로 불러올 수 있는 Column을 의미한다. Pseudo Column은 레코드의 생성 시점의 메타정보를 담고 있다. *를 이용해서 불러올 때는 불러지지 않지만, 명시적으로 이름을 표시해 줄 경우 SELECT 문에서 확인할 수 있다. Pseudo Column 의미 HEADERS 카프카 레코드의 헤더에 있던 값이 채워진 열이다. ROWOFFSET Source Record의 Offset을 의미한다. (Source Node에서 받아왔을 때의 Offset 의미?) ROWPARTITION Source Record의 Partition을 의미한다. (Source Node에서 받아왔을 때의 Pari..
들어가기 전 ksqlDB는 Kafka Streams 위에 구현되어있다. 따라서 ksqlDB의 동작 과정을 low한 레벨로 공부하고 싶다면 Kafka Streams를 공부해야한다. 여기서는 ksqlDB에서 이야기 하는 ksqlDB Server / ksqlDB Client 구조를 살펴보고자 한다. ksqlDB Server 클러스터 ksqlDB는 클러스터 단위로 구성될 수 있다. ksqlDB Cluster마다 고유한 ksql.service.id를 가진다. 같은 ksql.service.id만이 같은 Context를 가지고 부하를 분산할 수 있고, 서로 다른 ksql.service.id를 가지는 클러스터끼리는 격리되어있다. 같은 ksql.service.id를 가지는 것은 같은 consumer group의 멤버인 ..