Так как я планирую сменить CDN (Stackpath) и знаю, что Discourse динамически подставляет URL CDN в ссылки, я всё же выполнил поиск по строке “stackpath” в сообщениях своего форума, чтобы посмотреть, сколько раз она встречается.
Поиск вернул от 300 до 400 сообщений.
Я загрузил данные и был удивлён: файл оказался почти 100 МБ!
Похоже, это связано с тем, что изображения в сообщениях, отправленных по электронной почте, хранятся в виде строк base64 в поле raw_email.
Так что… На мой взгляд, это действительно не проблема, но я хотел бы получить некоторые разъяснения по этому поводу.
Почему изображения хранятся именно так в поле raw_email? Нет ли лучшего способа?
Может ли это как-то повлиять на производительность? Что насчёт форумов, где многие отвечают по электронной почте и используют изображения? Можно ли считать, что это занимает слишком много места при малом объёме полезной информации?
Любые объяснения или дополнительная информация будут приветствоваться.
Звучит немного упрощённо, но именно так изображения передаются по электронной почте. И поскольку мы храним raw_email, то и храним именно это.
Представьте это как почтовый ящик объёмом 100 МБ. Для большинства сайтов это капля в море.
Размер хранилища можно проверить с помощью:
select sum(pg_column_size(raw_email)) / 1048576 as raw_email_MB from posts;
В таком случае мы больше не хранили бы raw_email… Хотя, возможно, есть смысл удалять большие base64-данные из raw_email за пределами определённого возраста…
Вряд ли; данные просто будут лежать на диске и не будут использоваться, пока вы их не посмотрите.