PostgreSQL 2011
                             PostgreSQL 9.1




                                Ernesto Quiñones Azcárate
            Regional Press Contact para Perú de PostgreSQL
                                         pe@postgresql.org

http://www.postgresql.org                                    1/19
pe@postgresql.org
PostgreSQL 9.1



                            ¿Qué nuevo nos trae?




http://www.postgresql.org                          2/19
pe@postgresql.org
PostgreSQL 9.1


       ●   Replicación Síncrona
       ●   Soporte de Tablas foráneas
       ●   Internacionalización por Campo/Columna
       ●   Tablas sin Log
       ●   SELinux integrado a PostgreSQL
       ●   Y muchas muchas funcionalidades nuevas más y mejoras a
       nivel de motor de base de datos.



http://www.postgresql.org                                           3/19
pe@postgresql.org
PostgreSQL 9.1 – Replicación Síncrona


       PostgreSQL incorpora dentro de su funcionalidad replicación
       desde la versión 9.0, esta es asíncrona, es decir existe tiempo
       de demora entre el servidor MASTER procesando la
       información y el servidor SLAVE recibiendola, para este tipo
       de replicación se utilizan los archivos de WAL de PostgreSQL
       que permiten regenerar una base de datos, la debilidad de
       esta replicación es que ante caidas del MASTER algunas
       transacciones podrían no haber llegado al SLAVE.


http://www.postgresql.org                                                4/19
pe@postgresql.org
PostgreSQL 9.1 – Replicación Síncrona

       ●Las transacciones no se completan a menos que se
       completen en el servidor MASTER y en el SLAVE (esto genera
       un tiempo de proceso mayor para cada transacción).
       ●La única posibilidad de perder data la momento de una caida

       es que ambos servidores colapsen al mismo tiempo.

                   MASTER                  SLAVE

                      WAL                   WAL


                     DATA                   DATA



http://www.postgresql.org                                             5/19
pe@postgresql.org
PostgreSQL 9.1 – Replicación Síncrona

       ●Para reducir el tiempo de demora en completar las
       transacciones PostgreSQL 9.1 ahora implementa la
       posibilidad de especificar el nivel de importancia de las
       mismas, desde toda una db, un usuario, una conexión o hasta
       una transacción en específico de tal manera que podamos
       priorizar las más importantes y asegurarnos que se repliquen
       primero ante posible caidas del sistema.




http://www.postgresql.org                                             6/19
pe@postgresql.org
PostgreSQL 9.1 – Replicación Síncrona

       ●Con el fin de generar entornos con mayor tolerancia a fallos
       la replicación puede ser configurada para copiar la data a
       multiples servidores.
                                    MASTER




                            SLAVE    SLAVE     SLAVE




http://www.postgresql.org                                              7/19
pe@postgresql.org
PostgreSQL 9.1 – Soporte de Tablas Foráneas

       ●PostgreSQL desde hace un tiempo soporta gracias a
       paquetes del CONTRIB para acceder a data en otros motores
       de bases de datos.

       ●Ahora se puede configurar las conexiones sin instalar
       paquetes adicionales e interactuar directamente con las
       tablas ejecutando comandos como:
         ● Create foreign table

         ● Alter .....

         ● Drop .....




http://www.postgresql.org                                          8/19
pe@postgresql.org
PostgreSQL 9.1 – Soporte de Tablas Foráneas




       CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
          { column_name data_type [ NULL | NOT NULL ] }
          [, ... ]
          ])
          SERVER server_name
          [ OPTIONS ( option ’value’ [, ... ] ) ]




http://www.postgresql.org                                      9/19
pe@postgresql.org
PostgreSQL 9.1 – Internacionalización por Campo/Columna

       ●Desde PostgreSQL 8.3 la internacionalización de las
       “cadenas” de nuestra base de datos se unía fuertemente a la
       del sistema operativo en el cual se ejecutaba.
       ●Ahora es posible definir por cada columna de nuestra tabla,

       si así lo requerimos, un juego de caracteres diferente.


                            CREATE TABLE test1 (
                               a text COLLATE "de_DE",
                               b text COLLATE "es_ES",
                               ...
                            );




http://www.postgresql.org                                             10/19
pe@postgresql.org
PostgreSQL 9.1 – Internacionalización por Campo/Columna

       ●También es posible ahora especificar la internacionalización
       a utilizar cuando realizamos una consulta, por ejemplo:

                      SELECT a < (’foo’ COLLATE "fr_FR") FROM test1;


                       SELECT a COLLATE "de_DE" < b FROM test1;

       ●PostgreSQL ahora incluye soporte para +/- 50 juegos de
       caracteres internacionales diferentes, incluyendo idiomas
       arábicos y asiáticos.



http://www.postgresql.org                                              11/19
pe@postgresql.org
PostgreSQL 9.1 – Tablas sin Log

       ●PostgreSQL guarda un “log de transacciones”, este log es en
       palabras simples un ahora de proceso especial (en disco)
       donde los datos son trabajados antes de pasar al repositorio
       principal de los datos “finales”.

       ●Esto permite asegurar la integridad de la data antes de ser
       “commiteada” al respositorio “final”, apoya al trabajo de alta
       concurrencia para evitar coliciones entre los usuarios.

       ●Estas ventajas tienen un costo en tiempo de procesamiento
       y trabajo en disco, ahora es posible desactivarlas opteniendo
       un tiempo de respuesta mucho mayor a un costo de mayor
       sensibilidad en nuestra base de datos.

http://www.postgresql.org                                               12/19
pe@postgresql.org
PostgreSQL 9.1 – Tablas sin Log

       ●Esto debe ser utilizado solo en entornos donde el hardware
       es altamente confiable y con opciones de redundancia porque
       ante caidas del sistema no podrá ser recuperada la
       información si esta se corrompe.

       ●Estas tablas no podrán ser replicadas por los diferentes
       tipos (/síncrono y asíncrono) de servicio que ofrece
       Postgresql integrados.

       ●La performance en operaciones de escritura en tablas
       mejoras hasta en 10 veces usando el parametro “unlogged”
       al crearlas.


http://www.postgresql.org                                          13/19
pe@postgresql.org
PostgreSQL 9.1 – SELinux integrado a PostgreSQL

       ●Security Enhanced Linux fue creado por la Agencia de
       Seguridad Nacional de EEUU, consiste en una serie de
       modificaciones para el kernel de Linux con el fin de otorgar
       altos niveles de seguridad a este.

       ●Ahora podemos compartir estos niveles de seguridad con
       PostgreSQL utilizando el comando SECURITY LABEL.


                     SECURITY LABEL FOR selinux ON TABLE mytable
                         IS ’system_u:object_r:sepgsql_table_t:s0’;




http://www.postgresql.org                                             14/19
pe@postgresql.org
PostgreSQL 9.1 – SELinux integrado a PostgreSQL

       ●Este módulo debe ser activado explicitamente y no contiene
       en la actualidad el soporte de TODAS las reglas de SELinux.




http://www.postgresql.org                                            15/19
pe@postgresql.org
PostgreSQL 9.1 – SELinux integrado a PostgreSQL

       ●Para utilizar esto se requiere:
         ● Kernel de Linux 2.6.28 o superior

         ● Que el kernel tenga el soporte de SELinux 3.9.13 o

           superior

       ●Es posible configurar que Bases de Datos de mi servidor
       deben tener soporte de SELinux ejecutando dentro de ella el
       script “sepgsql.sql”.

       ●Con este soporte los accesos a tablas y funciones serán
       controlados por SEPostgreSQL y se sobrepondrán a los
       definidos en la base de datos con GRANT y REVOKE, se
       puede llegar a controlar incluso campos y registros
       específicos.
http://www.postgresql.org                                            16/19
pe@postgresql.org
PostgreSQL 9.1 – SELinux integrado a PostgreSQL

           SECURITY LABEL [ FOR provider ] ON
           {
              TABLE object_name |
              COLUMN table_name.column_name |
              AGGREGATE agg_name (agg_type [, ...] ) |
              DOMAIN object_name |
              FOREIGN TABLE object_name
              FUNCTION function_name ( [ [ argmode ] [ argname ] argtype   [, ...]
           ])|
              LARGE OBJECT large_object_oid |
              [ PROCEDURAL ] LANGUAGE object_name |
              SCHEMA object_name |
              SEQUENCE object_name |
              TYPE object_name |
              VIEW object_name
           } IS ’label’


http://www.postgresql.org                                                            17/19
pe@postgresql.org
PostgreSQL 9.1 – ¿HAY MAS?

        Si mucho mas ..... visita http://www.postgresql.org

       ●http://www.postgresql.org/docs/9.1/static/release-9-1.html

       ●http://www.postgresql.org/docs/9.1/static/release-9-1-1.html



                 Ya estamos discutiendo que viene
                        En PostgreSQL 9.2


http://www.postgresql.org                                              18/19
pe@postgresql.org
PostgreSQL 9.1 – ¿QUIERES APOYARNOS?

           Toda ayuda es bienvenida:

       ●   Necesitamos diseñadores gráficos para crear material
           publicitario y educativo.
       ●   Necesitamos traductores de documentación oficial (el
           manual oficial tiene más de 2500 páginas A4).
       ●   Puedes apoyar en la programación si sabes C.
       ●   Usalo en tus investigaciones y en tus negocios.


                            GRACIAS
                   Nos vemos en PostgreSQL 9.2 :)

http://www.postgresql.org                                         19/19
pe@postgresql.org

Presentación de Postgresql 9.1

  • 1.
    PostgreSQL 2011 PostgreSQL 9.1 Ernesto Quiñones Azcárate Regional Press Contact para Perú de PostgreSQL pe@postgresql.org http://www.postgresql.org 1/19 pe@postgresql.org
  • 2.
    PostgreSQL 9.1 ¿Qué nuevo nos trae? http://www.postgresql.org 2/19 pe@postgresql.org
  • 3.
    PostgreSQL 9.1 ● Replicación Síncrona ● Soporte de Tablas foráneas ● Internacionalización por Campo/Columna ● Tablas sin Log ● SELinux integrado a PostgreSQL ● Y muchas muchas funcionalidades nuevas más y mejoras a nivel de motor de base de datos. http://www.postgresql.org 3/19 pe@postgresql.org
  • 4.
    PostgreSQL 9.1 –Replicación Síncrona PostgreSQL incorpora dentro de su funcionalidad replicación desde la versión 9.0, esta es asíncrona, es decir existe tiempo de demora entre el servidor MASTER procesando la información y el servidor SLAVE recibiendola, para este tipo de replicación se utilizan los archivos de WAL de PostgreSQL que permiten regenerar una base de datos, la debilidad de esta replicación es que ante caidas del MASTER algunas transacciones podrían no haber llegado al SLAVE. http://www.postgresql.org 4/19 pe@postgresql.org
  • 5.
    PostgreSQL 9.1 –Replicación Síncrona ●Las transacciones no se completan a menos que se completen en el servidor MASTER y en el SLAVE (esto genera un tiempo de proceso mayor para cada transacción). ●La única posibilidad de perder data la momento de una caida es que ambos servidores colapsen al mismo tiempo. MASTER SLAVE WAL WAL DATA DATA http://www.postgresql.org 5/19 pe@postgresql.org
  • 6.
    PostgreSQL 9.1 –Replicación Síncrona ●Para reducir el tiempo de demora en completar las transacciones PostgreSQL 9.1 ahora implementa la posibilidad de especificar el nivel de importancia de las mismas, desde toda una db, un usuario, una conexión o hasta una transacción en específico de tal manera que podamos priorizar las más importantes y asegurarnos que se repliquen primero ante posible caidas del sistema. http://www.postgresql.org 6/19 pe@postgresql.org
  • 7.
    PostgreSQL 9.1 –Replicación Síncrona ●Con el fin de generar entornos con mayor tolerancia a fallos la replicación puede ser configurada para copiar la data a multiples servidores. MASTER SLAVE SLAVE SLAVE http://www.postgresql.org 7/19 pe@postgresql.org
  • 8.
    PostgreSQL 9.1 –Soporte de Tablas Foráneas ●PostgreSQL desde hace un tiempo soporta gracias a paquetes del CONTRIB para acceder a data en otros motores de bases de datos. ●Ahora se puede configurar las conexiones sin instalar paquetes adicionales e interactuar directamente con las tablas ejecutando comandos como: ● Create foreign table ● Alter ..... ● Drop ..... http://www.postgresql.org 8/19 pe@postgresql.org
  • 9.
    PostgreSQL 9.1 –Soporte de Tablas Foráneas CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ { column_name data_type [ NULL | NOT NULL ] } [, ... ] ]) SERVER server_name [ OPTIONS ( option ’value’ [, ... ] ) ] http://www.postgresql.org 9/19 pe@postgresql.org
  • 10.
    PostgreSQL 9.1 –Internacionalización por Campo/Columna ●Desde PostgreSQL 8.3 la internacionalización de las “cadenas” de nuestra base de datos se unía fuertemente a la del sistema operativo en el cual se ejecutaba. ●Ahora es posible definir por cada columna de nuestra tabla, si así lo requerimos, un juego de caracteres diferente. CREATE TABLE test1 ( a text COLLATE "de_DE", b text COLLATE "es_ES", ... ); http://www.postgresql.org 10/19 pe@postgresql.org
  • 11.
    PostgreSQL 9.1 –Internacionalización por Campo/Columna ●También es posible ahora especificar la internacionalización a utilizar cuando realizamos una consulta, por ejemplo: SELECT a < (’foo’ COLLATE "fr_FR") FROM test1; SELECT a COLLATE "de_DE" < b FROM test1; ●PostgreSQL ahora incluye soporte para +/- 50 juegos de caracteres internacionales diferentes, incluyendo idiomas arábicos y asiáticos. http://www.postgresql.org 11/19 pe@postgresql.org
  • 12.
    PostgreSQL 9.1 –Tablas sin Log ●PostgreSQL guarda un “log de transacciones”, este log es en palabras simples un ahora de proceso especial (en disco) donde los datos son trabajados antes de pasar al repositorio principal de los datos “finales”. ●Esto permite asegurar la integridad de la data antes de ser “commiteada” al respositorio “final”, apoya al trabajo de alta concurrencia para evitar coliciones entre los usuarios. ●Estas ventajas tienen un costo en tiempo de procesamiento y trabajo en disco, ahora es posible desactivarlas opteniendo un tiempo de respuesta mucho mayor a un costo de mayor sensibilidad en nuestra base de datos. http://www.postgresql.org 12/19 pe@postgresql.org
  • 13.
    PostgreSQL 9.1 –Tablas sin Log ●Esto debe ser utilizado solo en entornos donde el hardware es altamente confiable y con opciones de redundancia porque ante caidas del sistema no podrá ser recuperada la información si esta se corrompe. ●Estas tablas no podrán ser replicadas por los diferentes tipos (/síncrono y asíncrono) de servicio que ofrece Postgresql integrados. ●La performance en operaciones de escritura en tablas mejoras hasta en 10 veces usando el parametro “unlogged” al crearlas. http://www.postgresql.org 13/19 pe@postgresql.org
  • 14.
    PostgreSQL 9.1 –SELinux integrado a PostgreSQL ●Security Enhanced Linux fue creado por la Agencia de Seguridad Nacional de EEUU, consiste en una serie de modificaciones para el kernel de Linux con el fin de otorgar altos niveles de seguridad a este. ●Ahora podemos compartir estos niveles de seguridad con PostgreSQL utilizando el comando SECURITY LABEL. SECURITY LABEL FOR selinux ON TABLE mytable IS ’system_u:object_r:sepgsql_table_t:s0’; http://www.postgresql.org 14/19 pe@postgresql.org
  • 15.
    PostgreSQL 9.1 –SELinux integrado a PostgreSQL ●Este módulo debe ser activado explicitamente y no contiene en la actualidad el soporte de TODAS las reglas de SELinux. http://www.postgresql.org 15/19 pe@postgresql.org
  • 16.
    PostgreSQL 9.1 –SELinux integrado a PostgreSQL ●Para utilizar esto se requiere: ● Kernel de Linux 2.6.28 o superior ● Que el kernel tenga el soporte de SELinux 3.9.13 o superior ●Es posible configurar que Bases de Datos de mi servidor deben tener soporte de SELinux ejecutando dentro de ella el script “sepgsql.sql”. ●Con este soporte los accesos a tablas y funciones serán controlados por SEPostgreSQL y se sobrepondrán a los definidos en la base de datos con GRANT y REVOKE, se puede llegar a controlar incluso campos y registros específicos. http://www.postgresql.org 16/19 pe@postgresql.org
  • 17.
    PostgreSQL 9.1 –SELinux integrado a PostgreSQL SECURITY LABEL [ FOR provider ] ON { TABLE object_name | COLUMN table_name.column_name | AGGREGATE agg_name (agg_type [, ...] ) | DOMAIN object_name | FOREIGN TABLE object_name FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ])| LARGE OBJECT large_object_oid | [ PROCEDURAL ] LANGUAGE object_name | SCHEMA object_name | SEQUENCE object_name | TYPE object_name | VIEW object_name } IS ’label’ http://www.postgresql.org 17/19 pe@postgresql.org
  • 18.
    PostgreSQL 9.1 –¿HAY MAS? Si mucho mas ..... visita http://www.postgresql.org ●http://www.postgresql.org/docs/9.1/static/release-9-1.html ●http://www.postgresql.org/docs/9.1/static/release-9-1-1.html Ya estamos discutiendo que viene En PostgreSQL 9.2 http://www.postgresql.org 18/19 pe@postgresql.org
  • 19.
    PostgreSQL 9.1 –¿QUIERES APOYARNOS? Toda ayuda es bienvenida: ● Necesitamos diseñadores gráficos para crear material publicitario y educativo. ● Necesitamos traductores de documentación oficial (el manual oficial tiene más de 2500 páginas A4). ● Puedes apoyar en la programación si sabes C. ● Usalo en tus investigaciones y en tus negocios. GRACIAS Nos vemos en PostgreSQL 9.2 :) http://www.postgresql.org 19/19 pe@postgresql.org