@alex99505

Best practices по хранению в бд записей с 30 полями и быстрым поиском?

Есть таблица, в ней нужно хранить >= 30 поле (числовых, varchar - до 255 символов), также в ней или по связи нужно иметь поле string, где будет храниться сериализированный массив с параметрами, которые не нужны для поиска.
В один конкретный момент предполагается, что будем иметь около 2 000 000 записей. Одни будут каждый день удаляться по условию, другие добавляться в течении дня постоянно.

Также нужен быстрый поиск по всем полям.
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 2
romesses
@romesses
Backend инженер
Если не нужен полнотекстовый поиск, тогда можно хранить и в MySQL.
Иначе - в полнотекстовых движках типа Sphinx Search, ElasticSearch. И стоит учесть, что для фильтрации критериев по числам они не подходят, насколько мне известно.

Вариант для MySQL 5.7+: хранить все >= 30 полей в одной колонке JSON. Добавить индексы на нужные поля. Без проблем с 2М и даже больше.
Одни будут каждый день удаляться по условию, другие добавляться в течении дня постоянно.
Использовать партицирование по критерию промежутка времени: по дням, месяцам, годам и т.д. Тогда будет проще регулярно удалять.
Ответ написан
@vitaly_il1
DevOps Consulting
Также нужен быстрый поиск по всем полям.

Если это не fulltext поиск, то советую MySQL, если fulltext - то Elastic.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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