在有一个基础数据库,里面记录的就是访客信息 id vistorID IP 时间...还有一个数据库,就是分析数据库,我就是想问问这个分析数据库怎么设计?(别问我为什么要这2个数据库,老板让这么干的)像什么按日期统计啊,小时段统计啊,最近30分啊,周统计啊,月统计啊,我知道这些都是基于基础数据库里的数据算出来的~ 可是算出来的数据要怎么保存,要设计多少个表,还有就实时更新这些表的问题~ 大家都可以说说自己的想法~ (思绪很乱,所以说的比较乱)
其实别说用不着第二个数据库,连第二个表都不要,直接用SQL语句执行就是了. 不过,既然是BOSS要这么干,那就干呗. 看看你要查询些什么数据,把SQL查询语句写出来,然后你就知道需要什么表了.顺风顺水,多多益善,一条查询语句一个表,每次执行查询前先把这个表中的数据清空,查询后放数据进去. 让BOSS看到,一定喜欢! 稍微注意一下两数据库数据的转移,下列是从A库查了存到B库的:use DataB select top 10 * from DataA.dbo.table1 order by id
不会吧!分析过把基础数据库删除??? 如果你不想删除,那也可以做成分类的,比如当其他列相同时: insert into tb select 1,* into tb from db.dbo. .... --1分钟内insert into tb select 5,* into tb from db.dbo. .... --5分钟内insert into tb select 10,* into tb from db.dbo. .... --10分钟内以此类推.
表多很正常,要是给数据库减少压力那必然表多。 在多表的前提下,我觉的关键在于你怎么去进行统计。 比如:说有个最近15分访客情况或是最近30分的访客情况 如果要求精确度很高的话,那还是别另外建表了,直接根据登录情况统计算了。 如果不高,你可以过5分钟统计一次,每统计一下插入一个表,5分钟以内的查询都在这个表里面查询。 做统计的时候,根据情况如果精确度要求不是变态以及病态的高的话,要加 set transaction read uncommitted。
可能是我没描述清楚,我在说一遍~有两个数据库 BaseData(基础数据库) 和 Analysis(分析数据库)现在基础数据库里有数据,我做要的是取出BaseData数据库的内容,一条一条的分析数据,分析之后存入Analysis数据库,随之就把基础数据删除~我想问问:Analysis(分析数据库)的表应该怎么设计,知道的帮忙设计下~我自己设计的HourCount表: id userid ip pv countTime 例: 1 q11 15(个) 60(个) 2009-4-13 15:00:00 (要5秒取一次基础数据,随时更新分析数据库表内容,分析完基础数据就删除,时间的值一定是整点值(因为要统计小时流量,日流量,周流量,月流量)) 这样设计好吗?知道的给个意见!
应该不会出那种问题,虽然是一次是读取一个结果集,但是我是一条一条分析的,更新一条,就删除一条,应该不影响用户在写入基础数据,我读完这次数据集,5秒之后在读下一个数据集~CTO说要保存基础数据的话根本存不起,因为每天的pv太大了。好像Cnzz也只能存7天的数据~(因为这些数据只会无限大)我自己设计了3个表,你帮我看看这么设计好不HourCount: id userid ip pv time 时间到小时(例:2009-4-14 5:00:00)最小统计到按小时的流量,可以根据此表分析出日,周,月,年。不过要是这样的话,每个用户会有24条记录 1 q11 10 43 2009-4-14 5:00:00 2 q11 3 20 2009-4-14 6:00:00IpCount: 可以根据此表得出 ip地址分布,网络位置分布,城市分析,省市分析,国家分析 id ip地址 pv 1 192.168.1.1 12 PageCount: 分析每个页面的流量(pv) id page ip pv 1 http"//www.my.com 10 42
不过,既然是BOSS要这么干,那就干呗.
看看你要查询些什么数据,把SQL查询语句写出来,然后你就知道需要什么表了.顺风顺水,多多益善,一条查询语句一个表,每次执行查询前先把这个表中的数据清空,查询后放数据进去.
让BOSS看到,一定喜欢!
稍微注意一下两数据库数据的转移,下列是从A库查了存到B库的:use DataB
select top 10 * from DataA.dbo.table1 order by id
如果你不想删除,那也可以做成分类的,比如当其他列相同时:
insert into tb select 1,* into tb from db.dbo. .... --1分钟内insert into tb select 5,* into tb from db.dbo. .... --5分钟内insert into tb select 10,* into tb from db.dbo. .... --10分钟内以此类推.
在多表的前提下,我觉的关键在于你怎么去进行统计。
比如:说有个最近15分访客情况或是最近30分的访客情况
如果要求精确度很高的话,那还是别另外建表了,直接根据登录情况统计算了。
如果不高,你可以过5分钟统计一次,每统计一下插入一个表,5分钟以内的查询都在这个表里面查询。
做统计的时候,根据情况如果精确度要求不是变态以及病态的高的话,要加 set transaction read uncommitted。
例: 1 q11 15(个) 60(个) 2009-4-13 15:00:00
(要5秒取一次基础数据,随时更新分析数据库表内容,分析完基础数据就删除,时间的值一定是整点值(因为要统计小时流量,日流量,周流量,月流量))
这样设计好吗?知道的给个意见!
id userid ip pv time 时间到小时(例:2009-4-14 5:00:00)最小统计到按小时的流量,可以根据此表分析出日,周,月,年。不过要是这样的话,每个用户会有24条记录
1 q11 10 43 2009-4-14 5:00:00
2 q11 3 20 2009-4-14 6:00:00IpCount: 可以根据此表得出 ip地址分布,网络位置分布,城市分析,省市分析,国家分析
id ip地址 pv
1 192.168.1.1 12 PageCount: 分析每个页面的流量(pv)
id page ip pv
1 http"//www.my.com 10 42