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 “PROYECTO DE IMPLANTACIÓN DE UN SISTEMA DE ADMINISTRACIÓN DE BASES DE DATOS PARA EL ÁREA DE ACTIVOS ESPECIALES DE BANAMEX” TESINA QUE PARA OBTENER EL TÍTULO DE: INGENIERO EN COMPUTACIÓN BAJO LA MODALIDAD DE SEMINARIOS Y CURSOS DE ACTUALIZACIÓN Y CAPACITACIÓN PROFESIONAL P R E S E N T A : NORMA FAUSTINOS GARCIA A S E S O R: Ing. Norma Raquel Soto Arredondo México, 2010 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. Dedico este trabajo a: Mi madre (Raquel García) y Hermanas (Carmen, Luz y Adriana Faustinos) AGRADECIMIENTOS Primero quiero dar gracias a Dios, porque a pesar de que muchas veces puse mis intereses por encima de él, nunca me faltó, y aunque no soy su hija más devota, en él confío por estar conmigo en cada paso que doy, por iluminar mi mente y por haber puesto en mi camino a aquellas personas que fueron mi soporte y compañía durante todo el periodo de estudio. A mi madre, le agradezco su guía y confianza, porque me enseñó que la satisfacción se encuentra en mis propios progresos y no en las apreciaciones de los demás, me preparó para encarar las adversidades, me ha dado todo lo que soy como persona, mis valores, mis principios, mi perseverancia y mi empeño. A mis hermanas, por las cosas que me permitieron aprender de ellas y por las que de todos modos aprendí a pesar suyo, por las veces que me defendieron de los demás, por sus consuelos. Les brindo mi reconocimiento por ser más de lo que les pedí y de lo que en algunas ocasiones merecía, por dar más de lo que necesité, por valerse de sus experiencias propias para enseñarme el valor de prever, por velar por mí, por eso y por tantas cosas que jamás terminaré de agradecer. ¡Las quiero mucho! A mis sobrinos con mucho cariño, las presiones siempre son más llevaderas si están acompañadas de momentos agradables y de personas que te permiten disipar la carga (Aun y cuando en ocasiones llegan a ser un verdadero dolor de cabeza). En mis oraciones siempre le pido a Dios que les permita tomar las decisiones correctas que los lleve a convertirse en personas exitosas y extra talentosas. Los amo y quiero que sepan que no hay nada imposible de alcanzar, recuerden que nosotros nos ponemos nuestros propios límites y lo más importante en esta vida es ser feliz. Espero algún día muy cercano ser testigo del logro de sus metas. A Rodrigo Cedillo (Mi eterno amigo), Juan Carlos Escobar (Mi compañero de universidad), Andrés García (Mi apoyo) y Arturo Díaz (Mi amigo incondicional), personas increíbles con quienes compartí momentos inolvidables, ustedes enriquecieron mi vida con su amistad, gracias porque siempre me escucharon y a pesar de la distancia siempre se han mantenido constantes. Agradezco a la Ing. Norma Soto por haber confiado en mi persona, por la paciencia y por el asesoramiento en la realización del presente trabajo. Le brindo mi gratitud a cada uno de los maestros que participaron en mi desarrollo profesional durante mi carrera, sin su ayuda y conocimientos no estaría en donde me encuentro ahora. También quiero hacer extensivo mi reconocimiento a Lic. Luis E. Palacio y C.P. Román González, sé que confían en mi capacidad y en mi persona, y debo agradecerles el que nunca me pongan traba alguna cuando se trata de mi superación personal, al contrario, siempre me han empujado a hacerlo. En general quisiera agradecer a todas y cada una de las personas que han vivido conmigo la realización de este trabajo, con sus altos y bajos y que no necesito nombrar porque tanto ellas como yo sabemos que desde lo más profundo de mi corazón les agradezco el haberme brindado todo el apoyo, ánimo y sobre todo su cariño. ÍNDICE 1.4.2 PHP…………………………………………………………………………....………… 16 1.4.3 Proyecto final del modulo programación de clientes…………………..…....……. 16 INTRODUCCIÓN …………………………………………..………………………………….….... 1 CAPÍTULO 1: REPORTE DEL DIPLOMADO DE ADMINISTRACIÓN DE BASES DE DATOS……….…………..………….………….………….………….………….………………….... 3 1.1 Sistemas de Información y modelos de datos relacional………………………...……...... 3 1.1.1 Bases de datos ……………………………………………………………………...... 3 1.1.2 Modelos de datos…………………………………………………………..………..... 3 1.1.3 Modelo Relacional……………………………………………………………..…….... 5 1.2 Sistemas Manejadores de Bases de Datos Relacionales (RDBMS)………….….………..… 6 1.2.1 Arquitectura y niveles de seguridad de los Sistemas Manejadores de Bases de Datos……..……………………………………………………….………… 7 1.2.2 Tipos de Datos y usuarios……………………………………..……………………… 9 1.3 Lenguaje Estructurado de Consulta SQL……………………..……………………..……….. 10 1.3.1 Definición de datos………….…………….……………………………...…………… 10 1.3.2 Manipulación de datos………………….….………………………………...……….. 11 1.3.2.1 Selección de datos……….……..………………….…………..………….. 11 1.3.2.2 Inserción de datos…….…………………………..………………..……... 12 1.3.2.3 Actualización y eliminación de registros…………………..………….…. 13 1.3.3 Control de datos…………………………………………………….…………………. 13 1.3.4 Manejo de transacciones, procedimientos almacenados y Triggers…….……….. 13 1.4 Programación de clientes……………………………………………………………...………. 15 1.4.1 HTML (Hyper Text Markup Language)…………………………...…………………. 15 1.5 Fundamentos de sistemas operativos…………………………….……………...…………… 18 1.5.1 UNIX………..……………………………………………………………….....………. 19 1.5.1.1 Administración de Linux..………..………………………………………... 19 1.5.1.2 GNU/LINUX………………………………………………………………….. 21 1.5.2 Windows Server 2000…………………………………………….………….……….. 22 1.6 Habilidades directivas……………………….………………………………………………….. 23 1.6.1 Liderazgo y estilos de comunicación………....………….……………………..…… 23 1.6.2 Presentaciones y reuniones efectivas……………………...…...………...………… 24 1.6.3 Definición de metas…………………..……………………………….……...………. 25 1.7 Administración de bases de datos……………….……………….…..………………………. 26 1.7.1 Sybase…………….…………………………………………..………………………… 27 1.7.1.1 Tamaño de una base de datos……….……………………………...…… 27 1.7.1.2 Usuarios, roles y privilegios.……………………..…………………….…. 28 1.7.1.3 Administración de usuarios………………………………………………... 29 1.7.1.4 Respaldos.……………………………………………………………...…… 29 1.7.2 PostgreSQL……….………………………………………………………………...….. 29 1.7.2.1Usuarios y privilegios..……………………………………………...….….. 30 1.7.2.2 Tareas de mantenimiento de la base de datos………………….……… 31 1.7.2.3 Respaldos…..……………………………………………………………….. 32 1.7.3 Mysql……….……………………………………………………………………...….... 32 1.8 Mejores prácticas en la función de la administración de bases de datos.……..…………. 33 1.8.1 ITIL (Information Technology Infrastructure Library)……………….……….....… 34 1.8.2 Objetivos de control………..…………………………………………….……..…….. 34 1.8.3 Sistema de Gestión de la Seguridad de la Información (SGSI) y Continuity of business COB………………………………………………………………......…… 36 1.8.4 Auditoría Informática.……………………………………………….………...……… 37 1.9 Seguridad en Bases de datos……………………….………..…………….…………………. 37 1.10 Performance and Tuning……………………….……………………..………….…………… 39 1.10.1 Modificación de la configuración predeterminada del SQL Server……...………. 40 1.10.2 Refinación en la asignación de recursos de disco……………………..………….. 41 1.11 Modelado Orientado a objetos………………………………………..…………………...…. 42 1.11.1 UML………………………………………………………………………….…………. 43 1.11.2 Proyecto final del módulo modelado orientado a objetos………..…….………… 44 1.12 Tópicos avanzados de bases de datos…………………………..………………..……….... 47 1.12.1 Minería de datos………………………………………………………….…………... 47 1.12.2 Data Warehousing………………………………………………………..……..……. 47 1.12.3 Bases de datos multidimensionales…..………………………………...…...…..…. 48 CAPÍTULO 2: PLANTEAMIENTO, JUSTIFICACIÓN Y REQUERIMIENTOS DEL SISTEMA……….…………..………….………….………….………….…………….…………….… 49 2.1 Planteamiento y justificación del sistema……………………………………………….…….. 49 2.2 Requerimientos del sistema.………………………………………………………..………….. 51 CAPÍTULO 3: DESARROLLO DEL PROYECTO…………..………………….……………….…. 52 3.1 Acceso al sistema………………………………………….………………………..…….…….. 52 3.2 Usuarios………………………………………….……………………………..……….……….. 53 3.2.1 Administración de usuarios (Búsqueda, creación, actualización y eliminación)…. 53 3.2.2 Cambio de password……………………….………………………………………… 56 3.2.3 Bitácoras de acceso………………………………………………………..………….. 57 3.3 Respaldos……………………………………….…………………………………….…..……… 59 3.4 Bases de datos………………………………….…………………….…………..……………… 61 3.4.1 Consulta de datos………………………….…………………….…………..………… 62 3.4.2 Administración de las bases de datos (Búsqueda, creación y eliminación)….... 62 3.4.3 Tablas……………………….…………………………………………………………. 64 3.4.4 Inserción y/o modificación de datos……….…………………………………..….. 66 CONCLUSIONES…………………………………………….…………………………………..……. 68 GLOSARIO…………………………………………….………………………………………..……… 70 3.3.1 Creación de respaldos………………………….………………………..………….. 59 3.3.2 Recuperación de datos……………………….………………….……..…………… 60 1 INTRODUCCIÓN Hoy, la importancia e impacto de las bases de datos es incuestionable a medida que organizaciones gubernamentales, instituciones académicas y entidades comerciales, crean y mantienen grandes bases de datos que contienen toda clase de información, desde documentos de texto en lenguaje natural, tablas estadísticas y datos financieros, hasta datos de naturaleza técnica y científica. Existen programas denominados Sistemas Manejadores de Bases de Datos (DBMS) que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las tecnologías de bases de datos, incluyendo métodos de arquitectura y acceso, se están desarrollando rápidamente para mantenerse al día con la demanda de mecanismos de administración de la información, por ello la Universidad Nacional Autónoma de México, a través de la Dirección General de Servicios de Cómputo Académico, imparte el Diplomado de Administración de Base de Datos, con la finalidad de formar profesionales que apliquen técnicas efectivas en el manejo de los DBMS, desde su modelado, hasta su implementación, optimización y administración. El objetivo del presente trabajo, es mostrar un informe de los temas tratados en el Diplomado anteriormente mencionado, y así mismo presentar el proyecto de un sistema a través del cual se realice la administración de bases de datos. Dicho sistema fue creado debido a la necesidad que se tiene en el área de Activos especiales de Banamex de almacenar grandes cantidades de información concernientes a procesos que se llevan a cabo y que hoy en día requieren estar bajo control. A continuación hago una breve mención de los temas contenidos en este trabajo escrito: Conceptos fundamentales de bases de datos, modelo relacional y Sistemas Manejadores de Bases de Datos Relacionales. Principales sentencias del lenguaje SQL para la extracción y manipulación de información contenida en bases de datos. Nociones generales de HTML y PHP, así como presentación de un sistema capaz de conectarse a diversas bases de datos a través de una aplicación web. Conceptos de Sistemas Operativos, comandos Linux y herramientas cruciales para la administración de usuarios, procesos, archivos y todo lo relacionado con el sistema que aloje bases de datos. Información esencial para lograr una buena comunicación con el equipo de trabajo que a la vez nos lleve al logro de metas. Instalación, configuración y realización de tareas de administración y mantenimiento en los siguientes RDBMS: PostgreSQL, Sybase y Mysql. 2 Fundamentos básicos de la auditoría informática y las organizaciones dedicadas a ellas, como lo es ISACA (Asociación de Auditoría y Control de Sistemas), las normas que establece, los objetivos de control de COBIT (Objetivos de Control para la Información y la Tecnología Relacionada) y las mejores prácticas de ITIL (Biblioteca de Infraestructura de Tecnología de la Información) relacionadas con la administración de Bases de Datos. Principales vulnerabilidades de seguridad de los equipos que se encuentran conectados en red, técnicas de prevención y corrección ante éstas. Configuración de memoria de SQL Server y refinación en la asignación de recursos de disco. Conceptos relacionados al Modelado Oriento a objetos y Lenguaje de Modelado Unificado. Temas avanzados de bases de datos (Minería de datos, Data Warehousing, OLAP o bases de datos multidimensionales.) 3 CAPÍTULO I REPORTE DEL DIPLOMADO DE “ADMINISTRACIÓN DE BASES DE DATOS” 1.1 SISTEMAS DE INFORMACIÓN Y MODELO DE DATOS RELACIONAL Un dato es la unidad mínima de información, es un hecho sin evaluar ó un valor sin significado. La información se obtiene asociando estos hechos en un contexto determinado, también se puede definir como un conjunto de datos interrelacionados entre sí de forma que ante una entrada proporcionada por un mundo exterior produce una respuesta (salida). Así pues los sistemas de información son un conjunto de componentes que interactúan entre sí para lograr un objetivo común para la toma de decisiones. 1.1.1 BASES DE DATOS Una base de datos es un conjunto de datos relacionados entre sí, su contenido engloba a la información concerniente de una organización, de tal manera que los datos estén disponibles para los usuarios en tiempo real y sean compatibles con usuarios concurrentes. Las características de las bases de datos son: Redundancia.- Se refiere a la existencia de información repetida o duplicada innecesariamente. Dentro de una base de datos relacional la redundancia debe ser mínima y controlada. Consistencia.- Es la evaluación de las reglas del negocio, es decir, verificar que los datos estén siguiendo ciertas reglas. Es probable que surjan incongruencias al almacenar la misma información en más de un lugar; ya que al modificar, eliminar o agregar un dato,se debe realizar en cada una de las instancias del mismo con el riesgo de no realizarlo en su totalidad, generando datos inconsistentes. Integridad.- Es la facultad de poder implementar los mecanismos necesarios para que los datos guarden consistencia. Seguridad.- Hoy en día en las empresas, la información es considera como uno de los activos más valiosos e importantes, por lo que la seguridad de la misma es muy importante e implica asegurar que los usuarios están autorizados para llevar a cabo lo que tratan de hacer. 1.1.2 MODELOS DE DATOS Los modelos de datos son una colección de herramientas conceptuales utilizadas para describir los datos, las relaciones que existen entre ellos, la semántica asociada a ellos y las restricciones de consistencia. 4 En un enfoque más amplio, un modelo de datos permite describir los elementos que intervienen en una realidad o en un problema dado y la forma en que se relacionan dichos elementos entre sí. Los modelos de datos se dividen en tres grupos: lógicos basados en objetos, lógicos basados en registros y físicos de datos (Figura 1.1). Figura 1.1 Modelos de datos Los modelos lógicos basados en objetos se usan para describir datos en los niveles conceptual y de visión, es decir, con este modelo se representan los datos de tal forma como nosotros los captamos en el mundo real. Los más conocidos son el modelo entidad-relación y el orientado a objetos. Modelo entidad-relación.- Es el más utilizado para el diseño conceptual de bases de datos, permiten describir la realidad mediante un grupo de representaciones gráficas y lingüísticas. Modelo orientado a objetos.- Se basa en encapsular código y datos en una única unidad, llamada objeto. La interfaz entre un objeto y el resto del sistema se define mediante un conjunto de mensajes. Un objeto tiene asociado: un conjunto de variables que contienen los datos del objeto, un conjunto de mensajes a los que el objeto responde y un método, que es un trozo de código para implementar cada mensaje. Los modelos lógicos basados en registros se utilizan para describir datos en los niveles conceptual y físico. Estos modelos utilizan registros e instancias para representar la realidad, así como las relaciones que existen entre estos registros (ligas) o apuntadores. Los tres modelos de datos más ampliamente aceptados son: Modelo jerárquico.- En este modelo, la forma de representar las relaciones y datos es por medio de registros y sus ligas. La diferencia radica en que están organizados por conjuntos de árboles en lugar de gráficas arbitrarias donde la raíz es un nodo ficticio. Modelo de red.- Este modelo representa los datos mediante colecciones de registros, sus relaciones se representan por medio de ligas o enlaces, los cuales pueden verse como punteros. Una base de datos de red está formada por una colección de registros, los cuales están conectados entre sí por medio de enlaces. Modelo relacional.- En este modelo se representan los datos y las relaciones entre estos, a través de una colección de tablas, en las cuales los renglones (tulpas) equivalen a cada uno de los registros que contendrá la base de datos y las columnas corresponden a las características (atributos) de cada registro localizado en la tulpa. 5 Los modelos físicos de datos se usan para describir a los datos en el nivel más bajo, aunque existen muy pocos modelos de este tipo, básicamente capturan aspectos de la implementación de los sistemas de base de datos. 1.1.3 MODELO RELACIONAL En la década de los 80 comenzaron a aparecer numerosos Manejadores de Bases de Datos (DBMS) que se anunciaban como "relacionales", sin embargo, estos sistemas carecían de muchas características que se consideran importantes en un sistema relacional. En 1984 Codd publicó 12 reglas que un verdadero sistema relacional debería de cumplir, éstas se resumen en las siguientes líneas: Independencia física. El modo en el que se almacenan los datos no influye en su manipulación lógica y por tanto, los usuarios que acceden a esos datos no tienen que modificar sus programas por cambios en el almacenamiento físico. Independencia lógica. El añadir, eliminar o modificar objetos de la base de datos no repercute en los programas y/o usuarios que están accediendo a subconjuntos parciales de los mismos (vistas). Flexibilidad. El poder presentar a cada usuario los datos de la forma en que éste prefiera. Uniformidad. Las estructuras lógicas de los datos presentan un aspecto uniforme, lo que facilita la concepción y manipulación de la base de datos por parte de los usuarios. Sencillez. Las características anteriores, así como unos lenguajes de usuario muy sencillos, producen como resultado que el modelo de datos relacional sea fácil de comprender y de utilizar por parte del usuario final. En el modelo de bases de datos relacional, los datos se almacenan como tablas, llamadas relaciones. Es importante saber que las entradas en la tabla tienen un solo valor (son atómicos); no se admiten valores múltiples, todas las entradas de cualquier columna son de un solo tipo. Las relaciones están constituidas por filas (tuplas) y columnas (atributos), por ejemplo, si en la base de datos se quiere representar personas, se define una relación llamada "Personas", cuyos atributos describen las características de las mismas, cada tupla de la relación "Personas" representa una persona concreta. En la figura 1.2 se puede observar un ejemplo de estas definiciones. Figura 1.2 Relación “Personas” 6 Para distinguir una tupla de otra, se utiliza la "llave primaria", o sea un atributo o conjunto de atributos que permiten identificar unívocamente una tupla en una relación. Los atributos de la llave primaria no pueden asumir el valor nulo, cada atributo de una relación se caracteriza por un nombre y por un dominio. Las formas de normalización fueron propuestas originalmente por Codd, entre 1971 y 1972, posteriormente varios investigadores continuaron trabajando en esta teoría. Las formas normales son una serie de restricciones que se definen sobre las estructuras relacionales para evitar anomalías al efectuar adiciones, eliminaciones o actualizaciones de tuplas, así como mejorar la independencia de datos y eliminar la redundancia e inconsistencias de dependencia en el diseño de las tablas. Primera Forma Normal (1FN).- Una relación está en primera forma normal si, y sólo si, todos los dominios de la misma contienen valores atómicos, es decir, no hay grupos repetitivos. Si se ve la relación gráficamente como una tabla, estará en 1FN si tiene un solo valor en la intersección de cada fila con cada columna. Segunda Forma Normal (2FN).- Una relación está en segunda forma normal si, y sólo si, está en 1FN y, además, cada atributo que no está en la clave primaria es completamente dependiente de la clave primaria. Tercera Forma Normal (3FN).- Una relación está en tercera forma normal si, y sólo si, está en 2FN y, además, cada atributo que no está en la clave primaria no depende transitivamente de la clave primaria. 1.2 SISTEMAS MANEJADORES DE BASES DE DATOS RELACIONALES (RDBMS). Las bases de datos eran el resultado de una compleja programación y de complicados mecanismos de almacenamiento, con la popularización de la informática, la aparición de aplicaciones específicas también trajo la disponibilidad de herramientas de gestión de datos que dieron lugar a los denominados Sistemas Manejadores de Bases de Datos Relacionales, identificados por sus siglas RDBMS (Relational Data Base Management System). Un RDBMS es el conjunto de programas que permiten la definición, manipulación y control de acceso para una o varias bases de datos, es responsable de las siguientes tareas: Interactuar con el manejador de archivos.- En la base de datos, los datos se guardan en disco mediante el sistema de archivos,proporcionado comúnmente por el sistema operativo. El manejador de la base de datos, traduce las diferentes proposiciones del manejo de datos en comandos del sistema de archivos de bajo nivel, de esta forma el manejador se puede encargar del almacenamiento, recuperación y actualización de los datos. Implantación de la integridad.- Los valores de los datos que son almacenados, deben satisfacer ciertas limitantes de consistencia, estas limitantes deben ser determinadas por el administrador, pero es el manejador el encargado de verificar que las actualizaciones que se hagan a la base de datos cumplan con dichas normas. Puesta en práctica de la seguridad.- El manejador de la base de datos es quien verifica que los accesos sean realizados por las personas autorizadas. 7 Respaldo y recuperación.- Entre las labores que debe ejecutar el manejador está la de verificar de forma constante la integridad de la base de datos y lograr recuperación de datos y/o mejoras en caso que se requieran. Control de concurrencia.- Se podría entender como la principal tarea del manejador o por lo menos la más difícil. Cuando varios usuarios están accediendo la base de datos al mismo tiempo, es posible que la consistencia de los datos no se conserve. El manejador debe encargarse de coordinar los accesos de los diferentes usuarios, de forma que los datos no se dañen. Cuando un usuario realiza una operación, dentro del RDBMS se presentan las siguientes acciones (Figura 1.3) - El usuario hace una solicitud que se traduce a una petición SQL. - El RDBMS interpreta y analiza la petición, verifica sintaxis del SQL. - El RDBMS checa que exista la base de datos, verifica los permisos del usuario. - El RDBMS verifica que existan las tablas y elementos. - El RDBMS ejecuta las operaciones necesarias sobre la base de datos. - El RDBMS devuelve resultados al usuario. Figura 1.3 Funcionamiento del RDBMS 1.2.1 ARQUITECTURA Y NIVELES DE SEGURIDAD DE LOS SISTEMAS MANEJADORES DE BASES DE DATOS Hay tres características importantes inherentes a los sistemas de bases de datos: 1. La separación entre los programas de aplicación y los datos. 2. El manejo de múltiples vistas por parte de los usuarios 3. El uso de un catálogo para almacenar el esquema de la base de datos. En 1975, el comité ANSI-SPARC (American National Standard Institute - Standards Planning and Requirements Committee) propuso una arquitectura de tres niveles para los sistemas de bases de datos, el objetivo de esta arquitectura es el de separar los programas de aplicación de la base de datos física. 8 En esta arquitectura, el esquema de una base de datos se define en tres niveles de abstracción distintos: 1. En el nivel interno se describe la estructura física de la base de datos mediante un esquema interno. Este esquema se especifica mediante un modelo físico y describe todos los detalles para el almacenamiento de la base de datos, así como los métodos de acceso. 2. En el nivel conceptual se describe la estructura de toda la base de datos para una comunidad de usuarios mediante un esquema conceptual. Este esquema oculta los detalles de las estructuras de almacenamiento y se concentra en describir entidades, atributos, relaciones, operaciones de los usuarios y restricciones. En este nivel se puede utilizar un modelo conceptual o un modelo lógico para especificar el esquema. 3. En el nivel externo se describen varios esquemas externos o vistas de usuario. Cada esquema externo describe la parte de la base de datos que interesa a un grupo de usuarios determinados y oculta a ese grupo el resto de la base de datos. En este nivel se puede utilizar un modelo conceptual o un modelo lógico para especificar los esquemas. En lo que se refiere al acceso en el Sistema Manejador de Base de Datos (DBMS), se puede encontrar un acceso multicapas (Figura 1.4): - Acceso a Nivel Servidor. El usuario final debe tener una cuenta válida dentro de la capa del servidor (DBMS). - Acceso a Nivel de Base de Datos. El usuario final debe ser un usuario válido dentro de la capa de la base de datos. - Acceso a Nivel de Permisos sobre Objetos y Comandos. El usuario final deberá tener permiso dentro de la capa de los datos. Figura 1.4 Acceso multicapas Por otro lado, los componentes que se manejan dentro de los Sistemas Manejadores de Bases de Datos son (Figura 1.5): - DDL o Lenguaje de Definición de Datos - DML o Lenguaje de Manipulación de Datos - DCL o Lenguaje de Control de Datos - DD o Diccionario de Datos 9 Figura 1.5 Arquitectura de los RDBMS 1.2.2 TIPOS DE DATOS Y USUARIOS Los tipos de datos SQL se clasifican en 13 tipos primarios y de varios sinónimos válidos reconocidos por dichos tipos de datos dependiendo del DBMS (Tabla 1.1). Tipo de Datos Longitud Descripción BINARY 1 byte Para consultas sobre tabla adjunta de productos de bases de datos que definen un tipo de datos Binario. BIT 1 byte Valores Si/No ó True/False BYTE 1 byte Un valor entero entre 0 y 255. COUNTER 4 bytes Un número incrementado automáticamente (de tipo Long) CURRENCY 8 bytes Un entero escalable entre 922.337.203.685.477,5808 y 922.337.203.685.477,5807. DATETIME 8 bytes Un valor de fecha u hora entre los años 100 y 9999. SINGLE 4 bytes Un valor en punto flotante de precisión simple con un rango de - 3.402823*1038 a -1.401298*10-45 para valores negativos, 1.401298*10- 45 a 3.402823*1038 para valores positivos, y 0. DOUBLE 8 bytes Un valor en punto flotante de doble precisión con un rango de - 1.79769313486232*10308 a -4.94065645841247*10-324 para valores negativos, 4.94065645841247*10-324 a 1.79769313486232*10308 para valores positivos, y 0. SHORT 2 bytes Un entero corto entre -32,768 y 32,767. LONG 4 bytes Un entero largo entre -2,147,483,648 y 2,147,483,647. LONGTEXT 1 byte por carácter De cero a un máximo de 1.2 gigabytes. LONGBINARY Según se necesite De cero 1 gigabyte. Utilizado para objetos OLE. TEXT 1 byte por carácter De cero a 255 caracteres. Tabla 1.1 Tipos de datos de SQL Los tipos de usuarios en una base de datos son los siguientes: El programador de aplicaciones, quien se encarga de escribir los programas de aplicación que utilizan la base de datos. El usuario final, el cual tiene acceso a los datos de la base a través de alguna aplicación desarrollada o utilizando una interfaz incluida como parte integral de los programas del DBMS. 10 El DBA (database administrator, Administrador de la base de datos). Los roles o perfiles sirven como medio para conceder privilegios sobre todo el sistema a un usuario que los requiera. Estos permisos pueden verse reflejados sobre objetos o sobre el mismo sistema. En los RDBMS ya vienen predeterminados algunos, sin embargo no en todos se pueden crear nuevos roles. 1.3 LENGUAJE ESTRUCTURADO DE CONSULTA SQL El lenguaje por excelencia de los diversos RDBMS es el SQL, fue estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de este lenguaje, al año siguiente este estándar también fue adoptado por la ISO, desde entonces se le han realizado revisiones para incorporar nueva funcionalidad conforme la industria de las bases de datos lo va requiriendo. Una de las revisiones más importantes fue la de 1992, conocida como ANSI SQL92. El SQL es una herramienta que sirve para organizar, gestionar y recuperar datos almacenados en una base de datos informática, su nombre es una abreviatura de “Structured Query Languaje” (Lenguaje de consultas estructurado), se puede utilizar para interaccionar con una base de datos y más concretamente con un tipo especifico llamado base de datos relacional. 1.3.1 DEFINICIÓN DE DATOS Para trabajar con SQL, es necesario conocer los elementos que intervienen en la definición de la información en una base de datospara poder manipularla de manera adecuada. Los comandos utilizados para la definición de datos son los siguientes: - create.- Utilizado para crear nuevas bases de datos, tablas, campos, índices, vistas, defaults, reglas, procedimientos, cursores, triggers. - alter.- Utilizado para modificar la estructura de una tabla para agregar campos o constraint. - drop.- Utilizado para eliminar bases de datos, tablas, campos, índices, vistas, defaults, reglas, procedimientos, cursores, triggers. Las llaves e índices ayudan al Servidor SQL a localizar datos, proporcionan un acceso más rápido a los mismos y son transparentes para el usuario. Abusar del empleo de índices también puede llevar a que se degrade el tiempo de respuesta del servidor en lugar de mejorarlo, esto se debe a que en operaciones que involucran inserción, modificación o eliminación de datos, los índices también deben ser actualizados, lo cual puede consumir un tiempo considerable. Por lo general se suelen crear índices únicamente cuando las tablas tienen un tamaño considerable. En un esquema relacional, cada registro dentro de una tabla debe de ser identificado de manera única, y esto se logra a través de una llave primaria, a la cual se le genera de manera automática un índice, que ayuda a ser más eficiente el proceso de consulta de la información. 11 Las reglas dentro de la base de datos, permiten definir condiciones que debe cumplir la información para que sea válida. En la práctica, muchas de estas reglas no se definen en la base de datos, sino mediante la lógica de una aplicación desarrollada en algún lenguaje que tiene acceso a la información, ya que el exceso de reglas, puede disminuir el rendimiento del RDBMS en los procesos de inserción y modificación de información. Los defaults establecen qué valor será registrado de manera predeterminada para una columna, en caso de que no se especifique al momento de introducir los datos, su funcionalidad también puede implementarse utilizando la lógica de la aplicación. En algunos RDBMS los defaults son objetos que se pueden emplear en diferentes tablas, mientras que en los demás, están ligados a la definición de las mismas. 1.3.2 MANIPULACIÓN DE DATOS La mayor parte del trabajo con SQL gira en torno a cuatro comandos: - select. Permite realizar consultas a la base de datos. - insert. Empleado para agregar registros a una tabla. - update. Utilizado para modificar los valores de los campos de una tabla. - delete. Utilizado para eliminar los valores de los campos de una tabla. Para el empleo de cualquiera de los comandos antes mencionados es indispensable tomar en cuenta dos puntos: 1. Para expresar un valor de tipo alfanumérico o fecha, es requisito entrecomillarlo con comillas simples. 2. Todo valor que no se especifique entre comillas simples, será interpretado como tipo de dato numérico. SQL se basa en el álgebra relacional, por ello es importante conocer las operaciones del álgebra relacional y su relación con SQL. 1.3.2.1 Selección de datos Las consultas de selección se utilizan para indicarle al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros. Para la selección de datos se utilizan las siguientes operaciones: Selección (Restricción) Proyección Producto Cartesiano 12 La operación de selección genera un subconjunto de los renglones de una tabla, con base en un criterio (restricción) establecido. Esta operación del álgebra relacional es realizada por la cláusula WHERE de SQL la cual permite delimitar los registros que serán mostrados en la consulta, a través de criterios o condiciones. El valor NULL es un valor especial por lo cual se debe tener sumo cuidado cuando se desee utilizar condiciones con NULL. La única forma de comparar contra un valor NULL es utilizar el operador IS o IS NOT. La proyección selecciona y genera un subconjunto con los atributos (columnas) indicados de una tabla. Esta operación es realizada por la cláusula SELECT del SQL que indica que la instrucción a ejecutar es una consulta a la base de datos. SELECT permite indicar el nombre de los campos que se quieren mostrar en la consulta. En caso de querer mostrar todos los campos de una tabla se emplea el comodín asterisco: *. Cuando se realiza una consulta que involucra dos o más tablas, al nombre de cada campo se le antepone el de la tabla a la que pertenece. <nombre_tabla>.<nombre_campo> El producto cartesiano es el producto cruz entre 2 tablas. El resultado es la combinación de cada renglón de una tabla con cada renglón de la otra tabla. En SQL esta operación se lleva a cabo cuando se ocupa la cláusula FROM especificando 2 o más tablas, y no se especifica una restricción que indique la relación entre las tablas. Cuando una consulta involucra dos o más tablas, es indispensable establecer las relaciones que existen entre ellas (join) mediante una cláusula WHERE, así mismo es necesario especificar de cual tabla es el campo que se desea mostrar. Es frecuente el uso de seudónimos para las tablas, con la finalidad de simplificar la escritura de la consulta. El seudónimo se coloca inmediatamente después del nombre de la tabla. <tabla> [seudónimo] 1.3.2.2 Inserción de datos A través de la instrucción insert de SQL, se introduce la información a una tabla. La estructura general de este comando es la siguiente: INSERT INTO <tabla> [(<nombreCampo1>, <nombreCampo2>, <nombreCampo3> ...)] {VALUES (<valorCampo1>, <valorCampo2>, <valorCampo3> ... ) | <Expresión select> } Existen dos cláusulas relacionadas con esta instrucción: Cláusula INTO. Cláusula VALUES La cláusula INTO permite indicar la tabla en donde se realizará la inserción. Únicamente se puede especificar una tabla a la vez. Después del nombre de la tabla puede o no ir el nombre de los 13 campos donde se va insertar información, esto es opcional (pero el omitirlos le puede restar legibilidad a la instrucción). Si no se especifica el nombre de los campos que se van a insertar, el DBMS identifica que se desea insertar información en cada uno de los campos, en el orden definido por la estructura de la tabla. La cláusula VALUES permite especificar los valores a insertar para cada uno de los campos involucrados en la sentencia. 1.3.2.3 Actualización y eliminación de registros. La cláusula delete permite indicar que la operación a realizar es una eliminación de registros, esta instrucción, elimina registros de la tabla indicada con la posibilidad de indicar un criterio, en caso de omitirlo, se eliminan todos los registros de la tabla. La cláusula update es la que indica que la operación a ejecutar es una actualización. Después de la cláusula se especifica el nombre de la tabla en donde se encuentra la información que se desea modificar. Sólo se puede especificar una tabla a la vez. Si no se especifica una condición con la cláusula WHERE, todos los registros que existan en la tabla se actualizarán. UPDATE empleado SET salario_empleado = 27000, edad = 27 WHERE id_empleado = 12 La cláusula SET permite especificar los campos que se desean modificar y su nuevo valor. La cláusula se coloca una sola vez aunque sean varios campos los que se deseen modificar. 1.3.3 CONTROL DE DATOS Uno de los componentes de un RDBMS es el DCL (Data Control Language) que permite controlar y establecer restricciones de acceso a la información contenida en la base de datos. Es tarea del administrador de la base de datos el asignar o revocar permisos y/o crear usuarios. Se pueden controlar los privilegios a los usuarios de creación de objetos en la base de datos, así como la manipulación de la información contenida en ella, mediante los siguientes comandos: - grant. Permite otorgar permisos a los usuarios sobre los objetos definidos en la base de datos, así comolas operaciones a utilizar sobre ellos. - revoke. Permite revocar permisos sobre los objetos definidos en la base de datos y las operaciones sobre los mismos. 1.3.4 MANEJO DE TRANSACCIONES, PROCEDIMIENTOS ALMACENADOS Y TRIGGERS Una transacción puede comprender una o más instrucciones SQL y a su vez es atómica porque todas las instrucciones de SQL deben completarse con éxito, o ninguna de ellas. Una vez que el RDBMS determina que la transacción fue exitosa, es necesario que la información sea almacenada de manera permanente. 14 Una base de datos transaccional garantiza que todas las operaciones realizadas en una transacción sean guardadas en almacenamiento permanente antes de que ésta sea reportada como completada, previniendo así, perdida de información por fallas del equipo, por ejemplo en un corte del suministro de energía. Cuando múltiples usuarios realizan transacciones de manera concurrente, cada uno de ellos no debe ver los cambios incompletos realizados por los demás. En el momento que una transacción finaliza adecuadamente y es almacenada permanentemente, los cambios se vuelven visibles para todos los demás usuarios. El comando commit permite indicar que los cambios a realizar dentro de una transacción sean llevados a cabo de manera permanente, y el comando rollback permite deshacer los cambios. El RDBMS reserva un espacio de almacenamiento, donde registra todas las instrucciones de SQL que se deben de ejecutar. De esta manera, es posible deshacer los cambios realizados por operaciones UPDATE, DELETE o INSERT. Un procedimiento almacenado es un conjunto de comandos de SQL que pueden ser compilados y almacenados en el servidor. Una vez realizado esto, los clientes no necesitan volver a teclear todas las instrucciones sino únicamente hacer referencia al procedimiento. Esto mejora el rendimiento del servidor, ya que la instrucción de SQL solamente es revisada una sola vez y menos información debe ser enviada entre el cliente y el servidor. El lenguaje que se emplea para programar los procedimientos almacenados, varía de un RDBMS a otro, y existen algunos que permiten programar en más de un lenguaje. Las variables son elementos fundamentales en la programación de procedimientos, deben ser declaradas al inicio del programa, antes de ser utilizadas. Las variables locales sólo existen durante la ejecución del procedimiento donde son declaradas; cuando éste termina, son eliminadas. Un trigger es un procedimiento almacenado que es invocado cuando un evento en particular ocurre. Por ejemplo, se puede ejecutar (disparar) un procedimiento almacenado cada vez que se borre, actualice o inserte un registro. Los procedimientos almacenados que se invocan tienen la restricción de que no pueden manejar parámetros ni ser invocados directamente. En algunos RDBMS, los triggers, al ser disparados, crean dos tablas temporales a las cuales sólo se puede acceder dentro del trigger, y poseen la misma estructura de la tabla a la que está ligada. Estas tablas son: Inserted y Deleted. (Tabla 1.2) Tabla Contenido En Triggers Inserted Contiene los registros que se van a agregar a la tabla, como resultado de los comandos Insert y Update. Insert, Update Deleted Contiene los registros que se van a eliminar de la tabla, como resultado de los comandos Delete y Update Delete, Update Tabla 1.2 Tablas temporales de Triggers 15 1.4 PROGRAMACIÓN DE CLIENTES Un cliente es una aplicación cuyo principal objetivo es facilitarle al usuario la manipulación, definición y control de acceso a las Bases de Datos. Los clientes que con más frecuencia se programan son aplicaciones web (www), ya que uno de los objetivos de las Bases de Datos es que la información esté accesible para varios usuarios al mismo tiempo desde donde sea y en cualquier momento. El servicio Web o www es una forma de representar la información en Internet basada en páginas. Una página www puede incluir tres tipos de información: texto, gráficos e hipertexto. Un hipertexto es texto resaltado que el usuario puede activar para cargar otra página WWW. La diferencia entre un documento hipertexto y un documento normal consiste en que el hipertexto contiene, además de la información, una serie de enlaces o conexiones con otros documentos relacionados, de manera que el lector puede pasar de un tema a otro y volver al documento original en el momento en que le interese. 1.4.1 HTML HTML, Hyper Text Markup Language, es un lenguaje simple utilizado para crear documentos de hipertexto para www. Todos los documentos www comparten un mismo aspecto y una única interfaz, esto es posible porque el lenguaje HTML, en que están escritos los documentos, no solo permite establecer hiperenlaces entre diferentes documentos, sino que es un "lenguaje de descripción de página" independiente de la plataforma en que se utilice. Es decir, un documento HTML contiene toda la información necesaria sobre su aspecto y su interacción con el usuario, y luego el browser que se utilice es el responsable de asegurar que el documento tenga un aspecto coherente, independientemente del tipo de estación de trabajo desde se esté efectuando la consulta. Las etiquetas o tags que controlan el comportamiento del documento son fragmentos de texto encerrados entre los signos "mayor que" y "menor que" (<etiqueta>). Existen diferentes tipos de etiquetas: algunas controlan simplemente la presentación del texto del documento; otras, la forma en que se incluyen en él imágenes; y finalmente, los hiperenlaces con documentos o con diferentes partes del mismo documento. En la tabla 1.3 se mencionan algunas de las etiquetas de mayor uso en la elaboración de páginas web. ETIQUETA FUNCIONAMIENTO <IMG> Es la etiqueta que permite incluir imágenes. Esta etiqueta debe ir junto con el atributo SRC que permite dar la dirección del archivo gráfico que contiene la imagen. <FORM> </FORM> Definen un formulario y entre ellas se sitúan todas las marcas que generan los diversos elementos que componen un formulario. <A> </A> En HTML se define una zona activa (puede ser un texto o una imagen) que se asocia al URL del documento que sustituirá al documento visualizado cuando se haga clic sobre esa zona. <TEXTAREA> </TEXTAREA> Permite crear una ventana con barras de desplazamiento horizontales y verticales en la que se puede escribir texto. El valor dado a los atributos ROWS (líneas) y COLS (columnas) delimita el tamaño de esta ventana. <SELECT> </SELECT> Permite generar listas de selección simple o de selección variable. Tabla 1.3 Etiquetas de mayor uso en HTML 16 1.4.2 PHP PHP es un lenguaje interpretado de propósito general, ampliamente usado y está diseñado especialmente para desarrollo web y puede ser incrustado dentro de código HTML. Cuando el cliente hace una petición al servidor para que le envíe una página web, el servidor ejecuta el intérprete de PHP. Éste procesa el script solicitado que generará el contenido de manera dinámica (por ejemplo obteniendo información de una base de datos). El resultado es enviado por el intérprete al servidor, quien a su vez se lo envía al cliente. La figura 1.6 muestra la manera en cómo funciona una aplicación web. Figura 1.6 Funcionamiento de una aplicación web Algunas de las características más importantes de PHP son: - Es un lenguaje multiplataforma. - Completamente orientado a la web. - Capacidad de expandir su potencial utilizando la enorme cantidad de módulos (llamados ext's o extensiones). - Posee una amplia documentación en su página oficial, entre la cual se destaca que todas las funciones del sistema están explicadas y ejemplificadas en un único archivo de ayuda. - Es libre, por lo que se presenta como una alternativa de fácil acceso para todos. - Permite aplicar técnicas de programación orientada a objetos. - Biblioteca nativa de funciones sumamente ampliae incluida. - No requiere definición de tipos de variables aunque sus variables se pueden evaluar también por el tipo que estén manejando en tiempo de ejecución. 1.4.3 PROYECTO FINAL DEL MÓDULO PROGRAMACIÓN DE CLIENTES. En este módulo se desarrolló un proyecto cuyo objetivo fue la conexión a una base de datos a través de la programación así como la obtención de información a través de consultas SQL. 17 La primer pantalla es la de login en la cual es necesario introducir “usuario” y contraseña (Figura 1.7). Figura 1.7 Pantalla de login Si se introducen datos incorrectos, la pantalla mostrará que hubo un error al querer ingresar al sistema. Una vez dentro de la aplicación, lo primero que se muestra es una pantalla conformada de 4 “frames” así como de un encabezado y un pie. En el cuerpo de la pantalla del lado izquierdo (el primer frame), despliega una lista de las bases de datos que se encuentran disponibles para realizar consultas (Figura 1.8). Figura 1.8 Listado de Bases de datos 18 Al momento de seleccionar la base de datos, en el segundo frame de izquierda a derecha, despliega la lista de tablas que conforman la base de datos seleccionada. Una vez que se despliegan las tablas que corresponden a la base de datos seleccionada, se muestra de qué campos se compone cada una de ellas. Esto se ve en el 3er frame. Y por último en el 4to. Frame se encuentra una caja en la que se puede introducir la consulta que se requiera realizar sobre la Base de datos seleccionada. (Figura 1.9). Figura 1.9 Estructura general Una vez tecleada la consulta, en una nueva pantalla se arroja el resultado de la misma (Figura 1.10). Figura 1.10. Resultado de la consulta 1.5 FUNDAMENTOS DE SISTEMAS OPERATIVOS El sistema operativo es un programa que actúa como intermediario entre el usuario y el hardware de una computadora y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. EL S.O. controla todos los recursos de la computadora y proporciona la base sobre la que pueden escribirse los programas de aplicación. Bases de Datos Tablas que conforman la Base de Datos seleccionada. Caja para introducir las consultas seleccionada. Campos de los que está formada la tabla seleccionada. 19 Un sistema operativo está formado por varios programas que en conjunto presentan al usuario una vista integrada del sistema, los componentes principales de un sistema operativo son los siguientes módulos: - Administrador de procesos. (scheduler). - Administrador de E/S. - Administrador de la Memoria. - Manejo del Sistema de Archivos. 1.5.1 UNIX Unix es un sistema operativo portable, multitarea y multiusuario, este sistema comenzó en 1969 como un proyecto de investigación de AT&T, con el tiempo, UNIX se dividió en varias ramas de sistema, siendo las dos principales, la que derivaba del AT&T UNIX, y la de la universidad de California, el BSD. Superadas las querellas de licencias entre BSD y AT&T, desde hace unos años los fabricantes han tomado el código fuente público de AT&T, BSD o ambos para comenzar a partir de ellos sus propios desarrollos. Esto ha originado un sin número de variantes. El desarrollo más reciente ha sido el advenimiento de Linux, a partir de un núcleo (kernel) diseñado por Linus Torvalds, en 1991. 1.5.1.1 Administración de Linux El objetivo principal del administrador de sistemas consiste en “proporcionar y mantener acceso a los recursos del sistema.” Todos los comandos en Unix y Linux siguen el siguiente formato: comando opciones argumentos A continuación se muestra en forma resumida en qué consisten las tareas de administración en los sistemas GNU/LINUX (o UNIX). Arranque y apagado del sistema: cualquier sistema basado en UNIX tiene unos sistemas de arranque y apagado valorables, de manera que podemos configurar qué servicios se ofrece en el arranque de la máquina y cuándo hay que pararlos, o programar el apagado del sistema para su mantenimiento (Tabla 1.4) COMANDOS DE ARRANQUE Y APAGADO reboot reinicia la maquina startx arranca el servidor x halt apaga el sistema exit cierra la sesión actual shutdown apaga el sistema Tabla 1.4 Comandos de arranque y apagado 20 Gestión de usuarios y grupos: dar cabida a los usuarios es una de las principales tareas de cualquier administrador. Habrá que decidir qué usuarios pueden acceder al sistema, de qué forma y bajo qué permisos; y establecer comunidades mediante los grupos (Tabla 1.5) COMANDOS DE GESTIÓN DE USUARIOS adduser agrego nuevo usuario set da información sobre el entorno del usuario userdel borra un usuario groupadd agrego nuevo grupo who muestra los usuarios del sistema su cambio de usuario chown cambio de propietario chmod cambio permisos a archivos y directorios chgrp cambio de grupo Tabla 1.5 Comandos de gestión de usuarios Gestión de discos: la computadora puede disponer de diferentes recursos de almacenamiento de datos y dispositivos (disquetes, discos duros, ópticos, etc.), con diferentes sistemas de acceso a los archivos (Tabla 1.6) COMANDOS DE DISCOS mount monta un disco mkfs formatea un disco umount desmonta un disco fsck estado del disco fdisk gestión de particiones df muestra el espacio libre de los discos du muestra el espacio usado por el disco o un directorio Tabla 1.6 Comandos de discos Procesos del sistema: cualquier recurso que vaya a ser compartido tiene que ser administrado, y según la cantidad de usuarios, se debe establecer un sistema de cuotas para evitar el abuso de los recursos por parte de los usuarios o establecer clases (o grupos) de usuarios diferenciados por mayor o menor uso de recursos (Tabla 1.7) COMANDOS DE PROCESOS top muestra los procesos que se están ejecutando y permite matarlos time mide el tiempo que tarda un proceso en ejecutarse ps muestra la lista de procesos del usuario fg trae a primer plano un proceso parado o en segundo plano kill mata proceso por ID bg pone un proceso en segundo plano killall mata proceso por nombre Tabla 1.7 Comandos de procesos Seguridad del sistema: seguridad local, sobre protecciones a los recursos frente a usos indebidos o accesos no permitidos a datos del sistema o de otros usuarios o grupos. Una de las primeras cosas que intentan los intrusos de un sistema como vía para explotar la cuenta de root es obtener acceso a una cuenta de usuario local. 21 Algunas buenas prácticas sobre permitir a otras personas el acceso al sistema Linux son: - Darles la cantidad mínima de privilegios que necesiten. - Ser conscientes desde, cuándo y dónde se conectan o se deberían estar conectando. - Asegurarse de borrar las cuentas inactivas. Sólo se debe usar la cuenta de root para tareas muy cortas y específicas, la mayoría de los programas se deben ejecutar como un usuario normal. Incluso los pequeños errores que se cometan como root pueden causar problemas. En la tabla 1.8 se muestran algunos comandos de uso general: COMANDOS DE ARCHIVOS Y DIRECTORIOS ls lista los archivos y directorios ln crea enlaces a archivos o carpetas cp copia archivo tar empaqueta archivos rm borra archivos gzip comprime archivos gz mv mueve o renombra archivos y directorios gunzip descomprime archivos gz more muestra el contenido de los archivos por pantalla vi abre el editor de texto vi less muestra el contenido de los archivos pico edita un fichero de texto whereis muestra la ubicación de un archivo split parte ficheros whatis muestra descripción del archivo find busca archivos grep busca un texto en archivos mkdir crea un directorio join cruza la información de dos archivos y muestra las partes que se repiten rmdir borra directorios cd cambia de directorio cut sirve para seleccionar columnas de una tabla o campos de cada línea de archivo pwd muestrael path actual Tabla 1.8 Comandos de archivos y directorios 1.5.1.2 GNU/LINUX GNU/Linux se refiere al núcleo o kernel del sistema operativo más un conjunto de programas que permiten compilar lenguajes de programación, interpretar comandos, manejar archivos y discos, acceder a otras máquinas, enviar y recibir correo electrónico y un sinfín de tareas más. GNU/Linux fue diseñado teniendo en mente los siguientes objetivos: Crear un sistema interactivo de tiempo compartido diseñado por programadores y para programadores, destinado a usuarios calificados. Que fuera sencillo, elegante, escueto y consistente. Que permitiera resolver problemas complejos combinando un número reducido de comandos básicos. 22 Los objetivos con que se creó determinaron una “filosofía” caracterizada por: Comandos cortos, simples, específicos y muy eficientes, que “hacen una sola cosa pero la hacen muy bien”. Entrada y salida estandarizadas que permiten la interconexión de comandos. Esto se llama entubamiento (“pipelining”): la salida de un comando es tomada por el siguiente como entrada. Todo es un archivo. 1.5.2 WINDOWS 2000 SERVER Windows 2000 Server es una versión del Sistema Operativo de Microsoft, sirve para gestionar y administrar una red. Dentro de las tareas que puede realizar están: crear cuentas de usuarios, asignar recursos y privilegios, actuar como servidor web, FTP, DNS o resolución de nombres de dominio, entre otros servicios básicos. Otra de las funciones que tiene, como en todo sistema windows es la opción de utilizarlo como una estación de trabajo más de la red. Su principal punto fuerte es el Active Directory (Directorio Activo), que es una herramienta desde la cual se puede administrar toda la infraestructura de una organización, se puede llevar a cabo el control y la administración centralizada de todos los usuarios del dominio de la red. Windows 2000 está clasificado como un sistema operativo de kernel híbrido, y su arquitectura está dividida en dos modos: Modo usuario y modo kernel. El modo kernel provee acceso sin restricciones a los recursos del sistema y facilita el modo usuario, el cual es estrictamente restrictivo y diseñado para la mayoría de las aplicaciones. La versión comercial de Windows 2000 es capaz de reconocer y dar soporte a multitud de dispositivos, asignando de forma automática los recursos e instalando los controladores. El reconocimiento del hardware es la parte más larga de la instalación. Una vez terminada la copia de archivos y controladores, el sistema se reinicia y se entra en la fase de configuración, creación de accesos y registro de componentes. Las características más importantes de Windows 2000 server son: - Multiusuario. Brinda servicio y procesamiento a múltiples usuarios simultáneamente. - Multitarea. Permite que varios procesos sean ejecutados al mismo tiempo compartiendo uno o más procesadores. - Multiproceso. El uso de múltiples procesos concurrentes en un sistema en lugar de un único proceso en un instante determinado. - Multihilo. Tienen soporte en hardware para ejecutar eficientemente múltiples hilos de ejecución. Un hilo de ejecución, es una característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente). 23 1.6 HABILIDADES DIRECTIVAS Un Administrador de Base de Datos debe contar con aptitudes técnicas para el manejo del sistema con el que trabaje, además es conveniente tener nociones de administración, manejo de personal e incluso un cierto grado de diplomacia. Las personas formamos parte de un sistema que integra recursos técnicos, humanos y materiales destinados a lograr objetivos comunes. Es necesario desarrollar la habilidad para comunicarnos con las personas con las que colaboramos, descubrir sus capacidades, comprender las necesidades del grupo y obtener lo mejor de cada persona en el desempeño grupal. 1.6.1 LIDERAZGO Y ESTILOS DE COMUNICACIÓN Existen 3 tipos distintos de comunicación: - Visual: Pensar con imágenes. Representar las ideas, los recuerdos y la imaginación mediante imágenes mentales. - Auditivo: Pensar con sonidos. Los sonidos pueden ser voces o ruidos, por ejemplo, el gorgoteo del café en la cafetera. - Cinestésico: Representar los pensamientos como sentimientos internos o sensaciones físicas. El sabor y el olor se incluyen en esta categoría sensorial. Un buen comunicador utiliza de forma natural el estilo que mejor encaja con las preferencias de su interlocutor, así tiene la certeza de hablar un mismo idioma y de que su interlocutor le entiende. Para llegar a ser un buen líder (Figura 1.11) se requiere reconocer tres áreas de resultados igualmente importantes: - Tareas: Donde se trata de lograr resultados específicos, en la cantidad, con calidad y la oportunidad requeridas. - Grupos: Donde se requiere ocuparse de los individuos a su cargo para asegurar su capacitación, motivación y progreso. - Equipos: Donde debe asegurarse su integración y desarrollo, así como un clima de comunicación y colaboración. Figura 1.11 Un buen líder 24 1.6.2 PRESENTACIONES Y REUNIONES EFECTIVAS Las diapositivas son solamente una ayuda audio visual, por lo que deben contener sólo información clave que debe ser ampliada durante la presentación oral. No existe una regla específica sobre la cantidad de información adecuada para cada diapositiva. Se deben diseñar diapositivas agradables, con buena combinación entre los colores del fondo y el texto de la misma. Para una lectura más fácil, debe existir un contraste entre el texto y el fondo. En una presentación es posible incluir videos, sonido, transiciones de diapositivas, imágenes fijas y con movimiento, objetos voladores y gráficos. Tamaño: Por lo general para presentaciones con una audiencia mediana es recomendable utilizar tamaños no menores a 24 puntos para que las personas no tengan dificultad tratando de leer las diapositivas. Tipo de letra: Para no recargar visualmente la presentación hay que tratar de utilizar solamente un tipo de letra, si se considera muy necesario se puede utilizar como máximo dos tipos. El lenguaje corporal es de suma importancia para la realización de presentaciones efectivas. Cuando se muestra una diapositiva, se tiene que alternar la atención entre la diapositiva y el contacto visual con la audiencia. Los pasos a seguir para organizar una reunión de trabajo efectiva son los siguientes: 1. Fijar el objetivo de la reunión para que se pueda preparar y llevar a cabo con mayor rapidez y acierto. 2. Hacer una lista detallada de asuntos por tratar para lograr reuniones más cortas y productivas. Solo existen tres razones para que un tema figure en una orden del día: a. Para informar b. Para generar una acción c. Para tomar una decisión La forma en que se deben organizar los temas a tratar en una reunión es: - Los asuntos urgentes y que requieren ideas brillantes o soluciones creativas deben encabezar la lista porque las personas se encuentran más atentas y creativas durante los primeros 15 o 20 minutos de una reunión. - Pasados 20 minutos, deben introducirse temas que provoquen reacciones fuertes para que las personas se interesen por el asunto a pesar del cansancio mental. - Asignar tiempos para la revisión de cada tema. 3. Elaborar y distribuir con antelación la orden del día y la documentación, permite a los asistentes prepararse en forma adecuada. 25 4. Dirigir la reunión, reducir su duración y duplicar su eficacia. - La habilidad en el trato con los demás es igualmente importante para sacar el máximo partido de las reuniones. - Anticiparse y prepararse para los posibles problemas y conflictos que puedan surgir en la reunión, ayuda a que se reaccione mejor ante ellos. - Iniciar puntualmente la reunión. Durante las reuniones se debe evitar:- Diálogos del moderador con algunos asistentes. - Conversaciones entre los asistentes. - Varias personas hablando al mismo tiempo. - Discusiones en torno a un tema ajeno a la agenda. - Que los comentarios y discusiones versen sobre las personas y no sobre asuntos e ideas. En cuanto a la distribución de los asistentes a la reunión se deben seguir los siguientes consejos: En reuniones para la resolución de problemas que implican compartir ideas y contribuciones, se sugiere una formación de círculo. Así, cada persona tiene una ubicación equitativa y no existe una cabecera de mesa que sugiera desde el inicio una suerte de liderazgo. Para una reunión en la que se requiere tomar una decisión respecto de acciones específicas, lo adecuado es disponer a los asistentes en torno a una mesa rectangular, de modo que desde el principio se establezca claramente una posición de liderazgo. Cuando dos personas acostumbran tener ideas encontradas y están en constante desacuerdo, lo aconsejable es sentarlas una al lado de otra, de manera que sea menor la cantidad de contacto visual que puedan tener. Esto reduce el nivel de argumento y hostilidad. 1.6.3 DEFINICIÓN DE METAS Los siguientes pasos indican cómo definir metas de la mejor manera: Paso 1. Identificación del objetivo Hay dos aspectos fundamentales en la identificación de objetivos que generalmente son descuidados: Deben ser específicos y mensurables.- La especificidad y mensurabilidad, son claves cuando se está tratando de ejecutar un proyecto, no basta con establecer que se van a generar utilidades con este o aquel desarrollo, hay que determinar el monto específico de ganancias que se generarán. Deben establecerse positivamente.- De tal forma que se vean como hechos ya consumados. 26 Paso 2. Identificación de los beneficios y los beneficiarios Ya identificados los objetivos se procede a determinar cuáles serán los beneficios que se obtendrán. Al alcanzar metas se están dando pasos hacia un mejor estado, sea cual fuere el ámbito en el que se establezcan las metas siempre habrán beneficios y siempre habrá alguien que obtenga estos beneficios; si son generales, perfecto; si son particulares, hay que identificarlos y enlistarlos para poder darlos a conocer. Paso 3. Fijación de límites de tiempo Se deben fijar límites de tiempo para la consecución de cada objetivo. Cuando se establece un determinado lapso de tiempo se crea sentido de urgencia para realizar las acciones a que haya lugar. Es adecuado elaborar cronogramas que permitan dividir el objetivo en partes, así se cierra la posibilidad de sentir que no se podrá conseguir el objetivo final, ya que se estará trabajando en el día a día por conseguir objetivos más pequeños que sumados permitirán lograr el más importante. Paso 4. Identificación de los principales obstáculos Si lo que se quiere es alcanzar metas, entonces hay que saber cuáles son los posibles problemas que se pueden encontrar en el camino hacia su consecución, de otro modo no se podrán realizar planes o adelantar estrategias para resolverlos. Paso 5. Identificación de las habilidades y el conocimiento requerido Ya que se conocen cuáles son los problemas a enfrentar, hay que determinar qué habilidades y conocimientos son requeridos. Paso 6. Identificación de individuos, grupos, organizaciones y compañías con las cuales trabajar Si se acude a la gente apropiada se encontrará la solución adecuada. Paso 7. Desarrollo del plan de acción Las metas no se conseguirán con el simple hecho de determinarlas específicamente o sabiendo cuáles son las barreras a franquear, se alcanzarán si se ejecuta un plan de acción juicioso paralelo a un cronograma. 1.7 ADMINISTRACIÓN DE BASES DE DATOS La característica más importante que debe poseer un Administrador de Bases de Datos (DBA), es el conocimiento de las políticas y normas de su empresa, así como el criterio de la misma para aplicarlas en un momento dado. La responsabilidad del DBA es facilitar el desarrollo y el uso de la Base de Datos dentro de las políticas definidas por la administración de los datos. Los manejadores de bases de datos utilizados durante este módulo y en los cuáles se realizaron las prácticas y ejercicios de administración son: Sybase, Postgresql y MySQL. 27 1.7.1 SYBASE Al instalar SQL Server se incluyen las siguientes bases de datos del sistema, cabe mencionar que master, model y temporal residen en el dispositivo master: - La base de datos master - La base de datos model - La base de datos de procedimientos del sistema, sybsystemprocs - La base de datos temporal, tempdb La base de datos master controla el funcionamiento de SQL Server en su conjunto y almacena información sobre todas las bases de datos de usuario, y sus dispositivos asociados. Hace el seguimiento entre otros, de: - Cuentas de usuarios (en syslogins ) - Procesos en curso (en sysprocesses ) - Mensajes de error del sistema (en sysmessages ) - Bases de datos en SQL Server (en sysdatabases ) - Espacio asignado a cada base de datos (en sysusages ) - Cintas y discos montados en el sistema (en sysdevices ) Después de instalar Sybase y conocer los comandos para levantar, detener y acceder a este servidor, es necesario crear dispositivos que alojarán a las Bases de Datos, para ello se utiliza el comando “disk init” especificando entre otros parámetros el nombre del dispositivo, la ruta en disco y su tamaño expresado en páginas, 1024 Kb (1MB) equivalen a 512 páginas. El término “dispositivo” no se refiere necesariamente a un dispositivo físico diferente, puede ser alguna porción de un disco o un archivo en el sistema de archivos. El hecho de poder crear dispositivos, le da la oportunidad al DBA de controlar en qué lugar se crea la Base de datos, además le brinda el poder de separarla del log de transacciones (que es el registro de los INSERT, DELETE y UPDATE que se realizan) y en distintos dispositivos. Además siempre se puede incrementar el tamaño de la Base de datos. 1.7.1.1 Tamaño de una base de datos Antes de crear una base de datos se debe decidir: - El tamaño - La ubicación y el espacio necesario - Si un dispositivo de log es necesario y, si lo es, ¿de qué tamaño? Para el cálculo del tamaño de una base de datos, es necesario conocer el tamaño de cada tabla perteneciente a ella, a continuación se describen los pasos a seguir para el cálculo del tamaño: - Conocer la longitud de cada registro contenido en la tabla. - Tener una estimación de cuántos registros habrá en determinado tiempo. 28 - Multiplicar los valores anteriores y aumentarle un 10% recomendado como buena práctica, por los índices que pueda tener la tabla. - Si es una base altamente transaccional, aumentar 30%, si no lo es, aumentar 15%. - Redondear. - Convertir el valor obtenido a MB y multiplicarlo por 512 para obtener el valor en páginas que se necesitan. - Aunado a lo anterior, se reserva un 30% de LOG. De otra manera, estos pasos se pueden ahorrar simplemente tecleando el siguiente comando: sp_estspace <nombre_tabla>, <No_registros_estimados> Para monitorear el uso del espacio en la base de datos, se pueden usar las siguientes herramientas: sp_helpdb sp_helpsegment sp_spaceused 1.7.1.2 Usuarios, Roles y privilegios Cuando SQL Server es instalado por primera vez, el login sa es asignado con tres roles especiales (system administrator, system security officer y system operator). El password del login sa es inicialmente nulo, pero debe ser cambiado y una vez cambiado, no puede ser nulo otra vez. En la tabla 1.9 se indican los roles de SQL y sus funciones. ROLES DE LA BASE DE DATOS sa (System Administrator) - Maneja el almacenamiento de los discos. - Borra, modifica, bloquea y desbloquea logines. - Otorga y/o revoca roles de SA. - Crea bases de datos de usuarioy otorga propiedad sobre ellas. - Otorga ciertos permisos a los usuarios del SQL Server. - Afina SQL Server cambiando los parámetros de configuración. - Cierra SQL Server y sus procesos. - Monitorear la recuperación de base de datos en el arranque del SQL Server y utilizar ciertas herramientas para el diagnóstico de problemas en el sistema. sso (System Security Officer) - Crea logines en el SQL Server (asignando passwords iniciales). - Cambia passwords. - Fija un intervalo de expiración del password. - Crea, otorga y revoca roles de usuario. - Otorga autorización para uso del proxy. - Otorga y revoca roles SSO y OPER. - Maneja el sistema de auditoría. - Bloquea y desbloquean logines. - SSO no puede modificar o borrar logines; esto sólo puede hacerlo un login con rol SA. dbo (Data Base Owner) - Crea Bases de datos. - Crea y/o elimina usuarios de la base de datos. - Otorga y revoca permisos a usuarios para crear objetos en la B.D. Ejecuta algunas tareas de operador del sistema en su propia Bases de Datos. - Tiene todos los privilegios sobre todos los objetos en la Base de Datos. Tabla 1.9 Roles de SQL 29 1.7.1.3 Administración de usuarios Dado que master guarda información sobre los dispositivos y bases de datos de usuario, es necesario estar en la base de datos master para poder ejecutar los siguientes comandos: create database, alter database, disk init, disk refit, disk reinit y los comandos de duplicación de disco. Un rol SSO puede agregar logines usando sp_addlogin sp_addlogin login_name, passwd [, defaultdb [, deflanguage [, fullname]]] Para agregar un usuario a la base de datos se usa la sintaxis: sp_adduser login_name [, name_in_db [, grpname]] Para bloquear o desbloquear cuentas o desplegar una lista de las cuentas bloqueadas, se usa: sp_locklogin [login_name, "{lock | unlock}"] Para borrar un usuario: sp_dropuser name_in_db Para borrar el alias de un usuario: sp_dropalias login_name Para agregar un grupo, la sintaxis es: sp_addgroup grpname Use sp_helpgroup para desplegar los grupos en una base de datos use: sp_helpgroup [grpname] 1.7.1.4 Respaldos El comando dump database <nombre_base> to <ruta_respaldo> respalda tanto la base como su log de transacciones. El comando dump tran <nombre_base> to <ruta_respaldo> respalda sólo el log de transacciones y lo limpia. La restauración de un respaldo se hace en caso de que el sistema sufra algún fallo y se dañe la base de datos, siguiendo este procedimiento: - Se borra la base dañada. - Se crea de nuevo la base con CREATE DATABASE. - Se recupera el respaldo con load dump <base> from <ruta_respaldo> - Se pone en línea la base con ONLINE DATABASE <nombre_base> 1.7.2 POSTGRESQL Postgresql se caracteriza por ser Open Source, que es el término con el que se conoce al software distribuido y desarrollado libremente, su licencia es BSD (Se puede modificar, copiar y distribuir para cualquier propósito). 30 Los pasos a seguir para la instalación de PostgreSQL son: 1. Descargar de: http://www.postgresql.org 2. Ejecutar los siguientes comandos: - # groupadd postgres (Se añade el grupo llamado postgres) - # useradd -g postgres postgres (Se crea el usuario postgres dentro del grupo postgres) - # tar -zxvf /home/instalacion/postgresql-8.1.1.tar.gz (Se descomprime el paquete postgresql-8.1.1.tar.gz) - # ln -s postgresql-8.1.1 postgresql (Crea un enlace llamado postgresql) - # cd postgresql (Cambiar al directorio postgresql) - # ./configure --prefix=/usr/local/pgsql (Crea un archivo llamado makefile el cual constituye la base de compilación. Si configure falla no tendremos makefile.) - # make (El Make se encarga de leer todos los makefiles que fueron creados, estos archivos le dicen a make cuales archivos compilar y el orden que debe ser compilado, esto es muy importante, ya que podría haber cientos de archivos fuente.) - # make install (Instala) - # mkdir /usr/local/pgsql/data (crea un directorio llamado data que es donde se guardan las bases de datos) - # chown postgres /usr/local/pgsql/data (modificar a los usuarios y grupos dueños de la carpeta data.) 3. Para instalar la base de datos, se ejecuta la siguiente línea: - $ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data (Este se debe ejecutar como usuario postgres.) 4. De la siguiente forma se configura el arranque automático del servidor: - # cp /usr/local/pgsql/bin/postmaster /etc/rc.d/init.d/postgres - # ln -s /etc/rc.d/init.d/postgres /etc/rc.d/rc5.d 1.7.2.1 Usuarios y privilegios Para crear un usuario se utiliza el comando CREATE USER nombre_ usuario El manejo de usuarios en PostgreSQL no se diferencia mucho del manejo de cualquier otro objeto, ya sean bases de datos, tablas, vistas, etcétera. Todo se basa en tres sentencias básicas create, drop y alter. CREATE USER user_name [WITH PASSWORD password] [CREATEDB | NOCREATEDB] [CREATEUSER | NOCREATEUSER] [IN GROUP group1, ...groupN] [VALID UNTIL 'abstime']; user name es el nombre del usuario 31 WITH PASSWORD pide la contraseña del usuario. Si no se va a usar autentificación por password se puede omitir esta opción, de otra manera el usuario no será capaz de conectarse con el servidor de autenticación de passwords. CREATEDB, NOCREATEDB son órdenes que definen la capacidad de un usuario para que pueda o no crear bases de datos. Si se omite esta opción, NOCREATEDB se usa por default. CREATEUSER, NOCREATEUSER determina si a un usuario se le permitirá crear nuevos usuarios. Si se omite esta opción se creara NOCREATEUSER como valor por defecto del usuario. IN GROUP es el nombre de un grupo dentro del cual se coloca al usuario como un nuevo miembro. VALID UNTIL pone un valor absoluto a la fecha en la que la palabra clave del usuario pierde su validez. Si se omite esta orden el login valdrá para siempre. Para cambiar la contraseña y los privilegios de un usuario se utiliza el comando ALTER USER. Para borrar a un usuario existente, se utiliza el comando DROP USER DROP USER borra de la base de datos al usuario creado, es importante señalar que esta cláusula no borra tablas, vistas u otros objetos que pertenezcan al usuario. Si el usuario es dueño de una base de datos, se producirá un error. Los grupos son una manera lógica de agrupar a usuarios para facilitar la administración de privilegios: Para crear a un grupo se utilizan: CREATE GROUP permite crear un grupo nuevo en la base de datos. Este comando solamente podrá ser ejecutado por un usuario administrativo. ALTER GROUP añade y/o elimina usuarios de un grupo. De igual forma, sólo los administradores pueden usar este comando. Añadir un usuario a un grupo no crea ese usuario. DROP GROUP elimina un grupo. Eliminar a un usuario de un grupo no significa que se elimine al usuario en sí mismo. 1.7.2.2 Tareas de mantenimiento de la base de datos Existen algunas tareas de mantenimiento que se deben realizar periódicamente para asegurar que el servidor PostgreSQL se ejecute sin problemas. - Una tarea obvia del mantenimiento es la creación de respaldos de los datos bajo un determinado horario. Sin un respaldo reciente, no existe ninguna posibilidad de recuperar los datos después de una catástrofe, por ejemplo fuego, falla del disco, entre otros. - Una segunda categoría de las tareas de mantenimiento periódicas es la conocida como “VACUUMING”. - Un elemento extra que puede necesitar la atención del administrador de la base de datos es el archivo de log. 32 El comando VACUUM de PostgreSQL se debe correr regularmente: 1. Para recuperar espacio en disco ocupado por actualizaciones o registros borrados. 2. Para actualizar la estadística de datos usada por el planificador de consultas en PostgreSQL. El objetivo estándar de VACUUM es mantener en uso un pequeño espacio de disco. La función estándar es que
Compartir