3

現在、膨大な量のレコードを処理する必要がある非常に大きなアプリケーションを開発しています。

アイデアは、電子メールを (添付ファイルと共に) 保存する必要があり、Web API を介してユーザーが保存された電子メールを検索できるようにする必要があるというものです。ユーザーは、(データベース/ストレージにエクスポートした自分のメッセージ内で) 少なくとも次の項目を検索できる必要があります。

  • から
  • 主題
  • 日付 (範囲)
  • 添付ファイル (名前と種類のみ)
  • メッセージ内容
  • (オプション) メールボックス / フォルダ構造

アプリケーションは、多数のユーザーと膨大な数の電子メール (数百万から数十億に容易に増加) に対応できる必要があります。ユーザーは、メール クライアントにインポートできるように、元のメッセージ全体 (添付ファイル付き) をダウンロードできる必要があります。

私は、電子メールをデータベースにインデックス付けし、一意のキーを使用して添付ファイル付きの完全な電子メールを別のpackageストレージに保存することを考えていました。このようにして、データベースの負荷を可能な限り低く保ち、検索を可能な限り高速に保つ必要があります。

このような電子メールを処理するためのデータベース スキーマがいくつか見つかりました。数億、場合によっては数十億のレコード (電子メール) を処理できるデータベースを見つけることができませんでした。

これは、シンプルで効率的かつ高速に保つための最も効率的な方法ですか、それとも何か忘れていますか?

// 編集 これを amazon クラウドで実行するという考えです (おそらくそれに関連する提案はありますか?)

4

2 に答える 2

4

この量のデータにはmongoDBデータベースを使用できます。これがmongoDbの詳細です。http://www.mongodb.org/

mongoDbでは、mysqlテーブルはコレクションとして呼び出され、行はドキュメントとして呼び出されます。

Mongoは、JSONベースのオブジェクト形式でデータを保存します。

ここでdbスキーマを作成する1つの可能な方法。

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"
}
}
于 2013-02-01T07:59:58.450 に答える
0

この種の情報をRDBMSに保存する必要はありません。むしろ、 luceneのようなものを拡張したいとします。電子メールの場合、solrには電子メールインデクサーがあります。お役に立てば幸いです...

于 2013-02-01T08:00:33.493 に答える