日期:2014-05-18  浏览次数:20668 次

问一个数据库设计问题
业务需求是这样的
有N个数据采集点(N>1000), 这些数据采集点每60秒向服务器发送一次数据
每天产生1440*N条数据
怎么样设计这个数据库呢?

------解决方案--------------------
这个数据库的设计不是重点 重点在于历史数据的转移。
------解决方案--------------------
参考:
http://topic.csdn.net/u/20111207/10/8835ae44-2f46-40c1-b1bb-961becaf14b4.html?83208
------解决方案--------------------
如果 只是保存数据不需要 经常的进行查询,那么可以 每天创建一个一样的表。把当天的数据存在进去,表名创建时,一定要有规律。
如果 经常查询,可以做一个总表。

------解决方案--------------------
有这样的做法吗? 数据能顶的住吗
------解决方案--------------------
那上面虽然没有最后说解决的办法,但有很多建议值得你参考,所以介绍给你.
如果你的数据量不大(不知道你一次采集多长时间),那完全可以放到MSSQL数据库里,表的结构类似:

采集数据(编号,采集点,时间)

你可以把一段时间(比如一个月)的数据放在一个表里,其实如果时间不长,全放在一个表里也行的.
------解决方案--------------------
1,请问所有的历史数据需要保存吗?
2,请问这些数据会如何使用呢。采集了肯定是需要使用吧。

根据具体的业务需求才能更好地设计数据库。
------解决方案--------------------
又升到 10000个采集点了?

我们来算一下:
id bigint 8字节
dt smalldatetime 2字节 或 datetime 4字节
msg char(500) 你说的是几百字节

就算每条记录500字节
10000 个采集点,每天1440条
10000*1440*500*8=57.6G

你的数据量比跟你说的那个链接的数据量差不了太多了!你有那么多的数据量吗?

我们再来算算数据存入速度够不够:
每分钟,一万个采集点,这涉及到你的数据是如何采集的,如何转变为数据库中保存的数据,如果你的客户端是将数据合成了再保存到数据库的,那倒没关系,如果是一条条送到数据库的,那每条记录:
60*1000/10000=6mS
有点短了,可能来不及存进去.