Nosql, databázy: prehľad, príklady a oblasti použitia

NoSQL je úložisko, ktoré nezodpovedá modelu relačnej databázy a ich charakteristikám, nemá schémy, nezlučuje sa a nezaručuje vlastnosť ACID. Systém bez váh horizontálne a využíva veľké množstvo hlavnej pamäte počítača, riešenie problém veľkého množstva informácií.

Proprietárne proprietárne typy sú novou metodikou vývoja nerelačných databáz NoSQL, implementovanou veľkými spoločnosťami na uspokojenie podnikových potrieb, ako je napríklad BigTable spoločnosti Google, ktorý sa považuje za prvý systém NoSQL, a Amazon DynamoDB. Úspech týchto systémov znamenal začiatok vývoja množstva podobných databázových systémov s otvoreným zdrojovým kódom a proprietárnych databáz, z ktorých najobľúbenejšie sú Hypertable, Cassandra, MongoDB, DynamoDB,

NoSQL Evolution

Problém škálovateľnosti SQL bol rozpoznaný webom.2.0 spoločnosti s obrovskými, rastúcimi potrebami v oblasti údajov a infraštruktúry, ako sú Google, Amazon a Facebook. Našli svoje vlastné riešenia problémov, implementáciou technológií BigTable, DynamoDB a Cassandra. Rastúci záujem viedol k vzniku mnohých systémov správy databáz NoSQL (DBMS) s dôrazom na výkon, spoľahlivosť a konzistentnosť. Niekoľko existujúcich indexovacích štruktúr bolo opätovne použitých a vylepšených, aby sa zlepšil výkon vyhľadávania a čítania.

Tento termín vytvoril Calor Strozzi už v roku 1998 a v roku 2009 ho vzkriesil zamestnanec Rackspace Eric Evans, aby vyriešil problémy webových spoločností s veľkým objemom operácií a informácií.

Termín bol vytvorený Calor Strozzi

Jeden kľúčový rozdiel medzi databázami NoSQL a tradičnými relačnými databázami je v tom, že prvá je formou neštruktúrovaného úložiska.

Neštruktúrované skladovanie

NoSQL teda nemá pevnú štruktúru tabuľky, ako v relačnom systéme. Táto tabuľka poskytuje stručné porovnanie možností NoSQL a SQL.

Stručné porovnanie funkcií

Je potrebné poznamenať, že tabuľka zobrazuje porovnanie na úrovni databázy, a nie DBMS, ktoré implementujú oba modely. Tieto systémy poskytujú proprietárne metódy na prekonanie niektorých problémov a nedostatkov oboch systémov, čo výrazne zvyšuje výkon a spoľahlivosť.

Typy informačných úložísk

Hodnota kľúča NoSQL používa sa hašovacia tabuľka

Typ databázy NoSQL kľúč-hodnota používa hašovaciu tabuľku, v ktorej jedinečný kľúč označuje prvok. Môžu byť usporiadané do logických skupín, ktoré si vyžadujú jedinečnosť v rámci svojich limitov. To vám umožní používať rovnaké kľúče v rôznych logických skupinách. Niektoré implementácie DB poskytujú mechanizmy ukladania do vyrovnávacej pamäte, ktoré výrazne zlepšujú ich výkon.

Všetky, potrebujete práca s položkami uloženými v databáze je kľúčom. Údaje sa ukladajú ako JSON reťazec alebo BLOB (veľký binárny objekt). Jeden z najväčší nevýhodou tohto formulára je nedostatok konzistencie na úrovni databázy. Toto je možné pridať počas vývoja databázy NoSQL programátormi s vlastným kódom, ale vyžaduje si to aj väčšie úsilie kvôli zložitosti implementácie a času. Najznámejšou databázou NoSQL postavenou na Obchode s kľúčovými hodnotami je Amazon DynamoDB.

Úložiská dokumentov sú podobné úložiskám kľúčových hodnôt v tom, že neobsahujú schému a sú založené na hodnotovom modeli. Preto majú oba typy rovnaké výhody a nevýhody. Obom chýba konzistentnosť na úrovni databázy, čo bráni aplikáciám poskytovať spoľahlivejšie funkcie. Medzi nimi však existujú určité kľúčové rozdiely. V archívoch dokumentov poskytujú hodnoty (dokumenty) kódovanie uložených údajov. Takéto kódovania môžu byť XML, JSON alebo BSON (binárny kód JSON). Najobľúbenejšou databázovou aplikáciou využívajúcou ukladanie dokumentov je MongoDB.

V databáze rodiny stĺpcov sú údaje uložené v stĺpcoch, nie v riadkoch, ako je to vo väčšine systémov správy relačných databáz. Skladovanie stĺpcov pozostáva z jeden alebo viaceré skupiny stĺpcov, ktoré logicky zoskupujú určité stĺpce v databáze. Kľúč sa používa na identifikáciu a určenie počtu stĺpcov s atribútom kľúčového priestoru, ktorý definuje jeho rozsah. Každý stĺpec obsahuje n-tice mien a hodnôt, zoradené a oddelené čiarkami.

Obchody so stĺpcami majú rýchly prístup na čítanie/zápis k uloženým údajom. V ňom stĺpce riadkov zodpovedajú jednému stĺpcu a sú uložené ako jeden záznam na disku. To poskytuje rýchlejší prístup počas operácií čítania a zápisu. Najobľúbenejšie databázy, ktoré používajú ukladanie stĺpcov databázy NoSQL, príklady: Google BigTable, HBase a Cassandra.

Databáza NoSQL Graph BD používa na reprezentáciu údajov štruktúru riadeného grafu. Graf sa skladá z hrán a uzlov.

Ako funguje databáza

Typy informačných úložísk

NoSQL funguje ako súbor, ktorý ukladá všetky údaje, umožňujú vám pracovať s obrovským množstvom informácií a organizovať ich tak, aby k nim mali používatelia prístup kedykoľvek, keď ich potrebujú. V súčasnosti existujú rôzne typy NoSQL, každý z nich funguje inak, väčšina je napísaná v jazyku C ++. Môžeme povedať, že databázy NoSQL sústreďujú svoje funkcie na základe:

  1. Horizontálna škálovateľnosť s možnosťou zväčšenia jej veľkosti, zväčšenia úložného priestoru v databáze bez predsudkov pracovať.
  2. Cloudová technológia. Väčšina databáz NoSQL zakladá svoje úložisko v cloude, aby uvoľnila viac miesta. Okrem toho majú uzly na replikáciu informácií.
  3. Efektívne využívanie zdrojov. Spoločnosti sú v súčasnosti v procese technologického prechodu, takže je prakticky nevyhnutné, aby mali databázu, ktorá im umožňuje implementovať nové technologické nástroje. NoSQL data funguje presne na to - flexibilný model vám umožňuje rýchlo sa prispôsobiť novým nástrojom.
  4. Schéma bezplatného fungovania. NoSQL nemá rigidný systém, takže programátori majú slobodu meniť údaje podľa potreby. To znamená, že ak potrebujete zmeniť definíciu poľa alebo typu údajov, Potom v tom nie je žiadny problém, na rozdiel od databáz SQL, kde sú zmeny tohto druhu spojené s veľkými ťažkosťami.
  5. Rýchlosť odozvy. Rýchlosť v databáze sa meria oneskorením, čo je čas odozvy, NoSQL sa zaoberá čo najväčším znížením času oneskorenia.
  6. Používanie indexov. SQL a NoSQL potrebujú indexy, pretože dotazy nie je možné vykonať v miliónoch záznamov, ak index nebol nakonfigurovaný. V NoSQL sa indexy generujú vo forme B-stromu, to znamená, že uzly sú vyvážené, čo znamená zvýšenie rýchlosti vyhľadávania.

Manažérske systémy

Nasledujúca tabuľka poskytuje stručné porovnanie medzi rôznymi systémami správy databáz NoSQL.

Manažérske systémy

MongoDB má flexibilné ukladanie schém - to znamená, že uložené objekty nemusia mať nevyhnutne rovnakú štruktúru alebo polia. Má tiež niektoré optimalizačné funkcie, ktoré medzi sebou distribuujú zbierky údajov, čo vedie k celkovému zlepšeniu výkonu a vyváženejšiemu systému. Ostatné systémy NoSQL, ako napríklad Apache CouchDB, je tiež databázou typu ukladania dokumentov a má mnoho spoločných funkcií s MongoDB, okrem toho, že k databáze je možné pristupovať pomocou RESTful API.

REST je architektonický štýl pozostávajúci z koordinovaného súboru architektonických obmedzení aplikovaných na komponenty, konektory a Dátové prvky na internete. Je založená na "klient-server" komunikačný protokol bez medzipamäte, napríklad protokol HTTP. Aplikácie RESTful používajú požiadavky HTTP na publikovanie, čítanie a mazanie údajov. Pokiaľ ide o stĺpcové databázy, Hypertable je databáza NoSQL napísaná v C++ a založená na Google BigTable. Hypertable podporuje distribúciu dátových skladov cez uzly pre maximálnu škálovateľnosť, ako sú MongoDB a CouchDB.

Cassandra Hybrid System

Cassandra Hybrid System

Jednou z najpoužívanejších databáz NoSQL je Cassandra vyvinutá spoločnosťou Facebook. Cieľom Cassandry bolo vytvoriť DBMS, ktorý nemá jediný bod zlyhania a poskytuje maximálnu dostupnosť. Cassandra je hlavne databáza ukladania stĺpcov. V niektorých štúdiách bol spomenutý ako hybridný systém založený na Google BigTable, čo je databáza ukladania stĺpcov a Amazon DynamoDB, ktorá je vlastná typu kľúč-hodnota. Kľúče v Cassandre ukazujú na množinu rodín stĺpcov založených na distribuovanom súborovom systéme Google BigTable a funkciách dostupnosti Dynamo (distribuovaná hash tabuľka).

Medzi hlavné črty Cassandry patria:

  1. Žiadny jediný bod zlyhania. Aby to bolo možné, musí bežať na klastri uzlov, nie na jednom počítači. To neznamená, že údaje o každom klastri sú rovnaké. Ak dôjde k poruche v jednom z uzlov, údaje na ňom nebudú k dispozícii. Ďalšie uzly a údaje však budú stále k dispozícii.
  2. Distribuované hashovanie je schéma, ktorá poskytuje funkčnosť hašovacej tabuľky takým spôsobom, že pridanie alebo odstránenie jedného slotu významne nezmení mapovanie kľúčov na sloty. To vám umožní rozložiť zaťaženie serverov alebo uzlov podľa ich kapacity a minimalizovať prestoje.
  3. Relatívne ľahko použiteľné klientske rozhranie. Používa Apache Thrift pre svoje klientske rozhranie, ktoré poskytuje klienta RPC v niekoľkých jazykoch, Ale väčšina vývojárov uprednostňuje alternatívy otvoreného zdroja založené na Apple Thrift, napríklad Hector.
  4. Replikácia údajov. V skutočnosti odráža údaje pre ďalšie uzly v klastri. Replikácia môže byť náhodná alebo špecifická pre maximálnu ochranu údajov, napríklad umiestnením najbežnejších dátových centier do uzla iného dátového centra.
  5. Separačná Politika rozhoduje o tom, kde a na ktorý uzol umiestniť kľúč. Môže to byť náhodný alebo usporiadaný proces. Pri použití oboch typov politík oddelenia môže Cassandra nájsť rovnováhu medzi optimalizáciou výkonu zaťaženia a dotazu.
  6. Konzistencia. Replikácia komplikuje konzistenciu. Je to tak preto, lebo všetky uzly musia byť aktualizované kedykoľvek s najnovšími hodnotami alebo počas začiatku operácie čítania.
  7. Akcie na čítanie/zápis. Klient odošle požiadavku na jeden uzol. Uzol podľa politiky replikácie ukladá údaje do klastra. Každý uzol najskôr upraví údaje v protokole odovzdania a aktualizuje štruktúru tabuľky a obe zmeny sa vykonajú synchrónne. Požiadavka na čítanie sa odošle do jedného uzla, ktorý obsahuje údaje v súlade s politikou rozdelenia / prideľovania.

Indexovacie štruktúry

Indexovacie štruktúry

Indexovanie je proces prepojenia kľúča s umiestnením zodpovedajúceho zadávania údajov v DBMS. V databázach NoSQL sa používa veľa štruktúr indexovania údajov. B-strom je jedným z indexové štruktúry v DBMS. V ňom môžu mať interné uzly premenlivý počet podriadených uzlov v preddefinovanom rozsahu.

Jedným z hlavných rozdielov od iných stromových štruktúr, ako je AVL, je to, že B-strom vám umožňuje mať premenlivý počet podriadených uzlov, čo znamená menšie vyváženie stromov, ale väčšiu stratu miesta. B + strom je jednou z najobľúbenejších variantov B-stromov. Toto vylepšenie (na rozdiel od stromu B) vyžaduje, aby boli všetky kľúče v listoch.

Dátová štruktúra t-stromov bola vyvinutá kombináciou funkcií AVL-stromy a B-stromy. Stromy AVL sú typu samovyvažovacích binárnych vyhľadávacích stromov, zatiaľ čo stromy B sú nevyvážené a každý uzol môže mať iný počet detí.

V strome T je štruktúra veľmi podobná stromu AVL a stromu B. Každý uzol ukladá viac ako jednu n-ticu {key-value, pointer}. Okrem toho sa binárne vyhľadávanie používa v kombinácii s uzlami a viacerými n-ticami, aby sa zabezpečila lepšia pamäť a výkon.

T-strom má tri typy uzlov: s pravým a ľavým podradeným uzlom, listovým uzlom bez podradených uzlov a polovičným uzlom iba s jedným podradeným uzlom. Predpokladá sa, že T-stromy majú najlepší celkový výkon.

Bežné chyby databázovej aplikácie

Existujú tri bežné chyby, ktoré organizácie robia, pokiaľ ide o NoSQL:

  1. NoSQL je viac ako škálovateľnosť, NoSQL nemožno prirovnať k webovej mierke. Predchodcami moderných nerelačných databáz boli spoločnosti ako Google a Amazon, ktoré sa zameriavali na riešenie problémov so škálovateľnosťou vo webovom prostredí.
  2. Developeri sa musia rozvíjať. V jednom špičkovom webovom projekte vytvoril zle vybraný integračný tím obrovský problém a jeho vyriešenie trvalo čas a milióny dolárov.
  3. Komplikovaná distribúcia. Nič nemôže nahradiť vedomosti a skúsenosti ani v implementácii, ani v administratívnom procese. Stáva sa, že dotaz, ktorý sa vykoná rýchlo na lokálnom vývojovom stroji, sa nebude horizontálne škálovať na stovkách strojov. Moderná aplikácia má distribuovanú architektúru a veľa používateľov súčasne, čo si vyžaduje rýchle odpovede.

Výhody NoSQL

Databázy NoSQL a SQL si navzájom konkurujú, ale podľa mnohých odborníkov má prvá z nich oproti tradičným relačným databázam viac výhod:

  1. Majú jednoduchú a flexibilnú štruktúru.
  2. Nemá žiadne schémy.
  3. Na základe "páry kľúč-hodnota".
  4. Niektoré typy zahŕňajú ukladanie stĺpcov, dokumentov, kľúčových hodnôt, grafov, objektov, XML a ďalších režimov údajov.
  5. Každá hodnota v databáze má zvyčajne kľúč. Niektoré úložiská umožňujú vývojárom ukladať serializované objekty, nielen jednoduché hodnoty reťazcov.
  6. Open source NoSQL nevyžaduje drahé licenčné poplatky a môže bežať na lacnom hardvéri, vďaka čomu je ich nasadenie nákladovo efektívne.
  7. Pri práci s NoSQL, bez ohľadu na to, či sú otvorené alebo proprietárne, je rozšírenie jednoduchšie a lacnejšie, ako pri práci s relačnými databázami. Vykonáva sa horizontálnym škálovaním a distribúciou zaťaženia vo všetkých uzloch, a nie typom vertikálneho škálovania, ktoré sa zvyčajne vykonáva v relačných databázových systémoch a nahrádza hlavného hostiteľa výkonnejším.

Nevýhody systému bez systému

Databázy NoSQL fungujú rôznymi spôsobmi, všetko závisí od dokumentov, ktoré sú v nich uložené, ale môžeme povedať, že sú dôležitým nástrojom v moderných spoločnostiach, pretože ukladajú potrebné informácie o používateľoch a operáciách.

Nie sú dokonalé, takže nie sú vždy správna voľba pre programátorov. Na stránke jednou rukou, , väčšina z nich nepodporuje funkcie spoľahlivosti, ktoré sú pôvodne podporované relačnými databázovými systémami. Tieto charakteristiky spoľahlivosti možno zhrnúť ako atomicita, konzistencia, izolácia a trvanlivosť. To znamená, že NoSQL, ktoré tieto funkcie nepodporujú, poskytujú konzistentné obchodovanie s výkonom a škálovateľnosťou.

V záujme zachovania funkcií spoľahlivosti a konzistencie musia vývojári implementovať svoj vlastný proprietárny kód, ktorý zvyšuje zložitosť systému. To obmedzuje počet aplikácií, ktoré sa môžu spoľahnúť na NoSQL pri bezpečných a spoľahlivých transakciách, ako sú bankové systémy.

Aplikácia databázy NoSQL

Používanie databázy NoSQL

Akademici, inžinieri, softvéroví architekti, aplikační dizajnéri a programátori vyžadujú hlbšie znalosti dátových štruktúr, ktoré predtým neboli potrebné pre relačné databázy. Lídrami na trhu sú Hadoop a MongoDB, za ktorými nasledujú "Cassandra", "Reďkovka", CouchDB a "Riakom". Moderný výskum ukazuje, že existujú dva produkty NOSQL, ktoré dominujú systémovým inžinierom, softvéroví architekti, vývojári medzi tucet podobných technológií je MongoDB a Hadoop.

Trh ukazuje, že veľké spoločnosti používajú nové metodiky vývoja databáz NoSQL a integrujú ich do svojich produktov (Oracle, IBM). Databázový trh sa postupne mení na standard PasS, Redis a MongoDB, Edlich. Produkty ako Neo4j, MongoDB a CouchDB sa stali predmetom podpory a investovania rizikového kapitálu.

Články na tému