El administrador de las bases de datos, el técnico del sistema operativo y el desarrollador, encontrarán en este libro la información imprescindible para explotar de la mejor manera posible, todas las posibilidades de PostgreSQL (en su versión 10, en el momento de escribir este libro).
Los primeros capítulos del libro cubren la instalación de PostgreSQL en Windows y GNU/Linux, así como la preparación del entorno de ejecución del...
El administrador de las bases de datos, el técnico del sistema operativo y el desarrollador, encontrarán en este libro la información imprescindible para explotar de la mejor manera posible, todas las posibilidades de PostgreSQL (en su versión 10, en el momento de escribir este libro).
Los primeros capítulos del libro cubren la instalación de PostgreSQL en Windows y GNU/Linux, así como la preparación del entorno de ejecución del servidor. A continuación, el autor presenta las aplicaciones cliente que se pueden utilizar, los diferentes argumentos de seguridad y los diferentes aspectos de PostgreSQL relativos al soporte del lenguaje SQL. Los capítulos posteriores introducen la programación en PostgreSQL y detallan la administración y explotación (desde la configuración del servidor hasta las diferentes tareas de explotación, pasando por las copias de seguridad). Un capítulo presenta las herramientas adicionales que enriquecen la utilización de PostgreSQL. Para terminar, el autor introduce el tema de la replicación de los datos entre diferentes servidores, estudiando la replicación física y lógica integrada en PostgreSQL, así como la herramienta Slony.
Hay elementos adicionales que se pueden descargar desde el sitio web de ediciones ENI, www.ediciones-eni.com.
Los capítulos del libro:
Preámbulo – Instalación – Inicialización del sistema de archivos – Conexiones – Definición de los datos – Programación – Explotación – Herramientas – Replicación
3.1 Descarga del instalador EnterpriseDB para MS-Windows
3.2 Instalación
Inicialización del sistema de archivos
1. Introducción
2. Inicialización de una instancia
2.1 Opciones del comando
2.1.1 Opciones esenciales
2.1.2 Elección del juego de caracteres
2.1.3 Ajustes de los argumentos locales
2.2 Ejecución del comando
2.3 Creación de instancias adicionales
3. Parada y arranque del servidor
4. Scripts Debian
4.1 El script pg_lsclusters
4.2 El script pg_ctlcluster
4.3 El script pg_createcluster
4.4 El script pg_dropcluster
4.5 El script pg_upgradecluster
Conexiones
1. Introducción
2. Sesión
3. Clientes
3.1 Las opciones de conexión
3.1.1 Variables de entorno
3.1.2 Cadena de conexión
3.1.3 Archivo de servicio
3.1.4 Host múltiples
3.1.5 Archivo de contraseñas
3.2 Las herramientas cliente
3.2.1 La herramienta psql
3.2.2 Uso en modo interactivo
3.2.3 Uso en modo no interactivo
3.2.4 Archivo de configuración
4. Permisos de acceso
4.1 Administración de los roles: usuarios y grupos
4.1.1 Definición de un rol como cuenta de usuario
4.1.2 Definición de un rol como grupo
4.1.3 Pertenencia a un grupo y herencia
4.1.4 Uso de los permisos de un grupo
4.1.5 Modificación de un rol
4.1.6 Variables de sesión
4.1.7 Eliminación de un rol
4.1.8 Administración de la pertenencia a un rol
4.2 Asignación y revocación de permisos
4.3 Definición de los permisos por defecto
4.4 Seguridad de acceso a los registros de datos
4.4.1 Activación
4.4.2 Creación de las reglas de acceso
4.4.3 Ejemplo de creación de las reglas de acceso
Definición de los datos
1. Introducción
2. Los espacios de tablas
2.1 Modificación de un espacio de tablas
2.2 Eliminación de un espacio de tablas
3. Las bases de datos
3.1 Modificación de una base de datos
3.2 Eliminación de una base de datos
4. Los esquemas
4.1 Modificación de un esquema
4.2 Eliminación de un esquema
5. Las tablas
5.1 Atributos
5.1.1 Definición de un atributo
5.1.2 Restricciones
5.2 Restricciones de tablas
5.3 Ejemplos
5.4 Modificación de una tabla
5.5 Eliminación de una tabla
5.6 Creación de una tabla desde una consulta
5.7 Partición declarativa
6. Las vistas
6.1 Modificación de una vista
6.2 Eliminación de una vista
6.3 Vistas materializadas
6.3.1 Creación de una vista materializada
6.3.2 Actualización de los datos de una vista materializada
7. El sistema de reglas
7.1 Eliminación de una regla
7.2 Ejemplo
8. La herencia
9. Administración de datos externos
9.1 Wrappers
9.1.1 Lista de wrappers disponibles
9.1.2 Creación de un wrapper
9.1.3 Modificación de un wrapper
9.1.4 Eliminación de un wrapper
9.2 Servidores
9.2.1 Creación de un servidor
9.2.2 Modificación de un servidor
9.2.3 Eliminación de un servidor
9.3 Usuarios
9.3.1 Creación de un usuario
9.3.2 Modificación de un usuario
9.3.3 Eliminación de un usuario
9.4 Tablas extranjeras
9.4.1 Creación de una tabla extranjera
9.4.2 Modificación de una tabla extranjera
9.4.3 Eliminación de una tabla extranjera
10. Los índices
10.1 Creación de un índice
10.2 Los diferentes tipos de índice
10.3 Modificación de un índice
10.4 Eliminación de un índice
10.5 Ejemplos de índice
10.6 Las estadísticas
11. Secuencias y atributos de identidad
11.1 Creación de una secuencia
11.2 Modificación de una secuencia
11.3 Eliminación de una secuencia
12. Tipos de datos
12.1 Tipo de datos numéricos
12.2 Tipo de datos «caracteres»
12.3 Tipo de datos de fechas y horas
12.4 Tipo de datos «rango de valores»
12.5 Tipos de datos varios
12.6 Tabla de datos
13. Dominios
13.1 Creación de un dominio
13.2 Modificación de un dominio
13.3 Eliminación de un dominio
14. Búsqueda textual
15. Extensiones
15.1 Creación de una extensión
15.2 Modificación de una extensión
15.3 Eliminación de una extensión
15.4 Administración del código
15.4.1 El archivo control
15.4.2 El script SQL
15.4.3 Instalación de la extensión
16. Operadores y funciones
16.1 Operadores
16.1.1 Operadores de comparación
16.1.2 Operadores matemáticos
16.1.3 Operadores de subconsultas
16.1.4 Otros operadores
16.1.5 Expresiones
16.2 Funciones
16.2.1 Funciones sobre números
16.2.2 Funciones sobre cadenas de caracteres
16.2.3 Funciones de fecha
16.2.4 Funciones de manipulación de las secuencias
16.2.5 Funciones de agregación
16.2.6 Funciones de ventana
16.2.7 Funciones de manipulación de las tablas
16.2.8 Funciones de manipulación de datos JSON
16.2.9 Funciones de manipulación de datos XML
17. Manipulación de los datos
17.1 Inserción de datos
17.1.1 La sentencia INSERT ... INTO
17.1.2 Administración de conflictos
17.1.3 La sentencia COPY
17.2 Lectura de datos
17.2.1 La sentencia SELECT
17.2.2 La sentencia COPY
17.3 Actualización de los datos
17.4 Eliminación de datos
17.4.1 La sentencia DELETE
17.4.2 La sentencia TRUNCATE
17.5 Los CTE y la palabra clave WITH
17.6 Las transacciones
17.6.1 Niveles de aislamiento
17.6.2 Puntos de copia de seguridad
17.6.3 Locks de bloqueo
Programación
1. Introducción
2. Procedimientos almacenados
2.1 SQL
2.1.1 Volatilidad
2.1.2 Costes de la llamada
2.2 PL/pgSQL
2.2.1 Estructura de una función
2.2.2 Ejemplo de función
3. Triggers
3.1 Código PL/pgSQL
3.1.1 Ejemplo
3.1.2 Eliminación de triggers
3.1.3 Trigger sobre un evento
3.1.4 Creación de un trigger sobre evento
3.2 Tratamientos asíncronos
4. Control de funciones
4.1 Perfilador de funciones
4.2 Instalación
4.3 Perfilado de funciones
4.4 Control de función PL/pgSQL
4.4.1 Instalación
4.4.2 Comprobación
Explotación
1. Ejecución de una instancia
1.1 Definición de los archivos
1.2 Nombre de los archivos
2. Administración del servidor
2.1 Configuración
2.1.1 Conexiones
2.1.2 Memoria
2.1.3 Recolectores de estadísticas
2.1.4 Opciones de las herramientas de limpieza
2.1.5 Logs de actividad
2.1.6 Archivos de escritura de las transacciones
2.1.7 Replicación
2.1.8 Rendimiento de las consultas
2.1.9 Carga de los módulos
2.1.10 Otras opciones
2.1.11 Administración de las modificaciones de la configuración
2.2 Catálogo de sistema
2.3 Funciones útiles para la explotación
3. Administrador de conexiones
3.1 Pgpool
3.1.1 Instalación
3.1.2 Configuración
3.1.3 Uso de Pgpool
3.1.4 Configuración y arranque
3.2 pgBouncer
3.2.1 Instalación
3.2.2 Configuración de las conexiones
3.2.3 Configuración de la instancia
3.2.4 Arranque
3.2.5 Administración
4. Copia de seguridad y restauración
4.1 Copia de seguridad lógica con pg_dump y pg_dumpall
4.1.1 pg_dump
4.1.2 pg_dumpall
4.1.3 Elección de la herramienta
4.2 Restauración lógica con pg_restore y psql
4.2.1 pg_restore
4.2.2 psql
4.2.3 Ejemplos
4.3 Copia de seguridad física
4.3.1 Copia de seguridad en frío
4.3.2 Copia de seguridad sobre la marcha
4.3.3 Restauración de una copia de seguridad sobre la marcha
4.3.4 La herramienta pgBackRest
4.3.5 La herramienta pgBarMan
5. Explotación y tareas de mantenimiento
5.1 Análisis de una consulta con EXPLAIN
5.2 Recolección de las estadísticas con ANALYZE
5.3 Limpieza de las tablas con VACUUM
5.4 Automatización con AUTOVACUUM
5.5 Mantenimiento de los índices con REINDEX
5.6 Organización de las tablas con CLUSTER
6. Probar la instalación con pgbench
7. Explotación de las trazas de actividad con pgBadger
7.1 Instalación
7.2 Análisis de los archivos de trazas
Herramientas
1. Introducción
2. La herramienta gráfica: pgAdmin III
3. La herramienta Dbeaver
4. La herramienta SQLTabs
5. La herramienta PGWatch2
Replicación
1. Replicación en flujo
1.1 La inicialización
1.2 Configuración
1.2.1 Conexión al servidor «standby»
1.2.2 Slot de replicación
1.2.3 Arranque
1.3 Administración
2. Replicación en cascada
3. Cambio de topología
4. Replicación síncrona
5. Replicación lógica integrada
6. Replicación lógica con Slony
6.1 Instalación de Slony
6.2 Configuración del grupo de servidores
6.3 Inicialización
6.4 Arranque del programa slon
6.5 Creación del juego de tablas
6.6 Modificación del esquema
7. Evolución de las soluciones de replicación
índice
Sébastien LARDIÈRE
Después de haber sido desarrollador web, formador, consultor independiente y administrador de bases de datos PostgreSQL, en la actualidad Sébastien LARDIERE es consultor PostgreSQL dentro de Loxodata, empresa de consultoría especializada en PostgreSQL. Demuestra diariamente toda su reconocida experiencia en esta área.