Régi anyag: https://docs.google.com/presentation/d/1_nmA1F4ag_O-qlJAE4TfVuyfLgSruZLW/edit?usp=sharing&ouid=110539736176923279178&rtpof=true&sd=true
📊 Adatbázisok története és fejlődése
Relációs adatbázisoktól a NoSQL-en át a vektor adatbázisokig
1. Bevezetés
Az adatbázisok az informatikai rendszerek alapvetĹ‘ elemei, amelyek lehetĹ‘vĂ© teszik az adatok hatĂ©kony tárolását, visszakeresĂ©sĂ©t, rendezĂ©sĂ©t Ă©s mĂłdosĂtását. A modern világban hatalmas mennyisĂ©gű adat keletkezik másodpercenkĂ©nt, Ă©s ezek strukturált tárolása elengedhetetlen a döntĂ©stámogatáshoz, automatizáláshoz Ă©s gĂ©pi tanuláshoz.
Miért van szükség adatbázisokra?
Az adatok szervezett tárolása lehetővé teszi azok gyors visszakeresését és elemzését.
Több felhasználó egyidejűleg dolgozhat ugyanazon adatokkal (konkurens hozzáférés).
BiztosĂtani lehet az adatintegritást Ă©s a hozzáfĂ©rĂ©s-ellenĹ‘rzĂ©st. Az adatbázis kĂ©pes megĂłvni az adatok helyessĂ©gĂ©t, Ă©rvĂ©nyessĂ©gĂ©t Ă©s konzisztenciáját – vagyis azt, hogy az adatok ne legyenek hibásak, hiányosak, vagy egymásnak ellentmondĂłak.
Az adatok rendszeres mentĂ©se Ă©s visszaállĂtása egyszerűbbĂ© válik.
Automatizált folyamatokhoz (pl. webalkalmazások, gĂ©pi tanulás) szĂĽksĂ©ges egy megbĂzhatĂł háttĂ©rtárolĂł.
Példa: Egy webshopban több ezer termék, rendelés és felhasználói adat van. Ezek kereshető tárolása adatbázis nélkül gyakorlatilag lehetetlen lenne.
Adat: nyers tĂ©nyek, mĂ©rt vagy rögzĂtett Ă©rtĂ©kek, amelyek mĂ©g nem feltĂ©tlenĂĽl bĂrnak jelentĂ©ssel.
Információ: értelmezett adat, amely kontextusba helyezve új tudást jelent.
Az adat tehát az alap, amibĹ‘l – megfelelĹ‘ feldolgozással – informáciĂłt nyerhetĂĽnk. Az adatbázis cĂ©lja az adatok strukturált tárolása annak Ă©rdekĂ©ben, hogy informáciĂłvá alakĂthassuk Ĺ‘ket.
Strukturált, félstrukturált és strukturálatlan adatok
Strukturált adat:
Táblázatos formában rendezett, előre meghatározott sémával rendelkezik.
Példa: SQL adatbázisok, Excel-táblák, CRM rendszerek.
Jellemző: gyors kereshetőség, jól lekérdezhető.
Félstrukturált adat:
Nincs fix sĂ©mája, de tartalmaz cĂmkĂ©ket vagy metaadatokat.
Példa: XML, JSON, YAML fájlok, logok.
Rugalmasabb, de nehezebb indexelni és lekérdezni.
Strukturálatlan adat:
Nincs formázása, nem egyértelmű a tartalma.
Példa: szövegfájlok, képek, videók, e-mailek, hangfelvételek.
Ezeket általában keresőmotorokkal vagy mesterséges intelligenciával lehet feldolgozni (pl. szöveg- vagy képelemzés).
Az adatbázisok fejlĹ‘dĂ©se szorosan összefĂĽgg azzal, hogyan Ă©s milyen tĂpusĂş adatokat akarunk hatĂ©konyan kezelni.
2. Relációs adatbázisok (RDBMS)
A reláciĂłs adatbázisok az egyik legelterjedtebb adatbázis-tĂpusok közĂ© tartoznak. Az adatok táblákban (reláciĂłkban) tárolĂłdnak, ahol minden tábla sorokbĂłl (rekordokbĂłl) Ă©s oszlopokbĂłl (mezĹ‘kbĹ‘l) áll. A reláciĂłs modell megbĂzhatĂł Ă©s jĂłl definiált struktĂşrát biztosĂt az adatok kezelĂ©sĂ©hez.
Történet
A relációs modellt Edgar F. Codd matematikus javasolta 1970-ben.
A modell a halmazelméletre és a predikátumlogikára épül.
A ’70-es, ’80-as években megjelentek az első RDBMS rendszerek: IBM System R, Ingres, Oracle.
A SQL (Structured Query Language) nyelv szabványosĂtása nagyban hozzájárult az elterjedĂ©sĂ©hez.
Jellemzők
Adatszerkezet: táblázatos (sorok és oszlopok).
SzigorĂş sĂ©ma: minden táblának elĹ‘re meghatározott szerkezete van (mezĹ‘tĂpusok, kulcsok stb.).
Kapcsolatok: táblák között idegen kulcsokon keresztül hozunk létre kapcsolatokat.
ACID tulajdonságok: Az ACID tulajdonságok biztosĂtják, hogy az adatbázisban vĂ©gzett tranzakciĂłk megbĂzhatĂłan Ă©s konzisztensen hajtĂłdjanak vĂ©gre, mĂ©g hiba vagy rendszerleállás esetĂ©n is. Ezek kĂĽlönösen fontosak pĂ©nzĂĽgyi, vállalati vagy bármilyen más ĂĽzletkritikus rendszerekben.
Mit jelent az ACID?
Betű | Jelentés angolul | Jelentés magyarul |
A | Atomicity | Atomszerűség (oszthatatlanság) |
C | Consistency | Konzisztencia (állapothelyesség) |
I | Isolation | ElkĂĽlönĂtĂ©s (tranzakciĂłs fĂĽggetlensĂ©g) |
D | Durability | Tartósság (állandóság) |
A – Atomicity (Atomszerűség)
Egy tranzakciĂł vagy teljes egĂ©szĂ©ben vĂ©grehajtĂłdik, vagy semennyire. Ha a tranzakciĂł közben hiba törtĂ©nik (pl. áramszĂĽnet), az adatbázis visszaállĂtja a korábbi állapotot.
PĂ©lda: Ha egy banki utalás során elĹ‘ször levonjuk a pĂ©nzt A számlárĂłl, majd jĂłváĂrjuk B számlán, akkor ezek vagy egyĂĽtt törtĂ©nnek meg, vagy egyik sem.
C – Consistency (Konzisztencia)
A tranzakciĂł nem sĂ©rtheti meg az adatbázis szabályait. Csak olyan állapot maradhat fenn, amely megfelel a megszorĂtásoknak (kulcsok, ellenĹ‘rzĂ©sek, hivatkozások).
I – Isolation (ElkĂĽlönĂtĂ©s)
A párhuzamosan futó tranzakciók nem zavarhatják egymást. Egy felhasználó nem láthatja egy másik félkész változtatásait.
D – Durability (Tartósság)
Ha egy tranzakció véglegesen befejeződik, annak hatása tartósan megmarad – még rendszerleállás után is.
További előnyök
Adatintegritás: kulcsok, megszorĂtások Ă©s szabályok segĂtsĂ©gĂ©vel biztosĂthatĂł.
LekĂ©rdezhetĹ‘sĂ©g: a SQL nyelv rendkĂvĂĽl erĹ‘s Ă©s kifejezĹ‘ eszköztárat ad.
Stabilitás és érettség: hosszú távon kipróbált, optimalizált rendszerek.
Többfelhasználós működés: jogosultságkezelés, tranzakciókezelés.
Hátrányok
Skálázhatóság: nagy adatmennyiség és sok párhuzamos felhasználó esetén nehezen osztható szét több gépre (horizontális skálázás).
Rugalmatlanság: sĂ©ma mĂłdosĂtása bonyolult lehet, kĂĽlönösen ha az adatstruktĂşra gyakran változik.
Strukturálatlan adatok kezelĂ©se: szöveg, kĂ©p, videĂł tĂpusĂş adatok kezelĂ©sĂ©re nem ideális.
Népszerű relációs adatbázis-kezelő rendszerek (RDBMS-ek)
MySQL – nyĂlt forráskĂłdĂş, nĂ©pszerű webalkalmazások körĂ©ben (pl. WordPress).
PostgreSQL – fejlett funkciĂłk, szabványos SQL támogatás, objektum-orientált kiegĂ©szĂtĂ©sek.
Oracle Database – robusztus vállalati megoldás, fejlett biztonság és replikációs lehetőségek.
Microsoft SQL Server – integráció Microsoft-technológiákkal, könnyű használat.
Példa: Egyszerű SQL tábla és lekérdezés
Tábla: `diakok`
id | nev | szuletesi_ev |
1 | Kovács Anna | 2003 |
2 | Nagy Péter | 2002 |
SQL lekérdezés:
SELECT nev FROM diakok WHERE szuletesi_ev < 2003;
Ez a lekérdezés visszaadja azoknak a diákoknak a nevét, akik 2003 előtt születtek.
3. NoSQL adatbázisok
A NoSQL adatbázisok a reláciĂłs modellek alternatĂvájakĂ©nt jelentek meg, amikor az internetes alkalmazások, a Big Data Ă©s a valĂłs idejű feldolgozások Ăşj követelmĂ©nyeket támasztottak az adatkezelĂ©ssel szemben. A „NoSQL” nem feltĂ©tlenĂĽl jelenti azt, hogy nem használhatĂł benne SQL, hanem inkább azt, hogy nem reláciĂłs modell alapján működik.
Miért jelentek meg?
Az adatok mennyisége gyorsan növekedett (pl. közösségi média, szenzoradatok).
Az adatszerkezet egyre rugalmasabb lett – gyakran változó mezők, új attribútumok.
Szükség volt horizontális skálázásra – sok szerver párhuzamos futtatása.
Alkalmazásoknak nagy sebességre és alacsony késleltetésre volt szüksége.
Jellemzők
SĂ©manĂ©lkĂĽli modell: nincs elĹ‘re rögzĂtett mezĹ‘szerkezet.
BASE modell:
*Basically Available* – mindig elérhető adatbázis
*Soft state* – az adat idővel változhat
*Eventually consistent* – idővel elérhető a konzisztencia (nem garantált azonnal)
Horizontálisan skálázhatĂł: könnyen bĹ‘vĂthetĹ‘ több gĂ©pre.
Nagy teljesĂtmĂ©ny: ideális valĂłs idejű alkalmazásokhoz.
NoSQL tĂpusok Ă©s pĂ©ldák
Kulcs-érték tárolók
Egyszerű szerkezet: kulcs → érték (mint egy szótár).
Nagyon gyors, kiválĂł gyorsĂtĂłtárazásra.
Példa: Redis, Amazon DynamoDB
Gráf adatbázisok
Adatok és azok kapcsolatai gráfként ábrázolva (csomópontok és élek).
Nagyon hasznos hálózati elemzésekhez, pl. közösségi hálók, útvonalkeresés.
Példa: Neo4j, ArangoDB
Előnyök
Nagy teljesĂtmĂ©ny, alacsony válaszidĹ‘.
Könnyen skálázható horizontálisan.
Rugalmas adatszerkezet – ideális gyorsan változó alkalmazásokhoz.
NĂ©hány esetben beĂ©pĂtett replikáciĂł, sharding, elosztott feldolgozás.
Hátrányok
Nincs szabványos nyelv (mint az SQL).
Az adatintegritás és konzisztencia nem mindig garantált.
Alkalmazásfejlesztéskor a logika egy része az adatbázis helyett a kódban jelenik meg.
Komplex lekĂ©rdezĂ©sek megvalĂłsĂtása nehĂ©zkes lehet.
Példa: MongoDB dokumentum
Egy MongoDB kollekcióban tárolt dokumentum példája:
{
"_id": "u123",
"nev": "Kiss János",
"eletkor": 29,
"cim": {
"varos": "Budapest",
"iranyitoszam": "1111"
}
}
Egy lekérdezés: azokat a felhasználókat kérdezzük le, akik életkora nagyobb mint 25:
db.felhasznalok.find({ "eletkor": { "$gt": 25 } })
4. NewSQL adatbázisok
A NewSQL adatbázisok a reláciĂłs adatbázisok továbbfejlesztett változatai, amelyek cĂ©lja, hogy megtartsák a klasszikus RDBMS rendszerek elĹ‘nyeit (pl. SQL, ACID), ugyanakkor kĂ©pesek legyenek a modern alkalmazások által megkövetelt horizontális skálázásra Ă©s magas teljesĂtmĂ©nyre, mint a NoSQL rendszerek.
Miért jöttek létre?
A vállalatok továbbra is igénylik a strukturált, relációs adatsémát és az ACID garanciákat.
Ugyanakkor szükség van a modern skálázhatóságra, amit a NoSQL rendszerek nyújtanak.
A cél: „legyen meg a torta és együk is meg” – relációs modell + felhőbarát architektúra.
Jellemzők
Relációs modell: táblák, kulcsok, SQL nyelv
ACID tranzakciĂłk: konzisztencia Ă©s megbĂzhatĂłság
Elosztott architektúra: több szerveren futó adatbázis
Skálázhatóság: automatikus sharding, load balancing
Magas rendelkezĂ©sre állás: beĂ©pĂtett replikáciĂł, hibatűrĂ©s
Előnyök
Kombinálja a relációs adatbázisok előnyeit a NoSQL skálázhatóságával
Alkalmas nagy forgalmú, üzletkritikus alkalmazásokhoz
Használható ismerős SQL nyelvvel, nem igényel új tanulási görbét
Hátrányok
Bonyolultabb architektúra és üzemeltetés, mint egy egyszerű SQL adatbázisnál
Még viszonylag fiatal technológia – kisebb ökoszisztéma, kevesebb szakember
Néhány megoldás zárt forráskódú, kereskedelmi licenc alatt áll
Példák
CockroachDB
NyĂlt forráskĂłdĂş, elosztott reláciĂłs adatbázis.
Automatikus skálázás és replikáció.
PostgreSQL-kompatibilis SQL interfész.
VoltDB
Főként valós idejű analitikára és tranzakciókra specializált.
Nagy sebesség, memóriabeli működés.
Példa: CockroachDB SQL lekérdezés
CREATE TABLE felhasznalok (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
nev TEXT NOT NULL,
regisztralt TIMESTAMP DEFAULT now()
);
SELECT * FROM felhasznalok WHERE nev LIKE 'K%';
A fenti példa egy CockroachDB tábla létrehozását és egyszerű lekérdezését mutatja be, PostgreSQL-kompatibilis SQL nyelven.
5. Vektor adatbázisok
A vektor adatbázisok Ăşj generáciĂłs adatbázis-rendszerek, amelyek a mestersĂ©ges intelligencia Ă©s a gĂ©pi tanulás elterjedĂ©sĂ©vel váltak nĂ©pszerűvĂ©. CĂ©ljuk nem strukturált adatok – pĂ©ldául szövegek, kĂ©pek, hangok – jelentĂ©s szerinti keresĂ©se, amelyet az Ăşn. *embedding* (beágyazott vektorreprezentáciĂł) segĂtsĂ©gĂ©vel valĂłsĂtanak meg.
Miért van rájuk szükség?
A hagyományos adatbázisok nem alkalmasak jelentésalapú keresésre.
Az LLM-ek, kĂ©pfeldolgozĂłk, hangfelismerĹ‘k vektorokat állĂtanak elĹ‘, amelyek geometriailag összehasonlĂthatĂłk.
PĂ©lda: „melyik másik dokumentum tartalmilag hasonlĂt ehhez a kĂ©rdĂ©shez?”
Hogyan működik?
Az objektumokat (pl. szöveg, kĂ©p) embedding-gĂ© alakĂtjuk egy neurális hálĂł segĂtsĂ©gĂ©vel.
Az Ăgy kapott vektorokat egy vektoradatbázis tárolja.
Keresés során szintén vektort képezünk, majd megkeressük a legközelebbi (használatos: k-NN – *k Nearest Neighbors*) vektorokat.
A hasonlĂłságot általában koszinusz-hasonlĂłság, euklideszi távolság vagy más metrika alapján számĂtják.
Jellemzők
Nincs klasszikus SQL – speciális
API vagy Python/REST kliensek használatosak.
BeĂ©pĂtett indexelĂ©si mĂłdszerek a gyors keresĂ©shez (pl. HNSW, IVF, PQ).
Gyors és hatékony nagy dimenziójú adatok keresése.
Előnyök
Jelentésalapú keresés – szöveg vagy kép jelentésének megértése
Ideális LLM-alapú rendszerekhez, mint pl. kérdés-válasz vagy dokumentumkeresés
KiválĂł teljesĂtmĂ©ny nagy adathalmazokon is
Hátrányok
Nem hagyományos adatmodell – nem tárol klasszikus táblákat, kapcsolatokkal
A „miért kaptuk ezt a találatot?” kérdésre nehezebb választ adni (black-box jelleg)
A pontosság függ az embedding minőségétől és a választott metrikától
Népszerű vektor adatbázisok
FAISS (Facebook AI Similarity Search) – nagy teljesĂtmĂ©nyű, Python-könyvtárkĂ©nt is elĂ©rhetĹ‘
Milvus – nyĂlt forráskĂłdĂş, skálázhatĂł, GPU-t is támogatĂł vektor DB
Weaviate – REST
API + GraphQL támogatás, integrált gépi tanulási pipeline
Pinecone – felhőalapú, egyszerűen használható szolgáltatás
Chroma – egyszerű integráció LangChain/RAG rendszerekhez
Példa: vektoros keresés szövegek között
1. Szöveg → embedding: `“Milyen magas a Mount Everest?”` → `[0.12, -0.45, …, 0.33]`
2. A vektoradatbázisban tárolt több ezer dokumentum embeddingje közül kiválasztjuk a legközelebbit:
query_vector = model.encode("Milyen magas a Mount Everest?")
results = vector_db.search(query_vector, top_k=5)
3. Eredmény: olyan dokumentumokat kapunk, amelyek tartalmilag legközelebb állnak a kérdéshez – még akkor is, ha szó szerint nem egyeznek meg.
6. Tendenciák és jövőkép
Multimodális adatbázisok (szöveg + kép + struktúrált adatok)
Hybrid keresés: SQL + vektoros keresés együtt
AI-native rendszerek: LLM + adatbázis integráció (pl. LangChain)
7. Összefoglaló táblázat
TĂpus | TermĂ©knevek | ElĹ‘nyök | Hátrányok |
Relációs (RDBMS) | MySQL, PostgreSQL, Oracle | Stabil, jól definiált séma, SQL támogatás, ACID garancia | Nehezen skálázható, rugalmatlan struktúra |
NoSQL | MongoDB, Redis, Cassandra, Neo4j | Rugalmas séma, jól skálázható, gyors lekérdezések | Gyenge konzisztencia, nincs egységes lekérdezőnyelv |
NewSQL | CockroachDB, Google Spanner, VoltDB | ACID + skálázhatóság, SQL-kompatibilitás | Bonyolultabb architektúra, kisebb ökoszisztéma |
Vektor | FAISS, Milvus, Weaviate, Pinecone, Chroma | Jelentésalapú keresés, AI integráció, gyors k-NN keresés | Nem klasszikus lekérdezések, nehezebb magyarázhatóság |
8. Példa
Az alábbi pĂ©ldák bemutatják, hogyan tĂ©r el az adatok kezelĂ©se a kĂĽlönbözĹ‘ adatbázistĂpusokban. A pĂ©ldák egyszerűek, mĂ©gis jĂłl szemlĂ©ltetik az eltĂ©rĹ‘ adatmodelleket Ă©s lekĂ©rdezĂ©si mĂłdokat.
1. Relációs adatbázis: SQL példa (PostgreSQL)
Tábla létrehozása:
CREATE TABLE diakok (
id SERIAL PRIMARY KEY,
nev TEXT NOT NULL,
szuletesi_ev INTEGER
);
Adatok beszúrása:
INSERT INTO diakok (nev, szuletesi_ev)
VALUES ('Kiss Anna', 2002), ('Nagy Péter', 2001);
Lekérdezés: ki született 2001 előtt?
SELECT nev FROM diakok WHERE szuletesi_ev < 2001;
2. NoSQL példa: MongoDB dokumentum és lekérdezés
Dokumentum beillesztése:
db.diakok.insertOne({
nev: "Kiss Anna",
szuletesi_ev: 2002
});
Lekérdezés: azok a diákok, akik 2001 előtt születtek:
db.diakok.find({ szuletesi_ev: { $lt: 2001 } });
3. Vektor adatbázis példa: FAISS keresés (Python)
TegyĂĽk fel, hogy szövegeket átalakĂtunk vektorokká egy nyelvi modell (pl. `sentence-transformers`) segĂtsĂ©gĂ©vel, majd ezekben keresĂĽnk.
Embedding előállĂtás (pĂ©lda):
from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
model = SentenceTransformer('all-MiniLM-L6-v2')
dokumentumok = ["A kutya ugat.", "A macska nyávog.", "Az autó gyors."]
vektorok = model.encode(dokumentumok)
index = faiss.IndexFlatL2(vektorok.shape[1])
index.add(np.array(vektorok))
Keresés hasonló szöveg alapján:
kerdes = "Melyik állat nyávog?"
kerdes_vektor = model.encode([kerdes])
_, eredmenyek = index.search(np.array(kerdes_vektor), k=1)
print("Legjobban illeszkedő dokumentum:", dokumentumok[eredmenyek[0][0]])
Eredmény:
Legjobban illeszkedő dokumentum: A macska nyávog.
Ellenőrző kérdések
1. Mi a relációs adatbázis egyik alapvető jellemzője?
( ) Az adatok képek és hangfájlok formájában tárolódnak
(x) Az adatokat táblákban tároljuk sorok és oszlopok formájában
( ) Az adatbázisok nem rendelkeznek előre meghatározott szerkezettel
2. Mi biztosĂtja az adatintegritást egy reláciĂłs adatbázisban?
( ) A dokumentumalapú adattárolás
( ) Az adatok titkosĂtása
(x) Az elsĹ‘dleges kulcsok, idegen kulcsok Ă©s megszorĂtások
3. Melyik adatbázis tĂpus ideális gyakran változĂł adatszerkezetekhez?
(x) NoSQL
( ) Relációs (RDBMS)
( ) CSV fájl
4. Mit jelent az ACID mozaikszó „A” betűje az adatbázis tranzakciók esetében?
(x) Atomicity – oszthatatlanság
( ) Availability – elérhetőség
( ) Access – hozzáférhetőség
5. Melyik adatbázis tĂpusban használunk embeddingeket Ă©s k-NN keresĂ©st?
6. Melyik állĂtás igaz a MongoDB-re?
( ) Táblák és relációk alapján tárol adatokat
(x) JSON-szerű dokumentumokban tárolja az adatokat
( ) Kizárólag numerikus adatokat képes kezelni
7. Mi a referenciális integritás szerepe egy adatbázisban?
(x) BiztosĂtja, hogy az idegen kulcs által hivatkozott rekord lĂ©tezzen
( ) Az adatokat titkosĂtja
( ) Lehetővé teszi a képek tárolását
8. Melyik igaz a NewSQL adatbázisokra?
( ) Nem támogatják az SQL nyelvet
(x) ACID tulajdonságokat nyújtanak skálázható módon
( ) Strukturálatlan adatokat tárolnak kizárólag
9. Melyik nem vektor adatbázis?
(x) MySQL
( ) FAISS
( ) Milvus
10. Mi a BASE modell egyik jellemzője NoSQL rendszereknél?
(x) Eventually consistent – idővel konzisztenssé válik az adat
( ) A lekérdezések mindig pontos, teljes adatot adnak vissza
( ) Az adatok nem igényelnek tárolást