Optymalizacja zapytań w systemach rozproszonych
W tym rozdziale omówiono optymalizację zapytań w systemie rozproszonych baz danych.
Architektura rozproszonego przetwarzania zapytań
W systemie rozproszonych baz danych przetwarzanie zapytania obejmuje optymalizację zarówno na poziomie globalnym, jak i lokalnym. Zapytanie trafia do systemu bazy danych na kliencie lub w ośrodku kontrolnym. Tutaj użytkownik jest weryfikowany, zapytanie jest sprawdzane, tłumaczone i optymalizowane na poziomie globalnym.
Architekturę można przedstawić jako -
Mapowanie zapytań globalnych do zapytań lokalnych
Proces mapowania zapytań globalnych do lokalnych można zrealizować w następujący sposób -
Tabele wymagane w zapytaniu globalnym zawierają fragmenty rozmieszczone w wielu witrynach. Lokalne bazy danych zawierają informacje tylko o danych lokalnych. Witryna kontrolująca korzysta z globalnego słownika danych do zbierania informacji o dystrybucji i rekonstruuje widok globalny z fragmentów.
Jeśli nie ma replikacji, globalny optymalizator uruchamia lokalne zapytania w lokacjach, w których przechowywane są fragmenty. W przypadku replikacji globalny optymalizator wybiera lokację na podstawie kosztu komunikacji, obciążenia i szybkości serwera.
Globalny optymalizator generuje rozproszony plan wykonania, dzięki czemu między lokacjami następuje najmniejszy transfer danych. Plan określa lokalizację fragmentów, kolejność wykonywania kroków zapytania oraz procesy związane z przesyłaniem wyników pośrednich.
Lokalne zapytania są optymalizowane przez lokalne serwery baz danych. Na koniec, lokalne wyniki zapytania są łączone razem poprzez operację sumowania w przypadku fragmentów poziomych i operację łączenia dla fragmentów pionowych.
Na przykład, weźmy pod uwagę, że następujący schemat projektu jest podzielony poziomo według miasta, a miasta to New Delhi, Kalkuta i Hyderabad.
PROJEKT
PId | Miasto | Departament | Status |
Załóżmy, że istnieje zapytanie w celu pobrania szczegółów wszystkich projektów, których stan to „W toku”.
Globalne zapytanie to & inus;
$$ \ sigma_ {status} = {\ small "w toku"} ^ {(PROJEKT)} $$
Zapytanie na serwerze New Delhi będzie -
$$ \ sigma_ {status} = {\ small "w toku"} ^ {({NewD} _- {PROJECT})} $$
Zapytanie na serwerze Kalkuty będzie -
$$ \ sigma_ {status} = {\ small "w toku"} ^ {({Kol} _- {PROJEKT})} $$
Zapytanie na serwerze Hyderabad będzie -
$$ \ sigma_ {status} = {\ small "w toku"} ^ {({Hyd} _- {PROJEKT})} $$
Aby uzyskać ogólny wynik, musimy połączyć wyniki trzech zapytań w następujący sposób -
$ \ sigma_ {status} = {\ small "w toku"} ^ {({NewD} _- {PROJECT})} \ cup \ sigma_ {status} = {\ small "w toku"} ^ {({kol} _- {PROJEKT})} \ cup \ sigma_ {status} = {\ small "w toku"} ^ {({Hyd} _- {PROJECT})} $
Optymalizacja zapytań rozproszonych
Optymalizacja zapytań rozproszonych wymaga oceny dużej liczby drzew zapytań, z których każde daje wymagane wyniki zapytania. Wynika to przede wszystkim z obecności dużej ilości zreplikowanych i pofragmentowanych danych. Dlatego celem jest znalezienie optymalnego rozwiązania zamiast najlepszego.
Główne problemy związane z optymalizacją zapytań rozproszonych to:
- Optymalne wykorzystanie zasobów w systemie rozproszonym.
- Handel zapytaniami.
- Zmniejszenie przestrzeni rozwiązania zapytania.
Optymalne wykorzystanie zasobów w systemie rozproszonym
System rozproszony ma kilka serwerów baz danych w różnych lokacjach, które wykonują operacje dotyczące zapytania. Poniżej przedstawiono podejścia do optymalnego wykorzystania zasobów -
Operation Shipping- W przypadku wysyłki operacyjnej operacja jest wykonywana w miejscu przechowywania danych, a nie w siedzibie klienta. Wyniki są następnie przesyłane do witryny klienta. Jest to odpowiednie dla operacji, w których argumenty są dostępne w tej samej witrynie. Przykład: operacje Select i Project.
Data Shipping- W przypadku przesyłania danych fragmenty danych są przesyłane na serwer bazy danych, na którym wykonywane są operacje. Jest to używane w operacjach, w których operandy są rozprowadzane w różnych miejscach. Jest to również odpowiednie w systemach, w których koszty komunikacji są niskie, a lokalne procesory są znacznie wolniejsze niż serwer klienta.
Hybrid Shipping- Jest to połączenie przesyłania danych i operacji. Tutaj fragmenty danych są przesyłane do szybkich procesorów, na których przebiega operacja. Wyniki są następnie wysyłane do witryny klienta.
Query Trading
W algorytmie handlu zapytaniami dla systemów rozproszonych baz danych, witryna kontrolująca / kliencka dla zapytań rozproszonych nazywana jest kupującym, a strony, w których wykonywane są zapytania lokalne, nazywane są sprzedawcami. Kupujący formułuje szereg alternatyw wyboru sprzedawców i rekonstruowania globalnych wyników. Celem kupującego jest osiągnięcie optymalnego kosztu.
Algorytm rozpoczyna się od przypisania przez kupującego zapytań podrzędnych do witryn sprzedawcy. Plan optymalny jest tworzony z lokalnych zoptymalizowanych planów zapytań zaproponowanych przez sprzedawców w połączeniu z kosztem komunikacji w celu odtworzenia wyniku końcowego. Po sformułowaniu globalnego planu optymalnego zapytanie jest wykonywane.
Zmniejszenie przestrzeni rozwiązania zapytania
Optymalne rozwiązanie zazwyczaj obejmuje redukcję miejsca na rozwiązanie, tak aby zmniejszyć koszt zapytań i transferu danych. Można to osiągnąć za pomocą zestawu reguł heurystycznych, podobnie jak heurystyki w systemach scentralizowanych.
Oto niektóre zasady -
Wykonaj operacje wyboru i projekcji tak wcześnie, jak to możliwe. Zmniejsza to przepływ danych w sieci komunikacyjnej.
Uprość operacje na fragmentach poziomych, eliminując warunki selekcji, które nie są istotne dla konkretnego obszaru.
W przypadku operacji łączenia i łączenia składających się z fragmentów znajdujących się w wielu lokalizacjach, prześlij pofragmentowane dane do miejsca, w którym znajduje się większość danych, i wykonaj tam operację.
Użyj operacji sprzężenia połowicznego, aby zakwalifikować krotki, które mają zostać połączone. Zmniejsza to ilość przesyłanych danych, co z kolei zmniejsza koszty komunikacji.
Scal wspólne liście i poddrzewa w rozproszonym drzewie zapytań.