DBM (컴퓨팅)
1. 개요
DBM은 1979년 AT&T의 켄 톰슨이 개발한 단순한 데이터베이스 엔진의 일종으로, "DataBase Manager"의 약자이다. DBM은 고정 크기 버킷의 단일 키를 사용하여 임의의 데이터를 저장하고 해시 함수를 통해 키로 데이터를 빠르게 검색할 수 있도록 하는 기술을 사용하며, 관계형 데이터베이스 이전의 디스크 기반 해시 테이블로 구현된 연관 배열을 관리한다. DBM 라이브러리는 ndbm, GDBM, sdbm, 버클리 DB, QDBM, TDB, LMDB 등 여러 구현체로 대체되었다. 2018년 퍼징 테스트에서 데이터베이스 파일 손상과 관련된 문제점이 드러나기도 했다.
| 종류 | 키-값 데이터베이스 관리 시스템 |
|---|---|
| 개발자 | 여러 개발자 |
| 초기 릴리스 | 1979년 |
| DBM | DBM은 데이터베이스를 두 개의 파일에 저장한다. 첫 번째 파일은 확장자가 `.Pag`이며 비트맵을 포함한다. 두 번째 파일은 확장자가 `.Dir`이며 데이터를 포함한다. |
|---|---|
| NDBM | NDBM은 DBM과 매우 유사하지만 몇 가지 추가 기능이 있다. 더 나은 저장 및 검색 방법을 제공하기 위해 작성되었다. 또한 NDBM을 사용하면 스크립트 내에서 하나의 데이터베이스만 열 수 있는 DBM과 달리 여러 데이터베이스를 열 수 있다. DBM과 마찬가지로 NDBM은 `.Pag` 및 `.Dir` 확장자를 사용하여 두 개의 파일에 정보를 저장한다. |
| SDBM | SDBM은 많은 플랫폼으로 포팅된 Perl 아카이브와 함께 제공된다. 따라서 컴퓨터에 Perl 버전이 있는 한 DBM 데이터베이스를 사용할 수 있다. SDBM은 NDBM에서 제공하는 기능과 일치하도록 작성되었으므로 코드의 이식성에 문제가 없어야 한다. Perl은 거의 모든 인기 있는 플랫폼에서 사용할 수 있다. |
| GDBM | GDBM은 GNU 버전의 DBM 계열 데이터베이스 루틴이다. GDBM을 사용하면 데이터를 캐시하여 데이터베이스에 쓰는 데 걸리는 시간을 줄일 수 있다. 데이터베이스에는 크기 제한이 없으며 크기는 시스템 리소스에 따라 달라진다. GDBM 데이터베이스 파일의 확장자는 `.Db`이다. 두 개의 파일을 사용하는 DBM 및 NDBM과 달리 GDBM은 하나의 파일만 사용한다. |
| Berkeley DB | Berkeley DB는 원래 DBM 루틴을 크게 확장한다. Berkeley DB는 다른 DBM 데이터베이스와 동일한 해시 테이블을 사용하지만 라이브러리는 정렬된 균형 이진 트리(BTREE)를 기반으로 데이터베이스를 만들고 레코드 줄 번호(RECNO)로 정보를 저장할 수도 있다. 사용하는 방법은 데이터베이스에서 정보를 저장하고 검색하는 방법에 따라 달라진다. Berkeley DB는 확장자가 없는 하나의 파일만 만든다. |
-
임베디드 데이터베이스 -
SQLite
SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다. -
임베디드 데이터베이스 -
H2 (DBMS)
H2는 2004년에 개발되어 2005년에 출시된 자바 기반의 오픈 소스 관계형 데이터베이스 관리 시스템으로, SQL 표준을 지원하며 다양한 인터페이스를 통해 접근 가능하고, 내장 및 클라이언트-서버 모드를 지원하며, 클러스터링 등 다양한 기능을 제공한다. -
데이터베이스 엔진 -
파일메이커
파일메이커는 데이터베이스 관리 및 공유를 위한 소프트웨어로, FileMaker Pro를 통해 커스텀 앱을 제작하고 FileMaker Server로 LAN 환경에서 데이터베이스를 공유 및 백업하며, FileMaker Go 앱과 FileMaker WebDirect를 통해 모바일 및 웹 브라우저에서 데이터베이스 솔루션을 활용하고 Claris Connect로 엔터프라이즈 앱과의 데이터 통합을 지원한다. -
데이터베이스 엔진 -
MyISAM
MyISAM은 MySQL 데이터베이스 시스템에서 사용되던 스토리지 엔진으로, 데이터 파일, 인덱스 파일, 테이블 정의 파일로 구성되어 읽기 작업에 최적화되었으나 트랜잭션과 외래 키를 지원하지 않아 데이터 무결성 유지가 어렵고, 현재는 InnoDB 엔진으로 대체되었지만 MariaDB에서는 개선 작업이 지속되고 있다. -
자유 데이터베이스 관리 시스템 -
PostgreSQL
PostgreSQL은 캘리포니아 대학교 버클리 분교의 Ingres 프로젝트에서 시작되어 전 세계 개발자들의 협력을 통해 발전해온 객체 관계형 데이터베이스 관리 시스템(ORDBMS)이다. -
자유 데이터베이스 관리 시스템 -
SQLite
SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
2. 역사
오리지널 dbm 라이브러리와 파일 포맷은 켄 톰슨이 개발한 단순한 데이터베이스 엔진으로, 1979년 AT&T에서 공개되었다. dbm은 DataBase Manager의 세 글자 약자이다. dbm 라이브러리는 고정 크기 버킷의 단일 키(기본 키)를 사용하여 임의의 데이터를 저장하고 해시 함수 기술을 사용하여 키로 데이터를 빠르게 검색할 수 있도록 한다.
사용된 해싱 방식은 확장 가능한 해싱의 한 형태이므로 데이터베이스에 새 버킷이 추가됨에 따라 해싱 방식이 확장된다. 즉, 거의 비어 있을 때는 데이터베이스가 하나의 버킷으로 시작하여 가득 차면 분할된다. 두 개의 결과 하위 버킷은 가득 차면 자체적으로 분할되므로 키가 추가됨에 따라 데이터베이스가 커진다.
dbm 라이브러리와 파생 제품은 관계형 데이터베이스 이전의 기술로, 디스크 기반 해시 테이블로 구현된 연관 배열을 관리한다. 실제로 연결하고 쿼리를 준비하는 오버헤드가 필요하지 않으므로 키로 액세스하는 고속 스토리지를 위한 더 실용적인 솔루션을 제공할 수 있다. 이는 일반적으로 한 번에 단일 프로세스에서만 쓰기 위해 열 수 있다는 사실로 균형을 이룬다. 데몬은 여러 프로세스에서 요청을 처리할 수 있지만 프로세스 간 통신 오버헤드를 발생시킨다.
3. 구현체
오리지널 AT&T dbm 라이브러리는 여러 구현체로 대체되었다. 주요 구현체는 다음과 같다.
* ndbm ("new dbm"): 새로운 기능을 갖춘 원본 dbm 기반이다.
* GDBM ("GNU dbm"): GNU 라이브러리의 재작성 버전이다.
* sdbm ("small dbm"): dbm의 퍼블릭 도메인 재작성 버전이다.
* 버클리 DB
* QDBM ("Quick Database Manager"): Tokyo/Kyoto Cabinet과 동일한 기술을 많이 사용하는 고성능 dbm이다.
* TDB ("Trivial Database"): Samba에서 사용하는 간단한 데이터베이스이다.
* LMDB (LMDB): copy-on-write 메모리 맵 파일 B+ 트리 구현이다.
dbm에서 영감을 받았지만, dbm 인터페이스를 직접 제공하지 않는 데이터베이스는 다음과 같다.
* cdb ("constant database")
* Tkrzw: Kyoto Cabinet 및 Tokyo Cabinet의 Apache 2.0 라이선스 후속 제품이다.
* WiredTiger: 전통적인 행 지향 및 열 지향 스토리지를 갖춘 데이터베이스이다.
* MDBM: 야후! inc.에서 오픈 소스화한 dbm 구현체이다.
* JDBM
3.2. GDBM (GNU dbm)
https://www.gnu.org.ua/software/gdbm/gdbm.html GDBM(GNU dbm)은 ndbm의 기능을 구현하고 자체 인터페이스를 제공하기 위해 GNU에서 재작성한 버전이다. 데이터 일관성 보장을 위한 크래시 허용 등 새로운 기능이 추가되었다.
3.3. sdbm (small dbm)
sdbm은 dbm의 퍼블릭 도메인 재작성 버전이다. Perl의 표준 배포판에 포함되어 있으며, Ruby에서도 외부 라이브러리로 사용할 수 있다.
3.4. 버클리 DB
1991년 Sleepycat Software(현재 오라클)가 BSD에 대한 AT&T Unix 저작권을 피하기 위해 ndbm을 대체하여 만들었다. 병렬 처리, 트랜잭션 제어, 해싱 및 B-트리 스토리지를 포함한 많은 확장을 제공한다.
3.5. QDBM (Quick Database Manager)
QDBM(Quick Database Manager)은 Tokyo/Kyoto Cabinet과 동일한 기술을 많이 사용하는 고성능 dbm이다. 같은 저자가 캐비닛으로 이동하기 전에 작성했다.
3.7. LMDB (Lightning Memory-Mapped Database)
LMDB는 copy-on-write 메모리 맵 파일 B+ 트리 구현으로, C로 작성되었으며 Berkeley 스타일 API를 사용한다.