O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

SQL. Sztuka programowania

Book Description

SQL. Sztuka programowania to praktyczny podręcznik, dzięki któremu szybko poszerzysz swą wiedzę w zakresie efektywnego stosowania języka SQL.

Table of Contents

  1. SQL. Sztuka programowania
  2. Dedykacja
  3. Wstęp
    1. Po co kolejna książka o SQL-u?
    2. Odbiorcy
    3. Założenia przyjęte w tej książce
    4. Zawartość książki
    5. Konwencje zastosowane w książce
    6. Podziękowania
  4. 1. Plany strategiczne: Projektowanie baz danych pod kątem wydajności
    1. Relacyjny model danych
    2. Znaczenie normalności
      1. Etap 1. Zapewnienie atomowości
      2. Etap 2. Sprawdzanie zależności od klucza głównego
      3. Etap 3. Sprawdzenie niezależności atrybutów
    3. Być albo nie być. Albo być NULL
    4. Kolumny o wartościach boolowskich
    5. Rozumienie podtypów
    6. Stwierdzanie oczywistości
    7. Zagrożenia wynikające z nadmiaru elastyczności
    8. Problemy z danymi historycznymi
    9. Projektowanie z myślą o wydajności
    10. Przepływ przetwarzania
    11. Centralizacja danych
    12. Komplikacja systemu
    13. Plany są gotowe
  5. 2. Prowadzenie wojny: Wydajne wykorzystanie baz danych
    1. Identyfikacja zapytań
    2. Trwałe połączenia do bazy danych
    3. Strategia przed taktyką
    4. Najpierw definicja problemu, potem jego rozwiązanie
    5. Stabilny schemat bazy danych
    6. Operacje na rzeczywistych danych
    7. Przetwarzanie zbiorów w SQL-u
    8. Pracowite zapytania SQL
    9. Maksymalne wykorzystanie dostępu do bazy danych
    10. Zbliżenie do jądra systemu DBMS
    11. Robić tylko to, co niezbędne
    12. Instrukcje SQL-a odwzorowują logikę biznesową
    13. Programowanie logiki w zapytaniach
    14. Jednoczesne wielokrotne modyfikacje
    15. Ostrożne wykorzystanie funkcji użytkownika
    16. Oszczędny SQL
    17. Ofensywne kodowanie w SQL-u
    18. Świadome użycie wyjątków
  6. 3. Działania taktyczne: Indeksowanie
    1. Identyfikacja „punktów wejścia”
    2. Indeksy i listy zawartości
    3. Co zrobić, by indeksy rzeczywiście działały
    4. Indeksy wykorzystujące funkcje i konwersje
    5. Indeksy i klucze obce
    6. Wielokrotne indeksowanie tej samej kolumny
    7. Klucze generowane automatycznie
    8. Niejednolitość dostępu do indeksów
  7. 4. Manewrowanie: Projektowanie zapytań SQL
    1. Natura SQL-a
      1. SQL i bazy danych
      2. SQL i optymalizator
      3. Ograniczenia optymalizatora
    2. Pięć czynników wpływających na skuteczność SQL-a
      1. Całkowita ilość danych
      2. Kryteria definiujące zbiór wynikowy
      3. Rozmiar zbioru wynikowego
      4. Liczba tabel
        1. Złączenia
        2. Skomplikowane zapytania i skomplikowane perspektywy
      5. Liczba równoległych użytkowników
    3. Filtrowanie
      1. Znaczenie warunków filtrujących
      2. Wyliczanie warunków filtrowania
        1. Nabywcy Batmobili
        2. Więcej zakupów Batmobili
        3. Wnioski z handlu Batmobilami
      3. Wydobywanie dużych porcji danych
      4. Proporcje odczytywanych danych
  8. 5. Ukształtowanie terenu: Zrozumienie implementacji fizycznej
    1. Typy struktur
    2. Sprzeczne cele
    3. Rozważanie danych jako repozytoriów danych
    4. Wymuszanie kolejności wierszy
    5. Automatyczne grupowanie danych
      1. Partycjonowanie cykliczne
      2. Partycjonowanie w oparciu o dane
    6. Obosieczny miecz partycjonowania
    7. Partycjonowanie i dystrybucja danych
    8. Najlepszy sposób partycjonowania danych
    9. Wstępne złączenia tabel
    10. Piękno prostoty
  9. 6. Dziewięć zmiennych: Rozpoznawanie klasycznych wzorców SQL
    1. Niewielki zbiór wynikowy, niewielka liczba tabel źródłowych, precyzyjne, bezpośrednie kryteria
      1. Użyteczność indeksów
      2. Wydajność zapytania i użycie indeksów
      3. Rozproszenie danych
      4. Kryteria indeksowania
    2. Niewielki zbiór wynikowy, pośrednie kryteria
    3. Niewielki zbiór wynikowy, część wspólna ogólnych kryteriów
    4. Niewielki zbiór wynikowy, pośrednie, uogólnione kryteria
    5. Wielki zbiór wynikowy
    6. Złączenia tabeli samej ze sobą
    7. Zbiór wynikowy uzyskany w oparciu o funkcje agregujące
    8. Wyszukiwanie z zakresu dat
      1. Wiele elementów, niewiele danych historycznych
        1. Użycie podzapytań
        2. Użycie funkcji OLAP
      2. Duża ilość wartości historycznych na każdy element
      3. Wartości bieżące
    9. Zbiór wynikowy uzyskany w oparciu o brak zdefiniowanych danych
  10. 7. Odmiany taktyki: Obsługa danych strategicznych
    1. Struktury drzewiaste
      1. Struktury drzewiaste a związki typu ogół-szczegół
      2. Praktyczne przykłady hierarchii
    2. Reprezentowanie drzew w bazach danych SQL
    3. Praktyczne implementacje drzew
      1. Model sąsiedztwa
      2. Model zmaterializowanej ścieżki
      3. Model zagnieżdżonych zbiorów (według Celko)
    4. Przeszukiwanie drzewa z użyciem SQL-a
      1. Przeszukiwanie zstępujące: zapytanie Vandamme’a
        1. Model sąsiedztwa
        2. Model zmaterializowanej ścieżki
        3. Model zagnieżdżonych zbiorów
        4. Porównanie wydajności zapytania Vandamme’a z zastosowaniem różnych modeli
      2. Przeszukiwanie wstępujące: zapytanie górali
        1. Model sąsiedztwa
        2. Model zmaterializowanej ścieżki
        3. Model zagnieżdżonych zbiorów
        4. Porównanie wydajności działania zapytania o górali dla różnych modeli
    5. Agregacja wartości z drzewa
      1. Agregacja wartości zapisanych w liściach
        1. Modelowanie liczebności
        2. Obliczanie liczebności na wszystkich poziomach
      2. Propagacja obliczeń procentowych pomiędzy poziomami
  11. 8. Strategiczna siła wojskowa: Rozpoznawanie trudnych sytuacji i postępowanie w nich
    1. Zwodnicze kryteria
    2. Warstwy abstrakcji
    3. Systemy rozproszone
    4. Dynamicznie definiowane kryteria wyszukiwania
      1. Projekt prostej bazy filmów i zapytanie główne
      2. Odpowiednie rozmiary zapytań
      3. Opakowanie SQL-a w PHP
  12. 9. Walka na wielu frontach: Wykorzystanie współbieżności
    1. Silnik bazy danych jako dostawca usług
      1. Zalety stosowania indeksów
      2. Życiowa historia
      3. Do kolejki
    2. Równoległe modyfikacje danych
      1. Blokady
        1. Szczegółowość systemu blokad
        2. Korzystanie z blokad
        3. Blokady i operacje COMMIT
        4. Blokady a skalowalność
      2. Konkurowanie o zasoby
        1. Wstawianie danych a konkurowanie o zasoby
        2. Rozwiązania na poziomie administracji
        3. Rozwiązania na poziomie architektury
        4. Rozwiązania na poziomie oprogramowania
        5. Efekty
  13. 10. Gromadzenie sił: Obsługa dużych ilości danych
    1. Zwiększanie się ilości danych
      1. Wpływ zwiększania rozmiarów danych na wydajność działań
        1. Brak podatności na skutki zwiększenia danych
        2. Liniowa podatność na skutki zwiększenia danych
        3. Nieliniowa podatność na skutki zwiększenia danych
        4. Wszystko naraz
        5. Rozwijanie podzapytań
      2. Zbawienne partycjonowanie
      3. Czyszczenie danych
    2. Hurtownie danych
      1. Fakty i wymiary: schemat gwieździsty
      2. Narzędzia do wydobywania danych
      3. Wydobywanie, transformacja i ładowanie
        1. Wydobywanie danych
        2. Transformacja
        3. Ładowanie
        4. Więzy integralności i indeksy
      4. Zapytania na wymiarach i faktach: raporty typu ad hoc
        1. Transformacja gwieździsta
        2. Emulowanie transformacji gwieździstej
        3. Wykonywanie zapytań na schemacie gwieździstym w sposób, do jakiego nie został on przewidziany
      5. Kilka słów przestrogi
  14. 11. Fortele: Jak uratować czasy reakcji
    1. Przewracanie danych
      1. Wiersze, które powinny być kolumnami
      2. Kolumny, które powinny być wierszami
        1. Tworzenie tabeli przestawnej
        2. Rozmnażanie wierszy z użyciem tabeli przestawnej
        3. Wykorzystanie wartości z tabeli przestawnej
        4. Operacje odwrócenia i przywrócenia
      3. Pojedyncze kolumny, które powinny być czymś innym
        1. Normalizacja „w locie”
        2. Rozwiązanie tajemnicy z rozdziału 7.: rozwinięcie ścieżki
    2. Zapytania ze zmienną listą parametrów
    3. Agregacja wielozakresowa
    4. Przesłanianie przypadku ogólnego
    5. Wybieranie wierszy dopasowanych do kilku kryteriów z listy
    6. Znajdowanie najlepszego dopasowania
    7. Dyrektywy optymalizatora
  15. 12. Zatrudnianie szpiegów: Monitorowanie wydajności
    1. Baza danych działa za wolno
    2. Składowe obciążenia serwera
    3. Definicja dobrej wydajności
      1. Ile nakładów zostało poświęconych zadaniu
      2. Jakie korzyści wynikają z poświęconych nakładów
      3. Czy zwrot z inwestycji odpowiada założonym standardom
      4. Definiowanie wydajności docelowej
    4. Zadania biznesowe
    5. Plany wykonawcze
      1. Identyfikacja najwydajniejszego planu wykonawczego
        1. Nasi kandydaci
        2. Pole bitwy
        3. A zwycięzcą jest...
      2. Wymuszanie odpowiedniego planu wykonawczego
        1. Uparte zapytanie
        2. Analiza kryteriów wyszukiwania
        3. Morał z tej historii
    6. Właściwe wykorzystanie planów wykonawczych
      1. W jaki sposób nie wykonywać zapytań
      2. Ukryta komplikacja
    7. Co ma rzeczywiste znaczenie?
  16. A. Ilustracje
  17. B. O autorach
  18. Indeks
  19. Copyright