27
PostgreSQL Unidad 4,5,6 Integrantes: José Rodrigo serrano Ayón Genaro Yair Enciso Luna Instituto Tecnológico de Tepic Taller de Base de datos Hora: 10:00-11:00 Docente: Ibarra Carlos Francisco

U456 postgre sql

Embed Size (px)

Citation preview

Page 1: U456 postgre sql

PostgreSQLUnidad 4,5,6

Integrantes:José Rodrigo serrano AyónGenaro Yair Enciso Luna

Instituto Tecnológico de Tepic

Taller de Base de datosHora: 10:00-11:00Docente: Ibarra Carlos Francisco

Page 2: U456 postgre sql

Unidad 4

Seguridad

Page 3: U456 postgre sql

Creación de usuarios SQLServer

Page 4: U456 postgre sql

Creación de usuarios SQLServer

Page 5: U456 postgre sql

Creación de usuarios PostgreSQL

Debemos de escribir la ruta de donde esta ubicada nuestra carpeta de PostGres y los comandos:Psql –U postgres –h localhost –W

Page 6: U456 postgre sql

Creación de usuarios PostgreSQL

Crearemos un rol que será de super usuario

Page 7: U456 postgre sql

Creación de usuarios PostgreSQL

Otorgaremos permisos sobre las tablas de la base de datos del gym por lo cual debemos de estar en ella para poder otrogarle los permisos

Page 8: U456 postgre sql

Creación de usuarios PostgreSQL

Iniciaremos sesión con el usuario Genaro en la Base BD_GYM

Page 9: U456 postgre sql

Creación de usuarios PostgreSQL

Borrar roles y usuarios

Page 10: U456 postgre sql

Unidad 5

Transacciones

Page 11: U456 postgre sql

Transacciones

Todo sistema gestor de Bases de Datos maneja los siguientes conceptos sobre las transacciones:

Son un conjunto de acciones que altera el estado original de los datos y forman una sola unidad.

Todo lenguaje que manipula los datos (DML) son administrados por las transacciones.

Las transacciones pueden interrumpir un conjunto de acciones o hacerlas permanentes.

Mantiene la integridad de los datos cuando alguna acción falla.

Page 12: U456 postgre sql

MVCC (Multiversion Concurrency Control) de PostgreSQL

Postgres mantiene la consistencia de los datos con un modelo multiversión (MVCC). Esto significa que mientras se consulta una base de datos, cada transacción ve una imagen de los datos (una versión de la base de datos) como si fuera tiempo atrás, sin tener en cuenta el estado actual de los datos que hay por debajo. Esto evita que la transacción vea datos inconsistentes que pueden ser causados por la actualización de otra transacción concurrente en la misma fila de datos, proporcionando aislamiento transaccional para cada sesión de la base de datos. 

Page 13: U456 postgre sql

READ COMMITED

Nivel de aislamiento por defecto de PostgreSQL, donde las modificaciones de otras transacciones se ven si se terminaron con COMMIT antes de comenzar la consulta. En caso de intentar cambiar un dato que otra transacción está cambiando, la actual queda bloqueada hasta saber si proceder con el cambio (en caso de rollback) o si volver a ejecutar la condición de consulta del cambio para comprobar que las filas a cambiar aún la cumplen (en caso de commit). 

Page 14: U456 postgre sql

SERIALIZABLE

Es la empleada por defecto en SQL estándar, solo se ven las modificaciones de otra transacción que hayan sido aceptadas (COMMIT) al principio de la transacción actual. PostgreSQL no tiene un nivel SERIALIZABLE real puesto que solo ve los datos que han sido COMMIT antes de la primera consulta o modificación de datos.

Para garantizar serialización verdadera Postgre utiliza “bloqueo de predicados” esto significa que mantiene bloqueos que le permiten determinar si una escritura pudiera tener un impacto en el resultado de alguna lectura de otra transacción concurrente

Page 15: U456 postgre sql

Bloqueos y tablas

Postgres ofrece varios modos de bloqueo para controlar el acceso concurrente a los datos en tablas. Algunos de estos modos de bloqueo los adquiere Postgres automáticamente antes de la ejecución de una declaración, mientras que otros son proporcionados para ser usados por las aplicaciones.

Page 16: U456 postgre sql

* Bloqueo Explicito:PostgreSQL provee varios métodos de bloqueo además de MVCC para situaciones donde este no proporciona el comportamiento deseado.

* Bloqueo a nivel de Tablas:Estos son los tipos de bloqueo a nivel de tablas, son adquiridos de manera automatica por Postgre o manual mediante el comando LOCK.

* Bloqueo a nivel de Filas: Los tipos de bloqueo a nivel de filas son SELECT FOR UPDATE para un bloqueo exclusivo y SELECT FOR SHARE para un bloqueo compartido, pero que genera una solicitud de bloqueo exclusivo cuando se intenta modificar la fila.

* Advisory Locks:Son bloqueos para fines específicos que no son usados normalmente por el sistema, existen de sesión, que obtienen el bloqueo desde el inicio de la sesión hasta el final de esta y no se desbloquea incluso con rollbacks, y de transacción, que se comporta más como los bloqueos normales, se liberan automáticamente al final de la transacción, si hay un bloqueo de sesión sobre un recurso, no puede haber uno de transacción, y viceversa.

Page 17: U456 postgre sql

Transacciones en SGBD

Sesion 1

Page 18: U456 postgre sql

Transacciones en SGBD

Sesion 2

Page 19: U456 postgre sql

Unidad 6 Procedimientos almacenados

Page 20: U456 postgre sql

Procedimientos

Creacion de secuencias

Page 21: U456 postgre sql

Procedimientos

Se crearon 2 tablas para la realización de ejemplo

Page 22: U456 postgre sql

Procedimientos

inserción a las tablas

Page 23: U456 postgre sql

Procesamientos - Función

Creación de una función

Page 24: U456 postgre sql

Procesamientos - Triggers

Creamos una función donde declararemos las variables y haremos referencia al TRIGGER mediante métodos matemáticos (potencia, raices)

Page 25: U456 postgre sql

Procesamientos - Triggers

Ahora creamos el TRIGGER que actuara antes de insertar realizara un UPDATE en la tala números y asi ejecutar el procedimiento almacenado “rellenar_datos();”

Page 26: U456 postgre sql

Procesamientos - Triggers

Verificación de los datos

Page 27: U456 postgre sql

Preguntas

¿Con que modelo mantiene la consistencia de los datos PostegreSQL?

¿Cuál es el nivel de aislamiento por defecto de postgreSQL? ¿Que utiliza postgre para garantizar serialización verdadera? ¿Cuáles son los bloqueos que hace postgres?