AWS가 제공하는 데이터베이스 서비스를 살펴보기에 앞서 데이터베이스가 무엇이지 이해해야한다
데이터베이스와 DBMS
데이터와 데이터베이스
데이터는 어떤 이론을 세우는 데 기초가 되는 자료로, 문자와 숫자, 그림, 영상 등의 형태로 된 단위이다
데이터는 원시적인 자료에 불가할 뿐 특정한 의미와 가치는 없음
=> 이런 데이터를 특정 목적에 따라 가공하고 이론을 세워 의미와 가치를 부여한 결과를 정보라고 한다
요즘 같이 데이터가 홍수처럼 넘쳐나는 세상 속에서 유의미하고 가치 있는 데이터만 추출하여 어떤 정보를 도출하는 것은 굉장히 중요한 일이다
=> 그러기 위해서는 원천 데이터를 모아 두는 것이 필요한데, 이때 데이터를 하나에 모아두는 것을 데이터베이스라고 하며, 데이터베이스는 간단히 데이터를 모아 두는 집합이라고 정의할 수 있다
=> 데이터베이스에서 데이터를 검색하고 추출하려면 데이터베이스를 관리하는 별도의 시스템이 필요한데, 이렇게 데이터베이스를 관리하는 시스템을 DBMS라고 하며, DBMS는 데이터에 대한 사용자의 논리적 명령을 해석하고 필요한 데이터를 찾아 주는 시스템이라고 정의할 수 있다!
데이터베이스 모델 유형
데이터베이스는 구조, 운영, 저장 방식에 따라 계층형, 네트워크형, 관계형, 객체 지향형 모델 유형으로 구분할 수 있다
1. 계층형 데이터베이스 모델
계층형 데이터베이스 모델은 트리 구조를 기반으로 하며, 데이터는 1:N으로 상하 종속 관계 구조로 되어 있다
=> 데이터에 빠르게 접근이 가능하지만, 구조 변경에 대한 유연성이 부족하다는 단점이 있다
2. 네트워크형 데이터베이스 모델
네트워크형 데이터베이스 모델은 계층형 데이터베이스의 정형화된 구조를 해결하기 위해 1:N 뿐 아니라 1:1, N:N 형태의 구조를 가질 수 있다
=> 하위 개체는 다수의 상위 개체를 가질 수 있어 형태가 좀 더 자유롭다
(다만 다양한 개체 간 연결에 따라 복잡성은 높아지기 때문에 데이터베이스 전반의 구조를 이해하는 데 어려움이 따를 수 있다)
3. 관계형 데이터베이스 모델
관계형 데이터베이스 모델은 데이터의 논리적 관계를 초점으로 특정 개체 정보를 이용하여 열과 행으로 된 테이블이라는 최소 단위로 구성된다
=> 앞서 계층형과 네트워크형 데이터베이스 모델과 다르게 데이터가 변화하면 쉽게 적용할 수 있다는 장점이 있음
(하지만 시스템 자원을 많이 차지해서 상대적으로 느리다는 단점이 있음)
그래도 하드웨어가 발전하면서 느린 동작은 점점 해소되는 편임!
관계형 DBMS는 현재 가장 많이 사용하는 데이터베이스 모델이며, SQL이라는 프로그래밍 언어를 사용하여 손쉽게 데이터베이스를 읽고 쓰고 해석한다
4. 객체 지향형 데이터베이스 모델
객체 지향형 데이터베이스 모델은 모든 데이터를 테이블 형태로 구성하는 관계형 데이터베이스 모델과 다르게 객체라는 형태의 최소 단위로 표현한다
=> 객체 집합을 정의하고 연결 구조를 확립하여 객체 구조도 즉각적으로 표현할 수 있으며, 사용자 정의 데이터, 멀티미디어등 비정형 데이터도 지원함
하지만, 보편적으로 사용하는 관계형 데이터베이스의 호환성 문제와 복잡성에 따른 문제도 있다
(특수한 전문 분야가 아니면 잘 쓰지 X)
관계형 DBMS의 SQL 언어
앞서 언급했듯이 현재 가장 보편적으로 사용하는 데이터베이스 모델은 관계형 DBMS이다
여기에 저장된 데이터와 통신할 때 사용하는 SQL 프로그래밍 언어를 좀 더 알아보자
SQL 명령은 데이터 정의, 데이터 조작, 데이터 제어로 분류하며, 다음과 같이 정리할 수 있다
SQL 데이터 정의
DBMS와 연계되는 다양한 응용 프로그램에서 요구하는 데이터 형식과 구조를 정의하는 기능으로, 테이블이나 관계의 구조를 정의하는 목적에 따라
CREATE : 테이블을 구성하고 속성에 대한 제약을 정의하는 명령어
ALTER : 생성된 테이블 속성을 정의하고 변경하는 명령어
DROP : 생성된 테이블을 삭제하는 명령어
등의 명령어가 있다!
SQL 데이터 조작
데이터 검색, 삽입, 삭제 등을 처리하는 인터페이스를 제공하는 기능으로
SELECT : 테이블에 있는 정보를 가져오는 명령어
INSERT : 테이블에 있는 새로운 데이터를 삽입하는 명렁어
UPDATE : 테이블에 있는 데이터를 수정하는 명령어
DELETE : 테이블에 있는 기존 데이터를 삭제하는 명령어
등 명령어가 있다!
SQL 데이터 제어
데이터 무결성 유지와 접근 권한 및 다수의 사용자 데이터베이스에 정확하게 접근하는 기능으로
GRANT : 테이블에 대한 권한을 허용하는 명령어
DENY : 테이블에 대한 권한을 차단하는 명령어
REVOKE : 테이블에 대한 권한을 회수하는 명령어
등 명령어가 있다!
DBMS 종류
다양한 회사에서 만든 DBMS 제품들이 있는데, 대표적으로 Oracle, MySQL, MS-SQL, PostgreSQL 등이 있다
=> DBMS 인기도에 따라 순위를 매기는 랭킹 사이트에서 최신 DBMS 트렌드를 확인할 수 있다
AWS 데이터베이스 서비스
AWS에서는 사용자 요구 사항에 따라 관계형 데이터베이스 서비스, 키-값 데이터베이스, 인-메모리 데이터베이스 등 다양한 데이터베이스 서비스를 제공한다
데이터베이스 유형 | AWS 데이터베이스 서비스 | 주요 특징 | 사용 사례 |
관계형 | Amazon RDS, Amazon Aurora |
참조 무결성, 안전한 트랜잭션 수행 | ERP, CRM, 전자상거래 |
키-값 | Amazon DynamoDB | 빠른 응답 시간, 처리량 | 대규모 트레픽의 웹 서비스, 게임 APP |
문서형 | Amazon DocumentDB | 각종 문서 저장 인덱싱 | 콘텐츠 관리, 카탈로그, 프로필 |
인-메모리 | Amazon ElasticCache | 메모리 저장, 1밀리초 응답 시간 | 캐싱, 세션 관리 |
그래프형 | Amazon Neptune | 쉽고 빠른 데이터 관계 생성 및 탐색 | 소셜 네트워킹, 추천 엔진 |
시계열 | Amazon Timestream | 순차적 데이터 수집,저장,처리 | DevOps, 산업용 텔레메트리 |
원장 | Amazon QLDB | 모든 변경에 대한 불변, 검증 기록 유지 | 레코드 시스템, 은행 거래 |
Amazon RDS
Amazon RDS는 클라우드 환경에서 관계형 데이터베이스를 간편하게 설정하고 운영할 수 있는 서비스이다
원하는 성능 요구에 따라 다양한 데이터베이스 인스턴스 유형을 선택할 수 있음
Amazon Aurora, PostgreSQL, MariaDB, Oracle Database, SQL Server 등 관계형 데이터베이스 엔진은 선택할 수 있음
Amazon RDS는 관계형 데이터베이스 엔진을 사용하기 때문에 테이블 구조에 행과 열로 구성되며 SQL 언어 기반으로 데이터베이스를 손쉽게 제어할 수 있다
=> 사용 편의성이 높고, 모니터링 및 지표와 이벤트 알람을 이용하여 높은 관리 효율성을 보장하며, 비용도 상대적으로 매우 저렴하다
또한, 간편한 복제 기능을 이용하여 워크로드와 가용성과 확장성을 확보할 수 있음
Amazon RDS 데이터 복제
Amazon RDS의 데이터베이스를 복제하는 방법으로 Multi-AZ와 Read Replica가 있다
=> 이런 복제 기능으로 데이터베이스에 있는 데이터를 복제하여 Primary DB의 데이터를 동기화 할 수 있다
Multi-AZ 복제 방식
Multi-AZ 복제 방식은 기본적으로 액티브-스탠바이(active-standby) 형태로 동작한다
=> Primary DB가 액티브(활성) 상태이며, 보조의 Standby Replica가 스탠바이(대기) 상태이다
만약, Primary DB에 문제가 발생하면 Standby Replica를 Primary DB로 승격하여 동적으로 유지함!
이런 Multi-AZ 복제 방식은 데이터가 서로 일관되게 일치하는 데이터 정합성을 유지하는 것이 가장 중요하다
이를 위해 데이터에 변화가 일어나면 원본 데이터를 복제해서 전달하여 동기화하는 동기식 복제로 다른 가용 영역에 있는 데이터베이스와 데이터를 동기화 한다!
Read Replica 복제 방식
Read Replica 복제 방식은 원본 데이터를 Primary DB에 두고, 읽기 전용의 복제 데이터를 Read Replica 데이터베이스에 생성하여 유지한다
=> 읽기 전용 데이터가 있는 Read Replica 데이터베이스는 확장이 가능하며, 데이터 읽기 처리 속도를 높일 수 있다
Amazon RDS는 최대 다섯 개의 Read Replica 데이터베이스를 복제할 수 있으며, 다른 리전까지 Read Replica 데이터베이스를 가질 수 있다
Multi-AZ는 동기식 복제 방식을 따르는 고가용성 유지가 목적이라면, Read Replica는 읽기 전용의 복제를 생성하여 성능을 확장하는 것이 목적이다
Amazon Aurora
AWS 관계형 데이터베이스 서비스는 Amazon RDS를 이용하여 MySQL, PostgreSQL, Oracle 등 데이터베이스 엔진을 주로 사용하다 Amazon Aurora라는 AWS 자체의 클라우드 데이터베이스 엔진을 개발했다
Amazon Aurora는 엔터프라이즈 수준의 관계형 데이터베이스 엔진으로 안정적이고 고성능의 데이터베이스 처리가 가능하다
또한, 오픈 소스를 기반으로 다른 관계형 데이터베이스와 호환성이 우수하며, 비용 효율이 높다는 장점이 있다
이런 Amazon Aurora 데이터베이스 엔진은 Amazon RDS에서 관리하며 프로비저닝, 패치, 백업, 복원, 장애 복구 등 작업을 수행한다
(Amazon RDS에 엔진을 올려 사용)
Amazon Aurora 복제 방식
Amazon Aurora 데이터베이스 엔진은 다른 관계형 데이터베이스 엔진보다 스토리지 내결함성이 우수하다
예를 들어 MySQL 데이터베이스 엔진은 데이터베이스 인스턴스에 EBS 스토리지가 연결되어 서로 다른 가용 영역으로 동기식 복제가 된다
반면 Amazon Aurora 데이터베이스 엔진은 공유 스토리지를 통해 최소 세 개의 가용 영역에서 두개 씩 총 여섯 개의 복제 데이터를 가지고 있어 더욱 안정적으로 서비스할 수 있다!
Amazon DynamoDB
Amazon DynamoDB는 비관계형 데이터베이스로, 키-값(key-value) 메소드를 사용하는 키-값 데이터베이스이다
여기에서 비관계형 데이터베이스는 관계형 데이터베이스와 다르게 데이터가 서로 연결되지 않는 개별 형태로 저장하여 복잡하고 구조화되지 않은 데이터 유형에 적합한 데이터베이스이다!
앞서 관계형 데이터베이스가 SQL 언어를 사용했다면, Amazon DynamoDB는 비관계형 데이터베이스로 SQL 문을 사용하지 않는다
(이런 측면에서 NoSQL 데이터베이스라고도 한다)
Amazon DynamoDB의 데이터베이스 구조는 비관계형 데이터베이스 유형이다
=> 키를 데이터의 고유한 식별자로 사용하고, 값은 유형의 제한이 없어 단순한 개체(entity)뿐 아니라 복잡한 집합체까지 무엇이든 가능한 비정형 데이터(이미지, 오디오 등)를 입력할 수 있다
(이런 키와 값을 쌍으로 집합해서 저장함)
키-값 데이터베이스는 데이터베이스 구조가 단순하여 빠른 처리가 가능하다
=> 이런 특성에 따라 Amazon DynamoDB는 대규모 환경에서도 일관되게 10밀리초 미만의 처리 성능을 제공한다
그리고, Amazon DynamoDB는 별도 서버를 구축하지 않고 운영되는 서버리스(serverless)로 동작하기 때문에 서버에 대한 프로비저닝, 패치, 소프트웨어 설치가 필요 없고 용량에 따라 테이블을 자동으로 확장 및 축소해서 관리 편의성이 높다!
Amazon ElastiCache
Amazon ElastiCache는 인-메모리 데이터베이스로, 데이터를 메모리에 저장하는 형태로 동작한다
데이터가 메모리상에 위치하여 데이터를 빠르게 처리할 수 있다는 장점이 있지만, 데이터 양이 많다면 데이터 처리가 느려질 수 있기 때문에 대용량 데이터에는 적합하지 않고 주로 데이터를 빠르게 자주 접근해야 할 때 사용
이런 Amazon ElastiCache는 Memcached 방식과 Redis 방식 두 가지로 구분된다
Amazon ElastiCache for Memcached
Memcached는 보편적으로 사용하는 메모리 객체 캐싱 시스템으로, 인-메모리 데이터베이스 서비스이다
=> Amazon ElastiCache for Memchaced는 Memcached와 호환하여 자주 접근할 데이터를 메모리에 놓고 빠르게 처리 가능
Amazon ElastiCache for Redis
Redis는 데이터베이스, 캐시, 메시지 브로커 및 대기열 용도로 사용되는 인-메모리 데이터베이스 서비스이다
Amazon ElastiCache for Redis는 오픈 소스인 Redis 기반으로 구축되고 Redis API와 호환하여 개방형 Redis 데이터 형식으로 저장한다
=> 실시간 애플리케이션을 지원할 수 있도록 1밀리초 미만의 지연으로 빠른 데이터를 처리할 수 있음
'Infra > AWS 교과서' 카테고리의 다른 글
[AWS 교과서] 7장 - AWS 고급 네트워킹 서비스(1) (0) | 2024.01.18 |
---|---|
[AWS 교과서] 6장 - AWS 데이터베이스 서비스(2) (0) | 2024.01.16 |
[AWS 교과서] 5장 - AWS 스토리지 서비스(2) (1) | 2024.01.15 |
[AWS 교과서] 5장 - AWS 스토리지 서비스(1) (3) | 2024.01.13 |
[AWS 교과서] 4장 - AWS 부하분산 서비스(3) (1) | 2024.01.12 |