iStock-1061224562.jpg
Ciencia y Tecnología

PostgreSQL y MySQL: comparativa

Equipo de Expertos en Ciencia y Tecnología

Las consultas de PostgreSQL son, en la mayoría de los casos, exactamente lo mismo que las consultas de MySQL. Sin embargo, estos dos tipos de bases de datos, PostgreSQL y MySQL, incluyen muchas diferencias. Para conocer en qué aspectos difiere la una de la otra hemos recogido las principales distinciones entre las dos.

 

¿Quién está actualmente detrás de estas bases de datos?

  • PostgreSQL. PostgreSQL es un proyecto de código abierto mantenido por el Grupo de Desarrollo Global de PostgreSQL y su comunidad.
  • MySQL. El código fuente de MySQL está disponible bajo los términos de la Licencia Pública General de GNU, así como bajo una variedad de acuerdos de propiedad. MySQL ahora es propiedad de Oracle Corporation.

 

¿Cómo es la estructura de la base de datos en PostgreSQL y MySQL?

  • PostgreSQL: PostgreSQL es un sistema de gestión de base de datos relacional de objetos con énfasis en la extensibilidad y el cumplimiento de los estándares. PostgreSQL cumple con ACID, es transaccional, tiene vistas actualizables y materializadas, disparadores y claves externas. También soporta funciones y procedimientos almacenados. PostgreSQL usa tablas, restricciones, activadores, roles, procedimientos almacenados y vistas como los componentes centrales con los que trabaja. Una tabla consta de filas y cada fila contiene un mismo conjunto de columnas. PostgreSQL usa claves primarias para identificar de forma única cada fila en una tabla y claves externas para asegurar la integridad referencial entre dos tablas relacionadas. PostgreSQL también es compatible con muchas características NoSQL.
  • MySQL: MySQL es un sistema de gestión de bases de datos relacionales de código abierto. Al igual que PostgreSQL y todas las demás bases de datos relacionales, MySQL usa tablas como un componente central y tiene más o menos el mismo conjunto de características que PostgreSQL. Cabe mencionar que las versiones más nuevas de MySQL (5.7+) también admiten algunas características NoSQL.

 

¿Se necesitan índices en PostgreSQL y MySQL?

Los índices mejoran el rendimiento de la base de datos, ya que permiten que el servidor de base de datos encuentre y recupere filas específicas mucho más rápido que sin un índice. Pero, lo cierto es que agregan una cierta sobrecarga al sistema de base de datos en su conjunto, por lo que deben usarse con sensatez.

Sin un índice, el servidor de la base de datos debe comenzar con la primera fila y luego leer toda la tabla para encontrar las filas relevantes. Se trata de un procedimiento que puede aumentar el coste de las operaciones.

Al comparar PostgreSQL y MySQL vemos que:

  • PostgreSQL: PostgreSQL incluye soporte integrado para algunos índices. Los índices en PostgreSQL también admiten índices de expresión, que se pueden crear con un índice del resultado de una expresión o función, en lugar de simplemente el valor de una columna; e índices parciales, que hacen referencia solo a una parte de una tabla.
  • MySQL: la mayoría de los índices de MySQL se almacenan en árboles B. Las excepciones incluyen los índices de los tipos de datos espaciales que usan árboles-R. MySQL también admite índices hash y el motor InnoDB usa listas invertidas para los índices FULLTEXT.

 

¿Dónde (y cómo) se implementan estas bases de datos?

Pese a que ambas bases de datos, PostgreSQL y MySQL están disponibles en múltiples sistemas operativos existen diferencias:

  • PostgreSQL. Las instalaciones típicas se realizan en varios servidores Linux, basados en la nube o en las instalaciones. Los proveedores líderes en la nube tienen soporte PostgreSQL en sus plataformas. También hay una API REST para cualquier base de datos de Postgres. PostgreSQL se escribe en C y admite una variedad de lenguajes de programación, entre los que destacan C ++, Java, Phyton, Delphi, Perl, Lisp, Lua, .NET, Node.js, PHP, Erlang, Go, R y D.
  • Es compatible con los lenguajes de programación Delphi, C, C ++, Phyton, Perl, Java, Lua, .NET, Node.js, R, PHP, Erlang, Lisp, Go y D. Hay que recordar que MySQL fue escrito en C y C ++ y que la implementación basada en la nube y el soporte de plataforma están disponibles.

A pesar de las diferencias entre PostgreSQL y MySQL ambas cuentan con buenas opciones de soporte comunitario y, en los dos casos, existe una gran cantidad de documentación disponible en línea.