根据我的经验,这就是我想出的。
我目前正在将用户和统计类保存到MongoDb中,一切工作都很顺利。
但是如何保存每个用户生成的日志?
正在考虑使用LogBack SiftingAppender
并委派日志信息
分开MongoDb Collections
。像每个MongoDb Collection
都有用户的身份
这样我就不必创建高级mapreduce查询了,因为日志堆积得很整齐。
或者将SiftingAppender
与FileAppender一起使用,以便每个用户都有一个单独的日志文件。
如果MongoDB有一百万个日志集合,每个日志集合都以用户ID命名,那么我就遇到了问题。 (它甚至可能顺便说一下)
如果一切都存储在MongoDb中MongoDb主从复制 主节点死亡很容易。
FileAppender方法怎么样?感觉会有很多日志文件 管理。根据Alphabet,可以将它们保存在文件夹中。文件夹A. 对于名称/ id以A开头的用户/ id。
使这项工作有其他选择吗?
答案 0 :(得分:2)
在1M的集合中,db的默认名称空间文件为16MB,允许大约24000个名称空间(12000个集合+它们的_id索引)。更多信息on this website
您可以使用--nssize选项将最大.ns(命名空间)文件大小设置为2GB,这可能允许3072000个命名空间。
答案 1 :(得分:1)
使用嵌入式文档,并为每个用户提供一个文档,其中包含一系列包含日志文件的嵌入文档。如果集合变大,您也可以从分片中受益。