Oracle Berkeley DB
Oracle Berkeley DB 제품군은 업계 선두의 임베드 가능한(embeddable) 오픈 소스 개발자용 데이터베이스로, 빠르고 안정적인 로컬 퍼시스턴스 환경을 제공하며, 별도의 관리를 전혀 필요로 하지 않는 솔루션입니다. Oracle Berkeley DB는 애플리케이션에 직접 연결되는 라이브러리로 제공됩니다. 애플리케이션은 원격 서버로 메시지를 보내는 대신 간단한 함수 호출만으로 데이터베이스를 이용하며, 따라서 클라이언트/서버 아키텍처의 성능 오버헤드를 피할 수 있습니다. 또 Oracle Berkeley DB는 SQL 쿼리 프로세싱의 오버헤드를 제거할 수 있게 하며, 예측 가능한 접근 패턴을 가진 애플리케이션의 성능 개선이 가능합니다.

Berkeley DB는 ACID 트랜잭션 및 복구 메커니즘, 락킹 메커니즘, 멀티-프로세스, 멀티-쓰레드를 이용한 동시성 관리, 핫/콜드 백업, 고가용성 애플리케이션을 위한 싱글-마스터 복제 환경 등 고전적인 관계형 데이터베이스에서 제공되는 것과 동일한 수준의 안정적인 데이터 스토리지 환경을 제공합니다 Berkeley DB는 메모리 또는 디스크 상에 존재하는 데이터베이스를 관리할 수 있으며, 애플리케이션이 프로그램적으로 런타임 관리 기능을 제공하므로 운영자에 의한 수작업 관리가 전혀 불필요합니다. Berkeley DB는 단순하고 빠르고, 작고, 안정적인 데이터베이스로서 설계되었습니다.
Berkeley DB는 다양한 시스템에 대한 복제를 지원하므로, 대규모 확장 환경에서의 응답시간을 보장하고 고가용성 솔루션을 위한 폴트 톨러런스를 구현하는 것이 가능합니다. Berkeley DB는 모든 업데이트를 지정된 마스터(master)로 전송하고, 마스터는 다수의 레플리카(replica)에 변경 사항을 자동으로 배포합니다. 워크로드는 여러 대의 레플리카에 분산되며, 시스템의 확장이 필요한 경우 언제든 새로운 레플리카를 추가로 배치할 수 있습니다. 레플리카 중 하나가 실패한 경우, 나머지 레플리카가 작업을 수행합니다. 마스터에 장애가 발생한 경우, 애플리케이션이 마스터 선정(election)을 요청함으로써 새로운 마스터를 지정할 수 있습니다. 새로운 마스터가 선정되면, 모든 레플리카가 새로운 마스터와 동기화되며, 서비스의 중단 없이 정상적인 프로세싱 작업을 계속할 수 있습니다.
Berkeley DB는 매우 유연한 구조를 가지므로, 개발자가 그 동작을 자유롭게 컨트롤할 수 있습니다. 따라서 다양한 애플리케이션에 적용이 가능하며 기업 내부적으로 개발한 커스텀 솔루션을 대체하는 용도로 활용될 수도 있습니다. 예를 들어, 개발자는 리소스의 할당 방식, 레코드 캐싱을 위해 사용되는 메모리의 양, 개별 테이블을 위해 사용되는 디스크 스토리지 구조, 내구성(durability)와 격리성(isolation)의 보장 방법, 복제 정책 등을 직접 컨트롤할 수 있습니다. 또 포팅, 통합, 디버깅, 최적화를 위한 모든 소스 코드가 제공됩니다.
Berkeley DB는 데이터를 로컬에 저장하는 애플리케이션을 위해 뛰어난 성능, 안정성, 확장성의 퍼시스턴스 환경을 제공하며, 온라인 상태에서 별도의 관리자 없이도 운영이 가능합니다. 또 예측 가능한 방식으로 데이터 접근이 가능하다는 장점이 있습니다.
주요 기능
데이터 저장
Berkeley DB는 다른 데이터베이스와 달리 추가적인 오버헤드를 수반하지 않고도 데이터에 쉽고 빠르게 접속할 수 있는 환경을 제공합니다. Berkeley DB는 애플리케이션 내부에서 실행 가능한 C 라이브러리의 형태로 구현되므로, 원격 데이터베이스 서버와의 인터프로세스 커뮤니케이션에 수반되는 지연 요소를 제거할 수 있습니다. 또 공유 캐시를 이용하여 대부분의 액티브 데이터를 메모리에 보관하므로, 디스크 I/O 또한 최소화됩니다.
- 로컬, 인-프로세스 데이터 스토리지
- 스키마 중립적, 애플리케이션 네이티브 데이터 포맷
- 인덱스 기반/순차적 데이터 인출 지원(Btree, Queue, Recno, Hash)
- 멀티-프로세스 및 멀티-쓰레드 지원
- 높은 동시성을 요구하는 시스템을 위한 정교하고 유연한 락킹 메커니즘
- 멀티-버전 동시성 컨트롤 (MVCC)
- 2차 인덱스의 지원
- 인-메모리 방식과, 디스크 방식을 동시 지원
- 온라인 Btree 압축 지원
- 온라인 Btree 디스크 용량 재확보 지원
- 온라인 상태에서 사용되지 않는 락을 제거
- 디스크 데이터 암호화(AES)
- 최대 4 GB의 레코드, 최대 256 TB의 테이블 지원
트랜잭션
Berkeley DB는 다른 데이터베이스와 마찬가지로 데이터를 안정적으로 저장하고 데이터 무결성을 보장합니다. Berkeley DB는 데이터베이스 작업을 그룹화하고 전체 작업이 성공하지 않는 경우 전체 작업의 커밋을 취소하는 기능을 제공합니다. 시스템에 장애가 발생한 경우에는 자동으로 복구가 수행되며, 부분적으로 완료된 트랜잭션을 롤백하여 시스템의 일관성을 보장합니다.
- ACID 원칙의 완벽한 지원
- 격리 레벨(isolation level) 선택 및 내구성(durability) 보장 (트랜잭션 단위로 설정 가능)
- 네스티드 트랜잭션(nested transaction) 지원
- 분산 트랜잭션 (XA)
- 재해 복구 및 일반 장애 복구 모드
- 복구 작업의 자동 순차화
- 유연한 데드락 감지 기능 (커스터마이즈 가능)
- 애플리케이션 별 로그 파일 저장 및 복구 지원
- 핫/콜드 백업, 로그 파일 아카이브, 풀 데이터베이스 덤프
복제
높은 시스템 확장성과 가용성이 요구되는 경우를 위해, Berkeley DB는 최신 복제 기능을 제공하고 여러 대의 시스템에 워크로드를 분산할 수 있게 합니다. 동일한 샤시 내에 존재하는 다른 보드로, 데이터 센터 내의 여러 서버로, 또는 지리적으로 분산된 위치로 데이터를 복제할 수 있습니다. 복제 시스템의 모든 속성(데이터 무결성, 트랜잭션 보장, 처리 속도, 네트워크 전송 등)이 커스터마이즈 가능하며 애플리케이션 요구사항에 따른 튜닝이 가능합니다.
- 싱글 마스터, 멀티 레플리카 모델
- 자동 페일오버/마스터 재선정(re-election)
- Paxos 호환 마스터 선정 알고리즘
- 새로운 레플리카를 언제든 그룹에 추가 가능
- 핫 스탠바이 지원
- 무중단 업그레이드
- 노드의 지리적 분산 가능
- 인-메모리 복제 옵션
- 클라이언트 간 복제
- 클라이언트 동기화를 위한 지연 시간 설정 가능
- 동기화 성능 조절
- 네트워크 전송 방식과 무관
- 수천 대의 레플리카 노드를 지원하는 검증된 확장성
- 신속한 개발을 위한 복제 프레임워크 지원
구축
Berkeley DB는 매우 유연하고 구축 및 통합이 용이한 제품입니다. Berkeley DB는 C 라이브러리 형태로 제공되어 애플리케이션과 함께 설치, 구성됩니다. Berkeley DB는 별도 관리자 없이 완벽한 운영이 가능하도록 설계되었으며, 따라서 모든 관리 기능은 프로그램에 의해 컨트롤됩니다. Berkeley DB는 매우 다양한 프로그램 언어와 운영체제 플랫폼을 지원하며, 초대규모 미션 크리티컬 애플리케이션에서 데스크탑/모바일 디바이스 애플리케이션에 이르는 수백만 고객 환경에서 검증된 솔루션입니다.
- 프로그램에 의한 관리 및 운영 – 운영자가 전혀 불필요
- 언어 지원 (C, C++, Java, Perl, Python, PHP, Tcl, Ruby 등)
- 운영체제 지원 (Linux, Windows, BSD UNIX, Solaris, Mac OS/X, VxWorks 및 POSIX 호환 운영체제)
- Microsoft Windows 인스톨러 지원
- Apache 통합 기능 제공
- RPC 기반 API
- 제한된 메모리 용량을 갖는 디바이스의 지원 (최소 400 KB의 메모리 공간 사용)
- 테라바이트 급 데이터, 수십억 개의 레코드를 지원하는 확장성
- 소스 코드 및 테스트 제품 포함
|