이 글은 dbms 일반 게시판으로 가야할 글 같네요.
버클리 DB는 유닉스 초창기부터 등장한 dbm의 대표적인 소프트웨어입니다. 아니, API입니다. 라는 말이 더 적당할 듯싶습니다.
dbm은 rdbm의 이전개념(?)으로 rdbm에서 그 '(r)elation' - 관계성 - 문제를 고려하지 않는 database입니다.
이는 곧 각 튜플(Row)을 구성하는 attribute(속성, 필드)가 딱 하나만(!) 존재하는 것을 의미하기도 합니다.
즉, dbm은 rdbm 개념으로 본다면, 관계성이 존재하지 않는 key와 value의 단일 테이블임을 의미합니다.
이놈은 FreeBSD 같은 BSD 계열 unix에서 사용자 인증을 위한 passwd 파일용으로 사용되고,
OpenLDAP 같은 응용 데이터베이스(?) 프로그램의 내부 엔진으로 사용되고,
웹검색엔진인 htDig에서 내부 엔진으로 사용되고 있습니다.
즉, 버클리 DB 패키지를 설치하고 그것으로 바로 어떤 서비스를 하겠다는 것이 아니라, 그 어떤 서비스를 위한 데이터베이스 그 자체를 만들어서 사용하는 API 입니다. 버클리 DB 패키지 안에는 이렇게 만들어질 그 db 파일들을 쉽게 조작할 수있는 (dump, load(create) 간단한 프로그램들을 포함하고 있을 뿐입니다.
즉, 버클리 db를 이용한 어떤 프로그램을 만들고자 한다면,
예를 들어서 방명록을 만든다면,
그 버클리 DB 조작 API를 이용하는 방명록 DB 조작 함수들을 만들어서 사용해야합니다.
간단하게 전화번호부 같은 것을 만들어보시면 대강의 개념을 잡으실 수 있을겝니다.
이 버클리 DB의 장점은 그 엄청난 존재의 가벼움(-.-)에 있습니다.
btree로 인덱싱을 잘(!) 만들고, hash로 마스터를 잘(!) 만들면,
웬만한 시스템에서도 웹상에서 수천명이 붙어도 거뜬히 처리해 낼 수 있을겝니다. 문제는 웹서버가 견뎌낼 것인가... 이것이 문제겠지만.
|