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