Berkeley DB ( BDB ) es una biblioteca de software destinada a proporcionar una base de datos integrada de alto rendimiento para datos clave / valor . Berkeley DB está escrito en C con enlaces API para C ++ , C # , Java , Perl , PHP , Python , Ruby , Smalltalk , Tcl y 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 ,[2] aunque tiene características de base de datos avanzadas que incluyen transacciones de base de datos , control de concurrencia de múltiples versiones y registro de escritura anticipada .
Autor (es) original (es) | Margo Seltzer y Keith Bostic de Sleepycat Software |
---|---|
Desarrollador (es) | Sleepycat Software , más tarde Oracle Corporation |
Versión inicial | 1994 |
Lanzamiento estable | 18.1.40 [1] / 29 de mayo de 2020 |
Escrito en | C |
Sistema operativo | Windows , similar a Unix |
Tamaño | ~ 1244 kB compilado en Windows x86 |
Tipo | Base de datos integrada , base de datos NoSQL |
Licencia | Licencia doble ( GNU Affero General Public License y comercial (versión 6.xy superior) Licencia Sleepycat (versiones 2.0-5.x) Licencia BSD de 4 cláusulas (versiones 1.x) |
Sitio web | www .oracle .com / database / berkeley-db / |
BDB puede admitir miles de subprocesos simultáneos de control o procesos concurrentes que manipulan bases de datos de hasta 256 terabytes, [3] 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 recibió el apoyo comercial y fue desarrollado por Sleepycat Software de 1996 a 2006. Sleepycat Software fue adquirido por Oracle Corporation en febrero de 2006, que continúa desarrollando y vendiendo la biblioteca C Berkeley DB. En 2013, Oracle volvió a obtener la licencia de BDB bajo la licencia AGPL . [4] [5] A partir de 2020, Bloomberg LP continúa desarrollando una bifurcación 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 originó en el AT&T Unix original del que se derivó BSD. Al hacerlo, necesitaban reescribir el paquete de la base de datos de Unix. [6] Seltzer y Yigit [7] 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. [6] En 1996, Netscape solicitó que los autores de Berkeley DB mejoraran y ampliaran la biblioteca, luego en la versión 1.86, para adaptarse a los requisitos de Netscape para un servidor LDAP [8] 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, que continúa desarrollando y vendiendo Berkeley DB.
Desde su lanzamiento inicial, Berkeley DB ha pasado por varias versiones. Cada ciclo de lanzamiento principal ha introducido una nueva característica principal 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 "Data Store" (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 "Almacenamiento 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 de registro y crear una base de datos de múltiples réplicas de un solo maestro distribuida de alta disponibilidad. Esto se denomina conjunto de funciones de "alta disponibilidad" (HA). 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 se han modificado 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 continúan usando Berkeley DB 1.8x por razones de compatibilidad; [9] [ dudoso ] Los sistemas operativos basados en Linux comúnmente incluyen varias versiones para adaptarse a las aplicaciones que aún usan interfaces / archivos más antiguos.
A partir de la versión 6.0.21 (Oracle 12c), todos los productos Berkeley DB tienen licencia de GNU AGPL . [10] [11] 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 y un software libre aprobado por la FSF . licencia . [12] [13] El producto se envía con código fuente completo, script de compilación, conjunto de pruebas y 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 . Aquellos que no deseen cumplir con los términos de GNU AGPL, o usar una versión anterior con la Licencia Pública Sleepycat, tienen la opción de comprar otra licencia propietaria para 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 de System V y POSIX para crear tablas hash en memoria ). [14]
Arquitectura
Berkeley DB tiene una arquitectura notablemente más simple que la de otros sistemas de bases de datos como los sistemas de gestión de bases de datos relacionales . Por ejemplo, como SQLite , no se basa en un modelo de servidor / cliente y no proporciona soporte para el acceso a la red; los programas acceden a la base de datos mediante llamadas a la API en proceso . Oracle agregó soporte para SQL en la versión 11g R2 basada en la popular API SQLite al incluir una versión de SQLite en Berkeley DB (usa Berkeley DB para almacenamiento). [15] Hay soporte de terceros para PL / SQL en Berkeley DB a través de un producto comercial llamado Metatranz StepSqlite . [dieciséis]
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 una longitud de hasta cuatro gigabytes.
A pesar de tener una arquitectura simple, Berkeley DB admite muchas funciones avanzadas de bases de datos, como transacciones ACID , bloqueo detallado , copias de seguridad en caliente y replicación .
Uso de Oracle Corporation del nombre "Berkeley DB"
Oracle Corporation utiliza el nombre "Berkeley DB" para tres productos diferentes, dos de los cuales no son BDB: [17]
- Berkeley DB, la biblioteca de bases de datos C que es el tema de este artículo
- Berkeley DB Java Edition, [18] una biblioteca pura de Java cuyo diseño sigue el modelo de la biblioteca C, pero que por lo demás no está relacionado
- Berkeley DB XML, [19] Un programa C ++ que admite XQuery y que incluye una versión heredada de la biblioteca de base de datos C
Programas que utilizan Berkeley DB
Berkeley DB proporciona el sistema de almacenamiento y recuperación subyacente de varios servidores LDAP , sistemas de bases de datos y muchas otras aplicaciones patentadas y gratuitas / de código abierto. El software notable que utiliza Berkeley DB para el almacenamiento de datos incluye:
- Bitcoin Core : la primera implementación de la criptomoneda Bitcoin conserva el uso de 2009 Berkeley DB 4.8 para una característica [20]
- Bogofilter : un filtro de spam de código abierto y gratuito que guarda sus listas de palabras con Berkeley DB de forma predeterminada [21]
- Citadel : una plataforma de software colaborativo de código abierto y gratuito que mantiene todos sus almacenes de datos, incluida la base de mensajes, en Berkeley DB. Citadel tiene la licencia GPLv3, que es compatible con las licencias de Oracle BDB.
- Sendmail : un MTA popular para sistemas Linux / Unix
- Spamassassin : una aplicación anti-spam
Licencia
Berkeley DB V2.0 y superior está disponible con una licencia dual :
- Licencia comercial de Oracle con soporte profesional [22]
- Licencia de código abierto
- Berkeley DB y Berkeley DB XML
- V2.0 - V6.0.19 tiene licencia de Sleepycat License
- V6.0.20 y posteriores se licencian bajo GNU AGPL v3 . [23]
- Berkeley DB y Berkeley DB XML
El cambio a AGPL ha provocado que las principales distribuciones de Linux, como Debian , eliminen por completo el uso de Berkeley DB, con preferencia por Lightning Memory-Mapped Database (LMDB). La razón es que sería inaceptable que los usuarios comerciales utilicen el código AGPL, ya que se verían obligados a proporcionar su código fuente a los usuarios mediante una simple actualización del software. [24]
Ver también
- Base de datos mapeada en memoria Lightning
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.
- ^ http://doc.gnu-darwin.org/am_misc/dbsizes.html Guía de referencia de Berkeley DB: límites de la base de datos Consultado el 19 de septiembre de 2013
- ^ "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 5 de diciembre de 2013 . Consultado el 11 de abril de 2021 .
- ^ Nathan, Willis (10 de julio de 2013). "Debian, Berkeley DB y AGPLv3" . Noticias semanales de Linux .
- ^ a b Olson, Michael A .; Bostic, Keith; Seltzer, Margo (1999). "Berkeley DB" (PDF) . Proc. FREENIX Track, Tecnología anual de USENIX. Conf . Consultado el 20 de octubre de 2009 .
- ^ Seltzer, Margo; Yigit, Ozan (1991). "Un nuevo paquete de hash para UNIX" . Proc. Tecnología de invierno de USENIX. Conf . Consultado el 20 de octubre de 2009 .
- ^ Brunelli, Mark (28 de marzo de 2005). "Una cartilla de Berkeley DB" . Noticias de Enterprise Linux . Consultado el 28 de diciembre de 2008 .
- ^ "db (3)" . Consultado el 12 de abril de 2009 .
- ^ [Anuncio de Berkeley DB] Versión principal: Berkeley DB 12gR1 (12.1.6.0) . Consultado el 5 de julio de 2013. (A pesar de que AGPL menciona allí, el archivo fuente aún declara los términos de la cláusula BSD-4 en 6.0.19).
- ^ Instantánea de la fuente 6.0.19 en ese momento
- ^ "La licencia de Sleepycat" . Iniciativa de código abierto . 31 de octubre de 2006 . Consultado el 28 de diciembre de 2008 .
- ^ "Licencias" . Fundación de Software Libre . 10 de diciembre de 2008. Archivado desde el 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: @humanicaciones No r ..."
- ^ "Preguntas frecuentes oficiales de Berkeley DB" . Oracle Corporation . Consultado el 30 de marzo de 2010 .
¿Berkeley DB es compatible con PL / SQL?
- ^ Descargas de Oracle Berkeley DB: Últimas versiones de producción
- ^ "Oracle Berkeley DB Java Edition" .
- ^ "Berkeley DB XML" .
- ^ Notas de la versión para Bitcoin 0.8.0 2013
- ^ "bogofilter - Filtro / Código Bayesiano Rápido de Spam (Git) / [93b68e] / bogofilter / README" . sourceforge.net . Consultado el 17 de julio de 2020 .
- ^ "Descarga, licencia e información de 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 (post jessie)" . debian-devel (lista de correo). Debian .
enlaces externos
- Oracle Berkeley DB
- Descargas de Oracle Berkeley DB
- Documentación de Oracle Berkeley DB
- Información de licencias de Oracle Berkeley DB
- Escollos de licencias para productos de tecnología Oracle
- Red de conocimientos sobre licencias de Oracle
- El libro Berkeley DB por Himanshu Yadava
- Launchpad.net - Berkeley DB en Launchpad