Juntura del picadillo

La juntura del Picadillo es un ejemplo de un algoritmo de la juntura y se usa en la realización de un sistema de gestión de la base de datos relacional.

La tarea de un algoritmo de la juntura es encontrar, para cada valor distinto del atributo de la juntura, el juego de tuples en cada relación que tienen ese valor.

Las junturas del picadillo requieren un predicado equijoin (un predicado que compara valores de una mesa con valores de la otra mesa usando el iguala al operador '=').

Juntura del picadillo clásica

El picadillo clásico se afilia al algoritmo para una juntura interior de dos beneficios de relaciones así: primero prepare una tabla hash de la relación más pequeña. Las entradas de la tabla hash consisten en el atributo de la juntura y su fila. Como tienen acceso a la tabla hash aplicando una función del picadillo al atributo de la juntura, será mucho más rápido para encontrar las filas del atributo de la juntura dadas usando esta mesa que explorando la relación original. Una vez que la tabla hash se construye, explore la relación más grande y encuentre las filas relevantes de la relación más pequeña mirando en la tabla hash. La primera fase por lo general se llama la fase "construir", mientras el segundo se llama la fase "de sonda". Del mismo modo, la relación de la juntura en la cual la tabla hash se construye se llama la entrada "construir", mientras que la otra entrada se llama la entrada "de sonda".

[GG]

Este algoritmo es simple, pero requiere que la relación de la juntura más pequeña quepa en la memoria, que no es a veces el caso. Un enfoque simple al manejo de esta situación sigue así:

  1. Para cada tuple en la entrada construir
  2. Añada a la tabla hash en la memoria
  3. Si la talla de la tabla hash iguala la talla en la memoria máxima:
  4. Explore la entrada de sonda y añada la correspondencia a la juntura tuples a la relación de la salida
  5. Reinicialice la tabla hash
  6. Haga una exploración final de la sonda introdujo y añade la juntura que resulta tuples a la relación de la salida

Esto es esencialmente lo mismo ya que el bloque anidó el algoritmo de la juntura del lazo. Este algoritmo explora más veces que necesario.

Juntura del picadillo de gracia

Un mejor enfoque se conoce como la "juntura del picadillo de gracia", después de la máquina de la base de datos de GRACIA para la cual se puso en práctica primero. Este algoritmo evita explorar de nuevo la relación entera por la primera división de ambos y vía una función del picadillo, y escribiendo estas particiones al disco. El algoritmo entonces carga a pares de particiones en la memoria, construye una tabla hash para la relación dividida más pequeña y sonda la otra relación para partidos con la tabla hash corriente. Como las particiones se formaron desmenuzando en la llave de la juntura, debe ser el caso que cualquier salida de la juntura tuples debe pertenecer a la misma partición. Es posible que una o varias de las particiones todavía no quepan en la memoria disponible, en cuyo caso el algoritmo recurrentemente se aplica: una función del picadillo ortogonal adicional se elige para desmenuzar la partición grande en subparticiones, que se tratan entonces como antes. Ya que esto es caro, el algoritmo trata de reducir la posibilidad que ocurra formando tantas particiones como posible durante la fase de división inicial.

Juntura del picadillo híbrida

El algoritmo de la juntura del picadillo híbrido es un refinamiento de la juntura del picadillo de gracia que aprovecha la memoria más disponible. Durante la fase de división, la juntura del picadillo híbrida usa la memoria disponible con dos objetivos:

  1. Para sostener la producción corriente almacenan la página en un buffer para cada una de las particiones
  2. Sostener una partición entera en la memoria, conocido como "partición 0"

Como la partición 0 nunca se escribe a o se lee del disco, la juntura del picadillo híbrida típicamente realiza menos operaciones de la entrada-salida que la juntura del picadillo de gracia. Note que este algoritmo es sensible a la memoria, porque hay dos demandas competidoras de la memoria (la tabla hash para la partición 0 y los parachoques de la salida para las particiones restantes). La elección de una tabla hash demasiado grande podría hacer que el algoritmo blasfemara de nuevo porque una de las particiones distintas a cero es demasiado grande para caber en la memoria.

Antijuntura del picadillo

Las junturas del picadillo también se pueden evaluar para un predicado de la antijuntura (un predicado que selecciona valores de una mesa cuando ningunos valores relacionados se encuentran en el otro). Según las tallas de las mesas, los algoritmos diferentes se pueden aplicar:

Desmenuce la antijuntura dejada

Esto es más eficiente cuando el NO EN la mesa es más pequeño que el DE la mesa

Desmenuce la antijuntura correcta

Esto es más eficiente cuando el NO EN la mesa es más grande que el DE la mesa

Semijuntura del picadillo

La semijuntura del picadillo es usada para devolver los archivos encontrados en la otra mesa. A diferencia de la juntura clara, devuelve cada registro de correspondencia de la mesa principal sólo una vez, no en cuanto a cuantos partidos están allí en el EN la mesa.

Como con la antijuntura, la semijuntura también puede ser derecha e izquierda:

Desmenuce la semijuntura dejada

Los archivos se devuelven directamente después de que produjeron un éxito. Los archivos actuales de la tabla hash se ignoran.

Esto es más eficiente cuando el EN la mesa es más pequeño que el DE la mesa

Desmenuce la semijuntura correcta

Con este algoritmo, cada registro de la tabla hash (es decir DE la mesa) sólo se puede devolver una vez, ya que se quita devolviéndose.

Esto es más eficiente cuando el EN la mesa es más grande que el DE la mesa

Enlaces externos



Buscar