Будет ли какая-либо польза от использования JSON для хранения данных в таблице и наличия отдельной мета-таблицы?
Вот исходная схема:
Users Table UserId | Username | Etc... 5 | John | Avatar Table Id | UserId | ImageName | ImageType 1 | 5 | example.png | original 2 | 5 | example_thumb.png | thumbnail
Вот версия JSON:
Users Table UserId | Username | Avatar 5 | John | {"original":"example.png","thumbnail":"example_thumb.png"}
Мне лично нравится версия json и предпочитаю использовать ее, но насколько медленнее, чем исходная версия?
В моем случае мне нужны аватары пользователя (и разные размеры) почти для каждого запроса.
Использование большого текстового файла для хранения сериализованных (независимо от типа сериализации) означает:
where
. Если вы хотите использовать эти данные только на стороне PHP и никогда не работать с SQL-сервером, я полагаю, что хранение всего большого текстового поля является решением.
(и в этом случае я не понимаю, почему это было бы медленнее, чем другое решение)
… но насколько медленнее, чем оригинальная версия?
Невозможно ответить на это, но проверить и сравнить его.
Я с осторожностью отношусь к MySQL, чтобы хранить сериализованные данные по причинам, о которых говорит PM по его ответу. Я лично просто изменил бы схему таблицы пользователей:
Users UserID | UserName | Avatar | Avatar_Thumb
Если вам действительно нужно получить эскиз, который часто. Здесь нет большой ценности при использовании другой таблицы, и сериализованная версия будет потреблять 30 дополнительных байтов в строке без уважительной причины.
Я вообще не вижу смысла в таких областях.
Существует правило большого пальца: если вы видите бесполезность для отношений, вам не нужна целая структура данных, тогда
Нет смысла давать имена этих картинок, отличные от идентификатора пользователя
Будучи названы 566.png
и 566_thumb.png
эти аватары вообще не потребуют записей в таблице
Почему бы вам просто не использовать что-то вроде mongoDB и хранить непосредственно объекты JSON. Быстро и надежно. Не знаю, была ли у вас особая потребность в mysql.