2012-02-10 28 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花费时间在大多数情况下聚合。在任何情况下都不可能水平缩放。
  • 聚合均属快速从性能角度来看,如果你有一个很好的一个或多个索引定义的结构和聚合
  • 您需要使用重型操作改变你的模式,同时改变数据结构