DBM (컴퓨팅)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
DBM은 1979년 AT&T의 켄 톰슨이 개발한 단순한 데이터베이스 엔진의 일종으로, "DataBase Manager"의 약자이다. DBM은 고정 크기 버킷의 단일 키를 사용하여 임의의 데이터를 저장하고 해시 함수를 통해 키로 데이터를 빠르게 검색할 수 있도록 하는 기술을 사용하며, 관계형 데이터베이스 이전의 디스크 기반 해시 테이블로 구현된 연관 배열을 관리한다. DBM 라이브러리는 ndbm, GDBM, sdbm, 버클리 DB, QDBM, TDB, LMDB 등 여러 구현체로 대체되었다. 2018년 퍼징 테스트에서 데이터베이스 파일 손상과 관련된 문제점이 드러나기도 했다.
더 읽어볼만한 페이지
- 임베디드 데이터베이스 - 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 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
DBM (컴퓨팅) | |
---|---|
DBM | |
종류 | 키-값 데이터베이스 관리 시스템 |
개발자 | 여러 개발자 |
초기 릴리스 | 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는 확장자가 없는 하나의 파일만 만든다. |
2. 역사
오리지널 dbm 라이브러리와 파일 포맷은 켄 톰슨이 개발한 단순한 데이터베이스 엔진으로, 1979년 AT&T에서 공개되었다. dbm은 DataBase Manager의 세 글자 약자이다. dbm 라이브러리는 고정 크기 버킷의 단일 키(기본 키)를 사용하여 임의의 데이터를 저장하고 해시 함수 기술을 사용하여 키로 데이터를 빠르게 검색할 수 있도록 한다.
오리지널 AT&T dbm 라이브러리는 여러 구현체로 대체되었다.[11] 주요 구현체는 다음과 같다.
사용된 해싱 방식은 확장 가능한 해싱의 한 형태이므로 데이터베이스에 새 버킷이 추가됨에 따라 해싱 방식이 확장된다. 즉, 거의 비어 있을 때는 데이터베이스가 하나의 버킷으로 시작하여 가득 차면 분할된다. 두 개의 결과 하위 버킷은 가득 차면 자체적으로 분할되므로 키가 추가됨에 따라 데이터베이스가 커진다.
dbm 라이브러리와 파생 제품은 관계형 데이터베이스 이전의 기술로, 디스크 기반 해시 테이블로 구현된 연관 배열을 관리한다. 실제로 연결하고 쿼리를 준비하는 오버헤드가 필요하지 않으므로 키로 액세스하는 고속 스토리지를 위한 더 실용적인 솔루션을 제공할 수 있다. 이는 일반적으로 한 번에 단일 프로세스에서만 쓰기 위해 열 수 있다는 사실로 균형을 이룬다. 데몬은 여러 프로세스에서 요청을 처리할 수 있지만 프로세스 간 통신 오버헤드를 발생시킨다.
3. 구현체
dbm에서 영감을 받았지만, dbm 인터페이스를 직접 제공하지 않는 데이터베이스는 다음과 같다.3. 1. ndbm (new dbm)
ndbm ("new dbm")은 오리지널 dbm을 기반으로 일부 새로운 기능이 추가된 라이브러리이다.[11]
3. 2. GDBM (GNU dbm)
https://www.gnu.org.ua/software/gdbm/gdbm.html GDBM(GNU dbm)은 ''ndbm''의 기능을 구현하고 자체 인터페이스를 제공하기 위해 GNU에서 재작성한 버전이다.[12] 데이터 일관성 보장을 위한 크래시 허용 등 새로운 기능이 추가되었다.
3. 3. sdbm (small dbm)
sdbm은 dbm의 퍼블릭 도메인 재작성 버전이다.[13][14] Perl의 표준 배포판에 포함되어 있으며, Ruby에서도 외부 라이브러리로 사용할 수 있다.
3. 4. 버클리 DB
1991년 Sleepycat Software(현재 오라클)가 BSD에 대한 AT&T Unix 저작권을 피하기 위해 ndbm을 대체하여 만들었다.[11] 병렬 처리, 트랜잭션 제어, 해싱 및 B-트리 스토리지를 포함한 많은 확장을 제공한다.
3. 5. QDBM (Quick Database Manager)
QDBM(Quick Database Manager)은 Tokyo/Kyoto Cabinet과 동일한 기술을 많이 사용하는 고성능 ''dbm''이다.[15] 같은 저자가 캐비닛으로 이동하기 전에 작성했다.
3. 6. TDB (Trivial Database)
Samba에서 사용하는 간단한 데이터베이스로, 여러 작성자를 지원한다. gdbm 기반 API를 가지고 있다.[11]
3. 7. LMDB (Lightning Memory-Mapped Database)
LMDB는 copy-on-write 메모리 맵 파일 B+ 트리 구현으로, C로 작성되었으며 Berkeley 스타일 API를 사용한다.[11]
3. 8. 기타 구현체
4. 신뢰성
2018년 여러 DBM 계열 데이터베이스를 대상으로 한 AFL 퍼징 테스트에서 데이터베이스 파일이 손상되었거나 유효하지 않은 경우 구현에 많은 문제가 노출되었다. 다니엘 J. 번스타인의 ''freecdb''만이 충돌을 보이지 않았다. gdbm, tdb 및 lmdb 제작자는 신속하게 대응했다. 버클리 DB는 다른 문제의 엄청난 양으로 인해 뒤쳐졌다.[8] 수정 사항은 구버전에 고정되어 라이선스 변경으로 인해 오픈 소스 소프트웨어 사용자에게는 관련이 없을 것이다.[7]
참조
[1]
웹사이트
Crash Tolerance
https://www.gnu.org.[...]
2021-10-03
[2]
웹사이트
Crashproofing the Original NoSQL Key-Value Store
https://queue.acm.or[...]
2021-10-03
[3]
웹사이트
sdbm.bun
http://www.cse.yorku[...]
2019-05-08
[4]
웹사이트
Ruby SDBM library
https://github.com/r[...]
[5]
웹사이트
QDBM: Quick Database Manager
https://fallabs.com/[...]
2006
[6]
웹사이트
tdb: Main Page
https://tdb.samba.or[...]
[7]
간행물
New project goal: Get rid of Berkeley DB (post jessie)
https://lists.debian[...]
Debian
2014-06-19
[8]
웹사이트
oss-security - Fun with DBM-type databases...
https://www.openwall[...]
2018-06-16
[9]
서적
DBMs have been with us since the early days of computing, when the need for fast keyed lookups was recognized. The original DBM is a UNIX-based library and file format for fast, highly-scalable keyed access to data. It was followed (in order) by NDBM ('new DBM'), GDBM ('GNU DBM'), and the Berkeley DB. This last is by far the most advanced, and the only DBM under active development today. Nevertheless, all of the DBMs from NDBM onward provide the same core functionality used by most programs, including Apache. A minimal-implementation SDBM is also bundled with [[Apache Portable Runtime|APR]], and is available to applications along with the other DBMs.
Although NDBM is now old - like the city named New Town ('Neapolis') by the Greeks in about 600BC and still called Naples today - it remains the baseline DBM. NDBM was used by early Apache modules such as the Apache 1.x versions of mod_auth_dbm
and mod_rewrite
. Both GDBM and Berkeley DB provide NDBM emulations, and Linux distributions ship with one or other of these emulations in place of the 'real' NDBM, which is excluded for licensing reasons. Unfortunately, the various file formats are totally incompatible, and there are subtle differences in behaviour concerning database locking. These issues led a steady stream of Linux users to report problems with DBMs in Apache 1.x.
[10]
서적
The most common [single-key] format is called DBM. Most modern versions of Unix have a DBM library installed as standard, though this is not true of some older systems. The two most common DBM libraries are ''ndbm'' (standard on Solaris and IRIX) and Berkeley DB Version 2 or 3 (standard on several free operating systems). Exim supports both of these, as well as the older Berkeley DB Version 1, ''gdbm'', and ''tdb''.
[11]
서적
Most UNIX systems have some kind of DBM database. DBM is a set of library routines that manages data files consisting of key and value pairs. The DBM routines control how users enter and retrieve information from the database. Although it isn't the most powerful mechanism for storing information, using DBM is a faster method of retrieving information than using a flat file. Because most UNIX sites use one of the DBM libraries, the tools you need to store your information in a DBM database are readily available.
Almost as many flavors of the DBM libraries exist as there are UNIX systems. Although most of these libraries are compatible with each other, they all basically work the same way...
A list follows of some of the most popular DBM libraries available:{{bulleted list|'''DBM''' - DBM stores the database in two files. The first has the extension .Pag
and contains the bitmap. The second, which has the extension .Dir
, contains the data.|'''NDBM''' - NDBM is much like DBM but with a few additional features; it was written to provide better storage and retrieval methods. Also, NDBM enables you to open many databases, unlike DBM, in which you are allowed to have only one database open within your script. Like DBM, NDBM stores its information in two files using the extensions .Pag
and .Dir
.|'''SDBM''' - SDBM comes with the Perl archive, which has been ported to many platforms. Therefore, you can use DBM databases as long as a version of Perl exists for your computer. SDBM was written to match the functions provided with NDBM, so portability of code shouldn't be a problem. Perl is available on just about all popular platforms.|'''GDBM''' - GDBM is the GNU version of the DBM family of database routines. GDBM also enables you to cache data, reducing the time that it takes to write to the database. The database has no size limit; its size depends completely on your system's resources. GDBM database files have the extension .Db
. Unlike DBM and NDBM, both of which use two files, GDBM only uses one file.|'''Berkeley db''' - The Berkeley db expands on the original DBM routines significantly. The Berkeley db uses hashed tables the same as the other DBM databases, but the library also can create databases based on a sorted balanced binary tree (BTREE
) and store information with a record line number (RECNO
). The method that you use depends completely on how you want to store and retrieve the information from a database. Berkeley db creates only one file, which has no extension."}}
[12]
웹인용
GDBM
https://www.gnu.org.[...]
[13]
웹인용
sdbm.bun
http://www.cse.yorku[...]
2019-05-08
[14]
웹인용
class SDBM
https://docs.ruby-la[...]
[15]
웹인용
Tokyo Cabinet第1版基本仕様書
http://fallabs.com/t[...]
2010-08-05
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com