Você está na página 1de 4

Consulta

Semi join (<): R S AA

< RA RB RC
1 1 2
Genera una relacin R3 a partir de R1 y R2 que contiene los atributos de R1 con las tuplas de R1 Juntadas con al menos una tupla de R2. Es equivalente a un join de R1 y R2 seguido por la proyeccin sobre los atributos de R1. Similar al natural join Slo se muestran los atributos de la primera relacin (relacin de la izquierda). Solo se muestran atributos de la relacin de la izq. Muy utilizado en ambientes distribuidos (minimiza comunicaciones)

T1<A,AT6 A 1 B 1 C 2

Fragmentacin horizontal derivada.


Una fragmentacin horizontal derivada se define sobre una relacin miembro de acuerdo a una operacin de seleccin especificada sobre su propietaria. Se deben dejar claros dos puntos. Primero, el enlace entre las relaciones propietaria y miembro se define como un equi-yunto. Segundo, un equi-yunto puede desarrollarse a travs de semiyuntos. Este segundo punto es especialmente importante para nuestros propsitos, ya que deseamos fraccionar una relacin miembro segn la fragmentacin de su propietaria, adems es necesario que el fragmento resultante se defina nicamente sobre los atributos de la relacin miembro. Por tanto, dado un enlace L donde propietaria(L) = S y miembro(L) = R, los fragmentos horizontales derivados de R se definen como

donde w es el nmero mximo de fragmentos que se definirn sobre R, y Si = ?Fi(S), donde Fi es la frmula segn la cual se define el fragmento horizontal primario Si.

Ejemplo 8. Considere un enlace L1 entre las relaciones PROVINC y CLIENTES de la base de datos que venimos utilizando para los ejemplos, donde propietaria(L1) = PROVINC y miembro(L1) = CLIENTES. Supongamos que queremos dividir a nuestro grupo de clientes en funcin de la comunidad autnoma donde se encuentran situados. Entonces podemos definir cuatro fragmentos de la siguiente forma:

donde

El resultado de esta fragmentacin puede verlo pulsando aqu. Las tres entradas necesarias para desarrollar la fragmentacin horizontal derivada son las siguientes: el conjunto de particiones de la relacin propietaria, la relacin miembro y el conjunto se predicados resultados de aplicar el semi-yunto entre la propietaria y la miembro. El algoritmo de fragmentacin resulta tan trivial que no se ve la necesidad de entrar en detalles. Existe una posible complicacin que necesita nuestro estudio. En un esquema de base de datos, resulta frecuente que existan ms de dos enlaces sobre una relacin R. En este caso, aparecen ms de una posibilidad de fragmentacin horizontal derivada. La decisin para elegir una u otra se basa en dos criterios: Uno, la fragmentacin con mejores caractersticas de yunto. Dos, la fragmentacin empleada en ms aplicaciones. Discutamos el segundo criterio primero. Resulta sencillo de establecer si tomamos en consideracin la frecuencia con la que cada aplicacin accede a los datos. Si es posible, deberamos intentar facilitar el acceso a los usuarios que hagan mayor uso de los datos para, de esta manera, minimizar el impacto total del rendimiento del sistema.

Figura 5. Grafo de yuntos entre fragmentos.

El primer criterio, sin embargo, no es tan sencillo. Considere, por ejemplo, la fragmentacin expuesta en el ejemplo 8. El objetivo de esta fragmentacin consiste en beneficiar a la consulta que haga uso de las dos relaciones al poder realizarse el yunto de CLIENTES y PROVINC sobre

relaciones ms pequeas (es decir, fragmentos), y posibilitar la confeccin de yuntos de manera distribuida. El primer aspecto resulta obvio. Los fragmentos de CLIENTES son ms pequeos que la propia relacin CLIENTES. Por tanto, resultar ms rpido llevar a cabo el yunto de un fragmento de PROVINC con otro de CLIENTES que trabajar con las propias relaciones. El segundo punto, sin embargo, es ms importante ya que es la esencia de las bases de datos distribuidas. Si, adems de estar ejecutando un nmero de consultas en diferentes sitios, podemos ejecutar una consulta en paralelo, se espera que el tiempo de respuesta del sistema aumente. En el caso de yuntos, esto es posible bajo ciertas circunstancias. Considere, por ejemplo, el grafo de yunto (los enlaces) entre los fragmentos de CLIENTES y la derivada PROVINC. Hay nicamente un enlace entrando o saliendo de un fragmento. De ah, que se denomine a este grafo, grafo simple. La ventaja de este diseo donde la relacin de yunto entre los fragmentos es simple, radica en la asignacin a un sitio tanto de la propietaria como de la miembro y los yuntos entre pares diferentes de fragmentos pueden realizarse independientemente y en paralelo. Desgraciadamente, la obtencin de grafos de yunto simples no siempre es posible. En tal caso, la mejor alternativa sera realizar un diseo que provoque un grafo de yuntos fragmentados. Un grafo fragmentado consiste en dos o ms subgrafos que no estn enlazados entre ellos. Por tanto, los fragmentos que se obtengan no se distribuirn para ejecuciones paralelas de un modo tan fcil como aquellos obtenidos a travs de grafos simples, pero su asignacin an ser posible. Ejemplo 9. Continuaremos con el diseo de la distribucin para la base de datos iniciado en el ejemplo relativo a la fragmentacin horizontal primaria. En el ejemplo anterior, nmero 8, ya se decidi fragmentar la relacin CLIENTES de acuerdo a los fragmentos generados para PROVINC. Ahora vamos a fragmentar la relacin ALBCLIT. Consideremos que existen dos aplicaciones:

1. Por un lado, se desean obtener los cdigos de los clientes a los que se expidieron
albaranes en funcin del ao de dicha expedicin.

2. Por otra parte, se desea obtener el nmero de albarn expedido a los clientes en
funcin de la situacin geogrfica de los mismos. Para la primera aplicacin la relacin ALBCLIT se fragmentar a partir de los fragmentos que se obtuvieron anteriormente para la relacin ALBCLIL. Recuerde que ALBCLIL1 : ALBCLIL2 :
NNUMALB 990000

NNUMALB > 990000

(ALBCLIL) (ALBCLIL)

Entonces, la fragmentacin derivada de ALBCLIT acorde con {ALBCLIL1, ALBCLIL2} se define como

La segunda aplicacin podra definirse en SQL como SELECT NNUMALB FROM ALBCLIT, CLIENTESi WHERE ALBCLIT.CCODCLI = CLIENTESi.CCODCLI donde i = 1, 2, 3, 4, dependiendo del sitio al que se dirija la consulta. Entonces, la fragmentacin derivada de ALBCLIT de acuerdo con la fragmentacin de CLIENTES sera

Este ejemplo demuestra dos cosas:

1. La fragmentacin derivada debe seguir una cadena donde una relacin se


fragmenta como resultado del diseo de otra y, en cambio, provoca la fragmentacin de otra relacin. Por ejemplo, la cadena PROVINC-CLIENTESALBCLIT. Normalmente, existir ms de una forma de fragmentar una relacin (como en este caso la relacin ALBCLIT). La eleccin final del esquema de fragmentacin ser una decisin guiada por la asignacin.

2.

Los fragmentos resultantes se mostrarn si pulsa aqu. Se habr percatado de la ausencia de los fragmentos ALBCLIT2 y ALBCLIT3. Este hecho se debe a que no existen tuplas en ALBCLIT que puedan derivarse de los fragmentos 2 y 3 de la relacin CLIENTES. Dicho con otras palabras, no hay albaranes expedidos a clientes residentes en Castilla La Mancha y Catalua. Por tanto, al realizar una fragmentacin horizontal derivada pueden aparecer fragmentos vacos.

Você também pode gostar