Types of Databases

데이터베이스의 종류
목차
관계형 데이터베이스
관계형 데이터베이스(RDBMS, Relational Database Management System)는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리키며, SQL(Structured Query Language)을 사용하여 데이터를 관리하고 조작한다. MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server 등이 대표적인 관계형 데이터베이스 시스템이다. 관계형 데이터베이스의 경우 표준 SQL을 준수하며, 각 데이터베이스 시스템마다 고유한 기능을 제공한다. 예를 들어, Oracle Database는 PL/SQL이라는 프로그래밍 언어를 지원하며, PostgreSQL은 JSON 데이터 타입을 지원하는 등 다양한 기능을 제공한다.
PostgreSQL
PostgreSQL은 오픈 소스 객체-관계형 데이터베이스 관리 시스템으로, ACID(Atomicity, Consistency, Isolation, Durability)를 준수하며, 복잡한 쿼리와 트랜잭션을 지원한다. 디스크 조각이 차지하는 영역을 회수할 수 있는 장치인 VACUUM이 특징이다. 최대 테이블의 크기는 32TB이며 SQL 뿐만 아니라 JSON을 이용해서 데이터에 접근할 수 있다. 지정 시간에 복구하는 기능, 로깅, 접근 제어, 중첩된 트랜잭션, 다양한 인덱스 기법, 백업 등 다양한 기능을 제공한다.
현재(2024) 가장 많이 사용되는 데이터베이스 시스템 중 하나이다.

2024 Stack Overflow Survey Database 사용 순위 (출처: Stack Overflow)
원본 보기
MySQL
MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 높은 성능과 확장성을 제공한다. 대부분의 운영체제와 호환되며, 현재(2024) PostgreSQL 다음으로 많이 사용되는 데이터베이스 시스템이다. C/C++로 작성되었으며, MyISAM 인덱스 압축 기술, B-Tree 인덱스, 스레드 기반의 메모리 할당 시스템, 매우 빠른 조인 연산, 최대 64개의 인덱스를 제공한다. 대용량 데이터베이스를 지원하며, 롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공한다.
NoSQL 데이터베이스
NoSQL(Not Only SQL) 데이터베이스는 비관계형 데이터베이스로 SQL을 사용하지 않는 데이터베이스를 의미한다. 다양한 데이터 모델을 지원하고, 대규모 분산 시스템에서 높은 성능과 확장성을 제공한다. 대표적으로 MongoDB, Cassandra, Redis, Couchbase 등이 있다.
MongoDB
MongoDB는 키-값 데이터 모델에서 확장된 문서 지향 데이터베이스로, JSON과 유사한 BSON(Binary JSON) 형식으로 데이터를 저장한다.
WiredTiger 스토리지 엔진을 사용하여 높은 성능과 확장성을 제공하며, 복잡한 쿼리와 인덱싱을 지원한다.
수평적 확장이 용이하며, 자동 샤딩과 복제 기능을 제공한다.
또한, 스키마를 유연하게 변경할 수 있어, 다양한 형태의 데이터를 저장하고 관리하는 데 적합하다.
문서를 생성할 때마다 고유한 ObjectId가 자동으로 생성되어, 각 문서를 고유하게 식별할 수 있다.
이는 기본키로 사용되며 timestamp(4bytes), random value(5bytes), incrementing counter(3bytes)로 구성된다.
Redis
Redis는 오픈 소스 인메모리 데이터 구조 저장소로, 키-값 쌍으로 데이터를 저장한다. 높은 성능과 낮은 지연 시간을 제공하며, 기본적인 데이터 타입인 문자열에 더해 리스트, 셋, 해시, 정렬된 셋 등 다양한 데이터 구조를 지원한다. 또한, Pub/Sub 메시징 시스템, 트랜잭션, Lua 스크립팅, 복제, 지속성 등의 기능을 제공한다. Redis는 주로 캐싱, 세션 관리, 실시간 분석, 메시지 브로커 등 다양한 용도로 사용된다.