![Database Engine 비교하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcorYd2%2FbtsKPf6Kx2x%2Fov0TByh8L7bhIeg1ElzbK0%2Fimg.png)
Database Engine 비교하기CS 지식/데이터베이스 기본 다지기2024. 11. 20. 22:49
Table of Contents
반응형
데이터베이스 엔진(Database Engine)은 데이터베이스 관리 시스템(DBMS)의 핵심 요소로,
데이터를 저장, 관리, 처리, 검색하는 역할을 수행하는 소프트웨어 구성 요소입니다.
사용자가 데이터베이스와 상호 작용할 수 있도록 하는 기본적인 백엔드 역할을 하며, 데이터를 처리하는 모든 작업의 중심에 있다고 할 수 있습니다. 아래에 Database Engine의 주요 기능과 개념을 설명합니다.
Database Engine의 주요 기능
1. 데이터 저장 및 관리:
- 데이터베이스 엔진은 데이터를 효율적으로 저장하고 관리하는 역할을 합니다. 테이블, 인덱스, 트리거, 뷰 등 데이터 구조를 생성하고 유지합니다.
2. 데이터 쿼리 처리:
- SQL(Structured Query Language)을 사용해 데이터를 검색하고 변환하는 기능을 제공합니다. SQL 쿼리를 분석하고 최적화하여 필요한 데이터를 빠르게 조회합니다.
3. 트랜잭션 관리:
- 여러 개의 작업을 하나의 단위로 처리하는 트랜잭션을 관리합니다. 이를 통해 데이터의 일관성(Consistency)을 유지하며, 부분 실패 시 모든 작업을 취소하는 롤백(Rollback)을 통해 데이터 무결성을 보장합니다.
4. 동시성 제어:
- 여러 사용자가 동시에 데이터를 접근하고 수정할 때 발생할 수 있는 충돌을 방지하기 위해 동시성 제어 기능을 제공합니다. 락(Lock) 메커니즘을 이용해 데이터의 일관성을 보장합니다.
5. 인덱스 생성 및 관리:
- 인덱스를 생성하여 데이터를 빠르게 검색할 수 있도록 지원합니다. 효율적인 인덱스 관리와 최적화는 데이터 검색 성능에 큰 영향을 미칩니다.
6. 보안:
- 사용자 인증, 권한 부여, 데이터 암호화 등의 기능을 통해 데이터의 보안을 보장합니다.
주요 구성 요소
- 스토리지 엔진: 데이터를 물리적인 디스크에 저장하고 검색하는 역할을 담당합니다. 각 데이터베이스는 고유한 스토리지 엔진을 갖고 있으며, 예를 들어 MySQL은 InnoDB와 MyISAM 같은 여러 스토리지 엔진을 지원합니다.
- SQL 파서 및 최적화기: 사용자가 입력한 SQL 쿼리를 구문 분석하고, 쿼리 실행을 최적화하는 역할을 합니다. 최적화 과정에서는 가능한 가장 효율적인 방식으로 데이터를 검색할 수 있도록 실행 계획을 수립합니다.
- 버퍼 관리: 데이터가 메모리와 디스크 간에 이동하는 과정을 관리합니다. 자주 사용되는 데이터는 메모리에 저장하여 접근 속도를 높입니다.
DB 엔진 종류
MyISAM
- 트랜잭션을 지원하지 않습니다. (ACID)
- Insert는 빠르지만, Update와 Delete는 상당히 느립니다.
- B-tree index가 row들을 직접적으로 가리키고 있습니다.
- Indexed sequential access method를 상징합니다.
- Table level locking을 지원합니다.
- MySQL의 기본 엔진이었다가 아니게되었습니다.
- Crash-safe하지 않습니다.
- Oracle 소유입니다.
InnoDB
- B+ tree를 사용하는데 인덱스는 primary key를 가리킵니다.그리고 그 PK가 row를 가리킵니다.
- primary key를 생성하지 않으면 InnoDB가 직접 생성해줍니다.
- (보조키는 아닙니다)
- MySQL과 MariaDB의 Default 엔진입니다.
- ACID Transaction을 지원합니다.
- Foreign key를 지원합니다.
- Tablespace를 지원합니다.
- 데이터베이스에서 데이터를 물리적으로 저장할 공간을 관리하기 위한 논리적 구조입니다. 쉽게 말해, 데이터베이스에서 데이터를 담기 위한 일종의 컨테이너라고 생각할 수 있습니다
- Row level locking을 지원합니다.
- Oracle 소유입니다.
XtraDB
- InnoDB의 Fork입니다.
- MariaDB의 default 엔진이었습니다 (10.1버전까지)
- 10.2에서 MariaDB는 InnoDB로 Default를 바꾸었습니다.
SQLite
- local data를 위한 embedded database로 유명합니다.
- B-tree를 사용합니다. (LSM은 Extension으로 지원합니다, 다만 아키텍처로 인해 성능 향상이 크지는 않다고합니다.)
- Postgres-like syntax를 사용합니다.
- Full ACID & table locking을 지원합니다.
- Concurrent read & writes를 지원합니다.
- 브라우저의 Web SQL이 사용합니다.
- 많은 OS에서 기본적으로 포함하고있습니다.
Aria
- MyISAM과 상당히 유사합니다.
- MyISAM과 다르게 Crash-safe합니다.
- Oracle 소유가 아닙니다.
- MariaDB를 위해 디자인 되었습니다.
- MariaDB 10.4부터 모든 system table은 Aria 입니다.
Berkeley DB
- Oracle 소유입니다
- Key-value embedded database입니다.
- ACID transaction, lock, replication을 지원합니다.
- MemcacheDB에서 사용됩니다.
Level DB
- Log structured merge tree (LSM) 기반입니다.
- 이는 insert에 최적화 되어있으며, SSD에 훌륭한 구조입니다.
- SSD는 update에 취약한 구조이기 때문입니다.
- Transaction을 보장하지 않습니다.
- file의 level이 있습니다.
- 1. Memtable (WAL로 데이터 보장)
- 2. Level 0 (Young level)
- 3. Level 1 - 6
- 파일이 커지면 더 큰 레벨로 병합되어 보내집니다.
- bitcoin core에서 사용합니다.
RocksDB
- Transactional 합니다. (Full ACID)
- High-performance, Multi-threaded compaction을 지원합니다.
- MyRocks엔진은 MySQL, MariaDB , Percona에서 사용할 수 있습니다.
- Mongorocks는 MongoDB에서 사용할 수 있습니다.
여러 인기있는 Database Storage Engines
아래와 같은 DB engine들이 있습니다
반응형
'CS 지식 > 데이터베이스 기본 다지기' 카테고리의 다른 글
데이터베이스 복제(Replication)란? (0) | 2024.11.17 |
---|---|
데이터베이스 파티셔닝이란? (1) | 2024.11.13 |
Row Oriented Database vs Column Oriented Database (3) | 2024.10.13 |
Transaction 과 ACID (0) | 2024.10.06 |
@ray5273 :: Micro Changes, Macro Impact
개발 및 IT 관련 포스팅을 작성 하는 블로그입니다.
IT 기술 및 개인 개발에 대한 내용을 작성하는 블로그입니다. 많은 분들과 소통하며 의견을 나누고 싶습니다.