Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porOdalis Linares Modificado hace 7 años
1
POSTGRESQL PARTE I Azuaje, Agustín Hevia, Andrés
2
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.
3
¿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
4
Entrando a Postgres… Nace en 1982 en la Universidad de Berkeley. Su primer nombre fue Ingres. Robusto como su logo, corre en casi cualquier Sistema Operativo. Diseñado para ambientes de alto volumen de transacciones. De código abierto. En 1994 empieza a utilizar el lenguaje SQL.
5
Arquitectura Básica Consiste en el modelo Cliente-Servidor. ¿Y esto de aquí arriba que significa?
6
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.
7
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…
8
Manejo de memoria
9
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.
10
Manejo de Memoria Ejemplo de un “Full Vacuum”:
11
Manejo de Memoria Ejemplo de un “Lazy Vacuum”:
12
Índices Los índices se utilizan para acelerar las consultas. Son también archivos. Y con ustedes… Los índices
13
Í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)
14
Í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>[,…]) )
15
Í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);
16
Í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: |, |>>, @>, <@, ~=, &&
17
Índices Un Árbol B para refrescar la memoria…
18
Concurrencia Recordemos el modelo Cliente – Servidor… Varios clientes implica varias transacciones, que pueden ser concurrentes…
19
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
20
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 confirmadaSerializable 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.
21
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 VACUMMAuto VACUMM Mas agresivo Espacio liberado, retornado al SO Bloqueo exclusivo mientras se procesa Automatizar el VACUMM Múltiples procesos para mantenerlo activo
22
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
23
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
24
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 negativo character_data: String sin longitud sql_indentifier: Sentencias de sql yes_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.. Pg_class: tablas, índices…. Pg_constraint: restricciones definidas. Pg_statistics: información de la estadísticas del sistema. Select relname from pg_class;
25
Y por ahora terminamos… ¿Preguntas?
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.