Najwazniejsze Flashcards
W jakiej sytuacji warto jest zdecydować się podczas projektowanie hurtowni danych na architekturę płatka śniegu?
Architektura płatka śniegu sprawdza się w środowiskach, gdzie kluczowa jest spójność danych, minimalizacja redundancji i zarządzanie dużą liczbą wymiarów złożonych. Jest odpowiednia, gdy priorytetem jest szczegółowość danych i optymalizacja ich przechowywania, a mniej ważna jest prostota i szybkość tworzenia zapytań.
Oparta na architekturze gwiazdy, stanowiąc jej bardziej
złożoną wersję . Podstawową różnicą między tymi schematami jest fakt, że w
schemacie płatka śniegu tabele wymiarów są znormalizowane , czyli są
zaprojektowane zgodnie z modelem relacyjnej bazy danych. Znajduje on
zastosowanie w przypadkach rozbudowanych struktur danych,
Wyjaśnij, jaką rolę w systemach federacyjnych pełni broker
Broker Specjalne oprogramowanie zwane pośrednikiem (broker), które akceptuje wspólny model danych i usług umożliwiając ich udostępnienie dla dowolnych miejsc w systemie rozproszonym.
W systemach federacyjnych, broker pełni rolę pośrednika, który umożliwia komunikację i wymianę danych między różnymi, autonomicznymi jednostkami lub systemami. Może to obejmować różne organizacje, serwery, aplikacje czy usługi, które współpracują w ramach federacji, ale zachowują niezależność w zakresie zarządzania, kontroli i przechowywania danych.
Wymień postulaty ACID
(A) Atomowość (atomicity)
(C) Spójność (consistency)
(I) Izolacja (isolation)
(D) Trwałość (durability)
Omów postutal Atomowości w ACID
Atomicity (atomowość) – transakcja jest niepodzielna, czyli wykonuje się w całości lub wcale. Jeśli w trakcie wykonania transakcji wystąpi błąd, wszystkie jej operacje są cofane, a dane powracają do stanu sprzed jej rozpoczęcia.
Omów postutal Spójności w ACID
Consistency (spójność) – transakcja zapewnia, że po jej zakończeniu baza danych będzie znajdować się w spójnym stanie, zgodnym z regułami integralności. Oznacza to, że jeśli baza była poprawna przed transakcją, to po niej również taka pozostanie.
Omów postutal Izolacji w ACID
Isolation (izolacja) – transakcje są izolowane od siebie nawzajem, dzięki czemu równoległe transakcje nie wpływają na siebie bezpośrednio. Każda transakcja wydaje się działać niezależnie, a zmiany dokonane przez jedną transakcję nie są widoczne dla innych, dopóki nie zostanie ona zatwierdzona.
Omów postutal Trwałości w ACID
Durability (trwałość) – po zatwierdzeniu transakcji jej zmiany są trwałe, czyli zapisane w bazie danych i przetrwają ewentualne awarie systemum, nie mogą być odwrócone przez zdarzenia losowe (np. wyłączenie prądu)
Na czym polega zasadnicza różnica między procedurą a transakcją?
Procedura składowana to zestaw operacji, które są wykonywane na żądanie, podczas gdy transakcja to mechanizm zarządzania spójnością danych, który zapewnia, że wszystkie operacje w jej ramach są wykonane lub wycofane jako całość. Transakcje mogą być częścią procedury, ale nie każda procedura musi korzystać z transakcji.
W jaki sposób stosowanie indeksów wpływa na wydajność SZBD?
Indeksy znacząco przyspieszają zapytania odczytowe, ale mogą spowolnić operacje zapisu (wstawianie, aktualizowanie, usuwanie). Wydajność całego systemu zależy od odpowiedniego doboru indeksów, uwzględniając charakterystykę zapytań i operacji wykonywanych na bazie danych. Zbyt wiele indeksów może prowadzić do nadmiernego obciążenia pamięci i dysku, a ich brak może prowadzić do wolniejszych zapytań.
Zalety i wady indeksów
Zalety indeksów: - przyspieszają wyszukiwanie danych, - przyspieszają zapytania wymagające sortowania, - pozwalają wymuszać unikalność kolumn. Wady indeksów: - planowanie i utrzymanie indeksów bywa pracochłonne, - mogą spowodować spowolnienie wykonywania operacji wstawiania i modyfikacji danych, - wymagają dodatkowego miejsca na dysku twardym.
Wyjaśnij pojęcie relacji stosowane w relacyjnym modelu danych.
dwuwymiarowa tabeli w bazie danych, która składa się z wierszy (krotek) i kolumn (atrybutów). Każda tabela w bazie danych jest relacją, a poszczególne wiersze w tabeli to rekordy, które reprezentują dane, natomiast kolumny definiują cechy tych danych.
Wyjaśnij różnicę między systemami OLTP a OLAP
Systemy OLTP (Online Transaction Processing) i OLAP (Online Analytical Processing) różnią się przede wszystkim celem, rodzajem danych oraz sposobem przetwarzania.
Cel:
OLTP służy do przetwarzania transakcji w czasie rzeczywistym, takich jak operacje CRUD (tworzenie, odczyt, aktualizacja, usuwanie). Skupia się na zapewnieniu integralności transakcji oraz obsłudze codziennych operacji biznesowych.
OLAP jest używane do analizy danych, raportowania oraz wsparcia w podejmowaniu decyzji. Umożliwia analizowanie dużych zbiorów danych historycznych w różnych wymiarach.
Rodzaj danych:
OLTP przechowuje dane operacyjne, które są aktualizowane na bieżąco, np. informacje o zamówieniach, transakcjach, klientach.
OLAP przechowuje dane historyczne, agregowane i denormalizowane, wykorzystywane do analiz, prognoz i raportów.
Rodzaj zapytań:
W OLTP zapytania są proste i dotyczą operacji na pojedynczych rekordach, jak np. dodanie zamówienia czy aktualizacja danych klienta.
W OLAP zapytania są bardziej złożone, często obejmujące agregacje i analizę danych w wielu wymiarach, np. analiza sprzedaży w różnych okresach czasu.
Wydajność:
OLTP wymaga wysokiej wydajności, ponieważ transakcje muszą być przetwarzane szybko i w czasie rzeczywistym.
OLAP przetwarza większe zbiory danych i ma mniejsze wymagania dotyczące szybkości, ale zapytania mogą być bardziej czasochłonne, zwłaszcza przy dużych bazach danych.
Przechowywanie danych:
W OLTP dane są zazwyczaj znormalizowane, co pozwala zaoszczędzić miejsce i minimalizować redundancję.
W OLAP dane są zdenormalizowane, co ułatwia szybsze przetwarzanie zapytań analitycznych, ale wymaga większej przestrzeni na przechowywanie.
Wolumen transakcji:
OLTP charakteryzuje się wysokim wolumenem transakcji, ponieważ codziennie przetwarza setki lub tysiące operacji.
OLAP ma niski wolumen transakcji, ponieważ zapytania analityczne są mniej częste i bardziej złożone.
Zarządzanie transakcjami:
W OLTP zarządzanie transakcjami jest kluczowe, ponieważ wymaga zapewnienia integralności (ACID), czyli atomowości, spójności, izolacji i trwałości.
W OLAP nie ma tak silnych wymagań dotyczących integralności transakcji, ponieważ system skupia się na analizie danych.
Podaj definicję bazy relacyjnej i bazy grafowej.
Wyjaśnij różnice między tymi bazami. Jakie dostrzegasz zalety a jakie wady w zastosowaniu baz grafowych.
Baza danych relacyjna (RDBMS – Relational Database Management System) to system zarządzania bazą danych, w którym dane przechowywane są w tabelach, a relacje między tymi danymi są określane przez klucze (np. klucz główny i obcy). Baza relacyjna korzysta z języka zapytań SQL (Structured Query Language) do manipulowania i odzyskiwania danych. Tabele składają się z wierszy (rekordów) i kolumn (atrybutów), a każdy rekord jest identyfikowany unikalnym kluczem głównym.
Grafowa baza danych – baza danych wykorzystująca struktury grafów z węzłami,
krawędziami i własnościami do przedstawiania i przechowywania danych oraz do
obsługi zapytań semantycznych . Bazą taką jest każdy system pamięci masowej , który
zapewnia bezindeksowe sąsiedztwo , co oznacza że każdy element bazy zawiera
bezpośredni wskaźnik na sąsiadujące elementy i nie jest konieczne wyszukiwanie
indeksowe .
Model grafu składa się zazwyczaj z:
● Węzłów - przechowują informacje o encjach
● Relacji - łączą ze sobą węzły, tworząc graf. Zawsze mają swój typ, kierunek a także
węzeł początkowy i końcowy. Mogą tworzyć pętle. Relacja musi łączyć parę encji.
● Własności - węzły i relacje są kontenerami na własności, które z kolei są parami
klucz-wartość
● Etykiet - są nadawane węzłom i stosowane do indeksowania
Różnice między bazą relacyjną a bazą grafową:
Struktura danych:
Baza relacyjna przechowuje dane w tabelach (w postaci wierszy i kolumn).
Baza grafowa przechowuje dane w postaci grafu (węzły i krawędzie).
Relacje:
W bazie relacyjnej relacje między danymi są określane za pomocą kluczy obcych i łączone za pomocą JOIN w zapytaniach SQL.
W bazie grafowej relacje są naturalnie reprezentowane przez krawędzie między węzłami, co pozwala na łatwe przetwarzanie skomplikowanych zależności.
Złożoność zapytań:
W bazie relacyjnej zapytania z wieloma złożonymi połączeniami (JOIN) mogą być kosztowne i trudne do optymalizacji.
W bazie grafowej zapytania dotyczące skomplikowanych zależności (np. ścieżek między węzłami) są szybkie, ponieważ struktura grafu pozwala na bezpośredni dostęp do sąsiadujących węzłów.
Model danych:
Baza relacyjna jest bardziej odpowiednia dla danych o dobrze zdefiniowanej strukturze i hierarchii.
Baza grafowa jest bardziej odpowiednia dla danych, które mają skomplikowane, zmienne i dynamiczne powiązania.
Zalety baz grafowych:
Efektywność w przypadku skomplikowanych relacji: Bazy grafowe są wydajne w przypadku operacji na złożonych relacjach, takich jak analiza sieci społecznych, analiza powiązań między osobami, produktami czy połączeniami transportowymi.
Elastyczność w modelowaniu danych: Bazy grafowe umożliwiają łatwe modelowanie zmiennych relacji między obiektami, które mogą zmieniać się w czasie.
Optymalizacja zapytań: Zapytania, które w bazach relacyjnych wymagają wielu JOINów, w bazach grafowych mogą być bardziej wydajne i prostsze do wykonania, dzięki natywnej reprezentacji grafu.
Naturalna reprezentacja sieci: Sieci, hierarchie i inne struktury powiązań są naturalnie reprezentowane w grafach, co sprawia, że bazy grafowe są doskonałym wyborem do takich zastosowań jak systemy rekomendacji, analiza zależności, geolokalizacja.
Wady baz grafowych:
Skalowalność: Chociaż bazy grafowe są efektywne w przypadku małych i średnich zbiorów danych, mogą napotkać trudności przy skalowaniu do bardzo dużych zbiorów danych, zwłaszcza w przypadku bardziej złożonych grafów o wielu węzłach i krawędziach.
Brak standaryzacji: W porównaniu do baz relacyjnych, bazy grafowe nie mają tak powszechnego i ujednoliconego standardu zapytań. Istnieje wiele różnych systemów baz grafowych, z różnymi językami zapytań (np. Cypher w Neo4j), co może utrudniać migrację i integrację.
Złożoność zarządzania: Bazy grafowe mogą być trudniejsze do zarządzania i optymalizacji w porównaniu do baz relacyjnych, zwłaszcza gdy grafy stają się bardzo duże i złożone.
Mniejsza kompatybilność z tradycyjnymi narzędziami: Istnieje mniejsza liczba narzędzi i bibliotek wspierających bazy grafowe w porównaniu do baz relacyjnych, co może utrudniać integrację z istniejącymi systemami.
Wymień poziomy izolacji transakcji
** READ UNCOMMITTED **– możliwy brudny odczyt, odczyt nie dający się powtórzyć i odczyt widmo. Problemem tutaj jest to, że chcesz wykonać jedną transakcje na jakiś danych, ale te dane w między czasie zostały już uprzednio zmodyfikowane przez inną.
READ COMMITTED – niemożliwy brudny odczyt, możliwy odczyt niedający się powtórzyć i odczyt widmo. W tym przypadku nie możesz modyfikować danych, na których założona jest już inna transakcja. Jednak wciąż możliwy jest ich odczyt, gdy są one zmieniane przez drugą transakcje, co może prowadzić do braku spójności.
REPEATABLE READ – niemożliwy brudny odczyt i odczyt niedający się powtórzyć, możliwy odczyt widmo. Domyślny poziom dla większości baz danych. Jest on bardzo podobny do poprzedniej opcji, z tą różnicą, że transakcja odczytuje dane sprzed jej rozpoczęcia, co ułatwia zachowanie spójności.
SERIALIZABLE – żaden z niepożądanych odczytów nie jest możliwy. W praktyce oznacza to zablokowanie dostępu do całej tabeli. Niemożliwa jest modyfikacja i odczyt aż do momentu zakończenia transakcji.
Indeksy klastrowane (grupowane) a nieklastrowane (niegrupowane). Jak stworzyć indeks klastrowany? Kiedy zdecydujesz sie na zastosowanie indeksu grupowanego zamiast niegrupowanego.
**indeksy grupowane **(klastrowe) - Indeks klastrowany przypomina w działaniu encyklopedię lub książkę telefoniczną. Dane są fizycznie sortowane według indeksowanej kolumny i wchodzą w skład samego indeksu. To tak jak w encyklopedii - hasła są ułożone według alfabetu. Dostęp do danych następuje poprzez odnalezienie hasła na liście słów kluczowych (poziomy indeksu powyżej poziomu liści, na którym znajdują się posortowane rekordy) i zlokalizowanie strony / stron, na których znajdują się rekordy spełniające kryteria wyszukiwania. Ponieważ indeks klastrowany sortuje fizycznie dane w tabeli, na której jest założony, można założyć tylko jeden taki indeks w tabeli. Zazwyczaj indeks klastrowany powstaje automatycznie przy tworzeniu klucza głównego w tabeli.
CREATE CLUSTERED INDEX IDX_Pracownicy_Id
ON Pracownicy(Id);
**indeksy niegrupowane (nieklastrowe) **- Indeks nieklastrowany nie zawiera w swojej strukturze całych rekordów, a jedynie wszystkie wartości z kolumny indeksowanej. Na poziomie liści znajdują się wszystkie wartości z kolumny indeksowanej posortowane alfabetycznie. Na poziomach znajdujących się wyżej znajdują się pierwsze pozycje ze stron o jeden poziom niżej. Poziom liści oprócz wartości z kolumny indeksowanej zawiera odsyłacze bezpośrednio do rekordów w nieposortowanej strukturze tabeli.
Na czym polega partycjonowanie, jakie są rodzaje partycjonowania. Jak włączyć w MS SQL.
Partycjonowanie w bazach danych polega na podzieleniu dużych tabel lub indeksów na mniejsze, łatwiejsze do zarządzania części, zwane partycjami. Dzięki temu procesy zapytań, modyfikacji i zarządzania danymi są bardziej wydajne.
Rodzaje partycjonowania:
**Partycjonowanie zakresowe **(Range Partitioning):
Polega na podzieleniu danych na partycje według wartości z określonej kolumny, najczęściej daty lub liczby. Na przykład, dane mogą być podzielone na partycje według lat, miesięcy, kwartałów itp.
Przykład: tabela sprzedaży, gdzie każda partycja odpowiada danym z jednego roku.
Partycjonowanie listowe (List Partitioning):
Dane są podzielone na partycje na podstawie konkretnych wartości w jednej kolumnie, takich jak kody krajów, regiony, grupy produktów itp.
Przykład: tabela z danymi o zamówieniach, gdzie każda partycja zawiera dane dla różnych krajów.
**Partycjonowanie hashujące **(Hash Partitioning):
Partycjonowanie odbywa się na podstawie funkcji haszującej, która przypisuje dane do partycji na podstawie wartości kolumny.
Przykład: tabela użytkowników, gdzie partycje są tworzone na podstawie haszowanej wartości identyfikatora użytkownika.
**Partycjonowanie kompozytowe **(Composite Partitioning):
Jest to połączenie dwóch lub więcej rodzajów partycjonowania, np. partycjonowanie zakresowe i listowe. Tego rodzaju partycjonowanie daje elastyczność w zarządzaniu danymi.
UZYCIE:
1. Tworzenie funkcji partycjonowania
CREATE PARTITION FUNCTION pf_SalesDate (DATE)
AS RANGE RIGHT FOR VALUES (‘2020-01-01’, ‘2021-01-01’, ‘2022-01-01’);
2.stworzenie schematu partycjonowania
CREATE PARTITION SCHEME ps_SalesDate
AS PARTITION pf_SalesDate
TO ([PRIMARY], [FileGroup1], [FileGroup2], [FileGroup3]);
3. CREATE TABLE Sales
(
SalesID INT PRIMARY KEY,
SalesDate DATE,
Amount DECIMAL(10, 2)
)
ON ps_SalesDate(SalesDate);