1.1 Hogyan működik a NoSQL adatbázis

A NoSQL adatbázisok számos adatmodellt használnak az adatok eléréséhez és kezeléséhez. Az ilyen típusú adatbázisokat olyan adatintenzív alkalmazásokhoz optimalizálták, amelyek alacsony késleltetést és rugalmas adatmodelleket igényelnek. Mindezt a más típusú adatbázisokra jellemző szigorú adatkonzisztencia-követelmények enyhítésével érik el.

Vegyünk egy példát a sémamodellezésre egy egyszerű könyvadatbázishoz.

  • A relációs adatbázisokban a könyvbejegyzéseket gyakran több részre osztják (vagy "normalizálják"), és külön táblákban tárolják, amelyek kapcsolatait elsődleges és idegenkulcs-megszorítások határozzák meg. Ebben a példában a Könyvek táblázatban az ISBN , a Könyv címe és "ISBN"és"Szerző"a Szerző-ISBN,oszlopoka Szerző neveésa Szerző azonosítójatáblázatbanSzerzőkszámaa Kiadás. A relációs modellt úgy tervezték, hogy fenntartsa a hivatkozási integritást az adatbázis táblái között. Az adatokat normalizálják a redundancia csökkentése érdekében, és általában tárolásra optimalizálják.

  • A NoSQL-adatbázisban a könyvrekordot általában JSON-dokumentumként tárolják. Minden könyv vagy elem esetében az ISBN , a könyv címe , a kiadás száma , a szerző neve és a szerző azonosítója attribútumokként tárolódik egyetlen dokumentumban. Ebben a modellben az adatok az intuitív fejlesztés és a horizontális méretezhetőség érdekében optimalizálva vannak.

1.2 Mire használhatók a NoSQL adatbázisok?

A NoSQL adatbázisok jól illeszkednek számos modern alkalmazáshoz, például mobil-, játék-, webalkalmazásokhoz, amelyek rugalmas, méretezhető adatbázisokat igényelnek nagy teljesítménnyel és gazdag funkcionalitással, amelyek maximális használhatóságot biztosítanak.

  • Rugalmasság . A NoSQL-adatbázisok általában rugalmas sémákat kínálnak, amelyek gyorsabb fejlesztést tesznek lehetővé, és lehetővé teszik a növekményes megvalósítást. A rugalmas adatmodellek használatának köszönhetően a NoSQL adatbázisok kiválóan alkalmasak félig strukturált és strukturálatlan adatokra.

  • Skálázhatóság . A NoSQL-adatbázisokat úgy tervezték, hogy elosztott hardverfürtök segítségével méretezzék, nem drága, megbízható szerverek hozzáadásával. Egyes felhőszolgáltatók ezeket a műveleteket a háttérben futtatják, teljes körűen felügyelt szolgáltatást nyújtva.

  • Nagy teljesítmény . A NoSQL-adatbázisok meghatározott adatmodellekhez és hozzáférési mintákhoz vannak optimalizálva, hogy nagyobb teljesítményt érjenek el, mint a relációs adatbázisok.

  • Széles funkcionalitás . A NoSQL adatbázisok gazdag API-kat és adattípusokat kínálnak, amelyeket kifejezetten a megfelelő adatmodellekhez terveztek.

1.3 NoSQL adatbázisok típusai

A NoSQL adatbázisokat ott használják, ahol nem túl kényelmes az adatok táblák formájában történő tárolása. Ezért nagyon különböző formátumban tárolják őket. Általában a NoSQL-adatbázisoknak 6 fő adattípusa van.

DB kulcs-érték párokon alapul

A kulcs-érték párokat használó adatbázisok támogatják a magas szintű elkülöníthetőséget, és példátlan vízszintes skálázást biztosítanak, amely más típusú adatbázisokkal nem érhető el. A kulcsérték-adatbázisok jó használati esetei a játék-, hirdetés- és IoT-alkalmazások.

Például az Amazon DynamoDB stabil adatbázis-működést biztosít, legfeljebb néhány ezredmásodperces késleltetéssel bármilyen léptékben. Ez a robusztus teljesítmény volt a fő oka a Snapchat Stories DynamoDB-be való migrálásának, mivel ez a Snapchat funkció a legnagyobb tárhely-írási terheléshez kapcsolódik.

Dokumentum

Az alkalmazáskódban az adatok gyakran JSON-szerű formátumú objektumként vagy dokumentumként jelennek meg, mivel ez egy hatékony és intuitív adatmodell a fejlesztők számára. A dokumentumadatbázisok lehetővé teszik a fejlesztők számára, hogy adatokat tároljanak és lekérdezzenek egy adatbázisban, ugyanazt a dokumentummodellt használva, amelyet az alkalmazáskódjukban használnak. A dokumentumok és dokumentumadatbázisok rugalmas, félig strukturált, hierarchikus jellege lehetővé teszi, hogy az alkalmazási igényeknek megfelelően fejlődjenek.

A dokumentummodell jól működik katalógusokban, felhasználói profilokban és tartalomkezelő rendszerekben, ahol minden dokumentum egyedi és idővel változik. Az Amazon DocumentDB (kompatibilis a MongoDB-vel) és a MongoDB gyakori dokumentumadatbázisok, amelyek funkcionális és intuitív API-kat biztosítanak az agilis fejlesztéshez.

Grafikon adatbázisok

A gráf adatbázisok megkönnyítik az összetett adathalmazokkal dolgozó alkalmazások fejlesztését és futtatását. A gráfadatbázisok használatának tipikus példái a közösségi hálózatok, az ajánlási szolgáltatások, a csalásészlelő rendszerek és a tudásgráfok. Az Amazon Neptune egy teljesen felügyelt grafikon adatbázis-szolgáltatás. A Neptune támogatja a Property Graph and Resource Description Framework-et (RDF), amely két grafikus API-t kínál: TinkerPop és RDF/SPARQL. A gyakori gráf adatbázisok közé tartozik a Neo4j és a Giraph.

DB a memóriában

A játék- és hirdetési alkalmazások gyakran használnak ranglistákat, munkamenet-tárolást és valós idejű elemzést. Az ilyen képességek néhány mikromásodpercen belüli választ igényelnek, miközben a forgalom hirtelen növekedése bármikor lehetséges.

Az Amazon MemoryDB for Redis egy Redis-kompatibilis, megbízható memórián belüli adatbázis-szolgáltatás, amely ezredmásodpercekre csökkenti az olvasási késést, és tartósságot biztosít több rendelkezésre állási zónában. A MemoryDB kifejezetten nagy teljesítményre és megbízhatóságra készült, így a modern mikroszolgáltatás alapú alkalmazások elsődleges adatbázisaként használható.

Az Amazon ElastiCache egy teljesen felügyelt Redis és Memcached kompatibilis, memórián belüli gyorsítótárazási szolgáltatás, amely alacsony késleltetésű és nagy áteresztőképességű munkaterheléseket szolgál ki. Az olyan ügyfelek, mint a Tinder, akiknek valós időben kell reagálniuk az alkalmazásaikra, inkább a memórián belüli tárolórendszereket használják, mint a lemezes tárolórendszereket. Egy másik példa a célra épített adattárházra az Amazon DynamoDB Accelerator (DAX). A DAX lehetővé teszi, hogy a DynamoDB többször gyorsabban olvassa be az adatokat.

Keresés adatbázisokban

Sok alkalmazás naplókat hoz létre, hogy megkönnyítse a fejlesztők számára a hibaelhárítást és -javítást. Az Amazon OpenSearch egy erre a célra kialakított szolgáltatás az automatikusan generált adatfolyamok közel valós idejű megjelenítéséhez és elemzéséhez félig strukturált naplók és metrikák indexelésével, összesítésével és keresésével.

Ezenkívül az Amazon OpenSearch egy hatékony, nagy teljesítményű teljes szöveges keresőszolgáltatás. Az Expedia több mint 150 Amazon OpenSearch szolgáltatási tartományt, 30 TB adatot és 30 milliárd dokumentumot használ fel a legkülönfélébb, kritikus fontosságú felhasználási esetekre, a működési figyeléstől és hibaelhárítástól az elosztott alkalmazásverem-követésig és a költségoptimalizálásig.

1.4 SQL (relációs) és NoSQL (nem relációs) adatbázisok összehasonlítása

A NoSQL-nek számos előnye van, ezért legalább elméletben tudnod kell, hogy a szükséges eszköz már létezik, mielőtt magad írnád meg. Az alábbiakban összehasonlítom a NoSQL és az SQL adatbázisokat:

Megfelelő munkaterhelések

A relációs adatbázisokat tranzakciós és rendkívül konzisztens valós idejű tranzakciófeldolgozási (OLTP) alkalmazásokhoz tervezték, és jól illeszkednek a valós idejű analitikai feldolgozáshoz (OLAP).

A NoSQL adatbázisokat úgy tervezték, hogy számos adathozzáférési mintával működjenek, beleértve az alacsony késleltetésű alkalmazásokat is. A NoSQL keresési adatbázisokat félig strukturált adatok elemzésére tervezték.

Adatmodell

A relációs modell normalizálja az adatokat, és sorokból és oszlopokból álló táblázatokká alakítja. A séma mereven definiálja a táblákat, sorokat, oszlopokat, indexeket, táblák közötti kapcsolatokat és egyéb adatbáziselemeket. Egy ilyen adatbázis biztosítja a referenciaadatok integritását a táblák közötti kapcsolatokban.

A NoSQL adatbázisok számos adatmodellt kínálnak, például kulcs-érték párokat, dokumentumokat és grafikonokat, amelyek a nagy teljesítményre és méretezhetőségre vannak optimalizálva.

SAV Tulajdonságok

A relációs adatbázisok ACID tulajdonságokat biztosítanak: atomitás, konzisztencia, izoláció, megbízhatóság.

  • Az atomitás megköveteli, hogy a tranzakciót teljes egészében vagy egyáltalán ne hajtsák végre.
  • A konzisztencia azt jelenti, hogy amint egy tranzakció befejeződik, az adatoknak meg kell felelniük az adatbázissémának.
  • Az elkülönítés megköveteli, hogy a párhuzamos tranzakciók egymástól elkülönítve fussanak.
  • A megbízhatóság azt a képességet jelenti, hogy váratlan rendszerhiba vagy áramszünet után vissza lehet állni az utolsó mentett állapotba.

A NoSQL-adatbázisok gyakran kínálnak kompromisszumot, enyhítve az ACID-tulajdonságok merev követelményeit egy rugalmasabb adatmodell javára, amely lehetővé teszi a vízszintes skálázást. Ez teszi a NoSQL-t nagyszerű választássá a nagy sávszélességű, alacsony késleltetésű használati esetekhez, amelyek egyetlen példányon túl is vízszintes skálázást igényelnek.

Teljesítmény

A teljesítmény elsősorban a lemez alrendszerétől függ. A lekérdezések, indexek és táblaszerkezetek optimalizálása gyakran szükséges a maximális teljesítmény érdekében.

A teljesítmény általában az alapul szolgáló hardverfürt méretétől, a hálózati késleltetéstől és a hívó alkalmazástól függ.

Méretezés

A relációs adatbázisok általában a hardver számítási teljesítményének növelésével vagy külön másolatok hozzáadásával skálázódnak az olvasási munkaterhelésekhez.

A NoSQL-adatbázisok általában támogatják a nagy elválaszthatóságot az elosztott architektúrán alapuló, méretezhető hozzáférési minták révén. Ez javítja az átviteli sebességet és egyenletes teljesítményt biztosít szinte korlátlan léptékben.

API

Az adatok írására és lekérésére vonatkozó kérések SQL-ben íródnak. Ezeket a lekérdezéseket egy relációs adatbázis elemzi és hajtja végre.

Az objektumorientált API-k lehetővé teszik az alkalmazásfejlesztők számára az adatstruktúrák egyszerű írását és lekérését. A partíciós kulcsok használatával az alkalmazások kulcs-érték párok, oszlopkészletek vagy soros objektumokat és alkalmazásattribútumokat tartalmazó félig strukturált dokumentumokban kereshetnek.