Chunk

샤드 키 값의 연속된 범위를 나타내는 논리적 단위

청크가 일정한 크기(기본 128MB)를 초과하게 되면 분할하게 된다.

특정 샤드에 다른 샤드에 비해 컬렉션의 청크가 너무 많아지게 되면 청크를 다른 샤드로 마이그레이션을 한다.

Untitled

Data Partitioning with Chunks

MongoDB는 Shard key를 사용하여 데이터를 청크로 분할한다.

각 청크는 샤드 키에 기초한 포괄적이고 배타적인 상한 범위를 갖는다.

데이터 insert, update시 청크 분할이 가능, 청크의 최소 단위는 하나의 도큐먼트

기존 단일 MongoD구성에 도큐먼트가 저장된 Collection의 Chunk 생성 과정

  1. Shard 설정
  2. 청크 생성 (청크 크기에 따라 청크수가 달라짐)
  3. balancer가 샤드 간의 청크를 마이그레이션. 이후 청크 배포도 관리.

빈 Collection의 Chunk 생성 과정

샤딩 작업은 위처럼 샤드 키 값의 전체 범위를 포함하는 청크 생성뿐만 아니라, 정의된 영역 범위에 대한 빈 청크를 생성하고 배포를 수행한다. 초기 배포 후 Balancer가 청크 배포를 관리한다.

Hash sharding : 샤드당 2개(기본값)의 빈 청크를 생성하여 샤드간 마이그레이션이 이루어짐

Range Sharding : 전체 범위를 포함하는 청크 하나를 생성하고 청크의 크기가 커지면 분할하고 마이그레이션함

Chunk Splits