ClickHouse Cloud 퀵 스타트

ClickHouse Cloud 퀵 스타트 (ClickHouse Cloud quick start)

ClickHouse Cloud에서 새 서비스를 만들어 바로 시작하는 가장 빠르고 쉬운 방법을 안내합니다. 서비스 생성, 연결, 데이터 추가의 세 가지 간단한 단계로 구성됩니다.

출처: 문서

본문

ClickHouse를 시작하는 가장 빠르고 쉬운 방법은 ClickHouse Cloud에 새 서비스를 만드는 것입니다. 이 퀵 스타트 가이드에서 세 가지 쉬운 단계로 설정해 드립니다.

  1. ClickHouse 서비스 생성

ClickHouse Cloud에서 무료 ClickHouse 서비스를 만들려면 다음 단계를 완료해 가입만 하면 됩니다:

  • 가입 페이지에서 계정을 만드세요
  • 이메일이나 Google SSO, Microsoft SSO, AWS Marketplace, Google Cloud, Microsoft Azure로 가입할 수 있습니다
  • 이메일과 비밀번호로 가입했다면 24시간 이내에 이메일로 받은 링크를 통해 이메일 주소를 인증하는 것을 잊지 마세요
  • 방금 만든 사용자 이름과 비밀번호로 로그인하세요

로그인하면 ClickHouse Cloud가 새 ClickHouse 서비스 생성을 안내하는 온보딩 마법사를 시작합니다. 서비스를 배포할 원하는 지역을 선택하고 새 서비스에 이름을 지어주세요:

기본적으로 새 조직은 Scale 계층에 배치되며 각각 4 VCPU와 16 GiB RAM을 가진 3개의 복제본을 생성합니다. Scale 계층에서는 수직 자동 확장이 기본으로 활성화됩니다. 조직 계층은 나중에 'Plans' 페이지에서 변경할 수 있습니다. 필요한 경우 복제본이 확장될 최소·최대 크기를 지정해 서비스 리소스를 사용자 지정하세요. 준비되면 Create service를 선택하세요.

축하합니다! ClickHouse Cloud 서비스가 실행 중이고 온보딩이 완료되었습니다. 데이터 수집과 쿼리를 시작하는 방법에 대한 자세한 내용은 계속 읽으세요.

  1. ClickHouse에 연결

ClickHouse에 연결하는 방법은 두 가지가 있습니다:

  • 웹 기반 SQL 콘솔로 연결
  • 앱으로 연결

SQL 콘솔로 연결

빠르게 시작하려면 ClickHouse가 웹 기반 SQL 콘솔을 제공하며, 온보딩을 완료하면 그곳으로 리디렉션됩니다. 쿼리 탭을 만들고 간단한 쿼리를 입력해 연결이 작동하는지 확인하세요:

SHOW databases

목록에 4개의 데이터베이스가 보일 것입니다(직접 추가한 것이 있다면 그것들도 포함).

그것으로 충분합니다 — 이제 새 ClickHouse 서비스를 사용해 시작할 준비가 되었습니다!

앱으로 연결

탐색 메뉴에서 연결(connect) 버튼을 누르세요. 서비스 자격증명을 제공하고 인터페이스 또는 언어 클라이언트로 연결하는 방법에 대한 지침 세트를 제공하는 모달이 열립니다.

언어 클라이언트가 보이지 않으면 Integrations 목록을 확인해 보세요.

  1. 데이터 추가

ClickHouse는 데이터가 있을 때 더 좋습니다! 데이터를 추가하는 방법은 여러 가지이며 대부분 탐색 메뉴에서 접근할 수 있는 Data Sources 페이지에서 제공됩니다.

다음 방법으로 데이터를 업로드할 수 있습니다:

  • S3, Postgres, Kafka, GCS 같은 데이터 소스에서 데이터 수집을 시작하도록 ClickPipe 설정
  • SQL 콘솔 사용
  • ClickHouse 클라이언트 사용
  • 파일 업로드 — 허용되는 형식은 JSON, CSV, TSV
  • 파일 URL에서 데이터 업로드

ClickPipes

ClickPipes는 다양한 소스에서 데이터를 수집하는 것을 몇 번의 클릭만큼 간단하게 만드는 관리형 통합 플랫폼입니다. 가장 까다로운 워크로드를 위해 설계된 ClickPipes의 견고하고 확장 가능한 아키텍처는 일관된 성능과 신뢰성을 보장합니다. ClickPipes는 장기 스트리밍 요구나 일회성 데이터 로딩 작업에 사용할 수 있습니다.

SQL Console로 데이터 추가

대부분의 데이터베이스 관리 시스템처럼 ClickHouse는 테이블을 데이터베이스로 논리적으로 그룹화합니다. CREATE DATABASE 명령으로 ClickHouse에 새 데이터베이스를 만들 수 있습니다:

CREATE DATABASE IF NOT EXISTS helloworld

다음 명령을 실행해 helloworld 데이터베이스에 my_first_table이라는 테이블을 만들 수 있습니다:

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

위 예제에서 my_first_table은 네 개의 컬럼을 가진 MergeTree 테이블입니다:

  • user_id: 32비트 부호 없는 정수 (UInt32)
  • message: 다른 데이터베이스 시스템의 VARCHAR, BLOB, CLOB 등을 대체하는 String 데이터 타입
  • timestamp: 시간의 한 순간을 나타내는 DateTime
  • metric: 32비트 부동소수점 숫자 (Float32)

테이블 엔진

테이블 엔진은 다음을 결정합니다:

  • 데이터가 어떻게, 어디에 저장되는지
  • 어떤 쿼리가 지원되는지
  • 데이터가 복제되는지 여부

선택할 수 있는 테이블 엔진이 많지만, 단일 노드 ClickHouse 서버의 간단한 테이블에는 MergeTree가 가능성 높은 선택입니다.

기본 키에 대한 간단한 소개

더 진행하기 전에 ClickHouse에서 기본 키가 어떻게 작동하는지 이해하는 것이 중요합니다(기본 키의 구현이 예상과 다르게 보일 수 있습니다!):

  • ClickHouse의 기본 키는 테이블의 각 행에 대해 고유하지 않습니다

ClickHouse 테이블의 기본 키는 디스크에 쓸 때 데이터가 어떻게 정렬되는지 결정합니다. 8,192행 또는 10MB의 데이터마다(인덱스 세분성, index granularity) 기본 키 인덱스 파일에 항목이 생성됩니다. 이 세분성 개념은 메모리에 쉽게 들어갈 수 있는 **희소 인덱스(sparse index)**를 만들며, granule은 SELECT 쿼리 중 처리되는 최소량의 컬럼 데이터 스트라이프를 나타냅니다. 기본 키는 PRIMARY KEY 매개변수로 정의할 수 있습니다. PRIMARY KEY를 지정하지 않고 테이블을 정의하면 ORDER BY 절에 지정된 튜플이 키가 됩니다. PRIMARY KEYORDER BY를 모두 지정하면 기본 키는 정렬 순서의 하위 집합이어야 합니다. 기본 키는 곧 정렬 키이기도 하며, (user_id, timestamp) 튜플입니다. 따라서 각 컬럼 파일에 저장된 데이터는 user_id, 그다음 timestamp 순으로 정렬됩니다. ClickHouse 핵심 개념에 대한 자세한 내용은 "Core Concepts"를 참고하세요.

테이블에 데이터 삽입

ClickHouse에서 익숙한 INSERT INTO TABLE 명령을 사용할 수 있지만, MergeTree 테이블에 대한 각 삽입이 저장소에 **파트(part)**를 생성한다는 것을 이해하는 것이 중요합니다.

ClickHouse 모범 사례: 한 번에 수만 또는 수백만 행을 배치로 삽입하세요. 걱정하지 마세요 — ClickHouse는 그런 규모를 쉽게 처리할 수 있으며, 서비스에 보내는 쓰기 요청 수를 줄여 비용을 절약할 수 있습니다.

간단한 예제에서도 한 번에 여러 행을 삽입해 봅시다:

INSERT INTO helloworld.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 )

timestamp 컬럼이 다양한 DateDateTime 함수로 채워지는 것을 주목하세요. ClickHouse에는 Functions 섹션에서 볼 수 있는 유용한 함수가 수백 개 있습니다.

잘 됐는지 확인해 봅시다:

SELECT * FROM helloworld.my_first_table

ClickHouse 클라이언트로 데이터 추가

clickhouse client라는 커맨드라인 도구로 ClickHouse Cloud 서비스에 연결할 수도 있습니다. 이 정보를 보려면 왼쪽 메뉴에서 Connect를 클릭하세요. 대화상자에서 드롭다운으로 Native를 선택하세요:

  1. ClickHouse를 설치하세요.
  2. 호스트명, 사용자 이름, 비밀번호를 대체해 명령을 실행하세요:
./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password>

스마일 이모지 프롬프트가 나오면 쿼리를 실행할 준비가 된 것입니다:

:)
  1. 다음 쿼리를 실행해 시도해 보세요:
SELECT *
FROM helloworld.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.
  1. ClickHouse의 많은 지원 출력 형식 중 하나를 지정하려면 FORMAT 절을 추가하세요:
SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp
FORMAT TabSeparated

위 쿼리에서 출력은 탭 구분으로 반환됩니다:

Query id: 3604df1c-acfd-4117-9c56-f86c69721121

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.005 sec.
  1. clickhouse client를 종료하려면 exit 명령을 입력하세요:
exit

파일 업로드 (Upload a File)

데이터베이스를 시작할 때 흔한 작업은 이미 파일에 가진 데이터를 삽입하는 것입니다. 사용자 ID, 방문한 URL, 이벤트 타임스탬프를 포함하는 클릭스트림 데이터를 나타내는 삽입할 수 있는 온라인 샘플 데이터가 있습니다. data.csv라는 CSV 파일에 다음 텍스트가 있다고 가정해 봅시다: data.csv

102,This is data in a file,2022-02-22 10:43:28,123.45
101,It is comma-separated,2022-02-23 00:00:00,456.78
103,Use FORMAT to specify the format,2022-02-21 10:43:30,678.90
  1. 다음 명령은 데이터를 my_first_table에 삽입합니다:
./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password> \
--query='INSERT INTO helloworld.my_first_table FORMAT CSV' < data.csv
  1. SQL 콘솔에서 조회하면 이제 테이블에 새 행이 나타나는 것을 주목하세요:

IP 접근 목록 필터링: 계속 진행하기 전에 IP 접근 목록 필터링을 설정하는 것을 권장합니다. 자세한 내용은 "Setting IP filters"를 참고하세요.

다음 단계 (What's Next?)

더 알아보기 (Learn more)