Najwazniejsze Flashcards

1
Q

W jakiej sytuacji warto jest zdecydować się podczas projektowanie hurtowni danych na architekturę płatka śniegu?

A

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,

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wyjaśnij, jaką rolę w systemach federacyjnych pełni broker

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wymień postulaty ACID

A

(A) Atomowość (atomicity)
(C) Spójność (consistency)
(I) Izolacja (isolation)
(D) Trwałość (durability)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Omów postutal Atomowości w ACID

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Omów postutal Spójności w ACID

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Omów postutal Izolacji w ACID

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Omów postutal Trwałości w ACID

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Na czym polega zasadnicza różnica między procedurą a transakcją?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

W jaki sposób stosowanie indeksów wpływa na wydajność SZBD?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wyjaśnij pojęcie relacji stosowane w relacyjnym modelu danych.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wyjaśnij różnicę między systemami OLTP a OLAP

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wymień poziomy izolacji transakcji

A

** 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Indeksy klastrowane (grupowane) a nieklastrowane (niegrupowane). Jak stworzyć indeks klastrowany? Kiedy zdecydujesz sie na zastosowanie indeksu grupowanego zamiast niegrupowanego.

A

**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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Na czym polega partycjonowanie, jakie są rodzaje partycjonowania. Jak włączyć w MS SQL.

A

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);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Na czym polega pojęcie spójności w bazie danych. Jakie konstrukcje języka SQL są w tym pomocne. Daj po jednym przykładzie.

A

Spójność w bazie danych oznacza, że dane w bazie muszą być zawsze zgodne z określonymi regułami i zależnościami, zarówno na poziomie strukturalnym (np. typy danych, relacje między tabelami), jak i na poziomie logicznym (np. integralność danych).

17
Q

Omówić zwięźle jedną ze struktur danych w grafowych bazach danych.

A
  • Węzłów – zwykle przechowujemy w nich informacje o
    encjach.
  • Relacje – łączą ze sobą węzły, tworząc strukturę grafu.
    Zawsze mają swój typ, kierunek, a także węzeł
    początkowy i końcowy. Mogą tworzyć pętle wtedy, gdy
    węzeł początkowy jest węzłem końcowym. Trzeba
    podkreślić zasadniczą różnicę, pomiędzy pojęciem
    relacji w modelach relacyjnym i grafowym. W modelu
    relacyjnym, relacja to dwuwymiarowa tabela, która
    operuje na prostych typach danych, gdzie każda relacja
    składa się z atrybutów (kolumn) i krotek (wierszy). W
    modelu grafowym, relacja to swego rodzaju sposób
    powiązania encji ze światem. Tak jak w grafie, krawędź
    to uporządkowana para wierzchołków, tak w modelu
    grafowym, relacja może zachodzić tylko pomiędzy
    encjami. Relacja musi łączyć parę encji, czyli nigdy nie
    może być „dyndająca”.
  • Własności – zarówno węzły, jak i relacje są
    kontenerami na własności, które właściwie są parami
    klucz-wartość. Węzły mogą posiadać jedną lub więcej
    własności, podobnie do tabel w modelu relacyjnym,
    które mogą mieć jeden lub więcej atrybutów. Relacje
    także mogą posiadać własności, które określają moc,
    wagę lub jakość danej relacji. Dzięki ich obecności,
    możliwe jest dokładniejsze określenie szukanych
    wzorców, podczas zadawania pytań i trawersowania
    grafu.
  • Etykiet, które są nadawane węzłom i stosowane do
    indeksowania. Etykiety zostały zaprojektowane po to,
    by umożliwić szybkie i efektywne tworzenie podgrafów.
18
Q

Sql injection

A

SQL Injection to atak na bazę danych przy użyciu nieprawidłowo napisanej aplikacji, która nie
sprawdza (lub sprawdza niedostatecznie dobrze) dane wprowadzane w aplikacji przez użytkownika.
Atakujący stosuje kod SQL, który wykona w bazie niedozwoloną akcję. Atakujący może uzyskać
nieuprawniony dostęp do zasobów bazy danych lub nawet systemowych.
Sposoby ochrony:
● Używanie konta o minimalnych uprawnieniach
● Kontrolowanie danych wprowadzanych przez użytkowników i odrzucanie tych
nieprawidłowych oraz usuwanie znaków pochodzących z SQL
● Brak domyślnych komunikatów o błędach
● Używanie procedur składowanych z parametrami
● Unikanie konkatencji

19
Q

Co to są widoki?

A

Widoki (ang. Views) w SQL Server to logiczne, wirtualne tabele, które reprezentują wynik zapytania SQL. Nie przechowują one danych fizycznie, lecz umożliwiają dostęp do danych z jednej lub wielu tabel w sposób zdefiniowany w zapytaniu.

Widoki mogą być używane do:
1. Upraszczania złożonych zapytań, dzięki ich zapisaniu jako widok.
2. Ukrywania szczegółów struktury bazy danych, umożliwiając użytkownikom dostęp do uproszczonego modelu.
3. Zapewnienia dodatkowego poziomu bezpieczeństwa poprzez ograniczenie dostępu do określonych kolumn lub wierszy.
4. Zwiększenia czytelności i łatwości zarządzania kodem SQL.

CREATE VIEW nazwa_widoku AS
SELECT kolumna1, kolumna2, …
FROM tabela
WHERE warunki;

20
Q

Indeks gęsty i rzadki

A

Indeks gęsty to taki, który posiada wpis dla każdej wartości
klucza wyszukiwania.
Indeks gęsty to standardowy indeks, który tworzy wpis dla każdej wartości w kolumnie. Aby stworzyć indeks gęsty w SQL Server, wystarczy użyć standardowej składni CREATE INDEX.
CREATE INDEX IND_Customers_Id
ON Customers(Id);

Indeks rzadki posiada wpisy tylko dla niektórych wartości.
Indeks rzadki jest związany z tabelami, w których nie wszystkie kolumny zawierają wartości dla każdego rekordu. W SQL Server indeksy rzadkie odnoszą się raczej do kolumn w tabeli niż samych indeksów. Kolumny rzadkie mogą zawierać dużo wartości NULL, i SQL Server może zoptymalizować sposób przechowywania takich danych.
CREATE INDEX IND_Shipments_ShippingCost
ON Shipments(ShippingCost)
WHERE ShippingCost IS NOT NULL;

21
Q

indeks kolumnowy

A

Indeks kolumnowy w bazach danych to struktura danych, która przechowuje dane w postaci kolumn zamiast wierszy, jak ma to miejsce w tradycyjnych indeksach wierszowych. W indeksie kolumnowym każda kolumna tabeli jest przechowywana oddzielnie, co pozwala na bardziej efektywne skanowanie i przetwarzanie zapytań, które dotyczą tylko kilku kolumn, zamiast całych wierszy.

Korzyści z indeksu kolumnowego:

Szybsze zapytania: Dla zapytań, które odwołują się do niewielkiej liczby kolumn (zwłaszcza w przypadku dużych tabel), indeksy kolumnowe mogą przyspieszyć czas dostępu do danych, ponieważ wczytywana jest tylko część danych.
Lepsza kompresja: Dane w indeksach kolumnowych są bardziej jednorodne, co pozwala na lepszą kompresję, zmniejszając ilość potrzebnego miejsca na dysku.
Optymalizacja zapytań agregujących: Indeksy kolumnowe są szczególnie przydatne w operacjach agregujących, takich jak SUM, AVG, COUNT, ponieważ łatwiej jest przetwarzać dane w kolumnach niż w wierszach.
Indeksy kolumnowe są wykorzystywa

CREATE COLUMNSTORE INDEX IND_OrderProducts
ON OrderProducts (Id,OrderId, ProductId, Sales, Quantity,Discount, Profit);

22
Q

Widok zmaterializowany

A

Widok zmaterializowany (ang. materialized view) w SQL Server to rodzaj widoku, który przechowuje fizycznie dane wynikowe zapytania, co oznacza, że nie jest obliczany na bieżąco przy każdym wywołaniu, jak tradycyjny widok. Zamiast tego dane są przechowywane w bazie danych, a użytkownicy mogą je odczytywać, co przyspiesza czas odpowiedzi dla zapytań o dużych zestawach danych. Widok zmaterializowany wymaga ręcznej aktualizacji, aby odzwierciedlał zmiany w bazie danych.

CREATE VIEW dbo.MojWidok AS
SELECT
Kolumna1,
Kolumna2,
SUM(Kolumna3) AS SumaKolumna3
FROM
MojaTabela
GROUP BY
Kolumna1, Kolumna2;
GO

– Dodanie indeksu zmaterializowanego
CREATE UNIQUE CLUSTERED INDEX IDX_MojWidok ON dbo.MojWidok (Kolumna1, Kolumna2);
GO

23
Q

Kompresja

A

W SQL Server kompresja danych może pomóc w zmniejszeniu rozmiaru bazy danych i poprawie wydajności operacji I/O

ALTER TABLE MyTable
REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = ROW/PAGE);

24
Q

Zadanie dotyczy problemu aktualizacji perspektywy. Zakładamy, że perspektywa MoiPracownicy zwraca dane zawierające nazwisko pracownika oraz nazwisko jego szefa na podstawie rzeczywistej struktury danych. Należy ocenić, czy problem aktualizacji danych został rozwiązany, i uzasadnić odpowiedź.

A

Problem aktualizacji nie został rozwiązany. Widok MoiPracownicy jedynie prezentuje dane, ale nie ma wbudowanego mechanizmu do propagowania zmian do rzeczywistych tabel (Dzial i Pracownik). Aby rozwiązać problem, konieczne byłoby użycie triggerów lub odpowiedniej logiki aplikacji obsługującej aktualizacje widoku.

25
Q

Co to jest transakcja

A

jest ciągiem operacji wykonywanych na bazie, które to operacje są niepodzielne i muszą być wykonane w całości.

26
Q

Klucz główny i obcy

A

Klucz podstawowy to jedno lub więcej pól (kolumn) w tabeli bazy danych, które jednoznacznie identyfikują każdy rekord w tej tabeli. Jego głównym zadaniem jest zapewnienie, że nie ma dwóch identycznych rekordów w tabeli — każda wartość klucza podstawowego jest unikalna.

**Klucz obcy **to kolumna (lub zbiór kolumn) w jednej tabeli, która wskazuje na klucz podstawowy w innej tabeli. Klucz obcy tworzy związek między dwoma tabelami, umożliwiając połączenie danych z tych tabel.

27
Q

Nierelacyjne bazy danych

A

Nierelacyjne bazy danych (NoSQL) to systemy zarządzania bazami danych, które nie opierają się na tradycyjnych tabelach i relacjach między danymi, jak w przypadku relacyjnych baz danych (RDBMS).
Typy nierelacyjnych baz danych:
- Bazy danych typu klucz-wartość (Key-Value Stores)
Przechowują dane w postaci par klucz-wartość.
- Bazy danych typu dokumentowego (Document Stores)
Przechowują dane w formacie dokumentów (np. JSON, BSON, XML).
-Bazy danych typu kolumnowego (Column-Family Stores):
Dane są przechowywane w kolumnach zamiast wierszy, co umożliwia bardziej wydajne przechowywanie i przetwarzanie dużych zbiorów danych.
-Bazy danych grafowe (Graph Databases):
-Skupiają się na przechowywaniu i analizie danych w postaci grafów, gdzie dane są reprezentowane jako wierzchołki i krawędzie.
-Bazy danych obiektowe (Object Databases):
Dane są przechowywane w formie obiektów zdefiniowanych w programie, co pozwala na bezpośrednią reprezentację obiektów programistycznych (np. w językach takich jak Java czy C++).

28
Q

ACID (krótsze)

A

Atomowość: Jeżeli jakakolwiek część transakcji się nie powiedzie, cała operacja zostaje cofnięta.
Spójność: Baza danych zachowuje swoją strukturę przy każdej transakcji.
Izolacja: Każda transakcja jest niezależna od pozostałych.
Trwałość: Wszystkie wyniki transakcji są trwale zachowywane.

29
Q

Zamki

A

Zamki (locks) - W celu uniknięcia problemów ze współbieżnym dostępem stosuje się
mechanizmy blokady dostępu do danych
Wyróżniamy dwa typy zamków:
Zamek typu X – założenie zamka tego typu całkowicie blokuje dostęp do obiektu dla
innych transakcji.
Zamek typu S – założenie zamka tego typu powoduje, że inne transakcje mogą
czytać dane, ale nie mogą ich modyfikować.

30
Q

Kursor

A

Kursory - tymczasowa struktura służąca do pobierania wyniku zapytania SQL. Kursor
umożliwia pobieranie rekordów sekwencyjnie , po jednym lub więcej naraz, a także
przemieszczanie się po wynikach zapytania.
Kursor może być zdefiniowany i działać po stronie serwera baz danych, jak i po stronie klienta.
Ten drugi typ kursora jest rodzajem iteratora umożliwiającego poruszanie się po poszczególnych
rekordach zwróconych przez serwer klientowi.

31
Q

Jakie kolumny indeksujemy a jakie nie?

A

kolumny indeksujemy:
- kolumny, które służą do wyszukiwania danych,
- - kolumny, w których wartości są unikalne lub rzadko się powtarzają,
– kolumny, w których chcemy wymusić unikalność wartości (także klucze główne),
- kolumny, które są wykorzystywane do złączeń (klucze obce).
Nie indeksujemy:
- kolumn o dużych rozmiarach (w szczególności tzw. LOBów - ang. Large OBject),
- kolumn o dużej powtarzalności wartości (np. kolumna Płeć),
- kolumn nie wykorzystywanych w zapytaniach do wyszukiwania rekordów.