1. Översikt
Ofta tycker vi att det är svårt att välja en icke-relationell databas som ett primärt datalager för våra applikationer.
I den här artikeln kommer vi att utforska två populära icke-relationella databaser, Redis och MongoDB.
Först ska vi ta en snabb titt på funktionerna som erbjuds av Redis och MongoDB. Sedan diskuterar vi när vi ska använda Redis eller MongoDB genom att jämföra dem med varandra.
2. Redis
Redis är en datastrukturbutik i minnet som erbjuder en rik uppsättning funktioner. Det är användbart som cache, meddelandeförmedlare och kö .
2.1. Funktioner
- Ett dedikerat kommandoradsgränssnitt – redis-cli
- Lagrar nyckel-värdepar och stöder datastrukturer som list, set och hash
- Kan lagra värden på upp till 512 MB i storlek
- Tillåter att publicera och prenumerera på meddelanden med pub-/undermeddelandeköer
- Geospatialt stöd genom att tillhandahålla speciella kommandon för att hantera geospatial data i realtid
- Tillåter exekvering av LUA-skript
- Erbjuder olika kunder för populära tekniker
- Stöder IoT och inbäddade enheter
- Stöd för vårdata
- Stöd för Spring Cache med Java-klienter som Redisson
2.2. Installation
Vi kan ladda ner den senaste Redis-servern från den officiella webbplatsen och installera den:
$ 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 är en NoSQL-dokumentdatabas som lagrar information i en JSON-liknande dokumentstruktur. Det är användbart som ett schemalöst datalager för snabbt föränderliga applikationer, prototyper och startups i en design- och implementeringsfas .
3.1. Funktioner
- Erbjuder ett interaktivt kommandoradsgränssnitt MongoDB Shell (mongosh ) för att utföra administrativa operationer och fråga/uppdatera data
- JSON-baserad frågestruktur med stöd av joins
- Stöder olika typer av sökningar som geobaserad sökning, grafsökning och textsökning
- Stöder ACID-transaktioner med flera dokument
- Stöd för vårdata
- Tillgänglig i community-, företags- och molnutgåvor (MongoDB Atlas)
- Olika drivrutiner för stora teknologier som C++, Java, Go, Python, Rust och Scala
- Tillhandahåller GUI för att utforska och manipulera data genom MongoDB Compass
- Erbjuder en visuell representation av data med hjälp av MongoDB-diagram
- MongoDB BI Connector tillhandahåller anslutningar till BI- och analysplattformar
3.2. Installation
Vi kan ladda ner den senaste MongoDB-servern eller, om vi använder macOS, kan vi installera community-utgåvan direkt med Homebrew:
brew tap mongodb/brew
brew install [email protected]
4. När ska man använda Redis?
4.1. Cachning
Redis ger klassens bästa cachingprestanda genom att tillhandahålla en svarstid på under millisekunder på ofta efterfrågade objekt .
Dessutom tillåter det att ställa in utgångstiden på nycklar med kommandon som EXPIRE , UTGÅR och PEXPIRE .
Samtidigt kan vi använda PRESIST kommando för att ta bort timeouten och bevara nyckel-värdeparet, vilket gör det idealiskt för cachning.
4.2. Flexibel datalagring
Redis tillhandahåller olika datastrukturer som sträng, lista, set och hash för att bestämma hur vi ska lagra och organisera vår data. Därför ger Redis oss full frihet över implementeringen av databasstrukturerna.
Det kan dock också ta lång tid att tänka igenom DB-designen. På samma sätt kan det vara utmanande att bygga och underhålla schemats inre struktur med Redis.
4.3. Komplex datalagring
På liknande sätt, med kombinationen av listan, uppsättningen och hashen, kan vi implementera komplexa datastrukturer som köer, matriser, sorterade uppsättningar och grafer för vår förvaring.
4.4. Chatt, kö och meddelandeförmedlare
Redis kan publicera och prenumerera på meddelanden med pub-/undermeddelandeköer med mönstermatchning . Således kan Redis stödja appar för chatt och sociala medier i realtid.
På liknande sätt kan vi implementera en lätt kö med hjälp av listdatastrukturen . Dessutom stöder Redis lista atomoperationer och erbjuder blockeringsmöjligheter, vilket gör den lämplig att implementera en meddelandeförmedlare.
4.5. Session Store
Redis tillhandahåller ett datalager i minnet med beständighetsfunktioner, vilket gör det till en bra kandidat för att lagra och hantera sessioner för webb-/mobilapplikationer.
4.6. IoT och inbyggda system
Enligt Redis officiella dokumentation stöder nyare versioner från 4 och 5 ARM-processorn och Raspberry Pi .
Den körs också på Andriod och ansträngningar görs för att inkludera Android som en officiellt stödd plattform.
Så, Redis ser perfekt ut för IoT och inbyggda system, gynnat av dess lilla minnesutrymme och låga CPU-krav.
4.7. Realtidsbearbetning
Eftersom vi är en blixtsnabb datastruktur i minnet kan vi använda den för applikationer för realtidsbehandling.
Redis kan till exempel effektivt betjäna applikationer som erbjuder funktioner som aktiekursvarningar, topplistor och realtidsanalys.
4.8. Geospatiala appar
Redis erbjuder en specialbyggd in-memory datastruktur Geo Set – byggd på sorterad uppsättning – för att hantera geospatiala index. Dessutom tillhandahåller den specifika geokommandon som GEOADD , GEOPOS , och GEORADIUS för att lägga till, läsa och analysera geospatial data.
Därför kan vi bygga geospatiala applikationer i realtid med platsbaserade funktioner som körtid och körsträcka med Redis .
5. När ska man använda MongoDB?
5.1. Dynamiska frågor
MongoDB erbjuder en kraftfull uppsättning frågeverktyg. Dessutom tillhandahåller den ett brett utbud av flexibla frågescheman som geobaserad sökning, grafsökning och textsökning för effektiv datahämtning.
Samtidigt, med stöd av JSON-strukturerade frågor, ser MongoDB ut att vara ett bättre val för scenarier där datasökning och analys är dagliga aktiviteter.
5.2. Snabbt ändring av schema
MongoDB kan vara till hjälp i design- och tidiga implementeringsfaser, där vi kräver snabba ändringar av vårt schema. Samtidigt gör den inga antaganden om underliggande data, och den optimerar sig själv utan att behöva ett schema.
5.3. Prototyping och Hackathons
Genom att följa den JSON-liknande dokumentstrukturen möjliggör MongoDB snabb prototypframställning, snabba integrationer med front-end-kanaler och hackathons .
Samtidigt kan det vara användbart för juniorlag som inte vill ta itu med komplexiteten i ett RDBMS.
5.4. Kataloger
Genom att tillhandahållaett dynamiskt schema som är självbeskrivande gör MongoDB det enklare att lägga till produkter, funktioner och rekommendationer för kataloger som e-handel, tillgångshantering och inventering.
Vi kan också använda uttrycksfulla frågor i MongoDB för funktioner som avancerad sökning och analys genom att indexera ett fält eller en uppsättning fält i det JSON-strukturerade dokumentet.
5.5. Mobilappar
MongoDB:s JSON-dokumentstruktur tillåter lagring av olika typer av data från olika enheter tillsammans med geospatiala index.
Dessutom möjliggör horisontell skalbarhet med inbyggd skärning enkel skalning av en mobilapp. Därför kan MongoDB betjäna massor av användare, bearbeta petabyte med data och stödja hundratusentals operationer per sekund, vilket gör det till ett värdigt val för att stödja mobilappar.
5.6. Innehållsrika appar
Det är inte lätt att införliva olika innehåll i RDBMS för moderna innehållsrika appar. Å andra sidan tillåter MongoDB lagring och visning av rikt innehåll som text, ljud och video .
Dessutom vi kan enkelt lagra filer som är större än 16 MB effektivt med MongoDB GridFS . Det tillåter åtkomst till en del av stora filer utan att ladda hela filen i minnet.
Dessutom synkroniserar den automatiskt våra filer och metadata över alla servrar. Som ett resultat ser MongoDB ut att vara ett mer lämpligt val för att stödja innehållsrika appar.
5.7. Spelappar
I likhet med mobila och innehållsrika appar kräver spel också massiv skalning och dynamiska datastrukturer. Således kan MongoDB vara ett lovande val för spelappar.
5.8. Global Cloud Database Service
MongoDB Atlas är tillgängligt i flera molntjänster som AWS, Google Cloud och Azure . Dessutom, med inbyggd replikering och failover-mekanism, erbjuder den ett mycket tillgängligt distribuerat system. Därför kan vi snabbt distribuera och hantera databasen och använda den som en global molndatabastjänst.