Ukratko o meni
Ja sam Damir Matić, student prve godine Visoke škole elektrotehnike i računarstva, na smeru Nove računarske tehnologije. Zanimaju me programiranje i baze podataka. U slobodno vreme sviram gitaru i treniram kendo.

Teme iz oblasti informacionih tehnologija koje su me najviše zainteresovale
Baze podataka me interesuju zbog njihovog uticaja na svakodnevni život. Često se zapitam kako se nekada odvijalo poslovanje bez baza podataka, kada su se podaci čuvali isključivo na papiru. Koliko je tada bilo potrebno vremena za pronalaženje određene informacije i koliki je ljudski napor bio uložen u taj proces. Upravo zbog toga fasciniran sam mogućnostima baza podataka da u veoma kratkom vremenu obrade velike količine podataka.
Baze podataka
Sadržaj
- Uvod
- Relacioni model
- Ključ-vrednost (key-value) model
- Dokument-orijentisani model
- Graf model
- Ostali modeli
- Zaključak
Uvod
Baza podataka je organizovan skup podataka. Podaci se mogu organizovati na različite načine, tj. postoje različiti modeli baza podataka. U ovom radu fokus je na savremenim modelima baza podataka koji su i danas u upotrebi. U daljem tekstu biće predstavljene karakteristike i primena različitih modela baza podataka.
Relacioni model
Predstavljen još davne 1970. godine od strane američkog naučnika Edgar Codd-a, ovaj model je zadržao popularnost do današnjeg vremena, pa je trenutno najpoznatiji i najčešće korišćeni model baze podataka.
U relacionom modelu objekti iz stvarnog sveta su predstavljeni u obliku relacija (tabela). Tabela se sastoji od kolona i redova. Kolone predstavljaju atribute objekata iz stvarnog sveta. Redovi tabele predstavljaju skup povezanih podataka koji se nalaze u različitim kolonama (zapis podataka). U terminologiji relacionog modela redovi tabele se nazivaju n-torke (engl. tuples).

Slika 1. Tabela (relacija)
Baza podataka se sastoji od jedne ili više relacija (tabela) i opisuje se šemom baze podataka. Svaka tabela (relacija) mora imati jedinstveni naziv. Takođe, unutar jedne tabele sve kolone moraju imati jedinstvene nazive. Svaka kolona ima određeni tip podataka, tako da sva polja unutar jedne kolone moraju sadržati vrednosti istog tipa. Tabele (relacije) mogu biti međusobno povezane preko ključeva. Postoje dve vrste ključeva: primarni i strani. Primarni ključ služi da jedinstveno identifikuje svaki red u tabeli. Može se sastojati od jedinstvenih vrednosti na nivou jedne kolone ili predstavljati jedinstvenu kombinaciju vrednosti iz više kolona (kompozitni ključ). Strani ključ je atribut (kolona) u jednoj tabeli koji kao vrednosti može imati samo trenutne vrednosti primarnog ključa iz druge tabele. Na ovaj način se uvodi ograničenje poznato kao referencijalni integritet koje služi za zaštitu od pogrešnog unosa podataka.

Slika 2. Šema baze podataka
Relacioni model uključuje i relacionu algrebru koja je bila osnova za upitni jezik SQL (Structured Query Language), koji danas predstavlja standard za rad sa relacionim bazama podataka. Relaciona algebra opisuje sledeće operacije:
- Selekcija izdvaja n-torke (redove) koje ispunjavaju određeni uslov i kao rezultat vraća novu relaciju sa istom strukturom kao i polazna relacija (vraća podskup n-torki).
- Projekcija kao rezultat vraća relaciju koja sadrži samo određene atribute polazne relacije (izdvaja kolone iz tabele).
- Unija omogućava formiranje nove relacije spajanjem svih n-torki iz dve relacije. Moguća je samo kada obe relacije imaju isti broj atributa i kada se atributi podudaraju po tipu podataka.
- Razlika dve relacije je nova relacija koja sadrži sve n-torke koje se nalaze u prvoj relaciji, ali se ne pojavljuju u drugoj relaciji.
- Presek dve relacije je nova relacija koja sadrži samo one n-torke koje su zajedničke za obe relacije.
- Dekartov proizvod dve relacije je nova relacija koja obuhvata sve moguće kombinacije parova n-torki iz obe relacije.
- Spajanje kombinuje podatke iz dve relacije na osnovu zajedničkih atributa ili uslova. Rezultat operacije spajanja je nova relacija koja sadrži kombinovane n-torke dobijene iz polaznih relacija.

Slika 3. Operacije relacione algebre
Primena relacionih baza podataka je u sistemima gde podaci imaju jasno definisanu strukturu i međusobne odnose.
Primeri relacionih baza podataka: Oracle, MS SQL Server, PostgreSQL, MySQL
Ključ-vrednost (key-value) model
U key-value modelu podaci se čuvaju u obliku parova ključ-vrednost. Ključ predstavlja jedinstveni identifikator pomoću kojeg se pristupa zapisu (vrednosti) i obično je prostog tipa podataka (npr. string ili broj) jer mora biti jedinstven i mora biti pogodan za brzo poređenje. Struktura zapisa (vrednosti) nije unapred definisana kao kod relacionog modela, već zavisi od aplikacije koja upisuje podatke i može se razlikovati za svaki ključ. Vrednost može biti složenog tipa (liste, skupovi, binarni podaci…)

Slika 4. Struktura podataka u key–value bazi
Navedene osobine key-value modela omogućavaju brz upis podataka i brzu pretragu po ključu, kao i fleksibilnost u pogledu strukture podataka. Mogućnosti upita su ograničene, tj. nema složenih upita jer se podacima pristupa samo preko ključa (GET/SET komande).
Baze sa key-value modelom se koriste kada je potrebna velika brzina upisa i čitanja podataka, često se cela baza učita u radnu memoriju radi boljih performansi. Pogodne su za čuvanje privremenih podataka (korisničke sesije, keširani podaci).
Primeri baza sa key-value modelom: Redis i Memcached.
Dokument-orijentisani model
U dokument-orijentisanom modelu podaci se čuvaju kao dokumenti sa poljima i vrednostima (najčešće u formatu JSON ili XML). Za razliku od ranije pomenutog key-value modela, baza razume strukturu dokumenta i moguće je pretraživanje po poljima i pisanje složenijih upita. Dokumenti se mogu organizovati u kolekcije, ali ne moraju svi dokumenti u kolekciji da imaju istu strukturu (dokument može imati dodatna i izostavljena polja). Podaci se često ugnježđuju umesto da se povezuju kao u relacionom modelu.

Slika 5. Struktura podataka u dokument orijentisanoj bazi
Ne postoji standardizovan upitni jezik za dokument-orijentisane baze već zavisi od konkretne implementacije (svaki proizvođač ima svoj upitni jezik).
Primena ovog modela je u sistemima sa često promenljivom strukturom podataka.
MongoDB je primer baze sa dokument-orijentisanim modelom.
Graf model
Ovaj model je zasnovan na grafovima – matematičkim strukturama koje se sastoje od čvorova i veza između njih.

Slika 6. Graf
Svaki čvor (node) predstavlja entitet, kao što je osoba, dok svaka veza (edge) predstavlja odnos između čvorova, na primer prijateljstvo. Čvorovi mogu imati atribute, poput imena ili godina, dok veze takođe mogu imati atribute, kao što je datum početka prijateljstva. Pored toga, veze mogu imati i težinu (weight), koja opisuje jačinu ili značaj odnosa.

Slika 7. Primer grafa
Moguće je pretraživanje po atributima čvorova i veza, pronalaženje najkraćih puteva ili najjačih veza među čvorovima, pronalazak susednih čvorova. Trenutno ne postoji standard za upitni jezik, pa tako postoji više implementacija upitnog jezika za graph baze podataka.
Baze sa graf modelom su pogodne za analizu mreža i povezanih podataka (društvene mreže, transportne mreže, sistemi za preporuke).
Neo4j je primer baze sa graf modelom.
Ostali modeli
Pored prethodno opisanih modela u upotrebi su i drugi modeli koji imaju svoju oblast primene. Tako postoje vektorske baze za potrebe veštačke inteligencije (Pinecone, Chroma), baze za rad sa geografskim podacima (PostGIS), baze podataka vremenskih serija (InfluxDB, TimescaleDB) i drugi.
Na web stranici https://db-engines.com/en/ranking moguće je videti sve aktuelne baze podataka, kao i model na kojem se zasnivaju.

Slika 8. Web stranica sa podacima o popularnosti DBMS
Zaključak
Baze podataka su se razvijale kako bi pratile potrebe ljudi i rast količine podataka, što je dovelo do pojave različitih modela baza podataka. Taj razvoj će se nastaviti i u budućnosti, u skladu sa napretkom tehnologije.
Literatura
- Relacione baze podataka / Gabrijela Dimić, Miloš Pejanović
- https://www.geeksforgeeks.org/dsa/introduction-to-graphs-data-structure-and-algorithm-tutorials/
- https://www.geeksforgeeks.org/dbms/what-is-graph-database/
- https://en.wikipedia.org/wiki/Key%E2%80%93value_database
- https://en.wikipedia.org/wiki/Document-oriented_database
- https://db-engines.com
- Google slike
Оставите одговор