버클리 DB

Berkeley DB
버클리 DB
원저작자Sleepycat Software의 Margo Seltzer와 Keith Bostic
개발자Sleepycat Software(나중에 Oracle Corporation)
초기 릴리즈1994년, 28년(연간)
안정된 릴리스
18.1.40 / 2020년
5월 29일, 2년 전(2020-05-29)
기입처C
운영 체제Windows, Unix와 같은
크기Windows x86에서 컴파일된 최대 1244 kB
유형임베디드 데이터베이스, NoSQL 데이터베이스
면허증.이중 라이선스(GNU Affero General Public License 및 독점 라이선스)
웹 사이트www.oracle.com/database/berkeley-db/

Berkeley DB(BDB)는 키/값 데이터를 위한 임베디드 데이터베이스 소프트웨어 라이브러리이며 오픈 소스 소프트웨어에서 역사적으로 중요한 역할을 합니다.Berkeley DB는 C++, C#, Java, Perl, PHP, Python, Ruby, Smalltalk, Tcl 및 기타 많은 프로그래밍 언어에 대한 API 바인딩과 함께 C로 작성됩니다.BDB는 임의의 키/데이터 쌍을 바이트 배열로 저장하며 단일 키에 대해 여러 데이터 항목을 지원합니다.Berkeley DB는 데이터베이스 트랜잭션, 다중 버전 동시성 제어 및 미리 쓰기 로깅을 포함한 고급 데이터베이스 기능을 가지고 있지만 관계형 [2]데이터베이스는 아닙니다.BDB는 대부분의 Unix 계열 및 Windows 시스템, 실시간 운영 체제 등 다양한 운영 체제에서 실행됩니다.

BDB는 1996년부터 2006년까지 Sleepycat Software에 의해 상업적으로 지원되고 개발되었습니다.Sleepycat Software는 2006년 2월에 Oracle Corporation에 인수되어 C Berkeley DB 라이브러리를 개발 및 판매하고 있습니다.2013년 Oracle은 AGPL [3][4]라이센스로 BDB 라이센스를 재지정했습니다.2022년 현재 Bloomberg LP는 원래Sleepycat 허용 라이선스에 따라 Comdb2 데이터베이스 내에서 BDB의 포크를 계속 개발하고 있습니다.

기원.

Berkeley DB는 Unified 운영 체제의 BSD인 Berkeley 버전의 일부로서 버클리 캘리포니아 대학에서 시작되었습니다.4.3 이후BSD(1986)의 개발자는 BSD가 파생된 원래의 AT&T Unix에서 발생하는 모든 코드를 제거하거나 대체하려고 시도했다.이를 위해 Unix 데이터베이스 [5]패키지를 다시 작성해야 했습니다.Seltzer와 Yigit은[6] AT&T 특허의 영향을 받지 않고 기존 dbm 라이브러리를 능가하는 온디스크 해시 테이블을 새로 만들었습니다.버클리 DB 자체는 1991년에 처음 출시되었으며 이후 4.4에 포함되었습니다.BSD.[5] 1996년에 Netscape는 Netscape의[7] LDAP 서버 및 Netscape 브라우저대한 요구사항에 적합하도록 Berkeley DB의 작성자들에게 라이브러리를 개선 및 확장해 줄 것을 요청하였다. 요청으로 Sleepycat Software가 탄생했습니다.이 회사는 2006년 2월 Oracle Corporation에 인수되어 버클리 DB의 개발 및 판매를 계속하고 있습니다.

버클리 DB는 최초 출시 이후 다양한 버전을 거쳤습니다.각 메이저 릴리스 사이클에서는 제품에 기능을 추가하기 위해 일반적으로 이전 기능 외에 하나의 새로운 주요 기능이 도입되었습니다.1.x 릴리즈는 키/밸류 데이터 스토리지 관리에 중점을 두고 있으며 "데이터 스토어"(DS)라고 불립니다.2.x 릴리스에는 데이터에 동시에 액세스할 수 있는 잠금 시스템이 추가되었습니다.이를 "동시 데이터 저장소"(CDS)라고 합니다.3.x 릴리스에는 트랜잭션 및 복구용 로깅 시스템인 "Transactional Data Store"(TDS)가 추가되었습니다.4.x 릴리스에서는 로그 레코드를 복제하고 분산된 고가용성 싱글 마스터 멀티 리플리카 데이터베이스를 작성하는 기능이 추가되었습니다.이것을 「하이 어베이러빌리티」(HA) 기능 세트라고 부릅니다.Berkeley DB의 발전으로 인해 API의 사소한 변경이나 로그 형식이 변경되는 경우가 종종 있지만 데이터베이스 형식이 변경된 경우는 거의 없습니다.Berkeley DB HA는 이전 릴리스의 로그 레코드를 읽고 적용할 수 있는 기능을 유지함으로써 버전 간에 온라인 업그레이드를 지원합니다.

FreeBSDOpenBSD 운영체제는 호환성을 이유로 [8][dubious ]Berkeley DB 1.8x를 계속 사용합니다.Linux 기반 운영체제는 일반적으로 오래된 인터페이스/파일을 사용하는 응용 프로그램에 적합한 여러 버전을 포함하고 있습니다.

6.0.21(Oracle 12c) 릴리스 이후 모든 Berkeley DB 제품은 GNU [9][10]AGPL로 라이선스가 부여됩니다.이전에는 Berkeley DB는 4절 BSD 라이선스(버전 2.0 이전)와 Sleepycat Public License(OSI가 승인오픈소스 라이선스) 및 FSF 라이선스로 재배포되었습니다.제품에는 완전한 소스 코드, 빌드 스크립트, 테스트 스위트 및 설명서가 포함되어 있습니다.라이센스 조건과 함께 포괄적인 기능을 통해 많은 자유 및 오픈 소스 소프트웨어에서 사용할 수 있게 되었습니다.GNU AGPL의 조건을 준수하고 싶지 않거나 Sleepycat Public License와 함께 이전 버전을 사용하고 싶지 않은 고객은 Oracle Corporation에서 재배포를 위해 다른 독점 라이선스를 구입할 수 있습니다.이 기술을 이중 라이선스라고 합니다.

Berkeley DB에는 일부 과거의 Unix 데이터베이스 라이브러리(dbm, ndbm 및 hsearch)(메모리 내 해시 [13]테이블을 만들기 위한 시스템 V 및 POSIX 라이브러리)에 대한 호환성 인터페이스가 포함되어 있습니다.

아키텍처

Berkeley DB는 관계형 데이터베이스 관리 시스템과 같은 다른 데이터베이스 시스템보다 훨씬 단순한 아키텍처를 가지고 있습니다.예를 들어 SQLite와 마찬가지로 서버/클라이언트 모델을 기반으로 하지 않으며 네트워크 액세스를 지원하지 않습니다.프로그램은 처리 인 API 호출을 사용하여 데이터베이스에 액세스합니다.Oracle은 널리 사용되는 SQLite API를 기반으로 11g R2 릴리즈에서 Berkeley DB(스토리지에 Berkeley DB 사용)[14]에 SQLite 버전을 추가했습니다.

데이터베이스에 액세스 하는 프로그램은, 데이터가 레코드에 격납되는 방법을 자유롭게 결정할 수 있다.버클리 DB는 레코드의 데이터에 제약을 가하지 않습니다.레코드와 키의 길이는 모두 최대 4기가바이트입니다.

Berkeley DB는 단순한 아키텍처임에도 불구하고 ACID 트랜잭션, 세분화된 잠금, 백업 및 복제같은 많은 고급 데이터베이스 기능을 지원합니다.

Oracle Corporation에서 "Berkeley DB"라는 이름을 사용

Oracle Corporation은 Berkeley DB라는 이름을 3가지 다른 제품에 사용합니다.이 중 2개는 BDB가 [15]아닙니다.

  1. Berkeley DB, 이 문서의 주제인 C 데이터베이스 라이브러리
  2. Berkeley DB Java Edition,[16] C 라이브러리를 본떠 설계되었지만 그 외에는 관련이 없는 순수 Java 라이브러리
  3. Berkeley DB XML,[17] XQuery를 지원하며 C 데이터베이스 라이브러리의 레거시 버전을 포함하는 C++ 프로그램

아직 버클리 DB를 사용하는 오픈 소스 프로그램

BDB는 한때 매우 널리 보급되었지만 2013년부터 사용량이 급격히 감소했습니다(라이센스 섹션 참조).여전히 데이터 스토리지에 Berkeley DB를 사용하는 주요 소프트웨어는 다음과 같습니다.

  • Bitcoin Core – Bitcoin 암호 화폐의 첫 번째 구현은 하나의 기능에[18] 2009 Berkeley DB 4.8을 사용합니다.
  • 보고필터 – 기본적으로 버클리 DB를 사용하여 단어 목록을[19] 저장하는 자유/오픈 소스 스팸 필터
  • 시타델 – 메시지 베이스를 포함한 모든 데이터 저장소를 버클리 DB에 보관하는 무료/오픈 소스 그룹웨어 플랫폼입니다.시타델은 Oracle BDB 라이센스와 호환되는 GPLv3에 따라 라이센스가 부여됩니다.
  • Sendmail – Linux/Unix 시스템용 무료/오픈 소스 MTA는 더 이상 널리 사용되지 않습니다.
  • Spamassin – 무료/오픈 소스 안티스팸 응용 프로그램

라이선스

Berkeley DB V2.0 이상은 이중 라이센스로 제공됩니다.

  1. Oracle 상용 라이선스
  2. GNU AGPL [21]v3

2013년에 오픈 소스 라이센스를 Sleepycat 라이센스에서 AGPL로 전환한 것은 오픈 소스 소프트웨어에 큰 영향을 미쳤습니다.BDB는 라이브러리이기 때문에 BDB에 링크하는 모든 애플리케이션은 AGPL 호환 라이선스로 해야 합니다.많은 오픈 소스 애플리케이션과 모든 클로즈드 소스 애플리케이션은 AGPL과 호환되기 위해 잔존해야 합니다.이것은 많은 개발자와 오픈 소스 운영체제에 받아들여지지 않습니다.2013년까지 BDB에 대한 많은 대안이 있었고, Debian Linux는 LMDB(Lightning Memory-Mapped Database)를 선호하며 버클리 DB를 완전히 폐기하기로 결정한 전형적인 사례였습니다.[22]

레퍼런스

  1. ^ "Oracle Berkeley DB Downloads". Retrieved 27 September 2020.
  2. ^ Berkeley DB 참조 가이드: Berkeley DB가 아닌 것은 무엇입니까?Doc.gnu-darwin.org(2001-05-31)2013-09-18에 회수.
  3. ^ "Major Release: Berkeley DB 12gR1 (12.1.6.0)". Open Source Projects at Oracle. 2013-06-10. Archived from the original on 2013-12-05. Retrieved 2021-04-11.
  4. ^ Nathan, Willis (2013-07-10). "Debian, Berkeley DB, and AGPLv3". Linux Weekly News. Archived from the original on 2013-07-22.
  5. ^ a b Olson, Michael A.; Bostic, Keith; Seltzer, Margo (1999). "Berkeley DB" (PDF). Proc. FREENIX Track, USENIX Annual Tech. Conf. Retrieved October 20, 2009.
  6. ^ Seltzer, Margo; Yigit, Ozan (1991). "A New Hashing Package for UNIX". Proc. USENIX Winter Tech. Conf. Retrieved October 20, 2009.
  7. ^ Brunelli, Mark (March 28, 2005). "A Berkeley DB primer". Enterprise Linux News. Retrieved December 28, 2008.
  8. ^ "db(3)". Retrieved April 12, 2009.
  9. ^ [버클리 DB 발표] 메이저릴리즈: Berkeley DB 12gR1(12.1.6.0).2013년 7월 5일 취득. (AGPL에 기재되어 있지만 소스 아카이브는 6.0.19의 BSD-4-Clause 조건을 선언합니다.)
  10. ^ "Snapshot of the 6.0.19 source at the time".
  11. ^ "The Sleepycat License". Open Source Initiative. October 31, 2006. Retrieved December 28, 2008.
  12. ^ "Licenses". Free Software Foundation. December 10, 2008. Archived from the original on December 16, 2008. Retrieved December 28, 2008.
  13. ^ "Compatibility with historic UNIX interfaces". docs.oracle.com. Retrieved 2019-11-20.
  14. ^ "Twitter / Gregory Burd: @humanications We didn't r ..."
  15. ^ "Oracle Berkeley DB Downloads: Latest Production Releases".
  16. ^ "Oracle Berkeley DB Java Edition". Archived from the original on 2017-07-11.
  17. ^ "Berkeley DB XML". Archived from the original on 2016-07-18.
  18. ^ "Release Notes for Bitcoin 0.8.0 2013".
  19. ^ "bogofilter -- A free/open source Bayesian Spam Filter / Code (Git) / [93b68e] /bogofilter/README". sourceforge.net. Retrieved 2020-07-17.
  20. ^ "Download, license and sales information". Nov 30, 2017.
  21. ^ "Major Release: Berkeley DB 12gR1 (12.1.6.0)". June 10, 2013. Retrieved July 15, 2013.
  22. ^ Ondřej Surý (June 19, 2014). "New project goal: Get rid of Berkeley DB (post jessie)". debian-devel (Mailing list). Debian.

외부 링크