sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB + Elasticsearch eller bara Elasticsearch?

Pratar om argument att använda Mongo istället för/tillsammans med ES:

  1. Användar-/rollhantering.

    • Inbyggd i MongoDB. Passar kanske inte alla dina behov, kan vara klumpig någonstans, men det finns och det implementerades för ganska länge sedan.
    • Det enda för säkerheten i ES är shield . Men den skickas endast för guld/platinaprenumeration för produktionsanvändning.
  2. Schema

    • ES är schemalöst, men det är byggt ovanpå Lucene och skrivet i Java . Kärnidén med detta verktyg - indexera och söka i dokument, och att arbeta på detta sätt kräver konsekvent index. På baksidan ska alla dokument monteras i platt lucene index, vilket kräver viss förståelse för hur ES ska hantera dina kapslade dokument och värden, och hur du bör organisera dina index för att upprätthålla balansen mellan hastighet och datafullständighet/konsistens. Att arbeta med ES kräver att du hela tiden har vissa saker i schemat i åtanke. Dvs:eftersom du kan indexera nästan vad som helst till ES utan att sätta motsvarande mappning i förväg, kan ES "gissa" mappning i farten men ibland göra det fel och ibland är implicit mappning av ondo, för när den väl har lagts kan den inte ändras. /o återindexera hela indexet. Så det är bättre att inte behandla ES som en schemalös butik, eftersom du kan trampa på en rake någon gång (och detta kommer att vara smärta :) ), utan behandla det snarare som schemaintensivt, åtminstone när du arbetar med dokument, som kan delas upp till konkreta fält.
    • Mongo, å andra sidan, kan "tugga och lämna inga smulor" av nästan allt du stoppar i den. Och de flesta av dina frågor kommer att fungera bra, tills du kommer ihåg hur Mongo kommer att hantera din data ur JavaScript-perspektiv. Och eftersom JS är svagt skrivet kan du arbeta med ett riktigt schemalöst arbetsflöde (säkert, om du behöver sådant)
  3. Hantera icke-tabellliknande data.

    • ES är begränsad till att hantera data utan att lägga den till sökindex. Och den här lösningen är tillräckligt bra när du behöver lagra och hämta lite extra data (jämfört med data du vill söka mot).
    • MongoDB stöder gridFS . Detta ger dig möjlighet att hantera stora bitar av data bakom samma gränssnitt. Dvs du kan lagra binär data i Mongo och hämta den inom samma gränssnitt, från ditt kodperspektiv.


  1. MongoDB 'count()' är väldigt långsam. Hur förfinar/arbetar vi med det?

  2. Rätt infoga DateTime från c# till mongodb

  3. Visuell statistik för din MongoDB-server

  4. docker-compose undertrycka mongodb-utgång