하이퍼스케일 분산 함수 아키텍처
적용 대상: Azure SQL Database
하이퍼스케일 서비스 계층은 확장성이 뛰어난 스토리지 및 컴퓨팅 계층이 있는 아키텍처를 활용합니다. 이 문서에서는 고객이 거의 즉각적인 백업 및 확장성이 뛰어난 트랜잭션 로깅의 이점을 활용하면서 하이퍼스케일 데이터베이스를 빠르게 스케일링할 수 있게 하는 구성 요소에 대해 설명합니다.
팁
2023년 12월부터 SQL Database 하이퍼스케일의 간소화된 가격 책정을 시작했습니다. 자세한 내용은 하이퍼스케일 가격 책정 블로그를 검토하세요.
하이퍼스케일 아키텍처 개요
기존 데이터베이스 엔진은 단일 프로세스에서 데이터 관리 기능을 중앙 집중화합니다. 오늘날 프로덕션 환경의 분산된 데이터베이스에도 모놀리식 데이터 엔진의 여러 복사본이 있습니다.
하이퍼스케일 데이터베이스는 다른 접근 방식을 따릅니다. 하이퍼스케일은 여러 데이터 엔진의 의미 체계가 구분되어 있는 쿼리 처리 엔진을 데이터의 장기 스토리지 및 지속성을 제공하는 구성 요소와 구분합니다. 이러한 방식으로 스토리지 용량을 필요한 만큼 원활하게 스케일 아웃할 수 있습니다. 처음에 지원되는 스토리지 제한은 100TB입니다.
하이퍼스케일 구성 요소 간의 모든 네트워크 통신은 기본 제공 중복성이 있는 Azure 네트워크 인프라를 사용합니다.
고가용성 보조 복제본 및 명명된 복제본은 필요에 따라 추가할 수 있는 선택적 컴퓨팅 노드입니다. 둘 다 동일한 스토리지 구성 요소를 공유하므로 새 복제본을 스핀업하는 데 데이터 복사본이 필요하지 않습니다. 지역 보조 복제본은 동일하거나 다른 Azure 지역에 필요에 따라 추가할 수 있습니다. 데이터 보호 및 중복성을 위해 지역 보조 복제본에는 주 복제본에서 사용하는 것과 분리된 스토리지 구성 요소가 있습니다.
다음 다이어그램에서는 기능 하이퍼스케일 아키텍처를 보여줍니다.
하이퍼스케일 데이터베이스에 포함된 구성 요소는 컴퓨팅 노드, 페이지 서버, 로그 서비스 및 Azure 스토리지입니다.
Compute
컴퓨팅 노드는 관계형 엔진이 상주하는 위치입니다. 컴퓨팅 노드에서 언어, 쿼리 및 트랜잭션 처리가 수행됩니다. 하이퍼스케일 데이터베이스와의 모든 사용자 상호 작용이 컴퓨팅 노드를 통해 발생합니다. 컴퓨팅 노드는 서버리스 또는 프로비전된 컴퓨팅을 사용하도록 구성할 수 있습니다.
컴퓨팅 노드에는 RBPEX 데이터 캐시(복원력 있는 버퍼 풀 확장)라는 로컬 SSD 기반 캐시가 있습니다. RBPEX 데이터 캐시는 원격 페이지 서버에서 데이터를 가져올 필요를 최소화하는 대기 시간이 짧은 지능형 데이터 캐시입니다.
하이퍼스케일 데이터베이스에는 읽기-쓰기 워크로드 및 트랜잭션이 처리되는 하나의 기본 컴퓨팅 노드가 있습니다. 필요에 따라 최대 4개의 고가용성 보조 컴퓨팅 노드를 추가할 수 있습니다. 이는 장애 조치를 위해 상시 대기 노드 역할을 수행하며, 필요할 때 읽기 워크로드를 오프로드하는 읽기 전용 컴퓨팅 노드 역할을 수행할 수 있습니다. 명명된 복제본은 다양한 추가 OLTP 읽기 확장 시나리오를 지원하고 HTAP(하이브리드 트랜잭션 및 분석 처리) 워크로드를 더 잘 지원하도록 설계된 보조 컴퓨팅 노드입니다. 재해 복구를 위해 지역 보조 컴퓨팅 노드를 추가하고 읽기 전용 컴퓨팅 노드 역할을 하여 다른 Azure 지역에서 읽기 워크로드를 오프로드할 수 있습니다.
서버리스에서 주 복제본 및 고가용성 복제본 또는 명명된 복제본은 각각 사용량에 따라 독립적으로 크기를 자동 조정합니다. 주 복제본 및 명명된 모든 복제본 대한 컴퓨팅 자동 크기 조정 범위는 독립적으로 구성합니다. 모든 고가용성 복제본의 자동 크기 조정 범위는 연결된 주 복제본 또는 명명된 복제본이 지정한 자동 크기 조정 구성으로부터 상속합니다.
하이퍼스케일 컴퓨팅 노드에서 실행되는 데이터베이스 엔진은 다른 Azure SQL Database 서비스 계층에서와 동일합니다. 사용자가 하이퍼스케일 컴퓨팅 노드에서 데이터베이스 엔진과 상호 작용할 때 지원하는 노출 영역 및 엔진 동작은 알려진 제한 사항을 제외하고 다른 서비스 계층에서와 동일합니다.
페이지 서버
페이지 서버는 스케일 아웃된 스토리지 엔진을 나타내는 시스템입니다. 각 페이지 서버는 데이터베이스의 페이지 하위 집합을 담당합니다. 각 페이지 서버에는 중복성 및 가용성을 위해 유지되는 복제본도 있습니다.
페이지 서버의 업무는 요청 시 컴퓨팅 노드에 데이터베이스 페이지를 제공하고, 트랜잭션으로 인해 데이터가 업데이트될 때 페이지를 최신 상태로 유지하는 것입니다. 페이지 서버는 로그 서비스에서 트랜잭션 로그 레코드를 다시 재생하여 최신 상태로 유지됩니다.
또한 페이지 서버는 성능을 향상시키기 위해 SSD 기반 캐시 처리를 유지 관리합니다. 데이터 페이지의 장기 스토리지는 내구성을 위해 Azure Storage에 보관됩니다.
로그 서비스
로그 서비스는 주 컴퓨팅 복제본의 데이터 변경 내용에 해당하는 트랜잭션 로그 레코드를 허용합니다. 그러면 페이지 서버가 로그 서비스에서 로그 레코드를 수신하고 해당 데이터 조각에 변경 내용을 적용합니다. 또한 컴퓨팅 보조 복제본은 로그 서비스에서 로그 레코드를 수신하고 버퍼 풀 또는 로컬 RBPEX 캐시에 이미 있는 페이지의 변경 내용만 재생합니다. 주 컴퓨팅 복제본의 모든 데이터 변경 내용은 로그 서비스를 통해 모든 보조 컴퓨팅 복제본 및 페이지 서버로 전파됩니다.
마지막으로 트랜잭션 로그 레코드는 거의 무한한 스토리지 리포지토리인 Azure Storage의 장기 스토리지로 푸시됩니다. 이 메커니즘을 사용하면 로그를 자주 잘라낼 필요가 없습니다. 누락된 로그 백업 또는 보조 복제본에 대한 느린 데이터 복제와 같은 로그 증가의 일반적인 이유는 하이퍼스케일에 적용되지 않습니다. 로그 서비스에는 로그 레코드에 대한 액세스 속도를 높이기 위해 로컬 메모리 및 SSD 캐시가 있습니다.
Azure Storage
Azure Storage는 데이터베이스의 모든 데이터 파일을 포함합니다. 페이지 서버는 Azure Storage의 데이터 파일을 최신 상태로 유지합니다. 이 스토리지는 백업 목적으로도 사용하며 선택한 스토리지 중복성에 따라 지역 간에 복제될 수 있습니다.
백업은 데이터 파일의 스토리지 스냅샷을 사용하여 구현됩니다. 스냅샷을 사용한 복원 작업은 데이터 크기에 관계없이 빠릅니다. 데이터베이스는 백업 보존 기간 내의 특정 시점으로 복원할 수 있습니다.
하이퍼스케일은 구성 가능한 스토리지 중복성을 지원합니다. 하이퍼스케일 데이터베이스를 만들 때 다음 유형의 Azure 표준 스토리지 중에서 선택할 수 있습니다.
- LRS(로컬 중복 스토리지)
- ZRS(영역 중복 스토리지)
- RA-GRS(읽기 액세스 지역 중복 스토리지)
- RA-GZRS(읽기 액세스 지역 영역 중복 스토리지)
영역 중복 스토리지 옵션은 가용성 영역이 있는 Azure 지역에서 사용할 수 있습니다.
선택한 스토리지 중복 옵션은 데이터 스토리지 중복성 및 백업 스토리지 중복성 모두를 대상으로 데이터베이스 수명 동안 사용합니다.