W systemach baz danych zmaterializowany widok w postaci obiektu bazy danych przechowuje obliczone wyniki zapytania w postaci fizycznej tabeli. Ponieważ dane są faktycznie przechowywane na dysku, skomplikowane wyszukiwania można szybciej wyszukać. Widok to jednak wirtualna tabela, która definiuje zapytanie, ale w rzeczywistości nie przechowuje danych. Widok pobiera najnowsze informacje z bazowych tabel podstawowych za każdym razem, gdy wykonujesz zapytanie. Dostęp do danych w czasie rzeczywistym w porównaniu z wcześniej obliczonymi wynikami to tylko niektóre z kryteriów decydujących o tym, czy zastosować widok zmaterializowany czy widok standardowy.
Czym jest pogląd zmaterializowany?
Widok zmaterializowany fizycznie przechowuje wyniki zapytania SQL w bazie danych. Przechowywane dane można odświeżać w określonych odstępach czasu (ręcznie, okresowo lub automatycznie), aby widok był dostosowany do zmian w bazowych tabelach podstawowych.
Jak działa pogląd zmaterializowany?
Załóżmy, że chcesz wykonać złożone zapytanie SQL podsumowujące dane sprzedażowe według wielu regionów. Zamiast wykonywać to złożone zapytanie za każdym razem, gdy trzeba wygenerować raport, tworzysz zmaterializowany widok, który dokonuje wstępnego obliczenia i przechowywania wyników. Gdy użytkownik chce zobaczyć raport, pobiera on go bezpośrednio z widoku zmaterializowanego, zamiast konieczności ponownego obliczania agregacji podczas działania programu komputerowego bez przerywania jego działania.
Typowe przypadki użycia poglądu zmaterializowanego
- Agregacje obliczeń wstępnych: Widok zmaterializowany doskonale nadaje się do raportowania i analiz. Wstępnie oblicza i przechowuje zagregowane dane, dzięki czemu czasochłonne zapytania nie muszą być wykonywane wielokrotnie.
- Zmniejszanie obciążenia podczas złożonych połączeń: Widok zmaterializowany jest tworzony w celu łączenia tabel i przechowywania wyników podczas wykonywania zapytania, gdy baza danych zawiera wiele złożonych złączeń.
- Buforowanie często używanych danych: Widok zmaterializowany działa jak pamięć podręczna przechowująca wyniki, poprawiając wydajność zapytań i zmniejszając obciążenie tabel podstawowych.
Co to jest widok?
Widok to wirtualna tabela, która sama w sobie nie przechowuje danych. Zapytanie jest wykonywane kilka razy w stosunku do tabel podstawowych przy każdym dostępie do widoku w celu utworzenia najnowszych wyników.
Jak działa widok?
Załóżmy, że masz wiele tabel podstawowych zawierających informacje o klientach z różnych regionów. Tworzysz widok zamiast pisać złożone zapytanie SQL za każdym razem, gdy chcesz wyświetlić skonsolidowane dane klientów. Następnie, gdy wykonasz zapytanie do widoku, pobiera on i wyświetla dane, łącząc się w locie z tabelami podstawowymi.
Typowe przypadki użycia widoku
- Upraszczanie złożonych zapytań: View może hermetyzować złożoną serię złączeń i filtrów w jedną wirtualną tabelę, umożliwiając użytkownikom końcowym prostszy dostęp do danych.
- Zwiększanie bezpieczeństwa: Definiując widok tak, aby pokazywał tylko określone kolumny lub wiersze, można ograniczyć wiedzę na temat dostępu do wrażliwych danych, utrzymując ukryte dane.
- Tworzenie warstwy abstrakcji: Możesz użyć widoku, aby zapewnić warstwę abstrakcji dla wielu tabel, co znacznie ułatwia zrozumienie danych i zarządzanie nimi bez konieczności ingerencji w surowe tabele podstawowe.
Zalety i wady poglądu zmaterializowanego a pogląd
Wybór pomiędzy poglądem zmaterializowanym a poglądem wymaga zrozumienia kompromisów. Poniżej szczegółowo przedstawiono zalety i wady każdego podejścia.
Plusy i minusy poglądu zmaterializowanego
| Aspekt | Plusy | Wady |
| Wydajność | zwiększa wydajność, zachowując wstępnie obliczone wyniki | jeśli nie zostaną zaktualizowane, staną się nieaktualne |
| Prędkość | skraca czas poświęcany na złożone zapytania | Aby zachować widok, potrzeba więcej pamięci |
| Świeżość | mogą być regularnie aktualizowane | Jeśli dane nie są aktualizowane, nie zawsze są aktualne |
| Wykorzystanie zasobów | w przypadku powtarzających się zapytań zużywa się mniej procesora i pamięci | wymaga dodatkowych zasobów do utrzymania i przechowywania |
| Elastyczność | przydatne w takich przypadkach, jak analityka i raportowanie | nie jest to najlepsza opcja dla aplikacji czasu rzeczywistego, które potrzebują nowych danych |
| Konserwacja | możliwość automatycznej aktualizacji (przyrostowej lub pełnej) | w przypadku dużych baz danych odświeżanie może być kosztowne |
| Złożone zapytania | pomaga użytkownikom końcowym w zrozumieniu złożonych zapytań | konieczne jest odświeżenie widoku w celu zaktualizowania bazowych tabel |
| Współbieżność | buforowanie wyników zmniejsza obciążenie bazy danych | na wydajność bazy danych mają wpływ wysokie częstotliwości odświeżania |
Plusy i minusy widoku
| Aspekt | Plusy | Wady |
| Wydajność | przydatne do uproszczenia dostępu do danych | jeśli zapytanie obejmuje wiele złączeń lub agregacji, działanie staje się powolne |
| Prędkość | dostęp do danych w czasie rzeczywistym z najświeższymi informacjami i bez opóźnień | wolniejsze zapytanie, szczególnie gdy widok jest złożony |
| Świeżość | zawsze na bieżąco z bazowymi tabelami | może prowadzić do niskiej wydajności w przypadku złożonych zapytań |
| Wykorzystanie zasobów | nie będzie wymagało więcej pamięci, ponieważ przechowuje jedynie definicję zapytania | Każde zapytanie wykonawcze ponownie oblicza wyniki |
| Elastyczność | można traktować w zapytaniach jak zwykłą tabelę | nie nadaje się do analiz wymagających dużej wydajności |
| Konserwacja | nie jest potrzebne odświeżanie, ponieważ automatycznie pobiera dane w czasie rzeczywistym | wydajność może ulec pogorszeniu w przypadku częstego dostępu przy użyciu dużych zbiorów danych |
| Złożone zapytania | ułatwia logikę zapytań zapewniając ustrukturyzowaną abstrakcję | wstępnie obliczonych wyników nie można przechowywać jak zmaterializowanego widoku |
| Współbieżność | zawsze pokazuje zmiany w czasie rzeczywistym w tabelach bazowych | duże obciążenie może spowodować dodatkowe obciążenie bazy danych |
Kluczowe różnice między widokiem a poglądem zmaterializowanym
Nowoczesne aplikacje opierają się na bazach danych jako szkieletu, a kontrolę danych realizują dwa kluczowe narzędzia: widok zmaterializowany i widok. Istnieją głównie po to, aby uprościć dostęp do danych i zoptymalizować wydajność zapytań, jednak różnią się przeznaczeniem. Poniżej znajduje się kilka cech wyróżniających pogląd zmaterializowany i pogląd.
Składowanie
- Zmaterializowany pogląd: Przechowuje aktualne dane w bazie danych.
- Widok: nie przechowuje danych; przechowuje tylko definicję zapytania.
Wykonanie zapytania
- Zmaterializowany pogląd: Pobierane są wstępnie obliczone dane, co zwiększa wydajność zapytań.
- Pogląd: Wykonywanie zapytania jest inicjowane przy każdym dostępie.
Świeżość danych
- Zmaterializowany pogląd: Dane mogą stać się nieaktualne, jeśli nie zostaną wyraźnie odświeżone.
- Pogląd: Zawsze pobiera najnowsze dane z tabel źródłowych.
Wydajność
- Zmaterializowany pogląd: Jest szybszy, ponieważ obliczone wcześniej dane zostały zapisane.
- Pogląd: Jeśli zapytanie jest złożone, może być wolniejsze, ponieważ jest realizowane na żądanie.
Mechanizm odświeżania
- Zmaterializowany pogląd: Aby zaktualizować zawartość, wymagane jest ręczne lub zaplanowane odświeżenie.
- Pogląd: Nie jest konieczne odświeżanie, ponieważ dane są zawsze pobierane w czasie rzeczywistym.
Wymagania dotyczące przechowywania
- Zmaterializowany pogląd: Wymaga dodatkowej pamięci do przechowywania wstępnie obliczonych wyników.
- Pogląd: Zasadniczo nie wykorzystuje pamięci, z wyjątkiem metadanych zapytań.
Przypadki użycia
- Zmaterializowany pogląd: Nadaje się do raportowania, analiz i zapytań wymagających dużej wydajności.
- Pogląd: Opcja, gdy niezbędne są dane w czasie zbliżonym do rzeczywistego.
Złożoność
- Zmaterializowany pogląd: Konieczne zarządzanie konserwacją i odświeżaniem.
- Pogląd: Prosty w konfiguracji i obsłudze, ale może wymagać dużych zasobów.
Kiedy używać widoku zmaterializowanego a widoku
Użyj widoku zmaterializowanego, gdy:
Widok zmaterializowany występuje wtedy, gdy za wszelką cenę należy poprawić wydajność zapytań, zwłaszcza jeśli takie zapytanie wymaga wielu obliczeń przed zwróceniem wyników przy dużej agregacji, połączeniach lub operacjach przetwarzania. Może to być szczególnie przydatne, gdy wstępnie obliczone wyniki powodują znaczne różnice w obciążeniu bazy danych lub szybkości, z jaką zapytania zwracają wyniki. Chociaż widok zmaterializowany wymaga okresowego odświeżania, aby uzyskać najnowsze zaktualizowane dane, służy on celowi w scenariuszach raportowania i analitycznych, gdzie dostęp do danych w czasie rzeczywistym nie jest aż tak krytyczny, ale liczy się szybkie wykonanie.
Użyj widoku, gdy:
Użyj widoku, w którym zapytanie powinno zawsze pobierać najnowsze dane, gdzie dostęp do danych musi odbywać się w czasie rzeczywistym, a złożonością zapytań można zarządzać, pamiętając, że widok ten nie przechowuje danych fizycznie w bazie danych, co wymaga mniej pamięci. Należy jednak pamiętać, że w przypadku bardzo złożonych zapytań widok może spowolnić system, jeśli zostanie wykonany kilka razy.
Wniosek
To, jak bardzo widok zmaterializowany różni się od widoku zwykłego, jest ważną koncepcją przy dostrajaniu wydajności bazy danych. Widok zmaterializowany to widok przechowujący wstępnie obliczone wyniki w celu przyspieszenia wykonywania zapytań w przypadku ciężkich operacji; jednakże mogą być kłopotliwe w utrzymaniu, ponieważ mogą się zestarzeć, jeśli nie zostaną odświeżone w odpowiednim czasie. Wręcz przeciwnie, widok jest aktualizowany pod kątem zmian z podstawowych tabel podstawowych, aby zapewnić dokładność w czasie rzeczywistym, chociaż mogą one kosztować pewną wydajność.
Podejmując decyzję między nimi, należy wziąć pod uwagę obciążenie bazy danych, złożoność zapytania i wagę danych w czasie rzeczywistym. W przypadku raportowania lub analiz, gdzie priorytetem jest wydajność, perspektywa zmaterializowana jest mocnym kandydatem. Natomiast w przypadku scenariuszy, w których liczą się najnowsze dane, pożądany jest regularny widok.
Ostateczna decyzja może również zależeć od używanego systemu baz danych. Różne systemy baz danych, w tym PostgreSQL, Wyrocznia, I MySQL'a mają różne poziomy wsparcia i możliwości widoku zmaterializowanego.