MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB + Elasticsearch или само Elasticsearch?

Говорим за аргументи, които да се използват Mongo вместо/заедно с ES:

  1. Управление на потребители/роли.

    • Вградено в MongoDB. Може да не отговаря на всичките ви нужди, може да е тромаво някъде, но съществува и е внедрено доста отдавна.
    • Единственото нещо за сигурност в ES е shield . Но се доставя само за златен/платинен абонамент за производствена употреба.
  2. Схема

    • ES е без схема, но е изграден върху Lucene и написан на Java . Основната идея на този инструмент - индексиране и търсене на документи и работата по този начин изисква последователност на индекса. В задния край всички документи трябва да бъдат поставени в плосък lucene индекс, което изисква известно разбиране за това как ES трябва да се справя с вашите вложени документи и стойности и как трябва да организирате вашите индекси, за да поддържате баланс между скорост и пълнота/последователност на данните. Работата с ES изисква постоянно да имате предвид някои неща относно схемата. Т.е.:тъй като можете да индексирате почти всичко в ES, без да поставите съответното картографиране предварително, ES може да „познае“ картографирането в движение, но понякога го прави погрешно и понякога имплицитното картографиране е зло, защото веднъж поставено, не може да бъде променено /o преиндексиране на целия индекс. Така че е по-добре да не третирате ES като магазин без схема, защото можете да стъпите на рейк известно време (и това ще бъде болка :) ), но по-скоро го третирайте като интензивно на схеми, поне когато работите с документи, които могат да бъдат нарязани на конкретни полета.
    • Mongo, от друга страна, може да „дъвче и да не оставя трохи“ от почти всичко, което сложите в него. И повечето ви заявки ще работят добре, докато не си спомните как Mongo ще се справи с вашите данни от гледна точка на JavaScript. И тъй като JS е слабо въведен, можете да работите с наистина безсхемен работен процес (със сигурност, ако имате нужда от такъв)
  3. Работа с данни, които не са подобни на таблица.

    • ES е ограничен да обработва данни, без да ги поставя в индекса за търсене. И това решение е достатъчно добро, когато трябва да съхранявате и извличате допълнителни данни (в сравнение с данните, с които искате да търсите).
    • MongoDB поддържа gridFS . Това ви дава възможност да обработвате големи части от данни зад един и същи интерфейс. Т.е. можете да съхранявате двоични данни в Mongo и да ги извличате в рамките на същия интерфейс, от гледна точка на вашия код.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изтриете елемент от JSON обект с помощта на nodeJS?

  2. Как да изпратите извлечено изображение от Mongo с помощта на GridFS в Spring Rest Call?

  3. (MongoDB Java) $push в масив

  4. Как да използвате $in или $nin в mongo агрегация $group $cond

  5. вземете стойности по име на ключ mongodb node.js драйвер