sql >> Databasteknik >  >> NoSQL >> MongoDB

Slaget om NoSQL-databaserna - Jämför MongoDB och Cassandra

Introduktion till MongoDB

MongoDB introducerades redan 2009 av ett företag som heter 10gen. 10gen döptes senare om till MongoDB Inc., företaget som är ansvarigt för utvecklingen av programvaran, och säljer företagsversionen av denna databas. MongoDB Inc. hanterar all support med sitt utmärkta supportteam i företagsklass dygnet runt. De har åtagit sig att tillhandahålla livstidssupport, vilket innebär att kunder väljer att använda vilken version av MongoDB som helst, och om de vill uppgradera, skulle det stödjas när som helst. Det ger dem också en möjlighet att vara synkroniserade med alla säkerhetskorrigeringar som företaget erbjuder dygnet runt.

MongoDB är välkända NoSQL-databaser som gjort en djup spridning under det senaste decenniet eller så, underblåst av den explosiva tillväxten av webben och mobilapplikationer som körs i molnet. Denna nya sort av internetanslutna applikationer kräver snabb, feltolerant och skalbar schemalös datalagring som NoSQL-databaser kan erbjuda. MongoDB använder JSON för att lagra data som dokument som kan variera i strukturerbjudanden, ett dynamiskt, flexibelt schema. MongoDB designad för hög tillgänglighet och skalbarhet med automatisk skärning. MongoDB är en av de populära databaserna med öppen källkod som uppstår under NoSQL-databasen, som används för datalagring med hög volym. MongoDB har raderna som kallas dokument som inte kräver ett schema för att definieras eftersom fälten skapas i farten. Datamodellen som är tillgänglig inom MongoDB tillåter hierarkisk relationsrepresentation, att lagra arrayer och andra mer komplexa strukturer mer effektivt.

Introduktion till Cassandra

Apache Cassandra är en annan välkänd som en fri och öppen källkod, distribuerad, bred kolumnbutik. Cassandra introducerades redan 2008 av ett par utvecklare från Facebook, som senare släpptes som ett projekt med öppen källkod. Det stöds för närvarande av Apache Software Foundation, och Apache underhåller för närvarande detta projekt för ytterligare förbättringar.

Cassandra är ett NoSQL-databashanteringssystem som är utformat för att hantera stora mängder data över många råvaruservrar och ge hög tillgänglighet utan en enda felpunkt. Cassandra erbjuder mycket robust stöd för kluster som spänner över flera datacenter, med asynkron masterless replikering som tillåter drift med låg latens för alla klienter. Cassandra stöder distributionsdesignen för Amazon Dynamo med datamodellen för Googles Bigtable.

Likheter mellan MongoDB och Cassandra

Med den korta introduktionen av dessa två NoSQL-databaser, låt oss se över några av likheterna mellan dessa två databaser:

Både MongoDB och Cassandra är NoSQL-databastyper och distribution med öppen källkod.

  • Ingen av dessa databaser är en ersättning till de traditionella RDBMS-databastyperna.
  • Båda dessa databaser är inte kompatibla med ACID (Atomicity, Consistency, Isolation, Durability), som hänvisar till egenskaper hos databastransaktioner som garanterar att databastransaktioner bearbetas tillförlitligt.
  • Båda dessa databaser stöder sönderdelning av horisontell partitionering.
  • Konsistens och Normalisering är två begrepp som dessa två databastyper inte uppfyller (eftersom dessa lutar mer åt RDBMS-databastyperna)

MongoDB vs. Cassandra:Funktioner

Båda teknikerna spelar en viktig roll inom sina områden, med deras likheter mellan MongoDB och Cassandra som visar deras gemensamma egenskaper och skillnader visar att dessa teknologier är unika.

Figur 1 MongoDB vs. Cassandra – 8 stora skillnader

Expressiv datamodell

MongoDB tillhandahåller en rik och uttrycksfull datamodell som är känd som "objektorienterad" eller "dataorienterad." Denna datamodell kan enkelt stödja och representera vilken datastruktur som helst i användarens domän. Data kan ha egenskaper och kan kapslas in i varandra för flera nivåer. Cassandra är mer av en traditionell datamodell med tabellstruktur, rader och specifika datatypkolumner. Denna typ definieras under skapandet av tabellen. Hur som helst, när vi jämför båda modellerna, tenderar MongoDB att tillhandahålla en rik datamodell. Figuren nedan beskriver de typiska högnivåarkitekturerna för båda databaserna när det gäller lagrings- och replikeringsnivåer.

Figur 2:Arkitekturdiagram MongoDB vs. Cassandra

Masternod för hög tillgänglighet

MongoDB stöder en masternod i ett kluster, som styr en uppsättning slavnoder. Om masternoden går ner väljs en slav till master och tar cirka 20-30 sekunder för densamma. Under denna fördröjningstid kommer klustret att vara nere och kommer inte att kunna acceptera någon inmatning. Cassandra stöder flera masternoder i ett kluster, och i händelse av att en av masternoderna går offline kommer dess plats att tas av en annan masternod. Som jämförelse stöder Cassandra högre tillgänglighet över MongoDB eftersom det inte påverkar klustret och alltid är tillgängligt.

Sekundära index

MongoDB har fler fördelar jämfört med Cassandra om en applikation kräver sekundära index tillsammans med flexibilitet i datamodellen. På grund av detta är MongoDB mycket lättare att indexera alla egenskaper hos data som lagras i databasen. Den här egenskapen gör det enkelt att fråga. Cassandra har markörstöd för de sekundära indexen, som är begränsade till enstaka kolumner och jämställdhetsjämförelser

Skrivskalbarhet

MongoDB stöder endast en huvudnod. Denna masternod i MongoDB accepterar bara ingången, och resten av noderna i MongoDB används som en utgång; därför, om data måste skrivas i slavnoderna och låta den passera genom masternoden. Cassandra stöder flera masternoder i ett kluster, vilket gör det lämpligt för skalbarhet.

Frågespråkstöd

För närvarande stöder MongoDB inte ett frågespråk. Frågorna i MongoDB är strukturerade som JSON-fragment. Däremot har Cassandra en användarvänlig uppsättning frågor som är känd som CQL (Cassandra Query Language) och är lätt att anpassa av utvecklare som har förkunskaper om SQL. Hur skiljer sig deras frågor?

Välja poster från kundtabellen:

 Cassandra:

SELECT * FROM customer;

 MongoDB:

db.customer.find()

Infoga poster i kundtabellen:

 Cassandra:

INSERT INTO customer (custid, branch, status) VALUES('appl01', 'headquarters', 'A');

 MongoDB:

db.customer.insert({ cust_id: 'appl01', branch: 'headquarters', status: 'A' })

Uppdatering av poster i kundtabellen:

Cassandra:

UPDATE Customer SET branch = ‘headquarters' WHERE custage > 2;

MongoDB:

db.customer.update( { custage: { $gt: 2 } }, { $set: { branch: 'headquarters' } }, { multi: true } )

Native aggregation

MongoDB har ett inbyggt Aggregation-ramverk som används för att köra en ETL-pipeline för att transformera data som lagras i databasen och stöder även både liten och medelstor datatrafik. När komplexiteten ökar blir ramverket också svårare att felsöka, medan Cassandra inte har ett integrerat aggregeringsramverk. Cassandra använde externa verktyg som Hadoop, Apache Spark, etc.  Därför är MongoDB bättre än Cassandra när det kommer till det inbyggda aggregeringsramverket.

schemalös modell

MongoDB tillhandahåller möjligheten för en användare att ändra upprätthållandet av vilket schema som helst i databasen. Varje databas kan ha olika struktur. Allt beror på programmet eller applikationen för att tolka data. Medan Cassandra inte erbjuder möjligheten att ändra scheman utan tillhandahåller statisk typning där användaren måste definiera kolumntypen i början.

Prestanda benchmark

Cassandra överväger att prestera bättre i applikationer som kräver stor databelastning eftersom den kan stödja flera masternoder i ett kluster. Medan MongoDB inte är idealiskt för applikationer med stor databelastning eftersom det inte kan skalas med prestanda. Baserat på branschstandarden riktmärke skapad av Yahoo! kallas YCSB, MongoDB ger bättre prestanda än Cassandra i alla tester de har utfört, i vissa användningsfall med så mycket som 25x. När MongoDB är optimerad för en balans mellan genomströmning och hållbarhet mellan Cassandra och MongoDB, ger MongoDB över 50 % högre genomströmning i blandade arbetsbelastningar och 2,5 gånger större genomströmning i läsdominanta arbetsbelastningar jämfört med Cassandra.

MongoDB ger den största flexibiliteten för att säkerställa hållbarhet för specifika operationer:användare kan välja den hållbarhetsoptimerade konfigurationen för specifika operationer som anses kritiska men för vilka den extra latensen är acceptabel. För Cassandra kräver denna ändring att en serverkonfigurationsfil redigeras och en fullständig omstart av databasen.

Slutsats

MongoDB är bäst känt för arbetsbelastningar med massor av mycket ostrukturerad data. Skalan och typerna av data som du kommer att arbeta med MongoDB:s flexibla datastrukturer kommer att passa dig bättre än Cassandra. För att använda MongoDB effektivt måste du klara dig med möjlighet till lite driftstopp om masternoden misslyckas, såväl som med begränsade skrivhastigheter. Och glöm inte att du också måste lära dig ett nytt frågespråk. I MongoDB kan komplexa data enkelt hanteras genom att använda stödfunktionerna för JSON-format. Detta är en viktig skillnad för MongoDB när du jämför det med Cassandra. I vissa situationer kan Cassandra anses vara den bästa databasen att implementera när den involverar stora mängder data, hastighetsoptimering och exekvering av frågor. Jämförelseresultaten för Cassandra och MongoDB, vi kommer att finna att de har sina respektive fördelar beroende på implementeringskraven och mängden data som ska hanteras.


  1. Lagra null kontra att inte lagra nyckeln alls i MongoDB

  2. Finns det några skäl till varför jag bör/inte bör använda ObjectIds i mina RESTful-url:s

  3. Infoga ordbok i MongoDB med c#-drivrutinen

  4. MongoDB Aggregation:Hur får man det totala antalet poster?