Jump to content

Berkeley DB: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
BDB is still AGPLv3, reverting that modification. Adding JE licensing as a separate note.
Rescuing 1 sources and tagging 0 as dead. #IABot (v1.4.2)
Line 36: Line 36:
The [[FreeBSD]] and [[OpenBSD]] operating systems continue to use Berkeley DB 1.8x for compatibility reasons;<ref>{{cite web|url=http://www.freebsd.org/cgi/man.cgi?query=db&apropos=0&sektion=0&manpath=FreeBSD+7.1-RELEASE&format=html |title=db(3) |accessdate=April 12, 2009}}</ref>{{dubious|date=November 2015}} Linux-based operating systems commonly include several versions to accommodate for applications still using older interfaces/files.
The [[FreeBSD]] and [[OpenBSD]] operating systems continue to use Berkeley DB 1.8x for compatibility reasons;<ref>{{cite web|url=http://www.freebsd.org/cgi/man.cgi?query=db&apropos=0&sektion=0&manpath=FreeBSD+7.1-RELEASE&format=html |title=db(3) |accessdate=April 12, 2009}}</ref>{{dubious|date=November 2015}} Linux-based operating systems commonly include several versions to accommodate for applications still using older interfaces/files.


Starting with the 6.0/12c releases, all Berkeley DB products are licensed under the [[GNU Affero General Public License|GNU AGPL]].<ref>[https://oss.oracle.com/pipermail/bdb/2013-June/000056.html &#91;Berkeley DB Announce&#93; Major Release: Berkeley DB 12gR1 (12.1.6.0)]. Retrieved July 5, 2013.</ref> Berkeley DB JE 7.3.7 is licensed under the Apache License, Version 2.0 . Previously Berkeley DB was redistributed under the 4-clause [[BSD license]] (before version 2.0), and the Sleepycat Public License, which is an [[Open Source Initiative|OSI]]-approved [[open-source license]] as well as an [[Free Software Foundation|FSF]]-approved [[free software license]].<ref>{{cite web|url=http://www.opensource.org/licenses/sleepycat.php |title=The Sleepycat License | publisher=[[Open Source Initiative]] |date=October 31, 2006 |accessdate=December 28, 2008}}</ref><ref>{{cite web|url=http://www.fsf.org/licensing/licenses/index_html#GPLCompatibleLicenses |title=Licenses |publisher=[[Free Software Foundation]] |date=December 10, 2008 |accessdate=December 28, 2008}}</ref> The product ships with complete source code, build script, test suite, and documentation. The code quality and general utility along with the licensing terms have led to its use in a multitude of [[free and open-source software]]. Those who do not wish to abide by the terms of the GNU AGPL, or use an older version with the Sleepycat Public License, have the option of purchasing another [[proprietary software license|proprietary license]] for redistribution from [[Oracle Corporation]]. This technique is called [[Dual license|dual licensing]]. Different versions of Berkeley DB (DB, JE, XML) may have different licensing terms.
Starting with the 6.0/12c releases, all Berkeley DB products are licensed under the [[GNU Affero General Public License|GNU AGPL]].<ref>[https://oss.oracle.com/pipermail/bdb/2013-June/000056.html &#91;Berkeley DB Announce&#93; Major Release: Berkeley DB 12gR1 (12.1.6.0)]. Retrieved July 5, 2013.</ref> Berkeley DB JE 7.3.7 is licensed under the Apache License, Version 2.0 . Previously Berkeley DB was redistributed under the 4-clause [[BSD license]] (before version 2.0), and the Sleepycat Public License, which is an [[Open Source Initiative|OSI]]-approved [[open-source license]] as well as an [[Free Software Foundation|FSF]]-approved [[free software license]].<ref>{{cite web|url=http://www.opensource.org/licenses/sleepycat.php |title=The Sleepycat License | publisher=[[Open Source Initiative]] |date=October 31, 2006 |accessdate=December 28, 2008}}</ref><ref>{{cite web|url=http://www.fsf.org/licensing/licenses/index_html#GPLCompatibleLicenses |title=Licenses |publisher=[[Free Software Foundation]] |date=December 10, 2008 |accessdate=December 28, 2008}}</ref> The product ships with complete source code, build script, test suite, and documentation. The code quality and general utility along with the licensing terms have led to its use in a multitude of [[free and open-source software]]. Those who do not wish to abide by the terms of the GNU AGPL, or use an older version with the Sleepycat Public License, have the option of purchasing another [[proprietary software license|proprietary license]] for redistribution from [[Oracle Corporation]]. This technique is called [[Dual license|dual licensing]]. Different versions of Berkeley DB (DB, JE, XML) may have different licensing terms.


Berkeley DB includes compatibility interfaces for some historic Unix database libraries: [[dbm]], [[ndbm]] and hsearch (a [[UNIX System V|System V]] library for creating in-memory [[hash table]]s).
Berkeley DB includes compatibility interfaces for some historic Unix database libraries: [[dbm]], [[ndbm]] and hsearch (a [[UNIX System V|System V]] library for creating in-memory [[hash table]]s).

Revision as of 12:02, 18 July 2017

Berkeley DB
Original author(s)Margo Seltzer and Keith Bostic of Sleepycat Software
Developer(s)Sleepycat Software, later Oracle Corporation
Initial release1994; 30 years ago (1994)
Stable release
6.2 / JE (7.4) / April 18, 2016; 8 years ago (2016-04-18)
Written inC
Operating systemWindows, Unix-like
Size~1244 kB compiled on Windows x86
TypeEmbedded database, NoSQL Database
Licensedual licensed (GNU Affero General Public License and commercial permissive license) (version 6.x and upwards)
Sleepycat license (versions 2.0-5.x)
4-clause BSD license (versions 1.x) / JE is licensed under Apache License, Version 2.0.
Websitewww.oracle.com/us/products/database/berkeley-db/index.html

Berkeley DB (BDB) is a software library intended to provide a high-performance embedded database for key/value data. Berkeley DB is written in C with API bindings for C++, C#, Java, Perl, PHP, Python, Ruby, Smalltalk, Tcl, and many other programming languages. BDB stores arbitrary key/data pairs as byte arrays, and supports multiple data items for a single key. Berkeley DB is not a relational database.[1]

BDB can support thousands of simultaneous threads of control or concurrent processes manipulating databases as large as 256 terabytes,[2] on a wide variety of operating systems including most Unix-like and Windows systems, and real-time operating systems.

BDB was commercially supported and developed by Sleepycat Software from 1996 to 2006. This company was acquired by Oracle Corporation in February 2006, which continues to develop and sell Berkeley DB. Under Oracle's stewardship, "Berkeley DB" has become a common brand name for three distinct products: Oracle Berkeley DB, Berkeley DB Java Edition, and Berkeley DB XML. These three products all share a common ancestry and are currently under active development.

Origin

Berkeley DB originated at the University of California, Berkeley as part of BSD, Berkeley's version of the Unix operating system. After 4.3BSD (1986), the BSD developers attempted to remove or replace all code originating in the original AT&T Unix from which BSD was derived. In doing so, they needed to rewrite the Unix database package.[3] Seltzer and Yigit[4] created a new database, unencumbered by any AT&T patents: an on-disk hash table that outperformed the existing Dbm libraries. Berkeley DB itself was first released in 1991 and later included with 4.4BSD.[3] In 1996 Netscape requested that the authors of Berkeley DB improve and extend the library, then at version 1.86, to suit Netscape's requirements for an LDAP server[5] and for use in the Netscape browser. That request led to the creation of Sleepycat Software. This company was acquired by Oracle Corporation in February 2006, which continues to develop and sell Berkeley DB.

Since its initial release, Berkeley DB has gone through various versions. Each major release cycle has introduced a single new major feature generally layering on top of the earlier features to add functionality to the product. The 1.x releases focused on managing key/value data storage and are referred to as "Data Store" (DS). The 2.x releases added a locking system enabling concurrent access to data. This is what is known as "Concurrent Data Store" (CDS). The 3.x releases added a logging system for transactions and recovery, called "Transactional Data Store" (TDS). The 4.x releases added the ability to replicate log records and create a distributed highly available single-master multi-replica database. This is called the "High Availability" (HA) feature set. Berkeley DB's evolution has sometimes led to minor API changes or log format changes, but very rarely have database formats changed. Berkeley DB HA supports online upgrades from one version to the next by maintaining the ability to read and apply the prior release's log records.

The FreeBSD and OpenBSD operating systems continue to use Berkeley DB 1.8x for compatibility reasons;[6][dubiousdiscuss] Linux-based operating systems commonly include several versions to accommodate for applications still using older interfaces/files.

Starting with the 6.0/12c releases, all Berkeley DB products are licensed under the GNU AGPL.[7] Berkeley DB JE 7.3.7 is licensed under the Apache License, Version 2.0 . Previously Berkeley DB was redistributed under the 4-clause BSD license (before version 2.0), and the Sleepycat Public License, which is an OSI-approved open-source license as well as an FSF-approved free software license.[8][9] The product ships with complete source code, build script, test suite, and documentation. The code quality and general utility along with the licensing terms have led to its use in a multitude of free and open-source software. Those who do not wish to abide by the terms of the GNU AGPL, or use an older version with the Sleepycat Public License, have the option of purchasing another proprietary license for redistribution from Oracle Corporation. This technique is called dual licensing. Different versions of Berkeley DB (DB, JE, XML) may have different licensing terms.

Berkeley DB includes compatibility interfaces for some historic Unix database libraries: dbm, ndbm and hsearch (a System V library for creating in-memory hash tables).

Architecture

Berkeley DB has an architecture notably simpler than that of other database systems like relational database management systems. For example, like SQLite, it does not provide support for network access – programs access the database using in-process API calls. Oracle added support for SQL in 11g R2 release based on the popular SQLite API by including a version of SQLite in Berkeley DB.[10] There is third party support for PL/SQL in Berkeley DB via a commercial product named Metatranz StepSqlite.[11]

A program accessing the database is free to decide how the data is to be stored in a record. Berkeley DB puts no constraints on the record's data. The record and its key can both be up to four gigabytes long.

Despite having a simple architecture, Berkeley DB supports many advanced database features such as ACID transactions, fine-grained locking, hot backups and replication.

Editions

The name "Berkeley DB" is given to three different products:

  1. Berkeley DB – the current version as of April 18, 2016 is 6.2.
  2. Berkeley DB Java Edition – the current version as of March, 2017 is 7.3.7
  3. Berkeley DB XML – the current version as of March 14, 2016 is 6.0.18.

Each edition has separate database libraries, despite the common branding. The first is the traditional Berkeley DB, written in C. It contains several database implementations, including a B-tree and one built around extensible hashing. It supports multiple language bindings, including C/C++, Java (via JNI), C# .NET, Perl and Python.

Berkeley DB Java Edition (JE) is a pure Java database management library. Its design resembles that of Berkeley DB without replicating it exactly, and has a feature set that includes many of those found in the traditional Berkeley DB and others that are specific to the Java Edition. It has a log structured storage architecture, which gives it different performance and concurrency characteristics. Three APIs are available – a Direct Persistence Layer which is "Plain Old Java Objects" (POJO); one which is based on the Java Collections Framework (an object persistence approach); and one based on the traditional Berkeley DB API. The Berkeley DB Java Edition High Availability option (Replication) is available. Note that traditional Berkeley DB also supports a Java API, but it does so via JNI and thus requires an installed native library.

The Berkeley DB XML database specializes in the storage of XML documents, supporting XQuery via XQilla. It is implemented as an additional layer on top of (a legacy version of) Berkeley DB and the Xerces library. DB XML is written in C++ and supports multiple language bindings, including C++, Java (via JNI), Perl and Python.

Programs that use Berkeley DB

Berkeley DB provides the underlying storage and retrieval system of several LDAP servers, database systems, and many other proprietary and free/open source applications. Notable software that use Berkeley DB for data storage include:

Current users

Past users

  • MySQL database system – MySQL included a BDB data storage backend prior to v5.1
  • OpenLDAP – A free/open source implementation of the Lightweight Directory Access Protocol (LDAP). Deprecated in favor of LMDB
  • Postfix – A fast, secure, easy-to-administer MTA for Linux/Unix systems. Deprecated in favor of LMDB

Licensing

Oracle Corporation makes versions 2.0 and higher of Berkeley DB available under a dual license.[14] The Sleepycat license is a 2-clause BSD license with an additional copyleft clause similar to the GNU GPL version 2's Section 3, requiring source code of an application using Berkeley DB to be made available for a nominal fee. Oracle Berkeley DB JE 7.3.7 is licensed under the Apache License, Version 2.0 .

Sleepycat License (sometimes referred to as Berkeley Database License or the Sleepycat Public License) is an OSI-approved open source license used by Oracle Corporation for the open-source editions of Berkeley DB, Berkeley DB Java Edition and Berkeley DB XML embedded database products older than version 6.0.20. It was controversial due to the different treatment received from the Free Software Foundation,[15] (that qualifies as a free software license, and is compatible with the GPL), while the Apache Foundation does not consider it an acceptable license, for their libraries (or own code), along with other copyleft ones;[16]

As of Berkeley DB release 6.0.20, the Oracle Corporation has relicensed Berkeley DB under the GNU AGPL.[17] Oracle Berkeley DB JE 7.3.7 is licensed under the Apache License, Version 2.0.

As of July 2011, Oracle's list price for non-copyleft Berkeley DB licenses varies between US$900 and 13,800 per processor.[18] Embedded usage within the Oracle Retail Predictive Application Server (RPAS) does not require an additional license payment.

See also

References

  1. ^ Berkeley DB Reference Guide: What is Berkeley DB not?. Doc.gnu-darwin.org (2001-05-31). Retrieved on 2013-09-18.
  2. ^ http://doc.gnu-darwin.org/am_misc/dbsizes.html Berkeley DB Reference Guide: Database limits Retrieved on 2013-09-19
  3. ^ a b Olson, Michael A.; Bostic, Keith; Seltzer, Margo (1999). "Berkeley DB" (PDF). Proc. FREENIX Track, USENIX Annual Tech. Conf. Retrieved October 20, 2009. {{cite conference}}: Unknown parameter |booktitle= ignored (|book-title= suggested) (help)
  4. ^ Seltzer, Margo; Yigit, Ozan (1991). "A New Hashing Package for UNIX". Proc. USENIX Winter Tech. Conf. Retrieved October 20, 2009. {{cite conference}}: Unknown parameter |booktitle= ignored (|book-title= suggested) (help)
  5. ^ Brunelli, Mark (March 28, 2005). "A Berkeley DB primer". Enterprise Linux News. Retrieved December 28, 2008.
  6. ^ "db(3)". Retrieved April 12, 2009.
  7. ^ [Berkeley DB Announce] Major Release: Berkeley DB 12gR1 (12.1.6.0). Retrieved July 5, 2013.
  8. ^ "The Sleepycat License". Open Source Initiative. October 31, 2006. Retrieved December 28, 2008.
  9. ^ "Licenses". Free Software Foundation. December 10, 2008. Archived from the original on December 16, 2008. Retrieved December 28, 2008. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  10. ^ "Twitter / Gregory Burd: @humanications We didn't r ..."
  11. ^ "Official Berkeley DB FAQ". Oracle Corporation. Retrieved March 30, 2010. Does Berkeley DB support PL/SQL?
  12. ^ RCE 35: PVFS Parallel Virtual FileSystem
  13. ^ "Voldemort source code package which includes the BDB integration". GitHub. Retrieved 2017-03-16. {{cite web}}: Cite has empty unknown parameter: |dead-url= (help)
  14. ^ "Open Source License for Berkeley DB". Oracle Corporation. For a license to use the Berkeley DB software under conditions other than those described here, or to purchase support for this software, please contact berkeleydb-info_us@oracle.com. {{cite web}}: |access-date= requires |url= (help); Missing or empty |url= (help)[dead link]
  15. ^ "Various Licenses and Comments about Them". Free Software Foundation.
  16. ^ "Which licenses may NOT be included within Apache products?".
  17. ^ "Major Release: Berkeley DB 12gR1 (12.1.6.0)". June 10, 2013. Retrieved July 15, 2013.
  18. ^ http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf