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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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