Subido por Server Minecraft

Tema 3 Procesamiento de consultas distribuidas

Anuncio
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
Descargar