Sie sind auf Seite 1von 38

Sistema Gestor de Base

de Datos (POSTGRESQL).

CARACTERISTICAS GENERALES DEL GESTOR.


Soporta distintos tipos de datos.
Incluye herencia entre tablas, por lo que a este gestor de bases de datos se le incluye entre
los gestores objeto-relacionales.
Copias de seguridad en caliente (Online/hot backups)
Regionalizacin por columna
Multi-Version Concurrency Control (MVCC)
Multiples mtodos de autentificacin
Acceso encriptado va SSL
SE-postgres
Completa documentacin
Licencia BSD
Disponible para Linux, UNIX y Windows 32/64bit.

Ventajas

Desventajas

Ampliamente popular - Ideal


para tecnologias Web.
Fcil de Administrar.
Su sintaxis SQL es estndar y fcil
de aprender.
Footprint bajo de memoria,
bastante poderoso con una
configuracin adecuada.
Multiplataforma.
Capacidades de replicacin de
datos.
Soporte empresarial disponible.

Sin experticia, configurar llega a


ser un caos.
Es fcil de vulnerar sin proteccion
adecuada.
El motor MyISAM es instalado por
defecto y carece de
capacidades de integridad
relacional.
InnoDB genera mucho footprint
en memoria al indizar.
El toolset empresarial tiene un
costo adicional por suscripcin
anual.
Realizar revisiones llegar a ser
una labor manual y tediosa para
el DBA.
Reducida cantidad de tipos de
datos.

Caractersticas para la instalacin


Requisitos para PostgreSQL
Memoria RAM 2G
Disco duro
mas de 1 G
procesador
2 GHz

Comandos generales de alta y baja.


Existen dos tipos de comandos PostgreSQL:
Los que permiten crear y
definir nuevas bases de
datos, campos e ndices.

Los que permiten generar consultas


para ordenar, filtrar y extraer datos de
la base de datos.

CREATE .

SELECT.

DROP.

INSERT.

ALTER.

UPDATE.
DELETE.

PostgreSQL soporta un motor, por defecto su sistema de almacenamiento Postgres


(Postgres Storage System).
Los mdulos se programaron bajo 3
lineamientos bien claros:
Manejar transacciones sin cdigos
complejos.
Mantener versiones histricas de la
data.
Tomar las ventajas que ofrece el
hardware.

Los mdulos que componen el Storage


Manager son:
Transaction System.
Relational Storage.
Time Management.
Concurrency Control y Timestamp
Management.
Record Acces.

PostgreSQL se maneja por


medio de instancias. Una
instancia funciona como
un servicio que controla
todas las solicitudes de
aplicacin para trabajar
con datos de cualquiera
de las bases de datos
administradas por dicha
instancia.

Un proceso servidor postgres puede atender


exclusivamente a un solo cliente; es decir, hacen
falta tantos procesos servidor postgres como clientes
haya. El procesopostmaster es el encargado de
ejecutar un nuevo servidor para cada cliente que
solicite una conexin.

Demonio postmaster:
Este es el proceso principal de
PostgreSQL.
Es el encargado de escuchar por
un puerto/socket por conexiones
entrantes de clientes.
Crea procesos hijos encargados
de autentificar estas peticiones,
gestionar las consultas y mandar
los resultados a las aplicaciones
clientes.

El PPID 4526 nos est informando el proceso


principal que se abri contra el cluster. Tambin
nos esta informando la ruta de la ubicacin
fsica del PGDATA.
El PPID 4622 es el proceso de escritura sobre la
base.
El PPID 4623 es el proceso que escribe sobre la
WAL.
El PPID 4624 es el proceso de autovacuum y el
4635 es el recolector de estadsticas. Estos dos
procesos puede ser desactivados, pero no es
recomendable hasta el momento.

1) Libpq son responsables de manejar la comunicacin con los


procesos del cliente:
establecer la conexin al postmaster.
obtencin del hilo de rosca del servidor del postgre para la
sesin operacional.
2) El Servidor se compone de dos subsistemas:
el postmaster y el servidor del postgre.

3) El Store Manager es responsable de la gestin


de la memoria externa general y control de
recurso en el back-end, incluyendo la gerencia
de almacenador intermediario compartida, de
la gerencia de archivo, del control de la
consistencia y del encargado de la cerradura.

Nivel fsico.
Es como se guardan los datos en disco. Solo es
importante conocerlos si es DBA o desarrollador del
motor.

En un servidor se crean uno o varios clusters de bases de datos. La


estructura fsica de del cluster secrea con el programa initdb, con este
programa se determina la ubicacin fsica y el juego de caracteres.
En las instalaciones automticas a partir de paquetes (rpm, apt-get,
etc) o en Windows, se crea un cluster automticamente con tres bases
de datos, template0, template1 y postgres. El cluster secrea en un
directoriodatadentro del directorio donde se ha instalado postgres.
Normalmente, sedefine una variable de entorno,PGDATA que apunte al
directorio donde se crea el cluster.

Postgresql.conf: fichero de configuracin principal, contiene la


asignacin a los parmetros queconfiguran el funcionamiento del
servidor
pg_hba.conf : fichero de configuracin de la autenticacin de los
clientes y usuarios y del accesoa las bases de datos del cluster.
pg_ident.conf : fichero accesorio al anterior, determina como se
realiza la autenticacin ident que contiene la correspondencia
entre usuarios del Sistema Operativo y de PostgreSQL

G_VERSION: fichero de texto con la versin de software Postgres


que crea el cluster

Directorios
base: las plantillas y las bases de datos. contiene un directorio
por cada base de datos, dentro hayun fichero por cada tabla o
ndice de una base de datos, los nmeros corresponden a los
OIDs delas tablas o ndices.
Global: tablas e indices del catlogo comunes a todas las bases
de datos.
pg_log: ficheros de seguimiento del servidor. Se crea en la
versin de Windows, en la de Linux,se debe indicar al arrancar el
postmaster en qu fichero se hace el seguimiento.
pg_xlog: ficheros de diario del servidor (WAL).
pg_clog: ficheros de diario para las transacciones (estado de
cada transaccin).
pg_multixact: contiene datos sobre el estado multitransaccional, usado para los bloqueoscompartidos de filas.

Creacin del cluster de bases de datos:


initdb
Las opciones principales son:
-D directorio | --d=directorio: directorio donde se crea, si no se indica, usa lo que establezca
lavariable de entorno PGDATA
-E juego_caracteres | --e=juego_caracteres: si no se indica, coge el del SO
-U usuario | --u=usuario: superusuario del cluster
-W clave | --w=clave: establece la palabra de paso del superusuario del cluster

Sobre los temas de juego de caracteres y localizacin hay que tener presentes varias cosas:
1. Que el sistema operativo soporte dicha localizacin o codificacin
2. Una vez inicializado el cluster, las variables lc_collate y lc_ctype no se pueden cambiar.

La mayora de las bases de datos se almacenan en las llamadas memorias


secundarias, especialmente discos duros, aunque, en principio, pueden
emplearse tambin en otro medios de almacenamiento.

La unidad mnima de almacenamiento en PostgreSQL se


denomina, indistintamente, pgina (page) o bloque
(block).
El tamao de una pgina en PostgreSQL va dede los 8k
(por defecto) hasta un mximo de 32k y no se permite
que una tupla pueda ser mas grande que una pgina de
tamao.
Cuando se necesita guardar data muy grande la data es
comprimida y partida en pequeas filas que se
guardan en una tabla paralela, esto es transparente para
el usuario.

Un bloque (8K / 8192 bytes) est compuesto por diferentes


elementos:
Page_header: Cabecera de
bloque. Ocupa 24 bytes.
ItemId: Matriz de pares de valores
ItemId(offset,length) con la
informacin necesaria para
localizar los elementos (Items)
grabados en el bloque. Cada par
ocupa 4 bytes.
Item (row/index): Cabecera de
elemento ms los datos en si.
Tamao variable.
Espacio especial: Usado cuando
el bloque pertenece a un ndice.
Tamao variable

Vacuum
El vacuum es el proceso en el cual se eliminan definitivamente tuplas marcadas para
borrar y hay una reorganizacin de datos a nivel fsico.
Puede realizar vacuum utilizando el comando externo 'vacuumdb' y el cual puede recibir
parmetros para realizar los diferentes tipos de vaciamiento
Funciones:
Recuperar espacio en disco (filas modificadas o borradas)
Actualizar estadsticas
Evitar prdidas de datos antiguos por reus de identificador de transacciones
Ejecutar

desde S.O. o desde SQL


Sobre una tabla o sobre la base de datos

Opciones
FULL: libera y reorganiza
No FULL: solo libera
ANALYZE
FREEZE: inicializa XID (identif. transacciones)
Estrategias
Autovacuum

Este comando es muy til para automatizar vaciamientos a travs de cualquier sincronizador de
tareas (ya sea el cron de *nix u otro de Windows).
Asimismo, existe la opcin del Autovacuum, cuya funcionalidad es ir realizando de manera
paulatina la mantencin de nuestra base. Previamente y antes de activar esta funcionalidad,

Creacin de una base de datos


CREATE DATABASE ejercicio1;
\c ejercicio1

creacin de la base de datos

conectar a la base de datos ejercicio1

Create table productos ( id_producto int primary key, nombre varcahar(20), precio int);
creacin de la la tabla con los campos solicitados con llave primaria
Select * from productos;

visualizar la tabla

Create table empresa (id_productos int, id_empresa int, nombre varchar(30), constraint
fk_id_pro foreign key (id_producto) references productos (id_producto));
Insertar o rellenar
Insert into productos values(500,leche, 15);
Insert into productos values(300,arroz, 18);
Insert into productos values(800,galletas Ma, 10);

Insert into empresa values(500,005, lala);


Insert into empresa values(300,006, la costa);
Insert into empresa values(800,007, kukis);

Creacin de una base de datos


CREATE DATABASE ejer;
\c ejer;
ejer=# create tablespace space location 'C:/ejercicio';
CREATE TABLESPACE
ejer=# Create table productos ( id_producto int primary key, nombre varchar(20),
precio int) TABLESPACE space;
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"productos_pkey"
for table "productos"
CREATE TABLE

ejer=# select *from productos;


id_producto | nombre | precio
-------------+--------+-------(0 filas)

ejer=# Create table empresa (id_productos int, id_empresa int, nombre varchar(30
), constraint fk_id_pro foreign key (id_productos) references productos (id_pro
ducto)) TABLESPACE space;
CREATE TABLE
ejer=# Insert into productos values(500,'leche', 15);
INSERT 0 1
ejer=# Insert into productos values(300,'arroz', 18);
INSERT 0 1
ejer=# Insert into productos values(800,'galletas', 10);
INSERT 0 1
ejer=# Insert into empresa values(500,'005', 'lala');
INSERT 0 1
ejer=# Insert into empresa values(300,'006', 'la costa');
INSERT 0 1
ejer=# Insert into empresa values(800,'007', 'kukis');
INSERT 0 1

Cuando se disea una base de datos es necesario realizar una estimacin del
tamao que tendr la base de datos cuando este llena.
Esto ayudara a determinar la configuracin de hardware que se necesitar
para realizar lo siguiente:

Observar el rendimiento que necesitan las aplicaciones.


Asegurar la cantidad fsica adecuada de espacio en disco necesario para
almacenar los datos.

tamao de una tabla:

SELECT pg.relname AS "Tabla", pg_size_pretty((relpages*8)::bigint*1024) AS


"Tamao estimado" FROM pg_class pg where relname='tu tabla;
Tamao de todas las tablas (ordenadas)
SELECT relname as "Table", pg_size_pretty(pg_total_relation_size(relid)) As "Size",
pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as "External Size
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
tamao de la base de datos:
SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;
tamao de los tablespace:
SELECT spcname, pg_size_pretty(pg_tablespace_size (spcname)) FROM
pg_tableSpace;

En la investigacin realizada pudimos darnos cuenta que PostgreSQL es un


sistema objeto-relacional, ya que incluye caractersticas de la orientacin a
objetos. Algunas caractersticas de postgreSQL son que soporta distintos tipos de
datos, incorpora una estructura de datos array, incorpora funciones de diversa
ndole, incluye la herencia entre tablas, entre muchas mas. Es ideal para el
manejo de bases de datos dinmicas en la cual se podrn realizar consultas
espaciales. PostgreSQL tiene muchas ventajas como al ser libre puede instalarlo
ilimitadamente sin romper ninguna ley, tiene una gran estabilidad y cuenta con
una confiabilidad legendaria, es multiplataforma eso quiere decir que puede ser
utilizado en casi cualquier Unix para ser exacto 34 plataformas en la ultima versin
estable, esta diseado para ambientes de alto volumen, tiene herramientas
grficas y de diseo. Para finalizar les recomiendo que empiecen a utilizar
postgreSQL dado que tiene muchas caractersticas que lo hacen uno de los
mejores y sobre todo es la base de datos libre mas avanzada del mundo.

Das könnte Ihnen auch gefallen