1. 데이터베이스란?
01. 정의
- 사전적 정의
- 어떤 특정한 조직에서 여러 명의 사용자 또는 응용 시스템들이 공유하고 동시에 접근하여 사용할 수 있도록 구조적으로 통합하여 저장한 운영 데이터의 집합
- 의미
- 공유 데이터 (shared data)
- 어느 하나의 프로그램에 종속된 것이 아니라, 다수의 사용자나 프로그램이 공동으로 소유하고 유지하는 개념
- 통합된 데이터 (integrated data)
- 분산된 데이터들을 한 곳으로 모아 중복을 최소화하기 위한 개념
- 일관성 유지와 관리 비용 감소의 장점이 존재
- 저장된 데이터 (stored data)
- 컴퓨터가 접근 가능한 매체에 저장된 디지털 데이터
- 운영 데이터 (operational data)
- 조직 고유 업무를 수행하기 위하여 지속적으로 유지해야 하는 데이터를 의미
- 시스템을 운영하기 위해 필요한 데이터
- 공유 데이터 (shared data)
02. 스토리지 vs. 데이터베이스
- Storage
- 컴퓨터에 data를 저장하는 저장소의 역할을 수행하는 부품
- 비휘발성 기억장치
- 연결 방식에 따라 DAS, NAS, SAN 등으로 구분됨
- 저장 데이터 종류
- 텍스트, 이미지, 영상 등의 다양한 종류의 데이터
- Database
- 체계적인 데이터의 모음
- 데이터 저장 및 조작을 지원함
→ storage에 저장된 데이터를 더욱 사용하기 쉽게 만들어 주는 것으로 이해할 수 있음 - 저장 데이터 종류
- Id, record, 거래정보와 같은 구조적 / 반구조적 데이터
- 차이점 요약
- 스토리지 → 파일을 저장
- DB → column, row로 구성되는 2차원 데이터를 저장
⇒ storage는 파일 형태가 되면 무엇이든 저장할 수 있으나,
DB에 저장하기 위해서는 앞단 또는 뒷단에서의 가공이 필요함.
2. AWS 데이터베이스 종류
01. RDS
- Amazon Relational Database Service
- RDS는 클라우드 환경에서 마치 온 프레미스(on-premises) 환경처럼 제약없이 원하는 데이터베이스 엔진을 쓰고 싶을 때 사용할 수 있는 AWS의 대표적인 관계형 데이터베이스 서비스
- 장점
- 다양한 RDBSM 지원 (MySQL, PostgreSQL, Oracle, MariaDB …)
→ 마이그레이션 리스크가 적음 - AWS가 알아서 서버 자원을 provision해줌
- OS patch, data backup, monitoring …
→ 유지 보수 비용 절감 가능
- OS patch, data backup, monitoring …
- 수평 확장 가능
- read replica 구성, HA를 위한 multi-AZ master-slave 구성에 용이
- 다양한 RDBSM 지원 (MySQL, PostgreSQL, Oracle, MariaDB …)
- 단점
- 해당 DB 엔진에서 허용하는 포트 이외의 다른 포트로의 포트포워딩 불가
- DB가 설치된 EC2 인스턴스에 SSH로 접속 불가
02. DynamoDB
- 완전 관리형(fully managed) 서버리스(serverless) NoSQL 데이터베이스 서비스
- 장점
- 기존 관계형 데이터베이스에 저장하기 적합하지 않는 비정형화된 데이터를 키/값의 형태로 저장할 수 있음
- 저장된 데이터의 용량에 맞춰 알아서 무한대로 수평확장함
- 인 메모리 캐시를 활용하면 성능을 최대치로 끌어올릴 수 있음 (DAX)
03. Aurora
- 클라우드에 최적화되어 있는 RDS 엔진
- 장점
- 기존 RDS 엔진보다 3~5배에 달하는 성능 우수성을 가짐
- 확장성과 가용성이 우수함
- 단점
- 기존 RDS 엔진보다 20%정도 더 비쌈
- PostgreSQL, MySQL과만 호환됨
→ AWS Database Migration Service를 사용하면 어느 정도 리스크를 최소화할 수 있음
04. ETC.
- Elastic Cache
- Database Migration Service
- 모든 Serivce 한눈에 보기
3. Q&A
01. 용어 정리
- 데이터
- 현실 세계에서 사건이나 사물의 특징을 관할하거나 측정하여 기술하는 가공되지 않은 사실이나 값
- 정보
- 의미있고 쓸모 있는 내용으로 가공하여 체계적으로 조직한 데이터
- DBMS
- 데이터베이스 관리 시스템(Database Management System)의 약자
- 데이터베이스에 접근하여 데이터를 조작할 수 있도록 도와줌
→ 사용자들은 DB에 직접 접근하여 데이터를 다루는 것이 아니라,DBMS의 도움으로 데이터를 다루고 변화 시킬 수 있는 것!
- 컴퓨터에 저장된 대량의 데이터를 체계적으로 관리하고 사용자가 원하는 정보를 효과적으로 검색하도록 하는 기능을 제공
- 종류
- RDBMS (관계형 DBMS)
- 테이블을 기반으로 하는 관계 데이터 모델을 사용
→ RDBMS는 하나 이상의 테이블로 구성되며,모든 데이터가 테이블에 저장됨
- 테이블을 기반으로 하는 관계 데이터 모델을 사용
- SQL (Structured Query Language)
- 스키마 (Schema)
- 데이터베이스에서 가져오는 데이터 구조
- (데이터 구조와 그 제약조건에 대한 명세를 기술한 것)
02. DBMS를 사용하는 이유
- DBMS는 파일시스템의 문제점을 해결하기 위해 만들어짐
- → DBMS의 특징이 곧 파일 시스템이 단점이 됨
- 데이터의 독립성
- 물리적 독립성
- DB 사이즈를 늘리거나, 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없음
- 파일 시스템은 응용 프로그램의 기능 확장을 위해 파일의 구조를 재조직해야 함
- 논리적 독립성
- 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있음
- 파일 시스템에서는 파일의 구조가 응용 프로그램에 반영되어 있기 때문에 파일의 구조가 바뀌면 모든 응용 프로그램을 수정해야 함
- 물리적 독립성
- 데이터의 무결성
- 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터 무결성을 구현함
ex
입력 조건에 맞지 않는 입력 값 저장 불가 기능- 파일 시스템은 응용 프로그램 별로 제약 조건을 별도로 처리하므로, 무결성을 유지하기 어려움
- 데이터의 보안성
- 허가된 사용자들만 데이터베이스나 내부 자원에 접근할 수 있도록 계정 관리, 또는 접근 권한을 설정함으로써 모든 데이터 보안을 구현할 수 있음
- 파일 시스템은 파일 단위로 권한을 부여할 수 있어, 사용자별 세밀한 접근 제어가 어려움
- 데이터의 일관성
- 연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성이 배제됨
- 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수가 배제됨
- 파일 시스템에서는 중복된 데이터 변경이 어려워 중복 데이터 간의 불일치가 발생할 수 있음
- 데이터의 중복 최소화
- 데이터를 통합하여 관리함으로써 데이터 중복 문제 해결
03. Cloud RDS 구축 시, 이중화가 필요한 이유
- 장애(Failover) 또는 재해 시 빠른 서비스 재개를 위해
- Database의 하드웨어, 미들웨어 등 다양한 지점에서의 오류 발생 시,
사용자가 이를 인지하지 못하도록 하기 위함 - 서비스의 일시적인 중단(다운타임)이 발생하더라도, 신속하게 대응하기 위함
- Database의 하드웨어, 미들웨어 등 다양한 지점에서의 오류 발생 시,
- 부하 분산을 통한 원할한 서비스 성능 보장을 위해
- 하나의 기기에서 일정량 이상의 사용자 트랜잭션을 처리하는 경우, 응답시간이 느려질 수 있음
- 사용 트랜잭션의 패턴과 사용량 등을 분석하여 부하를 분산, 효율적 업무 처리가 가능하도록 하기 위함
- 로드벨런싱은 구현하고자 하는 지점에 따라 미들웨어, 네트워크, OS 등 다양한 지점에서 구현 가능
04. 각 RDBMS의 특징
- MySQL
- 가장 많이 사용되는 오픈 소스 RDBMS
- PHP, Java 등의 언어와 함께 사용됨
- 대규모 웹 애플리케이션에서 사용되는 것이 일반적임
- Oracle
- 대규모 기업에서 많이 사용되는 상용 RDBMS
- 높은 안정성과 확장성을 제공
- 대용량 데이터를 다루는 데에 적합
- SQL Server
- Microsoft에서 개발한 RDBMS
- Windows 환경에서 많이 사용됨
- 비교적 가격이 높게 측정되어 있음
- PostgreSQL
- 오픈 소스 RDBMS
- MySQL과 유사한 기능을 제공하지만 더 많은 기능을 갖추고 있음
- 대용량 데이터 처리에 적합
- SQLite
- 서버 없이 로컬 컴퓨터에서 작동하는 RDBMS
- 모바일 디바이스에서 주로 사용됨
728x90
'Study > AWS' 카테고리의 다른 글
[AWS] Lambda를 활용해 CI/CD trigger 만들기 (1) | 2024.04.22 |
---|---|
[AWS] CloudWatch 지표에 대한 레퍼런스 정리 (0) | 2024.04.01 |
[AWS] AWS 기본 개념 정리 (0) | 2024.04.01 |
[AWS] 클라우드 보안 (1) | 2024.01.22 |
[AWS] Petclinic 3Tier 연동 방법 (0) | 2024.01.17 |
댓글