https://db-engines.com/en/ranking
DB-Engines Ranking
Popularity ranking of database management systems.
db-engines.com
1. Oracle
2. MySQL
4. PostgreSQL
...
37. Spark SQL
39. ClickHouse(1년 내에 7위 상승; Naver, Kakao에서도 활용중)
관련 참고할만한 자료
1) https://m.blog.naver.com/hanajava/220970015978
ClickHouse : 새로운 오픈 소스 칼럼 형식 데이터베이스
ClickHouse : 새로운 오픈 소스 칼럼 형식 데이터베이스 알렉산더 루빈 | 2017 년 2 월 ...
blog.naver.com
2) https://byline.network/2022/12/1209_01/
카카오가 데이터 분석에 쓰는 툴은? - Byline Network
카카오의 데이터 분석 노하우가 공개됐다. 클릭하우스(Clickhouse)를 적용해 수천억건의 세그먼트도 수초 이내에 분석하도록 성능을 높였다는 게 카카오의 설명이다. 9일 카카오는 개발자 콘퍼런
byline.network
3) http://117.52.129.49/helloworld/9099561
-> Kudu 사용
뭔가.. LSM트리기반,,
느아악 그냥 MySQL이 나으려나
데이터를 하루에 한 번씩 쌓아서 분석하는 작업을 수행한다면, 데이터베이스 선택은 여러 가지 요소를 고려해야 합니다. ClickHouse, SQLite 및 MySQL은 각각 장단점을 가지고 있으므로 사용 사례와 요구 사항에 따라 적합한 옵션을 선택해야 합니다.
- ClickHouse:
- ClickHouse는 대량의 데이터를 빠르고 효율적으로 분석하는 데 특화되어 있습니다. 열 지향(columnar) 데이터 저장 방식을 사용하여 데이터 압축과 병렬 처리를 지원합니다.
- 매일 쌓이는 대량의 데이터를 처리하는 데 ClickHouse는 효과적일 수 있습니다. 하지만 간단한 데이터 수집 작업에는 비용 및 복잡성이 높을 수 있습니다.
- SQLite:
- SQLite는 경량의 관계형 데이터베이스 시스템으로서, 파일 기반 저장 방식을 사용합니다. 단일 파일 내에 데이터를 저장하므로 설치 및 관리가 간단합니다.
- 작은 규모의 데이터 수집 및 분석 작업에 적합합니다. 매일 쌓이는 양이 크지 않다면 SQLite도 고려할 만합니다.
- MySQL:
- MySQL은 대표적인 오픈 소스 관계형 데이터베이스 시스템으로, 다양한 규모의 작업에 사용됩니다. 트랜잭션 처리와 성능에 중점을 둡니다.
- 매일 쌓이는 데이터 양이 중간 정도인 경우 MySQL도 고려해볼 수 있습니다. 확장성과 다양한 기능을 제공합니다.
종합적으로, 매일 쌓이는 데이터 양과 분석 작업의 복잡성에 따라 선택할 데이터베이스가 달라질 수 있습니다. 데이터 양이 크고 복잡한 분석을 수행해야 한다면 ClickHouse를 고려해보세요. 작은 규모의 데이터 수집 작업이라면 SQLite가 간단하고 효율적일 수 있습니다. MySQL은 중간 정도의 규모의 작업에 적합한 선택지일 수 있습니다.
저장시 장점
열 지향 데이터베이스와 행 지향 데이터베이스 간에 CSV로 추출하는 작업의 성능 차이는 일반적으로 데이터베이스 시스템과 작업 환경에 따라 다를 수 있습니다. 그러나 일반적으로는 열 지향 데이터베이스가 CSV로 추출하는 작업에서 행 지향 데이터베이스보다 빠를 가능성이 높습니다. 이는 열 지향 데이터베이스의 특성과 작업 패턴에 기인한 것입니다.
열 지향 데이터베이스의 성능 이점:
- 컬럼 스토리지: 열 지향 데이터베이스는 각 컬럼을 개별적으로 저장하고 압축하여 저장합니다. 따라서 필요한 컬럼만 로드하여 작업을 수행하므로, CSV로 추출할 때 필요한 데이터만 빠르게 접근할 수 있습니다.
- 집계 작업: 열 지향 데이터베이스는 대량의 데이터에 대한 집계 작업을 빠르게 수행할 수 있습니다. CSV로 추출할 때도 집계 작업을 데이터베이스 내부에서 수행하면서 결과를 빠르게 얻을 수 있습니다.
- 압축: 열 지향 데이터베이스는 열 단위로 압축을 수행하므로, CSV로 추출할 때도 압축된 형태로 데이터를 저장하고 전송할 수 있습니다.
- 배치 처리: 열 지향 데이터베이스는 대량의 데이터를 효율적으로 처리할 수 있는 배치 처리 기능을 제공합니다. 이는 CSV로 추출하는 작업에도 성능상 이점을 제공할 수 있습니다.
하지만 데이터의 양, 작업 패턴, 하드웨어 등의 요소에 따라 성능 차이가 달라질 수 있습니다. 따라서 실제 작업 환경에서 벤치마크 테스트를 수행하여 어떤 데이터베이스 시스템이 CSV로 추출 작업을 더 빠르게 수행하는지 확인하는 것이 좋습니다.
네, 열 지향 데이터베이스도 기존의 행 기반 데이터를 저장할 수 있습니다. 열 지향 데이터베이스는 주로 분석 작업에 특화되어 있지만, 행 기반 데이터를 저장하는 것도 가능합니다. 이를 통해 필요한 데이터를 효율적으로 조회하고 분석할 수 있습니다.
다음은 ClickHouse를 사용하여 행 기반 데이터를 저장하는 예시 코드입니다. 이 코드는 ClickHouse 클라이언트 라이브러리인 clickhouse-driver를 사용하여 Python으로 작성되었습니다. 먼저, pip install clickhouse-driver 명령으로 ClickHouse 드라이버를 설치하세요.
ClickHouse의 분산 테이블 저장 구조는 트리 형태로 구성되어 있습니다. 이 트리 구조는 ClickHouse의 데이터 엔진 역할을 수행하며, 데이터를 효율적으로 분산 저장하고 조회하는 데 사용됩니다. 분산 테이블의 저장 구조를 이해하기 위해서는 ClickHouse의 내부 동작 방식에 대한 개념을 이해하는 것이 도움이 됩니다.
ClickHouse의 분산 테이블 저장 구조에는 여러 개념이 포함되어 있습니다:
- Shard(샤드): 샤드는 물리적 데이터 저장 단위입니다. 각 샤드는 클러스터의 서로 다른 노드에 분산되어 저장됩니다. 여러 개의 샤드가 모여 하나의 분산 테이블을 구성합니다.
- Replica(레플리카): 레플리카는 같은 샤드의 복제본을 나타냅니다. 클러스터 내에서 데이터의 고가용성을 보장하기 위해 레플리카를 사용할 수 있습니다.
- 분산 키: 분산 테이블의 데이터가 어떤 샤드에 저장될지 결정하는 역할을 하는 열 또는 열의 조합입니다. 이를 통해 데이터가 골고루 분산되어 저장됩니다.
- MergeTree 엔진: MergeTree 엔진은 ClickHouse에서 데이터를 효율적으로 저장하고 관리하는 역할을 합니다. 데이터가 샤드에 저장되며, MergeTree 엔진은 데이터의 삽입, 업데이트, 삭제 작업을 처리하고 쿼리 성능을 최적화합니다.
트리 형태의 구조에서 각 노드는 물리적인 데이터 샤드를 나타내며, 각 노드는 다른 노드와의 연결을 통해 데이터를 분산 저장하고 관리합니다. 데이터는 샤드와 레플리카 간에 복제되어 고가용성을 제공하며, 분산 키를 기반으로 샤드에 데이터가 분산됩니다. 이러한 구조를 통해 ClickHouse는 대용량의 데이터를 효율적으로 저장하고 처리할 수 있습니다.
요약하면, ClickHouse의 분산 테이블 저장 구조는 트리 형태의 샤드와 레플리카를 사용하여 데이터를 분산 저장하고 고가용성을 제공하는 방식으로 동작합니다.ㅊ
제가 기준을 2021년까지만 알고 있기 때문에 최신 정보는 제공하지 못할 수 있습니다만, 2021년 이전까지의 몇몇 한국 대기업에서 ClickHouse를 활용하는 사례를 알려드릴게요.
- 네이버(Naver): 네이버는 ClickHouse를 활용하여 웹 로그 데이터와 통계 데이터를 처리하고 대시보드를 구축하는 등의 목적으로 사용하였습니다. ClickHouse를 통해 대량의 데이터를 실시간으로 분석하고 모니터링하는데 활용되었습니다.
- 카카오(Kakao): 카카오도 ClickHouse를 데이터 분석 및 대시보드 구축에 사용했습니다. ClickHouse를 통해 실시간으로 대량의 데이터를 처리하여 사용자 행동 및 서비스 성능을 모니터링하고 분석하는 등의 목적으로 활용했습니다.
- CJ대한통운(CJ Korea Express): CJ대한통운은 배송 및 물류 데이터를 분석하기 위해 ClickHouse를 도입하였습니다. ClickHouse를 사용하여 빠르게 대량의 배송 데이터를 처리하고 분석하여 효율적인 물류 운영을 지원하였습니다.
- SK텔레콤(SK Telecom): SK텔레콤도 ClickHouse를 활용하여 실시간 데이터 분석 및 모니터링을 수행했습니다. ClickHouse를 사용하여 대용량의 데이터를 실시간으로 처리하고 분석하여 서비스 품질을 모니터링하고 최적화하는 데 활용했습니다.
이러한 한국 대기업들은 ClickHouse를 대량의 데이터를 실시간으로 처리하고 분석하는데 활용하여 비즈니스 의사결정에 기여하고 있습니다. 하지만 최신 정보를 얻기 위해서는 해당 기업의 공식 웹사이트, 보도 자료, 기술 블로그 등을 참고하는 것이 좋습니다.
ClickHouse가 데이터를 빠르게 저장하는 방식은 여러 가지 특징과 최적화 된 내부 아키텍처에 기인합니다. 열 지향 데이터베이스의 특성과 ClickHouse의 디자인 원칙이 데이터 저장 및 처리 속도를 향상시키는 방식으로 작용합니다. 다음은 ClickHouse가 데이터를 빠르게 저장하는 주요 방식입니다:
- 열 지향 저장: ClickHouse는 열 지향 데이터 저장 방식을 사용합니다. 이는 데이터를 컬럼(열) 단위로 저장하는 것을 의미합니다. 열 지향 방식은 데이터를 압축하고 중복을 최소화하는데 효과적이며, 쿼리 수행 시 필요한 열만 읽어와서 처리하므로 데이터를 효율적으로 처리할 수 있습니다.
- 데이터 압축: ClickHouse는 열 지향 데이터를 압축하여 저장합니다. 데이터를 압축하면 디스크 공간을 절약하면서 더 많은 데이터를 빠르게 읽고 쓸 수 있습니다. ClickHouse는 다양한 압축 알고리즘을 지원하며, 데이터 형식과 값의 특성에 따라 압축 방식을 자동으로 선택합니다.
- 병렬 처리: ClickHouse는 병렬 처리를 활용하여 쿼리와 데이터 적재 작업을 동시에 처리합니다. 데이터를 여러 샤드로 분산하고, 각 샤드 내에서도 병렬 처리를 수행하여 데이터 처리 속도를 높입니다.
- 인덱싱: ClickHouse는 인덱스를 사용하여 데이터의 검색 속도를 향상시킵니다. ClickHouse는 매우 효율적인 Bitmap 인덱스를 사용하여 쿼리 성능을 최적화합니다.
- 데이터 배치 처리: ClickHouse는 배치 처리를 통해 여러 쿼리를 한 번에 처리합니다. 이를 통해 여러 쿼리의 실행 계획을 최적화하고 데이터 읽기/쓰기 작업을 묶어서 처리하여 성능을 향상시킵니다.
- 예비 계산: ClickHouse는 쿼리가 실행되기 전에 사전에 계산된 값을 저장하는 예비 계산(precomputed summary)을 지원합니다. 이를 통해 복잡한 집계 연산을 더 빠르게 수행할 수 있습니다.
이러한 방식들이 ClickHouse의 데이터 저장 및 처리 속도를 높이는 데에 기여합니다. ClickHouse는 대용량의 데이터를 효율적으로 저장하고 분석하는데 특화된 시스템으로, 열 지향 데이터베이스와 최적화된 내부 아키텍처를 통해 대규모 데이터 처리에 뛰어난 성능을 제공합니다.
from clickhouse_driver import Client
# ClickHouse 연결 정보 설정
client = Client(host='localhost', port=9000, user='default', password='')
# 테이블 생성 쿼리
create_table_query = '''
CREATE TABLE IF NOT EXISTS log_data (
jobid Int64,
cycles Int64,
cache_misses Int64
) ENGINE = MergeTree()
PARTITION BY toYYYYMMDD(toDateTime(timestamp))
ORDER BY (jobid, timestamp)
'''
# 테이블 생성
client.execute(create_table_query)
# 로그 데이터를 "jobid", "cycles", "cache_misses"로 저장하는 함수
def insert_log_data(jobid, cycles, cache_misses):
insert_query = f'''
INSERT INTO log_data (jobid, cycles, cache_misses)
VALUES ({jobid}, {cycles}, {cache_misses})
'''
client.execute(insert_query)
# 로그 데이터 삽입 예시
insert_log_data(1, 10000, 500)
insert_log_data(2, 15000, 750)
# 데이터 조회 예시
select_query = 'SELECT * FROM log_data'
result = client.execute(select_query)
for row in result:
print(row)
한국대기업에서..
- 네이버(Naver): 네이버는 ClickHouse를 활용하여 웹 로그 데이터와 통계 데이터를 처리하고 대시보드를 구축하는 등의 목적으로 사용하였습니다. ClickHouse를 통해 대량의 데이터를 실시간으로 분석하고 모니터링하는데 활용되었습니다.
- 카카오(Kakao): 카카오도 ClickHouse를 데이터 분석 및 대시보드 구축에 사용했습니다. ClickHouse를 통해 실시간으로 대량의 데이터를 처리하여 사용자 행동 및 서비스 성능을 모니터링하고 분석하는 등의 목적으로 활용했습니다.
- CJ대한통운(CJ Korea Express): CJ대한통운은 배송 및 물류 데이터를 분석하기 위해 ClickHouse를 도입하였습니다. ClickHouse를 사용하여 빠르게 대량의 배송 데이터를 처리하고 분석하여 효율적인 물류 운영을 지원하였습니다.
- SK텔레콤(SK Telecom): SK텔레콤도 ClickHouse를 활용하여 실시간 데이터 분석 및 모니터링을 수행했습니다. ClickHouse를 사용하여 대용량의 데이터를 실시간으로 처리하고 분석하여 서비스 품질을 모니터링하고 최적화하는 데 활용했습니다.
'Database' 카테고리의 다른 글
[Spark] WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 에러 (1) | 2023.12.05 |
---|---|
[HPC] No route to host, FirewallD is not running (0) | 2023.08.27 |
[Database] ClickHouse 설치방법 (0) | 2023.08.03 |
[Database] HPC에서,,과연 (0) | 2023.07.31 |