MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB + Elasticsearch ou uniquement Elasticsearch ?

Parler des arguments à utiliser Mongo au lieu de/avec ES :

  1. Gestion des utilisateurs/rôles.

    • Intégré à MongoDB. Peut ne pas répondre à tous vos besoins, peut être maladroit quelque part, mais il existe et il a été implémenté il y a assez longtemps.
    • La seule chose pour la sécurité dans ES est shield . Mais il n'est livré que pour l'abonnement Gold/Platinum pour une utilisation en production.
  2. Schéma

    • ES est sans schéma, mais il est construit sur Lucene et écrit en Java . L'idée centrale de cet outil - indexer et rechercher des documents, et travailler de cette manière nécessite la cohérence de l'index. À l'arrière, tous les documents doivent être ajustés à plat lucene index, ce qui nécessite une certaine compréhension de la façon dont ES doit traiter vos documents et valeurs imbriqués, et comment vous devez organiser vos index pour maintenir l'équilibre entre la vitesse et l'exhaustivité/cohérence des données. Travailler avec ES nécessite que vous gardiez constamment à l'esprit certaines choses concernant le schéma. C'est-à-dire:comme vous pouvez indexer presque n'importe quoi sur ES sans mettre le mappage correspondant à l'avance, ES peut "deviner" le mappage à la volée mais parfois le faire mal et parfois le mappage implicite est mauvais, car une fois mis, il ne peut pas être changé w /o réindexant l'index entier. Donc, il vaut mieux ne pas traiter ES comme un magasin sans schéma, car vous pouvez marcher sur un râteau un certain temps (et ce sera douloureux :) ), mais traitez-le plutôt comme un schéma intensif, du moins lorsque vous travaillez avec des documents, qui peuvent être découpés en champs concrets.
    • Mongo, d'autre part, peut "mâcher et ne laisser aucune miette" de presque tout ce que vous y mettez. Et la plupart de vos requêtes fonctionneront bien, jusqu'à ce que vous vous rappeliez comment Mongo traitera vos données du point de vue JavaScript. Et comme JS est faiblement typé, vous pouvez travailler avec un flux de travail vraiment sans schéma (bien sûr, si vous en avez besoin)
  3. Gestion des données non tabulaires.

    • ES est limité pour gérer les données sans les placer dans l'index de recherche. Et cette solution est suffisante lorsque vous avez besoin de stocker et de récupérer des données supplémentaires (par rapport aux données dans lesquelles vous souhaitez effectuer une recherche).
    • MongoDB prend en charge gridFS . Cela vous donne la possibilité de gérer de gros volumes de données derrière la même interface. C'est-à-dire que vous pouvez stocker des données binaires dans Mongo et les récupérer dans la même interface, du point de vue de votre code.