Задать вопрос

Что выбрать в качестве промежуточного хранилища в проекте?

Добрый день! Есть проект на FastApi он обращается к БД. Есть желание снизить нагрузку на БД и уменьшить время отклика приложения. Какие варианты для себя нашел.
1) Кэширование. Из плюсов: Снижение нагрузки, но часть запросов все равно будут проходить из-за непопадания в кэш.
2) Промежуточное хранилище. Идея выгрузить все в Redis провалилась, так как на более 120К записей поиск начал тормозить сильнее прямого запроса к БД.
3) ELK или Hadoop. Больше заточены под аналитические запросы(могу ошибаться).
Есть ли еще какие либо варианты для промежуточного хранения большого объема данных?
  • Вопрос задан
  • 2519 просмотров
Подписаться 6 Простой 3 комментария
Решения вопроса 1
2ord
@2ord
Что выбрать в качестве промежуточного хранилища в проекте?
Redis таковое и есть.

Смысл в кешировании не в том, чтобы сканировать в Redis всё подряд, а чтобы взять данные по заранее известному ключу или двух-трёх максимум, но не более, ключей.
Кеширование имеет смысл тогда, когда количество попаданий в кеш него большое. Если для возврата ответа сервером необходимо совершить запросов по 120К записям, то у вас что-то не так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Идея выгрузить все в Redis провалилась, так как на более 120К записей поиск начал тормозить сильнее прямого запроса к БД.

Нужно более подробно изучить этот кейс. В момент "торможения" что происходило? Шла выгрузка?
Redis упал в swap? Дело в том что структуры данных Redis спроектированы так что дают
постоянный отклик почти на любом объеме данных лишь бы хватало памяти. Этот эффект
который вы поймали говорит скорее всего о неверном использовании.

Попробуйте value хранить в разных форматах. В JSON. В бинарном (protobuf). В gzip. Оптимизируйте
бизнес данные. Я всегда находил способы не хранить длинные url. И заменить их на что-то.

В качестве промежуточного хранилища можно использовать много чего. Apache Ignite, Hazelcast,
LevelDb, RocksDb, CouchDb, Riak
. Но мне кажется что проблема ваша не в том какую
dbms взять а как грамотно реплицировать бизнес-данные в слой кеширования.

Поговорите с бизнесом какое отставание кеша от данных является приемлемым и исходите из этого.
В некоторых случаях отставанее в сутки является норм. А иногда даже милисекунда - уже нельзя.
Ответ написан
Комментировать
Negash
@Negash
Невнимателен, Технарь
Keydb, умеет в мульти мастер
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы