2010-12-09 29 views
32

Estoy ocupado portando algún código específico de MySQL a Postgresql para usarlo con Heroku. ¿Me pregunto si hay alguna razón específica por la cual Heroku fue con Postgresql sobre MySQL? Rendimiento, arquitectura, etc.¿Por qué Heroku usa Postgresql?

ACTUALIZACIÓN: Desde un heroku blog post:

En Heroku, creemos PostgreSQL ofrece la mejor combinación de características de gran alcance, integridad de los datos, la velocidad, el cumplimiento de las normas, y código de fuente abierta de cualquier base de datos SQL en el planeta.

+1

Una de estas poderosas características podría ser la extensión PostGIS de PostgreSQL, que proporciona una capacidad espacial muy potente. Lo estamos utilizando como un DBMS auxiliar, con MongoDB como nuestra tienda principal de valores-clave. – wulfgarpro

Respuesta

25

Postgres es mejor que mysql en many ways. Puede leer estas publicaciones sobre la aplicación de rieles de migración de mysql a postgres. Aunque mysql es more popular que postgres, pero instagram is using postgres tal vez debido a these razones. Siento que Postgres es mucho más maduro y robusto que mysql. Mientras que mysql es más fácil y simple de usar.

Migrating MySQL to PostgreSQL in Rails « m i n d l e v

Converting Rails application data from MySQL to PostgreSQL

Para la migración de datos, un pequeño script útil: Rake task to transfer a Rails database, say from MySQL to Postgres and back again

+1

Gracias por los enlaces. No creo que sea ni remotamente cierto decir que la mayoría de las startups eligen postgres sobre mysql. Trabajo en una startup que usa MySQL (y cassandra y mnesia). Una serie de grandes jugadores (como Yahoo y Amazon) también usan MySQL. – markquezada

+0

Sí, eso no es cierto. Facebook y Twitter usan MySQL incluso en los primeros días. –

+0

mi mal. Después de un poco de investigación, mysql es más popular. He trabajado para 2 startups en el valle y ambos usaron postgres. Entonces, tenía mi predilección allí. Actualizando la respuesta. – zengr

5

Bueno, el rendimiento en Postgres es generalmente mejor para las consultas complejas, como las generadas por los ORM. Además, postgres solo tiende a ser más "sólido". Esto es un total en total, pero los servidores de postgres que he manejado siempre han sido mucho menos problemáticos que mysql, que le gusta bloquear aleatoriamente de vez en cuando, ocasionalmente corrompiendo una tabla en el camino de descenso.

+0

He oído (de forma anecdótica) que postgres también es más sólido. Me pregunto en qué más basaron su decisión. – markquezada

+3

Sí, así es exactamente como lo diría: sólido. Todo este sistema, incluidos los documentos, simplemente apesta a una sólida ingeniería, mientras que MySQL siempre fue más "eh, eso es lo suficientemente bueno para la web". –

6

En términos generales me parece pgsql se presta para operaciones 24/7 mejor que MySQL. Además, parece tener menos pistolas incorporadas. Creo que si estás más familiarizado con uno u otro, es más probable que influya en tu decisión que en cualquier otra cosa.

+4

+1 para el uso del término "footgun". MySQL es mucho mejor si activa todas las opciones de rigor para que pretenda que es una base de datos real, en lugar de incrementar silenciosamente las marcas de tiempo o truncar datos que son más largos que la longitud de varchar especificada, etc. Postgres simplemente funciona correctamente de fábrica. –

0

no contradice ninguno de los consejos anteriores, pero si por alguna razón usted realmente quiere o necesita para seguir con MySQL, recientemente he notado que Heroku ofrece ahora un MySQL libre de complemento, llamado ClearDB:

https://addons.heroku.com/cleardb

No lo he usado, así que no puedo responderlo. Heroku afirma tener un 99.95% de tiempo de actividad para la versión gratuita (frente al 100% del tiempo de actividad reclamado para cualquiera de las versiones pagas) y rechaza la versión gratuita como "Preparado para producción". Afirman que ClearDB es "MySQL nativo, no modificado".

0

Moveré una de las aplicaciones Rails de mi cliente de Heroku Postgresql a Mysql (el complemento ClearDB) en este momento. PostgreSQL es un servicio de base de datos más estricto y más "correcto" en muchos sentidos, que parece ser la razón por la cual Heroku lo respalda. Sin embargo, considero que el marco de Rails suaviza más o menos las diferencias, y la mayoría de las aplicaciones de Rails no crecerán lo suficiente como para que los problemas de rendimiento de Mysql se conviertan en un motivo de ruptura.

Por otro lado, PostgreSQL (en oferta particular de Heroku) tiene un par de inconvenientes afilados para una aplicación de inicio:

  • el precio. Para evitar errores semanales de "conexión de base de datos perdidos" al trabajar con Heroku Postgres, debe pagar $ 200/month. En ClearDB, obtiene una promesa de tiempo de actividad del 100% (no hemos tenido la oportunidad de evaluar este reclamo) para el plan $ 10/month, que también ofrece 1 GB de espacio, más de lo que alguna vez necesitaremos.
  • Pedido de columnas. Al realizar el desarrollo de Rails, me refiero al archivo de esquema de base de datos schema.rb cada 5 minutos, y para mantener este archivo ordenado y legible, me resulta crucial poder especificar en qué orden se deben agregar las columnas. MySQL admite especificar el orden de las columnas ; PostgreSQL no. En muchos casos, esta característica no es importante, pero debido a cómo funciona Rails/ActiveRecord, mi vida se vuelve mucho más difícil cuando no puedo reordenar las columnas.