1 Domknięcie przechodnie (również) w bazach danychAndrzej Topolewski slajdów 16+1
2 Co to jest domknięcie przechodnieDwa źródła pojęcia: teoria grafów, teoria mnogości Relacja binarna R R(A,B), R(B,C), R(C,D) R(A,B), R(B,C), R(C,D) R(A,C), R(B,D), R(A,D) Graf domknięcia przechodniego dla G to najmniejszy graf, który zawiera G i jeśli istnieje w G (równoważne: w domknięciu G) ścieżka P --> R to w domknięciu istnieje krawędź (P, R) Domknięcie relacji R, to najmniejsza relacja przechodnia zawierająca R. Warunek przechodniości relacji: R(A,B) ^ R(B,C) => R(A,C) Porządek określający element najmniejszy to liczność zbioru (krawędzi, elementów relacji) Domknięcie jest jednoznaczne.
3 Inne sformułowanie semantykiWynik procesu iteracyjnego ŚcieżkiNplus1 = COMPOSE(ŚcieżkiN, graf) Aby otrzymać domknięcie możemy zsumować ścieżki kolejno długości 2, 3, N N - maksymalna długość ścieżki, która nie może być zredukowana o cykl. Aby obliczyć krok iteracji nie musimy znać całego grafu - wystarczy sposób na tworzenie zbioru ścieżek o 1 dłuższych. Pozwala to na większą elastyczność - dane+warunek złączenia = graf Delta-iteracja: wykorzystanie poprzedniego wyniku daje kolejny przyrost Domknięcie = G + COMPOSE(G,G) + COMPOSE(COMPOSE(G,G), G) + ...
4 Jeszcze inaczej: Rozwiązanie równania stałopunktowegoDomknięcie = Graf COMPOSE(Domknięcie, Graf) Suma zbiorów?, wielozbiorów? Co jest typem wyniku? Graf domknięcia ma tą własność, że już się nie da domknąć (domknięcie jest identyczne z nim) Jest to jednocześnie wyrażenie rekursji Równanie stałopunktowe jest deklaratywnym wyrażeniem semantyki. Domknięcie daje się integrować z językami zapytań i optymalizować. Procedury rekurencyjne mogą wyrazić to samo zapytanie, ale automatyczna optymalizacja nie jest możliwa.
5 Jak podać COMPOSE Definiujemy sposób integracji operatora z językiemSchemat: Bezpośrednio
6 Struktury wyrażające grafy, hierarchieZastosowania: Struktury wyrażające grafy, hierarchie Systemy transportowe, przepływy Systemy równoległe - zależności czasowe Konstrukcja parsera Hierarchie osób, elementów, dekompozycje BOM - Bill of Material W systemach reprezentujących połączenia oprócz bezpośredniej nawigacji zazwyczaj ścieżki też mają pewną interpretację, a domknięcie wyraża zbiór osiągalny przy pewnych warunkach, które możemy podać przy warunku złączenia. W systemach równoległych domknięcie może reprezentować zbiór stanów dopuszczalnych w danym momencie Przydaje się podczas konstrukcji automatu parsującego dla zadanej gramatyki Wszelkie hierarchie reprezentujące zależności lub zawieranie, gdzie pewna informacja jest rozproszona po elementach są naturalnym miejscem na zastosowanie operatora domknięcia. Domknięcie może wyrażać iteracyjny proces (select, update) po takiej hierarchii BOM - rachunek materiałowy w zastosowaniach produkcyjnych, przemysłowych np..: dekomponujemy wyrób trwały, dom, skomplikowany cykl produkcyjny.
7 Przemysłowe hierarchieZastosowania: BOM Przemysłowe hierarchie Najprostsze wyjaśnienie: dekompozycja produktu. Komplikacje: duża ilość parametrów Zalecenia standaryzacyjne Wplot w produkcję Element montowany z wielu innych ma zazwyczaj strukturę dekompozycyjną na wyróżnialne podelementy. Z każdym podelementem mogą być związane informacje jak ilość, pracochłonność, koszt itd... Nie muszą to być „rzeczy”, mogą być materiały Np.: restauracja (kubełek->skrzydełka->sos->musztarda->gorczyca) Element może mieć N cech (opcji) np.:długość, materiał. Istnieje więc cały zbiór zależności pomiędzy parametrami: np..:długość wpływa na koszt. APICS = American Production & Inventory Control Society APICS zdefiniowało szereg standardów i schematów obsługi BOM typu: zasady identyfikowania części (konkretne, czy schemat), modularyzacja struktur (podział na część wspólną dla wielu produktów i różną) obsługa zbiorów elemntów nie połąćzonych bezpośrednio. BOM może być połączony z informacją o procesie - operacje łączenia, kolejność, normy czasowe, kwalifikacje, kontrola jakości, równoległość Zależność procesu od efektu, opcji produktu.
8 Różne się możliwości i ich konsekwencje Definiowanie krawędziWarianty domknięcia: Różne się możliwości i ich konsekwencje Możliwości algorytmu Tylko obieg drzewa Domknięcie grafu Iteracja warstw Definiowanie krawędzi Złączenie naturalne Warunek złączenia Dostęp do ulotnych atrybutów Zabronienie cykli pozwala na uproszczenie algorytmu i skutecznie ogranicza rozmiar wyniku. Upraszcza semantykę iteracyjną. Domknięcie przechodnie dowolnego grafu utożsamia silnie spójne składowe i podaje zbiór wierzchołków osiągalnych. Iteracja daje największe możliwości - powtórzenia mogą generować nową informację. Złączenie naturalne: równość wybranych kolumn i projekcja na pozostałe Warunek: wyrażenie boolowskie obliczane na podstawie dostępnych atrybutów. Dostęp do ulotnych atrybutów: pozwala na generację danych o ścieżce (przyrostowo na podstawie poprzedniej informacji)
9 Warianty domknięcia (2):Różne modyfikatory i postawienie zadania Modyfikacje semantyki Tylko różne (unique) Liście Iteracja imperatywna Sformułowanie zadania Complete TC Partial TC Iteracja z generowaniem „closed unique by” <> „unique (closed by)” leaves by - niepotrzebne wyniki pośrednie. Ortogonalne do unique Iteracja - wykonanie akcji (np..: update) dla każdego elementu wyniku Complete transitive closure - podać cały graf domknięcia, wszystkie pary (będące początkiem i końcem ścieżki) Partial transitive closure - podać domknięcie przechodnie (zbiór wierzchołków osiągalnych) zbioru początkowego. Łatwy przypadek - pojedynczy wierzchołek = przejście grafu z markowaniem = weak PTC czyli podać domknięcie jako zbiór strong PTC = podać dla każdego z osobna Iteracja z powodu generowania danych unikalnych dla każdej ścieżki nie może być optymalizowana
10 Domknięcie przechodnie w SBQLDomknięcie buduje iteracyjnie wynik według podanego zapytania wykonywanego w środowisku obiektów początkowych Operator “closed by”: q1 closed by q2 1. q1 jest obliczane. Wynik jest przechowywany w tymczasowej tablicy T. 2. Dla każdego wiersza z tablicy T: a. Na stos środowisk odkładane jest nested(r). b. Obliczane jest zapytanie q2. Wynik q2 jest dodawany do T ponad iteracją. c. Ze stosu środowisk zdejmowana jest sekcja. Proces się kończy, gdy dla ostatniego wiersza T zapytanie q2 daje pustą tablicę. T zawiera wówczas końcowy wynik.
11 Domknięcie przechodnie w SBQL (2)Cechy tej wersji operatora Działa tylko dla grafów acyklicznych Pozwala na generację informacji Charakter obliczeniowy - nie wydajnościowy Nie pozwala na rekursję nieliniową Rozpoczyna od dowolnego zbioru Operator nie broni się przed zapętleniem. Gdyby unikał zapętlenia to traciłby na ekspresji. Niektóre implementacje nie pozwalają na odwołanie się do nietrwałych atrybutów np..: „connect by” (Oracle) Brak możliwości optymalizacji - za to większe możliwości obliczania Niektórzy proponują dodatkowe informacje „INCreasing attribute” które miałyby służyć optymalizacji. Patrz przykłady zadań Większość propozycji pozwala użyć tylko trwałych ekstensji jako źródło domykanych danych. Nie jest to problemem - perspektywy. Jest to problemem- wydajność klasycznego „partial transitive closure”
12 Transitive Closure - przykładSchemat: Wszystkie części składające się na silnik: (PART where NAME = “engine”) closed by (COMPOSITE. MadeFROM. USES. PART) Jak wyżej, zle tylko części podstawowe razem z ilością w silniku: (((PART where NAME = “engine”) (1 as q)) closed by COMPOSITE. MadeFROM. ((USES. PART) ((q * QUANTITY) as q))) where is_not_null(BASE) Całkowita masa silnika: sum((((PART where NAME = “engine”) (1 as q)) closed by (COMPOSITE. MadeFROM. ((USES. PART) ((q * QUANTITY) as q)))). ((COMPOSITE.MassINCREMENT BASE.MASS) * q))
13 Procedura CostAndMassProcedura może wyznaczać rekursywną perspektywę CostAndMass z wirtualnymi atrybutami name, cost, mass, i parametrem P (kolumna identyfikatorów części) Dla każdej części p w P wyznacza nazwę, całkowity koszt i całkowitą masę p. procedure CostAndMass( var P ) begin return P. ( (NAME as name ) ((BASE.COST COMPOSITE. (AssemblyCOST + sum( MadeFROM .(QUANTITY * (CostAndMass(USES. PART).cost)))) as cost) ((BASE.MASS COMPOSITE. (MassINCREMENT + sum( MadeFROM .(QUANTITY * (CostAndMass(USES. PART).mass)))) as mass)) end CostAndMass; Jakie są możliwości automatycznej optymalizacji? Podobno są już stosowane techniki „method caching”. Na pewno lepiej zrobi to człowiek, choć czasem komputer może stwierdzić, że procedura nie ma efektów ubocznych. Koszt jednostki masy silnika: (CostAndMass(PART) where name = “engine”). (cost / mass)
14 Transitive Closure - przykład iteracjiMożliwość wykonywania iteracji mechanizmem domknięcia wartość := 1; numer_iteracji := 1; while numer_iteracji <= 9 { wartość := ( q()/wartość + wartość )/2; numer_iteracji := numer_iteracji + 1; } (1 as wartość) (1 as numer_iteracji) closed by ((((q/wartość + wartość)/2) as wartość) ((numer_iteracji+1) as numer_iteracji)) where numer_iteracji 9 Możliwość nazywania stałych (wyrażeń) i odwoływania się do tych nazw pozwala formułować dowolną iterację niekoniecznie odwołującą się do danych trwałych. Różnice w powyższych zapisach: q() - wywołanie funkcji zwracającej liczbę, q - zapytanie wynikiem zapytania są również wszystkie wyniki pośrednie
15 Zadania wymagające różnej mocypodać firmy kontrolowane: Udział
16 Firmy słabo kontrolowaneUdział
17 Algorytmy obliczania domknięciaMnożenie macierzy lub chodzenie po grafie M - macierz incydencji, to M2 to macierz ścieżek dł. 2 Obliczanie grafu kondensacji + domykanie drzewa Przechodzenie wgłąb identyfikując sss Reprezentacja wyniku Mnożenie macierzy nie nadaje się do baz danych - reprezentacja rozrzutna, operacje zbyt globalne. Uzyskany rząd wielkości: oczekiwany - O(n^2) pesymistyczny - O(n^ *log(n)) Problem: unikanie zbędnych obliczeń, źródła nadmiarowości: silnie spójne składowe, inne. Lokalne usprawnienia Efektywna reprezentacja jest kluczowa - są lepsze niż listy incydencji