postgresql vs mysql: postgresql como alternativa

Download PostgreSQL vs MySQL: PostgreSQL como alternativa

If you can't read please download the document

Upload: arturo-espinosa

Post on 14-Aug-2015

341 views

Category:

Engineering


6 download

TRANSCRIPT

  1. 1. PostgreSQL: una alternativa a MySQL Arturo Espinosa Una introduccin comparativa aUna introduccin comparativa a PostgreSQL para quienes conocanPostgreSQL para quienes conocan MySQL slo porque "all estaba".MySQL slo porque "all estaba".
  2. 2. PostgreSQL VS MySQL, Pelea pactada a 8 rounds. Guerras de proyectos hay muchas: Emacs VS VI Firefox VS Chrome Linux VS FreeBSD KDE VS GNOME Apache VS el mundo etc.
  3. 3. Emacs VS VI Qu nos ensea Emacs VS VI? VI: rpido pero monoltico. Emacs: extensible pero lento. (EMACS: Eight Megabytes And Constantly Swapping) Emacs gana contra VI porque como usuarios queremos crecer y que nuestras herramientas crezcan con nosotros.
  4. 4. PostgreSQL VS MySQL (9.4) (5.7) Si no hay competencia, hay incompetencia. Verifiquen que usen las ltimas versiones.Verifiquen que usen las ltimas versiones. En esta guerra, todos hemos salido favorecidos. Tanto PostgreSQL como MySQL han mejorado mucho en los ltimos aos: PostgreSQL en velocidad y replicacin. MySQL en estandarizacin y estabilidad.
  5. 5. PostgreSQL VS MySQL Round 1: Licenciamiento FIGHT!FIGHT! PostgreSQL: licencia MIT (software libre y se pueden distribuir versiones modificadas sin requerir el cdigo). MySQL: GPL, o una licencia comercial. Esto incluyendo la biblioteca cliente (libmysqlclient): si quieres vender o distribuir un sistema que se conecte a MySQL con el cliente oficial, debes pagar a ORACLE o liberar tu cdigo como GPL o compatible.
  6. 6. PostgreSQL VS MySQL Round 2: Desarrollo Postgres wins.Postgres wins. PostgreSQL es un PROYECTO de software libre: ecosistema de hackers tanto independientes como empresas. MySQL es un PRODUCTO open-source auspiciado por ORACLE. MySQL e InnoDB y otros nombres son marcas registradas (por eso MariaDB y XtraDB, cuya existencia se debe a la hermeticidad de ORACLE para aceptar parches).
  7. 7. PostgreSQL VS MySQL Round 3: Almacenamiento Pg: monoltico. MySQL: modular. No usen MyISAM en MySQL, cuidado!No usen MyISAM en MySQL, cuidado! PostgreSQL: sin opciones de mdulos, pero mayor integracin entre SQL y el almacn. No hay una opcin dentro del DBM para limitar el almacenamiento (usar quotas). MySQL: MyISAM, InnoDB y Cluster NDB. MyISAM es el ms usado, pero no es ACID ni MVCC. Veloz, pero limitado y riesgoso. InnoDB es la opcin para MySQL, pero no todos los proveedores lo instalan.
  8. 8. Problemas de almacenaje con MySQL La modularidad tiene sus desventajas InnoDB no soporta el lanzamiento de triggers durante acciones en cascada con llaves forneas: Los triggers se procesan en la capa SQL mientras las llaves forneas en la capa de almacenaje (InnoDB), y estas capas no se hablan para este caso de cascada con FK. Un diseo por capas puede no ser la mejor opcin, o requiere de una implementacin cuidadosa.
  9. 9. Problemas de almacenaje con MySQL: MyISAM Hyanle a MyISAM como al diablo mismo. Sin InnoDB, estn fritos con MySQLSin InnoDB, estn fritos con MySQL No es transaccional: operaciones complejas no pueden ser atomizadas ni hay rollback. No es estable: si se truena la BD, el almacenaje se corrompe y hay que recuperarlo y verificar coherencia de datos. No es consistente: no hay garanta de que bajo concurrencia, se entreguen datos coherentes. No soporta llaves forneas y slo se puede bloquear a nivel de tabla, psimo para escritura altamente concurrente.
  10. 10. MySQL Cluster con NDB, una cosa bonita: Round 4 Alta escalabilidad y disponibilidad. PostgreSQL no tiene solucin parecidaPostgreSQL no tiene solucin parecida Replicacin sncrona garantiza la disponibilidad de datos, an cuando se pierdan nodos del cluster. Replicacin asncrona limita el dao ocasionado por una falla total. Alta eficiencia al mantener ndices y opcionalmente datos en memoria. Slo se usa el disco para guardar logs secuenciales y una segunda etapa sincroniza memoria con disco.MySQLwins. Perfect!MySQLwins. Perfect!
  11. 11. PostgreSQL VS MySQL Round 5: Replicacin Empate: ambas BD hacen un buen trabajo. PostgreSQL: v9.1 ya soporta replicacin sncrona nativa, para por ejemplo clusters master-slave con esclavos para lectura. MySQL: usar el nuevo mtodo (mysql >5.1) de log binario diferencial por registro (RBR). El mtodo de replicacin por sentencia (SBR) daba resultados inconsistentes para funciones no determinsticas (NOW, RANDOM, etc) y ha sido abandonado. MySQL: se puede usar NDB adicionalmente, pero hay que migrar.
  12. 12. PostgreSQL VS MySQL Round 6: Tipos de datos PostgreSQL se lleva este round de lejos. PostgreSQL: tipos estandar (ie boolean, money, date/time), DOMAINS, enums dinmicos, direcciones IP, arreglos de cualquier tipo y XML y JSON nativos con indexacin. Adems, tipos complejos y tipos definidos por el usuario en C. MySQL: faltan muchos tipos: ver documentacin en lnea, Cap. 11. Enums y Sets tienen que ser declarados en cada lugar donde se usan (no hay CREATE TYPE). Sin arreglos ni JSON, etc. PostgreSQLwins. PostgreSQLwins. FATALITY FATALITY
  13. 13. PostgreSQL VS MySQL Round 7: SQL Avanzado MySQL PostgreSQL Subquerys C C JOIN C C ndices Avanzados C C Particiones C C WITH (CTEs) D C Analytic D C Secuencias D C Profiling C D PostgreSQLwins.PostgreSQLwins.
  14. 14. PostgreSQL VS MySQL: Round Final ltimos embates: MySQL no soporta CONSTRAINTs diferidos. Los stored procedures de MySQL tienen limitaciones y el lenguaje no es maduro. PostgreSQL soporta mltiples lenguajes y plpgsql, que irnicamente est basado en el plsql de racle, por lo que la migracin es sencilla. MySQL no soporta funciones como valores por default para columnas (excepto NOW). Los triggers de PostgreSQL son ms flexibles y poderosos, y siguen el comportamiento estandar.
  15. 15. PostgreSQL VS MySQL: Round Final ltimos embates: MySQL cuenta con una herramienta grfica integral para diseo y administracin: MySQL Workbench, que funciona muy bien. PostgreSQL tiene algunas opciones, pero no son tan completas (pgModeler, Open System Architect). PgAdmin es SW oficial, provee ejecucin de querys y DDL. Ambas bases de datos cuentan con una excelente comunidad de entusiastas y soporte profesional de paga (Percona, Enterprise DB y Oracle, por supuesto).
  16. 16. PostgreSQL VS MySQL: Conclusiones Convergencia hacia un mismo destino. Los usuarios del software libre definen su destino, y ambas BD son usadas desde estudiantes hasta las empresas ms importantes del mundo. Ambas BD han tenido que adaptarse a las necesidades en desempeo y caractersticas del amplio mercado. Hoy por hoy PostgreSQL permite explotar ms la capa de BD, tener diseos con mayor proteccin y normalizacin y enviar querys ms complejos. El desarrollador tiene ms oportunidad de crecimiento con Postgres.
  17. 17. PostgreSQL VS MySQL: Conclusiones Convergencia hacia un mismo destino. PostgreSQL es ms formal y su ruta es hacia la eficiencia, manteniendo y mejorando funcionalidad ya establecida. La teora de BD es muy formal y vale la pena pagar el costo de un buen comienzo. PostgreSQL inicia como proyecto acadmico y se mantiene firme como proyecto libre. MySQL comenz por la eficiencia y la aplicacin pragmtica. Al formalizar sus conceptos viene arrastrando ms bagaje producto de decisiones tempranas. MySQL AB fue adquirida por Oracle, y sus polticas frenan un poco el avance de la comunidad.
  18. 18. PostgreSQL VS MySQL: Referencia Muchas gracias, aqu algunas fuentes: http://www.slideshare.net/arturoea1 WikiVS.com Documentacin de MySQL 5.7: 5.1.7, Server SQL Modes D.1, Restrictions on Stored Programs 11, Data types 14.5.6, InnoDB and FK constraints PostgreSQL: what I learnt: Data and Analytics http://solaimurugan.blogspot.mx/2010/09/analytic-fun Apndice D, Unsupported Features