MG
Есть база данных из двух таблиц, по сути - это база данных товаров от разных поставщиков.
В первой хранится список товаров, в виде: ID группы, Бренд, Артикул. Связка
Бренд+Артикул - уникальная, ID группы может повторяться.
Таблица нужна для идентификации товара и для поиска аналогов товаров - все
товары с одинаковым ID группы это товары-заменители.
В этой таблице примерно 15 миллионов записей, изменения вносятся редко, т.е. в
основном таблица работает на SELECT.
Во вторую таблицу пользователи могут загрузить свои предложения, а другие пользователи делают по ней поиск. Тут может быть и много INSERTов и много SELECTов. Каждый пользователь может загрузить до 100К позиций. Размер базы находится в пределах 100 млн - 10 млрд записей. Т.е. когда пользователь делает поиск, то сайт ему показывает результаты и прямые и все предложения по товарам-аналогам. И ещё, когда пользователь загружает своё предложение, то каждая позиция проверяется по Таблице 1, что там этот товар есть, которых нет - отображаются пользователю списком после загрузки.
Сейчас это всё работает в MySQL, но пока что пользователей очень мало и соответственно позиций в базе тоже мало. Миллиарда строк в таблице прайса ещё нет, а когда будет - начнутся страшные тормоза.
Поэтому, внимание вопрос - как это всё правильно архитектурно организовать, чтобы и поиск не пострадал, и загрузка новых предложений работала быстро.
Сейчас у меня идея такая - Nginx + Unievent::HTTP + Clickhouse. Надо ли использовать тут какую-нибудь прокладку в виде Редиса? Может, Таблицу 1 вообще полностью запихнуть в Redis? Как это максимально эффективно организовать? В общем, буду благодарен за любые идеи.