我们正在考虑建立一个数据仓库系统,用于存储我们Web服务器生成的网络访问日志。我们想要实时加载数据。
我们希望向用户呈现数据的折线图,并允许用户按维度进行钻取。
问题是如何平衡和设计系统,以便:
(1)数据可以在实时(<2秒)内提取并呈现给用户,
(2)数据可以按小时和天聚合,并且
(3)大量数据仍然可以存储在仓库中,
我们当前的数据速率大约为每秒约10次访问,这使我们每天得到大约800K行的信息。我的MySQL和简单星型模式的简单测试表明,当我们拥有超过8百万行时,我的查询开始花费超过2秒钟的时间。
是否可能从这样一个“简单”的数据仓库中获得实时查询性能,同时仍然存储大量数据(最好不要丢弃任何数据)?
有没有办法将数据聚合到更高分辨率的表格中?
我感觉这不是一个新问题(尽管我已经谷歌搜索了很多)。也许有人可以指出像Splunk这样的数据仓库解决方案?
也许我期望太高了。
更新:
我的架构看起来像这样:
- 维度:
- 客户端(IP地址) - 服务器 - URL
- 事实:
- 时间戳(以秒为单位) - 传输的字节数
我们希望向用户呈现数据的折线图,并允许用户按维度进行钻取。
问题是如何平衡和设计系统,以便:
(1)数据可以在实时(<2秒)内提取并呈现给用户,
(2)数据可以按小时和天聚合,并且
(3)大量数据仍然可以存储在仓库中,
我们当前的数据速率大约为每秒约10次访问,这使我们每天得到大约800K行的信息。我的MySQL和简单星型模式的简单测试表明,当我们拥有超过8百万行时,我的查询开始花费超过2秒钟的时间。
是否可能从这样一个“简单”的数据仓库中获得实时查询性能,同时仍然存储大量数据(最好不要丢弃任何数据)?
有没有办法将数据聚合到更高分辨率的表格中?
我感觉这不是一个新问题(尽管我已经谷歌搜索了很多)。也许有人可以指出像Splunk这样的数据仓库解决方案?
也许我期望太高了。
更新:
我的架构看起来像这样:
- 维度:
- 客户端(IP地址) - 服务器 - URL
- 事实:
- 时间戳(以秒为单位) - 传输的字节数