SEMINARIO DE BASES DE DATOS Instituto Superior de Formación Docente y Técnica N° 12 – La Plata 1/10/14 Presentación • Federico G. Orlando • Licenciado en Informática - UNLP • DBA en la Dirección Provincial de Sistemas de Información y Tecnología (DPSIT ex DPI) desde 2008 • Ayudante en las cátedras de BD1 y BD2 de la Facultad de Informática – UNLP desde 2006 • Contacto: [email protected] Temario • • • • • • • • • • • • • • • Un poco de historia SPA Ventajas/Desventajas BD DBMS Tipos de BD Cualidades de una buena BD Diseño de Datos Modelo E/R Álgebra Relacional SQL Tunning Transacciones Control de Concurrencia Control de Acceso a los Datos Tareas del DBA Un poco de historia • A mediados de los 60 la tecnología de computadoras estaba en desarrollo. • • • • • • Sólo las grandes empresas podían utilizar los computadoras para mejorar sus procesos de información. Esta información comenzó almacenándose en Sistemas de Procesamiento de Archivos (SPA), generando problemas de administración, integración de datos y complejidad de desarrollo. En 1970 – E.F. Codd publica el Algebra Relacional para el almacenamiento de grandes cantidades de datos. En 1979 – Ashton Tate introdujo el producto para microcomputadora DBase II y lo denominó DBMS Relacional. Posteriormente comprada por Borland. En 1985 -90 – La red de computadoras permitió el desarrollo de los modelos Cliente – Servidor. En los 90’s – Desarrollo de Bases de Datos de Procesamiento Distribuido. Tanto los modelos C/S como las BDD crean nuevos problemas de seguridad y control. En los primeros años de este siglo, DBMS Orientados s Objetos (ODBMS). Sistemas de Procesamiento de Archivos (SPA) Aplicaciones de Clientes Archivos de Clientes Aplicaciones de Compras Archivos de Compras Desventajas de los SPA: 1. Los datos están separados y aislados. 2. Con frecuencia, los datos están duplicados. 3. Los Programas de Aplicación dependen de los formatos de los archivos. 4. Con frecuencia, los archivos son incompatibles entre sí. 5. Es difícil representar los datos en el modo en que los usuarios los ven. Problemas de los SPA REDUNDANCIA. Esta se presenta cuando se repiten innecesariamente datos en los archivos que conforman la base de datos. Esta redundancia aumenta los costos de almacenamiento y acceso y 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 momentos y ocasionalmente por distintos programadores, el formato de la información no es uniforme y requiere 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, librerías y demás debido a la diferencia de formatos en los archivos almacenados. Problemas de los SPA ANOMALIAS 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 cuando no existe a través de todo el sistema procedimientos uniformes de validación para los datos. Algunas definiciones Sistemas de información: Es el conjunto de mecanismos que controlan la distribución, acceso y almacenamiento de los datos relevantes para la administración de una organización. Bases de datos: Una base de datos (BD) es un conjunto de datos interrelacionados almacenados en conjunto, sin redundancias innecesarias, de forma independiente de los programas que acceden a ellos Sistema Gestor de Bases de Datos (DBMS): Conjunto de aplicaciones que permiten a los usuarios interactuar con la base de datos. Debe proveer al usuario herramientas para el diseño de las BD y la posibilidad de ejecutar consultas a la mismas. Ventajas de las BD 1. Datos Integrados. 2. Menos Duplicación de Datos. 3. Independencia programa/datos. 4. Fácil Representación de la vista de datos de los usuarios. 5. Compartir datos Los DBMS se convierten en el puente entre los programas de aplicación de los usuarios y los datos, de esta forma las aplicaciones son independientes de la forma en que estén almacenados e incluso en dónde se encuentre. Ventajas de las BD Todos los datos se integran en un mismo medio denominado Base de datos, centralizando los datos y los programadores no se preocupan por el acceso a los mismos sino por la lógica de los datos. Por otro lado la duplicación de datos se disminuye considerablemente y además están controlados con integridad referencial. Finalmente los lenguajes de acceso a datos como el SQL permite obtener los datos relacionados de una forma más sencilla que el los SPA. Desventaja de las BD La vulnerabilidad de la base de datos se puede considerar desventaja porque si la base de datos falla, entonces se bloque toda la información de la organización, por el contrario en los SPA si falla un modulo no bloquea el resto de módulos. Sistema Gestor de BD (DBMS) • Abstracción de la información: los DBMS esconden a los usuarios detalles acerca del almacenamiento físico de los datos. Da lo mismo si una base de datos ocupa uno o cientos de archivos, este hecho se hace transparente al usuario. • Independencia: la independencia de los datos consiste en la capacidad de modificar el esquema (físico o lógico) de una base de datos sin tener que realizar cambios en las aplicaciones que se sirven de ella. • Redundancia mínima: un buen diseño de una base de datos logrará evitar la aparición de información repetida o redundante. El objetivo debería ser lograr una redundancia nula; no obstante, en algunos casos la complejidad de los cálculos hace necesaria la aparición de redundancias. Sistema Gestor de BD (DBMS) • Consistencia: en aquellos casos en los que no se ha logrado esta redundancia nula, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea. • Seguridad: la información almacenada en una base de datos puede llegar a tener un gran valor. Los DBMS deben garantizar que esta información se encuentra asegurada frente a usuarios malintencionados, que intenten leer información privilegiada; frente a ataques que deseen manipular o destruir la información; o simplemente ante las torpezas de algún usuario autorizado pero despistado. Normalmente, los DBMS disponen de un complejo sistema de permisos a usuarios y grupos de usuarios, que permiten otorgar diversas categorías de permisos. Sistema Gestor de BD (DBMS) • Integridad: se trata de adoptar las medidas necesarias para garantizar la validez de los datos almacenados. Es decir, se trata de proteger los datos ante fallos de hardware, datos introducidos por usuarios descuidados, o cualquier otra circunstancia capaz de corromper la información almacenada. • Respaldo y recuperación: los DBMS deben proporcionar una forma eficiente de realizar copias de seguridad de la información almacenada en ellos, y de restaurar a partir de estas copias los datos que se hayan podido perder. Sistema Gestor de BD (DBMS) • Control de la concurrencia: en la mayoría de entornos habitualmente son muchas las personas que acceden a una base de datos, bien para recuperar información o para almacenarla. Y es también frecuente que dichos accesos se realicen de forma simultánea. Así pues, un DBMS debe controlar este acceso concurrente a la información, que podría derivar en inconsistencias. • Tiempo de respuesta: lógicamente, es deseable minimizar el tiempo que el DBMS tarda en darnos la información solicitada y en almacenar los cambios realizados. Componentes de un DBMS DDL (Data Definition Languaje) especifica el esquema de la base de datos. DML (Data Manipulation Languaje) Recupera información Agregar información Eliminar información Modificar información Data Dictionary posee las definiciones de todas las variables de la base. Ejemplos de DBMS • Oracle • MySQL • Postgres • SQLServer • Sybase • Informix • DB2 • MongoDB (Orientada a Documentos) • Versant (OODMS) • Jasmine (OODMS) Tipos de Bases de Datos Base de datos jerárquica Su estructura y relación entre los datos se corresponde con las de las estructuras en árbol (invertido). En este modelo, cada nodo del árbol es un registro. Todos los nodos, excepto el raíz, están ligados a otros de nivel superior mediante punteros y ningún nodo puede tener más de un antecesor. Se trabaja con 2 objetos: • Ligaduras • Registros: Un registros padre puede tener un número indeterminado de hijos pero un hijo no puede tener más de un padre. Tipos de Bases de Datos Forma de guardar la información. La información se guarda árbol a árbol y de izquierda a derecha y de arriba a abajo. Manipulación de los datos. Seleccionar un árbol determinado. Pasar de un árbol a otro. Pasar de un padre a su primer hijo. Pasar de un registro a otro dentro de un mismo nivel. Insertar/borrar registros de un nivel. Mantenimiento de la integridad. Referencial: No se puede tener un hijo sin su padre. Permite borrados y actualizaciones en cascada. Tipos de Bases de Datos Base de datos en red En este modelo, las conexiones entre registros se representan mediante estructuras en red. A diferencia del modelo jerárquico, cada nodo puede tener más de un antecesor. Se trabaja con 2 elementos: Registros. Ligaduras: Una ligadura tiene 1 padre para varios hijos. Tipos de Bases de Datos Manipulación de los datos. Localizar un registro. Pasar de una registro padre a su primer hijo de una ligadura. Moverse de un hijo a otro. Pasar de un hijo a su padre. Tipos de Bases de Datos Base de datos Orientada a Objetos Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos: • Encapsulación - Propiedad que permite ocultar la información al resto de los objetos, impidiendo así accesos incorrectos o conflictos. • Herencia - Propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases. • Polimorfismo - Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos. Tipos de Bases de Datos Base de datos relacional 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 implementar bases de datos. En este modelo todos los datos son almacenados en relaciones, y como cada relación es un conjunto de datos, el orden en el que éstos se almacenen no tiene relevancia (a diferencia de otros modelos como el jerárquico y el de red). La información puede ser recuperada o almacenada por medio de consultas que ofrecen una amplia flexibilidad y poder para administrar la información. Este modelo considera la base de datos como una colección de relaciones. Una relación representa una tabla que no es más que un conjunto de filas, cada fila es un conjunto de campos y cada campo representa un valor que interpretado describe el mundo real. Cada fila también se puede denominar tupla o registro y a cada columna también se le puede llamar campo o atributo. Tipos de Bases de Datos Base de datos relacional. Características Una base de datos relacional se compone de varias tablas o relaciones. No pueden existir dos tablas con el mismo nombre ni registro. Cada tabla es a su vez un conjunto de registros (filas y columnas). La relación entre tablas se lleva a cabo por medio de las claves primarias y foráneas. Las claves primarias son la clave principal de un registro dentro de una tabla y éstas deben cumplir con la integridad de datos. Las claves foráneas se colocan en atributos de una tabla, y contienen el mismo valor que la clave primaria del registro de la tabla referenciada; por medio de éstas se hacen las relaciones. Un dominio describe el conjunto de posibles valores para cierto atributo. Por ej String, integer, date,etc. Los índices surgen con la necesidad de tener un acceso más rápido a los datos. Pueden ser creados con cualquier combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de forma no secuencial usando el índice. Tipos de Bases de Datos Base de datos relacional. Características La base de datos se organiza en dos partes; el esquema y los datos (instancia). El esquema es la definición de la estructura de la base de datos y principalmente almacena los siguientes datos: • El nombre de cada tabla • El nombre de cada columna • El tipo de dato de cada columna • La tabla a la que pertenece cada columna Los datos o instancia es el contenido de la base de datos en un momento dado. Es en sí, el contenido de todos los registros. Cualidades de una buena BD Versatilidad en la representación de relaciones Diferentes programadores requieren la misma colección de datos y, por otro lado, existen diversas relaciones entre los conjuntos de datos almacenados. El método de organización debe de ser capaz de representar estas relaciones y acomodar sus posibles cambios en el futuro. Tiempo de respuesta Las bases de datos diseñadas para ser utilizadas de forma interactiva deben de asegurar un tiempo de respuesta adecuado para el diálogo entre el operador y la computadora. Además, el sistema debe de tener la capacidad suficiente para manejar un número concreto de sesiones y el flujo de transacciones a que éstos den origen. Esto es importante en los sistemas interactivos de alto volumen de tráfico, cuando los datos deben de actualizarse al momento de haber sufrido una modificación. Cualidades de una buena BD Costo mínimo Adecuado a las necesidades reales de la organización. Redundancia mínima Para suprimir la redundancia de los datos, es preciso identificar los que van a ser utilizados en común por varios programas y almacenarlos en un archivo único. No obstante, si sólo existe una copia de ciertos datos que son necesarios para fines distintos, es preciso también almacenar y mantener las relaciones pertinentes. Por ésta y otras razones puede no ser siempre oportuno eliminar toda la redundancia del sistema. Cualidades de una buena BD Capacidad de búsqueda En algunas organizaciones los tiempos de búsqueda son vitales para el uso que ha de darse a los datos. Uno de los objetivos a conseguir con la instalación de una base de datos es el obtener una capacidad de búsqueda rápida y flexible. Integridad En ocasiones pueden producirse fallos en los componentes físicos del computador. El sistema de almacenamiento de los datos debe estar previsto para absorber estas contingencias y evitar que se produzcan daños en los datos almacenados. Cualidades de una buena BD Seguridad y privacidad Los datos han de estar protegidos contra el acceso a los mismos de personas no autorizadas y contra su alteración indebida, casual o intencionada. La privacidad se refiere al derecho del propietario de la base de datos, a facilitar o no la información contenida en la misma a terceras personas. Compatibilidad hacia atrás Cuando una empresa decide instalar un nuevo software de base de datos, es importante que éste pueda utilizar los procedimientos y programas existentes y que los datos almacenados anteriormente puedan ser convertidos al nuevo software. Cualidades de una buena BD Compatibilidad hacia adelante Con el tiempo los programas de una organización van aumentando, hasta un punto en que no puede ya pensarse en volver a escribirlos. Un objetivo importante al construir una base de datos es prever que posibles modificaciones futuras no afecten a las aplicaciones y programas en uso. Ajustes Resulta necesario poder ajustar y cambiar la organización de la base de datos después que el sistema está ya en funcionamiento y cuando se conocen en la práctica los retoques necesarios a implantar. Este proceso se llama afinación y en la práctica conduce a importantes costos en la implementación de las bases de datos. Cualidades de una buena BD Cambios en la importancia de los datos A medida que disminuye la importancia de un conjunto de datos o la frecuencia de su uso, se hace necesario el cambiarlos dentro de la base a posiciones más o menos accesibles según su uso. El proceso de ajustar la posición de los datos en la base conforme la frecuencia de su utilización se llama migración. Claridad y simplicidad Los medios que se utilicen para la representación y manipulación de los datos, deben de ser lo más claros y simples posibles. Diseño de Datos representación independiente del DBMS. • Conceptual: abstracta. Es • Lógico: representación en una computadora. No es independiente del tipo de DBMS, pero si de las distintas implementaciones de DBMS. • Físico: determina estructuras de almacenamiento físico. No es independiente ni del tipo ni de la implementación de DBMS. Modelo Entidad - Relación • Es un modelo de alto nivel (conceptual) el cual esta basado en la percepción del mundo real. • Consiste de: • Entidades • Relaciones entre las entidades • Restricciones Las entidades son objetos del dominio de la aplicación que existen y son distinguibles de otros objetos. Tiene propiedades especificas que se denominan atributos que la describen. Diseño de BD Propiedades no deseables: •Repetición de Información •Problema en la Representación de la Información •Pérdida de la Información Para ello buscaremos que el diseño de la BD se encuentre normalizado. Existen 5 formas normales. Se utilizan los conceptos de dependencia funcional, dependencia multivaluada, clave, superclave para llegar a un diseño normalizado. Del diseño a la implementación Un DBMS relacional manipula la información de manera que las cosas del mundo real (las entidades del modelo entidad – relación) se convierten en las tablas del una bd relacional. Una tabla es como una hoja de cálculo; cada renglón representa una entidad en particular (instancia), y cada columna representa la información respecto de la entidad, es cada atributo de la misma. Esos atributos tienen un tipo de datos que restringe los valores que puede tomar en base al dominio del mismo. Álgebra Relacional Las bases de datos básicamente son conjuntos de datos. Para operar con dichos conjuntos tenemos el Álgebra Relacional, el cual define las operaciones básicas para manipular los datos. •Selección ( condición ) •Proyección ( lista ) •Producto Cartesiano ( X ) •Unión ( ) •Diferencia ( - ) •División ( % ) •Intersección (∩) SQL (Lenguaje de Consultas Estructurado) SQL tiene correlato con el AR y es el lenguaje estándar que nos permite realizar consultas sobre las tablas de una BD Relacional. •Proyección -> Select •Producto Cartesiano -> From •Selección -> Where También nos provee de otros operadores: •Renombre -> as •Like (operación sobre string) •Ordenamiento -> order by asc/desc •Agrupamiento -> group by SQL (Lenguaje de Consultas Estructurado) Operaciones sobre conjunto: •Unión •Intersección •Comparación de conjuntos: Some,any,exists Operaciones de agregación: Max, min, avg,count,sum Condiciones sobre grupos (having) Subconsultas (in) Valores nulos (is null / is not null) SQL (Lenguaje de Consultas Estructurado) Modificaciones de datos de las tablas: •Insert •Update •Delete También es posible definir Vistas, las cuales son una alternativa para mostrar datos de varias tablas. Una vista es como una tabla virtual que almacena una consulta. Los datos accesibles a través de la vista no están almacenados en la base de datos como un objeto. Tunning Una de las tareas fundamentales del DBA es asegurar la Performance para ello se deben optimizar las consultas que se realizan a la bd. Para ello se analizan las consultas y se determina su costo. Principalmente el costo esta afectado por los accesos a disco y los ordenamientos de los datos. Para reducir el costo de consulta se utilizan los índices, que es una estructura de datos que mediante un identificador único de cada fila de una tabla, mejora la velocidad de las operaciones. Se suelen implementar sobre las columnas de la tabla que sufren frecuentes búsquedas. Transacciones Una transacción es una unidad de ejecución de un programa que accede y posiblemente modifica varios ítems de datos formando una unidad lógica de trabajo. • Se la delimita mediante sentencias de inicio de transacción y fin de transacción. • Begin transaction: El lenguaje estándar SQL establece una demarcación implícita de inicio. • End transaction: se demarca explícitamente mediante las palabras claves “commit” o “rollback”. Transacciones Propiedades A.C.I.D. • Atomicity • Consistency • Isolation • Durability • Son un conjunto de propiedades que aseguran que las transacciones son procesadas en forma segura. Transacciones Atomicity • Establece que todas las modificaciones a la base de datos siguen la regla “todo o nada”. • Cada transacción se dice entonces que es “atómica”. • Si una parte de la transacción falla, entonces la transacción entera falla y los cambios no se propagan a la base de datos. • Para ser considerando “atómico” un sistema debe garantizar la atomicidad en todas y cada una de las situaciones posibles – Errores – Cortes de energía – Fallas de hardware • Una transacción “incompleta” no puede existir. Transacciones Consistency • Asegura que cada transacción que se ejecute llevará a la base de datos de un estado consistente a otro estado consistente. • La consistencia establece que solamente los datos válidos (de acuerdo a un conjunto de reglas definido) serán escritos a la base de datos. • A nivel básico, cada tupla afectada por una transacción debe ser consistente de acuerdo a cada constraint, trigger, y otros elementos. • Si bien es simple el concepto, hay que tener en cuenta los niveles de anidamiento y cascadas. Transacciones Isolation • Establece el requerimiento que ninguna transacción debería poder interferir con otra transacción de ninguna manera. • Dicho de otra manera, dos transacciones no deberían poder afectar simultáneamente una tupla. • Usualmente es una de las propiedades en donde se “relajan” los controles para optimizar el rendimiento – La única manera estricta de respetar la “I” es utilizando un modelo serializado, en donde dos transacciones no puede ejecutarse concurrentemente nunca. – En la realidad se utilizan modelos menos estrictos, pero no totalmente seguros. Transacciones Durability • Establece que una vez que se ha hecho el “commit” de una transacción, sus cambios se mantendrán en la base de datos. • Cada cambio realizado por una transacción se protege de pérdidas de energía, errores, roturas; impidiendo de esta manera que se pierdan. Control de Concurrencia Para evitar inconsistencias en los datos, se debe mantener un control sobre las transacciones, para ello hay 2 formas: • Por hora de acceso • Bloqueos Los bloqueos pueden ser compartidos (sólo lectura) o exclusivos (lectura/escritura). Los bloqueos pueden ser compatibles y existir simultáneamente (compartidos). Si no se controlan adecuadamente los bloqueos puede ocurrir deadlock. Control de Acceso a Datos El DBA es el responsable de controlar el acceso a los datos por parte de los usuarios. Para ello, se pueden otorgar y revocar privilegios a los usuarios de bd. Los mas comunes son otorgar privilegios de select, insert, update y delete a un usuario o rol. Los roles sirven para agrupar privilegios y puede ser otorgado a un usuario. Un usuario debería tener los mínimos privilegios necesarios para realizar su tarea. Tareas del DBA • Instalación y configuración del motor de BD • Creación de BD • Control de la seguridad de las BD, altas y bajas de usuarios, • • • • • roles, asignación de roles a usuarios y permisos específicos, y la auditoría. Monitoreo y optimización del rendimiento de la BD. Realizar Backup y Restore de la BD. Diseñar e implementar la política de backup y testeos de los mismos. Brindar apoyo a los desarrolladores/analistas en cuanto al diseño de los modelos de datos, tareas de tunning, etc. Documentar todo lo referido a las BD. Asegurar la disponibilidad de la BD. Tareas del DBA Si se da algún error en los datos, hay un bug de programa o de hardware, el DBA puede traer de vuelta la base de datos al tiempo y estado en que se encontraba en estado consistente antes de que el daño se causara. Las actividades de recuperación incluyen el hacer respaldos de la base de datos y almacenar esos respaldos de manera que se minimice el riesgo de daño o pérdida de los mismos, tales como hacer diversas copias en medios de almacenamiento removibles y almacenarlos fuera del área en antelación a un desastre anticipado. La integridad de una base de datos significa que, la base de datos o los programas que generaron su contenido, incorporen métodos que aseguren que el contenido de los datos del sistema no se rompa así como las reglas del negocio. Seguridad significa la capacidad de los usuarios para acceder y cambiar los datos de acuerdo a las políticas del negocio, así como, las decisiones de los encargados. Tareas del DBA • La disponibilidad significa que los usuarios autorizados tengan acceso a los datos cuando lo necesiten para atender a las necesidades del negocio. De manera incremental los negocios han ido requiriendo que su información esté disponible todo el tiempo (7x24", o siete días a la semana, 24 horas del día). La industria de TI ha respondido a estas necesidades con redundancia de red y hardware para incrementar las capacidades administrativas en línea. Preguntas Gracias