Programování

Standouts NoSQL: Nejlepší porovnávané databáze klíč – hodnota

Většina aplikací potřebuje určitou formu vytrvalosti - způsob, jak ukládat data mimo aplikaci pro bezpečné uložení. Nejzákladnějším způsobem je zápis dat do systému souborů, ale to se může rychle stát pomalým a nepraktickým způsobem řešení problému. Plnohodnotná databáze poskytuje účinný způsob indexování a načítání dat, ale může být také přehnaná. Někdy potřebujete jen rychlý způsob, jak získat informace ve volném formátu, spojit je se štítkem, někde je schovat a rychle je vytáhnout zpět.

Zadejte úložiště klíč – hodnota. Je to v zásadě databáze NoSQL, ale databáze s vysoce specifickým účelem a záměrně omezeným designem. Jeho úkolem je umožnit vám odebrat data (hodnotu), použít k nim štítek (klíč) a uložit je buď do paměti, nebo do nějakého úložného systému, který je optimalizován pro rychlé načítání. Aplikace používají databáze klíč-hodnota pro vše od ukládání do mezipaměti objektů až po sdílení běžně používaných dat mezi uzly aplikace.

Mnoho relačních databází může fungovat jako úložiště klíč – hodnota, ale to je něco jako používat tahač s návěsem k jízdě s potravinami. Funguje to, ale je to dramaticky neefektivní a existují mnohem lehčí způsoby, jak problém vyřešit. Úložiště klíč-hodnota, stejně jako ostatní databáze NoSQL, poskytuje právě takovou infrastrukturu pro jednoduché ukládání a načítání hodnot, integruje se přímo s aplikacemi, které ji používají, a škáluje granulárnějším způsobem s pracovní zátěží aplikace.

Porovnané funkce databáze NoSQL s hodnotou klíč

Za zvážení stojí pět široce používaných produktů (včetně jedné cloudové služby); jsou výslovně účtovány jako databáze klíč – hodnota nebo nabízejí úložiště klíč – hodnota jako centrální funkci. Jejich základní rozdíly:

  • Hazelcast a Memcached inklinují k minimalismu a neobtěžují se ani zálohovat data na disk.
  • Aerospike, Cosmos DB a Redis jsou plně vybavené, ale stále se točí kolem metafory klíč – hodnota.

Tabulka: Porovnávány databázové produkty NoSQL s hodnotou klíč

Klíč: L= Linux, Ž= Windows, M= MacOS, S= Solaris, = iOS, A= Android, Ó= Jiné.

*Prostřednictvím implementace třetí stranou.

 AerospikeHazelcast IMDGMicrosoft Azure Cosmos DBMemcachedRedis
PlatformyLWMOJávaPouze cloudLWMOLWMO
Současná verze3.14.1.13.9N / A1.5.14.0.1
První vydání20122008201720032009
LicenceAGPLApache 2ProprietárníBSDBSD
Podporováno diskemAno Ne Ano Ne Ano, BSD
ShlukováníAnoAnoAno Ne Ano
Sharding / partitioningAnoAnoAno Ne Ano
Nativní skriptováníAnoJávaAno Ne Ano
TransakceNa klíčAnoAno Ne Ano
VložitelnéAno*

Ano Ne Ano*

Ano*

Aerospike klíč-hodnota NoSQL databáze do hloubky

Pokud je Redis Memcached na steroidech, dalo by se říci, že Aerospike je Redis na steroidech. Stejně jako Redis je Aerospike úložiště klíčů a hodnot, které může fungovat jako trvalá databáze nebo datová mezipaměť. Aerospike je navržen tak, aby se snadno klastroval a snadno škáloval, aby lépe podporoval podnikové pracovní vytížení.

Funkce jedinečné pro Aerospike

Hodně v Aerospike odráží jak ostatní obchody klíč – hodnota, tak další databáze NoSQL. Data se ukládají a načítají pomocí klíčů a data lze uchovávat v řadě základních datových typů, včetně 64bitových celých čísel, řetězců, floatů s dvojitou přesností a surových binárních dat serializovaných z řady běžných programovacích jazyků.

Aerospike také může ukládat data komplex typy - seznamy hodnot, sbírky párů klíč – hodnota zvané mapy a geoprostorová data ve formátu GeoJSON. Aerospike může provádět nativní zpracování na geoprostorových datech - například k určení, která umístění uložená v databázi jsou nejblíže k sobě pouhým provedením dotazu - což z něj činí atraktivní možnost pro vývojáře aplikací, kteří se spoléhají na umístění.

Data uložená v Aerospike lze uspořádat do několika hierarchických kontejnerů. Některé systémy NoSQL jsou orientované na dokumenty, což znamená, že data jsou zapouzdřena v nějakém druhu objektu, obvykle JSON. S Aerospike jsou kontejnery zhruba jako dokumenty, ale s funkcemi a chováním specifickým pro Aerospike. Každý druh kontejneru umožňuje nastavit různé vlastnosti chování na datech uvnitř.

Například nejvyšší úroveň kontejnerů, jmenné prostory, určuje, zda jsou data uložena na disku, v RAM nebo v obou; ať už jsou data replikována v klastru nebo napříč klastry; a kdy a jak data vypršela nebo byla vystěhována Prostřednictvím jmenných prostorů umožňuje Aerospike vývojářům uchovávat nejčastěji přístupná data v paměti pro co nejrychlejší odezvu.

Jak Aerospike zpracovává úložiště a shlukování

Aerospike může uchovávat svá data na téměř jakémkoli systému souborů, ale byl napsán speciálně pro využití výhod SSD. To znamená, že neočekávejte pokles Aerospike na žádném starém SSD a očekávejte dobré výsledky. Vývojáři společnosti Aerospike udržují seznam schválených zařízení SSD a pro hodnocení výkonu úložných zařízení SSD v rámci úloh Aerospike vytvořili nástroj s názvem ACT.

Aerospike, stejně jako většina systémů NoSQL, používá architekturu „shared-nothing“ kvůli replikaci a shlukování. Aerospike nemá žádné hlavní uzly a žádné ruční dělení. Každý uzel je identický. Data jsou náhodně distribuována napříč uzly a automaticky vyvážena, aby se zabránilo vytváření úzkých míst. Pokud chcete, můžete nastavit pravidla pro agresivní vyvážení dat. Můžete nakonfigurovat více clusterů, které běží v různých segmentech sítě nebo dokonce v různých datových centrech, aby se vzájemně synchronizovaly.

Skriptování v Aerospike

Stejně jako Redis, Aerospike umožňuje vývojářům psát skripty Lua nebo UDF (uživatelem definované funkce), které běží uvnitř motoru Aerospike. UDF můžete použít ke čtení nebo pozměňování záznamů, ale je nejlepší je používat k provádění vysokorychlostních operací pouze pro čtení, mapování a zmenšování ve sbírkách nebo „streamů“ záznamů na více uzlech.

Kde získat Aerospike

Komunitní vydání Aerospike lze stáhnout přímo z webu Aerospike. Patří sem edice serverů pro Linux, desktopové verze pro Apple MacOS a Microsoft Windows, cloudové edice pro Amazon EC2, Azure a Google Compute Engine a kontejnery Docker. Podniková edice Aerospike je k dispozici prostřednictvím programu Aerospike Quick Start, který poskytuje neomezenou 90denní zkušební verzi.

Zdrojový kód je k dispozici na GitHubu.

Hazelcast IMDG klíč-hodnota NoSQL databáze do hloubky

Hazelcast je označován jako „datová mřížka v paměti“, což je v podstatě způsob, jak spojit zdroje RAM a CPU napříč více stroji, aby bylo možné distribuovat datové sady mezi tyto stroje a manipulovat s nimi v paměti.

Databáze NoSQL nabízejí funkce klíč-hodnota, graf nebo dokument. Hazelcast se soustředí na funkčnost klíč-hodnota a zdůrazňuje rychlý přístup k distribuovaným datům. Podle jeho tvůrců může být také použit jako alternativa k produktům jako Pivotal Gemfire, Software Terracotta a Oracle Coherence.

Hazelcast může být spuštěn jako distribuovaná služba nebo může být vložen přímo do aplikace Java. Klienti jsou k dispozici pro Java, Scala, .Net, C / C ++, Python a Node.js a jeden pro Go je v provozu.

Funkce jedinečné pro Hazelcast

Hazelcast je postaven na prostředí Java a má ekosystém zaměřený na prostředí Java. Každý uzel v klastru Hazelcast provozuje instanci hlavní knihovny Hazelcastu IMDG na JVM. Jak Hazelcast pracuje s daty, je také úzce mapováno do jazykových struktur Java. Rozhraní Java Map například používá Hazelcast k ukládání klíč-hodnota. Stejně jako u Memcached se na disk nic nezapisuje; vše je vždy uloženo v paměti.

Jednou z výhod, které může Hazelcast v distribuovaném prostředí poskytnout, je „blízká mezipaměť“, kde se běžně požadované objekty migrují na server, který požadavky provádí. Tímto způsobem lze požadavky provádět přímo v paměti ve stejném systému, aniž by bylo nutné zpáteční cestu po síti.

Kromě párů klíč – hodnota můžete prostřednictvím Hazelcastu ukládat a distribuovat mnoho dalších druhů datových struktur. Některé jsou jednoduché implementace objektů Java, například Map. Jiné jsou specifické pro Hazelcast. MultiMap je například varianta úložiště klíč-hodnota, která může ukládat více hodnot pod stejný klíč. Tyto funkce umožňují emulovat některá chování jiných systémů NoSQL, například organizovat data do dokumentů, ale empatie spočívá ve strukturách, které umožňují rychlý přenos dat a přístup k nim.

Jak Hazelcast zpracovává shlukování

Klastry Hazelcast nemají žádné nastavení master / slave; vše je peer-to-peer. Data se automaticky dělí a distribuují mezi všechny členy klastru. Můžete také určit určité členy klastru jako „lite“, které zpočátku neobsahují žádná data, ale později mohou být povýšeni na řádné členy. To umožňuje některé uzly použít striktně pro výpočet nebo pro postupnou distribuci dat v klastru, zatímco jsou přivedeny online.

Hazelcast může také zajistit, aby operace pokračovaly, pouze pokud je alespoň určitý počet uzlů online. Toto chování však musíte nakonfigurovat ručně a funguje pouze pro určité datové struktury. Od verze Hazelcast verze 3.9 můžete překonfigurovat datové struktury napříč klastrem, aniž byste je museli nejprve přepnout do režimu offline.

Kde získat Hazelcast

Hazelcast je k dispozici ke stažení přímo z webu Hazelcast. Obvykle je nasazen jako kolekce souborů Java .JAR. Docker obrázky jsou také k dispozici v oficiálním registru Dockeru.

Enterprise verzi Hazelcastu si můžete stáhnout přímo z Hazelcastu. Pro Hazelcast můžete také získat 30denní zkušební klíč zdarma.

Memcached klíč-hodnota databáze NoSQL do hloubky

Memcached je zhruba stejně základní a rychlé, jak se úložiště klíč – hodnota dostane. Memcached, původně napsaný jako akcelerační vrstva pro blogovací platformu LiveJournal, se od té doby stal všudypřítomnou součástí zásobníků webových technologií. Pokud máte mnoho malých fragmentů dat, které lze spojit s jednoduchým klíčem a není třeba je mezi instancemi mezipaměti replikovat, je Memcached tím správným nástrojem.

Funkce jedinečné pro Memcached

Memcached se nejčastěji používá pro ukládání do mezipaměti dotazů z databáze a uchovávání výsledků výhradně v paměti. V tomto ohledu je to na rozdíl od mnoha jiných databází NoSQL, klíč-hodnota nebo jinak, protože ukládají data v nějaké trvalé formě.

Memcached na nic nevrací své úložiště dat. Všechny klíče jsou uchovávány pouze v paměti, takže se vypařují při každém resetování instance Memcached nebo serveru, který je hostitelem. Memcached tedy nelze opravdu použít jako náhradu za databázi NoSQL.

K čemu lze použít, je však vysokorychlostní způsob ukládání běžně používaných dat, který může trvat delší dobu, než se dotazuje ze zdroje.

Veškerá data, která lze serializovat do binárního proudu, lze uložit do Memcached. Hodnoty lze nastavit tak, aby vypršely po určité době nebo na vyžádání odkazem na klíče k hodnotám z aplikace. Množství paměti, které věnujete jakékoli dané instanci Memcached, je zcela na vás a více serverů může spustit Memcached vedle sebe a rozložit tak zatížení. Navíc Memcached škáluje lineárně s počtem jader dostupných v systému, protože se jedná o vícevláknovou aplikaci.

Nejpopulárnější programovací jazyky mají klientské knihovny pro Memcached. Například, libmemched umožňuje programům C a C ++ pracovat přímo s instancemi Memcached. Umožňuje také začlenit Memcached do programů C.

Jak Memcached zpracovává shlukování

I když můžete spustit více instancí Memcached, ať už na stejném serveru nebo na více uzlech v síti, neexistuje žádná automatická federace nebo synchronizace dat mezi instancemi. Data vložená do instance Memcached jsou k dispozici pouze z této instance, období.

Kde získat Memcached

Zdrojový kód Memcached je k dispozici ke stažení na GitHubu a na oficiálním webu Memcached. Linuxové binární soubory jsou k dispozici v úložištích pro většinu distribucí Linuxu. Uživatelé systému Windows jej mohou vytvářet přímo ze zdroje; některé neoficiální binární soubory byly vytvořeny v minulosti, ale nezdá se, že by byly spolehlivě dostupné.

Databáze klíč-hodnota Microsoft Azure Cosmos DB NoSQL do hloubky

Většina databází má jedno zastřešující paradigma: úložiště dokumentů, úložiště klíčů a hodnot, úložiště širokých sloupců, databáze grafů atd. Ne tak Azure Cosmos DB. Odvozeno z databáze NoSQL společnosti Microsoft jako služba, DocumentDB, je Cosmos DB pokusem společnosti Microsoft vytvořit jednu databázi, která může využívat více paradigmat.

Funkce jedinečné pro Azure Cosmos DB

Cosmos DB používá pro podporu různých datových modelů takzvaný úložný systém se sekvencí atomových záznamů. Atomy jsou primitivní typy, jako jsou řetězce, celá čísla a logické hodnoty. Záznamy jsou soubory atomů, jako struktury v C. Sekvence jsou pole atomů nebo záznamů.

Cosmos DB používá tyto stavební bloky k replikaci chování více typů databází. Může reprodukovat chování tabulek nalezených v konvenčních relačních databázích. Může ale také reprodukovat funkčnost datových typů nalezených v systémech NoSQL - schemaless dokumenty JSON (DocumentDB a MongoDB) a grafy (Gremlin, Apache TinkerPop).

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