PostgreSQL & MySQL Analisis FODA



Documentos relacionados
Motores de almacenamiento en MySQL 5.0 por Mario López y Juan A. Sánchez

Entendiendo y Optimizando MySQL

PostgreSQL. Capacitación Nivel 1 Día 3

Motores MySQL. José Manuel Gómez. Departamento de Lenguajes y Sistemas Informáticos

Ernesto Quiñones A.

PROGRAMANDO UNA BASE DE DATOS PostgreSQL ADMINISTRACIÓN INTRODUCCIÓN (L32)

Carrera: Ingeniería en Sistemas Computacionales. Prof.: Ing. Francisco Salvador Ballina. Materia: Taller de Base de Datos.

Oracle 12c DISEÑO Y PROGRAMACIÓN

Fundamentos de Oracle

Este tipo de software se utiliza para manejar de forma clara y sencilla nuestras bases de datos.

1

PostgreSQL Una Alternativa de DBMS Open Source. Humberto Espinoza Gerente de Soporte

Nuevas Características de la Versión 9.1 de PostgreSQL. Alcides Rivera Posso

Conoce los problemas más comunes que afectan el desempeño de RDBMS y como MySQL los resuelve

Módulo 7. Administración de MySQL

CARACTERISTICAS BASICAS DE LOS SMBD ORACLE

Microsoft SQL Server. Comparación SQL Server y MySQL Jose Santamaría Instalación, configuración y demo de SQL Server Javier Hernández

Bases de datos. 76 Horas

PyReplica. Sistema de replicación simple para. programado en Python. Mariano Reingart

Curso Online de Oracle 10g

Instituto Tecnológico Superior de Lerdo

BASE DE DATOS Actividad No. 1. Docente Jaider Quintero M. Estudiante Oscar Fuenmayor S.

CURSOS Y DESCRIPCIÓN / ADMINISTRACIÓN DE BASE DE DATOS

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Trabajos de Ampliación. Bases de datos NoSQL.

INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR DE CORREO EXIM 4.8 EN FEDORA 20 FRAYBA SERYEY OTALORA TORRES JOSE EDUARDO JAIMES BARRERA

Máxima Performance Postgresql. Disertante: Emanuel Calvo Franco. Año: 2009

DESARROLLO DE APLICACIONES CON BASES DE DATOS RELACIONALES EMBEBIDAS / EMPOTRADAS ING. ROGER CALDERON MORENO

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Sistemas de Datos. Rendimiento de la Base de datos. Procesamiento de consultas y administración del rendimiento

Introducción a los Sistemas de Gestión de Bases de Datos

MySQL 5 (versiones 5.1 a 5.6) Guía de referencia del desarrollador

Contenido XIII. Capítulo 1. Capítulo 2. Alfaomega. Bases de datos - Reinosa, Maldonado, Muñoz, Damiano, Abrutsky

Desarrollo de Aplicaciones para ios

MariaDB Más allá de MySQL y otras BD privativas

PyReplica. Sistema de replicación simple para PostgreSQL programado en Python. Mariano Reingart (ArPUG/PyAr)

PLAN DE TRABAJO CAPACITACION TECNICA ACADEMUSOFT

INFORME TECNICO PREVIO DE EVALUACIÓN DE SOFTWARE N /UIE-PATPAL - FBB

2. Mediante la tabla pg_class, vamos a ver cómo afecta los comandos analyze y vacuum a las tablas.

mysql Departamento de Lenguajes y Computación Universidad de Almería mysql Contenidos

Otros objetos de Base de Datos

Universidad Dominicana O&M. Saber Pensar - Trabajar. Presentación. Título

8283: Administración y programación en Microsoft SQL Server 2012

ÍNDICE. Introducción... Capítulo 1. Novedades, mejoras y requisitos para la instalación... 1

Microsoft SQL Server 2005

Programación SQL. Lucio Salgado Diciembre 2008

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

TEMA 2. INTRODUCCIÓN A MYSQL

Acceso a bases de datos MySQL con PHP

SQL Los fundamentos del lenguaje

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA NACIONAL EXTENSIÓN BARQUISIMETO BARQUISIMETO ESTADO. LARA

Tema: MAPEO OBJETO RELACIONAL (ORM) - ADODB

1. Capítulo 1: Herramientas de Software para el sistema

REQUISITOS DEL SISTEMA. Software Servidor. Cliente. Hardware Servidor. Cliente

ADMINISTRACIÓN DE BASE DE DATOS

COMPONENTES SOFTWARE LIBRE BASES DE DATOS

Backup y Restore en mysql

CAPÍTULO 3: Resultados

ÍNDICE CAPÍTULO 1. TIPOS DE ALMACENAMIENTO DE LA INFORMACIÓN... 13

Guía Taller I Conexión con la Base de Datos Introducción a PostgreSQL

Curso Online de Microsoft

Descripción. Este Software cumple los siguientes hitos:

Índice. iii. Objetivos... 24

Optimización de modelos multidimensionales en SSAS

Software Control de Acceso ZK Versión 4.5

PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN. actividad Transacciones en MySQL. como requerimiento parcial para acreditar la asignatura de

INSTALACION Y CONFIGURACION DE SQL SERVER MANAGEMENT (EXPRESS) 2008

Administración y programación de Bases de Datos con SQL Server 2005

PL/PGSQL. Extensión "procedural" de SQL

BASE DE DATOS Y PARA QUE SIRVEN

CURSO DE SQL SERVER 2005

Jordi Llonch

Manual De Instalación. Pasos para la Instalación de Informix

PROGRAMANDO BASES DE DATOS PostgreSQL INTRODUCCIÓN INTRODUCCIÓN A LAS BASES DE DATOS (L1)

INTRODUCCION A LAS BASES DE DATOS ESPACIALES

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

Q-flow 2.2. Código de Manual: Qf22007ESP Versión del Manual: 3.1 Última revisión: 19/8/2005 Se aplica a: Q-flow 2.2. Sizing

Tema 1. Bases de datos activas

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

Curso PHP Advanced and Ajax

C a p í t u l o. Instalación. Contenido

Guía de Laboratorio Base de Datos I.

Ernesto Gamaliel Acosta Gabriela Castillo Granados Antonio de Jesús Pérez Maldonado

[CASI v.0110] Pág. 1

Select table data Insert table data Update table data Delete table data Create table

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

MATERIAL DE TRABAJO 1. Evaluación del software

Bases de Datos: Structured Query Language (SQL)

INSTALACIÓN, CONFIGURACIÓN Y PRUEBAS DE POSTGRESQL EN FEDORA 19 PRESENTADO POR EDUARDO MORANTES DIAZ CODIGO: PRESENTADO A

Software para la Manipulación de Bases de Datos Espaciales PostGIS PGVisualizer

Presentación. 29/06/2005 Monografía de Adscripción 1

Dirigido a Profesionales y técnicos de informática que se inicien en el manejo de la base de datos Oracle 11g

SLIDEFINDER: Una herramienta universal y gratuita para clasificar, buscar y compartir imágenes e información en la Web

M. C. Gustavo Alfonso Gutiérrez Carreón

Transcripción:

PostgreSQL & MySQL Analisis FODA

Quienes somos? Guido Barosio - Gerente de Ingeniaría de Sistemas & PostgreSQL Nerd Emanuel Calvo Franco - MySQL, PostgreSQL & Oracle DBA Mariano Reingart - Desarrollador PostgreSQL & Python Grupo de Usuarios PostgreSQL Argentina www.arpug.com.ar

Breve Historia PostgreSQL Est. 1985 Postgres + SQL 1995 MySQL Est.1994 Universidad de California, proyecto Ingres, Michael Stonebreaker (propulsor Bases de datos Objeto Relacionales) PostgreSQL es una comunidad TcX, evolución de UNIREG, Michael Monty Widenius Posteriormente MySQL AB Sun Oracle

Sobre Licencias PostgreSQL MySQL BSD Libre incluso para usos comerciales Licencia Dual GPL para software libre Comercial ($$$) MySQL Enterprise dde USD 599 por año por servidor

Algunas comparaciones Cumple ANSI SQL Cumple algunas partes de ANSI SQL Sub-selects nativo Sub-selects a partir de version 4.1 (*) Transacciones ACID nativo (MVCC) Transacciones ACID nativo con InnoDB/DBD * Nivel de Aislamiento: READ UNCOMMITTED* READ COMMITTED REPEATABLE-READ* SERIALIZABLE Procedimientos nativo (PL) Nivel de Aislamiento: REPEATABLE-READ SERIALIZABLE READ UNCOMMITTED READ COMMITTED Procedimientos a partir de version 5.1

Algunas comparaciones Tipos de datos Básicos, Avanzados y Objetos Tipos de datos Básicos Geométricos, Arrays, (nativo) etc., y del Usuario Secuencias (extra transacción) Solo Números, Strings y Fechas/Horas Campos AutoIncrement (único, indizado, positivo) Indices BTREE, HASH, GiST, GIN (y del usuario) bitmap, fulltext* parciales y expresiones Indices BTREE*, HASH, RTREE SPATIAL fulltext (solo MyISAM) prefijos Pl/PgSql (portable), Pl/Perl, Pl/Python,... Lenguaje Procedural SQL propio

Mas comparaciones Triggers nativo Triggers nativo a partir de version 5.1 Full joins y vistas Full joins y vistas a partir de 5.x (*) Cursores nativo Cursores read only Point-in-Time Recovery WAL (anticipado) fork (procesos) Roles Point-in-Time Recovery Binary Log* Threads (hilos) -

Mas comparaciones Señales LISTEN y NOTIFY (mensajes/señal Optimizador es) (avanzado) Optimizador (básico) (wtf? postgresql no daña los datos) REPARE TABLE (reparar tablas ante crashs) PREPARE (planeamiento) PREPARE (solo parseo) RULES (reglas) Operadores y Casts - (no programables)

Motores de Almacenamiento PostgreSQL MySQL Postmaster :) ISAM (obsoleta) MyISAM (default) InnoDB NDB (disable) BDB CSV ARCHIVE MEMORY FEDERATED Maria (v.6 alpha) BerkeleyDB (obsoleta)

Analisis FODA - Fortalezas PostgreSQL MySQL Integridad PITR - WAL Concurrencia multiples usuarios - escritura MVCC Funcionalidad tipos (OO), reglas, lenguajes embebidos Escalabilidad replicacion, clustering Flexibilidad Multiples Motores de Almacenamiento Velocidad sin integridad / concurrencia

Analisis FODA - Oportunidades PostgreSQL MySQL MySql -> Sun -> Oracle: forks: MariaDB, Drizzle,... Estable y Sólido (MySQL 5.1!= bug free) Nuevos Motores de Almacenamiento (Maria/Falcon?) Gran aceptación por parte del mercado (11 millones de instalaciones)

Analisis FODA - Debilidades PostgreSQL MySQL Soporte Comercial Ausencia de replicacion nativa (roadmap 8.5) Ausencia de cluster nativo (Modelo de Arquitectura) SQL rudimentario Planner Basico MyISAM no soporta FKs (roadmap 5.2)

Analisis FODA - Amenazas PostgreSQL MySQL MariaDb? FireBird? Oracle? Oracle compra InnoDB Oy Sun Compra MySQL Oracle compra SUN...

Links relacionados Why PostgreSQL Instead of MySQL: Comparing Reliability and Speed in 2007 (wiki de PostgreSQL) http://monty-says.blogspot.com/2008/11/oops-we-did-it-again-mysql- 51-released.html (blogs de uno de los fundadores de MySQL sobre los errores de la versión 5.1)

Benchmark El Mito: MySQL máz veloz que Postgres La Realidad: Todo Depende...

Benchmark Entorno: Hardware: EEEPC 1000HA ("Netbook") CPU: Intel Atom N270 1.600 GHz Memoria: 1GB, Disco: 160GB 5400 RPM Software: Sistema Operativo: DEBIAN GNU/Linux 5.0 (Lenny - Estable) Bases de datos: PostgreSQL 8.3.7 (estable en Debian) MySQL 5.0.51a-24 (estable en Debian) Lenguaje de Programación: Python 2.5.2 Conectores: PsycoPg2 2.0.7 MySQLdb 1.2.2

Tablas simples, con el mismo nivel de funcionalidad Benchmark Ejemplo: aplicación simple con varios hilos en Python Esquema PostgreSQL: CREATE TABLE prueba (id SERIAL PRIMARY KEY, texto TEXT, flotante FLOAT, entero INTEGER, fecha TIMESTAMP DEFAULT now()) Esqumea MySQL: CREATE TABLE prueba (id INTEGER AUTO_INCREMENT PRIMARY KEY, texto TEXT, flotante FLOAT, entero INTEGER, fecha TIMESTAMP DEFAULT now()) ENGINE=INNODB;

Benchmark Conexión: myconnect = lambda: MySQLdb.connect(db=" benchmark", user="root", passwd="m",host=" localhost") pgconnect = lambda: psycopg2.connect (database="benchmark", user="postgres", password="m", host="localhost") Ambos por TCP/IP

Benchmark Hilo de medición (benchmark): class BenchmarkSelect(Thread): "Hilo para timing de SELECT" def run(self): cn = self.connect() cur = cn.cursor() cur.execute("select * FROM prueba") for row in cur: #print self.nro, row pass cn.close() Ambos usan el mismo, interfaz DbApi 2.0 de Python

Inicialización: insertar 10.000 registros Benchmark cn = connect() cur = cn.cursor() cur.execute("delete FROM prueba") for x in range(10000): cur.execute("insert INTO prueba (texto, entero, flotante) VALUES (%s,%s,%s)", ("hola % s" % x, int(x), float(x)))

Benchmark Función de medición: inicar n hilos y esperarlos def bench(cant,connect, benchmark): threads = [] for i in range(cant): thread = benchmark(connect, i) thread threads.append(thread) thread.start() # creo el for thread in threads: thread.join() # espero que termine Nota: los threads en python dependen del GIL (su granularidad es por "instrucción python" y no

Benchmark Resultados base de datos "trivial" (1000 registros, 10 hilos, poca carga):

Benchmark Resultados base de datos menos trivial (10.000 registros):

Benchmark Resultados base de datos menos trivial, con aprox. 100 hilos

Benchmark Resultados base de datos menos trivial, con aprox. 10 hilos, en WINDOWS:

Benchmark Algunas conclusiones (para esta aplicación): PostgreSQL y MySQL pueden tener rendimientos similares para bases de datos "no triviales" PostgreSQL puede ser incluso más velóz en general (para bases de datos "no triviales") PostgreSQL puede ser significativamente más veloz a medida que la concurrencia se incrementa (nº de hilos o "clientes"), para bases de datos "no triviales" YMMV

Benchmark Observaciones: Solo analizamos un SELECT trivial, sin joins, indices, funciones, etc. (donde PostgreSQL tendría que estar mejor preparado por su optimizador más avanzado) No analizamos concurrencia de INSERT, UPDATE y DELETE (donde PostgreSQL aprovecha MVCC) No optimizamos ni PostgreSQL ni MySQL No optimizamos el Sistema Operativo Y, obviamente no analizamos caracteristicas que son posibles de hacer solo en PostgreSQL :)

Preguntas? Muchas gracias! Guido Barosio Emanuel Calvo Franco Mariano Reingart