임베디드 데이터베이스(Embedded Database)는 데이터베이스 관리 시스템(DBMS)의 한 종류로, 독립적인 서버 프로세스로 동작하는 대신, 특정 애플리케이션 또는 장치 내부에 직접 통합되어 구동되는 데이터베이스를 의미한다. 이는 애플리케이션의 일부로서 함께 배포되고 실행되며, 별도의 설치나 관리가 필요 없는 경우가 많다.
특징
- 직접 통합: 데이터베이스 엔진이 애플리케이션의 프로세스 내에 로드되어 실행된다. 전통적인 클라이언트-서버 데이터베이스와 달리, 별도의 네트워크 연결이나 통신 프로토콜이 필요하지 않다.
- 경량성: 일반적으로 리소스 사용량이 적고, 메모리 공간 및 디스크 용량을 적게 차지하도록 설계된다. 이는 제한된 하드웨어 자원을 가진 환경에 적합하다.
- 관리 용이성: 대부분의 경우 별도의 데이터베이스 관리자(DBA)나 복잡한 관리 도구가 필요 없다. 애플리케이션 개발자가 데이터베이스의 설정 및 관리를 직접 처리한다.
- 높은 휴대성: 애플리케이션과 함께 패키징되어 배포되므로, 데이터베이스가 포함된 애플리케이션 전체를 쉽게 이동시키거나 복사할 수 있다.
- 성능 최적화: 애플리케이션과 동일한 프로세스 내에서 동작하므로, 데이터 접근 시 네트워크 오버헤드가 없어 빠른 성능을 제공할 수 있다.
- 제한적인 확장성 및 동시성: 대규모 다중 사용자 환경이나 복잡한 동시성 제어가 필요한 경우에는 적합하지 않을 수 있다. 주로 단일 애플리케이션 또는 소규모 그룹의 사용에 최적화되어 있다.
장점
- 배포의 용이성: 애플리케이션 설치 시 데이터베이스가 자동으로 함께 설치되므로, 사용자나 개발자의 편의성이 높다.
- 낮은 운영 비용: 별도의 서버 하드웨어 및 소프트웨어 라이선스 비용이 들지 않고, 관리 비용도 적다.
- 빠른 데이터 접근: 애플리케이션 내부에서 직접 데이터를 처리하므로, 외부 통신으로 인한 지연이 없다.
- 자원 효율성: 작은 footprint로 자원이 제한적인 장치에 적합하다.
단점
- 확장성 한계: 대규모 데이터나 높은 동시성 요청을 처리하는 데에는 제한적이다.
- 제한된 고급 기능: 고가용성, 복제, 샤딩 등 엔터프라이즈급 데이터베이스가 제공하는 고급 기능들이 부족할 수 있다.
- 애플리케이션 종속성: 데이터베이스의 생명 주기가 애플리케이션에 묶여 있다.
- 표준 SQL 지원 부족: 일부 임베디드 데이터베이스는 표준 SQL을 완벽하게 지원하지 않거나, 자체적인 API를 사용하는 경우가 있다.
주요 사용 사례
- 모바일 애플리케이션: 스마트폰 앱에서 로컬 데이터 저장 및 관리에 널리 사용된다 (예: SQLite).
- 사물 인터넷(IoT) 기기: 센서 데이터 저장, 디바이스 설정 관리 등 제한된 자원을 가진 IoT 기기에 활용된다.
- 데스크톱 애플리케이션: 로컬 데이터 캐싱, 사용자 설정 저장 등에 사용된다 (예: 웹 브라우저, 미디어 플레이어).
- 내비게이션 시스템 및 차량 인포테인먼트 시스템: 지도 데이터, 사용자 설정 등을 저장한다.
- 가전제품: 스마트 TV, 디지털 카메라, 라우터 등에서 기기 설정 및 임시 데이터 저장에 사용된다.
- 임베디드 시스템: 산업 제어 시스템, 의료 기기 등 특정 목적을 가진 시스템에서 데이터 관리에 사용된다.
대표적인 임베디드 데이터베이스
- SQLite: 가장 널리 사용되는 임베디드 데이터베이스 중 하나로, C 라이브러리 형태로 제공되며, 파일 기반으로 동작하여 뛰어난 휴대성과 경량성을 자랑한다.
- H2 Database: 자바로 작성된 경량의 관계형 데이터베이스로, 임베디드 모드 외에도 서버 모드로도 동작할 수 있다.
- Apache Derby (Java DB): 역시 자바로 개발되었으며, 주로 임베디드 시스템이나 데스크톱 애플리케이션에서 사용된다.
- Realm: 모바일 환경에 최적화된 객체 데이터베이스로, iOS 및 Android 애플리케이션에서 주로 사용된다.
- LevelDB/RocksDB: 구글과 페이스북에서 개발한 키-값(key-value) 저장소로, 높은 성능과 확장성을 제공하며, 주로 임베디드 환경이나 서버의 로컬 캐싱에 사용된다.