我正在为日志管理系统设计我的第一个 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 有 16Mbyte 的文档大小限制,所以我担心我是否会有 1 000 000 条日志用于一个源,这将如何工作(因为我可以为一个项目提供多个源,而源可以有多个日志)。当我要处理大型文档并且想要获得良好的阅读性能时,有什么更好的解决方案,我应该使用嵌入式模式还是参考模式?谢谢