domingo, 6 de enero de 2008

Que es Firebird ?

Actualmente me encuentro escribiendo un Libro sobre este excelente gestor de Base de datos ya que no existe bibliografia en nuestro idioma sobre este tema.
Aqui una parte del capitulo de Introducción a Firebird.

Firebird es un Servidor de Base de Datos multiplataforma basada en el código de Interbase 6.0 (Borland Internacional) una base de datos madura con mas de 25 años de experiencia. Interbase 6.0 fue liberado a mediados del 2000 bajo licencia IPL derivada de MPL (Mozilla Public Licencia) es mas permisiva que GPL y similar a BSD.

Jim Starkey trabajaba en DEC en su producto “Datatrive network database” cuando tuvo la idea de un sistema que manejara cambios hechos concurrentemente por varios usuarios. La idea simplificaba dramáticamente los problemas existentes del control de concurrencia utilizando trancas (locking), los cuales representaban un serio problema para los nuevos sistemas de base de datos relacionales que se estaban desarrollando en ese momento. Entonces comenzó a trabajar en el sistema en DEC, pero en ese momento DEC comenzaba el desarrollo de una base de datos relacional que resultó en el producto Rdb/VMS. Cuando se enteraron de su proyecto se desató un gran problema, y Starkey eventualmente decidió desistir.

Starkey se enteró que el proveedor de plataformas locales Apollo Computer buscaba una base de datos para sus máquinas Unix, y accedían a solventar su desarrollo. Con su apoyo, Starkey formó Groton Database Systems (Groton, Massachusetts era el lugar donde se encontraban) en 1984 y comenzó a trabajar en lo que eventualmente sería lanzado como Interbase en 1986. Apollo sufrió un inconveniente corporativo y decidió dejar el negocio del software, pero en ese tiempo el producto ya estaba generando dinero.

Entre 1986 y 1991 el producto fue gradualmente vendido a Ashton-Tate, creadores del famosos dBASE, quienes en ese entonces se encontraban comprando varias compañías de base de datos con el fin de ampliar su catálogo. La compañía cayó rápidamente y Borland la compró en 1991, adquiriendo Interbase como parte del trato.

A principios del año 2000, la compañía Borland anunció que el código de Interbase sería liberado en la versión 6.0 y comenzó las negociaciones para que una empresa separada se encargara del nuevo producto. Cuando los responsables de esta nueva empresa y Borland no llegaron a un acuerdo de separación, Interbase permaneció como un producto de Borland y el código fuente de Interbase 6 se liberó bajo una variante de la “Mozilla Public License” a mediados del 2000.

Con la división de Interbase en Borland, la compañía liberó una versión propietaria de Interbase 6 y luego 6.5. Borland liberó varias actualizaciones para la versión libre antes de anunciar que ya no participaría activamente en el desarrollo de este proyecto. De aquí nació una nueva rama de desarrollo libre basada en el código abierto de Interbase 6 que daría vida a Firebird.

El motor de bases de datos Firebird ha sido desarrollado por un equipo independiente de desarrolladores voluntarios a partir del código fuente de Interbase 6.0. El desarrollo del código Firebird 2 arranca inicialmente en el desarrollo de Firebird 1, con el traspaso del código C de Firebird 1 a C++ y la primera gran limpieza en el código. Firebird 1.5 es la primera versión del código Firebird 2. Ello supone haber cubierto una etapa muy importante para los desarrolladores y el propio proyecto Firebird, pero no es un fin en sí mismo. Cubierta la etapa de la liberación de Firebird 1.5, el viaje hacia Firebird 2 prosigue con importantes modificaciones.

La versión 1.5 ha sido construida a partir del código portado del original en C a C++, un proceso iniciado por Mike Nordell en el año 2000. La limpieza total del código y la corrección de errores ha continuado, completada por un nuevo gestor de memoria y mejoras en el lenguaje. No menos importantes han sido los cambios experimentados por el optimizador de consultas SQL durante el proceso de desarrollo de la v. 1.5, con mejoras y correcciones de la mano de Arno Brinkman y otros, cuyo resultado ha sido una mejora en la velocidad de entre un 30 y un 60 por ciento como mínimo.

Firebird 2.0 trae una gran colección de muy esperadas mejoras que aumentan significativamente la performance, seguridad y el soporte de idiomas internacionales, y además brinda algunas deseables nuevas características en el lenguaje SQL. Entre las novedades se incluyen:

  • Nuevo backup incremental.
  • El tamaño de las tablas ya no es limitado a 30 Gb.
  • Soporte para arquitecturas de 64 bits (Intel EM64T y AMD64).
  • Interface tipo plugin para juegos de caracteres internacionales.
  • Soporte de tablas derivadas, como se define en SQL200x, incluyendo anidado multi-nivel y joining de "subqueries".

A la fecha de publicación de este libro la última versión de producción es la 2.0.1 que incluye muchas mejoras sobre su versión predecesora. Firebird tiene una implementación de SQL muy cercana al estándar ISO/IEC 9075. Cuenta con la mayoría de las instrucciones DDL y DML estándar de SQL además tiene un muy Buen Trabajo de Transacciones así como soporte de procedimientos almacenados, Triggers, Vistas, Funciones Definidas por el Usuario, Generadores, etc. Todo esto lo convierte en una de las mejores alternativas en la actualidad a los motores de base de datos comerciales.

Firebird es muy práctico en todo sentido. Sencillo de instalar, fácil de usar, requiere poca administración y es gratuito.

Firebird se ejecuta en la mayoría de sistemas operativos mas difundidos como Windows, Linux, Solaris, MacOS y FreeBsd soportando las arquitecturas de 32 bits y 64 bits. Firebird ha sido probado en entornos financieros y en la actualidad es utilizado por diferentes empresas a nivel mundial. Firebird esta orientado a todo tipo de empresas pequeñas, medianas y grandes; se destaca un buen ejemplo:

Avarda (russian ERP) trabaja con Firebird 2.0 Classic server y con una media de 100 conexiones simultaneas accediendo a una base de datos Firebird de 120Gb con 700 millones de registros! El Servidor es una maquina SMP (2 CPUs - Dell PowerEdge 2950) con 6GB RAM.

En América Latina podemos encontrar un gran desarrollo en Brasil, dado que Brasil Esta apostando por el Software Libre. La iniciativa incluye planes para exportar 2 Billones de Dólares en valor de software por año; reemplazar MS-Windows con Linux en 300,000 computadoras del gobierno federal; canalizar 1 Billon de Dolares en recursos desde telecomunicaciones (Telecommunications Fund - Fust) hasta el sistema basado en software libre llamado Digital Communications System (SCD); e integrar las 200,000 escuelas publicas del país en tecnologías libres.

En Brasil existen una gran cantidad de empresas que utilizan Firebird como base de datos, el tamaño de base de datos varían desde los Megabytes hasta 50 Giga Bytes. Existe Gran cantidad de Información y recursos de Firebird en Internet gran parte Open Source y Otras comerciales gran parte de ellas asociadas a los productos de Borland como son Delphi y C++ Builder, que son la base del desarrollo de muchas utilidades y herramientas de administración, migración, recuperación, etc.


Versiones Actuales

A fecha de publicación de este libro La ultima versión de firebird es la 2.0.1 y es la que se recomienda para producción en entornos empresariales ya sea en la plataforma Windows o Linux. También se encuentra en producción la versión 1.5.4 que es utilizada en la actualidad por muchas empresas.

La recomendación es realizar una migración a la versión 2 por tener un mejor rendimiento asi como muchas mas funciones. Esto se debe hacer con sumo cuidado realizando los backups previos ya que la estructura interna ODS en Firebird 2.0 es diferente que en las versiones anteriores.


CARACTERÍSTICAS DE FIREBIRD

Soporte completo de Procedimientos Almacenados y Triggers

  • Las Transacciones son totalmente ACID compliant
  • Integridad referencial
  • Arquitectura Multi Generacional
  • Muy bajo consumo de recursos
  • Completo lenguaje para Procedimientos Almacenados y Triggers (PSQL)
  • Soporte para Functiones externas (UDFs)
  • Poca o ninguna necesidad de DBAs especializados
  • Prácticamente no necesita configuración - ¡sólo instalar y empezar a usarla!
  • Una gran comunidad y muchas páginas donde consegir buen soporte gratuito
  • Docenas de herramientas de terceros, incluyendo herramientas visuales de administración, replicación, etc.
  • Escritura segura - recuperación rápida sin necesidad de logs de transacciones
  • Muchas formas de acceder a tus bases de datos: nativo/API, driver dbExpress, ODBC, OLEDB, .Net provider, driver JDBC nativo de tipo 4, módulo para Python, PHP, Perl, etc.
  • Soporte nativo para los principales sistemas operativos , incluyendo Windows, Linux, Solaris, MacOS.
  • Backups incrementales
  • Disponible para arquitecturas de 64bits
  • Completa implementación de cursores en PSQL

El servidor Firebird viene en tres versiones: SuperServer, Classic y Embedded. Puedes empezar con SuperServer. Actualmente, Classic es el recomendado para máquinas con SMP y algunas otras situaciones específicas. SuperServer comparte su caché para todas las conexiones y usa un hilo de ejecución para cada conexión. Classic inicia un proceso de servidor independiente para cada conexión que se haga.

La versión embedded es una interesante variación del servidor. Es un servidor Firebird con todas sus características, empaquetado en unos pocos ficheros. Es muy fácil de usar, El servidor no necesita instalación. Ideal para CDROM de catálogos, demos o aplicaciones de escritorio monousuario.

Firebird viene con un completo paquete de utilidades de línea de comando que te permiten crear bases de datos, generar estadísticas, ejecutar comandos y scripts SQL, hacer y recuperar copias de seguridad, etc. Si prefieres usar herramientas visuales, hay una gran cantidad de alternativas donde elegir, incluyendo gratuitas. Se da un listado de estas Herramientas en el Anexo (¿?)

En Windows, puedes ejecutar Firebird como servicio o como aplicación. El instalador puede crear un icono en el panel de control que te permitirá controlar el servidor (iniciarlo, pararlo, etc).

FACILIDAD DE INSTALACIÓN Y MANTENIMIENTO

Firebird es una base de datos que presenta una fácil instalación ya sea en las versiones para Windows o Linux.

En la plataforma Windows Firebird utiliza el típico instalador siguiente y siguiente y listo ya se tiene firebird instalado en el sistema.

En la plataforma Linux la instalación también es muy sencilla solo basta utilizar el comando rpm para proceder con la instalación, finalizado este proceso ya tenemos instalado el servidor firebird listo para activarlo como servicio que se inicie al arrancar el sistema.

Con respecto al mantenimiento se dice que firebird no necesita casi de este, otras bases de datos necesitan de la presencia de un DBA experimentado para su correcto funcionamiento. Con firebird se puede trabajar sin problemas sin tener la presencia de un DBA experimentado debido a la simplicidad de su forma de trabajo lo cual se convierte en una gran ventaja. Esto no quiere decir que firebird se da mantenimiento solo, sino siempre abran algunas tareas que realizar por el DBA.


PROTOCOLOS DE RED SOPORTADOS


Los protocolos soportados por Firebird son los siguientes:

  • TCP/IP
  • Named Pipes
  • TCP/IP Loopback
  • Acceso Local para Windows


TCP/IP.-

Firebird soporta el protocolo TCP/IP para los diferentes tipos de servidores y clientes.

Este protocolo es el recomendado a utilizarse en las diferentes plataformas soportadas, ya que nos permite utilizar todas las capacidades de comunicación entre clientes y servidores.


Named Pipes.-

Firebird Soporta el protocolo Microsoft Wnet Named Pipes para Windows NT/2000/XP servidores y clientes, el nombre del pipe por defecto es interbas.

Las versiones de Windows 95/98/ME no soportan este protocolo.


TCP/IP Loopback.-

El acceso local al servidor puede realizarse de manera local con la interfaz Loopback que tiene la dirección 127.0.0.1. El servidor embebido de Firebird no soporta este tipo de conexión.


Acceso Local para Windows.-

Para clientes instalados en el mismo servidor de Windows Firebird simula una conexión de red con la tarjeta de red utilizando para ello un mecanismo de comunicación entre procesos. Este protocolo de comunicación es el utilizado por el servidor embebido de Firebird.

TIPOS DE SERVIDORES

Firebird Se distribuye en tres tipos de servidores el Clasic Server, el Superserver y el Embedded.

CLASIC SERVER

Crea un proceso y reserva un número de MB por cada usuario que se conecta.

Como Firebird no soporta aun el trabajo con SMP, en servidores con varios microprocesadores es recomendable dejar que el sistema operativo realice el balanceo de carga en los diferentes microprocesadores, esto es posible debido a que el servidor Clasic lanza un proceso por cada conexión. Se debe tener en consideración que a mayor cantidad de conexiones el uso de la memoria RAM se incrementa notablemente, por canda conexión de usuario se utiliza aproximadamente 2MB de Memoria.
Si instalamos esta versión, debemos tener en cuenta al elegir el tamaño del cache que

asignamos a cada conexión en esta versión el cache es de 75 paginas por usuario (300KB).

SUPERSERVER

Se crea un hilo por cada usuario que se conecta al servidor, se reserva un número de MB por cada base de datos a la que se accede en cada momento, por tanto no se necesita más RAM en el servidor conforme se da servicio a más usuarios, pero a cambio de eso, un único proceso (fbserver) es el encargado de dar ese servicio a todos los hilos que atienden a los usuarios, esto hace que en servidores que cuentan con mas de un microprocesador solo se utilice uno.

Resumiendo, esto quiere decir que podemos tener muchos usuarios pero la velocidad de proceso se la dividen entre ellos usando solo un procesador del servidor.
La versión 3 de FireBird, eliminará esta limitación en el número de procesadores.

EMBEBIDO

Un servidor embebido es un cliente con un servidor totalmente funcional enlazado como una librería dinámica (fbembed.dll). Tiene la misma capacidad que un Superserver Común y exporta los puntos de entrada del API estándar de Firebird.

Es muy fácil de usar, El servidor no necesita instalación. Ideal para CDROM de catálogos, demos o aplicaciones de escritorio monousuario.

COMPARACION ENTRE CLASIC SERVER Y SUPERSERVER

CLASSIC SERVER

SUPERSERVER

Completamente maduro en Linux; todavía 'experimental' en cierta forma, en Windows.

Completamente maduro tanto en Windows como en Linux.

Crea un proceso por cada conexión cliente, cada uno con su propio caché. Utiliza menos recursos si la cantidad de conexiones es baja.

Proceso único con un hilo de ejecución (thread) separado para cada conexión. Se comparte el espacio de caché. Más eficiente si crece el número de conexiones simultáneas.

Permite E/S directa, rápida, a archivos de bases de datos para conexiones locales (sólo Linux).

Las conexiones locales deben hacerse con la forma de acceso remoto, conectando a localhost. En Windows se pueden hacer conexiones locales, pero no son tan veloces como las de la versión “Classic” en Linux, y también son menos seguras.

Windows: implementados parcialmente Services Manager (Administrador de Servicios), tareas de soporte como backup/restore, database shutdown (sacar de línea la base de datos) etc. a través de la red. Otras tareas de servicio tienen que ser realizadas localmente usando las herramientas cliente (pequeños ejecutables independientes) que vienen con Firebird. Linux: Administrador de Servicios completo.

Administrador de Servicios completo (en Windows y Linux) que le permite realizar tareas de administración (backup/restore, database shutdown, manejo de usuarios, estadísticas, etc.) programáticamente. Se puede conectar al Administrador de Servicios a través de la red y por lo tanto realizar estas tareas en forma remota.

Soporte para SMP (multi-procesador). Mejor rendimiento en caso de un pequeño número de conexiones simultáneas que no se influencian entre sí.

No hay soporte para SMP. En máquinas multiprocesador con Windows, el rendimiento puede incluso caer dramáticamente cuando el SO cambia el proceso entre las CPUs. Para prevenir esto, fije el parámetro CpuAffinityMask en el archivo de configuración firebird.conf.

7 comentarios:

Anónimo dijo...

Me parece muy interezante la información que estas publicando me interezaria mucho saber mas acerca de esta base de datos y sobre todo mas detalles de su configuración y Optimización

Anónimo dijo...

Hola que tal amigo, Soy nuevo en esto de Firebird, mas sin embargo se me hace un buen sistema de administracion de base de datos, actualmente quiero desarrollar un sistema en php,junto con firebird, pero desgraciadamente no encuentro informacion en la web es muy escasa, no se si tu me puedas recomendar algunas paginas o libros.
Saludos desde Mexico y que bien que pienses en esto de publicar tu libro ojala llegara a mexico. Ojala me puedas ayudar.

Te dejo mi mail:eduaruiz_freak@hotmail.com

José Torres dijo...

Oscar, he visto varias veces la expresión "un pequeño número de conexiones" referida a un Classic Server de Firebird, pero me queda la duda: Cuántas son 'pocas conexiones'?
10, 20, 50... Cualquier ayuda es bienvenida. Mi mail es jt.logosoft(a)gmail.com

Anónimo dijo...

aqui me interesa mas el manejo de la base de datos de firebird, pero la version embebida, que ondas, que archivos se necesitan, y donde lo puedo conseguir, gracias ;) y saludos :D, y es un excelente manejador de base de datos relacional, :D

Anónimo dijo...

Saludos desde Arequipa.

A mi tambien me interesa el tema de firebird embebido. Mu gustaría saber si has logrado conectarte con [x]harbour o si en terminos generales sabes como hay que conectarse, ¿hay que enlazar el dll? ¿como se realiza la conección?
Por otra parte, el libro que estas escribiendo ¿sera para la venta, o lo liberaras?

atte
Justo Vera

Anónimo dijo...

oye me gustaria como hacer para migrar desde firebird a sql server 2005...gracias

The Justice Maker dijo...

Excelente idea! Si puedo ayudar en algo, lo haré con gusto. me agrada esta base de datos mas que cualquier otra.
Saludos desde México.