User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:adattarolas_adatbazisok

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:muszaki_informatika:adattarolas_adatbazisok [2025/05/07 06:50] – [3. NoSQL adatbázisok] kneheztanszek:oktatas:muszaki_informatika:adattarolas_adatbazisok [2025/05/08 07:01] (current) – [D – Durability (Tartósság)] knehez
Line 1: Line 1:
 +~~NOTOC~~
 Régi anyag: https://docs.google.com/presentation/d/1_nmA1F4ag_O-qlJAE4TfVuyfLgSruZLW/edit?usp=sharing&ouid=110539736176923279178&rtpof=true&sd=true Régi anyag: https://docs.google.com/presentation/d/1_nmA1F4ag_O-qlJAE4TfVuyfLgSruZLW/edit?usp=sharing&ouid=110539736176923279178&rtpof=true&sd=true
  
Line 11: Line 12:
   * Az adatok szervezett tárolása lehetővé teszi azok gyors visszakeresését és elemzését.   * 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).   * 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**.+  * 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.   * 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ó.   * Automatizált folyamatokhoz (pl. webalkalmazások, gépi tanulás) szükséges egy megbízható háttértároló.
Line 31: Line 32:
     * Példa: SQL adatbázisok, Excel-táblák, CRM rendszerek.     * Példa: SQL adatbázisok, Excel-táblák, CRM rendszerek.
     * Jellemző: gyors kereshetőség, jól lekérdezhető.     * Jellemző: gyors kereshetőség, jól lekérdezhető.
-  +
   * **Félstrukturált adat**:   * **Félstrukturált adat**:
     * Nincs fix sémája, de tartalmaz címkéket vagy metaadatokat.     * Nincs fix sémája, de tartalmaz címkéket vagy metaadatokat.
Line 58: Line 59:
   * **Szigorú séma**: minden táblának előre meghatározott szerkezete van (mezőtípusok, kulcsok stb.).   * **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.   * **Kapcsolatok**: táblák között idegen kulcsokon keresztül hozunk létre kapcsolatokat.
-  * **ACID tulajdonságok**: +  * **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 isEzek különösen fontosak pénzügyi, vállalati vagy bármilyen más üzletkritikus rendszerekben.
-    * *Atomicity* – a tranzakciók oszthatatlanok. +
-    * *Consistency* – az adatbázis érvényességi szabályai nem sérülnek. +
-    * *Isolation* – párhuzamos tranzakciók nem befolyásolják egymást. +
-    * *Durability* – a végrehajtott tranzakciók tartósan megmaradnak.+
  
-==== Előnyök ====+**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). 
 + 
 +  * Példa: Egy megrendelés nem lehet úgy eltárolva, hogy nem tartozik hozzá létező vásárló. 
 + 
 +**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. 
 + 
 +  * Példa: Ha két ügyintéző módosítja ugyanazt az ügyfélrekordot, a rendszer biztosítja, hogy ezek ne írják felül egymást hibásan. 
 + 
 +**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. 
 + 
 +  * Példa: Ha egy utalás sikeresen lefutott, a pénzmozgás nem veszhet el újraindítás után sem. 
 + 
 +==== További előnyök ====
   * **Adatintegritás**: kulcsok, megszorítások és szabályok segítségével biztosítható.   * **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.   * **Lekérdezhetőség**: a SQL nyelv rendkívül erős és kifejező eszköztárat ad.
Line 167: Line 191:
 </code> </code>
 ===== 4. NewSQL adatbázisok ===== ===== 4. NewSQL adatbázisok =====
-  * **Cél**: Relációs modell + NoSQL skálázhatóság + 
-  * **Jellemzők**: +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. 
-    * ACID + elosztott tranzakciók + 
-  * **Példák**: +==== Miért jöttek létre? ==== 
-    * Google Spanner +  * A vállalatok továbbra is igénylik a **strukturált, relációs adatsémát** és az **ACID** garanciákat. 
-    * CockroachDB +  * Ugyanakkor szükség van a **modern skálázhatóságra**, amit a NoSQL rendszerek nyújtanak. 
-    * VoltDB+  * 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 ==== 
 +  * **Google Spanner** 
 +    * A Google saját globálisan elosztott relációs adatbázisa. 
 +    * Világszintű szinkronizációval garantálja a konzisztenciát. 
 +   
 +  * **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 ==== 
 +<code sql> 
 +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%'; 
 +</code> 
 + 
 +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 ===== ===== 5. Vektor adatbázisok =====
-  * **Motiváció**: + 
-    * Gépi tanulás, jelentés szerinti keresés +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. 
-    Embeddingek (szövegekképek, hangok reprezentációja+ 
-  * **Működés**: +==== Miért van rájuk szükség? ==== 
-    Objektum → Vektor (embedding+  A hagyományos adatbázisok nem alkalmasak jelentésalapú keresésre. 
-    Közelségi keresés: k-nn (legközelebbi szomszédok+  Az LLM-ek, képfeldolgozók, hangfelismerők vektorokat állítanak elő, amelyek geometriailag összehasonlíthatók. 
-  * **Példák**+  Példa„melyik másik dokumentum tartalmilag hasonlít ehhez a kérdéshez? 
-    FAISS (Facebook) + 
-    * Milvus +==== Hogyan működik? ==== 
-    * Weaviate +  Az objektumokat (pl. szövegkép**embedding**-gé alakítjuk egy neurális háló segítségével. 
-    * Pinecone +  * Az így kapott vektorokat egy vektoradatbázis tárolja. 
-    Chroma (LLM-es RAG rendszerekhez) +  Keresés során szintén vektort képezünk, majd megkeressük a **legközelebbi** (használatosk-NN – *k Nearest Neighbors*) vektorokat. 
-  * **Alkalmazások**: +  A hasonlóságot általában **koszinusz-hasonlóság**, **euklideszi távolság** vagy más metrika alapján számítják. 
-    * Dokumentumkeresés (RAG+ 
-    * Képkeresés +==== Jellemzők ==== 
-    * Ajánlórendszerek+  * 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éldavektoros 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: 
 +<code python> 
 +query_vector = model.encode("Milyen magas a Mount Everest?"
 +results = vector_db.search(query_vector, top_k=5) 
 +</code> 
 + 
 +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 ===== ===== 6. Tendenciák és jövőkép =====
Line 199: Line 297:
  
 ===== 7. Összefoglaló táblázat ===== ===== 7. Összefoglaló táblázat =====
-^ Típus          ^ Példa        ^ Előnyök                             ^ Hátrányok                          ^ 
-| Relációs       | PostgreSQL   | Stabil, jól ismert                 | Nehezen skálázható                 | 
-| NoSQL          | MongoDB      | Rugalmas, horizontálisan skálázható | Nincs szigorú séma, konzisztencia lehet gyenge | 
-| NewSQL         | CockroachDB  | ACID + skálázhatóság               | Új technológia, kisebb ökoszisztéma | 
-| Vektor         | FAISS        | Jelentésalapú keresés, ML támogatás | Nem SQL-alapú lekérdezések, új gondolkodásmód | 
  
-===== 8. Demó ===== +^ Típus          ^ Terméknevek              ^ Előnyök                                               ^ Hátrányok                                                 ^ 
-  SQL lekérdezés vs. MongoDB lekérdezés +| 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                  | 
-  * Szöveg → embedding → hasonló dokumentumok keresése vektor alapján+| 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: 
 +<code sql> 
 +CREATE TABLE diakok ( 
 +  id SERIAL PRIMARY KEY, 
 +  nev TEXT NOT NULL, 
 +  szuletesi_ev INTEGER 
 +); 
 +</code> 
 + 
 +Adatok beszúrása: 
 +<code sql> 
 +INSERT INTO diakok (nev, szuletesi_ev) 
 +VALUES ('Kiss Anna', 2002), ('Nagy Péter', 2001); 
 +</code> 
 + 
 +Lekérdezés: ki született 2001 előtt? 
 +<code sql> 
 +SELECT nev FROM diakok WHERE szuletesi_ev < 2001; 
 +</code> 
 + 
 +==== 2NoSQL példa: MongoDB dokumentum és lekérdezés ==== 
 +Dokumentum beillesztése: 
 +<code javascript> 
 +db.diakok.insertOne({ 
 +  nev: "Kiss Anna", 
 +  szuletesi_ev: 2002 
 +}); 
 +</code> 
 + 
 +Lekérdezés: azok a diákok, akik 2001 előtt születtek: 
 +<code javascript> 
 +db.diakok.find({ szuletesi_ev: { $lt: 2001 } }); 
 +</code> 
 + 
 +==== 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): 
 +<code python> 
 +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)) 
 +</code> 
 + 
 +Keresés hasonló szöveg alapján: 
 +<code python> 
 +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]]) 
 +</code> 
 + 
 +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?** 
 +  * ( ) Relációs adatbázisban 
 +  * ( ) Gráf adatbázisban 
 +  * (x) Vektor adatbázisban 
 + 
 +**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
tanszek/oktatas/muszaki_informatika/adattarolas_adatbazisok.1746600644.txt.gz · Last modified: 2025/05/07 06:50 by knehez