Этот вопрос касается выбора архитектуры, прежде чем вникать в детали экспериментирования и реализации. Это о пригодности, в плане масштабируемости и производительности, elasticsearch v.s. MongoDB, для определенной цели.
Гипотетически обе хранят объекты данных, которые имеют поля и значения, и позволяют запрашивать это тело объектов. Поэтому, предположительно, фильтрация подмножеств объектов в соответствии с полями, выбранными ad-hoc, подходит для обоих.
Мое приложение будет вращаться вокруг выбора объектов в соответствии с критериями. Он будет выбирать объекты путем фильтрации одновременно более чем одним полем, иначе говоря, критерии фильтрации запросов обычно будут содержать от 1 до 5 полей, а может быть и больше в некоторых случаях. В то время как поля, выбранные в качестве фильтров, будут подмножеством гораздо большего количества полей. Создайте примерно 20 имен полей, и каждый запрос является попыткой фильтровать объекты по нескольким полям из этих общих 20 полей (это может быть меньше или больше 20 общих имен полей, я просто использовал это число, чтобы продемонстрировать соотношение поля в поля, используемые в качестве фильтров в каждом дискретном запросе). Фильтрация может быть связана с наличием выбранных полей, а также значениями поля, например. отфильтровывая объекты с полем A, а их поле B находится между x и y, а их поле C равно w.
Мое приложение будет постоянно выполнять такую фильтрацию, в то время как не было бы ничего или очень мало констант, с точки зрения того, какие поля используются для фильтрации в любой момент. Возможно, в elasticsearch индексы должны быть определены, но, возможно, даже без индексов скорость сравнима с индексами MongoDB.
В соответствии с данными, поступающими в хранилище, особых сведений об этом нет. Объекты почти не будут изменены после их установки. Возможно, старые объекты нужно будет отбросить, я хотел бы предположить, что поддержка обоих хранилищ данных истекает, удаляя материал изнутри или запросом приложения. (Реже, объекты, которые соответствуют определенному запросу, также должны быть удалены).
Как вы думаете? И вы экспериментировали с этим аспектом?
Я интересуюсь производительностью и масштабируемостью каждого из двух хранилищ данных для такого рода задач. Это своего рода архитектурный вопрос, и детали специфических для магазина опций или краеугольных камней запроса, которые должны сделать его хорошо продуманным, приветствуются как демонстрация полностью продуманного предложения.
Спасибо!