目前我们正在开发一个相当大的应用程序,它必须处理大量的记录。
这个想法是,电子邮件必须被存储(带有附件),并且通过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 有一个电子邮件索引器。希望有帮助...