encyklopedia.run.place

MySQL

MySQL – otwarto‑źródłowy system zarządzania relacyjnymi bazami danych (ang. relational database management system, RDBMS), oparty na języku strukturalnym SQL. Jest jednym z najpopularniejszych systemów tego typu, wykorzystywanym zarówno w małych aplikacjach internetowych, jak i w dużych rozwiązaniach korporacyjnych.

Historia

Projekt MySQL rozpoczął się w 1995 roku w Szwecji. Jego pierwotni twórcą był Michael Widenius, znany również pod pseudonimem „Monty”. W pierwszej wersji, nazwanej MySQL 1.0, system obsługiwał podstawowe operacje w języku SQL i był wydany na licencji open source.

W 2000 roku powstała firma MySQL AB, która kontynuowała rozwój projektu. W 2008 roku technologia została przejęta przez Sun Microsystems, a po przejęciu Sun przez Oracle Corporation w 2010 roku, MySQL stał się częścią portfolio Oracle.

W wyniku niepokoju społeczności open source po przejęciu przez Oracle, w 2009 roku został wydany fork MySQL pod nazwą MariaDB, prowadzony przez pierwotnych twórców systemu.

Architektura

MySQL jest systemem klient‑serwer, w którym komponent serwerowy (demon mysqld) obsługuje zapytania, a aplikacje klienckie łączą się z nim przy użyciu protokołu sieciowego. Kluczowe elementy architektury to:

  • Silnik przechowywania danych – MySQL obsługuje wiele silników, m.in. InnoDB (domyślny, wspierający transakcje i klucze obce) oraz MyISAM (starszy, szybki w odczycie).
  • Parser i optymalizator zapytań – przetwarza składnię SQL i generuje optymalny plan wykonania.
  • Replikacja – umożliwia synchronizację danych pomiędzy serwerem głównym a wieloma serwerami podrzędnymi (master‑slave, później master‑master).
  • Mechanizmy bezpieczeństwa – uwierzytelnianie użytkowników, kontrola dostępu, szyfrowanie połączeń (TLS/SSL).

Wersje i wydania

MySQL występuje w kilku wariantach:

  • MySQL Community Edition – darmowa wersja open source, aktualizowana regularnie z nowymi funkcjami i poprawnieniami błędów.
  • MySQL Enterprise Edition – płatna edycja oferująca dodatkowe narzędzia (np. MySQL Cluster, monitorowanie wydajności, wsparcie techniczne).
  • MySQL Cluster – wersja przeznaczona do środowisk o wysokiej dostępności i skalowalności, bazująca na architekturze rozproszonej.

Do najważniejszych wersji należą:

  • MySQL 5.0 (wydany w 2005 roku) – wprowadził obsługę procedur składowanych i wyzwalaczy.
  • MySQL 5.5 (wydany w 2010 roku) – migracja domyślnego silnika na InnoDB.
  • MySQL 5.7 (wydany w 2015 roku) – poprawa wydajności i wbudowane narzędzia diagnostyczne.
  • MySQL 8.0 (wydany w 2018 roku) – pełne wsparcie dla okienek analitycznych, trybu CTE, ulepszony silnik JSON, oraz lepsza obsługa Unicode.

Porównanie z innymi systemami

W ekosystemie baz danych MySQL konkurował i nadal konkuruje z takimi systemami jak PostgreSQL, Microsoft SQL Server, Oracle Database oraz MariaDB. Główne różnice obejmują:

Kryterium MySQL PostgreSQL Oracle Database
Licencja GPL (Community) / komercyjna (Enterprise) PostgreSQL License (BSD‑like) Proprietarna (licencja komercyjna)
Wsparcie transakcji InnoDB – pełne ACID Pełne ACID Pełne ACID
Rozszerzalność Wtyczki silników, ograniczona Rozbudowane typy danych, proceduralny język PL/pgSQL Rozbudowane opcje, PL/SQL
Skalowalność pozioma Replikacja, Galera Cluster Logical replication, sharding RAC, Data Guard

Zastosowania

MySQL jest wykorzystywany w bardzo wielu scenariuszach:

  • Strony internetowe i aplikacje webowe – np. popularne platformy WordPress, Joomla i Drupal bazują na MySQL.
  • Systemy e‑commerce – rozwiązania takie jak Magento czy Shopify (w wersji open‑source).
  • Analiza danych – dzięki integracji z narzędziami Hadoop i Spark (np. poprzez konektor mysql-connector-java).
  • Aplikacje mobilne – backendy opierające się na MySQL zapewniają szybki dostęp do danych.
  • Rozwiązania chmurowe – większość dostawców chmury (np. AWS, Azure, GCP) oferuje zarządzane usługi oparte na MySQL.

Instalacja i środowiska

MySQL jest dostępny na większość systemów operacyjnych, w tym Linux, Windows, macOS oraz platformy Docker. Instalacja może przebiegać przy pomocy menedżerów pakietów (np. apt, yum) lub poprzez gotowe obrazy kontenerowe.

Przykładowe polecenia

-- Połączenie z serwerem
mysql -u użytkownik -p

-- Tworzenie bazy
CREATE DATABASE sklep;

-- Tworzenie tabeli
CREATE TABLE produkty (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nazwa VARCHAR(100) NOT NULL,
    cena DECIMAL(10,2) NOT NULL,
    ilosc INT DEFAULT 0
);

-- Wstawianie danych
INSERT INTO produkty (nazwa, cena, ilosc) VALUES
('Laptop', 3499.99, 15),
('Myszka', 79.90, 150);

-- Zapytanie SELECT
SELECT * FROM produkty WHERE cena > 1000;

    

Bezpieczeństwo

Kluczowe praktyki dotyczące bezpieczeństwa MySQL obejmują:

  • Używanie silnych haseł i mechanizmu authentication plugins.
  • Ograniczanie dostępu sieciowego (firewall, bind‑address).
  • Stosowanie szyfrowania połączeń TLS/SSL.
  • Regularne aktualizacje serwera i backupy (np. przy pomocy mysqldump).

Patenty i licencjonowanie

MySQL Community Edition jest rozpowszechniany na licencji GPL v2. Wersje komercyjne podlegają licencjom zamkniętym firmy Oracle. Ze względu na obecność pewnych elementów chronionych patentami (np. algorytmy optymalizacji), niektóre organizacje decydują się na alternatywy takie jak MariaDB czy PostgreSQL.

Patrzenie w przyszłość

Od wersji 8.0 rozwój systemu koncentruje się na:

  • Lepszej integracji z JSON i NoSQL (np. dokumentowy silnik MySQL Document Store).
  • Usprawnieniach związanych z InnoDB – szybsze indeksowanie i redukcja zużycia pamięci.
  • Wsparciu dla nowoczesnych protokołów (“X Protocol”) umożliwiającego komunikację z językami takimi jak Python, Go, Rust.
  • Rozbudowie funkcji analitycznych – CTE, okienka, podzapytania rekurencyjne.

Linki pokrewne

Więcej informacji znajdziesz w następujących artykułach encyklopedycznych: