我正在构建自己的网络电子邮件,并希望尽可能以最佳方式存储电子邮件附件。
以下是我试图实现的一般指导原则......
1。)这不是文件共享服务,而是电子邮件。
2。)我想确保合理大小的附件成功保存在数据库中。
3.)我想尽量减少数据库中使用的空间附件数量。
4.。)我想使用中性SQL方法,以便将来从MySQL迁移到PostgreSQL时不会出现问题。
5。)什么是合理的限制?我正在考虑将16-25兆字节的上衣用于单个附件。
AOL,Hotmail,Gmail,Yahoo和其他人似乎通常将附件编码为base64,一种文本类型。将附件存储为文本或二进制类型是否更为理想?
我很乐意做出任何关于主题的澄清。
答案 0 :(得分:0)
与Chue不同,我认为将附件存储在数据库中是完全可以的。实际上,我也将文件存储在数据库中。由于我的所有应用程序都可以轻松访问数据库,因此我的所有应用程序都可以轻松访问这些文件。但你的问题是关于什么数据类型。
只有少数选择。不幸的是,您的要求存在冲突。它基本上是二进制字段或文本字段。这些中的任何一种都可以扩展到您的要求的许多倍。
为了最大限度地减少空间使用,您需要使用二进制文件,因为任何类型的文本编码都会增加使用的空间。 MySQL的二进制数据类型是VARBINARY
(最多65535字节)或BLOB
(无限制)。 Postgre的二进制类型是BYTEA
。因此,两个服务器上的类型不能相同。但是,它可能是一个非常简单的迁移脚本,可以在两者之间进行转换。
两个数据库都支持VARCHAR
,以支持您的要求。我会选择二进制格式。
至于合理的限制,许多现有服务为附件提供10-20MB。这似乎适用于大多数人。您可能需要考虑增加此限制,因为越来越多的人开始通过手机向高清视频发送电子邮件。