이 글에서는 PolarDB에 대해서 설명합니다.
PolarDB 소개 및 간략히 알아보기
PolarDB는 알리바바에서 개발한 상용 클라우드 기반 관계형 데이터베이스 제품입니다. 읽기 수요가 많은 고객을 위해 설계되었습니다.
제품 홈페이지는 아래와 같습니다.
https://www.alibabacloud.com/ko/product/polardb
PolarDB는 널리 사용되는 두 가지 데이터베이스와 호환됩니다: MySQL, PostgreSQL. 세 개의 레이어로 구성되어 있습니다. 사용자는 컴퓨팅 계층을 통해 데이터베이스와 상호 작용합니다. PolarFS는 분산 파일 시스템이며, PolarStorage는 스토리지 수준입니다.
PolarDB는 InnoDB를 스토리지 엔진으로 사용합니다.
History
PolarDB는 2017년 9월에 처음 출시되었으며 2018년 4월에 공식적으로 상용화되었습니다. 동시에 알리바바 클라우드는 데이터 엔지니어링 컨퍼런스(ICDE)에서 폴라DB에 대한 강연을 진행했습니다.
Data Model
Hardware Acceleration
PolarDB는 RDMA를 사용하여 스토리지 노드와 컴퓨팅 노드를 연결합니다. 이를 통해 I/O 성능의 병목 현상을 제거합니다.
Indexes
MySQL과 마찬가지로 B+ 트리는 기본 인덱스 데이터 구조입니다. B+ 트리는 기본 키를 기준으로 정렬됩니다. B+Tree와 관련된 최적화 중 하나는 다음 번에 쉽게 삽입할 수 있도록 마지막 삽입 위치를 기록한다는 것입니다. 폴라DB의 특징인 병렬 쿼리 실행 중에는 B+Tree를 여러 워커로 분할합니다. 각 워커는 자신의 파티션만 볼 수 있습니다. 한 워커가 한 파티션의 작업을 완료하면 자동으로 새 파티션에 연결됩니다.
Isolation Levels
Joins
Query Interface
set max_parallel_degree = n
set force_parallel_mode = on
SELECT /*+ PARALLEL() */ * FROM ...
SELECT /*+ PARALLEL(n) */ * FROM ...
Storage Architecture
PolarDB는 MySQL처럼 디스크 디비입니다. 기본 노드와 복제 노드에는 버퍼 풀이 있으며 데이터에 액세스하고 공유 메모리에 로그를 남길 수 있습니다.
기본 노드는 정상 작동 중에 페이지를 플러시할 수 있는 권한이 있습니다.
복구 시 Redo 후 복제본은 페이지를 디스크에 플러시합니다. 기본 노드는 새 마스터로부터 읽기 뷰를 받은 후 페이지를 디스크에 쓰기도 합니다. --> 추가 분석 필요함.
After redo in recovery, replicas will flush pages to disk. Primary node, after receiving the read view from new master, will also write pages to disk.
Storage Organization
System Architecture
PolarDB 특징
선택 가이드라고 해서 홈페이지에 아래와 같은 표로 정리되어있습니다.
Item | PolarDB for MySQL | PolarDB for PostgreSQL | PolarDB for Xscale |
---|---|---|---|
Database Ecosystem | MySQL | PostgreSQL and Oracle | MySQL |
Architecture | A shared-storage architecture in which computing and storage resources are decoupled | A shared-storage architecture in which computing and storage resources are decoupled | A distributed share-nothing architecture |
Scenario | Build cloud-native applications based on MySQL | Build cloud-native applications based on PostgreSQL or migrate traditional commercial databases to the cloud | Build MySQL-based applications that require ultra-high concurrency |
Enterprise-class capabilities for various business requirements
Elastic Scaling
백업 및 복원
- 레벨 1 백업은 분산 스토리지 클러스터에 저장되며 복원 속도가 빠릅니다.
- 레벨 2 백업은 압축되어 온프레미스 스토리지에 저장되는 레벨 1 백업입니다. 레벨 2 백업은 복원하는 데 시간이 더 오래 걸립니다.
- 로그 백업은 OSS에 업로드된 로그를 실시간으로 병렬로 다시 실행하는 백업입니다. 1TB의 데이터를 저장하는 MySQL용 PolarDB 데이터베이스를 10초 이내에 백업하고 10분 이내에 데이터 세트를 복원할 수 있습니다.
GDN
글로벌 데이터베이스 네트워크(GDN)는 전 세계 여러 지역에 분산된 여러 개의 PolarDB 클러스터로 구성됩니다. GDN 내 클러스터의 데이터는 비동기 복제, 물리적 로그, 병렬 처리와 같은 기술을 사용하여 동기화됩니다. 서로 다른 지역에 있는 동일한 사양의 두 PolarDB 클러스터 간에 데이터를 복제하는 데 2초도 채 걸리지 않습니다. GDN의 PolarDB 클러스터는 지역 간 읽기/쓰기 분할, 인근 클러스터에서 데이터 읽기, 유연한 구성을 지원합니다.
병렬 쿼리
PolarDB for MySQL 8.0은 스토리지 계층의 여러 스레드에 데이터를 분산하여 병렬 쿼리를 지원합니다. 여러 스레드가 병렬 컴퓨팅을 수행하여 결과를 리더 스레드로 반환합니다. 이렇게 하면 복잡한 SQL 쿼리 및 보고서 쿼리에 응답하는 데 필요한 시간을 크게 줄일 수 있습니다. 예를 들어, 100GB의 데이터가 88개의 CPU 코어와 710GB의 메모리를 갖춘 PolarDB for MySQL 8.0 클러스터에 저장되어 있는 경우, 기본 노드에 병렬 쿼리를 활성화하면 쿼리에 대한 클러스터의 응답 속도를 최대 30배까지 높일 수 있습니다.
Fast DDL Operations
MySQL용 PolarDB는 DDL 물리적 복제 최적화( DDL physical replication optimization)를 지원합니다.
이 기능은 기본(Primary) 노드에서 Redo로그를 Write하고 읽기 전용 로그에서 Redo 로그를 사용하도록 하여 Key Path를 최적화합니다.
This feature optimizes the key paths of writing redo logs on the primary node and using redo logs on read-only logs.
이렇게 하면 테이블에 열을 즉시 추가하거나 인덱스를 병렬로 추가할 수 있습니다. 예를 들어, 1TB의 데이터가 16개의 CPU 코어와 128GB의 메모리를 갖춘 PolarDB for MySQL 8.0 클러스터에 저장되어 있는 경우, 클러스터의 테이블에 열을 추가하는 데 1초밖에 걸리지 않으며, 이는 오픈 소스 MySQL 데이터베이스보다 10배나 빠른 속도입니다.
Extensive O&M features to significantly reduce O&M costs
Diagnostics(진단)
PolarDB for MySQL은 데이터베이스의 진단 및 최적화 결과를 확인할 수 있는 다양한 진단 기능을 제공합니다. 이러한 기능에는 자율성 센터, 세션 관리, 실시간 모니터링, 스토리지 분석, 교착 상태 분석, 진단 보고서, 성능 인사이트 등이 포함됩니다.
Slow SQL Queries
MySQL용 PolarDB는 느린 SQL 쿼리 분석 기능을 제공합니다. 이 기능을 사용하면 느린 로그 추세와 통계를 볼 수 있습니다. 또한 느린 SQL 쿼리를 수정하는 방법에 대한 진단 결과와 제안을 얻을 수도 있습니다.
Auto Scaling
자동 확장을 위한 임계값, 노드 사양, 읽기 전용 노드 수를 구성할 수 있습니다. 평균 CPU 사용률이 지정된 임계값보다 크거나 같으면 자동 스케일업이 트리거됩니다.
Monitoring and Alerting
SQL Explorer
PolarDB 소스
PolarDB for PostgreSQL은 오픈소스로 github에 코드가 올라가 있다.
심지어 apache-2.0 라이선스이다.
https://github.com/ApsaraDB/PolarDB-for-PostgreSQL
PolarDB 소스 분석을 해봐야겠다.
'DBMS' 카테고리의 다른 글
PolarDB for PostgreSQL 오픈 소스 분석 - 아키텍처 (0) | 2023.11.25 |
---|---|
Alibaba PolarDB 오픈소스 파해치기 - github 분석 1 (0) | 2023.11.25 |
Amazone Aurora 알아보기 - internal architecture (0) | 2023.11.25 |
Amazon Aurora (Aurora) 알아보기 (0) | 2023.11.25 |
오라클(Oracle) 19c 클라이언트 설치 및 다운로드 - 우분투 linux | window 버전 링크 포함 (0) | 2023.11.24 |