| Termin | Definicja |
|---|---|
| Widok zależny od innych widoków | Widok zależny od innych widoków tworzy łańcuch odwołań, wpływający na wydajność i czytelność schematu. Jak powstaje zależność między widokamiWidok zależny od innych widoków to zapytanie zapisane w bazie danych, którego źródłem nie są wyłącznie tabele, lecz także jeden lub kilka wcześniej zdefiniowanych widoków. Taki obiekt działa jak kolejna warstwa logiczna nad schematem danych. Przykładowo widok Zależności tworzą graf obiektów. Tabela może być źródłem dla widoku podstawowego, ten widok może zasilać następny widok, a kolejny może być używany przez raport lub aplikację. Przepływ powinien być jednokierunkowy: widok wyższego poziomu może korzystać z widoku niższego poziomu, ale nie może powstać cykl, w którym definicja pierwszego widoku pośrednio odwołuje się do samej siebie. W praktyce istotne jest także rozróżnienie zależności bezpośrednich i pośrednich. Zmiana kolumny w tabeli może wpłynąć na wiele widoków, nawet jeśli tylko pierwszy z nich odwołuje się do tej tabeli wprost. Łańcuch definicji a wykonanie zapytaniaPodczas wykonywania zapytania odwołującego się do widoku zależnego silnik bazy danych musi uwzględnić jego definicję, a następnie rozwinąć zależności prowadzące do tabel lub innych obiektów źródłowych. Dokładny sposób optymalizacji zależy od konkretnego silnika i rodzaju widoku, ale sama nazwa widoku nie oznacza automatycznie materializowanego, wcześniej obliczonego wyniku. Zwykły widok jest przede wszystkim zapisanym zapytaniem. Jeżeli jego definicja zawiera filtrowanie, łączenia tabel, sortowanie, agregacje albo kolejne zagnieżdżone widoki, plan wykonania może stać się trudniejszy do analizy. Największe znaczenie ma treść wszystkich warstw, a nie sama liczba widoków. Widok pośredni ograniczający zbiór kolumn i wierszy może poprawiać czytelność oraz ułatwiać ponowne użycie logiki. Z drugiej strony nieprzemyślany łańcuch może powodować wielokrotne wykonywanie podobnych operacji. Przykładem jest kilka widoków, z których każdy wykonuje szerokie złączenie, a dopiero ostatnia warstwa nakłada filtr ograniczający wynik. W takim przypadku warto sprawdzić plan wykonania i ustalić, czy predykat jest przesuwany do wcześniejszego etapu, czy też duży zbiór danych jest przetwarzany przed odfiltrowaniem rekordów. Nie należy zakładać, że dodanie indeksu na nazwie widoku rozwiąże problem. W wielu bazach zwykły widok nie ma własnego magazynu danych ani niezależnego indeksu. Analizuje się więc indeksy tabel bazowych, warunki złączeń, selektywność filtrów oraz liczbę odczytywanych kolumn. Jeżeli konkretny silnik obsługuje widoki materializowane lub indeksowane, jest to odrębny mechanizm o własnych ograniczeniach dotyczących odświeżania, modyfikacji danych i obsługiwanych konstrukcji zapytań. Skutki zmian w schemacie i uprawnieniachWidok zależny może przestać działać po zmianie struktury obiektu źródłowego. Usunięcie kolumny używanej w klauzuli Zmiana typu danych, nazwy kolumny, klucza albo relacji między tabelami również może wpłynąć na kolejne warstwy. Widok może formalnie istnieć, ale zwracać inne dane niż wcześniej, jeśli zmieniono warunek filtrowania, sposób łączenia rekordów lub znaczenie wartości w tabeli. Dlatego przed wdrożeniem zmiany trzeba przejrzeć zależności obiektu i sprawdzić wszystkie zapytania, procedury, raporty oraz fragmenty aplikacji korzystające z jego kolumn. Osobną kwestią są uprawnienia. Użytkownik wykonujący zapytanie do widoku musi mieć możliwość skorzystania z tego obiektu, a reguły zależności uprawnień między widokiem i jego źródłami są zależne od silnika oraz konfiguracji właścicieli obiektów. Błędnie ustawione prawa mogą powodować sytuację, w której definicja jest poprawna, lecz aplikacja otrzymuje odmowę dostępu. Diagnostyka powinna więc obejmować zarówno treść definicji, jak i konto używane przez aplikację, schemat właściciela oraz pełną ścieżkę zależności. Porządkowanie i diagnozowanie warstw widokówPrzy przeglądzie takiej konstrukcji warto zacząć od zapisania grafu zależności: dla każdego widoku należy wskazać obiekty źródłowe, kolumny wykorzystywane w filtrach i złączeniach oraz obiekty korzystające z wyniku. Następnie można oznaczyć warstwy odpowiedzialne za różne zadania, na przykład filtrowanie danych aktywnych, łączenie encji, agregowanie wyników i przygotowanie formatu dla aplikacji. Jeżeli jedna definicja wykonuje wszystkie te operacje jednocześnie albo pośredni widok jest używany do wielu niepowiązanych celów, utrzymanie schematu staje się trudniejsze. Podczas diagnostyki należy porównać wynik widoku z wynikiem zapytania bezpośrednio skierowanego do tabel źródłowych. Trzeba sprawdzić liczbę rekordów, wartości kluczy, występowanie duplikatów, wartości W serwisowym środowisku komputerowym problem może ujawnić się jako wolne działanie programu, przekroczenie limitu czasu zapytania, brak danych w ekranie raportu albo komunikat o niedostępnej kolumnie. Diagnostyka obejmuje wtedy log aplikacji, treść wykonywanego zapytania, definicje kolejnych widoków, plan wykonania oraz stan tabel bazowych. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a w przypadku problemów programowych analiza powinna prowadzić od objawu w aplikacji do konkretnej zależności w schemacie danych. |