电子邮件数据库设计(模式)

问题描述 投票:3回答:2

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

我们的想法是,电子邮件必须被存储起来(包括附件),并且通过一个web-api,用户应该能够在他们存储的电子邮件中进行搜索。用户应该能够搜索(在他们自己的邮件中,他们已经导出到数据库中)至少以下项目。

  • 发件人
  • 课题
  • 日期(范围)
  • 附件(仅指名称和类型)
  • 信息内容
  • (可选)邮箱文件夹结构

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

我在考虑将邮件索引到数据库中,只需将完整的邮件和附件用一个唯一的键存储为一个 package 到一个单独的存储空间。通过这种方式,我应该尽可能地降低数据库的负载,从而使搜索速度尽可能地快。

我已经找到了几种处理电子邮件的数据库模式,如 这个. 我找不到任何数据库能够处理数以亿计甚至数十亿计的记录(电子邮件)。

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

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

database email relational-database database-schema bigdata
2个回答
3
投票

你可以使用mongoDB数据库来处理这样的数据量,下面是mongoDb的详细介绍。http:/www.mongodb.org

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

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

这里有一种可能的方式来制作db模式。

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: [email protected]
to: [email protected]
subject: "test subject"
date: "current date",
attachments: {
 [0]=>{
   names: "attachments1",
   types: "text"
},
[1]=>{
  names: "attachments2",
   types: "pdf"
}
}

0
投票

你不想在RDBMS中存储这类信息。相反,你想扩展一些像 琉璃. 对于电子邮件。solr 拥有 邮件索引器. 希望能帮到你...

© www.soinside.com 2019 - 2024. All rights reserved.