# Berkeley DB

Berkeley DB (DB) es una librería de manejo de base de datos con API para C, C++, Java, Perl, Python, Ruby, Tcl y muchos otros lenguajes. Soporta múltiples datos para una misma clave. Berkeley DB permite miles de hilos de control manipulando bases de datos de hasta 256 terabytes en muchos sistemas, incluidos la mayoría de los tipo-UNIX y Windows, e incluso sistemas operativos de tiempo real.
Berkeley DB fue desarrollada por la compañía Sleepycat Software. Está disponible en código fuente y con licencia de libre distribución (free software).

## Características

* Los datos se almacenan en el formato nativo del lenguaje de programación.
* No tiene modo cliente-servidor.
* Caché configurable para modificar el rendimiento.
* Permite crear bloqueos de forma detallada. Esto es especialmente útil para trabajos concurrentes sobre la base de datos de forma que se bloquea una página de registros durante una transacción para evitar que se modifiquen hasta que termine pero permitiendo actuar sobre el resto de páginas.
* Posibilidad de realizar copias de seguridad y replicación en caliente.
* Transacciones y recuperación ante errores ACID. Esto es configurable de forma que se puede ir relajando en función de la aplicación.
* Es compatible con algunas interfaces históricas para bases de datos en UNIX como dbm, ndbm y hsearch.
* Permite utilizar la característica de snapshots para poder efectuar varias transacciones sobre los mismos registros de manera simultánea.
* Posee tres productos asociados a la marca:
** Berkeley DB: La base de datos original escrita en C.
** Berkeley DB Java Edition: Una versión de la anterior con algunas características menos pero con la ventaja de estar escrita en un lenguaje multiplataforma.
** Berkeley XML DB: Edición especialmente ideada para almacenar documentos XML mediante colas XQuery. Esta versión actúa como una capa sobre Berkeley DB y tiene enlaces para varios lenguajes (Java, C, PHP, etc.).

## Breve historia

Berkeley DB fue desarrollada por la Universidad de Berkeley de California como parte de los esfuerzos para lograr eliminar el código de AT&T de BSD 4.3 para la versión 4.4. En 1996 Netscape pidió que los autores de Berkley DB que mejorasen y ampliasen su biblioteca, en su versión 1.86 por entonces, para satisfacer los requisitos de Netscape para un servidor LDAP y utilizarla en el navegador Netscape. La petición llevó a la creación de Sleepycat Software, que fue adquirida en febrero de 2006 por Oracle Corporation.

## Condiciones de uso

Las versiones 2.0 y superiores de Berkeley DB están disponibles bajo licencia dual. Las versiones anteriores utilizan una licencia tipo BSD. La licencia pública Sleepycat obliga a quien hace uso de Berkeley DB a que libere el código de la aplicación bajo una licencia reconocida por la OSI (Open Source Initiative) que permita redistribución. Sin embargo, también permite licenciar el código de la aplicación con la licencia Sleepycat para evitar esta obligatoriedad de redistribuirlo. Si se desea utilizar Berkeley DB en una aplicación de código cerrado se debe adquirir una licencia comercial de Oracle, la empresa propietaria actualmente de los derechos.
El producto además se distribuye con el código fuente completo, las herramientas de compilación, la suite de pruebas y diversa documentación.

## Productos que utilizan Berkeley DB

He aquí algunos de los productos (la mayoría bastante extendidos) que utilizan la base de datos Berkeley DB:
* BMC Atrium Discovery and Dependency Mapping (ADDM): Appliance de descubrimiento de información de infraestructuras TI que utiliza Berkeley DB como repositorio.
* Bogofilter: Un filtro antispam que almacena listas de palabras en Berkeley DB.
* Carbonado: Una capa de acceso a bases de datos relacionales.
* Cfengine: Un sistema de administración de configuraciones.
* Citadel: Una plataforma para trabajo colaborativo que almacena todos sus datos en Berkeley DB.
* KDevelop: IDE libre para C y C++ que funciona sobre GNU/Linux y otros sistemas operativos tipo-UNIX.
* KLibido: Un lector de grupos de noticias
* MySQL: BDB es de los muchos backends para almacenes de datos disponibles en MySQL; otros son MyISAM e InnoDB.
* OpenLDAP: implementación libre y open source de LDAP.
* Postfix
* RPM: El Gestor de paquetes RPM, utiliza Berkeley DB para almacenar su base de datos de paquetes instalados en el sistema.
* Spamassassin: Una aplicación antispam.
* Subversion: sistema de control de versiones diseñado para suplir las carencias de CVS.
* Sun Grid Engine: Un recurso para administración de sistemas.
Otros proyectos de código abierto y de software libre que la usan son: Caravel CMS, OpenOffice.org (suite de ofimática), etc.

## Empresas que utilizan Berkeley DB

He aquí algunas de las empresas que utilizan Berkeley DB en sus productos:
* Airbus: compañía europea aeronáutica y aeroespacial.
* Amazon: empresa líder mundial en B2C.
* AOL
* BMC
* Cisco Systems
* eBay: web de subastas en línea.
* EMC
* Google: compañía de búsquedas en Internet.
* Hitachi
* HP
* Motorola
* Nortel: compañía de telecomunicaciones.
* RSA Security
* Sun Microsystems
* TIBCO
* VERITAS

## Críticas

Berkeley DB no soporta SQL ni esquemas. A pesar de esto tiene un tamaño superior al de otras alternativas incrustadas (ocupa casi el doble que SQLite).