2011-05-18 96 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架構,而無需這樣做的明確原因。關係數據庫在某些場景中仍然佔有一席之地,其中大部分都具有用於存儲大量文本的有效機制(例如堆棧跟蹤)。

相關問題