| MySQL |
| relacyjny system baz danych |

Logo programu |
| Producent |
Oracle |
| System operacyjny |
Linux, Windows, Solaris, FreeBSD, MacOS X, HP-UX, AIX, QNX, Netware, SGI, DEC OSF |
| Pierwsze wydanie |
23 maja 1995 |
| Aktualna wersja stabilna |
5.5.24 (Community Server) – 7 maja 2012; 18 dni temu |
| Aktualna wersja testowa |
5.6.5 (Community Server) – 10 kwietnia 2012 |
| Licencja |
GPL albo komercyjna |
| www.mysql.com |
MySQL (maɪɛskjuːˈɛl) – wolnodostępny system zarządzania relacyjnymi bazami danych.
MySQL rozwijany jest przez firmę Oracle. Wcześniej przez przeważajaca ilość czasu jego tworzeniem zajmowała się szwedzka firma MySQL AB. MySQL AB była kupiona 16 stycznia 2008 roku przez Sun Microsystems[1], a ten 27 stycznia 2010 roku przez Oracle[2]. W międzyczasie Monty Widenius (współtwórca MySQL) stworzył MariaDB – forka (alternatywną wersję) opartego na licencji GPL. MariaDB jest oparta na tym samym kodzie bazowym co MySQL oraz dąży do utrzymania kompatybilności z jej poprzednimi wersjami[3].
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ą podstawowym argumentem przeciwników tego projektu. MySQL obsługuje większą cząstka obecnego standardu ANSI/ISO SQL (tj. SQL:2003). Wprowadza także swoje rozszerzenia oraz nowe elementy języka[4].
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.1
co zbliża najnowsze wersje MySQL do PostgreSQL pod względem funkcjonalności.
MySQL zawiera wsparcie dla replikacji bazy danych (w trybie master-slave) oraz wielojęzyczności – każda tabela, a nawet każde pole może posiadać własne ustawienie kodowania znaków.
W najnowszej wersji rozwojowej 5.6 wprowadzono parę istotnych zmian poprawiających skalowalność oraz niezawodność środowiska, oraz wprowadzających nowatorskie rozwiązania, np.:
- semi-synchroniczna replikacja[5]
- replikacja wielowątkowa
- rozbudowane możliwości monitorowania przez tzw. PERFORMANCE_SCHEMA
- interfejs API typu NoSQL z wykorzystaniem memcached[6]
Platformy, dla których dostępny jest MySQL
Serwer MySQL dostępny jest dla wszystkich popularnych platform systemowych oraz różnorakich architektur procesorów. Jest dostępny także w wersji źródłowej, co dopuszcza skompilowanie go dla dowolnej innej platformy.
Oficjalnie oferowane są wersje binarne dla następujących platform oraz architektur (MySQL 4.1):
- Linux (x86, S/390, IA64 (Itanium), Alpha, PowerPC, AMD64 / EM64T),
- Windows (x86, x64),
- Solaris (SPARC, x86),
- FreeBSD (x86),
- MacOS X,
- HP-UX (PA-RISC IA64),
- AIX (RS6000),
- i5/OS (IBM System I),
- QNX (x86),
- Novell NetWare (x86),
- SGI,
- DEC OSF.
Wedle informacji z dokumentacji serwera, MySQL da się skompilować także dla platform: Amiga, BSDI, Digital Unix, NetBSD, OpenBSD, OS/2 Warp, SCO OpenServer, SCO UnixWare, SunOS, Tru64 Unix.
Podobnie jak serwer także biblioteki klienckie MySQL, umożliwiające korzystanie z tego serwera bazodanowego z poziomu aplikacji, dostępne są dla wielu platform oraz języków programowania – m.in. dla C, C++, Delphi, czy PHP.
Rodzaje obsługiwanych mechanizmów bazodanowych
MySQL oferuje zróżnicowane typy mechanizmów bazodanowych, z których każdy typ przeznaczony jest do innego zastosowania. Są to pomiędzy innymi:
- MyISAM – (aż do wersji 5.5 domyślny) mechanizm, który nie obsługuje transakcji ani nawet kluczy obcych, dopuszcza natomiast (w odróżnieniu od pozostałych typów) wyszukiwanie pełnotekstowe.
- MEMORY (do wersji 4.1 – HEAP) – najszybszy, albowiem wszystko jest przechowywane jedynie w pamięci RAM. Ma jednak parę ograniczeń, pomiędzy innymi nie przechowuje danych po wyłączeniu serwera MySQL.
- InnoDB – (od wersji 5.5 domyślny[7]) 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 – dopuszcza łączenie tabel MyISAM.
- FEDERATED – dopuszcza wykonywanie rozproszonych baz danych.
- CSV – przechowuje dane w standardowych plikach CSV.
- ARCHIVE – (od wersji 4.1) przechowuje dane w spakowanych archiwach. Umożliwia jedynie dodawanie oraz pobieranie rekordów.
- PBXT[8] – mechanizm opracowany przez firmę zewnętrzną, dostępny jako plugin, zbliżony działaniem do PostgreSQL
Ponadto MySQL dopuszcza (od wersji 5) korzystanie z tzw. mechanizmów dostarczanych przez niezależnych producentów, które potrafią oferować rozszerzoną w stosunku do domyślnych funkcjonalność albo wydajność[9].
Licencjonowanie
MySQL jest dostępny na licencji GPL, jednakże da się nabyć także wersje licencjonowane komercyjnie. Biblioteki klienckie są także dostępne na licencji GPL albo komercyjnej. Istnieje wymóg nabycia licencji komercyjnej jeśli zamierzamy dystrybuować aplikację komercyjną (niezgodną z licencją GPL), wraz z zintegrowaną bazą MySQL.
Przeistoczenie licencji nastąpiła od wersji 4.1 (i późniejszych) oraz 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 da się samemu w PHP włączyć).
Zastosowanie
Wraz z serwerem Apache oraz parserem PHP zaimplementowanymi na platformie Linux stanowi popularne środowisko serwerowe – LAMP.
Narzędzia administracyjne
Sprawdź też
Przypisy
Linki zewnętrzne