我目前正在计划一个新的电子邮件存储和传递系统设计,该系统主要使用 sql server 2012 后端构建。
大部分架构都是为实际创建电子邮件而设置的,但我仍然不确定一个设计元素
将已发送电子邮件的存档存储在哪里?
我应该将它们作为 nvarchar(max) 存储在 sql 数据库中吗
或者实际上将它们作为文件存储在文件系统本身中(例如 .htm 文件),然后仅具有指向存储在数据库中的文件的链接
与我目前存储照片的方式非常相似。
最佳答案
我会提倡使用文件系统。
我在几年前构建了一个电子邮件引擎,在那个时代每小时可以发送一百万封邮件(这在当时是一笔不小的数目)。虽然通过数据库日志记录等方式实现可追溯性很有值(value),但我发现使用文件系统进行日常管理要容易得多。
我构建了一个像这样的半 RESTful 结构:
- 客户 (A)
- 年份
- 月份
- 天
- 电子邮件主题
- message.html
- 消息.txt
- 图片
- 等
- 电子邮件主题
- 天
- 月份
- 年份
我的电子邮件 表仍然需要对电子邮件路径的引用,但这很容易根据[计划的] 电子邮件送达日期计算得出。
为了具体解决您的 SQL Server 建议,我可以说我也尝试完全按照您的建议存储电子邮件。最后,对于我的特定技术堆栈,无论如何我都需要将我的文件写入磁盘以获得“在线版本”。当你有这样写的动态电子邮件时:
亲爱的 [John Smith],
感谢您对 [XYZ] 的关注。
当文件可供您的后端(.NET、Java、Rails 等)提供服务时,只需提供一个 ID,处理变量替换就会变得非常容易。
http://myclient.emailserver.com/2013/10/29/the-most-brilliant-subject-line-ever?id=1234
最后但同样重要的是,您必须权衡将这些电子邮件保存在数据库中的额外成本。 SQL Server 是一款漂亮的软件——就我个人而言,我认为它是 Microsoft 有史以来最好的产品——但这些电子邮件是存档 Material ,它们只会增加你的系统的体积。我不知道您要构建的系统的规模,但即使有一亿封电子邮件(这并不难生成),您也在谈论一个很多的周长.
希望这对您有所帮助。
干杯!
关于sql-server - 我应该将我的电子邮件内容存储在数据库或文件系统中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669067/