UNIVERSIDAD YACAMBÚ

ESPECIALIZACIÓN EN GERENCIA. MENCIÓN REDES Y TELECOMUNICACIONES

CÁTEDRA: SISTEMAS DE INFORMACION GERENCIAL

TRABAJO 1V: DISEÑO DE SISTEMAS DE INFORMACION USANDO POSTGRES

ING. GILBERT PRADO D.

ING. AYOMARGRIS BRITO C.

 

 

 

 

 

 

 

 

 

DISEÑO DE SISTEMAS DE INFORMACION USANDO POSTGRES

 

 

 

 

 

 

 

 

 

 

CONTENIDO

*      Introducción

*      Definición de Software Libre

*       Potgres y ORACLE

*      Fortalezas y Debilidades Postgres

*      Ubuntu, Apache. Características.

*      Postgres con Linux y Características

*      ¿Cómo sería el análisis y diseño de un sistema de información utilizando Postgres?

*      Elaboración de un plan de migración de ORACLE a Postgres para una empresa administrativa

*      Caso Práctico

*      Conclusiones

*      Infografía

 

 

 

 

 

 

 

 

 

 

 

INTRODUCCIÓN

 

 

 

El desarrollo de aplicaciones conlleva una inversión importante de recursos, por lo que el modelo de negocio inicial de las casas de software o empresas productoras de programas para computadores incluía el cobro de licencias por el uso de los mismos, tanto para recuperación del costo inicial como para continuar el desarrollo de la nueva funcionalidad. El cobro era sólo por el uso, ya que el programa no se vendía, ni se tenía acceso al código, por lo cual el usuario quedaba imposibilitado para efectuar cambios en la funcionalidad del mismo. Hace unos pocos años apareció un nuevo modelo de negocio, que incorpora software gratuito y con el acceso al código fuente, lo que parecería resolver las dos problemáticas mencionadas anteriormente.

 

 

DEFINICION DE SOFTWARE LIBRE

 

¿Qué es el Software Libre?

El software libre es un tipo de software que da libertad a sus usuarios. No sólo libertad para ejecutarlo y utilizarlo, sino también para muchas otras cosas: libertad para hacer copias, para distribuirlo y para estudiarlo (lo que implica tener siempre acceso al código fuente). Además, cualquier usuario puede mejorar el software libre y puede hacer públicas estas mejoras (con el código fuente correspondiente), de tal manera que todo el mundo pueda beneficiarse de ello.

El software libre no está sujeto a limitaciones de mejora, ya que su licencia permite de manera explícita que cualquier usuario añada las mejoras (o adaptaciones) que quiera, y con total libertad. Está disponible en forma de código fuente y, por lo tanto, todo el mundo puede acceder a él y lo puede utilizar como quiera.

No hay que asociar software libre con "software gratuito" (denominado usualmente freeware). A pesar de que el "software gratis" o gratuito incluye en algunas ocasiones el código fuente, este tipo de software no es libre en el mismo sentido que el Software Libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa.

Tampoco debe confundirse software libre con "software de dominio público". Éste último es aquél que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original.

 

Libertades que ofrece el Software Libre

Como se muestra en Wikipedia, un software es "libre" si garantiza las siguientes libertades:

 

Libertad 0

Libertad 1

Libertad 2

Libertad 3

Ejecutar el programa con cualquier propósito (privado, educativo, público, comercial, militar, etc.).

Estudiar y modificar el programa (para lo cual es necesario poder acceder al código fuente).

Copiar el programa de manera que se pueda ayudar al vecino o a cualquiera.

Mejorar el programa y publicar las mejoras.

Es importante señalar que las libertades 1 y 3 obligan a que se tenga acceso al código fuente.

La "libertad 2" hace referencia a la libertad de modificar y redistribuir el software libremente licenciado bajo algún tipo de licencia de software libre que beneficie a la comunidad.

 

 

¿Cómo surge el Software Libre?

En 1983, Richard Stallman, consciente de la pérdida de libertades que se iba experimentando en el mundo del software, abandonó su trabajo en los laboratorios de Inteligencia Artificial del MIT (Massachusetts Institute of Technology) para empezar un proyecto dirigido a construir un sistema operativo libre. Este proyecto, pocos meses después, lo llevó a crear la Free Software Foundation, una organización que ha sido la principal difusora de la filosofía del software libre durante los últimos años y que organizó el desarrollo del principal software libre de sistemas.

Sin embargo, el verdadero impulso del software libre llegó con la combinación de dos factores: la aparición del sistema operativo Linux (del que se hablará más adelante) y la extensión del uso de Internet.

La popularización del acceso a Internet fue un factor fundamental para que esta comunidad pudiera llegar a nuevos desarrolladores y para conseguir que se fueran creando nuevos proyectos. La posibilidad de poder ampliar y mejorar el sistema existente atrajo a miles de programadores que, con sus esfuerzos individuales, contribuyeron al establecimiento y la solidificación del movimiento pro software libre. Si no existiera Internet, algo tan cambiante como la tecnología informática no encontraría solución a sus problemas en el Software Libre ya que éste no habría conseguido una tasa de participación en su desarrollo suficiente para abordar los retos exigidos.

 

Características principales del Software Libre desde un punto de vista legal.

·        El Software Libre puede ser usado por cualquiera para cualquier fin.

·        El Software Libre puede ser copiado y redistribuido sin mayor coste que el soporte físico necesario para ello y los gastos de gestión.

·        El Software Libre debe poder ser estudiado y modificado. Para ello se hace indispensable proporcionar el código fuente.

Ventajas del Software Libre

·        Económico: el bajo o nulo costo de los productos libres permite proporcionar  servicios y ampliar infraestructuras sin que se vean mermados los intentos de crecimiento de las empresas por no poder hacer frente al pago de grandes cantidades en licencias.

·        Libertad de uso y redistribución: las licencias de software libre existentes permiten la instalación del software tantas veces y en tantas máquinas como el usuario desee.

·        Independencia tecnológica: el acceso al código fuente permite el desarrollo de nuevos productos sin la necesidad de desarrollar todo el proceso partiendo de cero.

·        Fomento de la libre competencia al basarse en servicios y no licencias: uno de los modelos de negocio que genera el software libre es la contratación de servicios de atención al cliente. Este sistema permite que las compañías que prestan el servicio compitan en igualdad de condiciones al no poseer la propiedad del producto del cual dan el servicio.

·        Soporte y compatibilidad a largo plazo.

·        Formatos estándar: los formatos estándar permiten una interoperatividad más alta entre sistemas, evitando incompatibilidades.

·        Corrección más rápida y eficiente de fallos: el funcionamiento e interés conjunto de la comunidad ha demostrado solucionar más rápidamente los fallos de seguridad en el software libre.

·         Sistema en expansión: las ventajas especialmente económicas que aportan las soluciones libres a muchas empresas y las aportaciones de la comunidad han permitido un constante crecimiento del software libre, hasta superar en ocasiones al mercado propietario.

Desventajas del software libre

·        Dificultad en el intercambio de archivos: esto se da mayormente en los documentos de texto (generalmente creados con Microsoft Word), ya que si se desean abrir con un Software Libre (por ejemplo Open Office) da error o se pierden datos.

·        Mayores costos de implantación e interoperabilidad: dado que el software constituye "algo nuevo", ello supone afrontar un costo de aprendizaje, de instalación, de migración, de interoperabilidad, etc.

¿Cómo puede tener éxito el Software Libre?

A través de características como:

·        Integración: existe mucho Software Libre especializado que necesita ser puesto en orden.

·        Adaptación: el Software Libre permite su modificación absoluta. Esta ventaja permite ofrecer soluciones personalizadas con una inversión bastante menor.

·        Migración: un estudio de viabilidad de la sustitución de un sistema informático por otro basado en Software Libre no es sencillo.

·        Formación: el Software Libre suele venir acompañado por nuevos productos y plataformas que resultan desconocidos y demandan formación específica.

·        Servicio sobre producto propio: el servicio asociado a un producto es la clave del éxito para mantener la fidelidad de un cliente. En principio, nadie debería poder ofrecer mejor servicio que el autor de la aplicación por mucho que este software sea libre y otros tengan acceso a él.

·        Servicio sobre producto ajeno: la oportunidad de ofrecer servicio a un producto que no ha sido desarrollado localmente pero que sí ofrece la oportunidad de estudiarlo a fondo amplía enormemente el horizonte de negocio.

·        Ámbito de servidores y redes: buena parte del Software Libre ha sido desarrollado conjuntamente a través de Internet por lo que las comunicaciones y los servicios de red han sido siempre un factor fundamental en su gestación.

·        Ámbito de seguridad: el modelo de desarrollo del Software Libre permite que todo el mundo pueda acceder al código fuente, descubriendo así fallos de seguridad mucho antes que en otros sistemas.

·        Ámbito de entornos especializados: sistemas empotrados, PDA's y otros dispositivos pueden acceder a personalizaciones específicas gracias a la enorme modularidad del Software Libre y su nulo compromiso con una única plataforma.

·        Estándares abiertos: el Software Libre trabaja fundamentalmente con protocolos y especificaciones abiertas lo que proporciona una mayor flexibilidad para adaptarse a entornos foráneos y una tranquilidad para el cliente que sabe que nunca quedará atrapado con una tecnología propietaria.

·        Ámbito de desktop: el Software Libre incorpora programas de instalación/desinstalación de utilidades, suites ofimáticas completas, herramientas multimedia, navegadores web, juegos, etc.

 

Mitos acerca del Software Libre

·        El software gratuito es libre: un programa, por el simple hecho de ser gratuito, no es ni mucho menos libre. Por ejemplo, el Internet Explorer de Microsoft es un programa gratuito, pero no es libre, ya que no da a sus usuarios la posibilidad de estudiarlo (incluyendo el acceso a su código fuente), ni de mejorarlo, ni de hacer públicas estas mejoras con el código fuente correspondiente de manera que todo el mundo se pueda beneficiar de ello.

·        No hay software libre comercial: cualquier software libre puede venderse siempre que se respeten las libertades originales que lo definen.

·        El software libre sólo está disponible para GNU/Linux: el software libre es un concepto que no está ligado a ningún sistema; de hecho, también se aplica para documentación y todo tipo de creaciones artísticas.

·        No tiene apoyo para empresas: hoy en día, empresas como IBM, Sun, Compaq, Dell, RedHat, Suse, Mandrake y muchas otras ofrecen apoyo y servicios profesionales de sistemas basados en software libre a usuarios, empresas e instituciones.

·        El software libre no es de calidad: se debe recordar que la gran mayoría de proyectos de software libre se hacen desde el voluntariado, y se tiende a compararlos con proyectos parecidos desarrollados por empresas con unos recursos de ingeniería y desarrollo muy grandes. Cada proyecto de software libre, del mismo modo que cada software de propiedad, tiene que valorarse por separado.

 

Importancia del estudio del Software Libre

·        Económica: el costo de las licencias de Software Propietario es bastante importante y a veces imposible de afrontar de la manera que los fabricantes de Software lo piden.

·        Legal: el Software Libre es siempre legal, salvo contadas excepciones, por ejemplo, que se compile el código fuente y se venda como propietario

·        Técnica: por ejemplo, es sabido que Microsoft ha dejado de ofrecer soporte de desarrollo para Windows 95 y Windows 98, por lo tanto, si se descubre un error en ellos, Microsoft no está obligado a repararlo. Para solucionar ésto, se tendrían dos opciones: a) Migrar a otras versiones de Sistema Operativos de Microsoft: lo cual conlleva una serie de costos, principalmente en licencias, luego costos de implantación, soporte e interoperabilidad, y además implicaría probablemente, volver a hacer lo mismo dentro de dos o tres años y, b) Utilizar Software Libre en sustitución.

·        Laboral: la implementación de Software Libre plantea un futuro prometedor para aquellas personas que sepan programar, traducir, utilizar un programa, enseñar, etc.

 

Software Propietario

Es aquel software cuyo uso, modificación y redistribución está prohibido y se requiere que se adquiera un permiso.

El software propietario está sujeto a diversas limitaciones; de entrada, normalmente hay que pagar su licencia, se está sujeto a las posibles limitaciones técnicas de estos programas y a las que su licencia impone, con las consiguientes posibles incompatibilidades entre programas elaborados por empresas diferentes que trabajan con código cerrado; así pues, se está en cierta medida atado a la empresa que lo fabrica (por ejemplo, para traducirlo, para las actualizaciones, para complementos, etc.).

Ventajas del Software Propietario

·        Propiedad y decisión de uso del software por parte de la empresa: el desarrollo de la mayoría de software requiere importantes inversiones para su estudio y desarrollo. Esto garantiza al productor ser compensado por la inversión, fomentando así el continuo desarrollo.

·        Soporte para todo tipo de hardware: el actual dominio de mercado invita a los fabricantes de dispositivos para ordenadores personales a producir drivers o hardware sólo compatibles con Windows. Por lo que la elección del sistema operativo de Microsoft tiene garantizado un soporte de hardware seguro.

·        Mejor acabado de la mayoría de aplicaciones: el desarrollador de software propietario, generalmente, da un mejor acabado a las aplicaciones en cuestiones, tanto de estética, como de usabilidad de la aplicación. Aunque muchas aplicaciones de software libre tienen un excelente acabado, aquí se nota de forma especial el cuidado y el esfuerzo del desarrollador de software propietario.

·        Las aplicaciones número uno son propietarias: el actual dominio de mercado no sólo interesa a los fabricantes de hardware, sino también a los de software.

·        El ocio para ordenadores personales está destinado al mercado propietario: los desarrolladores de juegos tienen sus miras en el mercado más lucrativo, que es el de las cónsolas y en última instancia el de los ordenadores personales.

·        Menor necesidad de técnicos especializados: el mejor acabado de la mayoría de sistemas de software propietario y los estándares actuales permiten una simplificación del tratamiento de dichos sistemas, dando acceso a su uso y administración, a técnicos que requieren una menor formación, reduciendo costos de mantenimiento.

·        Mayor mercado laboral actual: como muchas de las ventajas restantes se deben al dominio del mercado, no hay que ignorar que cualquier trabajo relacionado con la informática pasará, en casi todos los casos, por conocer herramientas de software propietario.

·        Mejor protección de las obras con copyright: las obras protegidas por copyright se ven beneficiadas por mecanismos anticopia que disminuyen o dificultan en cierto grado la piratería.

·        Unificación de productos: una de las ventajas más destacables del software propietario es la toma de decisiones centralizada que se hace en torno a una línea de productos, haciendo que no se desvíe de la idea principal y generando productos funcionales y altamente compatibles.

Software Libre Vs. Software Propietario

Es importante destacar que el software libre no excluye necesariamente el uso de software propietario (uno puede continuar usándolo si lo desea), al contrario, puede integrarse a él o bien complementarlo. Y por su puesto, puede reemplazarlo efectivamente.

Uno de los temas que se procura atender con el uso del software libre es la soberanía tecnológica puesto que cuando se trabaja con software propietario no se puede auditar el código fuente y al momento de replicar las experiencias, las licencias impiden realizar esa acción; por lo tanto, una de las ventajas que proporciona la tecnología abierta es que el resultado de esa práctica es replicable, porque la libertad permite la redistribución de la experiencia, en la que participa una comunidad de actores.

El software libre, sin embargo, tiene una clara desventaja al ser producido y tomadas las decisiones por un exceso de grupos y organismos descentralizados que trabajan en líneas paralelas y no llegan muchas veces a acuerdos entre ellos. Esto ocasiona que en algunas ocasiones exista un gran caos entre programadores y usuarios finales que no saben que vías tomar.

 

 

POSTGRES Y ORACLE

 

 

 

Postgres

PostgreSQL es un servidor de base de datos objeto relacional libre, ya que incluye características de la orientación a objetos, como puede ser la herencia, tipos de datos, funciones, restricciones, disparadores, reglas e integridad transaccional, liberado bajo la licencia BSD. El desarrollo de PostgreSQL no es manejado por una sola compañía sino que es dirigido por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo, dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group).

 

Oracle

Oracle es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en inglés de Relational Data Base Management System), fabricado por Oracle Corporation.

Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su:

·        Soporte de transacciones.

·        Estabilidad.

·        Escalabilidad.

·        Es multiplataforma.

¿Cuáles son las diferencias entre Postgres y Oracle?

Como plantea Ernesto Hernández-Novich (2005) en un foro de discusión acerca de Postgres Vs. Oracle:

·        PostgreSQL es software libre, Oracle es software propietario.

·        PostgreSQL es una base de datos Objeto Relacional y es capaz de manejar complejas rutinas y reglas, mientras que Oracle es sólo una base de datos Relacional.

·        Oracle tiene consultas en paralelo, que PostgreSQL aún no tiene.

·        PostgreSQL tiene soporte para lenguajes procedurales internos, incluyendo un lenguaje nativo denominado PL/pgSQL. Este lenguaje es comparable al único lenguaje procedural de Oracle, PL/SQL.

·        PostgreSQL amplía el concepto de programación procedural para soportar funciones en cualquier parte (como procedimiento, como tabla, como operador, como selector, como filtro), mientras que Oracle sólo permite usarlas como procedimiento. Oracle simula parcialmente el comportamiento proveyendo paquetes, pero no tienen el alcance de PostgreSQL.

·        PostgreSQL soporta nativamente tipos de datos no escalares, con sus operadores, y ofrece la posibilidad de crear tus propios tipos de datos y operadores. Oracle requiere comprar software adicional y no se pueden desarrollar tipos propios.

·        PostgreSQL puede crear índices lineales (B-Tree), presenciales (Hash) y espaciales (R-Tree). Oracle sólo puede los dos primeros. En PostgreSQL se tiene la posibilidad de escribir rutinas propias para construcción de índices, con Oracle no.

·        Oracle tiene muchísimos más parámetros de configuración que PostgreSQL, muchos de ellos son secretos, no están documentados, y sólo los conoce la gente de soporte de Oracle que los utiliza para asistir técnicamente en caso de necesidad y si se tiene el contrato de mantenimiento al día.

Como semejanzas, ambos tienen soporte para las mismas cosas (SQL, métodos de conexión desde el cliente), son capaces de manipular bases de datos de dimensiones enormes y tienen excelente robustez y escalabilidad transaccional ya que ambos aplican mecanismos que no están basados en locks.

 

 

FORTALEZAS Y DEBILIDADES DE POSTGRES

 

 

 

Fortalezas:

·        Una de las principales fortalezas de Postgres es la seguridad en el acceso a la Base de Datos, al nivel de red.

·        Posee una gran escalabilidad. Es capaz de ajustarse al número de CPU’s y a la cantidad de memoria que posee el sistema de forma óptima, haciéndole capaz de soportar una mayor cantidad de peticiones simultáneas de manera correcta.

·        Implementa el uso de rollback's, subconsultas y transacciones, haciendo su funcionamiento mucho más eficaz.

·        Tiene la capacidad de comprobar la integridad referencial, así como también la de almacenar procedimientos en la propia base de datos, equiparándolo con los gestores de bases de datos de alto nivel.

·        Corre en casi todos los principales sistemas operativos: Linux, Unix, BSD’s, Mac OS, Beos, Windows, etc.

·        Documentación muy bien organizada, pública y libre, con comentarios de los propios usuarios.

·        Comunidades muy activas, varias en castellano.

·        Bajo Costo de Propiedad Total (TCO) y rápido Retorno de la Inversión Inicial (ROI)

·        Altamente adaptable a las necesidades del cliente.

 

Debilidades:

·        Consume gran cantidad de recursos.

·        Tiene un límite de 8K por fila, aunque se puede aumentar a 32K, con una disminución considerable del rendimiento.

·        Es de 2 a 3 veces más lento que MySQL.

·        Limites de Postgres:

o       Máximo de base de datos : ILIMITADO

o       Máximo de tamaño de tabla : 32TB

o       Máximo de tamaño de registro : 1.6TB

o       Máximo de tamaño de campo : 1GB

o       Máximo de registros por Tabla : ILIMITADO

o       Máximo de campos por tabla : 250 a 1600 (depende de los tipos usados)

o       Máximo de índices por tabla : ILIMITADO

o       Número de lenguajes en los que se puede programar funciones: aproximadamente 10 (pl/pgsql, pl/java, pl/perl, pl/python, tcl, pl/php, C, C++, Ruby, etc.)

o       Métodos de almacenamiento de índices: 4 (B-tree, R- tree, Hash y GisT).

 

 

 

UBUNTU, APACHE, CARACTERISTICAS

 

 

 

Ubuntu

Ubuntu es una distribución GNU/Linux fácil de utilizar y orientada tanto al usuario de escritorio como al servidor. Se encuentra mantenida por una comunidad de desarrolladores que reciben el soporte de la empresa Canonical, Ltd., la cual vende servicios relacionados con la distribución.

Existen diversas variantes de Ubuntu disponibles, las cuales poseen lanzamientos simultáneos con Ubuntu. Las más significativas son:

·        Kubuntu, el cual utiliza KDE en vez de GNOME.

·        Edubuntu, diseñado para entornos escolares.

·        Xubuntu, el cual utiliza el entorno de escritorio Xfce.

·        Gobuntu, el cual sólo viene provisto de software puramente libre.

 

Características  de Ubuntu

·        Nunca se tendrá que pagar por Ubuntu,

·        Se incluirán las mejores traducciones e infraestructuras de accesibilidad posibles.

·        La política de versionado será regular y predecible, concretamente cada 6 meses. Cada versión tendrá un soporte de al menos 18 meses.

·        Ubuntu está totalmente comprometido con los principios de desarrollo del software de código abierto, por lo tanto, se anima a los usuarios a utilizarlo, mejorarlo y compartirlo.

·        Ubuntu pretende crear una distribución que proporcione un sistema GNU/Linux actualizado y coherente para la informática de escritorio y servidores.

·        Ubuntu incluye una cuidadosa selección de los paquetes de Debian, y mantiene su poderoso sistema de gestión de paquetes que permite instalar y desinstalar programas de una forma fácil y limpia.

·        A diferencia de la mayoría de las distribuciones, que vienen con una enorme cantidad de software que pueden o no ser de utilidad, la lista de paquetes de Ubuntu se ha reducido para incluir sólo aplicaciones importantes y de alta calidad.

·        Ubuntu proporciona un entorno robusto y funcional, adecuado tanto para uso doméstico como profesional y se publica una nueva versión cada seis meses.

·        El escritorio predeterminado en Ubuntu es GNOME, GNOME es líder como escritorio y como plataforma de desarrollo tanto para UNIX como para GNU/Linux.

·        Otro escritorio importante es KDE. El proyecto Kubuntu ofrece a los usuarios de Ubuntu una opción alternativa al entorno de escritorio Gnome.

·        El eslogan de Ubuntu – “Linux para seres humanos” (en inglés "Linux for Human Beings") – resume una de sus metas principales: hacer de Linux un sistema operativo más accesible y fácil de usar.

·        Al igual que casi cualquier distribución basada en Linux, Ubuntu es capaz de actualizar a la misma vez todas las aplicaciones instaladas en la máquina a través de repositorios.

·        Posee una gran colección de aplicaciones útiles y sencillas para la configuración de todo el sistema, a través de una interfaz gráfica útil para usuarios que se inician en Linux.

·        El navegador web oficial es Mozilla Firefox.

·        El sistema incluye funciones avanzadas de seguridad y entre sus políticas se encuentra el no activar, de forma predeterminada, procesos latentes al momento de instalarse. Por eso mismo, no hay un firewall predeterminado, ya que no existen servicios que puedan atentar a la seguridad del sistema.

Apache

“El servidor HTTP Apache es un software libre servidor HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual”. (Tomado de Wikipedia).

Apache está diseñado para ser un servidor web potente y flexible que pueda funcionar en la más amplia variedad de plataformas y entornos; esto hace que a menudo sean necesarias diferentes características o funcionalidades. Apache se ha adaptado siempre a una gran variedad de entornos a través de su diseño modular. Este diseño permite a los administradores de sitios web elegir cuáles características van a ser incluidas en el servidor seleccionando cuáles módulos se van a cargar, ya sea al compilar o al ejecutar el servidor.

 

Características  de Apache

·        Puede soportar de una forma más fácil y eficiente una amplia variedad de sistemas operativos.

·        Mensajes de error altamente configurables. Apache permite personalizar la respuesta ante los posibles errores que se puedan dar en el servidor. Es posible configurar Apache para que ejecute un determinado script cuando ocurra un error en concreto.

·        Bases de datos de autenticación y negociado de contenido.

·        Modular. Es muy sencillo ampliar las capacidades del servidor Web Apache. Actualmente existen muchos módulos para Apache que son adaptables a éste, y están ahí para ser instalados cuando se necesiten.

·        Open source. Esto le da una transparencia al software de manera que si se quiere ver que es lo que se está instalando como servidor se puede saber, sin ningún secreto.

·        Multi-plataforma.

·        Extensible.

·        Ayuda y soporte fáciles de conseguir.

·        Gratuito

·        La licencia Apache es una descendiente de la licencias BSD, no es GPL. Esta licencia permite hacer lo que se quiera con el código fuente  siempre que se reconozca su trabajo.

·        Trabaja con gran cantidad de Perl, PHP y otros lenguajes de script. También trabaja con Java y páginas JSP. Teniendo todo el soporte que se necesita para tener páginas dinámicas.

·        Tiene una alta configurabilidad en la creación y gestión de logs. Permite la creación de ficheros de log a medida del administrador, de este modo se puede tener un mayor control sobre lo que sucede en el servidor.

 

 

 

 

POSTGRES CON LINUX Y CARACTERISTICAS

 

 

 

PostgreSQL como ya se comento brevemente en un punto anterior del trabajo; es conoce una base de datos relacional, distribuida bajo licencia BSD y con su código fuente disponible libremente lo cual la caracteriza como una de las mas llamativas tanto por los desarrolladores Web como por los desarrolladores de sistemas de información. Posee el motor de bases de datos de código abierto más potente del momento y en sus últimas versiones comienzan ventajas como cualquier otra base de datos comercial del mercado.

 

Sus características técnicas la hacen una de las bases de datos más potentes y robustas del en el mundo de los desarrolladores. Su desarrollo comenzó hace más de 15 años, y durante este tiempo, estabilidad, potencia, robustez, facilidad de administración e implementación de estándares han sido las características que más se han tenido en cuenta durante su desarrollo. En los últimos años se han concentrado mucho en la velocidad de proceso y en características demandadas en el mundo empresarial.

 

El enfoque que le damos en esta parte del trabajo es orientada a su compatibilidad con diversos sistemas operativos como lo son los sistemas de actualidad, entre ellos, UNIX en todas sus variantes (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) , Windows y en especial Linux el cual siendo el sistema operativo pionero en el software libre soporta perfectamente y explota en su máxima capacidad las características que hacen que este motor de base de datos sea o pueda llegar a ser según sus administración y configuración, la herramienta mas potente, estable y robusta para un sistema Web de alto desempeño. Las características más importantes y soportadas son:

 

·         Es una base de datos 100% ACID (Atomicity, Consistency, Isolation, Durability)

·         Llaves ajenas (foreign keys)

·         Joins

·         Vistas (views)

·         Disparadores (triggers)

·         Reglas (Rules)

·         Funciones/procedimientos almacenados (stored procedures) en numerosos lenguajes de programación, entre otros PL/pgSQL (similar al PL/SQL de oracle)

·         Numerosos tipos de datos, posibilidades de definir nuevos tipos

·         Soporta el almacenamiento de objetos binarios grandes (gráficos, videos, sonido.)

·         Herencia de tablas (Inheritance)

·         PITR - point in time recovery

·         Tablespaces

·         Replicación asíncrona

·         Nested transactions (savepoints)

·         Two-phase commit

·         Copias de seguridad en caliente (Online/hot backups)

·         Unicode

·         Juegos de caracteres internacionales

·         Multi-Version Concurrency Control (MVCC)

·         Acceso encriptado vía SSL

·         SQL92/SQL99

·         APIs para programar en C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, PHP y muchos otros lenguajes.

·         Completa documentación

 

PostgreSQL está disponible en cualquiera de las principales distribuciones de Linux. Existen paquetes RPM (de Redhat, SuSE y Mandrake) o DEB (de Debian), que se distribuyen con estas distribuciones de PostgreSQL y que se pueden instalar de la manera por defecto típica en cada distribución.

 

Se necesitan una serie de programas para poder compilar e instalar PostgreSQL (o cualquier otro programa en el sistema operativo) desde las fuentes bajadas desde la pagina principal de PostgreSQL donde normalmente siempre se encontrara la versión final beta de esta base de datos gracias a que es una base de datos de distribución libre. La mayoría de lo que se necesita se suele instalar por defecto en la mayoría de las distribuciones si se instalan los paquetes relacionados con "Desarrollo y compiladores". Todos estos paquetes se pueden instalar de la manera Standard, en la distribución de Linux o sistema operativo que se utilice.

 

Como tip adicional a continuación se lista una serie de programas necesarios tanto para la instalación de PostgreSQL sobre alguna distribución de Linux o sobre alguno de los sistemas operativos compatibles hacia donde se necesite portar dicho motor de base de datos.

 

Se Necesita:

·         GNU make (gmake)

·         Un compilador ISO/ANSI C. GCC el compilador por defecto en Linux funciona perfectamente.

·         tar, gzip o bzip2 para desempaquetar las fuentes.

·         Biblioteca GNU Readline

·         Biblioteca de compresión zlib

·         Perl y python si se requiere soportar PL/Perl y PL/Python

·         Todo esto en el sistema Linux, Unix o sistema operativo hacia donde se porte el motor de  la base de datos.

 

La principal importancia de utilizar PostgreSQL con Linux es que Linux termino comúnmente utilizado para describir al sistema operativo tipo Unix (que implementa el estándar POSIX), que utiliza primordialmente filosofía y metodologías libres (también conocido como GNU/Linux) y que está formado mediante la combinación del núcleo Linux con las bibliotecas y herramientas del proyecto GNU y de muchos otros proyectos/grupos de software (libre o no libre); mezclado en sus distintas distribuciones con la tecnología del motor de base de datos PostgreSQL quien también es un desarrollado de base de datos relacional orientada a objetos de software libre, liberado bajo la licencia BSD. (Berkeley Software Distribution); forman el equipo perfecto que se busco para las distribuciones de Linux que poseen incorporado el motos de base de datos PostgreSQL y que orienta a las nuevas tecnologías de la información a realizar sistemas de información muy versátiles los cuales brinden a los usuarios una gran funcionalidad prestando sus servicios innovadores robustos y presentando la mejor funcionalidad englobando todas las virtudes en la sencillez de ser ambos de la categoría de software libre.

 

 

 

¿CÓMO SERÍA EL ANÁLISIS Y DISEÑO DE INFORMACIÓN DE UN SISTEMA UTILIZANDO POSTGRES?

 

 

 

Para el análisis y diseño de un sistema de información en el cual se necesite la implementación y uso del motor de base de datos PostgreSQL se deberían tomar en cuantos algunos aspectos nombrados a continuación:

 

El análisis es un conjunto o disposición de procedimientos o programas relacionados de manera que juntos forman una sola unidad. Un conjunto de hechos, principios y reglas clasificadas y dispuestas de manera ordenada mostrando un plan lógico en la unión de las partes. Un método, plan o procedimiento de clasificación para hacer algo. También es un conjunto o arreglo de elementos para realizar un objetivo predefinido en el procesamiento de la Información. Esto se lleva a cabo teniendo en cuenta ciertos principios para el desarrollo del sistema de información:

 

·        Debe presentarse y entenderse el dominio de la información del sistema a diseña y a ser almacenado y gestionado en el motor PostgreSQL a utilizar.

·        Definición de las funciones que debe realizar el Sistema de Información.

·        Representar el comportamiento del Sistema de Información a consecuencias de acontecimientos externos.

·        Dividir en forma jerárquica los modelos que representan la información, funciones y comportamiento para poder lograr el requerimiento y optimo funcionamiento del sistema.

 

El proceso del análisis del sistema de información debe partir desde la información esencial hasta el detalle de la Implementación del mismo; parte de esto serian los siguientes aspectos (Desde los más básicos a los más necesarios):

 

·        Hardware, dispositivos electrónicos y electromecánicos, que proporcionan capacidad de cálculos y funciones rápidas, exactas y efectivas (Computadoras, Censores, maquinarias, bombas, lectores, etc.), que proporcionan una función externa dentro de los Sistemas.

·        Personal, quienes serian los operadores o usuarios directos de las herramientas del Sistema de Información.

·        Base de Datos (en este caso se utilizara PostgreSQL), donde se englobara una gran colección de informaciones organizadas y enlazadas al Sistema de Información a las que se accede por medio del Propio Sistema ya sea vía Web o por medio de algún Software relacionado a este.

·        Documentación, Manuales, formularios, y otra información descriptiva que detalla o da instrucciones sobre el empleo y operación del Sistema de Información.

·        Procedimientos, o pasos que definen el uso específico de cada uno de los elementos o componentes del Sistema de Información y las reglas de su manejo y mantenimiento.

 

Un Análisis de Sistema se lleva a cabo teniendo en cuenta los siguientes objetivos en mente:

 

·        Identifique las necesidades del Cliente.

·        Evaluando que conceptos tiene el cliente del sistema de información para establecer su viabilidad.

·        Realizando un Análisis Técnico y económico.

·        Asignando funciones al Hardware, Software, personal, base de datos, y otros elementos del Sistema de Información.

·        Estableciendo las restricciones de presupuestos y planificación temporal.

·        Creando una definición del sistema de información que forme el fundamento de todo el trabajo de Ingeniería.

 

En el Diseño de Sistemas de Información se define el proceso de aplicar ciertas técnicas y principios con el propósito de definir un dispositivo, un proceso o un Sistema, con suficientes detalles como para permitir su interpretación y realización física.

 

La etapa del Diseño del Sistema de Información encierra cuatro etapas:

 

·        El diseño de los datos.

Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarios para implementar en el sistema de información y enfocados hacia el motor de base de datos en este caso PostgreSQL.

 

·        El Diseño Arquitectónico.

Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarios para implementar el Sistema de Información.

 

·         El Diseño de la Interfaz.

Describe como se comunica el Sistema de Información consigo mismo, con los sistemas que operan junto con el y con los operadores y usuarios que lo emplean.

 

·         El Diseño de procedimientos.

Transforma elementos estructurales de la arquitectura del programa. La importancia del Diseño del Software se puede definir en una sola palabra Calidad, dentro del diseño es donde se fomenta la calidad del Proyecto. El Diseño es la única manera de materializar con precisión los requerimientos del cliente.

 

·        El Diseño del Software

Es un proceso y un modelado a la vez. El proceso de Diseño es un conjunto de pasos repetitivos que permitirán al diseñador describir todos los aspectos del Sistema de Información a construir. A lo largo del diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones técnicas:

¨      El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de análisis y debe acumular todos los requisitos implícitos que desea el cliente.

¨      Debe ser una guía que puedan leer y entender los que construyan el código y los que prueban y mantienen el Software.

¨      El Diseño debe proporcionar una completa idea de lo que es el Sistema de información y de la plataforma del motor de base de datos PostgreSQL, enfocando los dominios de datos, funcional y comportamiento desde el punto de vista de la Implementación.

 

Para evaluar la calidad de una presentación del diseño, se deben establecer criterios técnicos para un buen diseño como son:

 

¨      Un diseño debe presentar una organización jerárquica que haga un uso inteligente del control entre los componentes del Sistema de Información y de su motor de datos PostgreSQL.

¨      El diseño debe ser modular, es decir, se debe hacer una partición lógica del Sistema de Información en elementos que realicen funciones y subfunciones especificas

¨      Un diseño debe contener abstracciones de datos y procedimientos.

¨      Debe producir módulos que presenten características de funcionamiento independiente

¨      Debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los módulos y el entorno exterior.

¨      Debe producir un diseño usando un método que pudiera repetirse según la información obtenida durante el análisis de requisitos de Sistema de Información.

 

·        Diseño de Interacciones con la Base de Datos PostgreSQL.

La mayoría de los sistemas de información con motores de base de datos PostgreSQL ya sean implantado en sistemas de cómputos grandes o pequeños, utilizan una base de datos como PostgreSQL que cuentan tanto con la sencillez de ser de software libre así como la robustez de su entorno, que pueden abarcar varias aplicaciones, por esta razón estos sistemas de información utilizan un administrador de base de datos, en este caso el diseñador no construye la base de datos sino que consulta a su administrador para ponerse de acuerdo en el uso de esta en el sistema y su mayor integración con el sistema de información.

 

Normalmente en los sistemas de información actuales tanto en su análisis, diseño e implementación cuentan con la influencia de las tecnologías de software libre, poseen las fuentes por medio de las cuales pueden tener un mejor entendimiento del proceso interno de cada una de las herramientas; es por esto que al utilizar las tecnologías libres como Linux/GNU lo mas optimo es utilizar motores de bases de datos también de software libre como lo es en este caso el motor PostgreSQL el cual es uno de los mas robustos del mercado y de mejor integración con los sistemas Unix y Linux.

 

En General en una organización o Empresa, el análisis y Diseño de Sistemas de Información con la utilización de motores de software libre como lo es el PostgreSQL, es el proceso de estudiar su Situación con la finalidad de observar como trabaja y decidir si es necesario realizar una mejora; el encargado de llevar a cabo estas tareas es el analista de sistemas de información.

 

Antes de comenzar con el desarrollo de cualquier proyecto, se conduce un estudio de Sistemas para detectar todos los detalles de la situación actual de la empresa. La información reunida con este estudio sirve como base para crear varias estrategias de Diseño. Los administradores deciden que estrategias seguir. Los Gerentes, empleados y otros usuarios finales que se familiarizan cada vez mas con el uso de computadoras están teniendo un papel muy importante en el desarrollo de sistemas de información.

 

Todas las organizaciones son Sistemas de Información que actúan de manera reciproca con su medio ambiente recibiendo entradas y produciendo salidas. Los Sistemas de Información que pueden estar formados por otros Sistemas de denominan Sub-sistemas y funcionan para alcanzar los fines de su Implantación

 

 

 

ELABORACIÓN DE UN PLAN DE MIGRACIÓN DE ORACLE A POSTGRES EN UNA EMPRESA ADMINISTRATIVA

 

 

 

La migración de los motores de bases de datos en una empresa administrativa o corporación en donde se utilice bases de datos de tipo Oracle a PostgreSQL debería seguirse mediante un plan de migración que si bien no debería ser siempre el mismo, se presenta acá con consideraciones que se deberían tener para el éxito de esta migración como un estándar a seguir.

 

Consideraciones generales

Para migrar una base de datos de Oracle a PostgreSQL se puede decir hay que considerar tres aspectos principales entre muchos otros entre los cuales tenemos:

 

Previo a toda migración se deben replicar las aplicaciones de modo de adaptarlas al nuevo motor de base de Datos PostgreSQL de modo de que luego de hacer la migración completa estas queden totalmente funcionales.

 

·        Respaldar tablas Oracle y de ser posible crear replica de servidor mientras se realiza la migración

·        Relevamiento general de las tablas de toda la base de datos Oracle a migrar

·        Creación de diagrama relacional de entidad

·        Extracción de los datos de todas las tablas Oracle a archivos planos

·        Creación de las tablas de Oracle en el nuevo motor PostgreSQL

·        Creación de los stored procedures  (FUNCTION)

·        Creación de vistas, triggers.

·        Ingreso de los datos extraídos de las tablas Oracle a las nuevas estructuras de tablas vacías en PostgreSQL

·        Comenzar el proceso de ejecución y pruebas de aceptación.

·        Luego de la aceptación OK cambiar el servidor replica al servidor PostgreSQL para que desde este momento se comience a utilizar el nuevo motor de base de datos desde las aplicaciones.

 

Creación de tablas

PostgreSQL soporta motor de almacenamiento de tipo relacional, las tablas originales de Oracle podrían ser de un tipo especifico pero acá en PostgreSQL serán del tipo relacional así no necesiten ciertas virtudes de tablas relacionales, todas las tablas en PostgreSQL son tratadas de la misma manera.

 

En PostgreSQL aun cuando se necesite,  la creación de tablas no transaccionales, en donde se necesite almacenamiento,  recuperación rápida de datos, tablas transaccionales en donde se utilicen claves foráneas que permitan establecer restricciones para establecer integridad referencial de registros; siempre se utilizara la misma forma de creación de tablas ya que una tabla de PostgreSQL esta preparada para las distintas exigencias de los usuarios y basta con configurar la tabla de una manera especifica para tener o no las características necesarias.

 

Un ejemplo de la creación de una tabla en PostgreSQL seria el siguiente.

 

CREATE TABLE ejemplo (

    Campo_decimal      DECIMAL(3)  DEFAULT NEXTVAL('valor'),

    Campo_varchar     VARCHAR(40) DEFAULT 'char'

);

 

 Tablas temporales

La sintaxis es:

 
             CREATE TEMPORARY TABLE tabla_temp
             (
              campo1 tipoDato,
              campo2 tipoDeDato,
              ...
             );
 

Es importante mencionar que las tablas temporales en PostgreSQL existirán mientras la conexión este abierta o hasta que las borremos antes de terminar la conexión. Luego de terminada la conexión la tabla temporal es destruida.

Si se crea una tabla temporal con el mismo nombre de una ya existente en la base de datos esta ultima quedara oculta y solo se trabajara con la temporal.

Las tablas temporales no pueden ser referenciadas más de una vez en una misma consulta.

Las tablas temporales solo pueden ser accedidas por el usuario que la crea, si se desea que la tabla sea accedida por varios usuarios hay que crear la tabla temporal de tipo HEAP.

 
CREATE TEMPORARY TABLE tabla_temp
(
   campo1 tipoDato,
   campo2 tipoDeDato,
   ...
) TYPE = HEAP;
 
Algo muy importante para la migración de los datos seria la compatibilidad de los datos del contenido de las tablas, si bien se están creando nuevamente las tablas en la nueva plataforma PostgreSQL, para un mejor manejo de los datos, se recomienda tener los mismos tipos de datos o tipos de estructuras compatibles para no tener conflictos durante la fase de importación de estos al ser exportados en las antiguas tablas de Oracle y poder contenerlos nuevamente en las tablas creadas de PostgreSQL sin ningún inconveniente.

 

Creación de stored procedures (FUNCTION)

 

Si bien los procedimientos y funciones no son alguna de las características fuertes de Oracle, es importante prever la migración de algunos procedimiento o funciones que se tengan ya creadas en la vieja plataforma de Oracle, esto seria primordial para la continuidad de los procesos automáticos de consulta y para un correcto tratamiento de los datos tal como se hacia (en caso de que se hiciera) en la base de datos Oracle migrada; cabe destacar adicionalmente que en PostgreSQL no existen procedures sino solo funciones, entonces, el trabajo seria la adaptación tanto de procedimientos o funciones a ser solo funciones.

 

La sintaxis para la creación de estas funciones seria la siguiente:

 
 

CREATE [ OR REPLACE ] FUNCTION

    name ( [ [ argmode ] [ argname ] argtype [, ...] ] )

    [ RETURNS rettype ]

  { LANGUAGE langname

    | IMMUTABLE | STABLE | VOLATILE

    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT

    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER

    | AS 'definition'

    | AS 'obj_file', 'link_symbol'

  } ...

    [ WITH ( attribute [, ...] ) ]

 
 

Los procedimientos de Oracle le dan al programador más flexibilidad porque nada necesita ser explícitamente retornado, pero esto mismo se puede hacer a través de los parámetros INOUT o OUT.

Un ejemplo:

CREATE OR REPLACE PROCEDURE cs_create_job(v_job_id IN INTEGER) IS

  a_running_job_count INTEGER;

  PRAGMA AUTONOMOUS_TRANSACTION;(1)

BEGIN

  LOCK TABLE cs_jobs IN EXCLUSIVE MODE;(2)

 

  SELECT count(*) INTO a_running_job_count

  FROM cs_jobs

  WHERE end_stamp IS NULL;

 

  IF a_running_job_count > 0 THEN

     COMMIT; -- free lock(3)

     raise_application_error(-20000, 'Unable to create a new job: a job is currently running.');

  END IF;

 

  DELETE FROM cs_active_job;

  INSERT INTO cs_active_job(job_id) VALUES (v_job_id);

 

  BEGIN

    INSERT INTO cs_jobs (job_id, start_stamp) VALUES (v_job_id, sysdate);

    EXCEPTION WHEN dup_val_on_index THEN NULL; -- don't worry if it already exists(4)

  END;

  COMMIT;

END;

/

show errors

Los procedimientos como éste pueden ser fácilmente convertidos a funciones PostgreSQL retornando un INTEGER. Este procedimiento en particular es interesante porque nos puede enseñar algunas cosas:

·        No hay ningún estamento pragmático en PostgreSQL.

·        Si se realiza un LOCK TABLE en PL/pgSQL, el bloqueo (lock) no será liberado hasta que la transacción no termine.

·        Tampoco se puede tener transacciones en procedimientos PL/pgSQL. Toda la función (y otras funciones llamadas desde ésta) es ejecutada en una transacción, y PostgreSQL retira los resultados si algo va mal. Por lo tanto sólo está permitido un estamento BEGIN.

·        La excepción a esto es cuando tuviera que ser reemplazado por un estamento IF.

 

A continuación una de las formas de portar éste procedimiento a PL/pgSQL:

CREATE OR REPLACE FUNCTION cs_create_job(INTEGER) RETURNS INTEGER AS '

DECLARE

  v_job_id ALIAS FOR $1;

  a_running_job_count INTEGER;

  a_num INTEGER;

  -- PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN

  LOCK TABLE cs_jobs IN EXCLUSIVE MODE;

  SELECT count(*) INTO a_running_job_count

  FROM cs_jobs

  WHERE end_stamp IS NULL;

 

  IF a_running_job_count > 0 THEN

     -- COMMIT; -- free lock

     RAISE EXCEPTION ''Unable to create a new job: a job is currently running.'';

  END IF;

 

  DELETE FROM cs_active_job;

  INSERT INTO cs_active_job(job_id) VALUES (v_job_id);

 

  SELECT count(*) into a_num

  FROM cs_jobs

  WHERE job_id=v_job_id;

 

  IF NOT FOUND THEN

     -- If nothing was returned in the last query

     -- This job is not in the table so lets insert it.

     INSERT INTO cs_jobs(job_id, start_stamp) VALUES (v_job_id, sysdate());

     RETURN 1;

  ELSE

     RAISE NOTICE ''Job already running.'';(1)

  END IF;

 

  RETURN 0;

END;

' LANGUAGE 'plpgsql';

 
 

Para la migración de los stored  procedures a funciones de PostgreSQL hay que tener en consideración varios aspectos:

·        Solo existen funciones en PostgreSQL

·        La forma de llamar a una función es similar a la llamada a un procedimiento en Oracle, a continuación la declaración y llamada de una función a través de una sentencia select

 
      CREATE FUNCTION dup(in int, out f1 int, out f2 text)

    AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$

    LANGUAGE SQL;

 

SELECT * FROM dup(42);

 
 

·        En PostgreSQL las funciones soportan el return.

·        Si no se especifican los parámetros como salida y entrada por defecto son considerados como parámetros de entrada (IN). Es de utilidad la declaración de parámetros de salida (OUT) si se necesita devolver algún valor específico.

·        Los DECLARE son comúnmente utilizados para:

·        Definir variables locales dentro de una rutina (función, etc).

·        Declarar cursores y handlers.

      Pueden ser usados solo dentro de las sentencias  BEGIN … END y deben estar al comienzo, antes de cualquier otra sentencia.

 

Creación de vistas y triggers

Además de la sintaxis hay que tener en cuenta algunos aspectos generales dependiendo de cada caso, principalmente el uso de las sentencias de flujo (case, while, for, etc) con su correcta sintaxis, las declaraciones de variables.

 

·        La sintaxis de las vistas:

  
             CREATE VIEW nombre_vista AS sentencia_select 

La sentencia de seleccion puede ser un SELECT de una o varias tablas así como de otras vistas.

 

·        La sintaxis de los triggers:

 
     CREATE TRIGGER nombre_trigger  
     tiempo_trigger[BEFORE|AFTER]  
     evento_trigger[INSEERT|UPDATE|DELETE] ON nombre_tabla 
     FOR EACH ROW 
     EXECUTE nombre_funcion_sentencia_trigger

 .

 

 

CASO PRÁCTICO

 

 

Caso Practico: Suponga que a usted lo contratan como Asesor para elaborar un sistema de información de Ventas de Tickets vía WEB usando Postgres para un Stadium de Béisbol. Cuales serian sus recomendaciones y pasos a seguir.

 

Pasos iniciales a considerar del Diseño:

*      Debe relevarse y entenderse el toda la información acerca de la emisión de tickets, procedimientos estándares y varios por medio de los cuales se realiza la venta de tickets y tareas relacionadas con la misma para poder desglosarla para poder ser almacenada y gestionado en el motor PostgreSQL a utilizar

*      Definición de las funciones que debe realizar el Sistema de Información para cada uno de los módulos del sistema de información.

*      Representar el comportamiento del Sistema de Información a consecuencias de acontecimientos externos

*      Dividir en forma jerárquica los módulos que representan la información, funciones y comportamiento para poder lograr el requerimiento y óptimo funcionamiento del sistema de ventas general.

 

Explicación del sistema de Información Diseñado:

 

        

*                  Modulo Principal

 

 

 

Básicamente el sistema de información que se plantea en este caso lo dividiremos en una serie de módulos, cada uno de ellos se encargara de realizar las tareas especificas las cuales englobadas integraran al sistema en general de ventas de tickets vía Web.

 

El Modulo principal del “Sistema de Información de Venta de Boletos Web” es la cara inicial que se visualiza al acceder a dicho sistema a través de la Internet, a partir de aquí, el usuario podrá utilizar cualquiera de las opciones que le harán recorrer el sitio Web completo proporcionándole la información necesaria de gestión de compra y otras opciones mas que posee en el sitio Web. Este está compuesto a su vez por sub. módulos con tareas específicas las cuales ayudan a presentar el resultado final por el cual fue creado el sitio Web de ventas.

 

En esta página inicial existen links programados, mediante los cuales se pueden acceder los sub. módulos y a su vez muestra información de vista rápida para el cliente, es decir, al acceder esta página principal, el usuario podrá visualizar los datos requeridos con mayor importancia sin necesidad de entrar a los módulos visualizando todo lo referente al stadium, información general, eventos y links hacia las compra de boletos de próximos partidos entre otros eventos del propio Stadium, se entraría a estos solo para los detalles de la gestión en realidad del sistema de información; pero en un inicio ya desde acá podrá visualizar los indicadores de ventas, disponibilidades, noticias, resumen de novedades, siendo todos estos datos tomados en tiempo real a través de la arquitectura de la red y presentados por medio de procesos programados los cuales acceden la información desde una base de datos estructurada de tipo PostgreSQL los cuales son acezados por las páginas Web, todas las funciones de presentación de los datos son realizadas por funciones programadas en el motor PostgreSQL capaces de realizar dichos cálculos para ser presentado a los usuarios.

 

Esta página principal es en conclusión la base del sistema, posee toda la información base requerida solo en la primera vista y sirve para que el usuario decida a que modulo solicitar para su gestión de información.

 

La organización de base de datos PostgreSQL posee las siguientes consideraciones:

 

Para comprender mejor la administración de bases de datos, debemos tener claros los objetivos de los sistemas manejadores de bases de datos que debemos usar en este “Sistema de Información de Venta de Boletos Web”:

·        Oportunidad: información suministrada por el sistema de información  con bases de datos que debe estar a tiempo para actuar al respecto. Asociado a la eficiencia y eficacia.

·        Disponibilidad: permitiendo la accesibilidad de los datos.

·        Consistencias: asociado a la calidad de los datos.

·        Evolución: posibilidad de poder ir adaptándose a los cambios

·        Integridad: asociado a las restricciones de integridad de los datos, referencias y transacciones.

 

El “Sistema de Información de Venta de Boletos Web”  basado en manejadores de bases de datos PostgreSQL, es esencial un apropiado manejo de los usuarios y sus permisos sobre el acceso a los datos de las ventas primordialmente, aplicando las restricciones que se requieran según los perfiles que se definan de acuerdo a niveles jerárquicos y por categorías. Cada nivel de seguridad puede tener componentes jerárquicos (alto secreto, secreto, confidencial, no clasificado).

 

Otra de las actividades que se deben realizar para la administración de la bases de datos en el “Sistema de Información de Venta de Boletos Web”  es el respaldo periódico de la misma. Es recomendable hacer regularmente respaldos de la base de datos, de manera que en un momento que se requiera (por daño en la DB original) se puedan ejecutar procedimientos de recuperación de la información a partir del último respaldo y la información contenida en el Log de transacciones.

El Log de transacciones (.log) registra secuencialmente todas las actualizaciones realizadas sobre una base de datos, en el mismo se indican las sentencias ejecutadas y el usuario que las ejecutó.

 

 

 

 

 

 

 

 

Esquema del sistema de bases de datos PostgreSQL y ejemplificación de la recuperación de la misma.

 

 

 

En este esquema se representa, el archivo principal original de base de datos con su archivo .log original en un dispositivo  de almacenamiento A, esta base de datos esta siendo controlada por el servidor SERVER. En otro dispositivo de almacenamiento (disco duro), se mantiene un .mlg (mirror log de la base de datos principal). Separadamente se mantiene almacenado en el dispositivo de almacenamiento C, el último respaldo de la base de datos principal. Al ocurrir un problema critico con el dispositivo de almacenamiento A, se podrá recuperar toda la información con el último respaldo de la base de datos principal y el mirror log que se encontraba en un dispositivo diferente al que se daño. En este caso se procede a aplicar las transacciones contenidas en el mirror log al archivo de respaldo y esta seria la manera propuesta ideal para nuestra base de datos PostgreSQL para el “Sistema de Información de Venta de Boletos Web”.

 

El “Sistema de Información de Venta de Boletos Web” estará diseñado de manera modular, cada uno de estos módulos poseerá conexiones independientes con una base de datos centralizada con tablas independientes y relacionadas según sea el caso de cada modulo, de esta manera se podrá garantizar que con la robustez de nuestra base de datos PostgreSQL todos dichos módulos presten de manera sencilla y eficaz los requerimientos de todos los clientes del stadium, se pueda organizar la data de una manera normalizada y se pueda cubrir con las necesidades de los clientes tanto con ventas y todos los servicios explotados por medio del “Sistema de Información de Venta de Boletos Web”.

 

 

 

 

*                  Modulo Quienes Somos

 

 

Seria un modulo el cual mediante conectores quienes acceden a la base de datos PostgreSQL podría proporcionar a los usuarios del “Sistema de Información de Venta de Boletos Web”  la información necesaria acerca del sito Web, de los clientes mediante y el manejo de clientes en el sitio, de los servicios con la explicación de cada uno de ellos detalladamente e información acerca del stadium así como planos de ubicación entre otros; todos estos datos guardados de manera estática en la base de datos y con capacidad de múltiple acceso lo cual es una de las ventajas que posee el motor PostgreSQL.

 

*                  Modulo Servicios

 

 

El modulo de servicios es un modulo el cual puede ser accedido por los clientes registrados del sitio para que por medio de este se acceda a los servicios adicionales, por medio de los cuales, el cliente podría realizar planificaciones de acuerdo a fechas de eventos ya planificados por otros usuarios en el Stadium, ver por otra parte el status y estado de alguna negociación realizada, arrendamientos, ventas que el stadium le haya hecho o reservaciones realizadas tanto para eventos como para boletos de eventos de otros clientes en cronograma para el Stadium; toda esta información procesada y generada luego de consultas cruzadas realizadas por algún usuario en particular.

 

 

*                  Modulo Clientes y Eventos

 

 

Los clientes poseen un modulo prácticamente con conexión directa a la base de datos PostgreSQL; es por esto que en la base de datos para la tabla la cual guarda la información de todos los clientes posee una creación especial con ciertos parámetros especiales de indexación especial para, que en el momento que los usuarios se registren, se pueda obtener una respuesta optima para todos los usuarios que accedan a el sitio al mismo tiempo y poder así garantizar la optima operatividad del modulo especifico de la pagina Web, garantizando no perder ni un cliente de ninguna manera; el proceso de registro es muy importante ya que sea como sea para poder procesar la compra y garantizar la seguridad de la misma el usuario debe esta registrado correctamente; adicionalmente el usuario ya registrado por medio de este modulo podría revisar y modificar sus datos ya registrados en el momento que lo desee.

 

El modulo de eventos puede ser visto por cualquier usuario del sitio y también accede a la base de datos para poder mostrar la lista de eventos que están pautados por cualquiera de los clientes del stadium, también por acá existen formularios por medio de los cuales de manera online cualquier cliente podría contratar u organizar un evento con ayuda totalmente online.

 

 

 

*                  Modulo Contactos y Ayuda

 

 

Los módulos de contactos y de ayuda están muy inter relacionados tanto visualmente como a nivel del motor de base de datos PostgreSQL, esto es porque a través de estos módulos solo visualizamos datos, no realizamos ningún tipo de ingreso de datos a diferencia de los módulos de clientes y eventos (los cuales guardan información en la base de datos); en estos módulos los usuarios pueden visualizar información, buscar información, enviar información directa a los administradores del site del stadium, acceder a ayuda en línea en caso de estar disponible (ayuda disponible solo en algunos horarios), y todo lo relacionado a lo que a contacto y ayuda se refiere, estos módulos no necesitan ni poseen de tanta criticidad a nivel de la base de datos ya que son solo usados para mostrar información y tampoco necesitan de ningún nivel de seguridad.

 

 

 

 

*                  Modulo Seguridad

 

 

Este modulo de seguridad en un modulo inmerso en el sistema mas no es accesible desde la pagina principal, por medio de este sistema podemos garantizar la seguridad del site en general y de las transacciones de ventas y datos que aquí se contienen garantizando la privacidad y confianza para los usuarios. Para esto tenemos unas funciones programadas en el motor de la base de datos PostgreSQL donde los usuarios administradores del sistema de información tiene roles para el analista, el usuario custodio (referente) y el administrador del sistema. Toda la información del usuario se toma del directorio activo aplicando de esta manera programación de seguridad orientada a objetos en la base de datos siendo cada unos de los nombrados un ente necesario para la seguridad y tomados en cuenta como parte fundamental de la programación.

*      Roles:

 

¨      Súper Usuario: Usuario quien tiene acceso a todas las opciones de la aplicación de seguridad sin ningún tipo de restricción.

¨      Analista custodio de aplicación: Persona quien crea los catálogos de las aplicaciones a la cuáles el es custodio dentro del “Sistema de Información de Venta de Boletos Web”.

¨      Usuario Custodio de Aplicación: Usuario quien tiene acceso a dar o quitar permisos sobre una aplicación a otros usuarios.

 

*      Entidades:

 

¨      Aplicación: Agrupación de catálogos a los cuales se les puede dar o negar permiso.

¨      Catalogo: Unidad mínima de permiso, puede ser una página, una opción, etc., los catálogos tienen una clave única la cual se utiliza para ejecutar la verificación de permiso.

¨      Grupo: Agrupación de usuarios y catálogos que comparten el perfil de permisos.

¨      Usuario: Persona que tiene permiso sobre los grupos, los permisos de los grupos son heredados por los usuarios.

 

 

*      Relaciones:

 

¨      Grupo vs. Catálogo: Un Grupo puede tener asignados catálogos, en esta relación se especifican los tipos de permisos permitidos: Lectura, escritura, modificación, anulación, lectura especial.

¨      Grupo vs. Usuario: Relación de los usuarios que pertenecen al grupo, estos usuarios heredan los permisos asignados al grupo sobre los catálogos indicado en la relación anterior.

¨      Aplicación vs. Usuario Custodio: Relación entre aplicación y usuario, esta se utiliza para indicar que usuario tiene rol de custodio.

 

 

*      Opciones de Uso:

 

¨      Utilizando Servicios Web: Existen varios servicios web alojados en servidores propios de la intranet del stadium los cuales proveen la funcionalidad básica para la autenticación y el uso del repositorio de seguridad.

¨      Componente .NET : Se creó un componente .net llamado AccessRules.dll el cual es llamado por los servicios Web, este tiene la misma funcionalidad, es una capa inferior.

¨      Procedimientos almacenados: todos los accesos están programados en la base de datos, lo que da otro nivel de autenticación.

 

 

*      Servicio Opcional:

 

¨      Se construyó un servicio para acceder el directorio activo, el cual provee métodos de búsqueda por el nombre, el indicador y el dominio

 

 

*      Auditoria:

 

¨      Existe una tabla que guarda cualquier creación, modificación o eliminación de los registros de las tablas de la base de datos de seguridad. Esto siempre y cuando se emplee la aplicación, porque alguien con suficiente permiso puede evitar esto. Por esto es recomendable utilizar los servicios Web adecuados para validar los permisos, que exista un solo súper usuario y que no todos tengan acceso administrados a la base de datos.

 

 

CONCLUSIONES

 

 

El software libre constituye una alternativa a las soluciones propietarias y un paso superior a una sociedad con un flujo libre de la información, para la mayoría de los ámbitos, tanto públicos como privados. Este conjunto de soluciones informáticas que se liberan bajo distintas licencias, facilitan la reutilización de la experiencia, permiten su uso generalizado y en algunos casos, gratuito, y ello no sólo es recomendable por el hecho económico de favorecer la competencia en cada sector, reducir los costos y delimitar la dependencia tecnológica, sino también porque proporciona una mayor seguridad y fiabilidad en términos de seguridad informática así como una mayor capacidad de evolución que sus contrapartidas comerciales.

 

 

 

 

INFOGRAFÍA

 

 

Breve análisis del Software Libre

http://linux.ciberaula.com/articulo/breve_analisis_software_libre/

Documento que analiza brevemente el software libre y sus ventajas en un modelo de negocio adaptado a sus características.

Diez ventajas del software libre y propietario

http://www.abadiadigital.com/noticia2010.html

Las ventajas aquí expuestas tampoco son las más importantes ni las únicas, simplemente son diez de las ventajas existentes tanto en un modelo como en el otro y, por supuesto, hay muchos puntos en común entre ambos sistemas que aquí no entran, por no aportar elementos que ayuden a diferenciar y decantarse entre uno u otro.

El software libre

http://www.monografias.com/trabajos12/elsoflib/elsoflib.shtml

Software Libre: Definiciones preliminares. Clasificaciones del software. Libertades Básicas. Qué es y qué no es Software Libre. Ventajas y Desventajas. Decisiones que afecta. Maneras de obtener software libre. Leyes y entidades relacionadas. Importancia del estudio del Software Libre

Introducción a PostgreSQL - Instalación e inicialización

http://www.linux-es.org/node/536

En este artículo se da una introducción a la base de datos PostgreSQL, también se indica como instalarla e inicializarla para empezar a utilizarla.

Introducción y Ventajas del Software Libre

bulma.net/~gallir/BULMA/campos2004.pdf

Software libre, software propietario, código abierto, derechos de autor, tipos de software, estado actual del software libre, etc.

Historia es Linux

http://www.xserver.cl/historiadelinux.php

La historia de Linux está fuertemente vinculada a la del proyecto GNU. El proyecto GNU, iniciado en 1983, tiene como objetivo el desarrollo de un sistema Unix completo compuesto enteramente de software libre.

La Definición de Software Libre

http://www.gnu.org/philosophy/free-sw.es.html

Software Libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software.

Linux

http://es.wikipedia.org/wiki/Linux

Definición, Historia, Características, Distribuciones, Instalación, Mercado, etc.

Oracle

http://es.wikipedia.org/wiki/Oracle

Definición, Historia, Características, Enlaces a otras páginas relacionadas con Oracle.

Oracle

http://www.monografias.com/trabajos25/oracle/oracle.shtml

Oracle es básicamente un herramienta cliente/servidor para la gestión de base de datos, es un producto vendido a nivel mundial, aunque la gran potencia que tiene y su elevado precio hace que solo se vea en empresas muy grandes y multinacionales, por norma general.

PostgreSQL

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

Definición, Historia, Características, Productos alrededor de Postgres, etc.

PostgreSQL

www.iessanvicente.com/colaboraciones/postgreSQL.pdf

Definición, Historia, Características, Fortalezas, Debilidades, Postgres vs. MySQL.

PostgreSQL

http://postgresql.org.pe/articles/postgresql.pdf

Ventajas, Pasos para instalar PostgreSQL, Problemas comunes, etc.

Postgres vs. Oracle

http://www.velug.org.ve/archivo/l-linux-2005-August/055197.html

Diferencias entre Postgres y Oracle

¿Qué es el software libre?

http://sinetgy.org/~jgb/articulos/soft-libre-que-es/

Probablemente el lector tenga claro que el software libre constituye una forma diferente y novedosa de entender la producción y distribución de programas, con grandes consecuencias sobre los usuarios y los productores de software.

Servidor HTTP Apache

http://es.wikipedia.org/wiki/Apache_http_server

Definición, Ventajas, Módulos, Enlaces a otras páginas de interés.

Servidor Web  

http://www.linuxparatodos.net/portal/staticpages/index.php?page=servidor-web

Definición, ¿Cómo funciona este servicio?, ¿Cuales son los beneficios al instalar un servidor Web en Linux?, Software y Hardware requerido.

Software de Libre Disponibilidad. Su utilización en el Estado

http://www.monografias.com/trabajos18/software-libre-estado/software-libre-estado.shtml

Para que la aplicación e implantación del software libre no fracase, se deberá contar con una planificación estratégica y con el apoyo de las autoridades expresado en la voluntad y el compromiso político (en todos los sectores del Estado) para llevar a cabo el cambio y no fracasar en el intento. Es necesario, en primer término capacitar a los empleados, sus usuarios, y que todos los que intervengan en el proceso estén convencidos de que ese esfuerzo y el cambio son positivos.

Software libre

http://es.wikipedia.org/wiki/C%C3%B3digo_libre

Definición, Historia, Libertades, Tipos de Licencias, Comparación con el software Open Source, Significancia política, Seguridad relativa, Software libre en la Administración Pública.

Software libre

http://www.tovaritx.com/libre/

¿Qué es software libre?, Características, ¿Por qué software libre?, Las economías nacionales y el software libre.

El software libre y las lenguas minoritarias: una oportunidad impagable

http://www.cibersociedad.net/textos/articulo.php?art=16

En este artículo se abordan las principales características del software libre y se expone, de modo más concreto, su función y sus potencialidades respecto a las lenguas minoritarias en España.

Tipos de software y licencias

http://www.inclusiondigital.net/albergue/inst/tiposoft.html

Tipos de software y licencias más comunes, Software libre, Dominio Público, Copyleft, Open Source, Software GNU, Freeware, Shareware, etc.

Ubuntu (distribución Linux)

http://es.wikipedia.org/wiki/Ubuntu_(distribuci%C3%B3n_Linux)

Definición, Historia, Características, Organización de paquetes, Lanzamientos, Variantes, etc.

Ubuntu: GNU/Linux para seres humanos

http://www.ubuntu-es.org/index.php?q=ubuntu/introducción

Ubuntu es un sistema operativo de código abierto desarrollado en torno al kernel Linux.

Una Introducción a APACHE

http://linux.ciberaula.com/articulo/linux_apache_intro/

Apache es el servidor web hecho por excelencia, su configurabilidad, robustez y estabilidad hacen que cada vez millones de servidores reiteren su confianza en este programa.

Ventajas del Software Libre para Venezuela.

http://www.cnti.ve/cnti_docmgr/detalle.html?categoria=2330

El uso del software libre contrarresta el individualismo que difunde el software licenciado porque se desarrolla bajo una concepción de cooperación entre un grupo de personas, cooperativas, instituciones del Estado, organizaciones sociales, etc.

What is Ubuntu?

http://www.ubuntu.com/products/whatisubuntu

Ubuntu is a community developed operating system that is perfect for laptops, desktops and servers. Whether you use it at home, at school or at work Ubuntu contains all the applications you'll ever need, from word processing and email applications, to web server software and programming tools.

 

 

 

 

 

 

 

 

Hosted by www.Geocities.ws

1