微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我应该在哪里存储我的电子邮件内容在数据库或文件系统?

我目前正在计划一个主要由sql server 2012后端构build的电子邮件存储和传输系统的新devise。

大部分架构都是为了实际创build电子邮件而设定的,但我仍然不确定是否有一个devise元素

在哪里存储发送的电子邮件存档?

我应该将它们存储在sql数据库中作为nvarchar(最大)

从Windows移植到Linux

在Julia(在Windows中)更改软件包目录的path

Gulp安装:'fs:重新评估本地模块源不受支持'和node-sass错误

节点命令不工作在Windows上的git bashterminal

使用IOCTL_CHANGER_GET_PRODUCT_DATA调用DeviceIoControl时发生ERROR_ACCESS_DENIED

或者实际上将它们作为文件存储在文件系统本身(例如.htm文件)中,然后只是链接到存储在数据库中的文件

非常像目前我存储照片一样。

当QueryPerformanceCounter被调用时会发生什么?

Tkinter文本小部件中的超链接

以不妨碍其他进程修改的方式读取文件

如何取消共享共享打印机?

设置eclipse的Windows驱动程序开发

我会主张使用文件系统。

几年前,我建立了一个电子邮件引擎,在这个日子里,它每小时发送了一百万条消息(这是一个非常大的交易)。 尽管通过数据库日志记录等具有可追溯性是有价值的,但是我发现使用文件系统日常管理起来要容易得多。

我构建了一个半RESTful结构,如下所示:

客户(A)

电子邮件主题

message.html

message.txt

图片

等等。

除了是一个简单的文件结构之外,它还使管理其他文件依赖关系变得更容易。 电子邮件通常包括图像,文件附件等,并且将这些文件捆绑在相同的电子邮件资源文件夹中降低了复杂性。

我的电子邮件表仍然需要参考电子邮件的路径,但很容易根据[预定]电子邮件交付日期计算。

为了专门解决你的sql server建议,我可以说我试着按照你的建议存储电子邮件。 最后,对于我的特定技术堆栈,无论如何,我需要将我的文件写入磁盘以获得“在线版本”。 当你有这样写的动态电子邮件

亲爱的[John Smith],

感谢您对[XYZ]的关注 。

文件通过简单地提供一个ID后台服务(.NET,Java,Rails等等)时,处理变量替换是非常容易的。

http://myclient.emailserver.com/2013/10/29/the-most-brilliant-subject-line-ever?id=1234

最后但并非最不重要的是你必须加重把这些电子邮件保存在数据库中的额外成本。 sql server是一个美丽的软件 – 我个人认为这是微软有史以来最好的东西 – 但是这些电子邮件是档案资料,它们只是为你的系统添加批量。 我不知道你试图建立的系统的规模,但即使有一亿封电子邮件(这不是很难生成),你谈论的是很多的周长。

希望这可以帮助。

干杯!

SMTP服务器通常已经以.eml格式将它们存储为文件。 你可以选择保持这种方式,并使用你的数据库来编目和索引它们,或者你可以将所有的东西都存储在数据库中,但是我个人认为这样做是危险的,原因如下:

你的数据库会迅速增加,因为单个消息可能有10MB以上,NVARCHAR使用UNICODE,所以实际上是20MB。 存储方面,这是一个非常低效的解决方案;

没有数据库服务器可以很好地处理可变长度的数据,即使删除了东西,也可能会出现性能问题和数据库文件的大小持续增长的问题;

Afaik每张桌子都有8TB的限制,这可能是小的依赖于你的情况;

一个典型的备份会产生可能数TB的怪异文件。 您将不得不创建一个自定义备份解决方案来管理该解决方

存储大量数据时,应考虑硬盘错误。 如果某个部门被损坏,您可能会丢失一个随机的电子邮件文件,这通常是可以的。 如果数据库文件被破坏,将是一个灾难性的问题。 较小的数据库占用较少的磁盘空间,运行损坏的风险较小。

您不想在sql中存储大量blob的原因之一是备份需要的时间越来越长,并且不能轻松地拆分为可以与sql server备份同时运行的单独文件服务器(或多个服务器)当你使用sql作为文件存储时,这个因素本身就会导致很多悲伤

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐