Oracle Database와 MySQL Database는 CAP 이론(Consistency, Availability, Partition tolerance)에서 서로 다른 방식으로 강점을 가지고 있습니다. 아래는 CAP 이론을 중심으로 IDC의 Oracle DB와 AWS RDS MySQL DB를 비교한 내용입니다.
1. CAP 이론의 주요 개념
- Consistency (일관성)
- 모든 클라이언트가 동일한 데이터를 볼 수 있는지 여부.
- 트랜잭션이 완료된 후 모든 클라이언트가 최신 데이터를 읽을 수 있는 상태.
- Availability (가용성)
- 시스템의 일부에 장애가 발생하더라도 모든 클라이언트 요청에 응답할 수 있는 능력.
- Partition Tolerance (분할 내성)
- 네트워크 분할(Network Partition) 상황에서도 시스템이 계속 작동할 수 있는 능력.
- 노드 간 연결이 끊어져도 시스템의 일부가 계속 동작하여 사용 가능해야 함.
- 중요성
- CAP 이론에 따르면, 세 가지 속성을 모두 동시에 완벽하게 만족할 수는 없으며, 특정 상황에서 하나를 희생해야 다른 두 가지를 유지할 수 있습니다.
2. 구성도 및 용어 정리
Oracle DB 구성도
- Oracle RAC:
- Active-Active 클러스터로, 여러 노드가 동시에 데이터베이스 요청을 처리하며, 공유 스토리지를 사용.
- 노드 간 Cache Fusion을 통해 데이터 일관성을 유지.
- Oracle Data Guard:
- Active-Passive 구성으로, Primary DB가 모든 트랜잭션을 처리하고 Standby DB는 대기 상태.
- 동기식 복제를 통해 데이터 무결성을 보장하며, 장애 발생 시 Standby가 Primary로 승격.
[Oracle RAC 구성도]
+--------------------+ +--------------------+
| Node A | | Node B |
| (Active Role) | | (Active Role) |
+--------------------+ +--------------------+
\ /
+----------------+
|
[Shared Storage]
[Oracle Data Guard 구성도]
+--------------------+ +--------------------+
| Primary DB | ---> | Standby DB |
| (Active Role) | | (Passive Role) |
+--------------------+ +--------------------+
AWS RDS 구성도
- Multi-AZ:
- Active-Passive 구성으로, Primary DB가 모든 읽기/쓰기 요청을 처리하고 Standby는 장애 복구(Failover) 용도로 대기.
- 동기식 복제를 통해 데이터 무결성을 보장.
- Read Replica:
- Primary DB의 데이터를 비동기 복제로 복제하여 읽기 작업만 처리.
- 여러 리전에 배포 가능하며, 글로벌 확장에 유리.
[AWS RDS Multi-AZ 구성도]
+--------------------+ +--------------------+
| Primary DB | ---> | Standby DB |
| (Active Role) | | (Passive Role) |
+--------------------+ +--------------------+
[AWS RDS Read Replica 구성도]
+--------------------+ +--------------------+ +--------------------+
| Primary DB | ---> | Read Replica 1 | ---> | Read Replica 2 |
| (Active Role) | | (Read-Only) | | (Read-Only) |
+--------------------+ +--------------------+ +--------------------+
3. CAP 이론에 기반한 시나리오별 비교
A. Consistency (일관성)
- Oracle DB:
- Oracle RAC와 Data Guard는 동기식 복제를 통해 강력한 데이터 일관성을 제공합니다.
- 모든 트랜잭션이 커밋되기 전까지 모든 노드에서 동일한 데이터를 유지.
- 예시
- Primary 노드에서 데이터 업데이트가 발생하면 Standby 노드에 즉시 반영되고, 승인(ACK)을 받아야 트랜잭션이 커밋됨.
- 네트워크 단절 시, Standby의 확인이 불가능하면 트랜잭션이 대기 상태로 유지되어 데이터 일관성을 보장.
- AWS RDS MySQL DB:
- Multi-AZ는 동기식 복제를 사용해 강한 일관성을 유지하지만, Read Replica는 비동기 복제로 약한 일관성을 제공합니다.
- 예시
- Primary에서 데이터가 업데이트되더라도 Read Replica는 최신 상태가 아닐 수 있음.
- 복제 지연(Lag)으로 인해 Replica에서 조회 시 과거 데이터를 읽을 가능성 존재.
B. Availability (가용성)
- Oracle DB:
- Oracle RAC는 Active-Active 구성으로 높은 가용성을 제공합니다.
- Data Guard는 장애 발생 시 Standby를 Primary로 승격하여 서비스 지속 가능.
- 예시
- RAC 환경에서 한 노드가 다운되더라도 다른 노드가 즉시 요청을 처리.
- Data Guard는 Primary가 장애 시 Standby를 Primary로 승격, 데이터 손실 없이 서비스 지속.
- AWS RDS MySQL DB:
- Multi-AZ는 Primary 장애 시 Standby를 자동으로 승격하여 서비스 중단 시간을 최소화.
- Read Replica를 통해 읽기 요청의 가용성을 보장.
- 예시
- Primary가 장애를 겪으면 Standby가 자동으로 Primary로 승격되고, 클라이언트는 동일한 엔드포인트를 통해 새로운 Primary에 연결.
- 읽기 작업은 Replica를 통해 지속 가능.
C. Partition Tolerance (분할 내성)
- Oracle DB:
- 동기식 복제 기반으로 네트워크 분할 시 Partition Tolerance가 부족할 수 있음.
- 네트워크 단절 시, 데이터 일관성을 보장하기 위해 트랜잭션 처리 제한.
- 예시
- Primary와 Standby 간 네트워크가 단절되면 Standby가 최신 상태를 보장할 수 없어 Primary에서 일부 작업이 제한될 가능성.
- AWS RDS MySQL DB:
- Read Replica는 비동기 복제를 사용하므로 Partition Tolerance가 뛰어남.
- 네트워크 단절 시에도 Replica에서 독립적으로 읽기 작업 가능.
- 예시
- Primary와 Replica 간 네트워크가 단절되어도 Replica는 기존 데이터를 기반으로 읽기 요청을 처리.
- 네트워크 복구 후, Primary의 최신 데이터를 동기화.
4. AWS RDS의 유연한 구성 옵션
- AWS RDS는 CAP 이론의 특성에 따라 Multi-AZ와 Read Replica를 조합하여 유연하게 설정할 수 있습니다.
1) Multi-AZ로 CA 특성 보장
- 동기식 복제를 통해 데이터 일관성과 고가용성을 보장.
- 장애 발생 시 Standby로 자동 장애 복구(Failover)를 수행하여 서비스 중단 최소화.
2) Read Replica로 AP 특성 강화
- 비동기 복제를 통해 읽기 확장성과 분할 내성을 강화.
- 네트워크 단절 시에도 독립적인 읽기 작업 가능.
- 글로벌 리전으로의 Replica 배포를 통해 지리적 확장 가능.
3) 조합 구성
- Multi-AZ로 Primary의 고가용성을 보장하면서 Read Replica를 추가하여 읽기 트래픽 분산 및 지연 최소화.
- 다양한 워크로드 요구사항에 맞게 CAP 속성을 조율 가능.
5. 결론
- Consistency
- Oracle DB는 동기식 복제를 통해 강력한 일관성을 제공하며, MySQL은 Multi-AZ에서 강한 일관성을 유지하지만 Read Replica는 약한 일관성을 가짐.
- Availability
- Oracle RAC와 Data Guard는 높은 가용성을 제공하며, AWS RDS는 Multi-AZ와 Read Replica를 통해 서비스 중단 시간을 최소화.
- Partition Tolerance
- MySQL의 비동기 복제는 Partition Tolerance에서 유리하며, 네트워크 단절 상황에서도 읽기 작업을 지속할 수 있음. Oracle DB의 경우에도 네트워크 단절 시 Active 노드는 독립적으로 읽기 작업을 처리할 수 있지만, 쓰기 작업은 Standby의 응답을 기다리기 때문에 중단될 수 있음.
- AWS RDS의 유연성
- Multi-AZ로 CA 특성을 선택하거나 Read Replica를 통해 AP 특성을 선택하는 등 요구사항에 맞게 구성을 조정할 수 있음.
'Back-end' 카테고리의 다른 글
| JPA 영속성 관리 (0) | 2025.03.14 |
|---|---|
| JSP의 기본 구조 (0) | 2025.01.12 |
| ProxySQL 테스트 (0) | 2024.12.15 |
| IntelliJ IDEA Remote Development 알아보기 (0) | 2024.10.05 |
| Oracle SQL을 MySQL로 전환하기 (0) | 2024.05.21 |
댓글