MySQL vs PostrgreSQL vs BerkleyDB

Antonio Castro acastro en ciberdroide.com
Mar Jul 5 08:08:00 CEST 2005


On Mon, 4 Jul 2005, Chema Cortes wrote:

> Catalin Lungu escribió:
>
> > He leído mucho en internet sobre comparaciones entre estas base de datos pero no acabo de aclararme. Lo que necesito es una BD que soporte SQL, que vaya rápido, que no pete mucho, que no corrompa los datos en las caídas de servidores. Espero no pedir demasiado.
>
> Te podemos contar muchas cosas, y cada cuál te podrá dar argumentos a
> favor y en contra, por lo que te recomiendo que las pruebes tú mismo.
>
> En función de qué entiendas por soporte SQL hay que decir que la
> Berkeley no tiene SQL. Mysql tiene un SQL incompleto, y el SQL de
> Postgresql es casi casi completo.
>
> La Berkeley tiene la particularidad que no requiere de servidor, es muy
> rápida, no consume muchos recursos, es tremendamente robusta y soporta
> accesos concurrentes. Es, por eso, muy usada en sistemas empotrados.
> Hablando de python, el acceso de alto nivel sólo permite almacenar
> cadenas de caracteres. También puedes acceder a bajo nivel, pero ya no
> tendría nada que ver con el SQL.
>
> MySQL es una de las más elegidas por su rapidez. Sus optimizaciones se
> realizan a costa de recortar características, lo que puede resultar
> frustrante si necesitas combinaciones complejas de muchas tablas para
> crear vistas, esquemas y demás. Aún así, para aplicaciones web suele dar
> muy buenos resultados y es más que suficiente.
>
> Postgresql es un SGDB muy completo, con todo lo que necesites: triggers,
> vistas, procedimientos almacenados (procedimientos que pueden ser
> escritos en python), etc. Las última versión 8 es equiparable en solidez
> con Oracle. Tiene una velocidad bastante aceptable, aunque no es tan
> rápida como mysql.
>
> Sobre corrupción de datos y caídas de sistemas habría que hablar mucho
> sobre las transacciones. El motor MyISAM de MySQL no soporta
> transacciones, con lo que una caída de sistema en medio de una
> actualización de tablas puede provocar la pérdida de la integridad
> referencial. El motor InnoDB ya incorpora transacciones, pero implica
> una pérdida de velocidad en comparación con MyISAM. No conozco su
> robustez, así como tampoco las características del resto de motores de
> mysql. Algunos de ellos tienen, al menos nominalmente, características
> muy potentes para control de transacciones.
>
> Postgresql-8 tiene un mecanismo de transacciones muy robusto que hace
> que la consolidación sea casi inmediata. Prácticamente se reduce a cero
> las posibilidades de perder la integridad referencial a causa de un
> fallo del sistema.
>
> En fin, yo he elegido postgresql para mi trabajo de desarrollo. En
> producción utilizo oracle, informix y sqlserver, y tengo mysql para
> pruebas de una intranet (apache tomcat). Si te lías sólo con tres bases
> de datos, ya no te cuento el lío que puedo tener yo en estos momentos :-S

Una excelente comparativa.

Aportaré mi granito de arena. Yo solo conozco Postresql, y Mysql solo por
referencias porque no lo he usado nunca.

Yo añadiría que la historia de Mysql y la de Postgresql han sido bastante
distintas, y conviene tener una idea de estas trayectorias. En parte ha
existido una cierta convergencia entre ambas.

Mysql no nació en mi humilde opinión como un autentico SGDB, sino como un
rápidísimo gestor de ficheros indexados, sin soporte de integridad
transaccional y con soporte muy incompleto de lenguaje SQL. Es injusto
comparar velocidades con cosas tan distintas. Luego Mysql fué evolucionando
en el sentido de ir completando poco a poco estas importantes carencias.

Postgresql que se ha desarrollado desde sus comienzos como proyecto de
software totalmente libre creo que ha marcado una trayectoria mucho más
coerente. Su vocación de SGDB completo arranca desde sus comienzos.
Su convergencia con MySQL ha consistido en ir ganando velocidad, pero
es que además de eso, ha continuado ganando en robustez, y en funcionalidad.

Mysql es la más adecuada para entornos en los cuales la BD va ha sufrir
masivas consultas, y unas pocas altas, bajas y modificaciones.De aquí
viene su enorme éxito en determinados servicios de consultas en Internet,
donde la inmensa mayoría de los usuarios solo puenden consultar.

Si la BD va a ser sometida a un número de altas, bajas, y modificaciones
elevadas y con alto nivel de concurrencia, a poco cariño que tengas a tus
datos lo suyo es optar por Postgresql.

La velocidad se puede compensar con más máquina, y la falta de integridad
referencial no.

-- 
Un saludo
Antonio Castro

       /\     /\
         \\W//
        _|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . acastro en ciberdroide.com   |
+()()()---------()()()--------------------+




Más información sobre la lista de distribución Python-es