MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB + Elasticsearch ou apenas Elasticsearch?


Falando sobre argumentos para usar Mongo em vez de/junto com ES:

  1. Gerenciamento de usuários/funções.
    • Integrado no MongoDB. Pode não atender a todas as suas necessidades, pode ser desajeitado em algum lugar, mas existe e foi implementado há muito tempo.
    • A única coisa para segurança no ES é shield . Mas ele é enviado apenas para assinatura Gold/Platinum para uso em produção.

  2. Esquema
    • ES não tem esquema, mas é construído com base no Lucene e escrito em Java . A ideia central desta ferramenta - indexar e pesquisar documentos, e trabalhar desta forma requer consistência de índice. No back-end, todos os documentos devem ser ajustados em lucene plano index, que requer algum entendimento sobre como o ES deve lidar com seus documentos e valores aninhados e como você deve organizar seus índices para manter o equilíbrio entre velocidade e integridade/consistência dos dados. Trabalhar com ES requer que você tenha em mente algumas coisas sobre esquema constantemente. Ou seja:como você pode indexar quase qualquer coisa no ES sem colocar o mapeamento correspondente antecipadamente, o ES pode "adivinhar" o mapeamento em tempo real, mas às vezes faz errado e às vezes o mapeamento implícito é ruim, porque uma vez colocado, não pode ser alterado w /o reindexando todo o índice. Portanto, é melhor não tratar o ES como uma loja sem esquema, porque você pode pisar em um rake em algum momento (e isso será dor :) ), mas trate-o como um esquema intensivo, pelo menos quando você trabalha com documentos, que podem ser divididos em campos concretos.
    • Mongo, por outro lado, pode "mastigar e não deixar migalhas" de quase tudo que você colocar nele. E a maioria das suas consultas funcionará bem, até você se lembrar de como o Mongo lidará com seus dados da perspectiva do JavaScript. E como o JS é fracamente tipado, você pode trabalhar com um fluxo de trabalho realmente sem esquema (com certeza, se precisar)

  3. Manipulação de dados não semelhantes a tabelas.
    • ES é limitado a lidar com dados sem colocá-los no índice de pesquisa. E essa solução é boa o suficiente, quando você precisa armazenar e recuperar alguns dados extras (comparando com os dados que deseja pesquisar).
    • MongoDB suporta gridFS . Isso lhe dá a capacidade de lidar com grandes blocos de dados por trás da mesma interface. Ou seja, você pode armazenar dados binários no Mongo e recuperá-los na mesma interface, da perspectiva do seu código.