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
Unidad 4
Seguridad
Creación de usuarios
SQLServer
Creación de usuarios
SQLServer
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
Creación de usuarios
PostgreSQL
Crearemos un rol que será de
super usuario
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
Creación de usuarios
PostgreSQL
Iniciaremos sesión con el
usuario Genaro en la Base
BD_GYM
Creación de usuarios
PostgreSQL
Borrar roles y usuarios
Unidad 5
Transacciones
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.
 Todolenguaje 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.
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.
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).
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
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.
 * 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.
Transacciones en
SGBD
Sesion 1
Transacciones en
SGBD
Sesion 2
Unidad 6 Procedimientos
almacenados
Procedimientos
Creacion de secuencias
Procedimientos
Se crearon 2 tablas para la
realización de ejemplo
Procedimientos
inserción a las tablas
Procesamientos -
Función
Creación de una función
Procesamientos -
Triggers
Creamos una función donde
declararemos las variables y
haremos referencia al
TRIGGER mediante métodos
matemáticos (potencia, raices)
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();”
Procesamientos -
Triggers
Verificación de los datos
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?

U456 postgre sql

  • 1.
    PostgreSQL Unidad 4,5,6 Integrantes: José Rodrigoserrano 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
  • 2.
  • 3.
  • 4.
  • 5.
    Creación de usuarios PostgreSQL Debemosde escribir la ruta de donde esta ubicada nuestra carpeta de PostGres y los comandos: Psql –U postgres –h localhost –W
  • 6.
    Creación de usuarios PostgreSQL Crearemosun rol que será de super usuario
  • 7.
    Creación de usuarios PostgreSQL Otorgaremospermisos sobre las tablas de la base de datos del gym por lo cual debemos de estar en ella para poder otrogarle los permisos
  • 8.
    Creación de usuarios PostgreSQL Iniciaremossesión con el usuario Genaro en la Base BD_GYM
  • 9.
  • 10.
  • 11.
    Transacciones Todo sistema gestorde 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.  Todolenguaje 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.
  • 12.
    MVCC (Multiversion ConcurrencyControl) 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.
  • 13.
    READ COMMITED  Nivelde 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).
  • 14.
    SERIALIZABLE  Es laempleada 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
  • 15.
    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.
  • 16.
     * BloqueoExplicito: 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.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
    Procedimientos Se crearon 2tablas para la realización de ejemplo
  • 22.
  • 23.
  • 24.
    Procesamientos - Triggers Creamos unafunción donde declararemos las variables y haremos referencia al TRIGGER mediante métodos matemáticos (potencia, raices)
  • 25.
    Procesamientos - Triggers Ahora creamosel TRIGGER que actuara antes de insertar realizara un UPDATE en la tala números y asi ejecutar el procedimiento almacenado “rellenar_datos();”
  • 26.
  • 27.
    Preguntas  ¿Con quemodelo 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?