MySQL vs. PostgreSQL
Hemos estado buscando por internet información y comparativas sobre MySQL
y PostgreSQL para ver cuál puede ser mejor, y la información es abundante
pero confusa. Hay muchos comentarios al respecto, la mayoría de ellos
catalogables dentro de las "guerras santas" como las que se producen en las
comparaciones "Linux vs. Windows", "Mac vs. PC", etc... Para hacerse una
idea, basta con ver todas las páginas que aparecen en el buscador google al buscar
"postgres vs mysql" o hacer una búsqueda similar en SlashDot.
De entre todo lo leido, podemos sacar estas conclusiones:
MySQL:
- Su principal objetivo de diseño fue la VELOCIDAD. Se sacrificaron
algunas características esenciales en sistemas más "serios" con este fin.
- Otra característica importante es que consume MUY POCOS RECURSOS, tanto
de CPU como de memoria.
- Licencia GPL a partir de la versión 3.23.19.
Ventajas:
- Mayor rendimiento. Mayor velocidad tanto al conectar con el servidor
como al servir selects y demás.
- Mejores utilidades de administración (backup, recuperación de errores,
etc).
- Aunque se cuelgue, no suele perder información ni corromper los datos.
- Mejor integración con PHP.
- No hay límites en el tamaño de los registros.
- Mejor control de acceso, en el sentido de qué usuarios tienen acceso a qué tablas y con
qué permisos.
- MySQL se comporta mejor que Postgres a la hora de modificar o añadir
campos a una tabla "en caliente".
- Inconvenientes:
- No soporta transacciones, "roll-backs" ni subselects.
- No considera las claves ajenas. Ignora la integridad referencial,
dejándola en manos del programador de la aplicación.
PostgreSQL:
- Postgres intenta ser un sistena de bases de datos de mayor nivel que
MySQL, a la altura de Oracle, Sybase o Interbase.
- Licencia BSD.
Ventajas:
- Por su arquitectura de diseño, escala muy bien al aumentar el número de
CPUs y la cantidad de RAM.
- Soporta transacciones y desde la versión 7.0, claves ajenas (con comprobaciones de integridad
referencial).
- Tiene mejor soporte para triggers y procedimientos en el servidor.
- Soporta un subconjunto de SQL92 MAYOR que el que soporta MySQL. Además,
tiene ciertas características orientadas a objetos.
Inconvenientes:
- Consume BASTANTES más recursos y carga más el sistema.
- Límite del tamaño de cada fila de las tablas a 8k!!! (se puede ampliar a
32k recompilando, pero con un coste añadido en el rendimiento).
- Es de 2 a 3 veces más lenta que MySQL.
- Menos funciones en PHP.
En cuanto a consideraciones de estabilidad del servidor, cada comparativa
da datos contradictorios. En general parece que MySQL es más estable (aunque
también hay gente que opina lo contrario), y que Postgres tiende a
desperdiciar memoria y sobrecargar bastante el sistema (aunque de nuevo, hay
opiniones distintas).
Como conclusión a la comparación entre MySQL y Postgres, parece aceptado que MySQL junto con Apache y PHP forman
un buen equipo para servir páginas web con contenido dinámico, discusiones,
noticias, etc., por ejemplo al estilo de
SlashDot. En general, sistemas en los que la velocidad y el número de
accesos concurrentes sea algo primordial, y la seguridad no sea muy
importante (pueda bastar con hacer backups periódicos que se restaurarán
tras una caida del servidor). En cambio, para sistemas más serios en las que la consistencia de la
BD sea fundamental (BD con información realmente importante, bancos,
etc.) PostgreSQL es una mejor opción pese a su mayor lentitud.
Por último, señalar que hace poco
Inprise/Borland ha liberado bajo una
licencia Open Source (modificación de la MPL de Mozilla) su BD InterBase 6.0.
También sería otra opción a considerar.
Fuentes de información: