ClickHouse OSS 빠른 시작
이 빠른 시작 튜토리얼에서는 8단계로 OSS ClickHouse 환경을 준비하는 방법을 안내합니다. 사용 중인 OS에 맞는 바이너리를 다운로드하고, ClickHouse 서버를 실행하는 방법을 익힌 뒤, ClickHouse 클라이언트를 사용해 테이블을 생성하고 데이터 삽입 후 해당 데이터를 조회하는 쿼리를 실행합니다.
ClickHouse 다운로드하기
ClickHouse는 Linux, FreeBSD, macOS에서 기본적으로 실행되며, Windows에서는
WSL을 통해 실행됩니다. ClickHouse를 로컬에 다운로드하는 가장 간단한 방법은 다음
curl 명령을 실행하는 것입니다. 이 명령은 운영 체제가 지원되는지 확인한 다음,
master 브랜치에서 빌드된 적절한 ClickHouse 바이너리를 다운로드합니다.
ClickHouse 서버를 처음 실행하면 바이너리가 위치한 디렉터리에 일부 설정 파일이 생성되므로, 새로운 빈 하위 디렉터리에서 아래 명령을 실행하는 것을 권장합니다.
아래 스크립트는 프로덕션 환경에서 ClickHouse를 설치하는 데 권장되는 방법이 아닙니다. 프로덕션 인스턴스 설치를 원하시면 설치 페이지를 참조하세요.
다음과 같이 표시되어야 합니다:
이 단계에서는 install 명령 실행 프롬프트를 무시하십시오.
Mac 사용자의 경우: 바이너리 개발자를 확인할 수 없다는 오류가 발생하면 "MacOS에서 개발자 확인 오류 수정하기"를 참조하세요.
클라이언트 시작하기
clickhouse-client를 사용하여 ClickHouse 서비스에 연결하세요. 새 터미널을 열고 clickhouse 바이너리가 저장된 디렉터리로 이동한 다음 아래 명령을 실행하세요:
localhost에서 실행 중인 서비스에 연결되면 웃는 얼굴이 표시됩니다:
데이터 삽입하기
ClickHouse에서 익숙한 INSERT INTO TABLE 명령을 사용할 수 있지만,
MergeTree 테이블에 삽입할 때마다 스토리지에 파트가 생성된다는 점을
이해하는 것이 중요합니다. 이러한 파트는 이후 ClickHouse에 의해 백그라운드에서
머지됩니다.
ClickHouse에서는 백그라운드 프로세스에서 머지해야 하는 파트의 수를 최소화하기 위해 한 번에 많은 행(수만 개 또는 수백만 개)을 대량으로 삽입합니다.
이 가이드에서는 아직 해당 부분을 다루지 않습니다. 다음 명령을 실행하여 테이블에 몇 개의 데이터 행을 삽입하세요:
나만의 데이터 삽입하기
다음 단계는 ClickHouse에 자체 데이터를 가져오는 것입니다. 데이터 수집을 위한 다양한 테이블 함수와 통합을 제공합니다. 아래 탭에서 몇 가지 예시를 확인하시거나, ClickHouse와 통합되는 기술의 전체 목록을 보려면 통합 페이지를 참조하십시오.
- S3
- GCS
- 웹
- 로컬
- PostgreSQL
- MySQL
- ODBC/JDBC
- 메시지 큐
- 데이터 레이크
- 기타
s3 table function을(를) 사용하여
S3에서 파일을 읽습니다. 이는 결과가 테이블인 table function이므로, 이 테이블은 다음과 같이 사용할 수 있습니다:
SELECT쿼리의 소스로 사용하여(데이터를 S3에 그대로 둔 채 애드혹(ad-hoc) 쿼리를 실행) 또는...- 결과 테이블을
MergeTree테이블에 삽입하여(데이터를 ClickHouse로 옮길 준비가 되었을 때)
애드혹(ad-hoc) 쿼리는 다음과 같습니다:
데이터를 ClickHouse 테이블로 옮기는 과정은 다음과 같으며, 여기서
nyc_taxi는 MergeTree 테이블입니다.
ClickHouse와 함께 S3를 사용하는 더 많은 세부 정보와 예시는 AWS S3 문서 모음을 참고하십시오.
AWS S3에서 데이터를 읽는 데 사용하는 s3 table function은
Google Cloud Storage에 있는 파일에도 동일하게 동작합니다.
예를 들어:
자세한 내용은 s3 테이블 함수 페이지에서 확인하십시오.
로컬 파일을 읽으려면 file table engine을(를)
사용하십시오. 간단하게 하기 위해, 파일을 ClickHouse 바이너리를 다운로드한 디렉터리에 있는
user_files 디렉터리로 복사합니다.
ClickHouse는 대량의 행(batch)을 분석하여 컬럼 이름과 데이터 타입을 추론합니다. ClickHouse가 파일 이름만으로 파일 포맷을 판단할 수 없는 경우, 두 번째 인수로 파일 포맷을 직접 지정할 수 있습니다:
자세한 내용은 file table function
문서를 참조하십시오.
postgresql table function을 사용하여 PostgreSQL의 테이블에서 데이터를 읽습니다:
자세한 내용은 postgresql table function
문서를 참조하십시오.
ClickHouse는 모든 ODBC 또는 JDBC 데이터 소스에서 데이터를 읽을 수 있습니다:
odbc table function
및 jdbc table function 문서를
참고하여 자세한 내용을 확인하십시오.
메시지 큐는 해당 테이블 엔진을 사용하여 ClickHouse로 데이터를 스트리밍할 수 있습니다. 예를 들면 다음과 같습니다.
- Kafka:
Kafkatable engine을 사용해 Kafka와 연동합니다. - Amazon MSK: Amazon Managed Streaming for Apache Kafka (MSK)와 연동합니다.
- RabbitMQ:
RabbitMQtable engine을 사용해 RabbitMQ와 연동합니다.
ClickHouse에는 다음과 같은 소스에서 데이터를 읽는 테이블 함수가 있습니다:
- Hadoop:
hdfstable function을(를) 사용하여 Apache Hadoop과 연동해 데이터를 읽습니다 - Hudi:
huditable function을(를) 사용하여 S3에 있는 기존 Apache Hudi 테이블에서 데이터를 읽습니다 - Iceberg:
icebergtable function을(를) 사용하여 S3에 있는 기존 Apache Iceberg 테이블에서 데이터를 읽습니다 - DeltaLake:
deltaLaketable function을(를) 사용하여 S3에 있는 기존 Delta Lake 테이블에서 데이터를 읽습니다
기존 프레임워크와 데이터 소스를 ClickHouse에 연결하는 방법은 다양한 ClickHouse 연동 목록을 참조하십시오.
탐색하기
- ClickHouse가 내부적으로 어떻게 동작하는지에 대한 기본 개념은 Core Concepts 섹션을 참조하십시오.
- ClickHouse의 주요 개념과 기능을 보다 심층적으로 다루는 고급 튜토리얼을 살펴보십시오.
- 학습을 계속하려면 ClickHouse Academy에서 제공하는 무료 온디맨드 교육 과정을 수강하십시오.
- 예제 데이터세트 목록과 각 데이터세트를 삽입하는 방법에 대한 안내가 있습니다.
- 데이터가 외부 소스로부터 수집되는 경우, 메시지 큐, 데이터베이스, 파이프라인 등과 연결하는 방법은 통합 가이드 모음을 참고하십시오.
- UI/BI 시각화 도구를 사용하는 경우 UI를 ClickHouse에 연결하는 사용자 가이드를 참조하십시오.
- 기본 키에 대한 사용자 가이드는 기본 키와 이를 정의하는 방법에 대해 알아야 할 모든 내용을 담고 있습니다.