什么数据库足以记录应用程序?

Far*_*hat 5 database logging couchdb cassandra nosql

我正在编写一个带有nodeJS的Web应用程序,其他应用程序可以使用它来存储日志,稍后可以在Web界面中访问,也可以由提供API的应用程序本身访问.与Graylog2类似,但架构免费.

我已经尝试过couchDB,其中每个文档都是一个日志文档,但由于我没有真正使用修订版,在我看来我并没有使用它的所有功能.除此之外,我认为如果日志超出限制,那么在couchDB中管理将非常困难.

我真正想要的是一大堆日志,可以对其进行排序,过滤,搜索和封顶.然后访问它的最后一个事件.它应该是无架构的,写入它应该是非阻塞的.

我正在考虑使用Cassandra(我真的不熟悉它),因为这里说的要点.MongoDB在这里似乎也很好,因为Graylog2在mongoDB中使用,在这里它有一些关于它的好点.

我已经看过这个问题,但对答案不满意.

编辑:由于某些原因我不能在生产中使用Cassandra,现在我正在尝试使用MongoDB.

使用mongoDB的另一个原因:http://www.slideshare.net/WombatNation/logging-app-behavior-to-mongo-db

更多编辑:

它类似于graylog2,但我想要的不同之处在于,而不是有一个消息字段,有客户端定义的文件,这就是为什么我希望它没有架构,因此,我可能需要查询用户定义的字段.我们可以在SQL上构建它,但查询用户定义的字段将重新发明轮子.文件也一样.

从技术上讲,我正在寻找的是最终获得丰富的统计数据,或者简单的调试以及我们无法从日志中获取的许多其他内容.

Jas*_*ith 2

一般的做法

你还有很多工作要做。无论您使用哪种数据库,您都拥有许多必须在数据库基础之上构建的功能。您对所有选择都做了充分的研究。听起来你怀疑所有的方法都有优点和缺点,但都不完美。你的怀疑是正确的。此时可能是开始编写代码的时候了。

您可以任意选择一个并开始构建您的应用程序。如果您的猜测是正确的,即利弊平衡并且一切都差不多,那么为什么不立即开始构建呢?当您在数据库上遇到困难 X 时,请记住它给您带来了便利 Y 和 Z,这就是生活。

您还可以建立应用程序的基本核心并在每个数据库上实现各种原型。这可能会给您真正的洞察力,帮助您区分特定应用程序的数据库。比如除了接口、索引、查询问题之外,部署呢?备份怎么样?维护和安全怎么样?也许“浪费”时间在每个平台上构建相同的原型会让你的答案变得非常清晰。

关于 CouchDB 的注释

如果你这么说的话,我认为 CouchDB 就是“NoSQL”。其他“非 SQL”的事物包括香蕉、诗歌和板球。这不是一个很有意义的词。我们有通用语言和特定领域语言;类似地,CouchDB 是一个特定于领域的数据库。如果您需要以下功能,它可以节省您的时间:

  • 内置Web API:客户端可直接查询
  • 增量map-reduce:CouchDB运行一次作业,但您可以免费重复查询。对数据集的更新立即反映在 Map/Reduce 结果中,无需完全重新处理
  • 易于从小规模开始,但无需更改应用程序代码即可扩展到大型集群。