2011-05-18 70 views
3

我正在寻找最好的方式来存储stacktrace(通过Thread.dumpStack()获取)和异常跟踪数据库中。什么是在数据库中存储堆栈的最佳方式

我正在开发一个应用程序性能的应用程序。它跟踪方法调用(持续时间),捕获错误(导致异常跟踪)&生成缓慢执行的堆栈跟踪。

环境就是Java + MySQL 5.0中

目前,web请求&堆栈跟踪的跟踪信息都存储在一个文件(JSON)和元数据存储在数据库中的表。

对于报告&复制的目的,我正在考虑将它们存储在数据库中。平均而言,完整跟踪信息的大小为40 kb。谨慎地将它们存储在数据库中或保存在文件系统中并移至nosql。

转移到nosql,我可以解决复制但仍然报告将是一个艰难的。

+0

要添加更多的东西被处理当前的方式,当JSON数据存储为文件,我预编译根据我的需要的各种格式的数据。是的,它确实会导致重复数据,但在用户请求该数据时帮助我。还有一件事要考虑,我应该能够在我将它们转移到数据库的同时访问这些数据。 – ramanr 2011-05-19 06:37:05

+0

对这个问题有什么想法? – ramanr 2011-05-20 05:25:45

回答

1

为何不将报告所需的附加信息作为“元数据”的一部分存储?将完整的堆栈跟踪存储在文件中并根据应用程序的需要将该文件的引用存储在DB中可能没有任何问题。我会考虑你需要报告哪些内容并评估这些元素以便纳入数据库。例如,你是否报告异常的根本原因?考虑将数据预处理到你需要报告的数据。如果您已经单独保存了整个堆栈跟踪,那么您将不会丢失任何信息,因此您需要在未来报告其他内容。

这个问题被问得很久以前,所以我假定你已经做出了决定,但我会一直犹豫不决移动到的NoSQL架构,而无需这样做的明确原因。关系数据库在某些场景中仍然占有一席之地,其中大部分都具有用于存储大量文本的有效机制(例如堆栈跟踪)。

相关问题