0

I'm building my own web email and want to store email attachments as optimally as possible.

Here are the general guidelines I'm trying to achieve...

1.) It's not a file-sharing service, it's email.

2.) I want to ensure reasonably sized attachments are successfully saved in the database.

3.) I want to minimize the amount of space attachments use in the database.

4.) I want to use neutral SQL approaches so I won't have issues in the future when I migrate from MySQL to PostgreSQL.

5.) What is a reasonable limit? I'm thinking along the lines of 16-25 megabytes tops for a single attachment.

AOL, Hotmail, Gmail, Yahoo and others seem to encode attachments commonly as base64, a text type. Is it more optimal space wise to store attachments as a text or binary type?

I'll be happy to make any on-topic clarifications.

4

1 回答 1

0

与 Chue 不同,我认为将附件存储在数据库中是非常好的。事实上,我也将文件存储在数据库中。由于我所有的应用程序都可以轻松访问数据库,因此我的所有应用程序都可以轻松访问文件。但是你的问题是关于什么数据类型。

只有少数几个选择。不幸的是,您的要求是相互矛盾的。它基本上归结为二进制字段或文本字段。这些中的任何一个都将具有可以扩展到您要求的许多倍的类型。

为了最大限度地减少空间使用,您需要使用二进制文件,因为任何类型的文本编码都会增加使用的空间。MySQL 的二进制数据类型是VARBINARY(最多 65535 字节)或BLOB(无限制)。Postgre 的二进制类型是BYTEA. 因此,您不能在两台服务器上拥有相同的类型。但是,在两者之间进行转换可能是一个非常简单的迁移脚本。

两个数据库都支持VARCHAR将支持您的要求。我会使用二进制格式。

至于合理的限制,许多现有服务提供 10-20MB 的附件。这似乎对大多数人都有效。随着越来越多的人开始通过手机发送高清视频,您可能需要考虑增加此限制。

于 2013-07-07T01:26:01.380 回答