MySQL vs PostgreSQL para Aplicaciones Web [cerrado]


Estoy trabajando en una aplicación web que utiliza Python (Django) y me gustaría saber si MySQL o PostgreSQL sería más adecuado cuando se implementa para producción.

En uno podcast Joel dijo que tenía algunos problemas con MySQL y los datos no era consistente.

Me gustaría saber si alguien tuvo tales problemas. También cuando se trata de rendimiento que se puede ajustar fácilmente?

Author: Ryall, 2008-08-26

11 answers

Una nota para futuros lectores: El texto siguiente fue editado por última vez en agosto de 2008. Eso es hace casi 5 años a partir de esta edición. El software puede cambiar rápidamente de una versión a otra, por lo que antes de elegir un DBMS basado en los consejos a continuación, investigue un poco para ver si todavía es preciso.


Mejor?

MySQL es mucho más comúnmente proporcionado por los servidores web.

PostgreSQL es un producto mucho más maduro.

Hay esta discusión se dirige a su pregunta "mejor"

Aparentemente, según esta página web, MySQL es rápido cuando los niveles de acceso concurrentes son bajos, y cuando hay muchas más lecturas que escrituras. Por otro lado, exhibe baja escalabilidad con cargas crecientes y relaciones de escritura/lectura. PostgreSQL es relativamente lento a niveles de concurrencia bajos, pero se escala bien con niveles de carga crecientes, mientras proporciona suficiente aislamiento entre accesos concurrentes para evitar ralentizaciones en relaciones de escritura / lectura altas. Va on para enlazar a una serie de comparaciones de rendimiento, porque estas cosas son muy... sensible a las condiciones.

Así que si tu factor de decisión es, " ¿cuál es más rápido?", Entonces la respuesta es "depende. Si realmente importa, pruebe su solicitud contra ambos." Y si realmente te importa, obtienes dos DBA (uno que se especializa en cada base de datos) y haces que sintonicen la mierda de las bases de datos, y luego elijas. Es asombroso lo caro bueno DBAs son; y valen cada centavo.

Cuando importa.

Que probablemente no lo hace, así que simplemente elija la base de datos que le guste el sonido y vaya con ella; se puede comprar un mejor rendimiento con más RAM y CPU, y un diseño de base de datos más apropiado, y trucos de procedimientos almacenados inteligentes y así sucesivamente, y todo eso es más barato y más fácil para random - website-X que agonizar sobre cuál elegir, MySQL o PostgreSQL, y DBAs.


Joel también dijo en ese podcast que el comentario volvería a morderlo porque la gente estaría diciendo que MySQL era un pedazo de mierda - Joel no podía conseguir un count de filas de nuevo. El plural de anécdota no es dato. dijo: :

MySQL es la única base de datos contra la que he programado en mi carrera que ha tenido problemas de integridad de datos, donde haces consultas y obtienes respuestas sin sentido, que son incorrectas.

Y él también dijo:

Es solo una anécdota. Y esa es una de las cosas que me frustra, en realidad, sobre bloguear o simplemente Internet en general. [... Solo hay una extraña tendencia a convertir anécdotas en verdades y en realidad como blogger estoy empezando a sentirme un poco culpable por esto

 122
Author: Josh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-01 11:32:37

Algunos dicen que MySQL es simple y rápido.

Rápido - Bueno, si utiliza el motor de almacenamiento predeterminado MyISAM, es rápido. Tiene casi cero función de base de datos seria, pero es rápido. Si fuera sarcástico, diría que un grep en un archivo plano también es rápido. Lo suficientemente divertido no está tan lejos de cómo MyISAM almacena datos. Así que no esperes ninguna función de base de datos relacional allí. Ni siquiera las restricciones de integridad de referencia.

Simple - Ahora digamos que desea un subconjunto justo de características reales de la base de datos. Algunos cosas como restricciones de integridad, disparadores, aislamiento de transacciones, índices funcionales tal vez? Así que, obviamente, usted tiene que dejar MyISAM motor de distancia y elegir uno de los principales 3 otros motores de almacenamiento. Que han sido desarrollados por diferentes proveedores, cada uno con una configuración/comportamiento particular.

Echa un vistazo a una visión general de los motores de almacenamiento, y si no te duele la cabeza, estoy de acuerdo en que MySQL es simple desde tu punto de vista.

De esos hechos, te dejaré hacer tu piensa en aquellos que dicen que MySQL es rápido y simple.

Si desea escalar más, ahorrar tiempo, tener menos errores extraños para cazar, tener un código de aplicación más simple, pasar más tiempo optimizando su negocio, no luchando con su base de datos, entonces la solución de código abierto de elección es Postgresql.

 25
Author: jeje,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-12 21:31:07

No he usado Django, pero he usado MySQL y PostgreSQL. Si va a utilizar su base de datos solo como un back-end para Django, no importa mucho, porque abstraerá la mayoría de las diferencias. PostgreSQL es un poco más escalable (no llega a la pared tan rápido como MySQL a medida que aumenta el tamaño de los datos / el número de clientes).

La verdadera diferencia entra si está haciendo un nuevo sistema. Entonces recomendaría PostgreSQL sin duda, porque tiene muchas más características lo que hace que su capa de base de datos sea mucho más personalizable para que pueda ajustarla a cualquier requisito que pueda tener.

 12
Author: Grey Panther,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 05:24:21

Solo sonaba muchos meses después.

Las capacidades geográficas de las dos bases de datos son muy, muy diferentes. PostgreSQL tiene la excepcional extensión PostGIS. La funcionalidad geográfica de MySQL es prácticamente cero en comparación.

Si su servicio web tiene un componente de ubicación, elija PostgreSQL.

 11
Author: Summer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-12 23:39:18

Aunque está un poco anticuado, valdría la pena leer la página MySQL Gotchas. Muchos de los elementos enumerados allí siguen siendo ciertos, a mi leal saber y entender.

Uso PostgreSQL.

 6
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 08:29:18

Utilizo ambos ampliamente. Mi elección para un proyecto en particular se reduce a:

  • Licencias - ¿Va a distribuir su aplicación (IANAL)
  • Infraestructura Existente y Base de Conocimientos
  • Cualquier salsa especial tienes que tener.

Por salsa especial I cosas como:

  • replicación fácil / barata = MySQL
  • Enormes problemas de conjuntos de datos con resultados pequeños = PostgreSQL. Utilice las extensiones de idioma y tenga datos muy eficientes operación. (PL/Python, PL/TCL, PL/Perl, etc)
  • Interfaz con R Statistical Libraries = PostgreSQL PL / R disponible en debian / ubuntu
 6
Author: Lance Rushing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-05 00:15:35

Bueno, no creo que debas usar una marca de base de datos diferente en ningún desarrollo pasado (build, staging, prod) ya que eso volverá a morderte.

Por lo que entiendo PostgreSQL es una implementación de base de datos más 'correcta', mientras que MySQL es menos correcta (menos compatible) pero más rápida.

Así que si estás escribiendo una aplicación CRUD MySQL es el camino a seguir. Si necesita ciertas características de su base de datos (si no está seguro, entonces no lo hace), entonces usted es posible que desee buscar en PostgreSQL.

 1
Author: SCdF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 05:14:25

Si está escribiendo una aplicación que puede distribuirse bastante en diferentes servidores, MySQL tiene mucho peso sobre PostgreSQL debido a la portabilidad. PostgreSQL es difícil de encontrar en servidores web menos que satisfactorios, albet hay algunos. En la mayoría de los aspectos, PostgreSQL es más lento que MySQL, especialmente cuando se trata de afinar al final. Con todo, yo diría que darle a PostgreSQL una oportunidad por un corto período de tiempo, de esa manera no lo está evitando por completo, y luego hacer un juicio.

 0
Author: tslocum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 05:23:03

Gracias. He usado Django con MySQL y está bien. Elija su base de datos en las características que necesita. Es difícil comparar MySQL y Postgres. Mejor comparar Postgress con SQl Server.

 0
Author: Stephen Cox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 07:51:58

@ WolfmanDragon

PostgreSQL tiene (minúsculo) soporte para objetos, pero es, por naturaleza, una base de datos relacional. De su página sobre :

PostgreSQL es un potente sistema de base de datos relacional de código abierto.

 0
Author: marcospereira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-10 02:34:37

MySQL es un sistema de gestión de bases de datos relacionales mientras que PostgreSQL es un object -sistema de gestión de bases de datos relacionales. PostgreSQL es adecuado para desarrolladores de C++ o Java, ya que nos da más control sobre cómo se escriben las consultas. ORDBMS también nos da Objetos y Tipos Definidos por el Usuario. Las consultas SQL en sí están mucho más cerca de los estándares ISO que MySQL.
¿Necesita un ORDBMS o un RDBMS? Eso responderá mejor a tu pregunta.

 -1
Author: WolfmanDragon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 16:11:10