데이터베이스라는 것은 데이터를 쿼리, 관리, 인덱싱 할 수 있는것을 뜻하며 정확한 기능은 다음과 같다.
또한 데이터베이스라는 용어 자체는 물리적 저장소 까지는 포함하지 않는다.
1️⃣ DBMS(Database Management System)의 기본 정의
✔ DBMS는 데이터를 저장, 관리, 검색, 수정하는 소프트웨어 시스템입니다.
✔ 일반적으로 다음 기능을 수행할 수 있어야 합니다.
기능설명MySQL 지원 여부
쿼리(Query) | 데이터를 검색 및 수정할 수 있어야 함 (SELECT, INSERT 등) | ✅ 지원 |
관리(Management) | 사용자 권한, 트랜잭션 관리, 데이터 무결성 보장 | ✅ 지원 |
인덱싱(Indexing) | 데이터를 효율적으로 검색할 수 있도록 최적화 | ✅ 지원 |
✅ 즉, MySQL도 쿼리, 관리, 인덱싱 기능을 모두 제공하는 DBMS입니다.
다만 데이터베이스마다 스토리지 계층(데이터를 관리하는 계층)이 있는데 DBMS마다 계층 구조가 조금씩 다르다. 예를들어 MySQL은 여러 스토리지 엔진을 사용하고 PostgreSQL은 자체 내장 스토리지 엔진을 사용한다.
여기서 스토리지 계층은 데이터를 저장, 인덱싱 해주는 스토리지 엔진뿐만 아니라 물리적 저장소까지 포함하여 의미한다. 따라서 말그대로 저장 계층 구조를 뜻함
1️⃣ 스토리지 계층(Storage Layer)란?
📌 스토리지 계층 = 데이터 저장과 관련된 모든 요소를 포함하는 넓은 개념
📍 스토리지 계층은 데이터베이스가 데이터를 물리적으로 저장하고 관리하는 전체적인 구조를 의미합니다.
📍 스토리지 엔진 + 파일 시스템 + 물리적 저장소(EBS, SSD 등)까지 포함하는 개념
🔹 스토리지 계층의 구성 요소
구성 요소설명예시
스토리지 엔진 | DBMS 내부에서 데이터를 저장하고 관리 | InnoDB, MyISAM, RocksDB |
파일 시스템 | OS가 데이터 파일을 관리하는 방식 | Ext4, NTFS, XFS |
물리적 저장소 | 데이터를 실제 저장하는 하드웨어 | HDD, SSD, AWS EBS |
💡 즉, 스토리지 계층은 단순히 "DB 내부 구조"가 아니라, 데이터가 저장되는 전체적인 구조까지 포함하는 개념입니다.
따라서 같은 스토리지 엔진을 사용하더라도 AWS를 사용한 EBS나 로컬하드인 SSD등을 사용하면 계층 구조가 다르다고 볼 수 있음
AWS RDS로 예를 들면
3️⃣ RDS에서의 스토리지 계층 의미
✅ RDS(MySQL, PostgreSQL)는 AWS의 EBS를 물리적 저장소로 사용하지만, 데이터베이스 엔진마다 데이터를 저장하는 방식이 다름.
📍 RDS의 MySQL:
- 물리적 저장소는 AWS의 EBS
- 논리적 저장소는 InnoDB 스토리지 엔진이 관리
📍 RDS의 PostgreSQL:
- 물리적 저장소는 AWS의 EBS
- 논리적 저장소는 PostgreSQL의 Heap Storage & MVCC 관리
💡 즉, 같은 AWS EBS를 물리적 저장소로 사용하더라도, MySQL과 PostgreSQL의 스토리지 계층은 서로 다르게 동작합니다.
여기서 RDS는 AWS에서 제공하는 관리형 데이터베이스 서비스인데 기존 MySQL, PostgreSQL 등의 데이터베이스를 사용하면서 조금 더 인프라적인 요소(백업용 스냅샷, 모니터링등)를 가미하여 만든 확장형 데이터베이스임
🔹 왜 "RDS"라고 부를까?
- RDS는 단순히 MySQL을 사용한다고 해서 "MySQL"로 불리는 것이 아니라, AWS에서 관리되는 MySQL 서비스라는 특수한 기능을 제공하기 때문입니다. RDS는 MySQL의 인프라와 관리 작업을 대신해 주는 서비스로, MySQL을 손쉽게 배포하고 운영할 수 있도록 해줍니다.
- RDS의 주요 기능: 자동화된 스냅샷, 백업, 패치 관리, 성능 모니터링, 자동 확장 등이 포함되어 있습니다. 즉, MySQL이 어떻게 실행될지, 어떤 스토리지 계층을 사용할지 등에 대해 신경 쓸 필요가 없이, AWS가 대부분을 관리해주므로 "RDS"라는 별도의 명칭을 사용합니다.
그렇다 치고 스토리지 엔진은 다음과 같이 이해할 수 있다.
2️⃣ 스토리지 엔진(Storage Engine)이란?
📌 스토리지 엔진 = DBMS 내부에서 데이터를 저장하고 인덱싱하는 역할을 담당하는 소프트웨어 모듈
📍 스토리지 엔진은 특정 DBMS(MySQL, PostgreSQL 등) 내부에서 동작하며, 데이터 저장, 트랜잭션, 인덱싱 등을 수행
📍 같은 DBMS라도 여러 스토리지 엔진을 지원할 수 있음 (예: MySQL → InnoDB, MyISAM)
🔹 주요 스토리지 엔진 예시
DBMS스토리지 엔진
MySQL | InnoDB, MyISAM, Memory, NDB |
PostgreSQL | 자체 내장 스토리지 엔진 사용 (Pluggable Storage 없음) |
MongoDB | WiredTiger, MMAPv1 |
RocksDB | Key-Value 기반 엔진 |
💡 즉, 스토리지 엔진은 DBMS 내부에서 데이터를 저장하는 핵심 역할을 담당하지만, 전체적인 스토리지 계층(Storage Layer)의 일부일 뿐입니다.
2️⃣ MySQL과 InnoDB의 관계
✔ MySQL = DBMS 전체 시스템
✔ InnoDB = MySQL이 사용하는 스토리지 엔진
✔ InnoDB는 데이터를 저장하는 역할을 하지만, SQL 실행 및 사용자 관리 기능이 없으므로 데이터베이스라고 할 수 없음
💡 비유하자면:
- MySQL = 완전한 자동차 (DBMS) 🚗
- InnoDB = 자동차의 엔진 (스토리지 엔진) ⚙️
- 엔진(InnoDB)만으로 자동차(MySQL)를 대신할 수는 없음.
- 하지만 자동차는 엔진 없이 움직일 수 없듯이, MySQL도 InnoDB 없이 제대로 동작하지 않음.
위에 설명처럼 반대로 스토리지 엔진은 이름에 DB가 포함되어 있어도 DBMS라고 할수는 없다. 쿼리나 사용자 권한 관리 기능이 없기 때문임
'배우는 과정 > AWS' 카테고리의 다른 글
클라우드의 종류 (0) | 2025.03.15 |
---|---|
AWS - 기타 컴퓨팅 서비스 : ECS, Lambda, 배치, Lightsail (0) | 2025.03.11 |
EBS vs S3 (0) | 2025.03.09 |
AWS - 데이터베이스 및 분석 (1) | 2025.02.22 |
AWS - Elastic Load Balancing & Auto Scaling Groups Section (1) | 2025.02.15 |
댓글