Czy te koncepcje SQL są przeznaczone dla początkujących, średnio zaawansowanych lub zaawansowanych programistów? [Zamknięte]


16

Ostatnio uczyłem się SQL i ćwiczę z MySQL / Postgres, a wkrótce z Oracle DB. Szukałem również w Internecie „mapy drogowej” analizy baz danych, ale niestety nie mogłem jej znaleźć.

Chcę zrozumieć, gdzie i dlaczego poszczególne koncepcje baz danych mieszczą się w skali od początkującego do średnio zaawansowanego i zaawansowanego. W większości myślę o relacyjnych bazach danych.

Wyjaśnij, jak układać umiejętności wymienione poniżej w progresji dla Początkującego -> Średnio zaawansowanego -> Zaawansowanego, na jakim poziomie programista powinien je znać:

  • Gdzie klauzule
  • Zaktualizuj składnię
  • Łączy się
  • Zmień i utwórz instrukcje
  • Tabele temperatur
  • Kursory
  • Indeksy
  • Klucz obcy
  • Ograniczenia
  • Transakcje
  • Podzapytania
  • Pivots
  • Funkcje agregujące
  • Profilowy
  • OLAP i OLTP
  • Wyzwalacze
  • Plany wykonania
  • Wskazówki dotyczące wykonania
  • Liczniki wydajności
  • Normalizacja

Odpowiedzi:


20

Powiedziałbym, że istnieją dwa rodzaje rzeczy, które należy wiedzieć w odniesieniu do SQL (tak naprawdę jest w przypadku wielu technologii), są pewne techniczne rzeczy, takie jak złączenia, podzapytania, związki itp., Które rozumiesz lub nie, a potem są rzeczy jak projektowanie baz danych i modelowanie danych z gradientem umiejętności, jak sztuka. Z czasem stajesz się lepszy dzięki tym bardziej miękkim rzeczom, ale nigdy ich nie „znasz”, ponieważ nie ma z nimi „tak działają”.

To powiedziawszy, oto ogólny układ, z którym bym poszedł i jestem absolutnie otwarty na komentarze / przemyślenia od innych, w których mogę się mylić.

Początkujący

  • Gdzie klauzule (pomiędzy, itp.)
  • Zaktualizuj składnię
  • Zrozumienie i użycie połączenia wewnętrznego i lewego i prawego
  • Składnia do zmiany i tworzenia struktur
  • Tabele temperatur i ich użycie
  • Kursory
  • Podstawowa koncepcja, do czego służą indeksy, ale nie sposób ich działania
  • Zrozumienie, do czego służą klucze obce i jak je obejść (usuwanie kaskadowe itp.)
  • Rozumie podstawy transakcji
  • Rozumie ograniczenia

Pośredni

  • Jak działają indeksy, różnica między klastrami, nieklastrami itp., Czym jest strona i jak się układają
  • Zrozumienie podkwerend i umiejętne przemyślenie ich zastosowania w złączeniach i obszarach
  • Pivots
  • Potrafi przemyśleć dołączenie do stołu w razie potrzeby
  • Potrafi generować złożone raporty danych za pomocą grup bajtów z funkcjami agregującymi
  • Potrafi wykonać podstawowe profilowanie tylko w funkcji monitorowania / debugowania, np. Czytając dziennik
  • Rozumie różnicę między OLAP a OLTP i kiedy / gdzie używać struktur OLAP
  • Wie, jak korzystać z wyzwalaczy i jak ich nie używać
  • Rozumie transakcje i może warstwować je, obsługując awarie w górę stosu

zaawansowane

  • Potrafi przeczytać plan wykonania i zrozumieć, w jaki sposób wpływają na to różne części zapytania
  • Potrafi dostroić zapytania z podpowiedziami wykonania bez pogarszania wydajności (wskazówki dotyczące równoległości, wskazówki dotyczące indeksu, wskazówki dotyczące pętli itp.)
  • Potrafi profilować i wykorzystywać ślady do identyfikacji i zrozumienia statystyk wykonań pod obciążeniem w świecie rzeczywistym
  • Zna struktury danych na dysku
  • Potrafi korzystać z liczników wydajności i rozumieć, jakie obciążenie i zachowanie bazy danych ma ich monitorowanie
  • Wie, jak zaprojektować kostkę OLAP i przeprowadzić zaawansowane wyszukiwanie danych za jej pomocą
  • Wie, jak używać wyzwalaczy i jak używać ich bezpiecznie, przy minimalnym ryzyku
  • Wie, jak korzystać z transakcji rozproszonych, nawet z warstwami

To wszystko, co mogłem wymyślić z czubka głowy. Proszę zostawić komentarze wspominające o innych, za którymi tęskniłem lub jeśli umieszczę coś w złym miejscu. Nie jestem wystarczająco zaawansowany, aby znać ogromną listę zaawansowanych technik, aby odłożyć heh


Interesujące jest to, że możemy zobaczyć nasze dwie listy obok siebie
— Chris Pitman,

11

Oto skala, której używam podczas rozmowy z kandydatami. To oczywiście moja osobista opinia, skale mogą się łatwo różnić:

Po pierwsze, szukam umiejętności obsługi baz danych, a nie „SQL”.

Początkujący:

  • Zna podstawową składnię SQL
  • Może wybierać i filtrować dane w wielu tabelach
  • Rozumie połączenia wewnętrzne / zewnętrzne / krzyżowe
  • Niejasne rozumienie normalizacji, indeksowania, transakcji, blokowania

Pośredni:

  • Rozumie różnice między stylami proceduralnymi a deklaratywnymi dla SQL
  • Doświadczenie z co najmniej jednym rozszerzeniem SQL DBs (PSQL, TSQL itp.)
  • Rozumie i może zaprojektować bazę danych w trzeciej normalnej formie
  • Rozumie i może implementować indeksowanie
  • Rozumie transakcje i może ich używać w jednej bazie danych
  • Wie, kiedy i jak analizować plan wykonania

Zaawansowane:

  • Rozumie, kiedy i jak denormalizować bazę danych
  • Rozumie, jak skonfigurować transakcje rozproszone w bazie danych i systemach zintegrowanych
  • Może ustawić bazę danych dla wysokiej dostępności, odzyskiwania danych itp
  • Głębokie niezrozumienie wewnętrznego działania każdego silnika DB (co najmniej dwa)
  • Dodatkowe punkty za znaczące narażenie na magazynowanie danych i raportowanie
  • Dodatkowe punkty za znaczącą ekspozycję na warianty NoSQL oraz racjonalny zestaw kryteriów określający, kiedy użyć czego

Zabawne, twoja lista jest bardzo podobna do mojej; chociaż podniosłem plany wykonania o jeden krok wyżej, w zasadzie mamy to samo. Prawie przełożyłem trzecią normalną formę na pośrednią, ale naprawdę myślę, że modelowania danych nie można przypisać początkującym / średnio zaawansowanym / zaawansowanym, to po prostu zbyt duży talent artystyczny, który jest tak szary. Umiejętność wykonania 3. normalności jest umiejętnością, wiedząc, kiedy jest sztuką. Jak to jest jednak istotne i prawie umieściłem go również w półprodukcie dla tego heh
— Jimmy Hoffa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.