SlideShare a Scribd company logo
1 of 25
Download to read offline
Un motor impulsado por una comunidad.




Santiago Zarate
@foursixnine
0416- 9113678
          santiago·@zarate.net.ve
http://blog.santiago.zarate.net.ve
Antes de comenzar
 Sobre PostgreSQL:



  ✔   Tiene sus inicios como Postgres95 en 1995
      ✔ Cambio de nombre en 1997 a PostgreSQL


  ✔   Ultimas versiones
      ✔ 9.0.3   8.4.7 8.3.14 8.2.20 9.1apha-5
  ✔   Licenciamiento TPL (The PostgreSQL Licence)
  ✔   Excelente documentacion
Antes de comenzar
 Sobre PostgreSQL: ¿Quienes estan detras?



  ✔   Es una Comunidad, no pertenece a ninguna compañia
  ✔   PostgreSQL Development Group
  ✔   Cientos de Usuarios en todo el mundo
      ✔ Desarrollo del Motor y nuevas funcionalidades


      ✔ Documentacion


      ✔ Aplicaciones


      ✔ Correccion de errores


      ✔ Traduccion
Antes de comenzar
 Sobre PostgreSQL: La gente
Antes de comenzar
 Sobre PostgreSQL: Quienes lo Utilizan.


 ✔   Es utilizado por gente grande
Antes de comenzar
 Sobre PostgreSQL: ¿Quienes Colaboran?


 ✔   Empresas que Colaboran
Entrando en materia
 Funcionalidades:

 ✔ ACID
   ✔ Atomicity, Consistency, Isolation and Durability


   ✔ Atomicidad, Consistencia, Aislamiento y Durabilidad


 ✔ Window Functions


 ✔ Querys Recursivos y Common Table Expressions


 ✔ PITR (Point in Time Recovery)


 ✔ Extensible:


   ✔ PL's (Lenguajes Procedurales)


   ✔ Directorio contrib/


   ✔ Soportado por:


   ✔ Java (JDBC), ODBC, Perl, Python, Ruby, C, C++, PHP,

     Lisp, Scheme, y Qt (Por nombrar algunos)
 ✔ Es Seguro
Lenguajes Procedurales
             Nativos

                                     CREATE OR REPLACE FUNCTION test_munge() RETURNS SETOF test AS $$
                                         my $rv = spi_exec_query('select i, v from test;');
                                         my $status = $rv->{status};
         ✔ pl/pgsql                      my $nrows = $rv->{processed};
         ✔ pl/perl                       foreach my $rn (0 .. $nrows - 1) {
                                             my $row = $rv->{rows}[$rn];
         ✔ sql                               $row->{i} += 200 if defined($row->{i});
                                             $row->{v} =~ tr/A-Za-z/a-zA-Z/ if (defined($row->{v}));
         ✔ pl/python                         return_next($row);
                                         }
         ✔ pl/tcl                        return undef;
                                     $$ LANGUAGE plperl;



CREATE FUNCTION make_pair (name text, value integer)
  RETURNS named_value
AS $$
  class named_value:
    def __init__ (self, n, v):
      self.name = n
      self.value = v
  return named_value(name, value)
  # or simply
  class nv: pass
  nv.name = name
  nv.value = value
  return nv
$$ LANGUAGE plpythonu;
Lenguajes Procedurales
        No Nativos

    ✔ pl/lua
    ✔ pl/php                    CREATE FUNCTION counter() RETURNS int AS $$
                                   while true do
    ✔ pl/r
                                     upvalue = upvalue + 1
    ✔ pl/javascript                  coroutine.yield(upvalue)
                                   end
    ✔ pl/lolcode                end
                                do
    ✔ pl/scheme
                                   upvalue = 0 -- counter
    ✔ pl/java
                                   counter = coroutine.wrap(counter)
                                $$
    ✔ pl/*                      LANGUAGE pllua;




  CREATE FUNCTION js_gen_series(mn FLOAT8, mx FLOAT8) RETURNS SETOF FLOAT8 AS $$
    while (mn <= mx) {
      yield mn;
      mn += 1;
    } $$;
LANGUAGE pljs
Lenguajes Procedurales
       Razones para utilizarlos


  ✔ Flexibilidad a la hora de familiarizarse con el motor
  ✔ Reduce la curva de aprendizaje del desarrollador (Utility)


  ✔ Agrega soporte para realizar “tareas esotericas” *


  ✔ Encapsulado no implica reducido.


    ✔ Acceso a otras tablas/bases de datos


       ✔ SPI


       ✔ Dbi


       ✔ Psycopg2


       ✔ jdbc
Lenguajes Procedurales
       Razones para no utilizarlos



  ✔ Añade dependencias extra
  ✔ Agrega otro paso al Mantenimiento


  ✔ Comunidades pequeñas *


  ✔ Posible uso malintencionado


    ✔ Y sin embargo...
Funcionalidades
        P.I.T.R. - Point in Time Recovery

    ✔ ¿Su sistema tuvo una falla de energia, o reinicio no programado?
    ✔ ¿Se daño su disco de respaldos y necesita revertir a un estado

    anterior su base de datos principal?
    ✔ ¿No desea utilizar un Sistema de Control de Versiones para

    Postgres?


            P.I.T.R. - Point in Time Recovery – Es la solucion
                   ✔ Solo con contar con PostgreSQL 8.2 en adelante
                   ✔ WAL activo


                   ✔ Un poco de tiempo y paciencia
Funcionalidades
    Hot Standby



          ✔ Similar el Active Data Guard de Oracle
            ✔ Solo que mejor.


          ✔ Facil de Configurar


          ✔ Va de la mano con Streaming Replication


            ✔ Si, Replicas (Asincronas) de la data en vivo, sin

              “extras”
Funcionalidades
    Streaming Replication

         ✔ Servidores (Maestros y esclavos) con caracteristicas similares.
         ✔ Los esclavos no escribiran datos


         ✔ Necesito solo 1 esclavo.


         ✔ Quiero que el esclavo sea exactamente igual al maestro.




Si respondio que si a las anteriores:
   Streaming Replication esta disponible ( 9.x )
Funcionalidades
    Streaming Replication

         ✔ Síncrona
           ✔ No hay perdida de datos al momento de una falla


         ✔ Se basa en los logs (WAL)


           ✔ Sin restricciones funcionales en el SQL


           ✔ Robusto, simple y facil de implementar


         ✔ Bajo impacto en operaciones


         ✔ Similar a Oracle Real Application Clusters


         ✔ Failover extremo (15 segundos)
Funcionalidades
     Funciones de Ventana – Window Functions

SELECT n.customer_id, n.order_id, n.order_total,
    COALESCE(SUM(o.order_total),0) As past_order_total

FROM orders AS n LEFT JOIN orders AS o
    ON (o.customer_id = n.customer_id
            AND n.order_datetime > o.order_datetime)

GROUP BY n.customer_id,
         n.order_datetime,
         n.order_id,
         n.order_total

ORDER BY n.customer_id,
         n.order_datetime,
          n.order_id;
Funcionalidades
        Funciones de Ventana – Window Functions



SELECT n.customer_id, n.order_id, n.order_total,
    SUM(n.order_total)

        OVER (PARTITION BY n.customer_id
                  ORDER BY n.order_datetime) - n.order_total
         as past_order_total

FROM orders AS n
ORDER BY n.customer_id, n.order_datetime, n.order_id;
Funcionalidades
    Funciones de Ventana – Window Functions
Funcionalidades
    Funciones de Ventana – Window Functions
Herramientas
      Facilitando el trabajo y ampliando las posibilidades



  ✔   Replicacion y Clustering
      ✔ PostgreSQL 9.x


      ✔ Slony-I


      ✔ PGCluster


      ✔ Burcado


      ✔ Skytools (Skype)


      ✔ Mamooth – replicator


      ✔ Rubyrep


      ✔ PL/Proxy


      ✔ PostgresForest


      ✔ Tungsten
Herramientas
      Facilitando el trabajo y ampliando las posibilidades



  ✔   Monitoreo
      ✔ Top y hotp


      ✔ Nagios + check_postgres (endpoint)


      ✔ pgFouine


      ✔ Munin


      ✔ Pgsnmpd


      ✔ pg_top


      ✔ tail_n_mail


      ✔ grep/sed/awk
Herramientas
      Facilitando el trabajo y ampliando las posibilidades



  ✔   Interfaces Graficas de Usuairo: Acceso y Diseño
      ✔ PgadminIII


      ✔ PhpPgAdmin


      ✔ Druid III *


      ✔ Tora


      ✔ Psql


      ✔ PgAccess


      ✔ SQrrieL SQL


      ✔ split_postgres_dump
Un elefante nunca olvida




  ✔ PostgreSQL es Multiplataforma
  ✔ No tiene precio – www.postgresql.org


  ✔ Sirve para practicar la lectura en ingles:


     ✔  Www.postgresql.org/docs/
     ✔ Wiki.postgresql.org


  ✔ Cuenta con su propia forja


     ✔ pgfoundry.org


  ✔ Desarrollo en caliente


     ✔ commitfest.postgresql.org


     ✔ git.postgresql.org


  ✔ La comunidad siempre ayuda


     ✔ Archives.postgresql.org


     ✔ #postgresql
¿Preguntas?


Santiago Zarate
@foursixnine

          santiago@zarate.net.ve
http://blog.santiago.zarate.net.ve

More Related Content

What's hot

Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2EQ SOFT EIRL
 
Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1EQ SOFT EIRL
 
Cluster con postgresql
Cluster con postgresqlCluster con postgresql
Cluster con postgresqlesmeraldaq2011
 
Manual de instalacion de PostGreSQL - Windows 7
Manual de instalacion de PostGreSQL - Windows 7Manual de instalacion de PostGreSQL - Windows 7
Manual de instalacion de PostGreSQL - Windows 7Mario Alfonso
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalaciónPrincezitha Ruiz
 
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.EtiCAGNU
 
Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQLEQ SOFT EIRL
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pedvin_marcelo
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)Emanuel Calvo
 
Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Alejandro E Brito Monedero
 
Requeriminetos de sgbd oracle
Requeriminetos de sgbd oracleRequeriminetos de sgbd oracle
Requeriminetos de sgbd oracleMarcos Vazquez
 
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
 

What's hot (20)

Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2
 
Postgre sql
Postgre sqlPostgre sql
Postgre sql
 
Postgresql
PostgresqlPostgresql
Postgresql
 
Postgresql expo
Postgresql expoPostgresql expo
Postgresql expo
 
Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1
 
Cluster con postgresql
Cluster con postgresqlCluster con postgresql
Cluster con postgresql
 
Manual de instalacion de PostGreSQL - Windows 7
Manual de instalacion de PostGreSQL - Windows 7Manual de instalacion de PostGreSQL - Windows 7
Manual de instalacion de PostGreSQL - Windows 7
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalación
 
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
 
Cuellos botella en PostgreSQL
Cuellos botella en PostgreSQLCuellos botella en PostgreSQL
Cuellos botella en PostgreSQL
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_p
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Postgre
PostgrePostgre
Postgre
 
Cluster en sql server
Cluster en sql serverCluster en sql server
Cluster en sql server
 
Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?
 
Requeriminetos de sgbd oracle
Requeriminetos de sgbd oracleRequeriminetos de sgbd oracle
Requeriminetos de sgbd oracle
 
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
 
Postgresql
PostgresqlPostgresql
Postgresql
 
Actividad 7
Actividad 7Actividad 7
Actividad 7
 

Viewers also liked

Una ventana hacia la eficacia administrando y monitoreando servicios
Una ventana hacia la eficacia administrando y monitoreando serviciosUna ventana hacia la eficacia administrando y monitoreando servicios
Una ventana hacia la eficacia administrando y monitoreando serviciosSantiago Zarate
 
Londiste Replication system for PostgreSQL
Londiste Replication system for PostgreSQLLondiste Replication system for PostgreSQL
Londiste Replication system for PostgreSQLelliando dias
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ruNikolay Samokhvalov
 
Scaling PostgreSQL with Skytools
Scaling PostgreSQL with SkytoolsScaling PostgreSQL with Skytools
Scaling PostgreSQL with SkytoolsGavin Roy
 
Monitoreo tunning postgresql_2011
Monitoreo tunning postgresql_2011Monitoreo tunning postgresql_2011
Monitoreo tunning postgresql_2011Lennin Caro
 
configuring a warm standby, the easy way
configuring a warm standby, the easy wayconfiguring a warm standby, the easy way
configuring a warm standby, the easy wayCommand Prompt., Inc
 
Implementing the Future of PostgreSQL Clustering with Tungsten
Implementing the Future of PostgreSQL Clustering with TungstenImplementing the Future of PostgreSQL Clustering with Tungsten
Implementing the Future of PostgreSQL Clustering with TungstenCommand Prompt., Inc
 
Replication using PostgreSQL Replicator
Replication using PostgreSQL ReplicatorReplication using PostgreSQL Replicator
Replication using PostgreSQL ReplicatorCommand Prompt., Inc
 
Python utilities for data presentation
Python utilities for data presentationPython utilities for data presentation
Python utilities for data presentationCommand Prompt., Inc
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresqljockbrera
 
Elephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksElephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksCommand Prompt., Inc
 
Howdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
Howdah - An Application using Pylons, PostgreSQL, Simpycity and ExceptableHowdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
Howdah - An Application using Pylons, PostgreSQL, Simpycity and ExceptableCommand Prompt., Inc
 
Administracion de Base de Datos Oracle
Administracion de Base de Datos OracleAdministracion de Base de Datos Oracle
Administracion de Base de Datos OracleISRAEL
 
Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oraclevinivaldivieso
 
Postgres in Production - Best Practices 2014
Postgres in Production - Best Practices 2014Postgres in Production - Best Practices 2014
Postgres in Production - Best Practices 2014EDB
 

Viewers also liked (20)

Una ventana hacia la eficacia administrando y monitoreando servicios
Una ventana hacia la eficacia administrando y monitoreando serviciosUna ventana hacia la eficacia administrando y monitoreando servicios
Una ventana hacia la eficacia administrando y monitoreando servicios
 
Londiste Replication system for PostgreSQL
Londiste Replication system for PostgreSQLLondiste Replication system for PostgreSQL
Londiste Replication system for PostgreSQL
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
 
Scaling PostgreSQL with Skytools
Scaling PostgreSQL with SkytoolsScaling PostgreSQL with Skytools
Scaling PostgreSQL with Skytools
 
Monitoreo tunning postgresql_2011
Monitoreo tunning postgresql_2011Monitoreo tunning postgresql_2011
Monitoreo tunning postgresql_2011
 
configuring a warm standby, the easy way
configuring a warm standby, the easy wayconfiguring a warm standby, the easy way
configuring a warm standby, the easy way
 
Implementing the Future of PostgreSQL Clustering with Tungsten
Implementing the Future of PostgreSQL Clustering with TungstenImplementing the Future of PostgreSQL Clustering with Tungsten
Implementing the Future of PostgreSQL Clustering with Tungsten
 
Backup and-recovery2
Backup and-recovery2Backup and-recovery2
Backup and-recovery2
 
Replication using PostgreSQL Replicator
Replication using PostgreSQL ReplicatorReplication using PostgreSQL Replicator
Replication using PostgreSQL Replicator
 
Pg migrator
Pg migratorPg migrator
Pg migrator
 
Go replicator
Go replicatorGo replicator
Go replicator
 
Python utilities for data presentation
Python utilities for data presentationPython utilities for data presentation
Python utilities for data presentation
 
A Practical Multi-Tenant Cluster
A Practical Multi-Tenant ClusterA Practical Multi-Tenant Cluster
A Practical Multi-Tenant Cluster
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresql
 
Elephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksElephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forks
 
PostgreSQL replication
PostgreSQL replicationPostgreSQL replication
PostgreSQL replication
 
Howdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
Howdah - An Application using Pylons, PostgreSQL, Simpycity and ExceptableHowdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
Howdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
 
Administracion de Base de Datos Oracle
Administracion de Base de Datos OracleAdministracion de Base de Datos Oracle
Administracion de Base de Datos Oracle
 
Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oracle
 
Postgres in Production - Best Practices 2014
Postgres in Production - Best Practices 2014Postgres in Production - Best Practices 2014
Postgres in Production - Best Practices 2014
 

Similar to PostgreSQL: Un motor Impulsado por una comunidad

Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mariano Reingart
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
Argentesting 2017 - Performance testing 101 con jmeter
Argentesting 2017 - Performance testing 101 con jmeterArgentesting 2017 - Performance testing 101 con jmeter
Argentesting 2017 - Performance testing 101 con jmeterArgentesting
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Escribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlEscribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlJose Luis Martínez
 
Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0Marcos Ortiz Valmaseda
 
MuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción DataweaveMuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción DataweaveFlorenciaCattelani
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada bcoca
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
Introducción a la Programación en Javascript. Clase 1
Introducción a la Programación en Javascript. Clase 1Introducción a la Programación en Javascript. Clase 1
Introducción a la Programación en Javascript. Clase 1xjordi
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo Association
 
Tema 6 Cont www.fresymetal.com
Tema 6 Cont www.fresymetal.comTema 6 Cont www.fresymetal.com
Tema 6 Cont www.fresymetal.comFresyMetal
 

Similar to PostgreSQL: Un motor Impulsado por una comunidad (20)

Qué hay de nuevo en PHP 7.2
Qué hay de nuevo en PHP 7.2Qué hay de nuevo en PHP 7.2
Qué hay de nuevo en PHP 7.2
 
Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015Mini clase Intro Programación Python UTN Profesorado 2015
Mini clase Intro Programación Python UTN Profesorado 2015
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
Argentesting 2017 - Performance testing 101 con jmeter
Argentesting 2017 - Performance testing 101 con jmeterArgentesting 2017 - Performance testing 101 con jmeter
Argentesting 2017 - Performance testing 101 con jmeter
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Escribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlEscribir plugins para Nagios en Perl
Escribir plugins para Nagios en Perl
 
Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0
 
Web Mapping con Django
Web Mapping con DjangoWeb Mapping con Django
Web Mapping con Django
 
MuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción DataweaveMuleSoft Buenos Aires Meetup Introducción Dataweave
MuleSoft Buenos Aires Meetup Introducción Dataweave
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Introducción a la Programación en Javascript. Clase 1
Introducción a la Programación en Javascript. Clase 1Introducción a la Programación en Javascript. Clase 1
Introducción a la Programación en Javascript. Clase 1
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Principios de Programacion
Principios de ProgramacionPrincipios de Programacion
Principios de Programacion
 
Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9
 
Tema 6 Cont www.fresymetal.com
Tema 6 Cont www.fresymetal.comTema 6 Cont www.fresymetal.com
Tema 6 Cont www.fresymetal.com
 
Python + Ciencia = ♥
Python + Ciencia = ♥Python + Ciencia = ♥
Python + Ciencia = ♥
 
Introducción a Php basico
Introducción a Php basicoIntroducción a Php basico
Introducción a Php basico
 

Recently uploaded

Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 

Recently uploaded (20)

Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 

PostgreSQL: Un motor Impulsado por una comunidad

  • 1. Un motor impulsado por una comunidad. Santiago Zarate @foursixnine 0416- 9113678 santiago·@zarate.net.ve http://blog.santiago.zarate.net.ve
  • 2. Antes de comenzar Sobre PostgreSQL: ✔ Tiene sus inicios como Postgres95 en 1995 ✔ Cambio de nombre en 1997 a PostgreSQL ✔ Ultimas versiones ✔ 9.0.3 8.4.7 8.3.14 8.2.20 9.1apha-5 ✔ Licenciamiento TPL (The PostgreSQL Licence) ✔ Excelente documentacion
  • 3. Antes de comenzar Sobre PostgreSQL: ¿Quienes estan detras? ✔ Es una Comunidad, no pertenece a ninguna compañia ✔ PostgreSQL Development Group ✔ Cientos de Usuarios en todo el mundo ✔ Desarrollo del Motor y nuevas funcionalidades ✔ Documentacion ✔ Aplicaciones ✔ Correccion de errores ✔ Traduccion
  • 4. Antes de comenzar Sobre PostgreSQL: La gente
  • 5. Antes de comenzar Sobre PostgreSQL: Quienes lo Utilizan. ✔ Es utilizado por gente grande
  • 6. Antes de comenzar Sobre PostgreSQL: ¿Quienes Colaboran? ✔ Empresas que Colaboran
  • 7. Entrando en materia Funcionalidades: ✔ ACID ✔ Atomicity, Consistency, Isolation and Durability ✔ Atomicidad, Consistencia, Aislamiento y Durabilidad ✔ Window Functions ✔ Querys Recursivos y Common Table Expressions ✔ PITR (Point in Time Recovery) ✔ Extensible: ✔ PL's (Lenguajes Procedurales) ✔ Directorio contrib/ ✔ Soportado por: ✔ Java (JDBC), ODBC, Perl, Python, Ruby, C, C++, PHP, Lisp, Scheme, y Qt (Por nombrar algunos) ✔ Es Seguro
  • 8. Lenguajes Procedurales Nativos CREATE OR REPLACE FUNCTION test_munge() RETURNS SETOF test AS $$ my $rv = spi_exec_query('select i, v from test;'); my $status = $rv->{status}; ✔ pl/pgsql my $nrows = $rv->{processed}; ✔ pl/perl foreach my $rn (0 .. $nrows - 1) { my $row = $rv->{rows}[$rn]; ✔ sql $row->{i} += 200 if defined($row->{i}); $row->{v} =~ tr/A-Za-z/a-zA-Z/ if (defined($row->{v})); ✔ pl/python return_next($row); } ✔ pl/tcl return undef; $$ LANGUAGE plperl; CREATE FUNCTION make_pair (name text, value integer) RETURNS named_value AS $$ class named_value: def __init__ (self, n, v): self.name = n self.value = v return named_value(name, value) # or simply class nv: pass nv.name = name nv.value = value return nv $$ LANGUAGE plpythonu;
  • 9. Lenguajes Procedurales No Nativos ✔ pl/lua ✔ pl/php CREATE FUNCTION counter() RETURNS int AS $$ while true do ✔ pl/r upvalue = upvalue + 1 ✔ pl/javascript coroutine.yield(upvalue) end ✔ pl/lolcode end do ✔ pl/scheme upvalue = 0 -- counter ✔ pl/java counter = coroutine.wrap(counter) $$ ✔ pl/* LANGUAGE pllua; CREATE FUNCTION js_gen_series(mn FLOAT8, mx FLOAT8) RETURNS SETOF FLOAT8 AS $$ while (mn <= mx) { yield mn; mn += 1; } $$; LANGUAGE pljs
  • 10. Lenguajes Procedurales Razones para utilizarlos ✔ Flexibilidad a la hora de familiarizarse con el motor ✔ Reduce la curva de aprendizaje del desarrollador (Utility) ✔ Agrega soporte para realizar “tareas esotericas” * ✔ Encapsulado no implica reducido. ✔ Acceso a otras tablas/bases de datos ✔ SPI ✔ Dbi ✔ Psycopg2 ✔ jdbc
  • 11. Lenguajes Procedurales Razones para no utilizarlos ✔ Añade dependencias extra ✔ Agrega otro paso al Mantenimiento ✔ Comunidades pequeñas * ✔ Posible uso malintencionado ✔ Y sin embargo...
  • 12. Funcionalidades P.I.T.R. - Point in Time Recovery ✔ ¿Su sistema tuvo una falla de energia, o reinicio no programado? ✔ ¿Se daño su disco de respaldos y necesita revertir a un estado anterior su base de datos principal? ✔ ¿No desea utilizar un Sistema de Control de Versiones para Postgres? P.I.T.R. - Point in Time Recovery – Es la solucion ✔ Solo con contar con PostgreSQL 8.2 en adelante ✔ WAL activo ✔ Un poco de tiempo y paciencia
  • 13. Funcionalidades Hot Standby ✔ Similar el Active Data Guard de Oracle ✔ Solo que mejor. ✔ Facil de Configurar ✔ Va de la mano con Streaming Replication ✔ Si, Replicas (Asincronas) de la data en vivo, sin “extras”
  • 14. Funcionalidades Streaming Replication ✔ Servidores (Maestros y esclavos) con caracteristicas similares. ✔ Los esclavos no escribiran datos ✔ Necesito solo 1 esclavo. ✔ Quiero que el esclavo sea exactamente igual al maestro. Si respondio que si a las anteriores: Streaming Replication esta disponible ( 9.x )
  • 15. Funcionalidades Streaming Replication ✔ Síncrona ✔ No hay perdida de datos al momento de una falla ✔ Se basa en los logs (WAL) ✔ Sin restricciones funcionales en el SQL ✔ Robusto, simple y facil de implementar ✔ Bajo impacto en operaciones ✔ Similar a Oracle Real Application Clusters ✔ Failover extremo (15 segundos)
  • 16.
  • 17. Funcionalidades Funciones de Ventana – Window Functions SELECT n.customer_id, n.order_id, n.order_total, COALESCE(SUM(o.order_total),0) As past_order_total FROM orders AS n LEFT JOIN orders AS o ON (o.customer_id = n.customer_id AND n.order_datetime > o.order_datetime) GROUP BY n.customer_id, n.order_datetime, n.order_id, n.order_total ORDER BY n.customer_id, n.order_datetime, n.order_id;
  • 18. Funcionalidades Funciones de Ventana – Window Functions SELECT n.customer_id, n.order_id, n.order_total, SUM(n.order_total) OVER (PARTITION BY n.customer_id ORDER BY n.order_datetime) - n.order_total as past_order_total FROM orders AS n ORDER BY n.customer_id, n.order_datetime, n.order_id;
  • 19. Funcionalidades Funciones de Ventana – Window Functions
  • 20. Funcionalidades Funciones de Ventana – Window Functions
  • 21. Herramientas Facilitando el trabajo y ampliando las posibilidades ✔ Replicacion y Clustering ✔ PostgreSQL 9.x ✔ Slony-I ✔ PGCluster ✔ Burcado ✔ Skytools (Skype) ✔ Mamooth – replicator ✔ Rubyrep ✔ PL/Proxy ✔ PostgresForest ✔ Tungsten
  • 22. Herramientas Facilitando el trabajo y ampliando las posibilidades ✔ Monitoreo ✔ Top y hotp ✔ Nagios + check_postgres (endpoint) ✔ pgFouine ✔ Munin ✔ Pgsnmpd ✔ pg_top ✔ tail_n_mail ✔ grep/sed/awk
  • 23. Herramientas Facilitando el trabajo y ampliando las posibilidades ✔ Interfaces Graficas de Usuairo: Acceso y Diseño ✔ PgadminIII ✔ PhpPgAdmin ✔ Druid III * ✔ Tora ✔ Psql ✔ PgAccess ✔ SQrrieL SQL ✔ split_postgres_dump
  • 24. Un elefante nunca olvida ✔ PostgreSQL es Multiplataforma ✔ No tiene precio – www.postgresql.org ✔ Sirve para practicar la lectura en ingles: ✔ Www.postgresql.org/docs/ ✔ Wiki.postgresql.org ✔ Cuenta con su propia forja ✔ pgfoundry.org ✔ Desarrollo en caliente ✔ commitfest.postgresql.org ✔ git.postgresql.org ✔ La comunidad siempre ayuda ✔ Archives.postgresql.org ✔ #postgresql
  • 25. ¿Preguntas? Santiago Zarate @foursixnine santiago@zarate.net.ve http://blog.santiago.zarate.net.ve