2012-02-10 59 views
0

我需要記錄對一系列網站所做的請求。目前的流量是每分鐘100個請求,但這隻會增加。使用.NET和SQL Server的高吞吐量日誌記錄體系結構

有兩種類型的請求,「已知」和「未知」 - 由cookie的存在決定。

最後,我想在下面的表格日誌結束:

對於未知:

  • #每個站點

每小時的訪問次數的已知,的:

  • 每個站點每小時訪問#
  • #每用戶訪問
  • #每個用戶

會是怎樣的建議存儲在此的最後訪問時間?

寫入需要超快,所以我猜只是將所有數據轉儲到一個原始表中,並用一個單獨的進程/線程定期解析它。

但是,什麼是「解析」原始數據的最佳方式,而不會在數據被刪除時鎖定表;從而阻止寫入?

N.B.我沒有要求聚合SQL,而是提示和程序如何保持它的快速,而不是阻止寫入,我沒有想到的任何其他。

謝謝

回答

0

第一:我讀到,你正在尋找專門爲SQL答案。不過,我個人認爲,它不會是你正在尋找的解決方案。

Hadoop這樣的系統,像​​這樣的功能特別是用來處理這種數據的情況。有各種博客文章,例如

Hadoop and Log File Analysis或本Log Analysis and Incident Reporting with Hadoop

一些優點:

  • 縮放Hadoop是比RDBMS更便宜
  • 聚集可以分佈在多臺機器上
  • 的map/reduce沒有必要對於預定義的結構。因此,你不會是註定的,如果有需要改變

如果你堅持使用SQL數據庫,你會在這樣的問題在一些點上運行:

  • 水平的方式縮放RDBMS花費時間在大多數情況下聚合。在任何情況下都不可能水平縮放。
  • 聚合均屬快速從性能角度來看,如果你有一個很好的一個或多個索引定義的結構和聚合
  • 您需要使用重型操作改變你的模式,同時改變數據結構