我们正在考虑建立一个数据仓库系统来加载我们的网络服务器生成的网络访问日志。这个想法是实时加载数据。
我们希望向用户展示数据的折线图,并使用户能够使用维度向下钻取。
问题是如何平衡和设计系统,以便 ;
(1) 可以实时获取数据并呈现给用户(<2秒),
(2) 可以按小时和按天汇总数据,并且
(2) 大量数据仍然可以存储在仓库中,并且
我们当前的数据速率大约为每秒约 10 次访问,这为我们提供了每天约 80 万行数据。我使用 MySQL 和一个简单的星型模式进行的简单测试表明,当我们有超过 800 万行时,我的查询开始花费超过 2 秒的时间。
是否有可能从像这样的“简单”数据仓库获得实时查询性能, 并且仍然存储大量数据(能够永远丢弃任何数据会很好)
有没有办法将数据聚合到更高分辨率的表格中?
我觉得这并不是一个新问题(虽然我已经用谷歌搜索了很多)。也许有人可以给这样的数据仓库解决方案点数?我想到的一个是 Splunk。
可能是我想太多了。
更新
我的模式是这样的;
维度:
- 客户端(IP地址)
- 服务器
- 网址
事实;
- 时间戳(以秒为单位)
- 传输的字节数
最佳答案
上面 Seth 的回答是一个非常合理的回答,我相信如果你投资于适当的知识和硬件,它很有可能成功。
Mozilla 进行了大量网络服务分析。我们每小时跟踪一次详细信息,并使用商业数据库产品 Vertica。这种方法非常有效,但由于它是专有商业产品,因此具有一组不同的相关成本。
您可能想要研究的另一项技术是 MongoDB。它是一个文档存储数据库,具有一些可能非常适合此用例的功能。 即,上限集合(搜索 mongodb 上限集合以获取更多信息)
以及跟踪页面浏览量、点击率等的快速增量操作。 http://blog.mongodb.org/post/171353301/using-mongodb-for-real-time-analytics
关于sql - Web访问日志的实时数据仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1982833/