Estado Del Desarrollo de PostgreSQL
Transcript of Estado Del Desarrollo de PostgreSQL
![Page 2: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/2.jpg)
Sumario PostgreSQL Características del gestor (Versión-8.4) 9.0 !!!! Conclusiones
![Page 3: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/3.jpg)
PostgreSQL Considerado como el SGBD de código
abierto más avanzado del mundo + de 20 años de desarrollo Ciclo de desarrollo bien definido estilo
FreeBSD Committers Dev Process Modelo de desarrollo viable
(Empresas/Comunidad)
![Page 4: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/4.jpg)
PostgreSQL Basado en el trabajo de Stonebraker Desarrollado en C89 (ANSI C) Soporte excelente en las listas Excelente documentación Sumamente adaptable y extensible Guiado por los estándares
![Page 5: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/5.jpg)
Características 100 % ACID Soporte para triggers,vistas, procedimientos
almacenados, funciones y tipos de datos definidos por el usuario, búsqueda de textos completos, etc
Corre en + de 30 plataformas incluyendo Linux, UNIX, HP-UX, Solaris, BSD´s Windows,etc
Licencia BSD (Costo es saber usarlo)
![Page 6: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/6.jpg)
Características Soporte para bases de datos georeferenciales
(PostGIS) Pueden escribir sus funciones en + de 10
lenguajes (PL/pgSQL, PL/Ruby, PL/R, C/C++, PL/Python, PL/Perl, PL/Java)
Prionero en los conceptos MVCC WAL (Escritura adelantada de logs) Tipado avanzado de datos (CHECK, ENUM,
DOMAIN)
![Page 7: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/7.jpg)
PostgreSQL-8.4 Nueva implementación del FSM Funciones ventana (Data WareHouse/OLAP
Apps) CTE´s (Cláusula WITH) Consultas recursivas (WITH recursivo !!!!) Permisos por columnas
![Page 8: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/8.jpg)
PostgreSQL-8.4 Estructura de control CASE Comando TABLE Argumentos de funciones variables Argumentos con valores por defecto Triggers en TRUNCATE
![Page 9: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/9.jpg)
PostgreSQL-8.4 Mejoras del soporte a la plataforma Windows Mejoras en el rendimiento de las DBA Tool
(VACUUM) Restauración paralela de las bases de datos
(pg_restore -j #) LIMIT puedes aceptar subquerys Múltiples mejoras a psql (\dt+; \ef)
![Page 10: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/10.jpg)
Ejemplos Permisos por columnas:
GRANT SELECT (year),INSERT (valor), UPDATE(otrovalor) ON tabla TO usuario;
Para TRUNCATE:
GRANT TRUNCATE ON tabla TO usuario;
![Page 11: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/11.jpg)
Ejemplos Funciones ventana:
SELECT year, sum(valor) OVER (PARTITION BY year) FROM winpro LIMIT 10;
RETURN TABLE (alias para SETOF): Parámetros por defecto:
CREATE FUNCTION f101 (int, int DEFAULT 9)
![Page 12: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/12.jpg)
Ejemplos CTE ( WITH):
WITH epic_films as (SELECT film_id, array_agg(first_name ||' '||
last_name) as featuring FROM film join film_actor using (film_id) JOIN actor
USING (actor_id) GROUP BY film_id )
SELECT * FROM epic_films WHERE array_upper(featuring,1) > 12 ;
![Page 13: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/13.jpg)
Ejemplos CASE:
CREATE FUNCTION kidsafe(v_title text) RETURNS text
AS $$
BEGIN
CASE (select rating from film where title = v_title)
WHEN 'NC-17','R' THEN RETURN 'no';
WHEN 'PG-13' THEN RETURN 'maybe';
WHEN 'PG','G' THEN RETURN 'yes';
END CASE;
END; $$ LANGUAGE plpgsql;
![Page 14: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/14.jpg)
Ejemplos LIMIT basado en una subconsulta:
SELECT title FROM film ORDER BY random()
LIMIT (SELECT count(*)/10 FROM film WHERE rating = 'G');
![Page 15: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/15.jpg)
9.0 !!! Se introdujo un nuevo cambio en el proceso
de desarrollo: http://commitfest.postgresql.org
La versión actual es la 9.0alpha5 Cambió de 8.5 a 9.0 por las características
tan radicales que trae (Hot Standby/Streaming Replication)
![Page 16: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/16.jpg)
Planes FuturosHot Standby … replicación sincrónica … exclusión
de restricciones … EXPLAIN con resultados en JSON/XML/YAML … Windows 64 bits … CTE´s
modificables … mejora en los permisos … GRANT ON ALL/DEFAULT … mejoras en el SQL
.. Agregados ordenados … Cláusula DO() … mejoras de rendimiento … nuevo
LISTEN/NOTIFY … mejoras a PL/Perl y PL/Python
![Page 17: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/17.jpg)
Futuro ???Hot Standby … replicación sincrónica … exclusión
de restricciones … EXPLAIN con resultados en JSON/XML/YAML … Windows 64 bits … CTE´s
modificables … mejora en los permisos … GRANT ON ALL/DEFAULT … mejoras en el SQL
.. Agregados ordenados … Cláusula DO() … mejoras de rendimiento … nuevo
LISTEN/NOTIFY … mejoras a PL/Perl y PL/Python
![Page 18: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/18.jpg)
Plan de Desarrollo 9.0 RC / Período de desarrollo 1ro de Julio del 2009CommitFest 1/Período de desarrollo
Julio 15 – Agosto 15 2009
CommitFest 2/Período de desarrollo
Sept. 15 – Oct. 15 2009
CommitFest 3/Período de desarrollo
Nov. 15 – Dic. 15 2009
CommitFest 4 Enero 15 2010Limpieza / Integración y Revisión (2-4 semanas)
Febrero 15 2010
Liberación del Beta / Pruebas al beta
2-3 meses
Liberación Final 9.0/ Comienzo 9.1
Junio-Julio 2010
![Page 19: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/19.jpg)
9.0 !!! Rendimiento Lenguajes Procedurales Triggers Administración/Seguridad
![Page 20: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/20.jpg)
Rendimiento Borrado de JOINS sin sentido Parche por Robert Haas Permite remover JOINs redundantes del plan
de consultas para la optimización y mejora de las mismas
![Page 21: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/21.jpg)
Rendimiento New VACUUM FULL Parche por Itagaki Takagiro Reescrito el comando VACUUM FULL La nueva versión trabaja igual que CLUSTER
USING ctid o reescribiendo en ALTER TABLE. Éste puede ser más ràpido que éstos, sobre tdo si tenemos muchas tuplas muertas y no son interesa el orden físico de las mismas
![Page 22: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/22.jpg)
Lenguajes Procedurales Bloques de código anónimos (DO) Parche por Petr Jelinek Agrega el soporte para bloques anónimos de
código escrito en lenguages procedurales.
![Page 23: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/23.jpg)
Lenguajes ProceduralesDO $DECLARE r record;
BEGIN FOR r IN SELECT table_schema, table_name FROM
information_schema.tables WHERE table_type = ‘VIEW’ AND table_schema =
‘public’ LOOP EXECUTE ‘GRANT ALL ON ’ ||
quote_ident(r.table_schema) || ‘.’ || quote_ident(r.table_name) || ‘TO webuser’;
END LOOP;END$$;
![Page 24: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/24.jpg)
Lenguajes Procedurales Mejoras a PL/Python Parchesde muchos contribuidores Soporte para Python-3.1 Soporte para bloques anónimos de código Conversión de tipos de datos mejorada
![Page 25: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/25.jpg)
Lenguajes Procedurales Mejoras a PL/Perl Parchesde muchos contribuidores Soporte para contexto de errores Soporte para bloques anónimos de código Refactorización hecha sobre plperl.c Agregadas funciones útiles como quote_literal,
encode_bytea, etc
![Page 26: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/26.jpg)
Triggers Triggers en columnas Sólo se disparan si ciertas columnas son
modificadas Ayudan a resolver problemas de TRIGGERS
circulares.
![Page 27: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/27.jpg)
Triggers Triggers condicionales
Lo mejor es un ejemplo:
CREATE TRIGGER test_u
AFTER UPDATE ON test
FOR EACH ROW
WHEN (NEW.i <= 0)
EXECUTE PROCEDURE test_u();
![Page 28: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/28.jpg)
Lenguajes Procedurales EXPLAIN en formatos legibles (XML, JSON,
YAML) Muy útil para herramientas de monitoreo y
para la visualización gráfica de los planes de ejecución
Ejemplo:
EXPLAIN (FORMAT XML) SELECT * FROM pg_class;
![Page 29: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/29.jpg)
Administración/Seguridad GUC´s por usuario, por base de datos Parches por Álvaro Herrera Permite el cambio de las GUC´s por defecto
de un modo más complejo y útil
![Page 30: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/30.jpg)
Administración/Seguridad8.4:
ALTER DATABASE <database> SET <guc> TO <value>
ALTER ROLE <role> SET <guc> to <value>
9.0 agrega:
ALTER ROLE <role> IN DATABASE <database> SET <guc> TO <value>
![Page 31: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/31.jpg)
Bibliografía Blog de Hubert Lubaczewski:
http://www.depesz.com Sitio Oficial del proyecto:
http://www.postgresql.org http://planetpostgresql.org http://www.postgresql-es.org http://wiki.postgresql.org
![Page 32: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/32.jpg)
Bibliografía Peter Eisentraut: Most Wanted -FOSDEM 2010 Dave Page: Developments in PostgreSQL-9.0 –
FOSDEM 2010 Josh Berkus: PostgreSQL Development TODAY –
FOSDEM 2010 David Fetter: Windowing Functions – PgCon 2009 Robert Treat: PostgreSQL-8.4 Talk – PgCon 2009
![Page 33: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/33.jpg)
Listas [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
![Page 34: Estado Del Desarrollo de PostgreSQL](https://reader035.fdocuments.ec/reader035/viewer/2022062220/5571f88849795991698da05b/html5/thumbnails/34.jpg)
ComentariosSugerencias