데이터베이스 분할
1. 개요
1. 개요
데이터베이스 분할은 단일 데이터베이스 관리 시스템에 저장된 대규모 데이터베이스를 논리적 또는 물리적으로 작은 단위로 나누어 관리하는 기법이다. 이 기법은 데이터베이스의 성능, 가용성, 확장성, 관리 용이성을 동시에 향상시키기 위해 분산 시스템과 빅데이터 처리 환경에서 널리 사용된다.
데이터베이스 분할의 주요 목적은 성능 최적화이다. 단일 서버에 모든 데이터와 트랜잭션이 집중되면 디스크 I/O와 CPU 사용률이 높아져 응답 시간이 느려질 수 있다. 분할을 통해 데이터와 작업 부하를 여러 서버에 분산시킴으로써 병목 현상을 줄이고 전반적인 처리 속도를 향상시킬 수 있다.
또한, 분할은 시스템의 가용성과 확장성을 높인다. 하나의 파티션에 장애가 발생하더라도 다른 파티션은 정상적으로 서비스를 제공할 수 있어 시스템 전체의 내결함성이 향상된다. 데이터 양이 증가할 때는 새로운 파티션을 추가하는 방식으로 시스템을 수평적으로 확장하는 것이 용이해진다.
분할 방식은 크게 수평 분할과 수직 분할로 구분된다. 수평 분할은 하나의 테이블의 행을 특정 기준에 따라 여러 물리적 테이블로 나누는 방식이며, 샤딩이라고도 불린다. 수직 분할은 하나의 테이블의 열을 기준으로 나누어 자주 접근하는 열과 그렇지 않은 열을 분리하는 방식이다.
2. 분할의 목적과 장점
2. 분할의 목적과 장점
2.1. 성능 향상
2.1. 성능 향상
데이터베이스 분할의 핵심 목적 중 하나는 성능을 향상시키는 것이다. 단일 데이터베이스 관리 시스템에 모든 데이터가 집중되면, 데이터 양이 증가함에 따라 쿼리 처리 속도가 느려지고 디스크 I/O 및 CPU 사용률이 높아져 시스템 전체 성능에 병목 현상이 발생할 수 있다. 분할은 이러한 부하를 여러 데이터베이스 서버 또는 스토리지에 분산시켜 개별 작업의 처리 속도를 높인다.
성능 향상은 주로 수평 분할과 수직 분할을 통해 달성된다. 수평 분할, 즉 샤딩은 동일한 스키마를 가진 데이터 행을 기준으로 여러 물리적 단위로 나눈다. 이로 인해 특정 분할 키에 대한 조회나 갱신 작업이 전체 데이터가 아닌 해당 데이터가 위치한 특정 파티션에서만 수행되므로, 처리해야 할 데이터 범위가 줄어들어 응답 시간이 단축된다. 예를 들어, 사용자 데이터를 지역별로 분할하면 특정 지역 사용자에 대한 쿼리는 해당 지역 파티션만 검색하면 된다.
수직 분할은 테이블의 열을 기준으로 분할하여 성능을 개선한다. 자주 접근하는 열과 그렇지 않은 열을 분리하거나, BLOB과 같은 대용량 데이터를 별도로 저장함으로써, 단일 I/O 작업 시 읽어야 하는 데이터 양을 줄일 수 있다. 이는 인덱스의 효율성을 높이고 캐시 히트율을 개선하여 전반적인 트랜잭션 처리 속도를 향상시킨다. 결과적으로, 데이터베이스 분할은 대규모 온라인 트랜잭션 처리 시스템이나 빅데이터 분석 환경에서 필수적인 성능 최적화 전략으로 자리 잡았다.
2.2. 가용성 및 확장성 향상
2.2. 가용성 및 확장성 향상
데이터베이스 분할은 시스템의 가용성을 높이는 데 기여한다. 단일 데이터베이스 서버에 장애가 발생하면 전체 서비스가 중단될 수 있지만, 데이터를 여러 파티션으로 나누어 다른 서버에 분산 저장하면 일부 파티션에 문제가 생겨도 나머지 파티션의 서비스는 정상적으로 유지될 수 있다. 이는 장애의 영향을 지역화하여 전체 시스템의 내결함성을 향상시킨다. 또한, 각 파티션을 독립적으로 백업하고 복구할 수 있어 관리 작업의 유연성도 증가한다.
확장성 측면에서 분할은 시스템이 데이터 양과 사용자 요청이 증가함에 따라 용량과 처리 능력을 선형적으로 늘릴 수 있는 기반을 제공한다. 특히 수평 분할 방식은 데이터를 여러 서버에 분배하여 단일 서버의 한계를 극복하고, 분산 시스템으로서의 확장을 가능하게 한다. 새로운 서버를 추가하여 데이터를 재분배함으로써 시스템의 전체 처리량을 증가시키는 수평적 확장이 대표적인 예이다.
이러한 가용성과 확장성의 향상은 빅데이터 처리, 대규모 웹 서비스, 실시간 분석과 같이 고가용성과 탄력적인 성장이 요구되는 현대 애플리케이션 환경에서 필수적인 요소이다. 데이터베이스 분할은 단순한 성능 최적화를 넘어, 시스템의 신뢰성과 미래 성장 가능성을 보장하는 핵심 설계 전략으로 자리 잡았다.
2.3. 관리 용이성
2.3. 관리 용이성
데이터베이스 분할은 대규모 데이터베이스를 논리적 또는 물리적으로 나누어 관리하는 기법으로, 단일 거대한 데이터베이스를 관리하는 것보다 관리 용이성을 크게 증대시킨다. 분할된 각 파티션은 독립적인 단위가 되어 백업, 복구, 인덱스 재구성, 데이터 정리와 같은 관리 작업의 범위와 대상이 명확해진다. 이는 전체 데이터베이스에 대한 일괄 작업보다 시간과 자원을 절약하며, 특정 파티션에 대한 유지보수 작업이 다른 파티션의 서비스 가용성에 영향을 미치지 않도록 할 수 있다.
또한, 분할은 데이터의 논리적 그룹화를 가능하게 하여 관리자의 업무 효율을 높인다. 예를 들어, 수직 분할을 통해 자주 접근하는 열과 그렇지 않은 열을 분리하거나, 기능 분할을 통해 고객 관리 모듈과 주문 처리 모듈의 데이터를 별도로 저장하면, 각 비즈니스 도메인에 맞춘 최적화된 관리 정책을 수립하고 적용하기가 용이해진다. 이는 데이터베이스 관리 시스템의 운영 복잡도를 낮추는 효과를 가져온다.
데이터 보관 및 수명 주기 관리 측면에서도 분할은 유리하다. 시간 기반의 수평 분할을 적용하면, 특정 기간(예: 월별, 연도별)의 오래된 데이터가 별도의 파티션에 저장된다. 이를 통해 데이터 보관 정책에 따라 특정 파티션만을 아카이브하거나 삭제하는 작업이 간소화되며, 활발히 사용 중인 최신 데이터와의 물리적 분리로 인해 핵심 성능 저하를 방지할 수 있다. 이러한 체계적인 관리는 빅데이터 환경에서 데이터의 효율적 처리를 지원하는 중요한 요소가 된다.
3. 분할 방식
3. 분할 방식
3.1. 수평 분할 (Horizontal Partitioning / Sharding)
3.1. 수평 분할 (Horizontal Partitioning / Sharding)
수평 분할은 데이터베이스의 테이블 내 행을 기준으로 데이터를 분할하는 방식이다. 샤딩이라고도 불리며, 동일한 스키마를 가진 여러 개의 파티션으로 나누어 각각을 별도의 데이터베이스 서버에 저장하는 것이 일반적이다. 예를 들어, 사용자 테이블을 사용자 ID의 범위나 해시 값에 따라 여러 샤드로 나누는 방식이 여기에 해당한다. 이 방식은 특히 단일 테이블의 데이터 양이 매우 커져 쿼리 성능이 저하될 때 효과적이다.
수평 분할의 주요 장점은 부하 분산과 확장성이다. 데이터와 트랜잭션 부하가 여러 물리 서버에 분산되므로, 읽기 및 쓰기 처리량을 선형적으로 늘릴 수 있다. 또한 특정 샤드에 장애가 발생하더라도 다른 샤드의 서비스에는 영향을 주지 않아 가용성을 높일 수 있다. 이는 웹 애플리케이션이나 소셜 미디어 플랫폼처럼 대량의 사용자 데이터를 처리해야 하는 시스템에서 널리 채택된다.
그러나 수평 분할은 구현과 운영이 복잡한 측면이 있다. 분산된 데이터에 대한 조인 연산이 비효율적일 수 있으며, 데이터 일관성을 유지하기 위한 메커니즘이 추가로 필요하다. 또한 데이터 분포가 고르지 않으면 특정 샤드에만 부하가 집중되는 핫스팟 현상이 발생할 수 있어, 분할 키를 신중하게 설계해야 한다. 데이터가 계속 증가하면 기존 파티션을 다시 나누는 재분할 작업도 고려해야 하는 과제이다.
이러한 방식은 분산 데이터베이스와 빅데이터 처리의 핵심 개념으로, MySQL, PostgreSQL과 같은 전통적인 관계형 데이터베이스 관리 시스템뿐만 아니라 MongoDB, Cassandra 같은 NoSQL 데이터베이스에서도 기본적으로 지원되는 기능이다.
3.2. 수직 분할 (Vertical Partitioning)
3.2. 수직 분할 (Vertical Partitioning)
수직 분할은 데이터베이스의 테이블 스키마를 기준으로 열을 분리하는 방식이다. 하나의 테이블에 포함된 많은 열 중에서 자주 접근하는 열과 그렇지 않은 열을 구분하거나, 서로 다른 유형의 데이터를 분리하여 별도의 테이블이나 물리적 저장 공간에 배치한다. 이는 주로 테이블의 크기가 매우 커져 단일 데이터베이스 관리 시스템에서 관리하기 비효율적일 때, 또는 특정 열에 대한 접근 빈도가 현저히 다를 때 적용된다.
수직 분할의 가장 일반적인 구현 예는 핵심 열과 자세한 정보 열을 분리하는 것이다. 예를 들어, 사용자 정보 테이블에서 사용자 ID, 이름, 이메일 등 자주 조회되는 기본 정보는 메인 테이블에 두고, 프로필 설명, 주소 상세, 설정 정보 등 덜 자주 접근하는 대용량의 열은 별도의 테이블로 분리할 수 있다. 또한, 보안상의 이유로 민감한 데이터 열을 분리하거나, BLOB이나 CLOB과 같은 대형 객체 데이터를 별도로 저장하는 경우도 수직 분할에 해당한다.
이 방식의 주요 장점은 I/O 성능을 최적화할 수 있다는 점이다. 쿼리가 필요한 열만 집중적으로 스캔함으로써 디스크에서 메모리로 읽어 들이는 데이터 양을 줄일 수 있으며, 이는 결과적으로 쿼리 처리 속도를 높인다. 또한, 자주 변경되지 않는 열을 분리하면 락 경합을 줄이고 캐시 효율성을 높이는 데 도움이 된다. 데이터 접근 패턴에 맞춰 열을 그룹화함으로써 관계형 데이터베이스의 성능을 개선하는 효과적인 방법이다.
그러나 수직 분할은 테이블 간의 조인 연산을 빈번하게 유발할 수 있다는 단점이 있다. 분리된 열들을 함께 조회해야 하는 쿼리의 경우, 여러 테이블을 조인해야 하므로 오히려 성능이 저하될 수 있다. 따라서 분할 설계 시 애플리케이션의 주요 쿼리 패턴을 신중하게 분석하여, 함께 접근되는 열들은 가능한 한 같은 테이블에 유지하는 것이 중요하다. 수직 분할은 주로 단일 서버 내에서 성능을 최적화하는 데 초점을 맞춘 반면, 여러 서버에 데이터를 분산시키는 수평 분할과는 목적과 접근 방식에서 차이가 있다.
3.3. 기능 분할 (Functional Partitioning)
3.3. 기능 분할 (Functional Partitioning)
기능 분할은 애플리케이션의 비즈니스 기능, 서비스 또는 도메인 단위에 따라 데이터베이스를 분리하는 방식이다. 이는 마이크로서비스 아키텍처와 밀접하게 연관되어 있으며, 각 서비스가 독립적인 데이터베이스를 소유하도록 설계하는 패턴이다. 예를 들어, 전자상거래 시스템에서 주문 데이터, 고객 데이터, 상품 데이터를 각각 별도의 데이터베이스로 분리하여 관리하는 것이 기능 분할의 전형적인 예시이다.
이 방식의 핵심 장점은 서비스 간의 결합도를 낮추고 독립적인 확장성을 제공하는 데 있다. 각 기능 모듈은 자신의 데이터베이스에만 접근하므로, 특정 서비스의 부하 증가나 장애가 다른 서비스의 데이터베이스 성능에 직접적인 영향을 미치지 않는다. 또한, 각 서비스별로 최적화된 데이터베이스 기술(관계형 데이터베이스 관리 시스템, NoSQL, 인메모리 데이터베이스 등)을 선택적으로 적용할 수 있어 유연성이 높다.
그러나 기능 분할은 데이터의 일관성 유지와 분산 트랜잭션 처리에서 복잡성을 야기한다. 서로 다른 데이터베이스에 저장된 데이터를 함께 조회하거나 업데이트해야 하는 경우가 빈번히 발생하며, 이를 해결하기 위해 사가 패턴이나 이벤트 소싱과 같은 분산 시스템 설계 패턴이 필요하다. 또한, 여러 데이터베이스를 통합하여 관리하고 모니터링하는 작업이 전통적인 단일 데이터베이스 관리보다 복잡해질 수 있다.
결론적으로, 기능 분할은 시스템의 규모가 크고 각 기능이 명확하게 분리된 분산 애플리케이션에 적합한 방식이다. 이는 데이터베이스의 물리적 배치를 넘어 애플리케이션의 아키텍처와 조직 구조까지 영향을 미치는 전략적 접근법으로 볼 수 있다.
4. 분할 키 선정
4. 분할 키 선정
분할 키 선정은 데이터베이스 분할, 특히 수평 분할을 설계할 때 가장 중요한 결정 사항 중 하나이다. 분할 키는 데이터를 어떤 기준으로 나눌지를 결정하는 열(Column) 또는 속성(Attribute)을 의미하며, 이 키 값에 따라 데이터가 특정 파티션 또는 샤드(Shard)에 할당된다. 적절한 분할 키를 선택하는 것은 데이터 분포의 균형, 쿼리 성능, 그리고 시스템의 확장성에 직접적인 영향을 미친다.
분할 키를 선정할 때는 크게 두 가지 목표를 고려해야 한다. 첫째는 데이터와 작업 부하가 모든 파티션에 고르게 분산되도록 하는 것이다. 이는 특정 파티션에만 데이터나 트래픽이 집중되는 핫스팟(Hotspot) 현상을 방지하여 성능을 최적화한다. 둘째는 자주 실행되는 주요 쿼리(Query)의 조건이 분할 키를 포함하도록 하여, 쿼리가 가능한 한 적은 수의 파티션에만 접근하도록 유도하는 것이다. 이를 통해 불필요한 풀 테이블 스캔(Full Table Scan)이나 여러 파티션을 동시에 검색하는 비효율을 줄일 수 있다.
일반적인 분할 키의 예로는 사용자 ID, 지역 코드, 생성 일자 등이 있다. 예를 들어, 사용자 프로필 데이터를 분할할 때 사용자 ID를 키로 선택하면 특정 사용자의 모든 데이터는 동일한 파티션에 위치하게 되어 해당 사용자 관련 쿼리가 효율적으로 처리될 수 있다. 반면, 생성 일자를 분할 키로 사용하면 시간 범위 기반의 조회가 빠르게 이루어질 수 있으나, 최신 데이터가 집중되는 파티션에 부하가 몰릴 수 있는 위험이 있다.
잘못된 분할 키 선정은 데이터 불균형을 초래하고, 조인(Join) 연산을 복잡하게 만들며, 향후 재분할(Re-sharding)의 필요성을 증가시킬 수 있다. 따라서 애플리케이션의 데이터 접근 패턴, 비즈니스 로직, 그리고 예상되는 데이터 성장 추이를 종합적으로 분석하여 분할 키를 신중하게 결정해야 한다.
5. 분할 시 고려사항
5. 분할 시 고려사항
5.1. 데이터 일관성
5.1. 데이터 일관성
데이터베이스를 분할하면 데이터가 여러 물리적 노드에 분산 저장되므로, 데이터 일관성을 유지하는 것이 핵심 과제 중 하나가 된다. 분산 환경에서는 네트워크 지연, 노드 장애, 동시성 제어 등으로 인해 모든 복제본이 동일한 상태를 유지하기 어려울 수 있다. 이로 인해 사용자가 다른 분할에서 서로 다른 값을 읽을 수 있는 일관성 문제가 발생할 수 있다.
이러한 문제를 해결하기 위해 다양한 일관성 모델이 적용된다. 강한 일관성 모델은 모든 읽기 연산이 가장 최근에 쓰여진 데이터를 반환하도록 보장하지만, 이는 성능과 가용성에 부정적인 영향을 미칠 수 있다. 반면, 최종 일관성 모델은 일시적인 불일치를 허용하지만, 충분한 시간이 지나면 모든 복제본이 동일한 값으로 수렴하도록 보장하여 가용성과 확장성을 높인다. 분산 데이터베이스 시스템은 CAP 정리에 따라 일관성, 가용성, 분할 내성 중 두 가치를 동시에 완벽하게 보장할 수 없으므로, 시스템의 요구사항에 맞는 적절한 일관성 수준을 선택해야 한다.
데이터 일관성을 유지하는 구체적인 메커니즘으로는 2단계 커밋 프로토콜과 같은 분산 트랜잭션 관리 기법이 사용된다. 또한, 다중 버전 동시성 제어나 낙관적 동시성 제어를 통해 동시 접근을 관리하거나, 비관적 잠금을 활용하여 데이터 무결성을 보호하기도 한다. 분할된 데이터베이스에서 조인이나 범위 쿼리를 실행할 때는 여러 분할에 걸쳐 데이터를 수집하고 정합성을 맞추는 작업이 추가로 필요하여, 쿼리의 복잡도와 응답 시간이 증가할 수 있다는 점도 고려해야 한다.
5.2. 조인 및 쿼리 복잡도
5.2. 조인 및 쿼리 복잡도
데이터베이스 분할을 적용하면, 특히 수평 분할이 이루어진 경우, 여러 파티션에 걸쳐 있는 데이터를 대상으로 한 조인 연산의 복잡도가 크게 증가한다. 전통적인 단일 데이터베이스 관리 시스템에서는 내부적으로 최적화된 조인을 수행할 수 있지만, 데이터가 여러 물리적 서버에 분산되면 네트워크를 통한 데이터 이동과 중간 결과의 병합이 필요해져 지연 시간이 길어지고 처리 비용이 높아진다. 이로 인해 분산 조인을 효율적으로 처리하기 위한 특수한 알고리즘이 요구된다.
쿼리의 복잡도 또한 상승한다. 애플리케이션이나 쿼리 작성자는 데이터가 어떤 분할 키를 기준으로 어느 샤드에 위치하는지를 알고 있어야 올바른 대상에 질의를 보낼 수 있다. 잘못된 샤드에 브로드캐스트 형태의 쿼리를 수행하면 시스템 전체의 성능이 저하될 수 있다. 따라서 분할된 환경에서는 쿼리 라우팅 로직이 중요해지며, 데이터베이스 미들웨어나 프록시 계층을 통해 이를 투명하게 관리하는 경우가 많다.
고려사항 | 설명 | 주로 영향을 받는 분할 방식 |
|---|---|---|
분산 조인 | 여러 파티션의 데이터를 연결할 때 네트워크 비용과 병합 오버헤드 발생 | |
쿼리 라우팅 | 쿼리가 실행될 정확한 파티션을 식별해야 함, 그렇지 않으면 성능 저하 | |
글로벌 쿼리 | 모든 파티션을 스캔해야 하는 집계 쿼리(예: COUNT, SUM)는 응답 시간이 길어짐 | |
스키마 변경 | 여러 파티션의 테이블 구조를 일관되게 변경하고 관리해야 하는 부담 |
결국, 데이터베이스 분할은 성능과 확장성이라는 큰 이점을 제공하지만, 애플리케이션의 쿼리 패턴과 데이터 접근 방식을 재설계해야 하는 트레이드오프를 동반한다. 복잡한 조인이 빈번한 트랜잭션 시스템이나 실시간 분석 시스템에서는 이러한 요소를 면밀히 평가하여 분할 전략을 수립해야 한다.
5.3. 재분할 (Re-sharding)
5.3. 재분할 (Re-sharding)
재분할은 수평 분할 또는 샤딩이 적용된 데이터베이스에서, 데이터 분포의 불균형이나 시스템 용량 한계로 인해 기존의 분할 방식을 재조정하는 과정이다. 데이터의 양이 지속적으로 증가하거나 접근 패턴이 변화하면 특정 샤드에만 부하가 집중되는 핫스팟 현상이 발생할 수 있다. 이는 시스템 성능을 저하시키고 확장성을 제한한다. 재분할은 이러한 문제를 해결하기 위해 데이터를 새로운 분할 키 기준에 따라 재배치하거나, 기존 샤드를 더 작은 단위로 나누는 작업을 포함한다.
재분할 작업은 주로 두 가지 방식으로 이루어진다. 첫째는 기존의 분할 키를 변경하지 않고, 데이터가 가득 찬 샤드를 두 개 이상의 새로운 샤드로 분할하는 방식이다. 둘째는 데이터 분포를 근본적으로 재편하기 위해 새로운 분할 키를 정의하고 모든 데이터를 해당 기준에 따라 다시 배치하는 방식이다. 후자의 경우 더 큰 규모의 데이터 마이그레이션이 필요하며, 작업 중에도 서비스 가용성을 유지하는 것이 핵심 과제가 된다.
이 과정은 상당한 복잡성을 동반한다. 재분할 중에는 데이터의 일관성을 유지해야 하며, 애플리케이션의 쿼리 라우팅 로직을 업데이트해야 한다. 또한, 대량의 데이터 이동으로 인한 네트워크 및 스토리지 부하, 그리고 작업 완료 시점의 데이터 동기화 문제를 신중하게 관리해야 한다. 많은 현대 데이터베이스 관리 시스템과 분산 시스템 프레임워크는 자동화된 재분할 기능이나 점진적 마이그레이션 도구를 제공하여 이러한 어려움을 완화한다.
고려사항 | 설명 |
|---|---|
다운타임 최소화 | 재분할 작업 중 서비스 중단을 방지하기 위한 롤링 업데이트나 온라인 마이그레이션 전략 필요 |
데이터 일관성 | 데이터 이동 중 읽기/쓰기 연산에 대한 ACID 속성 또는 최종 일관성 보장 |
자동화 도구 활용 | 빅데이터 플랫폼이나 클라우드 데이터베이스 서비스가 제공하는 관리 도구를 통한 작업 자동화 |
효과적으로 수행된 재분할은 시스템의 부하를 다시 균형 있게 분산시켜 성능을 회복시키고, 데이터베이스의 수평적 확장 한계를 늘려준다. 이는 데이터 성장에 유연하게 대응하는 확장성 있는 아키텍처를 유지하는 데 필수적인 운영 절차이다.
6. 구현 방법 및 도구
6. 구현 방법 및 도구
데이터베이스 분할을 구현하는 방법은 크게 애플리케이션 수준에서 직접 관리하는 방식과 데이터베이스 관리 시스템이나 미들웨어를 활용하는 방식으로 나뉜다. 애플리케이션 수준 구현은 개발자가 분할 키에 따른 데이터 라우팅 로직을 직접 코드에 작성하는 방식으로, 특정 프레임워크나 라이브러리에 의존하지 않아 유연성이 높지만, 복잡한 트랜잭션 관리와 재분할 작업을 모두 직접 구현해야 하는 부담이 있다.
많은 현대의 데이터베이스 관리 시스템은 자체적인 분할 기능을 내장하고 있다. 예를 들어, MySQL과 PostgreSQL은 파티셔닝 기능을 제공하여 테이블을 물리적으로 나눈 후에도 단일 논리 테이블처럼 조회 및 관리할 수 있게 한다. 한편, MongoDB, Cassandra, Redis Cluster와 같은 NoSQL 데이터베이스들은 샤딩을 핵심 아키텍처로 채택하여 자동 또는 반자동으로 수평 분할을 처리한다. 이러한 시스템들은 데이터 분배, 노드 추가 시 재분할, 요청 라우팅을 투명하게 관리한다.
복잡한 분산 환경에서는 프록시 기반의 미들웨어를 사용하는 것이 일반적이다. MyCat, ProxySQL, Vitess와 같은 도구들은 클라이언트 애플리케이션과 백엔드 데이터베이스 인스턴스 사이에 위치하여, SQL 쿼리를 분석하고 적절한 샤드로 라우팅하는 역할을 한다. 이는 애플리케이션 코드를 크게 변경하지 않고도 분할 아키텍처를 도입할 수 있게 하며, 특히 조인 쿼리가 여러 샤드에 걸쳐 있을 때의 복잡성을 해결하는 데 도움을 준다. 또한 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼은 분할된 데이터베이스 인스턴스의 배포, 스케일링, 관리를 자동화하는 데 활용된다.
