sql-server - 我应该将我的电子邮件内容存储在数据库或文件系统中的什么位置?

标签 sql-server windows

我目前正在计划一个新的电子邮件存储和传递系统设计,该系统主要使用 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/

相关文章:

java - 如何将 SQL Server Java 驱动程序安装到 linux docker 容器中?

mysql - SQL 查询 : For each item add multiple values

python - pymssql.OperationalError : DB-Lib error message 20009, 严重性 9

windows - Windows 应用程序应使用哪些组合键以避免冲突?

sql-server - 唯一约束与唯一索引

sql-server - 超过 130 的字符长度不显示在列中

c# - Windows 硬重启

c++ - ListView 列的宽度不受尊重

windows - 我的命令行程序在 CMD shell 上找不到它的配置目录,但在 PowerShell 上找到了

c - 编辑窗口在一定限制后停止显示文本。 ( Windows )