본문 바로가기

오픈소스/ClickHouse

(6)
[ClickHouse] INDEX 구조와 동작 원리 - ③ Clickhouse의 특성 상 특정 column에 맞는 Index를 생성하는 방법이 아닌, Query에 맞는 Primary Key를 선언해야 합니다. 따라서, 사용하고자 하는 Query에 따라 Primary Key가 달려져야 하며, ClickHouse는 이를 충족할 세 가지 대안을 제시합니다. 1) Primary Key가 다른 Copy Table 생성 2) Primary Key가 다른 Materialize View 생성 3) 기존 Table에 Primary Key가 다른 Projection을 추가 먼저, 1) Primary Key가 다른 Copy Table 생성 하는 방법에 대해 알아봅니다. 위 그림은 UserID를 Index로 사용하는 Query와 URL을 Index로 사용하는 Query을 기준으로, ..
[ClickHouse] INDEX 구조와 동작 원리 - ② 전통적인 RDB에서는 PK Index 외에도 "보조" Index를 Create 해서 다른 Column에 대한 Index를 지원합니다. Click-House에서는 Skipping-indexes 라는 방법으로 이를 지원합니다. Data의 Block을 읽는 방법으로 Index를 활용하는 만큼, 일치하는 값이 없는 Data Block은 건너뛸 수(Skip) 있기 때문에 이를 통해 Skipping-indexes를 구현합니다. Skipping-indexes는 Skip 할 Data Block을 찾는 방법이 여러가지 있어서 상황에 맞게 방법을 바꿀 수 있습니다. 다만 이번에는 그 중에서 Min-Max Type에 한정하여 설명합니다. Click-House에서는 Table이 생성되면, PK의 값에 따라 데이터를 granu..
[ClickHouse] INDEX 구조와 동작 원리 - ① 우선, 전통적인 RDB의 Index와 차이를 알아야 합니다. 전통적인 관계형 DBMS에서 Index는 테이블의 record당 하나의 항목을 포함합니다. 곧 record 수 만큼의 항목을 포함하는 Index가 됩니다. 이런 Index를 B-Tree 알고리즘을 통해 특정 행을 빠르게 찾게 되므로 조회 및 업데이트 의 효율성을 높입니다. 이에 반해 ClickHouse는 대용량 데이터를 처리하도록 설계되었기 때문에 전혀 다른 방식을 사용하여 Index를 운용합니다. 매우 큰 규모를 다루기 때문에 Disk 및 Memory 효율성이 최우선으로 고려됩니다. 이에 따라 모든 record를 Indexing하지 않고, record를 Block으로 나누어 Block 당 하나의 Index로 운용 합니다. (이하 Sparse ..
[ClickHouse] Data 구조 Clickhouse는 모든 데이터를 File로 저장(Disk)해서 사용한다. Database, Table을 Directory로 구성하고 해당 경로 안에 데이터를 컬럼 단위로 쪼개어 .bin 확장자 파일로 저장한다. ex ) [컬럼명].bin 또한, 물리적인 위치를 찾아가기 위해 .mrk2 확장자를 갖는 파일을 저장하는데, 이 파일은 해당 컬럼의 Index 정보와 블록 위치를 찾아가기 위한 매핑 파일이다. ex ) [컬럼명].mrk2 열 단위로 데이터를 모아서 저장하는, 위와 같은 데이터 구조로 인해, 특정 열에 대한 접근 성능을 향상시키고 전체 열에 대한 로드를 없애면서 자원 사용량을 획기적으로 줄인다. 이 밖에도, Index에 대한 정보를 담는 파일(.idx), 테이블을 생성한 DDL 문을 담고 있는 ..
[ClickHouse] Shard & Replica 개념 ClickHouse는 여타 DBMS와는 다르게 ClickHouse keeper와 zookeeper를 통한 클러스터링을 지원한다. 클러스터 구성이 가능하기에 분산과 복제의 개념 또한 존재한다. 다만, 그 개념이 일반적인 클러스터 구성(Hadoop, Ignite, ES와 같은)과는 약간의 차이가 있다. ClickHouse는 Shard(샤드)와 Replica(레플리카)라는 개념으로 분산과 복제를 제공한다. 아래는 공식 홈페이지에서 설명하는 Shard와 Replica에 대한 정의이다. - Shard : 데이터의 하위 집합. 최소 하나의 Shard가 반드시 있으며, 여러 서버에 분할하지 않으면 데이터는 하나의 Shard에 저장된다. 단일 서버의 용량을 초과하는 경우 여러 서버에 걸쳐 데이터를 Sharding하여 ..
Click House 개요 최근 Log를 태깅하게 되면서 금융권의 방대한 Log 데이터를 분석해야 할 필요가 생겼다. OLAP 분석을 기반으로 하는 특성상, 기존의 RDB로는 다룰 수 없는 성능적인 한계가 명확하여 Click House라는 열 기반 데이터베이스를 알아보고, 도입하기로 결정했다. Click House는 고 성능 OLAP 분석을 목적으로 둔 열 기반 SQL DBMS 라고 요약할 수 있겠다. 기존의 DBMS는 행을 기준으로 데이터를 적재하기 때문에 각 열의 모든 데이터가 물리적인 묶음으로 저장되는 반면, 열 기반 DBMS는 열을 기준으로 데이터를 적재하고, 데이터를 추출할 때에도 SELECT 대상에 해당하는 열의 데이터만 꺼내어 사용하기 때문에 훨씬 고속의 처리가 가능하다는 장점이 있다. Click House는 위와 같..