Oferty w Twoim regionie
Włącz powiadomienia na pulpicie
Wróć na początek

Co programista powinien wiedzieć o bazach danych?

Kiedy jeszcze jako student uczęszczałem na zajęcia prowadzone przez dr inż. Wilczka  oraz dr inż. Tuzinkiewicza, byłem przekonany, że bazy danych to obszar, wokół którego będzie rozwijała się moja kariera. Tak się jednak nie stało; zawodowo poszedłem w zupełnie innym kierunku i do niedawna miałem z bazami niewiele wspólnego. Pewnego dnia poczułem jednak, że czas do baz i backendu wrócić.

Kiedy byłem jeszcze pracownikiem MSFT miałem wiele możliwości działania. Kiedy jednak podjąłem decyzję o powrocie do Polski i rozpocząłem rozmowy z innymi firmami,  brak dostatecznego doświadczenia i wiedzy trochę sprawę skomplikował. Pomimo jednak, że na kilku rozmowach nie poszło mi idealnie, znalazłem pracę, w której dziś mam szansę rozwiązywać problemy bazodanowe. Teraz po dwóch latach pracy w tym obszarze chciałbym podsumować, co wg mnie programista o bazach danych powinien wiedzieć.

 Wiedza podstawowa

Poniżej przedstawiam zakres tematów, w których każdy programista, już na początku swojej kariery, powinien się orientować:

  • Jak napisać zapytania select/update/delete z klauzulami WHERE, JOIN, GROUP By, ORDER BY;
  • Jaki wpływ ma dobór klucza głównego na porządek sortowania;
  • Jak działa sortowanie danych oraz od czego zależy porządek sortowania;
  • Jak działa grupowanie i jak można usuwać niepotrzebne, zduplikowane wiersze;
  • Jak działają indeksy, jakie są ich typy, jakie są skutki stosowania indeksów;
  • Co to są ograniczenia (ang. constraints);
  • Co to są procedury składowane;
  • Co to są widoki;
  • Jaka jest różnica pomiędzy truncate i delete;
  • Jakie są rodzaje złączeń (ang. join), czym się od siebie różnią;
  • Jak stosować AND i OR w klauzuli WHERE.

Wiedza średnio-zaawansowana

Na nieco wyższym poziomie wtajemniczenia, programista powinien wiedzieć:

  • Jak analizować plany zapytań;
  • Jak COLLATION  wpływa na sortowanie;
  • Jakie są poziomy i konsekwencje używania izolacji;
  • Jakie typy danych są najodpowiedniejsze jako klucz główny;
  • Do czego służy polecenie SET NO COUNT ON;
  • Jak obsługiwać błędy w procedurach składowanych;
  • Jakie są skutki definiowania widoków z SELECT;
  • Do czego służy polecenie SET XACT_ABORT ON;
  • Gdzie się ustawia timeout dla poleceń (ang. command);
  • Jaka jest kolejność wykonywania klauzul;
  • Jak korzystać z puli połączeń i jak ją dobrać do systemu;
  • Co to jest CROSS JOIN;
  • Jakie są możliwości wyszukiwania po jednej kolumnie i wielu różnych wartościach;
  • Co to są tabele tymczasowe i zmienne tablicowe;
  • Co to jest CTE i jakie ma zastosowanie;
  • Jak zbudować zapytanie, by móc “stronicować” ładowanie danych.

 Wiedza zaawansowana

Aby sprawnie rozwiązywać trudniejsze problemy, programista powinien wiedzieć:

  • Jak korzystać z SQL profilera w diagnostyce;
  • Jak analizować deadlocki: profiler, traceflag;
  • Co się dzieje, kiedy nastąpi timeout (po stronie klienta i serwera).

 To tyle z mojej strony. A Ty jak sądzisz? Jakie umiejętności są niezbędne dobremu programiście w pracy? Zapraszam do dyskusji.

Komentarze

Napisz do nas

Przeglądając stronę wyrażasz zgodę na przetwarzanie swoich danych osobowych pozostawianych w czasie korzystania przez Ciebie z Serwisu oraz innych parametrów zapisywanych w plikach cookies przechowywanych na urządzeniu, z którego korzystasz w celach marketingowych, w tym na profilowanie i w celach analitycznych przez "IT KONTRAKT" spółka z ograniczoną odpowiedzialnością z siedzibą we Wrocławiu, ul. Gwiaździsta 66, 53-413 Wrocław i Zaufanych Partnerów IT KONTRAKT Sp. z o.o.