Architektura oraz cechy systemu zarządzania bazami danych

Lekcja: Architektura systemów baz danych, cechy systemu zarządzania bazami danych i konfiguracja MySQL

Cele lekcji:

  • Zrozumienie architektury systemów baz danych.
  • Omówienie kluczowych cech Systemów Zarządzania Bazami Danych (DBMS).
  • Przedstawienie podstawowej konfiguracji MySQL i jej kluczowych parametrów.

1. Architektura systemów baz danych

Architektura systemu baz danych definiuje sposób, w jaki dane są przechowywane, przetwarzane i udostępniane użytkownikom. Istnieją różne modele architektury, które służą do zarządzania danymi w zależności od rodzaju bazy danych, wymagań systemu oraz ilości danych.


a. Model klient-serwer

W modelu klient-serwer baza danych działa na serwerze, a użytkownicy łączą się z nią za pośrednictwem klientów (np. aplikacji, interfejsów użytkownika lub systemów API). Model ten jest podstawą wielu współczesnych systemów zarządzania bazami danych (DBMS).

Proces działania:

  1. Klient – To aplikacja lub interfejs użytkownika, który wysyła zapytanie (np. w języku SQL) do bazy danych w celu uzyskania lub zmodyfikowania danych. Przykładem klienta może być aplikacja webowa, która wyświetla użytkownikowi dane pobrane z bazy.

  2. Serwer – Serwer bazy danych to jednostka, która przetwarza zapytania, wykonuje operacje na danych, takie jak pobieranie, wstawianie, aktualizowanie i usuwanie danych. Serwer obsługuje też bezpieczeństwo, autoryzację i transakcje.

Zalety modelu klient-serwer:

  • Centralizacja: Wszystkie dane przechowywane są w jednym miejscu, co ułatwia zarządzanie, kontrolę nad danymi i ich bezpieczeństwem.
  • Skalowalność: Serwery baz danych mogą być skalowane, aby obsłużyć rosnącą liczbę zapytań użytkowników.
  • Bezpieczeństwo: Serwer kontroluje dostęp do danych i zapewnia, że tylko uprawnieni użytkownicy mogą wykonywać operacje na danych.

Przykłady DBMS działających w modelu klient-serwer:

  • MySQL: Relacyjny system baz danych o otwartym kodzie źródłowym, popularny w aplikacjach webowych.
  • PostgreSQL: Zaawansowana baza danych SQL z obsługą zarówno danych relacyjnych, jak i nierelacyjnych.
  • Microsoft SQL Server: Komercyjny system zarządzania bazami danych firmy Microsoft, używany w wielu przedsiębiorstwach.

b. Architektura wielowarstwowa (3-tier architecture)

Architektura wielowarstwowa to bardziej złożona forma organizacji aplikacji i systemów bazodanowych, składająca się z trzech odrębnych warstw. Każda z tych warstw ma swoją specyficzną rolę w przetwarzaniu danych i prezentowaniu wyników użytkownikom.

  1. Warstwa prezentacji (Presentation Layer)
    Ta warstwa odpowiada za interakcję z użytkownikiem. Jest to interfejs użytkownika, który może przyjmować różne formy – od aplikacji desktopowych po strony internetowe. Użytkownik z tej warstwy wysyła zapytania (np. wpisuje dane w formularzach, wykonuje wyszukiwanie w bazie) do systemu.

  2. Warstwa logiki biznesowej (Business Logic Layer)
    Środkowa warstwa, która przetwarza zapytania użytkownika i wykonuje logikę biznesową związaną z danymi. Przykładem może być sprawdzanie poprawności danych, kalkulacje, analiza czy podejmowanie decyzji, które operacje na danych są dozwolone. Ta warstwa działa jako pośrednik między warstwą prezentacji a warstwą bazy danych.

  3. Warstwa bazy danych (Data Layer)
    Ostatnia warstwa odpowiada za zarządzanie przechowywaniem danych, ich pobieraniem i zapisywaniem. Baza danych przetwarza zapytania z warstwy logiki biznesowej i zwraca odpowiednie dane. Dane mogą być przechowywane w relacyjnych lub nierelacyjnych strukturach, w zależności od technologii używanej w bazie.

Zalety architektury wielowarstwowej:

  • Separacja logiki: Dzięki rozdzieleniu prezentacji, logiki biznesowej i bazy danych, każda warstwa może być rozwijana i zarządzana niezależnie.
  • Modularność: Każda warstwa może być łatwo zastąpiona lub zmieniona, co ułatwia modernizację systemu.
  • Skalowalność: Umożliwia skalowanie poszczególnych warstw w zależności od potrzeb, np. dodanie więcej serwerów bazy danych w celu obsłużenia większej liczby zapytań.

Przykłady zastosowania architektury wielowarstwowej:

  • Aplikacje internetowe oparte o MVC (Model-View-Controller), gdzie interfejs użytkownika to View, logika biznesowa to Controller, a dane przechowywane są w Model.
  • Aplikacje ERP, w których dane są przetwarzane w centralnym systemie bazy danych, a użytkownicy z różnych działów mają dostęp do danych przez różne interfejsy.

c. Architektura rozproszona i systemy baz danych w chmurze

Architektura rozproszona to model, w którym dane i usługi są przechowywane na wielu serwerach, które mogą znajdować się w różnych lokalizacjach. Taka architektura jest często stosowana w przypadku dużych aplikacji, które muszą obsługiwać miliony użytkowników na całym świecie.

Cechy architektury rozproszonej:

  • Redundancja: Dane są kopiowane między różnymi serwerami, co zapewnia odporność na awarie i utratę danych.
  • Skalowalność pozioma: Serwery mogą być dodawane w miarę wzrostu zapotrzebowania, co umożliwia obsługę większej liczby zapytań bez spowolnienia działania systemu.
  • Dostępność: Systemy rozproszone są zwykle zaprojektowane w taki sposób, aby były dostępne z dowolnej lokalizacji i zapewniały ciągłość działania nawet w przypadku awarii niektórych węzłów.

Systemy baz danych w chmurze są współczesną formą architektury rozproszonej, gdzie dane są przechowywane i zarządzane przez dostawców usług chmurowych (np. Amazon Web Services, Google Cloud, Microsoft Azure). Korzystanie z chmury pozwala na dynamiczne skalowanie zasobów, automatyczne zarządzanie kopiami zapasowymi i uproszczoną administrację.


d. Bazy danych SQL i NoSQL

  • SQL (Relacyjne bazy danych): Przechowują dane w tabelach o strukturze wierszowej i kolumnowej. Dane są powiązane za pomocą kluczy i zapytania wykonuje się w języku SQL. Przykłady: MySQL, PostgreSQL.
  • NoSQL (Nierelacyjne bazy danych): Oferują elastyczniejsze przechowywanie danych, np. w formie dokumentów (MongoDB) lub kolumn (Cassandra). Są szczególnie przydatne do pracy z dużymi, nieustrukturyzowanymi danymi.

2. Cechy systemu zarządzania bazami danych (DBMS)

System Zarządzania Bazami Danych (DBMS) to oprogramowanie, które umożliwia tworzenie, modyfikowanie i zarządzanie bazą danych. Każdy DBMS posiada kilka kluczowych cech, które są niezbędne do sprawnego działania systemu.

a. Niezależność danych

DBMS zapewnia oddzielenie danych od aplikacji. Oznacza to, że zmiany w strukturze danych (np. dodanie nowych kolumn do tabeli) nie wpływają na działanie aplikacji.

b. Bezpieczeństwo danych

DBMS kontroluje dostęp do danych, umożliwiając definiowanie uprawnień dla różnych użytkowników. Dzięki temu tylko autoryzowane osoby mogą przeglądać, edytować lub usuwać dane.

c. Spójność danych

Systemy zarządzania bazami danych zapewniają spójność danych, szczególnie przy operacjach współbieżnych. Używają zasad ACID:

  • Atomicity (Niepodzielność): Każda transakcja jest albo w pełni wykonana, albo w ogóle nie jest.
  • Consistency (Spójność): Dane zawsze pozostają w spójnym stanie po zakończeniu transakcji.
  • Isolation (Izolacja): Równoczesne transakcje są wykonywane w sposób izolowany od siebie.
  • Durability (Trwałość): Po zatwierdzeniu transakcji dane są trwale zapisane, nawet w przypadku awarii systemu.

d. Wydajność i optymalizacja

DBMS oferuje mechanizmy takie jak indeksy, cache i optymalizacja zapytań, które poprawiają wydajność systemu. Dzięki temu baza danych działa szybko, nawet przy dużych ilościach danych i licznych zapytaniach.

e. Zarządzanie wieloma użytkownikami i transakcjami

DBMS obsługuje wielu użytkowników jednocześnie, zapewniając równoczesny dostęp do danych. Mechanizmy takie jak blokady (locks) zapobiegają konfliktom podczas edycji danych przez wielu użytkowników.


3. Konfiguracja MySQL

MySQL to popularny system zarządzania bazami danych oparty na modelu relacyjnym. Aby w pełni wykorzystać jego możliwości, warto skonfigurować go odpowiednio do potrzeb. Konfiguracja obejmuje ustawienia na poziomie serwera oraz bazy danych.

a. Plik konfiguracyjny MySQL

Podstawowa konfiguracja MySQL odbywa się w pliku konfiguracyjnym, który może mieć nazwę:

  • my.cnf (na systemach Linux/Unix),
  • my.ini (na systemach Windows).

W pliku tym możemy zmieniać różne parametry, takie jak:

  • Port: Domyślnie MySQL działa na porcie 3306. Można go zmienić, dodając wpis w pliku:
[mysqld]
port=3307
  • Kodowanie znaków: Aby obsługiwać wiele języków, zaleca się ustawienie kodowania na utf8mb4. Możemy to zrobić w pliku konfiguracyjnym:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
  • Maksymalna liczba połączeń: Możemy skonfigurować, ilu użytkowników może jednocześnie łączyć się z bazą danych:
max_connections=200

b. Sprawdzanie konfiguracji MySQL

Po uruchomieniu serwera MySQL, można sprawdzić jego aktualne ustawienia za pomocą komend SQL:

  • Sprawdzenie kodowania znaków:
SHOW VARIABLES LIKE 'character_set%';
  • Sprawdzenie maksymalnej liczby połączeń:
SHOW VARIABLES LIKE 'max_connections';

c. Zmiana kodowania bazy danych

Podczas tworzenia nowej bazy danych, możemy określić jej kodowanie znaków, na przykład:

CREATE DATABASE moja_baza
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Jeśli baza już istnieje, możemy zmienić jej kodowanie za pomocą polecenia:

ALTER DATABASE moja_baza
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

d. Bezpieczeństwo w MySQL

  • Hasło root: Podczas instalacji MySQL zawsze ustawiamy hasło dla użytkownika root, aby zapewnić bezpieczeństwo.
  • Uprawnienia użytkowników: Tworząc nowych użytkowników, można precyzyjnie określić, jakie mają oni uprawnienia do baz danych i tabel. Przykładowo, aby nadać użytkownikowi pełne uprawnienia do bazy danych moja_baza:
GRANT ALL PRIVILEGES ON moja_baza.* TO 'uzytkownik'@'localhost' IDENTIFIED BY 'haslo';