在数据库中存储电子邮件
Storing email messages in a database您将使用哪种数据库模式将具有实际/可能的头信息的电子邮件存储到数据库中? 假定已将它们从MTA馈入脚本并解析为相关的标头/正文/附件。 您是将整个消息正文存储在数据库表中,还是将任何MIME部分分开?附件呢? 您可能要检查" Archiveopteryx "的体系结构和数据库架构。 您可能希望使用一种架构,可以在邮件的多个收件人之间共享邮件正文和附件记录。看到电子邮件服务器中重复的电子邮件完全使用了50%的磁盘存储空间并不少见。 简单的主体/附件哈希足以查看该记录是否已在数据库中。但是,您仍然需要保留单独的标题。 建议:创建一个定义明确的表,用于存储电子邮件,并在邮件的每个相关部分(发件人,标头,主题,正文)创建一列。如果您想按主题字段进行查询,以后将变得更加简单。在同一表中,您可以定义一个字段来保留附件的路径并将附件文件存储在文件系统上,而不是将其存储在blob字段中。 取决于您要使用它做什么。如果您将需要频繁搜索某些内容,则需要以一种适合您使用情况的方式对其进行分解。如果仅用于存储符合Sarbanes-Oxley要求的电子邮件之类的内容,则可以将整个内容(标头,部分等)存储为一个大文本字段。 数据库架构设计中的重要一步是弄清楚您要建模的实体的类型。对于此应用程序,实体可能是:
一旦了解了实体,就可以标识实体之间的关系,这些关系可以用表来表示:
您可能希望至少单独存储附件以优化存储。看到大多数用户毫不犹豫地附加到电子邮件的附件(视频等)的大小和数量令人惊讶。 对于外发电子邮件,您可能有多封电子邮件发送相同的附件。存储共享它的所有电子邮件所引用的附件的单个副本要高效得多。 另一个单独存储附件的原因是,稍后它会为您提供一些归档选项。如果存储空间成为问题,您可以随时返回并删除早于给定日期的大型附件,以压缩数据库。 这一切都取决于您要对数据执行什么操作,但是一般而言,我要存储所有数据,并还要确保将MUA解释的语义保留在db中,例如: 解析电子邮件并非易事,因此请考虑将电子邮件存储为blob,然后将其解析为以后需要的任何片段。 如果已经拆分了该表,并且可以确定拆分数据的例程是正确的,那么我将拆分表的粒度尽可能小。您始终可以在中间层将其解析回去。如果空间不是问题,则可以始终存储两次。如果很难将其放回原处,则将其拆分为相关的字段,然后将整个内容作为一个blob将其划分为另一个字段。 |
相关内容
-
IE脚本错误如何做Web脚本错误解决技巧
IE脚本错误如何做Web脚本错误解决技巧,,这个问题是由于这样的...
-
通过备份记录获得数据库的增长
通过备份记录获得数据库的增长,,通常你想知道数据库是否正在增...
-
word如何设置页眉页脚|word如何设置页眉页脚从
word如何设置页眉页脚|word如何设置页眉页脚从正文开始,,1. wo...
-
当前页的脚本失败的解决方案_计算机错误
当前页的脚本失败的解决方案_计算机错误,,核心提示:最近打开网...
-
PostgreSQL数据库修改sql表的方法汇总
PostgreSQL数据库修改sql表的方法汇总,字段,默认值, 一,修改表 ...
-
天正表格快捷键|天正文字表格快捷键
天正表格快捷键|天正文字表格快捷键,,1. 天正文字表格快捷键如...
-
电脑关机整人脚本|电脑整人代码怎么关闭
电脑关机整人脚本|电脑整人代码怎么关闭,,电脑整人代码怎么关...
-
问道手电脑游脚本辅助|问道手游模拟器辅助脚本
问道手电脑游脚本辅助|问道手游模拟器辅助脚本哪个好用,,问道...
-
电脑如何申请电子邮件|申请电脑的邮件怎么写
电脑如何申请电子邮件|申请电脑的邮件怎么写,,1. 申请电脑的邮...
-
怎样进行数据库性能测试?什么是数据和数据库完整
怎样进行数据库性能测试?什么是数据和数据库完整性测试,测试,...
-
php脚本电脑关机|电脑关机的脚本
php脚本电脑关机|电脑关机的脚本,,1. 电脑关机的脚本推荐 Auto...
-
电脑电子邮件在哪里|电脑电子邮件在哪里才能找
电脑电子邮件在哪里|电脑电子邮件在哪里才能找到?,,1. 电脑电...
-
电脑会自动静音|电脑会自动静音脚本
电脑会自动静音|电脑会自动静音脚本,,1. 电脑会自动静音脚本关...
-
天龙八部助手脚本设置|天龙八部助手脚本教程
天龙八部助手脚本设置|天龙八部助手脚本教程,,天龙八部助手脚...
-
shell脚本报错说 bash解释器损坏,没有该目录或文
shell脚本报错说 bash解释器损坏,没有该目录或文件的解决方案...