컴퓨트-컴퓨트 분리란 무엇입니까?
- 전용 CPU 및 메모리 클러스터를 갖춘 ClickHouse 컴퓨트 노드(이를 레플리카라고 함)
- 서비스에 연결하기 위한 endpoint(또는 ClickHouse Cloud UI 콘솔을 통해 생성한 여러 endpoint)로, 로컬 및 서드파티 앱 연결에 사용됩니다(예:
https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443) - 서비스의 모든 데이터와 일부 메타데이터를 저장하는 객체 스토리지 폴더:
그림 1 - ClickHouse Cloud의 단일 서비스 단일 서비스만 사용하는 대신, 동일한 공유 스토리지에 액세스하는 여러 서비스를 생성할 수 있습니다. 이를 통해 데이터를 복제하지 않고도 특정 워크로드에 리소스를 전용 할당할 수 있습니다. 이 개념을 컴퓨트-컴퓨트 분리라고 합니다. 컴퓨트-컴퓨트 분리에서는 각 서비스가 자체 레플리카 세트와 endpoint를 가지지만, 동일한 객체 스토리지 폴더를 사용하고 같은 테이블, 뷰 등에 액세스합니다. 즉, 각 워크로드에 맞는 적절한 크기의 컴퓨트를 선택할 수 있습니다. 일부 워크로드는 소형 레플리카 1개만으로도 충분할 수 있지만, 다른 워크로드는 완전한 고가용성(HA)과 여러 레플리카에 걸친 수백 GB의 메모리가 필요할 수 있습니다. 또한 컴퓨트-컴퓨트 분리를 사용하면 읽기 작업과 쓰기 작업을 분리하여 서로 간섭하지 않도록 할 수 있습니다:
그림 2 - ClickHouse Cloud의 컴퓨트 분리
웨어하우스란 무엇입니까?
- 기본 서비스
DWH Prod - 보조 서비스
DWH Prod Subservice
그림 3 - 웨어하우스 예시 웨어하우스의 모든 서비스는 다음 항목을 공유합니다.
- Region(예: us-east1)
- Cloud 서비스 제공업체(AWS, GCP 또는 Azure)
- ClickHouse 데이터베이스 버전
- ClickHouse Keeper(레플리카 관리용)
액세스 제어
데이터베이스 자격 증명
그림 4 - 사용자 Alice는 Service 1에서 생성되었지만, 동일한 자격 증명을 사용해 동일한 데이터를 공유하는 모든 서비스에 액세스할 수 있습니다
네트워크 액세스 제어
그림 5 - 네트워크 액세스 제어 설정으로 인해 Alice는 서비스 2에 액세스할 수 없습니다 사용자가 default 사용자 대신 개별 사용자로 연결하는 경우에는 데이터에 대한 액세스를 제어하기 위해 ClickHouse 역할 및 권한 부여를 적용할 수도 있습니다.
읽기 전용 서비스와 읽기-쓰기 서비스
- 읽기-쓰기
- ClickHouse에서 데이터를 읽고 쓸 수 있습니다
- 백그라운드 머지 작업(예: 데이터 삽입 후 파트 머지)을 수행하며, 이 과정에서 CPU와 메모리를 사용합니다
- 데이터를 외부로 내보낼 수 있습니다
- 읽기 전용
- 데이터를 읽기만 할 수 있으며, ClickHouse에서 데이터를 쓰거나 수정할 수 없습니다
- system table 외부에서는 백그라운드 머지 작업을 수행하지 않으므로, 리소스를 읽기 쿼리에 온전히 사용할 수 있습니다
- 여전히 데이터를 외부로 내보낼 수는 있지만(예: 테이블 함수 사용), ClickHouse 내부 데이터는 변경할 수 없습니다
- 백그라운드 머지로 인해 활성 상태가 유지될 수 있는 읽기-쓰기 서비스와 달리, 지연 없이 유휴 상태로 전환됩니다
그림 6 - 웨어하우스의 읽기-쓰기 및 읽기 전용 서비스
- 읽기 전용 서비스는 현재 사용자 관리 작업(CREATE, DROP 등)을 지원합니다.
- 갱신 가능 구체화 뷰는 웨어하우스의 읽기-쓰기(RW) 서비스에서만 실행됩니다.
- 서비스 유형(읽기 전용 또는 읽기-쓰기)은 생성 시 고정되며, 이후에는 Cloud Console에서 변경할 수 없습니다. 읽기 전용과 읽기-쓰기 액세스 간에 전환하려면 원하는 유형으로 웨어하우스에 새 서비스를 생성하십시오.
스케일링
- 노드(레플리카) 수. 기본 서비스(웨어하우스에서 처음 생성된 서비스)는 2개 이상의 노드를 가져야 합니다. 각 보조 서비스는 1개 이상의 노드를 가질 수 있습니다.
- 노드(레플리카) 크기
- 서비스를 자동으로 스케일링할지 여부(수평 및 수직)
- 비활성 상태일 때 서비스를 유휴 상태로 전환할지 여부
clusterAllReplicas 동작 변경 사항
clusterAllReplicas()의 동작이 달라집니다.
default 클러스터 이름을 사용하면 웨어하우스의 모든 서비스가 아니라 현재 서비스 내의 레플리카만 대상으로 합니다.
예를 들어, 서비스 1에서 clusterAllReplicas(default, system, processes)를 호출하면 서비스 1에서 실행 중인 프로세스만 반환됩니다.
웨어하우스의 모든 서비스에 걸쳐 쿼리하려면 대신 all_groups.default 클러스터 이름을 사용하십시오:
보조 서비스 단일 노드 서비스는 수직 확장이 가능하지만, 기본 서비스 단일 노드 서비스는 수직 확장이 불가능합니다.
제한 사항
워크로드 격리의 제한 사항
-
모든 읽기-쓰기 서비스는 기본적으로 백그라운드 머지 작업을 처리합니다. ClickHouse에 데이터를 삽입할 때 데이터베이스는 먼저 데이터를 일부 스테이징 파티션에 삽입한 다음 백그라운드에서 머지를 수행합니다. 이러한 머지는 메모리와 CPU 리소스를 소모할 수 있습니다. 두 개의 읽기-쓰기 서비스가 동일한 스토리지를 공유하면 둘 다 백그라운드 작업을 수행합니다. 즉, Service 1에서
INSERT쿼리가 실행되었더라도 머지 작업은 Service 2에서 완료될 수 있습니다. 읽기 전용 서비스는 백그라운드 머지를 실행하지 않으므로 이 작업에 리소스를 사용하지 않습니다. 지원팀을 통해 서비스에서 머지를 비활성화할 수도 있습니다. - 모든 읽기-쓰기 서비스는 S3Queue 테이블 엔진 삽입 작업을 수행합니다. 읽기-쓰기 서비스에서 S3Queue 테이블을 생성하면, 웨어하우스의 다른 모든 읽기-쓰기 서비스도 S3에서 데이터를 읽고 데이터베이스에 데이터를 쓸 수 있습니다.
- 유휴 상태 전환이 활성화된 경우, 한 읽기-쓰기 서비스의 삽입으로 인해 다른 읽기-쓰기 서비스가 유휴 상태로 전환되지 않을 수 있습니다. 다음과 같은 상황이 있습니다 한 서비스가 다른 서비스의 백그라운드 머지 작업을 수행할 수 있습니다. 이러한 백그라운드 작업으로 인해 두 번째 서비스가 유휴 상태로 전환되지 않을 수 있습니다. 백그라운드 작업이 끝나면 해당 서비스는 유휴 상태가 됩니다. 읽기 전용 서비스는 영향을 받지 않습니다.
알아두면 유용한 사항
- ClickHouse 버전: 업그레이드 일정은 기본 서비스의 설정에 따라 결정됩니다. 보조 서비스는 기본 서비스와 별개의 릴리스 일정을 가질 수 없습니다.
-
서비스가 기본적으로 유휴 상태이거나 중지되어 있으면
CREATE/RENAME/DROP DATABASE쿼리가 차단될 수 있습니다. 서비스가 유휴 상태이거나 중지된 상태에서 이러한 쿼리를 실행하면 쿼리가 응답 없이 대기할 수 있습니다. 이를 우회하려면 세션 수준 또는 개별 쿼리 수준에서settings distributed_ddl_task_timeout=0을 사용하여 데이터베이스 관리 쿼리를 실행할 수 있습니다.
- 레플리카 1개 기본 서비스 현재 기본 동작에서는 보조 서비스는 레플리카를 1개까지 가질 수 있지만, 기본 서비스는 최소 2개여야 합니다. 레플리카 1개 기본 서비스를 사용하려면 지원팀에 문의하십시오. 이 동작은 2026년 2분기부터 기본으로 활성화될 예정입니다.
- 기본 서비스 유휴 상태 전환: 기본 서비스의 자동 유휴 상태 전환은 기본으로 활성화되어 있습니다.
요금
백업
- 단일 웨어하우스의 모든 서비스는 동일한 스토리지를 공유하므로 백업은 기본(초기) 서비스에서만 수행됩니다. 이렇게 하면 웨어하우스 내 모든 서비스의 데이터가 백업됩니다.
- 웨어하우스의 기본 서비스에서 백업을 복원하면 기존 웨어하우스와 연결되지 않은 완전히 새로운 서비스로 복원됩니다. 그런 다음 복원이 완료되는 즉시 새 서비스에 서비스를 추가할 수 있습니다.
웨어하우스를 설정하는 방법
웨어하우스 생성하기
그림 7 - 더하기 기호를 클릭하여 웨어하우스에 새 서비스를 생성합니다 서비스 생성 화면에서는 새 서비스의 데이터 원본으로 드롭다운에서 원본 서비스가 선택되어 있습니다. 생성이 완료되면 이 두 서비스가 하나의 웨어하우스를 구성합니다.
웨어하우스 이름 변경하기
- 서비스 페이지 오른쪽 상단에서 “Sort by warehouse”를 선택한 다음, 웨어하우스 이름 옆의 연필 아이콘을 클릭할 수 있습니다
- 어떤 서비스에서든 웨어하우스 이름을 클릭한 다음, 해당 위치에서 웨어하우스 이름을 변경할 수 있습니다
웨어하우스 삭제하기
- 처음 생성된 서비스를 제외하고, 이후에 추가로 생성한 모든 서비스를 삭제합니다.
- 처음 생성된 서비스를 삭제합니다(경고: 이 단계에서 웨어하우스의 모든 데이터가 삭제됩니다).