MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB + Elasticsearch o solo Elasticsearch?

Parlando di argomenti da utilizzare Mongo invece di/insieme a ES:

  1. Gestione utenti/ruoli.

    • Integrato in MongoDB. Potrebbe non adattarsi a tutte le tue esigenze, potrebbe essere goffo da qualche parte, ma esiste ed è stato implementato abbastanza tempo fa.
    • L'unica cosa per la sicurezza in ES è shield . Ma viene fornito solo per l'abbonamento Gold/Platinum per l'uso in produzione.
  2. Schema

    • ES è senza schema, ma è basato su Lucene e scritto in Java . L'idea centrale di questo strumento - indicizzare e cercare documenti, e lavorare in questo modo richiede la coerenza dell'indice. Nella parte posteriore, tutti i documenti devono essere inseriti in lucene piatto index, che richiede una certa comprensione di come ES dovrebbe gestire i tuoi documenti e valori nidificati e come dovresti organizzare i tuoi indici per mantenere l'equilibrio tra velocità e completezza/coerenza dei dati. Lavorare con ES richiede di tenere costantemente a mente alcune cose sullo schema. Cioè:poiché puoi indicizzare quasi tutto su ES senza mettere in anticipo la mappatura corrispondente, ES può "indovinare" la mappatura al volo ma a volte sbagliare ea volte la mappatura implicita è malvagia, perché una volta inserita, non può essere modificata w /o reindicizzazione dell'intero indice. Quindi, è meglio non trattare ES come un negozio senza schema, perché puoi calpestare un rake un po' di tempo (e questo sarà dolore :) ), ma piuttosto trattalo come uno schema intensivo, almeno quando lavori con documenti, che possono essere suddivisi in campi concreti.
    • Mongo, d'altra parte, può "masticare e non lasciare briciole" da quasi tutto ciò che ci metti dentro. E la maggior parte delle tue query funzionerà bene, finché non ricorderai come Mongo tratterà i tuoi dati dal punto di vista JavaScript. E poiché JS è debolmente tipizzato, puoi lavorare con un flusso di lavoro davvero senza schema (di sicuro, se ne hai bisogno)
  3. Gestione di dati non di tipo tabellare.

    • ES è limitato a gestire i dati senza metterli nell'indice di ricerca. E questa soluzione è abbastanza buona, quando è necessario archiviare e recuperare alcuni dati extra (rispetto ai dati in cui si desidera eseguire la ricerca).
    • MongoDB supporta gridFS . Ciò ti dà la possibilità di gestire grandi blocchi di dati dietro la stessa interfaccia. Vale a dire, puoi archiviare dati binari in Mongo e recuperarli all'interno della stessa interfaccia, dalla prospettiva del tuo codice.