postgresql expo

25
POSTGRESQ L PARTE I Azuaje, Agustín Hevia,

Upload: andres-hevia

Post on 13-Jun-2015

453 views

Category:

Technology


0 download

DESCRIPTION

Presentación de Postgres SQL (parte I) para la matería de ABD de licenciatura en computación.

TRANSCRIPT

Page 1: Postgresql expo

POSTGRESQL

PARTE IAzuaje, AgustínHevia, Andrés

Page 2: Postgresql expo

Agenda

Definición: ¿Qué es PostgreSQL? Entrando a Postgres…

Reseña histórica y características básicas. Arquitectura Básica.

Modelo Cliente – Servidor. Manejo de Memoria.

Almacenamiento Índices

Restauración Manejo de la concurrencia. Diccionario de Datos / Directorio.

Page 3: Postgresql expo

¿Qué es PostgreSQL?

¿Un simple SMBD?

Más que eso:Un poderoso sistema de gestión de base de datos objeto-relacionales.

Fiel cumplidor de la norma ACID

Page 4: Postgresql expo

Entrando a Postgres…

Nace en 1982 en la Universidad de Berkeley. Su primer nombre fue Ingres.

Robusto como su logo,corre en casi cualquierSistema Operativo.

Diseñado para ambientes de alto volumen de transacciones.

De código abierto.

En 1994 empieza a utilizar el lenguaje SQL.

Page 5: Postgresql expo

Arquitectura Básica

Consiste en el modelo Cliente-Servidor.

¿Y esto de aquí arriba que significa?

Page 6: Postgresql expo

Manejo de Memoria

En todos los sistemas de gestión de base de datos, los datos se guardan en páginas de memoria…… Postgres no es la

excepción: Tamaños de página

desde 8 K hasta 32 K.

¿data muy grande?It’s TOAST time! A picar se ha dicho.

Page 7: Postgresql expo

Manejo de Memoria

El Storage Manager: Todo Update es una inserción en

vez de un cambio de las tuplas. No requiere la ejecución de un

código de recuperación si el sistema falla. Esquema WORM: Write-Once-Read-Many.

Almacenamiento por bloques.

Aprovecha el hardware especializado como procesadores múltiples y memoria no volátil. Para cada usuario que lee, tiene una copia del dato disponible…

Page 8: Postgresql expo

Manejo de memoria

Page 9: Postgresql expo

Manejo de Memoria¡El maravilloso Vacuum! Libera espacio en

disco. Mantiene actualizadas las estadísticas de de datos utilizados por el planificador de consultas SQL.¿Cómo

funciona? Primero escribe un registro de archivo y de sus registros de índice asociados.

Luego crea un nuevo punto de anclaje en la base de datos actual (Checkpoint).

Libera el espacio ocupado por el punto de anclaje más antiguo.

Page 10: Postgresql expo

Manejo de Memoria

Ejemplo de un “Full Vacuum”:

Page 11: Postgresql expo

Manejo de Memoria

Ejemplo de un “Lazy Vacuum”:

Page 12: Postgresql expo

Índices

Los índices se utilizan para acelerar las consultas.

Son también archivos.

Y con ustedes… Los índices

Page 13: Postgresql expo

Índices

Índices por valor

Su campo clave es…

… una columna.

La sentencia para su creación sería:CREATE [UNIQUE] INDEX nombre_indice

ON TABLE [USING nombre_acceso] (columna)

Page 14: Postgresql expo

Índices

Índice funcional

Se define por el resultado de una función.

Acceso más veloz.

La sentencia para su creación sería:CREATE [UNIQUE] INDEX nombre_indice

ON TABLE [USING nombre_acceso] (nombre_funcion (r”>columna|e>[,…]) )

Page 15: Postgresql expo

Índices

Índices primarios

Se crean automáticamente cuando establecemos un campo como clave primaria.

Aunque se crean automáticamente, pueden crearse manualmente para campos que creamos relevantes.

La sentencia para su creación sería:CREATE INDX nombre_indice ON table

(campo);

Page 16: Postgresql expo

Índices

Índices secundarios B-Tree (Árbol B). R-Tree (Árbol R) (Descontinuados). Gist (Sustituye al R-Tree): se utilizan en

una búsqueda, cuando alguno de los atributos indexados esté involucrado en una comparación que utilice uno de los siguientes operadores: <<|, &<|, |&>|, |>>, @>, <@, ~=, &&

Page 17: Postgresql expo

Índices

Un Árbol B para refrescar la memoria…

Page 18: Postgresql expo

Concurrencia

Recordemos el modelo Cliente – Servidor…

Varios clientes implica varias transacciones, que pueden ser concurrentes…

Page 19: Postgresql expo

Concurrencia PostgreSQL

Bloqueo

PostgreSQL = MVCC

Transacción = Acción Reed/Write

• NO contención, deadlocks

• SI transacciones ACID Atomicity, Consistency, Isolation and Durability.• Copias paralelas de datos.

• NO elimina o actualiza la data

• Fila extra = “no visible”

Desventajas

Usa más espacio de disco.

Lentitud al leer datos.

R nunca bloquea W, y viceversa

Control de Concurrencia Multi-Versión Concurrencia

Page 20: Postgresql expo

Concurrencia PostgreSQL

Caso de Conflicto = 2 transacciones trabajan sobre el mismo objeto, con al menos una operación de escritura.

Aislamiento de Transacción. Solución

Lectura confirmada Serializable Predeterminada Ve una instantánea a partir del inicio

de la operación. 2 Casos:

Consulta sólo ve los datos confirmados antes del comienzo de la consulta.

Se esperará la confirmación de la primera transacción.

Estricto Emula la ejecución en serie. Los sucesivos comandos dentro de

una sola transacción siempre ven los mismos datos.

Page 21: Postgresql expo

Concurrencia PostgreSQL

VACUUM

E- Bloqueo no visible

SD: Bloque Sin Asignar

OF: Bloque Fuera de Uso

¿Se acuerdan de esto? Hora de reutilizar espacio y optimizar las búsquedas.

Full VACUMM Auto VACUMM

Mas agresivo Espacio liberado, retornado al SO Bloqueo exclusivo mientras se

procesa

Automatizar el VACUMM Múltiples procesos para

mantenerlo activo

Page 22: Postgresql expo

Recuperación PostgreSQL

Existen distintos enfoques para resguardar la BD:

Backups mediante volcado

Backup de todas las BD del servidor

Backup a nivel de ficheros

Crear Fichero

Restaurar psql basededatos < fichero.sql

pg_dump basededatos > fichero.sql

Copiar BD del servidor pg_dumpall > backup_server.sql

Restaurar las BD psql -f backup_server.sql postgres

Apagar el servidor tar -czvf backup.tar.gz /var/pgsql/data

Mover los ficheros a su ruta y levantarlo de nuevo

Recuperación

Page 23: Postgresql expo

Recuperación PostgreSQL

Estrategia Compleja de Copias de Seguridad

Archivado Continuo y Logfiles

Copias Físicas (Resguardar la BD)

Almacenan automáticamente todas las modificaciones.Almacenan data de forma continua.

Registran todas las manipulaciones a la BD

Rotación de Logfiles

Page 24: Postgresql expo

Diccionario de Datos PostgreSQL

Almacena un conjunto de Meta-datos.

• Son datos que describen otros datos

• Organizados en tablas

• Generados automáticamente por el Compilador.

Estándar SQL-92,

lo denomina “informationschema”

Diccionario de Datos

Tipos de datos:cardinal_number: Entero no negativocharacter_data: String sin longitudsql_indentifier: Sentencias de sqlyes_or_no: valores lógicos

Conjunto de vistas las cuales contiene: Columns (Columnas definidas por el sistema), Tables (Tablas de la bd), Views (Vistas)

Acceso

Select * from information_schema.<vista>.

Pg_class: tablas, índices….Pg_constraint: restricciones definidas.Pg_statistics: información de la estadísticas del sistema.

Select relname from pg_class;

Page 25: Postgresql expo

Y por ahora terminamos…

¿Preguntas?