如何处理大量数据用于网络的统计数据模块
-
20-08-2019 - |
题
我正在开发一个统计模块,用我的网站,这将有助于我测量的换算率,以及其他有趣的数据。
该机制,我使用的是-存储数据库中的条目统计表格--每一个用户进入特定区域在我的数据库(I避免重复记录的帮助cookie)。
例如,我有以下区域:
- 网站的-一个大区用于计独特的用户作为我停止相互信任的谷歌分析最近。
- 类别的自我描述性的。
- 微型网站-自我描述性的。
- 产品的图像-当用户看到一个产品,导致提交形式。
问题是,一个月后,我的统计数据表挤满了 很多 行,ASP.NET 我页写的分析数据的负载 真的 慢。
我以为可能编写一项服务,将以某种方式解析数据,但是我看不到任何方式这样做,而不会失去灵活性。
我的问题:
- 如何大规模数据分析的应用,如谷歌的分析载的数据,那么快?
- 什么是最好的方式为我这么做?
- 也许我的数据库的设计是错误的,我应储存的数据中只有一个表?
感谢任何人帮助,
Eytan.
解决方案
基本做法,你正在寻找被称为 聚集.
你有兴趣在某些功能计算在你的数据,而不是计算的数据"网上"在启动时所显示的网站,计算他们离线,无论是通过批处理过程在晚上或逐渐时日志的记录编写的。
一个简单的增强将来存储计数每用户/用户会议,而不是存储每一击和计他们。这将减少分析处理要求通过一个因素的顺序每届会议。当然,这将增加处理费用时插入日志条目。
另一种的聚集是所谓 在线分析处理, ,这只聚集着某些方面的数据,让用户聚集的其他方面在浏览模式。这种交易关性能、储存和灵活性。
其他提示
好像你可以做以及通过使用两个数据库。一个是对事务的数据,数据处理所有的插入的发言。另一种是用于报告和处理所有的查询要求。
你可以指数的鼻涕的报告数据库、和/或非规范化的数据,以便减少联接使用的查询。周期性地出口的数据交易的数据库来报告数据库。该法案将改善报告的响应时间随着聚集的想法,前面提到的。
另一种伎俩知道的是 分区.看起来如何这样做了在数据库的选择,但基本想法是你告诉你的数据库保持一个表分成几个子表,每个都有一个相同的定义,根据某一价值。
在你的情况下,是什么 非常 有用的是"范围内划分"选择--本分区的基于一系列为其价值。如果你分区按日期范围,您可以创建单独的子表每个星期(或每天或每个月--取决于你如何使用数据和多少有)。
这意味着,如果你指定一个日期范围时询问,该数据之外,范围甚至不会予以考虑;这可能导致非常重大的节省时间,甚至比指数(一个指数考虑的每一行,因此它将伴随着你的数据;一个分区的每一天)。
这使得在线查询(人发出的,当你打ASP页),以及汇聚查询使用的预算所必需的统计数据,要快得多。