okladka

Poznaj sekrety jednej z najpopularniejszych baz danych

  • Jak przechowywane są dane?
  • Jak dodawać własne zmienne konfiguracyjne?
  • Jak przebiega proces replikacji?

MySQL to obecnie jedna z najpopularniejszych baz danych. Jedną z jej największych zalet jest nieodpłatny dostęp zarówno do samego systemu, jak i do jego kodu źródłowego. Możliwość przeglądania kodu i -- w razie potrzeby -- samodzielnego modyfikowania go może okazać się przydatna programistom tworzącym aplikacje, które korzystają z MySQL jako zaplecza bazodanowego. Jednak samodzielne "przegryzanie się" przez setki tysięcy linii kodu i rozpracowywanie mechanizmów działania bazy danych może zająć mnóstwo czasu.

Dzięki tej książce poznasz kod źródłowy i sposób działania tego narzędzia. Autor, przez wiele lat pracujący w zespole tworzącym MySQL, przedstawia w niej tajniki systemu. Podczas czytania poznasz architekturę i wzajemne powiązania pomiędzy komponentami MySQL, strukturę kodu źródłowego oraz metody modyfikowania go przez kompilacją. Dowiesz się także, jak przebiega komunikacja pomiędzy klientem i serwerem bazy danych, jak realizowane są zapytania, w jaki sposób składowane są dane i jak implementowane są mechanizmy replikacji.

  • Architektura MySQL
  • Struktura kodu źródłowego
  • Komunikacja pomiędzy klientem i serwerem
  • Zmienne konfiguracyjne
  • Obsługa żądań
  • Parser i optymalizator zapytań
  • Mechanizmy składowania danych
  • Replikacja danych

Dzięki tej książce zrozumiesz budowę bazy danych MySQL i będziesz w stanie samodzielnie dostosować ją do każdego zadania.


Przedmowa (9)
1. Historia i architektura MySQL (15)
  • Historia MySQL (15)
  • Architektura MySQL (17)
2. Praca z kodem źródłowym MySQL (31)
  • Powłoka Uniksa (31)
  • BitKeeper (31)
  • Przygotowywanie systemu do budowania MySQL z drzewa BitKeepera (34)
  • Budowanie MySQL z drzewa BitKeepera (35)
  • Budowanie z dystrybucji źródłowej (37)
  • Instalowanie MySQL w katalogu systemowym (38)
  • Układ katalogów z kodem źródłowym (38)
  • Przygotowywanie systemu do uruchomienia MySQL w debugerze (40)
  • Wycieczka po kodzie źródłowym w towarzystwie debugera (40)
  • Podstawy pracy z gdb (41)
  • Wyszukiwanie definicji w kodzie źródłowym (44)
  • Interesujące punkty wstrzymania i zmienne (45)
  • Modyfikowanie kodu źródłowego (45)
  • Wskazówki dla koderów (47)
  • Aktualizowanie repozytorium BitKeepera (50)
  • Zgłaszanie poprawki (51)
3. Podstawowe klasy, struktury, zmienne i interfejsy API (53)
  • THD (53)
  • NET (58)
  • TABLE (58)
  • Field (58)
  • Narzędziowe wywołania API (65)
  • Makra preprocesora (68)
  • Zmienne globalne (70)
4. Komunikacja między klientem a serwerem (73)
  • Przegląd protokołu (73)
  • Format pakietu (73)
  • Relacje między protokołem MySQL a warstwą systemu operacyjnego (74)
  • Uzgadnianie połączenia (75)
  • Pakiet polecenia (80)
  • Odpowiedzi serwera (83)
5. Zmienne konfiguracyjne (89)
  • Zmienne konfiguracyjne: samouczek (89)
  • Interesujące aspekty konkretnych zmiennych konfiguracyjnych (96)
6. Wątkowa obsługa żądań (115)
  • Wątki kontra procesy (115)
  • Implementacja obsługi żądań (117)
  • Problemy programowania wątkowego (121)
7. Interfejs mechanizmów składowania (127)
  • Klasa handler (127)
  • Dodawanie własnego mechanizmu składowania do MySQL (142)
8. Dostęp współbieżny i blokowanie (163)
  • Menedżer blokad tabel (164)
9. Parser i optymalizator (169)
  • Parser (169)
  • Optymalizator (172)
10. Mechanizmy składowania (195)
  • Wspólne cechy architektury (196)
  • MyISAM (196)
  • InnoDB (202)
  • Memory (Heap) (204)
  • MyISAM Merge (205)
  • NDB (205)
  • Archive (206)
  • Federated (207)
11. Transakcje (209)
  • Implementowanie transakcyjnego mechanizmu składowania (209)
  • Implementowanie podklasy handler (210)
  • Definiowanie handlertona (212)
  • Praca z pamięcią podręczną zapytań (214)
  • Praca z binarnym dziennikiem replikacji (214)
  • Unikanie zakleszczeń (215)
12. Replikacja (217)
  • Przegląd (217)
  • Replikacja oparta na instrukcjach i na wierszach (218)
  • Dwuwątkowy serwer podrzędny (219)
  • Konfiguracja z wieloma serwerami nadrzędnymi (219)
  • Polecenia SQL ułatwiające zrozumienie replikacji (220)
  • Format dziennika binarnego (223)
  • Tworzenie własnego narzędzia do replikacji (227)
Skorowidz (229)