sql >> Databasteknik >  >> NoSQL >> MongoDB

Har någon arbetat med Aerospike? Hur jämför det med MongoDB?

Jag har använt Aerospike, MongoDB och Redis och har testat många andra NoSQL-databaser. Jag skulle säga att Aerospike är väldigt bra på vad den gör men den är annorlunda än MongoDB. Allt beror på vad du planerar att använda en databas till. Jag kan ge dig ett exempel på vad jag använder mina olika databaser till. Jag kan också gå igenom skillnaderna mellan dem och diskutera fördelarna med Aerospike.

MongoDB

Jag använder MongoDB som ett SQL-alternativ. I min MongoDB-databas har jag många olika fält. Ofta ändras fälten och jag kommer slumpmässigt behöva fråga om olika fält. Det är en mycket ostrukturerad databas och MongoDB är fantastisk på det. Jag har också använt MongoDB som en standard nyckel-värde butik. Det fungerar bra men jag har låtit MongoDB prestera suboptimalt i både transaktionsskala och databasstorleksskala. Visserligen kan databasen ha optimerats lite bättre men jag har väldigt svårt att hitta dokumentation om hur man konfigurerar MongoDB korrekt i olika situationer.

Redis

Redis är en ren nyckelvärdebutik. Redis största problem är att det är rent i minnet (den kommer att använda disk som backup men du kan inte lagra mer information än du har tillgängligt minne). Den är extremt snabb för vad den används till. Jag använder den personligen för en liten transaktionsdatabas:jag gör mycket enkla funktioner på tangenter som att räkna hur många gånger en händelse hände för en viss användare. Jag gör också snabba sökningar i minnet som jag behöver mappas till olika värden. Redis är ett utmärkt verktyg för en liten datamängd och det är extremt snabbt. Konfigurationen är också mycket enkel.

Aerospike

Jag använder personligen Aerospike för att ersätta Redis när det är dags att skala. Enligt min förståelse kan den användas till mer. Precis som Redis är Aerospike en nyckel-värdebutik. Jag tror att den öppna källkodsutgåvan också stöder sekundära index, vilket Redis inte har (jag har inte använt sekundära index i produktionen men har gjort lite tester på dem).

Aerospikes bästa egenskap är dess förmåga att skala. Det största problemet jag behövde lösa när jag tittade på Aerospike var att skala mitt system för att hantera stora datamängder samtidigt som jag var extremt snabb. Projektet jag använder Aerospike för har mycket höga krav på hastighet. Jag brukar göra 3-4 databasuppslagningar plus annan bearbetning och behöver ha under 50 ms transaktionstider. Några sökningar är på datamängder som är 300 GB+. Jag kunde inte hitta en lösning för att hålla denna data och göra den tillgänglig inom rimlig tid. Redis kommer uppenbarligen inte att fungera om jag inte hade en maskin som hade 300 GB+ RAM. MongoDB började prestera extremt dåligt i en storlek mycket lägre än 300 GB. Så jag gav Aerospike en chans, och den kunde hantera allt väldigt bra. Det bästa med Aerospike:i takt med att min datamängd har vuxit har jag inte behövt göra så mycket mer än att ställa upp en ny låda vid behov. Hastigheten har hållits konstant.

Jag tycker också att Aerospikes dokumentation är mycket bra. Det är inte så svårt att konfigurera och det är ganska lätt att hitta svar på alla problem som dyker upp.

Slutsats

Så, är Aerospike så bra som de påstår? Själv har jag sett inget mindre än det som har påståtts. Jag har inte behövt skala till 1 miljon TPS men jag tror att det skulle vara möjligt med tillräckligt med hårdvara. Jag tror också att siffrorna visar en hastighetsskillnad mellan Aerospike och MongoDB. Aerospike är en mycket mer "konfigurerad" och "planerad" databas än MongoDB. På grund av detta kommer Aerospike att vara mycket snabbare i skala än MongoDB. Det behöver bara oroa sig för ett enda (eller i händelse av sekundära index, några hundra) index till skillnad från MongoDB som kan förändras dynamiskt. Frågan du verkligen behöver ställa är vad du försöker åstadkomma med din databas. Titta sedan på vilken databas som passar dina behov bäst. Om du behöver en skalbar, snabb butiksdatabas med nyckelvärden skulle jag säga att Aerospike förmodligen är den bästa som finns.

Låt mig veta om du har några specifika frågor eller behöver förtydligas. Jag skulle förmodligen kunna hjälpa dig.



  1. Hur implementerar jag sökfilterfråga med mongodb?

  2. Gruppera och visa data

  3. Migrera data från PostgreSQL till MongoDB

  4. Mongoose Aggregate :begränsa antalet poster i $group