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
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
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.
¿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
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.
·
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
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.
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'
);
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.
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.
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 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.
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.
|
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. |
|
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. |