您是否有登录NoSQL数据库以获取可扩展应用程序的经验?我对用于日志(log)记录的NoSQL数据库进行了一些研究,发现MongoDB似乎是一个不错的 Select .此外,我还发现了log4mongo-net,这似乎是一个非常简单的 Select .

你会推荐这种方法吗?还有其他建议吗?

推荐答案

我决定修改这个公认的答案,因为在过go 18个月里,最先进的技术有了显著的进步,而且还有更好的替代方案.

New Answer

MongoDB是可伸缩日志(log)记录解决方案的次标准 Select .这通常是有原因的(例如在负载下的写性能).我想再提一个,它只解决日志(log)解决方案中的一个用例.

一个强大的日志(log)解决方案至少需要涵盖以下几个阶段:

  • 收集
  • 运输
  • 处理
  • 存储
  • 搜索
  • 想象

MongoDB作为一种 Select ,只能解决存储用例(尽管有点糟糕).一旦分析了整个链条,就有了更合适的解决方案.

@KazukiOhta提到了几个选项.如今,我首选的端到端解决方案包括:

Elastic搜索用于日志(log)数据存储的基本用途是使用当前最好的NoSQL解决方案来记录和搜索用例.事实上,Logstash Forwarder/Logstash/Elastic搜索/Kibana3在Elastic搜索人的保护伞下,这是一个更具说服力的论点.

由于Logstash还可以充当Graphite代理,因此可以为收集和分析度量(而不仅仅是日志(log))的相关问题构建一个非常类似的链.

Old Answer

MongoDB Capped 收集ssuitable for logging非常受欢迎,还有一个额外的优点是"无模式",这通常是一种适合于日志(log)记录的语义.通常,我们只知道我们想要在项目中记录什么,或者在生产中发现某些问题之后.在这些情况下,关系数据库或严格的模式往往很难更改,试图使它们"灵活"往往只会使它们"缓慢",难以使用或理解.

但如果你想manage your logs in the dark and have lasers going and make it look like you're from space,总有Graylog2使用MongoDB作为其整体基础设施的一部分,但提供了更多的基础设施,如通用的、可扩展的格式、专用的日志(log)收集服务器、分布式体系 struct 和时髦的UI.

Mongodb相关问答推荐

在出现错误时忽略mongodb事务回滚是好做法吗

我们可以在Mongoose中这样使用Unique:[True,";This to Unique&qot;]吗

聚合管道可以用于更新数据库中的文档吗?

在不知道字段名称的情况下如何引用 MongoDB 中的字段?

MongoDB:检测所有重叠事件(开始/结束日期)?

MongoDB Aggregate 根据时间进行多重分组

MongoDB - 文档中多个数组大小的总和

MongoDb c# driver LINQ vs Native 查询

使用 MongoDb 处理迁移

你如何在 Kubernetes 上设置 Mongo 副本集?

pymongo 排序和 find_one 问题

使用 MongoDB 进行分页

请按语法排序 Mongoid Scope

判断 mongoDB 是否连接

C# MongoDB 驱动程序 - 如何使用 UpdateDefinitionBuilder?

Flask:设置应用程序和请求特定的属性?

了解 Mongoose 中的关系和外键

使用命令行从 MongoDB 数据库中的所有集合中删除所有索引

缩短 MongoDB 属性名称值得吗?

show dbs 给出Not Authorized to execute command错误