sql >> Database >  >> NoSQL >> MongoDB

MongoDB + Elasticsearch of alleen Elasticsearch?

Praten over argumenten te gebruiken Mongo in plaats van/samen met ES:

  1. Gebruikers-/rolbeheer.

    • Ingebouwd in MongoDB. Misschien niet geschikt voor al je behoeften, misschien ergens onhandig, maar het bestaat en het is vrij lang geleden geïmplementeerd.
    • Het enige voor beveiliging in ES is shield . Maar het wordt alleen verzonden voor een Gold/Platinum-abonnement voor productiegebruik.
  2. Schema

    • ES is schemaloos, maar is gebouwd op Lucene en geschreven in Java . Het kernidee van deze tool - documenten indexeren en zoeken, en om op deze manier te werken, vereist indexconsistentie. Aan de achterkant moeten alle documenten in vlak lucene worden geplaatst index, waarvoor enig begrip vereist is over hoe ES om moet gaan met uw geneste documenten en waarden, en hoe u uw indexen moet organiseren om het evenwicht te bewaren tussen snelheid en volledigheid/consistentie van gegevens. Werken met ES vereist dat je constant een aantal dingen over het schema in gedachten houdt. D.w.z. omdat je bijna alles naar ES kunt indexeren zonder de bijbehorende mapping vooraf te plaatsen, kan ES de mapping on-the-fly "raden", maar soms doen ze het verkeerd en soms is impliciete mapping slecht, want als het eenmaal is geplaatst, kan het niet meer worden gewijzigd w /o hele index opnieuw indexeren. Het is dus beter om ES niet te behandelen als een schemaloze winkel, omdat je enige tijd op een hark kunt stappen (en dit zal pijn zijn :) ), maar behandel het eerder als schema-intensief, tenminste als je met documenten werkt, die kunnen worden opgedeeld in concrete velden.
    • Mongo daarentegen kan "kauwen en geen kruimels achterlaten" van bijna alles wat je erin stopt. En de meeste van uw zoekopdrachten zullen prima werken, totdat u zich herinnert hoe Mongo uw gegevens vanuit JavaScript-perspectief zal behandelen. En aangezien JS zwak getypt is, kun je werken met een echt schemaloze workflow (zeker, als je dat nodig hebt)
  3. Omgaan met niet-tabelachtige gegevens.

    • ES is beperkt tot het verwerken van gegevens zonder deze in de zoekindex te plaatsen. En deze oplossing is goed genoeg, wanneer u wat extra gegevens moet opslaan en ophalen (vergeleken met gegevens waartegen u wilt zoeken).
    • MongoDB ondersteunt gridFS . Dit geeft u de mogelijkheid om grote hoeveelheden gegevens achter dezelfde interface te verwerken. Dat wil zeggen, u kunt binaire gegevens opslaan in Mongo en deze binnen dezelfde interface ophalen, vanuit uw codeperspectief.


  1. MongoDB Indexing vs Array Implementatie voor onze specifieke toepassing

  2. Spring Data Mongo kan PersistentEntity voor Enum niet vinden

  3. Taakplanning in MongoDB

  4. Top 10 kenmerken van MongoDB Atlas