Programovanie

Štandardy NoSQL: Najlepšie porovnávané databázy kľúč - hodnota

Väčšina aplikácií vyžaduje určitú formu vytrvalosti - spôsob ukladania údajov mimo aplikácie na účely úschovy. Najzákladnejším spôsobom je zápis údajov do súborového systému, ale to sa môže rýchlo stať pomalým a nepraktickým spôsobom riešenia problému. Plnohodnotná databáza poskytuje účinný spôsob indexovania a načítania údajov, ale môže to byť aj nadmerné. Niekedy stačí rýchly spôsob, ako zobrať informáciu vo voľnom formáte, spojiť ju so štítkom, niekde ho schovať a za okamih znova vytiahnuť.

Zadajte obchod s kľúčmi a hodnotami. Jedná sa v podstate o databázu NoSQL, ale o databázu s veľmi konkrétnym účelom a zámerne obmedzeným dizajnom. Jeho úlohou je umožniť vám vziať údaje (hodnotu), umiestniť na ne štítok (kľúč) a uložiť ich buď do pamäte, alebo do nejakého úložného systému, ktorý je optimalizovaný na rýchle načítanie. Aplikácie používajú databázy kľúč - hodnota na všetko od ukladania objektov do medzipamäte po zdieľanie bežne používaných údajov medzi uzlami aplikácie.

Mnoho relačných databáz môže fungovať ako sklad kľúčov a hodnôt, ale to je niečo podobné ako používať traktorový príves na nákupy potravín. Funguje to, ale je to dramaticky neefektívne a existujú oveľa ľahšie spôsoby, ako problém vyriešiť. Úložisko kľúčov a hodnôt, podobne ako iné databázy NoSQL, poskytuje iba toľko infraštruktúry pre jednoduché ukladanie a vyhľadávanie hodnôt, integruje sa viac priamo s aplikáciami, ktoré ho používajú, a škáľuje granulárnejším spôsobom s pracovným zaťažením aplikácie.

Porovnávané vlastnosti databázy NoSQL s hodnotou kľúča

Za zváženie stojí päť široko používaných produktov (vrátane jednej cloudovej služby); sú výslovne účtované ako databázy kľúč - hodnota alebo ako ústredný prvok ponúkajú úložisko kľúč - hodnota. Ich základné rozdiely:

  • Hazelcast a Memcached inklinujú k minimalizmu a neobťažujú sa ani so zálohovaním údajov na disku.
  • Aerospike, Cosmos DB a Redis sú plnšie, ale stále sa točia okolo metafory kľúč - hodnota.

Tabuľka: Porovnávajú sa databázové produkty NoSQL - hodnota

Kľúč: Ľ= Linux, Ž= Windows, M= MacOS, S= Solaris, Ja= iOS, A= Android, O= Iné.

*Prostredníctvom implementácie treťou stranou.

 AerospikeHazelcast IMDGMicrosoft Azure Cosmos DBMemcachedRedis
PlatformyLWMOJavaIba v cloudeLWMOLWMO
Aktuálna verzia3.14.1.13.9N / A1.5.14.0.1
Prvé vydanie20122008201720032009
LicenciaAGPLApache 2VlastníckeBSDBSD
Disk-backedÁno Nie Áno Nie Áno, BSD
ZhlukovanieÁnoÁnoÁno Nie Áno
Črepovanie / delenieÁnoÁnoÁno Nie Áno
Natívne skriptovanieÁnoJavaÁno Nie Áno
TransakcieNa kľúčÁnoÁno Nie Áno
VložiteľnéÁno*

Áno Nie Áno*

Áno*

Databáza NoSQL s kľúčom a hodnotou Aerospike do hĺbky

Ak je Redis Memcached na steroidoch, dalo by sa povedať, že Aerospike je Redis na steroidoch. Rovnako ako Redis, aj Aerospike je obchod s kľúčmi a hodnotami, ktorý môže fungovať ako trvalá databáza alebo dátová vyrovnávacia pamäť. Aerospike je navrhnutý tak, aby sa dal ľahko klastrovať a aby sa dal lepšie škálovať, aby lepšie podporoval podnikové pracovné zaťaženie.

Funkcie jedinečné pre Aerospike

Veľa v Aerospike odráža ďalšie obchody s kľúčmi a inými databázami NoSQL. Dáta sa ukladajú a načítajú pomocou kľúčov a údaje je možné uchovávať v rade základných dátových typov, vrátane 64-bitových celých čísel, reťazcov, floatov s dvojitou presnosťou a nespracovaných binárnych údajov serializovaných z mnohých bežných programovacích jazykov.

Aerospike tiež môže ukladať údaje v zložité typy - zoznamy hodnôt, zbierky párov kľúč - hodnota nazývané mapy a geopriestorové údaje vo formáte GeoJSON. Aerospike môže vykonávať natívne spracovanie na geopriestorových dátach - napríklad určiť, ktoré umiestnenia uložené v databáze sú si najbližšie k sebe jednoduchým vykonaním dotazu - čo z neho robí atraktívnu možnosť pre vývojárov aplikácií, ktoré sa spoliehajú na dané miesto.

Údaje uložené v Aerospike je možné usporiadať do niekoľkých hierarchických kontajnerov. Niektoré systémy NoSQL sú orientované na dokumenty, čo znamená, že dáta sú zapuzdrené do nejakého druhu objektu, zvyčajne JSON. V Aerospike sú kontajnery zhruba ako dokumenty, ale s funkciami a správaním špecifickým pre Aerospike. Každý druh kontajnera vám umožňuje nastaviť odlišné vlastnosti správania na údajoch v ňom.

Napríklad najvyššia úroveň kontajnerov, menné priestory, určuje, či sú dáta uložené na disku, v RAM alebo v oboch; či sú údaje replikované v klastri alebo naprieč klastrami; a kedy a ako vypršala platnosť alebo vysťahovanie údajov. Prostredníctvom menných priestorov umožňuje Aerospike vývojárom uchovávať najčastejšie prístupné údaje v pamäti pre čo najrýchlejšiu odozvu.

Ako Aerospike narába s úložiskom a klastrovaním

Aerospike môže uchovávať svoje údaje takmer v akomkoľvek súborovom systéme, ale bol napísaný špeciálne preto, aby využíval výhody diskov SSD. To znamená, že neočakávajte pokles Aerospike na akomkoľvek starom SSD a očakávajte dobré výsledky. Vývojári spoločnosti Aerospike udržiavajú zoznam schválených zariadení SSD a vytvorili nástroj s názvom ACT na hodnotenie výkonu úložných zariadení SSD v rámci pracovných záťaží spoločnosti Aerospike.

Aerospike, rovnako ako väčšina systémov NoSQL, používa kvôli replikácii a klastrovaniu architektúru shared-nothing. Aerospike nemá žiadne hlavné uzly a žiadne ručné delenie. Každý uzol je identický. Dáta sú náhodne distribuované medzi uzlami a automaticky vyvážené, aby sa zabránilo vzniku úzkych miest. Ak chcete, môžete nastaviť pravidlá pre agresívne vyváženie údajov. Môžete nakonfigurovať viac klastrov, ktoré bežia v rôznych sieťových segmentoch alebo dokonca v rôznych dátových centrách, aby sa navzájom synchronizovali.

Skriptovanie v Aerospike

Rovnako ako Redis, aj Aerospike umožňuje vývojárom písať skripty Lua alebo UDF (užívateľom definované funkcie), ktoré bežia vo vnútri motora Aerospike. UDF môžete použiť na čítanie alebo pozmeňovanie záznamov, ale najlepšie je použiť ich na vykonávanie vysokorýchlostných operácií iba na čítanie a na zmenšovanie máp v zbierkach alebo „streamov“ záznamov na viacerých uzloch.

Kde získať Aerospike

Komunitné vydanie Aerospike je možné stiahnuť priamo z webových stránok Aerospike. Patria sem edície serverov pre Linux, desktopové verzie pre Apple MacOS a Microsoft Windows, cloudové edície pre Amazon EC2, Azure a Google Compute Engine a Docker. Podnikové vydanie Aerospike je k dispozícii prostredníctvom programu Aerospike Quick Start, ktorý poskytuje neobmedzenú 90-dňovú skúšobnú verziu.

Zdrojový kód je k dispozícii na GitHub.

Hazelcast IMDG kľúč - hodnota, databáza NoSQL, do hĺbky

Hazelcast sa označuje ako „dátová mriežka v pamäti“, čo je v podstate spôsob združovania zdrojov RAM a CPU na viacerých počítačoch, ktorý umožňuje distribúciu súborov dát na tieto stroje a manipuláciu v pamäti.

Databázy NoSQL ponúkajú funkcie kľúč - hodnota, graf alebo dokument. Hazelcast sa zameriava na funkčnosť kľúč - hodnota a zdôrazňuje rýchly prístup k distribuovaným údajom. Podľa jeho výrobcov ho možno použiť aj ako alternatívu k produktom ako Pivotal Gemfire, Software Terracotta a Oracle Coherence.

Hazelcast môže byť spustený ako distribuovaná služba alebo môže byť zabudovaný priamo do aplikácie Java. Klienti sú k dispozícii pre Java, Scala, .Net, C / C ++, Python a Node.js a jeden pre Go je v príprave.

Funkcie jedinečné pre Hazelcast

Hazelcast je postavený na prostredí Java a má ekosystém zameraný na Javu. Každý uzol v klastri Hazelcast spúšťa inštanciu základnej knižnice Hazelcast, IMDG, na JVM. To, ako Hazelcast pracuje s údajmi, je tiež úzko mapované do jazykových štruktúr Java. Rozhranie Java Map napríklad používa Hazelcast na zabezpečenie úložiska kľúč - hodnota. Rovnako ako v prípade Memcached sa na disk nič nezapisuje; všetko je neustále uložené v pamäti.

Jednou výhodou, ktorú môže Hazelcast poskytnúť v distribuovanom prostredí, je „blízka vyrovnávacia pamäť“, kde sa bežne požadované objekty migrujú na server, ktorý tieto požiadavky vykonáva. Týmto spôsobom je možné požiadavky vykonávať priamo v pamäti na rovnakom systéme bez toho, aby sa vyžadoval spiatočný prechod cez sieť.

Okrem párov kľúč - hodnota môžete prostredníctvom Hazelcast ukladať a distribuovať mnoho ďalších druhov dátových štruktúr. Niektoré sú jednoduché implementácie objektov Java, napríklad Map. Ostatné sú špecifické pre Hazelcast. MultiMap je napríklad variantom úložiska kľúč - hodnota, ktorý dokáže uložiť viac hodnôt pod ten istý kľúč. Tieto vlastnosti umožňujú napodobniť niektoré správanie iných systémov NoSQL, napríklad usporiadanie údajov do dokumentov, ale dôraz je kladený na štruktúry, ktoré umožňujú rýchly prístup k údajom a ich distribúciu.

Ako Hazelcast zvláda zhlukovanie

Klastre Hazelcast nemajú žiadne nastavenie master / slave; všetko je peer-to-peer. Údaje sa automaticky delia a distribuujú medzi všetkých členov klastra. Môžete tiež označiť určitých členov klastra ako „ľahkých“, ktorí spočiatku neobsahujú žiadne údaje, ale neskôr ich možno povýšiť na riadnych členov. To umožňuje niektoré uzly použiť striktne na výpočet alebo na postupnú distribúciu údajov v klastri, zatiaľ čo sú online.

Hazelcast môže tiež zabezpečiť, aby operácie pokračovali, iba ak je aspoň určitý počet uzlov online. Toto správanie však musíte nakonfigurovať manuálne a funguje iba pre určité dátové štruktúry. Od verzie Hazelcast 3.9 môžete rekonfigurovať dátové štruktúry v klastri bez toho, aby ste ich museli najskôr prepnúť do režimu offline.

Kde získať Hazelcast

Hazelcast je k dispozícii na stiahnutie priamo zo stránky Hazelcast. Spravidla sa nasadzuje ako zbierka súborov Java .JAR. Dockerove obrázky sú k dispozícii aj v oficiálnom registri Dockeru.

Podnikové vydanie Hazelcastu si môžete stiahnuť priamo z Hazelcastu. Môžete tiež získať 30-dňový bezplatný skúšobný kľúč pre Hazelcast.

Memcached kľúč-hodnota NoSQL databázy do hĺbky

Memcached je zhruba rovnako základné a rýchle ako úložisko kľúč - hodnota. Memcached, pôvodne napísaný ako vrstva akcelerácie pre blogovaciu platformu LiveJournal, sa odvtedy stal všadeprítomnou súčasťou balíkov webových technológií. Ak máte veľa malých fragmentov údajov, ktoré je možné priradiť k jednoduchému kľúču a nemusíte ich medzi inštanciami medzipamäte replikovať, je Memcached správnym nástrojom.

Funkcie jedinečné pre Memcached

Memcached sa najčastejšie používa na ukladanie dotazov z databázy do medzipamäte a na uchovanie výsledkov výlučne v pamäti. V tomto ohľade je to na rozdiel od mnohých iných databáz NoSQL, kľúč – hodnota alebo inak, pretože ukladajú údaje v trvalej podobe.

Memcached nezálohuje svoje dátové úložisko. Všetky kľúče sú uchované iba v pamäti, takže sa odparia vždy, keď sa resetuje inštancia Memcached alebo server, ktorý je jej hostiteľom. Memcached teda nemôže byť skutočne použitý ako náhrada za NoSQL databázu.

Na čo sa však dá použiť, je vysokorýchlostný spôsob ukladania bežne používaných údajov, ktoré môžu vyžadovať rádovo dlhší čas na dotazovanie zo zdroja.

Všetky údaje, ktoré je možné serializovať do binárneho toku, je možné uložiť do pamäte Memcached. Hodnoty je možné nastaviť tak, aby ich platnosť vypršala po určitej dobe, alebo na požiadanie, pomocou odkazu na kľúče k hodnotám z aplikácie. Množstvo pamäte, ktoré venujete ktorejkoľvek danej inštancii Memcached, je úplne na vás a viac serverov môže spustiť Memcached vedľa seba a rozložiť tak zaťaženie. Okrem toho Memcached škáluje lineárne s počtom jadier dostupných v systéme, pretože ide o viacvláknovú aplikáciu.

Najpopulárnejšie programovacie jazyky majú klientske knižnice pre Memcached. Napríklad, libmemcached umožňuje programom C a C ++ pracovať priamo s inštanciami Memcached. Umožňuje tiež zabudovať Memcached do programov C.

Ako Memcached zvláda zhlukovanie

Aj keď môžete spustiť viac inštancií programu Memcached, či už na rovnakom serveri alebo na viacerých uzloch v sieti, medzi inštanciami neexistuje žiadna automatická federácia alebo synchronizácia údajov. Údaje vložené do inštancie uloženej v pamäti sú dostupné iba z tejto inštancie, obdobia.

Kde získať Memcached

Zdrojový kód Memcached je k dispozícii na stiahnutie na GitHub a na oficiálnej stránke Memcached. Binárne súbory pre systém Linux sú k dispozícii v úložiskách pre väčšinu distribúcií systému Linux. Používatelia systému Windows ho môžu vytvoriť priamo zo zdroja; niektoré neoficiálne binárne súbory boli vytvorené v minulosti, ale nezdá sa, že by boli spoľahlivo dostupné.

Databáza kľúčov - hodnota Microsoft Azure Cosmos DB s hodnotou NoSQL do hĺbky

Väčšina databáz má jednu zastrešujúcu paradigmu: obchod s dokumentmi, obchod s kľúčmi a hodnotami, obchod so širokými stĺpcami, databáza grafov atď. Nie tak Azure Cosmos DB. Cosmos DB, ktorý je odvodený z databázy NoSQL spoločnosti Microsoft ako služby DocumentDB, je pokusom spoločnosti Microsoft vytvoriť jedinú databázu, ktorá môže využívať viac paradigiem.

Funkcie jedinečné pre Azure Cosmos DB

Cosmos DB používa na podporu rôznych dátových modelov takzvaný úložný systém pre sekvencie atómových záznamov. Atómy sú primitívne typy, ako sú reťazce, celé čísla a logické hodnoty. Záznamy sú súbory atómov, napríklad štruktúr v C. Sekvencie sú polia atómov alebo záznamov.

Cosmos DB používa tieto stavebné bloky na replikáciu správania viacerých typov databáz. Môže reprodukovať správanie tabuliek nájdených v bežných relačných databázach. Môže však tiež reprodukovať funkčnosť dátových typov nachádzajúcich sa v systémoch NoSQL - bezschémové dokumenty JSON (DocumentDB a MongoDB) a grafy (Gremlin, Apache TinkerPop).

$config[zx-auto] not found$config[zx-overlay] not found