Можно ли осуществить быстрый поиск по 20-50 тысячам полей практически мгновенно?

Каковы оптимальные подходы для реализации сервиса по поиску в базе данных с 20 000 записями: использовать стандартный метод через Ajax для пошагового возврата количества найденных соответствий с сервера или загружать все значения в массив JavaScript и затем выполнять поиск с помощью различных методов на клиенте? Какие методы вы используете и какие советы можете дать для повышения производительности, учитывая наличие небольшой задержки?
  • 26 февраля 2024 г. 2:28
Ответы на вопрос 2
Для осуществления быстрого поиска по 20-50 тысячам полей практически мгновенно, оптимальным подходом будет использование специализированных инструментов и методов, таких как индексирование данных, кэширование результатов поиска, асинхронный поиск.

Для реализации сервиса по поиску в базе данных с 20 000 записями рекомендуется использовать комбинацию методов как на серверной, так и на клиентской стороне. Например, можно загрузить все данные на клиентскую сторону один раз и затем выполнять поиск на стороне клиента с помощью JavaScript. При этом можно использовать различные методы для оптимизации поиска, такие как использование индексированных структур данных (например, деревья поиска), фильтрация данных до и после загрузки на клиентскую сторону, использование асинхронных запросов для обновления результатов поиска без перезагрузки страницы.

Важно также учитывать, что производительность может быть улучшена с помощью оптимизации запросов к базе данных, использования кэширования результатов поиска, ограничения объема данных, которые нужно загружать на клиентскую сторону, и оптимизации кода на стороне клиента.

Итак, для повышения производительности поиска в базе данных с небольшой задержкой, рекомендуется использовать комбинацию методов как на серверной, так и на клиентской стороне, а также следовать советам по оптимизации запросов к базе данных, использованию кэширования и другим методам оптимизации кода.
Тут обычное нормальное решение - это кэширование. <br/> И ваш второй вариант как раз и является таким велосипедом. В нём нет ничего зазорного, но зачем что-то городить, когда есть проверенные решения, которые будут работать "на вырост". <br/> Если вы знаете, что размер вашего кэша будет помещаться в оперативной памяти машины, то используйте Redis. Это будет очень быстрое решение. <br/> Если же ваш кэш больше, то используйте Elasticsearch. Он представляет отличные инструменты как раз для такого поиска. Он чуть помедленней, чем Redis, но, как мне кажется, удобнее, и всё равно гораздо быстрее реляционных баз. <br/> Главная проблема - это инвалидация кэша. Т.е. надо чётко продумать правила, когда какая-то запись уже устаревает, и надо снова обновить её из базы данных.
Похожие вопросы