You are on page 1of 9

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina

Bases de Datos Open Source MySQL Firebird PostgreSQL (Mayo 2011)


Lucas Colombo, Hernan M. Jares Cnovas, Pablo A. Pellecchia
El objetivo de este trabajo prctico es presentar en detalle tres Bases de Datos de cdigo abierto, en nuestro caso MySQL, Firebird y PostgreSQL, para conocerlas en detalle de manera de identificar sus fortalezas y debilidades. Una vez hecho esto, enumeraremos unas cuantas empresas que las utilizan, y las causas de la decisin para entender como explotar al mximo las propiedades de estos motores y cmo manejar sus deficiencias. ndice de Trminos MySQL, Firebird, PostgreSQL, Performance.

artculo nos centraremos en los desarrollos relacionados a bases de datos, existen diversos software de bases de datos como por ejemplo: FireBird, PostGreSQL,MySql,MongoDB,etc. En este artculo nos centraremos en los tres primeros ejemplos. II. CARACTERSTICAS GENERALES FIREBIRD,POSTGRESQL,MYSQL

Firebird
Firebird es un sistema gestor de bases de datos relacionales derivado del Interbase 6.0 perteneciente a Borland. Firebird es open source y no contiene ningn tipo de licencia para su uso comercial o para aplicaciones open source. Este sistema se encuentra hace ms de veinte aos en desarrollo contando con varias versiones, siendo la 2.5 la mas actual. Firebird fue lanzado oficialmente en su versin 1.0 el 11 de Marzo de 2002, en esta versin ya contaba con soporte de entornos Linux, Windows y Mac y en los siguientes meses comenz a tener soporte de sistemas Solaris, FreeBSD y HPUX. Como ya se dijo este sistema est basado en Interbase que era un antiguo sistema relacional de bases de datos perteneciente a Borland quien decidi liberar su cdigo escrito en C sobre el cual luego se desarrollara Firebird el cual sustituira el cdigo escrito en C por C++. En sus posteriores versiones Firebird agregara nuevas funcionalidades como por ejemplo: soporte de sistemas de bits, bloqueo de transacciones, manejo de triggers. En su ltima versin estable 2.5, contiene mejoras en lo que es el multithreading, expresiones de sintaxis, etc. En este momento se encuentra en desarrollo la nueva versin 3.0, que a pesar de haber sido anunciada para mitad del ao 2010 todava no ha sido lanzada, esta nueva versin traer mejoras en lo que es soporte de procesos almacenados en lenguajes como Java o C++ por ejemplo. Un ejemplo de uso del sistema Firebird es Brasil, en este pas se apuesta mucho por el software libre por lo tanto existen muchas empresas las cuales utilizan Firebird, donde el tamao de la base de datos vara entre unos pocos Mb a unos cuantos Gb. Firebird es un emprendimiento que sigue creciendo y que no tiene nada que envidiarle a ningn sistema gestor de bases de datos comercial, es probable que en el futuro su uso sea cada vez ms grande ya que se ve favorecido por la cada vez ms grande tendencia de diferentes pases como por ejemplo Brasil en migrar a sistemas de software libre.

I. CARACTERSTICAS GENERALES OPEN SOURCE

l trmino Open Source se refiere a la forma en que las

practicas de produccin y desarrollo permiten el acceso al cdigo con el cual estn escritos los software, esto permite una produccin, distribucin y funcionamiento ms transparentes. De esta manera se gana un cdigo de mayor calidad, confiabilidad, flexibilidad, por lo general son software gratuitos apoyados por empresas o comunidades de desarrolladores ad honorem, etc. Se cree que los software Open Source permite el desarrollo de un software de mayor calidad y ms abierto en su funcionamiento y muchas veces este software termina siendo mejor que el software pago el cual no permite el acceso a su cdigo de funcionamiento. Estas mejoras vienen aparejadas por el hecho de que cualquier persona alrededor del mundo es capaz de realizar mejoras al cdigo, ya que conocen su funcionamiento y tienen acceso a la documentacin del mismo. Es importante diferencia Open Source respecto del Free Software, cada uno refiere a diferentes enfoques y filosofas respecto del desarrollo del software. En este momento ambos se consideran como movimientos separados pero pueden actuar juntos sin ningn problema. Se diferencian en el hecho de que el movimiento Open Source considera que el software NO libre es una solucin no ptima, mientras que en el caso del software libre este considera que el software NO libre es un problema social para lo que la solucin es el software libre. Esto viene de la mano del hecho de que el movimiento Open Source no cree que la pregunta de si un software debe ser abierto o no, no es una pregunta tica, como lo cree el Software libre, sino una pregunta practica. En el espectro del software Open Source es muy grande que contempla diversos tipos de software, en el presente

PostgreSQL
PostgreSQL es un Sistema de Gestin de Base de Datos Orientada a Objetos derivada del proyecto Ingres de la

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina Universidad de Berkeley. Este proyecto fue uno de los primeros intentos en implementar un motor de base de datos relacional de manera de resolver los problemas con el modelo de base de datos relacional que haban sido aclarados a comienzos de los aos '80. El principal de estos problemas era la incapacidad del modelo relacional de comprender "tipos", es decir, combinaciones de datos simples que conforman una nica unidad. Actualmente estos son llamados objetos. Se esforzaron en introducir la menor cantidad posible de funcionalidades para completar el soporte de tipos. Estas funcionalidades incluan la habilidad de definir tipos, pero tambin la habilidad de describir relaciones - las cuales hasta ese momento eran ampliamente utilizadas pero mantenidas completamente por el usuario. En Postgre la base de datos comprenda las relaciones y poda obtener informacin de tablas relacionadas utilizando reglas. El ltimo release estable es el 9.0.3 y soporta una gran variedad de Sistemas Operativos, entre ellos Windows, Mac OS X, Linux, BSD, UNIX.

SCO UnixWare Tru64 eBD Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7 y Windows Server (2000, 2003 y 2008). OpenVMS10 III. PERFORMANCE

PostgreSQL
En su configuracin por defecto, PostgreSQL utiliza poca memoria dedicada para motivos de Caching y Sorting; se deben realizar modificaciones en la configuracin para que se pueda usar ms memoria y las funciones de Shared Memory, System Cache, Relation Information Cache y File Description Cache. PostgreSQL tiene la capacidad de crear reglas de manera que las querys sean re-escritas en tiempo de ejecucin antes de que entren al planner, pudiendo dividirlas en varias sub-queries, para mejorar la performance de la Base de Datos y la utilizacin de recursos. Por ltimo, los benchmarks de rendimiento de PostgreSQL lo sitan muy cerca de Oracle convirtindolo en una excelente opcin para un emprendimiento. Existen manuales mantenidos por la comunidad para realizar tuning bsico y avanzado de la Base de Datos para obtener el mejor rendimiento para su modelo de negocio.

MySQL
MYSQL es uno de los sistemas de gestin de bases de datos relacionales ms utilizados. Se estima que MySql lleva alrededor de seis millones de instalaciones. Dicho motor surge por medio de un proyecto Open Source de la empresa MySQL AB, que desde principios de 2008 fue adquirida por Sun Microsystems (que luego fue, a su vez, adquirida por Oracle Corporation). La idea principal al desarrollar MySQL fue que el motor cumpla con el estndar SQL sin sacrificar velocidad, fiabilidad o usabilidad. El SGBD tiene la capacidad de trabajar tanto con bases de datos transaccionales como con bases de datos no transaccionales y hace uso completo de multi-threaded mediante threads del kernel. Dicho motor fue desarrollado en C y C++ y se destaca por su adaptacin a diferentes entornos de desarrollo. Adems permite la interaccin con los lenguajes de programacin ms utilizados, como ser Java, PHP, Perl y el conjunto de lenguajes de .Net, entre muchos otros. MySQL puede correr sobre los siguientes sistemas operativos: AIX BSD FreeBSD HP-UX GNU/Linux Mac OS X NetBSD Novell Netware OpenBSD OS/2 Warp QNX SGI IRIX Solaris SunOS SCO OpenServer

MySQL
MySql tiene la capacidad de trabajar con varios motores de almacenamiento que tratan con distintos tipos de tablas. Los motores de almacenamiento ms utilizados son InnoDB y MyISAM. De la eleccin del motor de almacenamiento depende en gran medida la performance, y dicha eleccin depende del uso que se le d a la base de datos. Una mala eleccin podra causar grandes problemas en cuanto a rendimiento. MyISAM trata con tablas no transaccionales, mientras que InnoDB proporciona tablas transaccionales. Esto significa que MyISAM ser ms rpido que InnoDB en la mayora de los casos en los que se recuperen muchos ms datos de los que se almacenan (ms SELECTS que INSERTS). Sin embargo, para los casos en que el manejo de la concurrencia y fiabilidad de los datos es fundamental, InnoDB es la solucin ptima. InnoDB no enva los cambios directamente al sistema operativo para que los almacene sino que los mantiene durante cierto tiempo en cach. Esto puede hacer que InnoDB sea ms rpido que MyISAM en casos en que la carga en INSERTS y UPDATES sea elevada. Sin embargo InnoDB no dispone de compresin de datos como sucede en MyISAM, por lo tanto demanda ms espacio en disco y RAM. Si bien InnoDB est integrado a MySQL, dicho motor de almacenamiento mantiene su propio pool de almacenamiento intermedio para tener un cache de datos e ndices en la memoria principal. Esto puede mejorar mucho el rendimiento de la base de datos. En cuanto a la base de datos en s, la performance de MySql, al igual que muchos otros SGBD, depende en gran medida de

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina la configuracin de sus parmetros. MySql permite modificar fcilmente sus parmetros, controlando tamaos de memoria dedicados a determinadas tareas, utilizacin de recursos y lmites de concurrencia, entre muchas otras. Ajustando adecuadamente estos parmetros se pueden obtener muchas mejoras de rendimiento. IV. MANEJO DE TRANSACCIONES

MySQL
Para el manejo de transacciones en MySql se debe usar el motor de almacenamiento InnoDB. InnoDB brinda a MySQL un motor de almacenamiento transaccional cumpliendo las caractersticas ACID (Atomicidad, Consistencia, aIslamiento, Durabilidad. Es decir que una transaccin no puede quedar a medias, debe ser consistente en cuanto a las directrices de la base de datos, funciona en aislamiento de las dems transacciones y, por ltimo, una transaccin finalizada debe persistir), con capacidades de commit (confirmacin), rollback (cancelacin) y recuperacin ante fallas. InnoDB realiza bloqueos a nivel de fila para el manejo de la concurrencia. Estas caractersticas incrementan el rendimiento y la capacidad de gestionar mltiples usuarios simultneos V. LOCKEO

Firebird
Firebird soporta transacciones las cuales pueden ser commiteadas para ser confirmadas y a las que se les puede aplicar un roll back posterior en caso de que haya habido algn error y los cambios efectuados por estas deban ser rearmados. Firebird tambin cumple con las caractersticas ACID para sus transacciones, las cuales son exigidas en general por todos los sistemas gestores de bases de datos, ya que de esa manera se puede asegurar que la base de datos se mantendr en un estado consistente. Firebird permite el uso de puntos de control o savepoints los cuales se utilizan cuando se desea mediante un roll back volver a un punto determinado, sobre todo cuando se detectan fallas en las transacciones o en el sistema en general. En Firebird todos los comandos deben ejecutarse dentro del contexto de una transaccin, es decir que se deben agrupar y ser comenzadas y terminadas explcitamente mediante el commit. Cualquier tipo de trigger por ejemplo que se quiera utilizar debe ser usado dentro del contexto de una transaccin, de manera que no se aceptan transacciones anidadas, esto es as porque el lenguaje de programacin de Firebird no tiene sentencias de manejo de transacciones.

Firebird
En general todas las bases de datos para resolver problemas de bloqueos implementan bloqueos de diferentes niveles (registro, pgina, table), con la idea de que se impida la modificacin de datos que se estn procesados, con la desventaja de que esos datos no podrn ser accedidos por otras transacciones hasta que la transaccin que los bloquea termine. Todo esto se implementa para evitar problemas de concurrencia que puedan llegar a dejar la base de datos en un estado inconsistente. Firebird aplica los diferentes tipos de bloqueos optimista y pesimista, siendo el caso del bloqueo pesimista el menos recomendado por ser extremadamente restrictivo. En Firebird los niveles de aislamiento de las transacciones para manejar la concurrencia son: Read commited: en este caso se pueden ver los cambios desarrollados por otros usuarios cuando estos sean confirmados Snapshot: se vern siempre los mismos datos aunque estos hayan sido confirmados, se podrn ver los cambios cuando se cierre nuestra transaccin y se comience una nueva Snapshot table stability: En este caso en el momento en que accedemos a una tabla esta se bloquea para escritura.

PostgreSQL
PostGre-SQL soporta transacciones, pero adems posee otras herramientas tiles para garantizar la consistencia de la base de datos, como ser: Savepoints (implementacin de subtransacciones para recuperacin de errores complejas en aplicaciones), Two-Phase Commit Protocol (Coordina el commit con todos los integrantes involucrados para garantizar la atomicidad), Write-Ahead Logging, Point-in-time Recovery (con imgenes parecidas al System Restore de Windows). Adems, PostGreSQL maneja concurrencia a travs de un sistema conocido como Control de Concurrencia Multi-Versin (MVCC), que otorga a cada usuario una fotografa de la Base de Datos, permitiendo que se puedan realizar cambios sin que sean visibles por otros usuarios hasta el momento que se realiza un Commit. Esto elimina en gran medida la necesidad de lockeos de lectura, asegura que la Base de Datos mantenga los principios de ACID de una manera eficiente. PostgreSQL soporta una gran cantidad de tipos de ndices, entre ellos B+Tree (eficiente, multi-nivel, menos I/O), GiST (arboles en gral.), Gin, Hash y BitMaps. Cabe destacar entre ellos a los ndices por expresin (creados no solo por columnas, sino por expresiones genricas) y los ndices Parciales (creados solo con un determinado set de filas). Adems de esto, el planner tiene la habilidad de utilizar varios ndices simultneamente para satisfacer consultas complejas, usando ndices bitmap temporarios.

En Firebird la forma en que las transacciones tienen de conocer la forma en que tienen que reaccionar ante un registro de bloqueo se denomina nivel de bloqueo, existen dos parmetros que lo indican: Modo en espera: si existen conflictos con otra transaccin, el ltimo proceso queda bloqueado a la espera de que la otra transaccin termine Modo sin espera: si hay conflictos con otra transaccin el proceso recibe un mensaje de error

En general todas las bases de datos para resolver problemas de bloqueos implementan bloqueos de diferentes niveles (registro,

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina pgina, table), con la idea de que se impida la modificacin de datos que se estn procesados, con la desventaja de que esos datos no podrn ser accedidos por otras transacciones hasta que la transaccin que los bloquea termine. Todo esto se implementa para evitar problemas de concurrencia que puedan llegar a dejar la base de datos en un estado inconsistente.

hacer su uso ms sencillo, a continuacin se detallan las ms populares: InterBase/Firebird Development Studio: Esta es una herramienta que se utiliza para el armado y diseo de la base de datos junto con el desarrollo de diagramas ER. Tambin permite la escritura de querys y resalta los errores de sintaxis que puedan llegar a surgir y entre otras opciones permite programar tareas de mantenimiento a la base, esta es un herramienta que en sus versiones profesionales es paga pero se puede conseguir en versiones con menores prestaciones de forma gratuita FlameRobin: Es un administrador de bases de datos Firebird, es una herramienta totalmente open source SQL Studio for InterBase/FireBird: Esta es una herramienta que se encarga de proveer funcionalidades necesarias en la administracin de una base de datos InterBase y Firebird, desde un punto de vista del diseo, migracin de datos, etc. Permitiendo a los usuarios de llevar adelante diferentes acciones sobre la base de datos mejorando la capacidad de administracin sobre la misma. Esta es una herramienta paga Sinatica Monitor for Firebird: Este es un monitor en tiempo real para controlar y conocer el consumo de recursos del servidor, encontrar cuellos de botella en la base de datos durante el desarrollo y produccin, optimizacin de la base de datos mediante herramienta que permiten mejoras en el rendimiento de la misma, esta herramienta es paga.

PostgreSQL
PostgreSQL posee una gran variedad de lockeos para administrar la concurrencia, y estos existen tanto a nivel tabla como a nivel fila. Dentro de ellos. Pueden ser ajustados a nivel de aplicacin en el caso que el MVCC no brinde un comportamiento deseable. Existend distintos modos de lockeos para obtener la precisin que mejor se ajuste a nuestra aplicacin; a continuacin se enumeran los distintos modos y entre parntesis un ejemplo de las instrucciones SQL que las pueden llegar a utilizar: - Access Share Lock (Select) - Row Share Lock (Select for Update) - Row Exclusive Lock (Insert,Update,Delete) - Share Lock (Create Index) - Share Row Exclusive Lock - Exclusive Lock (Blocks Row Share Lock and Select for Update) - Access Exclusive Lock (Alter,Drop Table, Vacuum)

MySQL
InnoDB implementa un bloqueo a nivel de fila estndar, que puede ser compartido (shared) o exclusivo (exclusive), donde el primer tipo le permite a una transaccin leer una fila y el segundo le permite actualizar o eliminar una fila. Si una transaccin sostiene un bloqueo exclusivo sobre un registro dado, entonces otra transaccin que desee bloquear (ya sea de forma exclusiva o compartida) el mismo registro, no podr ser atendida hasta que la primer transaccin desbloquee dicho registro. En cambio, en el caso en donde una transaccin realiza un bloqueo de tipo compartido sobre un registro dado pueden existir dos posibles escenarios: En el primero de los casos, si otra transaccin desea realizar un bloqueo exclusivo sobre el mismo registro, no podr ser atendido inmediatamente. En el segundo de los casos, si otra transaccin desea realizar un bloqueo compartido para un registro dado, entonces dicho bloqueo ser atendido y como consecuencia, ambas transacciones mantendrn un bloqueo sobre la misma tupla.

PostgreSQL
Si bien existen front-ends propietarios para PostgreSQL, estos son los los open-source ms comnmente usados: Psql: (Es una consola de comandos para ejecutar queries de SQL directamente y permite correr scritps. pgAdmin: (Es una herramienta de administracin de Base de Datos, pero a diferencia de la anterior, es grfica y puede correr en una gran nmero de plataformas. phpPgAdmin: (Es otra herramienta de administracin pero basada en Web y escrita en PHP.

Adicionalmente, InnoDB soporta bloqueo de granularidad mltiple (multiple granularity locking), permitiendo la existencia simultanea de bloqueos en registros y bloqueos en tablas enteras. VI. HERRAMIENTAS QUE CORREN EN LA BASE DE DATOS

Cabe destacar que PostgreSQL soporta una gran variedad de lenguajes procedurales como PL/pgSQL, PL/Tcl, PL/Perl y PL/Python; adems soporta Lua, PHP, Ruby, sh y Java.

MySQL
Existe una gran variedad de herramientas para MySql, tanto en el mundo Open Source, como propietarias. Algunas de ellas son las siguientes:

Firebird
Existen diferentes herramientas que utiliza Firebird para

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina MySQL GUI Tools: Son un conjunto de herramientas que brindan la posibilidad de trabajar y disear bases de datos en MySql a travs de un entorno grfico intuitivo. Entre estas herramientas encontramos: MySQL Workbench: Es la herramienta desarrollada por Oracle

Otras herramientas son: TurboDbAdmin (entorno web, con php y ajax) EMS SQL Manager for MySQL phpMyAdmin (entorno web, sobre php) VII. TARGET DE LAS BASES DE DATOS

volver a acceder a disco, lo que representa una baja en los tiempos de acceso a los datos por parte de todo el sistema en general generando una baja en la performance. A pesar de los problemas de eficiencia ya mencionados, este sistema presenta la ventaja de que si existen problemas con alguna de las conexiones este no tendr repercusiones en las dems conexiones ya que simplemente se desconectara al cliente conflictivo manteniendo a las dems conexiones activas. SuperClassic: Esta es la nueva arquitectura que se presento en la versin 2.5, la cual combina caractersticas de la arquitectura Classic y SuperServer, soporta hasta 1000 usuarios y un tamao de hasta 1 Tb. Bsicamente la idea de esta nueva arquitectura es que utiliza solamente un proceso a la cual se le conectan varias memoras cache, cada uno de los clientes conectados a este proceso representa un thread dentro del mismo, lo que aumenta la capacidad del sistema de funcionar en paralelo aumentando la performance del sistema frente a sistemas anteriores, es mucho ms barato crear un thread dentro de un gran proceso que tener una enorme cantidad de procesos ejecutndose en paralelo.

Firebird
En el caso de Firebird, este es un sistema que apunta desde pequeas aplicaciones hasta grandes aplicaciones empresariales, y esto se puede ver en las diferentes arquitecturas que presenta, las cuales se pueden utilizar en entornos en los que se necesita una gran disponibilidad del servicio o en sistemas ms pequeos y caseros. Las arquitecturas son las siguientes: Embedded: Es un servidor completo el cual est integrado dentro de una DLL, es mono usuario y permite cambiar a arquitecturas ms grandes de manera transparente. SuperServer: En este caso es una arquitectura pequea y de fcil integracin que soporta hasta 100 usuarios y un tamao mximo de 50 Gb, utiliza solamente un cache el cual es compartido por todas las conexiones con los clientes, junto con un proceso dedicado. Este cache es eficiente cuando por ejemplo se tienen varios clientes accediendo a las mismas reas de la base de datos, por lo que todos los datos estarn guardados dentro de la cache y sern accedidos directamente ah. Classic: Esta es una arquitectura pesada utilizada mayoritariamente en servidores multiprocesadores, los cuales deben tener una importante cantidad de memoria RAM disponible y un buen HDD, la cantidad de usuarios que soporta es de 500 usuarios y soporta hasta un tamao de 300 Gb. En este caso cada cliente tiene su propia pgina de cach mediante la cual est conectada a un proceso dedicado, el uso de una cache dedicada es de menor eficiente, ya que si dos clientes desean acceder a los mismos datos, estos se vern copiadas en dos caches diferentes al mismo tiempo. Y esto trae otro problema importante que son los accesos a disco, en todos los sistemas gestores de bases de datos lo que se busca es minimizar la cantidad de acceso a disco, en vista de que toma un mayor tiempo acceder a este dispositivo que a la memoria, en el caso de la arquitectura Classic se presenta el problema de que al no tener una cache comn para todas las conexiones cada conexin que desee acceder a un rea que ya fue accedida en disco, no poseer esa informacin en su cache propia por lo que deber

Existen diferentes compaas que han utilizado Firebird, como son Motorola, Nokia, Boeing, etc.

PostgreSQL
Siendo una alternativa open-source, uno esperara que los usuarios ms comunes de PostgreSQL, sean pequeas y medianas empresas, pero esto no es as, empresas de gran envergadura como Yahoo (almacenando cerca de 2 Petabytes), las redes sociales MySpace, hi5, reedit y aplicaciones como Skype. MySQL es uno de los SGBD ms utilizados en aplicaciones web. Muchos sistemas como Drupal, PhpBB y Wordpress lo utilizan. Si bien puede utilizarse para todo tipo de aplicaciones, su popularidad est muy ligada al lenguaje PHP.

MySQL
MySQL es una base de datos muy rpida en la lectura cuando utiliza el motor no transaccional MyISAM, por lo cual es ampliamente utilizada para desarrollos que no precisan de transacciones. A partir de la inclusin de InnoDB, se comenz a utilizar MySql en entornos transaccionales como una alternativa gratuita a los grandes motores comerciales. Adems, la amplia portabilidad de MySql hace que sea una de las bases de datos ms utilizadas y en un gran abanico de tipos de aplicaciones. Algunas grandes aplicaciones web conocidas para MySql son Wikipedia, Google AdWords y Facebook.

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina VIII.REPLICACIN, CLUSTER, ESCALABILIDAD

Firebird
La escalabilidad en el caso de Firebird se debe tener en cuenta en funcin de las diferentes arquitecturas que presenta, es importante aclarar que en funcin de las diferentes arquitecturas que presenta Firebird se puede ir escalando a travs de ellas en la medida en que las necesidades crecen. SuperServer: En este caso existen problemas de escalabilidad, si se instala en una computadora con multi-CPUs solamente utilizara uno de los CPU. ClassicServer: Este caso beneficia a la escalabilidad, pero al mismo tiempo entre ms crece el sistema le lleva ms tiempo al sistema operativo tener que sincronizar las diferentes sesiones conectadas a la base de datos SuperClassic: En este caso es muy sencilla la escalabilidad, ya que ante una creciente cantidad de clientes de la base de datos, simplemente el servidor debe crear un thread nuevo para cada nueva sesin.

rastrear las rotaciones de logs. Estos logs sirven como registros de actualizaciones para enviar a los servidores esclavos. Cuando un esclavo se conecta al servidor maestro, informa al mismo acerca de la posicin hasta la cual el esclavo ha ledo los archivos de log en la ltima actualizacin satisfactoria. El esclavo recibe cualquier actualizacin que ha tenido lugar desde entonces, y se bloquea y espera para que el master le enve nuevas actualizaciones. Las nuevas actualizaciones de las tablas que se replican se deben realizar en el servidor maestro para evitar conflictos de integridad de datos entre las tablas del servidor maestro y las de los servidores esclavos. Este tipo de replicacin acarrea beneficios para en cuanto a la robustez, la velocidad, y la administracin del sistema: En cuanto a la robustez, esta se ve aumentada dado que en caso de problemas con el maestro, puede cambiar al esclavo como copia de seguridad. Puede conseguirse un mejor tiempo de respuesta dividiendo la carga de consultas de clientes a procesar entre los servidores maestros y esclavos. Por ejemplo, podemos optar por enviar consultas de tipo SELECT al esclavo para reducir la carga de proceso de consultas del maestro. Sin embargo, las sentencias que modifican datos deben enviarse siempre al maestro, para evitar problemas de sincronizacin entre el maestro y el esclavo. Otro beneficio de usar replicacin es que puede realizar copias de seguridad usando un servidor esclavo sin molestar al maestro. El maestro contina procesando actualizaciones mientras se realiza la copia de seguridad. MySql tiene una versin para soportar clusterizacin. Esta recibe el nombre de MySQL Cluster. MySQL Cluster permite alta disponibilidad y alta redundancia de datos. Es una versin de MySql adaptada para el entorno de computacin distribuida. Usa el motor de almacenamiento NDB Cluster para permitir la ejecucin de varios servidores MySQL en un cluster. MySql cluster est disponible para los sistemas operativos Linux, Mac OS X y Solaris. Sin embargo se estima que en un futuro cercano, MySql Cluster podr ser utilizado en la totalidad de los sistemas operativos que soporta MySql en su versin normal. IX. INDICES

En Firebird se puede realizar tareas de replicacin de datos mediante el uso de diferentes herramientas como pueden ser IBReplicator o FBReplicator, tambin se pueden utilizar tcnicas como por ejemplo la de crear una Shadow en un disco externo, lo cual nos protege ante posibles desastres que puedan ocurrir en el disco principal, pero si borramos los datos en el disco original tambin se borraran en la Shadow.

PostgreSQL
A partir de la version 9.0, PostgreSQL viene con un sistema de replicacin incluido, que permite la replicacin asincrnica de la Base de Datos en varios sistemas, basada en exportar el contenido de los write-ahead logs (Warm Standby). Tambin Permite que se re direccionen a estos servidores replicados las queries de lectura de manera de dividir el trafico de lectura eficientemente. (Hot Standby) Si bien PostgreSQL tambin soporta clusterizacion para modos de alta disponibilidad y de load-balancing, requiere de cierto middleware para la deteccin de dichas fallas y la consecuente migracin al nodo de backup. Teniendo en consideracin el uso que le daremos a la Base de Datos, PostgreSQL nos dejara configurar si las actualizaciones en los diferentes nodos del cluster sean sincrnicas, asincrnicas, totales, parciales y por ltimo, cuales querramos que sean Warm o Hot Standby.

MySQL
MySQL brinda soporte para la utilizacin de ndices, lo cual puede llegar a mejorar el rendimiento de la base de datos en gran medida, siempre y cuando se utilicen de forma correcta. MySQL tiene algunas limitaciones en cuanto a los ndices. Permite definir hasta 32 ndices por cada tabla y cada ndice puede incorporar hasta 16 columnas. En los distintos motores de almacenamiento de MySQL podemos encontrar los siguientes tipos de ndices: B-Tree: Son ndices con estructura de rbol. Estos tipos de ndices son muy utilizados por su flexibilidad, rendimiento y ahorro de espacio. MySQL utiliza

MySQL
MySQL soporta, a partir de su versin 5, replicacin asncrona unidireccional. Esto significa que un servidor acta como maestro y uno o ms actan como esclavos. El servidor maestro tiene la tarea de escribir actualizaciones en el archivo de log, y mantiene un ndice de los ficheros para

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina ndices B-Tree en los InnoDB. En el caso incrustado, es decir, datos (y no en un MyISAM). motores MyISAM, HEAP e de InnoDB, el ndice est que se almacena junto a los fichero separado como en

Hash: Este tipo de ndices est basado en algoritmos de hash que garantiza (casi siempre) la dispersin de valores de la clave. As se evita que en un rango de valores de ndice se acumulen la mayora de los resultados, como puede suceder en los B-Tree (por ejemplo, que la mayora de telfonos se acumulen en las entradas de ndice que empiezan por 91 y 93). El algoritmo de hash hace que valores del ndice muy similares se indexen separados. R-Tree: Son ndices utilizados para datos espaciales y multidimensionales. Permiten localizar rpidamente puntos contenidos en diferentes tipos de reas.

Si bien PostgreSQL no es propiedad de ninguna compaa sino de la comunidad global de desarrolladores, hay empresas que tienen sus propias distribuciones de la base de datos, ya sean front-ends propietarios, o paquetes con mdulos agregados y servicio de soporte comercial a nivel empresarial. Uno de estos casos es la empresa EnterpriseDB cuyo algunos de sus productos son Postgres Plus Standard Server y Postgres Plus Advanced Server. Sun Microsystems, a partir de la versin 10 del Solaris, viene con PostgreSQL incluido y da soporte para l.

MySQL
MySQL se licencia bajo los trminos de la Licencia Pblica General GNU (GNU GPL). Por lo tanto, es gratis para uso interno y para los ISP (Internet Service Provider). Esto significa que MySQL es gratis si lo usa para desarrollo de software e incluso para desarrollo de una aplicacin a medida. Incluso es posible distribuir una aplicacin no GPL que use MySQL sin pagar ningn tipo de licencia, siempre y cuando el uso de MySQL no es requerido para el funcionamiento de la aplicacin. Es decir que la aplicacin debe poder desarrollar las actividades sin depender de MySQL, pudiendo migrar hacia otro SGBD. XI. MODO EMBEBIDO

Textuales: Los ndices textuales permiten localizar rpidamente palabras completas en campos de texto (varchar, text, etc.). Tambin son llamados FULL TEXT SEARCH. Son los utilizados habitualmente en la implementacin de buscadores. MySQL dispone de este tipo de ndices para tablas MyISAM. Estos ndices se implementan como una estructura de rboles B-Tree de dos niveles. Dicho de forma sencilla e imprecisa, el primer rbol B-Tree almacena cada palabra indexada, el nmero de filas en las que aparece y un puntero la raz de su segundo rbol asociado. El segundo rbol B-Tree almacena por cada fila el peso de la palabra en la fila (la importancia) y un puntero a los datos (rowid). Adems, MySql permite ndices UNIQUE que no permiten almacenar dos valores iguales. . X.MODO LICENCIAMIENTO

Firebird
Firebrd es capaz de trabajar de forma embebida dentro de alguna aplicacin, mediante el Embedded Firebird Server. Cuando se desea que una aplicacin tenga acceso a la base de datos y se desea que este servicio sea accedidos solamente por una sola aplicacin y que el mismo tiempo esta sea exclusiva de la aplicacin que le accede, como es el caso de los celulares, lo que se puede hacer es dotar a la aplicacin de una base de datos embebida como la Embedded Firebird Server, la cual mediante la conexin con una librera dinmica en formato DLL (fbembed.dll) que se conecta a la aplicacin le permite el acceso a la misma a los servicios prestados por la base de datos. La opcin de base de datos embebida fue introducida en la versin 1.5 de Firebird, y fue diseada especialmente para aplicaciones que necesitaban ser distribuidas con el servidor de Firebird incluido. Se pueden tener varios servidores embebidos ejecutndose al mismo tiempo, y se pueden tener varias aplicaciones conectadas al mismo servidor, pero en el momento del acceso a una base de datos, esta es lockeada por el servidor para que nada mas le sea el acceso a ella por parte de una nica aplicacin en un momento dado. La instalacin de sistemas embebidos se puede realizar en entornos Linux y Windows mediante la simple copia de los archivos DLL necesitados en las locaciones en que se necesitan, fbembed.dll en el caso de entornos Windows y libfbembed.so en el caso de entornos Linux.

Firebird
Firebird esta desarrolla bajo una licencia IPL (Interbase Public License) creada por Borland a partir de la licencia MPL (Public Mozilla License) creada por Mozilla. Esto significa que cualquier tipo de uso, distribucin o modificacin que se quiera hacer del sistema dentro de una aplicacin propia est permitido y al mismo tiempo es gratuito. Sin embargo existen compaas que proveen soporte tcnico de sistemas Firebird, el cual es pago, un ejemplo de ello es la empresa IBPhoenix, la cual ofrece servicio de soporte tcnico, capacitacin, consultora, reparacin de bases de datos, etc. Es importante recalcar que Firebird no posee una entidad comercial nica que lo desarrolle y que cobre por realizar ese trabajo, sino que es un grupo de desarrolladores a nivel mundial los cuales se encargan de realizar esa tarea sin fines de lucro, es el caso de la Fundacin Firebird la cual recibe donaciones de sus miembros y sponsors los cuales sostienen cualquier tipo de desarrollo de la herramienta.

PostgreSQL

PostgreSQL

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina PostgreSQL soporta ejecutarse en modo embebido utilizando un preprocesador. Primero se escribe el cdigo SQL dentro del cdigo C o C++. Luego el preprocesador ECPG convierte el cdigo SQL en llamadas a una librera de cdigo. De esta manera, queda listo para ser compilado por un compilador C para ser utilizado embebido en una aplicacin. JayBird para conectarse a Java Firebird. NET

UIB,FIBPlus*,IBObjects*(Delphi/C++ Builder) PHP para Firebird FireRuby

MySQL
MySQL presenta la biblioteca de servidor incrustado libmysqld. Esta librera permite que MySQL pueda trabajar en modo embebido con una gran cantidad de dominios de aplicaciones. La biblioteca libmysqld brinda a los desarrolladores la posibilidad de aadir MySQL Server en aplicaciones y dispositivos electrnicos, donde el usuario final no tiene conocimiento que hay una base de datos subyacente. MySQL Server incrustado es ideal para uso tras aplicaciones en Internet, kioskos pblicos, combinacin de hardware/software en llaveros, servidores de alto rendimiento de Internet, bases de datos auto contenidas distribuidas en CD-ROM, y un largo etctera de posibilidades. La librera libmysqld tiene una licencia GPL, que permite a los desarrolladores utilizarla gratuitamente siempre y cuando la utilicen para desarrollos del mismo tipo, es decir, desarrollos GPL. Sin embargo, en caso de que los desarrolladores deseen crear aplicaciones con otro tipo de licencias, existe una licencia comercial distribuida por Oracle Corporation. Existen dos tipos de bibliotecas para el trabajo con MySQL en modo embebido: libmysqld.lib: Biblioteca dinmica para aplicaciones threaded. mysqldemb.lib: Biblioteca esttico para aplicaciones no threaded. XII. HARDWARE MNIMO Y MXIMO QUE SOPORTAN

MySQL
MySQL presenta la posibilidad de conectarse con una gran variedad de lenguajes de programacin. Existen muchas APIs que permiten a los desarrolladores acceder a bases de datos MySQL utilizando variados lenguajes de programacin. Por ejemplo, existen APIs para C, C++, C#, Pascal, Delphi Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programacin, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (va dbExpress), Eiffel, Smalltalk, Java (con una implementacin nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac), (x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno de estos utiliza una API especfica. Adems de ello, existe una interfaz ODBC, llamada MyODBC. De esta forma se permite a cualquier lenguaje de programacin que soporte ODBC comunicarse con las bases de datos MySQL. Tambin se puede acceder desde el sistema SAP, lenguaje ABAP. XIV. LMITES

Firebird
Dentro de los lmites de Firebird se encuentran siguientes: los

Firebird
En el caso de Firebird 2.0 los requerimientos mnimos para su instalacin son los siguientes: 128 Mb RAM Windows 95/98/XP, Linux, Solaris, Mac OS X Un HDD capaz de soportar el servidor que se encuentra en el rango de los 9 Mb a los 12 Mb, libreras y herramientas de comando, etc. Procesadores de la lnea 586 XIII.CONECTIVIDAD DE LA BASE DE DATOS

Tamao mximo de la base de datos: en Firebird 1.5 es de 32 Tb, en versiones posteriores es casi ilimitada mediante el uso de varios ficheros particionados Tamao mximo de la base de datos en un solo fichero: tanto en versiones 1.5 como en posteriores puede ser de varios Tb, pero el limite viene definido por el sistema de archivos del SO Mximo numero de ficheros en la base de datos: Tanto en Firebird 1.5 como en versiones posteriores es de 64.535 Mximo numero de tablas: en Firebird 1.5 y versiones posteriores es de 64.535 Mximo tamao de tabla: tanto en Firebird 1.5 como en versiones posteriores es de 32 Tb

PostgreSQL
Firebird Tamao Maximo BD Tamao Maximo tabla Tamao Maximo fila ilimitado ~32 TB 64k 64k MySQL ilimitado PostgreSQL ilimitado ~32TB 1.6 TB

Firebird
En el caso de Firebird esta se puede conectar con diversas tecnologas para generar un acceso a la base de datos, estas tecnologas pueden ser:

Trabajo Prctico Final | Laboratorio IV | Ingeniera en Informtica | Universidad de Palermo | Argentina Maxima cantidad de filas por columna Max Blob/Clob Size Maximo tamao del CHAR Maximo tamao Number Minimo valor Date Maximo valor Date Tamao maximo del nombre de la columna . XV. BIBLIOGRAFA Depends 2GB 32767B 64 bits 100 32768 31 4096 4GB 64Kb 64 bits 1000 9999 64 250-1600 1GB / 2GB 1GB ilimitado -4713 5874897 63

Firebird
http://www.firebirdsql.org/ http://www.firebird.com.mx/descargas/documentos/ tema_2-caracteristicas_basicas.pdf http://www.slideshare.net/lejogu/fire-bird-1507055 http://firebirdmanual.com/firebird/es/firebirdmanual/2/virtudes-del-firebird/12 http://www.firebirdsql.org/pdfmanual/Firebird-2.5QuickStart.pdf http://www.firebirdsql.org/manual/fbmetasecurembedded.html http://www.sqlmanager.net/en/products/studio/ibfb http://www.sinatica.com/index.php/en/monitor http://www.sinatica.com/blog/en/index.php/articles/ firebird-superserver-classicserver-or-superclassic

PostgreSQL
http://en.wikipedia.org/wiki/Postgresql http://en.wikipedia.org/wiki/Comparison_of_rela tional_database_management_systems http://www.postgresql.org/

MySQL
http://dev.mysql.com/doc/refman http://en.wikipedia.org/wiki/MySQL

You might also like