tanszek:oktatas:muszaki_informatika:adattarolas_adatbazisok
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tanszek:oktatas:muszaki_informatika:adattarolas_adatbazisok [2025/05/07 06:52] – [4. NewSQL adatbázisok] knehez | tanszek: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:// | Régi anyag: https:// | ||
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, |
* 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, | * Automatizált folyamatokhoz (pl. webalkalmazások, | ||
Line 31: | Line 32: | ||
* Példa: SQL adatbázisok, | * Példa: SQL adatbázisok, | ||
* Jellemző: gyors kereshetőség, | * Jellemző: gyors kereshetőség, | ||
- | | + | |
* **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, | * **Szigorú séma**: minden táblának előre meghatározott szerkezete van (mezőtípusok, | ||
* **Kapcsolatok**: | * **Kapcsolatok**: | ||
- | * **ACID tulajdonságok**: | + | * **ACID tulajdonságok**: |
- | * *Atomicity* – a tranzakciók oszthatatlanok. | + | |
- | * *Consistency* – az adatbázis érvényességi szabályai nem sérülnek. | + | |
- | * *Isolation* – párhuzamos | + | |
- | * *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 | ||
+ | | C | Consistency | ||
+ | | I | Isolation | ||
+ | | D | Durability | ||
+ | **A – Atomicity (Atomszerűség)** | ||
+ | Egy tranzakció vagy teljes egészében végrehajtódik, | ||
+ | |||
+ | * Példa: Ha egy banki utalás során először levonjuk a pénzt A számláról, | ||
+ | |||
+ | **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, | ||
+ | |||
+ | * 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, | ||
+ | |||
+ | **D – Durability (Tartósság)** | ||
+ | Ha egy tranzakció véglegesen befejeződik, | ||
+ | |||
+ | * 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**: | * **Adatintegritás**: | ||
* **Lekérdezhetőség**: | * **Lekérdezhetőség**: | ||
Line 220: | Line 244: | ||
===== 5. Vektor adatbázisok ===== | ===== 5. Vektor adatbázisok ===== | ||
- | | + | |
- | * Gépi tanulás, jelentés szerinti keresés | + | A vektor adatbázisok új generációs adatbázis-rendszerek, |
- | * Embeddingek | + | |
- | * **Működés**: | + | ==== Miért van rájuk szükség? ==== |
- | * Objektum → Vektor | + | |
- | * Közelségi | + | |
- | * **Példák**: | + | |
- | | + | |
- | * Milvus | + | ==== Hogyan működik? ==== |
- | * Weaviate | + | |
- | * Pinecone | + | * Az így kapott vektorokat egy vektoradatbázis tárolja. |
- | | + | |
- | * **Alkalmazások**: | + | * A hasonlóságot általában **koszinusz-hasonlóság**, |
- | * Dokumentumkeresés | + | |
- | * 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 | ||
+ | * Gyors és hatékony **nagy dimenziójú adatok** keresése. | ||
+ | |||
+ | ==== Előnyök ==== | ||
+ | * Jelentésalapú | ||
+ | * Ideális LLM-alapú rendszerekhez, | ||
+ | * 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? | ||
+ | * A pontosság függ az embedding minőségétől és a választott metrikától | ||
+ | |||
+ | ==== Népszerű vektor adatbázisok ==== | ||
+ | | ||
+ | * **Milvus** – nyílt forráskódú, | ||
+ | * **Weaviate** – REST API + GraphQL támogatás, | ||
+ | * **Pinecone** – felhőalapú, | ||
+ | * **Chroma** – egyszerű integráció LangChain/ | ||
+ | |||
+ | ==== Példa: vektoros keresés szövegek között ==== | ||
+ | 1. Szöveg → embedding: `" | ||
+ | 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(" | ||
+ | results = vector_db.search(query_vector, | ||
+ | </ | ||
+ | |||
+ | 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 243: | Line 297: | ||
===== 7. Összefoglaló táblázat ===== | ===== 7. Összefoglaló táblázat ===== | ||
- | ^ Típus | ||
- | | Relációs | ||
- | | NoSQL | MongoDB | ||
- | | NewSQL | ||
- | | Vektor | ||
- | ===== 8. Demó ===== | + | ^ Típus |
- | | + | | Relációs (RDBMS) | MySQL, PostgreSQL, Oracle | Stabil, jól definiált séma, SQL támogatás, |
- | | + | | NoSQL | MongoDB, Redis, Cassandra, Neo4j | Rugalmas séma, jól skálázható, |
+ | | NewSQL | ||
+ | | Vektor | ||
+ | |||
+ | |||
+ | ===== 8. Példa | ||
+ | |||
+ | Az alábbi példák bemutatják, | ||
+ | |||
+ | ==== 1. Relációs adatbázis: | ||
+ | Tábla létrehozása: | ||
+ | <code sql> | ||
+ | CREATE TABLE diakok ( | ||
+ | id SERIAL PRIMARY KEY, | ||
+ | nev TEXT NOT NULL, | ||
+ | szuletesi_ev INTEGER | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | Adatok beszúrása: | ||
+ | <code sql> | ||
+ | INSERT INTO diakok (nev, szuletesi_ev) | ||
+ | VALUES ('Kiss Anna', 2002), ('Nagy Péter', | ||
+ | </ | ||
+ | |||
+ | Lekérdezés: | ||
+ | <code sql> | ||
+ | SELECT nev FROM diakok WHERE szuletesi_ev < 2001; | ||
+ | </ | ||
+ | |||
+ | ==== 2. NoSQL példa: | ||
+ | Dokumentum beillesztése: | ||
+ | <code javascript> | ||
+ | db.diakok.insertOne({ | ||
+ | | ||
+ | szuletesi_ev: | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | Lekérdezés: | ||
+ | <code javascript> | ||
+ | db.diakok.find({ szuletesi_ev: | ||
+ | </ | ||
+ | |||
+ | ==== 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, | ||
+ | |||
+ | Embedding előállítás (példa): | ||
+ | <code python> | ||
+ | from sentence_transformers import SentenceTransformer | ||
+ | import faiss | ||
+ | import numpy as np | ||
+ | |||
+ | model = SentenceTransformer(' | ||
+ | dokumentumok = ["A kutya ugat.", | ||
+ | |||
+ | vektorok = model.encode(dokumentumok) | ||
+ | index = faiss.IndexFlatL2(vektorok.shape[1]) | ||
+ | index.add(np.array(vektorok)) | ||
+ | </ | ||
+ | |||
+ | Keresés | ||
+ | <code python> | ||
+ | kerdes = " | ||
+ | kerdes_vektor = model.encode([kerdes]) | ||
+ | _, eredmenyek = index.search(np.array(kerdes_vektor), | ||
+ | |||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | Eredmény: | ||
+ | '' | ||
+ | |||
+ | ===== 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 | ||
+ | * (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, | ||
+ | * ( ) 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.1746600771.txt.gz · Last modified: 2025/05/07 06:52 by knehez