Uvod u Baze Podataka

Modul 0 - Lekcija 1

Razumijevanje tipova baza podataka, gdje SQL Server stoji, i moderne tehnologije baza podataka uključujući vektorske baze za AI

⏱️ Trajanje: ~3 časa | 📚 Nivo: Početni | 🎯 Praktični primjeri: 6

📖 Šta su Baze Podataka?

Baza podataka je organizovana kolekcija podataka koja se čuva i pristupa elektronski. Zamislite je kao digitalni ormar za dokumente gdje se informacije čuvaju na strukturiran način koji olakšava pronalaženje, ažuriranje i upravljanje.

Baze podataka rješavaju:

  • Trajnost Podataka - Informacije preživljavaju restartovanje
  • Integritet Podataka - Pravila osiguravaju tačnost
  • Istovremeni Pristup - Više korisnika istovremeno
  • Sigurnost - Kontrola pristupa podacima
  • Performanse - Optimizirani mehanizmi

DBMS (Database Management System) je softver koji upravlja bazama podataka.

📖 Pogledaj Detaljno Objašnjenje →
Database Concept

🗂️ Tipovi Baza Podataka

Baze podataka se mogu kategorisati na nekoliko načina:

  • Relacijske Baze (SQL) - Strukturirani podaci u tabelama
  • NoSQL Baze - Fleksibilni modeli podataka
  • Vektorske Baze - Za AI i semantic search

💡 Ključno Razumijevanje

Razumijevanje ovih kategorija pomaže vam da odaberete pravu bazu podataka za vaše potrebe.

📖 Pogledaj Detaljno Objašnjenje →

📊 Relacijske Baze Podataka

Čuvaju podatke u tabelama sa redovima i kolonama, povezane kroz strane ključeve (foreign keys).

Ključne Karakteristike:

  • ✅ Strukturirani podaci sa unaprijed definisanim shemom
  • ✅ ACID svojstva (Atomicity, Consistency, Isolation, Durability)
  • ✅ SQL (Structured Query Language) za upite
  • ✅ Jaka integritet podataka kroz ograničenja

Najbolje za: Transakcione sisteme, finansijske podatke, strukturirane poslovne podatke

Popularne opcije: SQL Server, MySQL, PostgreSQL, Oracle, MariaDB

📖 Pogledaj Detaljno Objašnjenje →

📊 Primjer Relacijske Baze

Primjer: Odnos između Zaposlenika, Odjeljenja i Projekata

CREATE TABLE Stats.Employees (
    EmployeeID INT PRIMARY KEY IDENTITY(1,1),
...
    FirstName NVARCHAR(50) NOT NULL,
    DepartmentID INT NOT NULL,
    Salary DECIMAL(10,2) NOT NULL
);

CREATE TABLE Stats.Departments (
    DepartmentID INT PRIMARY KEY IDENTITY(1,1),
    DepartmentName NVARCHAR(100) NOT NULL,
    Budget DECIMAL(15,2) NOT NULL
);

CREATE TABLE Stats.Projects (
    ProjectID INT PRIMARY KEY IDENTITY(1,1),
    DepartmentID INT NOT NULL,
    Budget DECIMAL(15,2) NOT NULL,
    CONSTRAINT FK_Projects_Departments 
        FOREIGN KEY (DepartmentID) 
        REFERENCES Stats.Departments(DepartmentID)
);

Tabele su povezane kroz foreign keys, stvarajući strukturirani, normalizovani model podataka.

📖 Pogledaj Detaljno Objašnjenje →
Relational Database Structure

🔒 ACID Svojstva

ACID garantuje pouzdanost transakcija u relacijskim bazama podataka.

🔒 Atomicity (Atomičnost)

Transakcija se izvršava u cijelosti ili se uopće ne izvršava. Ako bilo koji dio ne uspije, cijela transakcija se poništava.

✅ Consistency (Konzistentnost)

Transakcija prenosi bazu iz jednog valjanog stanja u drugo. Sve pravila integriteta moraju biti zadovoljene.

📖 Pogledaj Detaljno Objašnjenje →

🔒 ACID Svojstva (Nastavak)

🔐 Isolation (Izolacija)

Istovremene transakcije ne interferiraju jedna sa drugom. Svaka transakcija vidi konzistentan snapshot podataka.

💾 Durability (Trajnost)

Jednom kada je transakcija potvrđena, izmjene su trajne čak i u slučaju pada sistema. Podaci se pišu na disk i čuvaju u transaction log-u.

Primjer: Transfer novca mora uključivati i oduzimanje sa jednog i dodavanje na drugi račun - sve ili ništa!

📖 Pogledaj Detaljno Objašnjenje →

💡 ACID Primjer u Praksi

Primjer T-SQL transakcije koja demonstrira ACID svojstva:

BEGIN TRANSACTION;

-- Atomicity: Ova transakcija mora biti cijela ili ništa
UPDATE Stats.Projects SET Budget = Budget - 100000 WHERE ProjectID = 1;
UPDATE Stats.Projects SET Budget = Budget + 100000 WHERE ProjectID = 2;

-- Consistency: Provjera da li je budžet projekta u validnom stanju
IF (SELECT Budget FROM Stats.Projects WHERE ProjectID = 1) < 0
BEGIN
    -- Ako je provjera neuspješna, rollback (Atomicity)
    ROLLBACK TRANSACTION;
    PRINT 'Transakcija poništena: Nedovoljno budžeta';
END
ELSE
BEGIN
    -- Isolation: Druge transakcije ne vide izmjene
    -- Durability: Nakon commit-a, izmjene su trajne
    COMMIT TRANSACTION;
    PRINT 'Transakcija uspješna';
END
📖 Pogledaj Detaljno Objašnjenje →

📚 SQL (Structured Query Language)

SQL je standardizovani jezik za upravljanje relacijskim bazama podataka.

SQL Kategorije Komandi:

  • 📝 DDL - CREATE, ALTER, DROP (struktura)
  • 📊 DML - SELECT, INSERT, UPDATE, DELETE (podaci)
  • 🔐 DCL - GRANT, REVOKE (dozvole)
  • 🔄 TCL - COMMIT, ROLLBACK, SAVEPOINT (transakcije)

SQL omogućava kreiranje, čitanje, ažuriranje i brisanje podataka, kao i upravljanje strukturom baze.

📖 Pogledaj Detaljno Objašnjenje →

📄 NoSQL Baze Podataka

NoSQL (Not Only SQL) - fleksibilni modeli podataka bez fiksnog schema.

Kategorije NoSQL baza:

  • 📄 Document Databases - JSON/BSON dokumenti (MongoDB, CouchDB)
  • 🔑 Key-Value Stores - Jednostavni parovi (Redis, DynamoDB)
  • 📊 Column-Family Stores - Kolone (Cassandra, HBase)
  • 🕸️ Graph Databases - Relacije kao grafovi (Neo4j, ArangoDB)

Kada koristiti: Horizontalno skaliranje, fleksibilni schemas, visok write throughput

📖 Pogledaj Detaljno Objašnjenje →

🔑 Kada Koristiti SQL vs NoSQL?

Koristite SQL (Relacijski) kada:

  • ✅ Trebate ACID transakcije, složene upite
  • ✅ Integritet podataka je kritičan
  • ✅ Podaci imaju jasne relacije i strukturu
  • ✅ Gradite tradicionalne poslovne aplikacije

Koristite NoSQL kada:

  • ✅ Trebate horizontalno skaliranje
  • ✅ Shema je fleksibilna ili nepoznata
  • ✅ Visok write throughput je potreban
  • ✅ Specifični modeli podataka (dokumenti, grafovi)
📖 Pogledaj Detaljno Objašnjenje →

🧠 Vektorske Baze: AI Revolucija

Specijalizovane baze za skladištenje i pretraživanje visoko-dimenzionalnih vektora (nizovi brojeva).

Esencijalne za AI aplikacije:

  • 🔍 Semantic search
  • 💡 Preporučni sistemi
  • 🤖 Large language model (LLM) aplikacije
📖 Pogledaj Detaljno Objašnjenje →
Vector Space Visualization

🔍 Semantic Search

Tradicionalna pretraga traži tačne riječi (keywords). Semantička pretraga razumije značenje i namjeru.

Kako to radi?

Upit "Delicious Food" se pretvara u vektor. Vektorska baza pronalazi koncepte koji su blizu u vektorskom prostoru, poput "Pizza", "Sushi" ili "Burger", čak i ako se riječ "Food" ne pominje.

Semantic Search Visualization

🏗️ Moderna Softverska Arhitektura

Polyglot Persistence: Korištenje prave baze za pravi posao.

🎯 Uloge Komponenata:

  • SQL Server - Transakcije i strukturni podaci (ACID)
  • Redis - Keširanje i sesije (Brzina)
  • 🧠 Vector DB - AI pretraga i embeddings (Sličnost)
  • 📄 Document DB - Fleksibilni logovi i podaci (JSON)
Modern Architecture

🔢 Vektorski Embeddings

Vektorski embeddings su numeričke reprezentacije podataka (tekst, slike, audio) u višedimenzionalnom prostoru.

💡 Kako Embeddings Rade

Kada konvertujete tekst kao "SQL Server tutorial" u embedding, on postaje niz brojeva (npr., [0.23, -0.45, 0.67, ...]).

Slični tekstovi proizvode slične vektore. Vektorske baze podataka mogu brzo pronaći slične vektore.

Primjer: Tekst → Embedding → Vektor [0.23, -0.45, 0.67, ...]

📖 Pogledaj Detaljno Objašnjenje →

🤖 Vektorske Baze i LLM

Vektorske baze su kritična komponenta u modernim LLM aplikacijama.

🔄 RAG Pipeline (Retrieval-Augmented Generation):

  1. 1. Dokumenti se konvertuju u embeddings
  2. 2. Embeddings se čuvaju u vektorskoj bazi
  3. 3. Korisnikov upit se također konvertuje u vektor
  4. 4. Baza pronalazi najsličnije dokumente
  5. 5. Dokumenti se prosleđuju LLM-u kao kontekst
  6. 6. LLM generiše odgovor baziran na kontekstu

Prednost: LLM dobija relevantan kontekst, smanjuje "hallucinations", omogućava ažuriranje znanja bez ponovnog treniranja.

📖 Pogledaj Detaljno Objašnjenje →

🤖 RAG Pipeline - Python Primjer

# 1. Generisanje embeddings
embeddings = embedding_model.encode(documents)

# 2. Skladištenje u vektorsku bazu
vector_db.upsert(vectors=embeddings, ids=["doc1", "doc2"], metadata=[...])

# 3. Korisnikov upit
query_embedding = embedding_model.encode([user_query])[0]

# 4. Pretraga sličnih vektora
similar_docs = vector_db.search(query_vector=query_embedding, top_k=2)

# 5. Prosleđivanje konteksta LLM-u
context = "\n".join([doc.text for doc in similar_docs])
response = llm.generate(f"Kontekst: {context}\n\nPitanje: {user_query}")
📖 Pogledaj Detaljno Objašnjenje →

⚙️ Kako Vektorske Baze Rade

Specijalizovane strukture indeksiranja:

  • 🌳 HNSW (Hierarchical Navigable Small World)
  • 📑 IVF (Inverted File Index)
  • 🔐 LSH (Locality Sensitive Hashing)

Proces pretrage:

  1. Postavite upit → Konvertujte u vektor
  2. Pronađite vektore najbliže upitnom vektoru
  3. Koristite metrike: cosine similarity, Euclidean distance, dot product
  4. Vratite dokumente sa najvišim skorom sličnosti
📖 Pogledaj Detaljno Objašnjenje →

💾 Kako se Podaci Snimaju

Proces Skladištenja:

  1. 1. Preprocesiranje - Čišćenje i priprema dokumenata
  2. 2. Generisanje Embeddings - Konvertovanje u vektore (npr. 1536 dimenzija)
  3. 3. Indeksiranje - Organizacija koristeći HNSW, IVF, LSH algoritme
  4. 4. Skladištenje - Optimizovani binarni format + metadata

Svaki dokument postaje vektor u višedimenzionalnom prostoru. Slični dokumenti su blizu jedan drugom.

📖 Pogledaj Detaljno Objašnjenje →

📊 Vizualizacija Vektorskog Prostora

Vector Space Visualization

Slični dokumenti su grupisani zajedno. Query pronalazi najbliže susjede.

💻 Python Primjer: Qdrant

# 1. Inicijalizacija
client = QdrantClient("localhost", port=6333)

# 2. Skladištenje dokumenata
client.upsert(
    collection_name="documents",
    points=[
        PointStruct(
            id=1,
            vector=[0.23, -0.45, ...], # Embedding
            payload={"text": "SQL Server...", "category": "db"}
        )
    ]
)

# 3. Pretraga
results = client.search(
    collection_name="documents",
    query_vector=query_embedding,
    limit=2
)
📖 Pogledaj Detaljno Objašnjenje →

🌳 Šta Znači "B" Notacija?

"B" u B-tree i B+ tree stoji za "Balanced" ili "Bayer" (nazvano po izumitelju).

B-tree:

Samo-balansirajuće stablo gdje svaki čvor može imati više djece. Korišteno u tradicionalnim bazama podataka za indeksiranje.

B+ tree:

Varijanta gdje su svi podaci pohranjeni u listovima, sa internim čvorovima koji sadrže samo ključeve. Efikasnije za range upite.

Vektorske baze koriste različite strukture optimizovane za visoko-dimenzionalne podatke.

📖 Pogledaj Detaljno Objašnjenje →

🔍 Vektorske Baze u Semantic Search

Semantic search razumije značenje i kontekst upita, ne samo podudaranje ključnih riječi.

Proces Semantic Search:

  1. Generisanje Embeddings - Konvertovanje dokumenata i upita u vektore
  2. Skladištenje - Čuvanje vektora dokumenata u vektorskoj bazi
  3. Obrada Upita - Konvertovanje upita pretrage u vektor
  4. Dohvaćanje - Vraćanje dokumenata sa najvišim skorom sličnosti

Rezultat: Pronalazi relevantne dokumente čak i bez tačnog podudaranja ključnih riječi!

🔍 Semantic Search Vizualizacija

Semantic Search Visualization

Cosine similarity mjeri ugao između vektora upita i vektora dokumenata.

📖 Pogledaj Detaljno Objašnjenje →

📊 Poznate Vektorske Baze

Baza Podataka Tip Ključne Funkcionalnosti
Pinecone Managed Cloud Potpuno upravljano, serverless
Weaviate Open Source / Cloud GraphQL API, ugrađeni ML modeli
Milvus Open Source Skalabilno, cloud-native
Qdrant Open Source / Cloud Rust-based, brzo, filtriranje
pgvector PostgreSQL Extension Dodaje vektorsku podršku PostgreSQL-u
Azure AI Search Microsoft Cloud Integrisano sa Azure-om
📖 Pogledaj Detaljno Objašnjenje →

⚖️ SQL Server vs Druge Baze

SQL Server je jedan od vodećih sistema za upravljanje relacijskim bazama podataka.

Ključne Prednosti SQL Server-a:

  • ✅ Enterprise-grade performanse
  • ✅ Odličan tooling (SSMS, Azure Data Studio)
  • ✅ Integracija sa Windows/Azure ekosistemom
  • ✅ Napredne sigurnosne mogućnosti
  • ✅ Besplatna Developer Edition

Poređenje sa: MySQL, MariaDB, PostgreSQL, Oracle

📖 Pogledaj Detaljno Objašnjenje →

📊 SQL Server - Detaljno Poređenje

Funkcionalnost SQL Server MySQL PostgreSQL
Licenca Commercial / Free Developer Dual (GPL / Commercial) PostgreSQL License
Platforma Windows, Linux, Docker Windows, Linux, macOS Windows, Linux, macOS, Unix
Performanse Odlične, optimizovane za Windows Vrlo dobre, read-heavy Odlične, složeni upiti
Napredne Funkcionalnosti In-Memory OLTP, Columnstore, JSON, Graph JSON, Full-Text Search Advanced indexing, JSON, Arrays
📖 Pogledaj Detaljno Objašnjenje →

💡 Odabir Prave Baze Podataka

Odaberite SQL Server ako:

Ste u Windows/Azure okruženju, trebate enterprise funkcionalnosti, želite odlične alate, ili gradite .NET aplikacije.

Odaberite MySQL/MariaDB ako:

Trebate jednostavnu, brzu bazu za web aplikacije, koristite LAMP/LEMP stack, ili trebate MySQL kompatibilnost.

Odaberite PostgreSQL ako:

Trebate napredne funkcionalnosti, složene tipove podataka, ili želite moćnu open-source bazu podataka.

📖 Pogledaj Detaljno Objašnjenje →

📄 Document Baze Podataka

Document baze podataka čuvaju podatke kao dokumente, tipično u JSON ili BSON formatu.

Kako Document Baze Rade:

  • Fleksibilnost Sheme - Svaki dokument može imati različita polja
  • JSON/BSON Struktura - Ugniježđeni objekti i nizovi
  • Horizontalno Skaliranje - Preko više servera
  • Indeksiranje - Bilo koje polje, uključujući ugniježđena

Poznate opcije: MongoDB, CouchDB, Amazon DocumentDB, Azure Cosmos DB

📖 Pogledaj Detaljno Objašnjenje →

📄 JSON i BSON

JSON (JavaScript Object Notation):

  • ✅ Tekstualni format, lako čitljiv
  • ✅ Koristi parove ključ-vrijednost
  • ✅ Može se koristiti kao tekstualna baza podataka
  • ✅ Standardni format za API-je i razmjenu podataka

BSON (Binary JSON):

  • ✅ Binarna reprezentacija JSON-a
  • ✅ Kompaktniji i brži za parsiranje
  • ✅ Dodatni tipovi (Date, Binary, ObjectId)
  • ✅ Koristi se u MongoDB i drugim NoSQL bazama
📖 Pogledaj Detaljno Objašnjenje →

📄 Primjer Document Baze

Primjer dokumenta u MongoDB formatu:

{
  "_id": "507f1f77bcf86cd799439011",
  "firstName": "John",
  "lastName": "Doe",
  "email": "[email protected]",
  "address": {
    "street": "123 Main St",
    "city": "New York",
    "zipCode": "10001"
  },
  "projects": [
    {
      "projectId": "PROJ-001",
      "name": "Digitalizacija statistike",
      "startDate": "2023-01-15",
      "budget": 2000000.00
    }
  ]
}

Svaki dokument je samostalan i može imati drugačiju strukturu od drugih dokumenata.

📖 Pogledaj Detaljno Objašnjenje →

🔑 Document Baze - Prednosti i Ograničenja

✅ Prednosti:

  • • Fleksibilna Shema - Lako evoluirati strukturu
  • • Prirodno Modeliranje - Dokumenti se dobro mapiraju na objekte aplikacije
  • • Brzi Razvoj - Nema potrebe za složenim relacijskim shemama
  • • Horizontalno Skaliranje - Distribucija preko više servera

⚠️ Ograničenja:

  • • Nema Join-ova - Relacije u kodu aplikacije
  • • Duplikacija Podataka - Povezani podaci često duplicirani
  • • Eventual Consistency - Ne uvijek ACID
  • • Složeni Upiti - Neki upiti teži nego u SQL-u
📖 Pogledaj Detaljno Objašnjenje →

🎯 Gdje SQL Server Stoji

SQL Server je relacijski sistem za upravljanje bazama podataka (RDBMS) koji se ističe u enterprise okruženjima.

SQL Server Pozicija:

  • 🏢 Enterprise-Grade - Za mission-critical aplikacije
  • 🪟 Windows Integracija - Duboka integracija sa Windows Server
  • ☁️ Azure Cloud - Native integracija sa Azure servisima
  • 💻 .NET Ekosistem - Savršeno za .NET aplikacije
  • 📊 Business Intelligence - SSRS, SSAS, SSIS
  • 🔒 Sigurnost - Enterprise nivo sigurnosnih funkcionalnosti
📖 Pogledaj Detaljno Objašnjenje →

🔑 Prednosti SQL Server-a

Ključne Prednosti:

  • ✅ Odlični alati (SSMS, Azure Data Studio)
  • ✅ Jake funkcionalnosti optimizacije performansi
  • ✅ Sveobuhvatna sigurnost (enkripcija, row-level security, audit)
  • ✅ Napredne funkcionalnosti (In-Memory OLTP, Columnstore, Graph, JSON)
  • ✅ Odlična dokumentacija i podrška zajednice

SQL Server nudi kompletan ekosistem za enterprise razvoj aplikacija sa bazama podataka.

📖 Pogledaj Detaljno Objašnjenje →

☁️ Microsoft Azure

Azure je cloud computing platforma koja pruža širok spektar servisa uključujući baze podataka.

Azure Modeli:

  • 🏗️ IaaS - Infrastructure as a Service (SQL Server na VM)
  • ⚙️ PaaS - Platform as a Service (Azure SQL Database, Managed Instance)
  • 💼 SaaS - Software as a Service (Potpuno upravljani servisi)

Azure omogućava organizacijama da koriste baze podataka bez potrebe za održavanjem vlastite infrastrukture.

📖 Pogledaj Detaljno Objašnjenje →

🔷 SQL Server na Azure

Azure SQL Database:

Upravljani servis, elastično skaliranje, automatski backup. Najbolje za cloud-native aplikacije.

Azure SQL Managed Instance:

99% SQL Server kompatibilnost, lift-and-shift migracije. Najbolje za enterprise migracije.

SQL Server na Azure VM:

Puna kontrola, custom konfiguracija. Najbolje za kompleksne zahtjeve.

📖 Pogledaj Detaljno Objašnjenje →

📊 Azure Baze Podataka

Relacijske:

  • • Azure SQL Database / Managed Instance
  • • Azure Database for PostgreSQL
  • • Azure Database for MySQL / MariaDB

NoSQL i Specializovane:

  • • Azure Cosmos DB (multi-model)
  • • Azure Table Storage (key-value)
  • • Azure Cache for Redis (in-memory)
  • • Azure AI Search (vector search)
📖 Pogledaj Detaljno Objašnjenje →

🎯 Praktična Vježba 1

Identifikacija Tipova Baza Podataka

Za svaki scenario, identifikujte tip baze podataka:

Scenario 1:

E-commerce katalog proizvoda sa kategorijama, proizvodima, i recenzijama

Odgovor: SQL ili NoSQL - SQL je bolji za složene upite kroz proizvode i recenzije.

Scenario 2:

Finansijski transakcioni sistem za banku

Odgovor: SQL (Relacijski) - Zahtijeva ACID transakcije i integritet podataka.

📖 Pogledaj Detaljno Objašnjenje →

🎯 Praktična Vježba 2

Scenario 3:

AI-powered search engine koji pronalazi slične dokumente

Odgovor: Vektorska Baza Podataka - Dizajnirana za pretragu sličnosti i embeddings.

Scenario 4:

Skladištenje korisničkih profila sa različitim poljima po korisniku

Odgovor: NoSQL (Document) - Fleksibilna shema omogućava različita polja po korisniku.

Priprema za Modul 1:

  • ✅ Šta je relacijska baza podataka
  • ✅ Zašto je SQL Server dobar izbor za enterprise aplikacije
  • ✅ Razliku između SQL i NoSQL baza podataka
  • ✅ Šta su vektorske baze podataka i kada se koriste
📖 Pogledaj Detaljno Objašnjenje →

✅ Zaključak

U ovoj lekciji ste naučili:

  • ✅ Šta su baze podataka i zašto postoje
  • ✅ Tipove baza: Relacijske (SQL), NoSQL, Vektorske
  • ✅ Kako vektorske baze rade i njihovu ulogu u AI
  • ✅ SQL Server poziciju u odnosu na druge baze
  • ✅ Kada koristiti SQL vs NoSQL
  • ✅ Gdje SQL Server stoji u database ekosistemu

📚 Sljedeća Lekcija

U Modulu 1.1 ćete naučiti kako postaviti SQL Server 2022, instalirati development alate, i razumjeti SQL Server ekosistem.

📖 Pogledaj Detaljno Objašnjenje →