Professional Documents
Culture Documents
PostgreSQL ................................................................................................................................... 2
1. Introducción .......................................................................................................................... 2
¿Qué es PostgreSQL ................................................................................................................. 3
CARACTERÍSTICAS .............................................................................................................. 3
IDEAS BÁSICAS ACERCA DEL FUNCIONAMIENTO ...................................................... 4
1. ¿Base de datos Libre o Propietaria? ...................................................................................... 5
2. ¿Utiliza SQL? ........................................................................................................................ 5
3. Ubicación en el mercado. ...................................................................................................... 5
4. Fecha de aparición y tiempo en el mercado. ......................................................................... 5
5. Tipos de datos básicos que maneja ....................................................................................... 6
Constantes en PostgreSQL ....................................................... Error! Bookmark not defined.
6. Tipos de Objetos que maneja ................................................................................................ 9
7. Usuarios básicos .................................................................................................................... 9
Database Roles and Privileges .................................................................................................... 9
Atributos de Roles ................................................................................................................. 10
8. Definición de su arquitectura básica. .................................................................................. 11
9. Definición de sus procedimientos de Copias de Respaldo y Recuperación (Backup y
Restore). ...................................................................................................................................... 11
10. Requerimientos de instalación. ....................................................................................... 13
10.1. Ventajas de PostgreSQL.......................................................................................... 13
10.2. Instalación de PostgreSQL ...................................................................................... 13
POSTGRESQL Y LAS DISTRIBUCIONES DE LINUX .................................................. 14
EMPEZANDO CON POSTGRESQL ................................................................................ 14
CONFIGURANDO EL ENTONO ................................................................................................... 14
Administrando una Base de datos ........................................................................................... 15
Creación de una base de datos................................................................................................. 15
Accediendo a una base de datos .............................................................................................. 15
El Lenguaje de consultas de PostgreSQL ............................................................................... 16
Creación de una nueva Clase .................................................................................................. 16
Llenar una Clase con instancias .............................................................................................. 16
Consultar una Clase................................................................................................................. 17
Redireccionamiento de Consultas SELECT............................................................................ 18
Joins entre Clases .................................................................................................................... 18
Actualizaciones ....................................................................................................................... 19
Borrar ...................................................................................................................................... 20
TECNOLOGÍ DE BASE DE DATOS
Funciones de Conjuntos .......................................................................................................... 20
Caracterısticas SQL Avanzadas de Postgres ........................................................................... 20
Herencia .............................................................................................................................. 20
Valores No Atómicos .............................................................................................................. 21
Vectores............................................................................................................................... 21
Operadores .............................................................................................................................. 21
10. Tipos de datos ......................................................................................................................... 6
Conclusiones .............................................................................................................................. 22
. Bibliografıa ..................................................................................................................... 23
Postgre sql
TECNOLOGÍ DE BASE DE DATOS
POSTGRESQL
La idea de este trabajo es introducir los conceptos fundamentales acerca del diseño y
modelado de bases de datos usando PostgreSQL, adquirir los conocimientos teóricos y
prácticas en manejo de bases de datos relacionales, y el lenguaje SQL. Además,
pretende proporcionar la documentación necesaria para iniciar el estudio de bases de
datos sin conocimiento previo acerca del tema, presentando algunas situaciones claves
que permitan dar una visión amplia y analizar las ventajas y dificultades que presenta
este sistema en comparación con sus pares, para poder decidir al momento de iniciar el
estudio en esta cada día más necesaria e importante área.
INTRODUCCIÓN
Entre los sistemas de bases de datos existentes hoy en día, PostgreSQL juega un
papel muy importante ya que es un sistema que tiene muchas cualidades que lo hacen
ser una muy buena alternativa para instalar sistemas en empresas, universidades y una
gran cantidad de otras aplicaciones. Este documento está pensado como un material
practico de introducción a los sistemas de bases de datos relacionales basados en
PostgreSQL y no profundiza mayormente en los conceptos, aunque aborda una gran
parte de los temas necesarios para iniciar el iniciar de buena forma el estudio, sin
descuidar ningún aspecto. Además la información se ilustra por medio de varios
ejemplos que permiten entender mas a fondo los conceptos. Gran parte de la
información que aquí se encuentra fue obtenida de la documentación oficial de
PostgreSQL, aunque también de algunos libros y manuales, de donde se trato de obtener
la mayor cantidad de ideas y ponerlas en un documento que fuera fácil de entender y
que lograra el objetivo de dar una visión global acerca del sistema de bases de datos y
en un tamaño reducido.
Postgre sql
2
TECNOLOGÍ DE BASE DE DATOS
¿QUÉ ES POSTGRESQL
CARACTERÍSTICAS
La última serie de producción es la 9.1. Sus características técnicas la hacen una de las
bases de datos más potentes y robustas del mercado. Su desarrollo comenzó hace más
de 16 años, y durante este tiempo, estabilidad, potencia, robustez, facilidad de
administración e implementación de estándares han sido las características que más se
han tenido en cuenta durante su desarrollo. PostgreSQL funciona muy bien con grandes
cantidades de datos y una alta concurrencia de usuarios accediendo a la vez a el sistema.
A continuación, tenemos algunas de las características más importantes y soportadas por
PostgreSQL:
Generales
Es una base de datos 100% ACID.
Soporta distintos tipos de datos: además del soporte para los tipos base, también
soporta datos de tipo fecha, monetarios, elementos gráficos, datos sobre redes
(MAC, IP ...), cadenas de bits, etc. También permite la creación de tipos propios.
Incluye herencia entre tablas, por lo que a este gestor de bases de datos se le
incluye entre los gestores objeto-relacionales.
Copias de seguridad en caliente (Online/hot backups)
Unicode
Juegos de caracteres internacionales
Regionalización por columna
Multi-Version Concurrency Control (MVCC)
Multiples métodos de autentificación
Acceso encriptado via SSL
SE-postgres
Completa documentación
Postgre sql
TECNOLOGÍ DE BASE DE DATOS
Licencia BSD
Disponible para Linux y UNIX en todas sus variantes (AIX, BSD, HP-UX, SGI
IRIX, Mac OS X, Solaris, Tru64) y Windows 32/64bit.
Alta concurrencia
Mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus
siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla,
otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una
visión consistente de lo último a lo que se le hizo commit.
backend. Con esto, el cliente y el nuevo proceso del servidor se comunican sin la
intervención del proceso original del postmaster. Así, el postmaster esta siempre
4
TECNOLOGÍ DE BASE DE DATOS
corriendo, esperando por conexiones de parte de los clientes Todo esto por supuesto es
invisible para el usuario y se menciona acá solo como un comentario.
Una base de datos relacional desde el punto de vista del usuario podemos decir que es
como una colección de tablas interrelacionadas que permiten almacenar información
para que esta pueda ser utilizada posteriormente, y se basa en el modelo de datos
relacional para la manipulación de las tablas, el que a su vez se basa en elementos de la
teoría de conjuntos para establecer las relaciones.
Una consulta es una petición de información que se hace a la base de datos, la que se
implementa de acuerdo a ciertas reglas e instrucciones que provee el lenguaje SQL y
que permite ver y manipular datos que se encuentran en el sistema.
2. ¿UTILIZA SQL?
Nos permite desde hacer búsquedas SQL hasta desarrollar toda nuestra base de datos de
forma muy fácil e intuitiva; directamente desde la interfaz gráfica.
3. UBICACIÓN EN EL MERCADO.
Se encuentra entre Mejores Bases de Datos de libre distribución relacionales junto con
MySQL, María DB
1982 con el proyecto Ingres en la Universidad de Berkeley. Este proyecto, liderado por
Michael Stonebraker, fue uno de los primeros intentos en implementar un motor de base
de datos relacional.
Postgre sql
TECNOLOGÍ DE BASE DE DATOS
5. TIPOS DE DATOS BÁSICOS QUE MANEJA
Tipos de datos
PostgreSQL tiene una rica y amplia variedad de tipos de datos en los que se puede
guardar valores de para los usos comunes, científicos y financieros que el usuario
necesite. Si no se encuentran entre los tipos nativos los un tipo de dato, el usuario puede
definir alguno con el comando CREATE TYPE. Para podernos dar una mejor idea de lo
que se trata esto agregaré una tabla con los tipos de datos que existen en PostgreSQL.
6
TECNOLOGÍ DE BASE DE DATOS
]
time [ (p) ] [ without time zone ] hora del día (sin zona horaria)
time [ (p) ] with time zone timetz gora del día, incluyendo zona horaria
timestamp [ (p) ] with time zone timestamptz fecha y hora, incluyendo zona horaria
LIMITACIONES
•Puntos de recuperación dentro de transacciones. Actualmente, las transacciones abortan
completamente si se encuentra un fallo durante su ejecución.
• No soporta tablespaces para definir dónde almacenar la base de datos, el esquema, los
índices, etc. (versiones antes de la 9.0)
• El soporte a orientación a objetos es una simple extensión que ofrece prestaciones
como la herencia, no un soporte completo.
Ventajas:
Postgre sql
TECNOLOGÍ DE BASE DE DATOS
Ampliamente popular - Ideal para tecnologías Web.
Fácil de Administrar.
Su sintaxis SQL es estándar y fácil de aprender.
Footprint bajo de memoria, bastante poderoso con una configuración adecuada.
Multiplataforma.
Capacidades de replicación de datos.
Soporte empresarial disponible.
DESVENTAJAS
8
TECNOLOGÍ DE BASE DE DATOS
6. TIPOS DE OBJETOS QUE MANEJA
El argumento a favor de las bases de datos objeto-relacionales sostiene que permite
realizar una migración gradual de sistemas relacionales a los orientados a objetos y, en
algunas circunstancias, coexistir ambos tipos de aplicaciones durante algún tiempo.
El problema de este enfoque es que no es fácil lograr la coexistencia de dos modelos de
datos diferentes como son la orientación a objetos y el modelo relacional. Es necesario
equilibrar de alguna manera los conceptos de uno y otro modelo sin que entren en
conflicto.
Uno de los conceptos fundamentales en la orientación a objetos es el concepto de clase.
Existen dos enfoques para asociar el concepto de clase con el modelo relacional:
1.er enfoque: las clases definen tipos de tablas
2.º enfoque: las clases definen tipos de columnas
Dado que en el modelo relacional las columnas están definidas por tipos de datos, lo
más natural es hacer corresponder las columnas con las clases.
PostgreSQL implementa los objetos como tuplas y las clases como tablas. Aunque
también es posible definir nuevos tipos de datos mediante los mecanismos de extensión.
Dado que las tablas son clases, pueden definirse como herencia de otras. Las tablas
derivadas son polimorfas y heredan todos los atributos (columnas) de la
tabla padre (incluida su clave primaria). Si no se manejan con precaución, las tablas
polimorfas pueden conducir a errores de integridad al duplicar claves primarias.
PostgreSQL soporta algunas extensiones del lenguaje SQL para crear y gestionar este
tipo de tablas.
7. USUARIOS BÁSICOS
DATABASE ROLES AND PRIVILEGES
PostgreSQL administra los permisos de acceso de base de datos utilizando el concepto
de roles. Este rol puede considerarse ya sea como usuario de base de datos, o un grupo
de usuarios de bases de datos, dependiendo de cómo el rol se establezca. Un rol puede
ser propietario de objetos de bases de datos (por ejemplo, tablas) y se pueden asignar
privilegios de los objetos a otros roles para controlar quién tiene acceso a los objetos.
Además, es posible la concesión de la pertenencia de un rol a otro rol, lo que permite
utilizar el rol de miembro de los privilegios asignados al rol que es un miembro de.
El concepto de los roles subsume los conceptos de "usuarios" y "grupos". En las
versiones de PostgreSQL anteriores de 8.1, los usuarios y los grupos eran distintos tipos
de entidades, pero ahora hay sólo roles. Cualquier función puede actuar como un
Postgre sql
(CREATE USER es equivalente a CREATE ROLE, salvo que CREATE USER asume
LOGIN por defecto, mientras que CREATE ROLE no.)
SUPERUSER
El status de superusuario de base de datos se salta todas las comprobaciones de
permisos. Este es un privilegio que no debería ser utilizado con descuido, lo mejor es
hacer la mayor parte de su trabajo como un rol que no sea un super-usuario. Para crear
una nueva base de datos de superusuario, use CREATE ROLE nombre SUPERUSER.
Debe hacer esto como un rol que ya sea un super-usuario.
DATABASE CREATION
10
Debe ser explícitamente dado para crear bases de datos (con excepción de los
superusuarios, ya que pasan por alto todos los controles de permiso). Para crear este
role, usar de CREATE ROLE nombre CREATEDB.
ROLE CREATION
Debe ser explícitamente dado para crear más roles (a excepción de los superusuarios, ya
que pasan por alto todos los controles de permiso). Para crear esa función, usar
CREATE ROLE nombre CREATEROLE. Un role con el privilegio CREATEROLE
puede modificar y colocar otros roles, también, así como de conceder o revocar la
pertenencia a ellas. Sin embargo, para crear, modificar, eliminar o cambiar roles de
super-usuario, el estado de superusuario es imprescindible; CREATEROLE no es
suficiente para eso.
PASSWORD
Sólo es significativa si el método de autenticación de cliente requiere que el usuario
proporcione una contraseña cuando se conecta a la base de datos. La contraseña y los
métodos de autenticación MD5 hacen uso de contraseñas. Las contraseñas de bases de
datos son independientes de las contraseñas del sistema operativo. Especificar una
contraseña a la creación de papel con una cuerda CREATE ROLE Nombre de Usuario
PASSWORD 'contraseña'.
Los atributos de roles pueden ser modificados después de la creación con ALTER
ROLE. Vea las páginas de referencia para la función de CREATE y ALTER comandos
ROLE para más detalles.
Postgre sql
10
TECNOLOGÍ DE BASE DE DATOS
8. DEFINICIÓN DE SU ARQUITECTURA BÁSICA.
O en su defecto:
*Nótese que para restaurar el dump en la base de datos destino se utiliza psql y
nopg_dump.
*También es importante tener en cuenta que si no se especifica una ruta o directorio, el
archivo resultante al hacer el backup se guardará en el directorio en el que se
encuentre el usuario al momento de utilizar el comando.
Postgre sql
TECNOLOGÍ DE BASE DE DATOS
Con esas dos líneas es suficiente para crear el respaldo de una base de datos
PostgreSQL y restaurarla en nuestra base de datos destino. Quizá algunos se
preguntarán: ¿eso es todo? Y bueno, en teoría lo es.
Pero para que no muera tan rápido el interés, a continuación veremos algunos ejemplos
bastante útiles que también es posible realizar con esta aplicación, además de lo básico
indispensable que acabamos de ver.
Respaldo.
1. Respaldar solo una base de datos PostgreSQL.
*Al restaurar es posible que se muestren algunos de los siguientes errores, pero pueden
ser ignorados sin que causen mayor problema:
psql:mydb.sql:13: ERROR: must be owner of schema public
psql:mydb.sql:34: ERROR: must be member of role "hunabsys"
psql:mydb.sql:59: WARNING: no privileges could be revoked
psql:mydb.sql:60: WARNING: no privileges could be revoked
psql:mydb.sql:61: WARNING: no privileges were granted
psql:mydb.sql:62: WARNING: no privileges were granted
5. Restaurar todas las bases de datos PostgreSQL.
$ su postgres
Postgre sql
$ psql -f all_db.sql
Ambos.
7. Respaldar una base de datos local y restaurarla a un servidor remoto usando un solo
comando.
Cuando PostgreSQL se instala junto con una distribución de Linux, por lo general
14 vienen hechas casi totas las tareas de configuración, las carpetas del sistema ya están
creadas y el Superuser también, por lo general con el nombre postgres como
mencionamos anteriormente.
CONFIGURANDO EL ENTONO
14
TECNOLOGÍ DE BASE DE DATOS
nuestro sistema. Si estamos usando batch, ksh o sh debemos agregar lo siguiente a
nuestro archivo. profile:
PATH=/usr/local/pgsql/bin: $PATH export PATH
16
Para crear una clase debemos especificar el nombre de la clase, además del nombre
de los atributos y sus tipos de la siguiente forma:
La declaración insert es para llenar una clase con instancias, es decir, desde el punto
de vista de SQL es llenar una tabla con datos. Su sintaxis es la siguiente:
16
TECNOLOGÍ DE BASE DE DATOS
INSERT INTO guitarras
VALUES(’Gibson’, 650000, 22, 6, ’USA’);
Para cargar cantidades de datos mayores desde archivos ASCII podemos usar el
comando copy lo que es mucho mas rapido porque se cargan en una tabla todos los
datos de una sola vez desde el archivo. Lo mismo para la escritura hacia un archivo.
Esto se realiza de la siguiente forma:
COPY guitarras FROM ’/var/lib/pgsql/archivo.txt’ USING DELIMITERS ’|’;
Se poner cuidado en el hecho de que se debe especificar la ruta y no solo en nombre del
archivo. Además, la ruta del archivo debe ser accesible para el proceso backend que se
encuentra en el servidor donde se esta ejecutando Postgres, porque es el quien va a
acceder al archivo.
Para realizar las consultas de una clase usamos la funcion select que se explica en la
seccion SQL de en la pagina 19 del APENDICE en la pagina 15. Ilustraremos esto con
algunos ejemplos.
1. Ver toda la tabla
El signo * significa que debe entregar todos los datos de la tabla guitarras.
El resultado de esto es el siguiente
marca | us | origen
-----------------+------+--------
Samick | 160 | Taiwan
Ibanez | 1040 | USA
Fender | 266 | USA
Postgre sql
Las Joins o uniones son un tipo de consulta que accede a multiples instancias de las
mismas o diferentes clases a la vez, donde todas ellas son procesadas al mismo tiempo.
Por ejemplo, si queremos obtener todos los registros que están dentro de un cierto rango
dado de otros registros.
Supongamos que tenemos 2 tipos de Guitarras, las electricas que son las que hemos
estado usando hasta ahora, y las electroacusticas, que tienen las siguientes tablas
respectivamente.
18
TECNOLOGÍ DE BASE DE DATOS
Ovation | 850000 | 21 | 6 | USA
Takamine | 480000 | 21 | 6 | USA
Yamaha | 300000 | (3 rows) 20 | 6 | Taiwan
Ahora vamos a elegir todas las guitarras que tengan 21 espacios en su fingerboard
(frets), mediante la siguiente entrada
ACTUALIZACIONES
update nos permite realizar actualizaciones de instancias que ya existen. Por ejemplo, si
el precio de la guitarra Ibanez Jem777 bajo a $1.120.000, entonces podemos actualizar
el precio de la siguiente manera
UPDATE guitarras SET precio=1120000 WHERE marca=’Ibanez Jem777’;
obteniendo como resultado
marca | precio | num_frets | num_cuerdas | origen
-----------------+---------+-----------+-------------+--------
Samick | 120000 | 216 |
| Taiwan
Ibanez | 780000 | 246 |
| USA
Fender | 200000 | 226 |
| USA
Gibson Les Paul | 650000 | 226 |
| USA
Maxtone | 100000 | 216 |
| Taiwan
Ibanez Jem777 247 | | 1120000 | (6 r
| USA
Postgre sql
TECNOLOGÍ DE BASE DE DATOS
BORRAR
Para borrar registros de una tabla usamos el comando DELETE. Se debe tener
especial cuidado en las consultas del tipo:
DELETE FROM clase
porque al hacer esto estamos borrando todas las instancias de la clase clase dejandola
vacıa, y no se pedira confirmacion para realizar esta operacion.
FUNCIONES DE CONJUNTOS
max
---------
20 1120000
(1 row)
obtenemos es lo siguiente
min
--------
200000 (1 row)
HERENCIA
Cuando tenemos una clase y creamos otra clase derivada de ella, se dice que esta ultima
Postgre sql
hereda los atributos de la clase base. Para ilustrar esto crearemos dos clases, la clase
guitarras” que es la clase base y la clase guitarra electrica” que serıa su derivada, la cual
20
TECNOLOGÍ DE BASE DE DATOS
tendra los atributos especıficos que le correspondan, además de los que hereda de la
clase base. Para crear una clase que deriva de otra hacemos lo siguiente
CREATE TABLE guitarra_electrica(num_capsulas int, color varchar(20),
microafinacion char(10)) INHERITS (guitarras);
ahora si examinamos la tabla completa de la clase guitarra_electrica veremos los
siguiente
marca | precio | num_frets | num_cuerdas | origen | num_capsulas |
-------+--------+-----------+-------------+--------+--------------+...
(0 rows)
Aparece la clase vacıa como recien creada, pero además aparecen dentro de sus
atributos los de la clase base guitarra.
VALORES NO ATÓMICOS
Dentro de los principios del modelo de datos relacional que aparece en la pagina 15
se tiene que los atributos de una relación son atomicos. Esto quiere decir que la unidad
mınima de datos es un atributo de una k-tupla. PostgreSQL no tiene esa restriccion ya
que los atributos pueden tener sub-valores, por ejemplo, podemos tener atributos que
sean vectores que contengan algún tipo de dato base.
VECTORES
OPERADORES
En PostgreSQL existe una gama de diversos operadores que vienen por defecto en el
sistema, pero pueden crearse nuevo operadores para relacionar diversas construcciones
realizadas por el usuario.
El primer tipo de operadores son los operadores lógicos donde podemos encontrar 3,
el operador AND, OR y NOT. Donde cada uno de ellos obedece a su equivalente lógico.
El siguiente tipo de operadores son los operadores de comparación, que regresan
falso o verdadero dependiendo el resultado de la comparación. Estos operadores son <
que significa menos que, > que significa mayor que, < menor o igual que, >= mayor o
igual que, = igual que y <> o != no igual que.
Postgre sql
TECNOLOGÍ DE BASE DE DATOS
Por último tenemos operadores matemáticos, que no deben ser confundidos con
funciones matemáticas. Estos operadores son la adicción que se utiliza mediante +, la
sustracción con -, la multiplicación *, la división /, el módulo % que regresa el residuo
de una división, el exponente ^ la raíz cuadrada | x |, raíz cúbica || x ||, factorial !,
factorial prefijo !!, valor absoluto @ x @, operador AND de bits &, operador OR en bits
|, operador XOR en bits #, operador NOT en bits ~, recorrer un lugar los bits a la
izquierda << y recorrer los bits un lugar a la derecha >>.
A continuación daremos una pequeña demostración de estos operadores en la
práctica en PostgreSQL.
22
CONCLUSIONES
Al finalizar este trabajo se puede decir que se ha adquirido los conceptos fundamentales
acerca del trabajo con bases de datos relacionales mediante el uso de PostgreSQL, se
han aprendido aspectos de instalación, configuración, creacion y administracion de
sistemas de bases de datos, ası como también aspectos teoricos acerca de los
fundamentos del modelo de datos relacional, sobre el cual esta basado el sistema de
bases de datos y acerca de la forma en que interactua el sistema de bases de datos con el
sistema operativo. Despues de haber realizado la investigacion acerca del tema, existe
mucha mas claridad acerca de los aspectos a considerar al momento de decidirse a
utilizar un sistema de bases de datos y de las ventajas y limitaciones que tiene este
sistema y algunos de sus pares.
Postgre sql
22
TECNOLOGÍ DE BASE DE DATOS
. BIBLIOGRAFIA
1. PostgreSQL Introduction and Concepts, Bruce Momjian, Addison-Wesley
2. The PostgreSQL Tutorial Introduction , The Tutorial , Editado por Thomas
Lockhart, 1998-10-01, The PostgreSQL Global Development Group.
3. The PostgreSQL Administrator’s Guide , The Administrator’s Guide ,Editado por
Thomas Lockhart, 1998-10-01, The PostgreSQL Global Development Group.
Postgre sql