PostgreSQL 9.1
(Presentación para Libre Software World Conference)




                Presentado por:
            Emanuel Calvo @3manuek
                     DBA
              www.palominodb.com
Sobre el palestrante y la presentación:
• Operational DBA at PalominoDB
• Consultor Principal en Helpame
• DBA Mysql y Oracle en Aedgency.

• Twitter: @3manuek
• Mail: emanuel@{palominodb.com|helpame.com}

• Esta presentación está basada en el artículo del mismo ponente:
     • http://palominodb.com/blog/2011/09/28/postgresql-91-part-1-general-features
Nuevas características
•   Replicación sincrónica
•   Soporte de datos foráneos
•   Soporte de internalización por columna
•   Instantánea de aislamiento serializable (SSI)
•   Tablas efímeras
•   Expresiones comunes de tablas con escritura
•   Algoritmo de KNN para índices GIST e GIN
•   Soporte SE-LINUX
•   Actualización de la versión del lenguaje Python
•   PGXN
•   Otras cosas adicionales...
Replicación Sincrónica

• Control de la sincronización por transacción a través de synchronous_commit.
• Mejoras respecto a la versión 9.0.
• Funciones para pausar y mostrar el estado del esclavo
       • pg_xlog_replay_pause()
       • pg_is_xlog_replay_paused()
       • pg_xlog_replay_resume()
       • pg_last_xact_replay_timestamp()
       • Pg_last_xact_replay_location()
• pg_ctl incluye “promote” para el esclavo
• Clonación de esclavo sin downtime (pg_basebackup)
• Mayor información del estado de los esclavos (pg_stat_replication).
• pg_stat_database_conflicts para saber el estado de consultas canceladas.
Replicación
Fuentes de los servidores Standby
Replicación Sincrónica (una vista más detallada)

                Read/write                                              Read only

                                       NEW

                                             hot_standby_feedback

                                                                    Sync
        Master                                   Wal Receiver       Slave


wal_keep_segments




      Wal Sender
                                                  Wal Receiver
      Wal Sender                                                    Async
                    wal_sender_delay                                Slave
Limitaciones en la replicación

•   Solo un servidor puede ser sincrónico.
•   No soporta multi-master.
•   No soporta replicación parcial.
•   No soporta distribución de datos.
Soporte datos foráneos
                            (MED – Management of External Data)
CREATE EXTENSION file_fdw;

CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE gaiyin (
  nombre text,
  numero integer,
  letra char(1)
) SERVER pglog
OPTIONS ( filename 'c:tempfile.csv', format 'csv' );

postgres=# explain select * from gaiyin;
                     QUERY PLAN
-----------------------------------------------------------
 Foreign Scan on gaiyin (cost=0.00..1.10 rows=1 width=44)
   Foreign File: c:tempfile.csv
   Foreign File Size: 36
(3 filas)
                                                              http://wiki.postgresql.org/wiki/SQL/MED
Soporte Datos foráneos - mysql_fdw

apt-get install libmysqld-dev
                                                        CREATE FOREIGN TABLE prueba_my (
* Compilar como un contrib (make; make install)         id integer,
                                                        name text,
CREATE EXTENSION mysql_fdw;                             address text)
                                                        SERVER mysql_svr
CREATE SERVER mysql_srv                                 OPTIONS (table 'palomino.prueba');
FOREIGN DATA WRAPPER mysql_fdw
OPTIONS (address 'localhost', port '3306');

CREATE USER MAPPING
FOR PUBLIC SERVER mysql_srv
OPTIONS (username 'root',password 'postgres');

CREATE FOREIGN TABLE prueba_my
(texto text, numero int, floaty float)
SERVER mysql_srv OPTIONS (table 'palomino.prueba');




                           Fuente: http://pgsnake.blogspot.com/2011/08/postgresql-91-meet-mysql.html
Soporte datos foráneos (conexión a otras bases)



Oracle
Mysql
OBDC
Redis
CouchDB
Filetext
Twitter
LDAP
…

http://wiki.postgresql.org/wiki/Foreign_data_wrappers
http://repositorio.siu.edu.ar/trac/postgresql/wiki/Dblink
Soporte de internalización por columna

CREATE TABLE prueba_texto (                 • < 8.4 el COLLATE estaba ligado al
   _id serial PRIMARY KEY,                    sistema operativo, siendo muy poco
  texto_en text COLLATE 'en_US',              flexible.
  texto_es text COLLATE 'es_ES'             • En esta versión podemos tener
);
                                              incluso columnas con
SELECT                                        ordenamientos específicos.
  texto_es < (’rendevouz’ COLLATE"es_ES")   • Se pueden crear índices utilizando
  FROM prueba_texto;                          un ordenamiento específico.
                                               • En este caso tener cuidado,
SELECT
  texto_es COLLATE "en_EN" < texto_en             porque el utilizar otro COLLATE
  FROM prueba_texto;                              hará que no utilice el índice.

CREATE INDEX ON prueba
 (texto COLLATE “en_US);
SSI
• Serializable Snapshot Isolation (traducirlo? … ¬¬)
    • Aislamiento de Instantánea serializable.
• Postgres ahora soporta 3 niveles transaccionales:
        • READ COMMITED
        • REPETEABLE READ (viejo SERIALIZABLE)
            • Es lo que sería SNAPSHOT ISOLATION
        • SERIALIZABLE
• No es necesario “select for update”
• Simplificación de la programación
• Tiene coste, utiliza bloqueo predicativo, incrementa el número de rollbacks debido a
conflictos.



http://wiki.postgresql.org/wiki/SSI
http://wiki.postgresql.org/images/4/4f/SSI-PGConfEU2011.pdf
Tablas efímeras
•   Llamadas UNLOGGED TABLES.
•   Estas tablas no pueden recuperarse ya que no figuran en la WAL.
•   Minimizan el impacto de escritura en disco.
•   No son replicadas mediante streaming.
•   Truncadas en caso de crash.
•   Casos especiales sobre contención de CLOG
    http://rhaas.blogspot.com/2011/11/hint-bits.html
Expresiones comunes de tablas con escritura
• WCTE
• CTE fue implementado desde 8.4
• Información avanzada: http://wiki.postgresql.org/images/d/da/Ciolli-debug-wcte-2011.pdf

                                                 WITH table_temp(i,j,k) AS
                                                 (
                                                   DELETE FROM prueba WHERE i =9 RETURNING *
                                                 )
                                                 INSERT INTO prueba_del
                                                 SELECT i,j,k
                                                 FROM table_temp;
  WITH RECURSIVE t(a,b) AS (
       VALUES(0,1)
     UNION ALL
       SELECT greatest(a,b), a + b AS a FROM t
       WHERE b < $1
    )
  SELECT a FROM t;
KNN para GiST y GIN
 • Búsqueda de valores cercanos utilizando índices.
   • Facilita la búsqueda de puntos cercanos.
 • Operador “<->”



Artículo ejemplo:
http://www.palominodb.com/blog/2011/10/12/indexing-text-columns-gist-or-gin-optimize-ilike-using-pgtrgm-postgres-91-part-1
http://wiki.postgresql.org/images/4/46/Knn.pdf
Soporte SE-LINUX
• Integración con SE-LINUX.
• Tienen prioridad los permisos otorgados desde el SO en vez de los de la Base de
  Datos.
• Este módulo debe ser activado explícitamente.
• Se basa en la creación de SECURITY LABELS
• NOTA: Se requiere que las librerías de SELINUX del kernel sean mayores a las
  2.0.93. Estas librerías vienen por defecto en los kernels mayores a 2.0.33




             http://wiki.postgresql.org/wiki/SEPostgreSQL_Documentation
Características menores (ALTER ENUM)


• ALTER TYPE tipo_enum ADD VALUE new_value [{BEFORE|AFTER} existing_value];

              CREATE TYPE lista AS ENUM ('tipoa','tipob','tipoc');

              ALTER TYPE lista ADD VALUE 'tipoa2' AFTER 'tipoa';
PGXN
https://github.com/pgxn/pgxn-client
http://pgxn.org/faq/
Cambios varios
• Casteos para tipos compuestos como al estilo función/atributo fueron dehabilitados.
    • valor_compuesto.text, text(valor_compuesto)
• CREATE EXTENSION
• Puesta a punto automática de wal_buffers
• Mejoras en índices GiST y GIN
• Evento INSTEAD OF para disparadores (útil para creación de vistas actualizables)
• Soporte de compilación para Windows 64 bits
• standard_conforming_strings ahora está establecido por defecto en ‘on’
    • Antes ‘O’Connor’ , ahora ‘O’’Connor’ o E’O’Connor’
• Cambios en PL/SQL (RAISE sin parámetros)
• Performance mejorada para tablas heredadas (Merge Append node – Ordenamiento de
tablas heredadas dentro del append en vez de fuera).
• Algoritmo Hash para FULL OUTER JOIN.
• Información detallada: http://www.postgresql.org/docs/9.1/static/release-9-1.html
Cambios varios (II)
• Permisos de replicación (no hace falta que el usuario sea SUPERUSER)
• Mejoras en la seguridad de conexión entre servidores replicados para evitar ataques
internos.
• Dependencias funcionales de una PK reconocidas por el GROUP BY.
    • Antes: ERROR: column "tabla.col_pk" must appear in the GROUP BY clause or be
      used in an aggregate function.
•
Novedades varias
• PLV8 ( JavaScript V8 procedural language)
• Postgres-XC http://postgres-xc.sourceforge.net/
• PgPool II 3.1
• Nuevas versiones de londiste, plproxy, bucardo e/otros.
PostgreSQL 9.2

Características integradas / a integrar:

* Index only scans
* Slave replication cascade
* Fix para las unlogged tables en concurrencia masiva
*…


http://wiki.postgresql.org/wiki/PostgreSQL_9.2_Development_Plan
Gracias por asistir!!
Presentación hecha en Libre/Open Office
LSWC PostgreSQL 9.1 (2011)

Más contenido relacionado

PDF
Admon PG 1
PPTX
Instalación y configuración de sgbd presentacion
PDF
Dba PostgreSQL desde básico a avanzado parte2
PDF
Postgre sql y_replicacion_slony_p
PPTX
Pentaho BI
PDF
Documentacion postgresql
PDF
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
DOCX
Requeriminetos de sgbd oracle
Admon PG 1
Instalación y configuración de sgbd presentacion
Dba PostgreSQL desde básico a avanzado parte2
Postgre sql y_replicacion_slony_p
Pentaho BI
Documentacion postgresql
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
Requeriminetos de sgbd oracle

La actualidad más candente (20)

PDF
Requerimientos de PostgreSQL
DOCX
Instalación y Configuración de Pentaho BI y MySQL
DOCX
Instalación de Oracle Database 11g R2 sobre Oracle Linux X86_64
PDF
Cuellos botella en PostgreSQL
PDF
Presentación de Postgresql 9.1
PDF
Rendimiento en magento
PDF
Postgre sql
PDF
Instalacion de Pentaho 5 con PostgreSQL 9.3
DOC
Replicacion con postgresql y slony
PDF
Mejores Prácticas Administración de Base de Datos Oracle
DOC
Tp1 db avanz-v1.1
PDF
COMO INSTALAR MySQL EN LINUX
PDF
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
PDF
Instalar Oracle 11g R2 CentOS 6.4
PDF
ODP
Así que pusiste MongoDB. Dime ¿cómo lo administras?
PPTX
JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3
ODP
Administrando Jboss
PDF
Dba PostgreSQL desde básico a avanzado parte1
DOCX
Exposicion apache kafka
Requerimientos de PostgreSQL
Instalación y Configuración de Pentaho BI y MySQL
Instalación de Oracle Database 11g R2 sobre Oracle Linux X86_64
Cuellos botella en PostgreSQL
Presentación de Postgresql 9.1
Rendimiento en magento
Postgre sql
Instalacion de Pentaho 5 con PostgreSQL 9.3
Replicacion con postgresql y slony
Mejores Prácticas Administración de Base de Datos Oracle
Tp1 db avanz-v1.1
COMO INSTALAR MySQL EN LINUX
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Instalar Oracle 11g R2 CentOS 6.4
Así que pusiste MongoDB. Dime ¿cómo lo administras?
JBoss AS Implantación - configuración - Curso JBoss JB366 Día 3
Administrando Jboss
Dba PostgreSQL desde básico a avanzado parte1
Exposicion apache kafka
Publicidad

Similar a LSWC PostgreSQL 9.1 (2011) (20)

PDF
Estado del Desarrollo de PostgreSQL-9.0
PDF
PostgreSQL: Un motor Impulsado por una comunidad
PDF
PostgreSQL 9.2
PDF
Evolucion de PostgreSQL hasta 9.4
PDF
Evolución y avances del Gestor PostgreSQL
PDF
Taller de base de datos postgre sql
PDF
Aprendiendopostgresql 090812172635-phpapp01
PDF
Introducción a PostgreSql
ODP
Postgresql la apuesta_acertada
PPTX
Base de datos sql
PDF
Potsgrade emerson
PDF
Clase 2 - Arquitectura de Postgres
DOCX
Base de datos_-_material_didactico
PPTX
PostgreSQL
PPTX
SGBD Postgresql
PDF
Instalacion de postgre sql
PPTX
PostgreSQL
PDF
Alta disponibilidad-postgres
PPTX
Motor de base de datos
Estado del Desarrollo de PostgreSQL-9.0
PostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL 9.2
Evolucion de PostgreSQL hasta 9.4
Evolución y avances del Gestor PostgreSQL
Taller de base de datos postgre sql
Aprendiendopostgresql 090812172635-phpapp01
Introducción a PostgreSql
Postgresql la apuesta_acertada
Base de datos sql
Potsgrade emerson
Clase 2 - Arquitectura de Postgres
Base de datos_-_material_didactico
PostgreSQL
SGBD Postgresql
Instalacion de postgre sql
PostgreSQL
Alta disponibilidad-postgres
Motor de base de datos
Publicidad

Más de Emanuel Calvo (8)

PDF
Open Source SQL Databases
PDF
Demystifying postgres logical replication percona live sc
PDF
Pgbr 2013 fts
PDF
Pgbr 2013 postgres on aws
PDF
PostgreSQL and Sphinx pgcon 2013
PDF
PostgreSQL FTS Solutions FOSDEM 2013 - PGDAY
PDF
Monitoreo de MySQL y PostgreSQL con SQL
PDF
Osol Pgsql
Open Source SQL Databases
Demystifying postgres logical replication percona live sc
Pgbr 2013 fts
Pgbr 2013 postgres on aws
PostgreSQL and Sphinx pgcon 2013
PostgreSQL FTS Solutions FOSDEM 2013 - PGDAY
Monitoreo de MySQL y PostgreSQL con SQL
Osol Pgsql

Último (20)

PDF
004-CC2014-Irrigacion Mbb equinos del mundo
PPTX
libro proyecto con scratch jr pdf en la e
DOCX
Informee_APA_Microbittrabajoogrupal.docx
PDF
Estrategia de Apoyo Juan José Narvaéz 9-4
PPTX
Redes neuronales artificiales y como entrenarlas
PPTX
Simulación de corriente paralela en LEDS PowerPoint
PDF
Conceptos básicos de programación PseInt laura.pdf
PPTX
PRESENTACION El PODER DE LA MENTALIDAD.pptx
PPTX
Circuito de LED en paralelo mediante Switch
PPTX
Procesamiento-del-Lenguaje-Natural-Un-Viaje-Paso-a-Paso.pptx
PDF
sol tecnología 2025.pdf........pdf10-7grado
PPTX
VariablesExpresiones.pptx conceptos que puedes usar en c++
PDF
conceptosbsicosdeprogramacinpseintlaura.pdf
PDF
PLAN DE ASEGURAMIENTO CURSOS CORTOS 2024.pdf
DOCX
Conceptos básicos de programación PseInt laura.docx
PDF
EL RESPETO mejororado para aprender .pdf
PDF
Estrategia de apoyo de tecnología 9-5 Daylin Castaño
PDF
¿Qué hace un Data Warehouse Engineer blog.victorsantiz.com.pdf
PDF
Sesión 6 - Seguridad de almacenamiento.pdf
PPTX
TICs_en_la_vida_Cotidiana_tecnologiayMas
004-CC2014-Irrigacion Mbb equinos del mundo
libro proyecto con scratch jr pdf en la e
Informee_APA_Microbittrabajoogrupal.docx
Estrategia de Apoyo Juan José Narvaéz 9-4
Redes neuronales artificiales y como entrenarlas
Simulación de corriente paralela en LEDS PowerPoint
Conceptos básicos de programación PseInt laura.pdf
PRESENTACION El PODER DE LA MENTALIDAD.pptx
Circuito de LED en paralelo mediante Switch
Procesamiento-del-Lenguaje-Natural-Un-Viaje-Paso-a-Paso.pptx
sol tecnología 2025.pdf........pdf10-7grado
VariablesExpresiones.pptx conceptos que puedes usar en c++
conceptosbsicosdeprogramacinpseintlaura.pdf
PLAN DE ASEGURAMIENTO CURSOS CORTOS 2024.pdf
Conceptos básicos de programación PseInt laura.docx
EL RESPETO mejororado para aprender .pdf
Estrategia de apoyo de tecnología 9-5 Daylin Castaño
¿Qué hace un Data Warehouse Engineer blog.victorsantiz.com.pdf
Sesión 6 - Seguridad de almacenamiento.pdf
TICs_en_la_vida_Cotidiana_tecnologiayMas

LSWC PostgreSQL 9.1 (2011)

  • 1. PostgreSQL 9.1 (Presentación para Libre Software World Conference) Presentado por: Emanuel Calvo @3manuek DBA www.palominodb.com
  • 2. Sobre el palestrante y la presentación: • Operational DBA at PalominoDB • Consultor Principal en Helpame • DBA Mysql y Oracle en Aedgency. • Twitter: @3manuek • Mail: emanuel@{palominodb.com|helpame.com} • Esta presentación está basada en el artículo del mismo ponente: • http://palominodb.com/blog/2011/09/28/postgresql-91-part-1-general-features
  • 3. Nuevas características • Replicación sincrónica • Soporte de datos foráneos • Soporte de internalización por columna • Instantánea de aislamiento serializable (SSI) • Tablas efímeras • Expresiones comunes de tablas con escritura • Algoritmo de KNN para índices GIST e GIN • Soporte SE-LINUX • Actualización de la versión del lenguaje Python • PGXN • Otras cosas adicionales...
  • 4. Replicación Sincrónica • Control de la sincronización por transacción a través de synchronous_commit. • Mejoras respecto a la versión 9.0. • Funciones para pausar y mostrar el estado del esclavo • pg_xlog_replay_pause() • pg_is_xlog_replay_paused() • pg_xlog_replay_resume() • pg_last_xact_replay_timestamp() • Pg_last_xact_replay_location() • pg_ctl incluye “promote” para el esclavo • Clonación de esclavo sin downtime (pg_basebackup) • Mayor información del estado de los esclavos (pg_stat_replication). • pg_stat_database_conflicts para saber el estado de consultas canceladas.
  • 6. Fuentes de los servidores Standby
  • 7. Replicación Sincrónica (una vista más detallada) Read/write Read only NEW hot_standby_feedback Sync Master Wal Receiver Slave wal_keep_segments Wal Sender Wal Receiver Wal Sender Async wal_sender_delay Slave
  • 8. Limitaciones en la replicación • Solo un servidor puede ser sincrónico. • No soporta multi-master. • No soporta replicación parcial. • No soporta distribución de datos.
  • 9. Soporte datos foráneos (MED – Management of External Data) CREATE EXTENSION file_fdw; CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw; CREATE FOREIGN TABLE gaiyin ( nombre text, numero integer, letra char(1) ) SERVER pglog OPTIONS ( filename 'c:tempfile.csv', format 'csv' ); postgres=# explain select * from gaiyin; QUERY PLAN ----------------------------------------------------------- Foreign Scan on gaiyin (cost=0.00..1.10 rows=1 width=44) Foreign File: c:tempfile.csv Foreign File Size: 36 (3 filas) http://wiki.postgresql.org/wiki/SQL/MED
  • 10. Soporte Datos foráneos - mysql_fdw apt-get install libmysqld-dev CREATE FOREIGN TABLE prueba_my ( * Compilar como un contrib (make; make install) id integer, name text, CREATE EXTENSION mysql_fdw; address text) SERVER mysql_svr CREATE SERVER mysql_srv OPTIONS (table 'palomino.prueba'); FOREIGN DATA WRAPPER mysql_fdw OPTIONS (address 'localhost', port '3306'); CREATE USER MAPPING FOR PUBLIC SERVER mysql_srv OPTIONS (username 'root',password 'postgres'); CREATE FOREIGN TABLE prueba_my (texto text, numero int, floaty float) SERVER mysql_srv OPTIONS (table 'palomino.prueba'); Fuente: http://pgsnake.blogspot.com/2011/08/postgresql-91-meet-mysql.html
  • 11. Soporte datos foráneos (conexión a otras bases) Oracle Mysql OBDC Redis CouchDB Filetext Twitter LDAP … http://wiki.postgresql.org/wiki/Foreign_data_wrappers http://repositorio.siu.edu.ar/trac/postgresql/wiki/Dblink
  • 12. Soporte de internalización por columna CREATE TABLE prueba_texto ( • < 8.4 el COLLATE estaba ligado al _id serial PRIMARY KEY, sistema operativo, siendo muy poco texto_en text COLLATE 'en_US', flexible. texto_es text COLLATE 'es_ES' • En esta versión podemos tener ); incluso columnas con SELECT ordenamientos específicos. texto_es < (’rendevouz’ COLLATE"es_ES") • Se pueden crear índices utilizando FROM prueba_texto; un ordenamiento específico. • En este caso tener cuidado, SELECT texto_es COLLATE "en_EN" < texto_en porque el utilizar otro COLLATE FROM prueba_texto; hará que no utilice el índice. CREATE INDEX ON prueba (texto COLLATE “en_US);
  • 13. SSI • Serializable Snapshot Isolation (traducirlo? … ¬¬) • Aislamiento de Instantánea serializable. • Postgres ahora soporta 3 niveles transaccionales: • READ COMMITED • REPETEABLE READ (viejo SERIALIZABLE) • Es lo que sería SNAPSHOT ISOLATION • SERIALIZABLE • No es necesario “select for update” • Simplificación de la programación • Tiene coste, utiliza bloqueo predicativo, incrementa el número de rollbacks debido a conflictos. http://wiki.postgresql.org/wiki/SSI http://wiki.postgresql.org/images/4/4f/SSI-PGConfEU2011.pdf
  • 14. Tablas efímeras • Llamadas UNLOGGED TABLES. • Estas tablas no pueden recuperarse ya que no figuran en la WAL. • Minimizan el impacto de escritura en disco. • No son replicadas mediante streaming. • Truncadas en caso de crash. • Casos especiales sobre contención de CLOG http://rhaas.blogspot.com/2011/11/hint-bits.html
  • 15. Expresiones comunes de tablas con escritura • WCTE • CTE fue implementado desde 8.4 • Información avanzada: http://wiki.postgresql.org/images/d/da/Ciolli-debug-wcte-2011.pdf WITH table_temp(i,j,k) AS ( DELETE FROM prueba WHERE i =9 RETURNING * ) INSERT INTO prueba_del SELECT i,j,k FROM table_temp; WITH RECURSIVE t(a,b) AS ( VALUES(0,1) UNION ALL SELECT greatest(a,b), a + b AS a FROM t WHERE b < $1 ) SELECT a FROM t;
  • 16. KNN para GiST y GIN • Búsqueda de valores cercanos utilizando índices. • Facilita la búsqueda de puntos cercanos. • Operador “<->” Artículo ejemplo: http://www.palominodb.com/blog/2011/10/12/indexing-text-columns-gist-or-gin-optimize-ilike-using-pgtrgm-postgres-91-part-1 http://wiki.postgresql.org/images/4/46/Knn.pdf
  • 17. Soporte SE-LINUX • Integración con SE-LINUX. • Tienen prioridad los permisos otorgados desde el SO en vez de los de la Base de Datos. • Este módulo debe ser activado explícitamente. • Se basa en la creación de SECURITY LABELS • NOTA: Se requiere que las librerías de SELINUX del kernel sean mayores a las 2.0.93. Estas librerías vienen por defecto en los kernels mayores a 2.0.33 http://wiki.postgresql.org/wiki/SEPostgreSQL_Documentation
  • 18. Características menores (ALTER ENUM) • ALTER TYPE tipo_enum ADD VALUE new_value [{BEFORE|AFTER} existing_value]; CREATE TYPE lista AS ENUM ('tipoa','tipob','tipoc'); ALTER TYPE lista ADD VALUE 'tipoa2' AFTER 'tipoa';
  • 20. Cambios varios • Casteos para tipos compuestos como al estilo función/atributo fueron dehabilitados. • valor_compuesto.text, text(valor_compuesto) • CREATE EXTENSION • Puesta a punto automática de wal_buffers • Mejoras en índices GiST y GIN • Evento INSTEAD OF para disparadores (útil para creación de vistas actualizables) • Soporte de compilación para Windows 64 bits • standard_conforming_strings ahora está establecido por defecto en ‘on’ • Antes ‘O’Connor’ , ahora ‘O’’Connor’ o E’O’Connor’ • Cambios en PL/SQL (RAISE sin parámetros) • Performance mejorada para tablas heredadas (Merge Append node – Ordenamiento de tablas heredadas dentro del append en vez de fuera). • Algoritmo Hash para FULL OUTER JOIN. • Información detallada: http://www.postgresql.org/docs/9.1/static/release-9-1.html
  • 21. Cambios varios (II) • Permisos de replicación (no hace falta que el usuario sea SUPERUSER) • Mejoras en la seguridad de conexión entre servidores replicados para evitar ataques internos. • Dependencias funcionales de una PK reconocidas por el GROUP BY. • Antes: ERROR: column "tabla.col_pk" must appear in the GROUP BY clause or be used in an aggregate function. •
  • 22. Novedades varias • PLV8 ( JavaScript V8 procedural language) • Postgres-XC http://postgres-xc.sourceforge.net/ • PgPool II 3.1 • Nuevas versiones de londiste, plproxy, bucardo e/otros.
  • 23. PostgreSQL 9.2 Características integradas / a integrar: * Index only scans * Slave replication cascade * Fix para las unlogged tables en concurrencia masiva *… http://wiki.postgresql.org/wiki/PostgreSQL_9.2_Development_Plan
  • 24. Gracias por asistir!! Presentación hecha en Libre/Open Office