您的大型網絡應用程序有多大?
將事件記錄爲XML blob應該可以工作,並且某些數據庫(例如SQL Server)可以讓您直接查詢該XML。但是,這些查詢的性能很糟糕。
在數據庫中進行事件日誌記錄之前,您應該計算出每秒要創建多少條記錄。 如果數量很大,它會給數據庫帶來嚴重的負擔,並可能影響您的整體應用程序性能。另外,一旦你累積了大量的記錄,查詢數據將永遠持續(並且在這個過程中殺掉數據庫性能)。聚合數據更糟糕 - 關係數據庫在聚合方面效率不高。
克里斯的上述建議對於小型數據庫很適用,但不會擴展,因爲您的查詢必須使用連接。解除數據標準化可能會更好。
即使您的應用程序沒有獲得足夠的流量,您現在仍然擔心此問題,請記住,由於上述原因,記錄到數據庫的事件無法很好地擴展。
Concreate建議:
如果你沒有那麼多的流量,並決定登錄到數據庫,這樣做是爲了一個獨立的模式,這樣它會更容易讓你將它移到一個單獨的數據庫服務器,以便從生產數據庫中卸載它。
如果您決定將事件記錄爲xml,請考慮使用關係數據庫是否有用處 - 如果無法高效查詢,那麼簡單的日誌文件將更簡單。當然,當然你必須弄清楚如何處理這些日誌數據,但是對於不經常/簡單的查詢,使用grep,awk等編寫一些腳本會讓你有一個非常長的路要走。
通常通過(非常)大規模應用現今所用的方法記錄到的文件,然後在運行使用分析(聚集)地圖降低,例如在hadoop上。
感謝克里斯 - 欣賞模式和解釋。 – Guy 2011-03-24 18:32:12