Subido por jsolissolis73

Base de Datos Distribuidas Unidad 3

Anuncio
Base de Datos Distribuidas
viernes, 23 de julio de 2021
Base de Datos Distribuidas
1
UNIDAD 3: PROCESAMIENTO DE
CONSULTAS DISTRIBUIDAS
viernes, 23 de julio de 2021
Base de Datos Distribuidas
2
3.1 Metodología del procesamiento de
consultas distribuidas
Las consultas distribuidas obtienen 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.
Microsoft SQL Serveradmite consultas distribuidas utilizando OLE DB.
Los usuarios de SQL Server pueden utilizar consultas distribuidas para obtener acceso a lo siguiente:
✓ Datos distribuidos almacenados en varias instancias de SQL Server.
✓ Datos heterogéneos almacenados en varios orígenes de datos relacionales y no relacionales a los
que se obtiene acceso mediante un proveedor OLE (Object Linking and Embedding (Incrustación y
Vinculación de Objetos) DB.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
3
3.1 Metodología del procesamiento de
consultas distribuidas
viernes, 23 de julio de 2021
Base de Datos Distribuidas
4
3.1 Metodología del
procesamiento de
consultas distribuidas
viernes, 23 de julio de 2021
Base de Datos Distribuidas
5
3.1 Metodología del procesamiento de
consultas distribuidas
Operaciones Aritméticas en Consultas
• Dentro de un SELECT podemos mostrar resultados que provienen de uno o varios campos de la
base de datos utilizando operaciones matemáticas.
• Las operaciones básicas son suma (+), resta (-), división (/) y multiplicación (*).
• A continuación vamos a mostrar algunos ejemplos:
Operaciones Aritméticas – Mult.
• Mostrar el nombre y el salario anual de los empleados. (asuma que el atributo salario sólo tiene el
pago mensual)
• SELECT emp_nombre, emp_salario * 12
• FROM empleado;
viernes, 23 de julio de 2021
Base de Datos Distribuidas
6
3.1 Metodología del procesamiento de
consultas distribuidas
Operaciones Aritméticas - SumaOperaciones Aritméticas – Suma
• ¿A cuánto subiría el salario de cada empleado si le incluimos 300 dólares de aumento? Mostrar el
nombre y el salario incluyéndole el aumento de 300 dólares.
• SELECT emp_nombre, emp_salario + 300
• FROM empleado;
Operaciones Aritméticas – Varios
• Mostrar el nombre y lo que gana el empleado en comisión para aquellos que son vendedores.
• SELECT emp_nombre, emp_commision * emp_salario / 100
• FROM empleado
• WHERE emp_titulo = ‘Vendedores’;
viernes, 23 de julio de 2021
Base de Datos Distribuidas
7
3.1 Metodología del procesamiento de
consultas distribuidas
Operaciones Alfanuméricas en Consultas
• En estas operaciones se juega con el manejo de caracteres y “string”.
• Permiten una mejor presentación de los datos en pantalla y/o reportes.
• Ayuda en la búsqueda de instancias en la tabla.
• A continuación mostramos algunos ejemplos
Operaciones Alfanuméricas en Consultas – Ejemplo 1
• Mostrar el nombre y apellido (que no queden separados por espacios en blanco)
• SELECT emp_nombre || emp_apellidos
• FROM empleado;
viernes, 23 de julio de 2021
Base de Datos Distribuidas
8
3.1 Metodología del procesamiento de
consultas distribuidas
Operaciones Aritméticas con Fechas en Consultas
• SQL permite ejecutar queries que incluyan operaciones aritméticas con fechas.
• Es útil para manejar días, diferencias entre fechas y calcular estimados de tiempo.
A continuación mostramos algunos ejemplos:
Operaciones Aritméticas con Fechas en Consultas – Ejemplo 1
• Mostrar el nombre del empleado, la fecha que comenzó y la fecha en que le corresponde evaluarlo
en la empresa ( La evaluación se hace después de los primeros 6 meses de comenzar a trabajar)
• SELECT emp_nombre, emp_fecha_inicio, ADD_MONTHS(emp_fecha_inicio,6) AS ‘Fecha
• Evaluación’
• FROM empleado;
viernes, 23 de julio de 2021
Base de Datos Distribuidas
9
3.1 Metodología del procesamiento de
consultas distribuidas
viernes, 23 de julio de 2021
Base de Datos Distribuidas
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, típicamente alguna
variación del álgebra relacional. La
consulta de bajo nivel implementa
de hecho la estrategia de ejecución
para la consulta. La transformación
debe ser correcta y eficiente. Es
correcta si la consulta de bajo nivel
tiene la misma semántica que la
consulta original, esto es, si ambas
consultas producen el mismo
resultado.
10
3.1 Metodología del procesamiento de
consultas distribuidas
viernes, 23 de julio de 2021
Base de Datos Distribuidas
11
3.1 Metodología del procesamiento de
consultas distribuidas
Ejemplo:
E( ENO, ENOMBRE, TITULO )
G( ENO, JNO, RESPONSABLE, JORNADA )
y la siguiente consulta de usuario:
"Encuentre todos los nombres de empleados que manejan un proyecto"
La expresión de la consulta en SQL se puede ver como
SELECT ENOMBRE
FROM E, G
WHERE E.ENO = G.ENO AND RESPONSABLE = "ADMINISTRADOR"
Dos consultas equivalentes en el álgebra relacional que son transformaciones correctas de la
consulta en SQL son:
viernes, 23 de julio de 2021
Base de Datos Distribuidas
12
3.1 Metodología del procesamiento de
consultas distribuidas
Como es intuitivamente obvio, la segunda estrategia que evita calcular el producto cartesiano entre E y
G, consume mucho menos recursos que la primera y, por lo tanto, es mejor.
En el procesamiento distribuido de consultas se estudia el coste de las comunicaciones.
Las consultas distribuidas se realizarán, ante todo, con la operación de semijoin para poder optimizar dichas
consultas.
En un sistema distribuido hay varios factores adicionales que complican el proceso de consulta en comparación
con los sistemas centralizados. El primero de estos factores es el coste de transferencia de datos a través de la
red. Los datos son enviados a ficheros intermedios que a su vez se envían a otros nodos para nuevos
procesos. Los ficheros resultantes deben enviarse de vuelta al nodo que lanzó la consulta. Los algoritmos de
consulta
deben, por tanto, tener como objetivo laBase
reducción
de la cantidad de datos transferidos.
viernes, 23 de julio de 2021
de Datos Distribuidas
13
3.1 Metodología del procesamiento de
consultas distribuidas
Algunos de los problemas más comunes que se presentan en los sistemas de bases de datos distribuidas. En
los entornos distribuidos de datos podemos encontrar lo siguientes:
• Fallo de los nodos. Cuando un nodo falla, el sistema deberá continuar trabajando con los nodos que aún
funcionan. Si el nodo a recuperar es una base de datos local, se deberán separar los datos entre los nodos
restantes antes de volver a unir de nuevo el sistema.
• Copias múltiples de fragmentos de datos. El subsistema encargado del control de concurrencia es el
responsable de mantener la consistencia en todas las copias que se realicen y el subsistema que realiza la
recuperación es el responsable de hacer copias consistentes de los datos de los nodos que han fallado y
que después se recuperarán.
• Transacción distribuida correcta. Se pueden producir fallos durante la ejecución de una transacción
correcta si se plantea el caso de que al acceder a alguno de los nodos que intervienen en la transacción,
dicho nodo falla.
• Fallo de las conexiones de comunicaciones. El sistema debe ser capaz de tratar los posibles fallos que
se produzcan en las comunicaciones entre nodos. El caso más extremo es el que se produce cuando se
divide la red. Esto puede producir la separación de dos o más particiones donde las particiones de cada
nodo pueden comunicarse entre sí pero no con particiones de otros nodos.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
14
3.2 ESTRATEGIAS DE PROCESAMIENTO DE
CONSULTAS DISTRIBUIDAS
❑ En el procesamiento distribuido de consultas se estudia el coste de las comunicaciones.
Objetivo: la reducción de la cantidad de datos transferidos.
❑ Optimización mediante operación de semijoin.
❑ En un sistema distribuido existen factores que complican el proceso de consulta en comparación
con los sistemas centralizados.
✓ Costo de transferencia de datos a través de la red.
Ejemplos de consulta distribuida:
viernes, 23 de julio de 2021
Base de Datos Distribuidas
15
3.2 ESTRATEGIAS DE PROCESAMIENTO DE
CONSULTAS DISTRIBUIDAS
Tamaño de la relación EMPLEADO es 100 * 10.000 = 106 bytes
Tamaño de la relación DEPARTAMENTO es 35 * 100 = 3500 bytes. Consideremos la consulta:
“Por cada empleado, obtener el nombre del empleado y el nombre del departamento al que
pertenece”.
La expresión de ésta consulta en álgebra relacional será:
El resultado de ésta consulta constará de 10.000 tuplas. Cada tupla resultante será de una longitud
de 40 bytes. El tamaño del resultado será por tanto de 400.000 bytes.
Supongamos que el resultado viaja al nodo 3, denominado nodo respuesta ya que será el lugar
donde se requiera el resultado de dicha consulta. Sin embargo, ni la relación EMPLEADO ni
DEPARTAMENTO residen en dicho nodo.
Ejemplo de consulta distribuida:
Contador:
viernes, 23 de julio de 2021
Base de Datos Distribuidas
16
3.2 ESTRATEGIAS DE PROCESAMIENTO DE
CONSULTAS DISTRIBUIDAS
viernes, 23 de julio de 2021
Base de Datos Distribuidas
17
3.2 ESTRATEGIAS DE PROCESAMIENTO DE
CONSULTAS DISTRIBUIDAS
Estrategias:
1. Transferir la relación EMPLEADO y DEPARTAMENTO al nodo respuesta (nodo 3) y realizar allí la
operación de join. En éste caso se transfieren 1.000.000 + 3.500 = 1.003.500 bytes.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
18
3.2 ESTRATEGIAS DE PROCESAMIENTO DE
CONSULTAS DISTRIBUIDAS
2. Transferir la relación EMPLEADO al nodo 2, ejecutar el join en este nodo y enviar el resultado al
nodo 3. Esto implicaría transferir 1.000.000 bytes de EMPLEADO + 400.000 bytes del resultado, es
decir: 1.400.000 bytes.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
19
3.2 ESTRATEGIAS DE PROCESAMIENTO DE
CONSULTAS DISTRIBUIDAS
3. Transferir la relación DEPARTAMENTO al nodo 1, ejecutar el join en este nodo y enviar el
resultado al nodo 3. En este caso, los bytes transferidos serán: 3.500 de la relación DEPART
AMENTO más 400.000 del resultado. Es decir 403.500 bytes.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
20
3.2 ESTRATEGIAS DE PROCESAMIENTO DE
CONSULTAS DISTRIBUIDAS
❑ Realizar las operaciones de selección lo antes posible
❑ Combinar el producto cartesiano con una operación de selección subsiguiente cuyo predicado
represente una condición de combinación, para formar una operación de combinación
❑ Utilizar la asociatividad de las operaciones binarias para reordenar los nodos hoja de modo que
los nodos hoja con las operaciones de selección más restrictivas se ejecuten primero
❑ Realizar las operaciones de proyección lo antes posible
❑ Calcular una única vez las expresiones posibles.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
21
3.2.1 ÁRBOLES DE CONSULTAS.
Árbol: En ciencias de la informática, un árbol es una estructura de datos ampliamente usada que
imita la forma de un árbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se
construye el árbol y puede tener cero o más nodos hijos conectados a él.
Se dice que un nodo a es padre de un nodo b si existe un enlace desde a hasta b (en ese caso,
también decimos que b es hijo de a). Sólo puede haber un único nodo sin padres, que llamaremos
raíz. Un nodo que no tiene hijos se conoce como hoja. Los demás nodos (tienen padre y uno o varios
hijos) se les conoce como rama.
Consulta: método para acceder a los datos en la base de datos. Con las consultas se puede
modificar, mostrar agregar datos de una BD.
ÁRBOL DE LA CONSULTA
SQL Es una representación interna de una sentencia SQL donde las partes individuales que la
construyó se almacenan por separado. Estos árboles de consulta son visibles cuando se inicia el
Postgre SQL y escribir consultas en la interfaz de usuario interactivo.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
22
3.2.1 ÁRBOLES DE CONSULTAS.
Definición de árbol de consulta
Un árbol de consulta es una estructura de árbol que corresponde a una expresión del álgebra
relacional, donde las relaciones iniciales son representadas a través de los nodos hojas del árbol y
las operaciones son representadas en los nodos internos.
Una ejecución de un árbol de consulta consiste en la ejecución de una operación de un nodo
interno siempre que sus operadores estén disponibles y luego sustituyendo este nodo por la
relación que resulte de ejecutar la operación.
La ejecución termina cuando el nodo raíz es ejecutado y produce la relación resultante.
El bloque de consulta tiene la siguiente forma: SELECT < lista de atributos > FROM < lista de tablas>
WHERE < condición > La lista de atributos, es la lista de nombres de atributos cuyos valores serán
recuperados en la consulta. La lista de tablas, es la lista de nombres de las tablas o relaciones
necesarias para procesar la consulta. La condición, es la expresión condicional (booleana) que
identifica las tuplas que serán recuperadas por la consulta.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
23
3.2.1 ÁRBOLES DE CONSULTAS.
Ejemplo de árbol de consulta
“Listar los nombres de los empleados nacidos antes de 1960 que trabajen en un proyecto llamado
Géminis”
SELECT enombre
FROM Empleado, Trabaja-en, Proyecto
WHERE pnombre = “Géminis” AND pnumero = pnum AND Empleado.c.i.=Trabaja-en.c.i. AND fnac <
01/01/1960
viernes, 23 de julio de 2021
Base de Datos Distribuidas
24
3.2.1 ÁRBOLES DE CONSULTAS.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
25
3.2.1 ÁRBOLES DE CONSULTAS.
Las partes de un árbol de consulta
SQL Al leer las representaciones de SQL de los árboles de consulta en este documento es necesario para
poder identificar las partes se divide el estado en cuando se encuentra en la estructura del árbol de la
consulta. Las partes de un árbol de la consulta son:
❑ El tipo de comando .- Este es un valor simple decir que comando (SELECT, INSERT, UPDATE, DELETE)
produjo el árbol de análisis.
❑ La tabla de rango
La tabla es una lista amplia de las relaciones que se utilizan en la consulta. En una instrucción SELECT se
trata de las relaciones dadas después de la palabra clave FROM.
Cada entrada de la tabla gama identifica una tabla o vista y le dice por qué nombre se le llama en otras
partes de la consulta. SQL En el árbol de consulta de las entradas de tabla de la gama se hace referencia por
el índice en lugar de por su nombre, así que aquí no importa si hay nombres duplicados ya que en una
sentencia SQL.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
26
3.2.1 ÁRBOLES DE CONSULTAS.
❑ La relación resultado
Este es un índice en la tabla de rango que identifica la relación donde van los resultados de la consulta.
Las consultas SELECT normalmente no tienen una relación de resultados.
En las consultas INSERT, UPDATE y DELETE la relación resultado es la tabla donde los cambios surtan
efecto.
❑ La lista de objetivos
• La lista de objetivos es una lista de expresiones que definen el resultado de la consulta. En el caso de
una SELECT, las expresiones son las que se basa el resultado final de la consulta.
• DELETE no necesitan una lista de objetivos, ya que no producen ningún resultado. CTID
• En INSERT la lista objetivo describe las nuevas filas que deben entrar en la relación resultado.
• En las consultas UPDATE, la lista de objetivos describe las nuevas filas que deben sustituir a los
antiguos
viernes, 23 de julio de 2021
Base de Datos Distribuidas
27
3.2.1 ÁRBOLES DE CONSULTAS.
La calificación
La consulta de calificación es una expresión muy similar a uno de los que figuran en la lista de
entradas de destino. El valor del resultado de esta expresión es un valor booleano que indica si la
operación (INSERT, UPDATE, DELETE o SELECT) para la fila de resultado final debe ser ejecutado
o no. SQL Es la cláusula WHERE de una instrucción SQL.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
28
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.
Cuando una base de datos es acezada de esta manera la técnica que se utiliza es la de
fragmentación de datos que puede ser hibrida, horizontal y vertical.
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 envió y la maquina 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.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
29
3.2.3 MÉTODOS DE JOIN
La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos
relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipos de JOIN: interno,
externo, y cruzado.
Matemáticamente, JOIN es composición relacional, la operación fundamental en el álgebra
relacional, y generalizando es una función de composición.
Tablas de ejemplo
Todas las explicaciones que están a continuación utilizan las siguientes dos tablas para ilustrar el
efecto de diferentes clases de uniones JOIN.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
30
3.2.3 MÉTODOS DE JOIN
La tabla Empleado contiene a los empleados con el número del departamento al que pertenecen;
mientras que la tabla Departamento, contiene el nombre de los departamentos de la empresa, se
puede notar que existe un empleado que tiene asignado un número de departamento que no se
encuentra en la tabla Departamento (Gaspar), igualmente, en la tabla Departamento existe un
departamento al cual no pertenece empleado alguno (Mercadeo). Esto servirá para presentar algunos
ejemplos más adelante.
Combinación interna (INNER JOIN)
Con esta operación se calcula el producto cruzado de todos los registros; así cada registro en la tabla
A es combinado con cada registro de la tabla B; pero sólo permanecen aquellos registros en la tabla
combinada que satisfacen las condiciones que se especifiquen. Este es el tipo de JOIN más utilizado
por lo que es considerado el tipo de combinación predeterminado.
Sql especifica dos formas diferentes para expresar estas combinaciones. La primera, conocida como
explícita usa la palabra JOIN, mientras que la segunda es implícita y usa ',' para separar las tablas a
combinar en la sentencia FROM de la declaración SELECT. Entonces siempre se genera el producto
cruzado del cual se seleccionan las combinaciones que cumplan lo que indica la sentencia WHERE.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
31
3.2.3 MÉTODOS DE JOIN
Es necesario tener especial cuidado cuando se combinan columnas con valores nulos NULL ya que
el valor nulo no se combina con otro valor o con otro nulo, excepto cuando se le agregan predicados
tales como IS NULL o IS NOT NULL.
Como ejemplo, la siguiente consulta toma todos los registros de la tabla Empleado y encuentra todas
las combinaciones en la tabla Departamento. La sentencia JOIN compara los valores en la columna
IDDepartamento en ambas tablas. Cuando no existe esta correspondencia entre algunas
combinaciones, éstas no se muestran; es decir que si el número de departamento de un empleado no
coincide con los números de departamento de la tabla Departamento, no se mostrará el empleado
con su respectivo departamento en la tabla resultante.
Las dos consultas siguientes son similares, y se realizan de manera explícita (A) e implícita (B).
viernes, 23 de julio de 2021
Base de Datos Distribuidas
32
3.2.3 MÉTODOS DE JOIN
A. Ejemplo de la sentencia INNER JOIN explícita:
SELECT *
FROM empleado
INNER JOIN departamento
ON empleado.IDdepartamento = departamento.IDdepartamento
B. Ejemplo de la sentencia INNER JOIN implícita:
SELECT *
FROM empleado, departamento
WHERE empleado.IDdepartamento = departamento.IDDepartamento
viernes, 23 de julio de 2021
Base de Datos Distribuidas
33
3.2.3 MÉTODOS DE JOIN
Resultados:
viernes, 23 de julio de 2021
Base de Datos Distribuidas
34
3.2.3 MÉTODOS DE JOIN
El empleado Gaspar y el departamento de Mercadeo no son presentados en los resultados ya que
ninguno de éstos tiene registros correspondientes en la otra tabla. No existe un departamento con
número 36 ni existe un empleado con número de departamento 35.
Combinación externa (OUTER JOIN)
Mediante esta operación no se requiere que cada registro en las tablas a tratar tenga un registro
equivalente en la otra tabla. El registro es mantenido en la tabla combinada si no existe otro registro
que le corresponda.
En sql no existe una notación implícita para las combinaciones externas.
Este tipo de operación se subdivide dependiendo de la tabla a la cual se le admitirán los registros que
no tienen correspondencia, ya sean de tabla izquierda, de tabla derecha, o combinación completa.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
35
3.2.3 MÉTODOS DE JOIN
De tabla izquierda (LEFT OUTER JOIN o LEFT JOIN)
El resultado de esta operación siempre contiene todos los registros de la tabla de la izquierda (la primera
tabla que se menciona en la consulta), aun cuando no exista un registro correspondiente en la tabla de la
derecha, para uno de la izquierda.
La sentencia LEFT OUTER JOIN retorna la pareja de todos los valores de la tabla izquierda con los
valores de la tabla de la derecha correspondientes, o retorna un valor nulo NULL en caso de no
correspondencia.
A diferencia del resultado presentado en los ejemplos A y B (de combinación interna) donde no se
mostraba el empleado cuyo departamento no existía; en el siguiente ejemplo se presentarán los
empleados con su respectivo departamento, e inclusive se presentará el empleado, cuyo departamento no
existe.
Ejemplo de tabla izquierda para la combinación externa:
SELECT distinct *
FROM empleado
LEFT OUTER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento
viernes, 23 de julio de 2021
Base de Datos Distribuidas
36
3.2.3 MÉTODOS DE JOIN
viernes, 23 de julio de 2021
Base de Datos Distribuidas
37
3.2.3 MÉTODOS DE JOIN
De tablederecha (RIGHT OUTER JOIN o RIGHT JOIN)
Esta operación es inversa a la anterior; el resultado de esta operación siempre contiene todos los
registros de la tabla de la derecha (la segunda tabla que se menciona en la consulta), aun cuando no
exista un registro correspondiente en la tabla de la izquierda, para uno de la derecha.
La sentencia RIGHT OUTER JOIN retorna la pareja de todos los valores de la tabla derecha con los
valores de la tabla de la izquierda correspondientes, o retorna un valor nulo NULL en caso de no
correspondencia.
Ejemplo de tabla derecha para la combinación externa:
SELECT *
FROM empleado
RIGHT OUTER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento
viernes, 23 de julio de 2021
Base de Datos Distribuidas
38
3.2.3 MÉTODOS DE JOIN
viernes, 23 de julio de 2021
Base de Datos Distribuidas
39
3.2.3 MÉTODOS DE JOIN
En este caso el área de Mercadeo fue presentada en los resultados, aunque aún no hay empleados
registrados en dicha área.
Combinacióncompleta (FULL OUTER JOIN)
Esta operación presenta los resultados de tabla izquierda y tabla derecha aunque no tengan
correspondencia en la otra tabla. La tabla combinada contendrá, entonces, todos los registros de
ambas tablas y presentará valores nulos NULLs para registros sin pareja.
Ejemplo de combinación externa completa:
SELECT *
FROM empleado
FULL OUTER JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento
viernes, 23 de julio de 2021
Base de Datos Distribuidas
40
3.2.3 MÉTODOS DE JOIN
viernes, 23 de julio de 2021
Base de Datos Distribuidas
41
3.2.3 MÉTODOS DE JOIN
Como se puede notar, en este caso se encuentra el empleado Gaspar con valor nulo en su área correspondiente, y se
muestra además el departamento de Mercadeo con valor nulo en los empleados de esa área.
Algunos sistemas de bases de datos no soportan esta funcionalidad, pero esta puede ser emulada a través de las
combinaciones de tabla izquierda, tabla derecha y de la sentencia de unión.
K. El mismo ejemplo puede expresarse así:
SELECT *
FROM empleado
LEFT JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento
UNION
SELECT *
FROM empleado
RIGHT JOIN departamento
ON empleado.IDDepartamento = departamento.IDDepartamento
WHERE empleado.IDDepartamento IS NULL
viernes, 23 de julio de 2021
Base de Datos Distribuidas
42
3.2.3 MÉTODOS DE JOIN
Cruzada (Cross join)
Presenta el producto cartesiano de todos los registros de las dos tablas.
El código SQL para realizar este producto cartesiano enuncia las tablas que serán combinadas, pero
no incluye algún predicado que filtre el resultado.
Ejemplo de combinación cruzada explícita:
SELECT *
FROM empleado CROSS JOIN departamento
Ejemplo de combinación cruzada implícita:
SELECT *
FROM empleado, departamento;
viernes, 23 de julio de 2021
Base de Datos Distribuidas
43
3.2.3 MÉTODOS DE JOIN
viernes, 23 de julio de 2021
Esta clase de combinaciones son usadas pocas veces,
generalmente se les agregan condiciones de filtrado con la
sentencia
WHERE para hallar resultados específicos.
Base de Datos Distribuidas
44
3.3.- OPTIMIZACIÓN DE CONSULTAS
Cada día se necesita procesar mayor cantidad de datos y obtener de manera más rápida y precisa la
información. Muchos de los problemas de rendimiento se deben entre otras cosas al hardware, al
software, al motor de base de datos y por sobre todo al diseño, índices y mala formulación de
consultas SQL.
Existe la posibilidad de encontrar algunas Consultas SQL, que al momento de ejecutarse, generen
problemas en el SBD, tales como: -Elevada carga del CPU -Bloquean procesos de trabajo durante
largo tiempo. -Leen muchos bloques de datos a la memoria intermedia (Paginamiento) - Las
Consultas SQL que generan este tipo de problema, se las denomina “COSTOSAS” o
“INEFICIENTES”.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
45
3.3.- OPTIMIZACIÓN DE CONSULTAS
La optimización de consultas es el proceso de la selección del plan de evaluación de las consultas más
eficiente entre las muchas estrategias generalmente disponibles para el procesamiento de una consulta
dada, especialmente si la consulta es compleja. No se espera que los usuarios escriban las consultas de
modo que puedan procesarse de manera eficiente. Por el contrario se espera que el sistema cree un plan
de evaluación de las consultas que minimice el coste de la evaluación de las consultas aquí es donde entra
la optimización de consultas.
El procesamiento de consultas tiene varias etapas a seguir para resolver una consulta SQL. Las
características del modelo relacional permiten que cada motor de base de datos elija su propia
representación que, comúnmente, resulta ser el álgebra relacional. Una de las etapas es:
La optimización de consultas
Supone la utilización de una medida de costo que sea común a lo largo del proceso, esta medida debe
representar el criterio de minimización en la utilización de recursos del sistema. ). Este enfoque estima un
costo que estará determinado por formulas predefinidas y por la información del catalogo inherente a la
consulta. Sin embargo el optimizador no siempre escoge el plan más óptimo, ya que una búsqueda
exhaustiva de la estrategia óptima puede consumir demasiado tiempo de proceso.
El catálogo de la base de datos guarda información estadística de cada una de las relaciones como
también de los índices de cada una de la relaciones, estas estadísticas permiten estimar los tamaños de
los resultados de varias operaciones.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
46
3.3.- OPTIMIZACIÓN DE CONSULTAS
Una mala administración de la información que contiene el catálogo conducirá inevitablemente a una
desafortunada elección del plan de ejecución.
Consiste en la actualización automática de las estadísticas que algunos motores de base de datos incluyen
como opción. Otro enfoque es la opción de guardar en el catálogo planes de ejecución precalculados que
además le ahorran al motor el tiempo de cálculo del plan.
Uno de los primeros optimizadores de consultas y el que se conoce como base para la mayoría de los
optimizadores tradicionales es el optimizador de System R. System R es un optimizador basado en costos
pero que utiliza heurísticas para desplazar selecciones y proyecciones hacia abajo en el árbol de la
consulta. El primer paso de un optimizador de consultas es encontrar una expresión del álgebra de
relaciones que sea equivalente a la expresión dada y cuyo costo estimado de ejecución sea menor.
La optimización incide:
❑ La optimización El coste de comunicación de acceso a almacenamiento secundario.
❑ El coste de almacenamiento.
❑ El coste de computación.
❑ El optimizador interviene también en las actualizaciones y borrados.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
47
3.3.- OPTIMIZACIÓN DE CONSULTAS
• PASOS PARA GENERAR UNA OPTIMIZACIÓN:
• 1. Generar un Plan de Ejecución
• 2. Escribir la consulta
• 3. Crear y gestionar índices: los índices se utilizan para agilizar las búsquedas de información.
• 4. Aplicación del plan
viernes, 23 de julio de 2021
Base de Datos Distribuidas
48
3.3.- OPTIMIZACIÓN DE CONSULTAS
TIEMPO DE OPTIMIZACIÓN
Una consulta puede ser optimizada en tiempos diferentes con relación a tiempo de ejecución de la
consulta. La optimización se puede realizar de manera estática antes de ejecutar la consulta o de
forma dinámica durante la ejecución de la consulta.
▪ Optimización estática se hace en tiempo de compilación de la consulta. Así, el costo de la
optimización puede ser amortizada sobre múltiples ejecuciones de la misma consulta.
▪ Optimización de consultas dinámica la elección de la mejor operación siguiente se puede hacer
basado en el conocimiento exacto de los resultados de las operaciones anteriores. Por tanto, se
requiere tener estadísticas acerca del tamaño de los resultados intermedios para aplicar esta
estrategia.
▪ Híbrido: utiliza básicamente un enfoque estático, pero se puede aplicar un enfoque dinámico
cuando los tamaños de las relaciones estimados están alejados de los tamaños actuales.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
49
3.3.- OPTIMIZACIÓN DE CONSULTAS
LA OPTIMIZACIÓN DE CONSULTAS se hace de dos maneras:
A nivel del Álgebra relacional: es un lenguaje de consulta procedural. Consta de un conjunto de
operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva
relación; el sistema intenta hallar una expresión que sea equivalente a la expresión dada, pero de
ejecución más eficiente. (utilizando el selección, proyección, producto artesiano, unión). Este tipo de
OPTIMIZACIÓN es para las consultas globales.
Algoritmos de sistemas centralizados: estrategia detallada para el procesamiento de las consultas
para ejecutar la operación, la selección de los índices concretos que se van a emplear, etc. Este tipo
de OPTIMIZACIÓN es para las consultas locales
viernes, 23 de julio de 2021
Base de Datos Distribuidas
50
3.3.1 OPTIMIZACIÓN GLOBAL DE CONSULTAS
Optimización se define desde un punto de vista informático, como la búsqueda y el hecho de mejorar el
rendimiento de un sistema operativo, programa o dispositivo, a partir de determinados cambios lógicos
(software) o físicos (hardware)
• Cuando hablamos de optimización de consultas nos referimos a mejorar los tiempos de respuesta en
un sistema de gestión de bases de datos relacional, pues la optimización es el proceso de modificar un
sistema para mejorar su eficiencia o también el uso de los recursos disponibles.
• 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 cardinalidades. 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.
• • La optimización global se da con respecto a todo el código.
• • Este tipo de optimización es más lenta pero mejora el desempeño general de todo programa.
• • Las optimizaciones globales pueden depender de la arquitectura de la máquina.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
51
3.3.1 OPTIMIZACIÓN GLOBAL DE CONSULTAS
viernes, 23 de julio de 2021
Base de Datos Distribuidas
52
3.3.1 OPTIMIZACIÓN GLOBAL DE CONSULTAS
Descomposición de consultas
La primera capa descompone una consulta en el cálculo relacional en una consulta en el álgebra relacional
que opera sobre relaciones globales. Consiste de cuatro partes:
1. Normalización. Involucra la manipulación de los cuantificadores de la consulta y de los calificadores de
la misma mediante la aplicación de la prioridad de los operadores lógicos.
2. Análisis. Se detecta y rechazan consultas semánticamente incorrectas.
3. Simplificación. Elimina predicados redundantes.
4. Reestructuración. Mediante reglas de transformación una consulta en el cálculo relacional se
transforma a una en el álgebra relacional. Se sabe que puede existir más de una transformación. Por tanto,
el enfoque seguido usualmente es empezar con una consulta algebraica y aplicar transformaciones para
mejorarla.
Localización de Datos
La entrada a esta capa es una consulta algebraica definida sobre relaciones distribuidas. El objetivo de
esta capa es localizar los datos de la consulta usando la información sobre la distribución de datos. Esta
capa determina cuales fragmentos están involucrados en la consulta y transforma la consulta distribuida en
una consulta sobre fragmentos.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
53
3.3.1 OPTIMIZACIÓN GLOBAL DE CONSULTAS
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 cardinalidades. 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.
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.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
54
3.3.2 OPTIMIZACIÓN LOCAL DE CONSULTAS
¿Que se busca con la optimización local de consultas?
El programador al momento de diseñar sus bases de datos, busca mejorar los siguientes dos criterios:
✓ Tiempo de ejecución
✓ Espacio de memoria utilizado
Esto se realiza mediante operaciones, métodos, que ayudan a reducir los costos de comunicación y el
consumo de recursos de la CPU.
El manejo de los costos de comunicación se define por las métricas utilizadas, para cada nodo, como las
bases de datos distribuidas operan bajo una arquitectura de red, se definen costos de comunicaciones.
Los diferentes factores pueden tener pesos diferentes dependiendo del ambiente distribuido en el que se
trabaje.
La optimización local se basa específicamente en condiciones locales dentro de un programa fuente, y no
se contempla el flujo de ejecución del programa, para este tipo de optimización lo que se contempla es
particionar el código en bloques básicos de código (alto nivel) y sobre estos fragmentos se lleva a cabo la
optimización.
viernes, 23 de julio de 2021
Base de Datos Distribuidas
55
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 sirve cuando un bloque de programa o sección es
crítico por ejemplo: la E/S, la concurrencia, la rapidez y confiabilidad de un conjunto de instrucciones.
Características
❑ La optimización local se realiza sobre módulos del programa.
❑ La optimización sólo se ve reflejada en dichas secciones.
❑ Como el espacio de soluciones es más pequeño la optimización local es más rápida
viernes, 23 de julio de 2021
Base de Datos Distribuidas
56
Gracias por su atención
viernes, 23 de julio de 2021
Base de Datos Distribuidas
57
Descargar