Firebird embebido - monousuario

Introducción


El motivo del presente post es comentar mi experiencia con Firebird, y algunas conclusiones a las que he llegado. No pretendo dar una clase de Firebird, sino comentar muy por encima algunas ventajas de trabajar con este motor de base de datos. Me enfocare principalmente en la utilización de Firebird embebido.


¿Que es Firebird?


Firebird es un potente motor de base de datos que implementa toda la funcionalidad que le podemos pedir a este tipo de sistemas (triggers, stored procedures, vistar, etc.). Es muy rápido y consume escasos recursos (muchos menos recursos que otros motores de base de datos mucho mas difundidos)


Firebird se caracteriza por poder ser utilizado de dos formas, como motor tradicional de base de datos que espera conexiones desde las computadoras clientes (similar aMySQL, Oracle, MS SQL Server, etc.), y como sistema de base de datos embebido en el cual solo una aplicación local puede acceder a la base de datos (similar a Access).



Firebird como servidor


Firebird instalado como servidor permite acceder concurrentemente a varios usuarios distribuidos de una manera muy eficaz a traves de una conexion TCP. La instalacion y puesta en marcha de un servidor Firebird es muy rápida, es decir, no nos obliga a tener que realizar una configuración exhaustiva del servidor (si noqueremos realizarlo).



Firebird embebido


Firebird embebido permite utilizar un archivo de base de datos local (de Firebird) sin necesidad de instalar el servidor de base de datos. Esto nos permite poder distribuir aplicaciones sin necesidad de instalar componente extras, solo debemos copiar el archivo con la base de datos y el driver para la conexion embebida (generalmente llamado fbclient.dll o fbembed.dll) y listo, ya tenemos una aplicacion con base de datos corriendo.
Las desventajas que tiene esta forma de operar con respecto al servidor son:



  • No permite conexiones remotas
  • Solo un usuario/aplicacion pueden estar accediendo a la base de datos (porque la misma queda bloqueada cuando es abierta).
  • No realiza la autenticación de usuarios (es decir, cualquier aplicación puede acceder a la base de datos sin necesidad de poseer usuario y passwords válidos)

Hasta hace un tiempo pensaba que una de las mejores formas de distribuir una aplicacion monousuario, y que no haga uso intensivo de la base de datos, era Access. Actualmente creo que Firebird es una muy buena alternativa, y en varios puntos mucho mas favorable (al menos nos evitamos varios dolores de cabeza en la distribución)


Encontre las siguientes ventajas desde que trabajo con Firebird:



  • Firebird no necesita tener instalado una serie de componentes, como pueden ser MDAC, JET, etc.
  • Firebird soporta todo lo que necesitamos de un motor de base de datos permitiendonos consultas mucho mas complejas.
  • Firebird tiene un muy buen manejo de datos aún cuando poseemos gran cantidad de datos.
  • Firebird es totalmente gratuito tanto para uso personal, como comercial.
  • Firebird funciona en linux.
  • Firebird surge de InterBase lo que nos permite utilizar los componentes de Interbase para acceder a bases de datos Firebird.

Si bien son varias las ventajas que nos plantea este motor de base de datos con respecto a otras alternativas, principalmente Access, tiene dos desventajas que he identificado para proyectos muy chicos:



  • No todos los programadores estan acostumbrados a trabajar con Firebird
  • Es recomendable instalar un "Manager" para administrar y probar ciertas consultas más rapidamente.

Mi conclusión


Yo siempre pienso que no existe una solución universal (una silver bullet) para resolver los problemas, es por eso que ante cada proyecto debemos decidir cual es la mejor alternativa para nuestros stakeholders. Firebird termina siendo una posibilidad interesante en el abanico de opciones a la hora de decidir donde guardaremos nuestros datos, tanto para aplicaciónes monousuario y que funcionen en una única computadora, o para aplicaciones distribuidas con un uso mucho más intensivo de la base de datos.