Cel lekcji:
- Zrozumienie, jak dane są przechowywane w systemie plików bazy danych.
- Poznanie struktury plików bazy danych w MySQL.
- Zrozumienie różnic między silnikami baz danych oraz ich wpływu na sposób przechowywania danych.
1. Przedstawienie danych w systemie plików bazy danych
Bazy danych to zorganizowane zbiory danych, które są przechowywane w plikach na dysku. Różne systemy zarządzania bazami danych (DBMS) mają swoje własne metody przechowywania i organizowania tych danych. W przypadku MySQL, dane są przechowywane w sposób, który umożliwia szybkie wyszukiwanie i modyfikację.
a. Struktura plików bazy danych MySQL
W MySQL dane są organizowane w tabelach, a każda tabela jest reprezentowana przez zestaw plików w systemie plików. W zależności od używanego silnika baz danych, pliki mogą mieć różne formaty i rozszerzenia. Oto główne silniki baz danych w MySQL oraz ich sposób przechowywania danych:
- InnoDB
- Pliki:
.ibd
– Plik danych tabeli, jeśliinnodb_file_per_table
jest włączone. Przechowuje zarówno dane, jak i indeksy.ibdata1
– Główny plik systemowy, który przechowuje dane i metadane dla wszystkich tabel w bazie, jeśliinnodb_file_per_table
jest wyłączone.- Zalety:
- Obsługuje transakcje (ACID), co oznacza, że operacje są niezawodne i można je cofać w razie błędów.
- Zapewnia automatyczne blokowanie wierszy, co minimalizuje ryzyko kolizji przy równoczesnych operacjach.
- Umożliwia tworzenie kluczy obcych, co zwiększa integralność danych.
- Przeznaczenie: Idealny dla aplikacji wymagających wysokiej niezawodności, takich jak systemy transakcyjne i e-commerce.
- MyISAM
- Pliki:
.frm
– Plik struktury tabeli, który zawiera definicję tabeli..MYD
– Plik danych, który przechowuje rzeczywiste dane tabeli..MYI
– Plik indeksów, który zawiera informacje o indeksach tabeli.- Zalety:
- Szybki w odczycie, co czyni go odpowiednim dla aplikacji, które nie wymagają skomplikowanego zarządzania danymi.
- Umożliwia łatwe tworzenie pełnotekstowych indeksów.
- Przeznaczenie: Używany głównie w systemach analitycznych, do aplikacji z dominującym odczytem danych.
- Memory
- Opis: Silnik, który przechowuje dane w pamięci RAM, co zapewnia bardzo szybki dostęp do danych.
- Zalety:
- Ekstremalna szybkość operacji odczytu i zapisu, idealna dla tymczasowych danych lub danych wymagających szybkiego przetwarzania.
- Przeznaczenie: Używany do przechowywania tymczasowych danych lub do wyników obliczeń, które nie wymagają stałego zapisu.
- CSV
- Opis: Silnik, który przechowuje dane w formacie CSV (Comma-Separated Values). Dane są zapisywane w formie plików tekstowych, co umożliwia łatwy dostęp i edytowanie.
- Zalety:
- Prosty w obsłudze i łatwy do przenoszenia między różnymi systemami.
- Może być używany do importowania i eksportowania danych w formacie zrozumiałym dla wielu programów.
- Przeznaczenie: Idealny do aplikacji, które wymagają prostego dostępu do danych.
- ARCHIVE
- Opis: Silnik przeznaczony do przechowywania dużych ilości danych, które rzadko są modyfikowane.
- Zalety:
- Niska przestrzeń dyskowa, ponieważ silnik ARCHIVE kompresuje dane, co sprawia, że jest efektywny w przechowywaniu historycznych danych.
- Przeznaczenie: Używany w aplikacjach do logowania lub archiwizacji danych.
- NDB (MySQL Cluster)
- Opis: Silnik przeznaczony dla rozproszonych aplikacji i systemów, które wymagają wysokiej dostępności.
- Zalety:
- Umożliwia replikację i rozproszenie danych w klastrze, co zwiększa dostępność i odporność na awarie.
- Obsługuje transakcje i jest zoptymalizowany pod kątem operacji na wielu wierszach.
- Przeznaczenie: Idealny dla aplikacji wymagających wysokiej dostępności i skalowalności, takich jak aplikacje w czasie rzeczywistym.
b. Zarządzanie danymi w systemie plików
Dane są zorganizowane w tabelach, a każda tabela składa się z wierszy i kolumn. W systemie plików każdy wiersz tabeli jest reprezentowany jako wpis w odpowiednim pliku, a kolumny są przechowywane w odpowiednich formatach. Zarządzanie danymi w systemie plików bazy danych obejmuje kilka kluczowych aspektów:
-
Dostęp do plików: Pliki bazy danych są zarządzane przez DBMS, co oznacza, że użytkownicy nie powinni manipulować nimi bezpośrednio. DBMS odpowiada za operacje odczytu, zapisu i zarządzania strukturą danych, co pozwala na ochronę przed uszkodzeniem danych.
-
Zarządzanie przestrzenią: DBMS optymalizuje przestrzeń dyskową, wykorzystując różne techniki, takie jak kompresja danych, co pozwala na efektywne zarządzanie miejscem na dysku. Oprogramowanie to również monitoruje użycie przestrzeni, aby zapobiec jej wyczerpaniu.
-
Kopie zapasowe i odzyskiwanie danych: W celu ochrony danych i zapewnienia ich integralności, DBMS zazwyczaj oferuje możliwości tworzenia kopii zapasowych. Takie kopie umożliwiają odzyskiwanie danych w przypadku awarii lub błędów. Przykłady mechanizmów tworzenia kopii zapasowych to pełne kopie zapasowe, inkrementalne i różnicowe.
-
Wydajność: Wydajność systemu baz danych jest kluczowym aspektem, który można zoptymalizować poprzez różne strategie, takie jak indeksowanie, odpowiedni dobór silnika baz danych oraz optymalizację zapytań SQL.
-
Bezpieczeństwo: DBMS oferuje różne mechanizmy zabezpieczeń, takie jak kontrola dostępu, szyfrowanie danych i audyty, aby zapewnić, że dane są chronione przed nieautoryzowanym dostępem.
c. basedir oraz datadir:
W MySQL basedir
i datadir
to kluczowe parametry konfiguracyjne, które odnoszą się do ścieżek w systemie plików:
-
basedir
:- Jest to katalog główny instalacji MySQL.
- Zawiera wszystkie pliki instalacyjne MySQL, w tym pliki binarne (wykonywalne), pliki konfiguracyjne, biblioteki, skrypty i pliki do uruchamiania MySQL.
- Parametr
basedir
można ustawić w pliku konfiguracyjnym MySQL (np.my.cnf
lubmy.ini
) lub w zmiennych środowiskowych. - Domyślna lokalizacja może się różnić w zależności od systemu operacyjnego i sposobu instalacji (np.
/usr/local/mysql
na systemach Unix/Linux lubC:Program FilesMySQL
na Windows).
-
datadir
:- Jest to katalog, w którym MySQL przechowuje swoje pliki danych, w tym wszystkie bazy danych i ich struktury tabel.
- Każda baza danych ma tutaj swój własny podkatalog, a tabele są reprezentowane przez odpowiednie pliki, takie jak
.frm
,.ibd
,.MYD
,.MYI
, w zależności od używanego silnika bazy danych. - Parametr
datadir
jest zwykle również konfigurowany w plikumy.cnf
lubmy.ini
. - Domyślna lokalizacja
datadir
również zależy od systemu operacyjnego, np./var/lib/mysql
na Linuxie lub w katalogu głównym instalacji na Windows.
Oba te parametry mogą być dostosowane do specyficznych wymagań, takich jak przeniesienie katalogu danych na oddzielny dysk w celu optymalizacji wydajności lub zwiększenia bezpieczeństwa.