Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

ClickHouse Cloud 빠른 시작

ClickHouse를 가장 빠르고 쉽게 시작하는 방법은 ClickHouse Cloud에서 새 서비스를 만드는 것입니다. 이 Quick Start 가이드에서는 3가지 간단한 단계로 설정을 완료합니다.

ClickHouse 서비스 생성

ClickHouse Cloud에서 무료 ClickHouse 서비스를 만들려면 다음 단계를 따라 가입하면 됩니다.

  • 가입 페이지에서 계정을 만드십시오.
  • 이메일 또는 Google SSO, Microsoft SSO, AWS Marketplace, Google Cloud, Microsoft Azure를 통해 가입할 수 있습니다.
  • 이메일과 비밀번호로 가입한 경우, 이메일로 받은 링크를 통해 24시간 이내에 이메일 주소를 인증해야 합니다.
  • 방금 만든 사용자 이름과 비밀번호로 로그인하십시오.
플랜 선택

로그인하면 ClickHouse Cloud에서 새 ClickHouse 서비스를 만드는 과정을 안내하는 온보딩 마법사가 시작됩니다. 서비스를 배포할 리전을 선택하고 새 서비스의 이름을 지정하십시오.

새 ClickHouse 서비스

기본적으로 새 조직에는 Scale tier가 적용되며, 각각 4 vCPUs와 16 GiB RAM을 갖춘 3개의 레플리카가 생성됩니다. Scale tier에서는 수직 자동 스케일링이 기본적으로 활성화됩니다. 조직 tier는 나중에 'Plans' 페이지에서 변경할 수 있습니다.

필요한 경우 레플리카의 스케일링 범위에 사용할 최소 및 최대 크기를 지정하여 서비스 리소스를 사용자 정의하십시오. 준비되면 Create service를 선택하십시오.

스케일링 제한

축하합니다! ClickHouse Cloud 서비스가 실행 중이며 온보딩이 완료되었습니다. 데이터 수집 및 쿼리 시작 방법에 관한 자세한 내용은 계속 읽어 보십시오.

ClickHouse에 연결

ClickHouse에 연결하는 방법은 2가지입니다.

  • 웹 기반 SQL 콘솔을 사용하여 연결
  • 앱에서 연결

SQL 콘솔을 사용하여 연결

빠르게 시작할 수 있도록 ClickHouse는 온보딩을 완료하면 자동으로 이동되는 웹 기반 SQL 콘솔을 제공합니다.

SQL 콘솔

쿼리 탭을 만들고 간단한 쿼리를 입력하여 연결이 정상적으로 작동하는지 확인합니다:

SHOW databases

목록에 기본 데이터베이스 4개와 추가로 생성한 데이터베이스가 표시됩니다.

SQL 콘솔

이제 새 ClickHouse 서비스를 사용할 준비가 되었습니다!

앱 연결

탐색 메뉴에서 연결 버튼을 선택하십시오. 서비스 자격 증명과 사용 중인 인터페이스 또는 언어 클라이언트에서 연결하는 방법을 안내하는 모달이 열립니다.

서비스 연결

사용 중인 언어 클라이언트가 보이지 않으면 통합 목록을 확인해 보십시오.

데이터 추가

ClickHouse는 데이터가 있어야 진가를 발휘합니다! 데이터를 추가하는 방법은 여러 가지가 있으며, 대부분은 탐색 메뉴에서 접근할 수 있는 Data Sources 페이지에서 이용할 수 있습니다.

데이터 소스

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

  • ClickPipe를 설정하여 S3, Postgres, Kafka, GCS 등의 데이터 소스에서 데이터 수집을 시작합니다
  • SQL 콘솔을 사용합니다
  • ClickHouse 클라이언트를 사용합니다
  • 파일을 업로드합니다 - 지원 포맷은 JSON, CSV, TSV입니다
  • 파일 URL을 통해 데이터를 업로드합니다

ClickPipes

ClickPipes는 다양한 소스의 데이터를 버튼 몇 번 클릭만으로 간단하게 수집할 수 있는 관리형 통합 플랫폼입니다. 가장 까다로운 워크로드를 염두에 두고 설계된 ClickPipes의 견고하고 확장 가능한 아키텍처는 일관된 성능과 안정성을 보장합니다. ClickPipes는 장기적인 스트리밍 용도뿐만 아니라 일회성 데이터 적재 작업에도 사용할 수 있습니다.

데이터 소스 선택

SQL 콘솔을 사용하여 데이터 추가하기

대부분의 데이터베이스 관리 시스템과 마찬가지로 ClickHouse도 테이블을 논리적으로 데이터베이스 단위로 묶습니다. ClickHouse에서 새 데이터베이스를 생성하려면 CREATE DATABASE 명령을 사용하십시오:

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은 컬럼이 4개인 MergeTree 테이블입니다:

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

기본 키(Primary Key) 간단한 소개

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

  • ClickHouse의 프라이머리 키는 테이블의 각 행에서 고유하지 않습니다

ClickHouse 테이블의 기본 키는 데이터가 디스크에 기록될 때 어떻게 정렬되는지를 결정합니다. 8,192행 또는 10MB의 데이터(이를 **인덱스 그래뉼러리티(index granularity)**라고 함)마다 기본 키 인덱스 파일에 항목이 생성됩니다. 이 그래뉼러리티 개념은 메모리에 쉽게 들어갈 수 있는 **희소 인덱스(sparse index)**를 만들며, 그래뉼은 SELECT 쿼리 처리 중에 다뤄지는 가장 작은 단위의 열 데이터 스트라이프를 나타냅니다.

기본 키는 PRIMARY KEY 매개변수로 정의할 수 있습니다. PRIMARY KEY를 지정하지 않고 테이블을 정의하면 ORDER BY 절에 지정된 튜플이 기본 키가 됩니다. PRIMARY KEYORDER BY를 모두 지정하는 경우 기본 키는 정렬 순서의 부분 집합이어야 합니다.

기본 키(primary key)는 정렬 키(sorting key)이기도 하며 (user_id, timestamp) 튜플입니다. 따라서 각 컬럼 파일에 저장된 데이터는 user_id 순으로, 그 다음 timestamp 순으로 정렬됩니다.

ClickHouse의 핵심 개념에 대한 심층 분석은 "핵심 개념"을 참조하십시오.

테이블에 데이터 삽입하기

ClickHouse에서도 익숙한 INSERT INTO TABLE 명령을 사용할 수 있지만, MergeTree 테이블에 한 번 삽입할 때마다 스토리지에 파트(part) 가 하나씩 생성된다는 점을 유의해야 합니다.


간단한 예시이지만, 한 번에 여러 행을 삽입해 보겠습니다:

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 )

정상적으로 적용되었는지 확인해 보겠습니다:

SELECT * FROM helloworld.my_first_table

ClickHouse Client로 데이터 추가하기

clickhouse client라는 명령줄 도구를 사용하여 ClickHouse Cloud 서비스에 연결할 수도 있습니다. 왼쪽 메뉴에서 Connect를 클릭하여 이러한 세부 정보를 확인하세요. 대화 상자에서 드롭다운을 열고 Native를 선택합니다:

clickhouse client 연결 정보

  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. FORMAT 절을 추가하여 ClickHouse에서 지원하는 다양한 출력 형식 중 하나를 지정합니다:

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

파일 업로드

데이터베이스를 처음 사용하기 시작할 때 흔히 하는 작업 중 하나는 이미 파일로 보유하고 있는 데이터를 삽입하는 것입니다. 온라인에 삽입할 수 있는 샘플 데이터가 있으며, 이 데이터는 클릭스트림 데이터를 나타내며 사용자 ID, 방문한 URL 및 이벤트의 타임스탬프가 포함되어 있습니다.

data.csv라는 이름의 CSV 파일에 다음과 같은 텍스트가 있다고 가정합니다:

data.csvbash
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 콘솔에서 쿼리하면 테이블에 새 행이 표시됩니다:

CSV 파일의 새 행

다음 단계

직접 이 경로를 따르거나, 스크립트로 자동화하거나, AI Agent에 맡길 수 있습니다. 콘솔 버전에서는 Cloud UI 보기로 전환하십시오.

이 페이지에서는 ClickHouse CLI(clickhousectl)를 사용해 명령줄에서 ClickHouse Cloud 서비스를 프로비저닝하고 연결하며 데이터를 로드하는 방법을 설명합니다. 명령어는 비대화형으로 실행되며, clickhousectl--json 옵션을 사용하면 JSON을 출력합니다.

사전 요구 사항

ClickHouse CLI를 설치하십시오:

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

jq도 필요합니다.

ClickHouse Cloud 계정이 필요합니다. 아직 계정이 없다면 clickhousectl cloud auth signup 명령으로 브라우저에서 가입 페이지를 열 수 있습니다.

쓰기 작업(생성, 삭제)에는 API Key 인증이 필요하며, OAuth 로그인으로는 읽기만 가능합니다:

clickhousectl cloud auth login --api-key <YOUR_KEY> --api-secret <YOUR_SECRET>

또는 CLICKHOUSE_CLOUD_API_KEYCLICKHOUSE_CLOUD_API_SECRET 환경 변수를 설정하십시오. clickhousectl cloud auth status를 실행하여 확인하십시오. 범위가 read/write인 항목이 표시되어야 합니다.

ClickHouse 서비스 생성

서비스를 생성하고 응답을 저장하십시오. default 사용자의 비밀번호는 한 번만 표시됩니다:

clickhousectl cloud service create \
  --name quickstart-ch \
  --region us-east-1 \
  --json > ch.json

응답에는 서비스 ID, 엔드포인트, 생성된 비밀번호가 포함됩니다(여기서는 일부만 표시했습니다. 전체 응답에는 스케일링 설정, IP 액세스 목록 및 태그도 포함됩니다):

{
  "password": "dK7mPq2x_-TzrL9vNw0s",
  "service": {
    "id": "4f7b92f3-4163-403a-b538-b9bc6e2e8f66",
    "name": "quickstart-ch",
    "provider": "aws",
    "region": "us-east-1",
    "state": "provisioning",
    "endpoints": [
      {
        "host": "quickstart-abc123.us-east-1.aws.clickhouse.cloud",
        "port": 9440,
        "protocol": "nativesecure"
      },
      {
        "host": "quickstart-abc123.us-east-1.aws.clickhouse.cloud",
        "port": 8443,
        "protocol": "https"
      }
    ],
    "numReplicas": 3,
    "minReplicaMemoryGb": 16.0,
    "maxReplicaMemoryGb": 120.0
  }
}

이 가이드의 나머지 단계에 필요한 정보를 추출합니다:

CH_ID=$(jq -r .service.id ch.json)
CH_PASSWORD=$(jq -r .password ch.json)
CH_HOST=$(jq -r '.service.endpoints[] | select(.protocol=="nativesecure") | .host' ch.json)

비밀번호를 분실한 경우 clickhousectl cloud service reset-password "$CH_ID"를 사용하여 새 비밀번호를 생성하십시오.

clickhousectl로 생성한 서비스에는 기본적으로 모든 IP 주소(0.0.0.0/0)를 허용하는 IP 액세스 목록이 설정됩니다. 액세스를 제한하려면 서비스를 생성할 때 --ip-allow를 지정하십시오. "IP 필터 설정"을 참조하십시오.

서비스 프로비저닝이 완료될 때까지 기다리기

프로비저닝에는 약 1분이 걸립니다. 상태가 running이 될 때까지 폴링하십시오:

while [ "$(clickhousectl cloud service get "$CH_ID" --json | jq -r .state)" != "running" ]; do
  sleep 15
done

Query API로 SQL 실행

clickhousectl cloud service query는 HTTP를 통해 SQL을 실행하며, 로컬 clickhouse 바이너리나 서비스 비밀번호가 필요하지 않습니다. 처음 호출하면 Query API 엔드포인트와 서비스 범위 API Key가 자동으로 프로비저닝됩니다:

clickhousectl cloud service query --id "$CH_ID" --query "SHOW databases"
Provisioning Query API endpoint + key for service 'quickstart-ch'...
{"name":"INFORMATION_SCHEMA"}
{"name":"default"}
{"name":"information_schema"}
{"name":"system"}

파이프 출력은 기본적으로 JSONEachRow 형식을 사용합니다. 표 형식으로 출력하려면 대신 --format PrettyCompact를 전달하십시오.

데이터베이스 및 테이블 생성

clickhousectl cloud service query --id "$CH_ID" \
  --query "CREATE DATABASE IF NOT EXISTS helloworld"

clickhousectl cloud service query --id "$CH_ID" \
  --query "CREATE TABLE helloworld.my_first_table (
    user_id UInt32,
    message String,
    timestamp DateTime,
    metric Float32
  ) ENGINE = MergeTree()
  PRIMARY KEY (user_id, timestamp)"

두 명령어 모두 OK를 출력합니다. 몇 개의 행을 삽입하세요:

clickhousectl cloud service query --id "$CH_ID" \
  --query "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)"

정상적으로 작동하는지 확인합니다:

clickhousectl cloud service query --id "$CH_ID" \
  --query "SELECT * FROM helloworld.my_first_table ORDER BY timestamp"
{"user_id":102,"message":"Insert a lot of rows per batch","timestamp":"2026-08-26 00:00:00","metric":1.41421}
{"user_id":102,"message":"Sort your data based on your commonly-used queries","timestamp":"2026-08-27 00:00:00","metric":2.718}
{"user_id":101,"message":"Hello, ClickHouse!","timestamp":"2026-08-27 10:41:28","metric":-1}
{"user_id":101,"message":"Granules are the smallest chunks of data read","timestamp":"2026-08-27 10:41:33","metric":3.14159}

타임스탬프는 삽입을 실행한 시점에 따라 달라지므로, 실제 값은 예시와 다를 수 있습니다.

CSV 파일 로드

data.csv라는 CSV 파일에 다음 텍스트가 있다고 가정합니다.

data.csvtext
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

INSERT ... FORMAT은 stdin에서 데이터를 읽으므로 쿼리와 파일을 함께 파이프로 연결하십시오:

printf 'INSERT INTO helloworld.my_first_table FORMAT CSV\n' | cat - data.csv \
  | clickhousectl cloud service query --id "$CH_ID"

새 행이 정상적으로 저장되었는지 확인합니다:

clickhousectl cloud service query --id "$CH_ID" \
  --query "SELECT count() FROM helloworld.my_first_table"
{"count()":7}

clickhouse client로 연결

clickhouse client를 사용해 네이티브 프로토콜로 연결할 수도 있습니다. ClickHouse CLI가 clickhouse 바이너리를 관리하므로 별도의 클라이언트를 설치할 필요가 없습니다.

clickhousectl local use latest

최신 clickhouse 바이너리를 설치하고 ~/.local/bin/clickhouse에 심볼릭 링크를 생성합니다. 따라서 PATH 어디에서나 일반 clickhouse 명령을 사용할 수 있습니다.

그런 다음 생성 응답의 호스트명과 비밀번호를 사용해 연결합니다. --query를 사용하면 결과가 출력된 후 클라이언트가 종료되고, 사용하지 않으면 대화형 프롬프트(:))가 표시됩니다. 프롬프트에서는 exit로 종료할 수 있습니다:

clickhouse client --host "$CH_HOST" --secure --port 9440 \
  --user default --password "$CH_PASSWORD" \
  --query "SELECT * FROM helloworld.my_first_table ORDER BY timestamp FORMAT TabSeparated"
102	Insert a lot of rows per batch	2026-08-26 00:00:00	1.41421
102	Sort your data based on your commonly-used queries	2026-08-27 00:00:00	2.718
101	Hello, ClickHouse!	2026-08-27 10:41:28	-1
101	Granules are the smallest chunks of data read	2026-08-27 10:41:33	3.14159
103	Use FORMAT to specify the format	2022-02-21 10:43:30	678.9
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

동일한 명령 형식으로 파일을 업로드할 수 있습니다:

clickhouse client --host "$CH_HOST" --secure --port 9440 \
  --user default --password "$CH_PASSWORD" \
  --query='INSERT INTO helloworld.my_first_table FORMAT CSV' < data.csv

정리

서비스를 삭제하면 모든 데이터가 영구적으로 삭제됩니다. --force는 실행 중인 서비스를 먼저 중지합니다:

clickhousectl cloud service delete "$CH_ID" --force

데이터는 유지하면서 컴퓨트 비용을 중단하려면 대신 clickhousectl cloud service stop "$CH_ID"를 사용하여 서비스를 중지하십시오.

Navigation