Universidad Yacambú

Vicerrectorado de Estudios a Distancia

Sistemas de Información Gerencial


 

Trabajo Nº4

 

Milethzi Gómez

Teresa Alfonzo

Albanelly Salazar Mariño

 

Noviembre,2007

Que es software libre

Software libre (en inglés free software) es la denominación del software que, una vez obtenido, puede ser usado, copiado, estudiado, modificado y redistribuido libremente. Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software; de modo más preciso, se refiere a cuatro libertades de los usuarios del software: la libertad de usar el programa, con cualquier propósito; de estudiar el funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo que puede ayudar a otros; de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie (para la segunda y última libertad mencionadas, el acceso al código fuente es un requisito previo).
El software libre suele estar disponible gratuitamente, o a precio del coste de la distribución a través de otros medios; sin embargo no es obligatorio que sea así, por lo no hay que asociar software libre a "software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente ("software comercial"). Análogamente, el "software gratis" o "gratuito" incluye en algunas ocasiones el código fuente; no obstante, 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.
Tipos de Licencias
Una licencia es aquella autorización formal con carácter contractual que un autor de un software da a un interesado para ejercer "actos de explotación legales". Pueden existir tantas licencias como acuerdos concretos se den entre el autor y el licenciatario. Desde el punto de vista del software libre, existen distintas variantes del concepto o grupos de licencias:


Licencias GPL
Una de las más utilizadas es la Licencia Pública General GNU (GPL). El autor conserva los derechos de autor (copyright), y permite la redistribución y modificación bajo términos diseñados para asegurarse de que todas las versiones modificadas del software permanecen bajo los términos más restrictivos de la propia GNU GPL. Esto hace que no sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser GPL.
Es decir, la licencia GNU GPL posibilita la modificación y redistribución del software, pero únicamente bajo esa misma licencia. Y añade que si se reutiliza en un mismo programa código "A" licenciado bajo licencia GNU GPL y código "B" licenciado bajo otro tipo de licencia libre, el código final "C", independientemente de la cantidad y calidad de cada uno de los códigos "A" y "B", debe estar bajo la licencia GNU GPL.
En la práctica esto hace que las licencias de software libre se dividan en dos grandes grupos, aquellas que pueden ser mezcladas con código licenciado bajo GNU GPL (y que inevitablemente desaparecerán en el proceso, al ser el código resultante licenciado bajo GNU GPL) y las que no lo permiten al incluir mayores u otros requisitos que no contemplan ni admiten la GNU GPL y que por lo tanto no pueden ser enlazadas ni mezcladas con código gobernado por la licencia GNU GPL.
Aproximadamente el 60% del software licenciado como software libre emplea una licencia GPL.


Licencias estilo BSD
Llamadas así porque se utilizan en gran cantidad de software distribuido junto a los sistemas operativos BSD. El autor, bajo tales licencias, mantiene la protección de copyright únicamente para la renuncia de garantía y para requerir la adecuada atribución de la autoría en trabajos derivados, pero permite la libre redistribución y modificación, incluso si dichos trabajos tienen propietario. Son muy permisivas, tanto que son fácilmente absorbidas al ser mezcladas con la licencia GNU GPL con quienes son compatibles. Puede argumentarse que esta licencia asegura “verdadero” software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre. Otras opiniones están orientadas a destacar que este tipo de licencia no contribuye al desarrollo de más software libre.
Licencias estilo MPL y derivadas
Esta licencia es de Software Libre y tiene un gran valor porque fue el instrumento que empleó Netscape Communications Corp. para liberar su Netscape Communicator 4.0 y empezar ese proyecto tan importante para el mundo del Software Libre: Mozilla. Se utilizan en gran cantidad de productos de software libre de uso cotidiano en todo tipo de sistemas operativos. Desde un punto de vista del desarrollador la GPL presenta un inconveniente en este punto, y lamentablemente mucha gente se cierra en banda ante el uso de dicho código. No obstante la MPL no es tan excesivamente permisiva como las licencias tipo BSD. Estas licencias son denominadas de copyleft débil. La NPL (luego la MPL) fue la primera licencia nueva después de muchos años, que se encargaba de algunos puntos que no fueron tenidos en cuenta por las licencias BSD y GNU. En el espectro de las licencias de software libre se la puede considerar adyacente a la licencia estilo BSD, pero perfeccionada.


Copyleft
Hay que hacer constar que el titular de los derechos de autor (copyright) de un software bajo licencia copyleft puede también realizar una versión modificada bajo su copyright original, y venderla bajo cualquier licencia que desee, además de distribuir la versión original como software libre. Esta técnica ha sido usada como un modelo de negocio por una serie de empresas que realizan software libre (por ejemplo MySQL); esta práctica no restringe ninguno de los derechos otorgados a los usuarios de la versión copyleft. También podría retirar todas las licencias de software libre anteriormente otorgadas, pero esto obligaría a una indemnización a los titulares de las licencias en uso. En España, toda obra derivada está tan protegida como una original, siempre que la obra derivada parta de una autorización contractual con el autor. En el caso genérico de que el autor retire las licencias "copyleft", no afectaría de ningún modo a los productos derivados anteriores a esa retirada, ya que no tiene efecto retroactivo. En términos legales, el autor no ha derecho a retirar el permiso de una licencia en vigencia. Si así sucediera, el conflicto entre las partes se resolvería en un pleito convencional.

Diferencias entre postgres y Oracle

 

En todo caso, hay distancias importantes:

PostgreSQL es una base de datos Objeto Relacional, mientras que Oracle es sólo una base de datos Relacional. Oracle no tiene la infraestructura OR y la simula con productos adicionales.

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

PostgreSQL tiene cinco lenguajes de programación procedurales, algunos sumamente especializados y avanzados como PL/perl y PL/R, mientras que Oracle sólo tiene uno.

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 puedes desarrollar tus propios tipos.

PostgreSQL puede crear índices lineales (B-Tree), presenciales (Hash)y espaciales (R-Tree). Oracle sólo puede los dos primeros, se recomienda no usar el segundo, y si se quiere el tercer tipo se tiene que comprar software adicional. En PostgreSQL tienes la posibilidad de escribir tus propias rutinas 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 ayudarte solamente si tienes el contrato de mantenimiento al día.

Más aún, PostgreSQL es software libre, Oracle es privativo y caro

PostgreSQL se instalan de forma sencilla muy parecida a mysql. Las bases de datos iniciales también son creadas automáticamente. La instalación se produce a partir de un fichero rpm. Le acompaña una buena documentación.

Oracle resulta muy difícil de instalar. No dispone de un fichero rpm de instalación. Podemos bajarnos un instalador particular del website de Oracle. Incorpora documentación para poder ejecutar el instalador. Se trata de un rudimentario asistente que realiza preguntas al usuario o administrador y presenta una lista de componentes a elegir. Un novato podría perderse en esta parte. Durante la instalación se nos da opción para crear una base de datos inicial. La documentación del motor de base de datos Oracle sólo está disponible en el website.

Oracle y postgresql son resistentes a fallos.

Sólo Oracle permite realizar un backup simultáneamente a la realización de transacciones.
Orcle y postgres son las más estables y las más rápidas al momento de realizar cargas masivas.

Por lo demás, 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 ambas aplican mecanismos que no están basados en locks.

En conclusion: Oracle es el motor de base de datos con más funcionalidades. PostgreSQL es el segundo tras Oracle. Si la seguridad de los datos es un punto esencial, Oracle y PostgreSQL son los únicos motores de fiar. Hay que matizar que Oracle requiere de un parche para comportarse de forma realmente segura con los datos.

 

Fortalezas y Debilidades de Postgres

 

FORTALEZAS

PostgreSQL incluye nuevas características que proporcionan una mayor facilidad para crear aplicaciones modernas, mayor potencia y una mayor flexibilidad. seguidamente se detallan las fortalezas principales con respecto a un sistema tradicional de base de datos relacional. Para ello tomaremos como referencia las características del estándar SQL92.
Nuevos tipos de datos: A parte de los tipos de datos que incluye SQL, PostgreSQL soporta un conjunto extendido de nuevos tipos, entre los que podemos destacar:
            Tipos geométricos: Estos tipos permiten representar objetos especiales de bidimensionales. El tipo point (punto) es la base del resto. Los tipos soportados son point (), line (), lseg (), box (), path (), polygon (), circle ().
Además, se proporciona un conjunto de operadores y funciones que permiten realizar operaciones geométricas ( escalado, translaciones, rotaciones, hallar puntos de intersección).
            Tipos de dirección de red: PostgreSQL aporta tipos para almacenar direcciones P y direcciones MAC, para evitar el uso del tipo cadena de caracteres para esta tarea, puesto que aporta restricciones y funciones asociadas a estos tipos de datos. Los tipos incluidos son cidr (), inet () y macaddr ().
            Tipo de datos Boolean: Este tipo de datos está incluido en las especificaciones de SQL99.
Potente manejo de los tipos de datos sobre fechas.
Incluye dentro del tipo de datos numérico el tipo serial, que permite crear identificadores únicos para entradas en las tablas.
            Tipo text: dentro del tipo de datos cadena de caracteres. Este tipo no está especificado por el estándar SQL, pero si es soportado por muchos RDBMS. Este tipo de datos admite una cadena de caracteres de longitud variable e ilimitada ( limitado por la capa de hardware).
            Arrays: Se permite definir columnas como arrays multidimensionales de longitud variable. Los arrays podrán ser de cualquier tipo predefinido en PostgreSQL o de un tipo definido por el usuario. No conviene abusar de es esta característica.
Funciones y operadores: PostgreSQL proporciona un amplio conjunto de funciones y operadores para los tipos de datos soportados. Además, los usuarios pueden definir sus propias funciones y operadores.
No obstante, hay que ser consciente que la mayoría de los operadores y funciones ofrecidas, exceptuando los operadores aritméticos básicos y de comparación, así como algunas funciones determinadas, no están incluidas en el estándar de SQL, con el consiguiente problema de portabilidad. De todos modo, la mayoría del los RDBMS incluyen funciones compatibles o muy similares.
Herencia: Una tabla puede heredar atributos de otra.

DEBILIDADES
Consume bastantes recursos y carga más el sistema
Por su arquitectura de diseño se necesita aumentar el número de CPUs y la cantidad de RAM
Postgre no  soporta consultas en paralelo
No posee muchas herramientas en el mercado.
Es mas lento que Oracle
Los Limites de PostgreSQL: Máximo de base de datos: ILIMITADO. Maximo de tamaño de tabla: 32TB. Máximo de tamaño de registro: 1.6TB. Máximo de tamaño de campo: 1GB. Máximo de registros por Tabla: ILIMITADO. Máximo de campos por tabla: 250 a 1600 (depende de los tipos usados). Máximo de índices por tabla: ILIMITADO. 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.), Métodos de almacenamiento de índices: 4 (B-tree, Rtree,Hash y GisT)

 

Características de PostgreSQL
PostgreSQL está considerado como la base de datos de código abierto más avanzada del mundo. PostgreSQL proporciona un gran número de características que normalmente sólo se encontraban en las bases de datos comerciales tales como DB2 u Oracle. La siguiente es una breve lista de algunas de esas características, a partir de PostgreSQL 7.1.x.
DBMS Objeto-Relacional
PostgreSQL aproxima los datos a un modelo objeto-relacional, y es capaz de manejar complejas rutinas y reglas. Ejemplos de su avanzada funcionalidad son consultas SQL declarativas, control de concurrencia multi-versión, soporte multi-usuario, transactions, optimización de consultas, herencia, y arrays.

Altamente_Extensible
PostgreSQL soporta operadores, funcionaes métodos de acceso y tipos de datos definidos por el usuario.

Soporte_SQL_Comprensivo
PostgreSQL soporta la especificación SQL99 e incluye características avanzadas tales como las uniones (joins) SQL92.

Integridad Referencial
PostgreSQL soporta integridad referencial, la cual es utilizada para garantizar la validez de los datos de la base de datos.
API Flexible
La flexibilidad del API de PostgreSQL ha permitido a los vendedores proporcionar soporte al desarrollo fácilmente para el RDBMS PostgreSQL. Estas interfacaes incluyen Object Pascal, Python, Perl, PHP, ODBC, Java/JDBC, Ruby, TCL, C/C++, y Pike.

Lenguajes Procedurales
PostgreSQL tiene soporte para lenguajes procedurales internos, incluyendo un lenguaje nativo denominado PL/pgSQL. Este lenguaje es comparable al lenguaje procedural de Oracle, PL/SQL. Otra ventaja de PostgreSQL es su habilidad para usar Perl, Python, o TCL como lenguaje procedural embebido.

MVCC
MVCC, o Control de Concurrencia Multi-Versión (Multi-Version Concurrency Control), es la tecnología que PostgreSQL usa para evitar bloqueos innecesarios. Si alguna vez ha usado algún DBMS con capacidades SQL, tal como MySQL o Access, probablemente habrá notado que hay ocasiones en las una lectura tiene que esperar para acceder a información de la base de datos. La espera está provocada por usuarios que están escribiendo en la base de datos. Resumiendo, el lector está bloqueado por los escritores que están actualizando registros.

Mediante el uso de MVCC, PostgreSQL evita este problema por completo. MVCC está considerado mejor que el bloqueo a nivel de fila porque un lector nunca es bloqueado por un escritor. En su lugar, PostgreSQL mantiene una ruta a todas las transacciones realizadas por los usuarios de la base de datos. PostgreSQL es capaz entonces de manejar los registros sin necesidad de que los usuarios tengan que esperar a que los registros estén disponibles.

Cliente/Servidor
PostgreSQL usa una arquitectura proceso-por-usuario cliente/servidor. Esta es similar al método del Apache 1.3.x para manejar procesos. Hay un proceso maestro que se ramifica para proporcionar conexiones adicionales para cada cliente que intente conectar a PostgreSQL.

Write Ahead Logging (WAL)
La característica de PostgreSQL conocida como Write Ahead Logging incrementa la dependencia de la base de datos al registro de cambios antes de que estos sean escritos en la base de datos. Esto garantiza que en el hipotético caso de que la base de datos se caiga, existirá un registro de las transacciones a partir del cual podremos restaurar la base de datos. Esto puede ser enormemente beneficioso en el caso de caída, ya que cualesquiera cambios que no fueron escritos en la base de datos pueden ser recuperados usando el dato que fue previamente registrado. Una vez el sistema ha quedado restaurado, un usuario puede continuar trabajando desde el punto en que lo dejó cuando cayó la base de datos.

 

Características de apache

 Una de ]as principales características que presenta Apache es que funciona en plataformas virtuales muy utilizadas. Al principio, Apache se utilizaba por ser el primer servidor Web basado en Unix, pero esto ya no es verdad. Apache no solo funciona en la mayoría (prácticamente en todas) las versiones de Unix sino que, además, funciona en Windows 2000/NT/9x y en muchos otros sistemas operativos de escritorio y de tipo servidor como son Amiga OS 3.x y OS/2. Apache presenta muchas otras características, entre ellas un elaborado índice de directorios; un directorio de alias; negociación de contenidos; informe de errores HTTP configurable; ejecución SetUID de programas CGI; gestión de recursos para procesos hijos; integración de imágenes del lado del servidor; reescritura de las URL; comprobación de la ortografía de las URL; y manuales online.

El resto de características importantes de Apache son:

Soporte del último protocolo HTTP 1.1: Apache es uno de los primeros  servidores Web en integrar el protocolo HTTP 1.1. Es totalmente compatible con el  nuevo estándar HTTP 1.1 y al mismo tiempo sigue siendo compatible con HTTP  1.0. Apache esta preparado para todas ]as novedades del nuevo protocolo. Por  ejemplo, antes de HTTP 1. 1, un navegador Web tenia que esperar una respuesta del  servidor Web antes de poder emitir otra petición. Con el surgimiento de HTTP 1. 1, esto ha dejado de ser así. Un navegador Web puede enviar solicitudes en paralelo, ]as cuales ahorran ancho de banda dejando de trasmitir las cabeceras HTTP en cada solicitud. De algún modo estamos recibiendo  un estimulo del lado
del usuario final porque los archivos solicitados en paralelo aparecerán antes en el
navegador.

Sencillo, con la configuración basada en un poderoso archivo: el servidor Apache no posee una interfaz de usuario grafica para su administración. Se trata de un sencillo archivo de configuración llamado httpd. conf que se puede utilizar para configurar Apache. Únicamente necesita su editor de texto favorito. Sin embargo, es lo suficientemente flexible para permitirle repartir la configuración de su host virtual en múltiples archivos para no sobrecargar un único archivo httpd. conf con toda la gestión de las múltiples configuraciones de servidores virtuales.

Soporte para CGI (Common Gateway Interface): Apache soporta CGI  utilizando los módulos mod cgi y mod cgid. Es compatible con CGI y aporta características extendidas  como personalización de las variables de entorno y soporte de reparación de errores o debugging, que son difíciles de encontrar en otros servidores Web.

Soporte de FastCGI: No todo el mundo escribe sus CGI en Per], como pueden hacer sus aplicaciones CGI mas rápidas? Apache también tiene una solución para esto. Utilice el modulo mod_f cgi para implementar un entorno FastCGI dentro de Apache y haga que sus aplicaciones FastCGl arranquen rápidamente.

Soporte de host virtuales: Apache es además uno de los primeros servidores Web  en soportar tanto host basados en IP como host virtuales

Soporte de autentificacion HTTP: Apache soporta autentificación básica basada en la Web. Esta también preparado para autentificación basada en la digestión de mensajes, que es algo que los navegadores Web populares ya han implementado. Apache puede implementar autentificación básica utilizando tanto archivos estándar de contraseña como los DBM, Llamadas a SQL o Llamadas a programas externos de autentificación.

Perl integrado: Perl se ha convertido en el estándar para la programación de scripts CGI. Apache es seguramente uno de los factores que hacen de Pert un lenguaje de programación CGI tan popular. Apache se encuentra mas cerca de Pert que nunca. Puede bajar un script CGI basado en Pert a la memoria utilizando su modulo mod pert, y reutiIizarlo tantas veces como necesite. Este proceso elimina las desventajas del arranque que se encuentran asociadas a menudo con los lenguajes de interpretación como Pert.

Soporte de scripts PHP: Este lenguaje de script ha comenzado a ser muy  utilizado y Apache /rece un amplio soporte de PHP utilizando el modulo mod  php. Ver el capitulo 15 para obtener los detalles. Soporte de serviets de Java: los servlets de Java y las Java Server Pages (JSP) se están convirtiendo en algo muy común en los sitios Web dinámicos. Puede
ejecutar servlets de Java utilizando el premiado entorno Tomcat con Apache.

Servidor proxy integrado: Puede convertir Apache en un servidor proxy cache. Sin embargo, la implementación actual del modulo opcional de proxy no soporta HTTP proxy o el ultimo protocolo HTTP 1.1. Se esta planeando actualizar este modulo muy pronto. Estado del servidor y adaptación de registros: Apache le da una gran cantidad de flexibilidad en el registro y la monitorización del estado del servidor. El estado del servidor puede monitorizarse mediante un navegador Web. Además, puede adaptar sus archivos de registro a su gusto.

Soporte de Server Side Includes (SSI): Apache /rece un conjunto de Server  Side Includes que anaden una gran cantidad de flexibilidad para el desarrollador del sitio Web.

Soporte de Secured Sockect Layer (SSL): Puede crear fácilmente un sitio Web SSL utilizando OpenSSL y el modulo mod ssl de Apache.

 

Caracteristicas de Ubuntu

.- Es software libre, (open source).

.- Este Sistema operativo se encuentra basado en la distribución Debian.

.- Esta disponible en 3 arquitecturas: Intel x86, AMD64, PowerPC y siguen preparándose otras distribuciones.

.- Los desarrolladores de Ubuntu se basan en gran medida en el trabajo de las comunidades de Debian y GNOME, tanto en las distribuciones de paquetes como en el entorno grafico aunque también esta disponible en entorno KDE.

.- Las versiones estables se liberan cada 6 meses y se mantienen actualizadas en materia de seguridad hasta 18 meses después de su lanzamiento, y continuamente se liberan actualizaciones de los distintos paquetes que la componen.

.- La nomenclatura de las versiones no obedece principalmente a un orden de desarrollo, se compone del digito del año de emisión y del mes en que esto ocurre. La versión 4.10 es de octubre de 2004, la 5.04 es de abril de 2005, la 5.10 de octubre de 2005 y la 6.06 es de junio de 2006.

.- El escritorio oficial es Gnome y se sincronizan con sus liberaciones.

.- Para centrarse en solucionar raudamente los bugs, conflictos de paquetes, etc. se decidió eliminar ciertos paquetes del componente main, ya que no son populares o simplemente se escogieron de forma arbitraria por gusto o sus bases de apoyo al software libre. Por tales motivos inicialmente KDE no se encontraba con más soporte de lo que entregaban los mantenedores de Debian en sus repositorios, razón por la que se sumó la comunidad de KDE distribuyendo una distribución llamada Kubuntu.

.- De forma sincronizada a la versión 6.06 de Ubuntu, apareció por primera vez la distribución Xubuntu, basada en el entorno de escritorio XFce.

.- El navegador web oficial es Mozilla Firefox.

.- El sistema incluye funciones avanzadas de seguridad y entre sus políticas se encuentra el no activar procesos latentes por omisión 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.

.- Para labores/tareas administrativas incluye una herramienta llamada sudo (similar al Mac OS X), con la que se evita el uso del usuario root , pues ya no es tan necesario el uso del terminal relegado a usuarios avanzados.

.- Mejorar la accesibilidad y la internacionalización, de modo que el software esté disponible para tanta gente como sea posible. En la versión 5.04, el UTF-8 es la codificación de caracteres por defecto, soportado por una gran comunidad de traductores.

.- No sólo tiene como lazo a Debian el uso del mismo formato de paquetes deb, Ubuntu tiene uniones muy fuertes con esa comunidad, contribuyendo cualquier cambio directamente e inmediatamente, más que anunciándolos. Esto sucede en los tiempos de lanzamiento. Muchos de los desarrolladores de Ubuntu son también responsables de los paquetes importantes dentro de la distribución de Debian.

.- Todos los lanzamientos de Ubuntu se proporcionan sin costo alguno. Los CDs de la distribución se envían de forma gratuita a cualquier persona que los solicite. También es posible descargar las imágenes ISO de los discos por transferencia directa o bajo la tecnología Bittorrent.

.- Ubuntu no cobra honorarios por la suscripción de las mejoras de la "Edición Enterprise".

 

Migración a Postgre

Muchos proyectos pequeños de bases de datos en Windows usan Access. Este
resulta un producto atractivo para mucha gente pues es bastante sencillo para
comenzar, y tiene una interfaz de usuario familiar. Pero Access tiene fuertes
limitaciones, al no haber sido diseñado para un entorno multiusuario pesado y no puede hacer frente a grandes conjuntos de datos.

Las bases de datos más grandes podrían usar SQL Server o una de las bien conocidas bases de datos relacionales: Oracle, Sybase, DB2, etc. En el caso de estos grandes sistemas, puede que lo mejor sea dejar que la base de datos funcionen en la plataforma existente y sólo transferir las aplicaciones de cliente a plataformas OSS. Esto va especialmente bien cuando la Administración tiene habilidades profundas para la base de datos existente y está usando muchos dispositivos propietarios.
Hay modos estándar de conectarse a bases de datos relacionales en red,
así que la elección de plataforma puede ser diferente para la base de datos y las
aplicaciones de cliente. Además, la mayoría de las bases de datos propietarias que no son de Microsoft están disponibles en plataformas GNU/Linux y Unix, por lo que es posible cambiar el sistema operativo sin tener que aprenderse una base de datos totalmente nueva.
Por otra parte, las bases de datos propietarias pueden resultar muy caras por lo que vale la pena considerar si un producto OSS podría hacer el trabajo con eficacia.
Las dos bases de datos más conocidas son MySQL y PostgreSQL. Las dos son
productos maduros y cuentan con una buena base de instalaciones y equipos
creativos muy activos. Las dos tienen buen soporte para el SQL estándar y pueden dar un magnífico rendimiento.
También vale la pena recordar que las bases de datos no tienen que ser relacionales.
Algunas tareas van mejor con otros modelos, y el uso directo de un producto OSS como la Berkeley DBde Sleepycat puede ser extremadamente eficaz. Igualmente, el modelo LDAP de bases de datos jerárquicas en red es muy adecuado para algunos tipos de aplicaciones distribuidas.

 

Como migrar una BD Oracle a Postgre

La estructura
La migración del esquema de una base de datos Oracle, a una base de datos postgreSQL es más o menos complicado en función de las particularidades de Oracle que incluya. Existen distintas herramientas para automatizar la migración de  esquemas de Oracle hacia postgreSQL1, pero ninguna de ella es totalmente infalible, y pueden ser necesarios ajustes manuales. Ejecutar un script de creación de bases de datos en PostgreSQL:

-postgres$ createdb nombre_bd
-postgres$ psql nombre_bd
                        Welcome to psql, the PostgreSQL interactive terminal.
                        Type: \copyright for distribution terms
                        \h for help with SQL commands
                        \? for help on internal slash commands
                        \g or terminate with semicolon to execute query
                        \q to quit
nombre_bd=#\i /ruta_hacia_el_script/script_bd.sql

IMPORTANTE: Las base de datos en PostgreSQL debe crearse EN MINÚSCULAS. De lo contrario fallarán muchos de los comandos de psql (entre otros DROP DATABASE). Si va a exportarse una base de datos postgreSQL a través de ODBC, es conveniente instalar el catálogo de extensiones ODBC, que realiza un ajuste más estricto de las funciones de postgreSQL hacia el estándar ODBC. Para instalarlo, basta ejecutar el comando:

-postgres$ psql -d nombre_bd -f /usr/share/pgsql/odbc.sql
CREATE
CREATE
...
CREATE

En el archivo odbc.sql, se indica a postgreSQL los ajustes necesarios. La ruta hacia el mismo puede variar en función de la instalación, versión de postgreSQL, de la distribución Linux, etc...

 

Los datos
Tras llevar cabo la migración de la estructura de la BD, el siguiente paso son los datos. Este proceso puede afrontarse desde muchos puntos de vista, en función de la imaginación del encargado, de la magnitud de los datos, y de las posibilidades de los SGBD origen y destino. Dado que nos estamos centrando en Oracle y postgreSQL, destacaremos las siguientes:
[ Exportar los datos a un fichero de SQL: La sintaxis de dicho fichero, será más o menos estándar según las variaciones de la BD origen (esta es la manera más habitual de exportar datos del SGBD Oracle). Para realizar la importación, pueden ser necesarios ajustes y modificaciones en el fichero para adaptarlo a la sintaxis del SGBD destino.
[ Exportando los datos a un formato de texto plano. Este método es muy efectivo, y puede atacarse desde muchos frentes. Por ejemplo, se puede llevar a cabo conectándose a través de ODBC a la base de datos Oracle con un SGBD que facilite la exportación (por ejemplo MS-Acces). Se importan los datos de las
tablas al SGBD intermedio (MS-Acces), y se exportan de nuevo los mismos como texto plano con separadores (por ejemplo tabulaciones y retornos de carro). Tras ello, se pueden utilizar las herramientas de importación del SGBD destino (postgreSQL y pg_dump) para llevar a cabo la importación. Este mismo esquema, puede enfocarse utilizando combinaciones de lenguajes de filtrado para construir el
fichero destino (por ejemplo PERL o AWK). Como última opción, existe software comercial que lleva a cabo la migración, como el producto Chyfo de Ispirer Systems (http://www.ispirer.com/).
En el caso que nos ocupa, el fichero de datos era texto plano con órdenes INSERT de SQL para cada una de las tablas con un tamaño de unos 26Mb. Muchas de esas órdenes INSERT, comunes del SQL, se veían afectadas por particularidades propias del Oracle. Por ejemplo, cuando la tabla sobre la que se estaba llevando a cabo la inserción tenía campos de tipo fecha, Oracle había exportado los datos preparando un
INSERT como el siguiente:

.lbc. xc._hl¡ .t¢-¢£.g.g. ¤qt

En postgres, la función equivalente a TO_Date() es to_date(), en este caso, lo único que había que hacer era reemplazar todas las ocurrencias de TO_Date en el fichero, por to_date. Dado el considerable tamaño del fichero, no se podía abrir con un edito .al uso. y efectuar una Búsqueda/Sustitución. La solución, era el uso de comandos y utilidades UNIX de expresiones regulares. En nuestro caso, utilizamos la orden sed.

 

-postgres$ cat /descargas/scripts-bd/gsa_datos.sql \
                                               |sed 's/TO_Date/to_date/g' > \
                                               /descargas/scripts-bd/gsa_datos_pg.sql

Al ejecutar un archivo SQL de este tipo, pueden ocurrir errores, debidos a dependencias entre claves ajenas (integridad referencial). Hay varias maneras de solucionar el problema:

 

Reordenar las inserciones. Si conseguimos establecer un orden de inserción entre las distintas tablas, podemos evitar los problemas de integridad referencial.
Crear las tablas SIN claves primarias y claves ajenas, después realizar la inserción y tras ello, establecer las claves primarias y las claves ajenas de la base de datos. El problema de éste sistema, es que si se produjo un error en la exportación de los datos o en su posterior manipulación, pueden aparecer inconsistencias en la BD y no ser detectadas.
[ Ejecutar el script de inserción varias veces. A medida que se realizan las distintas pasadas, se van produciendo más inserciones en la BD, hasta que se finalmente, todos los datos resultan insertados. Dependiendo de la complejidad de la base de datos puede variar el número de ejecuciones necesarias.

En el caso que nos ocupó, se optó por la última opción, y fueron necesarias cuatro ejecuciones (en realidad cinco, pues fue en la quinta ejecución cuando no se llevo a cabo ninguna inserción más).

 

Secuencias y vistas

En muchas bases de datos relacionales, se hace uso de las secuencias, principalmente, en claves primarias e índices. Hay que ser especialmente cuidadoso al migrar las secuencias entre dos bases de datos, ya que, si en la base de datos destino se crea la secuencia pero no se inicializa con el último valor que tenía en la base
de datos origen, podemos encontrar muchos problema (por ejemplo, el no poder realizar inserciones porque .aparezcan. errores de claves primarias duplicadas).
En el caso concreto que nos ocupa, la base de datos origen, contaba con las distintas secuencias, los valores de éstas secuencias se utilizaban como claves primarias en algunas de las tablas. En la base de datos destino, era necesario que no se volviesen a generar los valores que ya existían, para ello, se crearon las secuencias destino, iniciando la cuenta a partir del valor máximo encontrado en la tabla correspondiente. Es decir:

 

Se procedió de manera similar para las secuencias: sgsa_agenda, sgsa_albaran, sgsa_cexped, sgsa_fact, sgsa_lpedprov, sgsa_pedp, sgsa_pedprov, sgsa_pedseral y sgsa_seral. Las secuencias pueden manejarse con funciones como las que siguen:

 

 

 

También puede fijarse el valor de una secuencia con la función siguiente:

 

En cuanto a las vistas, PostgreSQL proporciona un sistema de vistas compatible sintácticamente con el de otros SGBD, pero que internamente trabaja de una forma poco habitual, pues hace uso de un sistema de reglas. La creación de vistas, por tanto, no presenta a priori grandes problemas de portabilidad, los únicos problemas aparecen en los CAST de las clausulas UNION, donde no podemos aplicar la misma sintaxis que Oracle. En postgreSQL pueden resolverse los castings haciendo uso del comando estándar SQL:

CAST (nombre_atributo AS tipo_atributo)
o bien de la notación nativa de postgreSQL:

nombre_atributo::tipo_atributo)

Roles
El concepto de ROL que mantienen hoy en día algunas bases de datos comerciales2, no está implementado en postgreSQL. Sin embargo, postgreSQL plantea un sistema bastante similar, los grupos.
Los grupos de postgreSQL, son distintos a los definidos dentro del sistema operativo sobre el cual está instalado el software. Cualquier conexión a PostgreSQL debe ser realizada con un usuario específico, y cualquier usuario puede pertenecer a uno o más grupos definidos.

La tabla de usuarios controla los permisos de acceso y quién está autorizado a realizar acciones en el sistema (y qué acciones puede realizar). Los grupos existen como un mecanismo para simplificar la ubicación de estos permisos. Tanto las tablas de usuarios como de grupos existen como objetos globales de
base de datos, lo que significa que no están adscritas a ninguna base de datos en particular.

La principal diferencia entre los grupos de postgreSQL y los roles Oracle, es que los roles pueden anidarse entre si y los grupos no. Es decir, un ROL puede incluir o actuar como otros ROLES acumulando permisos, pero un grupo de postgreSQL no puede pertenecer a otro grupo. El sistema de postgres, permite conseguir los mismos resultados que el de Oracle, aunque de una manera menos flexible.

Lenguajes procedurales. PL/SQL vs PL/pgSQL.

PostgreSQL, facilita la programación con distintos lenguajes procedurales. Entre todos ellos3, cabe citar los siguientes, PL/pgSQL, PL/Tcl, PL/Perl, PL/Python. La instalación del soporte para cada uno de estos lenguajes se lleva a cabo por parte de un usuario administrador y de manera muy sencilla:

-postgres$ createlang --dbname=nombre_bd -.pglib=/ruta_hacia_lib_lengPL.so/ lengPL

Si queremos habilitar el soporte para el lenguaje en TODAS las bases de datos, basta con habilitarlo en la base de datos template1, de la que el resto heredan las propiedades. Por ejemplo, para habilitar el soporte de PL/pgSQL en todas las bases de datos de un sistema, ejecutaríamos:

-postgres$ createlang --dbname=gsa_pg --pglib=/usr/lib/pgsql/ plpgsql

El lenguaje PL/pgSQL es el claro competidor del PL/SQL de Oracle. Aunque PL/pgSQL no alcanza todavía la potencia y versatilidad de PL/SQL, es un lenguaje de características muy similares, que evoluciona constantemente de forma pareja al SGBD postgreSQL. A continuación, se ofrece una lista con las principales diferencias entre ambos lenguajes:

PL/pgSQL no soporta paquetes (packages). Es necesario crear funciones de forma individual.
 PL/pgSQL no tiene procedimientos, sólo tiene funciones. Pero, desde una función PL/pgSQL si se puede modificar la Base de Datos. Es decir, tanto las funciones como los procedimientos Oracle, pasan a ser Funciones en PostgreSQL.
 PL/pgSQL no soporta parámetros variables, ni parámetros por defecto. En PL/pgSQL, el número de argumentos de las funciones, es fijo y definido. Por contra, para  solventar esta .desventaja., postgreSQL permite la sobrecarga de funciones.
E n PL/pgSQL es necesario escapar la comilla simple (') para ello, se duplican4 ('').
Existen más diferencias entre ambos lenguajes (el rowid de Oracle, ...). Pero si los procedimientos/funciones de Oracle no exprimen sus características más extrañas, son fácilmente portables a PL/pgSQL.

 

La herramienta de migración ora2pg
La herramienta de migración ora2pg, no es más que un script escrito en PERL que interroga la base de datos Oracle para generar un esquema equivalente en PostgreSQL.
Para poder utilizarlo, necesitamos tener instalado:

° Un interprete de PERL, disponible en:
            http://www.perl.org
° Algunos módulos de bases de datos necesarios, disponibles en:

            http://www.perl.org/CPAN/modules/by-module
Los módulos opcionales son:

° DBD-Oracle. En nuestro caso, la versión instalada fue la v1.12
° DBI-1.32. Versión instalada v1.32
° DDL-Oracle. Versión instalada v1.11

Todos los módulos viene en forma de tarball5, por lo que hay que compilarlos e instalarlos.

Tras la instalación de estos módulos, podemos proceder de manera similar e instalar la utilidad ora2pg.

 Una vez instalada la utilidad, sólo debemos editar el archivo de configuración (ora2pg.pl) para conectarse a la base de datos Oracle.

 

# Initialyze the database connection
my $dbsrc = 'dbi:Oracle:host=172.19.16.80;port=1600;sid=desa';
my $dbuser = 'gsa';
my $dbpwd = '*******';
# Create an instance of the Ora2Pg perl module
my $schema = new Ora2Pg (
datasource => $dbsrc, # Database DBD datasource
user => $dbuser, # Database user
password => $dbpwd, # Database password
debug => 1, # Verbose mode
export_schema => 1, # Export Oracle schema to Postgresql 7.3 schema
# schema => 'gsa', # Extract only the given schema namespace
type => 'TABLE', # Extract table
# type => 'PACKAGE', # Extract PACKAGE information
# type => 'DATA', # Extract data with output as INSERT statement
# type => 'COPY', # Extract data with output as COPY statement
# type => 'VIEW', # Extract views
# type => 'GRANT', # Extract privileges
# type => 'SEQUENCE', # Extract sequences
# type => 'TRIGGER', # Extract triggers
# type => 'FUNCTION', # Extract functions
# type => 'PROCEDURE', # Extract procedures
# tables => [('TX_DATA')], # simple indexes
# tables => [('NDW_BROWSER_ATTRIBUTES')], # view
# tables => [('TRIP_DATA')],# Foreign key
# showtableid => 1, # Display only table indice during extraction
# min => 1, # Extract begin at indice 3
# max => 10, # Extract ended at indice 5
# data_limit => 1000, # Extract all data by dump of 1000 tuples
# data_limit => 0, # Extract data in 1 pass. Be sure to have enougth memory.
);

 

La utilidad exporta de manera fiable los esquemas de las BD y los datos de las mismas, pero no triggers, ni procedimientos almacenados.

Ajustes en un servidor postgre sql

PostgreSQL tiene fama de ser un SGBD .pesado.. Esta idea estaba totalmente justificada en las versiones 6.x. Sin embargo, las versiones 7.x han mejorado notablemente sus tiempos de respuesta, aunque sigue siendo más lento que otros SGBD cuando se producen muchas consultas simultáneas. No obstante, el
postgreSQL puede mejorar notablemente su rendimiento realizando ajustes sobre la instalación:
1. Aumentar el numero de clientes (Optión -N del postmaster). Para tener pleno control sobre éste proceso, conviene lleva a cabo una la instalación de postgreSQL compilando los fuentes, puesto que las versiones precompiladas (paquetes RPM), tiene limitado el número máximo de conexiones simultáneas 32.
2. Aumentar la memoria compartida usada como caché de consultas (si tienes mucha memoria, se puede incrementar mucho y el rendimiento aumenta considerablemente) Es la opción -B del backend, que configura el numero de segmentos de 8Kbytes.
3. Si tienes queries complejos, aumentar la memoria de procesamiento de queries, para que quepan todos los datos que se están procesando en esa memoria y los queries sean ejecutados más rápido (opción –o "-Snnn" del postmaster).
4. Configurar bien el numero de ficheros abiertos posibles en linux.
5. Configurar bien la memoria compartida de linux, maxima usable, numero maximo de segmentos, tamaño de segmentos. Con ipcs -l podemos conocer los límites de la máquina.
6. Ejecutar el comando "vacuum analyze" diariamente, para que mejore las optimizaciones que hace postgres según los datos que va almacenando de las consultas reales que recibe. El .vaccum. hay que hacerlo después de que el servidor empiece a recibir tráfico real, no con benchmarks, ya que en ese caso realizará optimizaciones poco que talvez sean poco útiles con la carga real.

 

Análisis y Diseño de un sistema usando Postgre

En primer lugar se deben definir las herramientas con las que se contara para realizar un buen
analisis y dieño, es decir, Sistema Operativo, lenguaje de programación , base de datos a
utilizar.

Suponiendo que se utilizara una base de datos postgre, se sugiere realizar un análisis y
Diseño orientado a objeto a fin de sacarle provecho a las características de orientación a
Objeto que ofrece postgre.

 

El Análisis Orientado a Objeto se centra en la investigación del problema, no en la manera de definir la solución. En el análisis orientado a objeto se busca identificar y describir los objetos dentro del dominio del problema.
El Diseño Orientado a Objeto se define como un diseño de sistemas que utiliza objetos auto-contenidos y clases de objetos. El diseño de software puede definirse como la acción de construir soluciones que satisfagan los requerimientos del cliente. Existen varias etapas en el proceso de diseño de software, las cuales son:
Entendimiento del problema,
Identificar una o mas soluciones,
Describir abstracciones de la solución y
Repetir el proceso para cada abstracción identificada hasta que el diseño este expresado en términos sencillos.
     Cualquier diseño debe ser modelado como una gráfica dirigida hecha de entidades con atributos los cuales participan en relaciones. El sistema debe estar descrito a distintos niveles de abstracción y el diseño ocurre en etapas que se traslapan.
     La primera idea que se tiene al construir una solución de un determinado problema es un modelo mental que constituye el primer intento de diseño llamado comúnmente diseño informal. Este diseño a medida que se va describiendo en papel utilizando técnicas y procedimientos esquemáticos y metódicos va adquiriendo forma hasta constituirse en un diseño formal equivalente.
     Pues bien, dentro del paradigma de la orientación a objetos, el diseño OO es con mucho; más complejo que el diseño estructurado clásico, ya que lo que se busca es crear un diseño genérico y abierto y no cerrado y concreto.
     El Análisis y diseño orientado a objeto es un proceso creativo porque es necesario capturar los objetos del mundo real en términos de abstracciones (o especificaciones en modelos orientados a objetos) con el fin de definir el problema y la solución de la manera más general posible.

Bases de datos Orientadas a Objetos

Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento).

Las limitaciones impuestas por el modelo relacional han surgido como obstáculos. En consecuencia, los investigadores de bases de datos inventaron nuevos modelos de datos que resuelven las limitaciones del modelo de datos relacional.

Las aplicaciones de bases de datos tradicionales consisten en tareas de procesamiento de datos, tales como la banca, seguros, ventas, gestión de recursos humanos. Dichas aplicaciones presentan conceptualmente tipos de datos simples. Los elementos de datos básicos son registros bastante pequeños y cuyos campos son atómicos, es decir, no contienen estructuras adicionales y en los que se cumple la primera forma normal.
En los últimos años, la demanda ha incrementado la forma de abordar los tipos de datos más complejos. Por ejemplo, un conjunto de direcciones. Mientras una dirección completa puede ser vista como un elemento de datos atómico de tipo cadena de caracteres, esta forma de verlo escondería detalles como la calle, barrio, sector, provincia que pueden ser interesantes para una consulta.

Por otra parte si una dirección se la presenta dividiéndole en varias componentes (calle, barrio, sector, provincia) las consultas escritas serían más complicadas, pues tendría que mencionar cada campo. Una alternativa mejor es permitir tipos de datos estructurados, que admiten un tipo dirección con subpartes calle, barrio, sector.

Las bases de datos orientadas a objetos (BDOO) almacenan y manipulan información que puede ser digitalizada por objetos, proporcionan una estructura flexible con acceso ágil, rápido, con gran capacidad de modificación.

Además combina las mejores cualidades de los archivos planos, las bases jerárquicas y relacionales. La BDOO representan el siguiente paso en la evolución de las bases de datos para soportar análisis, diseño y programación orientada a objetos.

Las BDOO permiten el desarrollo y mantenimiento de aplicaciones complejas ya que se puede utilizar un mismo modelo conceptual y así aplicado al análisis, diseño y programación, esto reduce el problema entre los diferentes modelos a través de todo el ciclo de vida, con un costo significativamente menor.

Las BDOO ofrecen un mejor rendimiento de la máquina que las bases de datos
relacionales, para aplicaciones ó clases con estructuras complejas de datos. Sin embargo, las BDOO coexistirán con las bases de datos relacionales como una forma de estructura de datos dentro de una BDOO.

Una base de datos orientada ha objetos es una base de datos que incorpora todos los conceptos importantes de la programación orientada ha objetos:

Encapsulación: Ocultar datos del resto de los datos, impidiendo así accesos
incorrectos a conflictos.

Herencia:  Reusabilidad del código.

Polimorfismo: Sobrecarga de operadores o de métodos.

Se esta trabajando en SQL3, que es el estándar de SQL92 extendido que soportaría los nuevos conceptos orientados a objetos y tendría compatibilidad con SQL92.

1.9.1 Conceptos fundamentales

1.9.1.1 Objeto .
Es cualquier cosa real ó abstracta acerca de la cual almacenamos datos y los métodos que controlan dichos datos. Por ejm. En una empresa EMPLEADO se aplica a los objetos que son personas empleadas por alguna organización alguna INSTANCIA podría ser Juan Pérez, Javier Proaño.

1.9.1.2 Tipo de Objeto.

Es una categoría de objeto Ejm: EMPLEADO. Un objeto es una instancia de un tipo de objeto. PERSONA (Juan Perez).

1.9.1.3 Encapsulamiento.
Es el resultado (o acto) de ocultar los detalles de implantación de un objeto respecto de su usuario.

1.9.1.4 Una solicitud.
Invoca una operación específica, con uno o más objetos como parámetros. Es decir, es para que se lleve acabo la operación indicada y que se produzca el resultado. En consecuencia las implantaciones se refieren a los objetos como solicitudes.

1.9.1.5 Clase.
Es una implantación de un tipo de objeto. Especifica una estructura de datos y los métodos operativos permisibles que se aplican a cada uno de sus objetos.

1.9.1.6 Herencia.
Una clase implanta el tipo de objeto. Una subclase hereda propiedades de su clase padre, una subclase puede heredar la estructura y los métodos o algunos de los métodos.

En las BDOO los datos están encapsulados y se dice que estos son activos más que pasivos; debido a que por ejemplo: La clase mayor detecta si tiene un hijo (objeto) más o uno menos, es por esto que se dice que están activos ya que cuentan los hijos u objetos que tiene.

 

Características Fundamentales

Abstracción.
Denota las características esenciales de un objeto que lo distinguen de todos los demás tipos objeto, y proporciona así fronteras conceptuales nítidamente definidas respecto a la perspectiva del observador. Una abstracción se centra en la visión extrema de un objeto, y, por lo tanto sirve para separar el comportamiento esencial de un objeto de su implantación.

Modularidad.
Se basa en el concepto de fragmentación de los programas en componentes
individuales para reducir su complejidad en algún grado, y para crear además una serie de fronteras bien definidas y documentadas dentro del programa, donde estas fronteras o interfaces tienen un incalculable valor cara a la comprensión del programa.

Jerarquía.
Una clasificación u ordenación de abstracciones.

Tipos.
Es un conjunto de objetos que tienen un mismo comportamiento (comparten una misma funcionalidad) que se puede observar desde afuera.

Genericidad.
Permite construir clases genéricas para otras clases.

Objetos Complejos.
Están construidos mediante algunos más simples ó mediante la aplicación de
constructores a ellos. Los objetos más simples son objetos como: Integer,  Carácter, String de bytes de cualquier longitud, booléanos, punto flotante y algunos pueden ser de tipo atómico.

 

Caso de estudio para la venta de ticket para un juego de béisbol

 

Para las ventas de ticket para un estadium de béisbol vía Web se requiere garantizar la concurrencia, debido a que cuando se aproxima la fecha del juego los usuarios acostumbran a acceder de forma simultanea al sitio Web para adquirir sus entradas, horas próximas al juego,  con un manejador de base de datos como postgre que cuenta con la tecnología de MVCC o control de concurrencia de datos, es altamente escalable tanto en la cantidad de datos que puede manipular, como en la cantidad de usuarios concurrentes que puede atender, tambien. soporta el almacenamiento de objetos de gran tamaño yasi no se verían afectados por falla de la  porque postgre es un manejador de base de datos que soporta la concurrencia,  y multiusuario, garantiza la integridad de los datos

 

Por otro lado Postgre en un manejador que trabaja con la nueva tendencia que es el OpenSource permitiéndole a la empresa tener un modelos de negocios más rentables con instalaciones a gran escala

Este gestor de base de datos funciona en diferentes plataformas operativas como por ejemplo Linux, Unix, BSDs, Mac OS, Beos,
Windows, etc.

Pasos a seguir para el desarrollo de un sistema

1. Recolectar información referente al proceso de ventas de ticket para el juego de béisbol, por medio de entrevistas no estructuradas y observación directa en el área donde se llevan a cabo dichas actividades.

2. Analizar detalladamente la información recolectada, con el fin de determinar los procesos que serán automatizados.

3. Para la base de dato se debe tomar en cuenta el resguardo de los datos que se van almacenar en dicha base de datos es decir deben ser construida con alta integridad  con alta integridad de los datos.

 
4. Determinar la cantidad de tablas que poseera la base de datos
l

CREATE TABLE nombre_tabla (
nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ]
[ , nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ] ... ]
[ , [ vínculo_de tabla] ... ] )
Encriptar la base de datos

 

5. Diseñar la aplicación a implementar, eligiendo imágenes alusivas al sitio en este caso el béisbol, para la elaboración de banner, botones etc. Emplear guias de estilos, para que el uso del sistema se usable y agradable a la vista, porque la interfaz grafica juega un papel importante en la aceptación de un sistema.

6. Seleccionar el lenguaje de programación. Uno  de los lenguajes mas adecuado para trabajar con este gestor de base de datos (Postgre), es PHP, porque este ofrece una gama de ventajas  PHP es Open Source es decir que se tiene acceso al código fuente. Si deseas agregar o modificar algo para obtener un funcionamiento de acuerdo a tus necesidades puede hacerlo con total libertad. Esto a diferencia de las aplicaciones comerciales en las cuales solo queda esperar versiones mejoradas de la empresa desarrolladora. Este punto es importante también pues teniendo acceso al código miles de desarrolladores detectan bugs y van corrigiendo y mejorando PHP, logrando tener una aplicación muy segura y constantemente mejorada.

 Además al desarrollar software con php, el usuario al acceder la la pagina Web no necesita realizar descargas adicionales cono plugins  ni ACTVEX como con otros lenguajes de programación

 

7. Para el alojamiento del sitio web se requiere de servidores dedicados para que los usuarios puedan acceder a sitio sin restricción de horarios desde cualquiera sitio que cuenten con Internet o desde la comodidad de sus hogares, para adquirir sus entradas.

 Con Postgre se puede elegir cualquier tipo de servidor donde alojar el sistema web, pero unos de los mas recomendados son los servidores dedicados  bajo plataforma Unix, estos servidores son considerados de los más estables en el mercado. Unix se ha hecho de una fama cierta acerca de este factor tan imprescindible y básico como es la estabilidad de un servidor.
Otra gran virtud es que transmite confiabilidad. Por supuesto, estabilidad y confiabilidad van de la mano. Es un  servidor Web es muy confiable
Unix es una plataforma con todas las características  de calidad y confiabilidad.


El servidor que funciona con tecnología Unix instalada puede actualizar sus funciones sin tener que reiniciar su sistema.

También estos servidores demuestra que, las plataformas Unix son las menos vulnerable frente a ataques a la seguridad por partes de hackers maliciosos, aspecto muy importante sobretodo cuando en los  procesos de ventas estan involucrados medios de pago electrónicos.

8. Realizar respectivas pruebas al sistema, antes de ser implantado.

9. Implantar el sistema

 

http://es.wikipedia.org/wiki/Software_libre
http://www.elabismodetux.gt.gs/
http://linux.ayuda-gratis.com/Diferencias+entre+bases+de+datos/
http://www.velug.org.ve/archivo/l-linux-2005-August/055197.html
http://www.sobl.org/traducciones/practical-postgres/node19.html
http://www.hospedajeydominios.com/mambo/documentacion-manual_apache-pagina-46.html
http://www.eladministradordered.blogspot.com/2006/08/caracteristicas-de-ubuntu.html
http://www.gvpontis.gva.es/fileadmin/conselleria/images/Documentacion/migracionSwAbierto/Anexos/Anexo_C17.pdf

Hosted by www.Geocities.ws

1