Я работаю над веб-приложением, в котором пользователь предоставляет параметры, и они используются для создания списка из 1000 лучших элементов из базы данных до 20 миллионов строк. Мне нужны все 1000 лучших товаров одновременно, и мне нужно, чтобы этот рейтинг происходил более или менее мгновенно с точки зрения пользователя.
В настоящее время я использую MySQL с пользовательской функцией для оценки и ранжирования данных, затем PHP берет их оттуда. Протестировано на базе данных из 1 млн строк, это занимает около 8 секунд, но мне нужна производительность около 2 секунд, даже для базы данных до 20 млн строк. Предпочтительно, это число должно быть еще ниже, чтобы приличная пропускная способность гарантировалась для 50 одновременных пользователей.
Я открыт для любого процесса с любым программным обеспечением, которое может обрабатывать эти данные максимально эффективно, будь то MySQL или нет. Вот особенности и ограничения процесса:
- Данные для каждой строки, имеющие отношение к процессу оценки, составляют около 50 байтов на элемент.
- Вставки и обновления в БД незначительны.
- Каждый балл не зависит от других, поэтому баллы можно вычислять параллельно.
- Из-за большого количества параметров и значений параметров результаты не могут быть предварительно рассчитаны.
- Метод должен хорошо масштабироваться для нескольких пользователей одновременно
- Чем меньше вычислительных ресурсов для этого требуется с точки зрения количества серверов, тем лучше.
Спасибо