You are on page 1of 178

Anl. Mauricio Arvalo M.

INDICE

INDICE ____________________________________________________________1 INTRODUCCIN ____________________________________________________4 CAPITULO I: LAS BASES DE DATOS ___________________________________6 1.1. Historia ______________________________________________________6 1.2. Objetivos de los Sistemas de Gestin de Bases de Datos _______________7 1.3. Ventajas y Desventajas de los Sistemas de Bases de Datos _____________9 1.3.1. Ventajas _________________________________________________10 1.3.2. Desventajas ______________________________________________11 1.4. Generalidades y Caractersticas de las Bases de Datos________________11 1.4.1. Abstraccin de Datos _______________________________________12 1.4.2. Modelos de Datos__________________________________________14 1.4.3. Integridad en la base de datos ________________________________16 1.4.4. Normalizacin de la base de datos_____________________________17 1.5. Los Sistemas de Gestin de Bases de Datos (SGBD) _________________19 1.5.1. Estructura del Sistema de Gestin de Base de Datos ____________21 1.6. Lenguaje de Definicin de datos (DDL)_____________________________22 1.7. Lenguaje de Manipulacin de Datos (DML) _________________________23 CAPITULO II: LENGUAJE ESTRUCTURADO DE CONSULTAS (SQL) ________24 2.1. Historia ______________________________________________________24 2.2. Caractersticas y Estructura ______________________________________25 2.2.1. Comandos _____________________________________________29 2.2.2. Clusulas ________________________________________________29 2.2.3. Operadores lgicos ________________________________________30 2.2.4. Operadores de Comparacin _________________________________30 2.2.5. Funciones de Agregado _____________________________________31 CAPITULO III: LICENCIAMIENTO DE SOFTWARE________________________32 3.1. Licencias de Software __________________________________________32 3.2. Software Libre ________________________________________________33 3.2.1. Tipos de Licencias de Software Libre___________________________34 3.3. Software Propietario ____________________________________________36 3.3.1. Tipos de Licencias de Software Propietario ______________________37 CAPITULO IV: MY SQL______________________________________________39 4.1. Historia y Antecedentes _________________________________________39 4.2. Caractersticas y Funcionalidad del Servidor MySQL___________________40 4.3. Estructura del Servidor MySQL ___________________________________56
- Pg. 1 -

Anl. Mauricio Arvalo M.

4.3.1. Tipos de Tablas _________________________________________58 4.3.2. Tipos de Datos de MySQL _________________________________60 4.4. Ventajas y Desventajas de MySQL ________________________________61 4.4.1. Ventajas _______________________________________________61 4.4.2. Desventajas ______________________________________________63 4.5. Gestin de Bases de Datos MySQL ________________________________63 4.5.1. Cliente mysql _____________________________________________66 4.5.2. Mysqladmin ______________________________________________70 4.5.3. Myisampack ______________________________________________71 4.5.4. Mysqlcheck y Myisamchk ____________________________________72 4.5.5. Mysqlimport ______________________________________________73 4.5.6. Mysqldump y Mysqlhotcopy __________________________________73 4.5.7. Perror ___________________________________________________74 4.5.8. MySQL Administrator _______________________________________75 4.5.12. MySQL Front _____________________________________________79 4.5.13. PhpMyAdmin _____________________________________________81 4.5.14. MySQL Developer Studio ____________________________________83 4.5.15. DBDesigner ______________________________________________84 4.6. Instalacin y Configuracin de MySQL______________________________84 4.6.1. Instalacin sobre Windows ___________________________________85 4.6.2. Instalacin sobre Linux______________________________________92 CAPITULO V: PostgreSQL___________________________________________95 5.1. Historia y Antecedentes _________________________________________95 5.2. Caractersticas y Funcionalidad de PostgreSQL ______________________97 5.3. Estructura del servidor PostgreSQL _______________________________110 5.3.1. Tipos de Tablas ________________________________________112 5.3.2. Tipos de Datos _________________________________________113 5.4. Ventajas y Desventajas de PostgreSQL____________________________114 5.4.1. Ventajas ______________________________________________114 5.4.2. Desventajas ___________________________________________116 5.5. Gestin de Bases de Datos PostgreSQL ___________________________117 5.5.1. psql____________________________________________________117 5.5.2. pg_dump y pg_dumpall ____________________________________120 5.5.3. pg_restore ______________________________________________122 5.5.4. createdb y dropdb_________________________________________123 5.5.5. Postmaster y pg_ctl _______________________________________124 5.5.6. PgAdmin________________________________________________125 5.5.7. PhpPgAdmin ____________________________________________127 5.5.8. EMS SQL Manager para PostgreSQL _________________________129 5.6. Instalacin de PostgreSQL______________________________________131 5.6.1. Instalacin sobre Windows __________________________________132 5.6.2. Instalacin sobre Linux_____________________________________137 5.7. Configuracin de PostgreSQL ___________________________________142 5.7.1. Archivo postgresql.conf ____________________________________143 5.7.2. Archivo pg_hba.conf_______________________________________144 5.7.3. Archivo pg_ident.conf ______________________________________147 5.7.4. Finalizacin de la Configuracin______________________________148

- Pg. 2 -

Anl. Mauricio Arvalo M.

CAPITULO VI: Otros Sistemas Gestores de Bases de Datos ______________151 6.1. Oracle ___________________________________________________151 6.2. Microsoft SQL Server________________________________________153 6.3. SQL Lite __________________________________________________154 6.4. HSQLDB _________________________________________________155 6.5. Firebird___________________________________________________155 6.6. Informix __________________________________________________156 6.7. Comparaciones ____________________________________________157 CONCLUSIONES _________________________________________________160 RECOMENDACIONES _____________________________________________162 ANEXOS ________________________________________________________163 ANEXO A: MODOS DE MySQL ______________________________________163 ANEXO B: TIPOS DE DATOS EN POSTGRESQL________________________166 ANEXO C: ALTERNATIVAS PARA BUSINESS INTELLIGENCE (BI) _________167 ANEXO D: CONEXIONES PARA MySQL y PostgreSQL ___________________168 GLOSARIO ______________________________________________________ 172 BIBLIOGRAFIA___________________________________________________ 177

- Pg. 3 -

Anl. Mauricio Arvalo M.

INTRODUCCIN

Desde el punto de vista de que el bien ms preciado para una empresa u organizacin es su informacin, los medios mediante los cuales se guarda y se manipula la misma deben ser en lo posible los ms seguros y confiables para asegurar la integridad y veracidad de dicha informacin. La importancia de la informacin en la mayora de organizaciones, y por tanto el valor de la base de datos, ha llevado al desarrollo de una gran cantidad de conceptos y tcnicas para la gestin eficiente de los datos. El objetivo primordial de un Sistema de Gestin de Bases de Datos (SGBD o DBMS) es proporcionar un entorno que sea a la vez conveniente y eficiente para manipular la informacin o datos contenidos en las bases de datos. El mercado de sistemas manejadores de bases de datos es bastante grande y ofrece diversas alternativas a la hora de elegir un software en el cual confiar. Para un profesional informtico, el tomar una decisin con respecto a la herramienta de gestin de bases de datos por cual inclinarse, cual es la ptima, cual nos ofrece mayores garantas en un desarrollo de software especfico y que detalles de implementacin se deberan tener en cuenta para asegurar el correcto desempeo de un sistema informtico de calidad, se convierte en una gran preocupacin y responsabilidad en el diseo y desarrollo de dicho sistema informtico. Entonces, es de vital importancia y prioridad el conocimiento de las caractersticas, ventajas, desventajas, las herramientas de administracin que dispone un determinado sistema de gestin de bases de datos, adems de las caractersticas de los sistemas informticos que se van a desarrollar y los requerimientos de los mismos; de modo que las caractersticas de estas herramientas de gestin de bases de datos se ajusten a los requerimientos de nuestros sistemas informticos.

- Pg. 4 -

Anl. Mauricio Arvalo M.

En la presente monografa, inicialmente se analiza de una manera generalizada los objetivos y naturaleza de los sistemas gestores de bases de datos; explicando su historia y como se ha desarrollado el concepto de sistema de base de datos, qu es lo que hace un sistema de gestin de bases de datos, sus componentes y caractersticas principales. Se realiza luego un estudio general a cerca del lenguaje SQL (Lenguaje Estructurado de Consultas), sus antecedentes, caractersticas, normas actuales, tipos de datos y sus principales comandos de los que hacen uso los manejadores de las bases de datos que se dan a conocer en la presente investigacin. Tambin son objeto de estudio los distintos tipos de licenciamientos de software que existen y las licencias de software libre como GPL (Licencia Pblica General). Se ponen en conocimiento las caractersticas, componentes y estructura, herramientas, uso, ventajas y desventajas de dos de los manejadores de bases de datos con licenciamiento libre ms usados que actualmente existen en el medio y que se pueden ofrecer como bases de datos para Sistemas Web o en sistemas empresariales con las respectivas versiones para distintos sistemas operativos (Windows, MAC o Linux). Las bases de datos de software libre que se analizan detalladamente en la presente monografa; por su uso popular entre su tipo y sus muy buenas caractersticas tcnicas son MySQL y PostgreSQL. Adems, para tener otros parmetros de evaluacin a la hora de elegir el gestor de bases de datos que mejor se acomode a nuestros requerimientos, en el ltimo captulo se dan a conocer conceptos bsicos sobre otros gestores de bases de datos de software libre como Firebird, HSQLDB y SQLite y otros sistemas gestores de bases de datos que estn bajo licenciamiento propietario y comercial como Oracle, Informix y Microsoft SQL Server. De esta manera, pretendo contribuir logrando que la presente investigacin sirva como un instrumento de informacin y orientacin para estudiantes y profesionales vinculados con el rea de sistemas y desarrollo de software dando a conocer las caractersticas principales de los dos productos de software libre ms utilizados en el rea de bases de datos a un costo gratuito de licenciamiento, con libertad de modificacin, con un potente desempeo y muy buenas herramientas administrativas.

- Pg. 5 -

Anl. Mauricio Arvalo M.

CAPITULO I LAS BASES DE DATOS

1.1. Historia
Antes de las bases de datos que hoy conocemos, se utilizaban ficheros secuenciales como almacenes de datos. Estos daban un acceso muy rpido pero slo de forma secuencial, ms tarde aparecieron los ficheros indexados, donde el acceso ya poda ser aleatorio; el sistema de ficheros era el sistema ms comn de almacenamiento de datos. Pero los programas y datos cada vez eran ms complejos y grandes, por tal motivo se requera de un almacenamiento que garantizara un cierto nmero de condiciones y que permitiera operaciones complejas sin que se violaran estas restricciones. Adems cada usuario que accediera a los datos deba tener su trabajo protegido de las operaciones que hicieran el resto de usuarios, respondiendo a estas necesidades, surgieron las bases de datos jerrquicas, donde los datos se situaban siguiendo una jerarqua. A mitad de los sesenta, se desarroll el proyecto IDS (Integrated Data Store), de General Electric. IDS era un nuevo tipo de sistema de bases de datos conocido como bases de datos en red, y en parte se desarroll para satisfacer la necesidad de representar relaciones entre datos ms complejas que las que se podan modelar con los sistemas jerrquicos. Los sistemas jerrquico y de red constituyen la primera generacin de los SGBD (Sistemas de Gestin de Base de Datos).

- Pg. 6 -

Anl. Mauricio Arvalo M.

En 1970, en los laboratorios de investigacin de IBM, se escribi un artculo presentando el modelo de bases de datos relacionales. En este artculo, presentaba tambin los inconvenientes de los sistemas previos (el jerrquico y el de red), y entonces se comenzaron a desarrollar muchos sistemas relacionales, apareciendo los primeros a finales de los setenta y principios de los ochenta. Esto condujo al desarrollo de un lenguaje de consultas estructurado denominado SQL, que se ha convertido en el lenguaje estndar de los sistemas relacionales. El modelo de bases de datos relacionales se utiliza para describir la estructura de una base de datos, las relaciones entre los datos, las restricciones, la semntica, etc., y es el que ha marcado la lnea de investigacin por muchos aos hasta la actualidad, existiendo cientos de SGBDs relacionales. Los SGBDs relacionales constituyen la segunda generacin de los Sistemas de Gestin de Bases de Datos. En 1976, se present el modelo entidad-relacin; adems, en los ltimos aos han surgido dos nuevos modelos: el modelo de datos orientado a objetos y el modelo relacional extendido. Sin embargo, a diferencia de los modelos que los preceden, la composicin de estos ltimos modelos no est del todo clara. Esta evolucin representa la tercera generacin de los sistemas gestores de bases de datos.

1.2. Objetivos de los Sistemas de Gestin de Bases de Datos


En el caso de los primeros sistemas tpicos de procesamiento de archivos apoyados por un sistema operativo convencional, los registros de diversas transacciones permanecan almacenados en varios archivos y se escriban un nmero de diferentes programas de aplicacin para extraer, eliminar, actualizar y aadir registros a los archivos apropiados. Estos tipos de sistemas tenan varias desventajas o problemas importantes entre los cuales tenemos la redundancia e inconsistencia de datos, la dificultad para tener acceso a los datos, el aislamiento de los mismos, las anomalas en los datos cuando se presentaban accesos concurrentes y la seguridad e integridad de la informacin.
- Pg. 7 -

Anl. Mauricio Arvalo M.

Debido a estas dificultades, entre otras, se ha fomentado el desarrollo de los Sistemas Gestores de Bases de Datos, los cuales proporcionan un interfaz eficiente entre aplicaciones y el sistema operativo, consiguiendo, entre otras cosas, que el acceso a los datos se realice de una forma ms eficiente, ms fcil de implementar y sobre todo, ms segura. El objetivo principal de un Sistema de Gestin de Bases de Datos es proporcionar un entorno y las herramientas necesarias, convenientes y eficientes para manipular la informacin o datos contenidos en las bases de datos, de una manera rpida, fcil y segura. Los Sistemas de Gestin de Bases de Datos (SGBD) tratan de cumplir los siguientes objetivos especficos: Abstraccin de la informacin: Los SGBD ahorran a los usuarios detalles acerca del almacenamiento y mantenimiento fsico de los datos. Para lograr este objetivo, se definen varios niveles de abstraccin (fsico, conceptual y de visin). Independencia: La independencia de los datos consiste en la capacidad de modificar el esquema (fsico o lgico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella. Redundancia mnima: Un buen diseo de una base de datos lograr evitar la

aparicin de informacin repetida o redundante. Lo ideal es lograr una redundancia nula; no obstante, en algunos casos la complejidad de los clculos hace necesaria la aparicin de ciertas redundancias. Consistencia: En aquellos casos en los que no se ha logrado una redundancia nula, es necesario vigilar que aquella informacin que aparece repetida se actualice de forma coherente, es decir, que todos los datos relacionados se actualicen de forma simultnea y no aparezcan inconsistencias de dichos datos entre distintas tablas o archivos. Seguridad: La informacin almacenada en una base de datos llega a tener un gran

valor para cualquier organizacin. Los SGBD deben garantizar que esta informacin se encuentre asegurada frente a usuarios malintencionados que intenten leer la informacin

- Pg. 8 -

Anl. Mauricio Arvalo M.

privilegiada y no autorizada a ellos o simplemente ante las distracciones de algn usuario que puede estar autorizado, y por ello, los SGBD disponen de un sistema de distintas clases de permisos a usuarios o grupos de usuarios. Integridad: Se trata de adoptar las medidas necesarias para garantizar la validez y consistencia de los datos almacenados. Es decir, se trata de proteger los datos ante fallos de hardware, datos introducidos por usuarios descuidados, o cualquier otra circunstancia capaz de corromper la informacin almacenada. Respaldo y recuperacin: Los SGBD deben proporcionar una forma eficiente de realizar copias de seguridad de la informacin almacenada en ellos, y de restaurar a partir de dichas copias los datos que se hayan podido perder o daar. Control de la concurrencia: En la mayora de entornos, lo ms habitual es que sean muchas las personas que acceden a una base de datos y es tambin frecuente que dichos accesos se realicen de forma simultnea. en los datos. Tiempo de respuesta: Siempre se trata de minimizar el tiempo en que el SGBD tarda en darnos la informacin solicitada y en almacenar o actualizar los cambios realizados en los datos. As pues, un SGBD debe ser capaz de controlar este acceso concurrente a la informacin, que podra derivar en inconsistencias

1.3. Ventajas y Desventajas de los Sistemas de Bases de Datos


Los sistemas de bases de datos presentan numerosas ventajas, y de la misma manera traen ciertas desventajas o inconvenientes. A continuacin menciono las ms importantes:

- Pg. 9 -

Anl. Mauricio Arvalo M.

1.3.1. Ventajas Disponibilidad: Cuando se aplica la metodologa de bases de datos, cada usuario ya no es propietario de los datos, puesto que stos se comparten entre el todo el conjunto de aplicaciones, existiendo una mejor disponibilidad de los datos para todos los que tienen necesidad de ellos. Facilidad de uso: Existen diferentes maneras de extraer la informacin almacenada en una base de datos, por ejemplo, un programador lo puede realizar por medio de instrucciones SQL, los usuarios lo pueden realizar por medio de las aplicaciones o herramientas disponibles, obteniendo velocidad y precisin. Coherencia de los resultados: En todas las aplicaciones que hacen uso de las bases de datos se utilizan los mismos datos, por lo que los resultados de todos ellos son coherentes y perfectamente comparables. Confidencialidad y seguridad en el manejo de los datos: Toda la informacin puede estar centralizada en un solo punto y debidamente clasificada pudiendo acceder a ella con seguridad dependiendo del perfil con que se ingresa al sistema. Mantenimiento de estndares: Gracias a la integracin es ms fcil respetar los estndares necesarios, tanto los establecidos a nivel de la empresa u organizacin como los nacionales e internacionales. Aumento de la concurrencia: La mayora de los SGBD gestionan el acceso concurrente a la base de datos por parte de los usuarios y garantizan que no ocurran problemas de inconsistencias en los datos. Mejora en las copias de seguridad y de recuperacin ante fallos: Los SGBD nos dan la posibilidad de hacer copias de seguridad o Backups de las bases de datos por si se produce algn fallo o anomala, utilizando estas copias de seguridad para restaurar los datos.

- Pg. 10 -

Anl. Mauricio Arvalo M.

1.3.2. Desventajas Complejidad: Los SGBD son conjuntos de programas complejos con una gran funcionalidad. Es preciso comprender muy bien esta funcionalidad para poder sacar un buen provecho de ellos. Tamao: Los SGBD son programas complejos y muy extensos que requieren una gran cantidad de espacio en disco y de memoria para trabajar de forma eficiente. Coste econmico del SGBD: El coste de un SGBD con licencia comercial, vara dependiendo del entorno y de la funcionalidad que ofrece, lo cual se puede reducir con el uso de Sistemas de Gestin de Bases de Datos con licenciamiento libre que ofrezcan caractersticas similares. En algunas ocasiones, tambin es alto el coste de convertir y migrar una aplicacin con un nuevo sistema de gestin de bases de datos. Vulnerabilidad ante fallos: El hecho de que todo se centralice en el SGBD hace que el sistema sea ms vulnerable ante los fallos que puedan producirse, por lo que se debe tener un proceso seguro para realizar copias de respaldo de la base de datos y un correcto plan de contingencia, en caso de producirse cualquier fallo o anomala.

1.4. Generalidades y Caractersticas de las Bases de Datos


Para diferenciar entre lo que es una Base de Datos y un Sistema de Gestin de Base de Datos tenemos los siguientes conceptos: Un Atributo o campo es cualquier elemento de informacin susceptible de tomar valores; mientras que un Dominio comprende un rango de valores de donde toma sus datos un atributo. Una Base de Datos es una coleccin o depsito de datos integrados con redundancia controlada y con una estructura que refleja las interrelaciones y restricciones existentes en el

- Pg. 11 -

Anl. Mauricio Arvalo M.

mundo real. Los procedimientos de actualizacin y recuperacin de los datos deberan ser capaces de conservar la integridad del conjunto de los mismos. Un Sistema de Gestin de Bases de Datos (SGBD o DBMS), es el conjunto de programas que se encargan de manejar la creacin, administracin, las seguridades y accesos a las bases de datos que forman parte del SGBD. La principal funcin de un SGBD debe ser la de proporcionar a los usuarios la capacidad de almacenar datos en la base de datos, acceder a ellos y actualizarlos o modificarlos de forma correcta, sin violar las restricciones establecidas. Un SGBD se compone de un lenguaje de definicin de datos (DDL) y de un lenguaje de manipulacin de datos (DML), en este ltimo se incluye un lenguaje de consulta de datos. La funcionalidad de las bases de datos ha ido aumentando de forma considerable, ya que gran parte de la semntica de los datos que se encontraba dispersa en distintos programas o aplicaciones se ha ido migrando hacia el servidor de datos. Surgen as las bases de datos activas, deductivas, orientadas a objetos, multimedia, temporales, los almacenes de datos (datawarehouse1) y la minera de datos (datamining2).

1.4.1. Abstraccin de Datos

Un objetivo importante de una base de datos es proporcionar a los usuarios una visin abstracta de los datos, es decir, la capacidad del sistema de esconder ciertos detalles de cmo se almacenan y se mantienen los datos. As se han creado los niveles de abstraccin indicados a continuacin para simplificar la interaccin de los usuarios comunes o avanzados con el sistema:
1

Data Warehouse (DW) es un almacn o repositorio de datos categorizados, que concentra un gran volumen de informacin de inters para toda una organizacin. Genera aplicaciones que ayudan en la toma de decisiones.

Data mining o minera de datos a la solucin de Business Intelligence (Inteligencia de Negocios) que consiste en un conjunto de tcnicas avanzadas para la extraccin de informacin predecible escondida en grandes bases de datos. - Pg. 12 -

Anl. Mauricio Arvalo M.

Nivel fsico: Es la representacin del nivel ms bajo de abstraccin, en ste se describe en detalle la forma de como se almacenan los datos en los dispositivos de almacenamiento (por ejemplo, mediante punteros o ndices para el acceso aleatorio a los datos). Nivel conceptual: Es el siguiente nivel ms alto de abstraccin, describe que datos son almacenados realmente en la base de datos y las relaciones que existen entre los mismos, aqu se describe la base de datos completa en trminos de su estructura de diseo. Este nivel lo utilizan los administradores de bases de datos, quienes deben decidir qu informacin se va a guardar en la base de datos. Nivel de visin: Es el nivel ms alto de abstraccin, muestra solo lo que el usuario final puede visualizar del sistema terminado ya que no necesita toda la informacin contenida en la base de datos. Este nivel describe slo una parte de la base de datos al usuario acreditado para verla y se puede proporcionar muchas visiones en este nivel para la misma base de datos. La interrelacin entre estos tres niveles de abstraccin se ilustra en la siguiente figura:

Figura 1.1: Niveles de Abstraccin de Datos

- Pg. 13 -

Anl. Mauricio Arvalo M.

1.4.2. Modelos de Datos Un modelo no es ms que una representacin de la realidad que contiene las caractersticas generales de algo que se va a realizar. En base de datos, esta representacin se la elabora de forma grfica. Un Modelo de Datos es una coleccin de herramientas conceptuales para describir los datos, las relaciones que asocian a los mismos, su semntica y las restricciones para conservar su consistencia. Los modelos de datos se pueden dividir en tres grupos: Modelos lgicos basados en objetos: Se usan para describir datos en los niveles conceptual y de visin, es decir, con este modelo representamos los datos de tal forma como nosotros los captamos en el mundo real, tienen una capacidad de estructuracin bastante flexible y permiten especificar restricciones de datos explcitamente. Existen diferentes modelos de este tipo, como el modelo orientado a objetos, el modelo binario, semntico, infolgico; sin embargo el ms utilizado por su sencillez y eficiencia es el modelo Entidad-Relacin, el cual representa a la realidad a travs de una coleccin de objetos bsicos denominados entidades, y las relaciones entre estos objetos. Estas relaciones cumplen con una restriccin de la base de datos conocida como cardinalidad de asignacin, que nos representa el nmero de entidades a las que se puede asociar otra entidad mediante un conjunto de relaciones; las mismas que pueden ser: uno a uno, uno a muchos y muchos a muchos.

Figura 1.2: Modelo E-R (entidad Empleado relacionada con entidad Artculo con relacin venta)

Modelos lgicos basados en registros: Se utilizan para describir datos en los niveles conceptual y fsico. Estos modelos utilizan registros e instancias para representar la realidad, as como las relaciones que existen entre estos registros. A diferencia de los
- Pg. 14 -

Anl. Mauricio Arvalo M.

modelos de datos basados en objetos, se usan para especificar la estructura lgica global de la base de datos y para proporcionar una descripcin a un nivel ms alto de la implementacin. La base de datos est estructurada en registros agrupados de varios tipos, y cada tipo de registros define un nmero fijo de campos o atributos. Los tres modelos lgicos ms importantes son:

Modelo de red

Este modelo representa los datos mediante colecciones de

registros y sus relaciones se representan por medio de ligas o enlaces, los cuales pueden verse como punteros. Los registros se organizan en un conjunto de grficas arbitrarias, como se puede observar en la siguiente figura:

Figura 1.3: Modelo de red (con registros de dos entidades enlazadas arbitrariamente)

Modelo jerrquico: Es similar al modelo de red en cuanto a que los datos y sus relaciones se representan por medio de registros y sus enlaces o ligas. en lugar de grficas arbitrarias como se muestra a continuacin: La diferencia radica en que estn organizados por conjuntos o colecciones de rboles

Figura 1.4: Modelo jerrquico (con registros de dos entidades enlazadas en estructura de rbol)

Modelo Relacional: En este modelo se representan los datos y las relaciones entre estos, a travs de una coleccin de tablas en las cuales los renglones o tuplas equivalen a los cada uno de los registros que contendr la base de datos y las columnas corresponden a las caractersticas (atributos) de cada registro.

- Pg. 15 -

Anl. Mauricio Arvalo M.

Figura 1.5: Modelo jerrquico (con registros de dos entidades enlazadas en estructura de rbol)

Modelos fsicos de datos: Se usan para describir a los datos en el nivel ms bajo, aunque existen muy pocos modelos de este tipo, bsicamente capturan aspectos de la implementacin de los sistemas de base de datos.

1.4.3. Integridad en la base de datos En un momento dado, los valores de los datos en una base de datos son una representacin de un fragmento de la realidad. Las reglas de integridad son normas que ayudan a mantener la semntica y la consistencia en los datos. Es decir, si tenemos una tabla con los atributos de personas y entre ellos el peso o la edad, estos no pueden ser negativos porque en el mundo real esto no es posible. Si aadimos una restriccin de este tipo a una base de datos, estamos incluyndole una regla de integridad. As, las bases de datos relacionales tienen reglas generales de integridad que se clasifican en:

Integridad especfica: Donde depende de la semntica de los datos y su dominio para que se cumpla este tipo de integridad. Por ejemplo, en un atributo o campo edad, para que un valor sea vlido o admitido debe ser mayor que 0 y menor que 100 (0edad100).

- Pg. 16 -

Anl. Mauricio Arvalo M.

Integridad genrica: Donde depende del papel que juegue un atributo en el diseo de la tabla, es decir, si forma parte de la llave primaria, nica o fornea. Dentro de este tipo de integridad, existe la integridad de entidades y la integridad referencial. La integridad de las entidades verifica que ningn componente de la llave primaria de

una relacin puede aceptar valores nulos ni valores que dupliquen la llave primaria en otro registro de la entidad. actualizacin de los datos. La integridad referencial es una propiedad de las bases de datos relacionales y gracias a ella se garantiza que una entidad siempre se relacione con otras entidades vlidas, es decir, que existan en la base de datos. La idea es que tengamos una concordancia entre los datos de dos entidades mediante sus relaciones. Este proceso se aplica en procesos de insercin, actualizacin y eliminacin de los datos. En el modelo de bases de datos relacionales, para representar las relaciones entre las entidades (tablas), debemos saber que una Clave candidata o nica es un atributo o conjunto de atributos que identifican unvocamente a una tupla o registro, es decir, no hay dos tuplas con dos claves candidatas iguales. En una relacin puede haber ms de una clave candidata, por lo que una de las claves candidatas se debe adoptar como clave primaria. Una clave primaria es un atributo o conjunto de atributos que los definimos como atributo principal de entre las claves candidatas, de tal manera que se pueda identificar de forma nica a una entidad, mientras que una clave fornea es un atributo (tambin puede ser compuesto) de una entidad cuyos valores deben de concordar con los de una llave primaria de alguna otra entidad relacionada. Esta regla de integridad se aplica en procesos de insercin y

1.4.4. Normalizacin de la base de datos La normalizacin de una base de datos puede considerarse como un proceso durante el cual los esquemas de relacin insatisfactorios se descomponen repartiendo sus atributos entre esquemas de relacin ms pequeos que poseen las propiedades deseables.
- Pg. 17 -

Anl. Mauricio Arvalo M.

Un objetivo del proceso de normalizacin es garantizar que no ocurran las anomalas en la actualizacin, ayudando tambin a la eliminacin de informacin redundante en las tuplas o registros. A continuacin se presentan brevemente las tres primeras formas normales, para ello seguir el ejemplo con la siguiente Entidad R, que tiene los datos de la compra de un cliente, la misma que se la ir pasando de una forma normal a otra:

R (Cdigo_cliente, Nombre_cliente, Direccion_cliente, Nmero_factura, Fecha, Valor) Primera Forma Normal: Una relacin se encuentra en primera forma normal cuando no hay grupos repetidos entre sus atributos. Esta condicin es una restriccin inherente al modelo relacional, y por tanto, el ejemplo dado est al menos en primera forma normal (1FN). Segunda Forma Normal: Una relacin se encuentra en segunda forma normal (2FN) cuando est en 1FN y adems todos los atributos que no forman parte de una clave candidata dan informacin sobre la clave principal. El ejemplo en 2FN quedara de la siguiente forma: R1 (Cdigo_cliente, Nombre_ cliente, Direccion_ cliente) R2 (Nmero_Factura, Cdigo_ cliente, Fecha, Valor) Tercera Forma Normal: Una relacin se encuentra en tercera forma normal (3FN) cuando est en 2FN y adems los atributos que no forman parte de una clave candidata dan informacin sobre la clave principal completa y slo sobre la clave principal. El ejemplo anterior en 3FN quedara as: R1 (Cdigo_cliente, Nombre_ cliente, Direccion_ cliente) R2 (Numero_Factura, Codigo_cliente) R3 (Numero_Factura, Fecha, Valor)

- Pg. 18 -

Anl. Mauricio Arvalo M.

1.5. Los Sistemas de Gestin de Bases de Datos (SGBD)


La base de datos es una coleccin de archivos interrelacionados almacenados en conjunto sin redundancia y un Sistema de Gestin de Bases de Datos (SGBD o DBMS) se lo describe como un conjunto de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de una determinada tarea. Las funciones principales de un Sistema de Gestin de Bases de Datos son: Proporcionar a los usuarios la capacidad de almacenar datos en la base de datos, acceder a ellos y actualizarlos. Esta es la funcin fundamental de un SGBD. Establecer y mantener las trayectorias de acceso a la base de datos de tal forma que los datos puedan ser accedidos rpidamente. Registrar el uso de las base de datos, es decir mantener registros de accesos, usuarios, tipos de transacciones realizadas en la base de datos. Interactuar con el manejador de archivos, lo cual se lo realiza mediante la traduccin de las distintas sentencias DML a comandos del sistema de archivos de bajo nivel; ya que los datos se almacenan en el disco usando el sistema de archivos que normalmente es proporcionado por un sistema operativo convencional. As el Manejador de bases de datos es el responsable del verdadero almacenamiento, recuperacin y actualizacin de los datos en la base de datos. Respaldar y recuperar informacin, ya que un SGBD debe contar con mecanismos o rutinas adecuadas que permitan la recuperacin fcilmente de los datos en caso de ocurrir fallas en el sistema de base de datos. Tener control de concurrencia, que consiste en controlar la interaccin de los usuarios cuando actualizan la base de datos concurrentemente o al mismo tiempo, evitando afectar la consistencia de los datos.

- Pg. 19 -

Anl. Mauricio Arvalo M.

Mantener la seguridad, la cual consiste en contar con mecanismos que permitan el control de la informacin de la base de datos, evitando que los datos se vean perjudicados por cambios no autorizados o imprevistos por usuarios no autorizados; algunos SGBD disponen de un sistema de permisos a usuarios y grupos de usuarios. Mantener la integridad de los datos, adoptando las medidas necesarias para garantizar la validez y consistencia de los datos almacenados. Para ello, los datos que se almacenan en la base de datos deben satisfacer ciertos tipos de restricciones de integridad. Un SGBD debe proporcionar un catlogo en el que se almacena informacin que describe los datos de una base de datos (meta datos). A este catlogo se denomina diccionario de datos.

Un SGBD debera proporcionar un mecanismo que controle y garantice que todas las transacciones3 se realicen si no existen errores, o que no se realice ninguna.

Un SGBD debe ser capaz de integrarse con algn software (protocolos) de comunicacin. Muchos usuarios acceden a la base de datos desde terminales y ellos se encuentran conectados a la mquina sobre la que funciona el SGBD mediante una red local o de rea extensa. En cualquiera de los casos, el SGBD recibe peticiones en forma de mensajes y responde de modo similar.

Figura 1.6: Interaccin del Usuario con la Base de datos a travs del DBMS

Una Transaccin es un conjunto de acciones tales como inserciones, eliminaciones y actualizaciones que cambian el contenido de una base de datos. - Pg. 20 -

Anl. Mauricio Arvalo M.

1.5.1. Estructura del Sistema de Gestin de Base de Datos

Un sistema de base de datos se encuentra dividido en mdulos, cada uno de los cuales controla una parte de la responsabilidad total de sistema. En la mayora de los casos, el sistema operativo proporciona nicamente los servicios ms bsicos y el sistema de gestin de bases de datos debe partir de estos servicios y controlar adems el manejo correcto de los datos. As el diseo de un sistema de gestin de bases de datos incluye la interfaz entre el sistema de base de datos y el sistema operativo. Los componentes ms importantes de un Sistema de Gestin de Bases de Datos o SGBD, son: Gestor de archivos: Gestiona la asignacin de espacio en la memoria del disco y de las estructuras de datos usadas para representar informacin. Manejador de base de datos: Sirve de interfaz entre los datos y los programas de aplicacin. Procesador de consultas: Traduce las proposiciones en lenguajes de consulta a instrucciones de bajo nivel comprensibles por el gestor de la base de Datos. Compilador de DDL: Convierte las proposiciones o sentencias DDL (Lenguaje de Definicin de Datos) en un conjunto de tablas que contienen metadatos4, estas se almacenan en el diccionario de datos. Archivo de datos: En l se encuentran almacenados fsicamente los datos de una base de datos. Indices: Que permiten un rpido acceso a registros de datos que contienen valores especficos.

Metadatos son datos o informacin acerca de la estructura de los datos que forman una tabla o entidad. - Pg. 21 -

Anl. Mauricio Arvalo M.

En la figura 1.7 se representan los principales componentes de un SGBD y la relacin que existe entre ellos:

Figura 1.7: Estructura de un Sistema de Gestin de Bases de Datos

1.6. Lenguaje de Definicin de datos (DDL)


Una vez finalizado el diseo de una base de datos y escogido un SGBD para su implementacin, el primer paso consiste en especificar el esquema conceptual y el esquema interno o fsico de la base de datos. Para ello, el administrador de la base de datos o los diseadores utilizan el lenguaje de definicin de datos (DDL), el resultado de su

- Pg. 22 -

Anl. Mauricio Arvalo M.

compilacin es un conjunto de tablas. Adems el SGBD posee un compilador de DDL que procesa las sentencias del lenguaje para identificar las descripciones de los distintos elementos y almacenar su descripcin en el diccionario de datos.

1.7. Lenguaje de Manipulacin de Datos (DML)


Una vez creados los esquemas de la base de datos, los usuarios necesitan un lenguaje que les permita manipular los datos de la base de datos: realizar consultas, inserciones, eliminaciones y modificaciones5. Este lenguaje es el que se denomina lenguaje de manejo o manipulacin de datos (DML). Existen dos tipos de lenguajes de manejo de datos: los procedurales y los no procedurales; con un DML procedural el usuario especifica qu datos se necesitan y cmo hay que obtenerlos. Las bases de datos jerrquicas y de red utilizan un DML procedural y sus sentencias deben estar embebidas o contenidas en un lenguaje de alto nivel, ya que se necesitan sus estructuras (bucles, condicionales, etc.) para obtener y procesar cada registro individual. A este lenguaje de alto nivel se le denomina lenguaje anfitrin. Un DML no procedural se puede utilizar de manera independiente para especificar operaciones complejas sobre la base de datos de forma concisa. El usuario o programador especifica qu datos quiere obtener sin decir cmo se debe acceder a ellos, siendo el SGBD quien traduce las sentencias del DML en uno o varios procedimientos que manipulan los conjuntos de registros necesarios, haciendo ms fcil el trabajo del usuario. A los DML no procedurales tambin se los denomina declarativos y las bases de datos relacionales utilizan un DML no procedural, como SQL (Structured Query Language) o QBE (Query By Example). La parte de los DML no procedurales que se dedica a la obtencin o recuperacin de datos es la que se conoce como lenguaje de consultas de datos.

Tomado de http://es.tldp.org/Tutoriales/NOTAS-CURSO-BBDD/notas-curso-BD/node3.html - Pg. 23 -

Anl. Mauricio Arvalo M.

CAPITULO II LENGUAJE ESTRUCTURADO DE CONSULTAS (SQL)

2.1.

Historia
El Lenguaje de Consultas Estructurado o SQL (Structured Query Languaje) empieza

en 1974, por parte de Donald Chamberlin y de otras personas que trabajaban en los laboratorios de investigacin de IBM, como un lenguaje para la especificacin de las caractersticas de bases de datos que adoptaban el modelo relacional. prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977 a una revisin del lenguaje (SEQUEL/2), que a partir de ese momento cambi de nombre por motivos legales, convirtindose en SQL. El prototipo del sistema de base de datos relacional, basado en este lenguaje, se adopt y se utiliz internamente en 1981 en la empresa IBM con su producto DB2. Gracias al xito de este sistema, otras compaas como Oracle y Sybase empezaron a desarrollar sus productos relacionales basados en SQL en la dcada de los ochenta. En 1986, el ANSI (American National Standards Institute) adopt SQL como estndar para los lenguajes relacionales y en 1987 se transform en estndar ISO (International
- Pg. 24 -

Inicialmente este

lenguaje se llamaba SEQUEL (Structured English Query Language) y se implement en un

Anl. Mauricio Arvalo M.

Standarization Organization); esta versin del estndar tuvo el nombre de SQL/86. En los aos siguientes, este estndar ha sufrido diversas revisiones y mejoras que han conducido primero a la versin SQL/89 y posteriormente, a la versin SQL/92 que es utilizado en algunos SGBDs hasta la actualidad. Hasta 1999 se sigui un proceso de revisin y mejora del lenguaje por parte de los comits ANSI e ISO, que termin en la definicin de lo que en este momento se conoce como SQL3. Sin embargo SQL3 est caracterizado como SQL orientado a objetos y es la base de algunos sistemas de manejo de bases de datos orientadas a objetos (como ORACLE, InformixUniversal Server, IBMs DB Universal Database y Cloudscape, entre muchos otros). SQL es realmente un esfuerzo de colaboracin internacional, que cumple las normas de organismos de estandarizacin como ANSI e ISO. Desde el punto de vista prctico, el hecho de tener un estndar definido por un lenguaje para bases de datos relacionales abre potencialmente el camino a la intercomunicacin y compatibilidad entre todos los productos que se basan en l. Lamentablemente, muchos proveedores de sistemas de gestin de Bases de Datos adoptan e implementan en la propia base de datos slo el corazn del lenguaje SQL, extendindolo de manera individual segn la propia visin que cada proveedor tenga del mundo de las bases de datos.

2.2.

Caractersticas y Estructura
SQL es una herramienta para organizar, gestionar y recuperar datos almacenados en

una base de datos informtica. SQL engloba totalmente los lenguajes DDL (Lenguaje de Definicin de Datos) y DML (Lenguaje de Manipulacin de Datos). Es un lenguaje de base de datos normalizado y eficiente, utilizado por los diferentes gestores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos.

- Pg. 25 -

Anl. Mauricio Arvalo M.

SQL es un lenguaje de consulta de datos de cuarta generacin. Lo que cabe destacar es que mientras un lenguaje de tercera generacin (3GL) como COBOL requiere cientos de lneas de cdigo, un lenguaje de cuarta generacin o 4GL necesita diez o veinte lneas para realizar la misma operacin. Un 3GL es procedural, mientras que un 4GL es un lenguaje no procedural ya que el usuario define qu se debe hacer y no cmo debe hacerse. Los lenguajes normalizados de bases de datos SQL (Structured Query Lenguaje) y QBE (Query by Example) son ejemplos de 4GL. La versin SQL3 dada a conocer en 1999, se caracteriza porque fue desarrollado principalmente para manejar objetos. Algunas de las caractersticas que estn dentro de esta categora fueron definidas en el estndar SQL publicado en 1996, especficamente para llamadas a funciones y procedimientos desde SQL. Entre las caractersticas ms importantes de SQL3 cabe destacar que tiene cuatro nuevos tipos de datos; el primero de estos tipos es LARGE OBJECT (objeto grande) o LOB y las variantes de este tipo son Character Large Object (CLOB) y Binary Large Object(BLOB). Otro tipo de dato nuevo es el BOLEAN, que permite a SQL registrar valores lgicos de falso o verdadero. Adems se incorporan dos nuevos tipos compuestos: ARRAY y ROW. El tipo ARRAY permite almacenar una coleccin de valores directamente en una columna de una tabla, por ejemplo: Dias VARCHAR(10) ARRAY(7). El tipo ROW en SQL3 permite el almacenamiento estructurado de datos en columnas nicas de la base de datos, por ejemplo:
CREATE TABLE empleado( emp_id INTEGER, nombre ROW( nombreVARCHAR(30), apellido VARCHAR(30)), direccion ROW(calle VARCHAR(50), ciudad VARCHAR(30), provincia CHAR(20)), salario REAL);

y para consultar el apellido de un empleado, se debera acceder as:


SELECT E.nombre.apellido FROM empleado E; - Pg. 26 -

Anl. Mauricio Arvalo M.

Desde la primera versin del SQL estndar, las cadenas de caracteres estn limitadas a simples comparaciones (como =, > <>), luego se fueron sumando las capacidades de comparacin como el predicado LIKE y del predicado DISTINCT. SQL reconoce la nocin de base de datos activa. Esto es facilitado por los conocidos triggers (disparadores). Un trigger tiene una funcionalidad que permite a los diseadores de bases de datos realizar operaciones seguras siempre que una aplicacin realice determinadas operaciones en tablas particulares. Las nuevas facilidades de seguridad en SQL tienen un papel muy importante. Los privilegios pueden ser otorgados segn un rol y este a su vez puede otorgar privilegios individuales para otros roles. Esta estructura anidada mejora el manejo de la seguridad en el ambiente de una base de datos. En su estructura, SQL posee 13 tipos de datos primarios y de varios sinnimos vlidos reconocidos por dichos tipos de datos. En la siguiente tabla se muestran los tipos de datos primarios soportados por SQL:

Tabla 2.1: Tipos de datos SQL

- Pg. 27 -

Anl. Mauricio Arvalo M.

La siguiente tabla muestra los sinnimos de los tipos de datos definidos anteriormente:

Tabla 2.2: Sinnimos de tipos de datos SQL

El lenguaje SQL bsicamente est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular la estructura e informacin almacenada en las bases de datos.

- Pg. 28 -

Anl. Mauricio Arvalo M.

2.2.1. Comandos Existen dos tipos de comandos SQL:

Los comandos DDL (Lenguaje de Definicin de Datos) que permiten crear, modificar, eliminar bases de datos, tablas, campos, ndices, vistas y todos los objetos que contiene una base de datos. Entre los comandos DDL tenemos:

Tabla 2.3: Comandos DDL

Los comandos DML (Lenguaje de Manipulacin de Datos) que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos, as como insertar, actualizar o eliminar informacin de la base de datos. Entre este tipo de comandos tenemos:

Tabla 2.4: Comandos DML

2.2.2. Clusulas Son condiciones de modificacin utilizadas para definir los datos, entre ellas tenemos:

- Pg. 29 -

Anl. Mauricio Arvalo M.

Tabla 2.5: Clusulas SQL

2.2.3. Operadores lgicos

Tabla 2.6: Operadores Lgicos SQL

2.2.4. Operadores de Comparacin

Tabla 2.7: Operadores de Comparacin

- Pg. 30 -

Anl. Mauricio Arvalo M.

2.2.5. Funciones de Agregado

Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se aplica a todo un grupo de registros.

Tabla 2.8: Funciones de Agregado

- Pg. 31 -

Anl. Mauricio Arvalo M.

CAPITULO III LICENCIAMIENTO DE SOFTWARE

3.1.

Licencias de Software
El derecho de autor o propiedad intelectual es un conjunto de normas y principios que

regulan los derechos morales y patrimoniales que la ley concede a los autores por el solo hecho de la creacin de una obra. La ley protege los derechos de los autores sobre todas las obras del ingenio de carcter creador, ya sean de ndole literaria, cientfica o artstica, cualesquiera sea su gnero, forma de expresin, mrito o destino. Entre todas estas obras del ingenio, se consideran tambin los programas de computacin, as como su documentacin tcnica y manuales de uso. La licencia de software es una especie de contrato, en donde se especifican todas las normas y clusulas que rigen el uso de un determinado programa informtico, principalmente se estipulan los alcances de uso, instalacin, reproduccin y la copia de estos productos. En el momento en que se decide descargar, instalar, copiar o utilizar un determinado software, implica que se aceptan todas las condiciones que se estipulan en el licenciamiento de dicho software. Licenciar un Software es el procedimiento de conceder a otra persona o entidad el derecho legal de usar un software con fines industriales, comerciales o personales de acuerdo
- Pg. 32 -

Anl. Mauricio Arvalo M.

a las clusulas que detalla la licencia.

Esta licencia se presenta como un documento

electrnico, en papel original o como un nmero de serie autorizado por el autor. Se debe tener claro el concepto de que el software libre no quiere decir que no sea comercial. El software comercial es software, libre o no, que es comercializado, es decir que las compaas que lo producen cobran dinero por el producto, por su distribucin o por su soporte.

3.2.

Software Libre
El Software Libre es un asunto de libertad, no de precio. Es conveniente no confundir el

software libre con el software gratuito, ya que este no cuesta nada pero no por esto se convierte en software libre debido a que este tipo de software no es una cuestin de precio, sino de libertad otorgada a los usuarios del software. Para tener una mejor claridad de este concepto se debe pensar en libre, como en libertad de expresin y no en algo que solamente es gratis, se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. En otras palabras, se refiere a cuatro libertades principales que se les otorga a los usuarios de este tipo de software: Libertad de usar o ejecutar el programa, con cualquier propsito. Libertad de estudiar cmo funciona el programa, y adaptarlo a las necesidades propias, por lo que el acceso al cdigo fuente es una condicin previa para dar esta libertad. Libertad de distribuir copias, con lo que se puede ayudar a otros usuarios interesados. Libertad de mejorar el programa original y hacer pblicas las mejoras a los dems, de modo que todos se beneficien. El Software libre, no significa realmente que no es comercial; un programa libre puede estar disponible para uso comercial, desarrollo comercial y distribucin comercial.
- Pg. 33 -

Anl. Mauricio Arvalo M.

Los trminos de Software Libre (Free Software) y recientemente de Software de fuentes abiertas (Open Source Software), se refieren al modelo de desarrollo y de distribucin del software desarrollado cooperativamente. En vez de que el cdigo del sistema o de cada uno de los programas sea un secreto celosamente guardado por la empresa que lo produce, ste es puesto a disposicin del pblico, para que lo puedan modificar, mejorar o corregir. Entre algunas de las ms importantes aplicaciones producidas por los equipos de desarrollo de Software Libre estn:

El sistema operativo Linux y sus diferentes versiones El servidor de Web Apache Los manejadores de bases de datos objeto-relacional como PostgreSQL y MySQL El navegador Mozilla Servidores de correo como Sendmail y Squirrel Mail Programas de cliente de correo electrnico como Sylpheed, GnuPG, Aspell El servidor de nombres de Dominio Bind El servidor proxy Squid Las suites de aplicaciones de escritorio OpenOffice, StarOffice, Abiword Software matemtico y cientfico como Scilabs, Maxima, Yacas, Sistema R Software de dibujo y diseo como QCad, Gimp, Dia El Entorno de Desarrollo Integrado (IDE) Eclipse y el proyecto Mono con varias herramientas de desarrollo para aplicaciones. Editores de texto de propsito general como Vim y Emacs Herramientas para diseo y desarrollo Web como PHP y Perl

3.2.1. Tipos de Licencias de Software Libre Debemos conocer que ciertos conceptos como que el Freeware es software que el usuario final puede bajar totalmente gratis de Internet; y la diferencia con el Open Source es que el autor siempre es dueo de los derechos, o sea que el usuario no puede realizar algo que

- Pg. 34 -

Anl. Mauricio Arvalo M.

no est expresamente autorizado por el autor del programa, como modificarlo o venderlo y no se obliga a la distribucin del cdigo fuente. El Shareware o software de evaluacin es software que se distribuye gratis y que el usuario puede utilizar durante algn tiempo; pero se requiere que despus de un tiempo de prueba el usuario pague por el software para continuar usando el programa. Un ejemplo de este tipo de software son los compresores WinRar y WinZip. Entre los tipos de licenciamiento para Open Source o software libre ms conocidos tenemos los siguientes: GNU GPL (General Public License): La licencia GPL se aplica al software de la FSF (Free Software Foundation) y el proyecto GNU otorga al usuario la libertad de compartir el software y realizar cambios en l. Dicho de otra forma, el usuario tiene derecho a usar el programa, modificarlo y distribuir las versiones modificadas pero no tiene permiso de realizar restricciones propias con respecto a la utilizacin de ese programa modificado. Adems, esta licencia expresamente excluye el concepto de la Garanta, as como la exclusin de la responsabilidad cdigo fuente original o modificado. GNU LGPL (Lesser GPL): Es una variacin de la licencia GPL que est destinada a ser utilizada bsicamente para las libreras. La licencia LGPL permite que obras libres sean unidas a obras no-libres o privativas. GNU FDL (Free Documentation): Consiste en el equivalente de la licencia GPL pero destinada a obras escritas y literarias, tales como manuales, libros as como otros documentos relacionados con el producto de software. Perl Artistic License (PAL): Destinada fundamentalmente para programas. Permite el uso y distribucin de la obra original sin restricciones, siempre y cuando se incluya la
- Pg. 35 -

para el autor por las versiones modificadas,

permitiendo la copia y distribucin de la obra siempre y cuando se acompae con el

Anl. Mauricio Arvalo M.

licencia original con sus debidas excepciones. Este tipo de licencia permite el cobro de cantidades razonables debindose incluir las instrucciones o manuales, el cdigo fuente y adems se permite que la obra libre sea agregada y utilizada conjuntamente con una obra privativa. BSD License: BSD (Berkeley Software Distribution) es una licencia de uso, copia, modificacin y distribucin corta; permite que la obra sea modificada y cerrada individualmente por un particular. Est diseada para salvaguardar la responsabilidad del autor, no la libertad de la obra. No obliga a la entrega del cdigo fuente ni a la redistribucin del mismo y el usuario tiene libertad ilimitada con respecto al software, ya que puede decidir incluso si redistribuirlo como software no libre.

3.3.

Software Propietario
Por lo general cuando una empresa productora de software distribuye un producto de

este tipo, solamente entrega al comprador una copia del programa ejecutable, junto con la autorizacin de ejecutar dicho programa en un nmero determinado de computadoras. En el contrato que suscriben ambas partes, comnmente denominado licencia del producto, queda expresado claramente que lo que el cliente adquiere es simplemente la facultad de utilizar dicho programa en una determinada cantidad de computadoras (dependiendo del monto que haya abonado). El software sigue siendo propiedad de la empresa productora del mismo y el usuario no est facultado a realizar ningn cambio. La correccin de errores, actualizaciones o agregado de nuevas funciones en un programa solamente puede hacerse si se dispone del cdigo fuente. Es claro que, al ser la empresa proveedora de software propietario la nica que dispone de dicho cdigo, solamente sta puede atender a los requerimientos de un cliente insatisfecho con el producto del cual ha adquirido una licencia de uso. Esto pone al usuario en una clara situacin de dependencia del proveedor producindose un monopolio con dicho proveedor.

- Pg. 36 -

Anl. Mauricio Arvalo M.

3.3.1. Tipos de Licencias de Software Propietario

El software propietario est protegido bajo los derechos de autor. Al comprar una licencia original de un producto de software, se est adquiriendo el derecho a utilizar ese producto de acuerdo a las reglas establecidas por su autor y por tratarse de un contrato, es necesario que el dueo de este software provea su consentimiento para que el mismo sea utilizado por un tercero. El contrato de licencia es la nica va legal por la cual el titular otorga este consentimiento y dicha licencia se documenta en el Acuerdo de Licencia del Usuario Final (EULA). Cada instalacin de software requiere una licencia que la respalde.

Existen distintos tipos de contratos de licencias para legalizar el software propietario, sin embargo, pueden identificarse 3 grandes grupos de licenciamiento: Habitualmente, el software original se presenta en cajas vistosas impresas en alta calidad, y dentro de ellas pueden encontrarse, entre otras cosas, la licencia de uso del software, los manuales de los productos y disquetes o CDs identificados con etiquetas preimpresas que indican el nombre del productor del software, su versin y su lenguaje. Otra forma muy comn de licenciamiento, es a travs de la preinstalacin del software en el disco duro al momento de adquirir la PC. Este tipo de licenciamiento se conoce como OEM (Original Equipment Manufacturing o Manufactura de Equipos Originales) y generalmente se instala con equipos nuevos. Las empresas productoras poseen planes de licenciamiento para grandes usuarios que no necesariamente incluyen la entrega fsica de paquetes de software, sino slo la licencia de uso de varias copias. Por lo general se las denomina licencias por volumen y este tipo de licenciamiento es una manera sencilla de comprar licencias de productos de software a un precio con un descuento segn el volumen adquirido. A continuacin se describen los tipos ms conocidos de licenciamiento de software propietario:
- Pg. 37 -

Anl. Mauricio Arvalo M.

LICENCIA Producto Empaquetado (caja)

CARACTERISTICAS Para pequeas empresas que necesitan 1 o 2 licencias o para usuarios domsticos. Para cualquier usuario que adquiere el software preinstalado en una PC nueva. Para empresas que quieran beneficiarse de un descuento por volumen a partir de 5 licencias. Tiene derechos de uso perpetuos.

Producto Preensamblado (OEM) OPEN LICENSE

SELECT LICENSE

Para empresas con ms de 250 PCs. Ofrece descuentos por volumen para cada grupo de productos separadamente. Tiene derechos de uso perpetuos. Para empresas con ms de 250 PCs que desean estandarizar toda su organizacin con dicho software. Los precios por volumen estn basados en pagos anuales. Tiene una duracin de 3 aos y derechos de uso perpetuos.

ENTERPRISE AGREEMENT (EA)

Tabla 3.1: Tipos de Licencias de Software propietario

- Pg. 38 -

Anl. Mauricio Arvalo M.

CAPITULO IV MY SQL

4.1.

Historia y Antecedentes

MySQL es un sistema de gestin de bases de datos relacionales, creado por la empresa sueca MySQL AB y licenciado bajo GPL (Licencia Pblica General). Su diseo le permite soportar una gran carga de forma rpida y muy eficiente. MySQL surgi por la necesidad que vieron sus creadores de tener un gestor de bases de datos rpido y sencillo, ya que los SGBDs en general no eran lo bastante flexibles ni veloces para lo que necesitaban, por lo que tuvieron que desarrollar nuevas funciones. De todo esto surgi una nueva interfaz SQL (con cdigo ms portable) desarrollada en lenguaje C y con apariencia similar a los nombres y funciones de muchos de sus programas. Su principal objetivo de diseo fue la velocidad, por ello en sus primeras versiones se suprimieron algunas caractersticas de otros SGBDs (Sistemas de Gestion de Base de Datos), como el control de transacciones y las subconsultas. Consume pocos recursos y se distribuye bajo licencia GPL.
- Pg. 39 -

Anl. Mauricio Arvalo M.

Segn sus autores en un fragmento del manual MySQL, comentan que no se sabe con certeza de donde proviene el nombre pero las libreras han llevado el prefijo 'my' durante los diez ltimos aos, adems de que la hija de uno de los desarrolladores, Monty Widenius, se llama My6. El nombre de la mascota o delfn de MySQL es "Sakila", que fue elegido por los fundadores de MySQL AB. Su primera versin publicada bajo licencia GPL fue la 3.22 por el ao de 1997, luego han surgido las que hoy en da son versiones estables y que se pueden descargar desde su sitio web (www.mysql.com) como la 3.23, 4.0 y 4.1, la 5.0 publicada en el ao 2005 y la 5.1 publicada el 2006. Se est desarrollando actualmente la versin 5.2 para publicarse en a finales del 2006 o inicios del 2007. La versin en la que se hicieron las respectivas pruebas y los ejemplos que se muestran en la presente monografa es la 5.0.24 para el sistema operativo Microsoft Windows XP. Aunque MySQL es software libre y gratuito, MySQL AB distribuye las respectivas versiones comerciales de MySQL, que se diferencian de las versiones libres en el soporte tcnico y las actualizaciones que se ofrecen. Este gestor de bases de datos es probablemente el gestor ms usado en el mundo del software libre, debido sobretodo a su gran rapidez y desempeo, su fcil instalacin y configuracin adems de la facilidad de uso mediante herramientas que permiten su operacin a travs de diversos lenguajes de programacin.

4.2.

Caractersticas y Funcionalidad del Servidor MySQL


MySQL es actualmente el servidor de base de datos ms popular para los desarrollos

web. Es muy rpido y slido, siendo muchos los administradores que lo instalan, y sin embargo pocos los que conocen todo su potencial y caractersticas que lo hacen ser una excelente alternativa como un servidor de bases de datos por su desempeo rpido, estable, ptimo, confiable y seguro.

Tomado de MySQL Manual (www.netpecos.org/docs/mysql_postgres/b164.html#MYSQL) - Pg. 40 -

Anl. Mauricio Arvalo M.

En base a lo recopilado de la documentacin de sus desarrolladores7, a continuacin resalto las que considero las principales caractersticas de MySQL clasificadas segn su funcionalidad:

- Interioridades y portabilidad

MySQL est escrito en C y C++. Trabaja bajo diferentes plataformas: AIX 4x 5x, Digital Unix 4x, FreeBSD 2x 3x 4x, HP-UX 10.20 11x, Linux 2x, Mac OS, NetBSD, Novell NetWare 6.0, OpenBSD 2.5, OS/2, SCO OpenServer, SCO UnixWare 7.1.x, SGI Irix 6.x, Solaris 2.5, SunOS 4.x, Tru64 Unix y Windows 9x, Me, NT, 2000, XP, 2003. Dispone de APIs (Interfaz de Programacin para Aplicaciones) para C, C++, Eiffel, Java, Perl, PHP, Pitn, etc. Tiene velocidad cuando se manipula datos con el tipo de tabla Myisam; tambin es rpido manejando el uso de joins y procesos de optimizacin. Brinda un sistema de almacenamiento transaccional con tablas tipo InnoDB y no transaccional con tablas tipo MyISAM.

- Sentencias y funciones

Tiene soporte completo para operadores y funciones en las clusulas de consultas de los estndares SQL como SELECT y WHERE. Tambin soporta las clusulas GROUP BY y ORDER BY as como las funciones de agrupacin (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX(), MIN()). Tiene soporte para LEFT OUTER JOIN y RIGHT OUTER JOIN cumpliendo con los estndares de sintaxis SQL. Soporte para alias en tablas y columnas como lo requiere el estndar SQL. DELETE, INSERT, REPLACE, y UPDATE devuelven siempre el nmero de filas que han cambiado.

Ms informacin sobre las caractersticas tcnicas en el manual de referencia de MySQL: http://dev.mysql.com/doc/refman/5.0/es/ - Pg. 41 -

Anl. Mauricio Arvalo M.

Se puede mezclar tablas de distintas bases de datos en la misma consulta (a partir de la versin MySQL 3.22). Desde la versin 4.0 de My SQL se permite realizar la UNION de consultas mediante la clusula UNION.

- Seguridad

MySQL posee un sistema de privilegios y contraseas que es flexible y seguro ya que todo el trfico de contraseas est encriptado cuando se conecta con un servidor.

- Escalabilidad y lmites

Se usa MySQL Server con grandes bases de datos que contienen hasta 50 millones de registros y 60.000 tablas que trabajan de manera estable. Se permiten hasta 64 ndices por tabla (32 antes de la versin MySQL 4.1.2). Cada ndice o clave puede consistir desde 1 hasta 16 columnas.

- Conectividad

Los clientes se pueden conectar con el servidor MySQL usando sockets TCP/IP en cualquier plataforma. La interfaz para el conector ODBC (MyODBC) proporciona a MySQL el soporte para programas clientes que usen conexiones ODBC (Open Database Connectivity) y se lo puede descargar desde el sitio web de MySQL (http://dev.mysql.com/downloads). Los clientes pueden ejecutarse en Windows, Unix o Linux; el cdigo fuente de MyODBC est disponible y todas las funciones del estndar ODBC 3.51 estn soportadas.

- Localizacin

El servidor puede proporcionar mensajes de error a los clientes en distintos idomas.

- Pg. 42 -

Anl. Mauricio Arvalo M.

Tiene soporte completo para distintos conjuntos de caracteres, incluyendo latin1 (ISO8859-1), german, big5, ujis, etc. El soporte para Unicode tambin est disponible. Todas las comparaciones para columnas normales de cadenas de caracteres son caseinsensitive, es decir no distinguen maysculas y minsculas.

- Clientes y herramientas

MySQL Server viene con las aplicaciones mysqlcheck y myisamchk que realizan operaciones como chequear, optimizar, y reparar tablas de tipo InnoDB y de tipo MyISAM respectivamente. Incluye las aplicaciones mysqlhotcopy y el mysqldump para crear copias de seguridad de la base de datos. Mysqladmin es una aplicacin cliente para realizar operaciones administrativas, se usa para comprobar la configuracin y el estado actual del servidor; tambin para crear y borrar bases de datos, entre otras finalidades. Existen herramientas en modo consola como el Cliente MySQL o de entorno grfico con Interfaz Grfica de Usuario (GUI) como MySQL Front, MySQL Administrador, MyODBC, phpMyAdmin; las mismas que nos son muy tiles facilitndonos la administracin del servidor MySQL y sus bases de datos con un entorno grfico para comodidad del usuario. As tambin se pone en conocimiento buenas herramientas de modelado de bases de datos MySQL como DeZings y DBDesigner. MySQL Query Browser es una herramienta para crear, ejecutar y optimizar consultas; tambin existe una herramienta llamada MySQL Migration Toolkit para migrar bases de datos de otros sistemas manejadores de Bases de Datos hacia MySQL.

Adems de las caractersticas mencionadas anteriormente, vale la pena realizar a continuacin un anlisis de ciertas caractersticas que considero importantes y destacadas; muchas de estas caractersticas8 se han venido incoorporado en las ltimas versiones de MySQL, algunas de ellas se muestran en la tabla4.1:

Se puede revisar ms informacin en http://dev.mysql.com/doc/refman/5.0/es/roadmap.html - Pg. 43 -

Anl. Mauricio Arvalo M.

Caracterstica Clusula Union Subconsultas Procedimientos Almacenados Triggers o Disparadores Claves forneas para tablas MyISAM

Serie (Versin) MySQL desde que se incluye 4.0 4.1 5.0 5.0 y 5.1 5.2 (ya est implementado para tablas InnoDB)

Tabla 4.1: Historia de las caractersticas de MySQL

- Servidor Incrustrado La biblioteca del Servidor incrustado libmysqld permite que MySQL Server pueda trabajar con una gran cantidad de dominios de aplicaciones. Usando esta biblioteca, los desarrolladores pueden aadir MySQL Server en varias aplicaciones y dispositivos electrnicos, donde el usuario final no tiene conocimiento que hay una base de datos incrustrada. La biblioteca incrustada MySSQL usa la misma interfaz que la biblioteca cliente normal, por lo que es conveniente y fcil de usar.

- Disparadores o Triggers Otra de las caractersticas que presenta MySQL es la del soporte bsico para disparadores (triggers). Un disparador es un objeto programado de una base de datos que se asocia a una tabla y se activa cuando ocurre un evento en particular para dicha tabla. Algunos usos para los disparadores son verificar valores a ser insertados o llevar a cabo clculos sobre valores involucrados en una actualizacin. Un disparador se asocia con una tabla y se define para que se active automticamente al ocurrir una sentencia INSERT, DELETE, o UPDATE sobre dicha tabla; adems la activacin puede ocurrir antes o despus de la sentencia. Para crear o eliminar un disparador se emplean las sentencias CREATE TRIGGER y DROP TRIGGER. La sintaxis para crear un disparador es la siguiente:

- Pg. 44 -

Anl. Mauricio Arvalo M. CREATE TRIGGER nombre_disp momento_disp evento_disp ON nombre_tabla FOR EACH ROW sentencia_disp

Por ejemplo, las siguientes sentencias crean una tabla y un disparador para sentencias INSERT dentro de la tabla. El disparador suma en una variable sum los valores insertados en una de las columnas de la tabla. Para utilizar el disparador, se debe establecer el valor de la variable acumuladora a cero, ejecutar una sentencia INSERT, y luego obtener el valor que presenta la variable:
mysql> CREATE TABLE prueba_suma (sum_num INT, monto DECIMAL(10,2)); mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON prueba_suma -> FOR EACH ROW SET @sum = @sum + NEW.monto; mysql> SET @sum = 0; mysql>INSERT INTO account VALUES(137,14.98),(141,1937.50),(97,-100.00); mysql> SELECT @sum AS 'Total monto Insertado'; +-----------------------+ | Total monto Insertado | +-----------------------+ | 1852.48 | +-----------------------+

No se pueden tener dos disparadores para una misma tabla que sean activados por el mismo evento. Por ejemplo, no se pueden definir dos BEFORE INSERT o dos AFTER UPDATE en una misma tabla; sin embargo esta no es una gran limitacin, porque es posible definir un disparador que ejecute mltiples sentencias empleando el constructor de sentencias compuestas BEGIN...END luego de FOR EACH ROW. Dentro del bloque BEGIN, tambin pueden utilizarse otras sintaxis permitidas en rutinas almacenadas, tales como condicionales y bucles. Cuando se crea un disparador que ejecuta sentencias mltiples, se hace necesario redefinir el delimitador de sentencias (con el comando delimiter) si el disparador se ingresa a travs del programa mysql, de forma que se pueda utilizar el caracter ';' dentro de la definicin del disparador. Ejemplo:
mysql> mysql> -> -> -> -> -> -> delimiter // CREATE TRIGGER upd_check BEFORE UPDATE ON prueba_suma FOR EACH ROW BEGIN IF NEW.monto < 0 THEN SET NEW.monto = 0; ELSEIF NEW.monto > 100 THEN SET NEW.monto = 100; - Pg. 45 -

Anl. Mauricio Arvalo M. -> END IF; -> END;// mysql> delimiter ;

Las palabras claves OLD y NEW permiten acceder a columnas en los registros afectados por un disparador. En un disparador para INSERT, solamente puede utilizarse NEW.nom_col ya que no hay una versin anterior del registro, mientras que en un disparador para DELETE slo puede emplearse OLD.nom_col, porque no hay un nuevo registro. En un disparador para UPDATE se puede emplear OLD.nom_col para referirse a las columnas de un registro antes de que sea actualizado, y NEW.nom_col para referirse a las columnas del registro luego de actualizarlo. Se puede crear un trigger que ejecute varias operaciones al activarse un evento (INSERT, DELETE Y UPDATE) que acte sobre una tabla. En el ejemplo creado a continuacin se han creado 4 tablas y se crea un trigger que se dispare cuando ocurra un evento INSERT en la tabla test1 y que ejecuta 3 operaciones en las otras tablas:
CREATE CREATE CREATE CREATE TABLE TABLE TABLE TABLE test1(a1 test2(a2 test3(a3 test4(a4 b4 INT); INT); INT NOT NULL AUTO_INCREMENT PRIMARY KEY); INT NOT NULL AUTO_INCREMENT PRIMARY KEY, INT DEFAULT 0);

DELIMITER // CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END // DELIMITER;

- MySQL Cluster Una caracterstica que incorporan las ltimas versiones de MySQL es el MySQL Cluster, una versin de alta disponibilidad y alta redundancia de MySQL adaptada para el entorno de computacin distribuida. Se usa el motor de almacenamiento NDB Cluster para permitir la ejecucin e interaccin de varios servidores MySQL en un cluster. Este motor de almacenamiento est disponible en las distribuciones de MySQL 5.0, en los paquetes compatibles con las distribuciones Linux ms modernas.
- Pg. 46 -

Anl. Mauricio Arvalo M.

Figura 4.1: Estructura del MySQL Clulster

MySQL Cluster integra el servidor MySQL estndar con un motor de almacenamiento clusterizado en memoria llamado NDB (genera tablas de tipo NDB). Como se muestra en la figura 4.1, un MySQL Cluster consiste en un conjunto de mquinas; cada una ejecuta un nmero de procesos incluyendo varios servidores MySQL, nodos de datos para NDB Cluster, servidores de administracin, y programas especializados de acceso a datos. Todos estos programas funcionan juntos para formar un MySQL Cluster. Cuando se almacenan los datos en el motor NDB Cluster, las tablas se almacenan en los nodos de datos,
- Pg. 47 -

Anl. Mauricio Arvalo M.

utilizando as la tecnologa de replicacin sncrona. Tales tablas son directamente accesibles desde todos los otros servidores MySQL en el cluster. Al llevar MySQL Cluster al mundo Open Source, MySQL propociona tratamiento de datos clusterizados con alta disponibilidad, rendimiento y escalabilidad.

- Replicacin Las caractersticas de MySQL 5.X soportan replicacin asncrona unidireccional en la que un servidor acta como el maestro y uno o ms actan como esclavos, que es lo que se diferencia con la replicacin sncrona, la misma que se usa en MySQL Cluster. Se utilizan logs que sirven como registros de actualizaciones para enviarlos a todos los servidores esclavos. Cuando un escalvo se conecta al maestro, informa al mismo de la posicin hasta la que el esclavo ha ledo los logs en la ltima actualizacin satisfactoria; el esclavo recibe cualquier actualizacin que hayan tenido los registros desde entonces, se bloquea y espera para que el maestro le enve nuevas actualizaciones. Se debe tener en cuenta que cuando se usa esta replicacin, todas las actualizaciones de las tablas que se replican deben realizarse en el servidor maestro. La replicacin unidireccional tiene beneficios para mejorar la robustez y administracin del sistema.

- Subconsultas Una subconsulta es un comando de consulta SELECT anidado dentro de otro comando; se permiten desde la versin 4.1. MySQL 5.0 soporta todas las formas de subconsultas y operaciones que requiere el estndar SQL, as como algunas caractersticas especficas de MySQL. A continuacin se muestra un ejemplo de subconsulta:
SELECT * FROM t1 WHERE columna1 = (SELECT columna1 FROM t2);

En este ejemplo, la sentencia SELECT * FROM t1... es la consulta externa (o comando externo), y SELECT column1 FROM t2 es la subconsulta. Una subconsulta est
- Pg. 48 -

Anl. Mauricio Arvalo M.

anidada dentro de la consulta exterior, y de hecho, es posible anidar subconsultas dentro de otras subconsultas hasta una profundidad considerable. Una subconsulta puede retornar un valor nico (escalar), un registro, una columna o una tabla; estas se llaman consultas de escalar, columna, registro y tabla. Hay pocas restricciones sobre los tipos de comandos en que pueden usarse las subconsultas. Una subconsulta puede contener cualquiera de las palabras claves o clusulas que puede contener una sentencia SELECT ordinaria: DISTINCT, GROUP BY, ORDER BY, LIMIT, JOINS, restringir registros con WHERE, sentencias UNION, comentarios, funciones, etc. Una restriccin es que el comando exterior de una subconsulta debe ser: SELECT, INSERT, UPDATE, DELETE, SET. Otra restriccin es que actualmente no se puede modificar una tabla y seleccionar de la misma tabla los valores en la subconsulta. Las subconsultas tambin se presentan en la clusula FROM de un comando SELECT, con la siguente sintaxis:
SELECT... FROM (subconsulta) [AS] nombre ...

La clusula [AS] nombre es obligatoria, ya que cada tabla en la clusula FROM debe tener un nombre. Los nombres de columnas usados dentro de la subconsulta se reconocen en la consulta exterior como si la subconsulta se tratara de cualquier tabla en la clusula FROM.

- Procedimientos y Funciones almacenadas MySQL ofrece soporte para procedimientos y funciones almacenadas, que son rutinas que los procesa el servidor MySQL, en los que se puede insertar cdigo para ejecutar bucles o condiciones que incluyen sentencias SQL para que se ejecuten mediante llamadas (CALL) cuando se las necesite. Los procedimientos almacenados y las funciones se crean con los comandos CREATE PROCEDURE y CREATE FUNCTION.
CREATE PROCEDURE sp_name ([parametros[,...]]) [caracteristicas ...] cuerpo_rutina

- Pg. 49 -

Anl. Mauricio Arvalo M. CREATE FUNCTION sp_name ([parametros[,...]]) RETURNS tipo [caracteristicas ...] cuerpo_rutina

Donde: parametros: [ IN | OUT | INOUT ] param_nombre tipo tipo: Es cualquier tipo de dato vlido de MySQL caracteristicas: LANGUAGE SQL | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | COMMENT 'string' cuerpo_rutina: Son procedimientos almacenados o comandos SQL vlidos Un procedimiento slo puede pasar valores usando variables de salida (OUT). Una funcin puede llamarse desde dentro de un comando como cualquier otra funcin (invocando el nombre de la funcin) y puede retornar un valor escalar o nico. Desde MySQL 5.0.1, los procedimientos almacenados se asocian con una base de datos y se pueden calificar los nombres de rutinas con el nombre de la base de datos; por ejemplo, para invocar procedimientos almacenados p o funciones f que se asocian con la base de datos prueba, se los puede invocar con CALL prueba.p() o prueba.f(). Cuando se borra una base de datos, todos los procedimientos almacenados asociados con ella tambin se borrarn.

- Modos SQL A partir de la versin 5.0.2 de MySQL, estn disponibles los modos SQL que son opciones que nos permiten proporcionar un mayor control sobre cmo aceptar valores. Los modos definen qu sintaxis SQL debe soportar MySQL y que clase de chequeos de validacin de datos debe realizar. Esto hace ms fcil de usar MySQL en distintos entornos y usar MySQL junto con otros servidores de bases de datos.

- Pg. 50 -

Anl. Mauricio Arvalo M.

MySQL nos permite trabajar con tablas transaccionales, que permiten realizar un control de transacciones, manteniendo y asegurando de esta manera la integridad de los datos pero MySQL tambin nos da la opcin de trabajar con tablas no transaccionales que no permiten realizar un control transaccional. Es por ello que las restricciones son algo distintas en MySQL respecto a otras bases de datos. Debemos tratar el caso en el que se insertan o actualizan muchos registros en una tabla no transaccional en la que los cambios no pueden deshacerse cuando ocurre un error. La filosofa bsica es que MySQL Server trata de producir un error para cualquier cosa que detecte mientras chequea un comando que va a ejecutarse, y las opciones que MySQL nos ofrece cuando ocurre un error en una transaccin son parar el comando en medio de la ejecucin o recuperarse lo mejor posible del problema y continuar. Por defecto, en tablas no transaccionales como MyISAM, el servidor utiliza esta ltima opcin. Esto significa, que el servidor puede cambiar algunos valores ilegales por el valor legal ms prximo. En este modo, cuando se inserta un valor incorrecto en una columna, MySQL cambia el valor al mejor valor posible para la columna en lugar de producir un error. Los modos SQL u opciones con las que MySQL nos permite realizar estas operaciones son STRICT_TRANS_TABLES y STRICT_ALL_TABLES. Para tablas no transaccionales como MyISAM, si un valor incorrecto se encuentra en el primer registro a insertar o actualizar, el comando se aborta y la tabla contina igual. Si el comando inserta o modifica varios registros y el valor incorrecto aparece en el segundo o posteriores registros, el resultado depende de cal es el modo estricto que est habilitado: Para STRICT_ALL_TABLES, MySQL devuelve un error e ignora el resto de los registros. Sin embargo, en este caso los primeros registros se insertan o actualizan y esto significa que puede producirse una actualizacin parcial, que puede ser no deseada. Para STRICT_TRANS_TABLES, MySQL convierte los valores invlidos en el valor vlido ms prximo para la columna e inserta el nuevo valor. En este caso MySQL genera una advertencia en lugar de un error y contina procesando el comando. Usando estas opciones, se puede configurar MySQL Server para actuar en un modo ms tradicional como otros servidores de bases de datos que rechazan datos incorrectos. Los
- Pg. 51 -

Anl. Mauricio Arvalo M.

modos SQL se pueden configurar cuando inicia la aplicacin cliente mysql cambiando la variable sql_mode como se muestra a continuacin:
--sql-mode="modo_SQL"

El valor puede dejarse en blanco (--sql-mode="") si se desea resetearlo. En MySQL 5.0, tambin se puede cambiar el modo SQL tras el tiempo de arranque cambiando la variable sql_mode usando el comando
SET [SESSION|GLOBAL] sql_mode="modo_SQL"

Asignar la variable GLOBAL afecta a las operaciones de todos los clientes que se conecten a partir de entonces; en cambio, asignar la variable SESSION afecta slo al cliente actual. Cualquier cliente puede cambiar el valor de la variable sql_mode en su sesin en cualquier momento.

- Utilizacin de variables de usuario Se pueden emplear variables de usuario de MySQL con el smbolo de @ para retener resultados sin necesidad de almacenarlos en variables del lado del cliente. Por ejemplo, para encontrar los artculos con el precio ms alto y el ms bajo de una tabla compras se puede hacer lo siguiente:
mysql> SELECT @min_precio:=MIN(precio),@max_precio:=MAX(precio) FROM compras; mysql> SELECT * FROM compras WHERE precio=@min_precio OR precio=@max_precio; +---------+-------+ | articulo| precio| +---------+-------+ | 0003 | 1.25 | | 0004 | 19.95 | +---------+-------+

- Control de Transacciones en tablas InnoDB MySQL permite el control transaccional en las operaciones SQL que afecten a las tablas de tipo InnoDB para brindar mayor seguridad e integridad en los datos. De forma
- Pg. 52 -

Anl. Mauricio Arvalo M.

predeterminada, cada cliente que se conecta al servidor MySQL comienza con el modo de autocommit habilitado, lo cual automticamente confirma (commit) o almacena la actualizacin en disco de cada sentencia SQL ejecutada en el instante de su ejecucin. Para utilizar transacciones de mltiples sentencias se puede deshabilitar el modo autocommit con la sentencia SQL SET AUTOCOMMIT = 0 y emplear COMMIT y ROLLBACK para confirmar o cancelar una transaccin. Tras deshabilitar el modo autocommit poniendo la variable AUTOCOMMIT a cero, se debe usar COMMIT para almacenar los cambios en disco o ROLLBACK si se quiere ignorar los cambios hechos desde el comienzo de la transaccin. Si se quiere deshabilitar el modo autocommit slo para una serie nica de comandos, se usa el comando START TRANSACTION o sus alias BEGIN o BEGIN WORK como se muestra a continuacin:
START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT;

Con START TRANSACTION, autocommit permanece deshabilitado hasta el final de la transaccin donde est COMMIT o ROLLBACK; entonces el modo autocommit vuelve a su estado previo. El siguiente ejemplo muestra dos transacciones, la primera se confirma con BEGIN y COMMIT mientras la segunda se cancela con el comando ROLLBACK:
mysql> CREATE TABLE CLIENTE (A INT, B CHAR (20)) -> ENGINE=InnoDB; Query OK, 0 rows affected (0.00 sec) mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO CLIENTE VALUES (10, 'Pedro'); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.00 sec) mysql> SET AUTOCOMMIT=0; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO CLIENTE VALUES (15, 'Juan'); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM CLIENTE;

- Pg. 53 -

Anl. Mauricio Arvalo M. +------+--------+ | A | B | +------+--------+ | 10 | Pedro | +------+--------+ 1 row in set (0.00 sec)

Desde MySQL 5.0, las tablas de tipo InnoDB soportan los comandos SQL para el control de transacciones SAVEPOINT y ROLLBACK TO SAVEPOINT; su sintaxis es:
SAVEPOINT identificador ROLLBACK TO SAVEPOINT identificador

El comando SAVEPOINT crea un punto dentro de una transaccin con un nombre (identificador). El comando ROLLBACK TO SAVEPOINT deshace una transaccin hasta el punto nombrado. Todos los puntos de la transaccin actual se borran si se ejecuta un comando COMMIT o un ROLLBACK que no nombre ningn punto. Suponiendo que, como en el ejemplo dado anteriormente, se est trabajando por defecto con el motor de base de datos que crea por defecto tablas de tipo MyISAM, se debe especificar la opcin ENGINE = InnoDB o TYPE = InnoDB en la sentencia SQL de creacin de tabla para crearla como tipo InnoDB como se muestra a continuacin:
CREATE TABLE CLIENTE (a INT, b CHAR (20)) ENGINE=InnoDB; CREATE TABLE CLIENTE (a INT, b CHAR (20)) TYPE=InnoDB;

- Pasar tablas MyISAM a InnoDB Si se desea que todas las tablas que no sean de sistema se creen como tablas InnoDB, simplemente debe agregarse la lnea default-table-type=innodb a la seccin [mysqld] del fichero my.cnf9 o my.ini. Cabe mencionar que no se deben convertir las tablas del sistema en la base de datos Mysql (por ejemplo, user o host) al tipo InnoDB ya que las tablas del sistema siempre son del tipo MyISAM.

Este archivo de configuracin de MySQL se encuentra ubicado en C:\Archivos de programa\MySQL\MySQL Server 5.0 en Microsoft Windows o en el directorio - Pg. 54 -

Anl. Mauricio Arvalo M.

Para cambiar una tabla al motor InnoDB se puede alterar el motor de almacenamiento en la tabla o, hacer las inserciones directamente en la nueva tabla InnoDB con las mismas definiciones que se tienen en las columnas de la tabla de tipo MyISAM. Es decir, podramos utilizar la sentencia ALTER TABLE... ENGINE=INNODB para alterar el motor de almacenamiento, o crear una nueva tabla InnoDB vaca con idnticas definiciones e insertar las filas con la sentencia INSERT, como se muestra a continuacin:
INSERT INTO nuevatabla SELECT * FROM viejatabla WHERE clave > valor1 AND clave <= valor2;

- Conversiones de Tipos de Datos Las funciones CAST() y CONVERT() pueden ser usadas para tomar un valor de un tipo y producir un valor de otro tipo. Sin embargo, el tipo de dato internamente no cambia en la estructura de la tabla. Su sintaxis es la siguiente:
CAST(expr AS tipo) CONVERT(expr,tipo) CONVERT(expr USING transcoding_name)

Donde tipo es el nuevo tipo de dato asignado al valor de expr. conjuntos de caracteres, as se muestran los siguientes ejemplos:
SELECT CONVERT('abc' USING utf8); SELECT (CONVERT(coltipo1 USING latin1))as coltipo2 FROM tabla1;

La funcin

CONVERT() junto con la palabra USING es usado para convertir datos entre distintos

- El Diccionario de Datos (INFORMATION_SCHEMA ) La base de datos de informacin INFORMATION_SCHEMA est disponible en MySQL 5.0.2 y versiones posteriores, proporciona un acceso a los metadatos de la base de datos. Los Metadatos son datos acerca de los datos, tales como el nombre de la base de datos o tabla, el tipo de datos de una columna, o los permisos de acceso. Otros trminos que a veces se usan para esta informacin son diccionario de datos o catlogo del sistema.

- Pg. 55 -

Anl. Mauricio Arvalo M.

INFORMATION_SCHEMA es la base de datos de informacin, que almacena informacin acerca de todas las otras bases de datos que mantiene el servidor MySQL . Dentro de INFORMATION_SCHEMA hay varias tablas de slo lectura, que realidad son vistas, no tablas, as que no se puede ver ningn fichero asociado con ellas. Cada usuario de MySQL tiene derecho a acceder a estas tablas, pero slo a los registros que corresponden a los objetos a los que tiene permiso de acceso. En el siguiente ejemplo, el comando pide una lista de todas las tablas en la base de datos db5, en orden alfabtico inverso y mostrando tres informaciones: el nombre de la tabla, su tipo y su motor.
mysql> -> -> -> SELECT table_name, table_type, engine FROM information_schema.tables WHERE table_schema = 'db5' ORDER BY table_name DESC;

+------------+------------+--------+ | table_name | table_type | engine | +------------+------------+--------+ | v56 | VIEW | NULL | | v3 | VIEW | NULL | | v2 | VIEW | NULL | | v | VIEW | NULL | | tables | BASE TABLE | MyISAM | | t7 | BASE TABLE | MyISAM | | t3 | BASE TABLE | MyISAM | | t2 | BASE TABLE | MyISAM | | t | BASE TABLE | MyISAM | | pk | BASE TABLE | InnoDB | | loop | BASE TABLE | MyISAM | | kurs | BASE TABLE | MyISAM | | k | BASE TABLE | MyISAM | | into | BASE TABLE | MyISAM | | goto | BASE TABLE | MyISAM | | fk2 | BASE TABLE | InnoDB | | fk | BASE TABLE | InnoDB | +------------+------------+--------+ 17 rows in set (0.01 sec)

4.3.

Estructura del Servidor MySQL


En el caso de MySQL, el servidor es el que realiza todas las operaciones sobre las

bases de datos, en realidad se comporta como un interfaz entre las bases de datos y nuestras

- Pg. 56 -

Anl. Mauricio Arvalo M.

aplicaciones. Las aplicaciones se comunicarn con el servidor mediante programas (clientes) para leer o actualizar la base de datos:

Figura 4.2: Estructura del Servidor MySQL

El diseo de MySQL Server es multicapa, con mdulos independientes, lo cual hace que su desempeo sea ptimo, rpido, confiable y seguro. Algunos de los ltimos mdulos creados para MySQL se listan a continuacin con una indicacin del nivel de pruebas o testeo en el que se encuentran: Replicacin (Estable): Hay grandes grupos de servidores usando replicacin en produccin, con muy buenos resultados. caractersticas de replicacin en MySQL 5.x. Tablas InnoDB (Estable): El motor de almacenamiento transaccional InnoDB es estable y usado en grandes sistemas de produccin con alta carga de trabajo. MyODBC 3.51 (Estable): MyODBC 3.51 usa ODBC (Open DataBase Connectivity) 3.51 y es usado ampliamente para la realizar las conexiones a bases de datos. Se sigue trabajando para mejorar las

MySQL utiliza los comandos, clusulas, tipos de datos, operadores y funciones que cumplen con los estndares ANSI e ISO de SQL/92; aunque como la mayora de gestores de bases de datos posee algunos comandos, clusulas y funciones extendidas, es decir, implementadas por los propios desarrolladores de MySQL.

- Pg. 57 -

Anl. Mauricio Arvalo M.

4.3.1. Tipos de Tablas El servidor MySQL cuenta con una variedad de tipos de tablas para el almacenamiento de la informacin, dependiendo de las necesidades y cantidades de informacin que una aplicacin puede tener, se elige el tipo de tabla con la que ms se acople. En una sola base de datos es posible tener diferentes tipos de tablas y existe la posibilidad de variar el tipo de tabla despus de ser creada. La estructura de la tabla que se crea, es guardada en un archivo con el nombre de la tabla y extensin .FRM mientras que el archivo de ndices en MySQL tiene la extensin .MYI. Actualmente en MySQL existen 16 tipos de tablas; a continuacin se mencionan las ms representativas: MYISAM: Es el tipo de tabla no transaccional por defecto en MySQL desde la versin 3.23. y hasta la versin 4; es optimizada para sistemas operativos de 64 bits. En este tipo de tabla los datos se almacenan en un formato independiente, con lo que se pueden copiar tablas de una mquina a otra de distinta plataforma. Tiene la posibilidad de indexar los campos BLOB y TEXT. Su mayor caracterstica es la velocidad y toda la informacin a cerca de una tabla de este tipo, queda almacenada en un archivo con la extensin .MYD. INNODB: Es el tipo de tabla transaccional por defecto desde de la versin 4 en adelante. Este tipo de tabla maneja transacciones seguras mediante comandos como begin trans, commit, rollback. Son menos rpidas y ocupan ms memoria que las tablas Myisam, pero a cambio ofrecen mayor seguridad frente a fallos durante una transaccin en la base de datos y soportan completamente restricciones de claves primarias, nicas y forneas. La informacin de esta tabla queda almacenada en un archivo con la extensin .IDB. MEMORY: La estructura de estas tablas son almacenadas en disco en un archivo con extensin .FRM usando por defecto indexacin tipo hash. Estas tablas pueden ser muy rpidas y muy utilizadas como tablas temporales. Sin embargo, cuando el servidor Mysql Server es reiniciado, toda la informacin de las tablas se pierde quedando

- Pg. 58 -

Anl. Mauricio Arvalo M.

solamente la estructura. Este tipo de tablas no soportan las columnas de tipo blob o Text. MERGE: Tambin conocida como MRG_ISAM, ms que un tipo de tabla es la posibilidad de dividir tablas MYISAM de gran tamao (solo es til si son verdaderamente de gran tamao) y hacer consultas sobre todas ellas con mayor rapidez. Las tablas deben ser de tipo MyIsam e idnticas en su estructura, luego se crea la tabla tipo MERGE haciendo relacin a las tablas creadas; esta tabla queda almacenada en un archivo con la extensin .MRG. NDBCLUSTER: Este tipo de tabla se utiliza para el manejo de MySql Cluster en

Mysql Server. Se implementa con pruebas desde la versin MySQL 5.0. CSV: Este tipo de tabla fue adicionada desde la versin de MySQL 4.1.4 y almacena la informacin en un archivo de texto separado por comas. Cuando se crea una tabla de tipo Csv, se crean dos archivos, uno con extensin .FRM donde almacena la estructura de la tabla y otro .CSV donde reposa la informacin. ARCHIVE: Este tipo de tabla fue adicionada a partir de la versin 4.1.3 y es usada para almacenar informacin sin ningn tipo de indexacin. Cuando se crea una tabla de este tipo, MySQL crea un archivo con la extensin .FRM donde se almacena la estructura de la tabla y otros archivos con la extensin .ARZ, .ARM y .ARN. Este tipo de tabla soporta nicamente los comandos insert y select.

En las ltimas versiones, el servidor MySQL con las tablas de tipo MyISAM puede almacenar hasta 65 terabytes mientas que con tablas tipo Innodb la capacidad mxima de almacenamiento es de 64 terabytes. Cuando se trabaja con altos volmenes de informacin es importante tener presente el lmite en tamao para un archivo que soporta el sistema operativo. Por lo tanto, el tamao efectivo mximo para las bases de datos en MySQL usualmente los determinan los lmites de tamao de ficheros del sistema operativo y no los lmites internos de MySQL.

- Pg. 59 -

Anl. Mauricio Arvalo M.

En la siguiente tabla se muestra el lmite mximo de tamao que soporta un archivo para algunos sistemas operativos:
Sistema operativo Linux 2.4 Solaris 9/10 NetWare w/NSS Win32 w/ FAT/FAT32 Win32 w/ NTFS MacOS X w/ HFS+ Limitaciones en el tamao del archivo (Con sistema de archivo ext3 ) 4TB 16TB 8TB 2GB/4GB 2TB (con posibilidad de crecer) 2TB Tabla 4.2: Lmites de archivos en el sistema operativo

Se puede chequear el tamao mximo de una tabla desde el Cliente MySQL con el comando SHOW TABLE STATUS o con la herramienta myisamchk -dv nombre_tabla. Los nombres de bases de datos, tablas, ndices, columnas y alias son conocidos como identificadores; los identificadores de bases de datos, tablas y columnas no pueden terminar con espacios en blanco. La tabla siguiente describe la longitud mxima y los caracteres permitidos para cada tipo de identificador en MySQL:
Identificador Longitud mxima (bytes) Caracteres permitidos Base de datos Tabla Columna ndice Alias 64 64 64 64 255 Cualquier carcter permitido en un nombre de directorio, excepto / \ . Cualquier carcter permitido para un nombre de fichero, excepto / \ . Todos los caracteres Todos los caracteres Todos los caracteres Tabla 4.3: Lmites de archivos en el sistema operativo

4.3.2. Tipos de Datos de MySQL En MySQL existen varios tipos de datos disponibles, cumpliendo con el estndar SQL/92. A continuacin enumero los tipos de datos agrupndolos por categoras: de caracteres, enteros, de coma flotante, de fecha y hora, de bloques, enumerados y conjuntos.

- Pg. 60 -

Anl. Mauricio Arvalo M.

Tipos de datos de cadenas de caracteres: CHAR, CHAR(), VARCHAR(). Tipos de datos enteros: TINYINT, BIT, BOOL o BOOLEAN, SMALLINT, MEDIUMINT, INT o INTEGER, BIGINT. Tipos de datos de coma flotante: FLOAT, FLOAT(), DOUBLE o REAL, DECIMAL, NUMERIC o FIXED. Tipos de datos para hora y fecha: DATE, DATETIME, TIMESTAMP, TIME, YEAR. Tipos de datos para datos sin tipo o grandes bloques de datos: TINYBLOB o TINYTEXT, BLOB o TEXT, MEDIUMBLOB o MEDIUMTEXT, LONGBLOB o LONGTEXT. Tipos enumerados y conjuntos: ENUM y SET

4.4.

Ventajas y Desventajas de MySQL

4.4.1. Ventajas

MySQL es Open Source: Significa que es posible para cualquiera usar y modificar el software. Cualquiera puede bajar el software MySQL desde internet y usarlo sin pagar nada en la versin gratuita y si se desea, se puede estudiar el cdigo fuente y cambiarlo para adaptarlo a nuestras necesidades especficas. El software MySQL usa la licencia GPL (General Public License).

El servidor de bases de datos relacionales MySQL es muy rpido, fiable y fcil de usar, ya que en cooperacin con los usuarios desarrolladores de Open Source a nivel mundial, MySQL Server se desarroll originalmente para manejar grandes bases de datos mucho
- Pg. 61 -

Anl. Mauricio Arvalo M.

ms rpido que las soluciones de gestores de bases de datos existentes y ha sido usado con xito en entornos de produccin de alto rendimiento durante varios aos. MySQL Server trabaja en entornos cliente/servidor o incrustados; el software de bases de datos MySQL es un sistema cliente/sevidor que consiste en un servidor SQL que trabaja con diferentes programas y bibliotecas cliente, herramientas administrativas y diversas interfaces de programacin para aplicaciones (APIs). Tambin se proporciona el MySQL Server como biblioteca incrustada, que se puede incluir en una aplicacin para obtener un producto ms pequeo, rpido y fcil de administrar. Una gran cantidad de software de contribuciones est disponible para MySQL, y por esta razn se pueden usar muchas herramientas disponibles en modo consola y en entorno grfico para la administracin completa del servidor My SQL. MySQL posee un buen control de acceso de usuarios y seguridad en los datos. Integracin perfecta con el lenguaje PHP (Preprocesador de Hipertexto). Soporte completo para clusulas, funciones, tipos de datos y comandos estndar y extendidos del estndar SQL. Soporte para control de transacciones en tablas transaccionales (tipo InnoDB), y soporte para procedimientos almacenados, subconsultas y disparadores (Triggers) en las ltimas versiones de MySQL (5.x). Gran portabilidad entre distintos sistemas o plataformas. Se permite la replicacin de bases de datos trabajando con servidores MySQL maestros y esclavos. Tambin se permite trabajar con el entorno MySQL Clster para dar alta disponibilidad y rendimiento al sistema. Uso de MyODBC, que proporciona a MySQL soporte para programas clientes que usen conexiones ODBC (Open Database Connectivity). Soporta mltiples modos asignados para comportarse como otros gestores de bases de datos, definiendo la validacin o no de los valores errneos o incorrectos y la forma en que se ingresan los datos.
- Pg. 62 -

Anl. Mauricio Arvalo M.

4.4.2. Desventajas

Actualmente, el soporte para disparadores es bsico, por lo tanto hay ciertas limitaciones en lo que puede hacerse con ellos.

Cuando MySQL maneja la Integridad referencial, con tablas NO transaccionales de tipo MyISAM, aunque admite la declaracin de claves ajenas o forneas en la creacin tablas, internamente no las trata de forma diferente al resto de campos.

Los privilegios para una tabla no se eliminan automticamente cuando se borra una tabla. Debe usarse explcitamente un comando REVOKE para quitar los privilegios de una tabla.

La funcin de conversin CAST() no soporta la conversin a REAL o BIGINT. Los desarrolladores comentan en la documentacin de MySQL que estas carencias no

les resultaban un problema, ya que era lo que en principio ellos necesitaban. Sin embargo se las optimizar con la colaboracin de los propios usuarios y desarrolladores a nivel mundial, gracias a que es Software Libre.

4.5. Gestin de Bases de Datos MySQL


Existen muchas formas de establecer una comunicacin con el servidor de MySQL; en algunos casos, se usan libreras y APIs (Interfaz de Programacin para Aplicaciones). En PHP, por ejemplo, este API est integrado con el lenguaje, en C/C++ se trata de libreras de enlace dinmico, en el proyecto Mono para el desarrollo de aplicaciones en la plataforma .Net se usa el namespace ByteFX.Data.MySql, que es un proveedor de ADO.NET y en otros lenguajes se puede utilizar el conector My ODBC (Open Database Connectivity) para realizar conexiones con el servidor de MySQL desde cualquier cliente que soporte ODBC. As tambin existen herramientas o aplicaciones que nos son muy tiles facilitndonos la administracin del servidor MySQL y sus bases de datos con un entorno de consola como el Cliente mysql y el mysqladmin que es una aplicacin que nos sirve para realizar

- Pg. 63 -

Anl. Mauricio Arvalo M.

operaciones administrativas, o con herramientas de entorno grfico como el MySQL Front y MySQL Administrador. Incluso existe una aplicacin potente y amigable para administrar las bases de datos MySQL mediante una interfaz Web llamada phpMyAdmin. Existe la aplicacin MySQL Query Browser que es una herramienta creada por MySQL AB para crear, ejecutar y optimizar consultas en un entorno grfico y sencillo de manejar para el usuario. Se dispone tambin de herramientas de modelado de bases de datos MySQL como DeZings o DBDesigner y aplicaciones como el MySQL Migration Toolkit para migrar bases de datos de otros sistemas manejadores de Bases de Datos (DBMS) como Oracle, SQL Server o Access a MySQL. Adems MySQL Server viene con aplicaciones cliente de consola para realizar operaciones como chequear, optimizar, y reparar tablas como mysqlcheck o myisamchk para efectuar estas operaciones en tablas de tipo MyISAM. Incluye tambin el programa para importar datos mysqlimport y las aplicaciones para copias de seguridad de las bases de datos mysqlhotcopy y el mysqldump. Los programas clientes MySQL tienen varias opciones, pero todos ellos proporcionan una opcin --help que puede utilizarse para obtener una descripcin completa de las distintas opciones del programa. Por ejemplo, mysql --help. Los programas clientes MySQL pueden leer opciones de inicio desde ficheros de opciones (tambin llamados a veces ficheros de configuracin). Los siguientes programas clientes soportan ficheros de opciones: myisamchk, myisampack, mysql, mysqladmin, mysqlcheck, mysqldump, mysqld, mysqlhotcopy, mysqlimport, y mysqlshow. Los programas MySQL clientes leen las opciones de inicio en los siguientes ficheros:

- Pg. 64 -

Anl. Mauricio Arvalo M.

Fichero WINDIR\my.ini C:\my.cnf INSTALLDIR\my.ini

Contenido Opciones globales Opciones globales Opciones globales

Tabla 4.4: Ubicacin de los ficheros de configuracin en Windows

WINDIR representa la ubicacin del directorio Windows, INSTALLDIR representa el directorio de instalacin de MySQL (generalmente es C:\Archivos de Programa\MySQL\MySQL 5.0 Server). En Unix o Linux, los programas MySQL leen sus opciones de inicio en los siguientes ficheros: Fichero Contenido /etc/my.cnf Opciones globales $MYSQL_HOME/my.cnf Opciones especficas del servidor
Tabla 4.5: Ubicacin de los ficheros de configuracin en Linux

MYSQL_HOME es una variable de entorno que contiene la ruta al directorio donde reside el fichero my.cnf especfico del servidor. cdigo fuente. MySQL busca ficheros de opciones exactamente en el orden descrito en las tablas anteriores y lee cualquiera que exista. Si se desea utilizar un fichero de opciones que no existe, se lo debe crear con un editor de texto plano; y de existir mltiples ficheros de opciones, las opciones ledas en ltimo lugar prevalecen sobre las anteriores. Con toda esta amplia gama de utilidades o herramientas de administracin para el gestor de bases de datos MySQL, realmente creo que est a la par con otros grandes sistemas manejadores de bases de datos de licencia libre y propietaria, y puede ser usado e incorporado Generalmente esta ruta es /usr/local/mysql/data para una instalacin binaria o /var/lib/mysql para una instalacin de

- Pg. 65 -

Anl. Mauricio Arvalo M.

sin problemas a la mayora de sistemas o aplicaciones que utilicen un motor de bases de datos relacional independientemente de su arquitectura y plataforma en la que estn implementadas a un bajo costo y con un alto rendimiento. A continuacin se citan las caractersticas ms destacadas de las herramientas y utilidades clientes que nos permiten administrar el servidor MySQL y gestionar sus bases de datos en modo consola o de lnea de comandos:

4.5.1. Cliente mysql El cliente mysql es una poderosa herramienta interactiva en modo de consola que nos permite realizar una conexin y administrar un servidor MySQL ejecutando sentencias SQL para interactuar con las bases de datos, visualizando los resultados de las operaciones solicitadas.

Se interacta con el servidor MySQL de forma directa mediante el cliente mysql, el mismo que se ejecuta en una consola (una ventana DOS en Windows, o un Shell en otros sistemas como Linux).

Figura 4.3: Cliente MySQL

Para entrar en la consola (Cliente) de MySQL se requieren ciertos parmetros, y la forma general de iniciar una sesin MySQL es:
- Pg. 66 -

Anl. Mauricio Arvalo M. mysql -h host -u usuario p

Los parmetros "-h" y "-u" indican que los parmetros a continuacin son, respectivamente, el nombre del host y el de usuario. El parmetro "-p" indica que se debe solicitar una clave de acceso. En versiones de MySQL anteriores a la 4.1.9 es posible abrir un cliente de forma annima sin especificar una contrasea, pero esto no es muy seguro y de hecho, las ltimas versiones de MySQL no lo permiten. Durante la instalacin de MySQL se nos pide que elijamos una clave de acceso para el superusuario 'root', el cual tiene todos los permisos o privilegios y deberemos usar esa clave para iniciar por primera vez una sesin con el cliente mysql como se muestra a continuacin:
mysql -h localhost -u root -p Enter password: ******* Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 76 to server version: 5.0.11-beta-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

Un comando interpretado por el Cliente mysql normalmente consiste de cualquier sentencia SQL (de definicin o manipulacin de datos) seguida por un punto y coma. Cuando se emite un comando, el cliente lo manda al servidor para que lo procese y nos muestra los resultados regresando luego al prompt indicando que est listo para recibir ms consultas u operaciones SQL. El cliente mysql muestra al final de una operacin cuntas filas fueron regresadas o afectadas y cuanto tiempo tard en ejecutarse la operacin que ejecutamos; lo cual nos da una idea de la eficiencia del servidor. Las palabras claves y los comandos de MySQL pueden ser escritos usando tanto maysculas como minsculas (case-insensitive). El cliente mysql representa los resultados de una consulta como una tabla (filas y columnas). La primera fila contiene las etiquetas (alias o nombres) para las columnas. Las filas siguientes muestran los resultados de la consulta como se muestra en el siguiente ejemplo:

- Pg. 67 -

Anl. Mauricio Arvalo M. mysql> SELECT * FROM compras; +---------+-------+ | articulo| precio| +---------+-------+ | 0003 | 1.25 | | 0004 | 19.95 | | 0005 | 20.95 | | 0006 | 30.95 | | 0007 | 40.95 | | 0008 | 50.95 | +---------+-------+ 6 rows in set (0.01 sec) CONSULTA SQL COLUMNAS DE LA CONSULTA

RESULTADOS (DATOS)

NUMERO DE FILAS RETORNADAS Y TIEMPO QUE TARD LA CONSULTA (EN SEGUNDOS)

Es posible escribir ms de una sentencia por lnea, siempre y cuando estn separadas por punto y coma, por ejemplo:
mysql> SELECT VERSION(); SELECT NOW(); +----------------+ | VERSION() | +----------------+ | 5.0.11-beta-nt | +----------------+ 1 row in set (0.01 sec) +---------------------+ | NOW() | +---------------------+ | 2006-08-25 14:26:04 | +---------------------+ 1 row in set (0.01 sec)

Los comandos que requieran de varias lneas no son un problema. El cliente mysql determinar en dnde finaliza la sentencia cuando encuentre el punto y coma, no cuando encuentre el fin de lnea. Ejemplo:
mysql> SELECT -> USER(), -> CURRENT_DATE; +-------------------+--------------+ | USER() | CURRENT_DATE | +-------------------+--------------+ | mauricio@localhost| 2006-08-25 | +-------------------+--------------+ 1 row in set (0.00 sec)

Para ver la lista de opciones proporcionadas por el cliente mysql, lo invocamos con la opcin -- help (mysql -help). Para comenzar a utilizar e interactuar con el servidor MySQL mediante el programa cliente mysql, tenemos varios commandos, sentencias, funcines u
- Pg. 68 -

Anl. Mauricio Arvalo M.

operadores que cumplen con los estndares ANSI e ISO de SQL/92. Para obtener una ayuda detallada sobre el manejo y las opciones de cada uno de ellos se puede acceder al manual de referencia en espaol de MySQL (http://dev.mysql.com/doc/refman/5.0/es/index.html) o escribiendo en el programa cliente la palabra help o ? seguida por el nombre del comando a cerca del cual queremos obtener ayuda, como se muestra en el siguiente ejemplo:
mysql>? create database;

Entre los comandos SQL tenemos por ejemplo CREATE DATABASE, que sirve para crear una nueva base de datos como se muestra a continuacin:
mysql> CREATE DATABASE prueba; Query OK, 1 row affected (0.01 sec)

Mediante el comando USE se selecciona la base de datos que se utilizar por defecto en las operaciones que realicemos:
mysql> USE prueba; Database changed

Para salir de una sesin del cliente mysql se usa el comando "QUIT", "EXIT", o presionando CONTROL+D:

Figura 4.4: Salir del cliente MySQL

- Pg. 69 -

Anl. Mauricio Arvalo M.

4.5.2. Mysqladmin Este es un programa cliente en modo de consola que realiza tareas administrativas, tales como crear y borrar bases de datos, recargar las tablas de permisos, volcar tablas a disco y reabrir ficheros de log. Mysqladmin tambin puede utilizarse para consultar la versin, informacin de procesos, e informacin de estado del servidor. La siguiente sintaxis se utiliza para invocar a mysqladmin:
> mysqladmin comando [opciones_de_comando]

Mysqladmin soporta los siguientes comandos: - Create nombre_base_de_datos: Crea una nueva base de datos. - Debug: Le dice al servidor que escriba informacin de depuracin en el log de error. - Drop nombre_base_de_datos: Borra la base de datos y todas sus tablas. - Extended-status: Muestra las variables de estado del servidor y sus valores. - Flush-logs: Vuelca todos los logs. - Flush-privileges: Recarga las tablas de permisos (lo mismo que reload). - Flush-status: Limpia las variables de estado. - Flush-tables: Vuelca todas las tablas. - Ping: Comprueba si el servidor est vivo; el estado retornado por mysqladmin es 0 si el servidor est en ejecucin, 1 si no lo est. En MySQL 5.0, el estado es 0 incluso en caso de un error tal como Access denied, ya que esto significa que el servidor est en ejecucin pero no ha admitido la conexin. - Reload: Recarga las tablas de permisos. - Refresh: Vuelca todas las tablas; cierra y abre los ficheros de logs. - Shutdown: Detiene o apaga el servidor. - Start-slave: Comienza la replicacin en un servidor esclavo. - Status: Muestra un mensaje de estado corto del servidor. - Stop-slave: Detiene la replicacin en un servidor esclavo.
- Pg. 70 -

Anl. Mauricio Arvalo M.

- Variables: Muestra las variables de sistema del servidor y sus valores. - Version: Muestra informacin de la versin del servidor.

Todos los comandos pueden abreviarse a un prefijo nico. Por ejemplo:


> mysqladmin proc stat +----+------+-----------+----+---------+------+------+------------------+ | Id | User | Host | db | Command | Time | State| Info | +----+------+-----------+----+---------+------+------+------------------+ | 51 | root | localhost | | Query | 0 | | show processlist | +----+------+-----------+----+---------+------+------+------------------+ Uptime: 1473624 Threads: 1 Questions: 39487 Slow queries: 0 Opens: 541 Flush tables: 1 Open tables: 19 Queries per second avg: 0.0268 Memory in use: 92M Max memory used: 410M

El apagado del servidor puede ejecutarse con la sentencia mysqladmin shutdown, pero tambin son posibles otros mtodos de encendido y apagado especficos de cada sistema operativo. Por ejemplo en un servidor ejecutndose como servicio en Windows se apaga cuando el administrador de servicios se lo indica. Los pasos del proceso de apagado del servidor son: 1. Comienza el proceso de apagado 2. El servidor deja de aceptar nuevas conexiones 3. El servidor acaba con su tarea actual 4. Se apagan o cierran los motores de almacenamiento 5. El servidor se cierra

4.5.3. Myisampack Esta es una utilidad que comprime tablas MyISAM para producir tablas ms pequeas de slo lectura. ciento.
- Pg. 71 -

Myisampack funciona comprimiendo cada columna de la tabla

separadamente; normalmente, myisampack comprime el fichero de datos en un 40 a 70 por

Anl. Mauricio Arvalo M.

Cuando la tabla se utiliza posteriormente, el servidor lee en la memoria la informacin que se necesita para descomprimir las columnas. Esto da un rendimiento mucho mejor al acceder a registros individuales, ya que slo se tiene que descomprimir un registro. Tras su compresin, la tabla ser de slo lectura. A continuacin se muestra como se invoca a myisampack:
> myisampack [opciones] nombre_fichero(.MYI)

Cada nombre de fichero debe ser el nombre de un fichero ndice (.MYI). Si no se encuentra en el directorio de la base de datos, debe especificar la ruta al fichero. Se permite omitir la extensin .MYI .

4.5.4. Mysqlcheck y Myisamchk Son programas clientes de mantenimiento de tablas que verifican, reparan, analizan y optimizan las tablas del servidor MySQL. Mysqlcheck es similar a myisamchk, pero funciona de forma distinta. La principal diferencia operacional es que mysqlcheck debe usarse cuando el servidor mysqld est en ejecucin, mientras que myisamchk debe usarse cuando no lo est. El beneficio de usar mysqlcheck es que no se tiene que parar el servidor para comprobar o reparar las tablas. Mysqlcheck usa los comandos SQL CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, y OPTIMIZE TABLE de forma conveniente para los usuarios. Determina los comandos a usar en funcin de la operacin que se quiera realizar, luego enva los comandos al servidor para ejecutarlos. Existen tres modos generales de invocar mysqlcheck:
> mysqlcheck [opciones] nombre_de_base_de_datos [tablas] > mysqlcheck [opciones] --databases DB1 [DB2 DB3...] > mysqlcheck [opciones] --all-databases

Si no se nombra ninguna tabla o se usa las opciones --databases o --all-databases, se comprueban todas las bases de datos.
- Pg. 72 -

Anl. Mauricio Arvalo M.

4.5.5. Mysqlimport Es un programa cliente que proporciona una interfaz de lnea de comandos para importar ficheros de texto en sus respectivas tablas usando el comando LOAD DATA INFILE; mysqlimport se lo invoca como se muestra a continuacin:
> mysqlimport [opciones] nombre_de_base_de_datos fichero_de_texto1 [fichero_de_texto2 ...]

Del nombre de cada fichero de texto especificado en la lnea de comandos, mysqlimport elimina cualquier extensin, y utliza el resultado para determinar el nombre de la tabla a la que importar el contenido del fichero; por lo que el nombre del fichero y el de la tabla deben ser los mismos. Por ejemplo, los ficheros con nombres paciente.txt, paciente.text y paciente se importaran todos a la tabla llamada paciente. El siguiente es un ejemplo de una sesin que demuestra el uso de mysqlimport, suponiendo que exista una tabla imptest en la base de datos test, y un fichero de texto imptest.txt que contenga dos registros para los campos id y nombre respectivamente:
> mysqlimport test imptest.txt test.imptest: Records: 2 Deleted: 0 > SELECT * FROM imptest +------+---------------+ | id | nombre | +------+---------------+ | 100 | Max Sydow | | 101 | Count Dracula | +------+---------------+

Skipped: 0

Warnings: 0

4.5.6. Mysqldump y Mysqlhotcopy El cliente mysqldump puede utilizarse para volcar una base de datos o coleccin de bases de datos en un fichero como comandos SQL o como ficheros separados por tabuladores para copia de seguridad o para transferir datos a otro servidor SQL (no necesariamente un servidor MySQL). EL volcado contiene comandos SQL para crear la tabla y/o rellenarla y existen tres formas de invocar a mysqldump:

- Pg. 73 -

Anl. Mauricio Arvalo M. > mysqldump [opciones] nombre_de_base_de_datos [tablas] > mysqldump [opciones] --databases DB1 [DB2 DB3...] > mysqldump [opciones] --all-databases

Si no se nombra ninguna tabla o se utiliza la opcin --databases o --all-databases, se vuelcan todas las bases de datos enteras. Mysqlhotcopy es un script Perl que usa los comandos LOCK TABLES, para bloquear las tablas a copiar y cp o scp para realizar una copia de seguridad rpida de la base de datos mientras el servidor se encuentra en ejecucin. Es la forma ms rpida de hacer una copia de seguridad de la base de datos o de tablas, pero slo puede ejecutarse en la misma mquina donde est el directorio de base de datos y slo realiza copias de seguridad de tablas de tipo MyISAM; adems funciona solamente en Unix/Linux y NetWare. Este programa se invoca como se indica a continuacin:
shell> mysqlhotcopy nombre_de_base_de_datos [/ruta_nuevo_directorio]

4.5.7. Perror Es una utilidad que muestra el significado de los errores de sistema de MySQL. Para la mayora de errores de sistema, MySQL muestra, adems del mensaje de texto interno, el cdigo de error de sistema en uno de los siguientes estilos:
message ... (errno: #) message ... (Errcode: #)

Puede aclararse qu significa cada cdigo de error utilizando la utilidad perror de la siguiente manera:
shell> perror [opciones] cdigo_de_error ...

Ejemplo con los codigos de error 13 y 64:


> perror 13 64 Error code 13: Permission denied Error code 64: Machine is not on the network

- Pg. 74 -

Anl. Mauricio Arvalo M.

Hay que tener en cuenta que el significado de los mensajes de error del sistema pueden ser dependientes del sistema operativo. Un cdigo de error puede significar cosas distintas en diferentes sistemas operativos. Los programas clientes vistos hasta ahora, generalmente se instalan junto con el servidor MySQL en el directorio de instalacin de MySQL/bin. El servidor junto con los programas clientes se los puede descargar del sitio web de MySQL AB para descargas (http://www.dev.mysql.com/downloads), donde tambin se proporcionan diversas herramientas distribuidas por MySQL AB, como el sistema MySQL Cluster, o los conectores MyODBC, o distintas APIs para trabanjar con lenguajes como .NET o C++, etc. Tambin se ofrecen algunos programas con interfaces grficas de usuario (GUI) para administrar e interactuar con el servidor MySQL. Adems existen varias herramientas y utilitarios con entorno grfico desarrolladas por distintos colaboradores a nivel mundial, que no son distribuidas por MySQL AB, sin embargo tambin son muy funcionales y prcticas para gestionar las bases de datos MySQL. A continuacin se citan algunas de estas herramientas:

4.5.8.

MySQL Administrator Esta herramienta es desarrollada y distribuida por MySAL AB y se usa para administrar

servidores MySQL, bases de datos, tablas y usuarios. MySQL Administrator es un programa para llevar a cabo operaciones administrativas, como configurar el servidor de MySQL, supervisando su estado y desempeo, se puede iniciarlo y detenerlo, administrar los usuarios y las conexiones, llevar a cabo los backups o respaldos y las recuperaciones de las bases de datos y varias otras tareas administrativas, adems permite gestionar las tablas, sus campos, las vistas y procedimientos almacenados. Todas estas tareas, se las puede realizar mediante programas clientes en modo de consola o lnea de comandos, sin embargo, MySQL Administrator nos facilita mucho la administracin

- Pg. 75 -

Anl. Mauricio Arvalo M.

del servidor MySQL ya que gracias a su Interfaz Grfica de Usuario (GUI) se tiene una manera fcil e intuitiva de realizar las operaciones administrativas.

Figura 4.5: Conexin para MySQL Administrador

Figura 4.6: Ventana de Administracin de MySQL Administrador

Permite la administracin correcta del servidor, asegurando su desempeo, fiabilidad, y seguridad; adems despliega indicadores grficos que muestran el desempeo del servidor, facilitando su administracin. Este software en su ltima versin (1.2) se lo puede descargar

- Pg. 76 -

Anl. Mauricio Arvalo M.

desde el sitio web de MySQL AB (http://dev.mysql.com/downloads/mysq/gui-tools/5.0.html) en el paquete MySQL GUI Tools Bundle for 5.0. y est disponible para varias plataformas incluyendo Windows, Linux, MacOS entre otras y se ha diseado para trabajar con los servidores de MySQL desde la version 4.0 y posteriores. Al iniciar esta aplicacin, se nos pide que especifiquemos los parmetros de conexin:

4.5.10. MySQL Query Browser

MySQL Query Browser es una herramienta grfica proporcionada por MySQL AB para crear, ejecutar, y optimizar consultas de las bases de datos MySQL en un ambiente grfico, donde MySQL Administrator est diseado para administrar el servidor MySQL. MySQL Query Browser esta diseado para ayudar a consultar y analizar los datos almacenados en una base de datos MySQL de una manera fcil, rpida e intuitiva. Aunque todas las conslutas ejecutadas en el MySQL Query Browser pudieran ser tambin ejecutadas en la utilidad cliente de lnea de comando mysql, MySQL Query Browser permite de una manera ms intuitiva y grafica la consulta y la edicin de datos. La tarea realizada mas comn con el MySQL Query Browser es ejecutar una o varias consultas y analizar o comparar sus resultados. La manera ms directa de crear consultas es escribirlas directamente sobre el rea de consultas, o por medio de las herramientas grficas generar las consultas deseadas. Conforme se va escribiendo en el rea de resultados, las porciones de sintaxis de SQL(SELECT, FROM, WHERE, etc) se van resaltando en azul. Este software en su ltima versin (1.2) tambin se lo puede descargar desde el sitio web de MySQL AB (http://dev.mysql.com/downloads/mysq/gui-tools/5.0.html) en el paquete MySQL GUI Tools Bundle for 5.0. con versiones para varias plataformas incluyendo Windows, Linux, MacOS entre otras y se ha diseado para trabajar con los servidores de MySQL desde la version 4.0 y posteriores.

- Pg. 77 -

Anl. Mauricio Arvalo M.

Figura 4.7: Ventana de MySQL Query Browser

4.5.11. MySQL Migration Toolkit:

Esta herramienta la proporciona MySQL AB y sirve de ayuda en la migracin de esquemas y datos desde otros sistemas de gestin de bases de datos realcionales hacia MySQL, con un entorno grfico y facilitando su utilizacin. Se encuentra en pruebas alfa y todava continan haciendose esfuerzos para mejorarla, ya que contiene algunos errores por lo que siempre se necesita realizar una copia de respaldo de las bases de datos antes de usar este software. MySQL Migration Toolkit soporta una variedad de sistemas gestores de bases de datos, incluyendo Oracle, Microsoft SQL Server y Microsoft Access La versin actual de este software es la 1.1 y se lo descarga desde el sitio web de MySQL AB (http://dev.mysql.com/downloads/mysq/gui-tools/5.0.html) en el paquete

- Pg. 78 -

Anl. Mauricio Arvalo M.

MySQL GUI Tools Bundle for 5.0. con versiones para diversas plataformas; est diseado para trabajar con los servidores de MySQL desde la version 5.0 y posteriores. La migracin de los datos desde otros sistemas de gestin de bases de datos (SGBD) se la realiza de una manera sencilla e intuitiva; MySQL Migration Toolkit usa un proceso o plan de migracin de datos por pasos hasta completar exitosamente la migracin de los objetos seleccionados de la base de datos.

Figura 4.8: Ventana de Migracin de MySQL Migration Toolkit

4.5.12. MySQL Front


MySQL-Front es una poderosa herrmienta en entorno grfico que nos permite manejar o administrar bases de datos MySQL. A diferencia de otros sistemas, no esta programado en PHP y HTML, por lo que el tiempo de respuesta es mucho ms rpido y eficaz. Fue creada por un grupo de desarrolladores llamado Star-Tools GMBH, en coordinacin con la empresa MySQL AB.

- Pg. 79 -

Anl. Mauricio Arvalo M.

Soporta bases de datos MySQL a partir de la versin 3.23, soporta todo tipo de tablas y columnas MySQL y funciona con cualquier versin de Windows. Usa un gran nmero de funciones API (Interfaz de Programacin para Aplicaciones) de Windows, para asegurar la total compatibilidad con futuras versiones de Windows. Adems dispone de un corrector de gramtica SQL coloreando la sintaxis y permite gestionar y guardar las operaciones o comandos SQL que se realicen en Scripts SQL. El programa hace posible realizar toda la administracin y tareas esenciales tales como crear y cambiar la estructura de la base de datos, insertar, modificar, eliminar y consultar datos, crear y modificar disparadores, ndices, vistas, rutinas almacenadas, etc. Ejecuta directamente cualquier rden o comando SQL de una manera fcil y cmoda ya que entre sus herramientas posee un examinador de objetos, un examinador de datos y un poderoso editor SQL. Su instalacin es muy fcil a travs del asistente (con entorno grfico) y requiere un computador con un procesador Pentium o compatible, 32Mb de memoria RAM y 10 Mb de espacio libre en el disco duro. Este software no es libre, por lo que la ltima versin descargada (actualmente la 3.2) puede probarse durante 30 das sin ningn tipo de limitacin.

Figura 4.9: Ventana de MySQL Front

- Pg. 80 -

Anl. Mauricio Arvalo M.

Aunque desafortunadamente este producto ya no se produce ms y est descontinuado por desacuerdos entre la comunidad que desarrolla MySQL Front y la empresa que distribuye MySQL (MySQL AB); sin embargo todava se lo puede descargar desde algunos sitios web como http://www.gamarod.com.ar/ recursos/downloads/programas-downloads.asp?cat=13 y considero que este producto es una de las mejores herramientas con entorno grfico para administrar o gestionar de una manera rpida y eficiente las bases de datos MySQL.

4.5.13. PhpMyAdmin
Para administrar una base de datos MySQL, existe tambin una interfaz Web bastante potente e intuitiva llamada PhpMyAdmin. su licencia es de tipo GPL. En las palabras de los desarrolladores: PhpMyAdmin es una herramienta escrita en PHP con la intencin de manejar la administracin de MySQL a travs de pginas Web, utilizando la Internet. Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y aadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios y usuarios, exportar datos en varios formatos y est disponible en 47 idiomas10. Esta herramienta est desarrollada sobre el lenguaje PHP (Hypertext Preprocessor"), que es un lenguaje interpretado de alto nivel embebido en pginas HTML y ejecutado en el servidor. Su versin 4 es la ms reciente; es un lenguaje de script incrustado dentro de codigo HTML. La mayor parte de su sintaxis ha sido tomada de C, Java y Perl con algunas caractersticas especificas de si mismo. La meta del lenguaje es permitir rpidamente a los desarrolladores la generacin dinmica de pginas web. Luego de descargar el programa, para que funcione, debemos tener configurado el soporte php e instalado el servidor MySQL. Procederemos luego a descomprimir el fichero descargado en nuestro servidor Web (puede ser Apache, Personal Web Server 3 y 4 o
10

Se la puede descargar desde el sitio web

http://www.phpmyadmin.net/home_page/index.php y su ltima versin estable es la 2.8.2.4;

Tomado de http://www.phpmyadmin.net/home_page/ - Pg. 81 -

Anl. Mauricio Arvalo M.

superior, Internet Information Server 3 y 4 o superior, OmniHTTPd 2.0b1 y superior, Oreilly Website Pro, Xitami, Netscape Enterprise Server, etc.); estableciendo el enlace al nuevo directorio y ya podremos entrar en la consola de PhpMyAdmin.

Figura 4.10: Descargar PhpMyAdmin en el servidor Web

A continuacin se podr seleccionar el lenguaje y la base de datos con la que se va a trabajar. Existen algunas opciones administrativas en PhpMyAdmin como la de obtener informacin a cerca del servidor MySQL, administrar los procesos, las bases de datos, los privilegios, etc.; realizando de manera fcil y rpida cualquier tarea de gestin en las bases de datos MySQL desde cualquier lugar.

Figura 4.11: Exportar informacin en diferentes formatos desde PhpMyAdmin

- Pg. 82 -

Anl. Mauricio Arvalo M.

4.5.14. MySQL Developer Studio


MySQL Developer Studio es otra poderosa herramienta grfica, creada y distribuida por la empresa CoreLab y utilizada para disear y simplificar el proceso de desarrollo de bases de datos MySQL. Ofrece una manera sencilla de administrar y realizar el mantenimiento de las bases de datos MySQL, nos permite disear complejas sentencias SQL, consultas y manipulacin de los datos de diferentes maneras. Ofrece soporte para bases de datos MySQL a partir de la versin 3.23, soporta todo tipo de tablas y columnas MySQL y funciona con cualquier versin de Windows. Tiene licencia de tipo propietara, pero una versin de prueba de 30 das se puede descargar desde su sitio web para descargas (http://crlab.com/download.html) en su ltima versin 1.51.

Figura 4.12: Administracin de bases de datos con MySQL Developer Studio

- Pg. 83 -

Anl. Mauricio Arvalo M.

4.5.15. DBDesigner
Existen herramientas de modelado de datos para MySQL como DeZign y DBDesigner. DBDesigner es un Sistema de diseo de bases de datos optimizado para bases de datos MySQL y es creado y distribuido por el grupo Fabforce. Esta herramienta es software libre, bajo la licencia GPL e integra el diseo, modelado, creacin y mantenimiento de bases de datos en un solo ambiente grfico y sencillo de utilizar. Este software est diseado para Microsoft Windows 2K/XP y Linux y su ltima versin es la 4.0. downloads.php. Se lo puede descargar desde el sitio web http://www.fabforce.net/

Figura 4.13: DB Designer para el Diseo de Bases de Datos

4.6. Instalacin y Configuracin de MySQL


Existen varias versiones de MySQL para instalarse sobre plataformas diferentes como Linux, Windows, MacOS, entre otras.

- Pg. 84 -

Anl. Mauricio Arvalo M.

Siempre es posible conseguir la versin estable y recomendada o alguna versin anterior, o tambin la versin que actualmente est en fase de desarrollo, que est destinada a personas que quieran colaborar en el desarrollo buscando errores o probando las ltimas versiones. Despus de haber decidido qu versin de MySQL instalar, se debe elegir entre una distribucin binaria o una de cdigo fuente. Probablemente la eleccin ms frecuente sea la distribucin binaria, si existe una para la plataforma en cuestin. Hay distribuciones binarias disponibles en formato nativo para muchas plataformas, como los ficheros RPM para Linux, paquetes de instalacin DMG para Mac OS X, y ficheros comprimidos Zip y tar para Windows. Consultando la pgina de descargas del servidor MySQL

(http://dev.mysql.com/downloads/) se puede obtener informacin acerca de la versin ms actualizada para cada sistema operativo y ejecutar su descarga. A continuacin muestro una breve gua que espero sirva como ayuda para la instalacin y configuracin del servidor MySQL sobre los sistemas operativos Microsoft Windows y el sistema Linux (software libre). Estas instalaciones las he realizado sobre una mquina con un procesador Intel Centrino de 1.7GHz, 1Gb de memoria RAM, 40Gb de espacio en Disco Duro y con la instalacin previa de los sistemas operativos Microsoft Windows XP Service Pack 2 y Linux Fedora Core 5.

4.6.1. Instalacin sobre Windows Para ejecutar MySQL para Windows, se requiere lo siguiente: Una mquina con un mnimo de 64 Mb de memoria RAM, un procesador que Intel Pentium (o compatible) que soporte sistemas operativos de 32 bits a una velocidad considerable.

- Pg. 85 -

Anl. Mauricio Arvalo M.

Un sistema operativo Windows de 32 bits, tal como 9x, Me, NT, 2000, XP, o Windows Server 2003. Se recomienda fuertemente el uso de un sistema operativo Windows basado en NT (NT, 2000, XP, 2003) puesto que stos permiten ejecutar el servidor MySQL como un servicio. Soporte para protocolo TCP/IP. Una herramienta capaz de leer ficheros .zip, para descomprimir el fichero de distribucin. Suficiente espacio en disco duro para descomprimir, instalar, y crear las bases de datos de acuerdo a los requisitos de espacio en disco que se considere va a manejar el servidor MySQL. Generalmente se recomienda un mnimo de 280 megabytes libres. Si se planea conectarse al servidor MySQL a travs de ODBC (Open Database Connectivity), se deber descargar desde el mismo sitio el driver-Connector/ODBC para MySQL MyODBC. Si se necesitan tablas con un tamao superior a 4GB, debe instalarse MySQL en un sistema de ficheros NTFS. Al momento de desarrollar la presente monografa, la ltima versin estable de MySQL

sobre Microsoft Windows para produccin es la 5.0, con la que realice las pruebas y ejercicios; mientras que est en pruebas beta la versin 5.1 y en desarrollo la versin 5.2. El fichero comprimido descargado tiene la extensin .zip y contiene un fichero de instalacin setup.exe, el mismo que instalar MySQL Server mediente un asistente con interfaz grfica, facilitando todo el proceso de instalacin. Despus de descargar este fichero, se descomprime y se ejecuta el fichero "setup.exe"; el proceso de instalacin est mejorado con respecto a versiones anteriores, y bastar con seguir las indicaciones del asistente de instalacin en cada pantalla, escogiendo el tipo de instalacin (tpica, completa o personalizada); tendremos que aceptar las condiciones del contrato y elegir la carpeta de instalacin donde se van a copiar los archivos de MySQL;
- Pg. 86 -

Anl. Mauricio Arvalo M.

adems, si se desea, se nos permite registrarnos con nuestro correo electrnico en el sitio de MySQL AB (www.mysql.com) para obtener asistencia e informacin a cerca de sus ltimos productos.

Figura 4.14: Instalacin de MySQL Server

Luego de instalar el servidor MySQL, podemos configurar algunas de sus opciones mediante el Asistente de Configuracin de instancias de MySQL Server, ubicado en la carpeta o directorio en la que se instal MySQL Server junto con algunas otras utilidades clientes vistas en este captulo. Para configurar una instancia de MySQL mediante este asistente se siguen los siguientes pasos: 1. Hacemos clic en siguiente en la pantalla de bienvenida del asistente.

- Pg. 87 -

Anl. Mauricio Arvalo M.

Fig 4.15: Pantalla de Bienvenida

2. Escogemos una configuracin detallada o Standard, donde en esta ltima, el servidor se configura con las opciones ms usuales; sin embargo he escogido la detallada para mostrar cada configuracin en el servidor:

Fig 4.16: Escoger el tipo de configuracin

3. Escogemos el tipo de servidor que queremos configurar; entre las opciones existentes est el Servidor de desarrollo (Developer Machine), que ocupa poca memoria y permite la ejecucin de cualquier otra aplicacin; tambin tenemos la opcin de Mquina Servidor (Server Machine), que permite la ejecucin de otras aplicaciones de servidor y tiene un consumo medio de memoria y finalmente el Servidor Dedicado MySQL (Dedicated MySQL Server Machina), en el cual la mquina se dedicar exclusivamente a ejecutar el Servidor MySQL, asignando la mayor cantidad de memoria al mismo.

- Pg. 88 -

Anl. Mauricio Arvalo M.

Fig 4.17: Escoger el tipo de Servidor

4. Escogemos el uso para las bases de datos que administraremos mediante el servidor MySQL. Aqu tenemos la opcin Multifuncional, para propsitos generales en la cual podemos crear tablas de tipo InnoDB por defecto o tambin tablas de tipo MyISAM; tambin tenemos la opcin Transaccional que nos permite trabajar solamente con tablas transaccionales de tipo InnoDB como motor principal. Finalmente tenemos la opcin Notransaccional, donde solamente se activa el motor de bases de datos no transaccionales (MyISAM).

Fig 4.18: Escoger el tipo de Uso para las Bases de Datos

5. Escogemos la ruta o ubicacin donde se guardarn las configuraciones para el motor de tablas de tipo InnoDB.

- Pg. 89 -

Anl. Mauricio Arvalo M.

Fig 4.19: Ruta para guardar configuracin del motor InnoDB

6. Escogemos el nmero aproximado de las conexiones concurrentes al servidor. Tenemos la opcin Decision Support (DSS), que nos permite tener aproximadamente 20 conexiones concurrentes, la opcin Online Transaction Processing (OLTP) la cual nos permite tener sobre las 500 conexiones al servidor o la opcin Manual, para configurar manualmente las conexiones concurrentes al servidor.

Fig 4.20: Escoger el nmero de conexiones concurrentes

7.

A continuacin podemos habilitar las conexiones TCP/IP (Transmission Control

Protocol/Internet Protocol) para permitir que el servidor MySQL interacte a travs de una red TCP especificando el nmero de puerto (por defecto es el 3306).

- Pg. 90 -

Anl. Mauricio Arvalo M.

Fig 4.21: Habilitar conexiones TCP/IP

8. A continuacin se escoge el conjunto de caracteres por defecto en el que se almacenarn los datos en la base de datos.

Fig 4.22: Escoger el conjunto de caracteres por defecto

9.

A continuacin se escoge si el servidor MySQL es instalado como un servicio de

Windows.

Fig 4.23: Configuraciones para Windows

- Pg. 91 -

Anl. Mauricio Arvalo M.

10. A continuacin se puede cambiar la contrasea del superusuario root para administrar las bases de datos MySQL.

Fig 4.24: Configuraciones de seguridad

11.

Se procede a ejecutar las configuraciones sealadas y se finaliza el asistente de

configuracin de instancias del servidor MySQL.

4.6.2. Instalacin sobre Linux La manera recomendada de instalar MySQL en una distribucin de Linux es utilizando paquetes RPM (RedHat Package Manager). En la mayora de los casos, slo ser necesario instalar los paquetes MySQL-server y MySQL-client para conseguir una instalacin bsica de MySQL en funcionamiento. Si se deseara ejecutar un servidor MySQL-Max, el cual posee capacidades adicionales, se debera instalar tambin el RPM MySQL-Max. No obstante, ello debera hacerse solamente despus de instalar el RPM de MySQL-server. Muchas distribuciones Linux incluyen MySQL, en el caso de la versin de Fedora Core 5, la versin de MySQL que viene instalada es la 5.0.18. En caso de no tener instalado MySQL, tenemos los siguientes paquetes RPM en la pgina de descargas de MySQL11:
11

Las descargas para MySQL estn disponibles en http://dev.mysql.com/downloads/ - Pg. 92 -

Anl. Mauricio Arvalo M.

MySQL-server-VERSION.i386.rpm: Es el servidor MySQL; ser necesario a menos que solamente se desee conectar a un servidor MySQL ejecutado en otro ordenador por medio de programas clientes. MySQL-Max-VERSION.i386.rpm: El servidor MySQL-Max; este servidor tiene capacidades adicionales que no posee el provisto en el RPM MySQL-server. Igualmente, debe instalarse primero el RPM MySQL-server, ya que MySQL-Max depende de l. MySQL-client-VERSION.i386.rpm Los programas clientes MySQL estndar. Es

recomendable que se instale siempre este paquete. MySQL-shared-VERSION.i386.rpm: dinmicamente y usar MySQL. MySQL-embedded-VERSION.i386.rpm: Instala la biblioteca del servidor MySQL incrustado (desde MySQL 4.0). MySQL-VERSION.src.rpm: Contiene el cdigo fuente de todos los paquetes anteriores. Puede usarse para regenerar los RPMs bajo otras arquitecturas. Este paquete contiene las bibliotecas

compartidas (libmysqlclient) que ciertos lenguajes y aplicaciones necesitan para enlazar

Para ver todos los ficheros contenidos en un paquete RPM (por ejemplo, un RPM MySQL-server), se debe ejecutar la siguiente sentencia:
shell> rpm -qpl MySQL-server-VERSION.i386.rpm

Para llevar a cabo una instalacin estndar mnima, debe ejecutarse:


shell> rpm -i MySQL-server-VERSION.i386.rpm shell> rpm -i MySQL-client-VERSION.i386.rpm

- Pg. 93 -

Anl. Mauricio Arvalo M.

El servidor RPM ubica los datos bajo el directorio /var/lib/mysql. Tambin crea una cuenta de acceso para el usuario mysql (si no exista anteriormente) a fin de ejecutar el servidor MySQL, y crea las correspondientes entradas en /etc/init.d/ para iniciar el servidor automticamente al arrancar el sistema. Todas las principales distribuciones de Linux de la actualidad soportan la nueva disposicin de directorios que utiliza /etc/init.d, porque es un requisito para cumplir con el LSB (Linux Standard Base, Base Estndar para Linux). Si entre los ficheros RPM instalados se encuentra MySQL-server, el servidor mysqld debera estar ejecutndose luego de la instalacin, y se debera estar en condiciones de comenzar a utilizar MySQL. Las cuentas que se hallan en las tablas de permisos de MySQL, en principio no estn protegidas con contraseas. Despus de iniciar el servidor se deben establecer contraseas para esas cuentas siguiendo con los principios de seguridad para los usuarios que tiene MySQL.

- Pg. 94 -

Anl. Mauricio Arvalo M.

CAPITULO V POSTGRESQL

5.1.

Historia y Antecedentes
El Sistema Gestor de Bases de Datos Relacionales conocida como PostgreSQL es un

proyecto de software libre distribuido bajo licencia BSD (Berkeley Software Distribution) y creado con el aporte de varios colaboradores y auspiciantes a nivel mundial bajo los estndares de ANSI-SQL 92/99. Su sitio web es http://www.postgresql.org y con ms de una dcada de desarrollo, PostgreSQL se ha convertido en la base de datos de software libre ms avanzada disponible en el momento, ofreciendo las caractersticas propias de los ms potentes motores de bases de datos comerciales como Oracle o SQLServer. PostgreSQL es el ltimo resultado de una larga evolucin comenzada con el proyecto de bases de datos relacionales Ingres en la Universidad de Berkeley. Luego se inici el proyecto Post-Ingres para resolver los problemas con el modelo de base de datos relacional que se haban presentado. El proyecto resultante llamado Postgres complet el soporte de tipos de datos y la base de datos comprenda tambin las relaciones entre tablas o clases.
- Pg. 95 -

Anl. Mauricio Arvalo M.

La implementacin del DBMS (Sistema Manejador de Bases de Datos) Postgres comenz a desarrollarse en 1986 con la coordinacin del profesor Michael Stonebraker, y fue patrocinado por algunas fundaciones estatales y militares de investigacin. Los conceptos iniciales para el sistema fueron presentados con la definicin del modelo de datos inicial junto con la lgica y arquitectura del gestor de almacenamiento; desde entonces, Postgres ha pasado por varias versiones. El primer sistema de pruebas fue operacional en el ao 1987 y la Versin 1 fue lanzada a unos pocos usuarios en Junio de 1989; despus de revisar el sistema de reglas de la primera versin, ste fue rediseado y la Versin 2 se lanz en Junio de 1990. La Versin 3 apareci en 1991 y aadi una implementacin para mltiples gestores de almacenamiento, un ejecutor de consultas mejorado junto con un mejor sistema de reglas. En su mayor parte, las siguientes versiones hasta el lanzamiento de Postgres95 se centraron en los temas de portabilidad y fiabilidad. El mantenimiento del cdigo y las tareas de soporte ocupaban demasiado tiempo que deba dedicarse a la investigacin, as que el proyecto termin oficialmente con el lanzamiento de la Versin 4.2. En 1994, Andrew Yu y Jolly Chen aadieron un intrprete de lenguage SQL (Lenguaje Estructurado de Consultas) a Postgres y el proyecto se denomin Postgres95, el mismo que fue lanzado a continuacin en la Web para que encontrara su sitio en el mundo de los gestores de bases de datos como un descendiente de dominio pblico y cdigo abierto del cdigo original Postgres de Berkeley. El cdigo de Postgres95 fue optimizado y reducido en tamao en un 25% respecto a sus predecesores; muchos cambios internos mejoraron el rendimiento y la facilidad de mantenimiento. Postgres95 en su versin v1.0 se ejecutaba en un 30 a 50% ms rpido que Postgres v4.2 y adems de su correccin de errores, el lenguage de consultas Postquel fue reemplazado con SQL (implementado en el servidor). Tambin se incluy un nuevo programa (psql) para realizar consultas SQL interactivas. En 1996 nace el proyecto PostgreSQL, siendo una nueva versin de Postgres95, tratando de reflejar la relacin entre el Postgres original y las versiones ms recientes con capacidades de SQL. Los nmeros de versin parten de la 6.0, volviendo a la secuencia seguida originalmente por el proyecto Postgres de Berkeley.

- Pg. 96 -

Anl. Mauricio Arvalo M.

El nfasis durante el desarrollo de Postgres95 estaba orientado a identificar, entender y mejorar los problemas existentes en el cdigo del servidor. Con PostgreSQL, adems de estas mejoras se puso nfasis para aumentar las caractersticas y capacidades del servidor de bases de datos utilizando los estndares SQL92/SQL99. PostgreSQL se distribuye bajo la licencia BSD12. La licencia BSD al contrario que la GPL permite el uso del cdigo fuente en software no libre. El autor, bajo este tipo de licencia, mantiene la proteccin de copyright nicamente para la renuncia de garanta y para requerir la adecuada atribucin de la autora en los trabajos derivados, pero permite la libre redistribucin y modificacin, por lo que pienso que esta licencia asegura un verdadero software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso si redistribuirlo como software no libre. Actualmente la ltima versin de PostgreSQL disponible para descargar desde su sitio web (http://www.postgresql.org/download/) es la 8.1, liberada el 8 de noviembre del 2005.

5.2.

Caractersticas y Funcionalidad de PostgreSQL


PostgreSQL est considerado como la base de datos de cdigo abierto y con orientacin

a objetos ms avanzada del mundo porque proporciona un gran nmero de caractersticas que normalmente slo se encontraban en las bases de datos comerciales tales como DB2, Oracle o SQLServer. A continuacin presento a mi parecer las ms importantes caractersticas de este sistema manejador de bases de datos por la cuales es considerado uno de los ms potentes gestores de bases de datos en el mundo del software libre: Posee un completo soporte para control de transacciones (mediante los comandos

BEGIN WORK, COMMIT WORK o END WORK, ROLLBACK WORK o ABORT)


licencia BSD (Berkeley Software Distribution), pertenece al grupo de licencias de software Libre pero tiene menos restricciones en comparacin con otras como la GPL estando muy cercana al dominio pblico. - Pg. 97 12

Anl. Mauricio Arvalo M.

asegurando la integridad y consistencia de los datos.

Un bloque de transacciones

comienza con una sentencia BEGIN WORK y si la transaccin fue vlida se cierra con COMMIT WORK o END WORK. Si la transaccin falla, se cierra con ABORT o ROLLBACK WORK.

Implementacin de los estndares SQL92/SQL99 con sus operadores, funciones, clusulas y comandos (DDL y DML), junto con comandos extendidos de PostgreSQL.

Soporte completo de ACID (Atomicity Consistency Isolation Durability):


o

Es posible definir operaciones Atmicas, es decir, formadas por comandos que se ejecutan todos o ninguno de ellos. Consistencia, que garantiza que la base de datos nunca se quede en un estado intermedio de una transaccin (con parte de los comandos ejecutados y otra parte que no). Aislamiento, que mantiene separadas las transacciones de usuarios distintos hasta que stas han terminado, es decir controlando la concurrencia de usuarios. Durabilidad, garantizando que el servidor de bases de datos guarde en un registro o log de transacciones las actualizaciones realizadas y pendientes de forma tal que pueda recuperarse de una terminacin brusca como un corte de energa en la mquina.

Soporta procedimientos almacenados, que como se coment en el captulo anterior, son rutinas (procesos o funciones) de cdigo ejecutable que se almacenan compiladas en el servidor. Entre otras cosas, permiten optimizar y acelerar las aplicaciones y evitan transferencias innecesarias a travs de la red. denominado PL/pgSQL. Los procedimientos almacenados se pueden escribir usando el lenguaje procedural propio de programacin de PostgreSQL

- Pg. 98 -

Anl. Mauricio Arvalo M.

Posee soporte completo para subconsultas, que son consultas anidadas dentro de otro comando como SELECT, INSERT, UPDATE, DELETE FROM.

Soporta los Triggers o disparadores, que son procedimientos almacenados que se lanzan automticamente bajo determinadas circunstancias como cuando ocurren actualizaciones, inserciones o eliminaciones consistencia a nivel del servidor de base de datos. de registros en una tabla (mediante

comandos UPDATE, INSERT o DELETE). Permiten establecer reglas de integridad y

Posee soporte para vistas, que son un conjunto de registros, resultados de una consulta que se comportan como una tabla fsica para facilitar su manejo.

PostgreSQL tiene soporte para todos los tipos de JOINS o uniones entre tablas, cumpliendo con los estndares de sintaxis SQL.

Puede operar sobre distintas plataformas, incluyendo Linux, UNIX, AIX, BSD, HP-UX, Mac OS X, Solaris y Windows.

Tiene una buena seguridad gracias a la correcta gestin de usuarios, grupos de usuarios y contraseas, as como tambin los permisos asignados a cada uno de ellos mediante sentencias SQL como CREATE USER, CREATE GROUP, DROP USER, DROP GROUP, ALTER USER, ALTER GROUP, GRANT y REVOKE.

- Pg. 99 -

Anl. Mauricio Arvalo M.

PostgreSQL ofrece soporte completo para la integridad referencial mediante la definicin de claves nicas, primarias y forneas. Esta caracterstica es utilizada para garantizar la validez de los datos de la base de datos.

La flexibilidad del API (Interfaz de Programacin para Aplicaciones) de PostgreSQL ha permitido a los proveedores proporcionar soporte al desarrollo fcilmente para el servidor PostgreSQL. Java/JDBC, C/C++, etc. Entre estas interfaces estn Python, Perl, PHP, ODBC,

Posee MVCC (Control de Concurrencia Multi-Versin), que es la tecnologa que PostgreSQL usa para mantener la concurrencia de usuarios y evitar bloqueos innecesarios de la base de datos. Cuando hay un usuario escribiendo en la base de datos y otro leyendo sus datos, el MVCC evita que el usuario escritor bloquee al usuario lector.

PostgreSQL permite extenderse por parte de los usuarios, por ejemplo se pueden crear nuevos tipos de datos, funciones, operadores o lenguajes procedurales. Por estas razones y gracias a su tipo de licencia BSD, PostgreSQL puede usarse, modificarse y distribuirse libremente para cualquier propsito, pudiendo ser privado, comercial o acadmico.

Para la conectividad del servidor Postgree, se implementa un ODBC (Open Database Connectivity) llamado psqlODBC, que es un API de interfaz entre clientes y servidores de bases de datos PostgreeSQL, siendo su ltima versin la 8.0.2. y se lo puede descargar Windows. gratuita y libremente desde la direccin ftp://ftp10.us.postgresql.org/pub/postgresql/odbc/versions/ en versiones para Linux o Adems tambin est disponible en la pgina web de descargas de PostgreSQL (http://www.postgresql.org/download/) el proveedor de acceso a datos
- Pg. 100 -

Anl. Mauricio Arvalo M.

Npgsql que es utilizado en aplicaciones que usan la plataforma .Net (como el proyecto Mono) como un Assembly13 para acceder y manipular bases de datos PostgreSQL, como se muestra en el siguiente ejemplo hecho en lenguaje C#:
using System; using System.Data; using Npgsql; public static class UsoNpgsql { public static void Main(String[] args) { NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=mauricio; Password=secret;Database=prueba;"); conn.Open(); NpgsqlCommand command = new NpgsqlCommand("insert into table1 values(1, 1)", conn); Int32 filasafectadas; try { filasafectadas = command.ExecuteNonQuery(); } Console.WriteLine("Fueron aadidas {0} lneas en la tabla1", filasafectadas); try { conn.Close(); } } }

Tiene soporte completo para distintos conjuntos de caracteres como latin1 (ISO-88591), german, big5, ujis, etc.

Soporta backups o respaldos en caliente (mientras trabaja el servidor PostgreSQL) y recuperacin completa de las bases de datos.

Soporta Replicacin con servidores PostgreSQL funcionando como maestros y otros como esclavos. Todas las transacciones se las realiza primero en el servidor maestro

13

Assemblies son empaquetamientos fsicos de las bibliotecas de clase, generalmente son archivos .dll - Pg. 101 -

Anl. Mauricio Arvalo M.

para que se puedan actualizar en los esclavos. La replicacin es un proceso asncrono en PostgreSQL, y se la realiza gracias a un archivo llamado binary Log que contiene la informacin de las modificaciones y actualizaciones entre un nodo maestro y uno o mltiples esclavos; la replicacin con servidores PostgreSQL es un proceso independiente del servidor y la aplicacin que PostgreSQL utiliza para la replicacin de sus bases de datos se llama Slony-I.

Incluye herencia entre tablas, por lo que a este gestor de bases de datos se le incluye entre los gestores objeto-relacionales. Para explicar la herencia de tablas con un ejemplo, crear dos clases (tablas). La clase capitales contiene las capitales de las provincias, las cuales son tambin ciudades. Naturalmente, la clase capitales debera heredar de la clase ciudades sus atributos (campos); esta herencia se la realiza en PostgreSQL mediante la clusula INHERITS en la sentencia CREATE TABLE como se muestra a continuacin:
CREATE TABLE ciudades ( nombre text, poblacion float, altitud int ); CREATE TABLE capitales ( cod_provincia char(2) ) INHERITS (ciudades);

En este caso, una instancia de capitales hereda todos los atributos (nombre, poblacin y altitud) de su padre, ciudades. En PostgreSQL, una clase puede heredar de ninguna o varias otras clases y una consulta puede hacer referencia a todas las instancias de una clase y sus descendientes. Por ejemplo, para consultar los nombres de todas las ciudades, incluida la capital que se almacena en la tabla capitales (Quito), y que estn situadas a una altitud de 500 metros o ms, la consulta es:
SELECT c.nombre FROM ciudades* c WHERE c.altitud > 500;

- Pg. 102 -

Anl. Mauricio Arvalo M. +----------+ |nombre | +----------+ |Quito | +----------+ |Cuenca | +----------+ |Riobamba | +----------+

Donde el asterisco * despus de la tabla ciudades indica que la consulta debe realizarse sobre la clase o tabla ciudades y sobre todas las clases que estn por debajo de ella en la jerarqua de la herencia. Algunos comandos SQL como select, update, delete o alter brindan soporte a esta notacin.

Soporta distintos tipos de datos segn los estndares SQL92/SQL99; y adems del soporte para los tipos base, tambin soporta datos de tipo fecha, monetarios, elementos grficos, cadenas de bits, etc. Tambin permite la creacin de tipos de datos propios. Entre los novedosos tipos de datos (o atributos) de PostgreSQL, existen los vectores multidimensionales de longitud fija o variable. Para ilustrar su uso, crear primero una tabla con vectores:
CREATE TABLE SAL_EMP (nombre text, pago int4[], tareas text[][] );

La consulta anterior crear una tabla llamada SAL_EMP, la cual representa el salario trimestral de un empleado y un vector bidimensional del tipo text (tareas), que representa la tarea semanal del empleado. Ahora realizo algunos INSERTS y cuando se agregan valores a un vector, se deben encerrar los valores entre llaves y separarlos mediante comillas ('{valor1, valor2}'), como se muestra a continuacin:
INSERT INTO SAL_EMP VALUES ('Luis', '{10000, 10000, 10000, 10000}', '{{"pintar", "ensamblar"}, {}}'); INSERT INTO SAL_EMP VALUES ('Carolina', '{20000, 25000, 25000, 25000}', - Pg. 103 -

Anl. Mauricio Arvalo M. '{{"vender", "cobrar"}, {"vender"}}');

Se puede acceder a cualquier porcin de un vector, o subvectores, como se muestra a continuacin:


SELECT SAL_EMP.tareas[1:2][1:1] FROM SAL_EMP WHERE SAL_EMP.nombre = 'Luis'; +-----------------------+ |tareas | +-----------------------+ |{{"ensamblar"},{""}} | +-----------------------+

Tambin existe el tipo de dato SERIAL, que es un

tipo de dato especial de

PostgreSQL usado para autoincrementar valores; se usa tpicamente para crear identificadores nicos con autoincremento en las tablas. Este tipo de dato es equivalente a especificar una secuencia (CREATE SEQUENCE) o a especificar la clusula AUTO_INCREMENT en MySQL. Su implementacin es la siguiente:
CREATE TABLE nombre_tabla (nombre_col SERIAL);

Esta sentencia es equivalente a ejecutar las siguientes sentencias en PostgreSQL:


CREATE SEQUENCE nombre_sequencia; CREATE TABLE nombre_tabla (nombre_col INT4 DEFAULT nextval('nombre_sequencia'); CREATE UNIQUE INDEX nombre_ndice on nombre_tabla (nombre_col);

La secuencia implcita en el tipo SERIAL no se borra cuando borramos o eliminamos la tabla (mediante DROP TABLE) sino que permanece entre los objetos de la base de datos hasta que se la elimine (mediante el comando DROP SEQUENCE).

PosgreSQL tiene un

catlogo del sistema (diccionario de datos) que contiene

informacin o metadatos a cerca de todos los objetos contenidos en las bases de datos PostgreSQL. Este diccionario, se encuentra en las tablas pertenecientes al sistema que

- Pg. 104 -

Anl. Mauricio Arvalo M.

llevan el prefijo pg_ como pg_database, pg_version, pgclass, pg_user, etc. Estas tablas nos proporcionan informacin referente a las bases de datos, usuarios, tablas, procedimientos, ndices, tipos de datos, entre otros. Se encuentran en el directorio \Data dentro del directorio en el que se instala PostgreSQL.

El sistema de reglas que tiene PostgreSQL consiste en modificar las consultas de acuerdo a reglas almacenadas como parte de la base de datos. Dichas consultas modificadas son pasadas hacia el ejecutor de consultas; esto es una diferencia respecto a otros DBMS que simplemente implementan los sistemas de reglas como procedimientos y triggers o disparadores almacenados. Este sistema en PostgreSQL puede ser empleado en el manejo de vistas con reglas para la especificacin y actualizaciones de vistas. Una regla se crea con el comando CREATE RULE. La implementacin del sistema de reglas posee una tcnica llamada reescritura de la consulta, la misma que procesa una consulta u operacin de usuario y si existe una regla que deba ser aplicada a dicha operacin, la reescribe de tal forma que la consulta u operacin cumpla tambin con la regla. Para una mejor ilustracin, mostrar a continuacin como implementar vistas utilizando reglas; as tenemos la siguiente regla llamada view rule que acta cuando se seleccionan (select) registros de una vista (test_view):
create rule view_rule as on select to test_view do instead select pro.nombre, par.nombre from proveedor pro, compra com, partes par where pro.cod = com.procod and par.pno = com.pno;

Esta regla se disparar cada vez que se detecte un comando SELECT en la vista test_view. En lugar de seleccionar las tuplas de test_view, realmente se ejecutar la instruccin SELECT dada en la parte de la accin de la regla, es decir si tenemos la siguiente consulta de usuario sobre la vista view_rule:

- Pg. 105 -

Anl. Mauricio Arvalo M. select nombre from test_view where nombre <> 'Smith';

Entonces para PostgreSQL, la consulta a la vista test_view realmente tomar primero la consulta dada por la parte de accin de la regla view_rule, la adapta segn el nmero y orden de los atributos (campos) dados en la consulta del usuario y aade la restriccin dada en la clusula WHERE de la consulta del usuario a las restricciones de la parte de la accin de la regla. Es decir, la consulta anterior (select) original, ser reescrita de la siguiente forma:
select pro.nombre from proveedor pro, compra com, partes par where pro.cod = com.procod and par.pno = com.pno and pro.nombre <> 'Smith';

Pero tambin se pueden definir reglas que actan cuando se ejecutan comandos como INSERT, UPDATE o DELETE sobre una vista. A continuacin muestro como ejemplo el funcionamiento de varias reglas definidas para una vista test_table_v y que funcionan actuando sobre una tabla test_table cuando se insertan, modifican o suprimen registros en la vista:
CREATE TABLE test_table ( field1 char(1) NOT NULL, field2 SERIAL, field3 INTEGER DEFAULT 1, field4 VARCHAR(24) DEFAULT '(def val)', CONSTRAINT testdb_pkey PRIMARY KEY (field2)); CREATE VIEW test_table_v AS SELECT field1, field3, field4 FROM test_table; CREATE RULE test_table_rd AS ON DELETE TO test_table_v DO INSTEAD DELETE FROM test_table WHERE field1 = old.field1; CREATE RULE test_table_ri AS ON INSERT TO test_table_v DO INSTEAD INSERT INTO test_table (field1, field3, field4) VALUES (new.field1, new.field3, new.field4); CREATE RULE test_table_ru AS ON UPDATE TO test_table_v DO INSTEAD UPDATE test_table SET field1 = new.field1, field3=new.field3, field4=new.field4 WHERE field1 = old.field1; INSERT INTO test_table VALUES ('A'); INSERT INTO test_table_v VALUES ('B');

- Pg. 106 -

Anl. Mauricio Arvalo M. -- Resultado -=# SELECT * FROM test_table; field1 | field2 | field3 | field4 --------+--------+--------+----------------A | 1 | 1 | (def val) B | 2 | | (2 rows)

PostgreSQL soporta algunos lenguajes procedurales14.

Estos lenguajes ejecutan o

procesan diversas operaciones directamente en el servidor y una de las principales ventajas de ejecutar programacin en el servidor de base de datos es que las consultas y el resultado no tienen que ser transportadas entre el cliente y el servidor, ya que los datos residen en el propio servidor. Entre los lenguajes procedurales disponibles para PostgreSQL que se distribuyen con el paquete estndar son los siguientes: o PL/pgSQL - SQL Procedural Language o PL/Tcl - Tcl Procedural Language o PL/Perl - Perl Procedural Language o PL/Python - Python Procedural Language Donde el ms destacado porque es desarrollado por los propios creadores y colaboradores de PostgreSQL es PL/pgSQL, el mismo que permite ejecutar comandos SQL mediante un lenguaje de sentencias imperativas y uso de funciones, dando mucho ms control automtico que las sentencias SQL bsicas. Este lenguaje desarrollado en C, se ejecuta desde el propio cliente de PostgreSQL (pgsql) y las metas del diseo como lenguaje procedural son: o que pueda ser utilizado para crear funciones y disparadores (triggers) o que pueda aadir estructuras de control al lenguaje SQL o que sea capaz de realizar cmputos complejos o que herede todas las definiciones de usuario como tipos, funciones y operadores.
14

Son lenguajes de programacin utilizados en manejadores de Bases de Datos para programar operaciones como procedimientos, funciones, triggers, etc. con sentencias SQL y sentencias de control propias del lenguaje. - Pg. 107 -

Anl. Mauricio Arvalo M.

o que sea confiable para correr dentro del DBMS o de fcil empleo Como un verdadero lenguaje de programacin, PL/pgSQL dispone de estructuras de control repetitivas y condicionales, adems de darnos la posibilidad de creacin de funciones que pueden ser llamadas en sentencias SQL normales o ejecutadas en eventos de tipo disparador (trigger). Las funciones escritas en PL/pgSQL aceptan argumentos o parmetros y pueden devolver valores de tipo bsico o de tipo complejo (por ejemplo, registros, vectores, conjuntos o incluso tablas). El lenguaje PL/pgSQL no es sensible a las maysculas y minsculas y es un lenguaje orientado a bloques. Un bloque se define con la siguiente estructura:
[<<etiqueta>>] [DECLARE declaraciones] BEGIN Sentencias END;

Puede haber cualquier nmero de subbloques en la seccin de la sentencia de un bloque, las variables declaradas en la seccin de declaraciones (DECLARE) se inicializan a su valor por defecto cada vez que se inicia el bloque, no cada vez que se realiza la llamada a la funcin. Existen dos tipos de comentarios en PL/pgSQL. Un par de guiones '--' comienza un comentario que se extiende hasta el fin de la lnea mientras que los caracteres '/*' comienzan un bloque de comentarios que se extiende hasta que se encuentre otra vez el caracter '*/'. Un ejemplo de una funcin escrita con PL/pgSQL que contiene subbloques es la siguiente:
CREATE FUNCTION estafunc() RETURNS INTEGER AS ' DECLARE cantidad INTEGER := 30; BEGIN RAISE NOTICE ''Cantidad contiene aqu %'',cantidad; -- Cantidad contiene aqu 30 cantidad := 50; --

- Pg. 108 -

Anl. Mauricio Arvalo M. -- Creamos un sub-bloque -DECLARE cantidad INTEGER := 80; BEGIN RAISE NOTICE ''Cantidad contiene aqu %'',cantidad; -- Cantidad contiene aqu 80 END; RAISE NOTICE ''Cantidad contiene aqu %'',cantidad; -- Cantidad contiene aqu 50 RETURN cantidad; END; ' LANGUAGE 'plpgsql';

Ntese que al final de la funcin se define el lenguaje procedural que utilicemos mediante la clusula LANGUAGE. Todas las variables y constantes (CONSTANT) usadas en un bloque o en sub-bloques deben declararse en la seccin DECLARE del bloque. Las variables en PL/pgSQL pueden ser de cualquier tipo de datos de SQL, como INTEGER, VARCHAR y CHAR y su valor por omisin es NULL. El siguiente procedimiento desencadenado asegura con la ayuda de un trigger o disparador, que cada vez que se inserte o se actualice una fila en una tabla (emp_tabla), se ejecute una funcin indicada (emp_funcion):
CREATE TRIGGER emp_trig BEFORE INSERT OR UPDATE ON emp_tabla FOR EACH ROW EXECUTE PROCEDURE emp_funcion();

A continuacin muestro un ejemplo de una funcin (llamada) creada con PL/pgSQL que actualiza dos tablas (llamadas y contactos) de un sistema de control de llamadas a clientes, cuando estos no estn interesados en la oferta que se les realiza:

CREATE OR REPLACE FUNCTION llamada(integer) RETURNS integer AS ' DECLARE _millamada ALIAS FOR $1; _micontacto integer; BEGIN -- buscar el contacto relacionado: SELECT contacto_id INTO _micontacto FROM llamadas WHERE id=_millamada; -- actualizar atendida en llamadas UPDATE llamadas SET atendida = true WHERE id = _millamada; -- actualizar bandera en contactos UPDATE contactos SET no_interesado = true WHERE id = _micontacto;

- Pg. 109 -

Anl. Mauricio Arvalo M. RETURN _micontacto; END; ' LANGUAGE 'plpgsql';

Existen herramientas libres y gratuitas con interfaces grficas e intuitivas y fciles de utilizar para la administracin completa de bases de datos PostgreSQL como son PhpPgAdmin o el PgAdmin que son auspiciados por los mismos creadores del sistema PostgreSQL. Tambin existen algunas herramientas comerciales entre las que destaco por su funcionalidad a PostgreSQL Manager. As tambin hay una variedad de herramientas para la administracin de bases de datos PostgreSQL en modo consola, fabricadas por los mismos creadores de PostgreSQL (http://www.postgresql.org) como son por ejemplo el terminal de cliente interactivo de postgreSQL psql, o las aplicaciones para realizar copias de seguridad y restauracin de base de datos pg_dump y pg_restore, o herramientas cliente para crear y eliminar bases de datos como cretedb, dropdb entre otras que son incluidas en la descarga completa del servidor PostgreSQL. Estas, entre otras son algunas de las caractersticas que han hecho posible que

PostgreSQL se convierta en una poderosa y solvente herramienta de gestin de bases de datos relacionales con ciertas caractersticas de orientacin a objetos. Para hacerse una idea del prestigio y la solvencia de este sistema de bases de datos, basta decir que la empresa Afilias que gestiona los dominios .info y la parte tcnica de los .org utiliza la versin estndar de PostgreSQL para almacenar todos los dominios .info y .org registrados a nivel mundial.

5.3.

Estructura del servidor PostgreSQL


Postgres usa un modelo de arquitectura cliente/servidor conocido como proceso por

usuario. Hay un proceso maestro que se ramifica para proporcionar conexiones adicionales para cada cliente que se intente conectar a PostgreSQL.

- Pg. 110 -

Anl. Mauricio Arvalo M.

Una sesin PostgreSQL consiste en los siguientes procesos cooperativos (programas):


Un proceso demonio supervisor (postmaster) La aplicacin sobre la que trabaja el usuario (frontend) Uno o ms servidores de bases de datos en segundo plano (servidor PostgreSQL). Un nico proceso postmaster controla una coleccin de bases de datos almacenadas en

un host; las aplicaciones de frontend o clientes que quieren acceder a una determinada base de datos hacen llamadas y envan peticiones de usuario a travs de la red al proceso postmaster, el cual en respuesta inicia un proceso en el servidor y conecta el proceso de frontend al nuevo servidor. A partir de este punto, el proceso cliente (frontend) y el servidor (backend) se comunican sin la intervencin del postmaster, aunque este proceso siempre se est ejecutando, esperando peticiones de otros clientes (procesos frontend).

Figura 5.1: Estructura del Servidor PostgreSQL

En esta arquitectura el proceso postmaster y el proceso backend siempre se ejecutan en la misma mquina (el servidor de base de datos), mientras que la aplicacin frontend o cliente se puede ejecutar desde cualquier equipo. Existen en produccin sistemas funcionando perfectamente con PostgreSQL que manejan una capacidad de almacenamiento que fcilmente excede los 4 terabytes, algunos lmites en el espacio de disco que maneja PostgreSQL se describen a continuacin:

- Pg. 111 -

Anl. Mauricio Arvalo M.

Lmite Mximo tamao de Base de Datos Ilimitado Mximo tamao de tabla Mximo tamao de registro Mximo tamao de campo Mximos registros por tabla Mximas columnas por tabla Mximos ndices por tabla 32 TB 1.6 TB 1 GB Ilimitado

Valor

250 - 1600 dependiendo del tipo de columna Ilimitado

Tabla 5.1: Lmites de espacio en disco que maneja PostgreSQL

5.3.1. Tipos de Tablas En Linux, PostgreSQL almacena las bases de datos en el directorio

/var/lib/pgsql/data/base y a partir de ah un directorio para cada base. Programa\PostgreSQL\8.1\data\Base.

En Windows

PostgreSQL almacena los archivos de las bases de datos en el directorio C:\Archivos de

Cada tabla es considerada un archivo, as como los ndices. Los nombres de las tablas pertenecientes al sistema llevan el prefijo pg_. Por ejemplo, el archivo PG_VERSION (presente en cada base de datos) contiene la versin mayor con la que fue creada la base y al cambiar de versin de PostgreSQL es importante respaldar este archivo. A continuacin se muestra el contenido de las tablas que PostgreSQL utiliza como catlogos para mantener el sistema. Cada base de datos que se crea, tiene estas mismas tablas, salvo la primera (pg_database) que es nica para todas las bases de datos:
Nombre tabla Descripcin (que almacena) pg_database pg_class pg_attribute pg_index Bases de datos Clases o tablas Atributos o campos de la clase o tabla ndices secundarios

- Pg. 112 -

Anl. Mauricio Arvalo M.

Nombre tabla Descripcin (que almacena) pg_proc pg_type pg_user pg_operator Procedimientos Tipos de datos (del sistema y definidos por el usuario) Usuarios de PostgreSQL Operadores (del sistema y definidos por el usuario)

Tabla 5.2: Contenido de las tablas que se usan como catlogos del sistema

Por ejemplo, para saber que bases de datos hay en el sistema se ejecuta la consulta:
SELECT * FROM pg_database;

Para saber que tablas tengo en la base de datos actual:


SELECT * FROM pg_class;

Si slo queremos saber cuantos registros tiene una tabla, consultamos:


SELECT relname,reltuples FROM pg_class WHERE relname=mitabla;

5.3.2. Tipos de Datos Como todos los manejadores de bases de datos, PostgreSQL implementa los tipos de datos definidos para los estndares SQL/92 y SQL3 (SQL/99) y aumenta algunos otros. Algunos de estos tipos de datos se muestran en las tablas que estn a continuacin:
Tipo en Postgres Correspondiente en SQL3 Descripcin Bool Char(n) Date Float8 int2 int4 boolean character(n) date real, double precision smallint int, integer valor lgico o booleano (true/false) cadena de carcteres de tamao fijo fecha (sin hora) nmero de punto flotante de doble precisin entero de dos bytes con signo entero de cuatro bytes con signo

- Pg. 113 -

Anl. Mauricio Arvalo M. Tipo en Postgres Correspondiente en SQL3 Descripcin money Time timespan timestamp varchar(n) decimal(9,2) time interval timestamp with time zone character varying(n) cantidad monetaria hora en horas, minutos, segundos y centsimas intervalo de tiempo fecha y hora con zonificacin cadena de caracteres de tamao variable

Tabla 5.3: Tipos de datos del Estndar SQL3 en PostgreSQL

Tipos de datos extendidos en PostgreSQL Tipo Box Cidr circle Inet int8 Line Lseg Path point Descripcin caja rectangular en el plano direccin de red o de host en IP versin 4 crculo en el plano direccin de red o de host en IP versin 4 entero de ocho bytes con signo lnea infinita en el plano segmento de lnea en el plano trayectoria geomtrica, abierta o cerrada, en el plano punto geomtrico en el plano

polygon trayectoria geomtrica cerrada en el plano serial identificador numrico nico con autoincremento

Tabla 5.4: Tipos de datos Extendidos en PostgreSQL

5.4.

Ventajas y Desventajas de PostgreSQL

5.4.1. Ventajas

PostgreSQL es un sistema de gestin de bases de datos relacionales Open Source (de cdigo abierto), gratuito y que al tener licencia de tipo BSD, nos permite manejar
- Pg. 114 -

Anl. Mauricio Arvalo M.

libremente el cdigo fuente del gestor de bases de datos PostgreSQL, mejorando u optimizando su cdigo. Incluso se permite redistribuirlo como producto comercial y combinarlo con herramientas de licencia propietaria.

Al sustituir los bloqueos de tabla por el control de concurrencia MVCC (Control de Concurrencia Multi-Versin), se permite a los accesos de slo lectura continuar leyendo datos consistentes durante la actualizacin de registros, permitiendo tambin copias de seguridad en caliente (mediante la aplicacin pg_dump) mientras la base de datos permanece disponible para consultas.

Se han implementado importantes caractersticas al motor de datos, incluyendo subconsultas, valores por defecto, restricciones a valores en los campos (constraints), disparadores (triggers), etc.

Se ha incluido un sistema de reglas consistente en modificar las consultas de acuerdo a reglas almacenadas como parte de la base de datos.

Posee manejo y control de transacciones para asegurar la consistencia de los datos. Soporta los tipos de datos, clusulas, funciones y comandos de tipo estndar SQL92/SQL99 y extendidos propios de PostgreSQL. Los tipos de datos internos han sido mejorados incluyendo nuevos tipos.

Para una fcil conectividad al servidor PostgreSQL, se implementa un ODBC (Open Database Connectivity) llamado psqlODBC, que es un API de interfaz entre clientes y servidores de bases de datos PostgreeSQL. Adems se tiene el proveedor de acceso a datos Npgsql que es utilizado en aplicaciones que usan la plataforma .Net para acceder y manipular bases de datos PostgreSQL.

PostgreSQL puede operar sobre distintas plataformas incluyendo Linux, Unix, MacOS X, Solaris y ltimamente Windows.

Soporta replicacin de bases de datos asncrona, realizando primero las transacciones en un servidor maestro para que se puedan actualizar en los servidores esclavos dando alta disponibilidad al sistema.

- Pg. 115 -

Anl. Mauricio Arvalo M.

Se han aadido caractersticas adicionales que cumplen el estndar SQL92, incluyendo claves primarias y forneas para asegurar reglas de integridad referencial, identificadores entrecomillados, conversin de tipos de datos, etc.

Posee un buen sistema de seguridad mediante la gestin de usuarios, grupos de usuarios, permisos y contraseas.

Posee una gran capacidad de almacenamiento. Posee ciertas caractersticas de orientacin a objetos, como la herencia entre tablas. Tiene una arquitectura Cliente Servidor. Tiene algunas herramientas o aplicaciones para gestionar o administrar el servidor y sus bases de datos con interfaces grficas e intuitivas o en modo de lnea de comandos.

La velocidad del motor de bases de datos ha sido incrementada aproximadamente en un 20 a 40%, y su tiempo de arranque ha bajado al 80% desde que la versin 6.0 fue lanzada.

Tiene una buena escalabilidad ya que es capaz de ajustarse al nmero de CPUs y a la cantidad de memoria que posee el sistema de forma ptima, soportando una mayor cantidad de peticiones simultneas a la base de datos de manera correcta; se dice que PostgreSQL ha llegado a soportar el doble de carga de lo que soporta MySQL15.

5.4.2. Desventajas

Consume ms recursos que MySQL, por lo que se necesitan mayores caractersticas de hardware para ejecutarlo.

Aproximadamente es 2 veces ms lento que MySQL (aunque en la prctica no se nota esta diferencia).

15

Fragmento tomado de http://www.netpecos.org/docs/mysql_postgres/index.html - Pg. 116 -

Anl. Mauricio Arvalo M.

PostGreSQL es un magnfico gestor de bases de datos, capaz de competir con muchos gestores comerciales, aunque el primer encuentro con este gestor es un poco duro, ya que la sintaxis de algunos de sus comandos o sentencias no es nada intuitiva, sin embargo existe una amplia documentacin en su sitio web (http://www.postgresql.org) o en la ayuda de PostgreSQL (aplicacin psql y documentacin de PostgreSQL).

5.5.

Gestin de Bases de Datos PostgreSQL


Para la administracin de un servidor de bases de datos PostgreSQL existen

herramientas libres y gratuitas con interfaces grficas e intuitivas para la administracin completa de bases de datos PostgreSQL, entre estas herramientas estn PhpPgAdmin o el PgAdmin y herramientas comerciales como PostgreSQL Manager. Tambin hay una variedad de herramientas para la administracin de bases de datos PostgreSQL en modo consola, como el terminal de cliente interactivo de postgreSQL psql, o las aplicaciones pg_dump y pg_restore para realizar copias de seguridad y restauracin de bases de datos, o las herramientas para crear y eliminar bases de datos como cretedb, dropdb, y otras ms generalmente ubicadas en el directorio \bin dentro del directorio donde se instal PostgreSQL. A continuacin describo sus principales caractersticas:

5.5.1. psql Asumiendo que PostgreSQL ya ha sido instalado e iniciado exitosamente, la herramienta principal para trabajar en modo lnea de comandos con PostgreSQL es psql. Con psql tenemos una herramienta completa para poder manipular las bases de datos PostgreSQL mediante comandos DML (Lenguaje de Manipulacin de datos) y DDL (Lenguaje de definicin de datos). Psql viene incorporado en la instalacin del paquete PostgreSQL para Windows o Linux que se descarga desde el sitio web http://www.postgresql.org/download/ y con el mismo tipo de licencia que el paquete

PostgreSQL, es decir BSD (Berkeley Software Distribution). Este programa cuenta con ayuda

- Pg. 117 -

Anl. Mauricio Arvalo M.

en lnea, por medio de la instruccin \? o \h para examinar la sintaxis de los comandos SQL y se instala en el directorio \bin dentro del directorio de instalacin de PosgreSQL. Esta aplicacin se la inicia en la lnea de comandos del sistema operativo, escribiendo su nombre (psql) con la siguiente sintaxis:
psql [opciones] [nombre_base_datos]

Como podemos ver, psql acepta opciones en la lnea de comandos al momento de invocar a la aplicacin, entre las que estn: OPCION -c Consulta -d base_datos -e -E -f nombre_arch -F separador -h host -l -o nombre_arch -p puerto -q -t -u SIGNIFICADO Ejecuta una consulta. Especifica la base de datos. Hace eco de la consulta enviada al servidor. Hace eco de todas las consultas enviadas al servidor. Usa un archivo como fuente de consultas SQL. Coloca el separador de campos (por defecto es '|'). Especifica el host del servidor. Lista las bases de datos disponibles. Guarda los resultados en el archivo especificado. Especifica el nmero de puerto para habilitar la comunicacin entre procesos clientes (frontend) y servidores (backend o postmaster). Ejecuta las consultas sin mostrar mensajes. No muestra cabeceras ni contadores de filas. Pregunta por un nombre de usuario y una contrasea para la autentificacin en el sistema.
Tabla 5.5: Cliente psql

Entre las opciones ms tiles a mi parecer, estn -h servidor (conexin al host servidor) y -d base_datos (especificar la base de datos), en cuyo caso tambin podemos indicarle la opcin -u para que nos solicite el usuario y la contrasea, como se muestra a continuacin:
psql -h servidor -d base_datos -u Username: fml Password:

Otra opcin muy til es -l para listar todas las bases existentes, por ejemplo:
- Pg. 118 -

Anl. Mauricio Arvalo M. psql -h servidor -l -u Username: fml Password: datname |datdba|encoding|datpath ------------+------+--------+-----------template1 | 100| 0|template1 postgres | 100| 0|postgres plpgsql_test| 0| 0|plpgsql_test dbarc | 500| 0|dbarc zapatos | 500| 0|zapatos pruebas | 500| 0|pruebas fml | 534| 0|fml mancha | 500| 0|mancha antiguedades| 500| 0|antiguedades (17 rows)

La informacin que se interpreta en psql se organiza en filas para identificar cada registro y en columnas, para identificar cada campo con sus etiquetas; adems cada comando o sentencia escrita debe terminar con el caracter ; (punto y coma) como en la consulta que muestro a continuacin:

CONSULTA SQL

ETIQUETAS (CAMPOS O COLUMNAS)

RESULTADOS (DATOS)

Figura 5.2: Estructura del Cliente psql

- Pg. 119 -

Anl. Mauricio Arvalo M.

Para salir de psql utilizamos la opcin \q. Cabe mencionar que psql utiliza una biblioteca llamada readline, por la cual cuenta con edicin en la lnea de comandos.

5.5.2. pg_dump y pg_dumpall Las herramientas clientes pg_dump y pg_dumpall nos ayudan tanto para respaldar las tablas o bases de datos o para migrarlas de un sistema a otro en un formato transportable. Estas utilidades vienen incluidas en el paquete de instalacin PostgreSQL para Windows o Linux y tienen el mismo tipo de licencia que el paquete PostgreSQL, es decir BSD (Berkeley Software Distribution). Se instalan en el directorio \bin dentro del directorio de instalacin de PosgreSQL. La utilidad pg_dump apareci en la versin release 0.02 de Postgres95, pero se mejor desde la versin de PostgreSQL release 7.1. En algunos casos al actualizar la versin de PostgreSQL ser necesario primero respaldar las tablas con estas herramientas para posteriormente volverlas a cargar; pg_dump se emplea para respaldar una base de datos o una tabla en particular, mientras que pg_dumpall respalda todas las bases de datos del sistema. Su sintaxis es la siguiente:
pg_dump [opciones.] [nombre_base_datos]

A continuacin muestro algunas de sus opciones ms tiles: -a: Respalda solo los datos en un archivo de texto plano, no las definiciones (esquema). -f formato: Selecciona el formato de salida para el archivo; este formato puede ser: p: Es el formato predeterminado; el archivo se genera en un archivo plano de texto de tipo SQL script. t: La salida se genera en un archivo .tar; este formato puede ser modificado en la entrada del programa que recupera respaldos pg_restore. Usando este formato de archivo se permite excluir objetos de la base de datos en el momento en que se restaura.

- Pg. 120 -

Anl. Mauricio Arvalo M.

c: El archivo de salida se genera en un formato modificable para la entrada en el programa pg_restore. Este es el formato ms flexible para reordenar la carga de datos con las definiciones de los objetos (esquema). Este formato se comprime por defecto. -s: Solamente respalda el esquema de la base de datos (definiciones de objetos), no los datos. -t tabla: Respalda los datos y el esquema de la tabla especificada.

La forma ms general de emplear pg_dump para respaldar slo una tabla, es la siguiente:
pg_dump -t mitabla mibase > mibase.mitabla.dump

Con lo cual en el archivo mibase.mitabla.dump tenemos un archivo con los datos y el esquema de la tabla mitabla para poder recuperar toda la informacin de la misma. Al respaldar una tabla de esta manera, lo primero que hace pg_dump es tratar de identificar al usuario creador de la tabla, luego crea la tabla, fija los permisos existentes, copia los datos y finalmente crea el ndice si es que la tabla tiene un ndice asociado. Es mejor comprimir los archivos para ocupar el mnimo espacio posible. Por ejemplo, podemos hacerlo as:
pg_dump -t mitabla mibase | gzip -9c > mibase.mitabla.dump.gz pg_dump -t mitabla mibase | bzip2 -c > mibase.mitabla.dump.bz

Ambos programas de compresin (gzip y bzip2) pueden ser consultados con el sistema man (de manual) en Linux. Para recuperar la informacin en la base de datos, podemos emplear la siguiente instruccin en la lnea de comandos:
gunzip -c mibase.mitabla.dump.gz bunzip2 -c mibase.mitabla.dump.bz

- Pg. 121 -

Anl. Mauricio Arvalo M.

5.5.3. pg_restore Esta herramienta restaura o recupera una base de datos PostgreSQL desde un archivo creado con la herramienta pg_dump. Pg_restore apareci por primera vez en la versin 7.1 de PostgreSQL. Al igual que las anteriores, esta utilidad se instala en el directorio \bin dentro del directorio de instalacin de PosgreSQL y tiene el mismo tipo de licencia (BSD) que el paquete PostgreSQL. Esta utilidad restaura una base de datos de PostgreSQL desde un archivo especificado, este archivo guarda los comandos SQL necesarios para reconstruir la base de datos al estado en el cual fue guardada o respaldada y su sintaxis es:
pg_restore [opciones] [nombre_archivo_a_restaurar]

Algunas opciones que tiene pg_restore son las siguientes: -a: Recupera solamente los datos, no el esquema o definicin de objetos. -d nombre_db: Se conecta a la base de datos especificada y recupera directamente los datos en la misma. -e: Termina la operacin si ocurre un error mientras se envan los comandos SQL para restaurar la base de datos. Por defecto, si se encuentra un error en la operacin, contina la recuperacin y al final se muestra un contador y una descripcin de los errores ocurridos. -f formato: Especifica el formato del archivo, esta opcin no es necesaria ya que pg_restore determina el formato de manera automtica. El formato del archivo puede ser uno de los siguientes: t: El archivo es un archivo .tar. Usando este formato de archivo se permite excluir objetos de la base de datos en el momento en que se restaura. c: El formato de archivo se puede modificar en pg_restore. Este es el formato ms flexible para reordenar la carga de datos con las definiciones de los objetos (esquema). Este formato se comprime por defecto.
- Pg. 122 -

Anl. Mauricio Arvalo M.

-s: Solamente recupera el esquema de la base de datos (definiciones de objetos), no los datos. -t tabla: Recupera la definicin y/o los datos de la tabla especificada. A continuacin muestro un ejemplo respaldando una base de datos llamada mydb con pg_dump y luego la restauro con pg_restore en una nueva base de datos llamada newdb:
pg_dump -ft mydb > db.tar pg_restore -d newdb db.tar

5.5.4. createdb y dropdb Una de las primeras operaciones para probar la conexin y correcta instalacin del servidor de bases de datos PostgreSQL es crear una base de datos. Para crear una base de datos se puede utilizar la aplicacin createdb y para eliminarla del servidor se utiliza dropdb. Estas aplicaciones se instalan en el directorio \bin dentro del directorio de instalacin de PosgreSQL y su sintaxis es la siguiente:
createdb nombre_base_datos dropdb nombre_base_datos

Un ejemplo de como crear una base de datos (mydb) mediante la aplicacin createdb se muestra a continuacin:
createdb mydb

Createdb es una aplicacin alternativa al comando SQL CREATE DATABASE y luego de ejecutarse esta aplicacin se muestra la respuesta CREATE DATABASE. Si se recibe un mensaje similar a createdb: command not found puede ser porque PostgreSQL no fue instalado apropiadamente o porque no se encuentra la ruta de la aplicacin en el directorio \bin del directorio de instalacin de PostgreSQL, entonces se debe probar escribiendo la ruta completa en donde se encuentra la aplicacin y ejecutarla.

- Pg. 123 -

Anl. Mauricio Arvalo M.

En Linux por ejemplo, la aplicacin createdb se encuentra en mientras que en Windows se encuentra en programa\PostgreSQL\8.1\bin\createdb. Otra respuesta de error al ejecutar createdb puede ser la siguiente:
psql: could not connect to server: Connection refused Is the server running on host "nombre_server" and accepting TCP/IP connections on port 5432?

/usr/bin/createdb C:\Archivos de

En cuyo caso deberemos revisar los archivos de configuracin de PostgreSQL (pg_hba.conf, pg_ident.conf y postgresql.conf) ubicados en el directorio /Data donde se instal el servidor PostgreSQL o debemos reinstalar el servidor PostgreSQL porque no se puede establecer una conexin al servidor. Para eliminar una base de datos fsicamente del servidor se utiliza la aplicacin dropdb, la misma que es una aplicacin alternativa al comando SQL DROP DATABASE. Al eliminar una base de datos se eliminan tambin todos los objetos que contiene la base de datos, adems se debe tener cuidado porque no se puede recuperar una base de datos una vez que esta se elimine.

5.5.5. Postmaster y pg_ctl Luego de instalar PostgreSQL y antes de acceder a cualquier base de datos se debe arrancar el servidor PostgreSQL. Esta operacin se la puede realizar mediante el programa llamado postmaster, indicndole al mismo donde se encuentra el directorio \Data de PostgreSQL mediante la opcin -D. Este programa se encuentra en el directorio bin donde se instal PostgreSQL (/usr/bin/postmaster) y la manera ms comn de arrancar el servidor mediante la aplicacin postmaster es:
postmaster -D /var/lib/pgsql/data

- Pg. 124 -

Anl. Mauricio Arvalo M.

Pg_ctl es una aplicacin incluida tambin en el directorio bin donde se instala PostgreSQL, y se proporciona para simplificar algunas tareas como iniciar y detener al servidor PostgreSQL. Por ejemplo:
pg_ctl start -l logfile

Esta operacin arranca el servidor y coloca las transacciones en el archivo especificado (logfile). La opcin de -D le indica al servidor PostgreSQL donde se encuentra el directorio \Data que es donde normalmente se guardan las bases de datos.

5.5.6. PgAdmin PgAdmin es una aplicacin con interfaz grfica comprensible para el diseo y administracin total de bases de datos PostgreSQL; esta aplicacin est diseada para ejecutarse en sistemas operativos como GNU/Linux y Windows 2000, XP o 2003. PgAdmin versin 3 se ejecuta desde la versin de la base de datos PostgreSQL 7.3 y superiores. Para versiones anteriores de la base de datos, se debe usar la versin de PgAdmin2.

Figura 5.3: Ventana de PgAdmin

- Pg. 125 -

Anl. Mauricio Arvalo M.

PgAdmin se distribuye libremente bajo licencia de tipo GNU separadamente de PostgreSQL y se puede descargar su ltima versin (PgAdmin3-1.4.3) desde el sitio web http://www.pgadmin.org/download/ en las versiones para Linux o Windows. En la versin del servidor PostgreSQL 8.1.4 para Windows, que fue la que descargue en el momento que realic la presente monografa, se instala junto con el servidor de bases de datos la herramienta PgAdmin III en su versin 1.4.2 lanzada en marzo del 2006. La versin de PgAdmin III contiene las siguientes caractersticas: Esquema de navegacin de todos los objetos de PostgreSQL. Dilogos de creacin y propiedades de objetos (usuarios, tablas, bases de datos, disparadores, etc.). Herramienta de edicin/visualizacin de tablas. Habilidad para navegar y conectarse a mltiples servidores a la vez. Interfaz de usuario intuitiva y traducida a ms de 20 idiomas. La ventana principal muestra la estructura de la base de datos y todos los detalles de los objetos contenidos en la misma. Se puede controlar o administrar los usuarios de las bases de datos, manejando los privilegios, usuarios, grupos y contraseas. Permite llevar un control sobre el estado del servidor de bases de datos, permitiendo iniciarlo o detenerlo. Posee una herramienta avanzada para consultas, permitiendo ejecutar cualquier sentencia SQL. Permite exportar datos en distintos formatos a partir de una consulta SQL generada. Permite ver y editar los datos de una consulta a una tabla o vista. Tiene una herramienta de Mantenimiento que ejecuta tareas como reconstruir las estadsticas de las bases de datos y tablas, limpiar o eliminar los datos sin usar y reorganizar los ndices. Permite sacar copias o respaldos de las bases de datos y restaurarlas haciendo uso de las herramientas pg_dump y pg_restore de PostgreSQL. La ventana del estado del servidor muestra los usuarios actualmente conectados, los bloqueos y caractersticas del servidor seleccionado.

- Pg. 126 -

Anl. Mauricio Arvalo M.

5.5.7. PhpPgAdmin PhpPgAdmin es una herramienta con una interfaz Web bastante potente que nos permite administrar los servidores de bases de datos PostgreSQL, esta aplicacin est escrita en PHP con la intencin de manejar la administracin de PostgreSQL a travs de pginas Web, utilizando Internet y fue basado en otro producto visto anteriormente llamado phpMyAdmin, que provee las mismas funcionalidades a los usuarios del servidor de base de datos MySQL. PhpPgAdmin es un cliente web que ofrece una manera conveniente de crear objetos como bases de datos, tablas, usuarios, funciones, vistas, disparadores, etc., alterarlos o consultar sus datos usando el estndar SQL. Esta aplicacin se la puede descargar desde el sitio web

http://phppgadmin.sourceforge.net/?page=download y su ltima versin estable es la 4.0.1 publicada en noviembre del 2005. Es una herramienta de cdigo abierto (Open Source) con licencia de tipo GPL siendo creada y distribuida por la empresa SourceForge. Entre sus principales caractersticas tenemos: PhpPgAdmin puede administrar mltiples servidores PostgreSQL. Soporta las versiones de PostgreSQL 7.0.x, 7.1.x, 7.2.x, 7.3.x, 7.4.x, 8.0.x y 8.1.x Permite la fcil administracin de usuarios y grupos, bases de datos, tablas, ndices, triggers o disparadores, reglas, privilegios, vistas, secuencias, funciones, etc. Permite una fcil manipulacin de los datos, con un buscador de tablas, vistas y reportes. Permite la ejecucin de la mayora de comandos SQL de manipulacin (DML) y definicin de datos (DDL). Puede exportar e importar los datos en una variedad de formatos: SQL, XML, XHTML o CSV. Tiene una fcil instalacin y configuracin. Para que funcione, debemos tener configurado PHP (Lenguaje Preprocesador de Hipertexto) e instalado el servidor PostgreSQL. Procederemos luego a descomprimir el
- Pg. 127 -

Anl. Mauricio Arvalo M.

fichero descargado en nuestro servidor Web (puede ser puede ser Apache, Personal Web Server, Internet Information Server) y ya podremos entrar en la consola de PhppgAdmin. PhpPgAdmin funciona con versiones de PHP 4.1 o superiores, pero se recomienda 4.3 porque ofrece ms funcionalidad Luego seleccionamos el lenguaje y la base de datos con la que se va a trabajar; existen algunas opciones administrativas en PhppgAdmin como administrar las bases de datos, los privilegios, exportar e importar informacin de un modo sencillo y remoto, entre otras; realizando de manera fcil, rpida e intuitiva la mayora de tareas de gestin de las bases de datos PostgreSQL desde cualquier lugar va Internet. Una prueba de esta aplicacin se la puede encontrar accediendo a la pgina http://phppgadmin.kattare.com/phppgadmin4/, la misma que usa Phppgadmin para probar la administracin remota de bases de datos PostgreSQL, se escoge la base de datos para administrarla y se digita el usuario phppgadmin y la contrasea webdb.

Figura 5.4: Ventana de PhpPgAdmin

- Pg. 128 -

Anl. Mauricio Arvalo M.

5.5.8. EMS SQL Manager para PostgreSQL SQL Manager es una herramienta de alto desempeo para administrar un servidor de bases de datos PostgreSQL, trabaja con cualquier versin de la base de datos a partir de la 8.0 y soporta todas las caractersticas de PostgreSQL. SQL Manager dispone de una interfaz grfica de usuario que nos permite administrar las bases de datos de una manera eficiente, segura y rpida. Entre sus principales caractersticas tcnicas estn las siguientes:

Soporte completo desde la versin 8.1 de PostgreSQL. Interfaz grfica de usuario (GUI). Manejo y administracin rpida de la base de datos. Manejo de todos los objetos PostgreSQL. Posee herramientas avanzadas para la manipulacin de datos. Posee un efectivo administrador de seguridad. Tiene excelentes herramientas visuales y de texto para generar consultas. Capacidad de exportar e importar datos. Posee una poderosa herramienta visual para disear las bases de datos. Fcil uso de tareas de mantenimiento de bases de datos mediante asistentes. Esta herramienta es comercial pero se puede descargar la versin de prueba desde su

sitio web http://www.sqlmanager.net/. SQL Manager para PostgreSQL es una herramienta con licencia propietaria y los derechos de autor le pertenecen a la empresa EMS, que se dedica a brindar soluciones para poder trabajar de mejor manera con distintos manejadores de bases de datos, que en este caso son herramientas diseadas para trabajar con PostgreSQL. En la misma pgina Web de SQL Manager se pueden descargar las siguientes herramientas con interfaz grfica, que son muy tiles para una administracin completa de la base de datos:

Data Export para PostgreSQL: herramienta para exportar datos. Data Import para PostgreSQL: herramienta para importar datos. Data Pump para PostgreSQL : herramienta para generar respaldos o copias. DB Comparer for PostgreSQL: herramienta para comparar bases de datos y encontrar diferencias en su estructura.

- Pg. 129 -

Anl. Mauricio Arvalo M.

DB Extract for PostgreSQL: Es una utilidad para generar respaldos de bases de datos en archivos scripts SQL. SQL Query for PostgreSQL: herramienta para generar consultas complejas.

La versin Enterprise, que viene con EMS SQL Manager y todos los productos de la lista anterior cuesta 475 dlares mientras la versin Estndar, que viene con SQL Manager pero con menos aplicaciones adicionales, tiene un costo de 420 dlares. Si solamente se desea la aplicacin EMS SQL Manager tiene un costo de 275 dlares.

Figura 5.5: Ventana de EMS SQL Manager

Esta herramienta solamente est disponible en su versin SQL Manager 2005 para Microsoft Windows.

- Pg. 130 -

Anl. Mauricio Arvalo M.

5.6.

Instalacin de PostgreSQL
Existen versiones de PostgreSQL para instalarse sobre plataformas diferentes como

Linux, Solaris o Windows Actualmente la ltima versin de PostgreSQL disponible para descargar desde su sitio web (http://www.postgresql.org/download/) es la 8.1, liberada el 8 de noviembre del 2005 en versiones para Linux o Windows. Despus de haber decidido la versin de PostgreSQL a instalar, se debe elegir entre una distribucin binaria o una de cdigo fuente (source). Existen distribuciones binarias de la versin 8.1 de PostgreSQL disponibles para descargar en ficheros RPM para Linux y ficheros comprimidos Zip para Windows.

Figura 5.6: Pgina Web de descargas de PostgreSQL

La instalacin de PostgreSQL para Windows y Linux la he realizado sobre una mquina con un procesador Intel Movile de 1.7GHz, 1Gb de memoria RAM y 40Gb de espacio en Disco Duro, aunque los requerimientos de hardware para instalar PostgreSQL 8.1 son una mquina con un mnimo de 32 Mb de memoria RAM, un procesador Intel Celeron (o
- Pg. 131 -

Anl. Mauricio Arvalo M.

superior) que soporte sistemas operativos de 32 bits a una velocidad considerable y un disco duro, que su tamao est calculado segn el espacio que ocupen las bases de datos que tenga el sistema, pero para la instalacin de PostgreSQL se necesitan aproximadamente unos 60Mb de espacio libre. Para la instalacin de PostgreSQL en los dos sistemas operativos (Windows y Linux), instal previamente los sistemas operativos Microsoft Windows XP Service Pack 2 como sistema operativo de la mquina y la distribucin de Linux Fedora Core 5, utilizando la aplicacin VMware WorkStation versin 5.0.0 para que Linux Fedora funcione en una mquina virtual y pueda interactuar mediante una red virtual entre las dos mquinas (Linux y Windows) administrando desde Windows una base de datos PostgreSQL instalada en Linux. En la versin de PostgreSQL 8.1 para Windows viene incluida la aplicacin PgAdmin junto con el servidor de bases de datos PostgreSQL para una administracin grfica, sencilla y completa de las bases de datos PostgreSQL, incluyndose tambin en la instalacin los controladores para acceso a datos psqlODBC y Npgsql; mientras que en el sistema operativo Linux Fedora Core 5 viene incluida solamente una instalacin del servidor PostgreSQL 8.1, que hay que seleccionarla en el momento de la instalacin de Fedora Core 5 y si se requieren otras aplicaciones de administracin con interfaz grfica como PgAdmin o PhpPgAdmin, hay que descargarlas desde sus sitios web e instalarlas por separado. que pueda ser administrado desde Windows. Luego de realizar la instalacin de PostgreSQL en Windows y Linux, presento la configuracin del servidor para

5.6.1. Instalacin sobre Windows Para instalar el servidor PostgreSQL sobre Windows se necesita un sistema operativo Windows de 32 bits, tal como 9x, Me, NT, 2000, XP, o Windows Server 2003. Aunque se recomienda el uso de un sistema operativo Windows basado en NT (NT, 2000, XP, 2003). Adems es necesaria una herramienta capaz de leer ficheros .zip, para descomprimir el fichero de distribucin.

- Pg. 132 -

Anl. Mauricio Arvalo M.

Al

momento de desarrollar la presente monografa, la ltima versin estable de

PostgreSQL para Microsoft Windows es la 8.1, con la que realice las pruebas; el fichero comprimido descargado desde el sitio web (http://www.postgresql.org/download/) se llama postgresql-8.1.4-1.zip, luego se lo descomprime mediante la aplicacin WinZip o una herramienta compatible y entre los cuatro archivos que contiene, se ejecuta el fichero de instalacin postgresql-8.1.msi, el mismo que instalar el servidor de bases de datos PostgreSQL, la herramienta de administracin grfica PgAdmin, el controlador de ODBC (Open Database Connectivity) llamado psqlODBC y el proveedor de acceso a datos para .Net llamado NpgSQL mediante un asistente con interfaz grfica, facilitando de esta manera el proceso de instalacin.

Figura 5.7: Ficheros de la descarga de PostgreSQL para Windows

Los pasos que se siguen con el asistente para la instalacin de PostgreSQL son: Primero seleccionamos el idioma de la instalacin:

Figura 5.8: Idioma de la instalacin - Pg. 133 -

Anl. Mauricio Arvalo M.

Luego aceptamos los trminos que tiene la licencia de software libre de tipo BSD (Berkeley Software Distribution) bajo la que se distribuye PostgreSQL:

Figura 5.9: Notas sobre la licencia de PostgreSQL

A continuacin elegimos las aplicaciones que vamos a instalar (el servidor PostgreSQL, las interfaces psql y PgAdmin y los controladores psqlODBC y Npgsql):

Figura 5.10: Aplicaciones de PostgreSQL

- Pg. 134 -

Anl. Mauricio Arvalo M.

Elegimos instalar el servidor de bases de datos como un servicio y establecemos un usuario (account name) y una contrasea (password) para el administrador de servicios; si el usuario no existe, se crear:

Figura 5.11: Servicio y usuario de PostgreSQL

Si la contrasea es muy fcil de piratear, nos sugiere una aleatoria. No hay problema si escogemos la que digitamos o la aleatoria sugerida. Luego definimos los parmetros de configuracin (principalmente el super-usuario y la contrasea):

Figura 5.12: Parmetros de configuracin PostgreSQL

- Pg. 135 -

Anl. Mauricio Arvalo M.

Elegimos el lenguaje usado como lenguaje procedural o de Script (PL/pgsql) para programar los procedimientos almacenados en PostgreSQL:

Figura 5.13: Elegir el lenguaje

Seleccionamos los mdulos opcionales de contribuciones, en este caso dej los mdulos que vienen seleccionados por defecto en PostgreSQL:

Figura 5.14: Mdulos Adicionales

El asistente estar listo para instalar el servidor PostgreSQL con las configuraciones indicadas, y al finalizar la instalacin debemos verificar los programas instalados en el men Inicio-Programas-PostgreSQL 8.1, para finalmente reiniciar el equipo.
- Pg. 136 -

Anl. Mauricio Arvalo M.

Figura 5.15: Finalizacin de la Instalacin

5.6.2. Instalacin sobre Linux Para instalar PostgreSQL sobre el sistema operativo Linux utilic la distribucin del sistema Linux Fedora Core 5 y lo instal como una mquina virtual con la aplicacin VMware Workstation 5.0.0 ejecutndose sobre Windows para realizar pruebas con bases de datos PostgreSQL instaladas sobre la mquina con el sistema Linux Fedora Core 5; de esta manera puedo administrar las bases de datos PostgreSQL que se encuentran en el equipo con Linux, mediante la herramienta PgAdmin desde Windows a travs de una red virtual creada por la aplicacin VmWare Workstation. El Proyecto Fedora (Distribucin Linux bajo licencia GPL) es un sistema operativo de software libre, resultado de una fusin entre Red Hat Linux y el antiguo Proyecto Fedora Extras, producindose el denominado sistema Fedora Core y est patrocinado oficialmente por la empresa Red Hat, aunque es de libre distribucin.

- Pg. 137 -

Anl. Mauricio Arvalo M.

Escog esta distribucin de Linux por su facilidad de instalacin y configuracin, siendo su ltima versin estable la Core 5, publicada el 20 de marzo del 2006, y se lo puede descargar desde sitios web como www.fedoraproject.org o www.fedora.redhat.com. En Linux Fedora Core 5 viene ya integrado el servidor PostgreSQL versin 8.1 por lo que solamente es necesario que se lo escoja como un paquete ms en el momento de la instalacin del sistema operativo, como se muestra en la siguiente figura:

Figura 5.16: Instalacin del Servidor PostgreSQL cuando se instala Fedora Core 5

Figura 5.17: Aadir el usuario y contrasea para el usuario postgres

- Pg. 138 -

Anl. Mauricio Arvalo M.

Luego de instalar el paquete de Postgresql junto con el sistema operativo, ingres al sistema como superusuario root, aad el usuario postgres al sistema mediante las clusulas adduser y passwd para establecer su contrasea en la lnea de comandos. Este usuario es habilitado en el sistema operativo y como superusuario del servidor PostgreSQL cuando se escoge instalar el paquete PostgreSQL en la instalacin de Fedora. A continuacin para probar en el mismo equipo que el servidor PostgreSQL est funcionando correctamente, cerr la sesin e ingres nuevamente al sistema con el usuario creado (postgres) que es el superusuario de PostgreSQL. Ingres al Terminal de lnea de comandos y cre una base de datos mediante la aplicacin createdb que se incluye con PostgreSQL; luego se pueden crear, modificar o eliminar objetos de esa base de datos mediante sentencias SQL usando la aplicacin psql, que como se explic anteriormente es el Terminal interactivo de PostgreSQL para su administracin.

Figura 5.18: Crear una base de datos y una tabla para probar el servidor PostgreSQL

Sin embargo, para distribuciones de Linux que no tengan instalado el paquete de PostgreSQL, existen descargas binarias del servidor PostgreSQL y sus paquetes adicionales
- Pg. 139 -

Anl. Mauricio Arvalo M.

para algunas distribuciones de Linux en paquetes RPM (RedHat Package Manager) en el sitio web http://www.postgresql.org/download/. Escogemos el paquete o paquetes de instalacin que pertenezcan a nuestra distribucin de Linux, con la versin ms reciente y los descargamos. Existen varios paquetes RPMs en cada distribucin de PostgreSQL para Linux, pero si queremos instalar el servidor PostgreSQL, instalaremos los paquetes postgre-libs, postgresql y postgresql-server, identificados con la versin de PostgreSQL que queramos instalar. Estos paquetes contienen respectivamente las libreras compartidas de PostgreSQL, los programas clientes para administrar las bases de datos y el servidor PostgreSQL. Para instalar solamente un cliente de PostgreSQL, se instalarn los paquetes postgre-libs y postgresql. Antes de instalar en el sistema dichos paquetes, creamos al usuario postgres, que ser el encargado de manejar la base de datos con las sentencias:
useradd postgres passwd postgres

Instalamos los paquetes del servidor PostgreSQL para llevar a cabo la instalacin bsica del paquete que contiene al servidor PostgreSQL. muestra a continuacin:
(rpm -ivh paquete_nombre_version.rpm)

Para instalarlos se debe ejecutar el

comando rpm con las opciones y el orden indicados desde la lnea de comandos como se

rpm -ivh postgresql-server-8.1.4-3PGDG.i686.rpm rpm -ivh postgresql-libs-8.1.4-3PGDG.i686.rpm rpm -ivh postgresql-8.1.4-3PGDG.i686.rpm

Cabe sealar que el comando de instalacin rpm16 tiene las opciones ivh para instalar los paquetes, -Uvh para actualizar los paquetes y para desinstalar un paquete RPM se utiliza la opcin e, pero antes se debe detener el servicio de PostgreSQL.

16

Ms opciones sobre el instalador rpm las podemos encontrar digitando el comando rpm -help.

- Pg. 140 -

Anl. Mauricio Arvalo M.

Tambin se debe saber que en la mayora de distribuciones de Linux, los archivos de PostgreSQL se guardan en las ubicaciones mostradas en la siguiente tabla17:

Tabla 5.6: Ubicaciones de los archivos de PostgreSQL en Linux

Luego de la instalacin de los paquetes RPMs inicializaremos el directorio en el que se guardarn los datos mediante las herramientas initdb o mediante el demonio postmaster, indicando con la opcin D donde se encuentra el directorio /Data de PostgreSQL, como se indica a continuacin:
/usr/bin/initdb -D /var/lib/pgsql/data /usr/bin/postmaster -D /var/lib/pgsql/data

Iniciaremos a continuacin el servicio de PostgreSQL mediante el comando:


service postgresql start

Luego se puede probar el funcionamiento del servidor PostgreSQL creando, modificando o eliminando bases de datos y sus objetos usando la aplicacin psql o instalando aplicaciones con interfaz grfica de usuario como PgAdmin o PhpPgAdmin.

17

Tabla tomada de la documentacin del manual de instalacin de PostgreSQL en Fedora (http://pgfoundry.org/docman/?group_id=1000048)

- Pg. 141 -

Anl. Mauricio Arvalo M.

5.7.

Configuracin de PostgreSQL
Luego de la instalacin del servidor de bases de datos PostgreSQL existen tres archivos

para configurar el servidor que son postgresql.conf, pg_hba.conf y pg_ident.conf. Estos archivos establecen la manera en que se comporta e interacta el servidor PostgreSQL y se encuentran ubicados en el directorio C:\Archivos de programa\PostgreSQL\8.1\data en Windows y en el directorio /var/lib/pgsql/data en Linux.

Figura 5.19: Directorios en Linux y Windows de los archivos de configuracin

Todos estos tres archivos de configuracin tienen una estructura que contiene las configuraciones que lee el servidor cuando arranca el proceso postmaster por lo que es necesario reiniciar el servicio Postgresql en el servidor si se modifica alguna lnea de configuracin mediante el administrador de servicios en Windows o Linux.

listen_addresses = '*'

# what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost', '*' = all Lneas Habilitadas Comentarios

port = 5432 max_connections = 100 #authentication_timeout = 60 #ssl = off # 1-600, in seconds Lneas Deshabilitadas (en comentario)

- Pg. 142 -

Anl. Mauricio Arvalo M.

Los comentarios en estos archivos son precedidos por el caracter #, y tambin estn en comentarios de manera predeterminada algunas lneas que forman parte de la configuracin de PostgreSQL. Si quitamos el caracter # dichas lneas quedarn habilitadas. A continuacin muestro como se presenta la estructura de estos archivos: Luego de configurar estos archivos, es necesario reiniciar el servicio de postgresql en Linux y en Windows para que los cambios tomen efecto y poder as realizar una conexin administrando el servidor PostgreSQL en modo de consola de texto con la aplicacin psql o en modo grfico con las aplicaciones PgAdmin o PhpPgAdmin. Adems se puede acceder y modificar los datos mediante aplicaciones clientes escritas en diversos lenguajes de programacin que utilicen el controlador ODBC psqlODBC o el proveedor de acceso a datos Npgsql. En la mquina con el sistema operativo Linux Fedora Core 5, ingres al sistema con el usuario root para alterar estos archivos y luego reiniciar el servicio postresql, mientras que en la mquina con Windows no los modifiqu puesto que solamente us el servidor de bases de datos PostgreSQL en Linux administrndolo con la herramienta PgAdmin desde Windows.

5.7.1. Archivo postgresql.conf Este archivo configura aspectos generales del servidor PostgreSQL como la ubicacin de los archivos de configuracin y del directorio \Data, las direcciones IP de los host y el puerto por el cual las escucha (5432 es el predeterminado), el nmero mximo de conexiones, el manejo de memoria, la seguridad y autentificacin, etc. Como se puede ver en la figura 5.20 solamente se chequea que el servidor escuche cualquier direccin IP mediante la lnea listen_addresses=*. Se puede establecer tambin en esta lnea el parmetro localhost si queremos solamente conexiones en el equipo local y no de otros equipos o podemos escribir las direcciones IP de los equipos con los cuales queremos que se comunique el servidor PostgreSQL separadas por una coma (,).

- Pg. 143 -

Anl. Mauricio Arvalo M.

Figura 5.20: Configuracin en Linux del archivo postgresql.conf

Tambin verifiqu el nmero de puerto por el cual escucha las peticiones el servidor PostgreSQL (port = 5432)18 y el nmero mximo de conexiones concurrentes que en este caso manejar el servidor (max_connections=100).

5.7.2. Archivo pg_hba.conf HBA significa Host-Based Authentication o Autentificacin basada en Host, y mediante este archivo, PostgreSQL controla los host o equipos que tienen permiso de conectarse al servidor, la manera o modo en que se autentifican19 los clientes, los nombres de usuarios de las bases de datos PostgreSQL que pueden conectarse y las bases de datos que pueden ser accedidas. formatos:
18

Este archivo contiene registros que tienen uno de los siguientes

El puerto 5432 debe estar habilitado en el Firewall de Windows, en el del antivirus y en el de Linux; o se debe deshabilitar el Firewall del sistema operativo y de cualquier antivirus. Adems este puerto se lo debe habilitar en las propiedades del protocolo TCP/IP (Filtrado TCP/IP) o se debe permitir el acceso a todos los puertos TCP.

19 La autentificacin es el proceso por el que el servidor de bases de datos establece la identidad del cliente mediante un usuario y una contrasea, y por ende determina si a la aplicacin del cliente (o el usuario que ejecuta la aplicacin del cliente) se le permite conectarse al servidor PostgreSQL.

- Pg. 144 -

Anl. Mauricio Arvalo M. # # # # local host hostssl hostnossl DATABASE DATABASE DATABASE DATABASE USER USER USER USER METHOD [OPTION] CIDR-ADDRESS METHOD CIDR-ADDRESS METHOD CIDR-ADDRESS METHOD [OPTION] [OPTION] [OPTION]

En donde el primer campo indica el tipo de conexin: local es una conexin al equipo local, host es una conexin con o sin encriptacin SSL mediante el socket TCP/IP; hostssl es una conexin encriptada SSL mediante el socket TCP/IP mientras que hostnossl es una conexin TCP/IP que no est encriptada. El campo DATABASE indica la base de datos, que puede ser all para especificar todas, podemos tambin especificar la base o bases de datos que pueden ser accedidas separndolas con una coma (,). Tambin se puede poner sameuser para especificar que se de acceso a todas las bases de datos a las que el usuario identificado tenga acceso. En el campo USER se especifica el usuario, pudiendo ser all, para especificar que todos los usuarios de las bases de datos tienen acceso al servidor, o podemos poner el nombre de un usuario o de varios usuarios separados por una coma. Tambin se puede poner el nombre de un grupo de usuarios precedido por el signo (+). El campo CIDR-ADDRESS especifica las direcciones de los equipos o el conjunto de equipos (red) que se comunicarn con el servidor. Este campo se estructura por la direccin IP del equipo y la mscara de red a la que pertenece, que se representa con un entero (entre 0 y 32 para IPv4 o 128 para IPv6) y especifica el nmero de bits significativos en la mscara de red. A continuacin muestro algunos ejemplos:

127.0.0.1/32:

Es la direccin del localhost que se la puede representar tambin en columnas separadas como 127.0.0.1 255.255.255.255 que completan los cuatro octetos especificados (8*4=32 bits).

192.168.32.0/24: Es una direccin de Red utilizando IPv4 (con 24 bits significativos). 192.168.0.1/32: Es una direccin de Host utilizando IPv4 (con 32 bits significativos). Es la direccin de localhost utilizando IPv6.

::1/128:

::ffff:192.168.0.0/120: Es una direccin de red utilizando IPv6.

- Pg. 145 -

Anl. Mauricio Arvalo M.

El campo METHOD puede ser "trust", "reject", "md5", "crypt", "password", "krb5", "ident", o "pam". Este campo especifica el modo de autentificacin del usuario Si se pone trust en dicho campo, se permite la conexin incondicionalmente, con este mtodo se permite a cualquiera que se conecte al servidor PostgreSQL identificarse con un usuario de PostgreSQL, sin la necesidad de una contrasea. Si se utiliza el mtodo reject se deshecha la conexin incondicionalmente, se usa para excluir ciertos host o redes que intenten conectarse al servidor PostgreSQL. Cuando se utiliza el mtodo md5 se le exige al usuario que proporcione una contrasea encriptada MD520 para la autentificacin. Esta opcin en versiones anteriores a la 7.2 de PostgreSQL se la conoce como crypt. Con la opcin password se requiere que el usuario proporcione una contrasea sin encriptacin para su autentificacin. Mediante la opcin krb5 se utiliza el protocolo Kerberos21 versin 5 para autentificar el usuario. Este mtodo se puede utilizar slo para conexiones con TCP/IP. Mediante el mtodo ident se especifica el nombre del usuario del sistema operativo en la mquina cliente, y se verifica si dicho usuario se identifica con el nombre del usuario de la base de datos a la que se quiere acceder mediante una consulta al archivo pg_ident.conf. Sin embargo, en el archivo pg_hba.conf en la mquina que tengo instalado Linux Fedora Core 5, solamente ingres el tipo host y di un acceso a todas las bases de datos y a todos los usuarios cuyos equipos pertenezcan a la direccin de red 192.168.32.0, que es en la que estn configurados el equipo servidor de PostgreSQL con Linux Fedora (con la direccin IP 192.168.32.100) y el equipo de Windows (con la direccin IP192.168.32.1 asignada dinmicamente mediante la aplicacin Vmware Workstation).

MD5 (acrnimo de Message-Digest Algorithm, o Algoritmo de Resumen de Mensaje) es un algoritmo de reduccin criptogrfico de 128 bits ampliamente usado para realizar autentificacin de usuarios.
21

20

Kerberos es un protocolo de autentificacin (cliente/servidor) estndar, seguro y conveniente utilizado sobre una red pblica (por ejemplo Internet). - Pg. 146 -

Anl. Mauricio Arvalo M.

Adems seleccion el mtodo md5 para la autentificacin de los usuarios que quieran acceder a las bases de datos del servidor PostgreSQL desde cualquier equipo que pertenezca a esa red, como se muestra en la siguiente figura:

Figura 5.21: Configuracin en Linux del archivo pg_hba.conf

5.7.3. Archivo pg_ident.conf Este archivo configura la autentificacin de los usuarios si es que en el archivo pg_hba.conf se tiene un registro cuyo mtodo de autentificacin sea de tipo ident. En el archivo pg_ident.conf se verifica si el usuario o usuarios que se identifican en el archivo pg_hba.conf con el mtodo ident tienen una correspondencia entre el nombre de usuario del sistema operativo y el nombre del usuario de la base de datos a la que se quiere acceder. Los registros en este archivo estn estructurados de la siguiente manera:
# MAPNAME IDENT-USERNAME PG-USERNAME

Donde en el campo MAPNAME se coloca el nombre de la identidad con la que en el archivo pg_hba.conf se identifica al usuario, en el campo IDENT-USERNAME se coloca el

- Pg. 147 -

Anl. Mauricio Arvalo M.

nombre del usuario que se tiene en el sistema operativo y en el campo PG-USERNAME se pone el nombre del usuario de PostgreSQL correspondiente. Por ejemplo, si en el archivo pg_hba.conf se tiene la lnea:

# TYPE host

DATABASE all

USER all

CIDR-ADDRESS 192.168.0.0/16

METHOD ident omicron

Se indica que cualquier usuario con identidad omicron perteneciente a la red con direccin IP 192.168.0.0 y que en el archivo pg_ident tenga un registro identificado en el campo MAPNAME con omicron pueda acceder a las bases de datos correspondientes. En el archivo pg_ident se tendra la siguiente lnea:
# MAPNAME omicron IDENT-USERNAME usuarioso PG-USERNAME mauricio

En esta lnea se especifica que en la entrada omicron se debe validar un usuario cuyo nombre en el sistema operativo es usuarioso pero que su correspondencia como usuario de PostgreSQL es mauricio.

5.7.4. Finalizacin de la Configuracin Al finalizar la configuracin de estos archivos, se deben guardar los cambios y reiniciar el servicio postgresql desde el administrador de servicios de Linux Fedora Core 5 como se muestra en la figura 5.22 o tambin se lo puede reiniciar desde la lnea de comandos (Terminal) en Fedora mediante la sentencia service postgresql restart.

- Pg. 148 -

Anl. Mauricio Arvalo M.

Figura 5.22: Reinicio del servicio postgresql en Linux Fedora Core 5.

En Windows para reiniciar el servicio se pueden ejecutar las aplicaciones Stop service y Start service que se instalan junto con el servidor PostgreSQL o se lo puede reiniciar mediante el administrador de servicios como se muestra a continuacin:

Figura 5.23: Reinicio del servicio postgresql en Windows.

- Pg. 149 -

Anl. Mauricio Arvalo M.

Finalmente pude probar la conexin a las bases de datos PostgreSQL instalado en la mquina con Linux Fedora Core 5 desde la mquina que tiene el sistema operativo Windows XP mediante la aplicacin PgAdmin (Inicio-Programas-PostgreSQL 8.1-PgAdmin III), digitando la direccin IP del servidor (en Linux) o su nombre, el puerto, la base de datos por defecto (Maintenance DB), el usuario y la contrasea. Luego se podrn crear y administrar bases de datos del servidor PostgreSQL y todos los objetos que contienen las mismas.

Figura 5.24: Conexin al servidor PostgreSQL desde Windows.

- Pg. 150 -

Anl. Mauricio Arvalo M.

CAPITULO VI OTROS SISTEMAS GESTORES DE BASES DE DATOS

En este captulo presento brevemente algunos Sistemas Gestores de Bases de Datos Relacionales (RDBMS) con licencia libre y propietaria, junto con tablas comparativas en donde se describen sus principales caractersticas, a fin de poder tener parmetros de comparacin con las bases de datos que son objeto de este estudio como MySQL y PostgreSQL.

6.1.

Oracle
Este sistema surgi a final de los aos 70 y principio de los aos 80. George Koch fue

su impulsador junto con un grupo de 25 desarrolladores; al principio se conoci a este sistema como Relational Software para luego tomar el nombre de Oracle, que es desarrollado y distribuido comercialmente bajo licencia propietaria por la empresa Oracle Corporation. Su sitio web es www.oracle.com y es uno de los mayores y ms usados Sistemas Manejadores de Bases de Datos Relacionales (RDBMS) en el mundo. Oracle es un Manejador de bases de datos relacionales que hace uso de los recursos del sistema informtico en la mayora de arquitecturas de hardware, para garantizar su aprovechamiento al mximo en ambientes cargados de informacin; Oracle corre en computadoras personasles (PC), microcomputadoras, mainframes, soporta unos 17 idiomas y
- Pg. 151 -

Anl. Mauricio Arvalo M.

dispone de versiones para la mayora de sistemas operativos, entre los ms importantes estn Microsoft Windows, Linux, Unix, MacOS. Ofrece adems del Gestor de bases de datos, una suite de productos con una gran variedad de herramientas propias de desarrollo, como SQL plus, Oracle Forms, Oracle Reports, Oracle Designer, Oracle Discovered, Oracle JDeveloper, entre otras. Podemos programar funciones y triggers (disparadores) en el lenguaje procedural de Oracle PL/SQL, que es un dialecto del SQL combinado con programacin procedural. Soporta bases de datos de todos los tamaos y un verdadero ambiente cliente servidor, adems dispone de los tipos de datos definidos en los estndares ANSI/ISO SQL92, soporta tambin el manejo de transacciones, subconsultas, replicacin de bases de datos, integridad referencial, respaldos y restauracin, etc. La versin 10g de Oracle vio la luz en febrero del 2004, primero en su versin para UNIX y posteriormente en sus versiones para Linux y Windows. La novedad ms llamativa de esta versin es la capacidad de estos servidores de funcionar segn la tecnologa Grid Computing (para distribuir la base de datos entre varios servidores). El precio de las licencias de Oracle 10g son algo caras, el precio se eleva a los $4995 por procesador y $149 por usuario para la edicin Standard Edition One, y $40000 por procesador y $800 por usuario para la versin Enterprise Edition. Adems para aprovechar toda la potencia que ofrece Oracle se necesita de un potente equipo y no lo recomiendo para entornos monousuarios, sino para entornos empresariales. Se comenta que Oracle ha anunciado que ofrecer de manera gratuita una versin de su motor de base de datos. Se denominar Oracle 10g Express Edition, la cual tendr como restricciones la limitacin a instalaciones en mquinas monoprocesador gestionando hasta 1Gb. de memoria y 4Gb. de disco para el almacenamiento22. Esta accin acompaa a la realizada anteriormente por Oracle al adquirir InnoDB (recordemos que el soporte para este tipo de motor de Bases de datos est tambin incluido dentro de MySQL).

22

Nota tomada de http://techdir.com/articles/20051028/209223_F.shtml - Pg. 152 -

Anl. Mauricio Arvalo M.

6.2.

Microsoft SQL Server


Es un sistema de gestin de bases de datos relacionales (SGBD) creado y distribuido por

la empresa Microsoft bajo licencia propietaria, se basa en el lenguaje SQL, y es capaz de poner a disposicin de muchos usuarios grandes cantidades de datos de manera simultnea (multiusuario). Su sitio web es www.microsoft.com/latam/sql/. SQL Server permite trabajar en modo cliente-servidor o monousuario. Adems permite administrar la informacin de otros servidores de datos SQL Server. Soporta el manejo de transacciones, subconsultas, posee una gran estabilidad, seguridad y escalabilidad, soporta procedimientos almacenados, replicacin de bases de datos, respaldos y restauracin e incluye tambin un potente entorno grfico de administracin que permite el uso de comandos DDL y DML con administracin grfica llamado Enterprise Manager adems de un Analizador de consultas, para escribir cualquier comando SQL mediante un editor de texto. El cluster tolerante a fallos de SQL Server proporciona redundancia de hardware mediante una configuracin en la que los recursos de misin crtica se transfieren automticamente de la mquina que ha generado el error a un servidor configurado de igual modo. Para el desarrollo de aplicaciones distribuidas (tres o ms capas), Microsoft SQL Server incluye interfaces de acceso para la mayora de las plataformas de desarrollo, incluyendo .NET. Microsoft SQL Server no es multiplataforma, ya que slo est disponible en Sistemas Operativos de Microsoft (Windows) y est orientado solamente para sus entornos de desarrollo. La ltima versin de SQL Server es la 2005 (conocida como Yukon) y cuesta aproximadamente $3899 en la versin Workgroup, $5999 para la versin Standard Edition y $24999 en la versin Enterprise Edition.

- Pg. 153 -

Anl. Mauricio Arvalo M.

Existe tambin la version Express Edition de SQL Server 2005, siendo una versin libre, gratuita, de fcil uso y ligera. SQL Server Express Edition incluye caractersticas como SQL Server 2005 Reporting Services, una plataforma servidor para crear informes tradicionales o interactivos y una herramienta de administracin grfica, SQL Server 2005 Management Studio Express, para la fcil administracin de las bases de datos en un entorno grfico, gestiona hasta 1Gb de memoria RAM y 4Gb de espacio de disco duro.

6.3.

SQL Lite
SQLite es una librera escrita en C que implementa un motor de base de datos SQL

empotrable23, su ltima versin es la 3.3.7 y est disponible para sistemas operativos como Windows, Linux, Unix, BSD y MacOS bajo libre distribucin y licencia de dominio pblico GPL. El sitio web oficial de SQLite es www.sqlite.org/index.html. Sus desarrolladores destacan entre sus principales caractersticas la encapsulacin completa en un nico archivo por cada base de datos, su soporte transaccional, su rapidez, su escaso tamao y su completa portabilidad en distintas plataformas. Soporta las caractersticas (tipos de datos, funciones, etc) del estndar SQL/92 y su mximo tamao para almacenamiento es aproximadamente de 2 Terabytes. El motor de PHP 5 incluye soporte interno para SQLite y existen APIs para dar el soporte para distintos lenguajes, como C y Python e incluso un proyecto de un conector ODBC para SQLite24. SQLite cuenta con una utilidad llamada sqlite que nos permitir ejecutar comandos SQL (DML y DDL) en modo de texto para administrar una base de datos SQLite y sus objetos. Adems es muy sencillo utilizar este programa con un script SQL, ya que basta ejecutar sqlite junto con el nombre de la base de datos a la que queramos acceder y el archivo SQL que contiene las sentencias SQL que queramos ejecutar.

23

Bases de datos empotradas o embebidas son aquellas que no inician un servicio en una mquina, sino que estn en forma de libreras pudindose enlazar directamente a nuestro cdigo fuente. El controlador ODBC para SQLite se descarga desde el sitio http://www.ch-werner.de/sqliteodbc - Pg. 154 -

24

Anl. Mauricio Arvalo M.

SQLite ejecuta las operaciones ms rpido que MySQL o Postgresql, pero no olvidemos que estos ltimos se tratan de motores de bases de datos para propsitos distintos (Servidores de Bases de datos). SQLite no permite mltiples usuarios accediendo en modo escritura a la base de datos, ya que el mecanismo de bloqueo que utiliza es muy primitivo: bloquea toda la base de datos, adems no soporta replicacin de bases de datos, manejo de transacciones, integridad referencial ni caractersticas avanzadas (cluster). As, esta librera est especialmente recomendada cuando queramos una gran rapidez en las consultas y nos baste que slo un nico usuario pueda realizar modificaciones. Por ejemplo es ideal como base de datos para guardar configuraciones, logs, o sencillamente como base de datos monousuario.

6.4.

HSQLDB
Es otro motor de bases de datos relacionales empotrable desarrollado en Java, es un

proyecto de software libre bajo licencia de tipo BSD (Berkeley Software Distribution); soporta los estndares SQL/92 y SQL/99, es rpida y se la puede descargar desde su sitio web www.hsqldb.org, siendo su ltima versin estable es la 1.8.0.7 (liberada en septiembre del 2006). No soporta caractersticas avanzadas como replicacin, acceso multiusuario, pero

soporta operaciones con comandos SQL de manipulacin y definicin de datos (DDL y DML), permite el manejo de transacciones, integridad referencial y soporta varias plataformas como Linux, Unix, Windows, MacOS. El grupo de desarrollo se form en el ao 2001 y HSQLDB es utilizado como el motor de bases de datos del proyecto OpenOffice.org 2.0 (software libre de ofimtica).

6.5.

Firebird
Firebird es un sistema de administracin de base de datos (o RDBMS) de cdigo abierto

bajo Licencia Pblica basado en la versin 6 de Interbase, cuyo cdigo fue liberado por la

- Pg. 155 -

Anl. Mauricio Arvalo M.

empresa Borland en el ao 2000. Su cdigo fue reescrito de C a C++ por la Fundacin FirebirdSQL, siendo su ltima versin la 1.5.3. Su sitio web es www.firebirdsql.org. Es multiplataforma, y actualmente puede ejecutarse en los sistemas operativos: Linux, HP-UX, FreeBSD, Mac OS, Solaris y Microsoft Windows. Es liviano, con requerimientos de hardware bajos. Posee una arquitectura Cliente/Servidor sobre el protocolo TCP/IP, pero tambin permite la arquitectura embebida o incrustrada para aplicaciones monousuario, ofrece un soporte de transacciones, subconsultas e integridad referencial, tiene una buena seguridad basada en usuarios y roles. Tiene pleno soporte del estndar SQL-92, tanto de sintaxis como de tipos de datos y permite la escritura de disparadores (triggers) y procedimientos almacenados. Existen controladores ODBC, OLEDB y JDBC para Firebird y se permite adems un mantenimiento con la realizacin de copias de seguridad y restauraciones peridicas de las bases de datos. Una restriccin que tiene es que no puede ejecutarse en mquinas con varios procesadores.

6.6.

Informix
Informix es un Sistema de Gestin de Bases de datos Relacionales (RDBMS) conocido

actualmente como una categora de programas de IBM, y es distribuido comercialmente bajo licencia propietaria por dicha empresa dentro de la familia de "Administracin de Informacin" (Information Management). En el ao 2001 IBM compr a la empresa Informix Inc. por aproximadamente 1.000 millones de dlares con lo que el mercado de las bases de datos comerciales en UNIX qued entre IBM y Oracle. www.ibm.com/software/data/informix/. Este gestor de base de datos, ahora llamado "Informix Dynamic Server" (IDS) incluye un RDBMS basado en SQL y juegos de herramientas para la administracin o gestin de las bases de datos. Su pgina principal es

- Pg. 156 -

Anl. Mauricio Arvalo M.

Puede ser usado en plataformas como Windows 2000, 2003 Server, XP, Linux, UNIX, AIX, HP-UX, IRIX, Solaris y TRU64. Su ltima versin es la 10.0. Gestiona mltiples bases de datos remotas en una nica y centralizada consola donde se muestran grficamente tanto las bases de datos, como los objetos que contienen (tablas, ndices, procedimientos, etc.). Ofrece herramientas para crear mens, formularios de entrada de datos y generadores de reportes. Tiene una arquitectura cliente/servidor, la capacidad de replicacin de bases de datos, dispone de los tipos de datos y sintaxis definidos en los estndares ANSI/ISO SQL92, ocupa menos memoria y recursos que Oracle aunque mantiene sus caractersticas que lo consolidan como un gran gestor de bases de datos como son la gestin del acceso de mltiples usuarios, soporte para el manejo de transacciones, subconsultas, manejo de integridad referencial (con claves principales y forneas), soporte para procedimientos almacenados, disparadores, respaldos, restauracin, etc. Informix adems se especializa en el soporte para Datawarehouse (almacenes de datos) y Datamining (minera de datos).

6.7.

Comparaciones
A continuacin presento comparaciones hechas en tablas25 en donde se dan a conocer

los creadores, la fecha de la primera versin, la ltima versin estable, el tipo de licencia de software y algunas caractersticas importantes que tienen los sistemas de gestin de bases de datos que se han visto en este captulo incluyendo MySQL y PostgreSQL. Entre estas caractersticas estn los sistemas operativos soportados por cada gestor de bases de datos, el soporte para algunas caractersticas tcnicas (ACID, Integridad referencial, transacciones, Unicote) y el soporte para objetos (disparadores, funciones, procedimientos, rutinas externas):

25

Tablas comparativas tomadas de es.wikipedia.org/wiki/Comparacin_de_sistemas - Pg. 157 -

Anl. Mauricio Arvalo M. Fecha de la primera versin pblica 1985 1977 1989 25 de julio de 2000 Noviembre de 1996 Junio de 1989 2001 17 de agosto de 2000 ltima versin estable 10.0 10g 2005 o Yukon 1.5.3 5.0 8.1.4 1.8.0 3.3.7

Sistema de Gestin de Bases de Datos Informix Oracle Microsoft SQL Server Firebird MySQL PostgreSQL HSQLDB SQLite

Creador Informix Software Oracle Corporation Microsoft Firebird Foundation MySQL AB PostgreSQL Global Development Group Hsqldb.Org D. Richard Hipp

Licencia de software Propietario Propietario Propietario Licencia Pblica InterBase GPL o propietario Licencia BSD Licencia BSD GPL Dominio pblico

Tabla 6.1: Comparaciones entre SGBDs.

Sistema de Gestin de Bases de Datos Informix Oracle Microsoft SQL Server Firebird MySQL PostgreSQL HSQLDB SQLite

Windows S S S S S S S S

Mac OS X S S No S S S S S

Linux S S No S S S S S

Unix S S No S S S S S

Tabla 6.2: Soporte de los SGBDs para Sistemas Operativos.

Sistema de Gestin de Bases de Datos Informix Oracle Microsoft SQL Server Firebird MySQL PostgreSQL HSQLDB SQLite

ACID S S S S Depende: solo con InnoDB S S S

Integridad Transacciones Unicode referencial S S S S S S S S S S S S Depende: solo Depende: solo con S con InnoDB InnoDB S S S S S ? Bsico: No Trans. No S Anidadas

Tabla 6.3: Caractersticas Tcnicas - Pg. 158 -

Anl. Mauricio Arvalo M.

Sistema de Gestin de Bases de Datos Informix Oracle Microsoft SQL Server Firebird MySQL PostgreSQL HSQLDB SQLite

Trigger S S S S S desde 5.0 S S S

Funcin S S S S S desde 5.0 S S No

Procedimiento S S S S S desde 5.0 S S No

Rutina externa S S S S S desde 5.0 S S S

Tabla 6.4: Objetos soportados por algunos SGBDs

Adems de estas comparaciones, cabe sealar que existe un trabajo derivado de PostgreSQL llamado BizGres (http://www.bizgres.org/). El Proyecto Bizgres busca hacer de PostgreSQL la Base de Datos Open Source ms robusta para Business Intelligence26 y Data Warehousing. Para este propsito dispone de herramientas como JasperReports SDK, Bizgres Loader, KTLSDK, entre otras. Microsoft SQL Server por ejemplo tambin ofrece soluciones parecidas incluidas con el manejador de bases de datos como son Analysis Services para analizar grandes cantidades de datos y Reporting Services para generar informes que extraigan el contenido de una gran variedad de orgenes de datos. Ahora tambin, Pentaho y MySQL presentan una solucin para proporcionar soluciones OLAP (Online Analytical Processing) totalmente en entorno Open Source, con la base de Pentaho Mondrian y de MySQL 5. Esta solucin informtica27 va dirigida a todos aquellos que esten interesados en aplicaciones Business Intelligence como Reporting, anlisis, OLAP y Data Warehousing; todo esto bajo Open Source.

26

Business Intelligence o Inteligencia de Negocios es una tcnica que brinda soluciones de inteligencia de negocios y permiten al nivel gerencial minimizar el tiempo requerido para recolectar toda la informacin relevante de negocios, automatizar la asimilacin de la informacin en inteligencia personalizada y proporcionar las herramientas para hacer comparaciones y tomar decisiones inteligentes. Ms informacin sobre dicha solucin en http://www.mysql.com/news-and-events/web-seminars/mysql-olap-pentaho-mondrian.php - Pg. 159 -

27

Anl. Mauricio Arvalo M.

CONCLUSIONES

En el momento de la evaluacin de un proyecto no debemos cerrar nuestro criterio y creer que la utilizacin de todo un conjunto de herramientas con licenciamiento propietario o con licenciamiento libre es la que debe utilizarse en el desarrollo de dicho proyecto, sino que para desarrollar un proyecto informtico es necesario hacer una valoracin de riesgos donde se evala la posibilidad de utilizar un producto o herramienta propietaria por la que hay que pagar una licencia o utilizar un producto de software libre, analizando en cada caso las ventajas, inconvenientes y el desempeo de dicha herramienta siempre y cuando cumpla con los requerimientos o necesidades de la aplicacin o proyecto a desarrollar, donde muchas veces se necesita de una arquitectura mixta o hbrida, es decir, utilizar una mezcla de productos de software licenciado y otros de software libre. Para ello se seleccionan los productos claves de software propietario y de open software que ms se adaptan a las necesidades de la organizacin y al proyecto informtico. Con la salida al mercado de mltiples entornos de desarrollo, es necesario conocer las caractersticas, ventajas y desventajas de cada herramienta que se ofrece, por lo que en este trabajo puse en conocimiento principalmente las caractersticas y ventajas de dos de los ms importantes sistemas gestores de bases de datos de software libre (MySQL y PostgreSQL). MySQL es desarrollada y mantenida por la empresa MySQL AB mientras que el grupo PostgreSQL Global Development Group es el que desarrolla y mantiene PostgreSQL. Estos dos sistemas de gestin de bases de datos relacionales (RDBMS) se caracterizan por su distribucin como software libre y su intencin de igualar las caractersticas tcnicas de otros potentes sistemas bajo licencia propietaria como Oracle, Informix o Microsoft SQL Server. Entre las principales caractersticas que llevan a estos dos gestores de bases de datos a ser muy utilizados dentro de lo que es el software libre estn que ambos utilizan el lenguaje

- Pg. 160 -

Anl. Mauricio Arvalo M.

SQL (Lenguaje estructurado de Consultas) con comandos DML y DDL, clusulas, tipos de datos, operadores, funciones y la sintaxis que cumplen con los estndares ANSI e ISO de SQL/92 y PostgreSQL tambin utiliza el estndar SQL/99 (con orientacin a objetos). Adems utilizan algunos comandos propios (extendidos) de cada manejador, soportan una arquitectura cliente/servidor, soportan el manejo de transacciones, subconsultas, joins, disparadores, manejo de acceso concurrente a la base de datos (no la bloquean), brindan mantenimiento mediante el respaldo y restauracin de las bases de datos, soportan procedimientos y funciones almacenadas, soportan la integridad referencial en los datos, gestionan de manera segura el acceso de los usuarios a la base de datos, ambos mantienen un diccionario de datos y tienen caractersticas avanzadas como la replicacin de bases de datos o la tecnologa de Clster en MySQL. En PostgreSQL los procedimientos almacenados se pueden escribir usando el lenguaje procedural propio denominado PL/pgSQL. MySQL y PostgreSQL se acoplan fcilmente a diversas plataformas de desarrollo de software gracias a que disponen de algunas herramientas como conectores ODBC y proveedores de acceso a datos con tecnologa ADO.Net y adems varias APIs que se acoplan a lenguajes como PHP, Perl, Python, Java, etc. Adems se proveen muy buenas herramientas de software libre o propietario para la gestin de bases de datos en modo de consola de comandos de texto o mediante herramientas con una Interfaz Grfica de Usuario (GUI) trabajando bajo Linux o en Windows. Estas herramientas permiten administrar uno o varios servidores de bases de datos en un entorno distribuido, actuando sobre distintas plataformas. MySQL debe su popularidad a su gran desempeo y a las facilidades de desarrollo de aplicaciones Web bajo la arquitectura que ha sido llamada: LAMP (Linux+Apache+MySQL+Perl o PHP o Python). Existe un trabajo derivado de PostgreSQL llamado BizGres que busca hacer de PostgreSQL la Base de Datos Open Source ms robusta para Business Intelligence. Tambin, Pentaho y MySQL, presentan una solucin para proporcionar soluciones OLAP (Online Analytical Processing) totalmente en entorno Open Source.

- Pg. 161 -

Anl. Mauricio Arvalo M.

RECOMENDACIONES

En mi opinin, debido a las potentes caractersticas que tienen ambos gestores de bases de datos de software libre vistos, se pueden utilizar como una real alternativa a gestores de bases de datos de software propietario como Oracle o SQL Server, aunque si se va a desarrollar aplicaciones en ambientes Web recomiendo MySQL por su rapidez y funcionalidad, mientras que si se piensa desarrollar aplicaciones con un entorno empresarial, recomiendo PostgreSQL por su seguridad y potencia.

Finalmente, puedo decir que este trabajo me servir de mucho en mi formacin profesional gracias a las investigaciones realizadas sobre los gestores de bases de datos que se han detallado en la presente monografa, ya que aprend sus caractersticas tcnicas, sus ventajas y debilidades, sus herramientas de administracin y realic una comparacin con otros sistemas gestores de bases de datos obteniendo de esta manera criterios acertados de evaluacin en el momento de decidir por el sistema de gestin de bases de datos a utilizar en determinadas aplicaciones informticas; por tales razones recomiendo que en la Unidad Acadmica se sigan impulsando estos temas investigativos, ya que los estudiantes siempre ganamos nuevos y tiles conocimientos.

- Pg. 162 -

Anl. Mauricio Arvalo M.

ANEXOS

ANEXO A: MODOS DE MySQL


Los modos que soporta MySQL Server son los siguientes: ALLOW_INVALID_DATES: No hace un chequeo total de las fechas en modo estricto. Chequea slo que los meses se encuentran en el rango de 1 a 12 y que los das estn en el rango de 1 a 31. Este modo se aplica a columnas DATE y DATETIME. ANSI_QUOTES: Con ANSI_QUOTES activado, puede usar comillas dobles () para delimitar una cadena de caracteres, ya que se interpreta como un identificador o comilla(). NO_FIELD_OPTIONS: No muestra opciones especficas para columnas de MySQL en la salida de SHOW CREATE TABLE. NO_KEY_OPTIONS: No muestra opciones especficas para ndices de MySQL en la salida de SHOW CREATE TABLE. NO_TABLE_OPTIONS: No muestra opciones especficas para tablas (tales como ENGINE) en la salida de SHOW CREATE TABLE. ERROR_FOR_DIVISION_BY_ZERO: Produce un error en modo estricto (de otra

forma una advertencia) cuando encuentra una divisin por cero (o la divisin en mdulo MOD(X,0)) durante un INSERT o UPDATE, o en cualquier expresin como en

- Pg. 163 -

Anl. Mauricio Arvalo M.

WHERE que implique datos de tablas y una divisn para cero. Si este modo no se da, MySQL retorna NULL para una divisin para cero. NO_AUTO_VALUE_ON_ZERO: Este modo afecta el tratamiento de las columnas AUTO_INCREMENT. Normalmente, se genera el siguiente nmero de secuencia para la columna insertando NULL o 0 en ella, pero este modo suprime este comportamiento para 0 de forma que solamente NULL genere el siguiente nmero de secuencia. NO_ZERO_DATE: No permite '0000-00-00' como fecha vlida. Se puede insertar

las fechas 0 con la opcin IGNORE en el comando INSERT. Cuando MySQL no est en modo estricto, la fecha se acepta pero se genera una advertencia. ONLY_FULL_GROUP_BY: No permite consultas que en la parte del GROUP BY

se refieran a una columna que no se seleccione. PIPES_AS_CONCAT: Trata a || como un concatenador de columnas de caracteres (lo mismo que CONCAT()) en lugar de un sinnimo de OR. REAL_AS_FLOAT: Trata al tipo de dato REAL como un sinnimo de FLOAT en

lugar de sinnimo de DOUBLE. STRICT_ALL_TABLES: Activa el modo estricto para todos los motores de

almacenamiento. Rechaza los datos invlidos. STRICT_TRANS_TABLES: posible en caso de existir errores. Habilita el modo estricto para motores de

almacenamiento transaccionales, y para los no transaccionales, devuelve el mejor valor

Los modos especiales listados en la siguiente tabla, se proporcionan como abreviaciones de combinaciones de algunos de los modos explicados anteriormente y todos estn disponibles desde la versin MySQL 5.0.2.

- Pg. 164 -

Anl. Mauricio Arvalo M.

MODO MySQL DB2 MSSQL, ORACLE POSTGRESQL

EQUIVALENCIA PIPES_AS_CONCAT, ANSI_QUOTES PIPES_AS_CONCAT, ANSI_QUOTES, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS. STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO.

TRADITIONAL

Tabla A1: Equivalencia de Modos MySQL

- Pg. 165 -

Anl. Mauricio Arvalo M.

ANEXO B: TIPOS DE DATOS EN POSTGRESQL


Tabla B1: Tipos de datos en PostgreSQL
Tipo abstime bool Box bpchar bytea char circle date datetime float4 float8 inet Int2 Int4 Int8 line lseg macaddr money numeric Point polygon Text Time timestamp varchar Descripcin fecha y hora absoluta de rango limitado (Unix system time) booleano 'true' o 'false' rectngulo geomtrico '(izquierda abajo, derecha arriba)' caracteres rellenos con espacios, longitud especificada al momento de creacin arreglo de bytes de longitud variable un slo carcter crculo geomtrico '(centro, radio)' fecha ANSI SQL 'aaaa-mm-dd' fecha y hora 'aaaa-mm-dd hh:mm:ss' nmero real de precisin simple de 4 bytes nmero real de precisin doble de 8 bytes direccin de red nmero entero de dos bytes, de -32k a 32k nmero entero de 4 bytes, -2B to 2B nmero entero de 8 bytes, 90#9018 dgitos lnea geomtrica '(pt1, pt2)' segmento de lnea geomtrica '(pt1, pt2)' direccin MAC unidad monetaria '$d,ddd.cc' nmero de precisin mltiple punto geomtrico '(x, y)' polgono geomtrico '(pt1, ...)' cadena de caracteres nativa de longitud variable hora ANSI SQL 'hh:mm:ss' fecha y hora en formato ISO de rango limitado cadena de caracteres sin espacios al final, longitud especificada al momento de creacin
- Pg. 166 -

Anl. Mauricio Arvalo M.

ANEXO C: ALTERNATIVAS PARA BUSINESS INTELLIGENCE (BI)


A continuacin doy a conocer brevemente algunas herramientas de BI (Business Intelligence) que existen a nivel propietario y cual puede ser su alternativa en el mundo Open Source, en la cual se incluyen las bases de datos MySQL y PostgreSQL. Adems, la idea (independientemente de que muchos productos se usen para varias soluciones), es que cada solucion se pueda clasificar (OLAP, reporting, data mining, etc).

Tabla C1: Alternativas Open Source para BI

- Pg. 167 -

Anl. Mauricio Arvalo M.

ANEXO D: CONEXIONES PARA MySQL y PostgreSQL

A continuacin proveedores de datos: ODBC:

muestro algunas conexiones para MySQL utilizando algunos

ODBC 2.50 Base de datos local: "Driver={mySQL}; Server=localhost; Option=16834; Database=MiBaseDeDatos;" ODBC 2.50 Base de datos remota: "Driver={mySQL}; Server=NombreDelServidor; Port=3306; Option=131072; Stmt=; Database=MiBaseDeDatos; Uid=MiNombreDeUsuario; Pwd=MiPassword;" ODBC 3.51 Base de datos local: "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=MiBaseDeDatos; USER=MiNombreDeUsuario; PASSWORD=MiPassword; OPTION=3;" ODBC 3.51 Base de datos remota: "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=NombreDelServidor; PORT=3306; DATABASE=MiBaseDeDatos; USER=MiNombreDeUsuario; PASSWORD=MiPassword; OPTION=3;"

- Pg. 168 -

Anl. Mauricio Arvalo M.

Creacin de una conexin ODBC en C#: Using System; Using System.Data; Using System.Data.Odbc; string cadenaconexion= "DRIVER ={MySQL ODBC 3.51 Driver}; " + "Server=NombreDelServidor; " + "Database=MiBaseDeDatos; " + "User =NombreDeUsuario; " + "Password=MiPassword;" + "Option=3;" IDBConnection dbcon; dbcon= new OdbcConnection (cadenaconexion); dbcon.Open();

Estndar para OLE DB, OleDbConnection (.NET) "Provider=MySQLProv; Data Source=MiBaseDeDatos; User Id=MiNombreDeUsuario; Password=MiPassword;"

Estndar para Connector/Net 1.0 (.NET): "Server=NombreDelServidor; Database=MiBaseDeDatos; Uid=MiNombreDeUsuario; Pwd=MiPassword;" Especificando puerto: (Recuerdese que el puerto predeterminado es el 3306) "Server=NombreDelServidor; Port=1234; Database=MiBaseDeDatos; Uid=MiNombreDeUsuario; Pwd=MiPassword;" Creacin de una conexin MySqlClient en C#:
- Pg. 169 -

Anl. Mauricio Arvalo M.

using MySql.Data.MySqlClient; MySqlConnection objMySqlConn = new MySqlConnection(); objMySqlConn.ConnectionString = "Server=NombreDelServidor; Database=MiBaseDeDatos; Uid=MiNombreDeUsuario; Pwd=MiPassword;"; objMySqlConn.Open(); Creacin de una conexin MySqlClient en VB .NET: Imports MySql.Data.MySqlClient Dim objMySqlConn As MySqlConnection = New MySqlConnection() objMySqlConn.ConnectionString = "Server=NombreDelServidor; Database=MiBaseDeDatos; Uid=MiNombreDeUsuario; Pwd=MiPassword;" objMySqlConn.Open()

ByteFX.Data.MySQLClient (Proveedor de ADO.NET en el proyecto Mono): "Server=NombreDelServidor; Database=MiBaseDeDatos; User ID=NombreDeUsuario; Password=MiPassword;" Creacin de una conexin ByteFX.Data.MySqlClient en C#: Using System; Using System.Data; Using System.Data.MySQLClient; string cadenaconexion= "Server=NombreDelServidor; " + "Database=MiBaseDeDatos; " + "User ID=NombreDeUsuario; " + "Password=MiPassword;" IDBConnection dbcon; dbcon= new.MySqlConnection (cadenaconexion) dbcon.Open();

- Pg. 170 -

Anl. Mauricio Arvalo M.

A continuacin muestro algunas conexiones para PostgreSQL: Core Labs PostgreSQLDirect (Proveedor ADO.NET) Estndar: "User ID=root; Password=pwd; Host=localhost; Port=5432; Database=testdb; Pooling=true; Min Pool Size=0; Max Pool Size=100; Connection Lifetime=0"

Npgsql (Proveedor de ADO.NET para PostgreSQL): "Server= NombreDelServidor; Port=Puerto; User Id=Nombre_Usuario; Password=Contrasea; Database=Nombre_BaseDeDatos;"

Ejemplo de una conexin con Npgsql en C#: using System; using System.Data; using Npgsql; public static class UsoNpgsql { public static void Main(String[] args) { NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=mauricio; Password=secret;Database=prueba;"); conn.Open(); NpgsqlCommand command = new NpgsqlCommand("insert into table1 values(1,1)" , conn); Int32 filasafectadas; try { filasafectadas = command.ExecuteNonQuery(); } Console.WriteLine("Fueron aadidas {0} lneas en la tabla1", filasafectadas); try { conn.Close(); } }
}

- Pg. 171 -

Anl. Mauricio Arvalo M.

GLOSARIO

Administrador de base de datos (DBA): Es la persona o equipo de personas profesionales responsables del control y manejo del sistema de base de datos, generalmente tiene(n) experiencia en DBMS, diseo de bases de datos, Sistemas operativos, comunicacin de datos, hardware y programacin. Base de Datos Distribuida: Una Base de Datos Distribuida es, una base de datos construida sobre una red computacional y no por el contrario en una mquina aislada. La informacin que constituye la base de datos esta almacenada en diferentes sitios en la red, y las aplicaciones que se ejecutan acceden a los datos en distintos sitios. pero se encuentran fsicamente esparcidos en varios "sitios" de la red. Business Intelligence: Son soluciones informticas de inteligencia de negocios que se implementan para ayudar a las organizaciones a entender los patrones de compra de los clientes, identificar las oportunidades de venta y el incremento en las ganancias y mejorar en s la toma de decisiones. Las soluciones de inteligencia de negocios permiten al nivel gerencial minimizar el tiempo requerido para recolectar toda la informacin relevante de negocios, automatizar la asimilacin de la informacin en inteligencia personalizada y proporcionar las herramientas para hacer comparaciones y tomar decisiones inteligentes. Colaciones (collation): Una colacin es un conjunto de reglas para comparar caracteres dentro de un conjunto de caracteres. Por ejemplo, para el conjunto de caracteres latin1 existen las colaciones latin1_spanish_ci, latin1_swedish_ci, latin1_german1_ci, entre otras. Conjunto de caracteres (character set): Un conjunto de caracteres es un conjunto de smbolos y codificaciones.
- Pg. 172 -

Una Base de Datos

Distribuida entonces es una coleccin de datos que pertenecen lgicamente a un slo sistema,

Anl. Mauricio Arvalo M.

Data mining: Bsicamente se conoce como Data mining o minera de datos a la solucin de Business Intelligence o Inteligencia de Negocios que consiste en el conjunto de tcnicas avanzadas para la extraccin de informacin predecible escondida en grandes bases de datos con el fin de conseguir los objetivos de negocio. Es una combinacin de tecnologas y tcnicas que permiten la extraccin de informacin de grandes bases de datos, para convertirla en conocimiento que ser utilizado para tomar decisiones empresariales. Data Warehouse (DW): es un almacn o repositorio de datos categorizados, que concentra un gran volumen de informacin de inters para toda una organizacin, la cual se distribuye por medio de diversas herramientas de consulta y de creacin de informes orientadas a la toma de decisiones. Nos ayuda a la recopilacin, unificacin, limpieza y filtro de datos, tambin facilita la implantacin de un sistema Data Mining. DBI/DBD: DBI son las siglas en ingls de Database independent interface for Perl. El concepto de funcionamiento es que mientras DBI es una interfase independiente del soporte de un manejador de base de datos en particular, los DBD Database Drivers le dan la funcionalidad para cada manejador o subsistema. Esquema: Es la descripcin lgica de la base de datos, es decir el diseo global de la base de datos. Proporciona los nombres de las entidades y sus atributos especificando las relaciones que existen entre ellos. El esquema no cambia o cambia en escasas ocasiones; los que varan son los datos; es decir su instancia. Funciones y procedimientos almacenados Se refieren a las rutinas internas escritas en SQL o lenguajes procedurales como PL/SQL. Rutina externa se refiere a la escritura en los lenguajes anfitriones como C, Java, Cobol, etc. Instancia: Es el estado que presenta una base de datos en un tiempo determinado. Entendmosla como una fotografa que se toma de la base de datos en un tiempo t, despus de que transcurre el tiempo t la base de datos ya no ser la misma. IPv4: Es la versin 4 del Protocolo IP (Internet Protocol). Esta fue la primera versin del protocolo que se implement extensamente, y forma la base de Internet. IPv4 usa direcciones
- Pg. 173 -

Anl. Mauricio Arvalo M.

de 32 bits, limitndola a 232 = 4.294.967.296 direcciones nicas, muchas de las cuales estn dedicadas a redes locales (LANs). Ejemplo: 192.168.32.100. IPv6: Es la versin 6 del Protocolo de Internet (Internet Protocol), un estndar del nivel de red encargado de dirigir y encaminar los paquetes a travs de una red. Las direcciones IPv6, de 128 bits de longitud, se escriben como ocho grupos de cuatro dgitos hexadecimales. Por ejemplo, 2001:0db8:85a3:08d3:1319:8a2e:0370:7334 es una direccin IPv6 vlida. Lenguajes procedurales: Son lenguajes de programacin utilizados en manejadores de Bases de Datos que se ejecutan directamente en el servidor para programar operaciones como procedimientos, funciones, triggers, etc. con sentencias SQL y sentencias de control propias del lenguaje. Multiproceso: Las computadoras que tienen mas de un CPU son llamadas multiproceso. Un sistema operativo multiproceso coordina las operaciones de la computadoras multiprocesadoras. Ya que cada CPU en una computadora de multiproceso puede estar ejecutando una instruccin, el otro procesador queda liberado para procesar otras instrucciones simultneamente. Named pipes: Una tubera o canalizacin con nombre es un fichero que acta como una tubera. Se pone algo en el fichero y sale por el otro lado; por ello se llama FIFO, o ``First-InFirst-Out'', lo primero que entra es lo primero que sale, debido a que lo primero que se introduce en la tubera es lo primero que sale por el otro lado, en el caso de peticiones al servidor de bases de datos que utilice esta tecnologa, la usa para transmitir los datos hacia otro punto de la red. Si se escribe a una tubera con nombre, el proceso que escribe a la tubera no termina hasta que la informacin que se escribe se lea desde el otro lado de la tubera. OLAP y OLETP: OLAP significa On-Line Analytical Processing, que se contrapone con el trmino OLTP On-Line Transactional Processing. Trmino ms habitual, que se define en los sistemas de bases de datos relacionales usados ampliamente en el mundo empresarial. En estos ltimos sistemas lo importante es el registro de los datos, y en OLAP, lo importante es el anlisis de los mismos.
- Pg. 174 -

Anl. Mauricio Arvalo M.

PERL: (Practical Extraction and Report Language), es un lenguaje de programacin utilizado en el WWW a travs de un CGI, principalmente para realizar consultas a bases de datos. Perl es un lenguaje para manipular textos, archivos y procesos de una forma fcil y legible. Perl naci y se ha difundido bajo el sistema operativo UNIX, aunque existe para otras plataformas. PHP: PHP (acrnimo recursivo de "PHP: Hypertext Preprocessor"), originado inicialmente del nombre PHP Tools, o Personal Home Page Tools, es un lenguaje de programacin interpretado, es decir, se ejecuta en el servidor. Aunque fue concebido en el tercer trimestre de 1994 por Rasmus Lerdorf no fue hasta el da 8 de Junio de 1995 que fue lanzada la versin 1.0. Se utiliza entre otras cosas para la programacin de pginas web activas, y se destaca por su capacidad de mezclarse con el cdigo HTML y motores de bases de datos como MySQL. Propiedad Intelectual: Conjunto de normas y principios que regulan los derechos morales y patrimoniales que la ley concede a los autores (los derechos de autor), por el solo hecho de la creacin de una obra en el mbito literario, artstico o cientfico, tanto publicada o que todava no se haya publicado. Puede definirse como la especie de propiedad que se tiene sobre las obras de la inteligencia Puertos: Un puerto, no es nada ms que un numero de 16 bits y que se utiliza para que un determinado programa se comunique con la pila TCP. Es decir, un programa se hace "dueo" de un puerto, y es capaz de enviar y recibir datos por l. Los puertos de nmeros bajos: inferiores al 1024, estn reservados para el TCP-IP y normalmente tienen nombre propio: el 21 es el FTP, el 23 el telnet, el 80 es el servidor web... etc). Los puertos superiores quedan libres pudiendo utilizarles cualquier aplicacin y para cualquier uso. Python: Es un lenguaje de programacin interpretado e interactivo, capaz de ejecutarse en una gran cantidad de plataformas. 2.5 (Septiembre de 2006). Secure Sockets Layer (SSL) y Transport Layer Security (TLS): Seguridad de la Capa de Transporte (en el modelo de referencia OSI). Son protocolos criptogrficos que proporcionan comunicaciones seguras en Internet.
- Pg. 175 -

Fue creado por Guido van Rossum en 1990 y est

completamente orientado a objetos; la ltima versin estable del lenguaje es actualmente la

Anl. Mauricio Arvalo M.

Socket: Es un objeto de software utilizado por un cliente para conectarse a un servidor; un socket no es nada ms que un canal de comunicaciones entre dos host TCP. Por tanto, un socket queda totalmente definido por 4 nmeros: la direccin IP, el puerto de la mquina origen, la direccin IP y el puerto de la mquina destino. Tcl: (Tool Command Language o lenguaje de herramientas de comando), es un lenguaje de script creado por John Ousterhout, ha sido concebido para su fcil aprendizaje, siendo a la vez muy potente. Se usa principalmente para el desarrollo rpido de prototipos, aplicaciones "script", interfaces grficas y pruebas. La combinacin de Tcl con Tk (del ingls Tool Kit) es conocida como Tcl/Tk, y se utiliza para la creacin de interfaces grficas. Unicode: Unicode es una norma de codificacin de caracteres. Su objetivo es asignar a cada posible carcter de cada posible lenguaje un nmero y nombre nico, a diferencia de la mayor parte de los juegos ISO como el ISO-8859-1, que slo definen los necesarios para un idioma o zona geogrfica.

- Pg. 176 -

Anl. Mauricio Arvalo M.

BIBLIOGRAFIA

http://es.tldp.org/Tutoriales/NOTAS-CURSO-BBDD/notas-curso-BD/node3.html http://es.tldp.org/Tutoriales/NOTAS-CURSO-BBDD/notas-curso-BD/node1.html http://es.tldp.org/Tutoriales/NOTAS-CURSO-BBDD/notas-curso-BD/node1.html http://es.wikipedia.org http://www.monografias.com/trabajos11/basda/basda.shtml http://www.monografias.com/trabajos29/comparacion-sistemas/comparacion-sistemas.shtml http://es.wikipedia.org/wiki/Comparacion_de_sistemas_administradores_de_bases_de_datos_ relacionales http://www.arsys.es/ http://www.acis.org.co http://www.gnu.org/philosophy/why-free.es.html http://manifiesto.cofradia.org/index.html http://www.itlp.edu.mx/publica/tutoriales/basedat1/tema1_3.htm http://todobi.blogspot.com http://www.mysql.com http://www.phpmyadmin.net/home_page/index.php http://www.fabforce.net http://www.datanamic.com http://www.sqlmanager.net http://dev.mysql.com/doc/refman/5.0/es/ www.netpecos.org/docs/mysql_postgres/b164.html#MYSQL http://www.postgresql.org http://es.tldp.org/Postgresql-es/web/navegable/todopostgresql/postgres.html

- Pg. 177 -

Anl. Mauricio Arvalo M.

http://personales.ya.com/reque/apuntes/memoria/index.html http://www.pgadmin.org http://phppgadmin.sourceforge.net http://www.planetalinux.com.ar/ Celma, M; Casamayor, J. C; Mota, L. "Bases de datos relacionales", Pearson, Prentice Hall, Edicin 2003. Consultas al Ing. Al Mndez Consultas al Ing. Luis Lojn Consultas al Ing. Lauro Ulloa

- Pg. 178 -

You might also like