데이터베이스는 현대 정보 시스템의 핵심 구성 요소로, 데이터의 효율적인 저장, 관리, 검색을 지원합니다. 전통적인 관계형 데이터베이스(RDBMS) 외에도 다양한 요구사항을 충족하기 위한 여러 유형의 데이터베이스가 등장했습니다. 이 문서에서는 RDBMS, NoSQL, 시계열 데이터베이스(TSDB)를 포함한 주요 데이터베이스 유형을 소개합니다.
데이터베이스 유형: 관계형 데이터베이스 (RDBMS - Relational Database Management System)
특징
데이터를 정해진 스키마에 따라 테이블(Table) 형태로 저장 (행과 열 구조)
SQL(Structured Query Language)을 사용하여 데이터 조작 및 질의
ACID(원자성, 일관성, 고립성, 지속성) 트랜잭션을 통한 데이터 무결성 보장
정규화(Normalization)를 통해 데이터 중복 최소화
명확한 데이터 구조 및 관계 정의 가능
탄생 배경
1970년대 에드거 F. 커드(Edgar F. Codd)에 의해 제안된 관계형 모델에 기반
기존 파일 시스템이나 계층형/네트워크형 데이터베이스의 복잡성과 데이터 종속성 문제를 해결하기 위해 등장
데이터의 논리적 구조와 물리적 저장 구조를 분리하여 유연성 증대
주요 사용처
금융 시스템 (은행, 증권 거래)
전사적 자원 관리 (ERP) 시스템
고객 관계 관리 (CRM) 시스템
재고 관리, 인사 관리 등 대부분의 전통적인 기업 애플리케이션
데이터 일관성과 무결성이 매우 중요한 시스템
대표적인 예시
Oracle Database
MySQL
PostgreSQL
Microsoft SQL Server
MariaDB
SQLite
데이터베이스 유형: NoSQL (Not Only SQL)
특징
관계형 모델을 사용하지 않는 데이터베이스들을 통칭 (스키마 제약이 적거나 없음)
수평적 확장성(Horizontal Scaling) 및 고가용성(High Availability)에 용이
대용량 데이터 및 분산 환경 처리에 적합
다양한 데이터 모델 지원:
키-값 (Key-Value)
문서 (Document)
컬럼 패밀리 (Column-Family)
그래프 (Graph)
BASE(Basically Available, Soft state, Eventually consistent) 속성을 따르는 경우가 많음 (ACID를 완전하게 지원하지 않을 수 있음)
탄생 배경
2000년대 후반, 웹 2.0 시대의 도래와 함께 폭증하는 비정형/반정형 데이터, 높은 트래픽, 빠른 개발 속도 요구에 대응하기 위해 등장
기존 RDBMS의 엄격한 스키마와 수직적 확장(Scale-up)의 한계를 극복하고자 함
주요 사용처
대규모 웹 애플리케이션 (소셜 미디어, 콘텐츠 플랫폼)
실시간 데이터 처리 및 분석
빅데이터 저장 및 처리
IoT 데이터 관리
캐싱 시스템
대표적인 예시
(각 모델별 상세는 아래 개별 항목 참조)
MongoDB (문서)
Apache Cassandra (컬럼 패밀리)
Redis (키-값)
Neo4j (그래프)
데이터베이스 유형: 키-값 저장소 (Key-Value Store)
특징
고유한 키(Key)와 그에 해당하는 값(Value)의 쌍으로 데이터를 저장하는 단순한 모델
매우 빠른 읽기 및 쓰기 속도 제공
단순한 API (GET, PUT, DELETE 등)
확장성이 뛰어남
탄생 배경
NoSQL의 한 형태로, 매우 간단한 데이터 모델을 통해 성능과 확장성을 극대화하려는 요구에서 출발
웹 애플리케이션의 세션 관리, 캐싱, 사용자 프로필 저장 등에 적합
주요 사용처
인메모리 캐싱
세션 관리
사용자 프로필 저장
실시간 추천 데이터 저장
메시지 큐잉 시스템의 일부
대표적인 예시
Redis
Amazon DynamoDB (기본 모델은 키-값)
Memcached
Riak KV
데이터베이스 유형: 문서 데이터베이스 (Document Database)
특징
데이터를 JSON, BSON, XML과 같은 문서(Document) 형태로 저장 및 질의
각 문서는 필드와 값의 쌍으로 구성되며, 스키마가 유연하여 문서마다 다른 구조를 가질 수 있음
객체 지향 프로그래밍의 객체와 유사한 형태로 데이터를 다룰 수 있어 개발 편의성 높음
문서 내 특정 필드에 대한 인덱싱 및 질의 지원
탄생 배경
NoSQL의 한 형태로, 웹 애플리케이션에서 많이 사용되는 JSON과 같은 유연한 데이터 구조를 효율적으로 저장하고 관리하기 위해 개발
개발자가 RDBMS의 스키마 변경 어려움 없이 빠르게 애플리케이션을 개발하고 데이터를 저장할 수 있도록 지원
주요 사용처
콘텐츠 관리 시스템 (CMS)
블로그 및 사용자 생성 콘텐츠 플랫폼
전자상거래 상품 카탈로그
모바일 애플리케이션 백엔드
로그 데이터 저장 및 분석
대표적인 예시
MongoDB
Couchbase
Amazon DocumentDB (MongoDB 호환)
Elasticsearch (검색 엔진이지만 문서 저장 기능 강력)
데이터베이스 유형: 컬럼 패밀리 데이터베이스 (Column-Family Database)
특징
데이터를 행(Row)이 아닌 컬럼(Column) 또는 컬럼 패밀리(Column Family) 단위로 저장
각 행은 서로 다른 컬럼을 가질 수 있어 스키마가 매우 유연함 (희소 행렬 저장에 유리)
대량의 데이터 쓰기 및 특정 컬럼 범위 읽기에 최적화
높은 확장성과 가용성을 제공하도록 설계
탄생 배경
Google의 Bigtable 논문에 기반한 NoSQL 데이터베이스 유형
페타바이트급의 초대용량 데이터를 분산 환경에서 효율적으로 처리하기 위해 개발
주요 사용처
빅데이터 분석 애플리케이션
시계열 데이터 저장 (일부 경우)
로그 데이터, 이벤트 데이터 등 대량의 쓰기가 발생하는 시스템
추천 시스템의 사용자 활동 기록
대표적인 예시
Apache Cassandra
Apache HBase
Google Cloud Bigtable
ScyllaDB
데이터베이스 유형: 그래프 데이터베이스 (Graph Database)
특징
데이터를 노드(Node), 관계(Edge/Relationship), 속성(Property)으로 표현하고 저장
복잡한 관계를 가진 데이터의 질의 및 탐색에 최적화 (예: 최단 경로, 패턴 매칭)
유연한 스키마 구조
직관적인 데이터 모델링 가능
탄생 배경
소셜 네트워크, 추천 시스템 등 데이터 간의 '관계'가 중요한 애플리케이션에서 RDBMS의 한계를 극복하기 위해 등장
그래프 이론에 기반하여 연결된 데이터를 효율적으로 처리
주요 사용처
소셜 네트워크 분석
추천 엔진
사기 탐지 시스템 (FDS)
지식 그래프 구축 및 관리
네트워크 및 IT 인프라 모니터링
공급망 분석
대표적인 예시
Neo4j
Amazon Neptune
ArangoDB (멀티 모델 DB)
JanusGraph
TigerGraph
데이터베이스 유형: 검색 엔진 데이터베이스 (Search Engine Database)
특징
전문 검색(Full-text search) 및 정보 검색에 최적화
역 인덱스(Inverted Index)를 사용하여 텍스트 데이터의 빠른 검색 지원
복잡한 검색 질의, 집계, 필터링, 관련도 순위 지정, 자동 완성 등 다양한 검색 기능 제공
비정형 및 반정형 데이터 처리 용이
대량의 문서 및 로그 데이터에 대한 수평적 확장성 우수
탄생 배경
웹 검색 엔진을 위해 개발된 기술에서 발전하여, 애플리케이션 내 검색 기능, 로그 분석 등 다양한 분야로 확장
기존 데이터베이스로는 복잡한 텍스트 검색 요건을 충족하기 어려웠음
주요 사용처
웹사이트 및 전자상거래 상품 검색
기업 내부 자료 검색 (Enterprise Search)
로그 수집, 분석 및 시각화 (ELK Stack 등)
애플리케이션 성능 모니터링 (APM) 데이터 분석
보안 정보 및 이벤트 관리 (SIEM)
대표적인 예시
Elasticsearch
Apache Solr
OpenSearch (Elasticsearch의 포크)
Algolia (서비스형)
Meilisearch
데이터베이스 유형: 시계열 데이터베이스 (TSDB - Time Series Database)
특징
시간 순서대로 정렬된 데이터 포인트(시계열 데이터)의 저장, 처리, 분석에 최적화
고속 데이터 수집(High Ingestion Rate) 및 대량의 시계열 데이터 처리 능력
특정 시간 범위에 대한 빠른 질의 성능 (Windowing, Aggregation 등)
데이터 압축, 자동 롤업(Roll-up), 데이터 보존 정책(Retention Policy) 등의 기능 제공
태그(Tag)를 이용한 다차원 데이터 모델링 지원
탄생 배경
IoT 센서 데이터, 시스템/애플리케이션 모니터링 데이터, 금융 시장 데이터 등 시간 축에 따라 발생하는 데이터가 급증하면서 기존 RDBMS나 범용 NoSQL로는 효율적인 처리가 어려워 등장
주요 사용처
IT 인프라 및 애플리케이션 모니터링 (서버 메트릭, 로그)
산업 IoT (IIoT) 데이터 분석, 스마트 팩토리
금융 시장 데이터 분석 (주가, 거래량, 환율 변동)
센서 데이터 수집 및 분석 (스마트 홈, 헬스케어, 환경 모니터링)
실시간 이상 탐지 및 예측
대표적인 예시
InfluxDB
Prometheus
TimescaleDB (PostgreSQL 확장)
OpenTSDB
Graphite
QuestDB
데이터베이스 유형: NewSQL 데이터베이스
특징
RDBMS의 ACID 트랜잭션과 SQL 인터페이스를 유지하면서 NoSQL의 수평적 확장성과 고가용성을 제공
온라인 트랜잭션 처리(OLTP) 워크로드에 적합하도록 설계
분산 환경에서도 강력한 데이터 일관성 보장 목표
탄생 배경
2010년대 초반, RDBMS의 확장성 문제와 NoSQL의 약한 일관성 문제를 동시에 해결하고자 등장
웹 스케일 애플리케이션에서 대량의 동시 트랜잭션을 데이터 무결성을 유지하며 처리해야 하는 요구에 부응
주요 사용처
미션 크리티컬한 금융 애플리케이션 (은행 코어 시스템, 증권 거래)
대규모 전자상거래 플랫폼의 주문 및 결제 시스템
높은 트랜잭션 처리량을 요구하는 온라인 게임
실시간 입찰 및 광고 시스템
대표적인 예시
Google Spanner
CockroachDB
VoltDB (인메모리 특성도 강함)
NuoDB
TiDB
Clustrix
데이터베이스 유형: 공간 데이터베이스 (Spatial Database)
특징
지리적 위치 정보, 공간 객체(점, 선, 면 등)를 저장, 질의, 관리
공간 인덱스(R-tree, Quadtree 등) 및 공간 연산(거리, 교차, 포함 관계 등)을 효율적으로 지원
GIS(지리 정보 시스템) 표준(예: OGC 표준) 지원
탄생 배경
지도 서비스, 위치 기반 서비스(LBS), 도시 계획 등에서 공간 데이터를 효율적으로 처리하기 위해 개발