Вы находитесь на странице: 1из 25

Bases de datos en Linux

postgreSQL

MySQL

Daniel Mndez - Montevideo Julio 2004

postgreSQL

Licencia BSD Arquitectura slida y monoltica Amplio soporte de concurrencia Vistas Subselects Optimizacin de consultas Foreign Keys (Integridad referencial) Transacciones (Integridad transaccional) OOP - Herencia Triggers Integracin con varios entornos

PL/pgSQL, PL/Tcl, PL/Perl, PL/Python JDBC/ODBC/ C embedded

postgreSQL

Arquitectura slida y monoltica


El motor esta hecho en un nico bloque. Similar a la de apache

Existe un proceso monitor encargado de hacer fork de procesos que atienden cada conexin.

postgreSQL

Amplio soporte de concurrencia

MVCC

Las operaciones de WRITE no bloquean a la de READ. La lectura de un dato que esta siendo modificado por otro usuario devuelve el valor anterior a la modificacin.

postgreSQL

Optimizacin de consultas

Sofisticado query planner encargado de optimizar la estrategia optima de acceso a los datos. El planner es configurable.

postgreSQL

Integridad referencial

Foreign Keys. UPDATE CASCADE DELETE CASCADE

postgreSQL

Integridad transaccional

Transacciones delimitadas por


Begin Work Commit/Rollback

Es posible trabajar sin control transaccional.

postgreSQL

Soporte de herencia

Permite definir relaciones de tipo especializacin.


Extensin del SQL Ejemplo permite obtener todas las ciudades o solo las capitales. CREATE TABLE cities (name text, population float, altitude int -- (in ft)); CREATE TABLE capitals ( state char(2)) INHERITS (cities); SELECT name, altitude FROM ONLY cities WHERE altitude > 500;

postgreSQL

Monitoreo de actividad

Es posible consultar la actividad en la DB utilizando vistas del sistema Contienen informacin relacionada con el desempeo de la DB:

Bloqueos Utilizacin de disco Transacciones Consultas no optimizadas (Full scans)

postgreSQL

Otros

Triggers

Acciones que se disparan como respuesta a modificaciones en los datos.

Integracin con varios entornos


PL/pgSQL, PL/Tcl, PL/Perl, PL/Python JDBC/ODBC/ C embedded.

Herramientas relacionadas

http://gborg.postgresql.org Replicacin Monitoreo Diseo y administracin de Db

mySQL

Licencia GPL o comercial Arquitectura basada en mdulos Subselects Foreign Keys (Integridad referencial)

(Opcional) (Opcional) JDBC/ODBC/.NET

Transacciones (Integridad transaccional)

Integracin

mySQL
Arquitectura basada en mdulos

La gestin de datos se implementa en diferentes motores de almacenamiento cada uno con caractersticas propias.

ISAM: El original. No transaccional. Bloqueo por tablas. BDB: Transaccional. Bloqueo paginas. MEMORY=HEAP: Almacenamiento en memoria. MERGE: Combina varias tablas myISAM como una sola. MyISAM: ISAM mejorado. InnoDB: Transaccional. Bloqueo filas. Integridad referencial.

mySQL Clusters

Versin especial para manejo de clusters.


Actualmente (alpha release) Tambin es GPL !. Filosofia share nothing

No hay nico de punto de falla. Los nodos tienen capacidad de auto recuperacin luego de eventuales cadas. Soporte de nodos geogrficamente dispersos. Se aproxima al ideal de la escalabilidad horizontal.

(El doble de hardware = el doble de capacidad de procesamiento)

Comparacin
<>

Cobertura del estndar SQL

postgresql

Soporta casi completamente SQL92/99. Agrega alguna caracterstica object-oriented. Capacidad de manejar

mySQL:

MySQL soporta SQL92. Pueden hacerse querys que vinculan datos de diferentes bases. Soporta left y right outer join con sintaxis ANSI y ODBC. A partir de la versin 4.1 se soportaran subqueries. Views planificadas para la versin 5

rutinas complejas reglas declarativas Subqueries views soporte multi-usuario Transacciones optimizacin de querys herencia y arrays.

NO soporta consultas que vinculen varias bases.

Desempeo

postgreSQL:

mySQL:

Su arquitectura (fork) lo hace ms indicado para aplicaciones que reutilizan conexiones.

Con myIsam es extremadamente rpido. Manejo de conexiones muy rpido, especialmente ideal para ser usado con CGI o similar.

(Google Yahoo).

Requiere InnoDB para aplicaciones con actualizaciones intensivas.

Estabilidad

postgreSQL:

mySQL:

Hasta la versin 6 hubo dificultades: desconexiones aleatorias, core dumps, y memory leaks. A partir de las versiones 7 estos problemas han sido muy mejorados.

Mayor estabilidad aun manejando cientos de conexiones simultaneas. Desconexiones aleatorias, y core dumps son raros. Esta mas extendido que PostgreSQL en su uso lo cual implica que sea mas probado en ambientes de produccin

Integridad de datos

postgreSQL:

mySQL:

Integridad transaccional Integridad referencial


Integridad transaccional. Integridad referencial.


(InnoDB)

ON DELETE CASCADE ON UPDATE CASCADE

WAL (Write-Ahead Logging)

Permite recuperar integridad de datos luego de cadas del sistema.

Caractersticas especiales

postgreSQL:

mySQL:

Soporta reglas, triggers, funciones server-side que pueden ser codificadas en C, pgsql, python, perl o tcl. Actualizacin de vistas. Replicacin basada en herramientas externas. SQL Schemas

La integracin con C server-side es considerada inconveniente. Tools de administracin propias. Replicacin nativa Hot backup Planificadas

permite definir objetos en namespaces separados.

Transacciones anidadas. Sistema de autorizaciones aplicado al diccionario de la DB permite restringir operaciones tales como creacin de ndices.

Stored procedures 5.0 Views 5.0 Triggers 5.1 Full outer joins 5.1 Constraints 5.1

Seguridad

postgreSQL:

mySQL:

Menor granularidad de permisos sobre objetos a nivel de la DB. Control de login muy completo

Muy completo control de acceso por objeto. Se pueden asignar permisos


Por usuario Por server otros criterios como segmento de red.

por usuario por servidor por objeto

Bloqueos y control de concurrencia

postgreSQL:

mySQL:

MVCC (MultiVersion Concurrency Control), comparable a los DBMS comerciales.

ISAM/MyISAM implementa table locking. Bloqueo por pagina para tablas BDB. Bloqueo por fila para tablas InnoDB

Ante lock a nivel de fila modificada otros usuarios ven la versin no modificada del dato. Con MVCC las operaciones de READ no son bloqueados por las de WRITE.

Oracle-style consistent non locking read

Objetos grandes (LOBs)

postgreSQL:

mySQL:

No son soportados por pg_dump. Pueden manejarse va ODBC/JDBC etc. Requieren manejo especial si programamos en ambiente nativo.

Text y LOBs son tipos de datos communes. No requieren ningn manejo especial.

Comando ALTER TABLE

postgreSQL:

mySQL:

Soporta ALTER TABLE.

Mas potencia para ALTER TABLE.

Puede agregarse o renombrar columnas as como renombrar tablas.

Adems de agregar columnas, pueden quitarse, renombrarse y aun cambiar su tipo (encargndose de la conversin).

Soporte multi-idioma

postgreSQL:
Flags de compilacin

mySQL:

--enable-locale

Lo realizado basndose en los locale settings es escaso.

realiza algunas tareas basado en el locale del cliente. (Multibyte support) soporta conversin entre varios juegos de caracteres predefinidos Ninguno soporta bases de datos multicharset.

--with-mb

Bases de datos en Linux


Postsgresql

MySQL

Gracias por su atencin.

Вам также может понравиться