# Database

- **RDBMS** (=SQL / OLTP) : RDS, Aurora

- **NoSQL database**: DynamoDB(~JSON), ElastiCache (Key/Value pairs), Neptune (graphs)

- **Object Store**: S3 (for big objects) / Glacier (for backups/archives)

- **Data Warehouse** (=SQL Analytics / BI): Redshift (OLAP), Athena, Glue

- **Search**: ElasticSeaerch (JSON)

- **Graphs**: Neptune

## 1. RDS

관리형 관계형 데이터베이스(PostgreSQL / MySQL / Oracle / SQL) 서버

- **운영**: 읽기 복제/EC2 인스턴스/EBS를 확장 가능, 실패해도 다운돼 있는 시간 적음

- **보안**: AWS는 운영체제 보안을 책임. 우리는 KMS, 보안 그룹, IAM 정책, SSL, 유저에게 권한 부여에 관해 책임

- **신뢰**: 백업, 스냅샷, point-in-time 복구, 멀티 AZ

- **성능**: EC2 인스턴스 타입과 EBS 볼륨 타입에 따라 다름. 읽기 복제를 추가할 수 있음. 자동/수동 확장이 가능

- **가격**: 프로비전한 EC2와 EBS에 기반에 시간당으로 책정

## 2. Aurora

PostgreSQ과 MySQL에 호환되는 API

- **운영**: 저장소 자동 확장(10GB~128TB). 명령 가짓수가 적음.

- **보안**: RDS와 동

- **신뢰**: 멀티 AZ, 서버리스 사용 가능, Multi-Master(실패를 견딤) 사용 가능

- **성능**: 5배의 성능, 기본 6개(3개 AZ)에서 최대 15개의 읽기 복제 유지 (RDS는 5개)

- **가격**: 시간당 EC2와 저장소 이용. 오라클보다 쌀 수 있다.

## 3. ElasticCache

Redis / Memcached를 지원하는 key-value 방식의 NoSQL 인메모리 저장소.

- **운영**: RDS와 동

- **보안**: RDS와 비슷하지만 유저는 Redis Auth를 통해 관리함

- **신뢰**: RDS 보안 + 클러스터링

- **성능**: 매우 빠른 캐시, 읽기 복제(Sharding)을 지원

- **가격**: RDS와 동

## 4. DynamoDB

ElastiCache를 대체하는 완전 관리형 Key/Value NoSQL 데이터베이스. 기본 키와 정렬 키, 인덱스로만 쿼리 가능.

- **운영**: 자동이다.

- **보안**: IAM 정책, KMS, SSL로 완전 관리됨

- **신뢰**: 멀티 AZ, 백업

- **성능**: 빠름, DAX로 읽기 캐싱, 확장해도 성능 유지

- **비용**: 프로비전한 만큼, 저장된 용량 만큼

![Image](https://upload.cafenono.com/image/slashpageHome/20240820/134123_pTHMfA1b92GOprHPHm?q=80&s=1280x180&t=outside&f=webp)

## 5. S3

Key(버킷)/Value(객체) 방식으로 큰 파일을 저장하는 서버리스 서비스

- **운영**: 완전 자동화

- **보안**: IAM, 버킷 정책, ACL, 암호화(서버/클라이언트), SSL

- **신뢰**: 내구성과 가용성 최고, 버전 관리, 멀티 AZ, CRR(Cross-Region Replication)

- **성능**: 확장 자유로움, Multi-part upload, Transfer Acceleration

- **비용**: 저장 용량, 네트워크, 요청한 만큼 지불

- **티어**: S3 Standard, IA, One Zone, Glacier, Deep Glacier

## 6. Athena

S3에서 SQL로 query하는 서버리스 서비스. 로그 분석 등으로 사용된다.

- **운영**: 완전 자동 

- **보안**: IAM + S3 보안

- **신뢰**: Presto 엔진을 써 성능과 고가용성 보장

- **성능**: 데이터 크기에 따라 확장

- **비용**: 요청한 쿼리 수, 스캔한 용량만큼 지불

## 7. Redshift

### 개요

- ProstgreSQL를 사용하며 [OLTP가 아닌 OLAP](https://jins-dev.tistory.com/entry/%25EA%25B0%2584%25EB%259E%25B5%25ED%2595%2598%25EA%25B2%258C-%25EC%25A0%2595%25EB%25A6%25AC%25ED%2595%25B4%25EB%25B3%25B4%25EB%258A%2594-OLTP-OLAP-%25EC%259D%2598-%25EA%25B0%259C%25EB%2585%2590)를 위해 사용한다.

- 행 지향 DB가 아닌 [컬럼 지향 DB](https://118k.tistory.com/400)(Coulmnar)다.

- 대량 쿼리 병렬 실행 (MPP)를 지원하고 BI 툴과 통합이 가능하다.

- 멀티 AZ를 지원하지 않고 스냅샷을 통해 다른 리전으로 복사한다.

- 스냅샷을 찍고(8시간마다, 5GB마다), 복사하는 작업을 자동화할 수 있다.

### 동작

- S3 등 DB에서 데이터를 가져온다.

- 클러스트를 만들어, 최대 128개의 노드를, 노드당 128TB를 보관할 수 있다.

    - **리더 노드**:** **쿼리를 계획하고 결과를 모은다.

    - **연산 노드**: 쿼리를 연산하고 결과를 리더한테 보낸다.

- **Redshift Specturm**: 병렬로 S3에서 데이터를 읽어서 제공하여 I/O에서 발생하는 지연을 없앤다.

- 백업/복구, 보안 VPC, IAM, KMS, 모니터링을 지원

- **Redshift Enhanced VPC Routing**: 인터넷으로 나가지 않고 VPC를 통해서 COPY/UNLOAD를 한다.

### Redshift로 데이터 보내기

![Image](https://upload.cafenono.com/image/slashpageHome/20240820/134124_lFXOBqSAE2RQBQg0Tx?q=80&s=1280x180&t=outside&f=webp)

### 정리

- **사용**: 분석 / BI / [DW](https://bomwo.cc/posts/Datawarehouse/) 

- **운영**: RDS와 동

- **보안**: IAM, VPC, KMS, SSL (RDS와 동)

- **신뢰**: 자동 회복, 스냅샷으로 리전끼리 복사

- **성능**: 압축, 다른 data warehouse보다 10배 빠름

- **비용**: 프로비전한 노드만큼 지불

- **vs Athena**: 빠름, join 가능, 병렬로 처리한 후 결과를 모음

## 8. Glue

데이터를 추출, 변환, 로드(DW로 데이터를 보냄)하는 관리형 서비리스 서비스(ETL)

- Glue Data Catalog - AWS의 모든 자료형을 가지고 있는 메타데이터

![Image](https://upload.cafenono.com/image/slashpageHome/20240820/134125_F8HdoseSTYiYcDrMmU?q=80&s=1280x180&t=outside&f=webp)

## 9. Neptune

관리형 [그래프 데이터베이스](https://www.oracle.com/kr/big-data/what-is-graph-database/)

- 3개의 AZ에 최대 15개의 읽기 복제

- KMS, HTTPS 암호화

- **운영**: RDS와 비슷

- **보안**: IAM, VPC, KMS, SSL (RDS와 동) + IAM 인증

- **신뢰**: 멀티 AZ, 클러스터

- **성능**: 좋음

- **비용**:** **프로비전한 노드 당 지불

## 10. ElasticSearch / OpenSearch

> OpenSearch로 이름 바꿨다.

- 인덱스가 완전히 일치해야 결과를 반환하는 DynamoDB 등과는 다르게

- 아무 필드나 검색할 수 있고, 부분 검색도 가능하다.

- 빅데이터 어플리케이션에서 주로 쓰며, 다른 AWS 서비스와 통합이 가능하다.

### 정리

- **사용**: 검색 / 인덱싱

- **운영**: RDS와 비슷

- **보안**: Cognito, IAM, KMS, SSL, VPC

- **신뢰**: 멀티 AZ, 클러스터

- **성능**: 좋음

- **비용**:** **프로비전한 노드 당 지불

- **ELK Stack**

    - **ElasticSearch** (Search & Analysis)

    - **Logstash** (Log Ingestion)

    - **Kibana** (Visualization)

For the site tree, see the [root Markdown](https://slashpage.com/kaonmir.md).
