Langbahn Team – Weltmeisterschaft

MySQL

MySQL
Logo MySQL
Logo programu
Ilustracja
Klient MySQL w wierszu poleceń
Autor Oracle
Pierwsze wydanie 23 maja 1995
Aktualna wersja stabilna 9.1.0
(15 października 2024) [±]
Język programowania C++, C[1]
System operacyjny Linux, Windows, Solaris, FreeBSD, MacOS X, HP-UX, AIX, QNX, Netware, SGI, DEC OSF
Rodzaj System zarządzania relacyjną bazą danych
Licencja GPL[2] lub komercyjna
Strona internetowa

MySQL /maɪɛskjuːˈɛl/wolnodostępny, otwartoźródłowy[1] system zarządzania relacyjnymi bazami danych.

MySQL rozwijany jest przez firmę Oracle. Wcześniej przez większość czasu jego tworzeniem zajmowała się szwedzka firma MySQL AB(inne języki). MySQL AB została kupiona 16 stycznia 2008 roku przez Sun Microsystems[3], a ten 27 stycznia 2010 roku przez Oracle[4]. W międzyczasie Monty Widenius (współtwórca MySQL) stworzył MariaDBforka (alternatywną wersję) opartego na licencji GPL. MariaDB jest oparta na tym samym kodzie bazowym co MySQL i dąży do utrzymania kompatybilności z jej poprzednimi wersjami[5].

Najważniejsze cechy MySQL

MySQL był pisany raczej z myślą o szybkości niż kompatybilności ze standardem SQL – przez dłuższy czas MySQL nie obsługiwał nawet transakcji, co było zresztą głównym argumentem przeciwników tego projektu. MySQL obsługuje większą część obecnego standardu ANSI/ISO SQL (tj. SQL:2003). Wprowadza również swoje rozszerzenia i nowe elementy języka[6].

W wersji 5 dodano m.in.:

  • procedury składowane (ang. stored procedures) – obecne od wersji 5.0,
  • wyzwalacze (ang. triggers) – obecne od wersji 5.0.2
  • widoki
  • kursory – obecne od wersji 5.1
  • partycjonowanie tabel – od wersji 5.1
  • harmonogram zadań – od wersji 5.2

co zbliża najnowsze wersje MySQL do PostgreSQL pod względem funkcjonalności.

MySQL zawiera wsparcie dla replikacji bazy danych (w trybie master-slave i master-master[7]) i wielojęzyczności – każda tabela i kolumna może mieć własne ustawienie kodowania znaków.

W wersji 5.6 wprowadzono kilka istotnych zmian poprawiających skalowalność i niezawodność środowiska oraz wprowadzających nowatorskie rozwiązania, np.:

  • semi-synchroniczna replikacja[8]
  • replikacja wielowątkowa
  • rozbudowane możliwości monitorowania przez tzw. PERFORMANCE_SCHEMA
  • interfejs API typu NoSQL z wykorzystaniem memcached[9]

Platformy, dla których dostępny jest MySQL

Serwer MySQL dostępny jest dla wszystkich popularnych platform systemowych i różnorakich architektur procesorów. Jest dostępny także w wersji źródłowej, co umożliwia skompilowanie go dla dowolnej innej platformy.

Oficjalnie oferowane są wersje binarne dla następujących platform i architektur (MySQL 4.1):

Według informacji z dokumentacji serwera, MySQL można skompilować również dla platform: Amiga, BSDI, Digital Unix, NetBSD, OpenBSD, OS/2 Warp, SCO OpenServer, SCO UnixWare, SunOS, Tru64 Unix.

Podobnie jak serwer również biblioteki klienckie MySQL, umożliwiające korzystanie z tego serwera bazodanowego z poziomu aplikacji, dostępne są dla wielu platform i języków programowania – m.in. dla C, C++, Delphi, czy PHP.

Rodzaje obsługiwanych mechanizmów bazodanowych

MySQL oferuje różne typy mechanizmów bazodanowych, z których każdy typ przeznaczony jest do innego zastosowania. Są to między innymi:

  • MyISAM – (aż do wersji 5.5 domyślny) mechanizm, który nie obsługuje transakcji ani nawet kluczy obcych, umożliwia natomiast (w odróżnieniu od pozostałych typów) wyszukiwanie pełnotekstowe.
  • MEMORY (do wersji 4.1 – HEAP) – najszybszy, gdyż wszystko jest przechowywane wyłącznie w pamięci RAM. Ma jednak kilka ograniczeń, między innymi nie przechowuje danych po wyłączeniu serwera MySQL.
  • InnoDB – (od wersji 5.5 domyślny[10]) jeden z najczęściej stosowanych mechanizmów, obsługuje transakcje, zakładanie blokad na poziomie wierszy, klucze obce.
  • BerkeleyDB – obsługuje transakcje, jak dotychczas nie w pełni zintegrowany z MySQL.
  • MERGE – umożliwia łączenie tabel MyISAM.
  • FEDERATED – umożliwia tworzenie rozproszonych baz danych.
  • CSV – przechowuje dane w standardowych plikach CSV.
  • ARCHIVE – (od wersji 4.1) przechowuje dane w spakowanych archiwach. Umożliwia wyłącznie dodawanie i pobieranie rekordów.
  • PBXT[11] – mechanizm opracowany przez firmę zewnętrzną, dostępny jako plugin, zbliżony działaniem do PostgreSQL

Ponadto MySQL umożliwia (od wersji 5) korzystanie z tzw. mechanizmów dostarczanych przez niezależnych producentów, które mogą oferować rozszerzoną w stosunku do domyślnych funkcjonalność lub wydajność[12].

Licencjonowanie

MySQL jest dostępny na licencji GPL, jednakże można nabyć również wersje licencjonowane komercyjnie. Biblioteki klienckie są również dostępne na licencji GPL lub komercyjnej. Istnieje wymóg nabycia licencji komercyjnej jeśli zamierzamy dystrybuować aplikację komercyjną (niezgodną z licencją GPL), wraz ze zintegrowaną bazą MySQL.

Zmiana licencji nastąpiła od wersji 4.1 (i późniejszych) i była jednym z powodów rezygnacji w PHP z domyślnie włączonej obsługi MySQL na rzecz SQLite (oczywiście obsługę MySQL można samemu w PHP włączyć).

Zastosowanie

Wraz z serwerem Apache i parserem PHP zaimplementowanymi na platformie Linux stanowi popularne środowisko serwerowe – LAMP.

Narzędzia administracyjne

Przypisy

  1. a b Oficjalne repozytorium oprogramowania w serwisie GitHub. github.com, 2022-08-12. [dostęp 2022-08-12]. (ang.).
  2. Plik LICENSE w oficjalnym repozytorium oprogramowania. github.com. [dostęp 2022-08-12]. (ang.).
  3. Sun Microsystems Announces Agreement to Acquire MySQL, Developer of the World’s Most Popular Open Source Database [online], web.archive.org, 17 stycznia 2008 [dostęp 2021-05-11] [zarchiwizowane z adresu 2008-01-17].
  4. Oracle Completes Acquisition of Sun. 2010-01-27. [dostęp 2016-02-04]. (ang.).
  5. MariaDB vs MySQL.
  6. MySQL AB: MySQL Extensions to Standard SQL.
  7. Opcje replikacji master. [dostęp 2018-03-16]. (ang.).
  8. Semisynchronous Replication. [dostęp 2011-05-24]. (ang.).
  9. NoSQL Interface. [dostęp 2011-05-24]. (ang.).
  10. The InnoDB Storage Engine. [dostęp 2011-01-26]. (ang.).
  11. PBXT. [dostęp 2011-05-24]. [zarchiwizowane z tego adresu (2013-06-18)]. (ang.).
  12. Overview of MySQL Storage Engine Architecture.

Linki zewnętrzne