Поле Raw_email хранит изображения в виде строк Base64

Привет,

Так как я планирую сменить CDN (Stackpath) и знаю, что Discourse динамически подставляет URL CDN в ссылки, я всё же выполнил поиск по строке “stackpath” в сообщениях своего форума, чтобы посмотреть, сколько раз она встречается.

Поиск вернул от 300 до 400 сообщений.

Я загрузил данные и был удивлён: файл оказался почти 100 МБ!

Похоже, это связано с тем, что изображения в сообщениях, отправленных по электронной почте, хранятся в виде строк base64 в поле raw_email.

Так что… На мой взгляд, это действительно не проблема, но я хотел бы получить некоторые разъяснения по этому поводу.

Почему изображения хранятся именно так в поле raw_email? Нет ли лучшего способа?
Может ли это как-то повлиять на производительность? Что насчёт форумов, где многие отвечают по электронной почте и используют изображения? Можно ли считать, что это занимает слишком много места при малом объёме полезной информации?

Любые объяснения или дополнительная информация будут приветствоваться. :slight_smile:

Звучит немного упрощённо, но именно так изображения передаются по электронной почте. И поскольку мы храним raw_email, то и храним именно это.

Представьте это как почтовый ящик объёмом 100 МБ. Для большинства сайтов это капля в море.

Размер хранилища можно проверить с помощью:

select sum(pg_column_size(raw_email)) / 1048576 as raw_email_MB from posts;

В таком случае мы больше не хранили бы raw_email… Хотя, возможно, есть смысл удалять большие base64-данные из raw_email за пределами определённого возраста…

Вряд ли; данные просто будут лежать на диске и не будут использоваться, пока вы их не посмотрите.

:thinking:

Спасибо за подробный ответ :slight_smile: