Nosql, adatbázisok: áttekintés, példák és alkalmazási területek

A NoSQL olyan tároló, amely nem felel meg a relációs adatbázis modellnek és jellemzőinek, nincsenek sémák, nem egyesülnek, és nem garantálják az ACID tulajdonságot. A NO-rendszer vízszintesen skálázódik, és széles mennyiségű számítógép fő memóriáját használja, megoldva a nagy mennyiségű információ problémája.

A saját tulajdonú típusok egy új módszertan a nem relációs NoSQL adatbázisok fejlesztésére, amelyeket nagyvállalatok valósítanak meg a vállalati igények kielégítésére, például a Google BigTable, amelyet az első NoSQL rendszernek tartanak, valamint az Amazon DynamoDB. Ezeknek a rendszereknek a sikere számos hasonló nyílt forráskódú adatbázis-rendszer és saját adatbázis fejlesztésének kezdetét jelentette, amelyek közül a legnépszerűbbek a Hypertable, Cassandra, MongoDB, DynamoDB,

NoSQL Evolution

Az SQL skálázhatósági problémát a Web felismerte.2.0 hatalmas, növekvő adat-és infrastrukturális igényekkel rendelkező vállalatok, mint például a Google, az Amazon és a Facebook. Megtalálták a sajátjukat megoldások a problémákra, BigTable, DynamoDB és Cassandra technológiák alkalmazásával. A növekvő érdeklődés számos NoSQL adatbázis-kezelő rendszer (DBMS) megjelenéséhez vezetett, különös tekintettel a teljesítményre, a megbízhatóságra és a következetességre. Számos meglévő indexelési struktúrát újra felhasználtak és továbbfejlesztettek a keresési és olvasási teljesítmény javítása érdekében.

A kifejezést Calor Strozzi találta ki 1998-ban, majd 2009-ben a Rackspace alkalmazottja, Eric Evans feltámasztotta, hogy megoldja a webes vállalatok problémáit nagy mennyiségű művelettel és információval.

A kifejezést Calor Strozzi találta ki

Az egyik legfontosabb különbség a NoSQL adatbázisok és a hagyományos relációs adatbázisok között az, hogy az előbbi a strukturálatlan tárolás egyik formája.

Strukturálatlan Tárolás

Így a NoSQL-nek nincs rögzített táblázatszerkezete, mint egy relációs rendszerben. Ez a táblázat a NoSQL és az SQL képességek rövid összehasonlítását tartalmazza.

A funkciók rövid összehasonlítása

Meg kell jegyezni, hogy a táblázat összehasonlítást mutat az adatbázis szintjén, nem pedig a mindkét modellt megvalósító DBMS-t. Ezek a rendszerek szabadalmaztatott, szabadalmaztatott módszereket kínálnak mindkét rendszer problémáinak és hiányosságainak leküzdésére, ami jelentősen javítja a teljesítményt és a megbízhatóságot.

Az információtárolók típusai

NoSQL kulcsérték egy hash táblát használnak

A NoSQL kulcs - érték adatbázis típus hash táblát használ, amelyben egy egyedi kulcs egy elemet jelöl. Logikai csoportokba szervezhetők, amelyek korlátaikon belül egyediséget igényelnek. Ez lehetővé teszi azonos kulcsok használatát különböző logikai csoportokban. Néhány DB megvalósítás gyorsítótárazási mechanizmusokat biztosít, amelyek jelentősen javítják teljesítményüket.

Minden, szüksége van az adatbázisban tárolt elemekkel való munka kulcsfontosságú. Az adatokat a JSON karakterlánc vagy BLOB (nagy bináris objektum). Az egyik a legnagyobb ennek a formának a hátrányai az adatbázis szintjén a következetesség hiánya. Ezt hozzá lehet adni a NoSQL adatbázis-fejlesztés során a programozók saját kóddal, de ez is több erőfeszítést igényel, a végrehajtás összetettsége és az idő miatt. A legfontosabb értéktárra épülő leghíresebb NoSQL adatbázis az Amazon DynamoDB.

A dokumentumtárak hasonlóak a kulcsértéktárakhoz, mivel nem tartalmaznak sémát, és értékmodellen alapulnak. Ezért mindkét típus azonos előnyök és hátrányok. Mindkettőnek nincs következetessége az adatbázis szintjén, ami megakadályozza az alkalmazásokat abban, hogy megbízhatóbb szolgáltatásokat nyújtsanak. Van azonban néhány kulcsfontosságú különbség közöttük. A dokumentumtárakban az értékek (dokumentumok) biztosítják a tárolt adatok kódolását. Ilyen kódolások lehetnek XML, JSON vagy BSON (bináris JSON kód). A dokumentumtárolást használó legnépszerűbb adatbázis-alkalmazás a MongoDB.

Az Oszlopcsalád-adatbázisban az adatokat oszlopokban tárolják, nem sorokban, ahogy a legtöbb relációs adatbázis-kezelő rendszerben történik. Az oszlop tárolása a következőkből áll egy vagy több oszlopcsalád, amelyek logikusan csoportosítanak bizonyos oszlopokat az adatbázisban. A kulcs a hatókörét meghatározó kulcsterület attribútummal rendelkező oszlopok számának azonosítására és megadására szolgál. Minden oszlop nevek és értékek sorait tartalmazza, vesszővel rendezve és elválasztva.

Az oszloptárolók gyors olvasási/írási hozzáféréssel rendelkeznek a tárolt adatokhoz. Ebben a sorban az oszlopok egy oszlopnak felelnek meg, és egy rekordként tárolódnak a lemezen. Ez gyorsabb hozzáférést biztosít az olvasási/írási műveletek során. A legnépszerűbb adatbázisok, amelyek NoSQL adatbázis oszloptárolót használnak, példák: Google BigTable, HBase és Cassandra.

A NoSQL Graph BD adatbázis irányított gráfstruktúrát használ az adatok ábrázolására. A gráf élekből és csomópontokból áll.

Hogyan működik az adatbázis

Az információtárolók típusai

A NoSQL úgy működik, mint egy fájl, amely az összes adatot tárolja, lehetővé teszi, hogy hatalmas mennyiségű információval dolgozzon és szervezze meg, hogy a felhasználók bármikor hozzáférhessenek hozzá, amikor szükségük van rá. Jelenleg különböző típusú NoSQL létezik, mindegyik másképp működik, a legtöbbet C-ben írják ++. Azt mondhatjuk, hogy a NoSQL adatbázisok a következők alapján központosítják funkcióikat:

  1. Vízszintes skálázhatóság méretének növelésével, az adatbázis tárhelyének növelésével előítéletek nélkül dolgozni.
  2. Felhő technológia. A legtöbb NoSQL adatbázis a felhőben tárolja tárolását, hogy több helyet szabadítson fel. Ezen felül vannak csomópontok az információ replikációjához.
  3. Az erőforrások hatékony felhasználása. A vállalatok jelenleg a technológiai átmenet folyamatában vannak, ezért gyakorlatilag szükséges, hogy rendelkezzenek egy adatbázissal, amely lehetővé teszi számukra új technológiai eszközök bevezetését. A NoSQL adatok pontosan erre működnek - egy rugalmas modell lehetővé teszi, hogy gyorsan alkalmazkodjon az új eszközökhöz.
  4. Szabad működési rendszer. A NoSQL nem rendelkezik merev rendszerrel, így a programozók szabadon módosíthatják az adatokat szükség szerint. Ez azt jelenti, hogy ha meg kell változtatnia egy mező vagy adattípus meghatározását, akkor ebben nincs probléma, ellentétben az SQL adatbázisokkal, ahol az ilyen változások nagy nehézségekkel járnak.
  5. Válasz sebesség. Az adatbázis sebességét a késleltetés méri, ami a válaszidő, a NoSQL aggódik a késleltetési idő lehető legnagyobb mértékű csökkentése miatt.
  6. Indexek használata. Az SQL-nek és a NoSQL-nek indexekre van szüksége, mert a lekérdezések nem végezhetők el több millió rekordban, ha az index nincs konfigurálva. A NoSQL-ben az indexeket B-fa formájában generálják, vagyis a csomópontok kiegyensúlyozottak, ami azt jelenti, hogy a keresési sebesség növekszik.

Irányítási rendszerek

Az alábbi táblázat rövid összehasonlítást nyújt a különböző NoSQL adatbázis-kezelő rendszerek között.

Irányítási rendszerek

A MongoDB rugalmas sématárolóval rendelkezik - ez azt jelenti, hogy a tárolt objektumoknak nem feltétlenül kell azonos szerkezettel vagy mezőkkel rendelkezniük. Van néhány optimalizálási funkciója is, amelyek elosztják az adatgyűjtéseket egymás között, ami általános teljesítménynövekedést és kiegyensúlyozottabb rendszert eredményez. Egyéb rendszerek A NoSQL, mint például az Apache CouchDB, szintén dokumentumtároló típusú adatbázis, és számos közös funkcióval rendelkezik a MongoDB-vel, kivéve, hogy az adatbázis a RESTful API segítségével érhető el.

A REST egy építészeti stílus, amely az összetevőkre alkalmazott építészeti korlátok összehangolt halmazából áll, csatlakozók, adatelemek pedig az interneten. Ez alapján "kliens-szerver" hontalan gyorsítótárazott kommunikációs protokoll, például HTTP protokoll. A RESTful alkalmazások HTTP kéréseket használnak adatok közzétételére, olvasására és törlésére. Ami az oszlopadatbázisokat illeti, a Hypertable egy C++ nyelven írt NoSQL adatbázis, amely a Google BigTable alapján készült. A Hypertable támogatja az adattárházak elosztását a csomópontok között a maximális skálázhatóság érdekében, mint például a MongoDB és a CouchDB.

Cassandra Hibrid Rendszer

Cassandra Hibrid Rendszer

Az egyik legszélesebb körben használt NoSQL adatbázis a Cassandra, amelyet a Facebook fejlesztett ki. Cassandra célja az volt, hogy hozzon létre egy DBMS, hogy nincs egyetlen pont a hiba, és biztosítja a maximális rendelkezésre állás. A Cassandra elsősorban oszloptároló adatbázis. Egyes tanulmányokban a Google BigTable alapú hibrid rendszerként említették, amely egy oszloptároló adatbázis és az Amazon DynamoDB, amely a kulcs-érték típusban rejlik. A Cassandra kulcsai a Google BigTable elosztott fájlrendszerén és a Dynamo elérhetőségi függvényein alapuló oszlopcsaládokra mutatnak (elosztott hash tábla).

A Cassandra főbb jellemzői a következők:

  1. Nincs egyetlen hiba. Ehhez meg kell futtatni egy fürt csomópontok, nem egyetlen gépen. Ez nem azt jelenti, hogy az egyes klaszterek adatai azonosak. Ha az egyik csomópontban hiba lép fel, a rajta lévő adatok nem lesznek elérhetők. Más csomópontok és adatok azonban továbbra is elérhetők lesznek.
  2. Az elosztott hash egy olyan séma, amely biztosítja a hash tábla funkcionalitását oly módon, hogy egy rés hozzáadása vagy eltávolítása nem változtatja meg jelentősen a kulcsok résidőkhöz való leképezését. Ez lehetővé teszi a kiszolgálók vagy csomópontok terhelésének elosztását a kapacitásuk szerint, és minimalizálja az állásidőt.
  3. Viszonylag könnyen használható kliens felület. Az Apache Thrift-t használja kliens felületéhez, amely több nyelven nyújt RPC klienst, de a legtöbb fejlesztő inkább az Apple Thrift alapú nyílt forráskódú alternatívákat részesíti előnyben, például a Hector-t.
  4. Adatreplikáció. Valójában a fürt többi csomópontjának adatait tükrözi. A replikáció lehet véletlenszerű vagy specifikus a maximális adatvédelem érdekében, például egy kulcs elhelyezésével egy másik adatközpont csomópontjában.
  5. , az elválasztási házirend eldönti, hogy hol és melyik csomóponton helyezze el a kulcsot. Ez lehet véletlenszerű vagy rendezett folyamat. Ha mindkét típusú elválasztási házirendet használja, a Cassandra megtalálja az egyensúlyt a terhelés és a lekérdezés teljesítményének optimalizálása között.
  6. Következetesség. A replikáció bonyolítja a következetességet. Ennek oka, hogy az összes csomópontot bármikor frissíteni kell a legfrissebb értékekkel vagy az olvasási művelet megkezdésekor.
  7. Olvasási / írási műveletek. Az ügyfél kérést küld egy csomópontnak. A csomópont a replikációs házirend szerint adatokat tárol a fürtben. Minden csomópont először módosítja a lekötési napló adatait, frissíti a tábla szerkezetét, és mindkét módosítás szinkronban történik. A rendszer egyetlen csomópontnak küld olvasási kérelmet, amely a felosztási/allokációs házirendnek megfelelő adatokat tartalmaz.

Indexelő szerkezetek

Indexelő szerkezetek

Az indexelés az a folyamat, amikor egy kulcsot összekapcsolunk a megfelelő adatbevitel helyével a DBMS-ben. A NoSQL adatbázisokban számos adatindexelő struktúra létezik. A B-fa az egyik a leggyakoribb index struktúrák DBMS-ben. Ebben a belső csomópontokban változó számú gyermekcsomópont lehet egy előre meghatározott tartományban.

Az egyik fő különbség a többi faszerkezettől, például az AVL-től, hogy a B-fa lehetővé teszi változó számú gyermekcsomópont használatát, ami kevesebb faegyensúlyozást, de nagyobb helyvesztést jelent. A B + fa a B-fák egyik legnépszerűbb változata. Ez a javulás (ellentétben a B-fával) megköveteli, hogy az összes kulcs levelekben legyen.

A T-Trees adatstruktúrát az AVL-Trees és a B-Trees funkciók kombinálásával fejlesztették ki. Az AVL fák az önkiegyensúlyozó bináris keresési fák típusúak, míg a B fák kiegyensúlyozatlanok, és minden csomópontnak különböző számú gyermeke lehet.

Egy T-fában a szerkezet nagyon hasonlít egy AVL-fához és egy B-fához. Minden csomópont egynél több tuple {kulcs-érték, mutató}. Ezenkívül a bináris keresést csomópontokkal és több sorozattal kombinálva használják a jobb memória és teljesítmény biztosítása érdekében.

A T-fa három típusú csomópontot tartalmaz: egy jobb és bal oldali csomópontot, egy levélcsomópontot gyermekcsomópontok nélkül, és egy féllevelű csomópontot csak egy gyermekcsomóponttal. Úgy gondolják, hogy a T-fák a legjobb általános teljesítményt nyújtják.

Gyakori adatbázis-alkalmazások hibái

Három van gyakori hibák, hogy a szervezetek, hogy amikor a NoSQL:

  1. A NoSQL több, mint skálázhatóság, nem lehet egyenlővé tenni a NoSQL-t egy webes skálával. A modern nem relációs adatbázisok elődei olyan cégek voltak, mint a Google és az Amazon, amelyek a webes környezetben a skálázhatósági problémák megoldására összpontosítottak.
  2. A fejlesztőknek fejleszteniük kell. Az egyik csúcskategóriás webes projektben egy rosszul kiválasztott integrációs csapat hatalmas problémát okozott, és időbe és dollármilliókba került megoldani.
  3. Bonyolult Eloszlás. Semmi sem helyettesítheti a tudást és a tapasztalatot sem a végrehajtásban, sem az adminisztrációs folyamatban. Előfordul, hogy egy helyi fejlesztési gépen gyorsan végrehajtott lekérdezés nem fog vízszintesen méretezni több száz gépen. A modern alkalmazás elosztott architektúrával rendelkezik, ugyanakkor sok felhasználó is gyors válaszokat igényel.

A NoSQL előnyei

A NoSQL és az SQL adatbázisok versenyeznek egymással, de sok szakértő szerint az előbbinek több előnye van a hagyományos relációs adatbázisokkal szemben:

  1. Egyszerű és rugalmas szerkezettel rendelkeznek.
  2. Nincs vázlata.
  3. Alapján "kulcs-érték párok".
  4. Egyes típusok közé tartozik az oszlopok, dokumentumok, kulcsértékek, grafikonok, objektumok, XML és egyéb adatmódok tárolása.
  5. Általában az adatbázis minden értékének van kulcsa. Egyes adattárak lehetővé teszik a fejlesztők számára, hogy sorosított objektumokat tároljanak, nem csak egyszerű karakterláncértékeket.
  6. A nyílt forráskódú NoSQL nem igényel drága licencdíjakat, és olcsó hardveren is futtatható, ami költséghatékonyabbá teszi a telepítést.
  7. A NoSQL használatakor, függetlenül attól, hogy nyitott vagy védett-e, a kiterjesztés könnyebb és olcsóbb, mint amikor dolgozik relációs adatbázisokkal. Ezt vízszintes méretezéssel és terheléselosztással hajtják végre az összes csomóponton, nem pedig a függőleges méretezés típusával, amelyet általában a relációs adatbázis-rendszerekben hajtanak végre, és a fő gazdagépet egy erősebbre cseréli.

A No-rendszer hátrányai

A NoSQL adatbázisok különböző módon működnek, mindez a benne tárolt dokumentumoktól függ, de azt mondhatjuk, hogy fontos eszköz a modern vállalatokban, mert tárolják a felhasználók és a műveletek szükséges információit.

Nem tökéletesek, ezért nem mindig a helyes választás programozóknak. Az egy kéz, , legtöbbjük nem támogatja azokat a megbízhatósági funkciókat, amelyeket kezdetben a relációs adatbázis-rendszerek támogatnak. Ezeket a megbízhatósági jellemzőket atomicitásként, konzisztenciaként, elszigeteltségként és tartósságként lehet összefoglalni. Ez azt jelenti, hogy a NoSQL, amely nem támogatja ezeket a funkciókat, következetes kereskedést biztosít a teljesítmény és a skálázhatóság érdekében.

Annak érdekében, hogy a megbízhatóság és a következetesség jellemzői, a fejlesztők végre kell hajtaniuk a saját védett kódot, ami növeli a rendszer összetettségét. Ez korlátozza azon alkalmazások számát, amelyek a NoSQL-re támaszkodhatnak a biztonságos és megbízható tranzakciókhoz, például a bankrendszerekhez.

NoSQL adatbázis alkalmazása

A NoSQL adatbázis használata

Az akadémikusok, mérnökök, szoftverépítészek, alkalmazástervezők és programozók mélyebb ismereteket igényelnek az adatstruktúrákról, amelyek korábban nem voltak szükségesek a relációs adatbázisokhoz. A piacvezetők Hadoop és MongoDB, majd "Cassandra", "Retek", CouchDB és "Riakom". A Modern kutatások azt mutatják, hogy két NoSQL termék uralja a rendszermérnököket, software architects, a fejlesztők között egy tucat hasonló technológiák MongoDB Hadoop.

A piac azt mutatja, hogy a nagyvállalatok új NoSQL adatbázis-fejlesztési módszereket alkalmaznak és integrálják termékeikbe (Oracle, IBM). Az adatbázis piac fokozatosan átalakul a standard PasS, Redis és MongoDB, Edlich. Az olyan termékek, mint a Neo4j, a MongoDB és a CouchDB, a kockázati tőke támogatásának és befektetésének tárgyává váltak.

Cikkek a témában