首页 / 知识
在数据库中存储电子邮件
2023-04-15 11:43:00

Storing email messages in a database您将使用哪种数据库模式将具有实际/可能的头信息的电子邮件存储到数据库中? 假定已将它们从MTA馈入脚本并解析为相关的标头/正文/附件。 您是将整个消息正文存储在数据库表中,还是将任何MIME部分分开?附件呢? 您可能要检查" Archiveopteryx "的体系结构和数据库架构。 您可能希望使用一种架构,可以在邮件的多个收件人之间共享邮件正文和附件记录。看到电子邮件服务器中重复的电子邮件完全使用了50%的磁盘存储空间并不少见。 简单的主体/附件哈希足以查看该记录是否已在数据库中。但是,您仍然需要保留单独的标题。 建议:创建一个定义明确的表,用于存储电子邮件,并在邮件的每个相关部分(发件人,标头,主题,正文)创建一列。如果您想按主题字段进行查询,以后将变得更加简单。在同一表中,您可以定义一个字段来保留附件的路径并将附件文件存储在文件系统上,而不是将其存储在blob字段中。 取决于您要使用它做什么。如果您将需要频繁搜索某些内容,则需要以一种适合您使用情况的方式对其进行分解。如果仅用于存储符合Sarbanes-Oxley要求的电子邮件之类的内容,则可以将整个内容(标头,部分等)存储为一个大文本字段。 数据库架构设计中的重要一步是弄清楚您要建模的实体的类型。对于此应用程序,实体可能是:
一旦了解了实体,就可以标识实体之间的关系,这些关系可以用表来表示:
您可能希望至少单独存储附件以优化存储。看到大多数用户毫不犹豫地附加到电子邮件的附件(视频等)的大小和数量令人惊讶。 对于外发电子邮件,您可能有多封电子邮件发送相同的附件。存储共享它的所有电子邮件所引用的附件的单个副本要高效得多。 另一个单独存储附件的原因是,稍后它会为您提供一些归档选项。如果存储空间成为问题,您可以随时返回并删除早于给定日期的大型附件,以压缩数据库。 这一切都取决于您要对数据执行什么操作,但是一般而言,我要存储所有数据,并还要确保将MUA解释的语义保留在db中,例如: 解析电子邮件并非易事,因此请考虑将电子邮件存储为blob,然后将其解析为以后需要的任何片段。 如果已经拆分了该表,并且可以确定拆分数据的例程是正确的,那么我将拆分表的粒度尽可能小。您始终可以在中间层将其解析回去。如果空间不是问题,则可以始终存储两次。如果很难将其放回原处,则将其拆分为相关的字段,然后将整个内容作为一个blob将其划分为另一个字段。 |
最新内容
相关内容
linux命令大全数据库?
linux命令大全数据库?,服务,系统,平台,状态,软件,通用,环境,数据,神州,地址,在Linux上用命令怎么连接数据库(linux连接oracle数据库命令)登录linux脚本多个命令?
linux脚本多个命令?,系统,工作,标准,服务,命令,软件,管理,连续,电脑,设备,linux脚本如何一键授权并执行1、chmod u+x file,如果只给文件所有者linux上数据库的命令?
linux上数据库的命令?,服务,系统,信息,地址,命令,密码,工具,管理,数据,单位,在Linux上用命令怎么连接数据库(linux连接oracle数据库命令)1、登linux命令dm数据库?
linux命令dm数据库?,地址,软件,时间,设备,名字,服务,位置,名称,公司,命令,linux创建dm数据库超时linux/sys下无法新建 方法如下打开c盘,在用户linux脚本注释命令?
linux脚本注释命令?,代码,系统,工作,名称,地方,脚本,命令,信息,状态,简介,linux脚本里的#! 是什么意思1、方法一:切换到shell脚本所在的目录(此脚本运行linux命令?
脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,linux下shell脚本命令PS1 主提示符,在特权用户下,默认的主提示符是#,在linux命令下写脚本?
linux命令下写脚本?,服务,系统,环境,代码,名称,命令,脚本,发行,在线,情况,三个简单Linux的shell脚本程序编写Shell编程实战 实现文件备份 文件linux把命令变成脚本?
linux把命令变成脚本?,系统,环境,工作,脚本,命令,信息,基础,代码,文件,变量,如何编写简单的Shell脚本文件之Linux的基本操作1、在开始Shell编linux数据库查找命令?
linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,在linux中如何用命令查找文件在哪使用查找命令 “find”命令允许脚本调用linux命令?
脚本调用linux命令?,代码,系统,工作,底部,脚本,位置,环境,行用,官网,标准,typescript脚本中怎样运行Linux命令?1、Script可用于记录当前用户的linux数据库同步命令?
linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,DB2数据库在linux操作系统的指令有哪些?1、linux系统常用操作命令linux脚本命令输信息?
linux脚本命令输信息?,系统,信息,代码,脚本,数据,工具,发行,命令,变量,文件,linux下shell脚本命令shell变量调出命令。linux中的shell脚本有多