- Ruby 2.4
- Rails 5.1
- PostgreSQL 9.6+
- RabbitMQ 3.3+
bundle
rails db:create
rails db:migrate
rails db:seed
(required running RabbitMQ)
rails sneakers:run
rails s
- Импорт из источников данных в БД
- Распределение нагрузки с помощью RabbitMQ
- Распаралеллирование импорта на этапе источника и на этапе импорта товаров (25 штук на задачу)
- Поиск по товарам с помощью full-text поиска PostgreSQL и распределение ранга в зависимости от важности данных: название > производитель/название модели/префикс(?) > категории > описание/доп. информация.
- Доработать отоброжение подробной информации о товаре (Сейчас отоброжаются не все что находится в БД).
- Вывод статистики на странице импорта (не в задаче, но иначе там просто одинокая ссылка на импорт)
- Распаралеллить импорт категорий. Скорее всего для этого понадобиться делать RPC с RabbitMQ, так как импорт товаров требует наличия категорий в БД.
- Увеличить отказоустойчивость импорта. Меньше подразумевать что что-то пришло в объекте, больше делать проверок.
(Ненадежные, делал один раз и с работающими бразуером и IDE в бекграунде. Скорее всего реальные результаты ниже.)
- Импорт на пустую БД: 27 секунд
- Импорт на заполненую БД: 17 секунд
- Поиск: 1 секунда