Conferencia 1 Intro Arquitectura Instalacion-u1

74
Ing. Diego Palacios C.    dpalaciosdev@g mail.com UNIDAD 1. PostgreSQL CONFERENCIA 1. Introducción, Arquitectura, Instalación y Configuración. http://www.postgresql.org

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