Estado del Desarrollo de PostgreSQL-9.0
-
Upload
marcos-ortiz-valmaseda -
Category
Documents
-
view
326 -
download
5
Transcript of Estado del Desarrollo de PostgreSQL-9.0
Sumario PostgreSQL Características del gestor (Versión-8.4) 9.0 !!!! Conclusiones
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)
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
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)
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)
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
PostgreSQL-8.4 Estructura de control CASE Comando TABLE Argumentos de funciones variables Argumentos con valores por defecto Triggers en TRUNCATE
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)
Ejemplos Permisos por columnas:
GRANT SELECT (year),INSERT (valor), UPDATE(otrovalor) ON tabla TO usuario;
Para TRUNCATE:
GRANT TRUNCATE ON tabla TO usuario;
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)
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 ;
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;
Ejemplos LIMIT basado en una subconsulta:
SELECT title FROM film ORDER BY random()
LIMIT (SELECT count(*)/10 FROM film WHERE rating = 'G');
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)
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
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
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
9.0 !!! Rendimiento Lenguajes Procedurales Triggers Administración/Seguridad
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
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
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.
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$$;
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
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
Triggers Triggers en columnas Sólo se disparan si ciertas columnas son
modificadas Ayudan a resolver problemas de TRIGGERS
circulares.
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();
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;
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
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>
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
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
Listas [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
ComentariosSugerencias