ClickHouse 25.11 Community Call

ClickHouse 25.11 Community Call

날짜
November 25, 2025
선택
Release Call
URL
https://clickhouse.com/company/events/v25-11-community-release-call
태그

ClickHouse 25.11 릴리즈 요약

릴리즈 일자: 2024년 11월 25일 (Thanksgiving Release)

주요 수치: 24개 신규 기능 | 27개 성능 최적화 | ~100개 버그 수정

1. 새로운 함수 및 시스템 테이블

system.unicode 테이블

유니코드 코드 포인트를 검색하고 탐색할 수 있는 새로운 시스템 테이블입니다. 120개의 컬럼으로 스크립트 종류, 문자 속성 등 다양한 메타데이터를 제공합니다.

SELECT * FROM system.unicode WHERE name LIKE '%LEAF%'

flipCoordinates 함수

Point, LineString, Ring, Polygon, MultiPolygon 등 지리 데이터 타입의 좌표(위도/경도)를 뒤집는 함수입니다. PostgreSQL의 ST_FlipCoordinates와 호환되며, Google Maps 등 시각화 도구와의 연동 시 좌표 순서 차이를 해결합니다.

arrayRemove 함수

PostgreSQL 호환성을 위한 배열 요소 제거 함수입니다. 기존 arrayFilter보다 단순한 케이스에서 사용이 간편합니다.

cume_dist 윈도우 함수

누적 분포를 계산하는 윈도우 함수로, Spark, Databricks, Snowflake, PostgreSQL과 동일하게 동작합니다. percent_rank와 유사하지만 계산 방식이 약간 다릅니다.

midpoint 함수

여러 인자의 중간값을 반환하며, Date/DateTime 타입도 지원합니다.

SELECT midpoint(toDate('2024-11-25'), toDate('2025-01-01'))
-- 결과: 2024-12-13

argAndMin / argAndMax 함수

기존 argMin/argMax와 달리 인자와 최소/최대값을 튜플로 함께 반환합니다. 메모리 효율성이 개선되고 문법이 더 자연스럽습니다.

-- 기존 방식
SELECT argMax((town, price), price) FROM uk_price_paid

-- 새로운 방식 (더 효율적)
SELECT argAndMax(town, price) FROM uk_price_paid

2. 성능 최적화

Projection을 인덱스로 활용

전체 데이터를 복제하지 않고 _part_offset만 저장하는 경량 프로젝션을 생성할 수 있습니다.

ALTER TABLE hits ADD PROJECTION p_time
(SELECT _part_offset ORDER BY EventTime)
구분
저장 공간
쿼리 성능
원본 테이블
13 GB
45ms
Full Projection
38.5 GB
16ms
Index Projection
14 GB (+7%)
27ms

Projection의 DISTINCT 쿼리 최적화

GROUP BY용 프로젝션이 이제 DISTINCT 쿼리도 가속합니다.

소규모 키 GROUP BY 병렬화

8비트나 16비트 같은 작은 정수로 그룹핑하면서 uniqExact 같은 무거운 집계를 수행할 때, 최종 병합 단계가 병렬화되었습니다.

버전
실행 시간
25.10
4.5초
25.11
2.0초

대규모 테이블 메타데이터 메모리 절감

동일한 컬럼 정의를 여러 데이터 파트에서 공유하도록 변경했습니다. CI 로그 클러스터(2,000개 테이블, 27,000개 파트, 21조 레코드)에서 메타데이터 메모리를 12GB 절약했습니다.

대용량 외부 파일 분산 처리

S3의 단일 대용량 파일이나 소수의 큰 파일을 여러 서버에서 row group 단위로 병렬 처리할 수 있습니다.

3. 주요 새 기능

Fractional LIMIT/OFFSET

정수 대신 비율로 지정할 수 있습니다.

-- 결과의 25% 반환
SELECT * FROM table LIMIT 0.25

-- 중간 지점부터 100개
SELECT * FROM table OFFSET 0.5 LIMIT 100

User Impersonation

한 사용자로 인증한 뒤 다른 사용자 권한으로 쿼리를 실행할 수 있습니다.

GRANT IMPERSONATE ON user_b TO user_a;

-- user_a로 인증 후
SET ROLE user_b;
SELECT * FROM sensitive_table; -- user_b 권한으로 실행

Geometry 데이터 타입

Point, LineString, Polygon 등을 모두 담을 수 있는 통합 타입입니다.

CREATE TABLE geo_data (shape Geometry) ENGINE = MergeTree ORDER BY tuple();
INSERT INTO geo_data VALUES (readWKT('POINT(1 2)'));
INSERT INTO geo_data VALUES (readWKT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'));

자동 TLS 인증서 프로비저닝

Let's Encrypt, ZeroSSL 등과 HTTP 챌린지로 연동하여 자동으로 인증서를 발급받습니다. ClickHouse Keeper를 통해 분산 클러스터의 여러 노드가 인증서를 공유합니다.

Naive Bayes 텍스트 분류

바이트나 토큰 빈도 기반의 경량 분류 모델을 SQL에서 직접 사용합니다.

-- 언어 감지 예시
SELECT url, naiveBayesClassifier(text) AS language_class
FROM web_pages
WHERE language_class = 1 -- 중국어

Microsoft Fabric OneLake 카탈로그 지원

Iceberg REST 카탈로그와 호환되는 OneLake에 연결하여 Iceberg 테이블을 쿼리할 수 있습니다.

CREATE DATABASE onelake_db
ENGINE = DataLakeCatalog('https://onelake.dfs.fabric.microsoft.com/...')
SETTINGS warehouse_id='...', tenant_id='...', client_id='...', client_secret='...'

4. S3 가상 컬럼 추가

외부 파일 쿼리 시 새로운 _tags 가상 컬럼이 추가되었습니다.

컬럼
설명
_path
전체 파일 경로
_file
파일명
_size
파일 크기
_time
수정 시간
_etag
수정 해시
_tags (신규)
S3 객체 태그 (Map)

5. 에코시스템 업데이트

프로젝트
업데이트 내용
ClickStack
알림 기능 추가 (이메일, Slack 등)
ClickPipes
Azure Blob Storage GA 전환
chDB 3.7.1
메모리 할당자 및 Arrow 최적화로 ~2배 성능 향상
LibreChat
ClickHouse에 인수, 오픈소스 유지
커넥터
Kafka, Spark, Flink, DBT 업데이트

6. 데모 프로젝트

stockhouse - 암호화폐와 주식 시장의 실시간 분석 데모 (50ms 새로고침 지원)

velocity.clickhouse.com - GitHub 저장소 활동 비교 분석 도구

7. Q&A 하이라이트

Q: 사용자/역할을 다른 노드로 복제하는 방법? A: Keeper 기반 접근 스토리지를 사용하면 클러스터 전체에서 자동으로 동기화됩니다.

Q: Full-text Search 상태? A: 현재 Private Preview 단계이며, 25.12에서 Beta로 승격될 가능성이 있습니다.

Q: Let's Encrypt 인증서 저장 방식? A: Keeper에만 저장되며 파일 시스템에는 저장되지 않을 것으로 예상됩니다.

8. 다음 릴리즈

25.12 - 크리스마스 전 발표 예정