av Kinga Tajti för 7 årar sedan
378
Mer av detta
A gondolattérkép a 14. heti előadás diáiból, valamint az órán elhangzottakból készült. Ahol nincs forrás megjelölve, ott ezek az információk kerültek felhasználásra.
A tételt először Eric Brewer fogalmazta meg, miután több skálázhatósági problémával találkozott különböző rendszereken.
A tétel kimondja, hogy egy elosztott rendszer nem képes egyszerre teljesíteni a
által támasztott követelmények.
A valós életben használt rendszereknél igyekeznek úgy kialakítani az architektúrát, hogy a három alap képesség mindegyikével, ha korlátozottan is, de rendelkezzen a rendszer. Ezt úgy érik el, hogy az egyes képességekből engedményeket tesznek egy másik képesség javára. Egy rendszer csak kettő tulajdonságot valósíthat meg a háromból.
Forrás:http://weblabor.hu/cikkek/nosql-bevezeto
(Consistency + Partition tolarence): Konzisztens működés várható el ezektől a rendszerektől, és a hálózat elválása esetén is működnek, de cserébe romlik a hozzáférhetőség. A következő rendszereket lehet ide sorolni: Bigtable, HBase, MongoDB, Redis, Scalaris
(Availability + Partition tolerance): Ezek a rendszerek a lehetőségekhez képest mindig elérhetőek, és jól működnek a hálózat szétesése esetén is, cserébe feladják a konzisztens működést. Ilyenek például: Cassandra, SimpleDB, CouchDB, Riak, Tokio Cabinet
(Consistency + Availability): A konzisztenciát és a hozzáférhetőséget tartják szem előtt ezek a rendszerek, a hálózat szétesése esetén működésképtelenné válnak. Eszerint működő rendszerek: Oracle, MySQL, PostgreSQL, Vertica
Két értelmezése van
Fontos tudni, hogy a NoSQL nem egy konkrét termék, hanem egy termékcsalád.
Olyan elosztott adattárolókhoz készült, ahol nagy mennyiségű adattárolás szükséges (Facebook, Google, Amazon..)
A NoSQL adatbázisok elsősorban nem táblákban tárolják az adatokat, és általában nem használnak SQL nyelvet lekérdezésre.
A link egy videóra mutat, ahol nagy vonalakban bemutatják mi is az a NoSQL.
A BASE típusú rendszer elfogadja a CAP tételt, feladja a konzisztenciát és marad a hozzáférhetőség és a perfomancia.
A Base nagyon fontos koncepciója a NoSQL adatbázisok jelentős részének.
Forrás: http://www.w3resource.com/mongodb/nosql.php
Nincs minden pillanatban konzisztencia,de az egy idővel beáll.
A rendszerben az adatok módosulhatnak újabb inputok nélkül is.
(Tegyük fel, hogy "belájkoltam" valamit ezt nem látja mindenki, egyesek már igen, de egy idő után mások is fogják látni.)
A rendszer garantálja a rendelkezésre állást.
(Tehát bízom benne, hogy mindig működik a Facebook.)
Jelenleg 4 főbb csoportját lehet elkülöníteni a NoSQL adatbázisoknak.
Forrás:http://weblabor.hu/cikkek/nosql-bevezeto
https://hu.wikipedia.org/wiki/NoSQL
A dokumentumtárolók központi koncepciója a dokumentum. A dokumentum valamilyen formátumban tárolt információ.A dokumentumok a relációs adatbázisok tábláinak rekordjaitól abban térnek el, hogy minden rekordnak ugyanazok a mezői vannak egy táblában, míg a dokumentumok teljesen eltérő struktúrával rendelkezhetnek.
(például: CouchDB, MongoDB, SimpleDB ) Ma ezek a legnépszerűbbek.
A gráf-adatbázisok olyan adatok tárolására specializálódtak, amelyek jól modellezhetőek gráfként, azaz az adatok határozatlan számú kapcsolattal vannak összekötve.
(például: Neo4J, InfoGrid )
( BigTable leszármazottak: Hbase, HyperTable , Cassandra, PNUT)
A kulcs-érték adatbázisok séma nélküli adattárolást tesznek lehetővé, az értékeket a kulcsok segítségével lehet elérni illetve felülírni és ezen felül általában kevés műveletet támogatnak.
(például: Voldemort , Dynamo , Dynomite )
A kérdés, hogy mikor kell használni relációs adatbázist vagy NoSQL alakút?
Mi történik akkor ha tényleg nagy adatokkal szeretnénk foglalkozni?
Például:
Az internethálózaton hatalmas adatmennyiségből a másodperc tört része alatt kell eredményeket produkálniuk az osztott adatbázisoknak
Az IBM definiálta, hogy mi jellemzi a "Big Data"-t
Az osztott adatbázis egy olyan logikai adatbázis, amelyik fizikailag különböző helyeken lévő, egymással adatátviteli hálózattal összekapcsolt helyi adatbázisokból épül fel. Mindegyik adatbázis adatai bármelyik adatbázisból elérhetőek, dolgozni lehet velük. A felhasználónak nem kell tudnia, hogy az egyes adatok melyik helyi adatbázisban vannak elhelyezve.
Forrás: Baksa-Haskó Gabriella, Quittner Pál: Adatbázisok, adatbáziskezelő rendszerek, Budapest, Debreceni Egyetem Agrártudományi Centrum Agrárgazdasági és Vidékfejlesztési Kar, 2007. január
Mint azt már tanultuk, a relációs adatbázisokban az adatokat és a köztük lévő kapcsolatokat relációkban, szemléletesen tekintve táblázatokban, táblákban ábrázoljuk. Ezekből a feladatok megoldásához szükséges adatokat a relációs műveletek segítségével kapjuk meg.
Ilyen relációs adatbáziskezelő rendszer az Oracle is.
Napjaink adatbáziskezelő rendszerei szinte mindegyik relációs modellen alapszik. Szedjük össze e modell előnyeit illetve hátrányait.
Forrás: Baksa-Haskó Gabriella, Quittner Pál: Adatbázisok, adatbáziskezelő rendszerek, Budapest, Debreceni Egyetem Agrártudományi Centrum Agrárgazdasági és Vidékfejlesztési Kar, 2007. január
Nézzünk néhány lehetséges megoldást a problémák kiküszöbölésére:
A "Scale out" egy horizontális háttér-növekedést jelent, amikor több gépet alkalmazunk olcsóbb hardware-ek valamiféle trükközésével.
Ez tűnik alkalmasabbnak, mivel a hardware-ek alulmaradnak az adatmennyiséghez képest.
Lehetséges megoldás a skálázhatóság.
A "Scale up" azt jelenti, hogy a növekvő adatmennyiséghez erősebb gépeket építsünk fel: több processzort, több memóriát, erősebb hardware-ket, de a gépek számát nem növeljük.
Ezzel sajnos több probléma akad.
ACID: Atomicity (atomicitás), Consistency (konzisztencia), Isolation (izoláció), és Durability (tartósság) rövidítése. Ezek az adatbázis-kezelő rendszer tranzakció feldolgozó képességeinek alapelemei. Ezek nélkül az adatbázis integritása nem garantálható.
Forrás: https://hu.wikipedia.org/wiki/ACID
A végrehajtott tranzakciók változtatásait egy tartós adattárolón kell tárolni, hogy a szoftver vagy a hardver meghibásodása, áramszünet, vagy egyéb hiba esetén is megmaradjon.
A tranzakciók izolációja azt biztosítja, hogy az egy időben zajló tranzakciók olyan állapothoz vezetnek, mint amilyet sorban végrehajtott tranzakciók érnének el. Egy végrehajtás alatt álló tranzakció hatásai nem láthatóak a többi tranzakcióból.
A konzisztencia biztosítja, hogy az adatok a tranzakció előtti érvényes állapotból ismét egy érvényes állapotba kerüljenek. Minden erre vonatkozó szabálynak érvényesülnie kell.
Az atomicitás megköveteli, hogy több műveletet oszthatatlan műveletként lehessen végrehajtani, azaz vagy az összes művelet sikeresen végrehajtódik, vagy egyik sem.