stringtranslate.com

Base de datos de Berkeley

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 .

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 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]

Arquitectura

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 .

Uso del nombre "Berkeley DB" por parte de Oracle Corporation

Oracle Corporation utiliza el nombre "Berkeley DB" para tres productos diferentes, de los cuales sólo uno es BDB: [14]

  1. Berkeley DB, la biblioteca de bases de datos C que es el tema de este artículo
  2. Berkeley DB Java Edition, [15] una biblioteca Java pura cuyo diseño está modelado a partir de la biblioteca C pero que por lo demás no está relacionada
  3. Berkeley DB XML, [16] un programa C++ que admite XQuery y que incluye una versión heredada de la biblioteca de base de datos C

Programas de código abierto que aún utilizan Berkeley DB

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.

Licencias

Berkeley DB V2.0 y versiones superiores están disponibles bajo una licencia dual :

  1. Licencia comercial de Oracle [23]
  2. La GNU AGPL v3 . [24]

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]

Referencias

  1. ^ "Descargas de Oracle Berkeley DB" . Consultado el 27 de septiembre de 2020 .
  2. ^ Guía de referencia de Berkeley DB: ¿Qué no es Berkeley DB? Doc.gnu-darwin.org (31 de mayo de 2001). Recuperado el 18 de septiembre de 2013.
  3. ^ "Versión principal: Berkeley DB 12gR1 (12.1.6.0)". Proyectos de código abierto en Oracle . 2013-06-10. Archivado desde el original el 2013-12-05 . Consultado el 2021-04-11 .
  4. ^ Nathan, Willis (10 de julio de 2013). "Debian, Berkeley DB y AGPLv3". Linux Weekly News . Archivado desde el original el 22 de julio de 2013.
  5. ^ ab Olson, Michael A.; Bostic, Keith; Seltzer, Margo (1999). "Berkeley DB" (PDF) . Proc. FREENIX Track, USENIX Annual Tech. Conf . Archivado (PDF) del original el 2022-10-09 . Consultado el 20 de octubre de 2009 .
  6. ^ Seltzer, Margo; Yigit, Ozan (1991). "Un nuevo paquete de hash para UNIX". Proc. USENIX Winter Tech. Conf . Consultado el 20 de octubre de 2009 .
  7. ^ Brunelli, Mark (28 de marzo de 2005). "A Berkeley DB primer". Enterprise Linux News . Archivado desde el original el 6 de septiembre de 2008. Consultado el 28 de diciembre de 2008 .
  8. ^ [Berkeley DB Announce] Major Release: 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 de BSD-4-Clause en 6.0.19).
  9. ^ "Instantánea del código fuente de la versión 6.0.19 en ese momento". 13 de junio de 2013.
  10. ^ "La licencia Sleepycat". Iniciativa de código abierto . 31 de octubre de 2006. Consultado el 28 de diciembre de 2008 .
  11. ^ "Licencias". Free Software Foundation . 10 de diciembre de 2008. Archivado desde el original el 16 de diciembre de 2008. Consultado el 28 de diciembre de 2008 .
  12. ^ "Compatibilidad con interfaces UNIX históricas". docs.oracle.com . Consultado el 20 de noviembre de 2019 .
  13. ^ "Twitter / Gregory Burd: @humanications No r ..."
  14. ^ "Descargas de Oracle Berkeley DB: últimas versiones de producción".
  15. ^ "Oracle Berkeley DB Java Edition". Archivado desde el original el 11 de julio de 2017.
  16. ^ "Berkeley DB XML". Archivado desde el original el 18 de julio de 2016.
  17. ^ "bogofilter - Código de filtro de spam bayesiano rápido (Git)". sourceforge.net . Consultado el 17 de mayo de 2024 .
  18. ^ "dbopen(3)". Páginas del manual de FreeBSD . Consultado el 18 de abril de 2023 .
  19. ^ "Páginas del manual de OpenBSD". dbopen(3) . Consultado el 18 de abril de 2023 .
  20. ^ "pwd_mkdb(8)". Páginas del manual de OpenBSD . Consultado el 18 de abril de 2023 .
  21. ^ Webmaster, Debian. «Debian -- Detalles del paquete libdb5.3 en sid». Debian -- Paquetes . Consultado el 18 de abril de 2023 .
  22. ^ "Descripción general - rpms/libdb". src.fedoraproject.org . Consultado el 18 de abril de 2023 .
  23. ^ "Información sobre descarga, licencia y venta". 30 de noviembre de 2017.
  24. ^ "Versión principal: Berkeley DB 12gR1 (12.1.6.0)". 10 de junio de 2013. Consultado el 15 de julio de 2013 .
  25. ^ Ondřej Surý (19 de junio de 2014). "Nuevo objetivo del proyecto: deshacerse de Berkeley DB (post jessie)". debian-devel (Lista de correo). Debian .

Enlaces externos