# Apache Derby

Apache Derby es un sistema gestor de base de datos relacional escrito en Java que puede ser empotrado en aplicaciones Java y utilizado para procesos de transacciones en línea. Tiene un tamaño de 2 MB de espacio en disco. Inicialmente distribuido como IBM Cloudscape, Apache Derby es un proyecto open source disponible en virtud de la Apache 2.0 License. Actualmente se distribuye como Sun Java DB.

## Características

* APIs para JDBC y SQL. Soporta todas las características de SQL92 y la mayoría de SQL99. La sintaxis SQL usada proviene de IBM DB2.
* Su código pesa alrededor de 2000KB comprimido.
* Soporta cifrado completo, roles y permisos. Además posee SQL SCHEMAS para separar la información en una única base de datos y control completo de usuarios.
* Soporta internamente procedures, cifrado y compresión.
* Trae soporte multilenguaje y localizaciones específicas.
* A partir de la versión 10.4 trae un sistema simple de replicación maestro-esclavo.
* Transacciones y recuperación ante errores ACID.
* Posee tres productos asociados a la marca:
** Derby Embedded Database Engine: El motor propiamente dicho.
** Derby Network Server: Permite convertir Derby en una base de datos que sigue el modelo cliente-servidor tradicional.
** Database Utilities: Un paquete de utilidades.

## Historia

Apache Derby tiene su origen en la empresa Cloudscape Inc, en Oakland, California que se fundó en 1996 para desarrollar una tecnología de base de datos para Java. La primera versión del motor de base de datos, que por entonces se llamó JBMS, tuvo lugar en 1997. Posteriormente el producto fue renombrado como Cloudscape y aparecieron versiones nuevas cada seis meses. En 1999 Informix Software, Inc., adquirió Cloudscape, Inc. En 2001 IBM adquirió los activos de Informix Software, incluyendo Cloudscape. El motor de base de datos fue renombrado a IBM Cloudscape y continuaron apareciendo versiones, enfocadas principalmente a usos empotrados en productos Java de IBM y middleware.
En agosto de 2004 IBM cedió el código a la Apache Software Foundation para Derby, un proyecto patrocinado por el proyecto Apache DB. En julio de 2005 el proyecto Derby continuó desarrollándose como subproyecto base de datos de alto nivel en Apache. Sun se unió al proyecto Derby con el objetivo de utilizar como componente en sus propios productos, y con el lanzamiento de Java 6 en diciembre de 2006, Sun comenzó a empaquetar Derby en el JDK llamado Java DB.
En marzo de 2007 IBM anunció que podría comenzar a hacer marketing y dar soporte para el producto Cloudscape, pero que continuaría contribuyendo con el proyecto Apache Derby.

## Críticas

Derby está escrito en Java y no tiene bindings para otros lenguajes (no tendría mucho sentido) por lo que limita al programador a utilizarlo mediante la máquina virtual de Java y en programas escritos en Java, Koylin, Scala, etc o lenguajes de scripting que se ejecuten sobre JVM (Jython, JRuby, Jacl, etc.). Esto por otro lado hace que las aplicaciones sean altamente portables.
Derby hace uso de una mayor cantidad de memoria y su rendimiento y compatibilidad SQL puede considerarse inferior que otras alternativas como puede ser la base de datos gratuita y de código libre H2.
En su modo empotrado sólo soporta un único proceso que tenga abierta la base de datos. Sin embargo en su modo de cliente/servidor soporta el acceso de varios procesos simultáneos mediante bloqueo de filas.