Tecnológico nacional de México Campus Villahermosa Carrera: Ingeniería En Tecnologías De La Información Y Comunicación Materia: Base de datos distribuidas Tema 3: Procesamiento de consultas distribuidas Alumnos: • Carlos Francisco Hernández Cruz • Elian Hernández Olarte • Magdiel Vidal Pérez Docente: M.A José Manuel Aguilar Tecnológico nacional de México Campus Villahermosa Contenido Introducción..................................................................................................................... 3 3. Procesamiento de consultas distribuidas. ................................................................... 4 3.1. Metodología del procesamiento de consultas distribuidas. ...................................... 5 3.2. Estrategias de procesamiento de consultas distribuidas .......................................... 7 3.2.1. Árboles de consultas ......................................................................................... 8 3.2.2. Transformaciones equivalentes ......................................................................... 9 3.2.3. Métodos de ejecución join ............................................................................... 10 3.3. Optimización de consultas ..................................................................................... 16 3.3.1. Optimización Global de Consultas ...................................................................... 16 3.3.2 Optimización Local de Consultas ......................................................................... 17 Conclusión .................................................................................................................... 18 Bibliografía .................................................................................................................... 19 2 Tecnológico nacional de México Campus Villahermosa Introducción En la presente investigación, es el tema de procesamiento de consultas distribuidas que es uno de los componentes principales en una base de datos distribuidas. Su funcionamiento principal es interactuar con el procesador de consultas y este a su vez interactúa con el motor de almacenamiento. Esencialmente, el procesador de consultas recibe una instrucción o instrucciones escritas en lenguaje de consulta estructurado (SQL), elige un plan de ejecución de las instrucciones y lleva a cabo el plan. El éxito creciente de la tecnología de bases de datos relacionales en el procesamiento de datos se debe, en parte, a la disponibilidad de lenguajes no procedurales los cuales pueden mejorar significativamente el desarrollo de aplicaciones y la productividad del usuario final. Ocultando los detalles de bajo nivel acerca de la localización física de datos, los lenguajes de bases de datos relacionales permiten la expresión de consultas complejas en una forma concisa y simple. 3 Tecnológico nacional de México Campus Villahermosa 3. Procesamiento de consultas distribuidas. Existen varios medios para calcular la respuesta a una consulta. En el caso del sistema centralizado, el criterio principal para determinar el costo de una estrategia específica es el número de acceso al disco. En un sistema distribuido es preciso tener en cuenta otros factores como son: • El costo de transmisión de datos en la red. • Repetición y fragmentación. • Procesamiento de intersección simple. El procesamiento de consultas entre los sistemas de base de datos centralizado y uno distribuido llega a ser muy distinto uno del otro siendo este último un poco más complejo que el primero mencionado. Ya que un sistema distribuido posee un procedimiento un poco más extenso que el centralizado. 4 Tecnológico nacional de México Campus Villahermosa 3.1. Metodología del procesamiento de consultas distribuidas. Las consultas distribuidas se encargan de detener el acceso a datos de varios orígenes de datos heterogéneos. Estos orígenes de datos pueden estar almacenados en el mismo equipo o en equipos diferentes. Sql Server proporciona características, como Integration Services y PowerPivot, que pueden ayudarle a integrar datos heterogéneos. Otra manera de integrar datos es utilizando las características de replicación de Sql Server, para replicar los datos entre los servidores. Sql Server admite la replicación de datos heterogéneos con ciertas bases de datos de IBM y Oracle. La función principal de un procesador de consultas relacionales es transformar una consulta en una especificación de alto nivel, típicamente en cálculo relacional, a una consulta equivalente en una especificación de bajo nivel. Hablando más claro para realizar una consulta se debe contar con heterogeneidad de los datos, para que puedan ser usados para formular consultar. A continuación, unos ejemplos: BD Centralizada 5 Tecnológico nacional de México Campus Villahermosa BD Distribuida También se debe contar con: • Localización de los datos para poder generar reglas heurísticas. • Descomposición de consultas en paralelo en cada nodo. • Reducir la cantidad de datos a transferir en la red. 6 Tecnológico nacional de México Campus Villahermosa 3.2. Estrategias de procesamiento de consultas distribuidas Contamos con la estrategia de Reformulación de consultas, que nos sirve para encontrar la información que nos va a proveer sea solo la que se le pidió por la fuente, también se cuenta con la estrategia de descomposición de las fuentes, que consiste en que según las fuentes que pidan cierto tipo de datos sean las atendidas con mayor velocidad. También se cuenta con la estrategia de descomposición de las fuentes, que consiste en que según las fuentes que pidan cierto tipo de datos sean las atendidas con mayor velocidad. Para poder optimizar una consulta necesitamos tener claras las propiedades del algebra relacional para asegurar la reformulación de la consulta, al optimizar una consulta obtenemos los siguientes beneficios: • Minimizar costos • Reducir espacios de comunicaciones • Seguridad en envíos de información Los lenguajes de bases de datos relacionales permiten la expresión de consultas complejas en una forma concisa y simple. Procedimiento para una consulta: 1) El analizador léxico identifica los componentes del lenguaje. 2) El analizador sintáctico revisa la sintaxis. 3) Validación de la consulta: comprobar que los nombres de las relaciones, los atributos son válidos. 4) Creación de la representación interna de la consulta, por lo regular en forma de árbol o grafo. 7 Tecnológico nacional de México Campus Villahermosa 5) El SGBD crea una estrategia de ejecución para obtener el resultado de la consulta a partir de los archivos internos. El proceso de elegir la alternativa más adecuada para procesar una consulta de denomina optimización de consultas. 6) El módulo optimizador de consultas se encarga de producir un plan de ejecución. 7) El generador de código genera el código necesario para ejecutarlo. 8) El procesador de base de datos en tiempo de ejecución se encarga de ejecutar el código de la consulta. 3.2.1. Árboles de consultas Existen distintos métodos para optimizar consultas relacionales, sin embargo el enfoque de optimización basada en costos combinado con heurísticas que permitan reducir el espacio de búsqueda de la solución es el método mayormente utilizado por los motores de base de datos relaciones de la actualidad, en todo caso, independiente del método elegido para optimizar la consulta, la salida de este proceso debe ser un plan de ejecución, el cual comúnmente es representado en su forma de árbol relacional. Es una estructura de árbol que corresponde a una expresión del álgebra relacional en el que las tablas se representan como nodos hojas y las operaciones del álgebra relacional como nodos intermedios. Pasos: 1. Parsing y traducción de la consulta. 2. Optimización. 3. Generación de código. 4. Ejecución de la consulta. Ejemplo árbol de consultas. 8 Tecnológico nacional de México Campus Villahermosa 3.2.2. Transformaciones equivalentes Cuando una base de datos se encuentra en múltiples servidores y distribuye a un número determinado de nodos tenemos: • El servidor recibe una petición de un nodo. • El servidor es atacado por el acceso concurrente a la base de datos cargada localmente. • El servidor muestra un resultado y le da un hilo a cada una de las maquinas nodo de la red local. Una base de datos es accesada de esta manera la técnica que se utiliza es la de fragmentación de datos que puede ser hibrida, horizontal y vertical. 9 Tecnológico nacional de México Campus Villahermosa En esta fragmentación lo que no se quiere es perder la consistencia de los datos, por lo tanto, se respetan las formas normales de la base de datos. Bueno para realizar una transformación en la consulta primero desfragmentamos siguiendo los estándares marcados por las reglas formales y posteriormente realizamos el envío y la máquina que recibe es la que muestra el resultado pertinente para el usuario, de esta se puede producir una copia que será la equivalente a la original. 3.2.3. Métodos de ejecución join Siempre que se requiere consultar datos de una sola tabla se utiliza el comando SQL SELECT*FROM myTable, pero no siempre se requieren los datos de una sola tabla, muchas veces es necesario consultar datos de 2 tablas, y si nos queremos ir más allá, en diversas ocasiones necesitamos consultar solo los registros (filas) donde una serie especifica de datos coincidan o converjan. 10 Tecnológico nacional de México Campus Villahermosa Para esto nos será útil el comando JOIN, el cual nos permite asociar 2 o más tablas, en base a una columna que tengan en común. INNER JOIN Es el join más usual o más básico, muchas veces conocido solo como JOIN, esta cláusula buscara coincidencias entre 2 tablas, en función a una columna que tienen en común. De tal modo que sólo la intersección se mostrara en los resultados. Ejemplo INNER JOIN Para hacer un ejemplo usaremos las siguientes tablas: 11 Tecnológico nacional de México Campus Villahermosa Y a partir de aquí podemos notar lo siguiente: El empleado "Williams" no aparece en los resultados, ya que no pertenece a ningún departamento existente. El departamento "Marketing" tampoco aparece, ya que ningún empleado pertenece a dicho departamento. LEFT JOIN La diferencia con el INNER JOIN, es que en este join se le da prioridad a la tabla de la izquierda buscamos en la tabla de la derecha. Si no existe ninguna coincidencia para alguna de las filas de la tabla de la izquierda, de igual forma todos los resultados de la primera tabla se muestran. Ejemplo LEFT JOIN Usaremos las mismas tablas del primer ejemplo: 12 Tecnológico nacional de México Campus Villahermosa La tabla Empleados es la primera tabla en aparecer en la consulta (en el FROM), por lo tanto, ésta es la tabla LEFT (izquierda), y todas sus filas se mostrarán en los resultados. La tabla Departamentos es la tabla de la derecha (aparece luego del LEFT JOIN). Por lo tanto, si se encuentran coincidencias, se mostrarán los valores correspondientes, pero si no, aparecerá NULL en los resultados. RIGHT JOIN En el caso de RIGHT JOIN la situación es muy similar, pero aquí se da prioridad a la tabla de la derecha. 13 Tecnológico nacional de México Campus Villahermosa EJEMPLO RIGHT JOIN Usando estos comandos obtendremos el siguiente resultado. La tabla de la izquierda es Empleados, mientras que Departamentos es la tabla de la derecha. La tabla asociada al FROM será siempre la tabla LEFT, y la tabla que viene después del JOIN será la tabla RIGHT. Entonces el resultado mostrará todos los departamentos al menos 1 vez. Y si no hay ningún empleado trabajando en un departamento determinado, se mostrará NULL. Pero el departamento aparecerá de igual forma. FULL JOIN Mientras que LEFT JOIN muestra todas las filas de la tabla izquierda, y RIGHT JOIN muestra todas las correspondientes a la tabla derecha, FULL OUTER JOIN (o 14 Tecnológico nacional de México Campus Villahermosa simplemente FULL JOIN) se encarga de mostrar todas las filas de ambas tablas, sin importar que no existan coincidencias (usará NULL como un valor por defecto para dichos casos). EJEMPLO FULL JOIN Usando estos comandos obtendremos el siguiente resultado. Se muestra el empleado "Williams" a pesar que no está asignado a ningún departamento, y se muestra el departamento de "Marketing" a pesar que aún nadie está trabajando allí. 15 Tecnológico nacional de México Campus Villahermosa 3.3. Optimización de consultas El objetivo del procesamiento de consultas en un ambiente distribuido es transformar una consulta sobre una base de datos distribuida en una especificación de alto nivel a una estrategia de ejecución eficiente expresada en un lenguaje de bajo nivel sobre bases de datos locales. Así, el problema de optimización de consultas es minimizar una función de costo tal que función de costo total = costo de I/O + costo de CPU + costo de comunicación Los diferentes factores pueden tener pesos diferentes dependiendo del ambiente distribuido en el que se trabaje. Por ejemplo, en las redes de área amplia (WAN), normalmente el costo de comunicación domina dado que hay una velocidad de comunicación relativamente baja, los canales están saturados y el trabajo adicional requerido por los protocolos de comunicación es considerable. Así, los algoritmos diseñados para trabajar en una WAN, por lo general, ignoran los costos de CPU y de I/O. En redes de área local (LAN) el costo de comunicación no es tan dominante, así que se consideran los tres factores con pesos variables. 3.3.1. Optimización Global de Consultas Dada una consulta algebraica sobre fragmentos, el objetivo de esta capa es hallar una estrategia de ejecución para la consulta cercana a la óptima. La estrategia de ejecución para una consulta distribuida puede ser descrita con los operadores del álgebra relacional y con primitivas de comunicación para transferir datos entre nodos. Para encontrar una buena transformación se consideran las características de los fragmentos, tales como, sus cordialidades. Un aspecto importante de la optimización de consultas es el ordenamiento de juntas, dado que algunas permutaciones de juntas dentro de la consulta pueden conducir a un mejoramiento de varios órdenes de magnitud. La salida de la capa de optimización global es una consulta algebraica optimizada con operación de comunicación incluida sobre los fragmentos. 16 Tecnológico nacional de México Campus Villahermosa 3.3.2 Optimización Local de Consultas El trabajo de la última capa se efectúa en todos los nodos con fragmentos involucrados en la consulta. Cada subconsulta que se ejecuta en un nodo, llamada consulta local, es optimizada usando el esquema local del nodo. Hasta este momento, se pueden eligen los algoritmos para realizar las operaciones relacionales. La optimización local utiliza los algoritmos de sistemas centralizados. Optimizar las consultas distribuidas Para mejorar el rendimiento, SQL Server 2005 realiza los siguientes tipos de optimización específicos de las consultas distribuidas: Ejecución de consultas remotas utilizada con proveedores de comandos SQL de OLE B. Se considera que un proveedor OLE DB es un proveedor de comandos SQL si cumple los siguientes requisitos mínimos: Admite el objeto Command y todas sus interfaces obligatorias. Admite la sintaxis DBPROPVAL SQL SUBMINIMUM o SQL-92 de nivel de entrada o superior, u ODBC de nivel de núcleo o superior. El proveedor debe proporcionar este nivel de lenguaje mediante la propiedad DBPROP_SQLSUPPORT de OLE DB. 17 Tecnológico nacional de México Campus Villahermosa Conclusión El procesamiento de consultas es de suma importancia en bases de datos centralizadas. Sin embargo, en BDD éste adquiere una relevancia mayor. El objetivo es convertir transacciones de usuario en instrucciones para manipulación de datos. No obstante, el orden en que se realizan las transacciones afecta grandemente la velocidad de respuesta del sistema. Así, el procesamiento de consultas presenta un problema de optimización en el cual se determina el orden en el cual se hace la menor cantidad de operaciones. En BDD se tiene que considerar el procesamiento local de una consulta junto con el costo de transmisión de información al lugar en donde se solicitó la consulta. El control de concurrencia trata con los problemas de aislamiento y consistencia del procesamiento de transacciones. El control de concurrencia distribuido de una DDBMS asegura que la consistencia de la base de datos se mantiene en un ambiente distribuido multiusuario. Si las transacciones son internamente consistentes, la manera más simple de lograr este objetivo es ejecutar cada transacción sola, una después de otra. 18 Tecnológico nacional de México Campus Villahermosa Bibliografía • Cisneros Gonzáles, J. L. (1998). Panorama sobre base de datos. Un enfoque práctico. Mexicali: Universidad Autóma de Baja California. • Date, C. (2001). Introduccion a los sistemas de bases de datos. Pearson Educación . • sites.google. (6 de Septiembre de 2017). Obtenido de https://sites.google.com/view/basededatosdistribuidasaldeni/sql-y-sufuncionalidad/procesamiento-distribuido-de-consultas • Toledo, V., & Israel, M. (2020). itescam. Obtenido de https://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r90047.PDF 19