ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
  • Firma

Bazy danych – Ewolucja systemów zarządzania danymi

Napisane przez Igor Brzeżek on 2 listopada 2025
Napisane w: Bazy danych.

Contents
  1. 1. przed erą baz danych: problemy systemów plikowych
  2. Główne wady systemów plikowych:
  3. 2. pionierskie modele nawigacyjne: hierarchiczny i sieciowy
  4. Model hierarchiczny: struktura drzewa
  5. Model sieciowy: uogólniony graf
  6. 3. rewolucja relacyjna: deklaratywność i niezależność danych
  7. Kluczowe koncepcje modelu relacyjnego:
  8. Przykład w SQL: połączenie danych
  9. 4. era big data i narodziny nosql
  10. Twierdzenie CAP (consistency, availability, partition tolerance)
  11. Główne typy baz nosql
  12. 5. podsumowanie: wybór właściwego narzędzia

1. przed erą baz danych: problemy systemów plikowych

Zanim powstały współczesne systemy bazodanowe, dane były zarządzane za pomocą systemów opartych na plikach (ang. file-based systems). Każda aplikacja miała własny zestaw plików z danymi, a ich struktura była zdefiniowana bezpośrednio w kodzie programu. Takie podejście, choć proste w założeniach, generowało lawinę problemów w miarę wzrostu złożoności i ilości danych.

Główne wady systemów plikowych:

  • Redundancja i niespójność danych: Te same informacje (np. adres klienta) były powielane w wielu plikach należących do różnych aplikacji (np. system fakturowania, system CRM). Zmiana adresu w jednym miejscu nie gwarantowała aktualizacji w innych, prowadząc do niespójności.
  • Trudności w dostępie do danych: Aby uzyskać nowy raport, trzeba było napisać dedykowany program, który odczytywał i przetwarzał odpowiednie pliki. Nie istniały uniwersalne języki zapytań.
  • Brak niezależności danych: Struktura danych była ściśle powiązana z aplikacją. Zmiana formatu pliku (np. dodanie nowego pola) wymagała modyfikacji i rekompilacji wszystkich programów, które z niego korzystały.
  • Problemy z współbieżnością: Kontrola jednoczesnego dostępu wielu użytkowników do tych samych danych była niezwykle trudna do zaimplementowania i często prowadziła do konfliktów i uszkodzenia danych.
  • Kwestie bezpieczeństwa i integralności: Wymuszanie reguł (np. że pensja pracownika musi być liczbą dodatnią) musiało być implementowane w każdej aplikacji z osobna, co było nieefektywne i podatne na błędy.

Te ograniczenia stały się impulsem do poszukiwania nowego paradygmatu, który scentralizowałby zarządzanie danymi i oddzielił je od logiki aplikacji.

2. pionierskie modele nawigacyjne: hierarchiczny i sieciowy

Model hierarchiczny: struktura drzewa

Pierwszym komercyjnym sukcesem był model hierarchiczny, zaimplementowany w systemie IBM IMS (1968). Dane organizowane są w strukturę drzewiastą, gdzie każdy rekord (segment) ma dokładnie jednego „rodzica”, z wyjątkiem korzenia. Relacje są wyłącznie typu jeden-do-wielu (1:N).

Schemat - Model Hierarchiczny (Struktura firmy):

      [ Firma ]
          |
      [ Dział IT ]
      /     |     \
[Proj. A] [Proj. B] [Proj. C]
             |
         [ Zadanie 1 ]
         [ Zadanie 2 ]

Zalety: Model ten był bardzo wydajny dla zapytań podążających wzdłuż predefiniowanych ścieżek (np. „znajdź wszystkie zadania w projekcie B”).
Wady: Reprezentacja relacji wiele-do-wielu (M:N) była niemożliwa bez duplikacji danych. Na przykład, jeśli jedno zadanie należało do dwóch projektów, trzeba było je zapisać dwukrotnie, co prowadziło do redundancji i problemów ze spójnością.

Model sieciowy: uogólniony graf

Model sieciowy, zaproponowany przez CODASYL (1971), był ewolucyjnym krokiem naprzód. Zezwalał, aby rekord mógł mieć wielu „rodziców”, co naturalnie modelowało relacje wiele-do-wielu (M:N). Struktura przypominała graf, a powiązania definiowano za pomocą tzw. zbiorów (ang. sets).

Schemat - Model Sieciowy (System uniwersytecki):

[ Student: Jan ] <----> [ Kurs: Bazy Danych ] <----> [ Wykładowca: prof. X ]
      ^   \                      /   ^
      |    \                    /    |
      |     `--> [ Kurs: AI ] <--'    |
      `------------------------------'

Zalety: Większa elastyczność i redukcja redundancji w porównaniu do modelu hierarchicznego.
Wspólna wada obu modeli: Oba modele były nawigacyjne i proceduralne. Programista musiał znać fizyczną strukturę danych i pisać kod, który krok po kroku „nawigował” po wskaźnikach od rekordu do rekordu. To powodowało brak niezależności danych – zmiana struktury bazy wymagała zmiany kodu aplikacji.

3. rewolucja relacyjna: deklaratywność i niezależność danych

Przełom nastąpił w 1970 roku dzięki pracy Edgara F. Codda, który zaproponował model relacyjny. Jego fundamentem nie były fizyczne wskaźniki, lecz solidna teoria matematyczna (algebra relacyjna i teoria zbiorów). Dane są w nim postrzegane jako zbiór tabel, zwanych relacjami.

Kluczowe koncepcje modelu relacyjnego:

  • Relacja (Tabela): Dwuwymiarowa struktura składająca się z wierszy i kolumn.
  • Krotka (Wiersz/Rekord): Reprezentuje pojedynczy obiekt lub fakt.
  • Atrybut (Kolumna): Nazwana właściwość obiektu.
  • Klucz główny: Atrybut (lub zbiór atrybutów), który unikalnie identyfikuje każdą krotkę w relacji.
  • Klucz obcy: Atrybut w jednej relacji, który odwołuje się do klucza głównego w innej, tworząc w ten sposób powiązanie.

Największą innowacją było wprowadzenie deklaratywnych języków zapytań, z których najpopularniejszym stał się SQL (Structured Query Language). Użytkownik określa co chce uzyskać, a nie jak to zrobić. System zarządzania bazą danych (RDBMS) sam optymalizuje i wykonuje zapytanie.

Przykład w SQL: połączenie danych


-- Tabela Pracownicy
CREATE TABLE Pracownicy (
    ID_Pracownika INT PRIMARY KEY,
    Nazwisko VARCHAR(100),
    ID_Dzialu_FK INT
);

-- Tabela Dzialy
CREATE TABLE Dzialy (
    ID_Dzialu INT PRIMARY KEY,
    Nazwa_Dzialu VARCHAR(100)
);

-- Zapytanie deklaratywne: "Pokaż nazwiska pracowników i nazwy ich działów"
SELECT P.Nazwisko, D.Nazwa_Dzialu
FROM Pracownicy P
JOIN Dzialy D ON P.ID_Dzialu_FK = D.ID_Dzialu;
            

Model relacyjny zapewnił pełną niezależność danych i rygorystyczne gwarancje spójności dzięki transakcjom ACID (Atomicity, Consistency, Isolation, Durability). Stał się dominującym standardem na dziesięciolecia.

4. era big data i narodziny nosql

Na początku XXI wieku, wraz z eksplozją danych internetowych (Big Data), pojawiły się nowe wyzwania: ogromna skala, potrzeba elastyczności schematu i obsługa systemów rozproszonych. W odpowiedzi na te potrzeby powstały bazy NoSQL (ang. Not Only SQL).

Kluczową cechą systemów NoSQL jest skalowalność horyzontalna (dodawanie kolejnych serwerów), w przeciwieństwie do skalowalności wertykalnej (zwiększanie mocy jednego serwera), typowej dla RDBMS. Często rezygnują one z rygorystycznej spójności na rzecz wyższej dostępności i odporności na awarie, co opisuje twierdzenie CAP.

Twierdzenie CAP (consistency, availability, partition tolerance)

Stwierdza, że w systemie rozproszonym niemożliwe jest jednoczesne zagwarantowanie wszystkich trzech właściwości:

  • Spójność (Consistency): Każdy odczyt zwraca najnowszy zapis lub błąd.
  • Dostępność (Availability): Każde żądanie otrzymuje odpowiedź (niebędącą błędem), ale bez gwarancji, że zawiera najnowszy zapis.
  • Tolerancja na partycjonowanie (Partition Tolerance): System działa nadal pomimo utraty komunikacji między niektórymi węzłami.

Systemy rozproszone muszą tolerować partycjonowanie, więc wybór sprowadza się do kompromisu między spójnością a dostępnością (CP lub AP). Wiele baz NoSQL wybiera dostępność, oferując model spójności ostatecznej (ang. eventual consistency).

Główne typy baz nosql

Typ Opis Przykłady Typowe zastosowanie
Klucz-wartość Prosty model, gdzie każdy element danych jest przechowywany jako klucz i odpowiadająca mu wartość. Bardzo szybki odczyt i zapis. Redis, DynamoDB Pamięć podręczna (cache), zarządzanie sesjami użytkowników.
Dokumentowe Dane przechowywane są w elastycznych dokumentach (np. JSON, BSON), które mogą mieć zagnieżdżone struktury. Brak sztywnego schematu. MongoDB, Couchbase Katalogi produktów, systemy zarządzania treścią (CMS), profile użytkowników.
Kolumnowe Dane są przechowywane w kolumnach, a nie wierszach. Zoptymalizowane pod kątem agregacji i analizy dużych zbiorów danych. Cassandra, HBase Analityka Big Data, systemy logowania, dane z sensorów IoT.
Grafowe Zaprojektowane do przechowywania danych o złożonych relacjach. Składają się z wierzchołków (obiektów) i krawędzi (powiązań). Neo4j, Amazon Neptune Sieci społecznościowe, systemy rekomendacji, wykrywanie oszustw.

5. podsumowanie: wybór właściwego narzędzia

Ewolucja baz danych to fascynująca podróż od prostych plików do wysoce wyspecjalizowanych systemów. Dziś wybór technologii zależy od konkretnego problemu do rozwiązania.

Cecha Bazy Relacyjne (SQL) Bazy Nierelacyjne (NoSQL)
Model danych Strukturalny, oparty na tabelach z predefiniowanym schematem. Elastyczny (dokumenty, klucz-wartość, grafy), często bez schematu.
Spójność Silna spójność (gwarancje ACID). Zazwyczaj spójność ostateczna (model BASE).
Skalowalność Głównie wertykalna (mocniejszy serwer). Głównie horyzontalna (więcej serwerów).
Język zapytań Standardowy SQL. Różne, specyficzne dla danej bazy (np. MQL, CQL).
Idealne dla Systemów transakcyjnych, finansowych, wszędzie tam, gdzie spójność jest krytyczna. Aplikacji Big Data, systemów czasu rzeczywistego, danych o zmiennej strukturze.

Współczesne architektury często wykorzystują podejście hybrydowe, znane jako Polyglot Persistence, gdzie różne typy baz danych są używane do różnych zadań w ramach jednego systemu, aby w pełni wykorzystać ich unikalne zalety.

Nawigacja

← Bazy danych – Wstęp do normalizacji
Bazy danych – Elementy modelowania →
  • Szukaj

  • Kategorie

    • IT ogólnie (110)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Sieci (25)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (3)
        • Symulator sieci GNS3 (2)
      • Software (53)
        • Bazy danych (12)
        • Programowanie (3)
        • Systemy operacyjne (15)
          • Linux Debian (14)
        • Windows (7)
      • WiFi (2)
      • Wirtualizacja (26)
    • Różne (1)
  • Ostatnie wpisy

    • Małe wprowadzenie do baz danych
    • Bazy danych – Model relacyjny
    • Bazy danych – Elementy modelowania
    • Bazy danych – Ewolucja systemów zarządzania danymi
    • Bazy danych – Wstęp do normalizacji
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y