Las bases de datos de código libre o abierto ejecutan cientos de millones de aplicaciones de cara al público en todo el mundo, pero ¿qué tan efectiva es esta tecnología y cómo se comparan estos productos? Para obtener respuestas, se revisaron seis bases de datos populares de código abierto o libre: Microsoft SQL Server Express, PostgreSQL, MySQL de Oracle, MariaDB, Apache Derby y SQL Firebird.
Al seleccionar candidatos para nuestra revisión hemos elegido productos de sistemas de administración de bases de datos relacionales con características completas (RDBMS), tales como procedimientos, funciones, triggers y cursores. A pesar de que no teníamos la intención de realizar una evaluación comparativa científica, hicimos grandes tablas de prueba. Para obtener los datos de prueba, se utilizó un archivo de registro truncado desde uno de nuestros servidores web que contenía un millón de registros adicionales. Los mismos datos de prueba se utilizaron en los seis productos. Hicimos pruebas estándar, como inserciones/importaciones masivas y se realizaron tareas de manipulación de datos.
Para nuestro entorno de prueba utilizamos rack de servidores Dell de 64-bit con Windows Server 2008 R2. Cabe señalar que, con excepción de MS SQL Server Express, todos los productos de base de datos que probamos son multiplataforma.
Los segundos puestos en esta revisión son para Microsoft SQL Server Express y MySQL Oracle. Desde un punto de vista de la interfase gráfica del usuario (GUI), SQL Server ofrece las mejores herramientas y la capacidad para actualizarse a las ediciones comerciales en caso de necesitar características adicionales que puedan ser atractivas para los diversos administradores de bases de datos. El argumento de la migración también se aplica a MySQL, ya que Oracle ahora ofrece una variedad de ediciones comerciales de MySQL. El primer puesto no fue obtenido por MySQL por un par de razones: una es la falta de una herramienta nativa de gestión. En segundo lugar, aunque los desarrolladores Oracle siguen asegurando que soportará la edición de núcleo comunitario de MySQL en forma continua, Oracle ya ha comenzado a reservar ciertas características de sus versiones comerciales.
Lo que nos lleva a nuestra primera opción, MariaDB, un producto de código abierto desarrollado esencialmente por el mismo equipo original que desarrolló MySQL antes de que fuera adquirida por Sun, y luego Oracle. MariaDB puede hacer todo lo que hace MySQL, y cuando Oracle añade nuevas funciones al MySQL de código cerrado, MariaDB añade algunas de las mismas características a su opción de código abierto. También está la cuestión del rendimiento y en nuestra prueba hemos encontrado que MariaDB lo hace solo un poco mejor que todos los demás.
Completando nuestra tarjeta de puntuación están PostgreSQL, Firebird y Apache Derby, en ese orden. Estas son las opiniones individuales.
Microsoft SQL Server Express 2012
SQL Server Express es una versión libre de la base de datos insignia de Microsoft, SQL Server. Dirigida a aplicaciones de menor escala e integradas, Microsoft SQL Server Express es un producto rico en características que ofrece muchas de las funciones principales de la versión comercial con algunas limitaciones en la escalabilidad.
En concreto, estos incluyen límites a las CPU (un enchufe con máximo de cuatro núcleos), memoria (1GB utilizado, el servidor puede tener más instalado) y el tamaño de la base de datos (10 GB). De los seis productos que hemos probado, este es el único que tiene límites significativos; aunque para muchas organizaciones pequeñas y medianas, esto no debería ser un problema.
El programa de instalación de SQL Server Express presenta un centro de instalación desde donde se pueden leer las notas de la versión, ejecutar herramientas tales como el Comprobador de configuración para asegurarse de que su servidor haya instalado los requisitos previos e instalar el servidor real, ya sea mediante la ejecución de un Asistente de actualización o la realización de una nueva instalación.
Para esta revisión, se eligió la segunda opción. Las instalaciones de SQL Server son notoriamente lentas y SQL Server Express no es una excepción. Hay varias opciones a elegir durante la instalación, tales como el modelo de seguridad a utilizar (seleccionamos ‘mixed SQL’ y el modo de Windows).
El SQL Server Management Studio es una interfase de gestión integral que proporciona a los administradores y programadores las herramientas que necesitan para administrar los servidores y bases de datos, así como el desarrollo de bases de datos de inteligencia de negocios (BI). Para los desarrolladores, también se puede integrar con otras herramientas como Visual Studio y SQL Server Developer Studio.
La inserción de un millón de registros adicionales tomó poco más de un minuto y, en comparación, los mismos datos insertados en una versión estándar de SQL Server tomaron cerca de 45 segundos. Recuperar los primeros 100 mil registros tardó 10 segundos utilizando SQL Server Express y tres segundos en la versión estándar. Sin embargo, cuando se trabajó con conjuntos de datos más pequeños, encontramos que la versión Express se desempeñó casi tan bien como la versión estándar. Por ejemplo, la actualización de un registro único tomó solo fracciones de segundos más con Express en comparación con la versión Standard utilizando nuestra tabla de prueba.
Las características de seguridad incluyen auditoría básica y acceso definido por el usuario para controlar el acceso a los datos y objetos. El soporte para SQL Server Express está disponible a través de la red de desarrolladores de Microsoft y una variedad de foros de soporte en línea y blogs.
Si bien SQL Server Express no puede tener todas las características -tales como alta disponibilidad y clustering- de sus hermanos comerciales, es un servidor de base de datos maduro y sólido que va a entregar y ejecutar bien un gran porcentaje de las aplicaciones de bases de datos. Para los administradores que prefieren una interfase gráfica de usuario para administrar su base de datos, van a estar en apuros para encontrar una mejor interfase de gestión que la ofrecida por Microsoft, la única que encontramos parecida fue pgAdmin de PostgreSQL.
MariaDB
MariaDB es esencialmente un reemplazo binario de MySQL creado por el mismo desarrollador de MySQL, Michael Widenius. Con un poco de incertidumbre sobre el futuro de MySQL, ahora que es propiedad de Oracle, hay un gran grupo de desarrolladores de la comunidad a quienes les gustaría mantener una versión de código abierto con todas las funciones. La medida de compatibilidad es tal que MariaDB se fusiona mensualmente con la base de código MySQL para asegurarse de cualquier característica y correcciones de errores que saca Oracle, se añaden a la versión más reciente de MariaDB y viceversa. MariaDB es publicada bajo la licencia GNU pública, e instalamos la versión 5.5 en Windows Server 2008 R2.
Se utilizó el cliente front-end HeidiSQL 7,0 para conectarse a MariaDB. Esto le proporciona una interfase de usuario desde la que puede realizar una variedad de tareas, como la creación de nuevas bases de datos, tablas y vistas, así como la importación/exportación de datos en varios formatos. Después de configurar nuestra base de datos y tabla de prueba, cargamos nuestras filas de un millón de datos adicionales de un archivo CSV con el ajuste de baja prioridad y los datos se insertaron en menos de un minuto. MariaDB devolvió los primeros 100 mil registros en menos de dos segundos cuando se utilizó una instrucción de selección. Como era de esperar, cuando se trabajó con pequeños subconjuntos de datos, encontramos que el rendimiento estuvo dentro del rango aceptable. Hemos sido capaces de borrar y actualizar declaraciones de filas individuales en fracciones de segundo.
Aunque nuestro análisis no era científico, ha utilizado los mismos datos de prueba para todos los servidores de bases de datos y en general nos pareció que el rendimiento de MariaDB fue una pizca más rápido que MySQL cuando se trabajó con filas individuales (selecciones, eliminaciones y actualizaciones).
Al igual que con MySQL, la seguridad en MariaDB se gestiona a través de Access Control Lists para acceder a todos los objetos y operaciones. Además, incluye varias funciones de cifrado que se pueden utilizar para el almacenamiento y recuperación de datos, junto con SSL para la comunicación cifrada entre el cliente y el servidor.
En cuanto al soporte, encontramos que el sitio web de MariaDB es sensible a la mayoría de preguntas. También hay varios foros en línea dedicados a MariaDB junto con el soporte y asesoría comercial disponible de Monty Program.
Hay muchas cosas buenas en MariaDB, en particular apreciamos que la empresa incluya en su edición de código abierto muchas de las características de la edición comercial de MySQL. Una de estas características son las sub-consultas, que esencialmente no funcionan bien en MySQL, y MariaDB lo resolvió finalmente hace un tiempo atrás. Además, cuando se encontró un agujero de seguridad en MySQL/MariaDB a principios de este año, la comunidad MariaDB encontró una solución y notificó a la comunidad sobre esta vulnerabilidad.
MySQL
MySQL es una de las bases de datos de código abierto más populares. Se incluye como parte de una variedad de LAMP (Linux, Apache, MySQL, PHP) y en grandes organizaciones como Wikipedia, Twitter y Facebook, utilizan MySQL. La solución fue desarrollada originalmente en Suecia a mediados de los años 90, fue vendida a Sun en el 2008, y ha sido propiedad de Oracle desde que adquirió Sun en el 2010.
Ha habido mucha especulación en cuanto a cuáles son las intenciones de Oracle con respecto a MySQL. De acuerdo con las informaciones más recientes de Oracle, se ha comprometido a apoyar y actualizar la funcionalidad principal de la edición de la comunidad de MySQL en un futuro previsible. Obviamente, esto tiene sentido para Oracle considerando la enorme base instalada actual, ya que le da a la compañía una posición única para aumentar las ventas de varias de sus ofertas comerciales como Oracle Linux, Oracle VM y por supuesto sus versiones comerciales de Oracle MySQL. Sin embargo, la pregunta sigue en cuanto a qué cantidad de nuevas características se incluirán en la versión de la base de código abierto y cuántas se reservarán para la oferta comercial.
Dicho esto, desde la adquisición de Sun, Oracle ha realizado varias mejoras en la forma en que MySQL se ejecuta en Windows, y ahora es una verdadera base de datos multiplataforma. Instalamos la edición de la comunidad, Versión 5.5.8, en Windows Server 2008 R2 como parte de una instalación WAMP. Decidimos utilizar tanto phpMyAdmin y HeidiSQL para administrar nuestra instalación de MySQL. También existen herramientas de gestión comercial disponibles, tales como MySQL Enterprise Edition.
Después de importar los datos de prueba que ejecutamos a través de nuestras pruebas básicas, encontramos que la mayoría de ellos funcionaron de una forma muy similar a MariaDB, como se esperaba. Mientras se trabajó con filas individuales, encontramos que MySQL fue ligeramente más lento que MariaDB, incluso si la tabla, datos, índices y hardware eran los mismos. Oracle acaba de anunciar la edición candidata para la versión 5.6 y se supone que tienen un optimizador mejorado y otras actualizaciones que mejorarán el rendimiento. Cabe señalar que las diferencias estaban en el rango de las centésimas de segundo.
La seguridad de MySQL es manejada a través de listas de control de acceso para acceder a todos los objetos y operaciones. También es compatible con SSL para la comunicación cifrada entre el cliente y el servidor, junto con las funciones de cifrado de datos que se pueden utilizar para almacenar y recuperar los datos cifrados. El soporte técnico y la documentación de MySQL están disponibles desde Oracle (tanto gratuitos como de pago) y de una variedad de fuentes de terceros en la web, que tienen rango de calidad que va de vago a excelente.
Es difícil que a alguien no le guste MySQL basado en su facilidad de uso, rendimiento y ubicuidad. Según Oracle, nueve de los 10 sitios web en el mundo (suponemos medidos por su tráfico) utilizan alguna forma de base de datos MySQL. Muchas de las ofertas comerciales de servicios de alojamiento LAMP y WAMP han construido una excelente web para MySQL, por lo que es fácil de manejarlas como parte de una solución web.
PostgreSQL
PostgreSQL tiene sus raíces en el proyecto Ingres de la universidad de Berkeley en la década de 1980, y la primera versión de PostgreSQL fue lanzada en 1995. Es de código abierto y liberada bajo la licencia PostgreSQL. PostgreSQL es esencialmente un RDBMS, pero con un modelo de base de datos orientado a objetos (ORDBMS).
Instalamos una versión de PostgreSQL 9.2 en Windows Server 2008 R2. La instalación es muy sencilla, con solo unas pocas opciones disponibles, tales como contraseña de súper usuario, puerto de escucha y localización. Una vez que la instalación básica ha finalizado tiene la opción de poner en marcha el Stack Builder que le permite descargar e instalar aplicaciones adicionales, herramientas y controladores.
PostgreSQL incluye una interfase de administración llamada pgAdmin. No muy diferente a la de MS SQL Server Management Studio, pgAdmin tiene un sólido conjunto de características que son intuitivas y fáciles de navegar. La base de datos y tabla de prueba con limitaciones fue fácil de crear. Importamos nuestros más de un millón de datos de prueba utilizando la función de importación de CSV en menos de 30 segundos. La recuperación de 100 mil filas tomó menos de medio segundo y el trabajo con filas individuales dio buenos resultados; seleccionar, actualizar y eliminar filas individuales en cualquier parte de la mesa tomó alrededor de medio segundo. No es tan rápido como MariaDB y MySQL, pero sin duda mejor que lo que observamos con SQL Server Express. Una molestia sin importancia fue la necesidad de poner nombres de campo entre comillas si contenían caracteres en mayúsculas.
PostgreSQL controla la autenticación a través de una variedad de medios de autenticación de confianza, desde Kerberos a LDAP. La comunicación entre el cliente y el servidor se pueden cifrar a través de SSL, y la propia base de datos también se puede encriptar utilizando la extensión pgCrypto.
Además de una amplia documentación y preguntas frecuentes (FAQ), PostgreSQL cuenta con una comunidad activa que ofrece soporte para los usuarios. El soporte comercial y de alojamiento está disponible en todo el mundo a través de una larga lista de compañías que cotizan en el sitio web de PostgreSQL.
De las características de PostgreSQL, encontramos que la interfase de gestión de pgAdmin es una de sus mayores ventajas. PostgreSQL es un servidor de base de datos rico en características y se incluye en la mayoría de las principales distribuciones de Linux como un paquete disponible. También encontramos que el rendimiento de PostgreSQL está casi a la par con MariaDB y MySQL.
Apache Derby
Apache Derby es una base de datos relacional de código abierto del proyecto Apache. Escrita en Java, Apache Derby funcionará en cualquier máquina virtual Java y tiene una huella muy pequeña (menos de 3MB), que incluye un controlador integrado JDBC. Se distribuye bajo la licencia Apache, versión 2.0.
Apache Derby comenzó como Cloudscape a mediados de la década de 1990, luego fue adquirida por Informix antes de ser rebautizado como IBM Cloudscape cuando IBM se hizo cargo de los activos de Informix. En el 2004, IBM contribuyó con el código Cloudscape al proyecto Apache y en el 2005 la primera versión de Apache Derby fue lanzada como versión 10.1.1. Apache Derby se puede ejecutar en dos modos, ya sea como un motor de base de datos totalmente funcional incorporado (por ejemplo, tal como se utiliza en Apache Tomcat y la aplicación de servidor Red Hat) o como una base de datos tradicional cliente-servidor mediante Derby Network Server.
Instalamos la versión 10.9.1 en un servidor Windows 2008 que ejecuta el Oracle Java Runtime Virtual Environment (JRE) versión 1.7. Es importante que el JRE esté instalado antes de instalar Apache Derby, y la instalación requiere unos cuantos comandos emitidos desde el indicador de DOS. Apache Derby viene con una herramienta interactiva de scripting llamada "ij". Funciona con el controlador Derby JDBC incorporado o un controlador de cliente JDBC. Utilizando símbolos del sistema, fuimos capaces de crear una base de datos de prueba y mesa vacía de símbolos del sistema con solo unos pocos comandos.
Después de crear nuestra tabla de prueba, decidimos utilizar el procedimiento integrado de inserción masiva para insertar nuestros millón adicional de filas de prueba. La inserción masiva funcionó bien excepto que se encontró con un problema similar al que tuvimos con PostgreSQL, y las mayúsculas vs minúsculas en la sintaxis de ejecutar. Nuestra mesa se llamó ‘test1’, todo en minúsculas, pero el analizador (y la documentación, después de algunas investigaciones en línea) insistió en que lo ingresáramos en mayúsculas como esto:
CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (null,’TEST1′,’c: empSampleData.txt’,’,’,null,null,0);
Después de arreglar el problema, la importación de datos tardó solo unos segundos y una instrucción para recuperar los primeros 100 mil registros corrió en menos de cinco segundos. Tal como se observó con los servidores de bases de datos, trabajar con filas individuales de datos resultó ser muy eficiente y nuestras declaraciones de seleccionar, actualizar y borrar se hicieron en fracciones de segundo. Aunque Apache Derby no entregó absolutamente la misma velocidad que MariaDB y MySQL en nuestras pruebas, las diferencias fueron pequeñas, que van desde una décima a una centésima de segundo más lento.
Las características de seguridad incluyen autenticación y autorización de usuarios que permite las restricciones de acceso a nivel de objeto. Las bases de datos de Apache Derby también pueden ser encriptadas cuando se crean, o se les puede agregar cifrado a las bases de datos existentes.
El pequeño tamaño de Apache Derby hace que sea una excelente opción para incrustarse en aplicaciones Java, como las que se ejecutan en PDA o teléfonos celulares. La página web de Apache proporciona documentación completa y actualizada, y también hay una comunidad bastante activa de blogs y foros dedicados en todo o en parte a Apache Derby.
Firebird
Firebird ha existido de una forma u otra desde 1981 y actualmente se basa en el muy respetado código liberado por Borland InterBase en el 2000. Los módulos actuales se publican bajo la licencia pública del desarrollador inicial. Firebird se ejecuta en Linux, Unix y Windows. Revisamos la última versión estable, la versión 2.5.1, en Windows Server 2008 R2. La instalación es muy sencilla y se terminó en unos minutos con pocas opciones para decidir durante la instalación. Además decidimos instalar FlameRobin, una herramienta de gestión multiplataforma para Firebird.
FlameRobin no es tan rico en características como pgAdmin, SQL Server Management Studio o HeidiSQL, pero ofrece algunas características básicas, tales como la capacidad de crear bases de datos, tablas y otros objetos. Los objetos se crean al proporcionar muestra de código T-SQL en lugar de proporcionar una interfase donde se puedan escribir nombres de campo y tal. Sin embargo, una vez que haya creado un objeto, como una tabla, se puede editar con una GUI. Al final resultó que, cuanto más trabajamos con FlameRobin, nos topábamos con más características útiles.
Después de completar la instalación, se creó una base de datos de prueba con una tabla para que contengan los datos de muestra. Como no hay una opción de inserción masiva real ni una característica de importación, creamos una tabla ‘temporal’ para los datos externos y la utilizamos para insertarla en nuestra mesa real. Este proceso no fue exactamente elegante, pero hizo el trabajo después de algunas idas y venidas con problemas de permisos. Como suele ser el caso con el software libre y de código abierto, la documentación no está siempre al día o presentada, así como con el software comercial, pero una frase bien formulada en los motores de búsqueda eventualmente produce resultados para la mayoría de tareas.
Una vez que los datos de prueba se cargaron, realizamos nuestra prueba habitual, pero tuvimos problemas al intentar seleccionar un gran número de filas (100 mil o más), utilizando los comandos de selección, tanto de la herramienta ISQL Firebird como de FlameRobin. La herramienta ISQL simplemente se estrelló mientras que FlameRobin devolvió los expedientes, pero ya que estos fueron devueltos solo unos pocos cientos a la vez, fue difícil tener una idea del rendimiento. Al trabajar con subconjuntos más pequeños encontramos que Firebird trabajó de manera eficiente y fuimos capaces de seleccionar, actualizar y eliminar filas individuales en fracciones de segundo.
Algunas de las características de seguridad de Firebird incluyen control de acceso a nivel de objeto y la capacidad de eliminar el código fuente de ‘triggers’, procedimientos y puntos de vista. Firebird no ofrece cifrado nativo, pero existen herramientas de terceros que lo hacen. En cuanto a la documentación, Firebird tiene un excelente sitio de preguntas frecuentes (FAQ) junto con una variedad de otros documentos disponibles en su sitio web.
En general, estuvimos impresionados con Firebird SQL a medida que el vendedor añadía funciones adicionales a una base de datos ya excelente, InterBase. Por ejemplo, las versiones más recientes de Firebird SQL incluyen consultas recursivas, disparadores de procedimiento para el acceso remoto DB y‘multi-threading’. Una nueva versión principal, la versión 3.0, se encuentra en obras, con una versión alpha que se espera esté disponible a finales de este año. Esto incluye características tales como la capacidad de escribir procedimientos almacenados en Java y C++.
Conclusión
En pocas palabras, todos los productos que revisamos son servidores de bases de datos muy capaces y seleccionar uno dependerá de una variedad de factores tales como la infraestructura existente y lenguaje de script, el tamaño de los datos a ser almacenados/recuperados, si la base de datos va a ser embebida, y cuánto soporte del proveedor se necesita. Una vez que haya seleccionado un candidato, asegúrese de seguir las mejores prácticas recomendadas por el fabricante para asegurar el producto, junto con el sistema operativo anfitrión, antes de que se utilice en un entorno de producción.