You are on page 1of 49

PostgreSQL

Logos:

PostgreSQL
Sitios oficiales

http://www.postgresql.org/

Base de Datos

http://www.enterprisedb.com/ Capacitacin http://www.2ndquadrant.com/ Capacitacin http://slony.info/ Replicacin

PostgreSQL

Introduccin a Modelos Introduccin a la Arquitectura Cliente/Servidor. Breves comparaciones. Introduccin a PostgreSQL . Arquitectura SQL en general. ANSI

El mbito del DBA

Presencia del DBA en las capas

Donde est el DBA?

Es el encargado de mantener la base bien configurada y en marcha. Mejorar la performance del SGDB. Administrar las conexiones, replicaciones. Asegurarse la disponibilidad de la base. Proponer mejoras en la arquitectura de datos de acuerdo al motor utilizado.

Preguntas que se hace un DBA


Muchas escrituras? Solo lecturas? Cabe en memoria? Podemos tener un HW RAID? Podemos tener un SW RAID? Tenemos una cantidad inmensa de datos como para tener un SAN/NAS? Qu tipo de HW RAID deberamos tener de acuerdo a las escrituras?

Porqu Bases de datos?


Los SGBD nacieron con el propsito de solventar los siguientes problemas de los antiguos sistemas:

Redundancia e inconsistencia de Datos. Dificultad en el acceso concurrente. Aislamiento de datos. Problemas de integridad. Problemas de atomicidad. Anomalas en el acceso concurrente. Problemas de Seguridad.

Visin de Datos

Nivel fsico. Es como se guardan los datos en disco. Solo es importante conocerlos si es DBA o desarrollador del motor.

Nivel Lgico. Es el nivel en el cual trabaja el DBA y el Arquitecto de datos.

Nivel de vistas. Es el nivel en el cual trabaja el desarrollador de la aplicacin final y el cual ver el usuario de la misma.

Independecia Fsica

Fsico Disposicin de elementos del motor sobre los sistemas de almacenamiento. Ayuda a mejorar la performance.

Lgico Disposicin de los objetos dentro de la base. Ayuda a mejorar la comprensin. Caracterstica que puede adicionar seguridad a nivel de gestor.

Modelos Lgicos

Modelo Entidad Relacin (DER) Modelo Orientado a Objetos. Modelo de datos semntico. Modelo de datos funcional. Indican el diseo lgico de datos, no indican datos reales o ya implementados

Modelos Lgicos

Modelo Entidad Relacin (DER) Modelo Orientado a Objetos. Modelo de datos semntico. Modelo de datos funcional. Indican el diseo lgico de datos, no indican datos reales o ya implementados

Arquitecturas

El punto de vista de Michael Stonebraker

Tipos de Bases de Datos

Web Apps. Generalmente caben en memoria. Querys simples No siempre ACID. Pueden ser BASE OLTP Apps Generalmente ms grandes que lo disponible en memoria. Mayor cantidad de escritura DatawareHouse Applications Dbs grandes (e/100GB -100TB) Consultas complejas

De acuerdo al Storage/Almacenamiento

In-memory Single Storage (un disco o un RAID) SAN/NAS o Varios RAID


Una sola base, distribuida en varios Storage. Varias bases de un cluster distribuidas en varios storages.

Distribuidas
Bases de datos distribuidas (varios servidores)

Principios de la integridad de datos ( ACID )

Atomicidad: asegura que la operacin se ha realizado o no, y por lo tanto ante un fallo no puede quedar a medias. Consistencia: asegura que slo se empieza aquello que se puede acabar. Por lo tanto se ejecutan aquellas operaciones que no van a romper la reglas y directrices de integridad de la base de datos. Aislamiento: asegura que una operacin no puede afectar a otras. Esto asegura que la realizacin de dos transacciones sobre la misma informacin sean independientes y no generen ningn tipo de error. Durabilidad: asegura que una vez realizada la operacin, sta persistir y no se podr deshacer aunque falle el sistema. Cumpliendo estas 4 condiciones o propiedades se considera ACID

NOTA: PostgreSQL es ACID

Transacciones
Coleccin de operaciones (sucesin de acciones) que forman una unidad lgica de trabajo, y que posiblemente actualice varios elementos de datos.

Estados transaccionales

Activa Parcialmente comprometida Fallida Abortada Comprometida (COMMIT) Rollback (No se aborta, se vuelve a un determinado punto o inicio de transaccin)

Historia de PostgreSQL

1977-1985 Michael Stonebraker Inicia postgreSQL como Ingres en la Universidad de Berkeley, California. 1986, comprado por Computer Associates. 1989, Liberada la primera versin como Postgres. 1994-95 dos estudiantes graduados de Berkeley Jolly Chen y Andrew Yu aaden SQL a Postgres y lo llaman Postgres95. 1996, (1000 colaboradores) Se decidi quitar el 95 al nombre para liberarse de la cronologa y nace PostgreSQL. Ultima versin al momento 9.0 y 9.1 en desarrollo.

Su hermandad con Informix

Stonebraker empez Ingres (1977). Luego de varias empresas, desembarc en Illustra. Despus (1995) unos estudiantes tomaron POSTGRES y lo siguieron desarrollando, le pusieron Postgres95 y despus se pas a llamar PostgreSQL. En 1996 la empresa que haca Informix compr Illustra y dejaron de lado la base de datos Illustra, y en cambio usaron los ingenieros y la tecnologa para avanzar un poco ms con Informix. En el 2001 la empresa Informix se dividi en dos y la parte que tena que ver con la base de datos fue a parar a IBM.

Descripcin de PostgreSQL

Es el SGBD Open Source ms potente del mercado. Posee casi 30 aos de desarrollo. Licencia BSD de Berkeley. Esta en la vanguardia de la investigacin en al tecnologa transaccional. Es ACID. Es segura. Tiene alternativas comerciales de muchsima calidad. Ej: EnterpriseDB, CyberTech(Alemania), etc.

Descripcin de PostgreSQL

Es un motor Objeto-Relacional [*]. Cliente/servidor Extensible Mltiples conectores desde lenguajes de programacin. Lenguaje procedimental propio (PL/pgsql) y extendido (PL/PERL, PL/PYTHONu, PL/JAVA, PL/RUBY, PL/R, C, C++...)

Carctersticas

El modelo es de cliente/servidor (hoy en da el ms comn, pero no el nico). Su lenguaje procedimental es muy similar al PL de Oracle, logrando una migracin mas amena. Se adapta a los estndares SQL:2003. Posee MVCC (Multi-Version Concurrency Control). Fue una de las pioneras (la primera fue InterBase) Posee WAL (Write Ahead LOG). Herencia de tablas. Puntos de recuperacin avanzados (savepoints, replicacin asncronica) Optimizador de consultas. Juegos de caracteres UNICODE e internacionalizacin.

Carctersticas

Tipos de datos accesorios: Nmeros de presicin arbitraria (creando nmeros ms complejos) Text de largo ilimitado. Figuras geomtricas, con funciones asociadas. (Cube, contrib) IpV4 y 6. Arrays (Nuevas funciones desde 8.4) Postgis (necesita un captulo aparte). Citext (insensitive case text type - 8.4)

Caractersticas - Lmites

Mximo de la BD: ilimitado. De Tablas: 32 TB. De tupla: 1.6 TB. De campo: 1 GB Tuplas x tabla: ilimitado. ndices por tabla: ilimitado. Bloque: 8k

Caractersticas - ndices

Pueden ser definidos por el usuario: Btree (por defecto y el ms comn), Hash, GIN

(Generalized Inverted , ex RTree) y Gist (Generalized Index Storage). Basados en expresiones. Parciales Bitmaps.

Gin es ms lento para inserciones pero ms rpido para bsqueda de texto (se usa para Full Text Search). Gist es bueno para datos complejos o raros (figuras geomtricas, tsvector, etc)

Caractersticas - Avanzadas

Restricciones Referential Integrity Constraints. Evita eliminaciones accidentales. Transacciones BEGIN END- SAVEPOINTS. Anidacin de consultas avanzadas. Conexiones encriptadas va SSL. Dominios, clustering, tablespaces, schemas y otros objetos de agrupacin. TOAST (atributos comprimidos largos, transparente al usuario). Soporte de funciones de ventana y recursivas.

PostgreSQL

Cmo PostgreSQL promete ACID?

Soluciones para ACID

[A]tomicidad (transacciones indivisibles) [C]onsistencia [I]solation ,aislamiento (no se pueden ver entre transacciones) [D]urabilidad: xito de una transaccin que perdura.

Solucin para [A]


Sentencias de BEGIN, END, ROLLBACK,COMMIT y SAVEPOINT.

Solucin para [C]


A partir de la versin 7.x, gestor de integridad: not null check unique primary key fk -match full y partial

Solucin para [I] MVCC


Multi Versin Concurrency Control Impide el bloqueo de la tabla

Solucin para [D]

WAL (write Ahead Log) /var/pg_xlog

Acelera los tiempos de commit y de insercin y update. En caso de cada, las transaccines cmprometidas pero que no llegaron a la base, permanecen en la WAL.

Lenguajes

DDL DML Control de transacciones Control de permisos

Lenguaje de definicin de datos (DDL)


El lenguaje de definicin de datos (en ingls Data Definition Language, o DDL), es el que se encarga de la modificacin de la estructura de los objetos de la base de datos. Existen cuatro operaciones bsicas: CREATE, ALTER, DROP y TRUNCATE.

Ejemplos DDL
Ejemplo (crear una funcin): CREATE OR REPLACE FUNCTION 'NOMBRE RETURNS 'TIPO RETORNO' AS $BODY$ BEGIN 'INSTRUCCIN SQL' --por Ejemplo: DELETE FROM con empleado WHERE id empleado = 'ANY' (ids); END; $BODY$ LANGUAGE 'plpgsql'; FUNCION'('PARAMETROS')

Ejemplos DDL
Ejemplo (agregar columna a una tabla) ALTER TABLE 'TABLA_NOMBRE' ( ADD NUEVO_CAMPO INT UNSIGNED meel )

Ejemplos DDL
Ejemplo DROP: ALTER TABLE ''TABLA_NOMBRE'' ( DROP COLUMN ''CAMPO_NOMBRE1'' )

Ejemplos DDL
Ejemplo TRUNCATE: TRUNCATE TABLE ''TABLA_NOMBRE1''

Lenguaje de manipulacin de datos DML(Data Manipulation Language)


Definicin

Un lenguaje de manipulacin de datos (Data Manipulation Language, o DML en ingls) es un lenguaje proporcionado por el sistema de gestin de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de los datos, organizados por el modelo de datos adecuado. El lenguaje de manipulacin de datos ms popular hoy da es SQL, usado para recuperar y manipular datos en una base de datos relacional.

Ejemplos de DML
INSERT

Una sentencia INSERT de SQL agrega uno o ms registros a una (y slo una) tabla en una base de datos relacional. Forma bsica: INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...''])

Ejemplos de DML
UPDATE

Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla. Forma bsica UPDATE ''tabla'' SET ''columna1'' = ''valor1'' ,''columna2'' = ''valor2'',... WHERE ''columnaN = ''valorN''

Ejemplos de DML
DELETE

Una sentencia DELETE de SQL borra uno o ms registros existentes en una tabla. Forma bsica DELETE FROM ''tabla'' WHERE ''columna1'' = ''valor1''

Ejemplo especial DML/DDL


TRUNCATE

Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho ms rpido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE slo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la clusula WHERE. Si bien, en un principio, esta sentencia parecera ser DML (Lenguaje de Manipulacin de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transaccin. Ejemplo: TRUNCATE TABLE ''TABLA_NOMBRE1''

Control transaccional

BEGIN END SAVEPOINT COMMIT ROLLBACK PREPARE TRANSACTION ROLLBACK PREPARED

Control permisos

GRANT REVOKE

PostgreSQL

Muchas gracias !!!!

Fin
Primera parte

You might also like