POSTGRES
QL
PARTE IAzuaje, Agustín
Hevia, Andrés
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.
¿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
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.
Arquitectura Básica
 Consiste en el modelo Cliente-Servidor.
¿Y esto de aquí arriba que
significa?
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.
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…
Manejo de memoria
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.
Manejo de Memoria
Ejemplo de un “Full
Vacuum”:
Manejo de Memoria
Ejemplo de un “Lazy Vacuum”:
Índices
 Los índices se utilizan para
acelerar las consultas.
 Son también
archivos.
Y con ustedes… Los
índices
Í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)
Í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>[,…]) )
Í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
Í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: <<|, &<|, |&>|, |>>,
@>, <@, ~=, &&
Índices
 Un Árbol B para refrescar la memoria…
Concurrencia
 Recordemos el modelo Cliente
– Servidor…
 Varios clientes implica varias transacciones,
que pueden ser concurrentes…
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
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.
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
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
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
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.<vista>.
Pg_class: tablas, índices….
Pg_constraint: restricciones definidas.
Pg_statistics: información de la
estadísticas del sistema.
Select relname from pg_class;
Y por ahora terminamos…
¿Pregunta
s?

Postgresql expo

  • 1.
  • 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  Consisteen 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 ElStorage 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.
  • 9.
    Manejo de Memoria ¡Elmaravilloso 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 Ejemplode un “Full Vacuum”:
  • 11.
    Manejo de Memoria Ejemplode un “Lazy Vacuum”:
  • 12.
    Índices  Los índicesse utilizan para acelerar las consultas.  Son también archivos. Y con ustedes… Los índices
  • 13.
    Índices Índices por valor Sucampo 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  Sedefine 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 creanautomá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
  • 16.
    Índices Índices secundarios B-Tree (ÁrbolB).  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 ÁrbolB para refrescar la memoria…
  • 18.
    Concurrencia  Recordemos elmodelo 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  Casode 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.
  • 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 VACUMM Auto 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 distintosenfoques 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  EstrategiaCompleja 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 DatosPostgreSQL  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.<vista>. 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 ahoraterminamos… ¿Pregunta s?

Notas del editor

  • #5 Funciona muy bien con grandes cantidades de datos y posee una alta concurrencia de usuarios accediendo a la vez a el sistema, es decir, permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Obedece completamente a las especificaciones ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) Permite el uso de triggers Portable: (Linux, Mac OS X, Solaris, FreeBDS, OpenBSD, Windows) Bien Estructurado y documentado. Extensible
  • #6 El proceso Postmaster: Es el proceso inicial. Gestiona los accesos multiusuario y multiconexion. Levanta lamemoria compartida. Esta al tanto de solicitudes de nuevas conexiones. Lanza procesos de atención de demanda, realizando las operaciones sobre la base de datos a solicitud de los clientes. Realiza el enlazado con los archivos de datos, gestionando estos ficheros, donde los ficheros pueden pertenecer a varias bases de datos.
  • #8 En todos los sistemas manejadores de BD los datos se guardan en páginas. Estas páginas están guardadas en disco. A continuación veremos las características para PostgreSQL: - El tamaño de las páginas puede variar entre 8K y 32K. - Si se necesita guardar una data de tamaño muy grande PostgreSQL aplica una técnica que es conocida popularmente como TOAST que consiste en comprimir la data y/o partirla en varias filas. Este proceso es transparente para el usuario. Para las operaciones de lectura y escritura se consulta primero al Storage Manager, si no esta se busca en disco. El Storage Manager está compuesto por los siguientes módulos: Sistema de transacciones Almacenamiento Relacional Gestión del Tiempo Control de concurrencia y gestión de fecha y hora Acceso a registros