Задать вопрос
dmitriyecho
@dmitriyecho

Правильность применяемого решения?

Всем привет.

Итак, дано:

Некая база сущностей, с порядка 15 text полями и 15-20 int полями.

Ожидаемый максимальный объем — порядка 30 млн строк.

Также к основной таблице идет десяток мелких таблиц связанных с ней м-м, т.е. таблицы связей с некоторыми справочниками, т.к. значения некоторых атрибутов сущности могут быть множественные и по ним может быть сделана выборка.

Нагрузка на вывод — не более 2-3 тыс. поисковых запросов в сутки.

Нагрузка на ввод — 100-200 записей в сутки и менее.


В кач-ве бд использую Mysql.


Основной вопрос — необходимо-ли при таком объеме использовать шардирование при следующей архитектуре:

— Поиск по текстовым полям и справочникам осуществляется сфинксом.

— Поиск по полям с числовыми значениями будет осуществляться с помощью индексных таблиц, в которых будет 2 intа

: id сущности и id значения словаря.

— Данные сущности, необходимые для формирования списков (основные поля типа названия, краткого описания и тд) кешируются в memcached для всех 30 млн, кеш обновляется в момент изменения сущности.

— Непосредственная выборка из основной таблицы будет осуществляться только по Primary ключу, который является уникальным числовым идентификатором типа int или bigint


Ну и вопросы.

1. Следует ли при таких нагрузках применять шардирование таблицы сущностей, или же 30 млн при указанных данных это не проблема?

2. Следует ли денормализовать таблицу сущностей на две — с интами и с текстовыми данными и не замарачиваться с лишними таблицами-индексами для поиска и искать прям по таблице с интами?
  • Вопрос задан
  • 3018 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя bolnikh К ответам на вопрос (2)
bolnikh
@bolnikh
Привет
По описанию нагрузка небольшая. Так что вопрос такой «справляется ли система с нагрузкой»?
Если да, то трогать ее не надо. Рост данных незначительный.
Если нет, то надо искать решение. Возможно это будет шардинг, возможно что-то еще — добавить памяти, диск ssd и т.д.

Если планируется существенный рост нагрузки, то надо попробовать собрать еще такую машину и нагрузить ее. Выдержит планируемую нагрузку — ок.
Ответ написан
Комментировать