Guía Detallada para Avanzar en PostgreSQL Vamos a explorar cada punto con explicaciones claras y muchos ejemplos prácticos para que aprendas PostgreSQL a fondo. 1. Configuración avanzada del servidor y optimización PostgreSQL usa un archivo llamado postgresql.conf para ajustar su comportamiento. listen_addresses: en qué interfaces de red escucha; por defecto es todas ('*'). port: puerto estándar es 5432. max_connections: máximo de conexiones concurrentes; por ejemplo, 100. shared_buffers: memoria usada para caching, se recomienda ~25% de RAM. work_mem: memoria para operaciones de ordenamiento y joins; un valor típico es 8MB. maintenance_work_mem: para mantenimiento como VACUUM. effective_cache_size: estima la caché del sistema operativo para planificación de consultas. Ejemplo básico de configuración: text listen_addresses = '*' port = 5432 max_connections = 100 shared_buffers = 1024MB work_mem = 8MB maintenance_work_mem = 256MB effective_cache_size = 2048MB Para aplicar cambios: generalmente con SELECT pg_reload_conf(); o reiniciar el servidor. 2. Tipos de datos complejos y funciones avanzadas PostgreSQL soporta tipos avanzados: ARRAY: almacenar listas en una columna. JSON / JSONB: datos estructurados para aplicaciones web. hstore: pares clave-valor. UUID: identificadores únicos. Tipos geométricos, rango, XML, y más. Ejemplo con JSONB: sql CREATE TABLE productos ( id SERIAL PRIMARY KEY, info JSONB ); INSERT INTO productos (info) VALUES ('{"nombre": "Manzana", "precio": 1.25}'); -- Consultar precio SELECT info->>'precio' AS precio FROM productos; Funciones avanzadas incluyen agregados personalizados, funciones de ventana, expresiones regulares, y SQL/PL. 3. Índices, vistas, secuencias y otros objetos Índices aceleran búsquedas: sql CREATE INDEX idx_nombre ON empleados(nombre); Vistas Son consultas guardadas: sql CREATE VIEW vista_ventas AS SELECT cliente, SUM(total) AS total_ventas FROM ventas GROUP BY cliente; Secuencias para números automáticos: sql CREATE SEQUENCE seq_pedido START 1; SELECT nextval('seq_pedido'); Otros objetos: funciones, triggers, esquemas. 4. Consultas complejas y optimización Uso de JOINs para unir tablas: sql SELECT e.nombre, d.nombre AS departamento FROM empleados e JOIN departamentos d ON e.departamento_id = d.id; Subconsultas: sql SELECT nombre FROM empleados WHERE salario > (SELECT AVG(salario) FROM empleados); Funciones de ventana: sql SELECT nombre, salario, RANK() OVER (ORDER BY salario DESC) FROM empleados; Optimización: Usa EXPLAIN para ver el plan de ejecución. Crea índices apropiados. Evita SELECT * si no necesitas todas las columnas. Usa LIMIT y OFFSET para paginación. 5. Seguridad, roles y autenticación Crear roles: sql CREATE ROLE lector LOGIN PASSWORD 'pass123'; GRANT SELECT ON empleados TO lector; Revocar permisos: sql REVOKE SELECT ON empleados FROM lector; Configuración en pg_hba.conf controla qué hosts y con qué métodos pueden conectar. 6. Replicación, backups y recuperación Replicación: permite tener copias de la base para alta disponibilidad. Configurar wal_level, max_wal_senders, hot_standby. Replica física o lógica. Backups: pg_dump para backups lógicos. pg_basebackup para copias físicas. Recuperación: Restaurar con pg_restore o psql. Point-In-Time Recovery configurando WAL. 7. PL/pgSQL: procedimientos almacenados y triggers Crear función: sql CREATE FUNCTION suma(a INT, b INT) RETURNS INT AS $$ BEGIN RETURN a + b; END; $$ LANGUAGE plpgsql; Crear trigger para log de inserciones: sql CREATE TABLE log_inserciones (id SERIAL, tabla TEXT, fecha TIMESTAMP); CREATE FUNCTION log_insert() RETURNS trigger AS $$ BEGIN INSERT INTO log_inserciones(tabla, fecha) VALUES (TG_TABLE_NAME, now()); RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER trig_insert AFTER INSERT ON empleados FOR EACH ROW EXECUTE FUNCTION log_insert(); 8. Integración y gestión de rendimiento Pools de conexiones con PgBouncer para manejar muchas conexiones. Monitoreo con herramientas como pg_stat_activity, pg_stat_statements. Profiling y optimización con EXPLAIN ANALYZE. Integración en aplicaciones con drivers (psycopg2 para Python, pg JDBC, etc). Ajuste de parámetros según uso para mejorar rendimiento. Conclusión Esta guía te da los fundamentos y ejemplos necesarios para avanzar hacia un dominio completo de PostgreSQL. Para cada punto, te recomiendo practicar en un entorno real y usar documentación oficial para profundizar según tus necesidades.
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter