ログ管理システム用の最初の MongoDB データベース スキーマを設計しています。ログ ファイルから mongoDB に情報を保存したいのですが、大きなドキュメント (埋め込みと参照) にどのスキーマを使用すればよいか判断できません。
注: プロジェクトには多くのソースがあり、ソースには多くのログがあります (場合によっては 1 000 000 を超えるログ)
{
"_id" : ObjectId("5141e051e2f56cbb680b77f9"),
"name" : "projectName",
"source" : [{
"name" : "sourceName",
"log" : [{
"time" : ISODate("2012-07-20T13:15:37Z"),
"host" : "127.0.0.1",
"status" : 200.0,
"level" : "INFO",
"message" : "test"
}, {
"time" : ISODate("2012-07-20T13:15:37Z"),
"host" : "127.0.0.1",
"status" : 200.0,
"level" : "ERROR",
"message" : "test"
}]
}]
}
私の焦点は、データベースからデータを読み取るときのパフォーマンス(書き込みではありません)、たとえば、フィルタリング、検索、ページネーションなどです。ユーザーは、日付、ステータスなどでソースログをフィルタリングできます(したがって、ユーザーがデータを検索またはフィルタリングするときの読み取りパフォーマンスに焦点を当てたいと思います)
MongoDB には 16M バイトのドキュメント サイズの制限があることを知っているので、1 つのソースに対して 1 000 000 のログがどのように機能するか心配です (1 つのプロジェクトに対して多くのソースがあり、ソースには多くのログがある可能性があるため)。大規模なドキュメントを扱う場合、優れた読み取りパフォーマンスを実現したい場合、より良い解決策は何ですか?埋め込みスキーマまたは参照スキーマを使用する必要がありますか? ありがとう