데이터베이스 가상화
Database virtualization데이터베이스 가상화는 애플리케이션 스택 내의 스토리지 계층과 애플리케이션 계층 사이에 있는 데이터베이스 계층의 디커플링이다. 데이터베이스 계층의 가상화는 물리적에서 벗어나 논리적 또는 가상으로 전환할 수 있도록 한다. 가상화는 컴퓨팅 및 스토리지 리소스를 풀링하고 온디맨드 방식으로 할당할 수 있도록 한다. 이를 통해 멀티 테넌시(Multi-tenancy)를 위한 단일 서버 리소스 공유는 물론 서버 리소스를 단일 논리적 데이터베이스 또는 클러스터로 풀링할 수 있다. 두 경우 모두 데이터베이스 가상화는 유연성 향상, 풀링된 리소스의 보다 세분화되고 효율적인 할당, 확장 가능한 컴퓨팅을 제공한다.
가상 데이터 파티셔닝
데이터베이스가 성장함에 따라 데이터 저장소를 분할하는 행위는 수십 년 동안 사용되어 왔다. 레거시 데이터 관리 시스템 내부에 데이터가 분할된 두 가지 주요 방법이 있다.
- 공유 데이터 데이터베이스 - 모든 데이터베이스 클러스터 노드가 단일 파티션을 공유한다고 가정하는 아키텍처 노드 간 통신은 클러스터의 다른 노드에 의해 수행되는 업데이트 활동을 동기화하는 데 사용된다. 공유 데이터 관리 시스템은 한 자리 노드 클러스터로 제한된다.
- Shared-Nothing 데이터베이스 - 모든 데이터를 데이터 위치 경계가 명확하고 잘 정의된 내부 관리 파티션으로 분리하는 아키텍처. 공유되지 않는 데이터베이스는 수동 파티션 관리가 필요하다.
가상 파티셔닝에서는 수많은 데이터 파티션(100~1000초)을 자율적으로 만들어 관리함으로써 물리적 데이터에서 논리적 데이터를 추출한다. 자율적으로 유지되기 때문에 파티션 관리에 필요한 자원은 미미하다. 이와 같은 대규모 파티셔닝의 결과:
- 작고 효율적으로 관리되며 로드 밸런싱이 가능한 파티션
- 하드웨어가 변경되더라도 추가 파티션을 정의하기 위해 이벤트를 다시 예약할 필요가 없는 시스템
"공유 데이터" 및 "공유 없음" 아키텍처는 전체 파티션 검색 없이 다중 데이터 파티션과 교차 파티션 쿼리 및 트랜잭션 처리를 통해 확장성을 허용한다.
수평 데이터 파티셔닝
소비자의 데이터베이스 소스를 분할하는 것은 기본 개념이다. 더 많은 수의 데이터베이스 소스가 있는 경우 소스와 소비자 사이에 수평 데이터 가상화 계층을 삽입하면 이러한 복잡성을 해결할 수 있다. SQL과 관계형 데이터베이스에 관한 복수의 책을 저술한 Rick van der Lans는 데이터 가상화를 "데이터 소비자에게 위치, 스토리지 구조, API, 액세스 언어, 스토리지 기술 등 저장된 데이터의 기술적 측면을 숨기는 데이터 액세스 인터페이스를 제공하는 과정"[1]으로 정의했다.
이점
- 기존 컴퓨팅 인프라를 위한 유연성과 민첩성 추가
- 향상된 데이터베이스 성능
- 컴퓨팅 리소스 풀링 및 공유(멀티 테넌시(Multi-tenancy) 또는 결합(클러스터링)
- 관리 및 관리 간소화
- 내결함성 증가