SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
FLISOL 2010
 Estado del desarrollo de
       PostgreSQL-9.0


Ing. Marcos Ortíz Valmaseda
       mlortiz@uci.cu
            
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 Futuros
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
                   
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 2009
CommitFest 1/Período de             Julio 15 – Agosto 15 2009
desarrollo
CommitFest 2/Período de             Sept. 15 – Oct. 15 2009
desarrollo
CommitFest 3/Período de             Nov. 15 – Dic. 15 2009
desarrollo
CommitFest 4                        Enero 15 2010
Limpieza / Integración y Revisión   Febrero 15 2010
(2-4 semanas)
Liberación del Beta / Pruebas al    2-3 meses
beta
Liberación   Final 9.0/ Comienzo
                                    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 Procedurales
  DO $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/Seguridad
  8.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
   pgsql-es-ayuda@postgresql.org
   pgsql-performance@postgresql.org
   pgsql-sql@postgresql.org
   pgsql-hackers@postgresql.org
   pgsql-announce@postgresql.org
   pgsql-es-fomento@postgresql.org




                      
Comentarios
    Sugerencias




       

Mais conteúdo relacionado

Mais procurados

Actividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonActividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonEmerson Gonzalez IF04 T I
 
Yungán geovanny bdii_t7
Yungán geovanny bdii_t7Yungán geovanny bdii_t7
Yungán geovanny bdii_t7GeovannyYungan
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
 
Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)gadiel1515
 
Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)CAChemE
 
Comandos de los archivos por lotes equipo 2
Comandos de los archivos por lotes equipo 2Comandos de los archivos por lotes equipo 2
Comandos de los archivos por lotes equipo 2UVM
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada diaAlan Descoins
 
COMPILADOR G++
COMPILADOR G++COMPILADOR G++
COMPILADOR G++HM47
 
About debuggers.help
About debuggers.helpAbout debuggers.help
About debuggers.helptiopocho
 
9 managing processes
9  managing processes9  managing processes
9 managing processescyberleon95
 
Control de versiones con Git y Github
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Githubguest638090
 

Mais procurados (19)

Actividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonActividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emerson
 
Yungán geovanny bdii_t7
Yungán geovanny bdii_t7Yungán geovanny bdii_t7
Yungán geovanny bdii_t7
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Ciclos
CiclosCiclos
Ciclos
 
Práctica no 9
Práctica no 9Práctica no 9
Práctica no 9
 
Jlex Cup
Jlex CupJlex Cup
Jlex Cup
 
Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)Lenguaje de programacion_c(2)
Lenguaje de programacion_c(2)
 
Uso de comodines
Uso de comodinesUso de comodines
Uso de comodines
 
Uso de comodines
Uso de comodinesUso de comodines
Uso de comodines
 
Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)
 
Comandos de los archivos por lotes equipo 2
Comandos de los archivos por lotes equipo 2Comandos de los archivos por lotes equipo 2
Comandos de los archivos por lotes equipo 2
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
 
COMPILADOR G++
COMPILADOR G++COMPILADOR G++
COMPILADOR G++
 
About debuggers.help
About debuggers.helpAbout debuggers.help
About debuggers.help
 
9 managing processes
9  managing processes9  managing processes
9 managing processes
 
Control de versiones con Git y Github
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Github
 
Procesos
ProcesosProcesos
Procesos
 
control files
control filescontrol files
control files
 
Tutorial0
Tutorial0Tutorial0
Tutorial0
 

Semelhante a Estado del Desarrollo de PostgreSQL-9.0

Presentación de Postgresql 9.1
Presentación de Postgresql 9.1Presentación de Postgresql 9.1
Presentación de Postgresql 9.1EQ SOFT EIRL
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQLbrobelo
 
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP Finanzas
 
Taller de base de datos postgre sql
Taller de base de datos postgre sqlTaller de base de datos postgre sql
Taller de base de datos postgre sql500y
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)Emanuel Calvo
 
Documentacion postgresql
Documentacion postgresqlDocumentacion postgresql
Documentacion postgresqlCesar Martinez
 
Base de datos_-_material_didactico
Base de datos_-_material_didacticoBase de datos_-_material_didactico
Base de datos_-_material_didacticoenriquehot
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)Darwin Durand
 
Cursillose ghost2010.open er-pcomosoftwaredegestióncontable
Cursillose ghost2010.open er-pcomosoftwaredegestióncontableCursillose ghost2010.open er-pcomosoftwaredegestióncontable
Cursillose ghost2010.open er-pcomosoftwaredegestióncontablealdoalar
 
Evolución y avances del Gestor PostgreSQL
Evolución y avances del  Gestor PostgreSQLEvolución y avances del  Gestor PostgreSQL
Evolución y avances del Gestor PostgreSQLAnthony Sotolongo
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008guest02b440
 

Semelhante a Estado del Desarrollo de PostgreSQL-9.0 (20)

Sql Procedural
Sql ProceduralSql Procedural
Sql Procedural
 
Introducción a PostgreSql
Introducción a PostgreSqlIntroducción a PostgreSql
Introducción a PostgreSql
 
Presentación de Postgresql 9.1
Presentación de Postgresql 9.1Presentación de Postgresql 9.1
Presentación de Postgresql 9.1
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
 
Taller de base de datos postgre sql
Taller de base de datos postgre sqlTaller de base de datos postgre sql
Taller de base de datos postgre sql
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Documentacion postgresql
Documentacion postgresqlDocumentacion postgresql
Documentacion postgresql
 
Admon PG 1
Admon PG 1Admon PG 1
Admon PG 1
 
Base de datos_-_material_didactico
Base de datos_-_material_didacticoBase de datos_-_material_didactico
Base de datos_-_material_didactico
 
CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Java 7- Java Day Guatemala
Java 7- Java Day GuatemalaJava 7- Java Day Guatemala
Java 7- Java Day Guatemala
 
Cursillose ghost2010.open er-pcomosoftwaredegestióncontable
Cursillose ghost2010.open er-pcomosoftwaredegestióncontableCursillose ghost2010.open er-pcomosoftwaredegestióncontable
Cursillose ghost2010.open er-pcomosoftwaredegestióncontable
 
Novedades de OpenSolaris 2009.06
Novedades de OpenSolaris 2009.06Novedades de OpenSolaris 2009.06
Novedades de OpenSolaris 2009.06
 
SMBD 2011
SMBD 2011SMBD 2011
SMBD 2011
 
SMBD 2011
SMBD 2011SMBD 2011
SMBD 2011
 
Evolución y avances del Gestor PostgreSQL
Evolución y avances del  Gestor PostgreSQLEvolución y avances del  Gestor PostgreSQL
Evolución y avances del Gestor PostgreSQL
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 

Mais de Marcos Ortiz Valmaseda

SEC: Actualización de la definición de "Inversor Acreditado" en el 2019
SEC: Actualización de la definición de "Inversor Acreditado" en el 2019SEC: Actualización de la definición de "Inversor Acreditado" en el 2019
SEC: Actualización de la definición de "Inversor Acreditado" en el 2019Marcos Ortiz Valmaseda
 
A Partnership with Adyen is Equal to Exponential Growth: 17 Payments Experts ...
A Partnership with Adyen is Equal to Exponential Growth: 17 Payments Experts ...A Partnership with Adyen is Equal to Exponential Growth: 17 Payments Experts ...
A Partnership with Adyen is Equal to Exponential Growth: 17 Payments Experts ...Marcos Ortiz Valmaseda
 
7 Ideas to Revamp Product Marketing at Duo Security
7 Ideas to Revamp Product Marketing at Duo Security7 Ideas to Revamp Product Marketing at Duo Security
7 Ideas to Revamp Product Marketing at Duo SecurityMarcos Ortiz Valmaseda
 
200 Global Facts about the State of Small Businesses in 2015
200 Global Facts about the State of Small Businesses in 2015200 Global Facts about the State of Small Businesses in 2015
200 Global Facts about the State of Small Businesses in 2015Marcos Ortiz Valmaseda
 
50+ facts about State of CyberSecurity in 2015
50+ facts about State of CyberSecurity in 201550+ facts about State of CyberSecurity in 2015
50+ facts about State of CyberSecurity in 2015Marcos Ortiz Valmaseda
 
Research group in databases technologies
Research group in databases technologiesResearch group in databases technologies
Research group in databases technologiesMarcos Ortiz Valmaseda
 

Mais de Marcos Ortiz Valmaseda (9)

SEC: Actualización de la definición de "Inversor Acreditado" en el 2019
SEC: Actualización de la definición de "Inversor Acreditado" en el 2019SEC: Actualización de la definición de "Inversor Acreditado" en el 2019
SEC: Actualización de la definición de "Inversor Acreditado" en el 2019
 
A Partnership with Adyen is Equal to Exponential Growth: 17 Payments Experts ...
A Partnership with Adyen is Equal to Exponential Growth: 17 Payments Experts ...A Partnership with Adyen is Equal to Exponential Growth: 17 Payments Experts ...
A Partnership with Adyen is Equal to Exponential Growth: 17 Payments Experts ...
 
7 Ideas to Revamp Product Marketing at Duo Security
7 Ideas to Revamp Product Marketing at Duo Security7 Ideas to Revamp Product Marketing at Duo Security
7 Ideas to Revamp Product Marketing at Duo Security
 
200 Global Facts about the State of Small Businesses in 2015
200 Global Facts about the State of Small Businesses in 2015200 Global Facts about the State of Small Businesses in 2015
200 Global Facts about the State of Small Businesses in 2015
 
50+ facts about State of CyberSecurity in 2015
50+ facts about State of CyberSecurity in 201550+ facts about State of CyberSecurity in 2015
50+ facts about State of CyberSecurity in 2015
 
The future of marketing
The future of marketingThe future of marketing
The future of marketing
 
Introducción a Apache HBase
Introducción a Apache HBaseIntroducción a Apache HBase
Introducción a Apache HBase
 
Research group in databases technologies
Research group in databases technologiesResearch group in databases technologies
Research group in databases technologies
 
Postgre Sql Para Las Empresas Cubanas
Postgre Sql Para Las Empresas CubanasPostgre Sql Para Las Empresas Cubanas
Postgre Sql Para Las Empresas Cubanas
 

Estado del Desarrollo de PostgreSQL-9.0

  • 1. FLISOL 2010 Estado del desarrollo de PostgreSQL-9.0 Ing. Marcos Ortíz Valmaseda mlortiz@uci.cu    
  • 2. Sumario  PostgreSQL  Características del gestor (Versión-8.4)  9.0 !!!!  Conclusiones    
  • 3. 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)    
  • 4. 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    
  • 5. 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)    
  • 6. 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)    
  • 7. 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    
  • 8. PostgreSQL-8.4  Estructura de control CASE  Comando TABLE  Argumentos de funciones variables  Argumentos con valores por defecto  Triggers en TRUNCATE    
  • 9. 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)    
  • 10. Ejemplos  Permisos por columnas: GRANT SELECT (year),INSERT (valor), UPDATE(otrovalor) ON tabla TO usuario;  Para TRUNCATE: GRANT TRUNCATE ON tabla TO usuario;    
  • 11. 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)    
  • 12. 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 ;    
  • 13. 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;    
  • 14. Ejemplos  LIMIT basado en una subconsulta: SELECT title FROM film ORDER BY random() LIMIT (SELECT count(*)/10 FROM film WHERE rating = 'G');    
  • 15. 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)    
  • 16. Planes Futuros 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    
  • 17. 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    
  • 18. Plan de Desarrollo 9.0 RC / Período de desarrollo 1ro de Julio del 2009 CommitFest 1/Período de Julio 15 – Agosto 15 2009 desarrollo CommitFest 2/Período de Sept. 15 – Oct. 15 2009 desarrollo CommitFest 3/Período de Nov. 15 – Dic. 15 2009 desarrollo CommitFest 4 Enero 15 2010 Limpieza / Integración y Revisión Febrero 15 2010 (2-4 semanas) Liberación del Beta / Pruebas al 2-3 meses beta Liberación   Final 9.0/ Comienzo   Junio-Julio 2010
  • 19. 9.0 !!!  Rendimiento  Lenguajes Procedurales  Triggers  Administración/Seguridad    
  • 20. 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    
  • 21. 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    
  • 22. 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.    
  • 23. Lenguajes Procedurales DO $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$$;   
  • 24. 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    
  • 25. 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    
  • 26. Triggers  Triggers en columnas  Sólo se disparan si ciertas columnas son modificadas  Ayudan a resolver problemas de TRIGGERS circulares.    
  • 27. 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();    
  • 28. 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;    
  • 29. 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    
  • 30. Administración/Seguridad 8.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>    
  • 31. 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    
  • 32. 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    
  • 33. Listas  pgsql-es-ayuda@postgresql.org  pgsql-performance@postgresql.org  pgsql-sql@postgresql.org  pgsql-hackers@postgresql.org  pgsql-announce@postgresql.org  pgsql-es-fomento@postgresql.org    
  • 34. Comentarios Sugerencias