因此我们有一个系统,该系统将大量数据写入日志数据库。这些数据只有在出现问题时才会被读取,剩下的时间它就是为了以防万一。
此数据当前以以下结构存储在SQL Server DB中:
所以我认为这会更有效地存储在NoSQL系统中,例如MongoDB
据我所知,通过阅读多篇文章(例如here和here),这具有以下优势
所以我的问题主要是我们认为合适吗?
Particuarly
答案 0 :(得分:2)
根据我的经验,Mongo对写作表现不错,但并不引人注目。在以前的工作中,我们的生产实例在写入比阅读方面更加困难。
Mongo 非常积极分配磁盘上的文件。阅读:http://docs.mongodb.org/manual/faq/storage/#why-are-the-files-in-my-data-directory-larger-than-the-data-in-my-database
即使您的数据库为空,Mongo也会一次尝试获取2GB。
根据我的经验,我发现删除非常有效。没有真正的抱怨,但我们再次没有删除大量数据。
根据我的经验进行横向缩放是相当繁琐的,但它必须是复制数据。要阅读的内容是使用副本集或使用分片之间的区别。两者之间的复制模型/网络活动非常不同。
我们使用Mongo主要用于高效读取,并且它确实很好。
答案 1 :(得分:1)
如果您要存储日志记录数据,为什么不使用Logstash? Logstash使用Elasticsearch作为存储,写入和查询都非常快,并且可以很好地扩展。将Logstash与http://kibana.org/结合使用,您就拥有了自己的个人日志分析和查询仪表板。
MongoDB也不是一个糟糕的选择。一些非常好的日志和异常应用程序,如Errbit使用MongoDB作为后端。
当使用mongodb进行有力的日志记录时,它有助于将数据从您的应用程序发送到udp端口上的中间件,而udp端口又写入mongo。这样几乎有0等待写入发生。优点是,当udp端口接收数据并让您的应用程序恢复时,中间件可以对mongo进行安全写入,从而确保维护日志完整性。