2013-07-06 7 views
0

Я строю свой собственный веб-адрес электронной почты и хочу хранить вложения электронной почты максимально оптимально.Оптимальные типы данных хранения вложений электронной почты электронной почты?

Вот общие принципы я пытаюсь достичь ...

1.) Это не сервис обмена файлами, это электронная почта.

2.) Я хочу обеспечить разумно размерные вложения успешно сохраняются в базе данных.

3.) Я хочу свести к минимуму объем использования пространственных вложений в базе данных.

4.) Я хочу использовать нейтральные подходы SQL, поэтому у меня не будет проблем в будущем при переходе с MySQL на PostgreSQL.

5.) Каков разумный предел? Я думаю о линиях с 16-25 мегабайтами для одного приложения.

AOL, Hotmail, Gmail, Yahoo и другие, похоже, кодируют вложения, обычно как base64, тип текста. Является ли более оптимальным пространство для хранения вложений в виде текстового или двоичного типа?

Я буду рад сделать любые разъяснения по теме.

+1

любая причина, по которой вы не можете просто сохранить вложения в файловой системе, а не в db? две причины для файловой системы были бы уменьшены db bloat и возможность поиска содержимого файла более легко. –

+0

С файловой системой это все или ничего с безопасностью; с базой данных вы получаете возможность использовать язык сценариев, такой как PHP, чтобы сказать «ДА» предполагаемому получателю и «НЕТ» для всех остальных. – John

+0

Просто потому, что вложения находятся в файловой системе, это не значит, что они должны быть открыты в Интернете. Я не парень PHP, но я уверен, что вы можете использовать его (PHP) для обслуживания вложений, которые хранятся в файловой системе только для правильных пользователей. В любом случае, это, безусловно, ваше решение хранить данные там, где это имеет смысл для вас. –

ответ

0

В отличие от Chue, я думаю, что это нормально хранить вложения в базе данных. Фактически, я также храню файлы в базе данных. Поскольку все мои приложения уже имеют легкий доступ к базе данных, для всех моих приложений очень легко обращаться к файлам. Но ваш вопрос касается того, какой тип данных.

Есть только несколько вариантов. К сожалению, ваши требования противоречат друг другу. Это в основном до двоичного поля или текстового поля. Любой из них будет иметь тип, который может масштабировать во много раз ваши требования.

Чтобы свести к минимуму использование пространства, вы захотите использовать двоичный код, поскольку любой тип текстового кодирования увеличит используемое пространство. Бинарный тип данных MySQL равен VARBINARY (до 65535 байт) или BLOB (неограниченно). Бинарный тип Postgre - BYTEA. Таким образом, вы не можете иметь один и тот же тип на обоих серверах. Тем не менее, это, вероятно, очень простой скрипт миграции для преобразования между ними.

Обе базы данных поддерживают VARCHAR, которые будут поддерживать ваши требования. Я бы пошел в двоичном формате.

Что касается разумного предела, многие существующие услуги предлагают 10-20 МБ для вложений. Кажется, это хорошо работает для большинства людей. Возможно, вам стоит подумать об увеличении этого ограничения, поскольку все больше и больше людей начинают отправлять по электронной почте видеоролики HD со своих телефонов.

Смежные вопросы