假设你做了一个产品平台 这个平台保存着互联网上每个网站每日的用户在线量
table表格式(这里不是最终设计,只是描述)
id Name Num date
1 taobao 13W 2013年11月1日
2 qq 11w 2013年11月1日 3
.... ....
数据量每日都很大量增加
1要可以根据查询统计某年某日查询到当前日期所有网站的信息(名称,人数访问量...)
2要统计2011 2012 2013...各年度最大访问量前10的网站
怎么设计这个查询和表的设计,考虑到查询速度(不考虑硬件成本问题或者数据库容量问题)
不考虑硬件成本问题,基本上你打算做的是一个全世界网站的计数器,类似Google Analytics吧。
投资10亿?还是美刀!这个问题需要A4复印纸6万多张才能说明清楚,你确定要在这儿问?
你好,不考虑成本只是不想限制思路,只是想探讨下实现的方式.
@gzivan:
没有一种解决方案是适合所有预算的。
百万条数据、十亿条数据、千亿条数据,不同的数据量是需要不同的处理机制。
如果你想知道大数据怎么处理,只能给你一个概念,很多数据不能即时给出,比如你要的年度统计这类的,
一般是后台生成静态数据表,而不会动态查询得出。
比如淘宝的订单,给我们查询,都只有三个月,这些都是考虑到大量数据的情况。
大数据的处理对于普通水平的程序员,根本就是鸡肋,无用武之地,并且浪费时间。(当然你要当学问来学,没有生计问题,那就没有办法。)
比如,你要的查询一定日期段的网站名称,这个需求在普通的数据库设计来说,是很容易实现的。
一个Select查询就可以搞定了,但对于大数据,恕我直言,一个简单的事情,量变成了质变以后,
他就不简单了。为什么12306会整天挂,你有空不如探讨下这个。
很多人忘了一件事情,软件的作用是解放生产力,提高效率,或者说省钱。
如果一个客户只是要个进销存,几万上下,你推荐了SAP,单是实施人员就比客户公司的员工还多,这算是探讨吗?
加一张按年份统计表如何?
即使这样做怎么兼容
要可以根据查询统计某年某日查询到当前日期所有网站的信息(名称,人数访问量...)
这里的查询速度呢?还是加表如何加?什么时候同步数据呢?
@gzivan: 你们既然需要这么精确的查询操作,那就不要考虑单系统的解决方案了,除了服务器集群我没想到更好的方法,可以在前面用服务器做分流,把不同的域名按照一定的规则分流到不同的服务器上简单点的比如说按照域名的首字母分流,感觉这样不均衡的话就自己维护一张域名到服务器的映射表,这个可以做到让每个服务器保存的域名请求记录尽可能均衡(但也并不一定,因为不同域名的访问量是不同的,这就要具体问题具体分析了),这样你的服务器越多每台服务器承受的压力就越少...
@gzivan: 至于说大数据量的报表统计,基本上都不是点一下统计按钮就出来的,你可以问下做数据挖掘的朋友,他们对系统的数据做统计分析的时候,基本上就是按需要编辑好统计规则,然后执行统计程序,数据量很大的话需要运行很长时间才能出来结果的。
大数据?
新建年度统计表如下,每天sql代理把当天的Num累加到total上
Name total year
1 taobao 13W 2013
2 qq 11w 2013