Прямо сейчас вы используете MongoDB
для извлечения и фильтрации данных, которые, как вы упомянули, не в предварительно обработанном формате.
MongoDB или другой основанный на документе номер SQL, такой как DynamoDB, очень хорош, когда вы сохраняете данные в денормализованном формате и затем получаете их на основе идентификатора или с помощью нескольких фильтров , даже для эффективной фильтрации данных вам необходимо создать индекс (аналогично MySQL index), который занимает дополнительное пространство и по умолчанию не кэшируется.
При правильном использовании выше отображается страница сведений о продукте. на сайтах электронной коммерции, где эти данные обычно хранятся в нормализованном формате для поддержки ACID, но также и в denormalized format in NoSQL
для поддержки более быстрого чтения, и там вы не выполняете поиск, но поиск в электронной коммерции по-прежнему осуществляется только через инвертированный индекс *.
Вы можете очень быстро получать отфильтрованные данные, если используете фильтры в запросах эластичного поиска см. Официальный do c для контекста фильтра
Elasticsearch автоматически кэширует часто используемые фильтры для повышения производительности.
Это решит вашу проблему o Для извлечения миллиона документов , и после этого, как вы уже упоминали, вы должны использовать механизм очереди для записи этих огромных данных, и Kafka очень популярен и отлично подходит для этого варианта использования.
PS: - Нет необходимости увеличивать конфигурации сервера, правильный дизайн решит проблему, и добавление большего количества оборудования - это просто борьба с симптомом, а не устранение причины root.