2ndQuadrant | PostgreSQL
Bases de Datos de Misión Crítica
  • Contacto
  • ES
    • EN
    • FR
    • IT
    • DE
    • PT
  • Soporte & Servicios
  • Descargas
    • Instaladores
      • Postgres Installer
      • 2UDA – Unified Data Analytics
    • Whitepapers
      • Caso de Negocio para Soporte PostgreSQL
      • Mejores Prácticas de Seguridad
    • Casos de Estudio
      • Migración de Bases de Datos
        • International Game Technology (IGT)
        • Healthcare Software Solutions (HSS)
        • Navionics
      • Ajustes de Rendimiento
        • BenchPrep
        • tastyworks
      • Clústeres de Bases de Datos Distribuidas
        • ClickUp
        • Agencia Espacial Europea (ESA)
        • Animal Logic
        • Telefónica del Sur
      • Actualizaciones de Bases de Datos
        • Instituto Alfred Wegener (AWI)
      • Soporte & Administración de Bases de Datos
        • Met Office
        • Agilis Systems
        • London & Partners
  • Centro de Aprendizaje Postgres
    • Webinars
      • Próximos Webinars
      • Biblioteca de Webinar
    • Whitepapers
      • Caso de Negocio para Soporte PostgreSQL
      • Mejores Prácticas de Seguridad
    • Blog
    • Formación
      • Catálogo de los Cursos
    • Casos de Estudio
      • Ajustes de Rendimiento
        • BenchPrep
        • tastyworks
      • Clústeres Distribuidos
        • ClickUp
        • Agencia Espacial Europea (ESA)
        • Telefónica del Sur
        • Animal Logic
      • Administración de Bases de Datos
        • Agilis Systems
      • Formación Profesional
        • Met Office
        • London Partners
      • Actualizaciones de Bases de Datos
        • Instituto Alfred Wegener (AWI)
      • Migración de Bases de Datos
        • International Game Technology (IGT)
        • Healthcare Software Solutions (HSS)
        • Navionics
    • Libros
      • PostgreSQL 11 Administration Cookbook
      • PostgreSQL 10 Administration Cookbook
      • PostgreSQL High Availability Cookbook – 2a Edición
      • PostgreSQL 9 Administration Cookbook – 3a Edición
      • PostgreSQL Server Programming Cookbook – 2a Edición
      • PostgreSQL 9 Cookbook – Edición en Chino
    • Videos
    • PostgreSQL
      • PostgreSQL – La historia
      • ¿Quién usa PostgreSQL?
      • Preguntas Frecuentes sobre PostgreSQL
      • PostgreSQL VS MySQL
      • Caso de Negocio para PostgreSQL
      • Información de Seguridad
      • Documentación
  • Sobre nosotros
    • Sobre 2ndQuadrant
    • La Pasión de 2ndQuadrant por PostgreSQL
    • Noticias
    • Trabaje con Nosotros
  • Blog
  • Instaladores
  • Menú Menú
Usted está aquí: Inicio1 / Introducción a PostgreSQL2 / PostgreSQL VS MySQL

PostgreSQL vs MySQL

Al considerar qué base de datos usar para su negocio, ¡no cometa el error de pensar que todos los gestores de bases de datos de código abierto son lo mismo!

PostgreSQL vs MySQL, Postgres vs MySQL, mysql vs postgresql

Hay diferencias radicales entre PostgreSQL y MySQL. Se debe tomar una decisión informada después de evaluar las diferencias y compensaciones entre los dos sistemas.

Hemos hecho un resumen de las similitudes y diferencias de las capacidades y características más comúnmente evaluadas entre PostgreSQL y MySQL:

  • Código abierto
  • Cumplimiento de ACID
  • Cumplimiento de SQL
  • Replicación
  • Rendimiento
  • Seguridad
  • Hosting
  • Soporte comunitario
  • Soporte para concurrencia
  • Soporte para NoSQL/JSON
  • Vistas materializadas y tablas temporales
  • Soporte para datos geoespaciales
  • Soporte para lenguajes de programación
  • Sistema de tipos extensible
  • Resumen de la comparación

Aunque hay muchas similitudes y coincidencias entre las dos bases de datos, también hay diferencias bien marcadas. Hemos tratado de proporcionarle un comparación justa y precisa entre las dos, pero al final es necesario evaluar su escenario particular y determinar qué base de datos es la más adecuada para su caso de uso específico.

Obviamente apoyamos PostgreSQL, pero es posible que haya algunos escenarios en los que MySQL beneficie más al usuario final.

Código abierto

El software de código abierto tiene beneficios únicos —costo, flexibilidad, seguridad y responsabilidad— que no pueden ser superadas por las soluciones de software privativo. El software de código abierto está disponible gratuitamente y puede ser redistribuido y modificado por cualquiera. El software de código abierto tiene viabilidad a largo plazo y siempre está a la vanguardia de la tecnología. Es creado y soportado por una comunidad mundial de organizaciones y desarrolladores individuales, muchos de los cuales también se rigen por los valores del código abierto, como la colaboración y el voluntariado.

PostgreSQL MySQL
PostgreSQL es desarrollado por el Grupo Global de Desarrollo de PostgreSQL, un grupo diverso de múltiples compañías y contribuyentes individuales.

Es software libre y de código abierto. PostgreSQL se lanza bajo la licencia PostgreSQL, una licencia de código abierto liberal, similar a las licencias BSD o MIT.

El proyecto de desarrollo de MySQL ha hecho disponible su código fuente bajo los términos de la Licencia Pública General de GNU, así como una variedad de acuerdos privativos.

Ahora es propiedad de Oracle Corporation y ofrece varias ediciones pagadas para uso privativo.

Cumplimiento de ACID

ACID (atomicidad, consistencia, aislamiento, durabilidad) es un conjunto de propiedades de las transacciones de bases de datos. El cumplimiento de ACID asegura que ningún dato se pierda o transmita a otro lugar en el sistema en caso de una falla, incluso cuando se hacen varios cambios durante una sola transacción.

PostgreSQL MySQL
PostgreSQL cumple con ACID por completo y se asegura de que se cumplan todos los requerimientos. MySQL solo cumple con ACID cuando usa los mecanismos de almacenamiento InnoDB y NDB Cluster.

Cumplimiento de SQL

El cumplimiento de SQL es un estándar que una base de datos debe cumplir e implementa todos los estándares y pautas para el lenguaje de consulta estructurada. Esto es muy importante cuando las compañías quieren trabajar con bases de datos heterogéneas para una aplicación.

Cumplir con el estándar SQL hace que sea muy fácil trasladar datos de una base de datos que cumpla con SQL hacia otra (por ejemplo, desde Oracle hacia PostgreSQL o SQL Server).

PostgreSQL MySQL
PostgreSQL cumple con SQL en gran medida. El nivel de cumplimiento para cada característica se establece de forma clara en el Apéndice D del manual, y cualquier cambio se documenta de forma clara en la sección «Referencia» del manual de PostgreSQL.

Extracto de la documentación:

PostgreSQL soporta la mayoría de las principales características de SQL:2011. De las 179 funcionalidades requeridas para un cumplimiento completo de Core, PostgreSQL cumple al menos 160. Adicionalmente, hay una larga lista de características opcionales soportadas. Vale la pena mencionar que, al momento de escribir esto, no hay una versión actual de ningún sistema de gestión de bases de datos que afirme cumplir en su totalidad con Core SQL:2011.

MySQL cumple parcialmente en algunas versiones (por ejemplo, no soporta restricciones CHECK).

Extracto de la documentación:

Uno de nuestros principales objetivos con el producto es continuar trabajando hacia el cumplimiento del estándar SQL, pero sin sacrificar velocidad o confiabilidad. No tememos agregar extensiones a SQL o soportar características no SQL si esto incrementa en gran medida la usabilidad de MySQL Server para un gran porcentaje de nuestra base de usuarios.

Replicación

La replicación de bases de datos es la copia electrónica regular de datos desde una base de datos en un computador o servidor hacia una base de datos en otro, de modo que todos los usuarios compartan el mismo nivel de información. El resultado es una base de datos distribuida en la cual los usuarios pueden acceder a datos relevantes para sus tareas sin interferir con el trabajo de otros.

PostgreSQL MySQL
PostgreSQL soporta replicación maestro-standby e introdujo mejoras significativas que produjeron procesamiento de WAL extremadamente rápido, lo que resulta en replicación casi en tiempo real y capacidad de espera activa (hot standby) para servidores standby.

Tipos de replicación ofrecidos por PostgreSQL:

  • Un solo maestro a un standby
  • Un solo maestro a varios standbys
  • Replicación de flujo/hot standby
  • Replicación bidireccional
  • Replicación lógica por flujo de logs
  • Replicación en cascada
MySQL soporta replicación maestro-standby.

Tipos de replicación ofrecidos por MySQL:

  • Un solo maestro a un standby
  • Un solo maestro a varios standbys
  • Un solo maestro a un standby a uno o más standbys
  • Replicación circular (A hacia B hacia C y de vuelta hacia A)
  • Maestro a maestro

Rendimiento

El rendimiento es un área que solo se puede medir evaluando las métricas de escenarios potenciales, pues depende netamente de los requerimientos del usuario en específico y en la naturaleza de la aplicación.

PostgreSQL MySQL
PostgreSQL se usa ampliamente en sistemas grandes donde la velocidades de lectura y escritura son cruciales y los datos necesitan ser validados. Además, soporte una variedad de optimizaciones de rendimiento que solo están disponibles en soluciones comerciales, como soporte para datos geoespaciales, concurrencia sin bloquedo de lecturas, etc (por ejemplo, Oracle, SQL Server).

En general, el rendimiento de PostgreSQL se aprovecha mejor en sistemas que requieran ejecución de consultas complejas.

PostgreSQL rinde bien en sistemas OLTP/OLAP cuando se requiere velocidad en lectura/escritura y se necesita análisis extenso de datos.

PostgreSQL también funciona bien con aplicaciones de Inteligencia Empresarial pero se ajusta mejor a aplicaciones para Almacén de Datos y análisis de datos que requieren altas velocidades de lectura/escritura.

MySQL es una opción muy popular para proyectos basados en web que necesitan una base de datos simplemente para transacciones de datos directas y sencillas. Sin embargo, es habitual que MySQL no rinda bien cuando se somete a cargas pesadas o al intentar completar consultas complejas.

MySQL funciona bien en sistemas OLAP/OLTP cuando solo se requiere velocidad en lectura.

MySQL + InnoDB proporcionan muy buenas velocidades de lectura/escritura para escenarios OLTP. En general, MySQL funciona bien con escenarios de alta concurrencia.

MySQL es confiable y funciona bien con aplicaciones de Inteligencia Empresarial, pues las aplicaciones de inteligencia empresarial normalmente tienen alta actividad de lectura.

Seguridad

La seguridad de la base de datos se refiere al conjunto de medidas usadas para proteger y asegurar una base de datos o gestor de base de datos contra el uso ilegítimo, amenazas maliciosas y ataques. Es un término amplio que incluye una variedad de procesos, herramientas y metodologías que garantizan la seguridad dentro de un ambiente de base de datos.

PostgreSQL MySQL
PostgreSQL tiene ROLES y roles heredados para establecer y mantener los permisos. PostgreSQL tiene soporte nativo para SSL en conexiones para cifrar la comunicación cliente/servidor. También tiene seguridad a nivel de registros.

Además de esto, PostgreSQL viene con una mejora integrada llamada SE-PostgreSQL, la cual provee controles de acceso adicionales basados en las políticas de seguridad de SELinux. Más detalles (en inglés) aquí.

MySQL implementa seguridad basada en Listas de Control de Acceso (ACLs) para todas las conexiones, consultas y otras operaciones que un usuario pudiera intentar realizar. También hay algo de soporte para conexiones cifradas con SSL entre clientes y servidores MySQL.

Hosting en la nube

A medida que más empresas optan por mover sus datos hacia la nube, la capacidad de encontrar proveedores en la nube que soporten su base de datos se vuelve cada vez más importante. El hosting en la nube permite flexibilidad en los servidores, permitiéndole expandir o contraer rápidamente su capacidad. También le permite reducir el potencial tiempo fuera de línea mientras gestiona fácilmente picos de carga de trabajo.

PostgreSQL MySQL
Soportado por todos los proveedores más importantes de servicios en la nube, incluyendo Amazon, Google y Microsoft. Soportado por todos los proveedores más importantes de servicios en la nube, incluyendo Amazon, Google y Microsoft.

Soporte comunitario

PostgreSQL MySQL
PostgreSQL tiene una comunidad muy fuerte y activa que constantemente mejora características existentes, mientras sus innovadores committers se esfuerzan para asegurar que siga siendo la base de datos más avanzada con nuevas e innovadoras características y seguridad. MySQL tiene una gran comunidad de contribuyentes que, particularmente desde la adquisición por parte de Oracle, se centra principalmente en mantener características existentes con algunas características nuevas surgiendo ocasionalmente.

Soporte para concurrencia

La concurrencia significa que varios usuarios pueden tener acceso a los datos al mismo tiempo. Es una de las principales funcionalidades consideradas al desarrollar un sistema que requiera que varios suscriptores accedan a los datos al mismo tiempo pues mejora la capacidad de que muchas personas accedan y utilicen la base de datos en varias ubicaciones simultáneamente.

PostgreSQL MySQL
PostgreSQL hace frente a la concurrencia de forma eficiente con su implementación MVCC (control de concurrencia multiversión), la cual logra niveles muy altos de concurrencia. MySQL solo tiene soporte MVCC en InnoDB.

Funcionalidad NoSQL/Soporte para JSON

Tanto NoSQL como JSON son muy populares, y las bases de datos NoSQL son cada vez más comunes. JSON es un formato simple de datos que permite a los programadores almacenar y comunicar conjunto de valores, listas y correlaciones clave-valor entre sistemas.

PostgreSQL MySQL
PostgreSQL soporta JSON y otras características NoSQL como soporte nativo para XML y pares clave-valor con HSTORE. También soporta indexación de datos JSON para un acceso más rápido. MySQL tiene soporte para tipo de datos JSON, pero no para ninguna otra característica NoSQL. No soporta indexación para JSON.

Vistas materializadas/Tablas temporales

Una vista materializada es un objeto de base de datos que contiene los resultados de una consulta que puede ser actualizada según sea necesario desde la tabla base original. Se la puede ver como un «caché» para bases de datos.

Una tabla temporal almacena datos que no se necesite que persistan más allá de lo que dure la sesión que la cree. La principal forma en que difiera de las Vistas Materializadas es que estas últimas ofrecen la capacidad de actualizar periódicamente los datos, resultando en mejor eficiencia para ese caso de uso.

PostgreSQL MySQL
Soporta vistas materializadas y tablas temporales. Soporta tablas temporales pero no soporta vistas materializadas.

Soporte para datos geoespaciales

Los datos geoespaciales son todos los puntos de datos geográficos que una base de datos mantiene y puede proveer para análisis. Es la información sobre un objeto físico que puede ser representada por valores numéricos en un sistema de coordenadas geográfico.

PostgreSQL MySQL
PostgreSQL soporta datos geoespaciales mediante la extensión PostGIS. Hay funciones y tipos dedicados para datos geoespaciales, disponibles directamente a nivel de base de datos, haciendo que el análisis y la codificación sea más fácil para los desarrolladores. El soporte para datos geoespaciales está integrado.

Soporte para lenguajes de programación

El soporte para lenguajes de programación ayuda a una gran variedad de desarrolladores a realizar muchas tareas en el lenguaje en el que tengan más experiencia. Los desarrolladores pueden decidir con libertad, a nivel de casos individuales, si van a realizar cierto procedimiento en el servidor o en el cliente, pues el servidor soporta una gran variedad de diferentes lenguajes de programación para funciones de base de datos. Los lenguajes de programación tienden a dar más poder a los desarrolladores.

PostgreSQL MySQL
PostgreSQL soporta una gran variedad de lenguajes de programación incluyendo: C/C++, Java, JavaScript, .Net, R, Perl, Python, Ruby, Tcl y otros; incluso es posible ejecutar código proporcionado por el usuario en un proceso separado (esto es, ejecutándose como trabajadores en segundo plano). Algo de soporte para programación del lado del servidor, en un solo lenguaje no extensible.

Sistema de tipos extensible

Una base de datos que soporta un sistema de tipos extensible puede ser extendido por el usuario de varias formas, lo que incluye agregar nuevos tipos de datos, funciones, operadores, funciones de agregado, métodos de indexación y lenguajes de procedimientos.

PostgreSQL MySQL
PostgreSQL tiene varias características dedicadas a la extensibilidad. Es posible agregar nuevos tipos, nuevas funciones, nuevos tipos de índice, etc. No tiene soporte para extensibilidad.

Resumen de la comparación

A continuación se muestra un cuadro de comparación resumido sobre PostgreSQL vs MySQL:

Característica PostgreSQL MySQL
Código abierto Completamente de código abierto De código abierto, pero propiedad de Oracle y ofrece versiones comerciales
Cumplimiento de ACID Cumple completamente con ACID Algunas versiones cumplen
Cumplimiento de SQL Cumple casi completamente Algunas versiones cumplen
Soporte para concurrencia Implementación de MVCC soporta múltiples peticiones sin bloquear lecturas Soporte en algunas versiones
Seguridad Seguro desde las bases con soporte SSL Soporte SSL en algunas versiones
Soporte para NoSQL/JSON Varias funcionalidades soportadas Solo soporte para datos JSON
Métodos de acceso Soporta todos los estándares Soporta todos los estándares
Replicación Múltiples tecnologías de replicación disponibles:

  • Un solo maestro a un standby
  • Un solo maestro a varios standbys
  • Replicación de flujo/hot standby
  • Replicación bidireccional
  • Replicación lógica por flujo de logs
Replicación estándar maestro-standby:

  • Un solo maestro a un standby
  • Un solo maestro a varios standbys
  • Un solo maestro a un standby a uno o más standbys
  • Replicación circular (A hacia B hacia C y de vuelta hacia A)
  • Maestro a maestro
Vistas materializadas Soportado No soportado
Tablas temporales Soportado Soportado
Datos geoespaciales Soportado Soportado
Lenguajes de programación Soportado No soportado
Sistema de tipos extensible Soportado No soportado
LIVE Webinar - Migration to PostgreSQL Join us on Wednesday, June 26, 2019 at 4pm UTC Spots are limited, books yours today!

Recent Posts

  • PG Phriday: 10 cosas que Postgres podría mejorar – Parte 3 noviembre 8, 2020
  • Búsqueda de texto completo desde PostgreSQL 8.3 noviembre 5, 2020
  • Webinar: Mejores prácticas para la carga masiva de datos en PostgreSQL [continuación] noviembre 4, 2020
  • Números aleatorios noviembre 4, 2020
  • ¿Qué partición de mi base de datos PostgreSQL contiene una fila determinada? noviembre 1, 2020
  • Twitter
  • Linkedin
  • Facebook
  • Youtube
  • Mail

Soporte y Servicios

Soporte de producción 24/7

Soporte para desarrolladores

DBA remoto para PostgreSQL

Monitoreo para bases de datos PostgreSQL

Health Check para PostgreSQL

Ajustes de Rendimiento para PostgreSQL

Auditoría de seguridad para bases de datos

Actualice PostgreSQL

Evaluación de Migración hacia PostgreSQL

Migre desde Oracle

Productos

PostgreSQL de alta disponibilidad

BDR

2ndQPostgres

pglogical

repmgr

Barman

Postgres Cloud Manager

Firewall SQL

Postgres-XL

OmniDB

Postgres Installer

2UDA

Centro de Aprendizaje Postgres

PostgreSQL

Blog

Webinars

Libros

Videos

Formación

Casos de Estudio

Eventos

Sobre nosotros

Sobre 2ndQuadrant

¿Qué significa «2ndQuadrant»?

Noticias

Trabaje con nosotros

Nuestro equipo

© 2ndQuadrant Ltd. All rights reserved | Privacy Policy
  • Twitter
  • LinkedIn
  • Facebook
  • Youtube
  • Mail
Desplazarse hacia arriba
×