Base de datos de Berkeley
Berkeley DB (BDB) es una biblioteca de software de base de datos incrustada sin mantenimiento para datos clave/valor, históricamente importante 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 de clave/datos arbitrarios como matrices de bytes y admite varios elementos de datos para una sola clave. Berkeley DB no es una base de datos relacional, aunque tiene funciones de base de datos avanzadas 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 los sistemas operativos en tiempo real.
BDB fue desarrollado y respaldado comercialmente por Sleepycat Software de 1996 a 2006. Sleepycat Software fue adquirido por Oracle Corporation en febrero de 2006, quien continuó desarrollando y vendiendo la biblioteca C Berkeley DB. En 2013, Oracle volvió a obtener la licencia de BDB bajo la licencia AGPL. A partir de 2022, Oracle dejó de desarrollar BDB. 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.
Origen
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 que se originaba en el AT&T Unix original del que se derivó BSD. Al hacerlo, necesitaban reescribir el paquete de base de datos de Unix. Seltzer y Yigit crearon una nueva base de datos, libre de patentes de AT&T: una tabla hash en disco que superó a las bibliotecas dbm existentes. Berkeley DB se lanzó por primera vez en 1991 y luego se incluyó con 4.4BSD. En 1996, Netscape solicitó que los autores de Berkeley DB mejoraran y ampliaran la biblioteca, entonces en la versión 1.86, para satisfacer los requisitos de Netscape para un servidor LDAP 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.
Desde su lanzamiento inicial, Berkeley DB ha pasado por varias versiones. Cada ciclo de lanzamiento principal ha introducido una sola característica principal nueva que generalmente se superpone a las características anteriores para agregar funcionalidad al producto. Las versiones 1.x se centraron en la gestión del almacenamiento de datos clave/valor y se denominan "Almacén de datos" (DS). Las versiones 2.x agregaron un sistema de bloqueo que permite el acceso simultáneo a los datos. Esto es lo que se conoce como "almacén de datos concurrentes" (CDS). Las versiones 3.x agregaron un sistema de registro para transacciones y recuperación, llamado "Almacén de datos transaccionales" (TDS). Las versiones 4.x agregaron la capacidad de replicar registros y crear una base de datos distribuida de alta disponibilidad con múltiples réplicas maestras. Esto se denomina "Alta disponibilidad" (HA) conjunto de funciones. La evolución de Berkeley DB a veces ha llevado a cambios menores en la API o cambios en el formato de registro, pero muy rara vez han cambiado los formatos de la base de datos. Berkeley DB HA admite actualizaciones en línea de una versión a la siguiente manteniendo la capacidad de leer y aplicar los registros de la versión anterior.
Los sistemas operativos FreeBSD y OpenBSD siguen utilizando Berkeley DB 1.8x por motivos de compatibilidad; Los sistemas operativos basados en Linux suelen incluir varias versiones para adaptarse a las aplicaciones que aún utilizan interfaces/archivos más antiguos.
A partir de la versión 6.0.21 (Oracle 12c), todos los productos Berkeley DB tienen licencia bajo GNU AGPL. Previamente, Berkeley DB se redistribuyó 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. El producto se envía 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 gratuito y de código abierto. Quienes no deseen cumplir con los términos de GNU AGPL, o utilizar una versión anterior con la licencia pública de Sleepycat, tienen la opción de comprar otra licencia propietaria para su redistribución de Oracle Corporation. Esta técnica se denomina licencia dual.
Berkeley DB incluye interfaces de compatibilidad para algunas bibliotecas históricas de bases de datos de Unix: dbm, ndbm y hsearch (una biblioteca System V y POSIX para crear tablas hash en memoria).
Arquitectura
Berkeley DB tiene una arquitectura notablemente más simple que la de otros sistemas de bases de datos, como los sistemas de administración de bases de datos relacionales. Por ejemplo, al igual que SQLite y LMDB, no se basa en un modelo de servidor/cliente y no brinda soporte para el 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 (utiliza Berkeley DB para el almacenamiento).
Un programa que accede a la base de datos es libre 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 hasta cuatro gigabytes de longitud.
A pesar de tener una arquitectura simple, Berkeley DB es compatible con muchas características avanzadas de bases de datos, como transacciones ACID, bloqueo detallado, copias de seguridad activas y replicación.
Oracle Corporation uso del nombre "Berkeley DB"
El nombre "Berkeley DB" es utilizado por Oracle Corporation para tres productos diferentes, solo uno de los cuales es BDB:
- Berkeley DB, la biblioteca de bases de datos C que es el tema de este artículo
- Berkeley DB Java Edition, una biblioteca Java pura cuyo diseño está modelado después de la biblioteca C pero no está relacionado
- Berkeley DB XML, un programa C++ que admite XQuery, y que incluye una versión heredada de la biblioteca de bases de datos C
Programas de código abierto que todavía usan Berkeley DB
BDB alguna vez estuvo muy extendido, pero el uso se redujo drásticamente a partir de 2013 (consulte la sección de licencias). El software notable que todavía usa Berkeley DB para el almacenamiento de datos incluye:
- Bogofilter – Un filtro de spam de código libre/abierto que salva sus listas de palabras utilizando Berkeley DB por defecto
- Citadel – Una plataforma de groupware libre/abierto que mantiene todas sus tiendas de datos, incluyendo la base de mensajes, en Berkeley DB. Citadel está bajo la licencia GPLv3 que es compatible con la licencia Oracle BDB
- Sendmail – Una fuente libre/abierto MTA lanza por primera vez en 1983 para sistemas Linux/Unix y ya no se utiliza ampliamente
- Spamassassin – A free/open source anti-spam aplicación
Licencias
Berkeley DB V2.0 y superior está disponible con una licencia dual:
- Licencia comercial Oracle
- El GNU AGPL v3.
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 a ella debe estar bajo una licencia compatible con AGPL. Muchas aplicaciones de código abierto y todas las aplicaciones de código cerrado tendrían que volver a obtener la licencia para volverse compatibles con AGPL, lo que no era aceptable para muchos desarrolladores y sistemas operativos de código abierto. Para 2013, había muchas alternativas a BDB, y Debian Linux fue típica en su decisión de eliminar completamente Berkeley DB, con preferencia por Lightning Memory-Mapped Database (LMDB).
Contenido relacionado
Marca de orden de bytes
Sistemas micro electromecánicos
Realidad virtual