Я делаю приложение, которое клиенты могли отправлять пользовательские данные, и эти пользовательские данные должны быть «запросами», я имею в виду, что клиент мог искать эти поля.Каков наилучший подход для запроса пользовательских данных. MongoDB/ElasticSearch
Данные, передаваемые для пользователя ниже:
data = {
name: "Thiago",
id: 2093
country: "Portugal",
custom_data: {
company: "foo",
plan: "pro",
department: "it",
sessions: 203
}
}
В связи с требованием применения схемы менее, мы используем MongoDB для сохранения данных.
Но, мне интересно, как запрашивать эти пользовательские данные? У нас нет индекса для этих полей, и есть много документов ~ 1.3M.
Я думаю, что, используя elasticsearch, мы можем справиться с этим требованием, но есть ли хороший подход, не используя его? только используя mongodb?
Один пример запроса может быть:
Найти все из Португалии и имеют более чем 100 логинов.
Заранее спасибо
У вас есть произвольные документы и произвольные запросы? Если это так, тогда запросы будут выполняться как SLOW каждый раз, когда они выполняются, так как каждый документ нужно будет отсканировать. Даже со всем в памяти это не будет быстрым или эффективным, к сожалению, без индекса. – WiredPrairie
@WiredPrairie право. Я использую elasticsearch для индексации моих документов. У каждого арендатора будет свой собственный индекс внутри ES. Интересно, правильно ли этот подход, что вы думаете? elasticsearch хороший подход для этого сценария? – CHAPa
Учитывая, что вам нужны типы данных (> 100), и вы не можете создавать индексы для каждой комбинации (так как в коллекции должно быть не более 64 индексов с рекомендацией постоянно оставаться под 16), я не вижу эффективного эффективного/логичным способом моделирования этого в MongoDB. Может быть один, но это не очевидно. – WiredPrairie