1. Přehled
Často považujeme za obtížné rozhodnout se pro nerelační databázi jako primární úložiště dat pro naše aplikace.
V tomto článku prozkoumáme dvě oblíbené nerelační databáze, Redis a MongoDB.
Nejprve se rychle podíváme na funkce, které nabízí Redis a MongoDB. Poté prodiskutujeme, kdy použít Redis nebo MongoDB tím, že je porovnáme mezi sebou.
2. Redis
Redis je úložiště datových struktur v paměti, které nabízí bohatou sadu funkcí. Je to užitečné jako mezipaměť, zprostředkovatel zpráv a fronta .
2.1. Funkce
- Vyhrazené rozhraní příkazového řádku – redis-cli
- Ukládá páry klíč–hodnota a podporuje datové struktury, jako je seznam, sada a hash
- Lze uložit hodnoty o velikosti až 512 MB
- Umožňuje publikovat a odebírat zprávy pomocí front zpráv pub/sub
- Geoprostorová podpora poskytováním speciálních příkazů pro správu geoprostorových dat v reálném čase
- Umožňuje spouštění skriptů LUA
- Nabízí různé klienty pro oblíbené technologie
- Podporuje internet věcí a vestavěná zařízení
- Podpora jarních dat
- Podpora Spring Cache pomocí klientů Java, jako je Redisson
2.2. Instalace
Nejnovější server Redis si můžeme stáhnout z oficiálních stránek a nainstalovat:
$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make
3. MongoDB
MongoDB je databáze dokumentů NoSQL, která ukládá informace ve struktuře dokumentů podobné JSON. Je užitečný jako bezschémové úložiště dat pro rychle se měnící aplikace, prototypování a spouštění ve fázi návrhu a implementace .
3.1. Funkce
- Nabízí interaktivní rozhraní příkazového řádku MongoDB Shell (mongosh ) k provádění administrativních operací a dotazování/aktualizaci dat
- Struktura dotazů založená na JSON s podporou spojení
- Podporuje různé typy vyhledávání, jako je geografické vyhledávání, vyhledávání v grafech a textové vyhledávání
- Podporuje transakce ACID s více dokumenty
- Podpora jarních dat
- K dispozici v komunitních, podnikových a cloudových edicích (MongoDB Atlas)
- Různé ovladače pro hlavní technologie jako C++, Java, Go, Python, Rust a Scala
- Poskytuje GUI pro zkoumání a manipulaci s daty prostřednictvím MongoDB Compass
- Nabízí vizuální reprezentaci dat pomocí grafů MongoDB
- MongoDB BI Connector poskytuje připojení k BI a analytickým platformám
3.2. Instalace
Můžeme si stáhnout nejnovější server MongoDB nebo, pokud používáte macOS, můžeme nainstalovat komunitní edici přímo pomocí Homebrew:
brew tap mongodb/brew
brew install [email protected]
4. Kdy použít Redis?
4.1. Ukládání do mezipaměti
Redis poskytuje nejlepší výkon mezipaměti ve své třídě tím, že u často požadovaných položek poskytuje dobu odezvy v řádu milisekund .
Dále umožňuje nastavit dobu platnosti kláves pomocí příkazů jako EXPIRE , UPLATNIT a PEXPIRE .
Zároveň můžeme použít PERSIST příkaz k odstranění časového limitu a zachování páru klíč–hodnota, takže je ideální pro ukládání do mezipaměti.
4.2. Flexibilní úložiště dat
Redis poskytuje různé datové struktury, jako je řetězec, seznam, sada a hash, které rozhodují o tom, jak ukládat a organizovat naše data. Redis nám tedy dává plnou svobodu při implementaci databázových struktur.
Může však také vyžadovat dlouhou dobu promyšlení návrhu DB. Podobně může být náročné vytvořit a udržovat vnitřní strukturu schématu pomocí Redis.
4.3. Komplexní úložiště dat
Podobně pomocí kombinace seznamu, množiny a hash můžeme implementovat složité datové struktury, jako jsou fronty, pole, seřazené množiny a grafy pro naše úložiště.
4.4. Chat, fronta a zprostředkovatel zpráv
Redis může publikovat a odebírat zprávy pomocí front zpráv pub/sub se vzorem . Redis tak může podporovat chatování a aplikace sociálních médií v reálném čase.
Podobně můžeme implementovat odlehčenou frontu pomocí datové struktury seznamu . Kromě toho seznam společnosti Redis podporuje atomové operace a nabízí možnosti blokování, takže je vhodný pro implementaci zprostředkovatele zpráv.
4.5. Obchod relací
Redis poskytuje úložiště dat v paměti s možnostmi perzistence, takže je dobrým kandidátem pro ukládání a správu relací pro webové/mobilní aplikace.
4.6. IoT a vestavěné systémy
Podle oficiální dokumentace Redis novější verze počínaje 4 a 5 podporují procesor ARM a Raspberry Pi .
Také běží na Andriodu a vyvíjí se úsilí zahrnout Android jako oficiálně podporovanou platformu.
Redis tedy vypadá ideálně pro IoT a vestavěné systémy, z nichž těží malé nároky na paměť a nízké nároky na procesor.
4.7. Zpracování v reálném čase
Jelikož se jedná o bleskově rychlou datovou strukturu v paměti, můžeme ji použít pro aplikace zpracování v reálném čase.
Redis může například efektivně obsluhovat aplikace, které nabízejí funkce jako upozornění na cenu akcií, výsledkové tabulky a analýzy v reálném čase.
4.8. Geoprostorové aplikace
Redis nabízí účelově vytvořenou datovou strukturu v paměti Geo Set – postavenou na tříděné sadě – pro správu geoprostorových indexů. Poskytuje také specifické geografické příkazy jako GEOADD , GEOPOS a GEORADIUS přidávat, číst a analyzovat geoprostorová data.
Proto můžeme vytvářet geoprostorové aplikace v reálném čase s funkcemi založenými na poloze, jako je doba jízdy a vzdálenost jízdy pomocí Redis .
5. Kdy použít MongoDB?
5.1. Dynamické dotazy
MongoDB nabízí výkonnou sadu dotazovacích nástrojů. Poskytuje také širokou škálu flexibilních schémat dotazů, jako je geografické vyhledávání, vyhledávání v grafech a textové vyhledávání pro efektivní získávání dat.
Zároveň se MongoDB s podporou strukturovaných dotazů JSON zdá být lepší volbou pro scénáře, kde jsou každodenní činností vyhledávání a analýza dat.
5.2. Rychle se měnící schéma
MongoDB může být nápomocný ve fázích návrhu a rané implementace, kde vyžadujeme rychlé změny našeho schématu. Zároveň nevytváří předpoklady na podkladová data a sám se optimalizuje, aniž by potřeboval schéma.
5.3. Prototypování a hackathony
Díky dodržení struktury dokumentů podobné JSON MongoDB umožňuje rychlé prototypování, rychlou integraci s front-end kanály a hackathony .
Zároveň to může být užitečné pro juniorské týmy, které se nechtějí zabývat složitostí RDBMS.
5.4. Katalogy
Poskytnutímdynamického schématu, které se samo popisuje, MongoDB usnadňuje přidávání produktů, funkcí a doporučení pro katalogy, jako je elektronický obchod, správa aktiv a inventář.
Můžeme také použít expresivní dotazy v MongoDB pro funkce, jako je pokročilé vyhledávání a analytika indexováním pole nebo sady polí dokumentu se strukturou JSON.
5.5. Mobilní aplikace
Struktura dokumentu JSON MongoDB umožňuje ukládat různé typy dat z různých zařízení spolu s geoprostorovými indexy.
Kromě toho horizontální škálovatelnost s nativním shardingem umožňuje snadné škálování mobilní aplikace. MongoDB proto může sloužit spoustě uživatelů, zpracovávat petabajty dat a podporovat stovky tisíc operací za sekundu, což z něj činí vhodnou volbu pro podporu mobilních aplikací.
5.6. Aplikace bohaté na obsah
Není snadné začlenit různý obsah do RDBMS pro moderní obsahově bohaté aplikace. Na druhou stranu MongoDB umožňuje ukládat a poskytovat bohatý obsah, jako je text, zvuk a video .
Také můžeme snadno ukládat soubory větší než 16 MB efektivně pomocí MongoDB GridFS . Umožňuje přístup k části velkých souborů bez načítání celého souboru do paměti.
Navíc automaticky synchronizuje naše soubory a metadata na všech serverech. V důsledku toho se MongoDB zdá být vhodnější volbou pro podporu aplikací bohatých na obsah.
5.7. Herní aplikace
Podobně jako mobilní aplikace a aplikace bohaté na obsah, i hry vyžadují masivní škálování a dynamické datové struktury. MongoDB tedy může být slibnou volbou pro herní aplikace.
5.8. Služba globální cloudové databáze
MongoDB Atlas je k dispozici v různých cloudových službách, jako je AWS, Google Cloud a Azure . Navíc s vestavěným mechanismem replikace a převzetí služeb při selhání nabízí vysoce dostupný distribuovaný systém. Proto můžeme rychle nasadit a spravovat databázi a používat ji jako globální cloudovou databázovou službu.