Как лучше лучше организовать хранение данных в mysql?
Планирую создать большой веб сервис с десятками тысяч записей (товаров и объявлений, новостей). Сейчас закладываю фундамент Back-end и Fron-end у меня уже созданы, нареканий нет. Вот с базой данных для высоконагруженных проектов не имел опыта.
Хочется чтобы база данных была также быстра как и все остальное что я создал.
Суть вопроса прост: Как вы все знаете самый большой блок данных храниться в столбце html (longtext).
В среднем 30 килобайт данных, максимум 100 килобайт. Остальные данные максимум по 0,2-1 килобайт.
table tovar : id - title - description - keywords - html - thumb
Разумнее хранить html в отдельной таблице, так как она редко используется - только при попадание на страницу товара. В остальных случаях как например поиск товаров, разделы категории, сортировка, хештеги и тд. - она совсем не используется.
Например, если убрать html из таблицы, она станет в десятки разы меньше, то будет ли это эффективно для производительности и скорости передачи данных? При том, что сам размер базы данных останется неизменным.
Стандартная ошибка новичка: пытаться сделать технически совершенный сервис, предусматривая высосанные из пальца нюансы и рассчитывая, что он будет кому-то нужен только потому, что так круто написан.
Реальные стартапы делаются наоборот: тяп-ляп MVP, если он вдруг оказался кому-то интересен - то оценивается потенциал, анализируется, что на самом деле выстрелило, переписывается под это новое понимание... и только когда (и если) где-то впереди замаячат сколько-нибудь серьезные нагрузки - начинают думать и о них тоже.
P.S. Кстати, с десятками тысяч записей без проблем справляется любая древняя CMS на любом дерьмовом хостинге.
title - description - html можно поместить в одно поле типа JSON (Mysql 5.7+) . Тогда проще добавлять новые поля без изменения БД.
Если html не используется независимо от других полей, то пусть остается в той же таблице.
Что за поле thumb?
keywords стоит вынести в отдельную таблицу, с индексом по хештегу