데이터베이스
데이터베이스는 구조화된 정보 또는 데이터의 조직화된 모음으로, DBMS(Database Management System)라 하는 소프트웨어를 사용하여 저장, 검색 및 제어.
데이터베이스에는 단어, 숫자, 이미지, 비디오 및 파일을 포함한 모든 유형의 데이터가 포함될 수 있음
Relational Database (관계형 데이터베이스)
- 구조화된 데이터를 저장
- 데이터를 행과 열이 있는 테이블 형태로 저장 (열에는 데이터 속성이 포함되고 행에는 데이터 값)
- 엄격한 스키마
- SQL을 사용하여 데이터 조작
- MySQL, PostgreSQL 등이 있음
*SQL(Structured Query Language, 구조적 쿼리 언어)
: 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
Non-Relational Database (비관계형 데이터베이스)
- 비정형 데이터를 저장
- 스키마가 없음
- 대량의 분산 데이터를 저장 (큰 데이터 볼륨, 짧은 지연 시간과 유연한 데이터 모델이 필요한 애플리케이션에 특히 최적화됨)
- mongoDB, redis 등이 있음
RDS(Relational Database Service)
DB 관리하는 방법으로 여러 개가 있는데,
On-Premise
: 사용자가 직접 서버를 구축해서 DB 관리
(유연성 높지만 사용자가 모든 것을 다 관리해야 하기에 어렵고 비용이 많이 든다는 단점)
AWS EC2
: AWS에서 제공하는 EC2 인스턴스 위에 사용자가 직접 DB를 설치하고 관리
(서버 유지, 관리는 AWS가 / 사용자는 DB 관리)
AWS RDS
: AWS의 완전관리형 DB 서비스
(대부분의 데이터베이스 관리 작업을 알아서 해 줌)
-> AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치하고, 운영 및 확장할 수 있는 웹 서비스
RDS의 장점
- 간편한 관리
: 인프라를 프로비저닝하거나 소프트웨어를 유지 관리할 필요 없이 비효율적이고 시간 소모적인 데이터베이스 관리 테스크를 제거할 수 있음
- 가용성 및 안정성
- 확장성
- 비용 효율성
Multi AZ
: Amazon RDS 다중 AZ 배포에서 Amazon RDS는 자동으로 프라이머리 데이터베이스 DB 인스턴스를 생성하고 동시에 다른 AZ의 인스턴스에 데이터를 복제
- 데이터베이스의 복사본을 다른 가용 영역(Availability Zone)에 자동으로 생성하고 동기화
- 대기 데이터베이스(Standby) 역할
- 장애 감지 시 자동으로 대기 인스턴스로 대체

Read Replica
: 읽기 전용 복제본 -> 읽기(Read) 쿼리의 성능 향상과 분산 처리
(데이터베이스의 읽기 기능을 향상시키기 위해 사용)
- 비동기적으로 복제 진행
- Read Replica 인스턴스를 이용한 Scale out을 통해 읽기 중심의 데이터베이스 워크로드 처리량 향상

DynamoDB
SQL
: 구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
- 관계형 데이터베이스에서 데이터 저장, 조회, 수정, 삭제
- DB에 정해진 구조(Schema)에 따라 테이블(행과 열이 있는 표 형태)에 저장
- Oracle, MySQL, PostgreSQL
NO-SQL
: 특정 데이터 모델을 위해 특별히 구축되었으며 현대적 애플리케이션에 맞게 쉽게 확장할 수 있는 유연한 스키마에 데이터를 저장
- 비관계형 데이터베이스에서 데이터 저장, 조회, 수정, 삭제
- 정형화되지 않은 구조 사용
- 가용성과 확장성이 높고, 고성능에 최적화
- instagram, facebook 등에서 아용
- MongoDB, AWS DynamoDB
AWS DynamoDb
: 서버리스 NoSQL 데이터베이스 서비스 / 사용한 만큼만 비용을 지불하면 DynamoDB가 0으로 규모 조정되고 콜드 스타트, 버전 업그레이드, 유지 관리 기간, 패치 적용, 가동 중단이 동반되는 유지 관리가 없음
- 완전관리형: 장비 운영부터 데이터베이스 솔루션 설치 및 운영까지 AWS에서 모두 담당
- 높은 가용성과 내구성
- 대부분 10ms 내에 데이터를 읽고 처리할 만큼 속도가 매우 빠름
- 모든 데이터가 SSD에 저장되고, AWS 리전의 여러 가용 영역에 걸쳐 자동 복제됨(내구성이 좋음)
- Auto-Scaling
AWS DynamoDB 핵심 구성 요소
- 테이블(Tables)
- 항목(Items)
- 속성(Attributes)
Partition Key
- 테이블에서 무조건 하나만 존재해야 하는 값
- 파티션을 결정
- Dynamodb는 테이블의 크기가 10G를 초과하면 데이터에 대한 Partition을 나눔
- 같은 Partition Key를 가지면 같은 Partition에 저장되는 것
Sort Key
- Partition Key로 저장할 파티션 공간을 결정하고 나서, 같은 Partition이라면 Sort Key 값을 기준으로 정렬되어 저장됨
- 일치, 부등호, 포함 등의 범위를 지정할 수 있는 검색을 지원