目前,我们正在开发一个相当大的应用程序,它将不得不处理一些大量的记录。
我们的想法是,电子邮件必须被存储起来(包括附件),并且通过一个web-api,用户应该能够在他们存储的电子邮件中进行搜索。用户应该能够搜索(在他们自己的邮件中,他们已经导出到数据库中)至少以下项目。
该应用程序应该能够处理大量的用户和极多的电子邮件(很容易从几百万增长到几十亿)。用户应该能够下载整个原始邮件(包括附件),以便他们能够将其导入到他们的电子邮件客户端。
我在考虑将邮件索引到数据库中,只需将完整的邮件和附件用一个唯一的键存储为一个 package
到一个单独的存储空间。通过这种方式,我应该尽可能地降低数据库的负载,从而使搜索速度尽可能地快。
我已经找到了几种处理电子邮件的数据库模式,如 这个. 我找不到任何数据库能够处理数以亿计甚至数十亿计的记录(电子邮件)。
这是保持简单、高效、快速的最有效方式,还是我忘了什么?
/ 编辑我的想法是在亚马逊云上运行(也许有任何相关的建议?
你可以使用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"
}
}