SlideShare une entreprise Scribd logo
1  sur  15
PostgreSQL

Taboada                      Villanueva                   Rodriguez              López                          Ganosa
Príncipe,                    León, Sergio                 Rodriguez              Egúsquiza,                     Campos, Juan
Orlando                      990767235                    Gerson                 Charl                          949218534
968542497                    Código:012700708             947608149              617677                         Código:051270060
Código:051270160             Email-                       Código:022700608       Código:042700208               8
8                            servileo_hjc_22              Email-                 Email-                         Email-
Email-                       5@hotmail.com                gerson_ex              carl_stom@hot                  benjamin_7h3_
orlando_3013                                              @hotmail.com           mail.com                       mast3r@hotmail
@hotmail.com                                                                                                    .com


RESUMEN
En este paper, nosotros daremos a conocer la forma correcta de       2. HISTORIA
aprender a utilizar un nuevo gestor de base de datos, como lo es
PostgreSQL.                                                            PostgreSQL ha tenido una larga evolución, la cual se inicia en
                                                                       1982 con el proyecto Ingres en la Universidad de Berkeley.
Una de las cosas que aprenderemos en este paper será la manera         Este proyecto, liderado por Michael Stonebraker, fue uno de
de como crear una base de datos e interactuar con la misma,            los primeros intentos en implementar un motor de base de
usando para ello, dos maneras diferentes, las cuales son: de           datos relacional. Después de haber trabajado un largo tiempo
manera consola y de manera gráfica.                                    en Ingres y de haber tenido una experiencia comercial con él
                                                                       mismo, Michael decidió volver a la Universidad en 1985 para
Haremos también uso de un ejemplo práctico para que de esta            trabajar en un nuevo proyecto sobre la experiencia de Ingres,
manera podamos conocer y comprender como funciona este                 dicho proyecto fue llamado post-ingres o simplemente
gestor de base de datos.                                               POSTGRES.

Condiciones Generales                                                  El proyecto post-ingres pretendía resolver los problemas con
                                                                       el modelo de base de datos relacional que habían sido
Base de datos, Gestor de base de datos, tablas                         aclarados a comienzos de los años 1980. El principal de estos
                                                                       problemas era la incapacidad del modelo relacional de
Palabras Clave                                                         comprender "tipos", es decir, combinaciones de datos simples
                                                                       que conforman una única unidad. Actualmente estos son
Gestor, Usuario, Superusuario, Servidor, API, ddl dml                  llamados objetos. Se esforzaron en introducir la menor
                                                                       cantidad posible de funcionalidades para completar el soporte
1. INTRODUCCIÓN                                                        de tipos. Estas funcionalidades incluían la habilidad de definir
                                                                       tipos, pero también la habilidad de describir relaciones - las
   El sistema de gestión de bases de datos relacionales orientadas     cuales hasta ese momento eran ampliamente utilizadas pero
   a objetos conocido como PostgreSQL, está derivado del               mantenidas completamente por el usuario. En Postgres la base
   paquete Postgres escrito en Berkeley allá por los años 80. Con      de datos «comprendía» las relaciones y podía obtener
   cerca de una década de desarrollo tras él, PostgreSQL es el
   gestor de bases de datos de código abierto más avanzado hoy         información de tablas relacionadas utilizando reglas. Postgres
   en día, ofreciendo control de concurrencia multi-versión y          usó muchas ideas de Ingres pero no su código.
   soportando casi toda la sintaxis SQL (incluyendo
   subconsultas, transacciones, y tipos y funciones definidas por      La siguiente lista muestra los hitos más importantes en la vida
   el usuario). Además cuenta también con un amplio conjunto           del proyecto Postgre:
   de APIs para la mayoría de lenguajes de programación
   (incluyendo los más usados, tales como C, C++, Java, PHP,           1986: se publicaron varios papers que describían las bases del
   perl, tcl y python).                                                sistema.

                                                                       1988: ya se contaba con una versión utilizable.
1989: el grupo publicaba la versión 1 para una pequeña                En 2001, CommandPrompt, Inc. lanzó Mammonth
comunidad de usuarios.                                                PostgreSQL, la más antigua distribución comercial de
                                                                      PostgreSQL. Continúa brindando soporte a la comunidad
1990: se publicaba la versión 2 la cual tenía prácticamente           PostgreSQL a través del auspicio de desarrolladores y
reescrito el sistema de reglas.                                       proyectos, incluyendo PL/Perl, PL/php y el alojamiento de
                                                                      proyectos de comunidades como PostgreSQL Build Farm.En
1991: publicación de la versión 3, esta añadía la capacidad de        enero de 2005, PostgreSQL recibió apoyo del proveedor de
múltiples motores de almacenamiento.                                  base de datos Pervasive Software, conocido por su producto
                                                                      Btrieve que se utilizaba en la plataforma Novell Netware.
1993: crecimiento importante de la comunidad de usuarios, la
                                                                      Pervasive anunció soporte comercial y participación
cual demandaba más características.
                                                                      comunitaria y logró algo de éxito. Sin embargo, en julio de
1994: después de la publicación de la versión 4, el proyecto          2006 dejó el mercado de soporte de PostgreSQL.
terminó y el grupo se disolvió.
                                                                      A mediados de 2005 otras dos compañías anunciaron planes
Después de que el proyecto POSTGRES terminara, dos graduados          para comercializar PostgreSQL con énfasis en nichos
de la universidad, Andrew Yu y JollyChen, comenzaron a trabajar       separados de mercados. EnterpriseDB añadió funcionalidades
sobre el código de POSTGRES, esto fue posible dado que                que le permitían a las aplicaciones escritas para trabajar con
POSTGRES estaba licenciado bajo la BSD, y lo primero que              Oracle ser más fáciles de ejecutar con PostgreSQL.
hicieron fue añadir soporte para el lenguaje SQL a POSTGRES,          Greenplum contribuyó mejoras directamente orientadas a
dado que anteriormente contaba con un intérprete del lenguaje de      aplicaciones de Data Warehouse e Inteligencia de negocios,
consultas QUEL (basado en Ingres), creando así el sistema al cual     incluyendo el proyecto BizGres.En octubre de 2005, John
denominaron Postgres95.                                               Loiacono, vicepresidente ejecutivo de software en Sun
                                                                      Microsystems comentó: "No estamos yendo tras el OEM de
Para el año 1996 se unieron al proyecto personas ajenas a la          Microsoft pero estamos viendo a PostgreSQL ahora", aunque
Universidad      como      Marc      Fournier      de     Hub.Org     no se dieron especificaciones en ese momento. Para
NetworkingServices, Bruce Momjian y Vadim B. Mikheev                  noviembre de 2005, Sun Solaris 10 (lanzamiento 6/06) incluía
quienes proporcionaron el primer servidor de desarrollo no            PostgreSQL. En agosto de 2007 EnterpriseDB anunció el
universitario para el esfuerzo de desarrollo de código abierto y      Postgres Resource Center y EnterpriseDB Postgres, diseñados
comenzaron a trabajar para estabilizar el código de Postgres95. En    para ser una completamente configurada distribución de
el año 1996 decidieron cambiar el nombre de Postgres95 de tal         PostgreSQL incluyendo muchos módulos contribuidos y
modo que refleje la característica del lenguaje SQL y lo              agregados. EnterpriseDB Postgres fue renombrado Postgres
terminaron llamando PostgreSQL, cuya primera versión de código        Plus en marzo de 2008.
abierto fue lanzada el 1 de agosto de 1996. La primera versión
formal de PostgreSQL (6.0) fue liberada en enero de 1997.             El proyecto PostgreSQL continúa haciendo lanzamientos
                                                                      principales anualmente y lanzamientos menores de reparación
Desde entonces, muchos desarrolladores entusiastas de los             de bugs, todos disponibles bajo la licencia BSD, y basados en
motores de base de datos se unieron al proyecto, coordinaron vía      contribuciones de proveedores comerciales, empresas
Internet y entre todos comenzaron a incorporar muchas                 aportantes y programadores de código abierto mayormente.
características al motor.Aunque la licencia permitía la
comercialización de PostgreSQL, el código no se desarrolló en
principio con fines comerciales, algo sorprendente considerando
las ventajas que PostgreSQL ofrecía.                                 3. FUNCIONAMIENTO

La principal derivación se originó cuando Paula Hawthtorn (un         3.1 Arquitectura básica de Postgres.
miembro del equipo original de Ingres que se pasó a Postgres) y
Michael     Stonebraker      conformaron     IllustraInformation       Postgres usa un modelo cliente - servidor. Una sesión de
                                                                       postgres se basa en dos procesos, que mostramos a
Technologies para comercializar Postgres.
                                                                       continuación.
En 2000, ex inversionistas de Red Hat crearon la empresa Great
                                                                             3.1.1 Un proceso servidor:
Bridge para comercializar PostgreSQL y competir contra
                                                                                  Es el que gestiona los archivos que forman la
proveedores comerciales de bases de datos. Great Bridge auspició                  base de datos, acepta las conexiones que efectúan
a varios desarrolladores de PostgreSQL y donó recursos de vuelta                  los clientes con ella y que ejecuta acciones a
a la comunidad, pero a fines de 2001 cerró debido a la dura                       petición de los clientes.
competencia de compañías como Red Hat y pobres condiciones
del mercado.
3.1.2 La Aplicación cliente del usuario                  4.2 Consistencia
              (frontend)                                           Es la propiedad que
                 Es la que pretende ejecutar ciertas acciones      asegura que sólo se empieza aquello que se
                 sobre la base de datos. Estas aplicaciones        puede acabar. Por lo tanto se ejecutan
                 pueden ser de naturaleza muy diversa, desde       aquellas operaciones que no van a romper
                 herramientas modo       texto o aplicaciones      la reglas y directrices de integridad de la
                 gráficas, hasta servidores que acceden para       base de datos.
                 recuperar datos y mostrarlos en una página
                 web.                                             4.3 Aislamiento:
                                                                   Es la propiedad que asegura
                                                                   que una operación no puede afectar a
                                                                   otras. Esto asegura que dos transacciones
                 Tal como ocurre en las aplicaciones cliente       sobre la misma información nunca
                 servidor, el cliente puede estar en un equipo     generará ningún tipo de error.
                 diferente al que se encuentra el servidor. En
                 ese caso, ambos se comunican mediante una        4.4 Durabilidad
                 conexión de red TCP/IP. Es necesario tener
                                                                   Es la propiedad que
                 esto en cuenta, ya que archivos que son           asegura que una vez realizada la operación,
                 accesibles desde un cliente no tienen por qué
                                                                   ésta persistirá y no se podrá deshacer
                 serlo desde otro. Se debe prestar especial        aunque falle el sistema.
                 atención a estos temas.

                 El servidor de postgres puede manejar            4.4 Sistemas Operativos
                 diferentes   conexiones concurrentes de los       Corre en casi todos los principales
                 clientes. Dispone de un proceso padre              sistemas operativos: Linux, Unix, BSDs,
                 (conocido como postmaster)         que crea       Mac OS, Beos, Windows, etc.
                 distintos procesos hijos que atienden las
                 conexiones entrantes. Un planteamiento típico    4.6 Documentación
                 del modelo cliente servidor.                      Muy bien organizada,
                                                                   pública y libre, con comentarios de los
                                                                   propios usuarios.

                                                                  4.7 Soporte Nativo
                                                                  Para los lenguajes más populares del medio: PHP, C, C++,
                                                                  Perl, Python, etc.
       Figura 1 Modelo cliente – servidor en postgres
                                                                  4.8 Drivers
                                                                  Odbc, Jdbc, .Net, etc.
3.2 Motor De Almacenamiento
                                                                  4.9 Soporte De Caracteristicas
  PostgreSQL soporta un motor por defecto, el sistema de           Todas las características de una base de datos profesional
  almacenamiento Postgres (Postgres Storage System).              (triggers, storeprocedures – funciones, secuencias,
  La lógica y arquitectura del gestor de almacenamiento           relaciones, reglas, tipos de datos definidos por usuarios,
  fueron detalladas en The Postgres Storage System.               vistas, vistas materializadas, etc.)
  Postgres ha pasado por varias revisiones importantes desde
  entonces, desde la versión 1, que se lanzó para unos pocos      4.10 Soporte de datos
  usuarios, hasta la 3, se mejoró el ejecutor de consultas y      Tipos de datos de SQL92 y SQL99.
  se    añadió     el     soporte  para múltiples gestores de
  almacenamiento.
                                                                  4.11 Soporte De Protocolo De
                                                                  Comunicación
                                                                  Encriptado por SSL
4. CARACTERÍSTICAS DE POSTGRESQL
                                                                  4.12 Extensiones
   4.1 Atomicidad (Indivisible)                                   Para alta disponibilidad, nuevos tipos de índices, datos
     Es la propiedad                                              espaciales, minería de datos, etc. Comunidades muy activas,
    que asegura que la operación se ha                            varias comunidades en castellano.
    realizado o no, y por lo tanto ante un fallo                 Altamente adaptable a las necesidades del cliente.
    del sistema no puede quedar a medias.
5. SENTENCIAS
                                                                            e)      NOCREATEUSER
  5.1 Sentencias Para Creación De Usuario                                           Explícitamente fuerza a la situación por
                                                                                    defecto, que deniega el privilegio.
      PostgreSQL proporciona dos métodos para la creación
      de usuarios de bases de datos. Cada uno de ellos                      f)      IN GROUPnombre_grupo [, ...]
      requiere autenticación como superusuario.                                    Añade al nuevo usuario al grupo llamado
      Los métodos son:                                                             nombre_grupo. Pueden ser
    •    A través del uso del comando SQL CREATE USER.                             especificados múltiples nombres de grupo,
    •    Un programa de línea de comandos llamado                                  separándolos mediante
         createuser                                                                comas. El o los grupos deben existir para
                                                                                   que funcione la condición.

     5.1.1 Create user:                                                     g) VALID UNTIL 'abstime'
                                                                                    Establece que la contraseña del usuario
                 La sintaxis para CREATE USER es:                                   expirará el abstime, el cual debe ser un
                 CREATE USER nombre_usuario                                         formato reconocible de fecha/hora
                 [ WITH [ SYSID uid ]                                               (timestamp). Tras esa fecha, la contraseña
                 [ PASSWORD 'password' ] ]                                          se resetea, y la expiración se hace efectiva.
                 [ CREATEDB | NOCREATEDB ]
                 [ CREATEUSER | NOCREATEUSER ]                              h) VALID UNTIL 'infinity'
                 [ IN GROUP groupname [, ...] ]                                      Establece validez permanente para la
                 [ VALID UNTIL 'abstime' ]                                          contraseña del usuario.

                 A continuación se describe cada una de las
                 partes de la sintaxis de CREATE USER:             5.1.2 Createuser:
            a) SYSID uid:                                                    El script createuser es ejecutado directamente
                  Especifica que el ID que va a definirse debe               desde la línea de comandos, y puede operar de
                  establecerse al valor de uid.Si se omite, un               dos formas.
                  razonable y único valor numérico por                       Si se utiliza sin argumentos, él
                  defecto es escogido.                                       interactivamente le pedirá el nombre de
                                                                             usuario y cada uno de los privilegios que se le
            b) PASSWORD 'password':                                          van a asignar.
                  Establece la nueva contraseña del usuario.                  Alternamente, puede optar por especificar las
                  Si no se especifica, la contraseña por defecto             opciones y el nombre del usuario a ser creado
                  es NULL.                                                   en la misma línea de comandos.

            c)    CREATEDB | NOCREATEDB:                                     La sintaxis de createuser es:
                  Usando la palabra clave CREATEDB se le                     createuser [ opciones ] [ nombre_usuario ]
                  garantiza al nuevo usuario el privilegio de
                  crear nuevas bases de datos, así como el de                El nombre_usuario en la sintaxis representa el
                  destruir las de su propiedad.     Usando                   nombre del usuario que va a crear. Reemplace
                  NOCREATEDB se deniega este permiso                         opciones con una o más de las siguientes:
                  (que es lo que ocurre por defecto).
                                                                       a)        -d, -createdb
            d) Createuser | Nocreateuser                                              Equivalente a la palabra clave
                                                                                      CREATEDB. Permite al nuevo usuario
                  Certifica el privilegio de crear nuevos                             crear bases de datos.
                  usuarios. Si un usuario tiene los
                  privilegios de crear a otros usuarios tendrá         b)        -D, -no-createdb
                  además todos los privilegios,                                        Equivalente a la palabra clave
                  en todas las bases de datos (incluyendo los                         NOCREATEDB. Explícitamente indica
                  permisos para crear una base                                        que el nuevo usuario no puede crear
                  de datos, aunque se haya especificado                               bases de datos.
                  NOCREATEDB).
                                                                       c)        -a, -adduser
                                                                                       Equivalente a la palabra clave
                                                                                       CREATEUSER Perimte al nuevo
                                                                                       usuario la creación de otros usuarios, y
asigna el status de superusurario al
         usuario.

                                                           5.2 Operadores

                                                                  5.2.1 Operadores de precedencia lexical
d)   -A, -no-adduser
          Equivalente a la palabra clave                               (precedencia decreciente)
          NOCREATEUSER. Explícitamente
          indica que el nuevo usuario no es
          superusuario.                                 Tabla 1- Operadores de precedencia lexical
                                                    Elemento                Precedencia Descripción
e)   -i SYSID, -sysid=SYSID                         UNION                   izquierda    constructor SQL de select
           Establece el nuevo ID de sistema del
          usuario a SYSID.                          ::                                   conversor de tipos de Postgres
                                                    []                      izquierda    delimitadores de array
f)   -P, -pwprompt
                                                    .                       izquierda    delimitadores de
          Resulta en una petición de introducción
                                                                                         tabla/columna
          de contraseña, permitiéndole establecer
          la contraseña del nuevo usuario.          -                       derecha      menos unario
                                                    ;                       izquierda    terminación de declaración,
g) -h NOMBRE_MAQUINA,                                                                    logaritmo
     -host=NOMBRE_MAQUINA                           :                       derecha      exponenciación
          Especifica desde qué
          NOMBRE_MAQUINA se conectará,              |                       izquierda    comienzo de intervalo
          además de la local (localhost), o la      */%                     izquierda    multiplicación, división
          máquina definida por la variable de
          entorno PGHOST.                           +-                      izquierda    adición, substracción
                                                    IS                                   test para TRUE, FALSE,
                                                                                         NULL
h)   -p PUERTO, -port=PUERTO                        ISNULL                               test para NULL
         Especifica que la conexión de base de
         datos se realizará por el puerto           NOTNULL                              test para NOT NULL
         PUERTO, en vez de por el puerto por        (todos los demás                     nativos y definidos por el
         defecto.                                   operadores)                          usuario

i)   -U NOMBRE_USUARIO,                             IN                                   fijar miembro
     -username=NOMBRE_USUARIO                       BETWEEN                              continente
          Especifica que NOMBRE_USUARIO             LIKE                                 concordancia de patrones de
          será el usuario que conecte a                                                  strings
          PostgreSQL (por defecto se conecta
          usando el nombre de usuario del           <>                                   desigualdad booleana
          sistema).                                 =                       derecha      igualdad

j)   -password                                      NOT                     derecha      negación
                                                    AND                     izquierda    intersección lógica
         Resulta en una petición de contraseña      OR                      izquierda    unión lógica
         para el usuario que conecta, lo cual
         ocurre automáticamente si el archivo
                                                                  5.2.2 Operadores generales
         pg_hba.conf está configurado para no
         confiar en la maquina solicitante.
                                                                         Los operadores mostrados aquí están
                                                                         definidos para un número de tipos de datos
                                                                         nativos, que van desde los tipos numéricos
                                                                         hasta los tipos date/time.
Operador Descripción                         Utilización
                                                                ||/          Raíz cúbica                     ||/ 27.0
     Tabla 2- Operadores generales
Operador          Descripción          Utilización
<                 Menor que?         1<2
<=                Menor o igual      1 <= 2
                  que?                                                    5.2.4 Operadores geométricos
<>                No igual?          1 <> 2
                                                                    Tabla 4- Operadores geométricos
=                 Igual?             1=1
                                                                Operador           Descripción         Utilización
>                 Mayor que?         2>1
                                                                +                  Translación         '((0,0),(1,1))'::box +
>=                Mayor o igual      2 >= 1                                                            '(2.0,0)'::punto
                  que?
                                                                -                  Translación         '((0,0),(1,1))'::box -
||                Concatena          'Postgre' || 'SQL'                                                '(2.0,0)'::punto
                  strings
                                                                *                  Escalado/rotación '((0,0),(1,1))'::box *
!!=               NOT IN             3 !!= i                                                         '(2.0,0)'::punto
~~                Como               'scrappy,marc,hermit' ~~   /                  Escalado/rotación '((0,0),(2,2))'::box /
                                     '%scrappy%'                                                     '(2.0,0)'::punto
!~~               No como            'bruce' !~~ '%al%'         #                  Intersección        '((1,-1),(-1,1))' # '((1,1),
~                 Concordancia      'thomas' ~ '.*thomas.*'                                            (-1,-1))'
                  (regex), sensible                             #                  Número de puntos # '((1,0),(0,1),(-1,0))'
                  a mayusc/minusc                                                  en polígono
~*                Concordancia      'thomas' ~* '.*Thomas.*'    ##                 Punto más           '(0,0)'::punto ## '((2,0),
                  (regex), sensible                                                próximo             (0,2))'::lseg
                  a mayusc/minusc
                                                                &&                 Se superpone a?     '((0,0),(1,1))'::caja &&
!~                No concuerda      'thomas' !~ '.*Thomas.*'                                           '((0,0),(2,2))'::caja
                  (regex), sensible
                  a mayusc/minusc                               &<                 Se superpone por '((0,0),(1,1))'::caja &<
                                                                                   la izquierda?    '((0,0),(2,2))'::caja
!~*               No concuerda      'thomas' !~* '.*vadim.*'
                  (regex), sensible                             &>                 Se superpone por '((0,0),(3,3))'::caja &>
                  a mayusc/minusc                                                  la derecha?      '((0,0),(2,2))'::caja
                                                                <->                Distancia entre     '((0,0),1)'::círculo <->
                                                                                                       '((5,0),1)'::círculo
                                                                <<                 A la izquierda de? '((0,0),1)'::círculo <<
             5.2.3 Operadores numéricos                                                               '((5,0),1)'::círculo
                                                                <^                 Está debajo de?     '((0,0),1)'::círculo <^
     Tabla 3- Operadores numéricos                                                                     '((0,5),1)'::círculo
Operador Descripción                           Utilización      >>                 A la derecha de?    '((5,0),1)'::círculo >>
!             Factorial                        3!                                                      '((0,0),1)'::círculo
!!            Factorial (operador izquierdo) !! 3               >^                 Esta encima de?     '((0,5),1)'::círculo >^
                                                                                                       '((0,0),1)'::círculo
%             Módulo                           5%4
                                                                ?#                 Interseca o se      '((-1,0),(1,0))'::lseg ?#
%             Truncado                         % 4.5
                                                                                   superpone           '((-2,-2),(2,2))'::caja;
*             Multiplicación                   2*3
                                                                ?-                 Es horizontal?      '(1,0)'::punto ?-
+             Suma                             2+3                                                     '(0,0)'::punto
-             Resta                            2-3              ?-|                Es perpendicular? '((0,0),(0,1))'::lseg ?-|
/             División                         4/2                                                   '((0,0),(1,0))'::lseg
:             Exponenciación natural           : 3.0            @-@                Longitud de         @-@ '((0,0),
                                                                                   circunferencia      (1,0))'::path
;             Logaritmo natural                (; 5.0)
                                                                ?|                 Es vertical?        '(0,1)'::punto ?|
@             Valor Absoluto                   @ -5.0                                                  '(0,0)'::punto
^             Exponenciación                   2.0 ^ 3.0        ?||                Es paralelo?        '((-1,0),(1,0))'::lseg ?||
|/            Raíz cuadrada                    |/ 25.0                                                 '((-1,2),(1,2))'::lseg
Operador           Descripción           Utilización                   Operador      Descripción        Utilización
                                                                       <=            Menor o igual que '192.168.1.5'::cidr<=
@                  Contenido en          '(1,1)'::punto @                                              '192.168.1.5'::cidr
                                         '((0,0),2)'::círculo          =             Igual que          '192.168.1.5'::cidr =
@@                 Centro de             @@ '((0,0),10)'::círculo                                       '192.168.1.5'::cidr

~=                 Parecido a            '((0,0),(1,1))'::poligono     >=            Mayor o igual que '192.168.1.5'::cidr>=
                                         ~= '((1,1),                                                   '192.168.1.5'::cidr
                                         (0,0))'::poligono             >             Mayor que          '192.168.1.5'::cidr>
                                                                                                        '192.168.1.4'::cidr
                                                                       <>            No igual que       '192.168.1.5'::cidr<>
                                                                                                        '192.168.1.4'::cidr

            5.2.5 Operadores de intervalos de tiempo                   <<            Está contenido en '192.168.1.5'::cidr<<
                                                                                                       '192.168.1/24'::cidr

                   El tipo de dato de intervalos de                    <<=           Está contenido en '192.168.1/24'::cidr<<=
                   tiempo, tinterval, es un legado de los tipos                      o es igual a      '192.168.1/24'::cidr
                   date/time originales y no está tan bien soportado   >>            Contiene           '192.168.1/24'::cidr>>
                   como los tipos más modernos. Hay varios                                              '192.168.1.5'::cidr
                   operadores para este tipo.                          >>=           Contiene o es igual '192.168.1/24'::cidr>>=
                                                                                     que                 '192.168.1/24'::cidr
    Tabla 5- Operadores de intervalos de tiempo
Operador Descripción                               Utilización
                                                                               5.2.7 Operadores IP V4 INET
#<           Intervalo menor que?
#<=          Intervalo menor o igual que?                              Tabla 7- Operadores ipv4 inet
#<>          Intervalo no igual que?                                   Operador      Descripción        Utilización
#=           Intervalo igual que?                                      <             Menor que          '192.168.1.5'::inet<
#>           Intervalo mayor que?                                                                       '192.168.1.6'::inet
#>=          Intervalo mayor o igual que?                              <=            Menor o igual que '192.168.1.5'::inet<=
                                                                                                       '192.168.1.5'::inet
<#>          Convertir a un intervalo de tiempo
                                                                       =             Igual que          '192.168.1.5'::inet =
<<           Intervalo menor que?                                                                       '192.168.1.5'::inet
|            Comienzo de intervalo                                     >=            Mayor o igual que '192.168.1.5'::inet>=
~=           Parecido a                                                                                '192.168.1.5'::inet
<?>          Tiempo dentro del intervalo?                              >             Mayor que          '192.168.1.5'::inet>
                                                                                                        '192.168.1.4'::inet
                                                                       <>            No igual           '192.168.1.5'::inet<>
                                                                                                        '192.168.1.4'::inet
                                                                       <<            Está contenido en '192.168.1.5'::inet<<
                                                                                                       '192.168.1/24'::inet
                                                                       <<=           Está contenido o   '192.168.1/24'::inet<<=
                                                                                     es igual a         '192.168.1/24'::inet
                                                                       >>            Contiene           '192.168.1/24'::inet>>
                                                                                                        '192.168.1.5'::inet
                                                                       >>=           Contiene o es igual '192.168.1/24'::inet>>=
                                                                                     a                   '192.168.1/24'::inet

            5.2.6 Operadores IP V4 CIDR

    Tabla 6- Operadores ipv4 cidr
Operador          Descripción          Utilización
<                 Menor que            '192.168.1.5'::cidr<
                                       '192.168.1.6'::cidr                   5.3 Sentencias De Control
Podemos utilizar sentencias de control para escribir
nuestros programas y permitir que sigan un algoritmo        ELSE
no lineal, para ello, contamos básicamente con las              RETURN false;
siguientes estructuras :                                    END IF;
                                                            ...resto de la función...
LOOP, EXIT,IF, ELSE,FOR, WHILE

                                                          5.3.4 SENTENCIA DE CICLO FOR :
5.3.1 SENTENCIA DE CICLO LOOP :
                                                                Existen dos tipos de ciclos FOR, el primero tiene
      Esta sentencia nos permite efectuar un ciclo,             que ver claramente con los ciclos numéricos
      su estructura básica es :                                 comunes, es decir, lo que comúnmente se usa para
                                                                efectuar repeticiones, y por otra parte, tenemos un
     ...resto de la función...                                  ciclo FOR que nos permite recorrer tablas y
     LOOP                                                       procesar sus datos, esta segunda está ligada a
     ...sentencias a ejecutar en el ciclo...                    sentencias SQL, veamos entonces como se utiliza
     END LOOP                                                   la sentencia FOR
     ...resto de la función...
                                                                 casos:

5.3.2 SENTENCIA DE SALIDA EXIT :                              5.3.4.1      SENTENCIA FOR DE
                                                                           PROCESO CICLICO
     Cuando usamos un ciclo LOOP, es necesario darle                       NUMERICO
     una salida para que este mismo termine, la
     sentencia EXIT nos permite finalizar el LOOP y
                                                                           FOR <variable> IN <inicio>..<fin>
     continuar en la sentencia siguente a la salida de
                                                                           LOOP
     éste, generalmente, EXIT está acompañado con la
                                                                             ... SENTENCIAS A EJECUTAR
     sentencia IF, por ejemplo:
                                                                           DENTRO DEL CICLO FOR ...
                                                                           END LOOP;
     LOOP
         ...resto de la funcion...
                                                                           o bien puede usar el FOR de forma
     contador := contador + 1;
                                                                           inversa
         IF contador >= 10 THEN
            EXIT; -- salida del loop cuando sea mayor o
                                                                           FOR <variable> REVERSE
     igual que 10
                                                                           <fin>..<inicio> LOOP
         END IF;
                                                                             ... SENTENCIAS A EJECUTAR
     END LOOP
                                                                           DENTRO DEL CICLO FOR ...
     ...resto de la funcion...
                                                                           END LOOP;


5.3.3 SENTENCIAS IF, ELSE:                                                 Ejemplo :
                                                                           ...resto de la funcion...
     Podemos efectuar operaciones de comparación                           FOR inc IN 1..10 LOOP
     con las sentencias IF, ELSE, los operadores de                        factorial := factorial * inc;
     comparación son los siguientes :                                      END LOOP;
                                                                           RETURN factorial;
     <menor que ...                                                        ...resto de la funcion...
     >mayor que ...                                                               :
     <>distinto a ...                                           5.3.4.2 SENTENCIA FOR APLICADA A
     <= menor o igual que ...
     >= mayor o igual que ...                                           PROCESOS DE REGISTROS
     = igual que ...                                                    SQL
     OR o ...
     AND y ...                                                             FOR <registro o fila> IN <sentencia
                                                                           SELECT SQL> LOOP
                                                                           ... SENTENCIAS A EJECUTAR
                                                                           DENTRO DEL CICLO FOR ...
     Ejemplo:                                                              END LOOP;
     ...resto de la función...
 IF >= 10 or THEN
   RETURN true;                                                              Ejemplo :
                                                                             ...resto de la funcion...
DECLARE                                       características especiales de Postgres; mientras esto provee
                       registro RECORD;                              compatibilidad, es menudo más conveniente sacar provecho
                       BEGIN                                         a aquellas definiciones adicionales del motor. A
                       FOR registro IN SELECT * FROM
                                                                     continuación se describen los tipos de datos más utilizados y
                       productos LOOP
                       stock := registro.sock_actual + 100;          la sugerencia de cuando es conveniente utilizarlos:
                           ... otras sentencias ...
                       END LOOP;
                       ...resto de la funcion...
                                                                Tabla 8- Tipos cadenas
                       Note que para utilizar esta sentencia                              Tipos String
                       FOR debemos declarar una variable de          Tipo                          Descripción
                       tipo RECORD o registro. RECORD es        char(n)          Datos de caracteres no Unicode de longitud fija
                       una palabra reservada para estos         Text             Cantidad no predefinida
                       casos, y no posee una estructura         varchar(n)       Datos de caracteres no Unicode de longitud
                       definida pues no ha sido asignada a                       variable
                       ninguna tabla, este tipo de dato nos
                       permite recorrer la tabla de productos
                       y obtener sus valores por medio de        El tipo char(n) almacena n caracteres en formato ASCII, un byte
                       esta variable.                            por cada letra. Cuando almacenamos datos en el tipo char,
                                                                 siempre se utilizan los n caracteres indicados, incluso si la
                                                                 entrada de datos es inferior. Por ejemplo, si en un char(5),
     5.3.5 SENTENCIA DE CICLO                                    guardamos el valor 'A', se almacena 'A', ocupando los cinco
          CONDICIONAL WHILE                                      bytes.

             La sentencia WHILE se ejecuta de forma muy          Por su parte varchar(n) almacena n caracteres en formato
             similar a otros lenguajes de programación, su       ASCII, un byte por cada letra. Cuando almacenamos datos en el
             estructura es la siguiente :                        tipo varchar, únicamente se utilizan los caracteres necesarios,
                                                                 Por ejemplo, si en un varchar(255), guardamos el valor 'A', se
             WHILE <condicion> LOOP                              almacena 'A', ocupando solo un byte.
               ... SENTENCIAS A EJECUTAR DENTRO
             DEL CICLO WHILE ...                                 El tipo de dato text permite el almacenamiento de un string en
             END LOOP;
                                                                 cualquier formato de largo no predefinido. Este es el tipo más
                                                                 versátil de string. Considerando que hoy en día los espacios de
             Ejemplo :                                           almacenamiento son enormes, este tipo se recomienda en todo
             ...resto de la funcion...                           caso por sobre varchar. Cabe señalar que dado que text no tiene
             WHILE inc<= 10 LOOP                                 límite predefinido, entonces al momento de llevar los datos a
             factorial := factorial * inc;                       otros sistemas con largos predefinidos no hay aviso previo de
             END LOOP;                                           que estamos sobrepasando algún largo establecido, siendo este
             RETURN factorial;
             ...resto de la funcion...                           un punto a considerar al momento de seleccionar el tipo de dato.

             Este codigo funciona igual al descrito en el
             ejemplo del ciclo FOR.




                                                                Tabla 9- Tipos numericos
6. TIPOS DE DATOS                                                                 Tipos Numéricos
                                                                  Tipo       Tamaño      Descripción              Rango
  Postgres pone a disposición del usuario una gran variedad
                                                                bool                    Booleano            true / false –
  de tipos de datos pensados en cubrir necesidades                                                          (‘t’ / ‘f’)
  específicas. Suele suceder que al modelar una base de datos   decimal      variable     Especificadas     no limite
  se utilizan los tipos conocidos y no se da provecho a las                               por el usuario
float4       4 bytes       Número       de   6 lugares de
                           punto flotante    decimales
                           con precisión                              En tipos de datos para fecha y hora, Postgres conserva los tipos
Float8       8 bytes       Número       de   15 lugares de            tradicionales. Aquí el único parámetro interesante es aquel que se
                           punto flotante    decimales                puede pasar a timestamp para indicar la cantidad de milisegundos
                           con       doble
                                                                      a almacenar que por defecto son 6.
                           precisión
Bigint       8 bytes       Valores           -9,233,372,036
                           enteros.          ,854,775,808 a
                                             +9,233,372,03
                                             6,854,775,807
int2         2 bytes       Precisión fija    -32768        a
                           (entero)          +32767                   7. CARACTERÍSTICAS AVANZADAS
Int4         4 bytes       opción para       -2147483648 a
                           determinada       +2147483647
                           precisión
                                                                        DE SQL EN POSTGRES
                           (entero)
Int8         8 bytes       amplia gama       +/-     >    18           Habiendo cubierto los aspectos básicos de PostgreSQLpara
                           determinada       lugares      de           acceder a los datos, discutiremos ahora aquellas características
                           de precisión      decimales                 de Postgres que los distinguen de los gestores de bases de datos
                           (entero)                                    convecionales. Estas características incluyen herencia, valores
numeric      variable      Especificadas     no limite                 no-atómicos de datos (atributos basados en vectores y
                           por el usuario                              conjuntos) entre otros.
serial       4 bytes       Identicador o     0           a
                           referencia        +2147483647                7.1 Herencia
                           cruzada
                                                                             Creemos dos clases. La clase capitals contiene las
                                                                             capitales de los estados, las cuales son también ciudades.
Postgres contiene los tipos de datos nativos comúnmente
                                                                             Naturalmente, la clase capitals debería heredar de cities.
conocidos int y float, para números enteros y reales
respectivamente. Estos dependiendo del dígito que acompañe su
nombre, indica la precisión que soporta la columna.

Para grandes números se utiliza bigint, el cual suele ser utilizado
para las columnas de identificadores.

Cuando se requiere de gran precisión en números, virtualmente
sin limitación (1000 dígitos), el tipo a utilizar es sin duda
numeric. Este es recomendado para valores monetarios u
cualquier dato donde la precisión es crucial. Este tipo además               En este caso, una instancia de capitals hereda todos los
soporta el valor ‘NaN’ (Not A Number – No Un Numero) para                    atributos (name, population y altitude) de su padre, cities.
indicar tal caso, además de NULL.                                            El tipo del atributo name (nombre) es text, un tipo nativo
                                                                             de Postgres para cadenas ASCII de longitud variable. El
El tipo de dato SERIAL es en realidad un atajo. En Postgres no               tipo del atributo population (población) es float, un tipo de
existe un tipo autoincremental como es el caso de MySQL.                     datos, también nativo de Postgres , para números de punto
                                                                             flotante de doble precisión. Las clase capitals tiene un
 Aquí por un lado se genera la columna con tipo BIGINT                       atributo extra, state, que muestra a qué estado pertenecen.
asociando al valor por defecto el siguiente valor de una secuencia           En Postgres, una clase puede heredar de ninguna o varias
(Ver punto 3.6) creada especialmente, provocándose el efecto de              otras clases, y una consulta puede hacer referencia tanto a
auto incremento                                                              todas las instancias de una clase como a todas las
                                                                             instancias de una clase y sus descendientes.
Tabla 10- Tipo fecha y hora.
                   Tipos de Fecha y Hora
                                                                             La jerarquía de la herencia es un gráfico acíclico dirigido.
     Tipo                        Descripción
date            Fecha, con día, mes y año
                                                                             Por ejemplo, la siguiente consulta encuentra todas
time            Hora, minuto, segundos
timestamp(n)    Fecha y hora con milisegundos.                               aquellas ciudades que están situadas a un altura de 500 o
                El parámetro n, indica la            cantidad   de           más pies:
                milisegundo a almacenar.
implementarlo a futuro pero no es de prioridad alta por
                                                                    eso que viene retrasándose su implementación desde
                                                                    versiones antiguas.

                                                                7.2 Valores No-Atómicos

                                                                    Uno de los principios del modelo relacional es que los
                                                                    atributos de una relación son atómicos Postgres no posee
                                                                    esta restricción; los atributos pueden contener sub-valores
                                                                    a los que puede accederse desde el lenguaje de consulta.
Por otro lado, para encontrar los nombres de todas las              Por ejemplo, se pueden crear atributos que sean vectores
ciudades, incluídas las capitales estatales, que estén              de alguno de los tipos base.
situadas a una altitud de 500 o más pies, la consulta es:
                                                                7.3 Vectores

                                                                    Postgres permite que los atributos de una instancia sean
                                                                    definidos como vectores multidimensionales de longitud
                                                                    fija o variable. Puede crear vectores de cualquiera de los
                                                                    tipos base o de tipos definidos por el usuario. Para ilustrar
                                                                    su uso, creemos primero una clase con vectores de tipos
whichreturns:
                                                                    base.




                                                                    La consulta de arriba creará una clase llamada SAL_EMP
                                                                    con una cadena del tipo text (name),un vector
Aquí el "*" después de cities indica que la consulta debe           unidimensional del tipo int4 (pay_by_quarter), el cual
realizarse sobre cities y todas las clases que estén por            representa el salario trimestral del empleado y un vector
debajo de ella en la jerarquía de la herencia. Muchos de            bidimensional del tipo text (schedule), que representa la
los comandos que ya hemos discutido (select,                        agenda semanal del empleado. Ahora realizamos algunos
and>upand> and delete) brindan soporte a esta notación              INSERTSs; note que cuando agregamos valores a un
de "*" al igual que otros como alter.                               vector, encerramos los valores entre llaves y los
                                                                    separamos mediante comas. Si usted conoce C, esto no es
                                                                    distinto a la sintaxis para inicializar estructuras.
Con esto obtenemos una reducción en la construcción del
índice y ganaremos velocidad con ello además de un
mejor orden conceptual de nuestras tablas.

 No sólo se puede heredar de un padre, es posible heredar
de varias tablas, así teniendo la tabla hija todas las
columnas de sus padres, y en caso que 2 o más padres
tengan un columna con el mismo nombre éstas se
fusionarán en la hija siempre y cuando sean del mismo               Postgres utiliza de forma predeterminada la convención de
tipo de dato.                                                       vectores "basados en uno" -- es decir, un vector de n
                                                                    elementos comienza con vector[1] y termina con
Al utilizar ésta poderosa característica existen algunas
                                                                    vector[n]. Ahora podemos ejecutar algunas consultas
consideraciones que hay que tener en cuenta para
                                                                    sobre SAL_EMP. Primero mostramos como acceder a un
evitarnos sorpresas desagradables e inesperadas. Al crear
                                                                    solo elemento del vector por vez. Esta consulta devuelve
tablas heredadas, no todas las características de la tabla se
                                                                    los nombres de los empleados cuyos pagos han cambiado
heredan. Por ejemplo, las claves primarias, foráneas,
                                                                    en el segundo trimestre:
indices únicos. Según el roadmap se verá para
 PostgreSQL           para    Windows    ha    sido
                                                                               descontinuado.

                                                                              Para obtener un performance optimo, es
                                                                               requerido usar un sistema UNIX o un Linux
                                                                               optimizado para esta tarea.

                                                                    8.3 PostgreSQL VS MySQL
 La siguiente consulta recupera el pago del tercer trimestre
 de todos los empleados:                                                     Tabla11. Cuadro comparativo
                                                                         PostgreSQL                    MySQL
                                                                         Es más lento a la             Es más rápido a la
                                                                         hora de resolver              hora de resolver
                                                                         preguntas                     preguntas
                                                                         No tiene una                  Tiene mejor
                                                                         buena                         documentación y
                                                                         documentación                 se ha orientado
                                                                                                       más a facilitarle la
 También podemos acceder a cualquier porción de un
 vector, o subvectores. Esta consulta recupera el primer
                                                                                                       vida al
 item de la agenda de Bill para los primeros dos días de la                                            desarrollador
 semana.                                                                 Ofrece una                    Es fácil de vulnerar
                                                                         garantía de                   sin protección
                                                                         integridad en los             adecuada.
                                                                         datos mucho más
                                                                         fuerte.
                                                                         Presenta una                  Es más ligero.
                                                                         mejor escalabilidad
                                                                         y rendimiento bajo
8. VENTAJAS Y DESVENTAJAS                                                grandes cargas de
                                                                         trabajo
   8.1 Ventajas

        Es software libre o sea, no hay costo asociado
                                                               9. INSTALACION DE POSTGRESQL 8.4.8
            a la licencia del software.                           EN UBUNTU 10.10

           Estabilidad y confiabilidad legendarias.            9.1 Iniciando
                                                                   Instalación (Aplicaciones → Accesorios → Terminal):
           Extensible, el código fuente está disponible           sudo apt-get install postgresql postgresql-client
            para todos sin costo.                                  postgresql-contrib libpq-dev pgadmin3
                                                                   Eso instala el cliente y servidor de la base de datos,
                                                                   algunos scripts de utilería y la aplicación pgAdmin para
           Multiplataforma, está disponible en casi
                                                                   administrar la base de datos disponibles en los
            cualquier Unix.                                        repositorios de Ubuntu.

        Herramientas       gráficas    de    diseño      y
            administración de bases de datos.




  8.2 Desventajas

                                                                9.2 Cambiar la Contraseña del Usuario
Administrador                                                9.5 Ejemplo
   Ahora necesitamos establecer la contraseña del usuario
   administrador postgres. Teclea la siguiente línea en la            Ingresando A Postgresql:
   terminal (cambia la palabra password por la contraseña
   que desees usar):                                                  Desde la terminal (Aplicaciones → Accesorios →
   sudo su postgres -c psql                                           Terminal):
   ALTER USER postgres WITH PASSWORD 'password';
   q
                                                                     sudo /etc/init.d/postgresql start
   Eso altera la contraseña dentro de la base de datos, ahora
                                                                     para iniciar.
   necesitamos hacer lo mismo para el usuario Linux
   postgres:
                                                                     Luego lo primero que tenemos qu hacer es usar
   sudo passwd -d postgres
                                                                     pgAdmin3 (Aplicaciones → Programación → pgAdmin
   sudo su postgres -c passwd
                                                                     III) para crearnos un servidor donde alojaremos todas
   Te aparecerá un prompt, introduce la misma contraseña
                                                                     nuestras bases de datos. Allí hacemos clic en el menú
   que pusiste antes.
                                                                     File → Add server…
  9.3 Configurando pgAdmin
   Listo, de ahora en adelante podemos usar pgAdmin o la
   terminal para administrar nuestra base de datos como el
   usuario postgres. Pero antes de que te metas a pgAdmin
   deberías configurar el PostgreSQL Admin Pack, que te
   permite llevar un mejor registro y monitoreo de tu base de
   datos.
   Ejecuta lo siguiente desde la línea de comandos en tu
   terminal:
   sudo su postgres -c psql <
   /usr/share/postgresql/8.4/contrib/adminpack.sql

   Para ejecutar pgAdmin ve a tu menú de aplicaciones:
   Aplicaciones → Programación → pgAdmin III

9.4 Cambiar el Esquema de Autentificación
de Postgresql                                                                                                               Fig
   Al ejecutar algunos comandos de base de datos, es posible                   ura 2. Creación del servidor
   que te encuentres con un error que dice algo como:
   FATAL: la autentificación Ident falló para el usuario «x»        Luego accedemos al servidor al hacer doble click el
   Para evitarlo necesitas editar el archivo                        nombre que le pusimos al servidor y nos va a pedir la
   /etc/postgresql/8.4/main/pg_hba.conf y cambiar el                contraseña que le dimos:
   esquema de autentificación. Abre el archivo con
   privilegios de root:
                                                                    Desde ahí podremos crear nuestras bases de datos y
   sudo gedit /etc/postgresql/8.4/main/pg_hba.conf
   Y cambia esto:                                                   posteriormente las tablas cómodamente.
   # "local" is for Unix domain socket connections only
   local all all ident
   Por:
   # "local" is for Unix domain socket connections only
   local all all md5
   Reinicia el servidor de PostgreSQL tecleando en tu
   terminal:
   sudo /etc/init.d/postgresql restart
Fig
ura 3. Creación de base de datos

                                          Figura 6.Creacion mediante código de tablas




                                    Fi
    gura 4.Creacion de tabla



                                         Figura 7. Llenado de datos de manera grafica


                                         O sino desde la terminal (Aplicaciones → Accesorios
                                         → Terminal):
                                         Sudo su postgres
                                         psql -d template1
                                         create database baseDatos;

                                         q;
                                         psql -d baseDatos;
                                         create table tabla(id int, nombre char(10), primary
                                         key(id));
                                         Para ver todas las tablas de mi base de datos:
                                         dt;
Figura 5. Creación de columnas           Describir la tabla:
                                         d tabla;
                                         Insertar:
                                         insert into tabla values(0,'charl');
                                         Ver registros de la tabla:
select * from tabla;


10. Conclusiones

   PostgreSQL es tan apto y conveniente como
       Microsoft SQL Server u Oracle, pero con una gran
       ventaja del costo.

      El motor de interno es muy estable y hace un buen
       desempeño ante una gran gama de volúmenes de
       datos.

   Corre en el hardware y Sistema Operativo de tu
       elección, es decir no solo en el sistema que
       cualquier otro vendedor recomienda para usar tu
       base de datos.

   PostgreSQL es más confiable q MySQL pero mas
       lento.

11. Agradecimientos
   Agradecemos al profesor y a nuestros compañeros por
   ser la motivación a la investigación de este pequeño,
   pero significativo aporte, con el fin de la difusión de
   este gestor de base de datos como lo es PostgresSQL




12. REFERENCIAS

   12.1 Bibliográficas:

       Manual PostgreSQL, Instalación, Creación,
            Mantención, PlpgSQL,.2 Abril 2008, Versión
            0.3

           Jonathan Makuc, Cristian Molina, Armando
            Reyes

   12.2 Linkograficas:

               http://es.wikipedia.org/wiki/PostgreSQL

               http://www.ibiblio.org/pub/linux/docs/LuCaS/
                Postgresql-
                es/web/navegable/todopostgresql/advanced.ht
                ml

               http://www.guatewireless.org/articulos/mys
                ql-vs-postgresql/#postgresql

Contenu connexe

Tendances

Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalación
Princezitha Ruiz
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
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
 

Tendances (20)

Curso de PostgreSQL
Curso de PostgreSQLCurso de PostgreSQL
Curso de PostgreSQL
 
Arquitectura e implementación de PostgreSQL 9.3
Arquitectura e implementación de PostgreSQL 9.3Arquitectura e implementación de PostgreSQL 9.3
Arquitectura e implementación de PostgreSQL 9.3
 
Migrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLMigrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQL
 
Introducción a PostgreSql
Introducción a PostgreSqlIntroducción a PostgreSql
Introducción a PostgreSql
 
Tabla y Manual de instalación de PostgreSQL 9.5
Tabla y Manual de instalación de PostgreSQL 9.5Tabla y Manual de instalación de PostgreSQL 9.5
Tabla y Manual de instalación de PostgreSQL 9.5
 
Requerimientos de PostgreSQL
Requerimientos de PostgreSQLRequerimientos de PostgreSQL
Requerimientos de PostgreSQL
 
Postgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por DentroPostgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por Dentro
 
Potsgrade emerson
Potsgrade emerson Potsgrade emerson
Potsgrade emerson
 
Requerimientos de instalación
Requerimientos de instalaciónRequerimientos de instalación
Requerimientos de instalación
 
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
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Alta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQLAlta Disponibilidad con PostgreSQL
Alta Disponibilidad con PostgreSQL
 
Presentación de Postgresql 9.1
Presentación de Postgresql 9.1Presentación de Postgresql 9.1
Presentación de Postgresql 9.1
 
Base de datos sql
Base de datos sqlBase de datos sql
Base de datos sql
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion 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.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
 
Cluster con postgresql
Cluster con postgresqlCluster con postgresql
Cluster con postgresql
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_p
 
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
 
Evolución y avances del Gestor PostgreSQL
Evolución y avances del  Gestor PostgreSQLEvolución y avances del  Gestor PostgreSQL
Evolución y avances del Gestor PostgreSQL
 

En vedette

Modelo Entidad - Relacion
Modelo Entidad - RelacionModelo Entidad - Relacion
Modelo Entidad - Relacion
drakul09
 
Algoritmos de ordeamiento
Algoritmos de ordeamientoAlgoritmos de ordeamiento
Algoritmos de ordeamiento
Yanahui Bc
 
Tres
TresTres
Tres
WGC20
 
Gratitud a dios
Gratitud a diosGratitud a dios
Gratitud a dios
WGC20
 

En vedette (20)

Base de datos postgresql
Base de datos postgresqlBase de datos postgresql
Base de datos postgresql
 
SQL select clause
SQL select clauseSQL select clause
SQL select clause
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQL
 
Manual de como conformar Consorcios
Manual de como conformar ConsorciosManual de como conformar Consorcios
Manual de como conformar Consorcios
 
Sistema de Replicación de DBs de PostgreSQL 9.0
Sistema de Replicación de DBs de PostgreSQL 9.0Sistema de Replicación de DBs de PostgreSQL 9.0
Sistema de Replicación de DBs de PostgreSQL 9.0
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Modelo Entidad - Relacion
Modelo Entidad - RelacionModelo Entidad - Relacion
Modelo Entidad - Relacion
 
Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos
 
1 - Modelo Entidad Relacion
1 - Modelo Entidad Relacion1 - Modelo Entidad Relacion
1 - Modelo Entidad Relacion
 
Proyecto caa 2012_uvm Lista 2
Proyecto caa 2012_uvm Lista 2Proyecto caa 2012_uvm Lista 2
Proyecto caa 2012_uvm Lista 2
 
Algoritmos de ordeamiento
Algoritmos de ordeamientoAlgoritmos de ordeamiento
Algoritmos de ordeamiento
 
Tres
TresTres
Tres
 
Gratitud a dios
Gratitud a diosGratitud a dios
Gratitud a dios
 
Feliz navidad 2010
Feliz navidad 2010Feliz navidad 2010
Feliz navidad 2010
 
Dn13 u3 a14_ocrArchie- Chats.
Dn13 u3 a14_ocrArchie- Chats.Dn13 u3 a14_ocrArchie- Chats.
Dn13 u3 a14_ocrArchie- Chats.
 
Autoevaluacion
AutoevaluacionAutoevaluacion
Autoevaluacion
 
eGAMbpm. Proyecto Colaborativo. Hagamos negocios juntos
eGAMbpm. Proyecto Colaborativo. Hagamos negocios juntoseGAMbpm. Proyecto Colaborativo. Hagamos negocios juntos
eGAMbpm. Proyecto Colaborativo. Hagamos negocios juntos
 
Acte #CienciaSMW - Presentació Gabriela Bolognese
Acte #CienciaSMW - Presentació Gabriela BologneseActe #CienciaSMW - Presentació Gabriela Bolognese
Acte #CienciaSMW - Presentació Gabriela Bolognese
 
Nos vamos al cine
Nos vamos al cineNos vamos al cine
Nos vamos al cine
 

Similaire à PostgreSQL

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
 
Dbms más utilizados
Dbms más utilizadosDbms más utilizados
Dbms más utilizados
jro1007
 
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Andres del Valle
 

Similaire à PostgreSQL (20)

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
 
Postgree603
Postgree603Postgree603
Postgree603
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Postgre SQL. Qué es? Y cuál es su finalidad?
Postgre SQL. Qué es? Y cuál es su finalidad?Postgre SQL. Qué es? Y cuál es su finalidad?
Postgre SQL. Qué es? Y cuál es su finalidad?
 
Mysql posgresql
Mysql posgresqlMysql posgresql
Mysql posgresql
 
Base datos f06
Base datos f06Base datos f06
Base datos f06
 
Base de datos
Base de datosBase de datos
Base de datos
 
Posgres Sql2
Posgres Sql2Posgres Sql2
Posgres Sql2
 
Motor de base de datos
Motor de base de datos Motor de base de datos
Motor de base de datos
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
 
Diego velez tutorial access
Diego velez tutorial accessDiego velez tutorial access
Diego velez tutorial access
 
Dbms más utilizados
Dbms más utilizadosDbms más utilizados
Dbms más utilizados
 
Las principales bases de datos existentes
Las principales bases de datos existentesLas principales bases de datos existentes
Las principales bases de datos existentes
 
Que es una base de datos
Que es una base de datosQue es una base de datos
Que es una base de datos
 
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
Sistemasgestoresdebasededatossgbd 120614221206-phpapp02 (1)
 
SGBD y aplicaciones web 2.0
SGBD y aplicaciones web 2.0SGBD y aplicaciones web 2.0
SGBD y aplicaciones web 2.0
 
Sistemas de gestión de base de datos
Sistemas de gestión de base de datosSistemas de gestión de base de datos
Sistemas de gestión de base de datos
 
SGBD Y TECNOLOGIAS USADAS POR APLICACIONES WEB 2.0
SGBD Y TECNOLOGIAS USADAS POR APLICACIONES WEB 2.0SGBD Y TECNOLOGIAS USADAS POR APLICACIONES WEB 2.0
SGBD Y TECNOLOGIAS USADAS POR APLICACIONES WEB 2.0
 
Actividad 4
Actividad 4Actividad 4
Actividad 4
 
Comparativa SGBDR
Comparativa SGBDRComparativa SGBDR
Comparativa SGBDR
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (10)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

PostgreSQL

  • 1. PostgreSQL Taboada Villanueva Rodriguez López Ganosa Príncipe, León, Sergio Rodriguez Egúsquiza, Campos, Juan Orlando 990767235 Gerson Charl 949218534 968542497 Código:012700708 947608149 617677 Código:051270060 Código:051270160 Email- Código:022700608 Código:042700208 8 8 servileo_hjc_22 Email- Email- Email- Email- 5@hotmail.com gerson_ex carl_stom@hot benjamin_7h3_ orlando_3013 @hotmail.com mail.com mast3r@hotmail @hotmail.com .com RESUMEN En este paper, nosotros daremos a conocer la forma correcta de 2. HISTORIA aprender a utilizar un nuevo gestor de base de datos, como lo es PostgreSQL. PostgreSQL ha tenido una larga evolución, la cual se inicia en 1982 con el proyecto Ingres en la Universidad de Berkeley. Una de las cosas que aprenderemos en este paper será la manera Este proyecto, liderado por Michael Stonebraker, fue uno de de como crear una base de datos e interactuar con la misma, los primeros intentos en implementar un motor de base de usando para ello, dos maneras diferentes, las cuales son: de datos relacional. Después de haber trabajado un largo tiempo manera consola y de manera gráfica. en Ingres y de haber tenido una experiencia comercial con él mismo, Michael decidió volver a la Universidad en 1985 para Haremos también uso de un ejemplo práctico para que de esta trabajar en un nuevo proyecto sobre la experiencia de Ingres, manera podamos conocer y comprender como funciona este dicho proyecto fue llamado post-ingres o simplemente gestor de base de datos. POSTGRES. Condiciones Generales El proyecto post-ingres pretendía resolver los problemas con el modelo de base de datos relacional que habían sido Base de datos, Gestor de base de datos, tablas aclarados a comienzos de los años 1980. El principal de estos problemas era la incapacidad del modelo relacional de Palabras Clave comprender "tipos", es decir, combinaciones de datos simples que conforman una única unidad. Actualmente estos son Gestor, Usuario, Superusuario, Servidor, API, ddl dml llamados objetos. Se esforzaron en introducir la menor cantidad posible de funcionalidades para completar el soporte 1. INTRODUCCIÓN de tipos. Estas funcionalidades incluían la habilidad de definir tipos, pero también la habilidad de describir relaciones - las El sistema de gestión de bases de datos relacionales orientadas cuales hasta ese momento eran ampliamente utilizadas pero a objetos conocido como PostgreSQL, está derivado del mantenidas completamente por el usuario. En Postgres la base paquete Postgres escrito en Berkeley allá por los años 80. Con de datos «comprendía» las relaciones y podía obtener cerca de una década de desarrollo tras él, PostgreSQL es el gestor de bases de datos de código abierto más avanzado hoy información de tablas relacionadas utilizando reglas. Postgres en día, ofreciendo control de concurrencia multi-versión y usó muchas ideas de Ingres pero no su código. soportando casi toda la sintaxis SQL (incluyendo subconsultas, transacciones, y tipos y funciones definidas por La siguiente lista muestra los hitos más importantes en la vida el usuario). Además cuenta también con un amplio conjunto del proyecto Postgre: de APIs para la mayoría de lenguajes de programación (incluyendo los más usados, tales como C, C++, Java, PHP, 1986: se publicaron varios papers que describían las bases del perl, tcl y python). sistema. 1988: ya se contaba con una versión utilizable.
  • 2. 1989: el grupo publicaba la versión 1 para una pequeña En 2001, CommandPrompt, Inc. lanzó Mammonth comunidad de usuarios. PostgreSQL, la más antigua distribución comercial de PostgreSQL. Continúa brindando soporte a la comunidad 1990: se publicaba la versión 2 la cual tenía prácticamente PostgreSQL a través del auspicio de desarrolladores y reescrito el sistema de reglas. proyectos, incluyendo PL/Perl, PL/php y el alojamiento de proyectos de comunidades como PostgreSQL Build Farm.En 1991: publicación de la versión 3, esta añadía la capacidad de enero de 2005, PostgreSQL recibió apoyo del proveedor de múltiples motores de almacenamiento. base de datos Pervasive Software, conocido por su producto Btrieve que se utilizaba en la plataforma Novell Netware. 1993: crecimiento importante de la comunidad de usuarios, la Pervasive anunció soporte comercial y participación cual demandaba más características. comunitaria y logró algo de éxito. Sin embargo, en julio de 1994: después de la publicación de la versión 4, el proyecto 2006 dejó el mercado de soporte de PostgreSQL. terminó y el grupo se disolvió. A mediados de 2005 otras dos compañías anunciaron planes Después de que el proyecto POSTGRES terminara, dos graduados para comercializar PostgreSQL con énfasis en nichos de la universidad, Andrew Yu y JollyChen, comenzaron a trabajar separados de mercados. EnterpriseDB añadió funcionalidades sobre el código de POSTGRES, esto fue posible dado que que le permitían a las aplicaciones escritas para trabajar con POSTGRES estaba licenciado bajo la BSD, y lo primero que Oracle ser más fáciles de ejecutar con PostgreSQL. hicieron fue añadir soporte para el lenguaje SQL a POSTGRES, Greenplum contribuyó mejoras directamente orientadas a dado que anteriormente contaba con un intérprete del lenguaje de aplicaciones de Data Warehouse e Inteligencia de negocios, consultas QUEL (basado en Ingres), creando así el sistema al cual incluyendo el proyecto BizGres.En octubre de 2005, John denominaron Postgres95. Loiacono, vicepresidente ejecutivo de software en Sun Microsystems comentó: "No estamos yendo tras el OEM de Para el año 1996 se unieron al proyecto personas ajenas a la Microsoft pero estamos viendo a PostgreSQL ahora", aunque Universidad como Marc Fournier de Hub.Org no se dieron especificaciones en ese momento. Para NetworkingServices, Bruce Momjian y Vadim B. Mikheev noviembre de 2005, Sun Solaris 10 (lanzamiento 6/06) incluía quienes proporcionaron el primer servidor de desarrollo no PostgreSQL. En agosto de 2007 EnterpriseDB anunció el universitario para el esfuerzo de desarrollo de código abierto y Postgres Resource Center y EnterpriseDB Postgres, diseñados comenzaron a trabajar para estabilizar el código de Postgres95. En para ser una completamente configurada distribución de el año 1996 decidieron cambiar el nombre de Postgres95 de tal PostgreSQL incluyendo muchos módulos contribuidos y modo que refleje la característica del lenguaje SQL y lo agregados. EnterpriseDB Postgres fue renombrado Postgres terminaron llamando PostgreSQL, cuya primera versión de código Plus en marzo de 2008. abierto fue lanzada el 1 de agosto de 1996. La primera versión formal de PostgreSQL (6.0) fue liberada en enero de 1997. El proyecto PostgreSQL continúa haciendo lanzamientos principales anualmente y lanzamientos menores de reparación Desde entonces, muchos desarrolladores entusiastas de los de bugs, todos disponibles bajo la licencia BSD, y basados en motores de base de datos se unieron al proyecto, coordinaron vía contribuciones de proveedores comerciales, empresas Internet y entre todos comenzaron a incorporar muchas aportantes y programadores de código abierto mayormente. características al motor.Aunque la licencia permitía la comercialización de PostgreSQL, el código no se desarrolló en principio con fines comerciales, algo sorprendente considerando las ventajas que PostgreSQL ofrecía. 3. FUNCIONAMIENTO La principal derivación se originó cuando Paula Hawthtorn (un 3.1 Arquitectura básica de Postgres. miembro del equipo original de Ingres que se pasó a Postgres) y Michael Stonebraker conformaron IllustraInformation Postgres usa un modelo cliente - servidor. Una sesión de postgres se basa en dos procesos, que mostramos a Technologies para comercializar Postgres. continuación. En 2000, ex inversionistas de Red Hat crearon la empresa Great 3.1.1 Un proceso servidor: Bridge para comercializar PostgreSQL y competir contra Es el que gestiona los archivos que forman la proveedores comerciales de bases de datos. Great Bridge auspició base de datos, acepta las conexiones que efectúan a varios desarrolladores de PostgreSQL y donó recursos de vuelta los clientes con ella y que ejecuta acciones a a la comunidad, pero a fines de 2001 cerró debido a la dura petición de los clientes. competencia de compañías como Red Hat y pobres condiciones del mercado.
  • 3. 3.1.2 La Aplicación cliente del usuario 4.2 Consistencia (frontend) Es la propiedad que Es la que pretende ejecutar ciertas acciones asegura que sólo se empieza aquello que se sobre la base de datos. Estas aplicaciones puede acabar. Por lo tanto se ejecutan pueden ser de naturaleza muy diversa, desde aquellas operaciones que no van a romper herramientas modo texto o aplicaciones la reglas y directrices de integridad de la gráficas, hasta servidores que acceden para base de datos. recuperar datos y mostrarlos en una página web. 4.3 Aislamiento: Es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que dos transacciones Tal como ocurre en las aplicaciones cliente sobre la misma información nunca servidor, el cliente puede estar en un equipo generará ningún tipo de error. diferente al que se encuentra el servidor. En ese caso, ambos se comunican mediante una 4.4 Durabilidad conexión de red TCP/IP. Es necesario tener Es la propiedad que esto en cuenta, ya que archivos que son asegura que una vez realizada la operación, accesibles desde un cliente no tienen por qué ésta persistirá y no se podrá deshacer serlo desde otro. Se debe prestar especial aunque falle el sistema. atención a estos temas. El servidor de postgres puede manejar 4.4 Sistemas Operativos diferentes conexiones concurrentes de los Corre en casi todos los principales clientes. Dispone de un proceso padre sistemas operativos: Linux, Unix, BSDs, (conocido como postmaster) que crea Mac OS, Beos, Windows, etc. distintos procesos hijos que atienden las conexiones entrantes. Un planteamiento típico 4.6 Documentación del modelo cliente servidor. Muy bien organizada, pública y libre, con comentarios de los propios usuarios. 4.7 Soporte Nativo Para los lenguajes más populares del medio: PHP, C, C++, Perl, Python, etc. Figura 1 Modelo cliente – servidor en postgres 4.8 Drivers Odbc, Jdbc, .Net, etc. 3.2 Motor De Almacenamiento 4.9 Soporte De Caracteristicas PostgreSQL soporta un motor por defecto, el sistema de Todas las características de una base de datos profesional almacenamiento Postgres (Postgres Storage System). (triggers, storeprocedures – funciones, secuencias, La lógica y arquitectura del gestor de almacenamiento relaciones, reglas, tipos de datos definidos por usuarios, fueron detalladas en The Postgres Storage System. vistas, vistas materializadas, etc.) Postgres ha pasado por varias revisiones importantes desde entonces, desde la versión 1, que se lanzó para unos pocos 4.10 Soporte de datos usuarios, hasta la 3, se mejoró el ejecutor de consultas y Tipos de datos de SQL92 y SQL99. se añadió el soporte para múltiples gestores de almacenamiento. 4.11 Soporte De Protocolo De Comunicación Encriptado por SSL 4. CARACTERÍSTICAS DE POSTGRESQL 4.12 Extensiones 4.1 Atomicidad (Indivisible) Para alta disponibilidad, nuevos tipos de índices, datos Es la propiedad espaciales, minería de datos, etc. Comunidades muy activas, que asegura que la operación se ha varias comunidades en castellano. realizado o no, y por lo tanto ante un fallo Altamente adaptable a las necesidades del cliente. del sistema no puede quedar a medias.
  • 4. 5. SENTENCIAS e) NOCREATEUSER 5.1 Sentencias Para Creación De Usuario Explícitamente fuerza a la situación por defecto, que deniega el privilegio. PostgreSQL proporciona dos métodos para la creación de usuarios de bases de datos. Cada uno de ellos f) IN GROUPnombre_grupo [, ...] requiere autenticación como superusuario. Añade al nuevo usuario al grupo llamado Los métodos son: nombre_grupo. Pueden ser • A través del uso del comando SQL CREATE USER. especificados múltiples nombres de grupo, • Un programa de línea de comandos llamado separándolos mediante createuser comas. El o los grupos deben existir para que funcione la condición. 5.1.1 Create user: g) VALID UNTIL 'abstime' Establece que la contraseña del usuario La sintaxis para CREATE USER es: expirará el abstime, el cual debe ser un CREATE USER nombre_usuario formato reconocible de fecha/hora [ WITH [ SYSID uid ] (timestamp). Tras esa fecha, la contraseña [ PASSWORD 'password' ] ] se resetea, y la expiración se hace efectiva. [ CREATEDB | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ] h) VALID UNTIL 'infinity' [ IN GROUP groupname [, ...] ] Establece validez permanente para la [ VALID UNTIL 'abstime' ] contraseña del usuario. A continuación se describe cada una de las partes de la sintaxis de CREATE USER: 5.1.2 Createuser: a) SYSID uid: El script createuser es ejecutado directamente Especifica que el ID que va a definirse debe desde la línea de comandos, y puede operar de establecerse al valor de uid.Si se omite, un dos formas. razonable y único valor numérico por Si se utiliza sin argumentos, él defecto es escogido. interactivamente le pedirá el nombre de usuario y cada uno de los privilegios que se le b) PASSWORD 'password': van a asignar. Establece la nueva contraseña del usuario. Alternamente, puede optar por especificar las Si no se especifica, la contraseña por defecto opciones y el nombre del usuario a ser creado es NULL. en la misma línea de comandos. c) CREATEDB | NOCREATEDB: La sintaxis de createuser es: Usando la palabra clave CREATEDB se le createuser [ opciones ] [ nombre_usuario ] garantiza al nuevo usuario el privilegio de crear nuevas bases de datos, así como el de El nombre_usuario en la sintaxis representa el destruir las de su propiedad. Usando nombre del usuario que va a crear. Reemplace NOCREATEDB se deniega este permiso opciones con una o más de las siguientes: (que es lo que ocurre por defecto). a) -d, -createdb d) Createuser | Nocreateuser Equivalente a la palabra clave CREATEDB. Permite al nuevo usuario Certifica el privilegio de crear nuevos crear bases de datos. usuarios. Si un usuario tiene los privilegios de crear a otros usuarios tendrá b) -D, -no-createdb además todos los privilegios, Equivalente a la palabra clave en todas las bases de datos (incluyendo los NOCREATEDB. Explícitamente indica permisos para crear una base que el nuevo usuario no puede crear de datos, aunque se haya especificado bases de datos. NOCREATEDB). c) -a, -adduser Equivalente a la palabra clave CREATEUSER Perimte al nuevo usuario la creación de otros usuarios, y
  • 5. asigna el status de superusurario al usuario. 5.2 Operadores 5.2.1 Operadores de precedencia lexical d) -A, -no-adduser Equivalente a la palabra clave (precedencia decreciente) NOCREATEUSER. Explícitamente indica que el nuevo usuario no es superusuario. Tabla 1- Operadores de precedencia lexical Elemento Precedencia Descripción e) -i SYSID, -sysid=SYSID UNION izquierda constructor SQL de select Establece el nuevo ID de sistema del usuario a SYSID. :: conversor de tipos de Postgres [] izquierda delimitadores de array f) -P, -pwprompt . izquierda delimitadores de Resulta en una petición de introducción tabla/columna de contraseña, permitiéndole establecer la contraseña del nuevo usuario. - derecha menos unario ; izquierda terminación de declaración, g) -h NOMBRE_MAQUINA, logaritmo -host=NOMBRE_MAQUINA : derecha exponenciación Especifica desde qué NOMBRE_MAQUINA se conectará, | izquierda comienzo de intervalo además de la local (localhost), o la */% izquierda multiplicación, división máquina definida por la variable de entorno PGHOST. +- izquierda adición, substracción IS test para TRUE, FALSE, NULL h) -p PUERTO, -port=PUERTO ISNULL test para NULL Especifica que la conexión de base de datos se realizará por el puerto NOTNULL test para NOT NULL PUERTO, en vez de por el puerto por (todos los demás nativos y definidos por el defecto. operadores) usuario i) -U NOMBRE_USUARIO, IN fijar miembro -username=NOMBRE_USUARIO BETWEEN continente Especifica que NOMBRE_USUARIO LIKE concordancia de patrones de será el usuario que conecte a strings PostgreSQL (por defecto se conecta usando el nombre de usuario del <> desigualdad booleana sistema). = derecha igualdad j) -password NOT derecha negación AND izquierda intersección lógica Resulta en una petición de contraseña OR izquierda unión lógica para el usuario que conecta, lo cual ocurre automáticamente si el archivo 5.2.2 Operadores generales pg_hba.conf está configurado para no confiar en la maquina solicitante. Los operadores mostrados aquí están definidos para un número de tipos de datos nativos, que van desde los tipos numéricos hasta los tipos date/time.
  • 6. Operador Descripción Utilización ||/ Raíz cúbica ||/ 27.0 Tabla 2- Operadores generales Operador Descripción Utilización < Menor que? 1<2 <= Menor o igual 1 <= 2 que? 5.2.4 Operadores geométricos <> No igual? 1 <> 2 Tabla 4- Operadores geométricos = Igual? 1=1 Operador Descripción Utilización > Mayor que? 2>1 + Translación '((0,0),(1,1))'::box + >= Mayor o igual 2 >= 1 '(2.0,0)'::punto que? - Translación '((0,0),(1,1))'::box - || Concatena 'Postgre' || 'SQL' '(2.0,0)'::punto strings * Escalado/rotación '((0,0),(1,1))'::box * !!= NOT IN 3 !!= i '(2.0,0)'::punto ~~ Como 'scrappy,marc,hermit' ~~ / Escalado/rotación '((0,0),(2,2))'::box / '%scrappy%' '(2.0,0)'::punto !~~ No como 'bruce' !~~ '%al%' # Intersección '((1,-1),(-1,1))' # '((1,1), ~ Concordancia 'thomas' ~ '.*thomas.*' (-1,-1))' (regex), sensible # Número de puntos # '((1,0),(0,1),(-1,0))' a mayusc/minusc en polígono ~* Concordancia 'thomas' ~* '.*Thomas.*' ## Punto más '(0,0)'::punto ## '((2,0), (regex), sensible próximo (0,2))'::lseg a mayusc/minusc && Se superpone a? '((0,0),(1,1))'::caja && !~ No concuerda 'thomas' !~ '.*Thomas.*' '((0,0),(2,2))'::caja (regex), sensible a mayusc/minusc &< Se superpone por '((0,0),(1,1))'::caja &< la izquierda? '((0,0),(2,2))'::caja !~* No concuerda 'thomas' !~* '.*vadim.*' (regex), sensible &> Se superpone por '((0,0),(3,3))'::caja &> a mayusc/minusc la derecha? '((0,0),(2,2))'::caja <-> Distancia entre '((0,0),1)'::círculo <-> '((5,0),1)'::círculo << A la izquierda de? '((0,0),1)'::círculo << 5.2.3 Operadores numéricos '((5,0),1)'::círculo <^ Está debajo de? '((0,0),1)'::círculo <^ Tabla 3- Operadores numéricos '((0,5),1)'::círculo Operador Descripción Utilización >> A la derecha de? '((5,0),1)'::círculo >> ! Factorial 3! '((0,0),1)'::círculo !! Factorial (operador izquierdo) !! 3 >^ Esta encima de? '((0,5),1)'::círculo >^ '((0,0),1)'::círculo % Módulo 5%4 ?# Interseca o se '((-1,0),(1,0))'::lseg ?# % Truncado % 4.5 superpone '((-2,-2),(2,2))'::caja; * Multiplicación 2*3 ?- Es horizontal? '(1,0)'::punto ?- + Suma 2+3 '(0,0)'::punto - Resta 2-3 ?-| Es perpendicular? '((0,0),(0,1))'::lseg ?-| / División 4/2 '((0,0),(1,0))'::lseg : Exponenciación natural : 3.0 @-@ Longitud de @-@ '((0,0), circunferencia (1,0))'::path ; Logaritmo natural (; 5.0) ?| Es vertical? '(0,1)'::punto ?| @ Valor Absoluto @ -5.0 '(0,0)'::punto ^ Exponenciación 2.0 ^ 3.0 ?|| Es paralelo? '((-1,0),(1,0))'::lseg ?|| |/ Raíz cuadrada |/ 25.0 '((-1,2),(1,2))'::lseg
  • 7. Operador Descripción Utilización Operador Descripción Utilización <= Menor o igual que '192.168.1.5'::cidr<= @ Contenido en '(1,1)'::punto @ '192.168.1.5'::cidr '((0,0),2)'::círculo = Igual que '192.168.1.5'::cidr = @@ Centro de @@ '((0,0),10)'::círculo '192.168.1.5'::cidr ~= Parecido a '((0,0),(1,1))'::poligono >= Mayor o igual que '192.168.1.5'::cidr>= ~= '((1,1), '192.168.1.5'::cidr (0,0))'::poligono > Mayor que '192.168.1.5'::cidr> '192.168.1.4'::cidr <> No igual que '192.168.1.5'::cidr<> '192.168.1.4'::cidr 5.2.5 Operadores de intervalos de tiempo << Está contenido en '192.168.1.5'::cidr<< '192.168.1/24'::cidr El tipo de dato de intervalos de <<= Está contenido en '192.168.1/24'::cidr<<= tiempo, tinterval, es un legado de los tipos o es igual a '192.168.1/24'::cidr date/time originales y no está tan bien soportado >> Contiene '192.168.1/24'::cidr>> como los tipos más modernos. Hay varios '192.168.1.5'::cidr operadores para este tipo. >>= Contiene o es igual '192.168.1/24'::cidr>>= que '192.168.1/24'::cidr Tabla 5- Operadores de intervalos de tiempo Operador Descripción Utilización 5.2.7 Operadores IP V4 INET #< Intervalo menor que? #<= Intervalo menor o igual que? Tabla 7- Operadores ipv4 inet #<> Intervalo no igual que? Operador Descripción Utilización #= Intervalo igual que? < Menor que '192.168.1.5'::inet< #> Intervalo mayor que? '192.168.1.6'::inet #>= Intervalo mayor o igual que? <= Menor o igual que '192.168.1.5'::inet<= '192.168.1.5'::inet <#> Convertir a un intervalo de tiempo = Igual que '192.168.1.5'::inet = << Intervalo menor que? '192.168.1.5'::inet | Comienzo de intervalo >= Mayor o igual que '192.168.1.5'::inet>= ~= Parecido a '192.168.1.5'::inet <?> Tiempo dentro del intervalo? > Mayor que '192.168.1.5'::inet> '192.168.1.4'::inet <> No igual '192.168.1.5'::inet<> '192.168.1.4'::inet << Está contenido en '192.168.1.5'::inet<< '192.168.1/24'::inet <<= Está contenido o '192.168.1/24'::inet<<= es igual a '192.168.1/24'::inet >> Contiene '192.168.1/24'::inet>> '192.168.1.5'::inet >>= Contiene o es igual '192.168.1/24'::inet>>= a '192.168.1/24'::inet 5.2.6 Operadores IP V4 CIDR Tabla 6- Operadores ipv4 cidr Operador Descripción Utilización < Menor que '192.168.1.5'::cidr< '192.168.1.6'::cidr 5.3 Sentencias De Control
  • 8. Podemos utilizar sentencias de control para escribir nuestros programas y permitir que sigan un algoritmo ELSE no lineal, para ello, contamos básicamente con las RETURN false; siguientes estructuras : END IF; ...resto de la función... LOOP, EXIT,IF, ELSE,FOR, WHILE 5.3.4 SENTENCIA DE CICLO FOR : 5.3.1 SENTENCIA DE CICLO LOOP : Existen dos tipos de ciclos FOR, el primero tiene Esta sentencia nos permite efectuar un ciclo, que ver claramente con los ciclos numéricos su estructura básica es : comunes, es decir, lo que comúnmente se usa para efectuar repeticiones, y por otra parte, tenemos un ...resto de la función... ciclo FOR que nos permite recorrer tablas y LOOP procesar sus datos, esta segunda está ligada a ...sentencias a ejecutar en el ciclo... sentencias SQL, veamos entonces como se utiliza END LOOP la sentencia FOR ...resto de la función... casos: 5.3.2 SENTENCIA DE SALIDA EXIT : 5.3.4.1 SENTENCIA FOR DE PROCESO CICLICO Cuando usamos un ciclo LOOP, es necesario darle NUMERICO una salida para que este mismo termine, la sentencia EXIT nos permite finalizar el LOOP y FOR <variable> IN <inicio>..<fin> continuar en la sentencia siguente a la salida de LOOP éste, generalmente, EXIT está acompañado con la ... SENTENCIAS A EJECUTAR sentencia IF, por ejemplo: DENTRO DEL CICLO FOR ... END LOOP; LOOP ...resto de la funcion... o bien puede usar el FOR de forma contador := contador + 1; inversa IF contador >= 10 THEN EXIT; -- salida del loop cuando sea mayor o FOR <variable> REVERSE igual que 10 <fin>..<inicio> LOOP END IF; ... SENTENCIAS A EJECUTAR END LOOP DENTRO DEL CICLO FOR ... ...resto de la funcion... END LOOP; 5.3.3 SENTENCIAS IF, ELSE: Ejemplo : ...resto de la funcion... Podemos efectuar operaciones de comparación FOR inc IN 1..10 LOOP con las sentencias IF, ELSE, los operadores de factorial := factorial * inc; comparación son los siguientes : END LOOP; RETURN factorial; <menor que ... ...resto de la funcion... >mayor que ... : <>distinto a ... 5.3.4.2 SENTENCIA FOR APLICADA A <= menor o igual que ... >= mayor o igual que ... PROCESOS DE REGISTROS = igual que ... SQL OR o ... AND y ... FOR <registro o fila> IN <sentencia SELECT SQL> LOOP ... SENTENCIAS A EJECUTAR DENTRO DEL CICLO FOR ... Ejemplo: END LOOP; ...resto de la función... IF >= 10 or THEN RETURN true; Ejemplo : ...resto de la funcion...
  • 9. DECLARE características especiales de Postgres; mientras esto provee registro RECORD; compatibilidad, es menudo más conveniente sacar provecho BEGIN a aquellas definiciones adicionales del motor. A FOR registro IN SELECT * FROM continuación se describen los tipos de datos más utilizados y productos LOOP stock := registro.sock_actual + 100; la sugerencia de cuando es conveniente utilizarlos: ... otras sentencias ... END LOOP; ...resto de la funcion... Tabla 8- Tipos cadenas Note que para utilizar esta sentencia Tipos String FOR debemos declarar una variable de Tipo Descripción tipo RECORD o registro. RECORD es char(n) Datos de caracteres no Unicode de longitud fija una palabra reservada para estos Text Cantidad no predefinida casos, y no posee una estructura varchar(n) Datos de caracteres no Unicode de longitud definida pues no ha sido asignada a variable ninguna tabla, este tipo de dato nos permite recorrer la tabla de productos y obtener sus valores por medio de El tipo char(n) almacena n caracteres en formato ASCII, un byte esta variable. por cada letra. Cuando almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos es inferior. Por ejemplo, si en un char(5), 5.3.5 SENTENCIA DE CICLO guardamos el valor 'A', se almacena 'A', ocupando los cinco CONDICIONAL WHILE bytes. La sentencia WHILE se ejecuta de forma muy Por su parte varchar(n) almacena n caracteres en formato similar a otros lenguajes de programación, su ASCII, un byte por cada letra. Cuando almacenamos datos en el estructura es la siguiente : tipo varchar, únicamente se utilizan los caracteres necesarios, Por ejemplo, si en un varchar(255), guardamos el valor 'A', se WHILE <condicion> LOOP almacena 'A', ocupando solo un byte. ... SENTENCIAS A EJECUTAR DENTRO DEL CICLO WHILE ... El tipo de dato text permite el almacenamiento de un string en END LOOP; cualquier formato de largo no predefinido. Este es el tipo más versátil de string. Considerando que hoy en día los espacios de Ejemplo : almacenamiento son enormes, este tipo se recomienda en todo ...resto de la funcion... caso por sobre varchar. Cabe señalar que dado que text no tiene WHILE inc<= 10 LOOP límite predefinido, entonces al momento de llevar los datos a factorial := factorial * inc; otros sistemas con largos predefinidos no hay aviso previo de END LOOP; que estamos sobrepasando algún largo establecido, siendo este RETURN factorial; ...resto de la funcion... un punto a considerar al momento de seleccionar el tipo de dato. Este codigo funciona igual al descrito en el ejemplo del ciclo FOR. Tabla 9- Tipos numericos 6. TIPOS DE DATOS Tipos Numéricos Tipo Tamaño Descripción Rango Postgres pone a disposición del usuario una gran variedad bool Booleano true / false – de tipos de datos pensados en cubrir necesidades (‘t’ / ‘f’) específicas. Suele suceder que al modelar una base de datos decimal variable Especificadas no limite se utilizan los tipos conocidos y no se da provecho a las por el usuario
  • 10. float4 4 bytes Número de 6 lugares de punto flotante decimales con precisión En tipos de datos para fecha y hora, Postgres conserva los tipos Float8 8 bytes Número de 15 lugares de tradicionales. Aquí el único parámetro interesante es aquel que se punto flotante decimales puede pasar a timestamp para indicar la cantidad de milisegundos con doble a almacenar que por defecto son 6. precisión Bigint 8 bytes Valores -9,233,372,036 enteros. ,854,775,808 a +9,233,372,03 6,854,775,807 int2 2 bytes Precisión fija -32768 a (entero) +32767 7. CARACTERÍSTICAS AVANZADAS Int4 4 bytes opción para -2147483648 a determinada +2147483647 precisión DE SQL EN POSTGRES (entero) Int8 8 bytes amplia gama +/- > 18 Habiendo cubierto los aspectos básicos de PostgreSQLpara determinada lugares de acceder a los datos, discutiremos ahora aquellas características de precisión decimales de Postgres que los distinguen de los gestores de bases de datos (entero) convecionales. Estas características incluyen herencia, valores numeric variable Especificadas no limite no-atómicos de datos (atributos basados en vectores y por el usuario conjuntos) entre otros. serial 4 bytes Identicador o 0 a referencia +2147483647 7.1 Herencia cruzada Creemos dos clases. La clase capitals contiene las capitales de los estados, las cuales son también ciudades. Postgres contiene los tipos de datos nativos comúnmente Naturalmente, la clase capitals debería heredar de cities. conocidos int y float, para números enteros y reales respectivamente. Estos dependiendo del dígito que acompañe su nombre, indica la precisión que soporta la columna. Para grandes números se utiliza bigint, el cual suele ser utilizado para las columnas de identificadores. Cuando se requiere de gran precisión en números, virtualmente sin limitación (1000 dígitos), el tipo a utilizar es sin duda numeric. Este es recomendado para valores monetarios u cualquier dato donde la precisión es crucial. Este tipo además En este caso, una instancia de capitals hereda todos los soporta el valor ‘NaN’ (Not A Number – No Un Numero) para atributos (name, population y altitude) de su padre, cities. indicar tal caso, además de NULL. El tipo del atributo name (nombre) es text, un tipo nativo de Postgres para cadenas ASCII de longitud variable. El El tipo de dato SERIAL es en realidad un atajo. En Postgres no tipo del atributo population (población) es float, un tipo de existe un tipo autoincremental como es el caso de MySQL. datos, también nativo de Postgres , para números de punto flotante de doble precisión. Las clase capitals tiene un Aquí por un lado se genera la columna con tipo BIGINT atributo extra, state, que muestra a qué estado pertenecen. asociando al valor por defecto el siguiente valor de una secuencia En Postgres, una clase puede heredar de ninguna o varias (Ver punto 3.6) creada especialmente, provocándose el efecto de otras clases, y una consulta puede hacer referencia tanto a auto incremento todas las instancias de una clase como a todas las instancias de una clase y sus descendientes. Tabla 10- Tipo fecha y hora. Tipos de Fecha y Hora La jerarquía de la herencia es un gráfico acíclico dirigido. Tipo Descripción date Fecha, con día, mes y año Por ejemplo, la siguiente consulta encuentra todas time Hora, minuto, segundos timestamp(n) Fecha y hora con milisegundos. aquellas ciudades que están situadas a un altura de 500 o El parámetro n, indica la cantidad de más pies: milisegundo a almacenar.
  • 11. implementarlo a futuro pero no es de prioridad alta por eso que viene retrasándose su implementación desde versiones antiguas. 7.2 Valores No-Atómicos Uno de los principios del modelo relacional es que los atributos de una relación son atómicos Postgres no posee esta restricción; los atributos pueden contener sub-valores a los que puede accederse desde el lenguaje de consulta. Por otro lado, para encontrar los nombres de todas las Por ejemplo, se pueden crear atributos que sean vectores ciudades, incluídas las capitales estatales, que estén de alguno de los tipos base. situadas a una altitud de 500 o más pies, la consulta es: 7.3 Vectores Postgres permite que los atributos de una instancia sean definidos como vectores multidimensionales de longitud fija o variable. Puede crear vectores de cualquiera de los tipos base o de tipos definidos por el usuario. Para ilustrar su uso, creemos primero una clase con vectores de tipos whichreturns: base. La consulta de arriba creará una clase llamada SAL_EMP con una cadena del tipo text (name),un vector Aquí el "*" después de cities indica que la consulta debe unidimensional del tipo int4 (pay_by_quarter), el cual realizarse sobre cities y todas las clases que estén por representa el salario trimestral del empleado y un vector debajo de ella en la jerarquía de la herencia. Muchos de bidimensional del tipo text (schedule), que representa la los comandos que ya hemos discutido (select, agenda semanal del empleado. Ahora realizamos algunos and>upand> and delete) brindan soporte a esta notación INSERTSs; note que cuando agregamos valores a un de "*" al igual que otros como alter. vector, encerramos los valores entre llaves y los separamos mediante comas. Si usted conoce C, esto no es distinto a la sintaxis para inicializar estructuras. Con esto obtenemos una reducción en la construcción del índice y ganaremos velocidad con ello además de un mejor orden conceptual de nuestras tablas. No sólo se puede heredar de un padre, es posible heredar de varias tablas, así teniendo la tabla hija todas las columnas de sus padres, y en caso que 2 o más padres tengan un columna con el mismo nombre éstas se fusionarán en la hija siempre y cuando sean del mismo Postgres utiliza de forma predeterminada la convención de tipo de dato. vectores "basados en uno" -- es decir, un vector de n elementos comienza con vector[1] y termina con Al utilizar ésta poderosa característica existen algunas vector[n]. Ahora podemos ejecutar algunas consultas consideraciones que hay que tener en cuenta para sobre SAL_EMP. Primero mostramos como acceder a un evitarnos sorpresas desagradables e inesperadas. Al crear solo elemento del vector por vez. Esta consulta devuelve tablas heredadas, no todas las características de la tabla se los nombres de los empleados cuyos pagos han cambiado heredan. Por ejemplo, las claves primarias, foráneas, en el segundo trimestre: indices únicos. Según el roadmap se verá para
  • 12.  PostgreSQL para Windows ha sido descontinuado.  Para obtener un performance optimo, es requerido usar un sistema UNIX o un Linux optimizado para esta tarea. 8.3 PostgreSQL VS MySQL La siguiente consulta recupera el pago del tercer trimestre de todos los empleados: Tabla11. Cuadro comparativo PostgreSQL MySQL Es más lento a la Es más rápido a la hora de resolver hora de resolver preguntas preguntas No tiene una Tiene mejor buena documentación y documentación se ha orientado más a facilitarle la También podemos acceder a cualquier porción de un vector, o subvectores. Esta consulta recupera el primer vida al item de la agenda de Bill para los primeros dos días de la desarrollador semana. Ofrece una Es fácil de vulnerar garantía de sin protección integridad en los adecuada. datos mucho más fuerte. Presenta una Es más ligero. mejor escalabilidad y rendimiento bajo 8. VENTAJAS Y DESVENTAJAS grandes cargas de trabajo 8.1 Ventajas  Es software libre o sea, no hay costo asociado 9. INSTALACION DE POSTGRESQL 8.4.8 a la licencia del software. EN UBUNTU 10.10  Estabilidad y confiabilidad legendarias. 9.1 Iniciando Instalación (Aplicaciones → Accesorios → Terminal):  Extensible, el código fuente está disponible sudo apt-get install postgresql postgresql-client para todos sin costo. postgresql-contrib libpq-dev pgadmin3 Eso instala el cliente y servidor de la base de datos, algunos scripts de utilería y la aplicación pgAdmin para  Multiplataforma, está disponible en casi administrar la base de datos disponibles en los cualquier Unix. repositorios de Ubuntu.  Herramientas gráficas de diseño y administración de bases de datos. 8.2 Desventajas 9.2 Cambiar la Contraseña del Usuario
  • 13. Administrador 9.5 Ejemplo Ahora necesitamos establecer la contraseña del usuario administrador postgres. Teclea la siguiente línea en la Ingresando A Postgresql: terminal (cambia la palabra password por la contraseña que desees usar): Desde la terminal (Aplicaciones → Accesorios → sudo su postgres -c psql Terminal): ALTER USER postgres WITH PASSWORD 'password'; q sudo /etc/init.d/postgresql start Eso altera la contraseña dentro de la base de datos, ahora para iniciar. necesitamos hacer lo mismo para el usuario Linux postgres: Luego lo primero que tenemos qu hacer es usar sudo passwd -d postgres pgAdmin3 (Aplicaciones → Programación → pgAdmin sudo su postgres -c passwd III) para crearnos un servidor donde alojaremos todas Te aparecerá un prompt, introduce la misma contraseña nuestras bases de datos. Allí hacemos clic en el menú que pusiste antes. File → Add server… 9.3 Configurando pgAdmin Listo, de ahora en adelante podemos usar pgAdmin o la terminal para administrar nuestra base de datos como el usuario postgres. Pero antes de que te metas a pgAdmin deberías configurar el PostgreSQL Admin Pack, que te permite llevar un mejor registro y monitoreo de tu base de datos. Ejecuta lo siguiente desde la línea de comandos en tu terminal: sudo su postgres -c psql < /usr/share/postgresql/8.4/contrib/adminpack.sql Para ejecutar pgAdmin ve a tu menú de aplicaciones: Aplicaciones → Programación → pgAdmin III 9.4 Cambiar el Esquema de Autentificación de Postgresql Fig Al ejecutar algunos comandos de base de datos, es posible ura 2. Creación del servidor que te encuentres con un error que dice algo como: FATAL: la autentificación Ident falló para el usuario «x» Luego accedemos al servidor al hacer doble click el Para evitarlo necesitas editar el archivo nombre que le pusimos al servidor y nos va a pedir la /etc/postgresql/8.4/main/pg_hba.conf y cambiar el contraseña que le dimos: esquema de autentificación. Abre el archivo con privilegios de root: Desde ahí podremos crear nuestras bases de datos y sudo gedit /etc/postgresql/8.4/main/pg_hba.conf Y cambia esto: posteriormente las tablas cómodamente. # "local" is for Unix domain socket connections only local all all ident Por: # "local" is for Unix domain socket connections only local all all md5 Reinicia el servidor de PostgreSQL tecleando en tu terminal: sudo /etc/init.d/postgresql restart
  • 14. Fig ura 3. Creación de base de datos Figura 6.Creacion mediante código de tablas Fi gura 4.Creacion de tabla Figura 7. Llenado de datos de manera grafica O sino desde la terminal (Aplicaciones → Accesorios → Terminal): Sudo su postgres psql -d template1 create database baseDatos; q; psql -d baseDatos; create table tabla(id int, nombre char(10), primary key(id)); Para ver todas las tablas de mi base de datos: dt; Figura 5. Creación de columnas Describir la tabla: d tabla; Insertar: insert into tabla values(0,'charl'); Ver registros de la tabla:
  • 15. select * from tabla; 10. Conclusiones  PostgreSQL es tan apto y conveniente como Microsoft SQL Server u Oracle, pero con una gran ventaja del costo.  El motor de interno es muy estable y hace un buen desempeño ante una gran gama de volúmenes de datos.  Corre en el hardware y Sistema Operativo de tu elección, es decir no solo en el sistema que cualquier otro vendedor recomienda para usar tu base de datos.  PostgreSQL es más confiable q MySQL pero mas lento. 11. Agradecimientos Agradecemos al profesor y a nuestros compañeros por ser la motivación a la investigación de este pequeño, pero significativo aporte, con el fin de la difusión de este gestor de base de datos como lo es PostgresSQL 12. REFERENCIAS 12.1 Bibliográficas:  Manual PostgreSQL, Instalación, Creación, Mantención, PlpgSQL,.2 Abril 2008, Versión 0.3  Jonathan Makuc, Cristian Molina, Armando Reyes 12.2 Linkograficas:  http://es.wikipedia.org/wiki/PostgreSQL  http://www.ibiblio.org/pub/linux/docs/LuCaS/ Postgresql- es/web/navegable/todopostgresql/advanced.ht ml  http://www.guatewireless.org/articulos/mys ql-vs-postgresql/#postgresql