1. Overzicht
Vaak vinden we het een uitdaging om te beslissen over een niet-relationele database als primaire gegevensopslag voor onze applicaties.
In dit artikel onderzoeken we twee populaire niet-relationele databases, Redis en MongoDB.
Eerst zullen we een korte blik werpen op de functies die worden aangeboden door Redis en MongoDB. Vervolgens bespreken we wanneer we Redis of MongoDB moeten gebruiken door ze met elkaar te vergelijken.
2. Redis
Redis is een in-memory datastructuuropslag die een uitgebreide reeks functies biedt. Het is nuttig als cache, berichtenmakelaar en wachtrij .
2.1. Functies
- Een speciale opdrachtregelinterface – redis-cli
- Slaat sleutel-waardeparen op en ondersteunt gegevensstructuren zoals lijst, set en hash
- Kan waarden opslaan tot 512 MB groot
- Maakt het publiceren en abonneren van berichten mogelijk met behulp van pub/sub-berichtenwachtrijen
- Geospatiale ondersteuning door speciale opdrachten te geven om realtime geospatiale gegevens te beheren
- Laat uitvoering van LUA-scripts toe
- Biedt verschillende klanten voor populaire technologieën
- Ondersteunt IoT en embedded apparaten
- Ondersteuning voor lentegegevens
- Spring Cache-ondersteuning met Java-clients zoals Redisson
2.2. Installatie
We kunnen de nieuwste Redis-server downloaden van de officiële website en deze installeren:
$ 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 is een NoSQL-documentdatabase die informatie opslaat in een JSON-achtige documentstructuur. Het is handig als een schemaloze gegevensopslag voor snel veranderende applicaties, prototyping en startups in een ontwerp- en implementatiefase .
3.1. Functies
- Biedt een interactieve opdrachtregelinterface MongoDB Shell (mongosh ) om administratieve handelingen uit te voeren en gegevens op te vragen/bij te werken
- JSON-gebaseerde querystructuur met ondersteuning van joins
- Ondersteunt verschillende soorten zoekopdrachten, zoals zoeken op geografische basis, zoeken in grafieken en zoeken in tekst
- Ondersteunt ACID-transacties met meerdere documenten
- Ondersteuning voor lentegegevens
- Beschikbaar in community-, enterprise- en cloud-edities (MongoDB Atlas)
- Verschillende stuurprogramma's voor belangrijke technologieën zoals C++, Java, Go, Python, Rust en Scala
- Biedt GUI om gegevens te verkennen en te manipuleren via MongoDB Compass
- Biedt een visuele weergave van gegevens met behulp van MongoDB-diagrammen
- MongoDB BI Connector biedt verbindingen met BI- en analyseplatforms
3.2. Installatie
We kunnen de nieuwste MongoDB-server downloaden of, als we macOS gebruiken, we kunnen de community-editie rechtstreeks installeren met Homebrew:
brew tap mongodb/brew
brew install [email protected]
4. Wanneer Redis gebruiken?
4.1. Caching
Redis biedt de beste cachingprestaties in zijn klasse door een responstijd van minder dan een milliseconde te bieden voor veelgevraagde items .
Verder is het mogelijk om de vervaltijd van toetsen in te stellen met commando's zoals EXPIRE , VERLOPEN , en PEXPIRE .
Tegelijkertijd kunnen we de PERSIST . gebruiken commando om de time-out te verwijderen en het sleutel-waarde-paar te behouden, waardoor het ideaal is voor caching.
4.2. Flexibele gegevensopslag
Redis biedt verschillende gegevensstructuren zoals string, lijst, set en hash om te beslissen hoe onze gegevens moeten worden opgeslagen en georganiseerd. Daarom geeft Redis ons volledige vrijheid over de implementatie van de databasestructuren.
Het kan echter ook lang duren om over het DB-ontwerp na te denken. Evenzo kan het een uitdaging zijn om de innerlijke structuur van het schema op te bouwen en te onderhouden met Redis.
4.3. Complexe gegevensopslag
Op dezelfde manier kunnen we met de combinatie van de lijst, set en hash complexe gegevensstructuren implementeren, zoals wachtrijen, arrays, gesorteerde sets en grafieken voor onze opslag.
4.4. Chat, wachtrij en berichtenmakelaar
Redis kan berichten publiceren en zich erop abonneren met behulp van pub/sub-berichtenwachtrijen met patroonovereenkomst . Zo kan Redis realtime chat- en social-mediafeedtoepassingen ondersteunen.
Op dezelfde manier kunnen we een lichtgewicht wachtrij implementeren met behulp van de lijstgegevensstructuur . Bovendien ondersteunt de lijst van Redis atomaire operaties en biedt het blokkeermogelijkheden, waardoor het geschikt is om een berichtenmakelaar te implementeren.
4.5. Sessiewinkel
Redis biedt een gegevensopslag in het geheugen met persistentiemogelijkheden, waardoor het een goede kandidaat is om sessies voor web-/mobiele applicaties op te slaan en te beheren.
4.6. IoT en ingebedde systemen
Volgens de officiële documentatie van Redis ondersteunen nieuwere versies vanaf 4 en 5 de ARM-processor en de Raspberry Pi .
Het draait ook op Andriod en er worden inspanningen geleverd om Android op te nemen als officieel ondersteund platform.
Dus, Redis lijkt ideaal voor IoT en embedded systemen, geprofiteerd van zijn kleine geheugenvoetafdruk en lage CPU-vereisten.
4.7. Realtime verwerking
Omdat het een razendsnelle gegevensstructuur in het geheugen is, kunnen we het gebruiken voor realtime verwerkingstoepassingen.
Redis kan bijvoorbeeld op efficiënte wijze applicaties bedienen die functies bieden zoals waarschuwingen voor aandelenkoersen, scoreborden en realtime analyses.
4.8. Geospatiale apps
Redis biedt een speciaal gebouwde in-memory datastructuur Geo Set - gebouwd op gesorteerde set - voor het beheren van geospatiale indices. Het biedt ook specifieke geografische commando's zoals GEOADD , GEOPOS , en GEORADIUS om geospatiale gegevens toe te voegen, te lezen en te analyseren.
Daarom kunnen we realtime geospatiale applicaties bouwen met locatiegebaseerde functies zoals rijtijd en rijafstand met Redis .
5. Wanneer MongoDB gebruiken?
5.1. Dynamische zoekopdrachten
MongoDB biedt een krachtige set querytools. Het biedt ook een breed scala aan flexibele zoekschema's, zoals geografisch zoeken, grafieken zoeken en tekst zoeken voor het efficiënt ophalen van gegevens.
Tegelijkertijd lijkt MongoDB, met de ondersteuning van JSON-gestructureerde zoekopdrachten, een betere keuze te zijn voor scenario's waarin het zoeken naar en analyseren van gegevens dagelijkse activiteiten zijn.
5.2. Snel veranderend schema
MongoDB kan behulpzaam zijn in de ontwerp- en vroege implementatiefasen, waar we snelle wijzigingen in ons schema nodig hebben. Tegelijkertijd maakt het geen aannames over de onderliggende gegevens en optimaliseert het zichzelf zonder dat een schema nodig is.
5.3. Prototyping en hackathons
Door de JSON-achtige documentstructuur te volgen, maakt MongoDB snelle prototyping, snelle integraties met front-end-kanalen en hackathons mogelijk .
Tegelijkertijd kan het handig zijn voor junior teams die niet willen omgaan met de complexiteit van een RDBMS.
5.4. Catalogi
Door een dynamisch schema te bieden dat zichzelf beschrijft, maakt MongoDB het gemakkelijker om producten, functies en aanbevelingen toe te voegen voor catalogi zoals e-commerce, activabeheer en inventaris.
We kunnen ook expressieve zoekopdrachten in MongoDB gebruiken voor functies zoals geavanceerd zoeken en analyses door een veld of een reeks velden van het JSON-gestructureerde document te indexeren.
5.5. Mobiele apps
Met de JSON-documentstructuur van MongoDB kunnen verschillende soorten gegevens van verschillende apparaten worden opgeslagen, samen met geospatiale indexen.
Bovendien maakt horizontale schaalbaarheid met native sharding het eenvoudig schalen van een mobiele app mogelijk. Daarom kan MongoDB tonnen gebruikers bedienen, petabytes aan gegevens verwerken en honderdduizenden bewerkingen per seconde ondersteunen, waardoor het een waardige keuze is voor het ondersteunen van mobiele apps.
5.6. Inhoudrijke apps
Het is niet eenvoudig om verschillende inhoud in RDBMS op te nemen voor moderne apps met veel inhoud. Aan de andere kant maakt MongoDB het mogelijk om rijke inhoud zoals tekst, audio en video op te slaan en weer te geven .
We kunnen ook gemakkelijk bestanden groter dan 16 MB efficiënt opslaan met MongoDB GridFS . Het geeft toegang tot een deel van grote bestanden zonder het hele bestand in het geheugen te laden.
Bovendien synchroniseert het automatisch onze bestanden en metadata op alle servers. Als gevolg hiervan lijkt MongoDB een meer geschikte keuze te zijn voor het ondersteunen van apps met veel inhoud.
5.7. Gaming-apps
Net als bij mobiele en content-rijke apps, vereist gaming ook enorme schaalvergroting en dynamische datastructuren. MongoDB kan dus een veelbelovende keuze zijn voor gaming-apps.
5.8. Wereldwijde clouddatabaseservice
MongoDB Atlas is beschikbaar voor meerdere cloudservices zoals AWS, Google Cloud en Azure . Bovendien biedt het, met ingebouwd replicatie- en failovermechanisme, een gedistribueerd systeem met hoge beschikbaarheid. Daarom kunnen we de database snel implementeren en beheren en gebruiken als een wereldwijde clouddatabaseservice.