더북(TheBook)

수평 파티셔닝과 샤딩

수평 파티셔닝horizontal partitioning은 문서 데이터베이스에 있는 문서나 관계형 데이터베이스에 있는 로우별로 데이터베이스를 분할하는 프로세스를 말한다.

데이터베이스에서 이런 식으로 분할된 부분을 샤드shard라고 하는데, 샤드는 독립된 개별 서버에 저장된다. 문서 데이터베이스의 수평 파티셔닝을 샤딩sharding이라고 하기도 한다. 데이터베이스가 복제 데이터를 갖도록 구성되었을 때 단일 샤드는 서버 여러 대에 저장될 수 있다. 데이터가 실제로 복제되든 그렇지 않든, 일단은 문서 데이터베이스 클러스터 내에 있는 서버는 서버 한 대당 샤드 하나만 갖게 된다(그림 7-9).

▲ 그림 7-9 수평 샤딩은 문서나 로우별로 데이터베이스를 분할해서 데이터베이스의 각 구간(샤드)을 여러 서버로 분산한다. 클러스터에서 복제를 한다면 단일 샤드는 서버 여러 대에서 사용 가능할 것이다


샤딩은 대용량의 문서 데이터베이스를 구현할 때 장점이 많다. 사용자 수가 많거나 단일 서버에서 무거운 작업을 실행하면 가용 CPU, 메모리, 대역폭에 많은 부하를 줄 수 있다. 이 문제를 해결하는 한 가지 방법은 더 많은 CPU, 더 많은 메모리, 더 많은 대역폭을 가진 대용량 서버를 사용하는 것이다.

수직 스케일링vertical scaling이라고도 하는 이 해결책은 샤딩보다 상당히 큰 비용과 시간이 필요하다. 하지만 샤딩은 문서 데이터베이스의 용량이 커지면 클러스터에 새로 서버를 추가할 수 있고 기존 서버도 대체되지 않고 계속 사용할 수 있다.

데이터베이스 설계자들은 샤딩을 구현하려고 샤드 키와 파티셔닝 방법을 선택해야 했다. 이 이야기는 이어지는 내용에서 다룰 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.