Wpis z mikrobloga

Jeżeli na rozmowie rekrutacyjnej na Junior Java Developera padłoby pytanie o indeksy w bazach danych, czym są, jakie są ich rodzaje, na jakich kolumnach najlepiej ich używać to mogę powiedzieć, że:

Indeks jest to struktura danych na dysku umożliwiająca szybkie wyszukiwanie danych w bazie danych na podstawie wartości klucza wyszukiwania takiego jak np. nazwisko osoby. Z technicznego punktu widzenia (i mocno uogólniając) indeksy to zbiór wartości typu „klucz – lokalizacja”. Można je zakładać np. na kolumny najczęściej padające po słowie WHERE.

A jakie są ich rodzaje? Mam z tym problem, bo z tego co widzę w google to jest ich bardzo dużo, albo ja coś źle patrzę.

#bazydanych #sql #programowanie #naukaprogramowania
  • 11
Te "na dysku" to sobie daruj, bo cała baza może być w pamięci i tylko kopiowana na dysk.

Daruj sobie także stwierdzenie "klucz - lokalizacja", bo to tylko dotyczy tablic, albo hashmap/słowników bez kolizyjnych.

"Struktury danych" polecam doczytać. W szczególności struktury drzewiaste i partycjonowanie przestrzeni.

Koncepcyjnie Indeks to taka dodatkowa struktura opisująca dane źródłowe (rekordy bazy danych) w taki sposób, by odczyty, wyszukiwanie danych były szybsze.
@VirtualSlimShady: w sumie ciekawe, bo na niektórych rozmowach na juniora przy pracy z danymi nawet nie ma takiego pytania. Pewnie jak zwykle na rozmowie pytania z dupy, które nigdy nie będą miały miejsca w rzeczywistej pracy.
@WhitePill4All:

Daruj sobie także stwierdzenie "klucz - lokalizacja", bo to tylko dotyczy tablic, albo hashmap/słowników bez kolizyjnych.

Tutaj coś takiego przeczytałem i też widzę, że w tej dokumentacji MariaDB, do której link podał kolega po Tobie tak to wygląda.

@cohontes: nom. Takimi rzeczami w firmie chyba zajmuje się ktoś innych niż Junior programista? Kolega @stanleymorison miał takie pytania na swoich dwóch rozmowach rekrutacyjnych, więc wolę dowiedzieć się czegoś na ten
@VirtualSlimShady: Z darmowych źródeł polecam ten filmik na YouTube: Praktycznie o indeksach z Damianem Wilderą. Całkiem fajnie i prosto wyjaśnione (oczywiście na dość ogólnym poziomie), czym są indeksy, jakie są ich rodzaje oraz jak one właściwie działają.

Skoro przygotowujesz się do rozmowy rekrutacyjnej z języka Java, to zapraszamy również na naszą stronę - https://rekrutacjajava.pl/. W darmowej części strony znajdziesz m.in. sporą listę pytań rekrutacyjnych z realnych rozmów. W płatnej
No ten przykład tam, jest najprostszy, słownikowy "słownik" i się sprawdzi dla LastName = 'Kowalski'. Albo PK do FK z integerami.
Ale indeksy są, potrafią być dużo bardziej rozbudowane. np. Full Text Search i wielowymiarowe partycjonowanie przestrzeni to dyscypliny same w sobie.
Ale jak chcesz, na początek, to trzymaj się tego co napisałeś, tylko dodawaj przed tym stwierdzenie "w najprostszym przypadku" i pamiętaj, że ta struktura spod linku jest posortowana pod szybkie
@ly000: No faktycznie olaboga, zapytają początkującego programistę o to czy wie co to są indeksy w bazach danych (zapewne relacyjnych) i do czego służą. Na stos z nimi, kto to widział juniora o indeksy pytać, przecież indeksami powinni zajmować się seniorzy :D

I bardzo dobrze że o takie rzeczy pytają a nie o jakieś wydumane algorytmy czy wyrecytowanie z pamięci definicji wzorca Visitor albo SOLID. Praktyczna znajomość działania baz danych to
@markaron: zapisałem sobie coś takiego jeśli chodzi o rodzaje indeksów:
Indeks podstawowy (primary index) – założony na atrybucie porządkującym unikalnym.
Indeks zgrupowany (clustering index) – założony na atrybucie porządkującym nieunikalnym.
Indeks wtórny (secondary index) – założony na atrybucie nieporządkującym.
Atrybut porządkujący określa porządek rekordów w pliku.

+ to co w pierwszym poście. Wystarczy?