Conferencia 1 Intro Arquitectura Instalacion-u1
-
Upload
elvis-enrique -
Category
Documents
-
view
11 -
download
0
Transcript of Conferencia 1 Intro Arquitectura Instalacion-u1
-
Ing. Diego Palacios C. [email protected]
UNIDAD 1. PostgreSQL
CONFERENCIA 1. Introduccin, Arquitectura,
Instalacin y Configuracin.
http://www.postgresql.org
-
Ing. Diego Palacios C. [email protected]
INTRODUCCION
-
INTRODUCCIN A POSTGRESQL
Ing. Diego Palacios C. - PostgreSql Administration Specialist 3
PostgreSQL es un sistema de gestin de bases de datos objeto-relacional, distribuido bajo licencia BSD (Berkeley Software Distribution ) y con su cdigo
fuente disponible libremente.
Es el sistema de gestin de bases de datos de cdigo abierto ms potente del mercado y en sus ltimas versiones no tiene nada que envidiarle a otras bases
de datos comerciales.
PostgreSQL utiliza un modelo cliente/servidor Usa multiprocesos en vez de multihilos para garantizar la estabilidad del sistema.
-
UN POCO DE HISTORIA
Ing. Diego Palacios C. - PostgreSql Administration Specialist 4
1977-1985 Michael Stonebraker inicia postgreSQL como Ingres en la
Universidad de Berkeley, California.
1986, comprado por Computer Associates.
1989, Liberada la primera versin como Postgres.
1994-95 dos estudiantes graduados de Berkeley Jolly Chen y Andrew
Yu aaden SQL a Postgres y lo llaman Postgres95.
1996, (1000 colaboradores) Se decidi quitar el 95 al nombre para
liberarse de la cronologa y nace PostgreSQL.
-
UN POCO DE HISTORIA
Ing. Diego Palacios C. - PostgreSql Administration Specialist 5
-
CARACTERISTICAS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 6
PORTABLE
Escrito en ANSI C.
Compatible con Windows, Linux, Mac OS / X y las principales
plataformas UNIX.
CONFIABLE:
ACID(Atomicidad, Concurrencia, Aislamiento, Durabilidad)
Soporta transacciones.
Soporta Savepoints (Puntos de recuperacin)
Usa Write Ahead Logging
ESCALABLE
Usa el Control de Concurrencia Multiversin.
Soporta Tablespaces
-
CARACTERISTICAS
Ing. Diego Palacios C. - PostgreSql Administration
Specialist 7
SEGURO
Emplea Host-Based Access Control
Provee Object-Level Permissions
SSL
DISPONIBLE
Replicacin de apoyo
Soporte para alta disponibilidad
AVANZADO
Full Text Search
Soporta Triggers y Funciones
-
CARACTERISTICAS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 8
Soporta lenguajes Procedimentales
PL/pgSQL
PL/Perl
PL/TCL
PL/PHP
-
MULTI-VERSION CONCURRENCY CONTROL
(MVCC)= ALTA CONCURRENCIA
Ing. Diego Palacios C. - PostgreSql Administration Specialist 9
Mediante un sistema denominado MVCC (Acceso concurrente multiversin) PostgreSQL permite que mientras un proceso escribe en
una tabla, otros accedan a la misma tabla sin necesidad de bloqueos.
Cada usuario obtiene una visin consistente de lo ltimo a lo que se le
hizo commit. Esta estrategia es superior al uso de bloqueos por tabla o
por filas comn en otras bases, eliminando la necesidad del uso de
bloqueos explcitos.
-
WRITE AHEAD LOGS (WAL)
Ing. Diego Palacios C. - PostgreSql Administration Specialist 10
Registra cada una de las transacciones como es el caso de insertar /
actualizar / eliminar antes de que realmente
se lleva a cabo el proceso.
El sistema no con considera un dato guardado hasta que ste se
escriba en el disco.
Proporciona la recuperacin en caso de accidente o falla del sistema
-
LIMITACIONES
Ing. Diego Palacios C. - PostgreSql Administration Specialist 11
Lmite Valor
Mximo tamao base de dato Ilimitado (Depende de tu
sistema de almacenamiento)
Mximo tamao de tabla 32 TB
Mximo tamao de fila 1.6 TB
Mximo tamao de campo 1 GB
Mximo numero de filas por
tabla Ilimitado
Mximo numero de columnas
por tabla
250 - 1600 (dependiendo del
tipo)
Mximo numero de indices por
tabla Ilimitado
-
Ing. Diego Palacios C. [email protected]
ARQUITECTURA
-
ARQUITECTURA
Ing. Diego Palacios C. - PostgreSql Administration Specialist 13
-
ARQUITECTURA
Ing. Diego Palacios C. - PostgreSql Administration Specialist 14
Aplicacin cliente: Esta es la aplicacin cliente que utiliza PostgreSQL como administrador de bases de datos (PgAdmin III).
Proceso postmaster: Escucha por un puerto/socket las conexiones entrantes de clientes. Tambien es el encargado de crear los procesos hijos que se encargaran de autentificar estas peticiones, gestionar las consultas y mandar los resultados a las aplicaciones clientes.
Archivos de configuracion: Los 3 archivos principales de configuracin utilizados por PostgreSQL, postgresql.conf, pg_hba.conf y pg_ident.conf.
-
ARQUITECTURA
Ing. Diego Palacios C. - PostgreSql Administration Specialist 15
Procesos hijos postgres: Procesos hijos que se encargan de
autentificar a los clientes, de gestionar las consultas y mandar los
resultados a las aplicaciones clientes.
PostgreSQL share buffer cache: Memoria compartida usada por
PostgreSQL para almacenar datos en cach.
Write-Ahead Log (WAL): Componente del sistema encargado de
asegurar la integridad de los datos (recuperacin de tipo REDO)
Kernel disk buffer cache: Cach de disco del sistema operativo.
Disco: Disco fsico donde se almacenan los datos y toda la informacin
necesaria para que PostgreSQL funcione.
-
ARQUITECTURA
Ing. Diego Palacios C. - PostgreSql Administration Specialist 16
CLUSTER
Un cluster de base de datos es un conjunto de base de datos que son
administradas en una sola instancia de servidor y residiran en un
directorio de datos (/opt/PostgreSQL/8.4/data).
Un proceso Postmaster corresponde a un puerto de un Cluster.
-
DIRECTORIO DE INSTALACION
Ing. Diego Palacios C. - PostgreSql Administration Specialist 17
Directorio de Instalacin (/opt/PostgreSQL/8.4/)
bin (servicios, dll) doc
(documentacion) include (libreras de PostgreSQL para esteblecer conexin libpq)
lib share
-
DIRECTORIO DE DATOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 18
DATA
GLOBAL (parametros
de configuraci
n)
BASE (bases de
datos)
Pg_tblspc (Contiene links a los directorios
de los tablespace)
Pg_XLOG Pg_CLOG
PostgreSQL.CONF, POSTMASTER.PID, POSTMASTER.OPTS, pg_HBA..CONF, pg_IDENT.CONF
-
ESTRUCTURA DE OID
Ing. Diego Palacios C. - PostgreSql Administration Specialist 19
Cada base de datos es un directorio que contiene uno o varios archivos
por cada tabla o indice creado, estos archivos llegan a un maximo de
1GB si sobrepasan estre valors seran fragmentados.
Cada tabla o inidce se almacena en un Tablespace.
PostgreSQL administra links a otros directorios donde se encunetren
los Tablespace.
Por defecto, los indices son almacenados en el mismo tablespace.
-
ESTRUTURA DE UNA BASE DE
DATOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 20
-
Ing. Diego Palacios C. [email protected]
INSTALACION
-
INSTALACION
Ing. Diego Palacios C. - PostgreSql Administration Specialist 22
USUARIOS Y PERMISOS DEL SISTEMA OPERATIVO
PostgreSQL se ejecuta como un demonio (Unix / Linux) o
servicio(Windows).
Tanto los procesos y archivos de datos de PostgreSQL deben
pertenecer aun usuario en el sistema operativo.
Por esta razn el usuario del SO no debe ser administrador.
-
INSTALACION EN LINUX
Ing. Diego Palacios C. - PostgreSql Administration Specialist 23
En este link podemos encontrar los instaladores de PostgreSQL:
http://www.enterprisedb.com/products-services-training/pgdownload
-
INSTALACION PASO 1
Ing. Diego Palacios C. - PostgreSql Administration Specialist 24
Copiar el instalador en la carpeta /opt y lo ejecutamos
-
INSTALACION PASO 2
Ing. Diego Palacios C. - PostgreSql Administration Specialist 25
Empezamos la instalacin.
-
INSTALACION PASO 3
Ing. Diego Palacios C. - PostgreSql Administration Specialist 26
Directorio de Instalacin
-
INSTALACION PASO 4
Ing. Diego Palacios C. - PostgreSql Administration Specialist 27
Directorio de Datos
-
INSTALACION PASO 5
Ing. Diego Palacios C. - PostgreSql Administration Specialist 28
Contrasea del superusuario.
-
INSTALACION PASO 6
Ing. Diego Palacios C. - PostgreSql Administration Specialist 29
Configuracin del Puerto.
-
INSTALACION PASO 7
Ing. Diego Palacios C. - PostgreSql Administration Specialist 30
Configuracin Regional
-
INSTALACION PASO 8
Ing. Diego Palacios C. - PostgreSql Administration Specialist 31
Ingresar a PGAdmin III
-
INSTALACION PASO 9
Ing. Diego Palacios C. - PostgreSql Administration Specialist 32
Configurando las variables de entorno, para esto abrimos un terminal dentro de un usuario que no sea administrador y escribimos el siguiente comando:
vi ~/.bash_profile
Y aparece algo como esto, y agregamos lo que se encuentra marcado:
-
SERVICIOSDE POSTGRESQL
Ing. Diego Palacios C. - PostgreSql Administration Specialist 33
pg_ctl start [] Start the server
pg_ctl stop [] Stop the server
pg_ctl restart [] Stop then start the server
pg_ctl status [] Display server status
pg_ctl reload [] Reload the configuration file
-
PARAMETROS DE PG_CTL
Ing. Diego Palacios C. - PostgreSql Administration Specialist 34
-D - Database cluster directory
-l - Write log output to the specified file
-m smart Wait for clients to disconnect (default)
-m fast Active tx rolled back and clients Disconnected
-m immediate Abort processes without clean shutdown
-
CONFIGURACION
Ing. Diego Palacios C. - PostgreSql Administration Specialist 35
SETEO DE PARAMETROS
En el archivo de configuracin postgresql.conf podemos setear los
valores de cada parametro que pueden ser de los siguientes tipos de
datos: boolean, integer, floating point, o string. Algunos parametros
requieren el reincio o reload del servicio.
Existe un solo archivo postgresql.conf por cada cluster.
-
PARAMETROS DE CONEXION
Ing. Diego Palacios C. - PostgreSql Administration Specialist 36
listen_addresses (string)
Specifies the TCP/IP address(es) on which the server is to listen for
connections
port (integer)
The TCP port the server listens on; 5432 by default.
max_connections (integer)
Determines the maximum number of concurrent connections to the
database server
-
PARAMETROS DE SEGURIDAD Y
AUTENTICACIN
Ing. Diego Palacios C. - PostgreSql Administration Specialist 37
authentication_timeout (integer)
Maximum time to complete client authentication, in seconds
ssl (boolean)
Enables SSL connections.
-
PARAMETROS DE MEMORIA
Ing. Diego Palacios C. - PostgreSql Administration
Specialist 38
shared_buffers (integer)
Sets the amount of memory the database server uses for shared memory buffers.
temp_buffers (integer)
Sets the maximum number of temporary buffers used by each database session.
work_mem (integer)
Specifies the amount of memory to be used by internal sort operations and hash tables before switching to temporary disk files.
maintenance_work_mem (integer)
Specifies the maximum amount of memory to be used in maintenance operations, such as VACUUM, CREATE INDEX, and ALTER TABLE ADD FOREIGN KEY.
-
LOGGING
Ing. Diego Palacios C. - PostgreSql Administration Specialist 39
La palabra log es un trmino anglosajn equivalente a
la palabra bitcora en la lengua castellana.
log_destination = Por defecto toda la salida de log de Postgres es
llevada a stderr. Desde aqu es llevada hacia los archivos de log. En
este parmetro puede ser cambiarse a syslog en linux y eventlog en
windows, entre otros y se puede fijar varios separados por comas.
Entre syslog y stderr ES PREFERIBLE el ltimo ya que brinda
informacin ms detallada que la que es llevada a syslog.
-
LOGGING
Ing. Diego Palacios C. - PostgreSql Administration Specialist 40
redirect_stderr = off Permite la captura de stderr y su direccin a los archivos de log. Esto es til para poder capturar los errores de
extensiones de terceros a postgres integrados con el DBMS como
bibliotecas enlazadas dinmicamente.
log_directory = pg_log Cuando esta habilitado redirect_stderr, esta opcin indica el directorio que contendr los archivos de log. Puede ser
especificado absoluto o relativo al directorio de trabajo.
-
LOGGING
Ing. Diego Palacios C. - PostgreSql Administration Specialist 41
log_filename = postgresql-%Y-%m-%d_%H%M%S.log Cuando esta habilitado redirect_stderr, esta opcin indica el formato de nombre
de archive utilizado para logear.
log_rotation_size = 10MB Setea el tamao mximo en kilobytes que puede tener un archive de log. Alcanzada esta cantidad, se forza la
creacin de un nuevo archivo de log. Estando en cero, se asume
ilimitado. Es poco recomendable dejar elarchivo sin lmite de espacio
puesto que en teora podra generar un archivo ms grande que lo que
permite el sistema de archivo, haciendo colapsar el mdulo de log.
-
CUANDO LOGEAR?
Ing. Diego Palacios C. - PostgreSql Administration Specialist 42
DEBUG5 DEBUG4 DEBUG3 DEBUG2 DEBUG1 Mensajes de debug utilizados por los desarrolladores de PostgreSQL. Habilitar esta opcin no tiene mucho sentido para usuarios comunes y bajar desempeo del motor considerablemente dada la cantidad de informacin generada.
NOTICE Provocado por un componente de software de Postgres, un script o cualquier otro componente. Se asume como un aviso, sin carcter nocivo.
WARNING Algn evento ocurrido ha realizado una operacin que no esta del todo bien. Suele darse en sentencias SQL cuya sintaxis no es perfecta, pero puede ser corregida.
ERROR Evento irreparable que provoca que el comando ejecutado y la actividad que se este realizando se lleve a cabo. Dentro de los scripts se conoce como Exception.
FATAL Error en una sesin del DBMS que provoca la terminacin inmediata de esta.
PANIC Error de la mayor gravedad que provoca la terminacin inmediata de todo elDBMS, matando todas las sesiones en todas las BdD.
-
CUANDO LOGEAR?
Ing. Diego Palacios C. - PostgreSql Administration Specialist 43
log_min_duration_statement = -1 De estar seteado en un valor
mayor que cero, indica la duracin mnima que debe tener una consulta
en milisegundos para que sea logeada. Este parmetro funciona en
combinacin con log_min_error_statement.
-
QUE LOGEAR?
Ing. Diego Palacios C. - PostgreSql Administration Specialist 44
log_connections = off De estar habilitado, logea cada conexin
exitosa realizada al servidor.
log_disconnections = off De estar habilitado, logea cada
desconexin del servidor.
log_duration = off De estar habilitado logea la duracin de cada
consulta SQL realizada.
-
CREANDO Y ADMINISTRANDO UNA
BASE DE DATOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 45
-
QUE ES UNA BASE DE DATOS EN
POSTGRESQL
Ing. Diego Palacios C. - PostgreSql Administration Specialist 46
Una base de datos es una coleccin de objetos SQL. Se trata de una
coleccin de esquemas y los esquemas contienen las tablas, funciones,
etc.
Las Bases de datos se crean con la sentencia CREATE
DATABASE y se destruyen con elComando DROP DATABASE.
Para determinar el conjunto de Base de datos existentes podemos
hacer un: SELECT datname FROM pg_database;
-
SCHEMA SEARCH PATH
Ing. Diego Palacios C. - PostgreSql Administration Specialist 47
EL esquema por defecto en una base de datos es public.
SHOW search_path;
SET search_path TO myschema, public;
-
OBJECT OWNERSHIP
Ing. Diego Palacios C. - PostgreSql Administration Specialist 48
-
PGADMIN III
Ing. Diego Palacios C. - PostgreSql Administration Specialist 49
-
ERRORES FRECUENTES DE CONEXION
Ing. Diego Palacios C. - PostgreSql Administration Specialist 50
Could not connect to Server: Servicio no disponible.
FATAL: no pg_hba.conf entry, listas de acceso no existen o
desconfiguradas.
-
PROPIEDADES DEL SERVIDOR
Ing. Diego Palacios C. - PostgreSql Administration Specialist 51
-
ACCEDIENDO A LA INFORMACION
Ing. Diego Palacios C. - PostgreSql Administration Specialist 52
-
FILTRANDO DATOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 53
-
HERRAMIENTA DE EDICION DE DATOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 54
-
ORDEN Y FILTRO DE DATOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 55
-
HERRAMIENTA DE CONSULTAS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 56
-
DATA OUTPUT
Ing. Diego Palacios C. - PostgreSql Administration Specialist 57
-
EXPLAIN
Ing. Diego Palacios C. - PostgreSql Administration Specialist 58
-
MENSAJES
Ing. Diego Palacios C. - PostgreSql Administration Specialist 59
-
HISTORY
Ing. Diego Palacios C. - PostgreSql Administration Specialist 60
-
CREANDO UNA BASE DE DATOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 61
-
REPORTES DE BASE DE DATOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 62
-
BACKUP Y RESTORE
Ing. Diego Palacios C. - PostgreSql Administration Specialist 63
-
ESQUEMAS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 64
-
DOMINIOS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 65
-
FUNCIONES
Ing. Diego Palacios C. - PostgreSql Administration Specialist 66
-
SECUENCIAS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 67
-
TABLAS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 68
-
TABLAS - COLUMNAS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 69
-
RESTRICCIONES
Ing. Diego Palacios C. - PostgreSql Administration Specialist 70
-
TRIGGERS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 71
-
VISTAS
Ing. Diego Palacios C. - PostgreSql Administration Specialist 72
-
TABLESPACES
Ing. Diego Palacios C. - PostgreSql Administration Specialist 73
-
FIN
Ing. Diego Palacios C. - PostgreSql Administration Specialist 74