Sei sulla pagina 1di 15

[ESCRIBA EL NOMBRE DE LA COMPAA]

GUIA DE POSTGRESQL
POSTGRESQL/PLSQL
ANGEL [Seleccione la fecha]

[Escriba aqu una descripcin breve del documento. Normalmente, una descripcin breve es un resumen corto del contenido del documento. Escriba aqu una descripcin breve del documento. Normalmente, una descripcin breve es un resumen corto del contenido del documento.]

1. POSTGRESQL
1.1 CARACTERSTICAS PostgreSQL is un potente sistema de base de datos relacional libre (open source, su cdigo fuente est disponible) liberado bajo licencia BSD. Tiene mas de 15 aos de activo desarrollo y arquitectura probada que se ha ganado una muy buena reputacin por su confiabilidad e integridad de datos. Funciona en todos los sistemas operativos importantes , incluyendo Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), y Windows. El desarrollo de PostgreSQL es realizado por un equipo de desarrolladores (voluntarios en su mayora) dispersos alrededor del mundo y comunicados va Internet. Este es un proyecto de la comunidad y no es controlado por ninguna compaa. Para integrarse al proyecto vea el FAQ de los desarrolladores: [http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html ]. PostgreSQL es un servidor de base de datos relacional libre, liberado bajo la licencia BSD. Es una alternativa a otros sistemas de bases de datos de cdigo abierto (como MySQL, Firebird y MaxDB), as como sistemas propietarios como Oracle o DB2. Integridad transaccional, obedece completamente a la especificacin ACID. Acceso concurrente multiversin, MVCC Control de Concurrencia MultiVersin (Multi-Version Concurrency Control), no se bloquean las tablas, ni siquiera las filas, cuando un proceso escribe. Es la tecnologa que PostgreSQL usa para evitar bloqueos innecesarios. Mediante el uso de MVCC, PostgreSQL evita el problema de que procesos lectores estn esperando a que se termine de escribir. En su lugar, PostgreSQL mantiene una ruta a todas las transacciones realizadas por los usuarios de la base de datos. PostgreSQL es capaz entonces de manejar los registros sin necesidad de que los usuarios tengan que esperar a que los registros estn disponibles. Cliente/Servidor: PostgreSQL usa una arquitectura proceso-por-usuario cliente/servidor. Esta es similar al mtodo del Apache 1.3.x para manejar procesos. Hay un proceso maestro que se ramifica para proporcionar conexiones adicionales para cada cliente que intente conectar a PostgreSQL. Write Ahead Logging (WAL): La caracterstica de PostgreSQL conocida como Write Ahead Logging incrementa la dependencia de la base de datos al registro de cambios antes de que estos sean escritos en la base de datos. Esto garantiza que en el hipottico caso de que la base de datos se caiga, existir un registro de las transacciones a partir del cual podremos restaurar la base de datos.

Esto puede ser enormemente beneficioso en el caso de cada, ya que cualesquiera cambios que no fueron escritos en la base de datos pueden ser recuperados usando el dato que fue previemante registrado. Una vez el sistema ha quedado restaurado, un usuario puede continuar trabajando desde el punto en que lo dej cuando cay la base de datos. Lenguajes Procedurales: PostgreSQL tiene soporte para lenguajes procedurales internos, incluyendo un lenguaje nativo denominado PL/pgSQL. Este lenguaje es comparable al lenguaje procedural de Oracle, PL/SQL. Otra ventaja de PostgreSQL es su habilidad para usar Perl, Python, o TCL como lenguaje procedural embebido. adems de en C, C++ y, Java. Interfaces con lenguajes de programacin. La flexibilidad del API de PostgreSQL ha permitido a los vendedores proporcionar soporte al desarrollo fcilmente para el RDBMS PostgreSQL Estas interfaces incluyen Object Pascal, Python, Perl, PHP, ODBC, Java/JDBC, Ruby, TCL, C/C++, Pike, etc. Herencia de tablas. Tipos de datos : Incluye la mayora de los tipos de datos SQL92 y SQL99 (INTEGER, NUMERIC, BOOLEAN,CHAR, VARCHAR, DATE, INTERVAL, y TIMESTAMP), soporta almacenamiento de objetos grandes binarios, adems de tipos de datos y operaciones geomtricas. Savepoints: Puntos de recuperacin a un momento dado, tablespaces, replicacin asincrnica, transacciones jerarquizadas (savepoints), backups en lnea. Analizador/optimizador de consultas analizador/optimizador de consultas. : Un sofisticado

Soporta juegos de caracteres internacionales, codificacin de caracteres multibyte.

1.2 ESTRUCTURA ARQUITECTURA: PostgreSQL funciona con una arquitectura liente/Servidor, un proceso servidor (postmaster) y una serie de aplicaciones cliente que realizan solicitudes de acciones contra la base de datos a su proceso Servidor. Por cada una de estas aplicaciones cliente, el proceso postmaster crea un proceso.

Tenemos aqu que se ejecutan una serie de aplicaciones cliente (FrontEnd) y una serie de procesos en el servidor (BackEnd), de modo que, por ejemplo, la interaccin entre un programa que se ejecuta en un cliente, por ejemplo, pgadmin3, una aplicacin PHP, etc y el servidor de base de datos sera:

El proceso Postmaster: es el proceso inicial gestiona los accesos multiusuario y multiconexin levanta la memoria compartida est al tanto de solicitudes de nuevas conexiones lanza procesos de atencin de demanda, realizando las operaciones sobre la base de datos a solicitud de los clientes realiza el enlazado con los archivos de datos, gestionando estos ficheros, donde los ficheros pueden pertenecer a varias bases de datos

La comunicacin entre BackEnd/FrontEnd se realiza mediante TCP/IP, normalmente por el puerto 5432, creando un socket (/tmp/.s.PGSQL.5432). La memoria compartida: gestiona los recursos entre procesos backend gestiona la cach del disco

maneja otras estructuras internas

De esta manera podemos definir el concepto de CLUSTER DE BASE DE DATOS, como una instancia de PostgreSQL, donde se lanza un proceso postmaster, que puede gestionar varias bases de datos. En un servidor, pueden haber varios cluster, cada uno tendr su postmaster, y cada postmaster escuchar por un puerto diferente. ALMACENAMIENTO FSICO : En un servidor se crean uno o varios clusters de bases de datos. La estructura fsica de del cluster se crea con el programa initdb, con este programa se determina la ubicacin fsica y el juego de caracteres. En las instalaciones automticas a partir de paquetes (rpm, apt-get, etc) o en Windows, se crea un cluster automticamente con tres bases de datos, template0, template1 y postgres. El cluster se crea en un directorio data dentro del directorio donde se ha instalado postgres. Normalmente, se define una variable de entorno, PGDATA que apunte al directorio donde se crea el cluster. La estructura inicial cuando se crea un cluster es: Ficheros postgresql.conf: fichero de configuracin principal, contiene la asignacin a los parmetros que configuran el funcionamiento del servidor. pg_hba.conf: fichero de configuracin de la autenticacin de los clientes y usuarios y del acceso a las bases de datos del cluster. pg_ident.conf: fichero accesorio al anterior, determina como se realiza la autenticacin ident que contiene la correspondencia entre usuarios del Sistema Operativo y de PostgreSQL. PG_VERSION: fichero de texto con la versin de software Postgres que crea el cluster . Otros ficheros: postmaster.pid: se crea cuando el postmaster arranca, contiene el PID del proceso postmaster. postmaster.opts. contiene las opciones con las que se ha iniciado el postmaster. recovery.conf, recovery.done: si se quiere o se ha hecho una recuperacin.

Directorios base: las plantillas y las bases de datos. contiene un directorio por cada base de datos, dentro hay un fichero por cada tabla o ndice de una base de datos, los nmeros corresponden a los OIDs de las tablas o ndices. template0 (1): contiene las definiciones de las tablas del sistema, vistas, funciones y tiposestndar. Nunca se debe modificar ni intentar conectarse a ella, ya que est por si template1 se corrompe. template1 (N): base de datos plantilla para crear nuevas bases de datos, se puede modificar su estructura, aadiendo tablas, ndices, funciones, etc. Es la que se usar como plantilla para crear otras bases de datos. global: tablas e indices del catlogo comunes a todas las bases de datos. catlogo compartido: pg_shadow (usuarios), pg_database, etc. pgstat.stat: fichero usado por el monitor de estadsticas. pg_control: fichero con parmetros del cluster, algunos inmutables (establecidos en la creacin del cluster) y otros variables (establecidos en la puesta en marcha). pg_log: ficheros de seguimiento del servidor. Se crea en la versin de Windows, en la de Linux, se debe indicar al arrancar el postmaster en qu fichero se hace el seguimiento. pg_xlog: ficheros de diario del servidor (WAL). contiene los diarios de escritura adelantada, para usarlos en las recuperaciones se implementan como un conjunto de segmentos (ficheros) de un tamao de 16Mb y divididos en pginas de 8Kb. Inicialmente se crea un fichero, y luego el sistema va creando ms segn las necesidades. pg_clog: ficheros de diario para las transacciones (estado de cada transaccin). Contiene los ficheros de confirmacin. Un diario de confirmacin refleja el estado de cada transaccin: confirmada, en progreso o abortada.

pg_multixact: contiene datos sobre el estado multi-transaccional, usado para los bloqueos compartidos de filas. pg_twophase: Ficheros de estado para las transacciones preparadas. pg_subtrans: Para realizar los savepoints en medio de transacciones. pg_tblspc: informacin sobre los tablespaces. Cuidado porque en linux/unix contiene enlaces a los directorios donde se crean los tablespaces y hay que controlar, en caso de cambios de ficheros, que estn correctos.

1.3 ESQUEMA LOGICO Con lo que tenemos aqu los tres elementos principales a nivel lgico en un cluster: Bases de datos: agrupaciones de esquemas. Por defecto, siempre hay tres bases de datos creadas, template0, template1 y postgres. Tablespaces: ubicaciones alternativas a la que por defecto tiene el cluster. Por defecto no se crea ninguno. Roles: engloba el concepto de usuarios (roles de login) y grupos de permisos (roles de grupo), estos ltimos son lo mismo que los roles de Oracle. Hasta la versin 8 de Postgres no se podan anidar roles, ahora si. Por defecto, si al crear el cluster no se ha indicado otro usuario, se crea el usuario postgres como superusuario.

Hay que tener en cuenta: Todos los usuarios son comunes a las bases de datos del cluster, se pueden conectar con cualquiera de las bases de datos. En este punto, las bases de datos se comportan como esquemas de Oracle. Las bases de datos son independientes entre ellas, no se pueden ver objetos de una base de datos desde otra base de datos, excepto si se usan dblinks. Esto marca cmo se deben crear las bases de datos: si es un servidor que acoge proyectos separados y no se han de interrelacionar: separacin en bases de datos distintas. o si es un servidor de proyectos con recursos comunes: una nica base de datos y distintos esquemas para cada proyecto.

OBJETO DESCRIPCION BASE DE DATOS CATALOGOS ESQUEMAS DOMINIOS CONFIGURACIONES FTS DICTONARIOS FTS ANLIZADORES FTS PLANTILLAS FTS FUNCIONES SECUENCIAS TABLAS FUNCIONES DISPARADORAS VISTAS TABLESPACE

ROLES 1.4 TIPOS DE DATOS : En postgres tenemos los siguientes tipos de datos: TIPOS NUMERICOS:
Los tipos numricos consisten en enteros de 2, 4 u 8 bytes y flotantes de 4 u 8, y un nmero de presicin decimal a eleccin.

Nombre Smallint Integer Bigint

Decimal

Numeric

Real Double precision Serial Bigserial

Tamao de Descripcin almacenamiento Entero de 2 bytes pequeo rango Entero 4 bytes (utilizado con regularidad) Entero de 8 bytes amplio rango Precisin especificada variable por el usuario, exacta Precisin especificada variable por el usuario, exacta Precisin 4 bytes variable inexacta Precisin 8 bytes variable inexacta Entero 4 bytes autoincremento Entero grande 8 bytes auto incremento

Rango -32768 a +32767 -2147483648 a +2147483647 -9223372036854775808 a 9223372036854770000 Sin limite

Sin limite

6 dgitos decimales de precisin

15 dgitos decimales de precisin 1 a 2147483647 1 a 9223372036854775807

TIPOS SERIAL : Los tipos de datos serial y bigserial no son tipos verdaderos, pero son una conveniente notacin para crear columnas con identificadores nicos (similar al auto incremento soportado por otras base de datos). TIPOS MONEDA El tipo moneda almacena la cantidad de moneda con una precisin fraccionaria fija.

Nombre money

Tamao Descripcin Rango Almacenaje 8 bytes Cantidad -92233720368547758.08 a 92233720368547758.07 de moneda

TIPOS CADENA:

Nombre Character varying(n), varchar(n) Carcter(n), char(n) Text

Descripcin Longitud variable con limite Longitud fija, rellenado los espacios en blancos Longitud variable ilimitada

TIPOS FECHA/HORA

Nombre

Tamao Almacenaje

Descripcin Ambas fecha y hora (sin zona horaria) Ambas fecha y hora con zona horaria.

Valor Bajo 4713 BC

Valor Alto 294276 AD

Resolucin 1 microsegundos/14 dgitos 1 microsegundos / 14 dgitos 1 da 1 microsegundos / 14 dgitos 1 microsegundos / 14 dgitos 1 microsegundos / 14 dgitos

timestamp * (p) + * without time zone 8 bytes + timestamp * (p) + 8 bytes with time zone Date 4 bytes

4713 BC

294276 AD 5874897 AD 24:00:00

fecha (sin hora) 4713 BC Hora del da (sin 0:00:00 fecha)

time * (p) + * without time zone 8 bytes + time * (p) + with time zone 12 bytes

01/01/1900 Hora del da ,con 00:00:00+1459 24:00:00 + 1459 zona horaria Intervalo de hora -178000000 aos 178000000 aos

interval * fields + * 12 bytes (p) +

TIPOS GEOMETRICOS : Los tipos de datos geomtricos representan los objetos espaciales en dos dimensiones

Nombre Point Line Lseg Box Path Path

Tamao de Representacin almacenamiento 16 bytes El punto en un plano Lnea infinita (No se 32 bytes aplica plenamente) 32 bytes Segmento de lnea finito 32 bytes 16+16n bytes 16+16n bytes Caja rectangular trayectoria cerrada (parecido a un polgono) trayectoria abierta Polgono (parecido a la trayectoria cerrada) Circulo

Descripcin (x,y) ((x1,y1),(x2,y2)) ((x1,y1),(x2,y2)) ((x1,y1),(x2,y2)) ((x1,y1),...) [(x1,y1),...] ((x1,y1),...) <(x,y),r> (punto central y el radio)

polygon 40+16n bytes Circle

24 bytes

TIPOS REDES: Cuando ordenas tipos de datos inet o cidr, las direcciones IPv4 son ordenadas antes de las IPv6, incluyendo la direcciones IPv4 encapsuladas o asignadas a la direcciones IPv6.

Nombre Cidr Inet macaddr

Tamao Almacenado 7 or 19 bytes 7 or 19 bytes 6 bytes

Descripcin Redes IPv4 and IPv6 Servidores y redes IPv4 and IPv6 Direcciones MAC

1.5 OPERADORES : Postgres proporciona un gran nmero de tipos de operadores. Estos operadores estn declarados en el catlogo del sistema pg_operator. Cada entrada en pg_operator incluye el nombre del procedimiento que implementa el operador y las clases OIDs de los tipos de entrada y salida. Operadores de precedencia: Los operadores tienen una precedencia que est codificada dentro del parser. La mayora de los operadores tienen la misma precedencia y son asociativos. Esto puede acarrear comportamientos poco intuitivos. Por ejemplo, los operadores booleanos "<" y ">" tienen una precedencia diferente que los operadores booleanos "<=" y ">=".

Operador UNION / INTERSECT /EXCEPT :: [] . ; : | */% +IS ISNULL NOTNULL (todos los dems operadores) IN BETWEEN LIKE <> = NOT AND OR

Precedencia izquierda

Descripcin constructor SQL de select

conversor de tipos de Postgres izquierda izquierda derecha izquierda derecha izquierda izquierda izquierda delimitadores de array delimitadores de tabla/columna menos unario terminacin de declaracin, logaritmo exponenciacin comienzo de intervalo multiplicacin, divisin adicin, substraccin test para TRUE, FALSE, NULL test para NULL test para NOT NULL nativos y definidos por el usuario Contenido en los datos continente concordancia de patrones de strings desigualdad booleana derecha derecha izquierda izquierda igualdad negacin interseccin lgica unin lgica

Operadores Generales: Los operadores mostrados aqu estn definidos para un nmero de tipos de datos nativos, que van desde los tipos numricos hasta los tipos date/time

Operador Descripcin < Menor que? <= <> = > >= || !!= ~~ !~~ ~ ~* !~ !~* Menor o igual que? No igual? Igual? Mayor que? Mayor o igual que? Concatena strings NOT IN Como No como Concordancia (regex), sensible a Mayusc/minusc Concordancia (regex), sensible a mayusc/minusc No concuerda (regex), sensible a mayusc/minusc No concuerda (regex), sensible a mayusc/minusc

Utilizacin 1<2 1 <= 2 1 <> 2 1=1 2>1 2 >= 1 'Postgre' || 'SQL' 3 !!= i 'scrappy,marc,hermit' ~~ '%scrappy%' 'bruce' !~~ '%al%' 'thomas' ~ '.*thomas.*' 'thomas' ~* '.*Thomas.*' 'thomas' !~ '.*Thomas.*' 'thomas' !~* '.*vadim.*'

Operadores Numricos: Sirven para realizar operaciones con tipos de datos numricos

Operador ! !! % % * + /

Descripcin Factorial Factorial (operador izquierdo) Mdulo Truncado Multiplicacin Suma Resta Divisin

Utilizacin 3! !! 3 5%4 % 4.5 2*3 2+3 02-mar 04-feb

: ; @ ^ |/ ||/

Exponenciacin natural Logaritmo natural Valor Absoluto Exponenciacin Raz cuadrada Raz cbica

: 3.0 (; 5.0) @ -5.0 2.0 ^ 3.0 |/ 25.0 ||/ 27.0

Operadores Geomtricos :
Utilizacin '((0,0),(1,1))'::box + '(2.0,0)'::punto '((0,0),(1,1))'::box - '(2.0,0)'::punto

Operador Descripcin + * / # # Translacin Translacin

Escalado/rotacin '((0,0),(1,1))'::box * '(2.0,0)'::punto Escalado/rotacin '((0,0),(2,2))'::box / '(2.0,0)'::punto Interseccin Nmero de puntos en polgono Punto ms prximo Se superpone a? Se superpone por la izquierda? Se superpone por la derecha? Distancia entre A la izquierda de? Est debajo de? A la derecha de? Esta encima de? Interseca o se superpone Es horizontal? Es perpendicular? Longitud de circunferencia Es vertical? Es paralelo? Contenido en Centro de Parecido a '((1,-1),(-1,1))' # '((1,1),(-1,-1))' # '((1,0),(0,1),(-1,0))'

## && &< &> <-> << <^ >> >^ ?# ??-| @-@ ?| ?|| @ @@ ~=

'(0,0)'::punto ## '((2,0),(0,2))'::lseg '((0,0),(1,1))'::caja && '((0,0),(2,2))'::caja '((0,0),(1,1))'::caja &< '((0,0),(2,2))'::caja '((0,0),(3,3))'::caja &> '((0,0),(2,2))'::caja '((0,0),1)'::crculo <-> '((5,0),1)'::crculo '((0,0),1)'::crculo << '((5,0),1)'::crculo '((0,0),1)'::crculo <^ '((0,5),1)'::crculo '((5,0),1)'::crculo >> '((0,0),1)'::crculo '((0,5),1)'::crculo >^ '((0,0),1)'::crculo '((-1,0),(1,0))'::lseg ?# '((-2,-2),(2,2))'::caja; '(1,0)'::punto ?- '(0,0)'::punto '((0,0),(0,1))'::lseg ?-| '((0,0),(1,0))'::lseg @-@ '((0,0),(1,0))'::path '(0,1)'::punto ?| '(0,0)'::punto '((-1,0),(1,0))'::lseg ?|| '((-1,2),(1,2))'::lseg '(1,1)'::punto @ '((0,0),2)'::crculo @@ '((0,0),10)'::crculo '((0,0),(1,1))'::poligono ~= '((1,1),(0,0))'::poligono

Operadores IP V4 CIDR /INET:

Operador < <= = >= > <> << <<= >> >>=

Descripcin Menor que Menor o igual que Igual que Mayor o igual que Mayor que No igual que Est contenido en

Utilizacine '192.168.1.5'::cidr < '192.168.1.6'::cidr '192.168.1.5'::cidr <= '192.168.1.5'::cidr '192.168.1.5'::cidr = '192.168.1.5'::cidr '192.168.1.5'::cidr >= '192.168.1.5'::cidr '192.168.1.5'::cidr > '192.168.1.4'::cidr '192.168.1.5'::cidr <> '192.168.1.4'::cidr '192.168.1.5'::cidr << '192.168.1/24'::cidr

Est contenido en o es igual a '192.168.1/24'::cidr <<= '192.168.1/24'::cidr Contiene Contiene o es igual que '192.168.1/24'::cidr >> '192.168.1.5'::cidr '192.168.1/24'::cidr >>= '192.168.1/24'::cidr

1.6 FUNCIONES :

1.7 SQL :

2. PLSQL

3. ADMINISTRACION

Potrebbero piacerti anche