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/dato 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 tipo Unix y Windows , y sistemas operativos en tiempo real .
BDB fue desarrollado y respaldado 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 .
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 originado en el Unix original de AT&T del que se derivó BSD. Para ello, tuvieron que reescribir el paquete de base de datos Unix dbm . [ 5 ] Seltzer y Yigit [ 6 ] crearon una nueva base de datos, libre de cualquier patente de AT&T: una tabla hash en disco que superaba el rendimiento de las bibliotecas dbm existentes . Berkeley DB se lanzó por primera vez en 1991 y posteriormente se incluyó con 4.4BSD. [ 5 ] En 1996, Netscape solicitó a los autores de Berkeley DB que mejoraran y extendieran la biblioteca, que entonces estaba 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 llevó a la creación de Sleepycat Software . Esta empresa fue adquirida por Oracle Corporation en febrero de 2006. [ 8 ]
Las versiones 1.x de Berkeley DB se centraron en la gestión del almacenamiento de datos clave-valor y se denominan "Data Store" (DS). Las versiones 2.x añadieron un sistema de bloqueo que permite el acceso concurrente a los datos. Esto es lo que se conoce como "Concurrent Data Store" (CDS). Las versiones 3.x añadieron un sistema de registro para transacciones y recuperación, llamado "Transactional Data Store" (TDS). Las versiones 4.x añadieron la capacidad de replicar registros de log y crear una base de datos distribuida de alta disponibilidad con un único maestro y múltiples réplicas. Esto se denomina conjunto de características de "Alta Disponibilidad" (HA). La evolución de Berkeley DB ha conllevado en ocasiones cambios menores en la API o en el formato de los registros, pero muy rara vez se han modificado los formatos de las bases de datos. Berkeley DB HA admite actualizaciones en línea de una versión a otra manteniendo la capacidad de leer y aplicar los registros de log de la versión anterior.
A partir de la versión 6.0.21 (Oracle 12c), todos los productos de Berkeley DB se licencian bajo la GNU AGPL . [ 9 ] [ 10 ] Anteriormente, Berkeley DB se redistribuía bajo la licencia BSD de 4 cláusulas (antes de la versión 2.0) y la Sleepycat Public License, que es una licencia de código abierto aprobada por la OSI y una licencia de software libre aprobada por la FSF . [ 11 ] [ 12 ] El producto se entrega con el código fuente completo, el script de compilación, el conjunto de pruebas y la documentación. Esta característica integral, junto con los términos de la licencia, ha llevado a su uso en multitud de software libre y de código abierto . Quienes no deseen acatar los términos de la GNU AGPL o utilizar una versión anterior con la Sleepycat Public License, tienen la opción de adquirir 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 de bases de datos históricas de Unix: dbm , ndbm y hsearch (una biblioteca de System V y POSIX para crear tablas hash en memoria ). [ 13 ]
Arquitectura
Berkeley DB tiene una arquitectura notablemente más simple que los sistemas de gestión de bases de datos relacionales . Al igual que SQLite y LMDB , no se basa en un modelo cliente/servidor y no ofrece soporte para acceso a la red ; los programas acceden a la base de datos mediante llamadas a la API dentro del proceso . Oracle añadió 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 (que utiliza Berkeley DB para el almacenamiento). [ 14 ]
Un programa que accede a la base de datos puede decidir libremente cómo se almacenarán los datos en un registro. Berkeley DB no impone restricciones a los datos del registro. Tanto el registro como su clave pueden tener un tamaño máximo de cuatro gigabytes.
Berkeley DB admite características de base de datos como transacciones ACID , bloqueo granular , copias de seguridad en caliente y replicación .
Uso del nombre "Berkeley DB" por parte de Oracle Corporation
Oracle Corporation utiliza el nombre "Berkeley DB" para tres productos diferentes, de los cuales solo uno es BDB: [ 15 ]
- Berkeley DB, la biblioteca de bases de datos en C que es el tema de este artículo.
- Berkeley DB Java Edition, [ 16 ] una biblioteca Java pura cuyo diseño está modelado a partir de la biblioteca C pero que por lo demás no está relacionada
- Berkeley DB XML, [ 17 ] un programa en C++ que admite XQuery y que incluye una versión heredada de la biblioteca de base de datos en C.
Los programas de código abierto aún utilizan Berkeley DB.
Berkeley DB estuvo muy extendido en el pasado, pero su uso disminuyó drásticamente a partir de 2013 (véase la sección de licencias ). Entre los programas destacados que aún utilizan Berkeley DB para el almacenamiento de datos se incluyen:
- Bogofilter : un filtro de spam gratuito/de código abierto que guarda sus listas de palabras usando Berkeley DB por defecto. [ 18 ]
- Citadel/UX : un software colaborativo (mensajería y trabajo en grupo) que desciende directamente de la familia de programas Citadel , que se popularizó en las décadas de 1980 y 1990 como plataforma de sistema de tablón de anuncios .
- Exim : un servidor de correo gratuito/de código abierto utilizado en sistemas operativos tipo Unix.
- Sendmail : un agente de correo de código abierto y gratuito , lanzado por primera vez en 1983 para sistemas Linux/Unix.
- Spamassassin : una aplicación antispam gratuita y de código abierto.
Los sistemas operativos y lenguajes de código abierto como Perl y Python aún admiten las antiguas interfaces de Berkeley DB. Los sistemas operativos FreeBSD y OpenBSD incluyen Berkeley DB 1.8x para admitir la llamada al sistema operativo dbopen()[ 19 ] [ 20 ] utilizada por programas de contraseñas como pwb_mkdb. [ 21 ] Los sistemas operativos Linux, incluidos los basados en Debian, [ 22 ] y Fedora [ 23 ] incluyen bibliotecas de Berkeley DB 5.3.
Licencias
Berkeley DB V2.0 y versiones superiores están disponibles bajo una licencia dual :
- Licencia comercial de Oracle [ 24 ]
- Licencia de código abierto
- Base de datos de Berkeley
- Las versiones V2.0 a V6.0.19 están bajo la licencia Sleepycat.
- La versión V6.0.20 y posteriores están licenciadas bajo la GNU AGPL v3 . [ 25 ]
- Base de datos de Berkeley
El cambio de la licencia de código abierto en 2013, de la licencia Sleepycat a la AGPL, tuvo un gran impacto 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 de código cerrado tendrían que cambiar su licencia para ser compatibles con AGPL, lo cual no era aceptable para muchos desarrolladores ni para los sistemas operativos de código abierto. Para 2013, existían muchas alternativas a BDB, y Debian Linux fue un ejemplo típico al optar por eliminar por completo Berkeley DB, prefiriendo la base de datos Lightning Memory-Mapped Database (LMDB). [ 26 ]
Véase también
Referencias
- ↑ "Descargas de Oracle Berkeley DB" . Consultado el 27 de septiembre de 2020 .
- ↑ Guía de referencia de Berkeley DB: ¿Qué no es Berkeley DB? . Doc.gnu-darwin.org (31 de mayo de 2001). Consultado el 18 de septiembre de 2013.
- ↑ "Versión principal: Berkeley DB 12gR1 (12.1.6.0)" . Proyectos de código abierto en Oracle . 10 de junio de 2013. Archivado del original el 5 de diciembre de 2013. Consultado el 11 de abril de 2021 .
- ↑ Nathan, Willis (10 de julio de 2013). "Debian, Berkeley DB y AGPLv3" . Linux Weekly News . Archivado del original el 22 de julio de 2013. Consultado el 22 de abril de 2021 .
- 1 2 Olson, Michael A.; Bostic, Keith; Seltzer, Margo (1999). "Berkeley DB" (PDF) . Proc. FREENIX Track, USENIX Annual Tech. Conf . Archivado (PDF) del original el 09-10-2022 . Recuperado el 20 de octubre de 2009 .
- ↑ Seltzer, Margo; Yigit, Ozan (1991). "Un nuevo paquete de funciones hash para UNIX" . Actas de la Conferencia Técnica de Invierno de USENIX. Consultado el 20 de octubre de 2009 .
- ↑ Brunelli, Mark (28 de marzo de 2005). "Una introducción a Berkeley DB" . Enterprise Linux News . Archivado del original el 6 de septiembre de 2008. Recuperado el 28 de diciembre de 2008 .
- ↑ "Conociendo Berkeley DB Java Edition" . objectcomputing.com . Consultado el 7 de marzo de 2025 .
- ↑ [ Anuncio de Berkeley DB ] Versión principal: Berkeley DB 12gR1 (12.1.6.0) . Consultado el 5 de julio de 2013. (A pesar de las menciones de AGPL, el archivo fuente aún declara términos BSD-4-Clause en la versión 6.0.19).
- ↑ "Instantánea del código fuente 6.0.19 en ese momento" . 13 de junio de 2013.
- ↑ "La licencia Sleepycat" . Iniciativa de código abierto . 31 de octubre de 2006. Consultado el 28 de diciembre de 2008 .
- ↑ "Licencias" . Free Software Foundation . 10 de diciembre de 2008. Archivado del original el 16 de diciembre de 2008. Consultado el 28 de diciembre de 2008 .
- ↑ "Compatibilidad con interfaces UNIX históricas" . docs.oracle.com . Consultado el 20 de noviembre de 2019 .
- ↑ "Twitter / Gregory Burd: @humanications No lo hicimos..."
- ↑ "Descargas de Oracle Berkeley DB: Últimas versiones de producción" .
- ↑ "Oracle Berkeley DB Java Edition" . Archivado del original el 11 de julio de 2017.
- ↑ "Berkeley DB XML" . Archivado del original el 18 de julio de 2016.
- ↑ "bogofilter -- Código rápido de filtro de spam bayesiano (Git)" . sourceforge.net . Consultado el 17 de mayo de 2024 .
- ↑ "dbopen(3)" . Páginas del manual de FreeBSD . Consultado el 18 de abril de 2023 .
- ↑ "Páginas del manual de OpenBSD" . dbopen(3) . Consultado el 18 de abril de 2023 .
- ↑ "pwd_mkdb(8)" . Páginas del manual de OpenBSD . Consultado el 18 de abril de 2023 .
- ↑ Webmaster, Debian. "Debian -- Detalles del paquete db5.3-util en sid" . Debian -- Paquetes . Consultado el 8 de mayo de 2026 .
- ↑ "Descripción general - rpms/libdb" . src.fedoraproject.org . Consultado el 18 de abril de 2023 .
- ↑ "Información sobre descargas, licencias y ventas" . 30 de noviembre de 2017.
- ↑ "Versión principal: Berkeley DB 12gR1 (12.1.6.0)" . 10 de junio de 2013. Consultado el 15 de julio de 2013 .
- ↑ Ondřej Surý (19 de junio de 2014). "Nuevo objetivo del proyecto: deshacerse de Berkeley DB (después de Jessie)" . debian-devel (Lista de correo). Debian .
Enlaces externos
- Base de datos Oracle Berkeley
- Descargas de Oracle Berkeley DB
- Documentación de Oracle Berkeley DB
- Información sobre licencias de Oracle Berkeley DB
- Problemas de licenciamiento para productos de tecnología Oracle
- Red de conocimiento sobre licencias de Oracle
- El libro de Berkeley DB de Himanshu Yadava
- Motores de bases de datos
- Software relacionado con bases de datos para Linux
- Bases de datos integradas
- Sistemas de gestión de bases de datos gratuitos
- Software libre programado en C
- Bases de datos clave-valor
- NoSQL
- Software Oracle
- Almacenamiento estructurado
- Software que utiliza la Licencia Pública General Affero de GNU.