使用SQL Server进行海量数据存储

时间:2010-06-17 09:58:47

标签: sql-server sql-server-2005

我们需要管理10,000个GPS设备,每个GPS设备每30秒上传一次GPS数据,这些数据需要存储在数据库中(SQL Server 2005)。

每个GPS设备的每日数据量为:24 * 60 * 2 = 2,880 10 000

10,000个GPS设备每日数据量为:10000 * 2880 = 28,800,000

每个GPS数据大约160Byte,每天的数据量是:28,800,000 * 160 = 4.29GB

我们需要在数据库中保存至少3个月的GPS数据,

我的问题是:

1,SQL Server 2005是否可以支持如此大量的数据存储?

2,如何规划数据表? (所有GPS数据存储在一个表中?每日表?每个GPS设备都有一个GPS数据表?)


GPS数据:

GPSID varchar(21),
RecvTime datetime,
GPSTime datetime,
IsValid bit,
IsNavi bit,
Lng float,
Lat float,
Alt float,
Spd smallint,
Head smallint,
PulseValue bigint,
Oil float,
TSW1 bigint,
TSW1Mask bigint,
TSW2 bigint,
TSW2Mask,
BSW bigint,
StateText varchar(200),
PosText varchar(200),
UploadType tinyint

我倾向于使用分区表。但是,如何设置界限?

2 个答案:

答案 0 :(得分:6)

是的,SQL Server 2005可以保存这么多数据。

为了能够回答最后一个问题,我们真的需要知道你将如何使用这些数据。例如,如果您想对所有数据进行查询,那么将它放在日常表中就会出现问题。您还遇到了如何处理表的每日切换的问题?

我最初会考虑将数据保存在使用表分区的单个表中,并将历史分区放入快速磁盘上的文件组中进行读取。这样可以更快地查询数据。

答案 1 :(得分:2)

  
      
  1. SQL Server 2005是否可以支持如此大量的数据存储?
  2.   

是的,已证明Sql Server能够存储peta字节的信息。

  

2,如何规划数据表? (所有GPS   数据存储在一个表中?日常   表?每个GPS设备都带有GPS数据   表?)

无需跨表分隔数据。这将使数据检索在未来变得更加麻烦。您想查看table partitioning

https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=139