You are on page 1of 43

PostgreSQL 9.

IBD115
2013
Por
Alexandra Mara Caas
Tovar y
Bryan Josu Rodrguez
Parada
DESCRIPCIN DE POSTGRESQL
PostgreSQL 9.3 es un sistema de gestin de bases de
datos objeto-relacional distribuido bajo la Licencia
PostgreSQL:
El permiso para usar, copiar, modificar y
distribuir este software y su documentacin
para cualquier propsito, sin coste alguno, y sin
que se concede un contrato por escrito
ARQUITECTURA
INTERNA
ARQUITECTURA INTERNA (2)
PostgreSQL se maneja por medio de clster
(instancias) para lo cual posee un directorio en donde
se almacenan los archivos de configuracin del mismo,
la data que se genera y otros archivos relevantes. El
directorio por defecto es PGDATA. Dentro del directorio
PGDATA se encuentra el directorio PGDATA/Base y es el
directorio por defecto en donde se almacenan todos
los objetos de una base de datos (tablas, ndices,
funciones, etc.).
Adems cada objeto se distingue mediante el OID ( el
cual es un entero de 4 bytes sin signo) o mediante
filenode. En el caso de las tablas y los ndices poseen
tres archivos asociados los cuales son: el mapa de
espacio libre , el mapa de visibilidad y por ltimo el de
inicializacin.
ARQUITECTURA INTERNA (3) 88kb
KB

PostgreSQL utiliza un tamao de pgina fijo (normalmente 8 kB), y no


permite que las tuplas abarquen varias pginas. Por lo tanto, no es posible
almacenar directamente los valores de campo muy grandes. Para superar esta
limitacin, los valores de campo grandes se comprimen y / o rompen en
mltiples filas fsicas. Dicha tcnica es conocida como TOAST. En el encabezado de
fila se coloca el puntero hacia una tabla del tipo TOAST. Y se ocupa en tipos de
datos variables. Los datos pueden comprimirse para guardarse y se colocan en
tantas filas como el tamao del dato lo demande.
El cdigo TOAST se activa slo cuando un valor de fila (campo) para ser
almacenado en una tabla es ms ancho que TOAST_TUPLE_THRESHOLD
(normalmente de 2 kB). El cdigo TOAST comprime y / o mueve los valores de
campo (out-of-line) fuera de lnea hasta que el valor de la fila es ms corta que
TOAST_TUPLE_TARGET.
Cada tipo de datos TOAST table especfica una estrategia por defecto para las
columnas de ese tipo de datos, pero la estrategia para una columna de tabla
determinada se puede modificar con ALTER TABLE SET STORAGE.
ARQUITECTURA INTERNA (4)
FREE SPACE MAP (MAPA DE
ESPACIO LIBRE)
VISIBILITY MAP (MAPA DE
VISIBILIDAD)
INICIALIZACIN FORK
ARQUITECTURA INTERNA (5)
Estructura de una pgina
ARQUITECTURA DEL LOG DE
TRANSACCIONES
WAL o Escritura de ATOMICIDAD y DURABILIDAD
Registro Anticipada
La regla principal de
WAL es asegurar que
los registros se
escriben en el WAL
antes de que los
registros de la base de
datos sean alterados
en disco
ARQUITECTURA DEL LOG DE
TRANSACCIONES (2) DE SEGMENTOS
IDENTIFICADOR

pg_xlog/

Actividad Normal: Checkpoint_segments + wal_keep_segments + 1


En PICOS: 3 * checkpoint_segments + 1
ARQUITECTURA DEL LOG DE
TRANSACCIONES (3)
TAMBIEN CONOCIDO COMO LOG REDO O LOG DE TRANSACCIONES
y Fue introducido desde PostgreSQL 7.1
CHECKPOINT garantizan que todo los cambios realizados
por las transacciones han sido llevados a disco duro (Flush
del WAL). Tambin escribe un registro en WAL que indica
que todo segmento anterior a l puede ser borrado o
reciclados.
* checkpoint_segments
* checkpoint_timeoout
* SQL CHECKPOINT
* full_page_written por defecto ON
ARQUITECTURA DEL LOG DE
TRANSACCIONES (4)
ESCRITURA SINCRONA Y ASINCRONA
synchronous_commit.

wal_writter_delay
Intervalo entre
flushing del
buffer de WAL al
disco.
ARQUITECTURA DE PROCESAMIENTO DE
CONSULTAS

1
EL CAMINO DE UNA CONSULTA
ARQUITECTURA DE PROCESAMIENTO DE
CONSULTAS (2)

2
EL CAMINO DE UNA CONSULTA
ARQUITECTURA DE PROCESAMIENTO DE
CONSULTAS (3)

3
EL CAMINO DE UNA CONSULTA
ARQUITECTURA DE PROCESAMIENTO DE
CONSULTAS (4)

ANALIZE
VACUUM ANALIZE

4 No hay
planes q se
ejecuten en
paralelo en
PostgreSQL

EL CAMINO DE UNA CONSULTA


ARQUITECTURA DE PROCESAMIENTO DE
CONSULTAS (5)

5
EL CAMINO DE UNA CONSULTA
ARQUITECTURA DE OBJETOS
SCHEMA: contienen una coleccin de objetos: tablas,
funciones, vistas, tipos de datos, etc. Una base de datos
puede contener uno o ms esquemas. Por defecto las
tablas (y otros objetos) se ponen automticamente en un
esquema denominado "pblico". Cada nueva base de
datos contiene ese esquema. El usuario puede crear
esquemas. Desde la perspectiva de seguridad todos los
objetos creados dentro de un esquema pertenecen a l.
De forma predeterminada, los usuarios no pueden tener
acceso a los objetos de los esquemas que no poseen.
Para permitir el propietario del esquema debe otorgar el
privilegio para usar el esquema a los dems usuarios.
Para permitir a los usuarios que utilicen los objetos del el
esquema, privilegios adicionales podran necesitarse que
se otorgaran, Tomando en Cuenta si es apropiado para el
objeto.
ARQUITECTURA DE OBJETOS (2)
VISTAS
Existen dos tipos de vistas
No materializadas => definida a partir de una consulta. En
cambio, la consulta se ejecuta cada vez que se hace referencia
a la vista en una consulta.
Materializadas => define a partir de una consulta y permite que
la vista se rellene con datos en el momento en que se emiti su
ejecucin. Es similar a CREATE TABLE AS
ARQUITECTURA DE OBJETOS (3)
PostgreSQL implementa la herencia de tablas, que puede ser una
herramienta til para los diseadores de bases de datos; esto es
permitido debido a que PostgreSQL es un gestor relacional orientado a
objetos.
CREATE TABLE cities ( En este caso, la tabla capitales
name text, hereda todas las columnas de
population float, la tabla principal (ciudades). La
altitude int -- in feet);
tabla capitales tambin tienen
una columna adicional (estado)
CREATE TABLE capitals (
que muestra su estado.
state char(2)
) INHERITS (cities);
ARQUITECTURA DE OBJETOS (4)
PARTICIONES
Particionamiento se refiere a la divisin de lo que es lgicamente una tabla
grande en pedazos ms pequeos fsicamente. Actualmente, PostgreSQL soporta
particiones mediante herencia de tablas. Cada particin debe ser creada como
una tabla hija de una nica tabla padre. La tabla padre existe slo para
representar a todo el conjunto de datos, mientras que las tablas hijas no poseen
atributos pero en ellas se generan las restricciones de rangos. Usted debe estar
familiarizado con la herencia antes de intentar configurar particiones.
Las siguientes formas de particionamiento pueden ser implementadas en
PostgreSQL:
Particionamiento Range: La tabla se divide en "rangos", definidos por una
columna de clave o un conjunto de columnas. Por ejemplo, uno podra
particionar en intervalos de tiempo, o en rangos de identificadores para
determinados objetos de negocio.
Particionamiento de lista: La tabla se divide en forma explcita en el listado
de valores clave que aparecen en cada particin.
ARQUITECTURA DE OBJETOS (5)
TABLESPACE O ESPACIOS DE TABLA
Los espacios de tabla en PostgreSQL permiten a los administradores de
bases de datos definir las ubicaciones en el sistema de archivos donde
se almacenan los archivos que representan objetos de la base. Una vez
creado, un espacio de tabla puede ser referido por su nombre al crear
objetos de base de datos. Dos espacios de tablas se crean
automticamente cuando se inicia el clster de base de datos. El espacio
de tablas pg_global se utilizan para los catlogos del sistema
compartidos. El espacio de tablas pg_default es el espacio de tabla por
omisin del template1 y template0 de bases de datos (y, por lo tanto,
ser el espacio de tabla por defecto para otras bases de datos. La
creacin del espacio de tabla en s debe hacerse como superusuario de
base de datos
ARQUITECTURA DE OBJETOS (6)
INDICES
Todos los ndices en PostgreSQL son lo que se
conoce tcnicamente como ndices
secundarios, es decir, el ndice se encuentra
fsicamente separado del archivo de la tabla
que describe. Cada ndice se almacena con su
propia relacin fsica y as se describe por una
entrada en el catlogo pg_class. El contenido
de un ndice est enteramente definido bajo el
control de su mtodo de acceso al ndice. En la
prctica, todos los mtodos de acceso de ndice
dividen los ndices en pginas de tamao
estndar para que puedan utilizar el
almacenamiento regular y el administrador de
bfer para acceder al contenido del ndice.
ARQUITECTURA DE OBJETOS (7)
VACUUM
El VACUUM reclama el almacenamiento ocupado por las tuplas muertas.
En funcionamiento normal en PostgreSQL, las tuplas que se eliminan u
obsoletas por una actualizacin no se eliminan fsicamente de su tabla,
sino que siguen presentes hasta que se haga el vacuum (vaco). Por lo
tanto es necesario hacer el VACO peridicamente, especialmente en
tablas de actualizacin frecuente.
ARQUITECTURA DE MEMORIA
El STORAGE MANAGER es el encargado de administrar la
memoria, administracin del buffer, archivos, bloqueos y
control de la consistencia de la informacin.
Entre las funciones del STORAGE MANAGER est proveer
Memoria Compartida a los que sirve a los buffers y para el
acceso a la base de datos.

Sistema V IPC
ARQUITECTURA DE MEMORIA (2)

SHARED_BUFFERS

shmma
x
ARQUITECTURA DE MEMORIA (3)
USO DE MEMORIA
BASE DE DATOS DEL SISTEMA
TEMPLATE1: CREATE DATABASE realmente funciona copiando una base de
datos existente. Por defecto, copia de la base de datos del sistema estndar
llamado template1. Por lo tanto esta base de datos es la "plantilla" del cual se
hacen nuevas bases de datos. Si usted agrega objetos a template1, estos
objetos sern copiados a las bases de datos de usuario que se creen
posteriormente.
TEMPLATE0: Hay una segunda base de datos del sistema estndar llamada
template0. Esta base de datos contiene los mismos datos que el contenido
inicial de template1, es decir, slo los objetos estndar predefinidos por su
versin de PostgreSQL. Template0 nunca debe ser cambiada despus que el
cluster de base de datos se haya inicializado.
POSTGRES: La base de datos postgres tambin se crea cuando se inicializa un
clster de bases de datos. Esta base de datos pretende ser una base de datos
por defecto para los usuarios y las aplicaciones para conectarse. Es simplemente
una copia de template1 y se puede quitar y volver a crear si es necesario.
BASE DE DATOS DEL SISTEMA (2)
CATALOG
O
DEL
SISTEMA
MODELOS DE RESPALDO Y
RESTAURACIN
SQL DUMP (VOLCADO)
La idea detrs de este mtodo de volcado
es generar un archivo de texto con los
comandos SQL que, cuando se alimente
de nuevo al servidor, este volver a crear
la base de datos (una base de datos
en particular) en el mismo estado en que
se encontraba en el momento del volcado.
PostgreSQL proporciona el programa de
utilidad pg_dump para este propsito.
MODELOS DE RESPALDO Y
RESTAURACIN (2)

COPIA DE SEGURIDAD A NIVEL DE SISTEMA DE ARCHIVOS


Una estrategia de copia de seguridad alternativa es copiar
directamente los archivos que PostgreSQL usa para almacenar los
datos en la base de datos (dichos archivos se encuentran en el
directorio que se especific al momento de instalar el clster de base
de datos). Usted puede utilizar cualquier mtodo que prefiera para
hacer copias de seguridad del sistema de archivos, por ejemplo:
tar -cf backup.tar / usr / local / pgsql / data
MODELOS DE RESPALDO Y
RESTAURACIN (3)
ARCHIVADO CONTINUO Y RECUPERACIN POINT-IN-
TIME (PITR)

En todo momento, PostgreSQL mantiene una write ahead log


(WAL) en el pg_xlog / subdirectorio del directorio de datos del
clster. El log registra cada cambio realizado en los archivos
de datos de la base de datos. Este registro existe
principalmente para fines de seguridad de choque: si el
sistema se bloquea, la base de datos se pueden restaurar a la
consistencia en que quedo, "reproduciendo" las entradas del
registro realizadas desde el ltimo punto de control. Sin
embargo, la existencia del registro hace que sea posible elpg_basebackup
uso de una tercera estrategia de copias de seguridad de
bases de datos: podemos combinar un backup del nivel de
sistema de archivos con un backup de los archivos de WAL.
MODELOS DE RESPALDO Y
RESTAURACIN (4)
Para configurar este tipo de backup debemos
modificar el archivo postgresql.conf los
parmetros de archive_command, wal_level
= archive, archive_mode = on,
max_wal_senders >= 1, pg_hba.conf y
reiniciar el servidor
DESCRIPCIN DEL NEGOCIO
La base de datos a implementar es adquirida de un trabajo de
graduacin de la Facultad de Ingeniera de Sistemas
Informticos de la Universidad de El Salvador; cuyo ttulo es:
Sistema Informtico para la gestin de procesos de la unidad
de transporte y combustible del Ministerio de Gobernacin
ao de realizacin 2011. El sistema informtico desarrollado
tiene como abreviatura SIGEP.
La institucin que solicito los requerimientos fue el ministerio
de gobernacin. La unidad en la cual se desarrollara el
trabajo fue la UNIDAD DE TRANSPORTE Y COMBUSTIBLE. Dicha
unidad es la encargada de realizar diversos procesos en
conjunto con las entidades (Correos de El Salvador, Cuerpo
de Bomberos, Imprenta Nacional, Proteccin Civil y Otros)
que se encuentran realizando sus gestiones en todo el
pas, adems la UTYC controla el recurso de combustible
para todos los equipos ya sean vehculos automotores o
accesorios que requieren este servicio, para que los
empleados puedan realizar sus actividades laborales sin
presentar atrasos.
DESCRIPCIN DE LA BASE DE DATOS
IMPLEMENTADA
La base de datos SIGEP contiene 65 tablas , 42 sequencias, 5
funciones, 5 triggers y 5 funciones de triggers. Por lo cual
describiremos ciertos objetos.
Nombre Funcin Objetivo
fn_registrar_audito Registra el detalle de auditoria para cada usuario.
ria Almacena informacin referente a las modificaciones
realizadas por los usuarios durante el periodo de sesin.
fn_registrar_ingres Registra el inicio de sesin del usuario desde la aplicacin
o de php.
fn_registrar_salida Registra la finalizacin de sesin del usuario desde la
aplicacin php.
fn_insertar_discup Ingresa el registro de los cupones otorgados a cada
on vehiculo y el estado de los mismo. Adems modifica el
estado de las requisiciones otorgadas a una entidad y el
rango de cupones otorgados a la misma.
fn_eliminar_discup Elimina el detalle de cupn asignado a cada vehculo y
DESCRIPCIN DE LA BASE DE DATOS
IMPLEMENTADA
Nombre del Trigger
(2) Objetivo Tabla que
Modifica
tr_tb_acta_traslado Ayudar en la auditora de la BD, sobre cual usuario tb_auditoria_
autorizo el traslado de vehculos a otras db
entidades.
tr_tb_bitacora Ayudar en la auditora de la BD, a controlar las tb_auditoria_
bitcoras que registran los usuarios sobre el db
itinerario asignado
tr_tb_entregado_requisi Ayudar en la auditora de la BD, a monitorear la tb_auditoria_
cion cantidad de cupones entregados a una entidad db
especifica de un tipo de combustible. Y que
usuario fue el responsable de hacerlo
tr_tb_detalle_liquidacio Ayudar en la auditora de la BD, a conocer los tb_auditoria_
n detalles de factura realizados por el intercambio db
de los cupones otorgados
tr_tb_grupo_roles Ayudar en la auditora de la BD, a verificar que tb_auditoria_
usuario modifico los permisos de roles en la db
aplicacin
tr_tb_grupo_proceso Ayuda en la auditora de la BD, a verificar que tb_auditoria_
DESCRIPCIN DE LA BASE DE DATOS
IMPLEMENTADA (3)

UN NUEVO TABLESPACE SEGURIDAD A NIVEL DE


DENOMINADO DISCO_2 USUARIOS Y ROLES
INSTALACIN
POSTGRESQL 9.3 FUE INSTALADO EN DEBIAN 7.2 GNU/LINUX y en WINDOWS SERVER 2008
R2 STANDAR EDITION en ambos sistemas operativos se instal de manera desatendida y por
medio de un archivo de configuracin y utilizando en cada caso la respectiva consola de
administracin
Bsicamente para realizar la instalacin debemos de estar dentro de la carpeta donde se
encuentra el paquete de instalacin en nuestro caso postgresql-9.3.1-1-windows-x64.exe
WINDOWS y postgresql-9.3.1-1-linux-x64.run en el caso de DEBIAN y colocando la opcin
--optionfile config.txt se ejecuta el archivo de configuracin
DEBIAN WINDOWS
mode=unattended mode=unattended
superaccount=postgreCL012013 superaccount=postgreCL01
superpassword=clustpgba2013 2013
servicename=Cluster01pg9.3.1 superpassword=clustpgba2
serverport=5432 013
prefix=/usr/local/PostgreSQL/9.3 servicename=Cluster01pg9.
datadir=/usr/local/PostgreSQL/9.3/d 3.1
ata serverport=5432
CONFIGURACIN
La configuracin se realiz por medio de dos archivos los cuales son:
Archivo postgresql.conf: Es el principal archivo de configuracin que
determina como funciona PostgreSQL. Los parmetros modificados
dentro de postgresql.conf fueron los siguientes:

listen_addresses= '*' checkpoint_segment = 10


max_connections = 22 checkpoint_timeout = 900
superuser_reserved_connections effective_cache_size (8KB)= 580MB
=2 log_line_prefix = '%t:%r:%u@
shared_buffers (8KB)= 512MB %d[%p]: ' timestamp, hostIP, user,
work_mem (KB)= 5MB database, PID
mantenience_work_mem = log_statement = 'DDL'
256MB Autovacuum = on
synchronous_commit = on
CONFIGURACIN (2)
La configuracin se realiz por medio de dos archivos los cuales
son:
Archivo pg_hba.conf
El archivo hba (host based authentication: autenticacion basada en
host) le dice al servidor PostgreSQL como autenticar usuarios,
basado en una combinacin de su localizacin, tipo de
autenticacin y la base de datos que desea acceder. Ahora
veremos cmo permitir conexiones remotas, primero recordemos
que listen_adress permita IP que nosotros sabes q son remotas,
luego abrimos pg_hba.conf y agremos la siguiente linea.
host all all 0.0.0.0/0 md5
ADMINISTRACIN
Labase de datos SIGEP contiene los siguientes scripts, los
cuales denotan la estructura de la base, los privilegios y
usuarios, los triggers, las funciones y la data.
ADMINISTRACIN (2)
Para administrar la base de dato nos auxiliamos de la
herramienta pgAdmin y de algunas vistas que permiten
realizar el monitoreo de la base de datos como:
Vista Que realiza
pg_roles: Informacin sobre todos los roles y usuarios definidos en la
base de datos.
pg_database Informacin sobre todas las bases de datos definidas en nuestro
sistema.
pg_stat_activity Informacin sobre todos los procesos clientes conectados a la
base de datos.
pg_stat_database Informacin global de uso de todas las bases de datos.
pg_stat_user_table Informacin de uso de todas las tablas de usuario en una base
s de datos
pg_statio_user_tab Informacin de acceso a disco y memoria cache de todas las
HERRAMIENTA DE ADMINISTRACIN
PGADMIN III

CARGA MASIVA DE DATOS


Superusuario de BD
checkpoint_segment = 100
Autovacuum = off
wal_level = minimal
archive_mode = of
max_wal_sender = 0
Quitar ndices y Constraints
PREGUNTAS Y RESPUESTAS

You might also like