繁体   English   中英

电子邮件数据库设计(架构)

[英]Email database design (schema)

目前我们正在开发一个相当大的应用程序,它必须处理大量的记录。

这个想法是必须存储电子邮件(带有附件),并且通过 web-api 用户应该能够在他们存储的电子邮件中进行搜索。 用户应该能够搜索(在他们已导出到数据库/存储的自己的消息中)至少以下项目:

  • 主题
  • 日期范围)
  • 附件(仅限名称和类型)
  • 消息内容
  • (可选)邮箱/文件夹结构

该应用程序应该能够处理大量用户和极端数量的电子邮件(很容易从数百万增加到数十亿)。 用户应该能够下载整个原始邮件(带附件),以便他们可以将其导入他们的电子邮件客户端。

我正在考虑将电子邮件索引到数据库中,并将带有唯一密钥的附件的完整电子邮件作为一个package存储到单独的存储中。 通过这种方式,我应该尽可能降低数据库负载,从而尽可能快地进行搜索。

我已经找到了处理类似电子邮件的几个数据库架构 我找不到任何能够处理数亿甚至数十亿条记录(电子邮件)的数据库。

这是保持简单、高效和快速的最有效方法还是我忘记了什么?

// 编辑的想法是在亚马逊云上运行这个(也许有任何相关的建议?)

您可以将 mongoDB 数据库用于此数据量。 这是 mongoDb 的详细信息。 http://www.mongodb.org/

在 mongoDb 中,mysql 表被称为集合,行被称为文档。

Mongo 以基于 JSON 的对象格式存储数据。

在这里制作数据库模式的一种可能方法。

from : string
to : string
subject: string
date (range): datetime
attachments (names & types only) : Object Array
message contents : string
(optional) mailbox / folder structure: string

for example:
from: from@gmail.com
to: to@gmail.com
subject: "test subject"
date: "current date",
attachments: {
 [0]=>{
   names: "attachments1",
   types: "text"
},
[1]=>{
  names: "attachments2",
   types: "pdf"
}
}

您不想将此类信息存储在 RDBMS 中。 相反,您想扩展诸如lucene 之类的东西。 对于电子邮件, solr有一个电子邮件索引器 希望有帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM