31
PostgreSQL: Parte 1 1 Integrantes: Álvaro Marciales Claudio Torrez

1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Embed Size (px)

Citation preview

Page 1: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

PostgreSQL: Parte 1

1

Integrantes:Álvaro MarcialesClaudio Torrez

Page 2: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Puntos a Tratar• Introducción a PostgreSQL• Arquitectura del SMBD

• Arquitectura Básica• Arquitectura Avanzada

• Manejo de memoria• Storage Manager• Operación Vacuum• Como configurar el uso de la memoria

• Índices• Tipos de índices.• Creación de índices en PostgreSQL.

• Concurrencia• MVCC: Multiversion Concurrency Control

• Recuperación• Backups de Bases de datos y de logs

2

Page 3: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

3

Page 4: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

4

Page 5: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Arquitectura Básica del SMBD

• PostgreSQL está basado en una arquitectura cliente-servidor.

• El programa servidor: postgres. Clientes: pgaccess y psql. 

• Storage Manager: gestiona transacciones, memoria,

concurrencia, es el responsable de la administración general

de almacenamiento de datos y controla la consistencia de la

información.

5

Page 6: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Almacenamiento y organización de datos

• Almacena los datos en bloques del disco llamados "páginas"

6

Páginas

• Mínimo 8 KB

• Máximo 32 KB

Page 7: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Almacenamiento en PostgreSQL

7

Page 8: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Estructura de una página

8

• PostgreSQL: Para las operaciones de L/E primero se consulta al Buffer Manager (memoria RAM) si contiene la página, sino se hace la búsqueda en memoria secundaria.

Page 9: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

TIPO DE ORGANIZACIÓN DE ARCHIVOS EN POSTGRESQL

Utiliza los índices para reducir los tiempos de ejecución de las consultas que recibe, pero internamente implementa distintos métodos, en caso de que no exista un índice, utilizará una búsqueda secuencial en las tuplas que cumplen con la condición y si existe el sistema lo utiliza.

En conclusión se puede decir que el SMBD utiliza ambos tipos de acceso, tanto indexado secuencial como aleatorio.

9

Page 10: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Índices

• Los índices se utilizan, principalmente, para mejorar

el perfomance de una base de datos.

• Se definen sobre las columnas de la tabla que se utilicen en consultas repetidamente.

• Su uso inapropiado resultará en un funcionamiento más lento, ya que los tiempos de actualización e inserción incrementaran razonablemente.

10

Page 11: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Índices en PostgreSQL

• Postgres provee accesos de tipo btree (árbol-b), rtree (árbol-r) y hash para índices secundarios. 

• Btree:  el atributo indexado esta vinculado con uno de los siguientes operadores: <, <=, =, >=, >.

• Rtree :el atributo indexado esta vinculado con uno de los siguientes operadores: <<, &<, &>, >>, @, ~=, &&.

• Hash: el atributo indexado esta vinculado con el operador =.

11

Page 12: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Índices: B-treeB-tree

12

Page 13: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Índices: Hash

13

Page 14: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

ÍNDICES: R-TREE

15

Page 15: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Índices: Creación

• En postgres podemos crear manualmente un índice haciendo uso de la sentencia:

• También se declaran índices automáticamente al crear claves sobre tablas.

14

Page 16: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Manejo de memoriaCorrespondiente con el manejo de memoria se encuentra el Storage Manager (Manejador de almacenamiento) que contiene cinco módulos los cuales proveen la administración de transacciones y el acceso a la BD. Los módulos que componen el Storage Manager son:

-Sistema de transacciones

-Almacenamiento Relacional

-Gestión del Tiempo

-Control de concurrencia y gestión de fecha y hora

-Acceso a registros

16

Page 17: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Memoria: Operación Vacuum• Necesaria ejecutarla periódicamente

17

Page 18: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Memoria: Configuración

• La configuración PostgreSQL puede ser manipulada fácilmente a través del archivo de configuración postgresql.conf

• Algunos parámetros de manejo de memoria son:

• Shared_Buffers: • Maintenance_work_mem:• Effective_cache_size:

18

Page 19: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Concurrencia

A diferencia de la mayoría de otros sistemas de bases de datos que usan bloqueos para el control de concurrencia, PostgreSQL mantiene la consistencia de los datos con un modelo multiversión llamado:

MVCC (Multi-Version Concurrency Control).

19

Page 20: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Concurrencia: MVCC

Que es MVCC?

Como funciona?

Ejemplos.

Casos Conflictivos.

20

Page 21: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

MVCC

Es una técnica de concurrencia optimista en donde ninguna tarea o hilo es bloqueado mientras se realiza una operación en la tabla.

Las transacciones ven una imagen de la data, correspondiente al ultimo commit recibido, al momento de iniciarla.

MVCC nunca modifica ó elimina los datos, en su lugar nuevas filas de información se van añadiendo conforme se crea o actualiza la data y se marcan los datos anteriores como “no visible”.

La data nunca es “visible” por otras transacciones hasta que no haya hecho “commit”.

Las operaciones de lectura nunca bloquean a las de escritura y viceversa.

21

Page 22: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

MVCC: casos conflictivos• En el caso en el que se realicen 2 updates concurrentemente,

es posible asignar el nivel de aislamiento (isolation) de las transacciones por medio de la instrucción:

• READ COMMITTED: lee el registro luego que la primera transacción haya terminado y luego completa su operación.

• SERIALIZABLE: recomienza la transacción que encuentra un conflicto de este estilo.

22

Page 23: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

MVCC: Ejemplo

23

Page 24: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Recuperación• Enfoques fundamentales para la copia de seguridad de datos

en PostgreSQL:

• SQL dump

• Backup completo

• Backup a nivel de Ficheros

24

Page 25: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Recuperación: Sql Dump

La forma más sencilla de hacer un backup de una base de datos completa es la siguiente:

• pg_dump basededatos > fichero.sql

Y puede ser restaurada usando:

• psql basededatos < fichero.sql

25

Page 26: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Recuperación: Sql Dump

Otras técnicas para el manejo de bases de datos más grandes:

Dumps comprimidos:Backup con:

• pg_dump nombrebd | gzip > nombreArchComprimido.gz

Restauración con:

> gunzip -c nombreArchComprimido.gz | psql nombrebd  

26

Page 27: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Recuperación: Backup Completo

• También existe un comando para guardar todas las bases de datos del sistema y las variables globales también:

pg_dumpall > ArchivoSalida 

Ejemplo:

Backup con: • pg_dumpall > data.dump

Recuperación con: • psql -f data.dump template1

27

Page 28: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Recuperación: Backup a Nivel de Ficheros

• Este método implica copiar directamente los ficheros de la base de datos

Ejemplo:

Suponiendo que se encuentra en /var/pgsql/data sería así:

tar -czvf backup.tar.gz /var/pgsql/data

Restauración:

Mover los ficheros a su ruta y levantarlo de nuevo 28

Page 29: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Archivado Continuo y Logfiles

• En la documentación de PostgreSQL recomiendan combinar estos sistema con el de copiado a nivel físico para una estrategia compleja de Copias de Seguridad.

• Los archivos de log o log files de Postgres se almacenan automáticamente y por defecto en la carpeta de postgres

• Es necesario guardar los logfiles generados en otro lugar además del default

• Los logfiles al almacenar indefinidamente el estado del servidor llegan a ser muy voluminosos

29

Page 30: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Log files: Rotación

• Si cambiamos el parámetro Logging_collector a true en el archivo “Postgresql.conf” activamos el rotador de logfiles por defecto de postgres.

• Si deseamos hacer uso de un programa rotador de log files externo, es necesario redireccionar la salida estándar del servidor al programa deseado.

30

Page 31: 1 Integrantes: Álvaro Marciales Claudio Torrez. Introducción a PostgreSQL Arquitectura del SMBD Arquitectura Básica Arquitectura Avanzada Manejo de memoria

Conclusión

PostgreSQL cuenta con una serie de características atractivas como:

• Su portabilidad por estar basado en lenguaje de consultas SQL.• Su amplia variedad de índices• Soporta base de datos de gran tamaño• Integrado totalmente bajo el esquema ACID• Alta concurrencia

Desventaja• Consume muchos recursos, en parte por el intenso trabajo de

E/S al buscar y copiar datos en disco. 31