请教一道系统设计的题目
题目描述:一个日志系统,需要存储和维护。每条记录由url ip time 三个段组成。
设计一个系统,容量是1000亿条这样的记录。同时要求支持以下两种查询:
1.输入任意时间,url,给出访问量
2.输入任意时间,ip,给出该ip访问的url数目
我的想法:
假设每条记录有64B,那么1000亿大概有6400GB,
所以文件肯定要分开存储,而且肯定要用上hash,以加速查询。并且将hash的结果再次对2000求余,存储到2000个文件中。
如果单纯对url进行hash,查询2就没那么高效了。
所以再建立一个记录ip的文件,其内容是ip,url文件名这样的键值对,可以根据ip找到相应的文件。
平时在系统设计方面确实没有什么功底, 这样的题目也无从下手,请教CU高手指点一下。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
最简单扔给数据库做
回复 2# JohnBull
哦对了 ,时间的精度是分钟。
回复 4# freebarque
这个。。。出题人应该不是这个意思吧
回复 2# JohnBull
什么是符号链接?
每分钟一个子目录,里面用一个文件保存这一分钟的原始记录,用你喜欢的方法建2个索引(IP和URL),OK了,最好每次查询都在那个目录下保留一份cache。
忽略!我一开始看错要求了![](https://www.wenjiangs.com/wp-content/uploads/chinaunix/202207/emn10.gif)
回复 8# JohnBull
“ 每分钟一个子目录,里面用一个文件保存这一分钟的原始记录,用你喜欢的方法建2个索引(IP和URL),OK了,最好每次查询都在那个目录下保留一份cache。“
有以下两个问题想请教:
1.每分钟一个目录的话,那么一共就有60个目录,可是每个目录里的文件可能依然很大。而且如果查询的输入时间跨越几个甚至几十个目录,这样的话查询效率会很高吗?
2.如何建立cache呢?
本帖最后由 JohnBull 于 2011-05-09 00:02 编辑
提示:善加利用符号链接。(看错了,这里用不上...)
PS:时间的精度是什么?
记录应该是以时间排序列的吧。
如果是这样,首先以时间来过虑,其结果应该就在可处理范围内了。