Está en la página 1de 27

Tecnología de

Punta

Robusto

Calidad Mundial Introducción a Postgres


*
Cortesía de Systemhaus Wesfalia
Dinámico

Abierto

18/07/2011
Generalidades

Tecnología de


Punta
Fuente abierta
*
• Apoyada por grandes empresas

Robusto
Corre en muchas aplicaciones críticas
*
• Fácil instalación
Calidad Mundial
• Simple, flexible y segura
*
• Mitos: es “de juguete”, es inferior a Oracle, MS-
Dinámico SQL, Informix, MySQL
* • Hay que aprender (PgPSQL, fechas, funciones)
Abierto
• ayuda a comprensión experiencia en otras BDs
18/07/2011 2
Portabilidad

Tecnología de
Punta
Inicio
*
• Escrita en ANSI C
Robusto • Corre sobre
* – Windows
Calidad Mundial – Linux
*
– Mac OS/X
Dinámico
– UNIX
*

Abierto

3
Confiabilidad

Tecnología de
Punta
• cumple con ACID
Inicio
*
• Atomicidad: todo o nada (aunque HW, SO,
aplicación fallen)
Robusto
• Consistencia: BD pasa de un estado
*
consistente a otro (por ejemplo, con
Calidad Mundial integridad referencial u otros constraints)
* • Aislamiento: transacción ignora otras
Dinámico
transacciones simultáneas (para mejorar
rendimiento y evitar deadlocks por ej. en
*
lecturas: MVCC)
Abierto
• Durabilidad: una vez anunciado que la data
está en BD, no está perdida 4
Características

Tecnología de
Punta
• Transacciones
– Savepoints (snapshot) Inicio
* – Write Ahead Logging (WAL)
Robusto

*
• Escalabilidad
– Multiversion Concurrency Control (MVCC)
Calidad Mundial
– Particiones
* – Tablespaces
Dinámico
• Seguridad
*
– Control de acceso por hosts (IP, usuario/clave)
Abierto – Permisos a nivel de objeto
– Logs
5
– SSL
Miscelánea

Tecnología de
Punta • Búsqueda textual Inicio
*
• Triggers & Funciones
Robusto
• Lenguajes procedurales: PgSQL, Pearl,
*

Calidad Mundial
PHP, Tlc, etc
*
• Hot backup y Point in Time Recovery
Dinámico
(PITR)
* • Warm Stanby (alta disponibilidad)
Abierto
• Replicación
6
Conceptos - MVCC

Tecnología de
Punta • Multiversion Concurrency Control
Inicio
*
• Usuario ve un snapshot de BD
Robusto
• Datos siempre consistentes
*

Calidad Mundial
• Lectores y escritores no se bloquean
*
mutuamente
Dinámico

Abierto

7
Conceptos - Tablespaces

Tecnología de
Punta • Distribuir contenidos de un cluster
Inicio
* físicamente (en otra máquina)
Robusto
• Recomendable
– como medida temporal mientras se
*

Calidad Mundial
consigue espacio
*
– para optimizar rendimiento (índices)
Dinámico

*
• No tablespace temporal como en Oracle
(concepto de cache por sesión incluido)
Abierto

8
Conceptos - CLUSTER

Tecnología de
Punta
Inicio
* • colección de BDs por un servidor
Robusto
• un postmaster, port y diccionario
*

Calidad Mundial

Dinámico

Abierto

9
Limitaciones

Tecnología de
Punta • Tamaño BD ilimitado
Inicio
*
• Tamaño tabla 32 TB
Robusto
• Tamaño línea 1.6 TB
*

Calidad Mundial
• Tamaño columna 1 GB
* • Cantidad líneas/tabla ilimitado
Dinámico
• Cantidad columnas/tabla 250-1600
*
• Cantidad índices/tabla ilimitado
Abierto

10
Arquitectura

Tecnología de
Punta
Inicio
*

Robusto

Calidad Mundial

Dinámico

Abierto

11
Arquitectura - elementos

Tecnología de
Punta
Inicio
*

Robusto

Calidad Mundial

Dinámico
• un proceso por usuario
*
• Tipos
Abierto – postmaster (listener)
– utilitarios (start, end, initdb, psql, pg_ctl, ...)
12
– backend (archiver, bgwrite)
Arquitectura - procesos

Tecnología de
Punta
Inicio
*

Robusto

Calidad Mundial

Dinámico

Abierto

13
Arquitectura - física

Tecnología de
Punta
Inicio
*

Robusto

Calidad Mundial

Dinámico

Abierto

14
Arquitectura - distribución en
File System
Tecnología de
Punta
– Cada base de datos es una carpeta
Inicio
*
– Tablas e índices en archivos separados
Robusto – Uno o varios archivos por tabla o índice
*
– Luego de 1GB se bifurca
Calidad Mundial – Cada tabla en un tablespace
* – PG administra links a otros FSs
Dinámico
– Default: Índices guardados en el mismo
tablespace
*
– Diccionario
Abierto
– Segmentos para tablas o índices: de 1GB
15
Estructura de página
(disk block)
Tecnología de
Punta
Inicio
*

Robusto

Calidad Mundial

Dinámico

* • Estructura de índice semejante, sólo que


Abierto es un árbol
16
Write Ahead Logging

Tecnología de • Paralelo a data buffers


Punta • En buffer (WAL buffer) Inicio
• Crea un registro (log) de cada insert/update/delete de una transacción
* antes de su ejecución
Robusto
• Data no es considerada segura hasta que no haya sido escrita en disco
• BD decide cuándo escribir
* • Escritura pasa por SO cache y Disk I/O: commit de WAL, cache lleno
• Permite recuperación en caso de errores utilizando WAL (roll forward
Calidad Mundial recovery)
• Datos en carpeta pg_xlog
*
• Permite PITR
Dinámico
• Características
– Semejante a REDO logs de Oracle
*
– Logs nunca “rebalsan” en grandes transacciones
– Recuperación rápida, en una fase
Abierto

17
Configuración

Tecnología de
• por cluster
Punta
• en un archivo Inicio
* • modificable en línea y por usuario
Robusto
# - Connection Settings -
listen_addresses = ‘XXXX' # what IP address(es) to listen on;
*
port = 5432 # (change requires restart)
Calidad Mundial max_connections = 100 # (change requires restart)
* # - Memoria
shared_buffers = 32MB # min 128kB
Dinámico
temp_buffers = 8MB # min 800kB
* #max_prepared_transactions = 0
Abierto # logs: dónde (ubicación, rotación), cuándo (nivel, verbosidad), qué
(conexiones, duración, prefijos, statements),
18
# bgwriter
Jerarquía de objetos

Tecnología de
Punta
Inicio
*

Robusto

Calidad Mundial

Dinámico

*
• Posesión a nivel de usuario
Abierto

• Autorización a usuarios con GRANT 19


¿Por qué Schemas?

Tecnología de
Punta
• Para permitir a varios usuarios utilizar
Inicio
*
una BD sin interferirse mutuamente
Robusto

*
• Para organizar objetos de BD
Calidad Mundial
lógicamente para su mejor
*
administración
Dinámico • Para separar aplicaciones (p. ej. de
* diferentes proveedores) y evitar
Abierto colisiones
20
PSQL

Tecnología de
Punta • Herramienta que administra BDs Inicio
* • Conexión, tablas, diccionario, etc.
Robusto
• Ejecutar comandos (SQL o shell, en línea o
archivos)
*
• Historial de comandos / buffer
Calidad Mundial
• Variables
* • Scripts
Dinámico

*
• Gráficamente con PGAdmin, TOAD o Artisan
Abierto
• tablas, constraints, vistas, funciones
• SQL Editor
21
PgSQL

Tecnología de
Punta
• Una de varias opciones de Postgres
Inicio
*
• Lenguaje procedural
Robusto • Hereda toda funcionalidad SQL
* • Para escribir funciones, triggers

Calidad Mundial
Preparación y ejecución separados
*
• Funciona en bloques
Dinámico

*
• Parámetros, Variables, Cursores, Mensajes
Abierto
• if-then-else, for, while, loop, cursor,
perform (evaluación), exception 22
Respaldo

Tecnología de
Punta
• Comando Inicio
* – SQLDump
– Consistente al milisegungo de la ejecución
Robusto – Cluster , Schemas, tablas, data y/o definiciones

* • Respaldo de archivos (FS)


– Offline
Calidad Mundial – Servidor desconectado
– Backup completo de un cluster
*

• Archivamiento continuo
Dinámico

*
• Point-in-time recovery (PITR)
– habilidad de restaurar cluster a un determinado punto en el pasado
– Utiliza un respaldo total de un cluster y los WALs
Abierto
– Debe ser configurado previamente (permitir write-ahead log)
23
• Comando COPY
Data dictionary

Tecnología de
Punta
Inicio
• Schema especial (pg_catalog)
* • Contiene tablas, vistas, funciones, tipos, operadores de la BD
Robusto • Tablas
pg_tables, pg_constraints, pg_indexes, pg_trigger, pg_views
* • Funciones
current_database, current_schema, inet_client_addr,
Calidad Mundial inet_client_port, inet_server_addr, inet_server_port,
pg_postmaster_start_time, version current_user,
* current_schemas
• Para monitorear actividades y obtener información del Schema
Dinámico
• Para optimización (tuning)
* • Diferentes parámetros
• Costo de statements
Abierto
• Optimizador
• cluster de líneas 24
Contribuciones

Tecnología de
Punta
Inicio


*

Robusto
Replicación
*
• Remote query
Calidad Mundial • PostGIS
*
• etc, etc, etc...
Dinámico

Abierto

25
Tecnología de
Punta

Robusto
! Muchas Gracias ¡
*

Calidad Mundial

*
emilio.orellana@westfalia-it.com
Dinámico

Abierto

18/07/2011 26
Tecnología de
Punta

Robusto

Calidad Mundial

Dinámico

Abierto

18/07/2011 27

También podría gustarte