domingo, 1 de febrero de 2015

MySQL y PostgreSQL ¿Cuál es Mejor?


PostgreeSQL y MySQL se ha prolongado muchos años como los gestores de base de datos por excelencia. En el comienzo, PostgreSQL era el sistema de base de datos de código abierto más rico en características, mientras que MySQL era el más rápido de los dos. Sin embargo, a lo largo del tiempo estos sistemas han convergido y las diferencias se han vuelto mucho más sutiles. Hoy en día, muchos proyectos se ejecutarían tan bien en un sistema de base de datos como en el otro. Además, ambas opciones de código abierto ofrecen una dura competencia a sus alternativas de código cerrado y más costoso. Las principales diferencias giran en torno a conformidad SQL, necesidades de desarrollo, cumplimiento ACID y proyectos de pila LAMP.

Conformidad SQL 

Una de las primeras mayores diferencias entre PostgreSQL y MySQL tratan de la conformidad SQL. Los dos sistemas de bases de datos usan el Lenguaje Estructurado de Consultas (SQL), pero sólo uno de ellos está conforme al estándar establecido por la Organización Internacional de Normalización (ISO). Cuando es importante que tu código se adhiera a este estándar, PostgreSQL es tu mejor opción. Esto te permitirá hacer fácilmente una transición de PostgreSQL a otro sistema de base de datos mientras tu proyecto se desarrolla. Sin embargo, esto también significa que no serás capaz de pedir prestado código de otros proyectos desarrollados en MySQL, los cuales no son conformes al SQL estándar de ISO. Esto presenta una difícil decisión que debería hacer basándose en las necesidades actuales y futuras de su proyecto.

Nuevos Desarrollos

Cuando estés creando un nuevo proyecto por tu cuenta, desde el principio, entonces deberías usar PostgreSQL. Porque el sistema de base de datos es más fiable y construido sobre estándares intenacionales. Dado que MySQL y PostgreSQL son ambos proyectos de código abierto, el coste de usar un sistema u otro es el mismo. Quitando el coste de la ecuación, PostgreSQL es la opción obvia para nuevos desarrollos de proyectos porque ofrece una superior protección de datos. Incluso si estás más familiarizado con MySQL, siempre puedes apuntarte a un curso online sobre PostgreSQL. No obstante, si planeas ampliar en proyectos de código abierto PostgreSQL puede no ser la mejor opción.

Proyectos de Código Abierto

En la biblioteca de proyectos de código abierto ya existentes, MySQL es el sistema de base de datos más popular. Al principio, esto se debió principalmente a la velocidad de MySQL sobre PostgreSQL. Ahora, el factor principal de la popularidad de MySQL es su uso establecido en gran cantidad de proyectos. De esta manera, si piensa usar, contribuir, o empezar un proyecto de código abierto probablemente quiera mantenerse con MySQL. Esto le hará mucho más fácil conseguir que otros desarrolladores participen en sus proyectos. También encontrará que existen muchos más cursos online que enseñan MySQL que PostgreSQL. Además, es más fácil pedir prestado código de proyectos de código abierto si está usando MySQL.

Pedir Prestado Código de Proyectos de Código Abierto

Ya que MySQL no cumple con el estándar ISO para SQL, gran parte del código que ejecuta en MySQL no funcionará en PostgreSQL. Esto significa que si quiere pedir prestado código de proyectos de código abierto que usen MySQL, tendría que reescribir el código para que funcione con PostgreSQL (aquí hay una clase que puede ayudar con la traducción PostgreSQL). Esto contradice el objetivo de pedir prestado código abierto porque tendrá que gastar tiempo desarrollando y probando algo que debería ser tan sencillo como copiar y pegar. En lugar de eso, es mucho más fácil usar simplemente MySQL cuando piensa pedir prestado código de proyectos de código abierto.

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

  • PostgreSQL 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 más recursos y carga más el sistema.
  • Límite del tamaño de cada fila de las tablas a 8 (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.


Síntesis


          Como conclusión a la comparación entre MySQL y PostgreSQL, parece aceptado que MySQL junto con Apache y PHP forman un buen equipo para servir páginas web, además permite la reutilización de código lo que puede crear un compendio de programadores trabajando y mejorando códigos e inclusive lenguajes de programación, además de ser mucho más rápido e integrarse al servidor y lenguaje de manera más eficiente, por lo que en definitiva MyQSL es la mejor opción a nuestro parecer, por su parte PostgreSQL debe permitir a los programadores poder reutilizar el código ya que reescribirlo amerita la utilización de horas hombre de manera abrupta y ralentiza el trabajo de creación de una página web.

Autores:
José Agustín Torrez C.
Carlos Eduardo Araque A.