Split View: AWS 데이터베이스 전문가 (DBS-C01) 실전 모의고사 65문제
AWS 데이터베이스 전문가 (DBS-C01) 실전 모의고사 65문제
DBS-C01 시험 개요
| 항목 | 내용 |
|---|---|
| 시험 시간 | 180분 |
| 문제 수 | 65문제 |
| 합격 점수 | 750점 / 1000점 |
| 문제 유형 | 단일 정답, 복수 정답 |
| 시험 비용 | USD 300 |
도메인별 출제 비율
| 도메인 | 비율 |
|---|---|
| Domain 1: Workload-Specific Database Design | 26% |
| Domain 2: Deployment and Migration | 20% |
| Domain 3: Management and Operations | 18% |
| Domain 4: Monitoring and Troubleshooting | 18% |
| Domain 5: Database Security | 18% |
AWS 데이터베이스 서비스 선택 가이드
[워크로드 유형에 따른 DB 선택]
관계형 OLTP
├── 소규모/마이그레이션 용이: RDS (MySQL, PostgreSQL, MariaDB)
├── 고성능/클라우드 네이티브: Aurora (MySQL/PostgreSQL 호환)
└── 엔터프라이즈/라이선스 유지: RDS Oracle, RDS SQL Server
NoSQL
├── 키-값/문서/서버리스: DynamoDB (단일 테이블 설계)
├── 문서(MongoDB 호환): DocumentDB
└── 캐싱: ElastiCache (Redis / Memcached)
특수 목적
├── 그래프: Neptune (Gremlin, SPARQL)
├── 원장/감사: QLDB
├── 시계열: Timestream
└── Cassandra 호환: Keyspaces
[의사결정 트리]
트랜잭션 필요? YES → 관계형 필요? YES → Aurora or RDS
NO → DynamoDB
NO → 검색? → OpenSearch
캐시? → ElastiCache
그래프? → Neptune
시계열? → Timestream
실전 연습 문제 65문제
Domain 1: Workload-Specific Database Design
Q1. 온라인 쇼핑몰의 제품 카탈로그와 주문 관리 시스템을 구축합니다. 초당 수천 건의 읽기/쓰기, 99.99% 가용성, 자동 스토리지 확장이 필요합니다. 가장 적합한 데이터베이스는?
A) RDS MySQL Multi-AZ B) Aurora MySQL (Multi-AZ 클러스터) C) DynamoDB D) RDS PostgreSQL
정답: B
설명: Aurora MySQL은 RDS MySQL 대비 최대 5배 빠른 성능을 제공하고, 클러스터 볼륨이 자동으로 10GB에서 128TB까지 확장됩니다. Multi-AZ 클러스터는 세 AZ에 걸쳐 복제본을 유지하여 고가용성을 보장합니다. 고성능 OLTP 워크로드에 이상적입니다.
Q2. Aurora Serverless v2를 선택하는 가장 적합한 시나리오는?
A) 24시간 일정한 대용량 트랜잭션 처리 B) 트래픽이 불규칙하고 예측 불가능하며 비용을 사용량에 따라 지불하고 싶은 경우 C) 온프레미스 Oracle 데이터베이스를 마이그레이션 D) 분석용 데이터 웨어하우스
정답: B
해설: Aurora Serverless v2는 0.5 ACU(Aurora Capacity Unit)에서 최대 128 ACU까지 초 단위로 자동 스케일링합니다. 개발/테스트 환경, 간헐적인 트래픽, 새벽에 트래픽이 거의 없는 SaaS 애플리케이션에 이상적입니다. 사용한 용량에 대해서만 비용이 발생합니다.
Q3. DynamoDB에서 사용자 프로필(UserID), 사용자의 주문(OrderID), 주문의 상품(ItemID)을 단일 테이블 설계로 저장하려 합니다. 올바른 접근법은?
A) 각 엔티티를 별도 테이블로 분리 B) 파티션 키에 엔티티 타입 접두사를 추가하고 정렬 키로 계층 구조 표현 C) 모든 속성을 하나의 JSON 컬럼에 저장 D) GSI를 각 엔티티마다 생성
정답: B
설명: DynamoDB 단일 테이블 설계에서는 파티션 키(PK)에 USER#UserID나 ORDER#OrderID 형태로 엔티티 타입 접두사를 추가합니다. 정렬 키(SK)는 PROFILE, ORDER#OrderID, ITEM#ItemID 등으로 계층 구조를 표현합니다. 이를 통해 하나의 테이블로 다양한 접근 패턴을 효율적으로 처리합니다.
Q4. ElastiCache Redis Cluster Mode Enabled와 Cluster Mode Disabled의 차이로 가장 올바른 것은?
A) Cluster Mode Enabled는 단일 노드만 지원 B) Cluster Mode Enabled는 데이터를 여러 샤드에 분산하여 더 큰 메모리 용량과 처리량 지원 C) Cluster Mode Disabled가 읽기 성능이 더 우수 D) Cluster Mode Enabled는 Multi-AZ를 지원하지 않음
정답: B
설명: ElastiCache Redis Cluster Mode Enabled는 데이터를 여러 샤드(각 샤드는 주 노드 + 복제본)에 분산합니다. 단일 클러스터가 처리할 수 있는 총 메모리와 쓰기 처리량을 선형으로 확장할 수 있습니다. Cluster Mode Disabled는 단일 샤드(하나의 주 노드 + 읽기 복제본들)로 읽기만 확장 가능합니다.
Q5. Amazon Neptune을 선택하는 적합한 시나리오는?
A) 초당 수만 건의 금융 트랜잭션 처리 B) 소셜 네트워크의 친구 추천 또는 사기 탐지를 위한 관계 분석 C) 대용량 시계열 센서 데이터 저장 D) 전자상거래 제품 카탈로그 저장
정답: B
설명: Neptune은 그래프 데이터베이스로 엔티티 간의 관계를 효율적으로 표현하고 쿼리합니다. 소셜 그래프의 친구-친구-친구 연결 분석, 금융 거래의 사기 패턴 탐지, 지식 그래프, 추천 엔진에 적합합니다. Gremlin(Property Graph)과 SPARQL(RDF) 쿼리 언어를 지원합니다.
Q6. RDS for PostgreSQL과 Aurora PostgreSQL 중 선택할 때, 어떤 경우 RDS PostgreSQL을 선호합니까?
A) 최고의 성능이 필요한 경우 B) PostgreSQL 특정 확장 기능이나 플러그인이 Aurora에서 지원되지 않는 경우 C) 자동 스케일링이 필요한 경우 D) 글로벌 분산이 필요한 경우
정답: B
설명: RDS PostgreSQL은 Aurora가 지원하지 않는 특정 PostgreSQL 확장(예: 일부 PostGIS 고급 기능, 특정 fdw 확장)이 필요하거나, 특정 메이저 버전의 즉각적인 지원이 필요한 경우 선호합니다. Aurora는 내부 아키텍처가 다르므로 모든 PostgreSQL 기능을 지원하지는 않습니다.
Q7. DynamoDB GSI(Global Secondary Index) 오버로딩 기법의 주요 목적은?
A) 여러 GSI를 하나로 합쳐 비용 절감 B) 하나의 GSI를 다양한 엔티티 타입의 여러 쿼리 패턴에 재사용 C) GSI의 프로젝션 속성을 동적으로 변경 D) GSI 쓰기 용량을 자동으로 최적화
정답: B
해설: GSI 오버로딩은 GSI의 PK와 SK에 엔티티 타입별로 다른 의미의 값을 저장합니다. 예를 들어 gsi1pk에 사용자는 STATUS#active, 주문은 DATE#2026-03, 상품은 CATEGORY#electronics를 저장하면, 하나의 GSI로 상태별 사용자 조회, 날짜별 주문 조회, 카테고리별 상품 조회가 모두 가능합니다.
Q8. Amazon QLDB(Quantum Ledger Database)의 주요 특징은?
A) 초고속 인메모리 캐싱 B) 변경 불가능한 암호화 검증 가능한 트랜잭션 로그 유지 C) 그래프 관계 데이터 저장 D) Cassandra API 호환
정답: B
설명: QLDB는 데이터 변경 이력을 변경 불가능하고(immutable) 암호화로 검증 가능한 저널(journal)에 보관합니다. 규제 산업(금융, 공급망, HR)에서 감사 추적이 필요한 경우에 적합합니다. 모든 변경 사항을 완전한 이력으로 추적하고 SHA-256 해시로 데이터 무결성을 검증합니다.
Q9. ElastiCache Memcached를 Redis 대신 선택하는 시나리오는?
A) 세션 저장, 고가용성, 지속성이 필요한 경우 B) 단순 객체 캐싱이 필요하고 멀티 스레드로 CPU 코어를 최대 활용하려는 경우 C) Pub/Sub 메시징이 필요한 경우 D) 지리적 분산 캐시가 필요한 경우
정답: B
설명: Memcached는 단순한 키-값 캐싱에 최적화된 멀티 스레드 아키텍처를 사용합니다. CPU 코어 수에 비례하여 선형 확장이 가능합니다. 세션, 지속성, Pub/Sub, 복제, 스냅샷이 필요 없고 단순 캐싱 성능만 필요하면 Memcached가 적합합니다. Redis는 더 풍부한 데이터 구조와 고가용성을 제공합니다.
Q10. Aurora Global Database의 주요 사용 사례는?
A) 단일 리전 내 읽기 확장 B) 재해 복구(RPO 수초, RTO 1분 미만) 및 글로벌 읽기 지연 감소 C) Aurora Serverless v2 워크로드 최적화 D) 대용량 배치 작업 처리
정답: B
설명: Aurora Global Database는 하나의 기본 리전과 최대 5개의 보조 리전으로 구성됩니다. 리전 간 복제 지연이 1초 미만이고, 재해 발생 시 보조 리전을 승격하면 RTO 1분 미만, RPO 수초의 재해 복구가 가능합니다. 또한 각 리전의 사용자가 로컬 읽기로 낮은 지연 시간을 경험합니다.
Q11. Amazon Timestream을 선택하는 적합한 워크로드는?
A) 소셜 미디어 관계 데이터 B) IoT 센서, 애플리케이션 지표, 운영 이벤트 등의 시계열 데이터 C) 금융 트랜잭션 원장 관리 D) 전자상거래 제품 목록
정답: B
설명: Timestream은 시계열 데이터에 특화된 서버리스 데이터베이스입니다. 시간 기반 쿼리(집계, 보간, 평활화)를 내장 함수로 지원하고, 최신 데이터는 메모리에, 과거 데이터는 S3 기반 마그네틱 스토리지에 자동 저장합니다. 시계열 특화 쿼리가 RDS 대비 훨씬 빠릅니다.
Q12. RDS Multi-AZ 배포의 스탠바이 인스턴스에 대한 올바른 설명은?
A) 스탠바이 인스턴스는 읽기 쿼리를 처리할 수 있음 B) 스탠바이 인스턴스는 자동 페일오버를 위해 동기 복제를 유지하지만 직접 접근 불가 C) 스탠바이는 다른 AWS 리전에 위치 D) 스탠바이는 수동으로 페일오버를 트리거해야 함
정답: B
설명: RDS Multi-AZ의 스탠바이 인스턴스는 기본 인스턴스와 동기 복제(synchronous replication)를 유지합니다. 스탠바이는 직접 읽기/쓰기 트래픽을 처리할 수 없습니다(읽기는 Read Replica를 사용). 기본 인스턴스 장애 시 자동으로 스탠바이로 DNS 엔드포인트가 전환됩니다(약 60~120초 소요).
Domain 2: Deployment and Migration
Q13. 온프레미스 Oracle 데이터베이스를 AWS로 마이그레이션할 때 비용 최적화를 위해 라이선스를 포함하지 않으려 합니다. 가장 적합한 마이그레이션 경로는?
A) Oracle용 RDS (BYOL 방식으로 라이선스 포함) B) SCT + DMS로 Aurora PostgreSQL 또는 RDS PostgreSQL로 변환 C) Oracle용 RDS (라이선스 포함, License Included) D) EC2에 Oracle 자체 설치
정답: B
설명: Oracle에서 Aurora PostgreSQL이나 RDS PostgreSQL로 마이그레이션하면 Oracle 라이선스 비용을 완전히 제거할 수 있습니다. AWS SCT(Schema Conversion Tool)로 Oracle 스키마를 PostgreSQL로 변환하고, DMS로 데이터를 마이그레이션합니다. Oracle 특화 기능(Oracle-specific functions, PL/SQL)은 SCT 평가를 통해 전환 복잡도를 파악합니다.
Q14. RDS Blue/Green Deployments를 사용하면 어떤 이점이 있습니까?
A) 다른 리전으로 데이터베이스를 복제 B) 사전 검증된 스테이징 환경(Green)에서 프로덕션(Blue)으로 다운타임 최소화 전환 C) 자동으로 마이너 버전 업그레이드 D) 스냅샷에서 새 데이터베이스 생성
정답: B
설명: RDS Blue/Green Deployments는 현재 프로덕션(Blue)의 완전한 복사본(Green)을 생성하고 동기화를 유지합니다. Green 환경에서 새 버전, 파라미터, 스키마 변경 등을 사전 검증하고, 검증 완료 후 트래픽을 Blue에서 Green으로 수 초 내 전환합니다. 롤백도 쉽습니다.
Q15. DMS를 사용하여 MySQL 데이터베이스를 Aurora MySQL로 이관할 때 SCT(Schema Conversion Tool)가 필요합니까?
A) 예, MySQL과 Aurora MySQL은 다른 엔진이므로 SCT가 필요 B) 아니오, 동종 마이그레이션(MySQL → Aurora MySQL)은 SCT 없이 DMS만으로 가능 C) 항상 SCT를 먼저 실행해야 함 D) Aurora MySQL은 DMS 대상으로 지원되지 않음
정답: B
설명: SCT는 이기종 마이그레이션(Oracle → PostgreSQL, SQL Server → MySQL 등)에서 스키마를 변환하는 데 필요합니다. 동종 마이그레이션(MySQL → Aurora MySQL, PostgreSQL → Aurora PostgreSQL)은 스키마가 호환되므로 SCT 없이 DMS만으로 마이그레이션이 가능합니다.
Q16. Aurora 메이저 버전 업그레이드(예: Aurora MySQL 2.x에서 3.x)를 위한 권장 접근법은?
A) In-place 업그레이드를 즉시 실행 B) 스냅샷에서 새 클러스터 생성하여 업그레이드 → 검증 → 트래픽 전환 C) 읽기 복제본을 메이저 버전으로 먼저 업그레이드 D) DMS로 데이터를 새 클러스터로 마이그레이션
정답: B
설명: Aurora 메이저 버전 업그레이드는 위험이 있으므로 권장 절차는: 1) 현재 클러스터 스냅샷 생성 → 2) 스냅샷에서 새 클러스터 생성 후 메이저 버전으로 업그레이드 → 3) 애플리케이션 호환성 검증 → 4) DNS(CNAME) 전환 또는 Blue/Green Deployments 사용입니다.
Q17. DynamoDB 테이블을 다른 AWS 계정이나 다른 리전으로 마이그레이션하는 방법은?
A) DMS로 DynamoDB 간 마이그레이션 B) DynamoDB 테이블을 S3로 내보내기(Export) 후 대상에서 S3에서 가져오기(Import) C) Kinesis Data Streams + Lambda로 실시간 복제 D) CloudFormation 스택 복사
정답: B
설명: DynamoDB 내보내기(Export to S3) 기능으로 테이블 데이터를 S3에 DynamoDB JSON 또는 ION 형식으로 내보낸 후, 대상 계정/리전의 S3에서 DynamoDB 가져오기(Import from S3)로 신규 테이블에 로드합니다. DynamoDB Global Tables를 사용하면 지속적인 다중 리전 복제도 가능합니다.
Q18. 온프레미스 SQL Server에서 Amazon RDS for SQL Server로 마이그레이션 시 고려사항으로 가장 중요한 것은?
A) SQL Server 라이선스를 AWS로 이전 가능 B) SQL Server Agent, SQL Server Integration Services(SSIS) 등의 기능 지원 여부 확인 C) RDS SQL Server는 Multi-AZ를 지원하지 않음 D) RDS SQL Server는 최대 1TB 스토리지만 지원
정답: B
설명: RDS for SQL Server는 SQL Server Agent를 지원하지만 SSIS, SSRS, SSAS는 지원하지 않습니다. 이러한 기능을 사용 중이라면 EC2에 설치하거나 대안 서비스를 검토해야 합니다. 또한 특정 버전의 SQL Server만 지원되므로 버전 호환성도 확인해야 합니다.
Q19. DMS CDC(Change Data Capture) 작업에서 소스 MySQL 데이터베이스에 필요한 설정은?
A) 복제 슬롯(Replication Slot) 생성 B) binary_format_row 설정 및 binlog_format=ROW로 이진 로그 활성화 C) 읽기 복제본 생성 D) 데이터베이스 파라미터 그룹 변경 없이 자동으로 처리
정답: B
설명: MySQL에서 DMS CDC를 사용하려면 이진 로그(binlog)를 ROW 형식으로 활성화해야 합니다. binlog_format=ROW, binlog_row_image=FULL, expire_logs_days 설정이 필요합니다. RDS MySQL에서는 파라미터 그룹으로 이 설정을 활성화합니다. PostgreSQL은 복제 슬롯을 사용합니다.
Q20. 마이그레이션 복잡도를 평가할 때 "리프트 앤 시프트(Lift-and-Shift)"와 "리아키텍트(Re-architect)"의 차이는?
A) 두 방법 모두 동일한 마이그레이션 복잡도 B) 리프트 앤 시프트는 최소 변경으로 AWS로 이전, 리아키텍트는 클라우드 네이티브 서비스로 재설계 C) 리아키텍트가 항상 더 저렴 D) 리프트 앤 시프트는 온프레미스와 동일한 성능 보장
정답: B
설명: 리프트 앤 시프트는 기존 데이터베이스를 최소 변경으로 EC2에 그대로 이전하거나 RDS로 이전합니다. 빠르고 낮은 위험도이지만 클라우드 이점을 완전히 활용하지 못합니다. 리아키텍트는 DynamoDB나 Aurora 같은 클라우드 네이티브 서비스로 재설계하여 더 많은 클라우드 이점을 활용하지만 복잡도와 비용이 높습니다.
Domain 3: Management and Operations
Q21. RDS Parameter Group과 Option Group의 차이는?
A) Parameter Group은 네트워크 설정, Option Group은 보안 설정 B) Parameter Group은 데이터베이스 엔진 설정, Option Group은 추가 기능 활성화(예: Oracle TDE, MSSQL SQL Server Audit) C) 두 그룹 모두 동일한 목적으로 사용 D) Option Group은 PostgreSQL에만 사용
정답: B
설명: RDS Parameter Group은 max_connections, innodb_buffer_pool_size와 같은 데이터베이스 엔진 파라미터를 설정합니다. Option Group은 Oracle의 TDE(Transparent Data Encryption), MSSQL의 SQL Server Audit, MySQL의 memcached 플러그인 같은 추가 기능을 활성화합니다.
Q22. RDS Performance Insights에서 Wait Events를 분석합니다. db/lock/row wait event가 많이 보입니다. 이것은 무엇을 의미합니까?
A) CPU 부족으로 인한 병목 B) 행 레벨 잠금 경쟁으로 인한 대기 — 쿼리가 다른 트랜잭션의 행 잠금 해제를 기다림 C) 네트워크 지연 D) 스토리지 I/O 병목
정답: B
설명: db/lock/row wait event는 행 레벨 잠금(row-level lock) 경쟁을 나타냅니다. 트랜잭션 A가 특정 행을 잠근 상태에서 트랜잭션 B가 같은 행을 업데이트/삭제하려 대기하는 상황입니다. 해결책으로 트랜잭션 크기 축소, 인덱스 최적화(잠금 범위 축소), 데드락 분석이 있습니다.
Q23. Aurora Auto Scaling이 작동하는 방식으로 올바른 것은?
A) 기본 인스턴스의 컴퓨팅 크기를 자동으로 늘림 B) CloudWatch 지표(CPU 사용률, 연결 수)에 따라 읽기 복제본을 자동으로 추가/제거 C) 스토리지를 자동으로 확장 D) 여러 리전에 걸쳐 Aurora 클러스터를 자동으로 생성
정답: B
설명: Aurora Auto Scaling은 CloudWatch 지표(평균 CPU 사용률 또는 평균 연결 수)에 따라 Aurora 읽기 복제본을 동적으로 추가하거나 제거합니다. 트래픽 급증 시 읽기 복제본을 자동으로 추가하고, 트래픽 감소 시 불필요한 복제본을 제거하여 비용을 최적화합니다.
Q24. DynamoDB의 On-Demand 용량 모드와 Provisioned 용량 모드를 비교할 때 올바른 설명은?
A) On-Demand는 읽기/쓰기 용량을 수동으로 지정해야 함 B) Provisioned 모드는 예측 가능한 트래픽 패턴에서 비용 효율적이고, On-Demand는 예측 불가능한 트래픽에 적합 C) On-Demand는 프리 티어를 포함하지 않음 D) Provisioned 모드는 스케일링이 불가능
정답: B
설명: Provisioned 모드는 예측 가능한 워크로드에서 RCU/WCU를 지정하고 Auto Scaling을 활성화하여 비용 효율적으로 운영합니다. On-Demand 모드는 트래픽에 따라 자동으로 확장되지만 요청당 비용이 더 높습니다. 새 테이블, 예측 불가능한 트래픽, 개발/테스트에 On-Demand가 적합합니다.
Q25. RDS 자동 백업과 수동 스냅샷의 주요 차이점은?
A) 자동 백업은 암호화되지 않음 B) 자동 백업은 보존 기간(1~35일) 이후 자동 삭제되지만, 수동 스냅샷은 명시적으로 삭제할 때까지 보존 C) 수동 스냅샷은 PITR(Point-in-Time Recovery)를 지원 D) 자동 백업은 다른 리전으로 복사 불가
정답: B
설명: RDS 자동 백업은 설정된 보존 기간(최대 35일) 이후 자동으로 삭제됩니다. 수동 스냅샷은 명시적으로 삭제하지 않는 한 영구 보존됩니다. 자동 백업은 PITR(Point-in-Time Recovery)를 위한 트랜잭션 로그도 함께 보존합니다.
Q26. Aurora 데이터베이스에서 backtrack 기능을 사용하는 주요 이점은?
A) 다른 리전으로 데이터 복제 B) 스냅샷 복원 없이 데이터베이스를 과거 특정 시점으로 되감기(5분~72시간 내) C) 자동 메이저 버전 업그레이드 D) 읽기 트래픽 자동 분산
정답: B
설명: Aurora Backtrack은 데이터베이스를 과거 특정 시점으로 신속하게 되감는 기능입니다. 스냅샷에서 복원하는 것보다 훨씬 빠르고(수 분 내 완료), 잘못된 DELETE/UPDATE 후 빠른 복구에 이상적입니다. 최대 72시간까지 되감기 가능하며 Aurora MySQL에서 지원됩니다.
Q27. DynamoDB 글로벌 테이블(Global Tables)을 활성화하면 어떻게 됩니까?
A) 동일 리전 내 Multi-AZ 복제 B) 여러 AWS 리전에 완전히 관리되는 멀티 마스터 복제 — 각 리전에서 쓰기 가능 C) 읽기 복제본을 다른 리전에 생성 D) 다른 리전의 DynamoDB 테이블을 읽기 전용으로 접근
정답: B
설명: DynamoDB 글로벌 테이블은 여러 AWS 리전에 완전히 관리되는 멀티 마스터 복제를 제공합니다. 각 리전에서 읽기와 쓰기가 모두 가능하고, 리전 간 복제는 보통 1초 미만입니다. 하나의 리전이 중단되어도 다른 리전에서 계속 작동합니다.
Domain 4: Monitoring and Troubleshooting
Q28. DynamoDB에서 ProvisionedThroughputExceededException이 자주 발생합니다. CloudWatch 지표를 확인했을 때 어떤 지표를 먼저 확인해야 합니까?
A) ConsumedReadCapacityUnits와 ConsumedWriteCapacityUnits B) SystemErrors와 UserErrors C) SuccessfulRequestLatency D) ReturnedItemCount
정답: A
설명: ProvisionedThroughputExceededException은 읽기 또는 쓰기 용량이 프로비저닝된 양을 초과할 때 발생합니다. ConsumedReadCapacityUnits와 ConsumedWriteCapacityUnits를 확인하여 어떤 용량(읽기 또는 쓰기)이 초과되는지 파악합니다. ThrottledRequests 지표도 함께 확인합니다.
Q29. RDS MySQL에서 슬로우 쿼리 로그를 활성화하고 분석하는 올바른 방법은?
A) CloudTrail로 슬로우 쿼리 추적 B) RDS 파라미터 그룹에서 slow_query_log=1, long_query_time 설정 후 CloudWatch Logs나 RDS 콘솔에서 분석 C) VPC Flow Logs로 쿼리 패턴 분석 D) Enhanced Monitoring으로 슬로우 쿼리 감지
정답: B
설명: RDS MySQL 슬로우 쿼리 로그는 파라미터 그룹에서 slow_query_log=1 활성화하고 long_query_time(임계값 초)을 설정합니다. 로그는 RDS 콘솔에서 직접 보거나 CloudWatch Logs에 게시하여 CloudWatch Insights로 분석할 수 있습니다. log_queries_not_using_indexes=1로 인덱스 미사용 쿼리도 추적합니다.
Q30. Aurora PostgreSQL에서 AuroraReplicaLag 지표가 높게 나타납니다. 이것은 무엇을 의미하고 어떻게 해결합니까?
A) 기본 인스턴스의 CPU가 높음 → 인스턴스 크기 업그레이드 B) 읽기 복제본이 기본 인스턴스의 변경사항을 따라잡지 못함 → 복제본 인스턴스 크기 업그레이드 또는 쓰기 작업 최적화 C) 스토리지 볼륨이 가득 참 → 스토리지 확장 D) 네트워크 지연 → VPC 설정 검토
정답: B
설명: AuroraReplicaLag는 읽기 복제본이 기본 인스턴스의 변경사항을 적용하는 데 걸리는 지연 시간입니다. 지연이 높으면 읽기 복제본에서 오래된 데이터를 읽을 수 있습니다. 해결책: 읽기 복제본 인스턴스 크기 업그레이드, 쓰기 집약적 작업 최적화, 또는 쓰기 쿼리를 기본 인스턴스로만 라우팅합니다.
Q31. RDS Enhanced Monitoring이 CloudWatch 기본 모니터링과 다른 점은?
A) Enhanced Monitoring은 비용이 무료 B) Enhanced Monitoring은 OS 레벨 지표(프로세스, 메모리 사용량)를 1~60초 간격으로 제공 C) CloudWatch 기본 모니터링이 더 세밀한 지표 제공 D) Enhanced Monitoring은 데이터베이스 연결만 모니터링
정답: B
설명: CloudWatch 기본 모니터링은 하이퍼바이저에서 수집한 인스턴스 수준 지표를 1분 또는 5분 간격으로 제공합니다. Enhanced Monitoring은 RDS 인스턴스에 설치된 에이전트가 OS 레벨의 프로세스 목록, 메모리 사용량, CPU 스케줄 등을 1초에서 60초 간격으로 수집합니다.
Q32. Database Activity Streams를 활성화하는 주요 목적은?
A) 데이터베이스 쿼리 캐싱 B) 규정 준수 및 보안 감사를 위해 모든 데이터베이스 활동을 Kinesis Data Streams로 실시간 스트리밍 C) 데이터베이스 메트릭을 CloudWatch에 전송 D) 데이터베이스 백업 자동화
정답: B
설명: Database Activity Streams는 모든 데이터베이스 활동(SQL 문, 연결, 인증)을 KMS로 암호화된 Kinesis Data Streams로 실시간 스트리밍합니다. 이를 통해 SIEM(Security Information and Event Management) 도구와 통합하여 실시간 보안 모니터링과 감사 추적을 구현합니다. DBA도 스트림 내용에 접근할 수 없어 데이터 변조를 방지합니다.
Q33. Aurora CommitLatency 지표가 갑자기 증가했습니다. 가능한 원인은?
A) 읽기 복제본의 수가 너무 많음 B) 스토리지 I/O 병목, 과도한 쓰기 워크로드, 또는 네트워크 지연 C) 연결 풀링 설정 오류 D) 파라미터 그룹 변경 필요
정답: B
설명: CommitLatency는 트랜잭션 커밋 완료에 걸리는 시간입니다. 갑자기 증가하면 Aurora 스토리지 레이어의 I/O 병목, 과도한 쓰기 트랜잭션, 로그 플러시 지연을 의심합니다. WriteLatency, DiskQueueDepth, FreeableMemory 지표와 함께 분석하여 근본 원인을 파악합니다.
Q34. DynamoDB에서 특정 파티션에 과도한 트래픽이 집중되는 핫 파티션(Hot Partition) 문제가 발생합니다. 해결 방법은?
A) 테이블의 RCU/WCU를 전체적으로 늘림 B) 파티션 키 설계 변경(카디널리티 높은 키 사용 또는 랜덤 접미사 추가) C) GSI를 추가하여 파티션 분산 D) On-Demand 모드로 전환
정답: B
설명: 핫 파티션은 파티션 키의 카디널리티가 낮거나 특정 키에 트래픽이 집중될 때 발생합니다. 해결책: 1) 카디널리티가 높은 파티션 키 선택(UserID, UUID 등), 2) 파티션 키에 랜덤 접미사 추가(Write Sharding), 3) 시간 기반 키에 적절한 분산 적용입니다. On-Demand 전환은 병목을 숨길 뿐 근본 해결이 아닙니다.
Q35. RDS MySQL 인스턴스에서 FreeStorageSpace 지표가 빠르게 감소합니다. 즉각적인 해결 방법은?
A) 데이터베이스를 재시작 B) RDS 스토리지 자동 확장(Storage Autoscaling) 활성화 또는 수동으로 스토리지 크기 조정 C) 읽기 복제본 추가 D) Multi-AZ로 전환
정답: B
설명: RDS Storage Autoscaling을 활성화하면 FreeStorageSpace가 지정된 임계값 이하로 떨어질 때 자동으로 스토리지가 증가합니다. 이미 스토리지가 부족한 경우 수동으로 스토리지 할당 크기를 늘릴 수 있습니다(단, 줄이는 것은 불가능). 또한 이진 로그 보존 기간 단축, 오래된 데이터 아카이빙도 고려합니다.
Domain 5: Database Security
Q36. RDS 데이터베이스에서 IAM 인증을 활성화하면 어떤 이점이 있습니까?
A) 더 빠른 인증 처리 B) 데이터베이스 패스워드 없이 IAM 자격 증명으로 단기 인증 토큰으로 접속 가능 C) Multi-AZ 페일오버 시 자동 재인증 D) 데이터 암호화 자동 활성화
정답: B
설명: RDS IAM 인증을 활성화하면 데이터베이스 비밀번호 대신 AWS IAM 자격 증명으로 15분 유효한 인증 토큰을 생성하여 접속합니다. 패스워드를 애플리케이션에 저장할 필요 없이 IAM 정책으로 데이터베이스 접근을 제어합니다. EC2 인스턴스 역할이나 Lambda 실행 역할과 잘 통합됩니다.
Q37. AWS Secrets Manager를 사용한 데이터베이스 자격 증명 자동 교체에서 "교대 사용자(Alternating Users)" 전략의 이점은?
A) 교체 중에도 기존 자격 증명이 유효하여 다운타임 없는 교체 가능 B) 보안이 더 강화됨 C) 자격 증명 저장 비용 절감 D) 자동 교체 빈도를 높일 수 있음
정답: A
설명: 교대 사용자 전략은 두 개의 사용자를 번갈아 사용합니다. 교체 시 비활성 사용자의 비밀번호만 변경하고 활성 사용자는 유지합니다. 이를 통해 교체 중에도 애플리케이션이 현재 비밀번호로 계속 접속할 수 있어 다운타임이 없습니다. 단일 사용자 교체는 순간적으로 연결이 끊길 수 있습니다.
Q38. RDS 데이터베이스를 VPC의 프라이빗 서브넷에 배포하고 온프레미스 애플리케이션이 접근해야 합니다. 가장 안전한 연결 방법은?
A) RDS에 퍼블릭 IP를 할당하고 인터넷으로 접근 B) Direct Connect 또는 Site-to-Site VPN을 통한 프라이빗 네트워크 연결 C) 인터넷 게이트웨이를 통해 접근 D) RDS 스냅샷을 온프레미스로 내보내기
정답: B
설명: 온프레미스에서 VPC 프라이빗 서브넷의 RDS에 안전하게 접근하려면 AWS Direct Connect(전용선)나 AWS Site-to-Site VPN을 사용합니다. 이는 인터넷을 우회하여 프라이빗 네트워크를 통해 통신하므로 보안이 강화됩니다. 보안 그룹에서 온프레미스 IP 범위의 접근을 명시적으로 허용합니다.
Q39. RDS for MySQL 인스턴스에 저장 시 암호화(Encryption at Rest)를 활성화하려 합니다. 중요한 제약사항은?
A) 암호화는 나중에 언제든지 활성화/비활성화 가능 B) 기존 암호화되지 않은 RDS 인스턴스를 직접 암호화로 변환 불가 — 스냅샷 생성 → 암호화된 스냅샷으로 복사 → 복원이 필요 C) 암호화는 Multi-AZ에서만 지원 D) 암호화 활성화 시 성능이 50% 저하
정답: B
설명: 이미 생성된 RDS 인스턴스의 암호화는 직접 활성화할 수 없습니다. 반드시 암호화되지 않은 인스턴스의 스냅샷을 생성하고, 해당 스냅샷을 암호화된 스냅샷으로 복사한 뒤, 암호화된 스냅샷에서 새 인스턴스를 복원해야 합니다. 따라서 새 데이터베이스 생성 시 처음부터 암호화를 활성화하는 것이 중요합니다.
Q40. DynamoDB 테이블에 대한 세밀한 접근 제어를 구현할 때, 특정 사용자가 자신의 데이터(UserID와 일치하는 항목)만 접근할 수 있도록 하는 방법은?
A) DynamoDB에 열 수준 보안 적용 B) IAM 정책에 dynamodb:LeadingKeys 조건으로 파티션 키 값을 사용자 ID로 제한 C) Lake Formation으로 DynamoDB 행 수준 보안 적용 D) VPC 엔드포인트로 네트워크 수준 접근 제어
정답: B
설명: IAM 정책의 dynamodb:LeadingKeys 조건 키를 사용하면 사용자가 접근할 수 있는 파티션 키 값을 제한합니다. 예를 들어 현재 IAM 사용자 ID를 가리키는 aws:userid 정책 변수를 기준으로 파티션 키를 제한하면, 각 사용자는 자신의 UserID와 일치하는 항목만 읽기/쓰기가 가능합니다.
심화 문제 (복합 시나리오)
Q41. 핀테크 스타트업이 고성능 결제 시스템을 구축합니다. 요구사항: 1) 초당 수만 건 트랜잭션, 2) 99.999% 가용성, 3) 지역 장애 시 30초 내 복구, 4) 완전한 감사 추적. 아키텍처는?
A) DynamoDB (단일 테이블) + Lambda B) Aurora Global Database (다중 리전) + Database Activity Streams + Secrets Manager C) RDS MySQL Multi-AZ + Read Replicas D) ElastiCache Redis + DynamoDB
정답: B
설명: Aurora Global Database는 지역 장애 시 1분 미만의 RTO와 수초의 RPO를 제공합니다. Database Activity Streams는 모든 트랜잭션 활동을 실시간 감사 추적하여 금융 규정 준수를 지원합니다. Secrets Manager로 자격 증명을 자동 교체하여 보안을 강화합니다.
Q42. 레거시 Oracle 데이터베이스에서 Aurora PostgreSQL로 마이그레이션 시 발생할 수 있는 복잡도 요소를 2개 선택하세요.
A) Oracle 시퀀스(SEQUENCE)의 PostgreSQL 변환 B) PL/SQL 스토어드 프로시저의 PL/pgSQL로 변환 C) 테이블 이름 변경 D) 데이터 타입 변환(DATE, NUMBER) E) 인덱스 삭제
정답: B, D
설명: Oracle과 PostgreSQL 간 마이그레이션의 주요 복잡도 요소: 1) PL/SQL → PL/pgSQL 변환: Oracle 특화 함수, 패키지, 커서 등의 변환이 필요합니다. 2) 데이터 타입: Oracle의 NUMBER, DATE, VARCHAR2가 PostgreSQL에서 NUMERIC, TIMESTAMP, VARCHAR로 변환되며 일부 동작 차이가 있습니다. SCT(Schema Conversion Tool)로 자동 변환 가능 여부를 평가합니다.
Q43. ElastiCache Redis를 세션 캐시로 사용하는 애플리케이션이 있습니다. Redis 클러스터 노드 장애 시 세션 데이터 손실을 최소화하는 구성은?
A) Redis Cluster Mode Disabled + 복제 없음 B) Redis Cluster Mode Enabled + 복제본 수 2 + Multi-AZ 활성화 C) Memcached 클러스터로 교체 D) Redis 스냅샷 주기적 생성
정답: B
설명: Redis Cluster Mode Enabled에서 각 샤드에 복제본을 2개 설정하고 Multi-AZ를 활성화하면, 하나의 노드 장애 시 자동으로 복제본이 기본 노드로 승격됩니다. 복제본 2개는 최대 2개 노드의 동시 장애를 허용합니다. 세션 데이터는 메모리에 복제되어 장애 시에도 유지됩니다.
Q44. 다중 테넌트 SaaS 애플리케이션에서 각 테넌트의 데이터를 격리하는 DynamoDB 설계 패턴은?
A) 테넌트마다 별도 DynamoDB 테이블 생성 B) 파티션 키에 테넌트 ID를 포함하여 단일 테이블로 데이터 격리 C) 테넌트마다 별도 AWS 계정 생성 D) DynamoDB 스트림으로 테넌트별 데이터 복제
정답: B
설명: 대부분의 경우 단일 테이블에서 파티션 키에 TENANT#tenantId#ENTITY#entityId 형태로 테넌트 ID를 포함합니다. IAM 정책의 dynamodb:LeadingKeys 조건으로 각 테넌트가 자신의 파티션 키에만 접근하도록 제한합니다. 테넌트 수가 매우 많거나 격리 요구사항이 엄격한 경우 테이블 분리를 고려합니다.
Q45. Aurora MySQL 클러스터에서 읽기 워크로드를 처리하는 읽기 복제본이 5개 있습니다. 특정 복제본에만 분석 쿼리를 보내고 싶습니다. 어떻게 합니까?
A) RDS Proxy로 쿼리 라우팅 설정 B) 복제본의 개별 엔드포인트 또는 커스텀 엔드포인트(Custom Endpoint) 사용 C) CloudFront로 쿼리 라우팅 D) Route 53 가중치 기반 라우팅으로 특정 복제본에 트래픽 집중
정답: B
설명: Aurora 커스텀 엔드포인트를 사용하면 특정 복제본 집합으로 연결을 라우팅할 수 있습니다. 분석 쿼리용으로 대형 인스턴스 복제본을 묶어 커스텀 엔드포인트를 생성하고, 일반 읽기용으로는 클러스터 읽기 엔드포인트를 사용합니다. 각 복제본의 개별 인스턴스 엔드포인트도 사용할 수 있습니다.
Q46. RDS MySQL에서 최대 연결 수(max_connections)를 초과하는 문제가 발생합니다. 애플리케이션 코드 변경 없이 해결하는 방법은?
A) RDS 인스턴스 크기 업그레이드 (메모리 증가로 max_connections 자동 증가) B) Amazon RDS Proxy 배포로 연결 풀링 구현 C) 읽기 복제본을 추가하여 연결 분산 D) max_connections 파라미터 값을 직접 늘림
정답: B
설명: Amazon RDS Proxy는 애플리케이션과 RDS 사이에서 연결 풀링을 수행합니다. 수천 개의 애플리케이션 연결을 소수의 실제 데이터베이스 연결로 다중화합니다. 애플리케이션 코드 변경 없이 엔드포인트만 Proxy 엔드포인트로 변경하면 됩니다. Lambda 함수의 데이터베이스 연결 폭발 문제 해결에 특히 유용합니다.
Q47. Aurora PostgreSQL에서 pg_stat_statements 확장을 활성화하면 어떤 이점이 있습니까?
A) 자동으로 느린 쿼리를 최적화 B) 실행된 모든 SQL 문의 실행 통계(실행 횟수, 평균 시간, 총 시간) 추적 C) 데이터베이스 연결 수 자동 관리 D) 자동으로 인덱스 생성 추천
정답: B
설명: pg_stat_statements는 PostgreSQL 확장으로 실행된 모든 SQL 문의 통계(호출 횟수, 총/평균/최대/최소 실행 시간, 행 처리 수 등)를 추적합니다. Performance Insights와 함께 가장 자주 실행되거나 가장 느린 쿼리를 파악하는 데 활용합니다. RDS PostgreSQL의 파라미터 그룹에서 활성화합니다.
Q48. 대규모 마이크로서비스 아키텍처에서 서비스마다 별도의 데이터베이스를 사용합니다. 각 마이크로서비스 컨테이너가 RDS에 연결할 때 발생하는 연결 폭발(Connection Surge) 문제를 해결하는 방법은?
A) 각 마이크로서비스마다 별도 RDS 인스턴스 생성 B) RDS Proxy를 각 RDS 데이터베이스 앞에 배포하여 연결 풀링 C) 더 큰 RDS 인스턴스로 업그레이드 D) DynamoDB로 모든 RDS를 교체
정답: B
설명: 컨테이너 기반 마이크로서비스는 오토 스케일링 시 수백~수천 개의 데이터베이스 연결을 순간적으로 생성하여 max_connections를 초과합니다. RDS Proxy는 이 연결들을 풀링하여 실제 데이터베이스에는 관리 가능한 수의 연결만 유지합니다. IAM 인증도 지원하여 보안도 강화됩니다.
Q49. Amazon DocumentDB에서 MongoDB 호환성 레벨을 4.0에서 5.0으로 업그레이드해야 합니다. 고려해야 할 사항은?
A) DocumentDB는 모든 MongoDB 버전과 완전히 호환됨 B) DocumentDB는 MongoDB 와이어 프로토콜과 호환되지만 모든 MongoDB 기능을 지원하지 않으므로 기능 지원 여부 확인 필요 C) DocumentDB를 MongoDB Atlas로 마이그레이션 필요 D) 업그레이드 시 데이터 손실 발생
정답: B
설명: Amazon DocumentDB는 MongoDB 와이어 프로토콜과 호환되지만 모든 MongoDB 기능을 완전히 구현하지는 않습니다. 업그레이드 전에 사용 중인 MongoDB 드라이버 버전, 사용하는 명령어와 집계 파이프라인의 DocumentDB 지원 여부, 그리고 특정 MongoDB 특화 기능(Change Streams, Transactions 등)의 지원 상태를 반드시 확인해야 합니다.
Q50. Secrets Manager의 자동 교체(Automatic Rotation)가 실패합니다. CloudWatch Logs에서 Lambda 함수 오류를 확인했을 때 가장 일반적인 원인은?
A) Secrets Manager가 RDS에 직접 접근 불가 B) Lambda 함수가 RDS 인스턴스가 있는 VPC에 속하지 않아 네트워크 접근 불가 C) KMS 키 권한 오류 D) IAM 역할 권한 부족
정답: B
설명: Secrets Manager 자동 교체 Lambda 함수는 실제 데이터베이스에 연결하여 비밀번호를 변경해야 합니다. Lambda가 RDS와 다른 VPC에 있거나 같은 VPC의 보안 그룹에서 Lambda의 접근을 허용하지 않으면 연결이 실패합니다. Lambda를 RDS와 같은 VPC에 배포하고 보안 그룹을 올바르게 구성해야 합니다.
Q51. Aurora MySQL에서 쿼리 결과를 ElastiCache Redis에 캐싱하는 패턴을 구현합니다. 데이터베이스 업데이트 시 캐시 무효화를 처리하는 방법은?
A) ElastiCache TTL(Time-To-Live)만 사용 B) 애플리케이션에서 데이터 변경 시 해당 캐시 키를 명시적으로 삭제(Cache-Aside 패턴) C) DynamoDB Streams로 캐시 자동 업데이트 D) Aurora 트리거로 Lambda를 호출하여 캐시 무효화
정답: B
설명: Cache-Aside(Lazy Loading) 패턴은 가장 일반적인 캐싱 전략입니다. 읽기 시 캐시에서 먼저 조회하고, 캐시 미스 시 데이터베이스에서 읽어 캐시에 저장합니다. 쓰기 시에는 데이터베이스를 업데이트하고 해당 캐시 키를 삭제합니다. TTL은 부가적인 안전망으로 사용합니다.
Q52. RDS 데이터베이스가 다른 AWS 계정의 Lambda 함수에서 접근해야 합니다. 가장 안전한 방법은?
A) RDS에 퍼블릭 접근 활성화 후 IAM 정책으로 제한 B) VPC Peering 또는 Transit Gateway로 계정 간 네트워크 연결 후 IAM 인증 C) RDS 스냅샷을 대상 계정으로 공유 D) Cross-account IAM 역할로 RDS에 직접 접근
정답: B
설명: 가장 안전한 방법은 VPC Peering이나 AWS Transit Gateway로 두 계정의 VPC를 프라이빗 네트워크로 연결한 후, Lambda 실행 역할에 RDS IAM 인증 권한을 부여하고 RDS IAM 인증으로 접속합니다. RDS를 퍼블릭으로 노출하지 않아 네트워크 수준에서 보안을 유지합니다.
Q53. Aurora Serverless v2를 사용하는 데이터베이스에서 MaxCapacity 제한에 도달했습니다. 어떻게 대응합니까?
A) Aurora Serverless v2 대신 Provisioned로 전환 B) MaxCapacity 값을 높이고 필요시 Provisioned 읽기 복제본 추가 C) 클러스터를 삭제하고 새로 생성 D) 애플리케이션 연결을 강제 종료
정답: B
설명: MaxCapacity 제한에 도달하면 새 요청이 처리되지 않습니다. 즉각적인 조치로 MaxCapacity 값을 높입니다(최대 128 ACU). 장기적으로 읽기 부하는 Provisioned 읽기 복제본을 추가하여 분산하고, 쓰기 용량이 제한이라면 쿼리 최적화나 샤딩을 고려합니다.
Q54. 금융 서비스 회사가 모든 데이터베이스 변경사항에 대한 감사 추적을 구현해야 합니다. 추가 비용과 복잡도를 최소화하면서 구현하는 방법은?
A) 애플리케이션 레이어에서 모든 변경사항 로깅 B) RDS/Aurora Database Activity Streams + Kinesis Data Firehose → S3 아카이브 C) 모든 데이터베이스 테이블에 감사 트리거 추가 D) CloudTrail로 RDS API 호출 기록
정답: B
설명: Database Activity Streams는 모든 데이터베이스 활동을 KMS 암호화된 Kinesis 스트림으로 전송합니다. Kinesis Firehose를 통해 S3에 장기 아카이브하고 Athena로 분석합니다. 애플리케이션 코드 변경이 필요 없고, DBA도 접근할 수 없는 변조 방지 감사 추적을 제공합니다.
Q55. DynamoDB Time To Live(TTL)을 활성화하면 어떻게 됩니까?
A) 지정된 시간 이후 항목이 즉시 삭제됨 B) TTL 속성에 지정된 Unix 타임스탬프 이후 항목이 자동으로 삭제됨 (48시간 내, 비용 없음) C) TTL이 만료된 항목은 숨겨지지만 스토리지에는 남음 D) TTL 삭제에는 쓰기 용량 단위가 소모됨
정답: B
설명: DynamoDB TTL은 각 항목에 TTL 속성으로 Unix 타임스탬프를 설정하면, 해당 시간 이후 48시간 이내에 자동으로 항목을 삭제합니다(정확한 시간은 보장되지 않음). TTL 삭제는 추가 비용이 없고 쓰기 용량을 소모하지 않습니다. 세션 데이터, 임시 데이터, 만료 토큰 관리에 유용합니다.
Q56. Neptune 그래프 데이터베이스에서 Gremlin과 SPARQL 중 어떤 쿼리 언어를 선택해야 합니까?
A) 항상 Gremlin을 사용해야 함 B) Property Graph(소셜 네트워크, 추천)는 Gremlin, RDF/Ontology(지식 그래프, 의미론적 웹)는 SPARQL C) SPARQL이 항상 더 빠름 D) 두 언어 중 하나만 선택 후 변경 불가
정답: B
설명: Neptune은 두 가지 그래프 모델을 지원합니다. Property Graph(Gremlin)은 노드와 엣지에 속성을 붙이는 모델로 소셜 그래프, 사기 탐지, 추천 엔진에 적합합니다. RDF(SPARQL)은 Resource Description Framework로 지식 그래프, 시맨틱 웹, 온톨로지 모델링에 적합합니다.
Q57. RDS for SQL Server에서 데이터베이스 전송(native backup/restore)이 필요합니다. 어떤 방법을 사용해야 합니까?
A) DMS로 SQL Server 간 마이그레이션 B) S3와 통합된 RDS SQL Server 네이티브 백업/복원 기능 사용 (Option Group에서 SQLSERVER_BACKUP_RESTORE 옵션 활성화) C) 스냅샷을 다운로드하여 온프레미스에 복원 D) Bcp 유틸리티로 데이터 내보내기
정답: B
설명: RDS for SQL Server의 네이티브 백업/복원은 Option Group에서 SQLSERVER_BACKUP_RESTORE 옵션을 활성화하고 S3 버킷을 지정합니다. rdsadmin.dbo.rds_backup_database 저장 프로시저로 S3에 .bak 파일을 백업하고, rdsadmin.dbo.rds_restore_database로 복원합니다.
Q58. Aurora PostgreSQL 클러스터에서 쿼리 플랜이 자주 변경되어 성능이 불안정합니다. 이를 해결하는 방법은?
A) max_connections를 늘림 B) Query Plan Management(QPM) 또는 pg_hint_plan 확장으로 쿼리 플랜 고정 C) 읽기 복제본을 추가함 D) 인스턴스 크기를 업그레이드함
정답: B
설명: 쿼리 플랜 불안정성은 통계 변경이나 실행 계획 변경에 의해 발생합니다. Aurora PostgreSQL은 apg_plan_mgmt(Query Plan Management) 확장으로 특정 SQL의 실행 계획을 고정할 수 있습니다. pg_hint_plan으로 SQL 힌트를 제공하거나, enable_seqscan, enable_indexscan 파라미터로 플랜너를 유도할 수도 있습니다.
Q59. DynamoDB 트랜잭션(TransactWriteItems, TransactGetItems)을 사용하는 적합한 시나리오는?
A) 단일 항목 읽기/쓰기 B) 여러 테이블에 걸친 여러 항목의 원자적(Atomic) 읽기/쓰기가 필요한 경우 (예: 계좌 이체, 재고 차감) C) 대용량 데이터 일괄 처리 D) TTL 설정이 필요한 경우
정답: B
설명: DynamoDB 트랜잭션은 최대 100개 항목(또는 4MB)을 원자적으로 읽거나 쓸 수 있습니다. 여러 테이블에 걸친 일관된 업데이트(계좌 A에서 B로 이체, 재고 차감 + 주문 생성)에 적합합니다. 그러나 트랜잭션은 일반 API보다 2배의 WCU를 소모하므로 필요한 경우에만 사용합니다.
Q60. 모놀리식 애플리케이션의 데이터베이스를 여러 마이크로서비스로 분해할 때 데이터 일관성을 유지하는 패턴은?
A) 모든 마이크로서비스가 단일 공유 데이터베이스를 계속 사용 B) Saga 패턴으로 분산 트랜잭션을 이벤트/메시지 기반으로 관리 C) 두 단계 커밋(2PC)으로 분산 트랜잭션 구현 D) 실시간 데이터 동기화 없이 각 서비스를 독립적으로 운영
정답: B
설명: Saga 패턴은 분산 트랜잭션을 각 서비스가 로컬 트랜잭션을 실행하고 이벤트를 발행하는 단계들의 시퀀스로 관리합니다. 실패 시 보상 트랜잭션(Compensating Transaction)을 실행하여 이전 상태로 되돌립니다. Choreography(이벤트 기반)나 Orchestration(중앙 오케스트레이터) 방식으로 구현합니다.
Q61. DynamoDB 글로벌 테이블에서 충돌 해결(Conflict Resolution)은 어떻게 이루어집니까?
A) 수동으로 충돌을 해결해야 함 B) "최후 쓰기 우선(Last Writer Wins)" 방식으로 타임스탬프가 가장 최근인 쓰기가 승리 C) 먼저 도착한 쓰기가 우선 D) 리전 우선순위에 따라 결정
정답: B
설명: DynamoDB 글로벌 테이블은 최후 쓰기 우선(Last Writer Wins) 충돌 해결 방식을 사용합니다. 동일 항목에 대해 여러 리전에서 동시에 쓰기가 발생하면, 가장 최근 타임스탬프의 쓰기가 최종 값으로 채택됩니다. 충돌을 방지하려면 각 리전에서 다른 파티션 키 범위를 쓰도록 애플리케이션을 설계하는 것이 좋습니다.
Q62. RDS MySQL에서 실시간으로 데이터 변경사항을 다른 시스템에 스트리밍하려 합니다. Aurora로 업그레이드하지 않고 구현하는 방법은?
A) RDS 이벤트 알림 사용 B) DMS CDC 작업 + Kinesis Data Streams 대상으로 설정하여 변경사항 스트리밍 C) CloudWatch Logs로 변경사항 기록 D) RDS 스냅샷을 주기적으로 분석
정답: B
설명: AWS DMS의 CDC 기능을 사용하면 RDS MySQL의 binlog 기반 변경사항을 Kinesis Data Streams로 실시간 스트리밍할 수 있습니다. Kinesis 대상에 DMS 작업을 설정하면 각 INSERT/UPDATE/DELETE 이벤트가 Kinesis 스트림으로 전송됩니다. 이를 Lambda나 Kinesis Analytics가 처리할 수 있습니다.
Q63. Amazon Keyspaces (Apache Cassandra용)를 선택하는 적합한 시나리오는?
A) 복잡한 다중 테이블 조인이 필요한 OLTP 시스템 B) 기존 Cassandra 호환 워크로드를 관리 오버헤드 없이 AWS에서 실행 C) 그래프 데이터베이스 쿼리 D) SQL 기반 분석
정답: B
설명: Amazon Keyspaces는 완전 관리형 Apache Cassandra 호환 서비스입니다. 기존 Cassandra CQL(Cassandra Query Language) 코드와 드라이버를 그대로 사용할 수 있습니다. Cassandra 클러스터 운영(노드 관리, 패치, 스케일링)의 오버헤드 없이 서버리스로 운영하고 싶을 때 선택합니다.
Q64. RDS PostgreSQL에서 연결 수를 줄이고 연결 지연을 최소화하는 애플리케이션 레벨 솔루션은?
A) 모든 쿼리를 동기적으로 실행 B) PgBouncer 같은 외부 연결 풀러 또는 RDS Proxy 사용 C) 각 요청마다 새 연결 생성 D) 연결 타임아웃을 최대로 설정
정답: B
설명: PgBouncer는 PostgreSQL 전용 연결 풀러로, 애플리케이션의 많은 연결 요청을 실제 데이터베이스의 적은 수의 연결로 다중화합니다. Transaction 풀링 모드에서는 트랜잭션 단위로 연결을 할당하여 최고의 효율을 제공합니다. RDS Proxy도 같은 기능을 AWS 관리형으로 제공합니다.
Q65. 의료 데이터베이스에서 PHI(Protected Health Information) 데이터를 보호하기 위한 다층 보안 전략으로 올바른 것을 2개 선택하세요.
A) VPC 프라이빗 서브넷에 RDS 배포 + 보안 그룹으로 최소 권한 네트워크 접근 B) KMS 고객 관리 키(CMK)로 저장 시 암호화 + 전송 중 SSL/TLS 강제 C) RDS를 퍼블릭으로 노출하고 IP 제한 D) 기본 암호화 키 사용 E) 모든 사용자에게 동일한 데이터베이스 접근 권한 부여
정답: A, B
설명: HIPAA 준수 및 PHI 보호를 위한 다층 보안: 1) VPC 프라이빗 서브넷 + 보안 그룹으로 네트워크 수준에서 접근을 최소화합니다. 2) KMS CMK로 저장 시 암호화, SSL/TLS로 전송 중 암호화를 구현합니다. 추가로 IAM 인증, Secrets Manager 자격 증명 관리, Database Activity Streams 감사, 최소 권한 원칙도 적용합니다.
학습 리소스
- AWS DBS-C01 시험 가이드
- AWS 데이터베이스 서비스 문서
- AWS Skill Builder DBS-C01 공식 학습 경로
- AWS Database 백서 및 Well-Architected 프레임워크 데이터베이스 레즈
이 모의고사는 학습 목적으로 제작되었습니다. 실제 시험 문제와 다를 수 있습니다.
AWS Database Specialty (DBS-C01) Practice Exam — 65 Questions
Exam Overview
| Item | Details |
|---|---|
| Duration | 180 minutes |
| Questions | 65 |
| Passing Score | 750 / 1000 |
| Question Types | Single answer, Multiple answer |
| Exam Cost | USD 300 |
Domain Breakdown
| Domain | Weight |
|---|---|
| Domain 1: Workload-Specific Database Design | 26% |
| Domain 2: Deployment and Migration | 20% |
| Domain 3: Management and Operations | 18% |
| Domain 4: Monitoring and Troubleshooting | 18% |
| Domain 5: Database Security | 18% |
AWS Database Service Selection Guide
[By Workload Type]
Relational OLTP
├── Small scale / easy migration: RDS (MySQL, PostgreSQL, MariaDB)
├── High performance / cloud-native: Aurora (MySQL/PostgreSQL compatible)
└── Enterprise / license retention: RDS Oracle, RDS SQL Server
NoSQL
├── Key-value / Document / Serverless: DynamoDB (single-table design)
├── Document (MongoDB compatible): DocumentDB
└── Caching: ElastiCache (Redis / Memcached)
Special Purpose
├── Graph: Neptune (Gremlin, SPARQL)
├── Ledger/Audit: QLDB
├── Time Series: Timestream
└── Cassandra compatible: Keyspaces
[Decision Tree]
Need transactions? YES → Need relational? YES → Aurora or RDS
NO → DynamoDB
NO → Search? → OpenSearch
Cache? → ElastiCache
Graph? → Neptune
Time series? → Timestream
Practice Questions
Domain 1: Workload-Specific Database Design
Q1. You are building a product catalog and order management system for an online store. You need thousands of reads/writes per second, 99.99% availability, and automatic storage expansion. Which database is most appropriate?
A) RDS MySQL Multi-AZ B) Aurora MySQL (Multi-AZ cluster) C) DynamoDB D) RDS PostgreSQL
Answer: B
Explanation: Aurora MySQL delivers up to 5x the performance of RDS MySQL and the cluster volume automatically scales from 10 GB to 128 TB. A Multi-AZ cluster maintains replicas across three AZs for high availability. It is ideal for high-performance OLTP workloads.
Q2. Which scenario is most suitable for Aurora Serverless v2?
A) Consistent high-volume transaction processing 24 hours a day B) Irregular, unpredictable traffic where you want to pay only for what you use C) Migrating an on-premises Oracle database D) An analytical data warehouse
Answer: B
Explanation: Aurora Serverless v2 automatically scales in fine-grained increments from 0.5 ACU to 128 ACU within seconds. It is ideal for development/test environments, intermittent traffic, and SaaS applications with near-zero traffic at night. You are charged only for the capacity consumed.
Q3. You want to store user profiles (UserID), user orders (OrderID), and order items (ItemID) in a single DynamoDB table design. What is the correct approach?
A) Separate each entity into its own table B) Add an entity type prefix to the partition key and use the sort key to express hierarchy C) Store all attributes in a single JSON column D) Create a GSI per entity
Answer: B
Explanation: In DynamoDB single-table design, the partition key (PK) uses entity type prefixes like USER#UserID or ORDER#OrderID. The sort key (SK) uses values like PROFILE, ORDER#OrderID, or ITEM#ItemID to express hierarchy. This allows one table to efficiently serve multiple access patterns.
Q4. What is the most accurate distinction between ElastiCache Redis Cluster Mode Enabled and Cluster Mode Disabled?
A) Cluster Mode Enabled supports only a single node B) Cluster Mode Enabled distributes data across multiple shards, supporting larger memory capacity and write throughput C) Cluster Mode Disabled delivers superior read performance D) Cluster Mode Enabled does not support Multi-AZ
Answer: B
Explanation: ElastiCache Redis Cluster Mode Enabled distributes data across multiple shards (each shard: one primary + replicas). Total memory and write throughput scale linearly with shard count. Cluster Mode Disabled uses a single shard (one primary + read replicas) and can only scale reads.
Q5. What is an appropriate scenario for choosing Amazon Neptune?
A) Processing tens of thousands of financial transactions per second B) Relationship analysis for social network friend recommendations or fraud detection C) Storing large volumes of time-series sensor data D) Storing an e-commerce product catalog
Answer: B
Explanation: Neptune is a graph database that efficiently models and queries relationships between entities. It is well-suited for social graph friend-of-friend traversal, financial fraud pattern detection, knowledge graphs, and recommendation engines. It supports Gremlin (Property Graph) and SPARQL (RDF) query languages.
Q6. When choosing between RDS for PostgreSQL and Aurora PostgreSQL, in which situation would you prefer RDS PostgreSQL?
A) When maximum performance is required B) When specific PostgreSQL extensions or plugins are not supported in Aurora C) When automatic scaling is needed D) When global distribution is required
Answer: B
Explanation: RDS PostgreSQL is preferred when specific extensions not supported by Aurora (e.g., certain advanced PostGIS features, specific fdw extensions) are required, or when immediate support for a particular major version is needed. Aurora's internal architecture differs from standard PostgreSQL and does not support every PostgreSQL feature.
Q7. What is the primary purpose of the DynamoDB GSI overloading technique?
A) Combine multiple GSIs into one to save costs B) Reuse a single GSI for multiple query patterns across different entity types C) Dynamically change the projected attributes of a GSI D) Automatically optimize GSI write capacity
Answer: B
Explanation: GSI overloading stores different semantic values for different entity types in the GSI's PK and SK. For example, storing STATUS#active for users, DATE#2026-03 for orders, and CATEGORY#electronics for products in gsi1pk allows a single GSI to serve querying users by status, orders by date, and products by category.
Q8. What is the key feature of Amazon QLDB (Quantum Ledger Database)?
A) Ultra-fast in-memory caching B) Maintains an immutable, cryptographically verifiable transaction log C) Storing graph relationship data D) Cassandra API compatibility
Answer: B
Explanation: QLDB maintains a complete and verifiable history of data changes in an immutable journal secured with SHA-256 hashes. It is suitable for regulated industries (finance, supply chain, HR) requiring audit trails. All changes are tracked with full history and integrity is verifiable cryptographically.
Q9. In which scenario would you choose ElastiCache Memcached over Redis?
A) When session storage, high availability, and persistence are needed B) When simple object caching is needed and maximum CPU core utilization via multi-threading is desired C) When Pub/Sub messaging is needed D) When geographically distributed caching is needed
Answer: B
Explanation: Memcached uses a multi-threaded architecture optimized for simple key-value caching. It scales linearly with CPU core count. When persistence, replication, Pub/Sub, snapshots, and rich data structures are not needed, Memcached provides excellent raw caching performance. Redis offers richer data structures and high availability.
Q10. What is the primary use case for Aurora Global Database?
A) Read scaling within a single region B) Disaster recovery (RPO in seconds, RTO under 1 minute) and reduced global read latency C) Optimizing Aurora Serverless v2 workloads D) Processing large-scale batch jobs
Answer: B
Explanation: Aurora Global Database consists of one primary region and up to five secondary regions. Inter-region replication lag is typically under 1 second. In a disaster, promoting a secondary region achieves RTO under 1 minute and RPO in seconds. Users in each region benefit from low-latency local reads.
Q11. Which workload is most suitable for Amazon Timestream?
A) Social media relationship data B) IoT sensor readings, application metrics, and operational events (time-series data) C) Financial transaction ledger management D) E-commerce product listings
Answer: B
Explanation: Timestream is a serverless database specialized for time-series data. It provides built-in functions for time-based queries (aggregation, interpolation, smoothing). Recent data is stored in memory; historical data is automatically moved to S3-backed magnetic storage. Time-series specific queries are far faster than on RDS.
Q12. Which statement correctly describes the standby instance in RDS Multi-AZ deployment?
A) The standby can serve read queries B) The standby maintains synchronous replication for automatic failover but is not directly accessible C) The standby is located in a different AWS Region D) Failover to standby must be triggered manually
Answer: B
Explanation: The RDS Multi-AZ standby maintains synchronous replication with the primary instance. The standby cannot serve read or write traffic directly (use Read Replicas for reads). When the primary fails, the DNS endpoint is automatically switched to the standby (approximately 60–120 seconds).
Domain 2: Deployment and Migration
Q13. You are migrating an on-premises Oracle database to AWS and want to avoid Oracle licensing costs. What is the best migration path?
A) RDS for Oracle (bring your own license — BYOL) B) Use SCT + DMS to convert to Aurora PostgreSQL or RDS PostgreSQL C) RDS for Oracle (License Included) D) Self-install Oracle on EC2
Answer: B
Explanation: Migrating from Oracle to Aurora PostgreSQL or RDS PostgreSQL completely eliminates Oracle licensing costs. AWS SCT (Schema Conversion Tool) converts Oracle schema to PostgreSQL, and DMS migrates the data. Assess Oracle-specific features (PL/SQL, Oracle-specific functions, packages) using SCT to understand conversion complexity.
Q14. What is the benefit of using RDS Blue/Green Deployments?
A) Replicates the database to another region B) Minimizes downtime by switching traffic from production (Blue) to a pre-validated staging environment (Green) C) Automatically performs minor version upgrades D) Creates a new database from a snapshot
Answer: B
Explanation: RDS Blue/Green Deployments create a complete copy (Green) of the current production (Blue) and keep it in sync. Changes (new versions, parameter changes, schema updates) are validated in the Green environment. After validation, traffic is switched from Blue to Green in seconds. Rollback is straightforward.
Q15. Is SCT (Schema Conversion Tool) required when migrating from MySQL to Aurora MySQL using DMS?
A) Yes, MySQL and Aurora MySQL are different engines, so SCT is needed B) No, homogeneous migration (MySQL to Aurora MySQL) can be done with DMS alone without SCT C) SCT must always be run first D) Aurora MySQL is not supported as a DMS target
Answer: B
Explanation: SCT is required for heterogeneous migrations (Oracle to PostgreSQL, SQL Server to MySQL, etc.) where schema conversion is needed. Homogeneous migrations (MySQL to Aurora MySQL, PostgreSQL to Aurora PostgreSQL) have compatible schemas, so DMS can perform the migration without SCT.
Q16. What is the recommended approach for performing an Aurora major version upgrade (e.g., Aurora MySQL 2.x to 3.x)?
A) Perform an in-place upgrade immediately B) Create a new cluster from a snapshot, upgrade it, validate, then switch traffic C) Upgrade a read replica to the major version first D) Use DMS to migrate data to the new cluster
Answer: B
Explanation: Aurora major version upgrades carry risk. The recommended procedure is: 1) Create a snapshot of the current cluster → 2) Create a new cluster from the snapshot and upgrade to the major version → 3) Validate application compatibility → 4) Switch DNS (CNAME) or use Blue/Green Deployments to cut over.
Q17. How do you migrate a DynamoDB table to another AWS account or region?
A) Use DMS for DynamoDB-to-DynamoDB migration B) Export the DynamoDB table to S3, then import from S3 in the target account/region C) Real-time replication via Kinesis Data Streams + Lambda D) Copy the CloudFormation stack
Answer: B
Explanation: DynamoDB Export to S3 writes table data in DynamoDB JSON or ION format to S3. The target account/region then uses DynamoDB Import from S3 to load the data into a new table. DynamoDB Global Tables enables continuous multi-region replication.
Q18. What is the most important consideration when migrating from on-premises SQL Server to Amazon RDS for SQL Server?
A) SQL Server licenses can be transferred to AWS B) Verify whether features like SQL Server Agent, SSIS, SSRS, and SSAS are supported C) RDS SQL Server does not support Multi-AZ D) RDS SQL Server supports a maximum of 1 TB storage
Answer: B
Explanation: RDS for SQL Server supports SQL Server Agent but does not support SSIS, SSRS, or SSAS. If these services are in use, you must host them on EC2 or evaluate alternative services. Also verify the specific SQL Server versions supported by RDS.
Q19. What configuration is required on the source MySQL database for DMS CDC (Change Data Capture)?
A) Create a replication slot B) Enable binary logging in ROW format: set binlog_format=ROW C) Create a read replica D) Processed automatically without any parameter group changes
Answer: B
Explanation: To use DMS CDC with MySQL, binary logging must be enabled in ROW format. Required settings: binlog_format=ROW, binlog_row_image=FULL, and an appropriate expire_logs_days value. On RDS MySQL, these are configured via the parameter group. PostgreSQL uses replication slots.
Q20. When evaluating migration complexity, what is the difference between Lift-and-Shift and Re-architect?
A) Both approaches have the same migration complexity B) Lift-and-shift moves to AWS with minimal changes; re-architect redesigns using cloud-native services C) Re-architect is always cheaper D) Lift-and-shift guarantees the same performance as on-premises
Answer: B
Explanation: Lift-and-shift moves existing databases to EC2 or RDS with minimal changes. It is fast and low-risk but does not fully leverage cloud advantages. Re-architect redesigns with cloud-native services like DynamoDB or Aurora, gaining more cloud benefits but requiring greater complexity and cost.
Domain 3: Management and Operations
Q21. What is the difference between RDS Parameter Groups and Option Groups?
A) Parameter Groups configure networking; Option Groups configure security B) Parameter Groups configure database engine settings; Option Groups enable additional features (e.g., Oracle TDE, MSSQL SQL Server Audit) C) Both groups serve the same purpose D) Option Groups are only used with PostgreSQL
Answer: B
Explanation: RDS Parameter Groups configure database engine parameters such as max_connections and innodb_buffer_pool_size. Option Groups enable add-on features: Oracle TDE (Transparent Data Encryption), MSSQL SQL Server Audit, MySQL memcached plugin, and similar optional capabilities.
Q22. In RDS Performance Insights, you see many db/lock/row wait events. What does this indicate?
A) CPU bottleneck B) Row-level lock contention — queries waiting for other transactions to release row locks C) Network latency D) Storage I/O bottleneck
Answer: B
Explanation: The db/lock/row wait event indicates row-level lock contention. Transaction A holds a lock on specific rows while Transaction B waits to update or delete the same rows. Remediation includes reducing transaction size, optimizing indexes (to narrow lock scope), and analyzing deadlocks.
Q23. How does Aurora Auto Scaling work?
A) Automatically increases the compute size of the primary instance B) Automatically adds or removes read replicas based on CloudWatch metrics (CPU utilization, connection count) C) Automatically expands storage D) Automatically creates Aurora clusters across multiple regions
Answer: B
Explanation: Aurora Auto Scaling dynamically adds or removes Aurora read replicas in response to CloudWatch metrics (average CPU utilization or average connection count). During traffic surges, replicas are added automatically; when traffic drops, unnecessary replicas are removed to optimize cost.
Q24. Which statement correctly compares DynamoDB On-Demand and Provisioned capacity modes?
A) On-Demand requires manually specifying read/write capacity B) Provisioned mode is cost-effective for predictable traffic patterns; On-Demand is suitable for unpredictable traffic C) On-Demand does not include a free tier D) Provisioned mode cannot be scaled
Answer: B
Explanation: Provisioned mode is cost-effective for predictable workloads: specify RCU/WCU and enable Auto Scaling. On-Demand mode automatically scales to traffic but has a higher per-request cost. On-Demand suits new tables, unpredictable traffic, and development/test environments.
Q25. What is the key difference between RDS automated backups and manual snapshots?
A) Automated backups are not encrypted B) Automated backups are deleted after the retention period (1–35 days); manual snapshots are retained until explicitly deleted C) Manual snapshots support PITR (Point-in-Time Recovery) D) Automated backups cannot be copied to another region
Answer: B
Explanation: RDS automated backups are automatically deleted after the configured retention period (up to 35 days). Manual snapshots are retained permanently until explicitly deleted. Automated backups also retain transaction logs for Point-in-Time Recovery (PITR).
Q26. What is the primary benefit of the Aurora Backtrack feature?
A) Replicates data to another region B) Rewinds the database to a previous point in time (within 5 minutes to 72 hours) without restoring from a snapshot C) Automatically performs major version upgrades D) Automatically distributes read traffic
Answer: B
Explanation: Aurora Backtrack quickly rewinds the database to a specific point in the past. It is much faster than restoring from a snapshot (completes in minutes) and is ideal for rapid recovery after an accidental DELETE or UPDATE. Backtrack supports rewinding up to 72 hours and is available for Aurora MySQL.
Q27. What happens when you enable DynamoDB Global Tables?
A) Multi-AZ replication within the same region B) Fully managed multi-master replication across multiple AWS Regions — each region can accept writes C) Creates read replicas in other regions D) Provides read-only access to another region's DynamoDB table
Answer: B
Explanation: DynamoDB Global Tables provides fully managed multi-master replication across multiple AWS Regions. Reads and writes are accepted in every region. Inter-region replication typically completes in under 1 second. If one region fails, other regions continue operating normally.
Domain 4: Monitoring and Troubleshooting
Q28. ProvisionedThroughputExceededExceptions are occurring frequently in DynamoDB. Which CloudWatch metrics should you examine first?
A) ConsumedReadCapacityUnits and ConsumedWriteCapacityUnits B) SystemErrors and UserErrors C) SuccessfulRequestLatency D) ReturnedItemCount
Answer: A
Explanation: ProvisionedThroughputExceededException occurs when read or write capacity exceeds the provisioned amount. Examine ConsumedReadCapacityUnits and ConsumedWriteCapacityUnits to determine which capacity type (read or write) is being exceeded. Also review the ThrottledRequests metric.
Q29. What is the correct way to enable and analyze the slow query log in RDS MySQL?
A) Track slow queries with CloudTrail B) Set slow_query_log=1 and configure long_query_time in the RDS parameter group, then analyze via CloudWatch Logs or the RDS console C) Analyze query patterns with VPC Flow Logs D) Detect slow queries with Enhanced Monitoring
Answer: B
Explanation: Enable slow query logging in the RDS MySQL parameter group by setting slow_query_log=1 and configuring the long_query_time threshold (in seconds). Logs can be viewed in the RDS console or published to CloudWatch Logs for analysis with CloudWatch Insights. Set log_queries_not_using_indexes=1 to also track queries that skip indexes.
Q30. The AuroraReplicaLag metric is high in Aurora PostgreSQL. What does this mean and how do you resolve it?
A) High CPU on primary instance → upgrade instance size B) Read replica is falling behind primary — upgrade replica instance size or optimize write operations C) Storage volume is full → expand storage D) Network latency → review VPC configuration
Answer: B
Explanation: AuroraReplicaLag measures the lag for a read replica to apply changes from the primary. High lag means reads from that replica may return stale data. Remediation: upgrade the read replica instance size, optimize write-intensive operations, or route write queries exclusively to the primary instance.
Q31. How does RDS Enhanced Monitoring differ from CloudWatch standard monitoring?
A) Enhanced Monitoring is free B) Enhanced Monitoring provides OS-level metrics (processes, memory usage) at 1–60 second granularity C) CloudWatch standard monitoring provides finer-grained metrics D) Enhanced Monitoring only tracks database connections
Answer: B
Explanation: CloudWatch standard monitoring collects hypervisor-level instance metrics at 1-minute or 5-minute intervals. Enhanced Monitoring uses an agent installed on the RDS instance to collect OS-level process lists, memory usage, CPU scheduling, and more at intervals from 1 to 60 seconds.
Q32. What is the primary purpose of enabling Database Activity Streams?
A) Database query caching B) Real-time streaming of all database activity to Kinesis Data Streams for compliance and security auditing C) Sending database metrics to CloudWatch D) Automating database backups
Answer: B
Explanation: Database Activity Streams streams all database activity (SQL statements, connections, authentication) in real time to Kinesis Data Streams encrypted with KMS. This enables integration with SIEM tools for real-time security monitoring and audit trails. Even DBAs cannot access the stream contents, preventing tampering.
Q33. The Aurora CommitLatency metric suddenly increases. What are the probable causes?
A) Too many read replicas B) Storage I/O bottleneck, excessive write workload, or network latency C) Connection pooling misconfiguration D) Parameter group change needed
Answer: B
Explanation: CommitLatency measures the time to complete a transaction commit. A sudden increase suggests Aurora storage layer I/O bottleneck, excessive write transactions, or log flush delays. Analyze together with WriteLatency, DiskQueueDepth, and FreeableMemory metrics to identify the root cause.
Q34. A Hot Partition problem occurs in DynamoDB where excessive traffic concentrates on a specific partition. How do you resolve it?
A) Increase the overall RCU/WCU of the table B) Change the partition key design to use a high-cardinality key or add a random suffix C) Add a GSI to distribute partitions D) Switch to On-Demand mode
Answer: B
Explanation: Hot partitions occur when the partition key has low cardinality or traffic concentrates on specific keys. Solutions: 1) Choose a high-cardinality partition key (UserID, UUID), 2) Add a random suffix to partition keys (Write Sharding), 3) Apply appropriate distribution for time-based keys. Switching to On-Demand hides the bottleneck but does not solve it fundamentally.
Q35. The FreeStorageSpace metric on an RDS MySQL instance is decreasing rapidly. What is the immediate resolution?
A) Restart the database B) Enable RDS Storage Autoscaling or manually increase the storage allocation C) Add a read replica D) Switch to Multi-AZ
Answer: B
Explanation: Enabling RDS Storage Autoscaling automatically increases storage when FreeStorageSpace falls below the specified threshold. If storage is already low, manually increase the allocated storage (note: reducing is not possible). Also consider reducing binary log retention and archiving old data.
Domain 5: Database Security
Q36. What is the benefit of enabling IAM authentication for RDS?
A) Faster authentication processing B) Connect using short-lived IAM-generated authentication tokens instead of a database password C) Automatic re-authentication during Multi-AZ failover D) Automatic data encryption activation
Answer: B
Explanation: With RDS IAM authentication enabled, you generate a 15-minute authentication token from AWS IAM credentials to connect without storing a database password in the application. Database access is controlled via IAM policies. It integrates cleanly with EC2 instance roles and Lambda execution roles.
Q37. What is the advantage of the Alternating Users strategy for automatic credential rotation in AWS Secrets Manager?
A) The old credentials remain valid during rotation, enabling zero-downtime rotation B) Security is stronger C) Credential storage costs are reduced D) Rotation frequency can be increased
Answer: A
Explanation: The Alternating Users strategy maintains two users, rotating between them. During rotation, only the inactive user's password is changed while the active user remains valid. This allows the application to continue connecting with the current password during rotation — no downtime. Single-user rotation can momentarily break connections.
Q38. You deployed an RDS database in a VPC private subnet and on-premises applications need access. What is the most secure connection method?
A) Assign a public IP to RDS and access over the internet B) Private network connection via Direct Connect or Site-to-Site VPN C) Access through an internet gateway D) Export RDS snapshots to on-premises
Answer: B
Explanation: To securely access RDS in a VPC private subnet from on-premises, use AWS Direct Connect (dedicated line) or AWS Site-to-Site VPN. Both bypass the internet and communicate via private networks, improving security. Explicitly allow the on-premises IP range in security group inbound rules.
Q39. You want to enable encryption at rest for an RDS for MySQL instance. What is the critical constraint?
A) Encryption can be enabled or disabled at any time B) You cannot directly convert an existing unencrypted RDS instance — you must create a snapshot, copy it as encrypted, then restore C) Encryption is only supported with Multi-AZ D) Enabling encryption reduces performance by 50%
Answer: B
Explanation: Encryption cannot be enabled on an already-created RDS instance. You must: create a snapshot of the unencrypted instance → copy the snapshot enabling encryption → restore a new instance from the encrypted snapshot. This is why it is important to enable encryption from the start when creating new databases.
Q40. You want to implement fine-grained access control on a DynamoDB table so that specific users can only access items matching their own UserID. How do you do this?
A) Apply column-level security in DynamoDB B) Use the dynamodb:LeadingKeys condition in IAM policies to restrict the partition key value to the user's ID C) Apply row-level security in DynamoDB via Lake Formation D) Network-level access control via VPC endpoint
Answer: B
Explanation: The dynamodb:LeadingKeys IAM condition key restricts which partition key values a user can access. If you constrain the partition key with the aws:userid policy variable for the current IAM identity, each user can only read and write items whose partition key matches their own UserID.
Advanced Scenarios
Q41. A fintech startup is building a high-performance payment system. Requirements: 1) Tens of thousands of transactions per second, 2) 99.999% availability, 3) Recovery within 30 seconds of regional failure, 4) Complete audit trail. What architecture do you choose?
A) DynamoDB (single-table) + Lambda B) Aurora Global Database (multi-region) + Database Activity Streams + Secrets Manager C) RDS MySQL Multi-AZ + Read Replicas D) ElastiCache Redis + DynamoDB
Answer: B
Explanation: Aurora Global Database delivers RTO under 1 minute and RPO in seconds for regional failures. Database Activity Streams provides real-time audit trails of all transaction activity to support financial compliance. Secrets Manager automatically rotates credentials for enhanced security.
Q42. When migrating a legacy Oracle database to Aurora PostgreSQL, select two sources of migration complexity.
A) Converting Oracle SEQUENCE to PostgreSQL B) Converting PL/SQL stored procedures to PL/pgSQL C) Renaming tables D) Data type conversion (DATE, NUMBER) E) Dropping indexes
Answer: B, D
Explanation: Key complexity factors for Oracle-to-PostgreSQL migration: 1) PL/SQL to PL/pgSQL conversion requires translating Oracle-specific functions, packages, and cursors. 2) Data types: Oracle's NUMBER, DATE, VARCHAR2 map to NUMERIC, TIMESTAMP, VARCHAR in PostgreSQL, with some behavioral differences. Use SCT to assess what can be auto-converted.
Q43. An application uses ElastiCache Redis as a session cache. What configuration minimizes session data loss in the event of a Redis cluster node failure?
A) Redis Cluster Mode Disabled with no replicas B) Redis Cluster Mode Enabled + 2 replicas per shard + Multi-AZ enabled C) Replace with a Memcached cluster D) Create periodic Redis snapshots
Answer: B
Explanation: With Cluster Mode Enabled and 2 replicas per shard, when a node fails, a replica is automatically promoted to primary. Two replicas tolerate the simultaneous failure of up to two nodes. Session data is replicated in memory, surviving node failures.
Q44. What DynamoDB design pattern isolates tenant data in a multi-tenant SaaS application?
A) Create a separate DynamoDB table per tenant B) Include the tenant ID in the partition key within a single table for data isolation C) Create a separate AWS account per tenant D) Replicate per-tenant data via DynamoDB Streams
Answer: B
Explanation: In most cases, include the tenant ID in the partition key (e.g., TENANT#tenantId#ENTITY#entityId) in a single table. Use the dynamodb:LeadingKeys IAM condition to restrict each tenant to only their own partition key range. For strict isolation requirements with large tenant counts, per-table isolation may be considered.
Q45. An Aurora MySQL cluster has five read replicas serving read workloads. You want to direct analytical queries to specific replicas only. How do you do this?
A) Configure query routing with RDS Proxy B) Use individual replica endpoints or Aurora Custom Endpoints C) Route queries with CloudFront D) Use Route 53 weighted routing to concentrate traffic on specific replicas
Answer: B
Explanation: Aurora Custom Endpoints let you route connections to a specific set of replicas. Create a custom endpoint grouping large-instance replicas for analytical queries, and use the cluster reader endpoint for general reads. Individual instance endpoints for each replica are also available.
Q46. An RDS MySQL instance frequently exceeds max_connections. How do you resolve this without changing application code?
A) Upgrade to a larger RDS instance (max_connections increases automatically with memory) B) Deploy Amazon RDS Proxy to implement connection pooling C) Add read replicas to distribute connections D) Directly increase the max_connections parameter value
Answer: B
Explanation: Amazon RDS Proxy sits between the application and RDS and multiplexes thousands of application connections into fewer actual database connections. Without changing application code, you only need to point the endpoint to the Proxy endpoint. This is especially useful for Lambda functions that can create connection bursts.
Q47. What is the benefit of enabling the pg_stat_statements extension in Aurora PostgreSQL?
A) Automatically optimizes slow queries B) Tracks execution statistics (call count, average time, total time) for all executed SQL statements C) Automatically manages the database connection count D) Automatically recommends index creation
Answer: B
Explanation: pg_stat_statements is a PostgreSQL extension that tracks statistics for all executed SQL statements: call counts, total/average/max/min execution time, rows processed, and more. Use it with Performance Insights to identify the most frequently executed or slowest queries. Enable it in the RDS PostgreSQL parameter group.
Q48. In a large microservices architecture, each service uses its own database. Container auto-scaling causes connection surges to RDS. How do you resolve this?
A) Create a separate RDS instance per microservice B) Deploy RDS Proxy in front of each RDS database to implement connection pooling C) Upgrade to a larger RDS instance D) Replace all RDS instances with DynamoDB
Answer: B
Explanation: Container-based microservices can instantaneously create hundreds or thousands of database connections during auto-scaling, exceeding max_connections. RDS Proxy pools these connections so the actual database maintains only a manageable number. It also supports IAM authentication for enhanced security.
Q49. You need to upgrade Amazon DocumentDB compatibility from MongoDB 4.0 to 5.0. What should you consider?
A) DocumentDB is fully compatible with all MongoDB versions B) DocumentDB is compatible with the MongoDB wire protocol but does not support all MongoDB features — verify feature support C) DocumentDB must be migrated to MongoDB Atlas D) An upgrade causes data loss
Answer: B
Explanation: Amazon DocumentDB is compatible with the MongoDB wire protocol but does not fully implement every MongoDB feature. Before upgrading, verify: MongoDB driver versions in use, commands and aggregation pipeline stages supported by DocumentDB, and the support status of MongoDB-specific features (Change Streams, Transactions, etc.).
Q50. Secrets Manager automatic rotation is failing. When examining Lambda function errors in CloudWatch Logs, what is the most common cause?
A) Secrets Manager cannot access RDS directly B) The Lambda function is not in the same VPC as the RDS instance, preventing network access C) KMS key permission error D) Insufficient IAM role permissions
Answer: B
Explanation: The Secrets Manager rotation Lambda must connect to the database to change the password. If Lambda is in a different VPC than RDS, or if the security group does not allow Lambda's access, the connection fails. Deploy Lambda in the same VPC as RDS and configure security groups correctly.
Q51. You implement a pattern that caches Aurora MySQL query results in ElastiCache Redis. How do you handle cache invalidation on database updates?
A) Rely solely on ElastiCache TTL B) Explicitly delete the relevant cache key in the application when data changes (Cache-Aside pattern) C) Automatically update the cache via DynamoDB Streams D) Invoke Lambda via an Aurora trigger to invalidate the cache
Answer: B
Explanation: The Cache-Aside (Lazy Loading) pattern is the most common caching strategy. On reads, check the cache first; on a miss, read from the database and populate the cache. On writes, update the database and delete the corresponding cache key. TTL serves as an additional safety net.
Q52. An RDS database in one AWS account must be accessed by a Lambda function in a different AWS account. What is the most secure approach?
A) Enable public access on RDS and restrict with IAM policies B) Connect the two VPCs privately via VPC Peering or Transit Gateway, then use IAM authentication C) Share the RDS snapshot with the target account D) Use a cross-account IAM role to access RDS directly
Answer: B
Explanation: The most secure approach: establish private network connectivity between the two account VPCs via VPC Peering or AWS Transit Gateway, grant the Lambda execution role RDS IAM authentication permissions, and connect using RDS IAM authentication. RDS is never exposed publicly, maintaining network-level security.
Q53. An Aurora Serverless v2 database has hit the MaxCapacity limit. How do you respond?
A) Switch from Aurora Serverless v2 to Provisioned B) Raise the MaxCapacity value and add Provisioned read replicas as needed C) Delete the cluster and recreate it D) Forcibly terminate application connections
Answer: B
Explanation: When MaxCapacity is reached, new requests cannot be processed. The immediate action is to increase the MaxCapacity value (up to 128 ACU). For the long term, add Provisioned read replicas to distribute read load. If write capacity is the bottleneck, consider query optimization or sharding.
Q54. A financial services company needs to implement audit trails for all database changes. How do you implement this while minimizing additional cost and complexity?
A) Log all changes at the application layer B) RDS/Aurora Database Activity Streams + Kinesis Data Firehose → S3 archive C) Add audit triggers to all database tables D) Record RDS API calls with CloudTrail
Answer: B
Explanation: Database Activity Streams sends all database activity over a KMS-encrypted Kinesis stream. Kinesis Firehose archives data to S3 for long-term retention, queryable with Athena. No application code changes are needed, and it provides tamper-proof audit trails that even DBAs cannot access.
Q55. What happens when DynamoDB Time To Live (TTL) is enabled?
A) Items are deleted immediately after the specified time B) Items are automatically deleted after the Unix timestamp specified in the TTL attribute (within 48 hours, at no cost) C) Expired items are hidden but remain in storage D) TTL deletions consume write capacity units
Answer: B
Explanation: DynamoDB TTL sets a Unix timestamp on each item. After that timestamp, items are automatically deleted within 48 hours (exact timing is not guaranteed). TTL deletions incur no additional cost and consume no write capacity units. Useful for session data, temporary data, and expiry token management.
Q56. In Neptune graph database, which query language should you choose between Gremlin and SPARQL?
A) Always use Gremlin B) Use Gremlin for Property Graphs (social networks, recommendations); use SPARQL for RDF/Ontology (knowledge graphs, semantic web) C) SPARQL is always faster D) You can only choose one and cannot change it
Answer: B
Explanation: Neptune supports two graph models. Property Graph (Gremlin) attaches properties to nodes and edges and is suited for social graphs, fraud detection, and recommendation engines. RDF (SPARQL) uses the Resource Description Framework and is suited for knowledge graphs, semantic web, and ontology modeling.
Q57. You need native backup/restore capability for RDS for SQL Server. What method should you use?
A) Use DMS for SQL Server-to-SQL Server migration B) Use RDS SQL Server native backup/restore integrated with S3 (enable SQLSERVER_BACKUP_RESTORE in the Option Group) C) Download a snapshot and restore on-premises D) Export data with the bcp utility
Answer: B
Explanation: For RDS for SQL Server native backup/restore, enable the SQLSERVER_BACKUP_RESTORE option in the Option Group and specify an S3 bucket. Use the rdsadmin.dbo.rds_backup_database stored procedure to back up to an S3 .bak file, and rdsadmin.dbo.rds_restore_database to restore.
Q58. Query plans in Aurora PostgreSQL change frequently, causing unstable performance. How do you resolve this?
A) Increase max_connections B) Use Query Plan Management (QPM) or the pg_hint_plan extension to pin query plans C) Add read replicas D) Upgrade the instance size
Answer: B
Explanation: Query plan instability is caused by statistics changes or planner behavior changes. Aurora PostgreSQL's apg_plan_mgmt (Query Plan Management) extension allows pinning execution plans for specific SQL statements. pg_hint_plan provides SQL hints, and parameters like enable_seqscan and enable_indexscan can guide the planner.
Q59. When is it appropriate to use DynamoDB transactions (TransactWriteItems, TransactGetItems)?
A) Reading or writing a single item B) When atomic reads/writes across multiple items or tables are required (e.g., account transfers, inventory deductions) C) Large-scale batch data processing D) When TTL needs to be set
Answer: B
Explanation: DynamoDB transactions atomically read or write up to 100 items (or 4 MB) across multiple tables. They are well-suited for consistent updates spanning multiple tables (transfer from account A to B, create order + deduct inventory). However, transactions consume 2x WCU compared to standard API calls — use them only when necessary.
Q60. Which pattern maintains data consistency when decomposing a monolithic database into multiple microservices?
A) All microservices continue to share a single database B) Manage distributed transactions with the Saga pattern using event/message-based coordination C) Implement distributed transactions with Two-Phase Commit (2PC) D) Operate each service independently without real-time data synchronization
Answer: B
Explanation: The Saga pattern manages distributed transactions as a sequence of local transactions where each service executes a local transaction and publishes an event. On failure, compensating transactions roll back previous steps. Implement as Choreography (event-based) or Orchestration (central orchestrator).
Q61. How is conflict resolution handled in DynamoDB Global Tables?
A) Conflicts must be resolved manually B) Last Writer Wins — the write with the most recent timestamp wins C) The first write to arrive wins D) Determined by region priority
Answer: B
Explanation: DynamoDB Global Tables uses Last Writer Wins conflict resolution. When concurrent writes to the same item occur in multiple regions, the write with the most recent timestamp wins as the final value. To avoid conflicts, design applications so each region writes to different partition key ranges.
Q62. You want to stream data changes from RDS MySQL to other systems in real time, without upgrading to Aurora. How do you do this?
A) Use RDS event notifications B) Configure a DMS CDC task with a Kinesis Data Streams target to stream changes C) Record changes with CloudWatch Logs D) Periodically analyze RDS snapshots
Answer: B
Explanation: AWS DMS CDC reads changes from the RDS MySQL binlog and streams them to Kinesis Data Streams. Setting Kinesis as the DMS task target delivers each INSERT/UPDATE/DELETE event to the Kinesis stream. Lambda or Kinesis Analytics can then process those events downstream.
Q63. What is an appropriate scenario for choosing Amazon Keyspaces (for Apache Cassandra)?
A) An OLTP system requiring complex multi-table joins B) Running existing Cassandra-compatible workloads on AWS without operational overhead C) Graph database queries D) SQL-based analytics
Answer: B
Explanation: Amazon Keyspaces is a fully managed Apache Cassandra-compatible service. Existing Cassandra CQL code and drivers work without modification. Choose it when you want to run Cassandra workloads serverlessly without the overhead of managing Cassandra cluster nodes, patching, and scaling.
Q64. Which application-level solution reduces connection count and minimizes connection latency in RDS PostgreSQL?
A) Execute all queries synchronously B) Use an external connection pooler like PgBouncer or RDS Proxy C) Create a new connection per request D) Set connection timeout to maximum
Answer: B
Explanation: PgBouncer is a PostgreSQL-specific connection pooler that multiplexes many application connection requests into fewer actual database connections. Transaction pooling mode allocates connections per transaction for maximum efficiency. RDS Proxy provides the same functionality as an AWS-managed service.
Q65. To protect PHI (Protected Health Information) in a medical database, which two elements are part of a multi-layered security strategy?
A) Deploy RDS in a VPC private subnet + use security groups to enforce least-privilege network access B) Encryption at rest with KMS customer-managed key (CMK) + enforce SSL/TLS for in-transit encryption C) Expose RDS publicly and restrict by IP D) Use the default encryption key E) Grant all users the same database access level
Answer: A, B
Explanation: For HIPAA compliance and PHI protection: 1) VPC private subnet + security groups minimize network-level exposure. 2) KMS CMK for encryption at rest, SSL/TLS for encryption in transit. Additionally apply IAM authentication, Secrets Manager credential management, Database Activity Streams auditing, and the principle of least privilege.
Study Resources
- AWS DBS-C01 Exam Guide
- AWS Database Services Documentation
- AWS Skill Builder DBS-C01 Official Learning Path
- AWS Database Whitepapers and Well-Architected Framework Database Lens
This practice exam is created for study purposes. Actual exam questions may differ.