SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
Mario Alfonso
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalación
Princezitha Ruiz
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_p
edvin_marcelo
 
Requeriminetos de sgbd oracle
Requeriminetos de sgbd oracleRequeriminetos de sgbd oracle
Requeriminetos de sgbd oracle
Marcos 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 sql
500y
 

Mais procurados (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
 

Destaque

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
Santiago Zarate
 
Londiste Replication system for PostgreSQL
Londiste Replication system for PostgreSQLLondiste Replication system for PostgreSQL
Londiste Replication system for PostgreSQL
elliando dias
 
Scaling PostgreSQL with Skytools
Scaling PostgreSQL with SkytoolsScaling PostgreSQL with Skytools
Scaling PostgreSQL with Skytools
Gavin Roy
 
Replication using PostgreSQL Replicator
Replication using PostgreSQL ReplicatorReplication using PostgreSQL Replicator
Replication using PostgreSQL Replicator
Command Prompt., Inc
 

Destaque (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
 

Semelhante a PostgreSQL: Un motor Impulsado por una comunidad

PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
Leonardo Cezar
 
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
Marcos Ortiz Valmaseda
 
Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9Chamilo para-desarrolladores-1.9
Chamilo para-desarrolladores-1.9
Chamilo Association
 

Semelhante a 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
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 

Último (10)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

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