더북(TheBook)

파티셔닝 알고리즘을 이용한 데이터 분산

수평적으로 데이터를 분할하는 방법은 다음과 같이 여러 가지가 있다.

범위range

해시hash

리스트list

범위 파티션은 날짜와 숫자 같은 샤드 키에 정렬된 값이 여러 개 있을 때 유용하다. 예를 들어 한 컬렉션에 있는 모든 문서에 생성 일자 필드가 있다면 이 필드를 사용해 문서를 월별 샤드로 분할할 수 있다. 2015년 1월 1일부터 1월 31일까지 생성된 문서를 하나의 샤드로, 2015년 2월 1일부터 2월 28일까지 생성된 문서를 또 다른 샤드로 만들 수 있다.

Note 시간 기반의 보고서(예: 이번 달 매출과 지난달 매출을 비교하는 보고서)를 산출하는 비즈니스 인텔리전스와 분석 시스템들은 종종 시간 기반의 범위 파티셔닝을 사용한다.

해시 파티션은 문서를 배치하는 데 해시 함수를 사용한다. 해시 함수는 산출하는 값의 범위에 전체적으로 고르게 값을 생성하도록 설계되어 있다. 예를 들어 만약 클러스터가 서버 여덟 대로 구성되어 있고 해시 함수가 1에서 8 사이 값을 만들어 낸다면 서버 여덟 대에 각각 같은 수의 문서를 저장할 수 있다.

리스트 기반의 파티셔닝은 데이터를 배치하는 데 여러 값을 사용한다. 전자제품, 가전제품, 생활용품, 책, 의류와 같이 제품 데이터베이스가 여러 유형으로 있다고 해보자. 이러한 제품 유형은 서버 다섯 대에 문서를 할당하는 샤드 키로 사용될 수 있다.

만약 더 많은 파티션이 필요하다면 제품 유형과 판매 지역(북동부, 남동부, 중서부, 북서부, 남서부) 같은 다른 필드를 결합해 샤드 키로 사용할 수 있을 것이다. 제품 유형 다섯 개와 판매 지역 다섯 군데를 결합하면 다음 샤드를 포함해 총 25개의 샤드를 만들 수 있다.

전자제품 – 북동부

전자제품 – 남동부

전자제품 – 중서부

전자제품 – 남서부

전자제품 – 북서부

가전제품 – 북동부

가전제품 – 남동부

가전제품 – 중서부

그 외

샤딩은 사용자 수가 많거나 작업 처리 시 부하가 큰 애플리케이션을 위해 많은 문서 데이터베이스의 확장을 가능케 하는 기본적인 프로세스다. 수직 파티셔닝은 문서 데이터베이스에서 가능하며, 수평 파티셔닝이나 샤딩은 여러 데이터베이스에서 널리 사용된다.

문서 데이터베이스를 사용하는 애플리케이션 개발자들은 샤딩용으로 사용할 키를 선택할 수 있지만, 문서 데이터베이스 관리 시스템 개발자들은 데이터베이스에서 제공된 샤딩 알고리즘을 선택해서 사용한다.

이 장의 마지막인 다음 절에서는 이전 절들의 내용과는 잘 맞지는 않지만 8장 문서 데이터베이스 설계에서 다루는 문서 데이터베이스 모델링을 학습하기 전에 이해해야 할 중요한 용어들을 소개할 것이다.

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