아래 오라클 문서를 참조한 내용입니다.
Micropage: Oracle Sharding
Oracle Document: Oracle Sharding Overview
오라클 샤딩이란?
주로 오픈소스 데이터베이스 진영에서 OLTP 업무 확장을 위해 사용하던 샤딩(Sharding)을 오라클 데이터베이스에서도 18c부터 제공합니다. 기본 컨셉은 오픈소스의 그것과 거의 유사합니다만, 기존 사용 데이터베이스로서 오라클의 RAC, ADG, OGG 같은 기술을 샤드의 고가용성을 위해 사용하는 차별점이 있습니다.
오라클 샤딩은 데이터를 샤드(Shard)라고 하는 독립된 데이터베이스에 수평으로 분할(partitioning)하는 데이터 계층 아키텍처입니다. 각 샤드는 주로 같은 테이블, 칼럼에 서로 다른 데이터셋을 보유하게 됩니다. 확장성과 장애에 대한 격리가 필요한, 사용자와 트랜잭션이 많은 OLTP 어플리케이션에 적합한 아키텍처입니다. 기존 파티셔닝은 단일 데이터베이스 내에서의 데이터에 대한 논리적인 분할이라면, 샤딩은 복수의 샤드 데이터베이스로 데이터을 분할배포하는 것이라고 할 수 있습니다.
Oracle RAC와는 달리 Shared-nothing 아키텍처이며, 각 데이터베이스는 로컬의 전용 서버에 위치합니다. 리소스(CPU, 메모리, 디스크 등)는 물론 소프트웨어(클러스터웨어)도 샤드 간 공유하지 않습니다. 이런 아키텍처는 Single-point-of-failure가 제거되는 장점이 있습니다.
어플리케이션 입장에서 보면 샤드 데이터베이스는 내부적으로 몇개의 샤드로 되어있든, 어떠한 방법으로 샤딩되어 있든 상관없이 단일 데이터베이스로 보입니다. DBA 입장에서는 개별적으로 관리 가능한 여러개의 데이터베이스인 것과 대비됩니다.
각 샤드의 장애 발생에 대해서는 기존 오라클이 가지고 있던 Oracle Data Guard, Oracle Golden Gate, RAC와 같은 복제와 클러스터링 기술로 대응합니다.
샤딩 방법
오라클 샤딩은 테이블 파티셔닝 기반으로 이루어지며, 다음과 같은 방법을 제공합니다.
- System-managed Sharding: 데이터를 해쉬값에 의한 파티셔닝으로 샤드들에 자동으로 퍼뜨리는 방식입니다. 데이터가 균등하게 배포되며 각 샤드에는 랜덤하게 배치됩니다.
- User-defined Sharding: 성능이나 규제 요건 등의 이유로 사용자가 직접 데이터가 위치할 샤드를 지정하는 방식입니다. 관리자가 데이터의 샤드간 이동에 대한 제어를 할 수 있는 방식입니다.
- Composite Sharding: 데이터를 Range나 List로 샤딩한 후에 이를 Hash 방식으로 다시 샤딩하는 두 단계 샤딩 방식입니다.
오라클 샤딩의 구성 요소
Sharded Database(SDB)
- 논리적으로 단일한 DB
- 수평 분할된 물리 데이터베이스(샤드)로써 shared-nothing 구조를 가짐
Shard
- Sharded Database의 서브셋을 호스팅하는 물리적 개별 데이터베이스
Global Service
- SDB 에 액세스를 제공하는 DB 서비스
Shard Catalog
- 자동화된 shard 배포, sharded DB 중앙 관리, multi-sharded 쿼리 지원
Shard directors
- 샤딩 키(key) 에 기반한 고성능 연결 라우팅을 제공하는 네트웍 listener
- 클라이언트 드라이버 (JDBC, OCI, UCP, ODP.NET)가 커넥션 스트링에 지정된 샤딩 키를 인식해서 라우팅하는 Key-based routing, 샤딩 키를 지정하지 않은 쿼리에 대해 지원하는 Routing by proxy, 웹 또는 어플리케이션 레벨의 샤딩에서 지원하는 Middle-tire routing 등의 라우팅을 지원
Connection pool
- 런타임에 pooling 된 연결을 통해 DB 요청을 라우팅
<END>
다음 글로 이어집니다:
2022.04.19 - [Database/Oracle Database] - 18c 신기능 - 오라클 샤딩 (Sharding) - #2 설치 사례 - 준비
'Database > Oracle Database' 카테고리의 다른 글
commit_wait, commit_logging 설정이 성능에 미치는 영향 (0) | 2021.08.31 |
---|---|
Oracle Database In-Memory Advisor (0) | 2021.08.31 |
19c 신기능 - Memoptimized Rowstore - Fast Ingest (0) | 2021.08.27 |
21c 신기능 - 블록체인 테이블 (0) | 2021.08.04 |
오라클 데이터베이스 샘플 스키마 설치 (0) | 2021.08.04 |