2012-12-26 74 views
-1

我们拥有使用JMS服务器发送日志记录消息的日志系统。一旦消息到达Queue,Queue接收者就会解析消息并插入到Oracle DB中。由客户端进程生成的消息非常多,查询DB需要很长时间。根本原因是数据库插入与消息生成相比非常慢(消息生成量很大 - 平均每天130万条消息)。 我想检查一下MongoDB是否适合这个系统而不是Oracle。记录/例外模式非常简单,每个记录有10/15列。对于每个日志记录消息,我们附加了事务数据(平均大小为50到100KB)。 如果存储和搜索(以及后来的清除)是记录涉及的唯一三个活动和例外,是MongoDB更好的选择? (我也曾在这里阅读,使用JMS日志记录是不是一个很好的设计。但它已位于到位并发挥!因此,只有后端IM考虑MongoDB的更大的作用)MongoDB日志记录选项

+0

这不是一个研究网站。您需要进行更多的调查,如果您遇到特定技术问题,请随时发布具体问题。 –

回答

0

如果你的数据将增加每个大那么当然,你可以考虑MongoDB。

这主要有两个原因。

根据您的要求,您根本不必太担心数据,因为它只是一条日志消息,即使您丢失了一些消息也可能不那么重要。重点在于,如果您尝试在文档中进行事务处理,那么在MongoDB中默认情况下不会发生这种事务。如果您没有任何此类事务,那么您可以使用MongoDB并且不会丢失任何消息。但请记住,MongoDB操作在文档中本质上是原子的。

由于它是一个日志记录,您可能希望添加一些真正适合MongoDB的列,因为这些列完全是无模式的,您可以在需要时添加新元素而无需修补旧数据(不必要)。

随着数据增长,您可以添加与Shard服务器一样多的数据,并且您应该可以跨节点进行扩展(以水平方式)。

祝你好运!

+0

非常感谢。我们没有在这里查看交易。即使缺少10万个日志,如果有10个日志丢失,我们仍然可以(业务流程/主程序必须已经运行)。但是日志记录应该快速发生,并且搜索特定日志条件(比如/ select查询等)应该很快返回结果。 – Chirota