• Nie Znaleziono Wyników

BAZY DANYCH

N/A
N/A
Protected

Academic year: 2021

Share "BAZY DANYCH"

Copied!
38
0
0

Pełen tekst

(1)

BAZY DANYCH

Akademia Górniczo-Hutnicza

Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej

Katedra Automatyki i Inżynierii Biomedycznej Laboratorium Biocybernetyki

30-059 Kraków, al. Mickiewicza 30, paw. C3/205 horzyk@agh.edu.pl, Google: Adrian Horzyk

Adrian Horzyk

NIERELACYJNE BAZY DANYCH – NoSQL

I ASOCJACYJNE

STRUKTURY DANYCH

(2)

NIERELACYJNE BAZ DANYCH (NoSQL)

 Mimo powszechności relacyjnych baz danych opartych na języku zapytań SQL, tabelach, relacjach i kluczach nie są jedynym ani najefektywniejszych schematem służącym do przechowywania i przetwarzania danych.

 Przez nierelacyjne bazy danych rozumie się wszystkie inne

rodzaje baz danych, które nie są oparte na tabelach rekordów powiązanych kluczami.

 Nierelacyjne bazy danych pełnią szczególną rolę w systemach rozproszonych oraz w systemach przetwarzających BigData.

 Często łączone są bazy SQL z NoSQL

(3)

PORÓWNANIE BAZ DANYCH SQL z NoSQL

 Bazy SQL wymuszają tworzenie relacji, atomowość i normalizację…

 Bazy NoSQL mogą być skalowane również horyzontalnie i nie wymagają

tworzenia złączeń pomiędzy danymi rozrzuconymi po tabelach, aczkolwiek są zwykle trudniejsze w utrzymaniu, gdyż mogą zawierać duplikaty danych.

(4)

PORÓWNANIE BAZ DANYCH SQL z NoSQL

 Każdy wiersz bazy NoSQL może zawierać różne kolumny (atrybuty opisujące dany obiekt).

 Silniki baz NoSQL nie wymuszają relacji pomiędzy obiektami.

 Jeśli obiekty są opisane różnymi atrybutami, może być łatwiejsze wykorzystanie baz nierelacyjnych.

 W bazach NoSQL nie ma w zasadzie kolumn, lecz tylko listy atrybutów opisujących obiekty, które oczywiście mogą posiadać unikalnie

reprezentujące je klucze pośród obiektów tego samego rodzaju.

 W bazach SQL nie dopuszcza się sytuacji, gdy każdy obiekt (np. krzesło, szafa czy samochód) opisane są różnymi atrybutami, a w praktyce tak zwykle

czynimy, gdyż część obiektów z danej klasy może mieć cechy szczególne, które w zupełności nie występują u innych obiektów z tej klasy.

(5)

TEORIA CAP

Według teorii CAP (Consistency - spójność, Availability - dostępność, Partition Tolerance – niewrażliwość na podział pomiędzy węzłami) systemy bazodanowe mogą spełniać tylko dwa z tych warunków:

 CP – Consistency & Partition Tolerance

 AP – Availability & Partition Tolerance

 CA – Consistency & Availability

Consistency spójność

Availability dostępność

Partition Tolerance

(6)

TEORIA CAP – Consistency - SPÓJNOŚĆ

 Consistency – spójność – oznacza, iż wszystkie węzły bazy danych będą miały takie same wartości, tzn. wszyscy użytkownicy rozproszonego systemu

bazodanowego otrzymają takie same dane niezależnie od tego, z którego węzła systemu bazodanowego korzystają.

 Oznacza to konieczność replikacji w pozostałych węzłach systemu

modyfikacji dokonanych w jednym z węzłów systemu bazodanowego.

Consistency spójność

Availability dostępność

Partition Tolerance

(7)

TEORIA CAP – Availability - DOSTĘPNOŚĆ

 Availability – dostępność – oznacza, iż operacje odczytu i zapisu będą zawsze możliwe, nawet gdy istnieje przerwa w komunikacji pomiędzy węzłami

systemu bazodanowego.

 Oznacza to konieczność zrezygnowania ze spójności (consistency) [systemy AP], gdyż w tym przypadku nie ma możliwości bieżącego zsynchronizowania danych w sytuacji zapisu bądź z dostępności (availability) [systemy CP], co oznacza konieczność wyłączenia całego klastra w przypadku przerwy w połączeniu. Systemy CA są zwykle oparte na jednym węźle.

Consistency spójność

Availability dostępność

Partition Tolerance

(8)

Systemy NoSQL i spójność danych

 W systemach NoSQL powszechnie poświęcana jest spójność (consistency) w celu zagwarantowania wysokiej dostępności danych i szybkości działania systemu bazodanowego.

 Takie podejście nie może być zastosowane np. do kont bankowych czy stanów magazynowych, gdzie dane muszą być obowiązkowo

synchronizowane i spójne, gdyż w odwrotnym przypadku można byłoby zrobić np. kilka przelewów z tych samych pieniędzy czy zamówić towar, którego już nie ma na magazynie!

 W wielu systemach rozproszonych jednak utrzymanie takiej spójności danych nie jest potrzebne.

(9)

Zapytania w systemach NoSQL

 Bazy NoSQL nie mają sformalizowanych ani ustalonych zasad ani języka zapytań, więc sposób zapytań jest określany w zależności od

przechowywanych danych i optymalizowany pod ich kątem.

 Odpowiedzialność za poprawność działania baz NoSQL spoczywa na programiście.

 Dla przyspieszenia działania można tworzyć indeksy tylko dla kluczy

głównych opisujących poszczególne wiersze a nie dla dowolnych kolumn jak ma to miejsce w przypadku relacyjnych baz danych.

 Bazy NoSQL nie spełniają również standardu ACID (atomicity, consistency, isolation and durability).

 Trudniej jest również zadbać o transakcyjność operacji.

(10)

Zastosowania baz NoSQL

 Bazy NoSQL stosuje się w przypadku konieczności skalowania

horyzontalnego, czyli gdy dany obiekt często zmienia atrybuty lub znacznie się różnią dla poszczególnych obiektów.

 Bazy SQL są znacząco lepsze jeśli skalowalność zachodzi głównie wertykalnie, a horyzontalnie atrybuty są stabilne i jasno określone.

 W przypadku prostych encji, czyli obiektów opisanych niewielką lecz zmienną ilością różnych atrybutów, skorzystanie z baz NoSQL może być korzystne, zaś w przypadku wielu skomplikowanych encji lepsze będzie zastosowanie baz SQL dla uniknięcia bałaganu lub błędów, dzięki mechanizmom wymuszania i kontroli relacji.

 W grach on-line, które przetwarzają wiele żądań na sekundę, bazy NoSQL mogą też być dobrym podejściem, gdyż wysoka wydajność i maksymalna przepustowość mogą być ważniejsze niż spójność.

(11)

Podział baz NoSQL

Bazy NoSQL dzielimy na cztery podstawowe typy:

Bazy oparte na kluczach i wartościach (Key-Values Stores)opierają się na kolekcji

słowników, składających się z encji, w których z kluczem powiązane są wartości różnych atrybutów dla różnych encji. Stosowane są w nich funkcje haszujące w celu przyspieszenia odczytu, więc stosujemy je głównie tam, gdzie dane często się odczytuje.

[Windows Azure Table Storage, Riak, Redis, Amazon SimpleDB, Berkley DB 12c, Dynomite]

Bazy kolumnowe (Column Stores) są swoistą inwersją dla zapisu wierszowego, tzn. dane z tej samej kolumny zapisywane są obok siebie,

co może oznaczać szybszy dostęp do danych w kolumnie, gdyż przeszukiwane są kolejne komórki w pamięci RAM, np. w przypadku funkcji agregujących, czyli MIN, MAX, AVR, SUM, COUNT. Stosuje się wyłącznie do małych baz przechowywanych w całości w pamięci RAM.

[Apache Cassandra]

Bazy dokumentowe (Document Stores) stosowane do przechowywania dokumentów zawierających wiele różnych atrybutów (np. rozmiar czcionki, formatowanie, załączniki różnych typów) oraz możliwość zagnieżdżania jednych dokumentów w innych

[MongoDB, CouchDB, RavenDB]

Bazy grafowe (Graph Stores) oparte są na grafach i o algorytmy grafowe, w których każdy obiekt może być opisany węzłem w grafie, a relacje pomiędzy nimi krawędziami. Łatwo więc znaleźć np. najkrótszą ścieżkę w grafie pomiędzy obiektami.

[Neo4J, Titan, Sparksee, Giraph, InfoGrid] Korzystają z nich np. Facebook i LinkedIn

(12)

Grafowe asocjacyjne bazy danych

 Grafowe asocjacyjne bazy danych są rodzajem grafowych baz implementujących relacje pomiędzy danymi w postaci asocjacji.

 Asocjacje (powiązania pomiędzy danymi) mogą być dodatkowo ważone, definiując istotność takiej relacji (związku).

 Asocjacje reprezentują relacje, które są bogatsze niż w przypadku klasycznych baz relacyjnych.

 Obiekty reprezentowane przez węzły mogą charakteryzować się dowolnym stopniem złożoności i zagnieżdżenia oraz być zdefiniowane przy pomocy dowolnej ilości innych węzłów.

 Dane poszczególnych atrybutów są ze sobą powiązane i względem siebie uporządkowane,

 jeśli tylko można zdefiniować porządek dla tego atrybutu.

 Nie wymagają indeksacji ani haszowania, gdyż wszystkie dane są w naturalny sposób posortowane względem wszystkich atrybutów równocześnie.

 Dane reprezentujące wartości jednego atrybutu nie są duplikowane, lecz agregowane, co stanowi o dużej potencjalnej oszczędności w przechowywaniu danych w takiej postaci, szczególnie jeśli wartości danych często się powtarzają.

 Agregacja danych oraz powiązania pomiędzy nimi zapewniają bardzo szybki (w czasie stałym) dostęp do wszystkich powiązanych bezpośrednio lub pośrednio danych.

 Uzyskuje się również błyskawiczny dostęp do niektórych wartości funkcji agregujących (tj. MIN, MAX), jak również bardzo szybko można wyznaczać podobieństwa i różnice pomiędzy obiektami.

 W działaniu są więc dużo efektywniejsze niż relacyjne bazy danych, lecz niestety ze względu na ograniczenia sprzętowe mogą być stosowane tylko do danych, które mieszą się w pamięci RAM komputera. Największą skuteczność osiąga się w przypadku zastosowania równoległości.

 [AGDS – Associative Graph Data Structure]

(13)

Przykład grafowych asocjacyjnych baz danych

 Dane z tabel z relacyjnych baz danych można przekształcić na postać asocjacyjnych grafów AGDS.

(14)

Przykład grafowych asocjacyjnych baz danych

 Dane z tabel z relacyjnych baz danych można przekształcić na postać asocjacyjnych grafów AGDS.

(15)

Przykład grafowych asocjacyjnych baz danych

 Dane z tabel z relacyjnych baz danych można przekształcić na postać asocjacyjnych grafów AGDS.

(16)

Przykład grafowych asocjacyjnych baz danych

 Wykrywanie duplikatów, podobieństw oraz MIN i MAX jest prymitywnie łatwe i szybkie.

(17)

Przykład grafowych asocjacyjnych baz danych

 Dochodzi do agregacji wartości i usunięcia wszystkich duplikatów danych!

(18)

Przykład grafowych asocjacyjnych baz danych

 Wykrywanie zależności i korelacji pomiędzy danymi można przeprowadzić błyskawicznie!

(19)

Przykład grafowych asocjacyjnych baz danych

 Wykrywanie podobieństw i różnic jest również proste i szybkie!

(20)

Przykład grafowych asocjacyjnych baz danych

 Z łatwością można je wykorzystać do grupowania (klasteryzacji) oraz klasyfikacji!

(21)

Przykład grafowych asocjacyjnych baz danych

 Z łatwością można je wykorzystać do grupowania (klasteryzacji) oraz klasyfikacji!

(22)

Przykład grafowych asocjacyjnych baz danych

 Łatwe do wykorzystania do dyskryminacji, klasyfikacji, grupowania (klasteryzacji) i analizy danych!

(23)

Grafowe asocjacyjne bazy danych w mózgu

Grafowe asocjacyjne struktury danych są fundamentem działania ludzkiego mózgu, gdzie neurony aktywnie reprezentują różne obiekty o dowolnej złożoności oraz umożliwiają automatyczne przypominanie skojarzonych wcześniej informacji dzięki połączeniom między nimi.

(24)

Analiza grafowej asocjacyjnej bazy danych

(25)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

MIN MAX

MIN MAX

SENSIN : A2 SENSIN : A1

AANG

A2 A1

( A )

(26)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

2

3 N1

ADEF

ADEF

ADEF

MIN

ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

AANG

2 3 R1

( B )

(27)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

2

1 3

N2 N1

ADEF

ASIM ASEQ

ADEF

ADEF

ADEF

ADEF

MIN

ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

ASIM

8

AANG

8 1 R2

( C )

(28)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

2

1

3

3 N2

N1 N3

ADEF ASIM

ASIM

ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF

MIN

ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

ASIM

8

ASIM

9

AANG

3 9 R3

( D )

(29)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

ASIM

8

ASIM

9

AANG

1 3 R4

( E )

(30)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

4

ASIM

ASIM

8

ASIM

8

ASIM

9

ASEQ

N5

ADEF

ADEF

AANG

4 8 R5

( F )

(31)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

4

ASIM

ASIM

8

5

ASIM

8

ASIM ASIM

9

N6 N5

ASEQ

ASEQ ADEF

ADEF ADEF

AANG

ADEF

4 5 R6

( G )

(32)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

4

ASIM

ASIM

8

5

ASIM

8

ASIM ASIM

9

N6 N5

ASEQ

ASEQ ASEQ

ADEF

ADEF ADEF

AANG

ADEF

1 3 R7

( H )

(33)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

4

ASIM

ASIM

8

ASIM

9

5

ASIM

8

ASIM ASIM

9

N6

N5

ASEQ

N8

ASEQ

ASEQ ASEQ

ADEF

ADEF ADEF

ADEF

ADEF

ADEF

ACON

AANG

9 1 R8

( I )

(34)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3 R7

AANG

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

4

ASIM

6

ASIM ASIM

8

ASIM

9

5

ASIM

8

ASIM ASIM

9

N6

N5

ASEQ

N8 N9

ASEQ

ASEQ

ASEQ ASEQ

ADEF

ADEF ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ACON

6 8 R9

( J )

(35)

Sortowanie względem wszystkich atrybutów

A2 8 1 A1

2 3 3 9 1 3 R2

R1 R3

R4 ASSORT

TABELA

4 5 4 8

9 1 6 8 R6

R5

R8 R9

1 3

R7 ...

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

AANG

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

4

ASIM

6

ASIM ASIM

8

ASIM

9

5

ASIM

8

ASIM ASIM

9

N6

N5

ASEQ

N8 N9

ASEQ

ASEQ

ASEQ ASEQ

ACON

ACON

ADEF

ADEF ADEF

ADEF

ADEF

ADEF

ADEF ADEF

2 3 R1

6 8 R9

( K )

(36)

Przykład wnioskowania

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

AANG

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

4

ASIM

6

ASIM ASIM

8

ASIM

9

5

ASIM

8

ASIM ASIM

9

N6

N5

ASEQ

N8 N9

ASEQ

ASEQ

ASEQ ASEQ

ACON

ACON

ADEF

ADEF ADEF

ADEF

ADEF

ADEF

ADEF ADEF

4 3 ZEWNĘTRZNE

POBUDZANIE

WEJŚĆ

SENSORYCZNYCH

(37)

Przykład wnioskowania

2

1

3

3 1

N2

N1 N3 N4

ADEF ASIM

ASIM

ASEQ ASEQ ASEQ

ADEF

ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ADEF

AANG

MIN

ASIM ADEF

MAX

MIN

ADEF ADEF

MAX

SENSIN : A2 SENSIN : A1

4

ASIM

6

ASIM ASIM

8

ASIM

9

5

ASIM

8

ASIM ASIM

9

N6

N5

ASEQ

N8 N9

ASEQ

ASEQ

ASEQ ASEQ

ACON

ACON

ADEF

ADEF ADEF

ADEF

ADEF

ADEF

ADEF ADEF

ZEWNĘTRZNE POBUDZANIE

NEURONU

(38)

ZAAWANSOWANE BAZY

I

STRUKTURY

DANYCH

Cytaty

Powiązane dokumenty

✓ Logowanie do bazy danych dokonujemy poprzez okno dialogowe otwierane wraz z uruchamianiem bazy danych, modalny formularz startowy.. ✓ Okno dialogowe uniemożliwia przejście do

Przykład: Wzorzec „kawa  cukier” jest nie tylko zamknięty, lecz również maksymalny, gdyż nie istnieje żaden częsty wzorzec, który by go zawierał.. Wzorce zamknięte

OLAP (Online Analytical Processing) – to sposób tworzenia analiz i raportów na podstawie danych zbieranych on-line z różnych serwerów i baz danych oraz ich eksploracji..

• w kierunku środkowej gałęzi, jeśli klucz jest silnie większy od lewej wartości i mniejszy lub równy od prawej wartości klucza.. Dodaj element do liścia w sposób

Jeśli nie, zwraca informację o błędnej nazwie użytkownika i zmienia aktywny element formularza na okno wprowadzania tej nazwy. Jeśli tak, sprawdza, czy wprowadzone hasło jest zgodne

Konstruktor makr zawiera wykaz akcji, które można przeciągać do obszaru projektowego.... KONSTRUKTOR MAKR

Relacja jest w drugiej postaci normalnej (2NF) wtedy i tylko wtedy, gdy jest w 1NF oraz każdy niekluczowy atrybut tabeli (kolumna) jest w zależny funkcyjnie od całego klucza

wybiera wszystkie rekordy z podanych kolumn z tabeli Studenci w kolejności według podanej listy kolumn niezależnie od tego, w jakiej kolejności te kolumny występowały w