Академический Документы
Профессиональный Документы
Культура Документы
INTRODUCCION
PostgreSQL: Sistema de gestin de base de datos relacional orientada a objetos de software libre, publicado bajo la licencia BSD. Como muchos otros proyectos open source, el desarrollo de PostgreSQL no es manejado por una sola compaa sino que es dirigido por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group). Tipo de licencia: Licencia BSD: es la licencia de software otorgada principalmente para los sistemas BSD (Berkeley Software Distribution). Pertenece al grupo de licencias de software Libre. Esta licencia tiene menos restricciones en comparacin con otras como la GPL estando muy cercana al dominio pblico. La licencia BSD al contrario que la GPL permite el uso del cdigo fuente en software no libre. Bajo esta licencia, el autor mantiene la proteccin de copyright nicamente para la renuncia de garanta y para requerir la adecuada atribucin de la autora en trabajos derivados, pero permite la libre redistribucin y modificacin. Puede argumentarse que esta licencia asegura verdadero software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre. Principales caractersticas: Alta concurrencia: mediante un sistema denominado MVCC (Acceso concurrente multiversin, por sus siglas en ingls) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Integridad de los datos: claves primarias, llaves forneas con capacidad de actualizar en cascada o restringir la accin y restriccin not null. Resistencia a fallas. Escritura adelantada de registros (WAL) para evitar prdidas de datos en caso de fallos por: Energa, Sistema Operativo, Hardware. Multi Linux, Unix, BSD's, Mac OS X, Solaris, AIX, Irix, HP-UX, Windows. PITR. Puntos de recuperacin en el tiempo. Tablespaces. (Ubicaciones alternativas para los datos) Replicacin sncrona y asincrnica. Cumple con factores que determinan la calidad del software. (ISO 9126-1) Caractersticas operativas: Correccin, Fiabilidad, Eficiencia, Integridad, Facilidad de uso. Capacidad para soportar cambios: Facilidad de mantenimiento, Flexibilidad, Facilidad de prueba. Requerimientos de hardware: Realmente PostgreSQL no tiene requerimientos especficos de hardware. Se considera suficiente con satisfacer los requerimientos recomendados para instalar el sistema operativo que se vaya a utilizar. Como mismo se pude realizar todo el desarrollo con un servidor Pentium IV de 1.7 MHz y 1 GB de RAM con Red Hat Linux 8.0, para una mnima cantidad de usuarios, tambin podemos emplear recursos de hardware distribuidos para una BD considerablemente grande. Naturalmente, si se desea que el sistema ofrezca servicio a un nmero relativamente grande de usuarios concurrentes habr que tener este factor en cuenta a la hora de elegir el hardware ms apropiado de acuerdo a nuestras necesidades. Principales funcionalidades: Bloques de cdigo que se ejecutan en el servidor. Pueden ser escritos en varios lenguajes, con
la potencia que cada uno de ellos ofrece, desde las operaciones bsicas de programacin, tales como bifurcaciones y bucles, hasta las complejidades de la programacin orientada a objetos o la programacin funcional. Los disparadores (triggers en ingls) son funciones enlazadas a operaciones sobre los datos. Algunos de los lenguajes que se pueden usar son los siguientes: Un lenguaje propio llamado [PL/PgSQL (similar al PL/SQL de Oracle), C, C++, Gambas, Java, Perl, PHP, Python, Ruby PostgreSQL soporta funciones que retornan "filas", donde la salida puede tratarse como un conjunto de valores que pueden ser tratados igual a una fila retornada por una consulta (query en ingls). Las funciones pueden ser definidas para ejecutarse con los derechos del usuario ejecutor o con los derechos de un usuario previamente definido. El concepto de funciones, en otros DBMS, son muchas veces referidas como "procedimientos almacenados" (stored procedures en ingls).
VENTAJAS DE POSTGRESQL
Respecto a otros sistemas de bases de datos: Instalacin ilimitada: Es frecuente que las bases de datos comerciales sean instaladas en ms servidores de lo que permite la licencia. Algunos proveedores comerciales consideran a esto la principal fuente de incumplimiento de licencia. Con PostgreSQL, nadie puede demandarlo por violar acuerdos de licencia, puesto que no hay costo asociado a la licencia del software. Mejor soporte que los proveedores comerciales: Adems de nuestras ofertas de soporte, tenemos una importante comunidad de profesionales y entusiastas de PostgreSQL de los que su compaa puede obtener beneficios y contribuir. Ahorros considerables en costos de operacin: Nuestro software ha sido diseado y creado para tener un mantenimiento y ajuste mucho menor que los productos de los proveedores comerciales, conservando todas las caractersticas, estabilidad y rendimiento. Adems de esto, nuestros programas de entrenamiento son reconocidamente mucho ms costo-efectivos, manejables y prcticos en el mundo real que aquellos de los principales proveedores comerciales. Estabilidad y confiabilidad legendarias: En contraste a muchos sistemas de bases de datos comerciales, es extremadamente comn que compaas reporten que PostgreSQL nunca ha presentado cadas en varios aos de operacin de alta actividad. Ni una sola vez. Simplemente funciona. Extensible: El cdigo fuente est disponible para todos sin costo. Si su equipo necesita extender o personalizar PostgreSQL de alguna manera, pueden hacerlo con un mnimo esfuerzo, sin costos adicionales. Esto es complementado por la comunidad de profesionales y entusiastas de PostgreSQL alrededor del mundo que tambin extienden PostgreSQL todos los das. Multiplataforma: PostgreSQL est disponible en casi cualquier Unix (34 plataformas en la ltima versin estable), y una versin nativa de Windows est actualmente en estado beta de pruebas. Diseado para ambientes de alto volumen: PostgreSQL usa una estrategia de almacenamiento de filas llamada MVCC para conseguir una respuesta ms eficiente en
ambientes de grandes volmenes. Los principales proveedores de sistemas de bases de datos comerciales usan tambin esta tecnologa, por las mismas razones.
DESVENTAJAS DE POSTGRESQL
Consume gran cantidad de recursos. Tiene un lmite de 8K por fila, aunque se puede aumentar a 32K, con una disminucin considerable del rendimiento. 3. Es de 2 a 3 veces ms lento que MySQL. 4. Menos funciones en PHP.
EL LENGUAJE SQL
Tenga en cuenta que las palabras clave y los identificadores son sensibles a las maysculas y minsculas. Los identificadores pueden llegar a ser sensibles a maysculas o minsculas si se les pone entre dobles comillas, tal como lo permite SQL92. Postgres SQL soporta los tipos habituales de SQL como: int, float, real, smallint, char(N), varchar(N), date, time, y timestamp, as como otros de tipo general y otros con un rico conjunto de tipos geomtricos. Tal como veremos ms tarde, Postgres puede ser configurado con un nmero arbitrario de tipos de datos definidos por el usuario. Consecuentemente, los nombres de tipo no son sintcticamente palabras clave, excepto donde se requiera para soportar casos especiales en el estndar SQL92.
Yendo ms lejos, el comando Postgres CREATE es idntico al comando usado para crear una tabla en el sistema relacional de siempre. Sin embargo, veremos que las clases tienen propiedades que son extensiones del modelo relacional.
de bases de datos W1 y W2 se conocen como range variables (variables de rango). Una consulta puede contener un nmero arbitrario de nombres de clases y sustituciones.
ACTUALIZACIONES
Puede actualizar instancias existentes usando el comando update. Suponga que descubre que la lectura de las temperaturas el 28 de Noviembre fue 2 grados superior a la temperatura real. Puede actualizar los datos de esta manera: UPDATE clima SET temp_max = temp_max - 2, temp_min = temp_min - 2 WHERE fecha > 11/28/1994;
BORRADOS
Los borrados se hacen usando el comando delete: DELETE FROM clima WHERE ciudad = Puebla; Todos los registros de clima pertenecientes a Puebla son borrados. Debera ser precavido con las consultas de la forma DELETE FROM classname; Sin una cualificacin, delete simplemente borrar todas las instancias de la clase dada, dejndola vaca. El sistema no pedir confirmacin antes de hacer esto.
pero no funcionar debido a que la funcin max() no puede ser usada en where. Sin embargo, podemos replantar la consulta para llevar a cabo lo que buscamos. En este caso usando una subseleccion: SELECT ciudad FROM clima WHERE temp_min = (SELECT max(temp_min) FROM clima); Lo que ya es correcto, ya que la subseleccin es una operacin independiente que calcula su propia funcin de grupo sin importar lo que pase en el select exterior. Las funciones de grupo son tambin muy tiles combinndolas con clusulas group by. Por ejemplo, podemos obtener la temperatura mnima tomada en cada ciudad con: SELECT ciudad, max(temp_min) FROM clima GROUP BY ciudad; que nos devuelve una fila por ciudad. Podemos filtrar estas filas agrupadas usando having: SELECT ciudad, max(temp_min) FROM clima GROUP BY ciudad HAVING min(temp_min) < 0; que nos da los mismos resultados, pero de ciudades con temperaturas bajo cero. Finalmente, si slo nos interesan las ciudades cuyos nombres empiecen por P, deberamos hacer : SELECT ciudad, max(temp_min) FROM clima WHERE ciudad like P% GROUP BY ciudad HAVING min(temp_min) < 0; Tenga en cuenta que podemos aplicar la restriccin del nombre de ciudad en where, ya que no necesita funciones de conjunto. Esto es ms eficaz que aadir la restriccin a having, debido a que evitamos hacer los clculos de grupo para todas las filas que no pasan el filtro de where .
HERENCIA
Creemos dos clases. La clase capitales contiene las capitales de los estados, las cuales son tambin ciudades. Naturalmente, la clase capitales debera heredar de ciudades. CREATE TABLE ciudades ( nombre text, poblacion float, altitud int - (in ft) );
CREATE TABLE capitales ( estado char(2) ) INHERITS (ciudades); En este caso, una instancia de capitales hereda todos los atributos (nombre, poblacion y altitud) de su padre, ciudades. El tipo del atributo nombre es text, un tipo nativo de Postgres para cadenas ASCII de longitud variable. El tipo del atributo poblacin es float, un tipo de datos, tambin nativo de Postgres , para nmeros de punto flotante de doble precisin. La clase capitales tiene un atributo extra, estado, que muestra a qu estado pertenecen. En Postgres, una clase puede heredar de ninguna o varias otras clases, y una consulta puede hacer referencia tanto a todas las instancias de una clase como a todas las instancias de una clase y sus descendientes. Nota: La jerarqua de la herencia es un grfico acclico dirigido. Por ejemplo, la siguiente consulta encuentra todas aquellas ciudades que estn situadas a un altura de 500 o ms pies: SELECT nombre, altitud FROM ciudades WHERE altitud > 500; +-------+-------+ |nombre | altitud | +-------+-------+ |Las Vegas | 2174 | +-------+-------+ |Mariposa | 1953 | +-------+-------+ Por otro lado, para encontrar los nombres de todas las ciudades, includas las capitales estatales, que estn situadas a una altitud de 500 o ms pies, la consulta es: SELECT c.nombre, c.altitud FROM ciudades* c WHERE c.altitud > 500; which returns: +-------+-------+ |nombre | altitud | +-------+-------+ |Las Vegas | 2174 | +-------+-------+ |Mariposa | 1953 | +-------+-------+ |Madison | 845 | +-------+-------+ Aqu el * despus de ciudades indica que la consulta debe realizarse sobre ciudades y todas las clases que estn por debajo de ella en la jerarqua de la herencia. Muchos de los comandos que ya hemos discutido (select, and>up and> and delete) brindan soporte a esta notacin de * al igual que otros como alter.
VALORES NO-ATMICOS
Uno de los principios del modelo relacional es que los atributos de una relacin son atmicos Postgres no posee esta restriccin; los atributos pueden contener sub-valores a los que puede
accederse desde el lenguaje de consulta. Por ejemplo, se pueden crear atributos que sean vectores de alguno de los tipos base.
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 base. CREATE TABLE SAL_EMP ( nombre text, pago_por_quincena int4[], agenda text[][] ); La consulta de arriba crear una clase llamada SAL_EMP con una cadena del tipo text (nombre),un vector unidimensional del tipo int4 (pago_por_quincena), el cual representa el salario trimestral del empleado y un vector bidimensional del tipo text (agenda), que representa la agenda semanal del empleado. Ahora realizamos algunos INSERT; note que cuando agregamos valores a un 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. INSERT INTO SAL_EMP VALUES (Bill, {10000, 10000, 10000, 10000}, {{"entrevista", "lunch"}, {}}); INSERT INTO SAL_EMP VALUES (Carol, {20000, 25000, 25000, 25000}, {{"platica", "consulta"}, {"entrevista"}}); Postgres utiliza de forma predeterminada la convencin de vectores "basados en uno" es decir, un vector de n elementos comienza con vector[1] y termina con vector[n]. Ahora podemos ejecutar algunas consultas sobre SAL_EMP. Primero mostramos como acceder a un solo elemento del vector por vez. Esta consulta devuelve los nombres de los empleados cuyos pagos han cambiado en el segundo trimestre: SELECT name FROM SAL_EMP WHERE SAL_EMP.pago_por_quincena[1] <> SAL_EMP.pago_por_quincena[2]; +----+ |nombre | +----+ |Carol | +----+ La siguiente consulta recupera el pago del tercer trimestre de todos los empleados: SELECT SAL_EMP.pago_por_quincena[3] FROM SAL_EMP; +----------+ |pago_por_quincena | +----------+
|10000 | +----------+ |25000 | +----------+ Tambin podemos acceder a cualquier porcin de un vector, o subvectores. Esta consulta recupera el primer item de la agenda de Bill para los primeros dos das de la semana. SELECT SAL_EMP.agenda[1:2][1:1] FROM SAL_EMP WHERE SAL_EMP.nombre = Bill; +-------------+ |agenda | +-------------+ |{{"entrevista"},{""}} | +-------------+
MS CARACTERSTICAS AVANZADAS
Postgres posee muchas caractersticas que no se han visto en este tutorial, el cual ha sido orientado hacia usuarios nuevos de SQL. Las mencionadas caractersticas se discuten tanto en la Gua del Usuario como en la del Programador.
BIBLIOGRAFIA
http://www.postgresql.org/docs/books/awbook.html http://www.commandprompt.com/ppbook/ http://www.postgresql.org/docs/books/ http://wiki.postgresql.org/wiki/Database_Administration_and_Maintenance http://wiki.postgresql.org/wiki/Development_Articles http://wiki.postgresql.org/wiki/PostgreSQL_for_Enterprise_Business_Applications http://www.archonet.com/pgdocs/pgnotes.html The PostgreSQL Tutorial Introduction , The Tutorial , Editado por Thomas Lockhart, 1998-10-01, The PostgreSQL Global Development Group. The PostgreSQL Users Guide , The Users Guide , Editado por Thomas Lockhart, 1998-10-01, The PostgreSQL Global Development Group.