InfoGrab DocsInfoGrab Docs

ClickHouse 사용 및 테이블 설계 입문

GitLab에서 ClickHouse를 사용하는 방법과 PostgreSQL과의 차이점, 인덱스, 데이터 타입, 샤딩, 구체화된 뷰, 보안 기본 설정 등 테이블 설계 원칙을 설명합니다.

PostgreSQL과의 차이점 # 소개 페이지는 ClickHouse에 대한 개요를 파악하기에 매우 유용합니다. ClickHouse는 PostgreSQL과 같은 전통적인 OLTP(온라인 트랜잭션 처리) 데이터베이스와 많은 차이점이 있습니다. 기반 아키텍처가 다소 다르며, 처리 방식이 전통적인 데이터베이스보다 훨씬 더 CPU 집약적입니다. ClickHouse는 불변성(immutability)이 핵심 구성 요소인 로그 중심 데이터베이스입니다. 이러한 접근 방식의 장점은 잘 문서화되어 있습니다. 자세한 내용은 불변 데이터 저장소의 부상 을 참조하세요. 그러나 이로 인해 업데이트가 훨씬 어려워집니다. UPDATE/DELETE 지원을 제공하는 작업에 대해서는 ClickHouse 문서 를 참조하세요. 이러한 작업은 자주 실행되지 않아야 한다는 점이 주목할 만합니다. 이 점은 테이블을 설계할 때 중요하게 고려해야 합니다. 다음 두 가지 경우 중 하나입니다: 업데이트가 필요하지 않음 (최선의 경우) 업데이트가 필요한 경우, 쿼리 실행 중에 실행해서는 안 됨 ACID 호환성 # ClickHouse는 트랜잭션 지원에 대해 다소 다른 관점을 가지고 있으며, 특정 테이블에 삽입된 데이터 블록까지만 보장이 적용됩니다. 자세한 내용은 트랜잭션(ACID) 지원 문서를 참조하세요. 여러 테이블에 걸친 트랜잭션 지원은 구체화된 뷰(materialized views)에서만 지원되므로, 단일 쓰기 작업에서 여러 삽입을 수행하는 것은 피해야 합니다. ClickHouse는 분석 쿼리를 위한 최고 수준의 지원을 제공하는 데 특화되어 있습니다. 집계(aggregation)와 같은 연산은 매우 빠르며, 이러한 기능을 강화하는 여러 가지 특징이 있습니다. ClickHouse에는 집계의 세부 사항 을 다루는 유용한 블로그 게시물이 있습니다. 기본 인덱스, 정렬 인덱스 및 딕셔너리 # ClickHouse에서 인덱스를 이해하려면 “ClickHouse 기본 인덱스의 실용적인 소개” 를 읽어보는 것이 강력히 권장됩니다. 특히 ClickHouse의 데이터베이스 인덱스 설계가 PostgreSQL과 같은 트랜잭션 데이터베이스의 인덱스와 어떻게 다른지 에 주목하세요. 기본 인덱스 설계는 쿼리 성능에 매우 중요한 역할을 하므로 신중하게 설정해야 합니다. 전체 데이터 스캔은 더 오래 걸리기 때문에, 거의 모든 쿼리가 기본 인덱스에 의존해야 합니다. MergeTree 테이블 엔진(ClickHouse의 기본 테이블 엔진)에서 인덱스가 쿼리 성능에 미치는 영향을 알아보려면 쿼리의 기본 키 및 인덱스 문서를 읽어보세요. ClickHouse의 보조 인덱스는 다른 시스템에서 제공되는 것과 다릅니다. 데이터 블록을 건너뛰는 데 사용되므로 데이터 스킵 인덱스(data-skipping indexes)라고도 불립니다. 데이터 스킵 인덱스 문서를 참조하세요. ClickHouse는 외부 인덱스로 사용할 수 있는 “딕셔너리(Dictionaries)” 도 제공합니다. 딕셔너리는 메모리에서 로드되며 쿼리 런타임에 값을 조회하는