Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN MÉXICO, 2009. “A�ÁLISIS COMPARATIVO E�TRE LDAP Y LAS BASES DE DATOS RELACIO�ALES” T R A B A J O E S C R I T O E� LA MODALIDAD DE CRÉDITOS DE MAESTRÍA QUE PARA OBTE�ER EL TÍTULO DE: I�GE�IERO E� COMPUTACIÓ� P R E S E � T A : M I R I A M G Ó M E Z O R O Z C O ASESOR: M. en C. MARCELO PÉREZ MEDEL UNAM – Dirección General de Bibliotecas Tesis Digitales Restricciones de uso DERECHOS RESERVADOS © PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor. A mi madre por tu infinita paciencia, gracias por no perder la fe en mí A mi padre por enseñarme que con perseverancia se logran las metas A mi hermano por estar siempre conmigo en las malas y en las peores A mi esposo por ser mi gran amigo, sostén y ejemplo a seguir A toda las personas que hicieron posible este trabajo escrito, gracias. ÍNDICE INTRODUCC iÓN CAPíTULO 1 SERVICIOS DE DIRECTO RIOS 1.1 Conceptos básicos 1.1.1 Descripción 1.1.2 Características de los servicios de directorios l.l.3 HisTOria 1.2 Descripción de LDAP l. 2.1 Modelo de infonnación 1.2.2 Modelo de nombrado l. 2.3 Modelo funcional l. 2.4 Modelo de seguridad 1.3 Herramielllas de LDAP l.3 .1 Archivos LDIF l.3 .2 Búsquedas 1.3.3 Acmalizaciones 1.3.4 Control de acceso 1.3.5 Replicación de datos CAPiTULO 2 BASES DE DATOS 2.1 Conceptos básicos de bases de datos 2.1.1 Objetivo de los sistemas de bases de datos 2.2 Alllecedellles de las bases de dalos relacionales 2.3 Bases de dalOs relacionales 2.3.1 Modelo Relacional 2.4 Sistema Manejador de Bases de Datos (SMBD) 2.4.1 FUllcionamiellTo cOllcepmal de un RDB MS 2.4 .2 Componentes de un RDB MS 2.4 .3 SQL 2.5 Seguridad 2.5.1 Segmidad en bases de daTOs 2.5.2 Niveles de seguridad 2.5.3 Roles y perfiles CAPíTULO 3 HERRAMIENTAS UTILIZADAS 3.1 OpenLdap 3.2 Sun One DirecTOr)' Se rver 3 6 7 8 10 11 12 12 14 16 18 19 19 20 23 23 23 29 30 31 33 34 34 38 39 41 42 45 45 46 46 47 48 49 3.3 Oraele 3.4 MySQL 3.5 Postgres 3.6 SQL Sen 'er CAPiTULO 4 DESARROllO DE LAS PRUEBAS 4.1 Especificaciones y arquitecmra del selv idor de pmebas 4.2 Condiciones Iniciales 4.3 Pmebas en LDAP 4.4 Pmebas en las bases de datos relacionales CAPíTULO 5 ANÁLIS IS DE RESULTADOS CAPíTULO 6 CONCLUSIONES ANEXO BIBLIOGRAFÍA 50 51 53 56 58 59 60 61 64 65 68 71 80 3 INTRODUCCIÓN 4 Actualmente la información es uno de los activos más importantes en la sociedad, y la necesidad de contar con ésta se ha incrementado en todas las comunidades del mundo, las universidades, estudiantes, académicos, editores, proveedores así como distintos sectores. La complejidad en el tema se magnifica cuando el volumen de información es considerable, así como, la diversidad de usuarios con diferentes necesidades. Es por tal motivo, que algunas organizaciones se han dado a la tarea de desarrollar soluciones para resolver estos requerimientos, enfatizando en la generación de repositorios o bases de datos que permitan mantener la información actualizada, íntegra y disponible. Los sistemas que se han creado para cubrir las diversas necesidades de cada usuario, a menudo se topan con obstáculos de desempeño ya que no se selecciona de manera adecuada la plataforma o infraestructura sobre la cual se construirá el sistema en relación a los repositorios de datos. A partir de estas necesidades surge el interés de comenzar una investigación que da lugar al presente trabajo escrito, el cual es una fracción de la tesis de maestría que se está elaborando en conjunto con la Dra. Amparo López Gaona, el cual tiene como objetivo principal, cuantificar el desempeño de diferentes manejadores de bases de datos relaciones como son Oracle, SQL Server, Postgres y MySQL en comparación con software de servicios de directorios como son OpenLDAP y Sun Directory Server, para establecer similitudes y diferencias en el manejo de la información. CONTRIBUCION Y RELEVANCIA El presente documento, por otra parte, también cumple con un segundo objetivo no menos importante, el cual es brindar a los programadores y diseñadores de sistemas, un documento técnico, que contenga datos estadísticos y comparativos del desempeño de las dos tecnologías antes mencionadas, con el fin de facilitarles la toma de decisiones adecuadas para el desarrollo de nuevos sistemas, que sean más eficientes, robustos y escalables en base a las ventajas y desventajas descritas en las conclusiones de este documento. La tesis presentada contiene los siguientes capítulos: 1. Servicio de directorios 2. Bases de datos relacionales 3. Herramientas utilizadas para desarrollo de las API’s 4. Desarrollo de las pruebas 5. Análisis de Resultados 6. Conclusiones El capítulo 1 se enfoca en los servicios de directorios basados en el protocolo LDAP; se expone la historia, los conceptos básicos, las características y la forma 5 en que opera el protocolo LDAP. También se explica la notación estándar para realizar consultas, altas, modificaciones y eliminación de información. En el capítulo 2, el lector se encontrará con historia, conceptos básicos, bases técnicas, características y funcionamiento de las bases de datos relacionales; con el fin de ofrecer al lector un panorama general de las tecnologías que serán evaluadas en los siguientes capítulos. El capítulo 3 se desarrolla presentando un breve resumen técnico de los diversos manejadores de bases de datos relacionales y servicios de directorios basados en LDAP, que serán analizados en esta tesis, para establecer los parámetros y alcances bajo los cuales se realizarán las pruebas de desempeño a las tecnologías antes mencionadas. En el capítulo 4 se plantean los diferentes escenarios sobre los cuales se irán desenvolviendo las pruebas. Se explican los pasos que se siguieron para comenzar con los experimentos, tales como especificaciones del equipo en el que se harán las pruebas, las instalaciones y configuraciones de las tecnologías. También se explican los programas que se desarrollaron en lenguaje Java, para agilizar el aprovisionamiento de datos y realizar las consultas de manera automatizada. Por otra parte se tiene la parte estadística, en donde a través del acoplamiento de los datos a un modelo básico se pueden hacer mediciones más precisas y concretas. En base a los resultados obtenidos anteriormente, en el capítulo 5, se recopila toda la información para emitir los resultados, las comparaciones y gráficas de las pruebas realizadas en el capítulo anterior. Finalmente en el capítulo 6 se exponen las conclusiones y las recomendaciones respecto al uso de una tecnología u otra. 6SERVICIOS DE DIRECTORIOS 7 1.1 Conceptos básicos El Protocolo Ligero de Acceso a Directorios (en inglés, Lightweight Directory Access Protocol, LDAP) es un conjunto de protocolos abiertos usados para acceder información almacenada centralmente a través de la red. Está basado en el estándar X.500 para compartir directorios, pero es menos complejo e intensivo en el uso de recursos. Por esta razón, a veces se habla de LDAP como "X.500 Lite." El estándar X.500 es un directorio que contiene información de forma jerárquica y categorizada que puede incluir nombres, directorios y números telefónicos. LDAP es un protocolo que se ejecuta en TCP/IP (Protocolo de Control de Transmisión/Protocolo de Internet, en inglés, Transmission Control Protocol/Internet Protocol). El protocolo LDAP estándar incluye definiciones de protocolo de red de bajo nivel y funciones de representación y manejo de datos. Los directorios a los que se puede acceder a través de LDAP son conocidos comúnmente como directorios de LDAP Como X.500, LDAP organiza la información en un modo jerárquico usando directorios. Estos directorios pueden almacenar una gran variedad de información y se pueden incluso usar de forma similar al Servicio de información de red (NIS), permitiendo que cualquiera pueda acceder a su cuenta desde cualquier máquina en la red acreditada con LDAP. Sin embargo, en la mayoría de los casos, LDAP se usa simplemente como un directorio telefónico virtual, permitiendo a los usuarios acceder fácilmente la información de contacto de otros usuarios. Pero LDAP va mucho más lejos que un directorio telefónico tradicional, ya que es capaz de propagar su consulta a otros servidores LDAP por todo el mundo, proporcionando un repositorio de información ad- hoc global. Sin embargo, en este momento LDAP se usa más dentro de organizaciones individuales, como universidades, departamentos del gobierno y compañías privadas. LDAP es un sistema cliente/servidor. El servidor puede usar una variedad de directorios, cada uno optimizado para operaciones de lectura rápidas y en gran volumen. Cuando una aplicación cliente LDAP se conecta a un servidor LDAP puede, o bien consultar un directorio, o intentar modificarlo. En el evento de una consulta, el servidor, puede contestarla localmente o puede dirigir la consulta a un servidor LDAP que tenga la respuesta. Si la aplicación cliente está intentando modificar información en un directorio LDAP, el servidor verifica que el usuario tiene permiso para efectuar el cambio y después añade o actualiza la información. Los conceptos básicos de LDAP son: Entrada: Una entrada es una unidad en un directorio LDAP. Nombre distinguido (Distinguished Name (DN)): Cada entrada se identifica por su único Nombre distinguido (DN). 8 Atributos: Los atributos son piezas de información directamente asociada con la entrada. Los atributos asociados con una organización pueden ser su número de fax, su dirección, etc. En un directorio LDAP las entradas pueden ser personas, con atributos comunes como el número de teléfono y la dirección de e-mail. Algunos atributos son obligatorios mientras que otros son opcionales. Objectclass: Una definición objectclass determina los atributos que se necesitan y los que no para cada entrada. Las definiciones de objectclass se encuentran en varios archivos de esquema. Nombre Distinguido Relativo (RDN): La afirmación de un atributo y su valor correspondiente también se conocen como Nombre Distinguido Relativo (RDN). Un RDN solamente es único por entrada mientras que un DN es único globalmente. LDIF: El Formato de intercambio de datos de LDAP (LDIF) es una representación de texto ASCII de entradas LDAP. Los archivos usados para importar datos a los servidores LDAP deben estar en formato LDIF. Una entrada LDIF se ve similar al ejemplo siguiente: [<id>] dn: <distinguished name> <attrtype>: <attrvalue> <attrtype>: <attrvalue> <attrtype>: <attrvalue> Una entrada puede contener tantos pares <attrtype>: <attrvalue> como sean necesarios. Una línea en blanco indica el final de una entrada. Todas las parejas <attrtype> y <attrvalue>deben estar definidas en el archivo esquema correspondiente para usar esta información. 1.1.1 Descripción Para comprender mejor el concepto, comenzaremos por dar respuesta a la pregunta de ¿qué es un servicio de directorios? Los directorios existen en muchas formas a través de todos los tipos de tecnologías, desde un mapa de almacenamiento, hasta una lista de dispositivos periféricos mantenidos por un sistema operativo. Electrónicamente los directorios son usados extensamente en áreas tales como sistemas operativos, sistemas de seguridad, sistemas de recursos humanos, correo electrónico y aplicaciones. El término de servicio de directorios describe la colección de software, hardware y procesos que almacenan en un tipo de directorio información para una empresa y sus subscritos. El servicio hace que esta información este disponible para los clientes que solicitan información. Un ejemplo común de un servicio de directorios es el servicio del 040, que provee información por medio del teléfono. Un cliente se comunica y solicita al operador que le proporcione información, dado un nombre y una dirección, y el operador le regresa un número telefónico. Las siguientes imágenes muestran más esquemáticamente los servicios de directorios. Componentes de un servicio de directorio Un servicio de directorio consiste de al menos una instancia de un servidor de directorios y uno o más programas clientes. Esto ha estén disponibles para cualquier usuario o aplicación. Los servicios de directorios incluyen los siguientes componentes: • Información contenida en el directorio • Software de servidores que soportan(holding) esta información • Software para las acciones de los clientes compartidos entre los usuarios u otras entidades que requieran acceder a la informac • Hardware en el cual dichos cli • Soporte al software, tal como sistemas operativos y controlado dispositivos • Infraestructura de conexión de redes de cliente a servidores y de servidores a cada otro • Políticas para decidir quién puede acc • Procedimientos por los cuales el servicio de directorio es mantenido y monitoreado En otros términos, la meta de los servicios de directorios, es tener servicios globales, construidos en estándares libres, que permitan a los usuarios y aplicaciones el acceso a la información referente a la gente y recursos fácilmente, desde cual una red. as siguientes imágenes muestran más esquemáticamente los servicios de directorios. Componentes de un servicio de directorio Un servicio de directorio consiste de al menos una instancia de un servidor de programas clientes. Esto hace que los datos de la empresa estén disponibles para cualquier usuario o aplicación. Los servicios de directorios incluyen los siguientes componentes: Información contenida en el directorio Software de servidores que soportan(holding) esta información oftware para las acciones de los clientes compartidos entre los usuarios u otras entidades que requieran acceder a la información Hardware en el cual dichos clientes y servidores van a correr Soporte al software, tal como sistemas operativos y controlado Infraestructura de conexión de redes de cliente a servidores y de servidores a Políticas para decidir quién puede acceder y actualizar el directorio Procedimientos por los cuales el servicio de directorio es mantenido y En otros términos, la meta de los servicios de directorios, es tener servicios globales, construidos en estándares libres, que permitan a los usuarios y aplicaciones el acceso a la información referente a la gente y recursos fácilmente, desde cualquier lugar en 9 as siguientes imágenes muestran más esquemáticamentelos servicios de directorios. Un servicio de directorio consiste de al menos una instancia de un servidor de ce que los datos de la empresa estén disponibles para cualquier usuario o aplicación. Los servicios de directorios oftware para las acciones de los clientes compartidos entre los usuarios u Soporte al software, tal como sistemas operativos y controladores de Infraestructura de conexión de redes de cliente a servidores y de servidores a Procedimientos por los cuales el servicio de directorio es mantenido y En otros términos, la meta de los servicios de directorios, es tener servicios globales, construidos en estándares libres, que permitan a los usuarios y aplicaciones el acceso quier lugar en 10 La solución del servicio de directorio también podría incluir formas para limitar el acceso a la información, basado en los servicios de solicitud y la fuente en la que ellos están tratando de acceder. Los sistemas de información también deben ser capaces de mantener una copia de la base de datos del directorio en una localización central y en una distribuida (réplica). Puntualizar que son y en que nos benefician A directory service is a specialized implementation of a database that is designed to provide timely and frequent access to special data. 1.1.2 Características de los servicios de directorios La tabla siguiente muestra un resumen de las cinco principales características de los servicios de directorios: Característica Descripción Escalabilidad Debido a la base estándar común, otro factor de escalabilidad es la posibilidad de configurar de manera simple hardware y software de mayores prestaciones. LDAP no se basa en un sistema operativo específico y es independiente del proveedor. Disponibilidad LDAP soporta la réplica y división de espacios de nombres. La réplica permite a varios servidores LDAP almacenar el contenido del mismo directorio. Esto permite a los clientes disponer de estos servidores adicionales cuando uno presenta anomalías. La división permite almacenar las secciones de todo el directorio en diferentes ubicaciones de servidores distintos. Esto no sólo aumenta la disponibilidad (ni una sola anomalía) si no que simplifica la gestión distribuida. Seguridad LDAP soporta características de seguridad que impiden el acceso no autorizado a datos. Los protocolos de comunicación segura, como SSL y procedimientos de autenticación, junto con las políticas de listas de control de accesos (ACL) para entradas de datos, garantizan el máximo nivel de seguridad. 11 Administración Las versiones actuales de LDAP, como IBM SecureWay Directory, proporcionan una interfaz gráfica de usuario tanto para la administración de sistemas como para la administración de datos de directorio. Su esquema ampliable dinámicamente le permite ampliar el esquema de directorios sin interrumpir el servicio. Estandarización El protocolo LDAP --junto con la mayoría de prestaciones de cliente/servidor relacionadas, las interfaces de programación de aplicaciones (API) y las definiciones de datos-- están definidos por estándares oficiales o los RFC (solicitud de comentarios) correspondientes. 1.1.3 Historia En 1988, la CCITT (Consultative International Telephonique et Telegraphique, que en la actualidad es la ITU-T, International Telecommunications Union -Telecommunication Standardization Sector), creó un estándar para servicios de directorio conocidos como x.500. Dos años después, el servicio de directorio X.500 se convirtió en el estándar ISO 9594 (Data Communications Network Directory, Recommendations X.500-X.521). Al conjunto de estándares ISO se le sigue haciendo referencia comúnmente como x.500, el cual define un directorio que se puede utilizar universalmente para una gran cantidad de datos. Para acceder a un directorio X.500, el cliente utiliza Directory Access Protocol (DAP) que se definió junto con el estándar X.500. Desafortunadamente, DAP es un protocolo complejo que no puede soportarse con facilidad en clientes reducidos, como los equipos de escritorio. Por lo tanto, X.500 se utiliza en sistemas grandes e implementaciones a gran escala. Sin embargo, los requisitos para acceder a directorios centralizados desde clientes pequeños, son cada vez más importantes para soportar la obvia rentabilidad de los directorios centralizados. Los trabajos realizados en la Universidad de Michigan y en Netscape Communications Corporation han dado como resultado una versión de DAP simplificada, llamada Lightweight Directory Access Protocol (LDAP). LDAP soporta la mayor parte de las características de DAP, pero carece de algunas funciones complejas y raramente utilizadas. La implementación de LDAP es relativamente simple y puede ser utilizada por aplicaciones de sistemas de escritorio. 12 1.2 Descripción de LDAP El Protocolo Ligero de Acceso a Directorio (Lightweight Directory Access Protocol - LDAP) es un estándar, que extiende al Protocolo de Acceso a Directorio (Directory Access Protocol - DAP). Esta estandarización permite a los clientes y software de servidor de diferentes proveedores trabajar juntos. • Los servicios de directorios LDAP son divididos de un estándar más antiguo (X.500). • LDAP es ligero, lo cual significa que es eficiente, directo y fácil de implementar, y a la vez sigue siendo altamente funcional. Los protocolos antiguos tal como X.500, DAP, requieren el uso del Protocolo de red Sistema Abierto de Interconexión (OSI). • LDAP utiliza un conjunto simplificado de métodos codificados y corre directamente desde arriba del Protocolo de Control de Transmisión/Protocolo de Internet (TCP/IP). Este puede ser usado por la mayor parte de los sistemas operativos, porque estos sistemas incluyen TCP/IP con sus sistemas operativos, o como algo inherente a ellos. • LDAP soporta un conjunto de Interfaces de Aplicación Programada (Application Programming Interfaces APIs) para una variedad de lenguajes que soportan el desarrollo del directorio, como son las APIs de C, de Java y de Perl (PerLDAP). 1.2.1 Modelo de información El modelo de información LDAP define los tipos de datos y unidades básicas de información que se pueden almacenar en un directorio. Este modelo define la unidad básica de información en el directorio como una entrada. Ésta es una colección de información acerca de un objeto. Esta puede ser un objeto real, como una persona, pero esta no requiere un modelo. El repositorio del directorio consiste de una o mas entradas en el directorio. Las entradas están estructuradas en un árbol jerárquico de información. Cada entrada en la base de datos es identificada por un nombre distinguido único (DN). El DN es una cadena de representación de la localización de la entrada en el árbol del directorio. Pensando en esto como la ruta completa desde la raíz de la entrada en la base de datos. Una entrada también puede tener uno o más atributos que describen las características de la entrada. Esto es análogo a los archivos que pertenecen a un directorio en UNIX. Se puede exportar el repositorio de datos de LDAP por un archivo de formato de intercambio de datos de LDAP(LDAP Data Interchange Format LDIF), y ser visto con un editor externo de texto. 13 dn: uid=bjenson, ou=people, cd=Siroe, dc=com Mientras una entrada es la unidad básica de información en el directorio, la entrada está constituida de un elemento fundamental conocido como atributo. Cada atributo tiene un tipo y uno o más valores. El tipo describe qué clase de información está contenida en un atributo y el valor contiene el dato actual. Los tipos de atributos son clasificados principalmente en dos categorías: de usuario y operacionales. Los atributos de usuario pueden ser modificados por los usuarios del directorio (con los permisos apropiados)y los atributos operacionales son atributos especiales que también pueden modificar la operación de un servidor de directorios o reflejan el estado operacional del directorio. Tipo de atributo Valor del atributo Dn: uid=sjuarez, ou=people,cd=Colima,dc=com Cn: Sara Juarez Sn: Juarez Telephone number: 312 4678765 mail saritaj@mail.com Los directorios de esquemas son colecciones de toda la información requerida y atributos requeridos. Estos permiten al diseñador del directorio retener el control y el orden del mantenimiento sobre los tipos de información almacenada en el directorio. Los esquemas de LDAP son hechos de tipos de atributos, cada uno de los cuales tiene una sintaxis y un conjunto de reglas de acoplamiento. Los atributos son usados para soportar tipos de datos específicos y son agrupados en unidades lógicas a través de la definición de Clases de Objetos (Object Classes). Este es el trabajo de cada servidor de directorios, para forzar las restricciones impuestas por los esquemas de las cuales cada entrada es creada o modificada. En resumen, el modelo de información de LDAP describe entradas, las cuales son lo básico para construir bloques en un directorio. Cada entrada es distinguida por un único DN. Las entradas son compuestas de atributos, los cuales son compuestos por un tipo y uno o más valores. Los atributos pueden tener reglas de integridad que limitan el tipo y longitud de los datos en los valores de los atributos. Los directorios de esquemas ponen restricciones en los tipos de atributos que deben ser o son permitidos para ser contenidos en una entrada. 14 1.2.2 Modelo de nombrado El modelo de nombrado de LDAP define cómo organizar y referirse a los datos. Este modelo describe el tipo de estructuras que se pueden construir fuera de las entradas del directorio. Después de haber insertado las entradas en una estructura lógica, el modelo de nombrado también indica como referirse a un directorio en particular sin una estructura. El modelo de nombrado de LDAP especifica que entradas están insertadas en una estructura de árbol invertido. La siguiente figura, compara el directorio de árbol LDAP con un sistema de archivos de UNIX. Se podrá notar que hay numerosas similitudes, pero sin embargo también hay tres diferencias significativas. En el modelo LDAP, la entrada raíz es conceptual, mejor dicho, que una entrada en la cual se pueda vaciar datos. Cada nodo contiene datos y cualquier nodo puede ser contenedor. Esto contrasta con un sistema de archivos, donde dado un nodo esta un archivo o un directorio, pero no ambos. Para expandir este ejemplo, en un directorio, una entrada puede ser ambos, al mismo tiempo. La siguiente figura es un segmento de un archivo LDIF, que ilustra lo anterior. Árbol del directorio Sistema de archivos en Unix 15 Como se puede ver, las entradas dc=siroe, dc=com, ou=People, y ou=devices contienen todos los datos en forma de atributos, pero también puntualiza para el nodo hijo debajo de él. La ultima diferencia que se puede considerar es que en el modelo de LDAP, los nombres están de atrás hacia delante, en orden relativo a los nombres del sistema de archivos. Esto es, que los nombres son construidos desde las hojas a la raíz en vez de la raíz a la hoja como en el sistema de archivos. Nótese que el DN esta construido de la siguiente manera: uid=fsmith, ou=people, dc=siroe, dc=com Cuando se desea leer un nombre distinguido, se hace de izquierda a derecha, moviéndose hacia arriba en la estructura de árbol. Como se puede ver, LDAP soporta un árbol de estructura jerárquica de entradas. Sin embargo, LDAP no requiere o impone una estructura particular. Como en un sistema de archivos, se puede diseñar la estructura de manera libre. También como en un sistema de archivos, las buenas prácticas pueden dictar una estructura en vez de otra. Para asegurar la interoperabilidad con otro LDAP, se puede necesitar adaptar una estructura estandarizada. Un modelo de nombrado es importante porque puede dar un nombre único a cualquier entrada en el directorio, permitiendo referirse a cualquier entrada sin ambigüedad. Para LDAP, las entradas son referidas por su DN. Los DNs son análogos a lo nombres de rutas del los sistemas de archivos, como estos un DN es construido de nombres individuales desde los ultimos nodos hasta la raíz. Note que los componentes del DN están separados por comas. Los espacios después de la coma son opcionales y pueden ser usados para mejorar la lectura. Para cualquier DN, el componente más a la izquierda es llamado Nombre Distinguido Relativo (Relative Distinguished Name -RDN) y este debe ser único entre las entradas. Este requerimiento (que sea único) asegura que no habrá dos entradas con el mismo DN en el directorio. El intento de insertar entradas con el mismo nombre, resultaría en un error. UNIX y otros sistemas de archivos demuestran un comportamiento similar. Los RDNs tienen que ser únicos solo si ellos comparten el padre. 16 El ejemplo previo muestra dos RNDs idénticos. Esto es posible porque ellos están en diferentes sub-árboles. Los RDNs pueden tener más de un valor para un atributo. Por ejemplo cn=Andrew Taylor + mail=ataylor@siroe.com, está como un RDN multivaluado. Los RDNs multivaluados son utilizados cuando se tienen RDNs que pueden ser idénticos, estos deben ser evitados, en lo posible porque pueden desordenar el namespace de LDAP. También se pueden encontrar alias en el namespace de LDAP. Los alias son entradas que apuntan a otras entradas. Los alias permiten construir una estructura que no es estrictamente jerárquica. Los alias pueden ser comparados como ligas simbólicas en UNIX o accesos directos en Windows. Los alias son implementados a través de un alias de object class con un atributo llamado aliasedObjectName. El valor asignado al aliasedObjectName es el DN de la entrada al cual el alias apunta. Como los alias pueden apuntar a cualquier entrada, aún a uno en otra máquina, pueden imponer un significante bajo desempeño. Cuando encontramos el uso de los alias, hay que considerar si las referencias pueden ser ubicables. 1.2.3 Modelo funcional El modelo funcional de LDAP describe las operaciones que se pueden realizar en el directorio usando el protocolo LDAP. El modelo define tres grupos de operaciones: 1. Operaciones de Interrogación. Las operaciones de interrogación permite a los clientes LDAP consultar y obtener datos del directorio. a. Consulta: Busca en el directorio entradas y regresa entradas individuales del directorio. #./ldapsearch –b “dc=siroe;dc=com” “objectclass=*” b. Comparación: Revisa si una entrada en particular contiene un valor de atributo en particular. El cliente envía una comparación al servidor suministrando un DN, un nombre de atributo y un valor. El servidor regresa una respuesta afirmativa al cliente si la entrada nombrada por el DN contiene el valor del atributo proporcionado. Sino, la respuesta regresada es negativa. #./ldapsearch –b “ou=people;dc=siroe;dc=com” “givenName=John” 2. Operaciones de Actualización: Las operaciones de actualización permiten manipular los datos en el directorio. 17 a. Agregar: Crea una nueva entrada en el directorio. Esta tiene dos parámetros, el DN de la entrada creada y un conjunto de atributos y valores que comprenderán la nueva entrada. #./ldapmodify –D “cn=Directory Manager” –w passwd –a dn:uid=gfranklin;ou=people;dc=siroe;dc=com objectclass:top objectclass:person givenName:Gina uid:gfranklin sn:Franklin b. Eliminar: Remueve una entrada del directorio.Esta tiene un solo parámetro, el DN de la entrada a eliminar. #./ldapdelete –D “cn=Directory Manager” –w passwd “uid=gfranklin;ou=people;dc=siroe;dc=com” c. Modificar: Modifica una entrada en el directorio. Esta puede ser utilizada para agregar, eliminar o reemplazar atributos con una entrada. #./ldapmodify –D “cn=Directory Manager” –w passwd -f actualiza.ldif dónde actualiza.ldif contiene: dn:uid=gfranklin;ou=people;dc=siroe;dc=com changetype:modify add:telephoneNumber telephoneNumber:4133456543 d. Renombrar: O modificar el DN, renombra y mueve entradas en el directorio. Esta tiene cuatro parámetros, el DN de la entrada que será renombrada, el nuevo RDN para la entrada, y el antiguo RDN que se borrará. 3. Operaciones de Autenticación: Hay dos operaciones de autenticación a LDAP y un control de operación. a. Identificarse (Bind): Utilizado por el cliente para autenticarse en el directorio. Esto se realiza proporcionando un DN y un conjunto de credenciales. b. (Unbind): Utilizado para terminar todas las operaciones mantenidas con LDAP y desconectarse. c. Abandonar (Abandon): Utilizado cuando el cliente no está interesado en los resultados de una operación previamente iniciada. Cuando el servidor recibe una petición de “abandonar”, el servidor termina de proceso de la operación. 18 1.2.4 Modelo de seguridad El modelo de seguridad de LDAP proporciona un marco de trabajo para proteger la información en el directorio de accesos no autorizados. El modelo de seguridad confía en el hecho de que LDAP es un protocolo orientado a conexión. Esto significa que el cliente abre una conexión en un servidor LDAP y muestra un número de operaciones de protocolo en la misma conexión. El cliente LDAP puede autenticarse en el servidor de directorio al mismo punto durante el tiempo de vida de la conexión, en el cual este punto puede garantizar privilegios adicionales. Desde la perspectiva del cliente, el proceso de autenticación, es proveído por el servidor y que el cliente es alguna entidad. El proceso de autenticarse al directorio es llamado “identificarse” (binding). Una identidad está ligada a la conexión cuando una autenticación sucede exitosamente. Si un cliente no se autentica proporcionando sus credenciales, el cliente está ligado anónimamente. En otras palabras, el servidor no tiene idea de quién es el cliente, así que garantiza algunas configuraciones de privilegios por defecto. Usualmente estas configuraciones de privilegios son mínimas. Conociendo la necesidad de soportar diferentes métodos de autenticación, LDAPv3 ha adoptado el marco de trabajo (framework) de Autenticación Simple y la Capa de Seguridad (Simple Authentication and Security Layer -SASL), el cual proporciona una manera estándar para protocolos de múltiple autenticación. Cada tipo de sistema de autenticación corresponde a un particular mecanismo de SASL. Un mecanismo SASL es un identificador que describe el tipo de protocolo de autenticación que será soportado. La capa segura de sockets (Secure Sockets Layer - SSL) y la capa segura de transporte (Transport Layer Security - TLS), son tecnologías de seguridad que encriptan todo el flujo de datos entre un cliente y un servidor. SSL, el más antiguo de las dos tecnologías, ha sido una tecnología exitosa en la WWW (World Wide Web), asegurando el comercio electrónico y otras transacciones que dependen de la transmisión de datos que han sido escondidos de los que se encuentran escuchando en la red. TLS, es el que le sigue al SSL y es un estándar emergente de Internet. SSL y TLS proporcionan una seguridad efectiva para entidades de comunicación sobre redes. Imagine dos compañías trabajando como compañeros de negocios. A través de la tecnología TLS, ellos pueden compartir el acceso de manera segura a sus respectivos directorios que están en Internet. TLS encripta las consultas y los resultados, proporcionando a las compañías la seguridad de que sus datos del directorio están protegidos mientras se mueven en Internet. SSL y TLS también permiten la mutua autenticación con X.509, basado en certificados. Los clientes pueden proveer su identidad a los servidores y en reversa, verificar la identidad de los servidores atizando ese certificado digital. 19 1.3 Herramientas de LDAP Este capítulo introduce a las herramientas y operaciones que pueden ser utilizadas para obtener, modificar y controlar el acceso al directorio de información. 1.3.1 Archivos LDIF Los servidores de directorios usan el Formato de Intercambio de Datos de LDAP (Data Interchange Format - LDIF) para describir un directorio y entradas en los directorios en un formato de texto estándar. El LDIF es comúnmente utilizado para construir el repositorio de datos inicial del directorio, o para agregar un gran número de entradas al directorio de una vez. Además el LDIF es usado para describir cambios en las entradas del directorio. Por esta razón, las utilidades del servidor de directorios de línea de comandos a menudo utilizan para sus entradas o salidas un LDIF. El LDIF descrito en RFC2849: The LDAP Data Interchange Format (LDIF) - Technical Specification. Un archivo LDIF consiste de uno o más entradas en un directorio separadas por una línea en blanco. Cada entrada en un LDIF consiste de: Un ID opcional Un DN Uno o más clases de objetos Definiciones múltiples de atributos Lo básico de una entrada en un directorio representada en un LDIF es como sigue: dn: distinguished_name objectClass: object_class objectClass: object_class ... attribute_type[;subtype]:attribute_value attribute_type[;subtype]:attribute_value ... En este ejemplo, una entrada debe comenzar con un DN seguido por un espacio en blanco y una cadena, que es el valor del DN. El DN es una cadena que representa el nombre de una entrada y su localización dentro del directorio LDAP. Típicamente, las definiciones de las clases de objeto (objectclass) aparecerán a continuación, aunque no es requerido. Los objectclasses definen el tipo de entrada en 20 el directorio especificando cuales atributos estarán contenidos en la entrada. Los atributos pueden ser requeridos u opcionales dependiendo de la definición en el objectclass. Los tipos de atributos y sus valores, normalmente siguen a los objectclass en un archivo LDIF. Los atributos son usados para soportar la información descriptiva acerca de una entrada. Cada atributo también sigue un estándar de sintaxis para el tipo de información que puede ser almacenada como el valor del atributo. La sintaxis general de un archivo LDIF puede observarse en el siguiente ejemplo: 1.3.2 Búsquedas La operación de consulta de LDAP es usada para localizar y recuperar entradas del directorio. Cuando queremos recuperar una entrada o grupo de entradas del directorio, se necesita usar una forma de operación de consulta que adhiere la sintaxis definida en la especificación de LDAP. La sintaxis de consulta no es significante para ser usada amigablemente y es normalmente oculta para los usuarios finales, quienes son presentados con una interfaz gráfica de usuario (graphical user interface-GUI),que construirá la consulta LDAP por ellos. La mayoría de los servidores de directorios tienen el comando ldapsearch, utilidad que puede ser usada para construir una consulta LDAP. Esta utilidad abre una conexión con el servidor, usando el DN específico y contraseña, y localiza entradas basadas en un filtro específico de consulta. 21 El alcance de las consultas puede incluir una sola entrada, una entrada inmediata o un árbol o subárbol completo. Los resultados de las consultas pueden ser regresadas en formato LDIF. Dependiendo del tamaño de la base de datos, el desempeño de las consultas por la aplicación cliente puede tomar mucho tiempo y recursos. Se pueden usar índices para mejorar el desempeño de las consultas. La sintaxis general del comando ldapsearch es: ldapsearch options filter attributes Dónde: • Control de opciones, cómo se mostrará la consulta • Filtros que restringen qué es lo que se buscará • Especificación de atributos, cuáles atributos deberá regresar Algunas opciones más comúnmente utilizadas son: Opción Descripción -h hostname Especifica el nombre del host del servidor LDAP -b searchbase Especifica la base desde donde se iniciará la consulta -D bindDN Utiliza el nombre distinguido (DN) para autenticarse al directorio -w password Especifica la contraseña de autenticación -s scope Especifica el nivel de la consulta -L Muestra el resultado en formato LDIF Especificando una base de la consulta de "ou=people, dc=mycorp, dc=com" comenzara la consulta en la rama de people del árbol del directorio. Combinando la base con el alcance de la consulta, se permitirá consultar diferentes opciones del directorio, por ejemplo: #./ldapsearch -h hostname -b "cn=schema" -s base "objectclass=*" El scope (-s) base buscará solo en el objeto especificado por el parámetro -b, onelevel buscará un nivel abajo del objeto especificado por el parámetro –b y finalmente el scope subtree expandirá la consulta para incluir el objeto especificado por el parámetro -b y todos los subárboles debajo de él. 22 Los filtros de consulta seleccionan las entradas que van a ser regresadas para una operación de consulta. Cuando se usa ldapsearch se pueden poner múltiples filtros en un archivo, con cada filtro en una línea separada en el archivo, o se puede especificar un filtro directamente en la línea de comando. Los filtros pueden ser combinados con operadores para proporcionar control adicional sobre los resultados de la consulta. Algunos de los operadores más usados están listados en la siguiente tabla. Operador Descripción = Regresa las entradas que contienen el valor del atributo que exactamente se especificó Substring=string* Regresa entradas que contienen atributos especificados en la subcadena. El asterisco indica cero o más caracteres. >= Regresa entradas que contengan atributos que sean mayores o igual que el valor especificado. <= Regresa entradas que contengan atributos que sean menores o igual que el valor especificado. Presence=* Regresa entradas que contengan uno o más valores del atributo especificado (&(ou=Marketing)(building=a*)) Este filtro regresa todas las entradas que se encuentren en la unidad organizacional y que su edificio inicie con la letra “a” (!(cn=value)) Este filtro regresa todas las entradas que no contengan el atributo especificado Cuando se consulta por una entrada, se puede especificar atributos que se desea que sean regresados como resultado de la consulta. Opciones de Scope Base de la consulta 23 1.3.3 Actualizaciones Las utilidades ldapmodify y ldapdelete permiten proporcionar entradas LDIF en el directorio para agregar, cambiar y borrar entradas. Estas utilidades leen cualquier número de sentencias de actualización de una entrada estándar o de un archivo, y modifican las entradas correspondientes de acuerdo a las instrucciones LDIF. Una sentencia de actualización contiene el DN de la entrada para la actualización, la operación para realizarla, y cualquier dato para los atributos de las entradas. El tipo de operación que deberá ser mostrada es específica por la palabra clave chagetype o por una opción de línea de comandos. Su sintaxis es la siguiente: ldapmodify options input Donde: • options: Controla como se mostrara la actualización • input: Puede ser especificado en la línea de comandos o proporcionando un archivo LDIF usando la opción –f. 1.3.4 Control de acceso El control de acceso permite controlar cuales usuarios o grupos de usuarios tienen acceso al directorio, y que permisos tienen sobre los datos del directorio. Aunque el control de acceso no es parte del estándar LDAPv3, la mayoría de los servidores de directorios comerciales tienen esta funcionalidad. El RFC 2820: Access Control Requirements for LDAP describe un modelo de control de acceso para LDAP. 1.3.5 Replicación de datos Replicación es el mecanismo por el directorio que datos se copian automáticamente de servidor de uno directorio a otro. Esta característica hace LDAP atractiva para uso como un servicio de nombres. Usa replicación, puede copiar las entradas del directorio individual o árboles de directorio completo entre servidores. Además de proporcionar alta disponibilidad de datos, se incluyen algunos beneficios adicionales: • Rendimiento mejorado. Por replicar las entradas del directorio en una ubicación cerca de sus usuarios, se puede mejorar considerablemente los tiempos de respuesta del directorio. 24 • Balanceo de carga. Por replicar el árbol del directorio a través de múltiples servidores, se puede reducir la carga de tiempo de acceso en cualquier equipo determinado, lo que mejora el tiempo de respuesta del servidor. • Gestión de datos locales. La replicación permite poseer los datos localmente y compartirlo con otros servidores de directorio en toda su empresa. Para entender cómo funciona la replicación, primero se debe comprender que los servidores LDAP juegan ciertos roles. Cada objeto de directorio debe ser replicado por un y sólo un servidor de directorio. El servidor de directorio maestro se denomina el servidor proveedor, ya que suministra los objetos a otros servidores. Los servidores que reciben los objetos del directorio de servidores proveedor se denominan servidores consumidores. Cualquier servidor de directorio puede ser un proveedor de objetos de directorio, así como un consumidor de objetos suministrado desde otros servidores. En futuras versiones se admitirán replicación entre varios servidores maestros, que permitirá que los datos de directorio sean actualizados por más de un servidor. Un servidor proveedor o maestro, es responsable de lo siguiente: • Administrar todas las solicitudes de cambios en los datos de directorio replicado. Es decir, cada vez que una solicitud para añadir, eliminar ó cambiar que se recibe, la solicitud hace referencia al servidor proveedor, donde realmente se realiza la solicitud. • Seguimiento de los cambios en los objetos del servidor maestro, de modo que estos cambios deben replicarse a servidores consumidores ó esclavos. Los servidores esclavos contienen al menos una entrada de directorio que se ha copiado a él por un servidor proveedor. Los servidores consumidores pueden contener lo siguiente: 1. El árbol completo del servidor proveedor 2. Una sub-sección ó sub-árbol del servidor proveedor Servidor proveedor Servidor proveedor Servidor consumidor Servidor consumidor 1 2 25 Sólo las operaciones de lectura se producen en el servidor de consumidores. Todas las demás operaciones se tratan en el servidor de proveedor. Cada vez que un cliente LDAP intenta modificar las entradas en un árbol replicado, el servidor consumidor hace automáticamente referencia al servidor proveedor. Puede elegir qué formade sincronización se utiliza para cada acuerdo de replicación. La sincronización de replicación puede ser iniciada por el proveedor o el servidor de consumidores. Un acuerdo de replicación indica cuáles entradas del directorio se replicarán, los servidores que participan en la replicación y cuando se puede producir la replicación. Para decidir sobre un método de sincronización, se deben establecer las reglas de funcionamiento. A continuación se muestran algunos esquemas de replicación que ilustran qué ocurriría en caso de falla del servidor primario. Directorio centralizado en un sólo servidor con replicación, respaldos en alguno de los servidores. 26 Directorio centralizado en un sólo servidor con replicación, respaldos en otro servidor Directorio centralizado en varios servidores en un solo site, con replicación, respaldos en alguno de los servidores 27 Directorio centralizado en varios servidores a través de una red WAN, con replicación, respaldos en alguno de los servidores. Directorio distribuido en varios servidores sin replicación, respaldos en alguno de los servidores 28 Directorio distribuido en varios servidores, con replicación, respaldos en alguno de los servidores. Directorio distribuido en varios servidores, con replicación, respaldos en otro servidor Consumidor Proveedor Consumidor Proveedor 29 BASES DE DATOS 30 2.1 Conceptos básicos de bases de datos Con el fin de obtener una idea clara de los conceptos que se manejan en este capítulo, primeramente se presentan las definiciones que involucran las bases de datos. Dato: Conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o alfanuméricos. Información: Hechos que pueden ser registrados y tienen un significado implícito. Es un conjunto ordenado de datos los cuales son manejados según la necesidad del usuario, para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a información, primero se debe guardar lógicamente en archivos. Base de datos: Una base de datos es una colección o depósito de datos integrados, con redundancia controlada y con una estructura que refleje las interrelaciones y restricciones existentes en el mundo real, los datos que han de ser compartidos por diferentes usuarios y aplicaciones, deben mantenerse independientes de éstas y su definición y descripción, únicas para cada tipo de datos, han de estar almacenadas junto con los mismos. Los procedimientos de actualización y recuperación, comunes y bien determinados, habrán de ser capaces de conservar la integridad, seguridad y confidencialidad del conjunto de los datos. Sistema Manejador de Base de Datos. (DBMS): Un sistema de administración de bases de datos (DBMS database management system) es un sistema cuyo objetivo es proporcionar un entorno que sea a la vez conveniente y eficiente para ser utilizado al extraer y almacenar información de la base de datos. Se compone de la base de datos y de un conjunto de programas para manejarlos. El DBMS es responsable de las siguientes tareas: • Interacción con el gestor de archivos. Los datos sin procesar se almacenan en el disco usando el sistema de archivos que normalmente es proporcionado por un sistema operativo convencional. El gestor de base de datos traduce las distintas sentencias DML a comandos del sistema de archivos de bajo nivel. Así, el gestor de base de datos es responsable del almacenamiento, recuperación y actualización de los datos en la base de datos. • Implantación de la integridad. Los valores de los datos que se almacenan en la base de datos deben satisfacer ciertos tipos de restricciones de consistencia. La persona encargada de la administración de la base de datos debe especificar explícitamente estas restricciones, entonces puede determinar se las actualizaciones a la base de datos dan como resultado da violación de la restricción; si así es, se debe tomar la acción apropiada. • Implantación de la seguridad. No todos los usuarios de la base de datos necesitan tener acceso a todo su contenido. Es trabajo del administrador de la base de datos hacer que se cumplan estos requisitos de seguridad. 31 • Copia de seguridad y recuperación. Un sistema de información está sujeto a fallos, en los cuales se pierde información referente a la base de datos. Es responsabilidad del gestor de la base de datos detectar tales fallos y restaurar la base de datos al estado que existía antes de ocurrir el fallo. Esto se lleva a cabo normalmente a través de la iniciación de varios procedimientos de copias de seguridad y recuperación. • Control de concurrencia. Cuando varios usuarios actualizan la base de datos concurrentemente, es posible que no se conserve la consistencia de los datos. Controlar la interacción entre los usuarios concurrentes es otra responsabilidad del gestor de la base de datos. Esquema de base de datos: Es la estructura por la que está formada la base de datos, se especifica por medio de un conjunto de definiciones que se expresa mediante un lenguaje especial llamado lenguaje de definición de datos (DDL). El resultado de la compilación de las sentencias DDL es un conjunto de tablas las cuales se almacenan en un archivo especial llamado diccionario de datos, el cual normalmente se esconden a los usuarios. Administrador de base de datos (DBA): Es la persona o equipo de personas profesionales responsables del control y manejo del sistema de base de datos, generalmente tiene(n) experiencia en DBMS, diseño de bases de datos, Sistemas operativos, comunicación de datos, hardware y programación. Lenguaje de manipulación de datos: (DML data manipulation language) es un lenguaje que capacita a los usuarios a acceder o manipular datos según están organizados por el modelo de datos adecuado. Una consulta es una sentencia que solicita la recuperación de información. La porción de un DML que implica la recuperación de información se llama lenguaje ge consultas. Los niveles de abstracción se aplican no sólo a la definición o estructuración de datos, también se aplican a la manipulación de datos. Por manipulación se entiende: • La recuperación de información almacenada en la bases de datos • La inserción de información nueva en la base de datos • La supresión de información de la base de datos • La modificación de datos almacenados en la base de datos A nivel físico, deben existir algoritmos que permitan acceso eficiente a los datos. En los niveles de abstracción más altos, se pone énfasis en la facilidad de uso. El objetivo de este lenguaje, es proporcionar una interacción eficiente entre las personas y el sistema. 2.1.1 Objetivo de los sistemas de bases de datos Los sistemas de base de datos se diseñan para manejar grandes cantidades de información, la manipulación de los datos involucra tanto la definición de estructuras 32 para el almacenamiento de la información como la provisión de mecanismos para la manipulación de la información, además un sistema de base de datos debe de tener implementados mecanismos de seguridad que garanticen la integridad de la información, a pesar de caídas del sistema o intentos de accesos no autorizados. La importancia de la información en la mayoría de las organizaciones, y por lo tanto el valor de la base de datos, ha llevado al desarrollo de una gran cantidad de conceptos y técnicas para la gestión eficiente de los datos, que a continuación se describen: Redundancia e inconsistencia de datos: Puesto que los archivos que mantienen almacenada la información son creados por diferentes tipos de programas de aplicación existe la posibilidad deque si no se controla detalladamente el almacenamiento, se pueda originar un duplicado de información, es decir que la misma información sea más de una vez en un dispositivo de almacenamiento. Esto aumenta los costos de almacenamiento y acceso a los datos, además de que puede originar la inconsistencia de los datos - es decir diversas copias de un mismo dato no concuerdan entre sí, por ejemplo: que se actualiza la dirección de un cliente en un archivo y que en otros archivos permanezca la anterior. Dificultad para tener acceso a los datos: Un sistema de base de datos debe contemplar un entorno de datos que le facilite al usuario el manejo de los mismos. Supóngase un banco, y que uno de los gerentes necesita averiguar los nombres de todos los clientes que viven dentro de cierto código postal de alguna ciudad. El gerente pide al departamento de procesamiento de datos que genere la lista correspondiente. Puesto que esta situación no fue prevista en el diseño del sistema, no existe ninguna aplicación de consulta que permita este tipo de solicitud, esto ocasiona una deficiencia del sistema. Aislamiento de los datos: Dado que los datos están repartidos en varios archivos, y estos no pueden tener diferentes formatos, es difícil escribir nuevos programas de aplicación para obtener los datos apropiados. Anomalías del acceso concurrente: Para mejorar el funcionamiento global del sistema y obtener un tiempo de respuesta más rápido, muchos sistemas permiten que múltiples usuarios actualicen los datos simultáneamente. En un entorno así la interacción de actualizaciones concurrentes puede dar por resultado datos inconsistentes. Para prevenir esta posibilidad debe mantenerse alguna forma de supervisión en el sistema. Problemas de seguridad: La información de toda empresa es importante, aunque unos datos lo son más que otros, por tal motivo se debe considerar el control de acceso a los mismos, no todos los usuarios pueden visualizar alguna información, por tal motivo para que un sistema de base de datos sea confiable debe mantener un grado de seguridad que garantice la autentificación y protección de los datos. En un banco por ejemplo, el personal de nóminas sólo necesita ver la parte de la base de datos que tiene información acerca de los distintos empleados del banco y no a otro tipo de información. 33 Problemas de integridad: Los valores de datos almacenados en la base de datos deben satisfacer cierto tipo de restricciones de consistencia. Estas restricciones se hacen cumplir en el sistema añadiendo códigos apropiados en los diversos programas de aplicación. 2.2 Antecedentes de las bases de datos relacionales La complejidad de las organizaciones ha demandado eficiencia en la utilización de datos y generación de información. Gracias al uso de las computadoras ha sido posible manejar enormes cantidades de datos con mayor rapidez y precisión. A la par, se han dado cambios en las estructuras de datos empleadas, en las técnicas destinadas a la explotación de la información, así como en las interfaces de las aplicaciones. La evolución en el manejo de grandes volúmenes de datos surge a principios de los años 60’s con el comité CODASYL (Conference of Data Systems Languages), que representaba a fabricantes de computadoreas, agencias gubernamentales, organizaciones de usuarios y universidades; este comité preparó el marco de trabajo de COBOL (COmmon Business Oriented Language), lenguaje que fue diseñado específicamente para el procesamiento de los datos de tipo comercial. La estructura de datos predominante fue el archivo. Los archivos estaban por lo general, diseñados para una aplicación determinada o para un grupo de aplicaciones muy similares. Era posible el acceso secuencial y el acceso directo a los registros. Con este software se proporcionaban métodos de acceso, pero no una administración de datos. Al surgir la necesidad de aplicaciones más complejas, se observó la necesidad de agregar al compilador de COBOL paquetes que facilitaran el ordenamiento y clasificación de datos así como la generación de reportes. Surgieron también las organizaciones lógicas de alto nivel para los datos, y las aplicaciones comenzaron a integrarse para ponerse a disposición de un mayor número de usuarios. En 1971, el DBTG (Data Base Task Group), un subgrupo de CODASYL, presentó un documento acerca de las bases de datos, en el cual quedaron asentados los principios para el desarrollo de lo que serían los DBMS (Data Base Management Systems). Durante las últimas décadas, las bases de datos han jugado un papel importante en el manejo de grandes volúmenes de información, hardware y software (en este caso representado por los DBMS), han tenido que evolucionar para poder manipular las nuevas estructuras de datos y atender las cada vez más complejas demandas. Es así como se han representado cronológicamente los diversos modelos de bases de datos a través de los años: El Jerárquico, el de Red, el Relacional y el Orientado a Objetos. En los dos primeros modelos, se tenía un código de la aplicación totalmente 34 dependiente a la implementación de las estructuras de datos. El programador debía trabajar con ligas físicas tanto en la construcción como en la explotación de datos. Esto generó un lento desarrollo y un alto costo en el mantenimiento. Además, se tenían grandes limitantes en la modificación de las estructuras. El modelo relacional prometía resolver estos problemas y proporcionar otros beneficios de negocios. 2.3 Bases de datos relacionales Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. 2.3.1 Modelo Relacional El Modelo Relacional tuvo origen en las investigaciones del Dr. Edgar F. Codd quien publicó en los años 1969 y 1970 sus artículos: ”Derivability, Redundancy, and Consistency of Relations stored in Large Data Banks” y “A Relational model of Data for Large Shared Data Banks”, colocando un nuevo modelo para las bases de datos en una posición firme, robusta, sencilla y bien documentada. El modelo relacional tiene sus bases matemáticas en la lógica de predicados de primer orden y la teoría de las relaciones. De su idea, surgen los primeros RDBMS (Relational Data Base Management Systems) comerciales como System R, DB2(IBM), Informix Dynamic Server (Informix), Ingres, Oracle8 (Oracle), Progress y Sybase. Un modelo de datos es la combinación de al menos tres componentes: (a) Una colección de tipos de estructuras de datos; (b) Una colección de operadores o reglas de inferencia, los cuales pueden ser aplicados a cualquier instancia válida de los tipos de datos de (a) para recuperar, derivar o modificar datos de cualquier parte de la estructura sobre cualquier combinación deseada; (c) Una colección de reglas generales de integridad, las cuales definen (explícita o implícitamente) el conjunto de estados consistentes, los cambios de estado de la base de datos o ambos. Estas reglas son generadas en el sentido de que se aplican a cualquier base de datos usando este modelo. 35 El modelo relacional es un modelo de datos en este sentido y fue el primero en ser definido como tal. En su parte estructural, consta de dominios, relaciones de un grado determinado (con tablas como su principal representación conceptual), tuplas, llaves candidatas y llaves primarias. La parte de la manipulación del modelo está dada por los operadores algebraicos que permiten transformar las relaciones en nuevas relaciones. La integridadse define por medio de dos reglas de integridad: Integridad de entidades e integridad referencial. A continuación se presenta la terminología de la teoría relacional: Una Relación sobre un conjunto de dominios D1, D2, …, Dn (no necesariamente distintos), se compone por el subconjunto del producto cartesiano de los dominios: R ⊆ D1 X D2 X … X Dn y tendrá un grado n. La relación se define como único elemento de estructuración y se le asocia un nombre. Las relaciones están organizadas como conjuntos de tuplas de la forma <d1, d2, …,dn>. Cada dominio tiene un tipo de datos básico asociado. Tabla es la representación tabular de una relación, está formada por renglones y columnas, donde cada columna representa un atributo y los valores de los codominios aparecen como entradas (instancias) en la tabla. El grado de una relación es el número de dominios que forman la tupla de dicha relación, incluyendo el caso especial de una relación unaria (donde el número de atributos =1). La cardinalidad es el número de tuplas en la relación. El Modelo Relacional es una extensión de la teoría matemática de las relaciones para adaptarla a los objetivos del procesamiento de datos y se basa en colecciones de tablas con propiedades especiales, que permitan representar los distintos tipos de asociaciones (1:1, 1:M y M:N) por medio de las técnicas de mapeo. En la siguiente tabla se pueden observar las equivalencias de términos matemáticos y de bases de datos relacionales. Término matemático Término de Bases de Datos Relación R de grado n Tabla-R con n columnas. Atributo Columna de la tabla-R. Dominio Tipo de dato extendido Tupla Renglón de la tabla-R 36 Cardinalidad de la relación Número de renglones en la tabla-R El Modelo Relacional trata con las tuplas mediante su contenido de información, no por medio de identificadores, números, etiquetas o direcciones; se logra así, la independencia de las estructuras físicas de las lógicas que se presentaba en los modelos anteriores. El conjunto de operaciones definidas a continuación, fue introducido por Edgar F. Codd y se aplican específicamente a las relaciones. El álgebra relacional está formada por un conjunto de operadores de alto nivel que operan sobre relaciones. Cada uno de estos operadores toma una o dos relaciones como entrada y produce una nueva como salida manteniéndose así, la propiedad de cerradura. Codd definió un conjunto de ocho operadores de este tipo, divididos en dos grupos: 1. Las operaciones tradicionales de conjuntos. Unión R1 ∪ R2 Este operador acepta como entradas dos relaciones con los mismos atributos en el mismo orden, y produce como resultado todos los atributos y todas las tuplas de ambas relaciones. Si existe alguna tupla con la misma información en ambas relaciones, en la relación resultado, sólo aparece una vez. Intersección R1 ∩ R2 Este operador selecciona de ambas relaciones de entrada, aquellas tuplas que tengan la misma información en todos los atributos, generando así la relación resultante. Diferencia R1 – R2 Acepta como entrada dos relaciones que tengan al menos un atributo en común, en donde la relación resultante tendrá todas las tuplas de la primera relación que no aparezcan en la segunda relación. Producto Cartesiano R1 X R2 A partir de dos relaciones especificadas, se genera una tercera que contiene todas las combinaciones posibles de tuplas, una de cada una de las dos relaciones. 2. Las operaciones relacionales especiales. Proyección Π(d1[,d2,…,dn])R1 37 Este es un operador unario que tiene como entrada una relación y produce como resultado sólo aquellos dominios especificados, alternando así, el grado de la relación de entrada con respecto a la resultante. El orden en el cual aparecen los dominios, es el que se indica cuando se hace la proyección, permitiéndose así la permutación de los mismos. El número máximo de dominios que se puede proyectar, es el grado que tiene la relación y como mínimo solo uno. Selección o Restricción σ(condición)R1 Este es también un operador unario que tiene como entrada una relación y produce como resultado los mismos atributos que contiene la relación de entrada y las tuplas que sean especificadas, es decir, las que cumplan el criterio definido. Se altera así, la cardinalidad de la relación de entrada con respecto a la resultante. Las condiciones de selección de tuplas pueden tener varios grados de complejidad y pueden incluir a los operadores booleanos AND, OR y NOT. Join o Junta R1 θ R2[ θ R3 θ R4 …] El operador de join acepta como entrada dos o más relaciones, teniendo cada una al menos un atributo en común con las otras relaciones, y produce como resultado una nueva relación con todos los dominios de las relaciones originales, las tuplas se seleccionan con aquellas cuyas instancias en las relaciones de entrada cumplen la condición que se indica para hacer la junta. Los operadores para indicar las condiciones de join pueden ser: >, <, =, !=, <= y >=. Los atributos en común, sólo se muestran una vez. División R1 : R2 Toma dos relaciones, una binaria y una unaria, y construye una relación formada por todos los valores de un dominio de la relación binaria que concuerden (en el otro dominio) con todos los valores en la relación unaria. El cálculo relacional fue propuesto por Codd en 1971 como alternativa al álgebra. La diferencia entre un lenguaje algebráico y un lenguaje predicativo (denominado así por el uso del cálculo de predicados para la formulación de consultas), es que en el primero hay que especificar qué operadores se tienen que aplicar a las relaciones para obtener el resultado, mientras que en el segundo, sólo es preciso indicar cuál es el resultado que se quiere obtener, expresándolo mediante el cálculo de predicados de primer orden. Chris J. Date diferencia el álgebra del cálculo de la siguiente manera: “Los lenguajes basados en el cálculo relacional son descriptivos, mientras que los algebráicos son prescriptivos”. Sin embargo, las distinciones anteriores son sólo superficiales, ya que 38 es un hecho que el álgebra y el cálculo son lógicamente equivalentes. Para cada expresión algebráica hay una equivalente del cálculo, y viceversa. Codd mostró que el álgebra es al menos tan poderosa como el cálculo. Esto lo hizo dando un algoritmo conocido como “El algoritmo de reducción de Codd”, mediante el cual, una expresión arbitraria del cálculo podía ser reducida a una expresión del álgebra semánticamente equivalente. Es así como se presenta el modelo relacional, basado en una sencilla y a la vez firme teoría matemática que si para muchos representó sólo una forma elegante de especificar un nuevo modelo de bases de datos, es sin duda el fundamento de la tecnología moderna de ese campo. Edgar F. Codd recibió el ACM Turing Award en 1981 por su trabajo sobre el modelo relacional y con ese motivo presentó un artículo titulado “Relational Database: A Practical Foundation for Productivity” donde presenta evidencias para sugerir que la solución para atacar el problema de la alta demanda de aplicaciones de cómputo contra el atraso de los departamentos de sistemas para satisfacer esa demanda, la ofrece la tecnología relacional. 2.4 Sistema Manejador de Bases de Datos (SMBD) Un DBMS consiste de una base de datos y un conjunto de aplicaciones (programas) para tener acceso a ellos. Comúnmente, la base de datos contiene información interrelacionada y referente a una misma entidad o empresa. El objetivo primordial de una DBMS es crear un ambiente en el que sea posible almacenary recuperar información en forma eficiente y conveniente. Otro modelo que se utiliza Comúnmente para manipular una base de datos es el llamado SISTEMA DE PROCESAMIENTO DE ARCHIVOS; que consta de un conjunto de programas que permiten el acceso a la base de datos, pero no optimizan los métodos utilizados, provocando entre otros los siguientes problemas: • Redundancia. Esta se presenta cuando se repiten innecesariamente datos en los archivos que conforman la base de datos. Esta redundancia aumenta los costes de almacenamiento y acceso y además puede llevar a inconsistencia de los datos. • Inconsistencia. Ocurre cuando existe información contradictoria o incongruente en la base de datos. • Dificultad en el acceso a los datos. Debido a que los sistemas de procesamiento de archivos generalmente se conforman en distintos tiempos o épocas y ocasionalmente por distintos programadores, el formato de la 39 información no es uniforme y se requiere de establecer métodos de enlace y conversión para combinar datos contenidos en distintos archivos. • Aislamiento de los datos. Se refiere a la dificultad de extender las aplicaciones que permitan controlar a la base de datos, como pueden ser, nuevos reportes, utilerías y demás debido a la diferencia de formatos en los archivos almacenados. • Anomalías en el acceso concurrente. Ocurre cuando el sistema es multiusuario y no se establecen los controles adecuados para sincronizar los procesos que afectan a la base de datos. Comúnmente se refiere a la poca o nula efectividad de los procedimientos de bloqueo. • Problemas de seguridad. Se presentan cuando no es posible establecer claves de acceso y resguardo en forma uniforme para todo el sistema, facilitando así el acceso a intrusos. • Problemas de integridad. Ocurre cuan no existe a través de todo el sistema procedimientos uniformes de validación para los datos. 2.4.1 Funcionamiento conceptual de un RDBMS Los sistemas de bases de datos más maduros y utilizados hoy en día son los Sistemas de Administración de Bases de Datos Relacionales (RDBMS por sus siglas en inglés). Estos sistemas son el núcleo de gran parte de la infraestructura de aplicación del mundo incluyendo comercio electrónico, registros médicos, facturación, recursos humanos, nómina, administración de relaciones con los clientes y administración de la cadena, por nombrar algunos. En esencia, un típico RDBMS tiene cinco componentes principales, a manera conceptual, se comenta el funcionamiento de éstos, ilustrando un ciclo de vida de una consulta. También sirve como una visión general de las secciones restantes del documento. Considere la posibilidad de una base de datos, simple pero típica de interacción en un aeropuerto, en el que un agente hace clic en un formulario para solicitar la lista de pasajeros para un vuelo. Este botón, regresa los resultados en una transacción de sólo-consulta la cual funciona como sigue: 1. Una computadora personal de la aerolínea (el "cliente") llama una API que a su vez se comunica a través de una red para establecer una conexión con el administrador de comunicaciones del cliente de un sistema de administración de bases de datos. En algunos casos, esta conexión se establece entre el cliente y el servidor de base de datos directamente, por ejemplo, mediante el Protocolo de conectividad ODBC o JDBC. Esta disposición es denominada sistema de "dos niveles" o "cliente-servidor". En otros casos, el cliente puede comunicarse con un "servidor de nivel medio" (un servidor web, monitor 40 de procesamiento de transacciones o similares), que a su vez utiliza un protocolo proxy para llevar a cabo la comunicación entre el cliente y el sistema de administración de bases de datos. Normalmente a esto se le llama un sistema de "tres niveles". En muchos escenarios de basados en web, aún existe otro "servidor de aplicaciones" entre el servidor web y el sistema de administración de bases de datos, lo que resulta en cuatro niveles. Dadas estas diversas, un sistema típico de administración de bases de datos debe ser compatible con muchos protocolos de conectividad diferentes, utilizados por varios controladores de cliente y sistemas intermedios. Sin embargo, la responsabilidad del administrador de comunicaciones del cliente del RDBMS en todos estos protocolos es aproximadamente el mismo: establecer y recordar el estado de conexión para la petición (ya sea un cliente o un servidor de middleware), para responder a comandos SQL del autor de la petición y a regresar los datos y control de mensajes (códigos de resultado, errores, etc.) según corresponda. 2. Al recibir primer comando SQL del cliente, el sistema DBMS debe asignar un "hilo" al comando. También debe asegurarse de que los datos del flujo y salidas de control están conectados a través del administrador de comunicaciones al cliente. La más importante decisión que el DBMS tiene que tomar en este momento en el control de admisión en lo que respecta a la consulta: Si el sistema debería comenzar inmediatamente el procesamiento de la consulta o aplazar la ejecución hasta un momento en el que existan suficientes recursos del sistema disponibles para procesar la consulta. 3. Una vez admitido y asignado como un hilo de control, la consulta puede comenzar a ejecutarse. Esto se realiza, invocando el código en el Procesador de Consultas Relacional. Este conjunto de módulos revisa que el usuario está autorizado para ejecutar la consulta y compila el texto de la consulta SQL del usuario, en un plan de consulta interna. Una vez compilado, el plan de consulta resultante se controla mediante el ejecutor del plan, el cual consiste en una serie de "operadores" (implementaciones de algoritmo relacional) para ejecutar cualquier consulta. Los operadores típicos implementan el procesamiento de tareas incluyendo uniones, selección, proyección, agregación, clasificación, así como las solicitudes de registros de datos de las capas inferiores del sistema. 4. En el plan de consulta del agente, uno o varios operadores existen para la solicitud de datos de la base de datos. Estos operadores realizan llamadas a buscar desde DBMS ‘transaccional Storage Manager (figura 1.1, la parte inferior), que administra todos los acceso de datos (leer) y manipulación de datos (crear, actualizar, eliminar) llamadas. El sistema de almacenamiento incluye algoritmos y estructuras de datos para organizar y acceso a datos en disco ("métodos de acceso"), incluyendo las estructuras básicas como las tablas e índices. También incluye un 41 módulo de administración de búfer que decide cuándo y qué datos para transferir entre búferes de disco y memoria. Volver a nuestro ejemplo, en el curso de acceso a los datos en los métodos de acceso, consulta del agente de la puerta debe invocar el código de administración de transacción para garantizar las propiedades "ACID" conocidas de transacciones. Antes de acceder a datos, los bloqueos se adquieran a un administrador de bloqueos para garantizar la correcta ejecución de las otras consultas simultáneas. Si las actualizaciones a la base de datos consulta del agente de la puerta de, sería interactuar con el administrador del registro para que la transacción sea duradera si cometidos y totalmente anulado si ha anulado. 5. En este punto en la vida de la consulta de ejemplo, se ha comenzado a tener acceso a registros de datos y está listo para utilizarlos para calcular resultados para el cliente. Para ello, "anulación de la pila" de las actividades que hemos descritos hasta este punto. Los métodos de acceso de devolución el control a los operadores del ejecutor de la consulta, el cual orquestar el cómputo de tuplas del resultado de la base de datos; como resultado tuplas se generan, se colocan en un búfer para
Compartir