Lekcja 2

Kontynuacja poprzednich zajęć - modele baz danych

Oto opis głównych modeli baz danych, które są powszechnie stosowane w różnych aplikacjach i systemach:

Model Relacyjny

Model relacyjny jest jednym z najpopularniejszych modeli baz danych. Dane są przechowywane w tabelach (relacjach), które składają się z wierszy i kolumn. Każda tabela reprezentuje jedną jednostkę danych, a relacje między tabelami są definiowane za pomocą kluczy.

Cechy:

  • Tabele (Relacje): Dane są organizowane w tabelach, gdzie każda tabela składa się z kolumn (atrybutów) i wierszy (rekordów).
  • Klucze: Klucz główny (PRIMARY KEY) identyfikuje unikalnie każdy rekord w tabeli, podczas gdy klucz obcy (FOREIGN KEY) tworzy powiązania między tabelami.
  • SQL: Używany jest język SQL (Structured Query Language) do definiowania i manipulowania danymi.

Przykłady: MySQL, PostgreSQL, Oracle, Microsoft SQL Server

Zalety:

  • Spójność danych: Dzięki mechanizmom normalizacji i kluczom.
  • Elastyczność zapytań: SQL umożliwia łatwe i złożone zapytania do danych.
  • Wspierane transakcje: Gwarantują atomowość, spójność, izolację i trwałość (ACID).

Wady:

  • Skalowalność: Może mieć trudności z obsługą bardzo dużych danych lub wysokich obciążeń transakcyjnych.

Model Dokumentowy

Model dokumentowy jest rodzajem modelu NoSQL, w którym dane są przechowywane w formie dokumentów, zazwyczaj w formacie JSON, BSON lub XML. Dokumenty są zorganizowane w kolekcjach.

Cechy:

  • Dokumenty: Każdy dokument jest samodzielną jednostką danych, która może mieć różną strukturę. Dokumenty są przechowywane w kolekcjach.
  • Bez schematu: Dokumenty w jednej kolekcji mogą mieć różne struktury, co daje dużą elastyczność.
  • Zapytania: Można wykonywać zapytania do dokumentów, używając specyficznych dla danej bazy danych metod i języków zapytań.

Przykłady: MongoDB, CouchDB, Couchbase

Zalety:

  • Elastyczność: Dokumenty mogą mieć różne struktury, co ułatwia pracę z danymi o zmiennej strukturze.
  • Skalowalność: Wspiera rozproszone przechowywanie i łatwe skalowanie w poziomie.

Wady: -Brak standaryzacji: Różne bazy danych dokumentowe mogą mieć różne sposoby przechowywania i zapytań.

Model Kolumnowy

Model kolumnowy to model NoSQL, w którym dane są przechowywane w kolumnach zamiast wierszy. Każda kolumna przechowuje wartości dla jednej właściwości, a kolumny są grupowane w kolumnach rodzinnych.

Cechy:

  • Kolumny: Dane są przechowywane w kolumnach, a nie w wierszach. Kolumny mogą być dodawane i modyfikowane w trakcie działania bazy danych.
  • Grupowanie: Kolumny są grupowane w kolumnach rodzinnych, które mogą zawierać wiele kolumn.
  • Przykłady: Apache Cassandra, HBase, Google Bigtable

Zalety:

  • Optymalizacja dla zapytań analitycznych: Doskonałe do operacji na dużych zbiorach danych i zapytań analitycznych.
  • Skalowalność: Wysoka skalowalność pozioma, idealna dla dużych danych.

Wady:

  • Trudniejsza konfiguracja: Może wymagać zaawansowanej konfiguracji i zarządzania.

Model Grafowy

Model grafowy jest stosowany do reprezentowania danych jako węzłów (nodów) i krawędzi (edge), które tworzą graf. Jest idealny do przechowywania i analizowania danych o złożonych relacjach.

Cechy:

  • Węzły i Krawędzie: Węzły reprezentują jednostki danych, a krawędzie reprezentują relacje między nimi.
  • Elastyczność relacji: Grafy mogą modelować złożone relacje i ich atrybuty.

Przykłady: Neo4j, Amazon Neptune, ArangoDB

Zalety:

  • Analiza relacji: Doskonały do analizy danych o złożonych i wielopoziomowych relacjach, takich jak sieci społeczne.

  • Wydajność: Wydajny w zapytaniach dotyczących relacji i połączeń między danymi. Wady:

  • Skalowalność: Może być mniej wydajny w przypadku bardzo dużych zbiorów danych, które nie są dobrze odwzorowane w grafie.

Model Klucz-Wartość

Model klucz-wartość jest najprostszym modelem NoSQL, w którym dane są przechowywane jako pary klucz-wartość. Klucz jest unikalnym identyfikatorem, a wartość to dane przypisane do tego klucza.

Cechy:

  • Parę klucz-wartość: Prosta struktura, w której każdemu kluczowi przypisana jest jedna wartość.
  • Bez schematu: Wartości mogą być różnego typu, np. tekst, liczby, obiekty binarne.

Przykłady: Redis, Riak, Amazon DynamoDB

Zalety:

  • Wydajność: Bardzo szybki w operacjach odczytu i zapisu.

  • Skalowalność: Łatwe skalowanie w poziomie, dobre dla prostych operacji. Wady:

  • Ograniczona funkcjonalność: Nie obsługuje złożonych zapytań ani relacji między danymi.

Każdy z tych modeli baz danych ma swoje zastosowania i jest dostosowany do różnych scenariuszy i wymagań. Wybór odpowiedniego modelu zależy od specyfiki aplikacji i rodzaju danych, które mają być przechowywane oraz przetwarzane.