Real-Time Market AnalyticsClickHouse Workshops

03 데이터 로드하기 — 두 가지 방법

같은 26.5M건의 틱을 두 번 로드합니다: 프로덕션에서 쓰게 될 관리형 파이프라인 ClickPipes, 그리고 s3() 한 줄 — 그리고 각각을 언제 선택할지.

데이터는 퍼블릭 S3 버킷에 있으므로 키나 자격 증명이 전혀 필요하지 않습니다 — URL만 가리키면 됩니다. 전송은 S3에서 ClickHouse로 서버 측에서 실행되므로, 2,650만 행이 여러분의 노트북을 거치지도 않고 행사장 Wi-Fi에 의존하지도 않습니다.

같은 26.5M건의 틱을 두 가지 방법으로 로드해 둘 다 확인합니다. 방법 1은 프로덕션에서 쓰게 될 관리형 클릭 기반 파이프라인 ClickPipes입니다. 방법 2는 SQL 한 줄 — 데모 중에 데이터를 가장 빠르게 넣는 방법입니다. 순서대로 진행하세요. 중간의 TRUNCATE가 행 수를 깔끔하게 유지해 줍니다.

방법 1 — ClickPipes, 관리형 프로덕션 방식

ClickPipes는 완전 관리형 인제스션 서비스입니다. 오브젝트 스토리지나 스트림을 가리키기만 하면 직접 만들 커넥터 없이 계속 로드해 줍니다. 전체 흐름은 다음과 같습니다.

  1. 왼쪽 메뉴에서 Data sources를 클릭한 뒤 Create ClickPipe 버튼을 누릅니다.

Create ClickPipe 버튼이 강조된 ClickHouse Cloud Data sources 페이지

Data sources는 "Upload file"과 "Add sample data"가 있는 곳이기도 합니다.

  1. Select the data source에서 Amazon S3를 선택합니다(Popular 목록 맨 위).

Amazon S3가 Popular 목록의 첫 항목으로 표시된 Select the data source 단계

  1. Setup your ClickPipe connection에서 아무 name이나 지정하고, Authentication method → Public으로 설정한 뒤(버킷이 퍼블릭입니다), S3 file path에 이것을 붙여넣습니다:
https://partner-workshop.s3.ap-southeast-1.amazonaws.com/fx/ticks.parquet

Continuous ingestion은 끈 상태로 둡니다 — 일회성 파일이기 때문입니다 — 그리고 **Incoming data →**를 클릭합니다.

Setup your ClickPipe connection: name, Authentication method를 Public으로 설정, S3 file path 입력 완료

  1. Incoming data에서 ClickHouse가 일치하는 파일을 미리 보여줍니다 — fx/ticks.parquet가 158.43 MB로 표시됩니다. File type → Parquet을 확인하고, 압축은 Detect automatically로 둔 채 **Parse information →**을 클릭합니다.

File type이 Parquet으로 설정된 상태에서 fx/ticks.parquet를 158.43 MB로 미리 보여주는 Incoming data 단계

  1. Parse information에서 ClickHouse가 샘플 행을 미리 보여주고 컬럼을 감지합니다. Upload data to에서 Existing table을 선택하고, 테이블이 있는 Database를 고른 뒤 (보통 default), **Table → forex**로 설정합니다. 소스 필드(datetime, bid, ask, base, quote)가 해당 컬럼과 맞게 연결되었는지 확인하세요 — 자동으로 매핑될 것입니다. 추가로 나오는 _path / _file / _size 필드는 매핑하지 않고 둡니다. 그다음 **Details and settings →**를 클릭합니다.

Parse information 단계: Upload data to가 Existing table, 데이터베이스와 forex 테이블이 선택되고 소스 필드가 컬럼에 매핑된 화면

스크린샷에는 발표자의 techthai 데이터베이스가 보입니다 — 여러분의 테이블이 있는 것을 사용하세요.

  1. Details and settings에서 기본 Permissions를 그대로 둔 뒤(ClickPipes가 전용 writer 사용자를 만들어 줍니다) Create ClickPipe를 클릭합니다.

Permissions와 Create ClickPipe 버튼이 보이는 Details and settings 단계

Spark 작업도, 직접 만든 로더도 없습니다.

  1. 다시 Data sources로 돌아오면 방금 만든 ClickPipe가 보입니다. 몇 초 만에 Status가 Completed로 바뀌고 Records에 26,488,218이 표시됩니다 — 오브젝트 스토리지에서 모든 틱이 로드된 것입니다.

status가 Completed이고 26,488,218 records가 표시된 ClickPipe가 보이는 Data sources 목록

무엇이 로드되었는지 확인하세요. SQL Console에서 이것을 실행합니다:

-- expect 26,488,218 ticks across 12 pairs
SELECT count() AS ticks, uniqExact(concat(base,'/',quote)) AS pairs FROM forex;

이렇게 보여야 합니다

ticks = 26,488,218, 그리고 pairs = 12. 오브젝트 스토리지에서 약 2,650만 행이 몇 초 만에 로드된 것입니다.

방법 2 — s3() 한 줄, 데모에서 가장 빠른 방법

이제 똑같은 데이터를 퍼블릭 파일에서 바로, SQL 문장 하나로 로드합니다. 행 수가 두 배가 되지 않도록 먼저 테이블을 비운 뒤 삽입하세요:

-- clear the rows ClickPipes just loaded so we don't double up
TRUNCATE TABLE forex;

-- load all ~26.5M ticks from the public S3 file in one line (server-side)
INSERT INTO forex
SELECT * FROM s3('https://partner-workshop.s3.ap-southeast-1.amazonaws.com/fx/ticks.parquet', NOSIGN, 'Parquet');

-- and check again (expect 26,488,218)
SELECT count() AS ticks, uniqExact(concat(base,'/',quote)) AS pairs FROM forex;

NOSIGN은 "자격 증명 없음"을 뜻합니다 — 퍼블릭 버킷을 읽는 데 필요한 것은 그것뿐입니다. 테이블의 컬럼 순서가 파일과 일치하기 때문에 SELECT *만으로 동작합니다.

ClickPipes와 s3() 함수 — 언제 무엇을 쓸까

같은 26,488,218 행을 두 가지 방법으로 로드했습니다. 차이는 첫 로드 이후에 무슨 일이 일어나는가, 즉 관리형 상시 파이프라인을 원하는지 아니면 빠른 일회성 읽기를 원하는지입니다.

ClickPipess3() 테이블 함수
무엇인가콘솔에서 설정하는 완전 관리형 인제스션 서비스쿼리 안에서 인라인으로 호출하는 SQL 함수
적합한 곳프로덕션, 그리고 설정 후 신경 쓰지 않아도 되는 상시 로드빠른 일회성 로드, 임시 탐색, 스크립트
상시 / 신규 파일버킷이나 스트림을 계속 감시하며 새 데이터를 연속 로드 가능일회성 — 실행할 때 있는 것만 읽습니다
설정가이드형 UI, SQL 불필요INSERT … SELECT 문장 하나
모니터링과 재시도내장 — 콘솔에서 상태, 오류 처리, 재시도없음 — 실패하면 직접 다시 실행
소스다양함: S3, GCS, Azure, Kafka와 다른 스트림, Postgres/MySQL CDC 등오브젝트 스토리지만(형제 함수: gcs(), azureBlobStorage(), url())

대략의 기준: 데이터가 계속 들어오고 관리형으로 두고 싶다면 ClickPipes를 쓰고, 지금 당장 파일 하나만 가져오고 싶다면 **s3()**를 쓰세요. 오늘은 빠르게 쿼리로 넘어가기 위해 한 줄짜리를 사용했습니다 — 이제 쿼리해 봅시다.

이 페이지의 내용

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

KO