데이터베이스란?
데이터베이스는 구조화된 정보 또는 데이터의 조직화된 모음으로 DBMS (Database Management System)에 의해서 제어된다
Relational Database
일반적으로 우리가 배워왔던 Mysql, Oracle, Mssql 같은 고전적인 데이터베이스를 관계형 데이터베이스이다.
- 구조화된 데이터를 저장
- 테이블 형태
- 엄격한 스키마
- SQL(Structured Query Language)을 사용해서 데이터 조작
- 트랜잭션(전부 아니면 무): 전체 트랜잭션이 하나의 단위로 기록. 실패 시 전체 롤백
- 정규화: DB설계 시 중복을 최소화해서 구조화하는 프로세스
장점
- 데이터의 성능이 일반적으로 좋아 정렬, 탐색, 분류가 빠름
- 신뢰성이 높아 데이터의 무결성을 보장
- 정규화에 따른 갱신 비용을 최소화
단점
- 기존에 작성된 스키마를 수정하기 어려움
- 데이터베이스의 부하를 분석하기 어려움
- 빅데이터를 처리하는데 매우 비효율적임.
Non-Relational Database
- 비관계형 데이터 베이스에서 데이터 저장, 조회, 수정, 삭제
- 정형화되지 않은 구조 사용, 스키마 X
- 가용성과 확장성이 높고 고성능에 최적화
- Instagram, faceBook 등에서 사용
- 대량의 분산 데이터 저장
- 다향한 형태의 데이터 빠르게 처리
- ex) MongoDB, AWS DynamoDB
AWS RDS (Relational Database Service)
AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스이다.
- On-Premise: 사용자가 직접 서버를 구축해서 DB 관리
- AWS EC2: AWS에서 제공하는 EC2 인스턴스 위에 사용자가 직접 DB를 설치하고 관리
- AWS RDS: AWS의 완전관리형 DB 서비스
RDS의 장점
- 간편한 관리
- 가용성(Availability) 및 안정성(Durability)
- 자동 백업 vs. 스냅샷
- Multi AZs
- 보안성(Security)
- 확장성(Scalability)
- Read Replica
- 비용 효율성(Cost Effective)
Multi AZ
- 데이터베이스의 복사본을 다른 가용 영역(Availability Zone)에 자동으로 생성하고 동기화
- 대기 데이터베이스(Standby) 역할
- 장애 감지 시 자동으로 대기 인스턴스로 대체
Read Replica
- 읽기 전용 복제본 -> 읽기(Read) 쿼리의 성능 향상과 분산 처리 비동기적으로 복제 진행
- Read Replica 인스턴스를 이용한 Scale Out을 통해 읽기 중심의 데이터베이스 워크로드 처리량 향상
AWS DynamoDB
모든 규모에서 10밀리초 미만의 성능을 제공하는 서버리스 NoSQL 완전관리형 데이터베이스
- 서버리스 NO-SQL
- 완전관리형 : 장비 운영부터 데이터베이스 솔루션 설치 및 운영까지 AWS에서 모두 담당
- 높은 가용성과 내구성
- 대부분 10ms 내에 데이터를 읽고 처리할 만큼 속도가 매우 빠름
- 모든 데이터가 SSD에 저장되고 AWS 리전의 여러 가용 영역에 걸쳐 자동 복제
- Auto-Scaling
: change the read and write capacity of your table based on request volume
구성 요소
Partition Key
- RDBMS에서 Primary Key와 같은 역할
- 테이블에 무조건 하나만 존재해야하는 값
- DynamoDB는 테이블의 크기가 10G를 초과하면 데이터에 대한 Partition을 나눈다
- 같은 Partition Key를 가지면 같은 Partition에 저장되는 것
Sort Key
- Partition Key로 저장할 파티션 공간을 결정하고 나서, 같은 Partition이라면 Sort Key 값을 기준으로 정렬되어 저장됨
- 일치, 부등호, 포함 등의 범위를 지정할 수 있는 검색을 지원한다
- Partion Key는 일치검색(Equal)만 지원