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
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.
DBMS (Database Management System) je softver koji upravlja bazama podataka.
📖 Pogledaj Detaljno Objašnjenje →
Baze podataka se mogu kategorisati na nekoliko načina:
Razumijevanje ovih kategorija pomaže vam da odaberete pravu bazu podataka za vaše potrebe.
Čuvaju podatke u tabelama sa redovima i kolonama, povezane kroz strane ključeve (foreign keys).
Najbolje za: Transakcione sisteme, finansijske podatke, strukturirane poslovne podatke
Popularne opcije: SQL Server, MySQL, PostgreSQL, Oracle, MariaDB
📖 Pogledaj Detaljno Objašnjenje →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 →
ACID garantuje pouzdanost transakcija u relacijskim bazama podataka.
Transakcija se izvršava u cijelosti ili se uopće ne izvršava. Ako bilo koji dio ne uspije, cijela transakcija se poništava.
Transakcija prenosi bazu iz jednog valjanog stanja u drugo. Sve pravila integriteta moraju biti zadovoljene.
Istovremene transakcije ne interferiraju jedna sa drugom. Svaka transakcija vidi konzistentan snapshot podataka.
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 →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 je standardizovani jezik za upravljanje relacijskim bazama podataka.
SQL omogućava kreiranje, čitanje, ažuriranje i brisanje podataka, kao i upravljanje strukturom baze.
📖 Pogledaj Detaljno Objašnjenje →NoSQL (Not Only SQL) - fleksibilni modeli podataka bez fiksnog schema.
Kada koristiti: Horizontalno skaliranje, fleksibilni schemas, visok write throughput
📖 Pogledaj Detaljno Objašnjenje →Specijalizovane baze za skladištenje i pretraživanje visoko-dimenzionalnih vektora (nizovi brojeva).
Tradicionalna pretraga traži tačne riječi (keywords). Semantička pretraga razumije značenje i namjeru.
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.
Polyglot Persistence: Korištenje prave baze za pravi posao.
Vektorski embeddings su numeričke reprezentacije podataka (tekst, slike, audio) u višedimenzionalnom prostoru.
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 su kritična komponenta u modernim LLM aplikacijama.
Prednost: LLM dobija relevantan kontekst, smanjuje "hallucinations", omogućava ažuriranje znanja bez ponovnog treniranja.
📖 Pogledaj Detaljno Objašnjenje →# 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 →
Svaki dokument postaje vektor u višedimenzionalnom prostoru. Slični dokumenti su blizu jedan drugom.
📖 Pogledaj Detaljno Objašnjenje →
Slični dokumenti su grupisani zajedno. Query pronalazi najbliže susjede.
# 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 →
"B" u B-tree i B+ tree stoji za "Balanced" ili "Bayer" (nazvano po izumitelju).
Samo-balansirajuće stablo gdje svaki čvor može imati više djece. Korišteno u tradicionalnim bazama podataka za indeksiranje.
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 →Semantic search razumije značenje i kontekst upita, ne samo podudaranje ključnih riječi.
Rezultat: Pronalazi relevantne dokumente čak i bez tačnog podudaranja ključnih riječi!
Cosine similarity mjeri ugao između vektora upita i vektora dokumenata.
📖 Pogledaj Detaljno Objašnjenje →| 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 |
SQL Server je jedan od vodećih sistema za upravljanje relacijskim bazama podataka.
Poređenje sa: MySQL, MariaDB, PostgreSQL, Oracle
📖 Pogledaj Detaljno Objašnjenje →| 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 |
Ste u Windows/Azure okruženju, trebate enterprise funkcionalnosti, želite odlične alate, ili gradite .NET aplikacije.
Trebate jednostavnu, brzu bazu za web aplikacije, koristite LAMP/LEMP stack, ili trebate MySQL kompatibilnost.
Trebate napredne funkcionalnosti, složene tipove podataka, ili želite moćnu open-source bazu podataka.
Document baze podataka čuvaju podatke kao dokumente, tipično u JSON ili BSON formatu.
Poznate opcije: MongoDB, CouchDB, Amazon DocumentDB, Azure Cosmos DB
📖 Pogledaj Detaljno Objašnjenje →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 →SQL Server je relacijski sistem za upravljanje bazama podataka (RDBMS) koji se ističe u enterprise okruženjima.
SQL Server nudi kompletan ekosistem za enterprise razvoj aplikacija sa bazama podataka.
📖 Pogledaj Detaljno Objašnjenje →Azure je cloud computing platforma koja pruža širok spektar servisa uključujući baze podataka.
Azure omogućava organizacijama da koriste baze podataka bez potrebe za održavanjem vlastite infrastrukture.
📖 Pogledaj Detaljno Objašnjenje →Upravljani servis, elastično skaliranje, automatski backup. Najbolje za cloud-native aplikacije.
99% SQL Server kompatibilnost, lift-and-shift migracije. Najbolje za enterprise migracije.
Puna kontrola, custom konfiguracija. Najbolje za kompleksne zahtjeve.
Za svaki scenario, identifikujte tip baze podataka:
E-commerce katalog proizvoda sa kategorijama, proizvodima, i recenzijama
Odgovor: SQL ili NoSQL - SQL je bolji za složene upite kroz proizvode i recenzije.
Finansijski transakcioni sistem za banku
Odgovor: SQL (Relacijski) - Zahtijeva ACID transakcije i integritet podataka.
AI-powered search engine koji pronalazi slične dokumente
Odgovor: Vektorska Baza Podataka - Dizajnirana za pretragu sličnosti i embeddings.
Skladištenje korisničkih profila sa različitim poljima po korisniku
Odgovor: NoSQL (Document) - Fleksibilna shema omogućava različita polja po korisniku.
U ovoj lekciji ste naučili:
U Modulu 1.1 ćete naučiti kako postaviti SQL Server 2022, instalirati development alate, i razumjeti SQL Server ekosistem.