Berkeley DB ( BDB ) es una biblioteca de software de base de datos integrada para datos clave/valor , históricamente significativa en el software de código abierto . Berkeley DB está escrito en C con enlaces API para muchos otros lenguajes de programación . BDB almacena pares clave/datos arbitrarios como matrices de bytes y admite múltiples elementos de datos para una sola clave. Berkeley DB no es una base de datos relacional , [2] aunque tiene características de base de datos que incluyen transacciones de base de datos , control de concurrencia multiversión y registro de escritura anticipada . BDB se ejecuta en una amplia variedad de sistemas operativos , incluidos la mayoría de los sistemas similares a Unix y Windows , y sistemas operativos en tiempo real .
BDB fue desarrollado y apoyado comercialmente por Sleepycat Software desde 1996 hasta 2006. Sleepycat Software fue adquirida por Oracle Corporation en febrero de 2006, que continuó desarrollando y vendiendo la biblioteca C Berkeley DB. En 2013, Oracle volvió a licenciar BDB bajo la licencia AGPL [3] [4] y lanzó nuevas versiones hasta mayo de 2020. Bloomberg LP continúa desarrollando una bifurcación de la versión 2013 de BDB dentro de su base de datos Comdb2 , bajo la licencia permisiva original de Sleepycat .
Berkeley DB se originó en la Universidad de California, Berkeley como parte de BSD , la versión de Berkeley del sistema operativo Unix . Después de 4.3BSD (1986), los desarrolladores de BSD intentaron eliminar o reemplazar todo el código originado en el AT&T Unix original del que se derivó BSD. Para ello, tuvieron que reescribir el paquete de base de datos de Unix. [5] Seltzer y Yigit [6] crearon una nueva base de datos, libre de cualquier patente de AT&T: una tabla hash en disco que superó a las bibliotecas dbm existentes . Berkeley DB en sí se lanzó por primera vez en 1991 y luego se incluyó con 4.4BSD. [5] En 1996, Netscape solicitó a los autores de Berkeley DB que mejoraran y extendieran la biblioteca, entonces en la versión 1.86, para satisfacer los requisitos de Netscape para un servidor LDAP [7] y para su uso en el navegador Netscape . Esa solicitud condujo a la creación de Sleepycat Software . Esta empresa fue adquirida por Oracle Corporation en febrero de 2006.
Las versiones 1.x de Berkeley DB se centraron en la gestión del almacenamiento de datos de clave/valor y se las conoce como "Almacén de datos" (DS). Las versiones 2.x añadieron un sistema de bloqueo que permite el acceso simultáneo a los datos. Esto es lo que se conoce como "Almacén de datos simultáneos" (CDS). Las versiones 3.x añadieron un sistema de registro para transacciones y recuperación, llamado "Almacén de datos transaccionales" (TDS). Las versiones 4.x añadieron la capacidad de replicar registros de registro y crear una base de datos distribuida de un solo maestro y múltiples réplicas de alta disponibilidad. Esto se denomina el conjunto de características de "alta disponibilidad" (HA). La evolución de Berkeley DB a veces ha dado lugar a cambios menores en la API o en el formato de registro, pero muy rara vez han cambiado los formatos de base de datos. Berkeley DB HA admite actualizaciones en línea de una versión a la siguiente al mantener la capacidad de leer y aplicar los registros de registro de la versión anterior.
A partir de la versión 6.0.21 (Oracle 12c), todos los productos Berkeley DB tienen licencia GNU AGPL . [8] [9] Anteriormente, Berkeley DB se redistribuía bajo la licencia BSD de 4 cláusulas (antes de la versión 2.0) y la Licencia Pública Sleepycat, que es una licencia de código abierto aprobada por OSI , así como una licencia de software libre aprobada por FSF . [10] [11] El producto se entrega con el código fuente completo, el script de compilación, el conjunto de pruebas y la documentación. La característica integral junto con los términos de la licencia han llevado a su uso en una multitud de software libre y de código abierto . Aquellos que no deseen cumplir con los términos de la GNU AGPL, o usar una versión anterior con la Licencia Pública Sleepycat, tienen la opción de comprar otra licencia propietaria para su redistribución de Oracle Corporation . Esta técnica se llama licencia dual .
Berkeley DB incluye interfaces de compatibilidad para algunas bibliotecas de bases de datos históricas de Unix: dbm , ndbm y hsearch (una biblioteca System V y POSIX para crear tablas hash en memoria ). [12]
Berkeley DB tiene una arquitectura notablemente más simple que los sistemas de administración de bases de datos relacionales . Al igual que SQLite y LMDB , no se basa en un modelo de servidor/cliente y no brinda soporte para acceso a la red: los programas acceden a la base de datos mediante llamadas API en proceso . Oracle agregó soporte para SQL en la versión 11g R2 basada en la popular API de SQLite al incluir una versión de SQLite en Berkeley DB (usa Berkeley DB para almacenamiento). [13]
Un programa que accede a la base de datos tiene la libertad de decidir cómo se almacenarán los datos en un registro. Berkeley DB no impone restricciones a los datos del registro. El registro y su clave pueden tener una longitud máxima de cuatro gigabytes.
Berkeley DB admite funciones de base de datos como transacciones ACID , bloqueo de grano fino , copias de seguridad activas y replicación .
Oracle Corporation utiliza el nombre "Berkeley DB" para tres productos diferentes, de los cuales sólo uno es BDB: [14]
BDB estuvo muy extendido en el pasado, pero su uso se redujo drásticamente a partir de 2013 (consulte la sección de licencias). Entre los programas de software más destacados que aún utilizan Berkeley DB para el almacenamiento de datos se incluyen:
Los sistemas operativos y lenguajes de código abierto como Perl y Python aún admiten las antiguas interfaces de BerkeleyDB. Los sistemas operativos FreeBSD y OpenBSD incluyen Berkeley DB 1.8x para admitir la llamada al sistema operativo dbopen()
[18] [19] utilizada por programas de contraseñas como pwb_mkdb
. [20] Los sistemas operativos Linux, incluidos los basados en Debian, [21] y Fedora [22] incluyen bibliotecas Berkeley DB 5.3.
Berkeley DB V2.0 y versiones superiores están disponibles bajo una licencia dual :
El cambio de la licencia de código abierto en 2013, de la licencia Sleepycat a la AGPL, tuvo un efecto importante en el software de código abierto. Dado que BDB es una biblioteca, cualquier aplicación que se vincule con ella debe estar bajo una licencia compatible con AGPL. Muchas aplicaciones de código abierto y todas las aplicaciones de código cerrado necesitarían volver a obtener una licencia para ser compatibles con AGPL, lo que no era aceptable para muchos desarrolladores y sistemas operativos de código abierto. En 2013, había muchas alternativas a BDB, y Debian Linux fue un ejemplo típico en su decisión de eliminar por completo Berkeley DB, con una preferencia por la base de datos Lightning Memory-Mapped Database (LMDB). [25]