데이터 리밸런싱

데이터 리밸런싱 (Rebalancing Data)

ClickHouse에서 샤드를 리밸런싱하는 방법을 선호 순서대로 소개해요. ClickHouse는 자동 샤드 리밸런싱을 지원하지 않기 때문에 상황에 맞는 수동 전략을 선택해야 해요.

출처: 문서

본문

ClickHouse는 자동 샤드 리밸런싱을 지원하지 않아요. 하지만 선호 순서에 따라 샤드를 리밸런싱하는 방법들이 있어요:

  1. 분산 테이블의 샤드를 조정해서 새 샤드로 쓰기가 치우치게 해요. 이렇게 하면 클러스터에 부하 불균형과 핫스팟이 발생할 수 있지만, 쓰기 처리량이 극도로 높지 않은 대부분의 시나리오에서는 실현 가능해요. 사용자가 쓰기 대상을 바꿀 필요가 없다는 장점이 있어요, 즉 분산 테이블을 그대로 유지할 수 있어요. 다만 기존 데이터를 리밸런싱하는 데는 도움이 되지 않아요.

  2. (1)의 대안으로, 기존 클러스터를 수정하고 클러스터가 균형을 맞출 때까지 새 샤드에만 배타적으로 쓰는 방식이에요 — 쓰기에 수동으로 가중치를 주는 거예요. (1)과 동일한 한계가 있어요.

  3. 기존 데이터를 리밸런싱해야 하고 데이터를 파티셔닝해 둔 경우, 파티션을 분리(detach)해서 다른 노드로 수동 이동한 후 새 샤드에 다시 연결(reattach)하는 방법을 고려해요. 이 방법은 이후의 기법들보다 수동적이지만 더 빠르고 리소스 집약도가 낮을 수 있어요. 수동 작업이므로 데이터 리밸런싱을 고려해야 해요.

  4. INSERT FROM SELECT를 통해 소스 클러스터에서 새 클러스터로 데이터를 내보내요. 이 방법은 매우 큰 데이터셋에서는 성능이 좋지 않고, 소스 클러스터에 상당한 IO가 발생하며 상당한 네트워크 리소스를 사용할 수 있어요. 이 방법은 최후의 수단이에요.

더 알아보기 (Learn more)