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
Daniel
źródło

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

Jimmy Hoffa
źródło
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
Chris Pitman
źródło
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