Sistema Administrador de números de guía de paquetería en forma distribuida Ing. Mario Eduardo Figueroa Verduzco Agradecimientos Agradezco a Dios, a mis padres y a mis hermanos porque de no ser por ellos no seria hoy lo que soy A mis maestros por sus enseñanzas A mis compañeros por su amistad A Carlos Ulibarri que de no ser por su apoyo no hubiera podido concluir este trabajo Resumen Con esta tesis se presenta un prototipo capaz de automatizar eficientemente los números de guía de la paquetería que se envía por medio de la empresa Estafeta, manejando el concepto de bases de datos distribuidas. En un sistema de Bases de Datos Distribuido, los datos se encuentran en diferentes máquinas, generalmente situados en localizaciones geográficas diferentes. Dichas máquinas pueden ser de distinto tipo atendiendo a su tamaño, prestaciones y Sistema Operativo. Con este prototipo se pretende: mejorar los procesos actuales de la empresa, en cuanto al manejo de la información que se genera con los diferentes registros de los números de guía en cada plaza del país, reducir tiempos de espera en la actualización de la información generada por cada plaza así como también de disponer de los registros de los números de guía de los paquetes enviados y recibidos en las diferentes plazas al momento que se generen. En cada plaza existirán tres programas individuales los cuales serán: - Programa para controlar los números de guía. - Programa que recibirá las solicitudes de información de las demás plazas. - Programa por medio del cual se podrá hacer consultas y/o modificaciones de las bases de datos que están almacenadas localmente o en forma distribuida. La implementación de éste prototipo permitiría a los administradores y personas encargadas de atender a los clientes, saber en cualquier momento y en cualquier plaza, donde está un paquete en especial, lo cual dará lugar a que la información que soliciten los clientes sea la más precisa referente a la ubicación de su paquete. El prototipo reduciría tiempos de espera en la actualización de la información, los encargados de los departamentos de sistemas de las diferentes plazas ya no tendrían que esperar a que la central les envié la información actualizada de la ubicación de los paquetes. Abstract This thesis presents a prototype whose purpose is to automate the assigning and tracking of reference numbers of packages that are sent by means of a package express company, efficiently managing the concept of distributed databases. In a Distributed Database System, the data are generally located in different machines in different geographical locations. These machines can be of different types according to their specifications and operating systems. The purpose of this prototype is to improve the current processes of the company with respect to handling the information that is generated by the different reference and tracking numbers that are assigned in each company office, in order to reduce waiting times and facilitate the actualization of information generated by each office.. Each office requires 3 programs that will work jointly that include: - a program to control reference and tracking numbers - a program to receive information requests from other offices - a program to permit consultations and/or modifications of the databases that may be stored either locally or in distributed form The implementation of this prototype will allow to the administrators and persons responsible for assisting clients to know at any time in any office where a package is, particularly information the client request with respect to the specific location of his package. This prototype will also reduce the time needed to update information. Persons in charge of the computer systems at the different offices would no longer have to wait for the main office to send them up-to-date information about the location of packages. CONTENIDO Pagina Resumen Abstract Agradecimientos Presentación Objetivo General Objetivos Particulares Justificación Planteamiento Metodología i i ii iii 1. Introducción 1.1 Redes de comunicación de datos 1.2.1 LANs 1.2.2 WANs 1.2.3 Internet 1.2.4 Intranet 1.2 Bases de Datos 1.1.1 ¿ Qué es un sistema de base de datos? 1.1.2 ¿ Por qué utilizar bases de datos? 1.3 Sistemas de Bases de Datos Distribuidas 1.3.1 ¿Que es un sistema de Bases de Datos Distribuidas? 1.3.2 Ventajas de los sistemas de Bases de Datos Distribuidas 1.3.3 Desventajas de los sistemas de Bases de Datos Distribuidas 1.3.4 Objetivos de una Base de Datos Distribuida 1.3.5 Objetivos de los sistemas de Bases de Datos Distribuidas 1.3.6 Problemáticas en los sistemas administradores de Bases de Datos Distribuidas 1.3.7 Arquitectura cliente/servidor 1.3.8 Sistema Distribuido 1.4 Visual Basic 1.4.1 Tecnología de Acceso a datos 1.4.1.1 DAO 1.4.1.2 RDO 1.4.1.3 ADO 1.4.2 Winsock de Visual Basic 2. Conceptos de diseño enfocados al desarrollo de aplicaciones distribuidas 2.1 Aspectos de diseño de programas 2.1.1 Transparencia 2.1.2 Confiabilidad 2.1.3 Escalabilidad v 2 3 3 4 4 5 6 7 9 9 10 11 11 12 15 19 19 20 20 24 24 25 2.1.4 Flexibilidad 2.2 El Diseño de la distribución 2.2.1 Tipos de Fragmentación 2.2.1.1 Reglas de corrección de la fragmentación 2.2.1.2 Alternativas de Asignación 2.2.1.3 Información Necesaria 26 26 31 33 34 36 2.3 El diseño de distribución Bottom-Up (Ascendente) 2.3.1 Problemas de diseño en la construcción de un sistema global 2.3.2 Trabajando con los datos inconsistentes durante la operación 36 37 38 3. Contexto de la Empresa (Estafeta S.A. de C.V.) 3.1 Historia 3.2 Infraestructura 3.3 Logros 3.4 Estafeta en números 41 42 42 45 4. Análisis del funcionamiento de envíos y entregas de paquetes (situación antes de la implementación del sistema) 4.1 Equipo con que se cuenta actualmente 47 4.2 Flujo de Información 48 4.3 Información que se obtiene por cada paquete que se envía o se entrega 52 4.4 Lista de plazas a cargo de Colima 54 4.5 Descripción de los números de guía 54 4.6 Tipos de movimientos de los paquetes 55 5. Implementación 5.1 Aspectos de diseño a considerar en la implementación del sistema 5.2 Elementos que forman el prototipo 5.2.1 Control de Números de guía (en los servidores) 5.2.2 Servidor 5.2.3 Cliente 5.3 Seguridad 5.3.1 Algoritmo UU-Encoding 5.4 Otras características del sistema 5.4.1 Replicas 5.4.2 Bloqueos Conclusiones Anexo 1.- Seguridad y Cifrado de la información Anexo 2.- Diagramas del Flujo de Información por Usuario Bibliografía 57 59 60 63 66 79 80 84 85 87 90 105 108 Sistema administrador de números de guía de paquetería en forma distribuida Objetivo General Desarrollar un prototipo capaz de automatizar eficientemente los números de guía de la paquetería que se envía por medio de la empresa Estafeta, manejando el concepto de bases de datos distribuidas. Objetivos Particulares Mejorar los procesos actuales de la empresa, en cuanto al manejo de la información que se genera con los diferentes registros de los números de guía en cada plaza del país. Reducir tiempos de espera en la actualización de la información generada por cada plaza Disponer de los registros de los números de guía de los paquetes enviados y recibidos en las diferentes plazas al momento en que se generen. Justificación La necesidad de tener la información disponible para el personal operativo de la empresa Estafeta al momento en que se genera es de suma importancia para una compañía con enlaces mundiales, particularmente si la información se genera desde diferentes puntos del país. Este prototipo evitará que se realicen procesos innecesarios (separación de información, envió por parte de los encargados a la central, formateo de información, etc.), lo cual reducirá tiempos en la disponibilidad de la misma para una mejor atención hacia los clientes de la empresa, así como también para una mejor administración por parte de los coordinadores de los diferentes departamentos de sistemas en las diferentes regiones del país. También permitirá que cada plaza sea la encargada de administrar la información que se genera, evitando que se centralice el control y administración de los procesos para el manejo de la misma. Planteamiento El sistema pretende tener toda la información de los números de guía disponible al momento en que son capturados en las diferentes plazas para su consulta. Para hacer esto, utiliza el concepto de bases de datos distribuidas. También permite a los encargados de los diferentes departamentos de sistemas hacer actualizaciones a la información si es necesario. Características generales del sistema - El prototipo trabaja bajo el concepto de bases de datos distribuidas. - Existen al menos tres programas en cada plaza: un servidor, un programa por medio del cual se van a capturar los números de guía de los paquetes, y uno o varios clientes los cuales van a acceder a la información almacenada y administrada por los servidores. - La comunicación entre los clientes y los servidores es a través de sockets. - Se trabaja bajo la plataforma de Windows, en cualquiera de sus versiones. - Se utiliza Visual Basic 6 como herramienta de desarrollo, utilizando el control winsock para la comunicación. - Se manejan dos tipos de usuarios, el administrador o supervisor, el cual puede hacer actualizaciones sobre la información ya almacenada, y los usuarios que solo pueden hacer consultas o rastreos de los números de guía. - Se maneja lo que se llama bloqueos de registros, esto evita la inconsistencia de la información. Metodología I. Investigación bibliográfica y recopilación de información disponible en Internet. II. Descripción de la tecnología de software para el desarrollo de sistemas de bases de datos distribuidas. III. Seleccionar las herramientas de desarrollo de software para la elaboración de los programas que conformaran el sistema de bases de datos distribuidas. IV. Descripción de los procesos actuales que realiza la empresa Estafeta, y en base a ellos, diseñar la base de datos, identificar los procesos que se modifican, seleccionar un método para el diseño del sistema de base de datos distribuidas. V. Elaboración del prototipo. VI. Conclusión y presentación de resultados. VII. Elaboración de material para presentación de los resultados de la investigación. CAPÍTULO 1 INTRODUCCIÓN - Redes de Computadoras Bases de Datos Sistemas de Bases de Datos Distribuidas Herramientas de Desarrollo de Aplicaciones En este capítulo se hace una revisión de los conceptos que abarcan algunos conceptos fundamentales referentes con las bases de datos distribuidas y con las tecnologías que se utilizan para desarrollar el sistema que se pretende implementar. Algunos conceptos abarcan redes de computadoras, bases de datos, conceptos del Visual Basic como herramienta de desarrollo seleccionada, así como también el tema principal de la tesis que son las bases de datos distribuidas. REDES DE COMPUTADORAS Las redes en general, consisten en "compartir recursos", y uno de sus objetivos es hacer que todos los programas, datos y equipo estén disponibles para cualquiera de la red que así lo solicite, sin importar la localización física del recurso y del usuario. En otras palabras, el hecho de que el usuario se encuentre a 1000 kms de distancia de los datos, no debe evitar que este los pueda utilizar como si fueran originados localmente. Un segundo objetivo consiste en proporcionar una alta fiabilidad, al contar con fuentes alternativas de suministro. Por ejemplo todos los archivos podrían duplicarse en dos o tres máquinas, de tal manera que si una de ellas no se encuentra disponible, podría utilizarse una de las otras copias. Además, la presencia de múltiples CPU significa que si una de ellas deja de funcionar, las otras pueden ser capaces de encargarse de su trabajo, aunque se tenga un rendimiento global menor. Otro objetivo es el ahorro económico. Los ordenadores pequeños tienen una mejor relación costo / rendimiento, comparada con la ofrecida por las máquinas grandes. Estas son, a grandes rasgos, diez veces más rápidas que el más rápido de los microprocesadores, pero su costo es miles de veces mayor. Este desequilibrio ha ocasionado que muchos diseñadores de sistemas construyan sistemas constituidos por poderosos ordenadores personales, uno por usuario, con los datos guardados una o mas máquinas que funcionan como servidor de archivo compartido (Vela, 1999). Local Area Networks (LANs) Las redes de computadoras son conjuntos de maquinas independientes que se comunican una con otra sobre un medio de red. Redes de Area Local (Local Area Networks o LANs) son aquellas redes usualmente confinadas a un área geográfica, tal como un edificio individual o el Campus de una Universidad. LANs, sin embargo, no son necesariamente simples en diseño, en la medida que ellas pueden conectar muchos cientos de computadoras y ser utilizadas por miles de usuarios. El desarrollo de varios protocolos de interconexión estándar y medios de transmisión han hecho posible la proliferación de LANs en organizaciones a nivel mundial para aplicaciones de negocios y aplicaciones educacionales (Ender, 2001). Wide Area Networks (WANs) Las WANs son Redes Remotas, lo cual quiere decir que están lejos los recursos a compartir, generalmente en otra ciudad, en otro estado o bien, en otro país. Estas pueden ser de dos tipos. A través de una red pública como Internet, Frame Relay o X.25 o bien a través de una red privada con enlaces telefónicos, analógicos o digitales punto a punto. Dependiendo del ancho de banda de las conexiones a través de estas redes puede haber transmisión de datos, voz y hasta video (Ulternet, 1997). Internet Es una red de computadoras interconectadas entre si que ofrecen acceso y comparten información a través de un lenguaje común. En la actualidad es la red de computadoras más grandes que existe en el mundo; se conecta por teléfono (a través de un módem) o por fibra óptica y transmite toda clase de información. La palabra Internet es el resultado de la unión de dos términos: Inter, que hace referencia a enlace o conexión y Net (Network) que significa interconexión de redes. Es decir, Internet no es otra cosa que una conexión integrada de redes de computadores o redes interconectadas. Por medio de todo este conjunto de componentes de hardware y software. Se crearon y continúan desarrollándose numerosos servicios, aplicaciones y usos de toda índole que son aprovechados para diferentes fines, los que conforman el infinito mundo Internet (Poleo, 2000). Intranet Es una red privada de ordenadores desarrollada con tecnologías de Internet tales como el navegador que le permite ahora consultar esta misma página Web o el programa gestor de correo electrónico a la vez que utiliza los mismos protocolos y estándares abiertos que permiten que ordenadores de diferentes tipos y fabricantes se puedan comunicar entre ellos. Así como Internet es una gran plaza pública donde todo el mundo participa en la Web a través de conferencias, grupos de noticias o simplemente teniendo acceso a la información editada en formato HTML (lenguaje que se utiliza para publicar páginas Web en Internet), la Internet es un club privado al que acceden tan solo los miembros de la compañía. Más allá del concepto Intranet existe el concepto Extranet el cual permite extender los privilegios de una Intranet a otras Intranets dispuestas en puntos geográficos distintos aprovisionando a éstas de aquellos recursos que hasta el momento tan solo se utilizaban en la propia red local creando de este modo una red privada de trabajo dentro de la red de redes (Serrano, 2001). BASES DE DATOS ¿Qué es un sistema de base de datos? La tecnología de las bases de datos se ha descrito como “una de las áreas de la ciencia de la computación y la informática de más rápido desarrollo”. Como campo comercial, aun es relativamente nueva. Pese a su calidad de innovación, sin embargo, el campo rápidamente ha cobrado importancia práctica y teórica. La cantidad total de datos encomendados a las bases de datos se mide, sin exagerar, en varios miles de millones de bytes; la inversión financiera al respecto alcanza una cifra igualmente enorme; y no es exagerado afirmar que muchos miles de organizaciones dependen de la operación continua y eficaz de un sistema de bases de datos (Hernández, 1996). ¿Qué es exactamente un sistema de bases de datos? En esencia, no es mas que un sistema de mantenimiento de registros basados en computadoras, es decir, un sistema cuyo propósito general es registrar y mantener información. Tal información puede estar relacionada con cualquier cosa que sea significativa para la organización donde el sistema opera - en otras palabras, cualquier dato necesario para los procesos de tomas de decisiones inherentes a la administración de esa organización. Un sistema de bases de datos incluye cuatro componentes principales: datos, hardware, software y usuarios. Hay quienes conciben la base de datos como un enorme receptáculo en el que un organismo guarda todos los datos procesables que reúne y al cual acuden muy diversos usuarios a “pescar”. Éste gran almacén puede estar concentrado en una localidad determinada o distribuida en varias, todas ellas posiblemente interconectadas mediante un sistema de telecomunicación. Tienen acceso a la base de datos programas de la más diversa índole. En la mayoría de los sistemas, la expresión base de datos no se refiere a todos los tipos de registro, sino a una colección limitada y especifica de estos. Dentro de un sistema, coexisten, por lo general varias bases de datos. No obstante, se supone que los contenidos de estas bases son independientes y disjuntos. Las colecciones de bases de datos de esta clase se denominan sistemas de bases de datos (Hernández, 1996). ¿Por qué utilizar bases de datos? La respuesta general a esta pregunta es que un sistema de bases de datos proporciona a la empresa un control centralizado de sus datos de operación que constituyen uno de sus activos más valiosos. Esto contrasta de manera aguda con la situación que prevalece actualmente en muchas empresas, donde a menudo cada aplicación tiene sus propios archivos - y muchas veces sus propias cintas o paquetes de discos particulares -, de modo que los datos de operación se hallan muy dispersos y, por tanto, es probable que sean difíciles de controlar (Hernández, 1996). SISTEMAS DE BASES DE DATOS DISTRIBUIDAS ¿Qué es un sistema de Base de Datos Distribuida? En un sistema de Bases de Datos Distribuido, los datos se encuentran en diferentes máquinas, generalmente situados en localizaciones geográficas diferentes. Dichas máquinas pueden ser de distinto tipo atendiendo a su tamaño, prestaciones y Sistema Operativo. A cada uno de los ordenadores que integran el sistema de Bases de Datos distribuido se le conoce como nodo o emplazamiento del sistema y pueden ser administrados de forma diferente (De Miguel, 1999). Una característica importante de las Bases de Datos Distribuidas es que realizan dos tipos de transacciones bien diferenciados: Transacciones Locales: cuando se accede a los datos del único emplazamiento donde se inició la transacción. Transacciones Globales: Cuando se accede a datos de emplazamientos distintos al emplazamiento donde se inició la transacción. Un sistema será distribuido si cumple con lo siguiente: • Los distintos nodos están informados sobre los demás. • Aunque algunas tablas estén almacenadas sólo algunos nodos, éstos comparten un esquema global común. • Cada nodo proporciona un entorno de ejecución de transacciones tanto local como global. • Generalmente, los nodos ejecutan el mismo software de gestión distribuida. En caso contrario, aumenta en gran medida la dificultad de implementación del sistema de Bases de Datos Distribuidas. En este caso se dice que el sistema es heterogéneo. Los sistemas de Bases de Datos Distribuidas son el resultado de la unión de dos tecnologías, como se aprecia en la siguiente figura: * Tecnología de Bases de Datos * Redes de Computadoras * Sistema de Bases de Datos Distribuidas Un sistema administrador de Bases de Datos Distribuidas es el software que administra la Base de Datos Distribuida y proporciona un mecanismo de acceso que hace transparente esta distribución a los usuarios (De Miguel, 1999). Ventajas de los sistemas de Bases de Datos Distribuidas • Compartimiento de datos. Los usuarios de un nodo son capaces de acceder a los datos de otro nodo. Por ejemplo, desde el Rectorado, se puede consultar los datos de los alumnos de Informática. • Autonomía. Cada nodo tiene cierto grado de control sobre sus datos, en un sistema centralizado, hay un administrador del sistema responsable de los datos a nivel global. Cada administrador local puede tener un nivel de autonomía local diferente. • Disponibilidad. Si en un sistema distribuido falla un nodo, los nodos restantes pueden seguir funcionando. Si se duplican los datos en varios nodos, la transacción que necesite un determinado dato puede encontrarlo en cualquiera de los diferentes nodos (De Miguel, 1999). Desventajas de los sistemas de Bases de Datos Distribuidas • Coste de desarrollo del software. La complejidad añadida que es necesaria para mantener la coordinación entre nodos hace que el desarrollo de software sea más costoso. • Mayor probabilidad de errores. Como los nodos que constituyen el sistema funcionan en paralelo, es más difícil asegurar el funcionamiento correcto de los algoritmos, así como de los procedimientos de recuperación de fallos del sistema. • Mayor sobrecarga de procesamiento. El intercambio de mensajes y ejecución de algoritmos para el mantenimiento de la coordinación entre nodos supone una sobrecarga que no se da en los sistemas centralizados (De Miguel, 1999). Objetivos de una Base de Datos Distribuida - Tener autonomía local. - No depender de un sitio central. - Ofrecer operación continua. - Transparencia de localización. - Transparencia de fragmentación. - Transparencia de réplica. - Procesamiento distribuido de consultas. - Procesamiento de transacciones distribuidas. - Transparencia de hardware. - Transparencia de sistema operativo. - Transparencia de red. - Transparencia de sistema administrador de Bases de Datos (Hernández, 1996). Objetivos de los sistemas de Bases de Datos Distribuidas Elaborar informes corporativos que involucren el acceso a datos que se encuentran repartidos en varias computadoras remotas (procesamiento global). Procesar informes que solo involucren los datos que residen en la misma computadora (procesamiento local). Compartir los datos que residan en cada máquina con las otras computadoras que están interconectadas en la red de acuerdo a las políticas de la organización (Ibidem, Hernández). Problemáticas en los sistemas administradores de Bases de Datos Distribuidas • Diseño de la Base de Datos. - ¿Cómo distribuir la Base de Datos? - Distribución de la Base de Datos replicada o no replicada. - Problema relacionado con la administración del directorio (Ibidem, Hernández). • Procesamiento de consultas. - Problema de optimización. - Convertir transacciones de usuario a instrucciones de manipulación de datos. - Minimizar costos (transmisión de datos + procesamiento local) (Hernández, 1996). El proceso de optimización de consultas necesita ser distribuido y consta de dos fases: - Optimización global. Medio de transmisión, distribución de subconsultas. - Optimización local. Accesos a disco, manipulación de memoria, índices (Ibidem, Hernández). Arquitectura Cliente/Servidor El modelo Cliente/Servidor divide la funcionalidad de la aplicación en torno a dos roles muy bien definidos: “cliente” y “servidor”. De modo abstracto, el servidor ofrece una serie de servicios que pueden ser utilizados por los clientes para completar la funcionalidad de la aplicación. Una interacción básica Cliente/Servidor implica a un cliente que inicie una petición de algún servicio a un servidor, posiblemente incluyendo algunos parámetros que modifiquen el comportamiento del servidor. El servidor entonces realiza la función especificada por el cliente, devolviendo los posibles resultados que el servicio genera. Esta abstracción permite desarrollar la aplicación en torno a las abstracciones de descomposición modular que proporcionan los servicios. En la práctica, los clientes y servidores se implementan como procesos que se están ejecutando en maquinas conectadas a una red. Tomando como base la manera en que la funcionalidad se divide entre cliente y servidor, las aplicaciones Cliente/Servidor se dividen en dos grupos: aplicaciones de dos niveles y aplicaciones de tres o n niveles. Las aplicaciones de dos niveles fueron el primer paso en el desarrollo de aplicaciones Cliente/Servidor. Típicamente, la lógica de presentación, la de negocio y la de datos quedaban en la parte del cliente, dejando a los servidores encargados de solo guardar los datos, es decir, como servidores de Bases de Datos. Esta organización es sin duda un paso adelante con respecto a las soluciones basadas en mainframes, ya que permite una cierta escalabilidad y que varios clientes se puedan beneficiar de los datos residentes en los servidores. Sin embargo, no esta libre de inconvenientes. Aunque es verdad que a lo largo del ciclo de vida de una aplicación los datos son más estables que los procedimientos, con esta configuración, un cambio en las bases de datos requerirá la programación de una nueva aplicación cliente y la distribución a todos los usuarios. Esta configuración se muestra en la siguiente figura: Cliente Servidor Presentación Lógica del negocio Acceso a datos Servidores BD Sistemas Legacy Etc. Nivel 1 Nivel 2 Nivel 1 Nivel 2 Arquitectura de dos niveles Cliente/Servidor Además, esta solución también presenta una baja escalabilidad, ya que a medida que el número de clientes aumenta, el servidor de bases de datos se ve cargado de forma proporcional al número de clientes. Las aplicaciones son específicas para realizar cierta función y solo comparten los datos. No se pueden reutilizar partes de aplicaciones ya creadas y se queda ligado al producto utilizado como servidor de base de datos. Un refinamiento de la arquitectura anterior es la arquitectura de 3 ó n niveles. Aquí, el cliente se encarga de mantener interfaz gráfico de usuario, mientras que existen una serie de componentes intermedios en el sistema que se encargan de implementar la lógica de la aplicación. Por ultimo, hay un nivel que se encarga de la lógica de datos, típicamente SGDBx o aplicaciones legacy. En el momento en el que los componentes de este último nivel se conviertan en clientes de otros componentes, se convierte en una estructura multinivel. De forma esquemática, esta arquitectura se muestra a continuación. Lógica del negocio Acceso a datos Cliente Presentación Servidor Servidores BD Sistemas Legacy etc. Nivel 2 Nivel 1 Nivel 3 Arquitectura de tres niveles Cliente/Servidor Esta configuración permite que los clientes se construyan en base a unos servicios encapsulados en los procesos que implementan la lógica de la aplicación, y por lo tanto son más inmunes a cambios tanto en la lógica como en los datos. Aun así, la funcionalidad que los clientes implementan es tan sencilla que los cambios son muy superficiales. Varios clientes pueden reutilizar servicios estándar definidos en el nivel intermedio. La aplicación, al estar dividida en partes pequeñas, hace que el proceso de distribución de funcionalidad en los procesadores mas adecuados sea mas flexible (Bohnhoff, 1994). Sistema Distribuido Los sistemas distribuidos representan el último paso en la computación Cliente/Servidor. En vez de diferenciar entre las distintas partes de la aplicación, los sistemas distribuidos ofrecen toda la funcionalidad en forma de "objetos", con un significado muy en la línea del termino " objeto" de la programación orientada a objetos. No existen los roles específicos de "cliente" y "servidor", sino que toda la funcionalidad están ahí para ser utilizada. Los procesos que componen la aplicación y que se están ejecutando en las distintas máquinas de la red con clientes y servidores y cooperan para seguir la funcionalidad total de la aplicación. Esto da máxima flexibilidad. Los sistemas distribuidos son un mundo de “entidades pares” (peer-to-peer), esto es, elementos de procesamiento o “nodos” con distintas disponibilidades de recursos, distinta capacidad de almacenamiento, distintos requerimientos, etc., que cooperan ofreciendo servicios en forma de objetos y requiriendo otros servicios de otros objetos implementados en otros nodos de la red. En general, un sistema distribuido es un sistema Cliente/Servidor multinivel con un número potencialmente grande de entidades que pueden desempeñar roles de clientes y servidores según sus necesidades. El hecho de ofrecer una serie de servicios en forma de objetos hace que el diseño y desarrollo se haga en base a interfaces bien definidos que facilitan y apoyan la modularidad y reutilización, a la vez que permiten un diseño mucho más flexible. En comparación con un sistema centralizado existe: • Mejor aprovechamiento de los recursos. • Mayor poder de cómputo a más bajo costo (procesamiento paralelo). • En teoría, mayor confiabilidad, si se maneja suficiente redundancia. (Si se cae una máquina, no se cae todo el sistema). • Crecimiento incremental. • El software es mucho más complejo (de hecho, todavía no está muy claro como hacerlo). • Es complejo mantener un nivel de seguridad debido al múltiple acceso de usuarios de diferentes localidades (Lewis, 1995). HERRAMIENTAS DE DESARROLLO DE APLICACIONES Existen una gran variedad de herramientas para el desarrollo de aplicaciones, Visual Basic, Visual Fox Pro, Delphi, etc., a continuación se describe la herramienta utilizada en el desarrollo de este prototipo. Visual Basic Visual-Basic (VB) es una herramienta de diseño de aplicaciones para Windows, en la que estas se desarrollan en una gran parte a partir del diseño de una interface gráfica. En una aplicación Visual - Basic, el programa está formado por una parte de código puro, y otras partes asociadas a los objetos que forman la interface gráfica. Es por tanto un término medio entre la programación tradicional, formada por una sucesión lineal de código estructurado, y la programación orientada a objetos. Combina ambas tendencias. Ya que no podemos decir que VB pertenezca por completo a uno de esos dos tipos de programación, debemos inventar una palabra que la defina: PROGRAMACION VISUAL (Gurowich, 1999). La creación de un programa bajo Visual Basic lleva los siguientes pasos: - Creación de una interface de usuario. Esta interface será la principal vía de comunicación hombre máquina, tanto para salida de datos como para entrada. Será necesario partir de una ventana - Formulario - a la que se le añaden los controles necesarios. - Definición de las propiedades de los controles - Objetos - que se hayan colocado en ese formulario. Estas propiedades determinarán la forma estática de los controles, es decir, como son los controles y para qué sirven. - Generación del código asociado a los eventos que ocurran a estos objetos. A la respuesta a estos eventos (click, doble click, una tecla pulsada, etc.) se le llama “procedimiento”, y deberá generarse de acuerdo a las necesidades del programa. - Generación del código del programa. Un programa puede hacerse solamente con la programación de los distintos procedimientos que acompañan a cada objeto. Sin embargo, VB ofrece la posibilidad de establecer un código de programa separado de estos eventos. Este código puede introducirse en unos bloques llamados Módulos, en otros bloques llamados Funciones, y otros llamados Procedimientos. Estos Procedimientos no responden a un evento acaecido a un objeto, sino que responden a un evento producido durante la ejecución del programa (Gurowich, 1999). Tecnologías de acceso a datos Data Access Object (DAO) El modelo DAO ha sido programado en especial para acceder a bases de datos tipo ISAM, muy propias de Access en redes de área local, Visual Basic 6 incluye dos bibliotecas DAO para sus programas - La biblioteca de objetos DAO 3.51 (la versión actual) - La biblioteca de compatibilidad DAO 2.5/3.51, que permite el uso de los objetos ya obsoletos de DAO 2.5 en sus programas de Visual Basic 6 (Gurowich, 1999). Remote Data Object (RDO) Una de las diferencias mas obvias entre DAO y RDO es el tamaño de ambos modelos. El DAO tiene 21 objetos principales y el RDO tiene poco menos de 15. Esto refleja las principales diferencias de ambos modelos. El modelo DAO se ha diseñado para dar a los programadores un acceso completo tanto a los datos como el manejo de su esquema (estructura de tablas), y el RDO se ha diseñado tan solo para permitir el acceso a datos. Dado que la interfaz RDO se ha diseñado para utilizarse al hacer una conexión con grandes sistemas de bases de datos multiusuario (SQL Server, Oracle, etc.), los detalles para la creación y modificación de tablas no son tareas estratégicas del RDO (Ibidem, Gurowich). ActiveX Data Object (ADO) El modelo de objetos ActiveX de acceso, podría interpretarse como el eslabón perdido entre DAO y RDO, Aunque no se relacionan de alguna manera en especial, todos estos modelos se enfocan en dar servicios de datos a las aplicaciones sin la sobrecarga del modelo DAO y con algunas adiciones al RDO. En sí, una de las mayores diferencias con DAO y RDO es que ADO se ha creado para utilizar la interfaz OLEDB como el proveedor de datos subyacente en lugar de ODBC. Con OLEDB "bajo cubierta", ADO también puede acceder a conjuntos de datos que no provengan de bases de datos SQL, como correo electrónico, A/400, hasta servicios de directorios en red (Gurowich. 1999). Winsock de Visual Basic El control WinSock permite conectarse a un equipo remoto e intercambiar datos con el Protocolo de datagramas de usuario (UDP) o con el Protocolo de control de transmisión (TCP). Ambos protocolos se pueden usar para crear aplicaciones cliente-servidor. Aplicaciones posibles • Crear una aplicación cliente que recopile información del usuario antes de enviarla a un servidor central. • Crear una aplicación servidora que funcione como un punto central de recopilación de datos procedentes de varios usuarios. • Crear una aplicación de "conversación". Seleccionar un protocolo Cuando se utilice el control WinSock, primero se debe tener en cuenta si se va a usar el protocolo TCP o el protocolo UDP. La principal diferencia entre los dos radica en su estado de conexión: • TCP es un protocolo basado en la conexión y es análogo a un teléfono: el usuario debe establecer una conexión antes de continuar. • UDP es un protocolo sin conexión y la transacción entre los dos equipos es como pasar una nota: se envía un mensaje desde un equipo a otro, pero no existe una conexión explícita entre ambos. Además, el tamaño máximo de los datos en envíos individuales está determinado por la red. La naturaleza de la aplicación que se esté creando determinará generalmente qué protocolo se debe seleccionar. He aquí varias cuestiones que pueden ayudar a seleccionar el protocolo adecuado: 1. ¿Necesitará la aplicación la confirmación por parte del cliente o el servidor cuando se envíen o reciban datos? Si es así, el protocolo TCP requiere una conexión explícita antes de enviar o recibir datos. 2. ¿Será muy grande el tamaño de los datos (como en el caso de los archivos de imágenes o sonidos)? Una vez establecida la conexión, el protocolo TCP mantiene la conexión y asegura la integridad de los datos. 3. ¿Se enviarán los datos de forma intermitente o en una sesión? Por ejemplo, si está creando una aplicación que avisa a equipos específicos cuando se han completado ciertas tareas, el protocolo UDP puede ser el más apropiado. Este protocolo es también el más adecuado para enviar pequeñas cantidades de datos (Gurowich, 1999). CAPÍTULO 2 CONCEPTOS DE DISEÑO ENFOCADOS AL DESARROLLO DE APLICACIONES DISTRIBUIDAS - Aspectos de Diseño de Programas - El Diseño de la Distribución - El Diseño de Distribución Bottom-Up (Ascendente) ASPECTOS DE DISEÑO DE PROGRAMAS Un sistema distribuido debe hacer que los usuarios (procesos) perciban el sistema como un monoprocesador virtual. No es necesario que los usuarios estén al tanto de la existencia de múltiples máquinas y múltiples procesadores en el sistema. En la actualidad no hay ningún sistema que cumpla cabalmente con esta definición, pero se están haciendo avances. Los aspectos que hay tener en cuenta en el diseño de un sistema distribuido se describen a continuación. Transparencia Los usuarios deben poder accesar los objetos remotos de la misma forma que los locales. Es responsabilidad del sistema operativo distribuido localizar el recurso y obtener la interacción adecuada. La transparencia también tiene que ver con la forma de nombrar los objetos: el nombre de un objeto no debe depender del lugar en que se almacena. Un recurso debe poder migrar de un lugar a otro, sin que esto signifique que haya que cambiar su nombre. Los usuarios, además, deben tener la misma vista del sistema, independientemente del lugar en que el usuario haga login (Navarro, 1998). Confiabilidad Si tenemos un sistema con 5 máquinas, cada una con una probabilidad del 95% de estar funcionando normalmente en cualquier instante, el hecho de que una máquina se caiga, hace que deje de funcionar todo el sistema, entonces la probabilidad de que el sistema esté funcionando en un instante dado es del 77%. Si en cambio el sistema está hecho de manera tal que cualquier máquina puede asumir el trabajo de una máquina que se cae, entonces el sistema estará funcionando un 99.9994% del tiempo. La primera opción es definitivamente mala (mucho peor que en un sistema centralizado); la segunda, es poco realista (muy difícil de implementar). Además, la tolerancia a fallas es un tema particularmente complejo, debido a que, en general, no es posible diferenciar entre un enlace de comunicaciones caído, una máquina caída, una máquina sobrecargada, y pérdida de mensajes. La confiabilidad tiene que ver con la consistencia de los datos. Si un archivo importante se replica, hay que asegurarse que las réplicas se mantengan consistentes; mientras más haya, más caro es mantenerlas, y más probable es que haya inconsistencias. La seguridad es también un aspecto fundamental de la confiabilidad (Navarro, 1998). Escalabilidad La escalabilidad de un sistema es la capacidad para responder a cargas de trabajo crecientes. En particular un sistema distribuido escalable debe diseñarse de manera que opere correcta y eficientemente con diez o con millones de máquinas (Ibidem, Navarro). Flexibilidad Los sistemas distribuidos son nuevos. Es importante, por ende, que se puedan adaptar a nuevas tecnologías y a nuevos avances en el tema (Navarro, 1998). EL DISEÑO DE LA DISTRIBUCION El diseño de un sistema de base de datos distribuido implica la toma de decisiones sobre la ubicación de los programas que accederán a la base de datos y sobre los propios datos que constituyen esta última, a lo largo de los diferentes puestos que configuren una red de ordenadores. La ubicación de los programas, a priori, no debería suponer un excesivo problema dado que se puede tener una copia de ellos en cada máquina de la red. Sin embargo, ¿cuál es la mejor opción para colocar los datos? en una gran máquina que albergue a todos ellos, encargada de responder a todas las peticiones del resto de las estaciones – sistema de base de datos centralizado –, o se podría pensar en repartir las relaciones, las tablas, por toda la red. En el supuesto de que se seleccionara esta segunda opción, ¿qué criterios se deberían seguir para llevar a cabo tal distribución? ¿Realmente este enfoque ofrecerá un mayor rendimiento que el caso centralizado? ¿Podría optarse por alguna otra alternativa? (Rodríguez, 1999). Tradicionalmente se ha clasificado la organización de los sistemas de bases de datos distribuidos sobre tres dimensiones: el nivel de compartición, las características de acceso a los datos y el nivel de conocimiento de esas características de acceso (vea la figura 1). El nivel de compartición presenta tres alternativas: inexistencia, es decir, cada aplicación y sus datos se ejecutan en un ordenador con ausencia total de comunicación con otros programas u otros datos; se comparten sólo los datos y no los programas, en tal caso existe una réplica de las aplicaciones en cada máquina y los datos viajan por la red; y, se reparten datos y programas, dado un programa ubicado en un determinado sitio, éste puede solicitar un servicio a otro programa localizado en un segundo lugar, el cual podrá acceder a los datos situados en un tercer emplazamiento. Figura 1. Enfoque de la distribución (Rodríguez, 1999). Existen dos alternativa respecto a las características de acceso a los datos: el modo de acceso a los datos que solicitan los usuarios puede ser estático, es decir, no cambiará a lo largo del tiempo, o bien, dinámico. Sin embargo, lo realmente importante radica, estableciendo el dinamismo como base, que tan dinámico es y cuántas variaciones sufre a lo largo del tiempo. Esta dimensión establece la relación entre el diseño de bases de datos distribuidas y el procesamiento de consultas. La tercera clasificación es el nivel de conocimiento de las características de acceso. Una posibilidad es, evidentemente, que los diseñadores carezcan de información alguna sobre cómo los usuarios acceden a la base de datos. Es una posibilidad teórica, pero sería muy laborioso abordar el diseño de la base de datos con tal ausencia de información. Lo más práctico sería conocer con detenimiento la forma de acceso de los usuarios o, en el caso de su imposibilidad, conformarse con una información parcial de ésta. El problema del diseño de bases de datos distribuidas podría enfocarse a través de esta trama de opciones. En todos los casos, excepto aquel en el que no existe compartición, aparecerán una serie de nuevos problemas que son irrelevantes en el caso centralizado (Rodríguez, 1999). A la hora de abordar el diseño de una base de datos distribuida se puede optar principalmente por dos tipos de estrategias: la estrategia ascendente y la estrategia descendente. Ambos tipos no son excluyentes, y no resultaría extraño a la hora de abordar un trabajo real de diseño de una base de datos que se pudiesen emplear en diferentes etapas del proyecto una u otra estrategia. La estrategia ascendente podría aplicarse en aquel caso donde haya que proceder a un diseño a partir de un número de pequeñas bases de datos existentes, con el fin de integrarlas en una sola. En este caso se partiría de los esquemas conceptuales locales y se trabajaría para llegar a conseguir el esquema conceptual global. Aunque este caso se pueda presentar con facilidad en la vida real, se prefiere pensar en el caso donde se parte de cero y se avanza en el desarrollo del trabajo siguiendo la estrategia descendente (Ibidem, Rodríguez). Existen diversas formas de afrontar el problema del diseño de la distribución. Las más usuales se muestran en la figura 2. En el primer caso, caso A, los dos procesos fundamentales, la fragmentación y la asignación, se abordan de forma simultánea. Esta metodología se encuentra en desuso, sustituida por el enfoque en dos fases, caso B: la realización primeramente de la partición para luego asignar los fragmentos generados. El resto de los casos se comentan en la sección referente a los distintos tipos de la fragmentación. Figura 2. Enfoques para realizar el diseño distributivo (Rodríguez, 1999). El principal problema de la fragmentación radica en encontrar la unidad apropiada de distribución. Una relación no es una buena unidad por muchas razones. Primero, las vistas de la aplicación normalmente son subconjuntos de relaciones. Además, la localidad de los accesos de las aplicaciones no está definida sobre relaciones enteras pero sí sobre subconjuntos de las mismas. Por ello, sería normal considerar como unidad de distribución a estos subconjuntos de relaciones (Rodríguez, 1999). Segundo, si las aplicaciones tienen vistas definidas sobre una determinada relación (considerándola ahora una unidad de distribución) que reside en varios sitios de la red, se puede optar por dos alternativas. Por un lado, la relación no estará replicada y se almacena en un único sitio, o existe réplica en todos o algunos de los sitios en los cuales reside la aplicación. Las consecuencias de esta estrategia son la generación de un volumen de accesos remotos innecesario. Además, se pueden realizar réplicas innecesarias que causen problemas en la ejecución de las actualizaciones y puede no ser deseable si el espacio de almacenamiento está limitado. Tercero, la descomposición de una relación en fragmentos, tratados cada uno de ellos como una unidad de distribución, permite el proceso concurrente de las transacciones. También la relación de estas relaciones, normalmente, provocará la ejecución paralela de una consulta al dividirla en una serie de subconsultas que operará sobre los fragmentos (Ibidem, Rodríguez). Pero la fragmentación también acarrea inconvenientes. Si las aplicaciones tienen requisitos tales que prevengan la descomposición de la relación en fragmentos mutuamente exclusivos, estas aplicaciones cuyas vistas estén definidas sobre más de un fragmento pueden sufrir una degradación en el rendimiento. Por tanto, puede ser necesario recuperar los datos de dos fragmentos y llevar a cabo sobre ellos operación de unión y yunto , lo cual es costoso. Un segundo problema se refiere al control semántico. Como resultado de la fragmentación los atributos implicados en una dependencia se descomponen en diferentes fragmentos los cuales pueden destinarse a sitios diferentes. En este caso, la sencilla tarea de verificar las dependencias puede resultar una tarea de búsqueda de los datos implicados en un gran número de sitios (Rodríguez, 1999). TIPOS DE FRAGMENTACION Dado que una relación se corresponde esencialmente con una tabla y la cuestión consiste en dividirla en fragmentos menores, inmediatamente surgen dos alternativas lógicas para llevar a cabo el proceso: la división horizontal y la división vertical. La división o fragmentación horizontal trabaja sobre las tuplas, dividiendo la relación en subrelaciones que contienen un subconjunto de las tuplas que alberga la primera. La fragmentación vertical, en cambio, se basa en los atributos de la relación para efectuar la división. Estos dos tipos de partición podrían considerarse los fundamentales y básicos. Sin embargo, existen otras alternativas. Fundamentalmente, se habla de fragmentación mixta o híbrida cuando el proceso de partición hace uso de los dos tipos anteriores. La fragmentación mixta puede llevarse a cabo de tres formas diferentes: desarrollando primero la fragmentación vertical y, posteriormente, aplicando la partición horizontal sobre los fragmentos verticales (denominada partición VH), o aplicando primero una división horizontal para luego, sobre los fragmentos generados, desarrollar una fragmentación vertical (llamada partición HV), o bien, de forma directa considerando la semántica de las transacciones. Otro enfoque distinto y relativamente nuevo, consiste en aplicar sobre una relación, de forma simultánea y no secuencial, la fragmentación horizontal y la fragmentación vertical; en este caso, se generara una rejilla y los fragmentos formaran las celdas de esa rejilla, cada celda será exactamente un fragmento vertical y un fragmento horizontal (nótese que en este caso el grado de fragmentación alcanzado es máximo, y no por ello la descomposición resultará más eficiente). Grado de fragmentación. Cuando se va a fragmentar una base de datos se debe sopesar qué grado de fragmentación va a alcanzar, ya que éste será un factor que influirá notablemente en el desarrollo de la ejecución de las consultas. El grado de fragmentación puede variar desde una ausencia de la división, considerando a las relaciones unidades de fragmentación; o bien, fragmentar a un grado en el cada tupla o atributo forme un fragmento. Ante estos dos casos extremos, evidentemente se ha de buscar un compromiso intermedio, el cual debería establecerse sobre las características de las aplicaciones que hacen uso de la base de datos. Dichas características se podrán formalizar en una serie de parámetros. De acuerdo con sus valores, se podrá establecer el grado de fragmentación del banco de datos (Rodríguez, 1999). Figura 3. Distintos tipos de fragmentación (Rodríguez, 1999). Reglas de correción de la fragmentación A continuación se enuncian las tres reglas que se han de cumplir durante el proceso de fragmentación, las cuales asegurarán la ausencia de cambios semánticos en la base de datos durante el proceso. 1. Compleción. Si una relación R se descompone en una serie de fragmentos R1, R2, ..., Rn, cada elemento de datos que pueda encontrarse en R deberá poder encontrarse en uno o varios fragmentos Ri. Esta propiedad extremadamente importante asegura que los datos de la relación global se proyectan sobre los fragmentos sin pérdida alguna. Tenga en cuenta que en el caso horizontal el elemento de datos, normalmente, es una tupla, mientras que en el caso vertical es un atributo. 2. Reconstrucción. Si una relación R se descompone en una serie de fragmentos R1, R2, ..., Rn, puede definirse una operador relacional El operador tal que será diferente dependiendo de las diferentes formas de fragmentación. La reconstrucción de la relación a partir de sus fragmentos asegura la preservación de las restricciones definidas sobre los datos en forma de dependencias. 3. Disyunción. Si una relación R se descompone horizontalmente en una serie de fragmentos R1, R2, ..., Rn, y un elemento de datos di se encuentra en algún fragmento Rj, entonces no se encuentra en otro fragmento Rk (k j). Esta regla asegura que los fragmentos horizontales sean disjuntos. Si una relación R se descompone verticalmente, sus atributos primarios clave normalmente se repiten en todos sus fragmentos (Rodríguez, 1999). Alternativas de asignación Partiendo del supuesto que el banco de datos se haya fragmentado correctamente, habrá que decidir sobre la manera de asignar los fragmentos a los distintos sitios de la red. Cuando una serie de datos se asignan, éstos pueden replicarse para mantener una copia. Las razones para la réplica giran en torno a la seguridad y a la eficiencia de las consultas de lectura. Si existen muchas reproducciones de un elemento de datos, en caso de fallo en el sistema se podría acceder a esos datos ubicados en sitios distintos. Además, las consultas que acceden a los mismos datos pueden ejecutarse en paralelo, ya que habrá copias en diferentes sitios. Por otra parte, la ejecución de consultas de actualización, de escritura, implicaría la actualización de todas las copias que existan en la red, cuyo proceso puede resultar problemático y complicado. Por tanto, un buen parámetro para afrontar el grado de réplica consistiría en sopesar la cantidad de consultas de lectura que se efectuarán, así como el número de consultas de escritura que se llevarán a cabo. En una red donde las consultas que se procesen sean mayoritariamente de lectura, se podría alcanzar un alto grado de réplica, no así en el caso contrario. Una base de datos fragmentada es aquella donde no existe réplica alguna. Los fragmentos se alojan en sitios donde únicamente existe una copia de cada uno de ellos a lo largo de toda la red. En caso de réplica, se puede considerar una base de datos totalmente replicada, donde existe una copia de todo el banco de datos en cada sitio, o considerar una base de datos parcialmente replicada donde existan copias de los fragmentos ubicados en diferentes sitios. El número de copias de un fragmento será una de las posibles entradas a los algoritmos de asignación, o una variable de decisión cuyo valor lo determine el algoritmo. La figura 4 compara las tres alternativas de réplica con respecto a distintas funciones de un sistema de base de datos distribuido (Alberto, 1999). Procesamiento de consultas Gestión del directorio Réplica total Réplica parcial Partición fácil dificultad Similar fácil o inexistente dificultad Similar Control de concurrencia Seguridad Realidad moderado difícil muy alta posible aplicación alta realista Fácil Baja posible aplicación Figura 4. Comparación de las alternativas de réplica Información necesaria Un aspecto importante en el diseño de la distribución es la cantidad de factores que contribuyen a un diseño óptimo. La organización lógica de la base de datos, la localización de las aplicaciones, las características de acceso de las aplicaciones a la base de datos y las características del sistema en cada sitio, tienen una decisiva influencia sobre la distribución. La información necesaria para el diseño de la distribución puede dividirse en cuatro categorías: la información del banco de datos, la información de la aplicación, la información sobre la red de ordenadores y la información sobre los ordenadores en sí. Las dos últimas son de carácter cuantitativo y servirán, principalmente, para desarrollar el proceso de asignación (Alberto, 1999). EL DISEÑO DE DISTRIBUCIÓN BOTTOM-UP (ASCENDENTE) En este enfoque, el esquema representando la porción de los datos almacenados en cada sitio individual constituye el punto de partida en el diseño, y la distribución del diseño consiste en la identificación de los datos que son comunes a ellos, así como sus diferencias. Durante la operación, los sistemas de bases múltiples proveen sólo capacidad de consulta global y capacidad de actualización local (update), de modo que cada sistema local puede estar actualizado por transacciones realizadas en ese lugar. Si el diseñador no puede modificar las bases de datos locales de un sistema de base de datos múltiple, entonces la resolución del conflicto tiene que ser incorporada en el procesamiento de la capacidad del programa de consulta del sistema. El apoyo de la multi-base provee un señalamiento automático de las consultas señaladas de acuerdo con el panorama global, aplicables al esquema local y coordina la ejecución de las consultas y la recolección de los resultados (Besso, 1999). Problemas de diseño en la construcción de un sistema global Los problemas en el diseño bottom-up de un sistema de bases múltiples se debe a la necesidad de construcción de un esquema global (llamado Superview). El proceso de integración reconoce entidades relacionadoras y sus atributos. Para integrar las bases de datos necesitamos seleccionar un tipo adecuado de modelos de datos para el esquema global. Una generalización jerárquica permite la definición de una relación subtipo-tipo entre dos entidades; esto puede ser útil cuando dos vistas dan una descripción que se superponen parcialmente de la misma identidad. Entonces, la solución clásica del panorama de integración consiste en la generación de tres entidades, una con los atributos comunes y otras dos con atributos que no se interpongan entre sí. La necesidad de las jerarquías de generalización indica que los modelos conceptuales como el ER (extendido por la generalización), el modelo estructural, o el modelo funcional son buenos candidatos para el proceso de integración. Otra cuestión general es el orden de integración de los panoramas. Cuando hay varias vistas presentes, la generalización típicamente se lleva a cabo al unir una vista al mismo tiempo con el esquema global, lo que a su vez se construye gradualmente. Así el problema general que consideramos es el de cómo construir la super vista de dos panoramas. En general, es mejor integrar primero la más grande o la más importante de las vistas, seguida de la más pequeña o la menos importante (Alberto,1999). Trabajando con los datos inconsistentes durante la operación En la práctica, las bases de datos múltiples tienen errores. Esos pueden ser debidos a la transcripción de las entradas, omisión o fallo en la sincronización de las actualizaciones, y de la recuperación inadecuada desde los errores del sistema. El diseñador de la base de datos debe decidir las políticas para sobrellevar las inconsistencias que surgen durante la operación de la base de datos global. El diseñador de la base de datos tiene varias opciones sobre cómo manejar las inconsistencias. Mientras que las inconsistencias serán detectadas en el momento de la ejecución, la determinación de las políticas para resolver las inconsistencias es un problema de diseño, estas políticas incluyen: Presentar cualquiera de los valores inconsistentes sin notificárselo al usuario: la solución más directa pero al mismo tiempo más peligrosa. Presentar todos los valores inconsistentes y mostrar al usuario las fuentes de la información. En este caso, el usuario debería ser capaz de evaluar los casos de inconsistencias. Evaluar alguna función agregada a los valores de inconsistencia y presentar el resultado a la función del usuario. Las funciones agregadas posibles incluyen promedio, máximo y minino. Esta técnica fue utilizada cuando se esperó que las observaciones fueran diferentes ya que ocurrieron en tiempos diferentes. Presentar el valor más reciente. Esta política requiere la misma elaboración de las operaciones actualizaciones o updates (que son caras) basada en el supuesto de que las inconsistencias se deban a las actualizaciones retrasadas, y de este modo el último valor es el que más se necesita. Presentar el valor desde el sistema más confiable. Esta política está basada en la suposición que el diseñador es capaz de evaluar la confiabilidad de los sitios en la base de datos distribuida (Alberto, 1999). CAPÍTULO 3 CONTEXTO DE LA EMPRESA ESTAFETA - Historia - Infraestructura - Logros - Estafeta en Números ESTAFETA S.A. DE C.V. Estafeta ocupa el primer lugar nacional en número de clientes, ventas y cantidad de envíos transportados. También ofrece a sus clientes los servicios de mensajería y paquetería a 200 países del mundo. En los últimos doce años, la empresa ha logrado un crecimiento significativo al acercarse a 50 millones de recolecciones y entregas en 1997, cifra que representó una participación superior al 35% del mercado doméstico. El crecimiento constante que han experimentado desde sus inicios los llevó en 1997 a una facturación por arriba de los 100 millones de dólares. Estafeta garantiza la entrega puntual de sus envíos en los destinos donde presta el servicio. Las cifras avalan su entrega y compromiso: 50 millones de entregas y recolecciones realizadas durante 1997. Estafeta ofrece productos y servicios diseñados para responder a las necesidades de comunicación y distribución, así como soluciones integrales de logística. Historia Estafeta Mexicana, S.A. de C.V., surge en agosto de 1979 en el estado de Querétaro como una empresa mexicana pionera en el servicio de mensajería acelerada. La empresa fue fundada por sus socios actuales (2 socios alemanes y 2 socios mexicanos). La empresa comenzó a ofrecer sus servicios con una PC 286 y una camioneta Ford modelo 1974 para sus entregas. Después abren una oficina en el DF y a partir de eso empiezan a establecer sucursales en todo México. Desde sus inicios ha venido ofreciendo servicios de mensajería y paquetería con un nivel de calidad competitivo a nivel mundial (Estafeta, 2000). Infraestructura Actualmente Estafeta posee una flotilla de distribución de más de 1,500 vehículos de carga, incluyendo aviones propios, cuenta con 30 Centros Operativos, además a lo largo y ancho del territorio nacional tiene 325 oficinas propias totalmente automatizadas y conectadas a una red privada de telecomunicaciones. Logros Apoyan a fabricantes y comercializadores con servicios adecuados de distribución que les permiten colocar y resurtir sus productos en los mercados de casi cualquier parte de la República Mexicana. El servicio a sus clientes, les ha permitido atender las características particulares del mercado nacional y así responder a la demanda de la población con un servicio confiable, rápido y económico. Su misión Ofrecer el servicio líder en mensajería y Paquitería en el Mercado nacional (Ibidem, Estafeta). El objetivo de la empresa es: La satisfacción total del cliente (Estafeta, 2000). Cobertura Amplia Estafeta está presente en la gran mayoría de las ciudades de la República Mexicana, al igual que en más de 180 países en los cinco continentes. Servicios Electrónicos Es posible saber en todo momento el lugar en el que se encuentran los envíos, así como cualquier información detallada sobre los mismos, solo es cuestión de realizar una llamada a Estafeta y por medio de un sistema de rastreo electrónico es posible obtener la ubicación y en su caso, la confirmación de la entrega. Además Estafeta cuenta con una dirección de internet www.estafeta.com.mx en la cual ponen a disposición de los usuarios las herramientas electrónicas para poder consultar en forma remota, la ubicación de los envíos y demás información de la empresa. Comando Estafeta Estafeta cuenta con un software para la administración y gestión de envíos, el cual pone a trabajar la información en beneficio de los clientes de manera inteligente. Sistema Comando asegura el control sobre los envíos, permitiendo automatizar la mensajería y paquetería, mientras reduce los costos y aumenta las ventas. Este software está disponible en versiones para Windows 3.X y Windows 95. Comando Estafeta permite: - Automatizar la impresión de las guías. - Rastrear y confirmar los envíos en forma remota (vía modem o disquete). - Obtener reportes pormenorizados de todas las operaciones. Descripción Empresa de mensajería y paquetería Fundación Agosto de 1979 Numero de empleados 3,000 Clientes 50,000 regulares Ventas Anuales 100 millones de dólares Posición en el mercado domestico Participación del mercado 1er. Lugar 34% aproximadamente Cobertura 100% del mercado nacional Oficinas 325 propias Centros operativos y de intercambio Vehículos terrestres 40 a nivel nacional Vehículos aéreos 11 jets de carga Conexiones aéreas propias 59 a nivel nacional Volumen diario de operaciones 200,000 entregas y recolecciones Volumen diario de carga 1,200,000 kilos a nivel nacional Kilómetros recorridos diariamente 240,000 a nivel nacional 1,500 unidades Estafeta en números (Estafeta, 2000). CAPÍTULO 4 ANÁLISIS DEL FUNCIONAMIENTO DE ENVIOS Y ENTREGAS DE PAQUETES (Situación antes de la implementación del sistema) − Equipo con que se cuenta actualmente − Flujo de Información − Información que se obtiene por cada paquete que se envía o se entrega − Lista de plazas a cargo de Colima − Descripción de los números de guía − Tipos de movimientos de los paquetes La empresa Estafeta en su sucursal Colima cuenta con un departamento de sistemas el cual es el encargado de la zona occidente, la cual consta de tres estados (Colima, Jalisco, Tepic), en el se lleva todo el control sobre los números de guía de los paquetes que se envían y se reciben en las diferentes plazas de la zona occidente. Toda la información se concentra en la plaza para después ser enviada a la central para que sea procesada y separada por plazas. Para poder llevar este control, Estafeta de México cuenta con una red privada, la cual conecta las diferentes plazas en toda la república. Esta red consta de líneas privadas DS0, servidores Uníx, Terminales con Windows 95-98 y conexiones vía modem. Equipo con que se cuenta actualmente El departamento de sistemas cuenta con un servidor UNIX, en el cual se conectan varias terminales tontas (solo monitor y teclado) y varias computadoras con Windows 95 o 98. También es posible accesar al servidor UNIX por medio de modem. Colima es la primera plaza en la que se implementaron los lectores ópticos portátiles para entregas y recolecciones de paquetes, lo cual significa que si se trabaja mejor con estos lectores, después se implementarán en las demás plazas de la república. Estos lectores permiten a los que entregan los paquetes llevar un mejor control sobre estos. También se cuenta con lectores de código de barra para obtener los números de guía de los paquetes que entran y salen de Estafeta. Para los lectores de código de barra se cuenta con una computadora, la cual es la que recaba la información de los diferentes números de guía de los paquetes. Existe un programa por medio del cual se leen los códigos de barra y se procesan de acuerdo a la acción que se está haciendo con el paquete. Flujo de Información Después de recabar la información por medio de los lectores de código de barras y de los lectores ópticos portátiles, la información se lleva al servidor UNIX en el cual la información se formatea para enviarla a la oficina central de Estafeta, Cuando la información llega a la oficina central, esta se separa y se envía a cada plaza para llevar un control sobre los paquetes que se enviaron o se recibirán. También esta información se almacena en el servidor Web para que los clientes puedan consultar por medio de un navegador la localización actual de su paquete y poder darse una idea de cuando o a que hora aproximadamente llegará el paquete a su destino. Se realiza esta operación por lo menos tres veces al día. Recopilación de Información Traslado al servidor Formateo de Información Envío de información Separación de información Actualización de la información en el servidor Web Envío de la información a las diferentes plazas Disponibilidad de la información Diagrama del Flujo de Información actual Descripción del diagrama de flujo Recopilación de información: Esta parte genera la información de los números de guía de los paquetes, y la información se recopila mediante lectores de código de barras portátiles y no portátiles. Además, se capturan los números de guía de los paquetes en forma manual cuando los códigos de barra no pueden ser leídos por el lector. Traslado al servidor: Como la información es generada en un sistema que trabaja bajo Windows y el servidor trabaja Bajo UNIX, es necesario que se haga una transformación de formatos de archivos, Esta transformación se realiza en este punto. Formateo de información: Aquí se verifica que toda la información tenga el formato necesario para enviarla a la central en México. Envío de información: Hasta este punto, la información se envía a la central. El envío se hace mediante comandos de UNIX y a través de la red privada de la empresa. Separación de información: A cada plaza, se le envía la información referente a los paquetes que han sido enviados por ellos, así como los números de los paquetes que se van a recibir para entregarlos a los distintos destinos en el estado. Actualización de la información en el servidor Web: Se actualiza la información del servidor Web para que esté disponible para las consultas por medio de su sitio web. Envío de la información a las diferentes plazas: La información que ha sido separada se regresa a cada plaza que corresponde para que tengan actualizada su información. Disponibilidad de la información: Hasta este momento la información que fue generada en cada plaza está disponible para consultas o, en ciertos casos, para ser actualizada. Recopilación de información Envío de la Disponibilidad de la información información a la central ibilidad Actualización del servidor web ación Disponibilidad de la información Diagrama del flujo de información que se obtendrá Información que se obtiene por cada paquete que se envía o se entrega ENTREGAS Al momento de que se va a entregar un paquete es necesario que se genere la siguiente información para el control de Estafeta: - Número de guía (cadena de 22 caracteres). - Clave del lector óptico portátil o del lector de código de barras (cadena de 4 caracteres). - Destino (cadena de 3 caracteres). - Origen (cadena de 3 caracteres). - Nombre de la persona que recibe el paquete (cadena de 50 caracteres). Esta información se obtiene al momento de entregar un paquete y es almacenada en el lector óptico portátil para después descargar toda la información en una computadora, la cual almacena toda la información del día referente a las entregas de paquetes. Para cuando se utilizan los lectores de código de barras, existe un software especial para recabar la información del número de guía, Este software se ejecuta bajo el entorno de Windows 95 0 98. Para pasar los archivos generados bajo Windows al servidor UNIX primero se copian los archivos al servidor por medio de comandos de UNIX. A continuación, por medio de otro software el cual se ejecuta en entorno UNIX, los archivos generados en Windows se incorporan al sistema en UNIX para llenar los datos que hicieron falta, cabe señalar que cuando se utilizan los lectores de código de barras, estos solamente obtienen el número de guía y, en algunas ocasiones, el origen del paquete. Por lo tanto los datos que hacen falta deben de capturarse manualmente. ENVIOS Al momento de que se va a enviar un paquete es necesario que se genere la siguiente información para el control de Estafeta: - Número de guía. - Destino. - Origen. - Nombre de la persona que envía el paquete. Esta información es obtenida en los puntos de venta de Estafeta. También esta información debe transmitirse al servidor para ser tratada y enviada a la central de Estafeta. Lista de plazas a cargo de Colima Colima Tecomán Puerto Vallarta Arandas Ciudad Guzmán Tepatitlan San Miguel del Manzanillo Tepic Alto Autlan San Juan de los Lagos La Barca Ocotlan Descripción de los números de guía Cada número de guía consta de 22 dígitos, los cuales se dividen de la siguiente forma: No. de Dígitos Descripción 10 Número de cliente 3 Número de plaza 2 Tipo de servicio 7 Número consecutivo El número de cliente es único, Cada vez que llega un cliente nuevo, se le asigna un número o se le asigna los números ya establecidos, los cuales tienen la terminación 9999 o 0000. Cada plaza tiene asignada un número único, algunos de los cuales son: Colima 012 Tecomán 177 Manzanillo 183 Puerto Vallarta 072 Ciudad Guzmán 105 Tipos de movimientos de los paquetes Cada vez que llega un paquete a una plaza, éste se da de alta. Una vez dado de alta, el paquete se entrega en la oficina de la plaza o a domicilio, Para estas acciones, también se le hace un registro que indica de que forma se va a entregar el paquete. Si el paquete solo está de paso, también se registra su salida. En algunas ocasiones, los paquetes se detienen en los retenes instalados en las carreteras, donde se quedarán unos días, Por lo tanto, también se registran paquetes que se detienen en los retenes por un tiempo. − CAPÍTULO 5 IMPLEMENTACIÓN − Aspectos de diseño a considerar en la implementación del sistema − Elementos que forman el prototipo − Control de Números de guía (en los servidores) − Servidor − Cliente − Seguridad − Otras Características del Sistema Aspectos de diseño a considerar en la implementación del sistema - Estructura de la Base de Datos Cada plaza contará con una base de datos en donde se manejaran los datos de los números de guía localmente. Esta base de datos será de la siguiente forma: Servidor Tabla – Guías Nombre Tipo Tamaño NoGuia Tipo Subtipo Fecha Hora Texto Byte Byte Fecha/Hora Fecha/Hora 22 Cliente Tabla - DirIP Nombre Tipo Tamaño Plaza IP Posición Texto Texto Autonumerico 30 15 Tabla - Usuarios Nombre Tipo Tamaño Usuario Texto 10 Password Texto 10 Nombre Texto 50 TipoU Byte - Fragmentación de la Base de Datos No será necesario fragmentar la base de datos que exista localmente en cada plaza si no que se tendrá una ausencia de la división. Considerando a las relaciones unidas de fragmentación, esto significa que la base de datos de cada plaza quedará intacta y no será fragmentada. - Replicas En cada plaza se tendrá una réplica de cada base de datos que está almacenada localmente, por si en algunas ocasiones la computadora que tiene almacenada la base de datos falla o sucede algún contratiempo con ella. La réplica permitirá al menos hacer consultas de la información. La base de datos que servirá de réplica tendrá la misma estructura que la base de datos original, la cual se mostró anteriormente. - Método de distribución de la Base de Datos Como ya existen en cada plaza todas las bases de datos, se implementará el método Bottom-Up (ascendente). Este método ya fue explicado en el capítulo anterior. - Comunicación entre clientes y servidores La comunicación entre las diferentes plazas se realizará a través de sockets. En particular, se utilizará el control Winsock de Visual Basic, utilizando el protocolo TCP. Se enviarán entre los clientes y los servidores cadenas, las cuales tendrán una estructura específica para indicar el tipo de función que hará el cliente o el servidor, así como también se enviarán los argumentos necesarios para realizar la función que se está solicitando o realizando. Para identificar los servidores, se utilizarán direcciones IP las cuales ya se tienen asignadas en cada plaza existente. CLIEN SERVIDO SERVIDO Réplica TCP/IP Réplica SERVIDO SERVIDO R Réplica CLIEN Réplica Esquema general del funcionamiento del sistema Elementos que forman el Prototipo En cada plaza existirán tres programas individuales los cuales serán: - Programa para controlar los números de guía. - Programa que recibirá las solicitudes de información de las demás plazas. - Programa por medio del cual se podrán hacer consultas y/o modificaciones de las bases de datos que están almacenadas localmente o en forma distribuida. A continuación se describe el funcionamiento de los tres programas. Control de números de guía (en los servidores) Existen 2 programas los cuales permiten llevar el control de los números de de guía de los servidores Un programa permite capturar los números de guía de los paquetes y registrarlos de acuerdo a la acción de que se le hará al paquete. Por ejemplo. - Darle entrada a un paquete. - Indicarle al sistema que determinado paquete está detenido en un retén. - Registrar que un paquete será entregado en las oficinas de Estafeta. - Indicar que el paquete se entregará a domicilio. - Registrar la salida de un paquete. Estas acciones se hacen por medio de la siguiente pantalla: Consideraciones para registrar los números de guía. "Registrar Entrada". Para registrar la entrada de un número de guía, éste no debe de estar dado de alta con anterioridad. "Detenido en reten". Para hacer este registro, no debe de estar registrado de entrada el número de guía. Cuando un paquete ya salió de un reten y llega a una plaza y está registrado que fue detenido en un reten, se presiona el botón "Registrar Entrada" y este lo registrará de entrada y le quitará el registro de que está en un retén. "Entrega en oficina". Para poder registrar un número de guía de esta forma, el número de guía debe de estar ya registrado de entrada. "Entrega a domicilio". Para poder registrar un número de guía de esta forma, el número de guía debe de estar ya registrado de entrada. "Registrar Salida". Para poder registrar un número de guía de esta forma, el número de guía debe de estar ya registrado de entrada. A continuación se muestra un diagrama que explica el funcionamiento de esta parte del sistema: Captura del número de Error Registrar entrada Detenido en reten Entrega en oficina Entrega a domicilio Ya esta regis trado Regi stro de entra Regi stro de entra Regi stro de entra No Y Si Si Registrar salida Regi stro de entra Error SI Si No No Dete nido en Error Registra No Error Registra Error Error Registra Registra No Sali r Si Sali r Sali r Sali r Si Cambiar registro a Sali r Diagrama general del funcionamiento de la captura de los números de guía Servidor El segundo programa realiza las solicitudes de los clientes que se conecten al sistema. Este programa se queda residente en memoria y se puede controlar por medio de un icono en la barra del sistema. Las opciones que se tienen para el servidor son las siguientes, las cuales son muy descriptivas de lo que hacen. Principales funciones del servidor. - Agregar Registros a la base de datos. - Modificar registros de la base de datos. - Borrar registros de la base de datos. - Buscar un determinado número de guía. - Enviar los registros por una determinada fecha. - Enviar los registros que se encuentran registrados en la fecha actual. - Enviar todos los registros de la base de datos. - Administrar la réplica de la base de datos. - Controlar los bloqueos a los registros. En el siguiente código se muestra como se realizan las funciones del servidor dependiendo de las solicitudes de los clientes. Private Sub Server_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim Cadena, cad As String Dim a, c As Integer Dim b, d, e, f As String Server(Index).GetData cad Cadena = Decodificar(cad) a = InStr(1, Cadena, ";", vbTextCompare) If a Then Else Exit Sub End If b = Mid(Cadena, 1, a - 1) If StrComp(b, "Agregar") Then 'Agregar nuevo registro Else c = InStr(a + 1, Cadena, ",", vbTextCompare) b = Mid(Cadena, (a + 1), (c - a - 1)) a = InStr(c + 1, Cadena, ",", vbTextCompare) d = Mid(Cadena, c + 1, a - c - 1) c = InStr(a + 1, Cadena, ",", vbTextCompare) f = Mid(Cadena, a + 1, c - a - 1) '''' Call Registro(Trim(b), Val(d), Val(f)) cad = Codificar("Agregado;") Server(Index).SendData cad Exit Sub End If If StrComp(b, "Modificar") Then 'Modificar registro Else c = InStr(a + 1, Cadena, ",", vbTextCompare) b = Mid(Cadena, (a + 1), (c - a - 1)) a = InStr(c + 1, Cadena, ",", vbTextCompare) d = Mid(Cadena, c + 1, a - c - 1) c = InStr(a + 1, Cadena, ",", vbTextCompare) f = Mid(Cadena, a + 1, c - a - 1) '''' Call MRegistro(Trim(b), Val(d), Val(f)) cad = Codificar("Modificado;") Server(Index).SendData cad Exit Sub End If If StrComp(b, "Borrar") Then 'Borrar Registro Else c = InStr(a + 1, Cadena, ",", vbTextCompare) b = Mid(Cadena, (a + 1), c - a - 1) ''' Call BRegistro(Trim(b)) cad = Codificar("Borrado;") Server(Index).SendData cad Exit Sub End If If StrComp(b, "Busqueda") Then 'Busqueda de un numero de guía Else c = InStr(a + 1, Cadena, ",", vbTextCompare) b = Mid(Cadena, (a + 1), c - a - 1) ''''' Call Busqueda(Trim(b), Index) Exit Sub End If If StrComp(b, "PorFecha") Then 'Regresa los registros que se encuentran en una fecha determinada Else c = InStr(a + 1, Cadena, ",", vbTextCompare) b = Mid(Cadena, (a + 1), c - a - 1) Call RegistrosF(Trim(b), Index) Exit Sub End If If StrComp(b, "Registros") Then actual Else If Bloqueado = 1 Then Call Registros(Index) cad = Codificar("Bloqueado;") Server(Index).SendData cad Else Call Registros(Index) Bloqueado = 1 IndiceB = Index End If Exit Sub End If If StrComp(b, "Todos") Then Else Call Todos(Index) Exit Sub End If 'Regresa los registros con fecha 'Regresa todos los registros End Sub Cliente La primera acción que se hace al momento de activar el cliente es introducir el nombre de usuario, así como su contraseña para saber que tipo de usuario está entrando al sistema. Existen dos tipos de usuario permitidos en el sistema: - Supervisor. Este usuario puede hacer uso de todas las opciones del sistema. - Usuarios normales. Estos usuarios solo pueden hacer búsquedas de un número de guía en específico. Nota: En el anexo 2 se muestra por medio de un esquema las opciones para cada usuario. La verificación de los usuarios se hace mediante el siguiente código: Adodc1.RecordSource = "select * from usuarios where usuario = '" & txtUserName & "'" Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "La contraseña no es válida. Vuelva a intentarlo", , "Inicio de sesión" txtPassword.SetFocus SendKeys "{Home}+{End}" Exit Sub Else If txtPassword = Adodc1.Recordset.Fields(1) Then Menu.TipoU.Caption = Trim(Adodc1.Recordset.Fields(3)) Menu.Show LoginSucceeded = True Me.Hide Else MsgBox "La contraseña no es válida. Vuelva a intentarlo", , "Inicio de sesión" txtPassword.SetFocus SendKeys "{Home}+{End}" End If End If Al entrar al sistema se muestra la siguiente pantalla (para el usuario “Supervisor”). En caso de que fuera un usuario normal, no se mostraría el menú “Administración” ni el icono de la barra de herramientas que permite ir a una plaza en específico. El menú “Buscar” cuenta con dos opciones como, se muestran en la siguente imagen. En todas las plazas: Esta opción permite buscar un número de guía en específico por medio de la siguiente pantalla. Ya que se introdujo el número de guía que se quiere encontrar, se presiona botón “Buscar” para que realice la búsqueda. El procedimiento de búsqueda es el siguiente: 1. El cliente busca en su base de datos de servidores los números IP de estos para comunicarse con ellos. El código que lo hace es el siguiente: Menu.DirIPB.RecordSource = "select * from dirip where posicion = " & Posicion Menu.DirIPB.Refresh If Menu.DirIPB.Recordset.EOF Then Else NoGuia = Trim(Numero) Menu.Winsock1.Connect Menu.DirIPB.Recordset.Fields(1), Menu.DirIPB.1000 End If Menu.ListaB.ListItems.Clear 2. Toma el primer servidor y le pide que realice la búsqueda del numero de guía. cad = Codificar("Busqueda;" & NoGuia) Winsock1.SendData (cad) 3. Si el servidor tiene almacenado el número de guía le regresa al cliente la información almacenada referente al numero de guía. 4. El cliente revisa la información y si está registrado que el paquete se va a entregar en la oficina, se va a entregar a domicilio, el paquete está en un retén o al paquete se le registro entrada pero no salida, se detiene la búsqueda y se le indica al usuario cualquiera de estas opciones que tiene el paquete. 5. En caso de que se le registró al paquete entrada y salida de la plaza el cliente le hace la misma solicitud de búsqueda al siguiente servidor. 6. Si ya se realizó en todos los servidores la búsqueda y todos tienen registrado entrada y salida se le muestra al usuario un historial del recorrido que ha hecho el paquete por las diferentes plazas. El código que realiza todas las verificaciones mencionadas en los últimos puntos se muestra a continuación: If StrComp(b, "Busqueda") Then Else a = InStr(c + 1, Cadena, ",", vbTextCompare) b = Mid(Cadena, (c + 1), (a - c - 1)) If StrComp(b, "NO") Then Set mItem = ListaB.ListItems.Add(, , Text:=Trim(NoGuia)) c = InStr(a + 1, Cadena, ",", vbTextCompare) d = Mid(Cadena, a + 1, c - a - 1) a = InStr(c + 1, Cadena, ",", vbTextCompare) b = Mid(Cadena, (c + 1), (a - c - 1)) If Val(d) = 2 Then Buscando.Hide MsgBox "El paquete esta en un reten cerca de " & DirIPB.Recordset.Fields(0) BusquedaN = 0 Winsock1.Close ListaB.Visible = False Exit Sub Else If Val(b) = 2 Or Val(b) = 3 Then Buscando.Hide MsgBox "El paquete se va a entregar en " & DirIPB.Recordset.Fields(0) BusquedaN = 0 Winsock1.Close ListaB.Visible = False Exit Sub ElseIf Val(b) = 0 Then Buscando.Hide MsgBox "El paquete se encuentra en " & DirIPB.Recordset.Fields(0) BusquedaN = 0 Winsock1.Close ListaB.Visible = False Exit Sub End If End If mItem.ListSubItems.Add , , Text:=DirIPB.Recordset.Fields(0) c = InStr(a + 1, Cadena, ",", vbTextCompare) d = Mid(Cadena, a + 1, c - a - 1) mItem.ListSubItems.Add , , Text:=d a = InStr(c + 1, Cadena, ",", vbTextCompare) b = Mid(Cadena, (c + 1), a - c - 1) '''' mItem.ListSubItems.Add , , Text:=b BusquedaN = 0 Else End If Menu.DirIPB.RecordSource = "select * from dirip" Menu.DirIPB.Refresh If Posicion = DirIPB.Recordset.RecordCount Then Buscando.Hide BusquedaN = 0 Winsock1.Close ListaB.SortKey = 2 ListaB.Sorted = True Exit Sub End If Posicion = Posicion + 1 BusquedaN = 1 Menu.DirIPB.RecordSource = "select * from dirip where posicion = " & Posicion Menu.DirIPB.Refresh If Menu.DirIPB.Recordset.EOF Then Else Menu.Winsock1.Close Do While Menu.Winsock1.State <> sckClosed DoEvents Loop Menu.Winsock1.Connect Menu.DirIPB.Recordset.Fields(1), Menu.DirIPB.Recordset.Fields(2) End If Exit Sub End If Ir a una plaza en específico: Esta opción permite al usuario estar en una plaza en específico para realizar actualizaciones en la base de datos de la plaza a la cual se desplaza. El sistema muestra un mapa con las diferentes zonas que existen e n el país. A través de este mapa se selecciona la zona en la cual está la plaza a la cual el usuario se dirige. Para seleccionar la zona solo es cuestión de posicionar el mouse sobre el nombre de la zona a la cual el usuario quiere ir y presionar el botón izquierdo. Después de seleccionar la zona, se muestran todas la plazas que existen en la zona seleccionada. Aquí se selecciona la plaza a la cual se quiere accesar. La plaza se selecciona de la misma forma que con las zonas. Ya que se selecciona la plaza, se muestra una lista con los registros de los números de guía que pertenecen a la fecha actual, y se activan las opciones restantes, las cuales permiten manipular la información de la plaza. Al entrar a una plaza en específico el programa cliente mantiene una conexión con el servidor por medio de sockets utilizando el protocolo TCP y utili zando el puerto 1000, Esta conexión termina cuando el cliente se cambia de plaza, cuando realiza una búsqueda en todas las plazas o cuando se sale del sistema. Las operaciones que se pueden hacer después de seleccionar la zona y la plaza son las siguientes: - Agregar un registro a la base de datos de la plaza seleccionada. - Borrar un registro de la base da datos. - Modificar un registro de la base da datos. - Pedir todos los registros de la base da datos - Pedir los registros que se encuentren en una determinada fecha. El menú Comandos cuenta con las siguientes opciones Agregar Registro: Permite introducir en la base de datos de la plaza un nuevo registro. Esto se hacer por medio de la siguiente pantalla: Borrar Registro: Borra el registro que esté seleccionado en la lista de registros. Al entrar a esta opción el sistema pregunta al usuario si esta seguro de querer borrarlo, solo borrará el registro si el usuario dice que si. Modificar Registro: Permite hacerle cambios al registro que esté actualmente seleccionado. Solo se pueden modificar los campos "Tipo" y "Subtipo", (no es posible modificar el campo del número de guía). NOTA: Los dos campos (Tipo, Subtipo) que aparecen en cada registro son los que indican el estado actual del paquete en la plaza. Tipo Subtipo 1 2 Explicación 0 El paquete esta en la plaza 1 El paquete entró y salió de la plaza 2 El paquete se entrega en la oficina de Estafeta 3 El paquete se entrega a domicilio 0 El paquete está en un reten El menú Buscar cuenta con dos nuevas opciones: Información por Fecha: Permite visualizar los registros que pertenezcan a una determinada fecha, Se selecciona la fecha por medio de la siguiente pantalla. Ya que el usuario selecciona la fecha y presiona el botón “Aceptar”, solo se mostrarán en pantalla los registros que hayan sido registrados en la fecha que se selecciono. Todos los Registros: Muestra todos los registros que tenga la base de datos de la plaza. El menú administración cuenta con dos opciones: Direcciones IP de las plazas: Aquí permite configurar los servidores que estarán activos en el sistema. Para Agregar un registro primero se presiona el botón "Agregar", después de presionarlo debemos de llenar los campos y presionar el botón "Actualizar". Para modificar un registro solo hacemos las modificaciones en los campos y presionamos el botón "Actualizar". Para borrar un registro nos posicionamos en el registro que queremos borrar por medio de la barra de desplazamiento y presionamos el botón "Eliminar". Usuarios: En este apartado se captura la información de los usuarios que tendrán acceso al sistema. Para Agregar un registro primero se presiona el botón "Agregar", después de presionarlo debemos de llenar los campos y presionar el botón "Actualizar". Para modificar un registro solo hacemos las modificaciones en los campos y presionamos el botón "Actualizar". Para borrar un registro nos posicionamos en el registro que queremos borrar por medio de la barra de desplazamiento y presionamos el botón "Eliminar". Para salir del sistema entramos al menú salir y seleccionamos la opción "Abandonar el sistema". Todas las solicitudes y respuestas por parte de los clientes y los servidores se forman en una cadena que se envía por medio del socket. Esta cadena se forma de la siguiente manera: "operacion;argumento1,argumento2,argumento3,..." Dependiendo de la operación, el cliente o el servidor sabrán cuantos argumentos contiene la cadena. SEGURIDAD Cada usuario para entrar al sistema (en el cliente) debe de contar con un nombre de usuario y un password, los cuales le indican al programa el tipo de usuario que está entrando al sistema. Existen dos niveles de usuario: los que pueden visualizar y hacer actualizaciones en las bases de datos de las plazas y los usuarios que solo pueden hacer búsquedas de ciertos números de guía. Por medio del siguiente código se verifica si el usuario esta registrado en el sistema. Adodc1.RecordSource = "select * from usuarios where usuario = '" & txtUserName & "'" Adodc1.Refresh If Adodc1.Recordset.EOF Then MsgBox "La contraseña no es válida. Vuelva a intentarlo", , "Inicio de sesión" txtPassword.SetFocus SendKeys "{Home}+{End}" Exit Sub Else If txtPassword = Adodc1.Recordset.Fields(1) Then Menu.TipoU.Caption = Trim(Adodc1.Recordset.Fields(3)) Menu.Show LoginSucceeded = True Me.Hide Else MsgBox "La contraseña no es válida. Vuelva a intentarlo", , "Inicio de sesión" txtPassword.SetFocus SendKeys "{Home}+{End}" End If End If Y por medio del siguiente se verifica el tipo de usuario que entro Private Sub Form_Activate() BusquedaN = 0 If Val(TipoU) = 2 Then MIrenEspecifico.Visible = False Madministracion.Visible = False Toolbar1.Buttons.Item(5).Visible = False End If End Sub Dentro del programa cliente existe un apartado para dar de alta los diferentes usuarios que podrán accesar al sistema el cual ha sido explicado con anterioridad. Para la transferencia de información a través de los clientes y servidores se implementa un algoritmo de codificación de información el cual es explicado a continuación. Algoritmo UU-encoding - Permite la transformación de los datos binarios en una secuencia de caracteres imprimibles. - Toma los datos binarios y l o s s e p a r a e n b l o q u e s d e 3 b y t e s . C a d a b l o q u e contiene 24(8*3) bits. De estos 24 bits se extraen 6 bits. Después de esto a cada byte se le suma 32 (valor ASCII del espacio). El byte, el cual consiste de solo 6 bits puede mostrar solo 64 valores al contrario de lo 128 que se puede mostrar con 8 bits. Este algoritmo crece la infomación que se manda en un 33% (Chat,2002 Marks, 1992) Ejemplo: A continuación se muestran las funciones que realizan el proceso de codificar y decodificar la información: Public Function Codificar(Cadena As String) As String Dim intFile As Integer Dim intTempFile Dim lFileSize As Integer As Long Dim strFileName Dim strFileData As String As String Dim lEncodedLines As Long Dim strTempLine As String Dim i As Long Dim j As Integer Dim strResult As String strResult = "begin 664 " + vbLf lFileSize = Len(Cadena) lEncodedLines = lFileSize \ 45 + 1 strFileData = Space(45) For i = 1 To lEncodedLines If i = lEncodedLines Then strFileData = Space(lFileSize Mod 45) End If strFileData = Mid(Cadena, (i - 1) * 45 + 1, 45) strTempLine = Chr(Len(strFileData) + 32) If i = lEncodedLines And (Len(strFileData) Mod 3) Then strFileData = strFileData + Space(3 - (Len(strFileData) Mod 3)) End If For j = 1 To Len(strFileData) Step 3 '1 byte strTempLine = strTempLine + Chr(Asc(Mid(strFileData, j, 1)) \ 4 + 32) '2 byte strTempLine = strTempLine + Chr((Asc(Mid(strFileData, j, 1)) Mod 4) * 16 _ + Asc(Mid(strFileData, j + 1, 1)) \ 16 + 32) '3 byte strTempLine = strTempLine + Chr((Asc(Mid(strFileData, j + 1, 1)) Mod 16) * 4 _ + Asc(Mid(strFileData, j + 2, 1)) \ 64 + 32) '4 byte strTempLine = strTempLine + Chr(Asc(Mid(strFileData, j + 2, 1)) Mod 64 + 32) Next j strTempLine = Replace(strTempLine, " ", "`") strResult = strResult + strTempLine + vbLf strTempLine = "" Next i strResult = strResult & "`" & vbLf + "end" + vbLf Codificar = strResult End Function Public Function Decodificar(strUUCodeData As String) As String Dim i As Integer Dim vDataLine As Variant Dim vDataLines As Variant Dim strDataLine As String Dim intSymbols As Integer Dim intFile As Integer Dim strTemp As String Dim CadDecod As String CadDecod = "" strTemp = "" If Left$(strUUCodeData, 6) = "begin " Then strUUCodeData = Mid$(strUUCodeData, InStr(1, strUUCodeData, vbLf) + 1) End If If Right$(strUUCodeData, 5) = vbLf + "end" + vbLf Then strUUCodeData = Left$(strUUCodeData, Len(strUUCodeData) - 10) End If vDataLines = Split(strUUCodeData, vbLf) For Each vDataLine In vDataLines strDataLine = CStr(vDataLine) intSymbols = Asc(Left$(strDataLine, 1)) - 32 strDataLine = Mid$(strDataLine, 2) strDataLine = Replace(strDataLine, "`", " ") For i = 1 To Len(strDataLine) - 1 Step 4 '1 byte strTemp = strTemp + Chr((Asc(Mid(strDataLine, i, 1)) - 32) * 4 + _ (Asc(Mid(strDataLine, i + 1, 1)) - 32) \ 16) '2 byte strTemp = strTemp + Chr((Asc(Mid(strDataLine, i + 1, 1)) Mod 16) * 16 +_ (Asc(Mid(strDataLine, i + 2, 1)) - 32) \ 4) '3 byte strTemp = strTemp + Chr((Asc(Mid(strDataLine, i + 2, 1)) Mod 4) * 64 +_ Asc(Mid(strDataLine, i + 3, 1)) - 32) Next i strTemp = Left(strTemp, intSymbols) CadDecod = CadDecod + strTemp strTemp = "" Next Decodificar = CadDecod End Function Otras Características del sistema Réplicas El sistema cuenta con un sistema de réplica el cual permite que exista la disponibilidad del mismo. Cada vez que se hacen actualizaciones en alguna base de datos también se hacen en su réplica, esto permite que en caso de que algún servidor no esté funcionando exista un respaldo de la información que permita al menos a los usuarios consultar la información de las bases de datos. Cuando el cliente intenta conectarse a un servidor y este no responde en un determinado tiempo, el cliente se trata de conectar con el servidor que tiene la replica de la base de datos. Bloqueos Es necesario implementar bloqueos para evitar la inconsistencia de los datos almacenados. Cada vez que un usuario supervisor va a modificar un registro o a borrarlo se bloquea el registro para que los demás usuarios no puedan hacerle modificaciones al mismo registro, después de que se modificó el registro se les manda a todos los usuario la información modificada. ANEXO 1 Seguridad y Cifrado de la Información Seguridad y Cifrado de la Información Arquitectura de Redes Estructura en niveles El modelo OSI de ISO (International Standards Organization) surge, en el año 1984, ante la necesidad imperante de interconectar sistemas de procedencia diversa -diversos fabricantes-, cada uno de los cuales empleaba sus propios protocolos para el intercambio de señales. El modelo OSI está compuesto por una pila de 7 niveles o capas, cada uno de ellos con una funcionalidad específica, para permitir la interconexión e interoperatividad de sistemas heterogéneos. La utilidad radica en la separación que en él se hace de las distintas tareas que son necesarias para comunicar datos entre dos sistemas independientes. Num. Nivel Función 7 Aplicación Datos normalizados 6 Presentación Interpretación de los datos 5 Sesión Diálogos de control 4 Transporte Integridad de los mensajes 3 Red Encaminamiento 2 Enlace Detección de errores 1 Físico Conexión de equipos Tabla 1 Niveles OSI de ISO Los tres niveles inferiores están orientados al acceso del usuario - comunicaciones de datos-; el cuarto nivel al transporte extremo a extremo de la información, y los tres superiores a la aplicación. Nivel de Presentación El nivel de presentación se ocupa de la sintaxis de los datos, es decir la representación de los datos extremo a extremo. Así pues es responsable de alcanzar un acuerdo en los códigos y formatos que se usarán en el intercambio de datos de aplicación durante una sesión. El nivel de presentación puede ser responsable del formateo de chorros de datos para su correcta salida a una impresora o a una determinada pantalla. También puede realizar compresión de datos y descompresión. Por lo tanto incluye los aspectos de: • Conversión • Cifrado • Compresión de datos Cuando se establece comunicación entre dos entidades o capas de aplicación se producen tres representaciones sintácticas de los datos transferidos entre dichas entidades de aplicación: • La sintaxis usada por la entidad que origina los datos, entidad emisora. • La sintaxis usada por la entidad que los recibe los datos o entidad receptora • La sintaxis usada por el proceso de transferencia, es decir como son representados en el cable (mientras viajan de una aplicación a otra). Representación de datos Los diferentes ordenadores tienen diferentes representaciones internas para los datos. Estas representaciones son establecidas por los fabricantes en su momento y que ahora les es muy difícil de cambiar, dado que tienen que mantener la compatibilidad con sus antiguos sistemas. Las redes informáticas permiten establecer comunicaciones entre los distintos ordenadores sin tener en cuenta su arquitectura interna. Por ello el modelo de referencia OSI de ISO establece que en la capa de presentación se realice la conversión entre las representaciones internas de los equipos conectados. Para resolver este problema se han propuesto varias alternativas: • El extremo transmisor realiza la conversión. • El extremo receptor realiza la conversión. • Establecer un formato normalizado y que cada uno de los extremos realice la conversión hacia y desde este formato normalizado de red. Compresión de datos El costo por utilizar una red depende, normalmente de la cantidad de datos trasmitidos. Por lo tanto y a fin de rebajar la factura se utiliza la compresión de datos antes de expedirlos al receptor para reducir la cantidad de datos a transmitir. La compresión de datos está muy relacionada con la representación de los datos, ya que, lo que intentamos es transmitir la misma información, con menor número de bytes, representada mediante algún código especial pero con el mismo significado. Seguridad y Confidencialidad en las Redes Con el desarrollo de las redes actuales las medidas de seguridad que se tienen que aplicar, para evitar al máximo que los datos emitidos sean interceptados por personas no autorizadas, se han disparado. Existe pues la necesidad de establecer algún tipo de mecanismo de cifrado para conseguir que los datos sean ininteligibles para aquellos que lo intercepten sin autorización. La seguridad de los datos en la red debe contemplar los siguientes aspectos: • Proteger los datos para que no puedan ser leídos por personas que no tienen autorización para hacerlo. • Impedir que las personas sin autorización inserten o borren mensajes. • Verificar al emisor de cada uno de los mensajes. • Hacer posible que los usuarios transmitan electrónicamente documentos firmados. El cifrado es un método que permite llevar a cabo los objetivos descritos. El cifrado, no obstante, no es un elemento que pertenece en exclusiva a la capa de presentación sino que podemos encontrarlo en otras capas. Cifrado de enlace En este caso el cifrado se realiza en la capa física. La ventaja del cifrado de enlace es que tanto las cabeceras como los datos se cifran. Cifrado en transporte Si introducimos el cifrado en la capa de transporte ocasionamos que el cifrado se realice en la sesión completa. Cifrado en presentación Es quizás una solución más elaborada ya que el cifrado es sufrido sólo por aquellas partes de los datos que sean consideradas necesarias, consiguiendo de este modo que la sobrecarga del proceso de cifrado sea menor. Análisis de tráfico Otro aspecto relacionado con la seguridad en las redes es el conocimiento de los patrones de tráfico, es decir, se estudia la longitud y frecuencia de los mensajes. Con este análisis se consigue determinar los lugares donde se está produciendo un intenso movimiento de datos. De todas maneras es fácil engañar a este análisis introduciendo en el mensaje grandes cantidades de datos de relleno o incluso enviando mensajes inútiles. Seguridad en las redes Cada vez es mayor el número de personas dotadas de los suficientes conocimientos como parar causar daño al sistema informático de una organización. Debido a esta tendencia, cada vez se establecen mayores medidas preventivas y se dedica más atención a la seguridad en las redes. Tipos de violación de los sistemas de seguridad Una de las formas más usuales y sencillas de quebrantar la seguridad es el falseamiento, es decir, la modificación previa a la introducción de los datos en el sistema informático o en una red. Otra forma de violación de la seguridad es el ataque ínfimo "salami attack", que consiste en la realización de acciones repetitivas pero muy pequeñas, cada una de las cuales es casi indetectable. Una de las formas más eficaces de violación de la seguridad en una red, es la suplantación de personalidad, que aparece cuando un individuo accede a una red mediante el empleo de contraseñas o de códigos no autorizados. La contraseña suele obtenerse directamente del usuario autorizado de la red, muchas veces sin que éste se dé cuenta. Hay incluso algunos sistemas de acceso a la red que pueden burlarse utilizando un ordenador para calcular todas las posibles combinaciones de contraseñas. Una forma de combatir el empleo no autorizado de contraseñas consiste en instalar un sistema de palabras de acceso entre el canal de comunicaciones y el ordenador. Este dispositivo, un vez que recibe la contraseña, desconecta automáticamente la línea, consulta en una tabla cuál es el número de teléfono asociado a ella, y vuelve a marcar para conectar con el usuario que posee el número de teléfono designado. Con este mecanismo, el intruso ha de disponer de la palabra de acceso o contraseña, y ha de encontrarse físicamente en el lugar en el que se supone que debe estar el usuario autorizado. No es una solución muy buena ya que hace verdaderos estragos en funciones como la redirección de llamadas hacia otros números o contestación automática. Las redes también pueden ser violadas mediante lo que se conoce como "puertas traseras". Este problema se producirá cuando los dispositivos o los programas de seguridad sean inadecuados o incluyan errores de programación, lo que permitirá que alguien pueda encontrar el punto vulnerable del sistema. Las redes también se ven comprometidas como consecuencia de la intercepción y monitorización de los canales. Así, por ejemplo, las señales de microondas o de satélites pueden interceptarse, si el intruso encuentra la frecuencia adecuada. Métodos de protección Para garantizar la confidencialidad de la información se utilizan las técnicas de cifrado de claves. Una clave es un algoritmo software o un dispositivo hardware que codifica y bloquea el acceso a la información. Sólo la misma clave o una clave asociada puede descifrar la información. Consideremos, por ejemplo, el envío de datos confidenciales a través de un enlace telefónico. Se pueden utilizar técnicas de cifrado para que los datos sean confidenciales, pero si se usa una clave para cifrar los datos, ¿cómo hacer que la clave llegue al receptor para que así pueda descifrarlos?. Si se envía la clave a través de la línea, entonces estaría a disposición de cualquiera que estuviese conectado. Se podría enviar la clave a través de una línea diferente o utilizar un servicio de distribución urgente, pero, ¿se puede estar completamente seguro de que la clave llegó a su destino sin ser interceptada?. Una solución consiste en intercambiar las claves antes de llevar a cabo las transmisiones. Un banco podría hacerlo así para comunicarse con sus sucursales. Pero ¿qué ocurre si lo que se quiere es enviar un mensaje confidencial aislado a un receptor que no se conoce?. Las técnicas de cifrado de claves públicas proporcionan una solución. Hay distintas técnicas que proporcionan seguridad en entornos de informática distribuida, tales como: • Servicios de Autentificación. • Servicios de Autorización. • Servicios de Confidencialidad. • Servicios de Integridad. • No Repudiación. Cifrado con claves privadas Una técnica muy usada para aumentar la seguridad de las redes informáticas es el cifrado. Esta técnica convierte el texto normal en algo ininteligible, por medio de algún esquema reversible de codificación desarrollado en torno a una clave privada que sólo conocen el emisor y el receptor. El proceso inverso es el descifrado , mediante el cual el texto en clave vuelve a convertirse en texto legible. El cifrado suele tener lugar en el emisor, mientras que el descifrado suele realizarse en el receptor. El cifrado se clasifica en dos tipos: cifrado por sustitución y cifrado por transposición. * Sustitución : Es la forma más sencilla de cifrado. Consiste en reemplazar una letra o un grupo de letras del original por otra letra o grupo de letras. Uno de los esquemas más sencillos es el CIFRADO DE CÉSAR, en este mecanismo cada letra del alfabeto es sustituida por otra. Texto legible: ABCDEFGHIJKLMNOPQRSTUVWXYZ Letras de sustitución: FGQRASEPTHUIBVJWKLXYZCONMD Este tipo de cifrado se conoce como sustitución monoalfabética, ya que cada una de las letras se sustituye por otra del mismo alfabeto. El descifrado final del código se convierte en algo relativamente sencillo, sobre todo si se utiliza un ordenador de alta velocidad. Hay otros métodos de cifrado por sustitución más eficaces. Así, por ejemplo, algunos sistemas usan la sustitución polialfabética, en la cual existen varios alfabetos de cifrado que se emplean en rotación. Una variación del cifrado por sustitución consiste en utilizar una clave más larga que el texto legible. Se usa como clave una secuencia aleatoria de bits, que se cambia periódicamente. La principal desventaja de todas las estructuras basadas en una clave privada es que todos los nodos de la red han de conocer cuál es la clave común. La distribución y confidencialidad de las claves acarrea algunos problemas administrativos y logísticos. * Cifrado por transposición . Es un método criptográfico más sofisticado. En él las claves de las letras se reordenan, pero no se disfrazan necesariamente. La clave utilizada para el ejemplo es SEGURIDAD, que no es demasiado buena para un sistema de seguridad. La clave se emplea para numerar las columnas. La columna 1 se coloca bajo la letra de la clave más próxima al comienzo del alfabeto, es decir, A, B, C, Si la clave incluye alguna letra repetida, puede adoptarse el criterio de numerar de izquierda a derecha. A continuación se escribe el texto legible como una serie de renglones que se colocan debajo de la clave. Después se lee el texto cifrado por columnas, empezando por aquella columna cuya letra clave sea la más próxima al principio del alfabeto. Así, la frase "compra barato vende caro y hazlo hoy" quedará como sigue: S E G U R I D A D 8 4 5 9 7 6 2 1 3 C O M P R A B A R A T O V E N D E C A R O Y H A Z L O H O Y A B C D E F Y el texto cifrado será el siguiente: AELEBDZDRCOFOTROMOOYANACREHBCAAHPVYA El Algoritmo DES En 1977, el Departamento de Comercio y la Oficina Nacional de Estándares de Estados Unidos publicaron la norma DES (estándar de cifrado de datos, publicación 46 del FIPS ** ). DES un esquema de cifrado de claves privadas. El algoritmo DES es un sistema monoalfabético que fue desarrollado en colaboración con IBM y se presentó al público con la intención de proporcionar un algoritmo de cifrado normalizado para redes de ordenadores. DES se basa en el desarrollo de un algoritmo de cifrado que modifica el texto con tantas combinaciones que el criptoanalista no podría deducir el texto original aunque dispusiese de numerosas copias. La filosofía del algoritmo DES consiste en llevar a cabo varias etapas de permutación y sustitución. DES utiliza una clave de 64 bits, de los cuales 56 son utilizados directamente por el algoritmo DES y otros 8 se emplean para la detección de errores. Existen unos setenta mil billones de claves posibles de 56 bits. Evidentemente para romper una clave semejante sería necesaria una enorme cantidad de potencia de cálculo. Sin embargo, no es una tarea imposible. Los ordenadores de alta velocidad, mediante análisis estadísticos, no necesitan emplear todas las posibles combinaciones para romper la clave. A pesar de ello, el objetivo de DES no es proporcionar una seguridad absoluta, sino únicamente un nivel de seguridad razonable para las redes orientadas a aplicaciones comerciales. Este algoritmo ha sido motivo de gran controversia parte de ella se debe al secreto que rodeó a su desarrollo. IBM trabajó en colaboración con la Agencia Nacional de Seguridad de Estados Unidos y ambas guardaron el secreto de los aspectos del diseño del algoritmo. Cifrado con claves públicas Muchos sistemas comerciales emplean métodos de cifrado / descifrado basados en claves públicas. Este sistema está basado en el uso de claves independientemente para el cifrado y para el descifrado de los datos. La particularidad y enorme ventaja es que la clave y el algoritmo de cifrado pueden ser de dominio público, siendo la clave de descifrado la que se mantiene en secreto. Este método elimina los problemas logísticos y administrativos relacionados con la distribución y gestión de las claves públicas. Los sistemas basados en claves públicas no son tampoco infalibles ya que también pueden romperse. En cualquier caso, y para evitar que la clave pueda ser detectada, es posible generar una clave distinta para cada transmisión, o de una forma más realista, a intervalos periódicos o aleatorios. El cambio de clave frecuente aumenta la seguridad de las transmisiones, ya que el posible intruso deberá intentar romper la clave cada vez que ésta cambia. Puede incluso añadirse otro nivel de seguridad, utilizando un sistema de claves privadas para cifrar las claves públicas, es decir, pueden emplearse dos niveles de cifrado para los datos más delicados. Recomendaciones ISO relativas a la seguridad El Organismo Internacional de Normalización (ISO) recomienda establecer el cifrado en el nivel de presentación de la configuración según el modelo ISA. Estas son las razones que aduce el ISO para ello: 1. Es importante colocar los servicios de cifrado en un nivel superior de red, para poder simplificar el cifrado de extremo a extremo, y como el nivel más bajo donde se dan los servicios extremo a extremo es en el nivel de transporte , es por ello, que el cifrado se ha de realizar en un nivel superior a él. 2. Los servicios de cifrado han de estar en un nivel superior al de transporte si se quiere minimizar la cantidad de programas a los que ha de confiarse el texto legible. O sea, cuantos menos programas manejen el texto vulnerable mejor, lo que nos lleva a deducir que el cifrado se debe realizar en el nivel superior al de transporte. 3. El cifrado ha de establecerse por debajo del nivel de aplicación, ya que de lo contrario las transformaciones sintácticas, sobre los datos cifrados serían bastantes difíciles. Además, si el nivel de presentación se llevan a cabo transformaciones sintácticas, éstas han de tener lugar antes de que se realice el cifrado. 4. También se ha tenido en cuenta que el cifrado de datos se puede hacer de forma selectiva, el organismo de ISO cree que donde mejor puede hacerse esta selección es en el nivel de presentación o en uno superior, ya que por debajo de este nivel no existe constancia de la división en campos de la corriente de datos. 5. Aunque el cifrado se puede realizar en cualquier nivel, la protección adicional que obtienen los datos de usuario puede no compensar la sobrecarga de trabajo que supone el cifrado. Limitaciones de la Criptografía Los algoritmos criptográficos tienden a degradarse en el tiempo. A medida que pasa el tiempo los algoritmos de encriptación se van haciendo más fáciles de quebrar debido al avance en la velocidad y potencia de los equipos de computación. Todos los algoritmos criptográficos son vulnerables a los ataques de fuerza bruta - tratar sistemáticamente con cada posible clave de encriptación, buscando colisiones para funciones hash, factorizando grandes números, etc.- la fuerza bruta se hace más fácil a medida que pasa el tiempo. En 1977 Martin Gardner escribió que los números de 129 dígitos nunca serían factorizados, en 1994 se factorizó uno de esos números. Además de la fuerza bruta están los avances en las matemáticas fundamentales que permiten nuevos métodos y técnicas de criptoanálisis. ANEXO 2 Diagramas del Flujo de Información por Usuario BIBLIOGRAFÍA Aguirre Jorge Ramió (2000). Aplicaciones Criptográficas, Proyectos y Sistemas Informáticos de la Universidad Politécnica de Madrid, España Alberto C. (1999, 20 de Enero). Diseño Distribuido: http://members.tripod.com/aguamar/dbinternet/dbdd.html Besso Javier Alberto; Borghello Cristian Fabian (1999). El estado actual de la tecnología de las Bases de Datos Distribuidas: http://comunidad.ciudad.com.ar/argentina/entre_rios/dbinternet/sisdis5.htm Besso Javier Alberto; Borghello Cristian Fabian (2000). Los Sistemas Distribuidos: http://www.dbinternet.com.ar/sistdis.htm Black Uyless (1998). Redes de Ordenadores. Protocolos, Normas e Interfases, Rama Bohnhoff P.; Janssen R.; Martin R. (1994). Fundamentos Cliente/Servidor. IBM. Borghello Cristian Fabian, Besso Javier Alberto (1999). Los enfoques Top-Down y Bottom-Up: http://comunidad.ciudad.com.ar/argentina/entre_rios/dbinternet/metodo1.htm Chat Forum (2002). How to UU-Encode a Large File and Send it in Parts: http://email.about.com/library/weekly/aa112299-1.htm De Miguel Tomas P. (1999, 18 de Enero). Bases de Datos Distribuidas: http://greco.dit.upm.es/~tomas/cursos/bd/18dist/index.htm Eddon Guy; Eddon Henry (1997). Active X Visual Basic 5.0, Mc Graw Hill Ender (5 de Febrero de 2001). Lan´s y Ethernet: http://www2.adi.uam.es/~ender/tecnico/tutorial.html Estafeta (2000).http://www.estafeta.com.mx GSC Grupo de Sistemas y Comunicaciones - Universidad Rey Juan Carlos (2001, 11 de Septiembre). Correo Electrónico: http://gsyc.escet.urjc.es/docencia/cursos/fse-servidores/transpas/node7.html Gurowich Nathan; Gurowich Orl (1999), Aprendiendo Visual Basic 5 en 21 Dias, Prentice Hall Harry P. (1999, 29 de Julio). Bases de datos Distribuidas: http://www.angelfire.com/ar/hary/bdistribuidas.html Hernández Barbosa Oscar Daniel (1996). Apuntes de la materia, Bases de Datos Distribuidas, Instituto Tecnológico de Colima Huidobro José M. (1999). Comunicaciones, Paraninfo Jiménez Raúl (2000, 19 de Marzo). Mandar E-mails con el winsock: http://members.es.tripod.de/vbzone/docsmtp.htm Lewis T. G. (1995) Where is client/server software headed? IEEE Computer,. Marks Richard (1992). Documentation for UUEncode-Decode: http://membrane.com/synapse/library/uuenc.html Mowbray T. J.; Zahavi R. (1995). The Essential CORBA. John Wiley & Sons, Inc. Navarro Juan E. (1998, 1 de Julio). Sistemas Distribuidos: http://www2.ing.puc.cl/~jnavarro/iic2332/apuntes/apuntes_11.html Orfali R.; Harkey D.; Edwards J. (1996). The Essential Distributed Objects Survival Guide . John Wiley & Sons, Inc.. Poleo Carmelo (2000). Internet: http://www.monografias.com/trabajos6/intert/intert.shtm Pujolle Guy (1999). Telemática, Paraninfo Purser Michael (1997). Redes de TeleComunicación y Ordenadores, Díaz de Santos, S.A. Ramos N. (1999). Comunicación y Redes: http://anakena.diinf.usach.cl/~bibinfo/ramos/com_y_redes/cyr.html Rodríguez J. (1999, 23 de Mayo). Diseño de Bases de Datos Distribuidas: http://members.es.tripod.de/jrodr35/index.htm Rossenberg J. (1997). Teach Yourself CORBA in 14 Days. Macmillan Computer Publishing. Rueda M (1999). Seminario de Bases de Datos Distribuidas: http://www.fie.us.es/~mrueda/articulos/seminario-2.html Serrano Adriana (2001). Intranets: http://www.geocities.com/ahh_miedo/intranets.htm Sheldom Tom (1995). Enciclopedia Lan Times De Redes (NetWorking), McGraw-Hill Tanenbaum Andrew S. (1995). Redes de Ordenadores, Prentice Hall Tomas Jesús García (1998). Sistemas Y Redes Teleinformáticas, Sepa UAEM Universidad Autónoma del Estado de México (2001). Panorama de los Sistemas de Bases de Datos Distribuidos: http://www.uaemex.mx/publica/informatica/boletin/panorama.htm Ulternet (1997). Asesoria en Lan´s y Wan´s: http://www.ulter.net/acerca/aseso.htm UPM Universidad Politécnica de Madrid (1999). Sistemas Distribuidos: http://jungla.dit.upm.es/~rdor/tema3/paq8.htm UPM Universidad Politécnica de Madrid (2000). Bases de Datos Distribuidas: http://www-oei.eui.upm.es/Asignaturas/BD/Distribuidas.htm Vela Jose Emiro (1999). Introducción a Redes: http://www.monografias.com/trabajos/introredes/introredes.shtml Zaslavsky Arkady (2002, 22 de Febrero). Distributed Databases: http://www.ct.monash.edu.au/~azaslavs/cot5200_link/ddb-l-03s/index.htm CONCLUSIONES CONCLUSIONES El tema principal de esta tesis son los sistemas de bases de datos distribuidas, y es satisfactorio mencionar que se lograron implementar los siguientes objetivos de estos sistemas; tener autonomía local, no depender de un sitio central, ofrecer operación continua, transparencia de localización, transparencia de fragmentación, transparencia de replica, transparencia de red; así como también se logra hacer un trabajo en un tema de interés personal. Los objetivos de la tesis se cumplieron, ya que se logro desarrollar el prototipo cumpliendo con los conceptos de los sistemas de bases de datos distribuidas y se lograría mejorar los procesos de la empresa, dando así una mejor respuesta en la actualización de la información y lo más importante, se lograría tener la información disponible al momento en que está se genera, sin importar el lugar en el que se esta generando. Para que se llegara a instalar este sistema se tendría que proponer, primero, al gerente general de la empresa en Colima para que éste lo propusiera con sus superiores y después vendría una evaluación por parte del grupo de desarrollo de la empresa, lo cual en mi particular punto de vista sería muy difícil que se aprobara, por eso es que esta tesis propone el sistema como un prototipo, aunque sería importante que lo tomaran en cuenta ya que les ofrece muchas facilidades y muchas ventajas en comparación son su sistema actual. Existe un pequeño inconveniente con este prototipo, trabaja bajo el sistema operativo Windows, la empresa cuenta en cada plaza con servidores UNIX lo cual tendría como consecuencia que se cambiara de sistema operativo, servidores Windows NT y terminales con Windows 95, 98, 2000 o ME, aunque no sería necesaria la adquisición de un servidor muy sofisticado ya que el equipo que tienen, cuenta con la capacidad suficiente para que soporte este sistema. Con este prototipo, se mejoraría el sistema actual y los procesos que están implementados en la empresa Estafeta para el control de los números de guía de paquetes. Así también se lograría optimizar su infraestructura ya establecida (red privada), y no sería necesario implementar algún otro sistema de comunicación entre las distintas plazas de la empresa. La implementación de éste prototipo permitiría a los administradores y personas encargadas de atender a los clientes, saber en cualquier momento y en cualquier plaza, donde está un paquete en especial, lo cual dará lugar a que la información que soliciten los clientes sea la más precisa referente a la ubicación de su paquete. El prototipo reduciría tiempos de espera en la actualización de la información, los encargados de los departamentos de sistemas de las diferentes plazas ya no tendrían que esperar a que la central les envié la información actualizada de la ubicación de los paquetes. El desarrollo de este prototipo dio lugar a que se aplicara un gran número de los temas vistos en clase (redes, comunicaciones, programación, etc), abarcando en un gran porcentaje el propósito de la maestría.