본문으로 바로가기
본문으로 바로가기

ClickHouse OSS 퀵 스타트

이 퀵 스타트 튜토리얼에서는 몇 가지 간단한 단계로 OSS ClickHouse 환경을 준비하는 방법을 안내합니다. ClickHouse CLI clickhousectl을 사용하여 ClickHouse를 설치하고, ClickHouse 서버를 시작한 다음, 서버에 연결해 테이블을 생성하고, 데이터를 삽입한 후 SELECT 쿼리를 실행합니다.

ClickHouse CLI 설치 \

ClickHouse CLI(clickhousectl)를 사용하면 로컬 ClickHouse 버전을 설치 및 관리하고, 서버를 실행하며, 쿼리를 수행할 수 있습니다. 다음 명령어로 설치하십시오:

curl https://clickhouse.com/cli | sh

편의를 위해 chctl 별칭도 자동으로 생성됩니다.

ClickHouse 설치

ClickHouse는 Linux 및 macOS에서 네이티브로 실행되며, Windows에서는 WSL을 통해 실행됩니다.

CLI를 사용하여 최신 안정 버전의 ClickHouse를 설치하십시오:

clickhousectl local install stable
참고

이 방법은 프로덕션 환경에 ClickHouse를 설치할 때 권장되는 방식이 아닙니다. 프로덕션 인스턴스를 설치하려면 설치 페이지를 참조하십시오.

서버 시작

ClickHouse 서버 인스턴스를 시작하십시오:

clickhousectl local server start --name my-first-server

서버는 기본적으로 백그라운드에서 실행됩니다. 실행 중인지 확인하려면 다음을 실행하십시오.

clickhousectl local server list

클라이언트 시작

실행 중인 ClickHouse 서버에 연결하십시오:

clickhousectl local client --name my-first-server

localhost에서 실행 중인 서비스에 연결되면 다음과 같이 웃는 얼굴이 표시됩니다:

my-host :)

테이블 생성하기

CREATE TABLE을 사용하여 새 테이블을 정의하십시오. 일반적인 SQL DDL 명령어는 ClickHouse에서도 동작하지만, 한 가지 추가 사항이 있습니다. ClickHouse의 테이블에는 ENGINE 절이 필요합니다. ClickHouse의 성능 이점을 활용하려면 MergeTree를 사용하십시오:

CREATE TABLE my_first_table
(
    user_id UInt32,
    message String,
    timestamp DateTime,
    metric Float32
)
ENGINE = MergeTree
PRIMARY KEY (user_id, timestamp)

데이터 삽입

ClickHouse에서 익숙한 INSERT INTO TABLE 명령어를 사용할 수 있지만, MergeTree 테이블에 데이터를 삽입할 때마다 ClickHouse 스토리지에 파트라고 하는 단위가 생성된다는 점을 이해하는 것이 중요합니다. 이 파트들은 이후 ClickHouse에 의해 백그라운드에서 병합됩니다.

ClickHouse에서는 백그라운드 프로세스에서 병합해야 하는 파트 수를 최소화하기 위해, 한 번에 많은 양의 행(수만 건 또는 수백만 건)을 일괄 삽입하는 것을 권장합니다.

이 가이드에서는 아직 해당 부분은 다루지 않겠습니다. 다음 명령어를 실행하여 테이블에 몇 개의 행을 삽입하십시오:

INSERT INTO my_first_table (user_id, message, timestamp, metric) VALUES
    (101, 'Hello, ClickHouse!',                                 now(),       -1.0    ),
    (102, 'Insert a lot of rows per batch',                     yesterday(), 1.41421 ),
    (102, 'Sort your data based on your commonly-used queries', today(),     2.718   ),
    (101, 'Granules are the smallest chunks of data read',      now() + 5,   3.14159 )

새 테이블 쿼리하기

다른 SQL 데이터베이스와 마찬가지로 SELECT 쿼리를 작성할 수 있습니다:

SELECT *
FROM my_first_table
ORDER BY timestamp

응답이 깔끔한 표 형식으로 반환되는 것을 확인할 수 있습니다.

┌─user_id─┬─message────────────────────────────────────────────┬───────────timestamp─┬──metric─┐
│     102 │ Insert a lot of rows per batch                     │ 2022-03-21 00:00:00 │ 1.41421 │
│     102 │ Sort your data based on your commonly-used queries │ 2022-03-22 00:00:00 │   2.718 │
│     101 │ Hello, ClickHouse!                                 │ 2022-03-22 14:04:09 │      -1 │
│     101 │ Granules are the smallest chunks of data read      │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

4 rows in set. Elapsed: 0.008 sec.

직접 데이터 삽입 [#insert-own-data}

다음 단계는 ClickHouse에 데이터를 수집하는 것입니다. 데이터 수집을 위한 다양한 테이블 함수통합 기능을 제공합니다. 아래 탭에서 몇 가지 예시를 확인하거나, ClickHouse와 연동되는 기술의 전체 목록은 통합 페이지를 참조하십시오.

s3 테이블 함수를 사용하여 S3에서 파일을 읽을 수 있습니다. 이는 테이블 함수로, 즉 결과가 다음과 같이 사용할 수 있는 테이블로 반환된다는 의미입니다:

  1. SELECT 쿼리의 소스로 사용합니다(임시 쿼리를 실행하고 데이터는 S3에 그대로 둘 수 있음). 또는...
  2. 결과 테이블을 MergeTree 테이블에 삽입합니다(데이터를 ClickHouse로 옮길 준비가 되었을 때)

임시 쿼리의 예는 다음과 같습니다:

SELECT
passenger_count,
avg(toFloat32(total_amount))
FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
GROUP BY passenger_count
ORDER BY passenger_count;

데이터를 ClickHouse 테이블로 옮기는 예시는 다음과 같습니다. 여기서 nyc_taxiMergeTree 테이블입니다:

INSERT INTO nyc_taxi
SELECT * FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
SETTINGS input_format_allow_errors_num=25000;

S3를 ClickHouse와 함께 사용하는 방법에 대한 자세한 정보와 다양한 예시는 AWS S3 문서 페이지 모음에서 확인하실 수 있습니다.


탐색

  • ClickHouse의 내부 동작 방식에 대한 기본 개념을 알아보려면 Core Concepts 섹션을 확인하십시오.
  • ClickHouse의 핵심 개념과 기능을 훨씬 더 깊이 있게 다루는 심화 튜토리얼도 살펴보십시오.
  • ClickHouse Academy의 무료 온디맨드 교육 과정을 수강하여 학습을 이어가십시오.
  • 삽입 방법 안내와 함께 예시 데이터세트 목록을 제공합니다.
  • 데이터가 외부 소스에서 들어오는 경우 메시지 큐, 데이터베이스, 파이프라인 등에 연결하는 방법은 통합 가이드 모음을 참조하십시오.
  • UI/BI 시각화 도구를 사용하는 경우, UI를 ClickHouse에 연결하는 가이드를 참조하십시오.
  • 기본 키 사용자 가이드에는 기본 키에 대해 알아야 할 모든 내용과 이를 정의하는 방법이 담겨 있습니다.