我必须为每分钟从 500 万个传感器收集数据的应用程序创建一个 DBF,因此我每分钟将有 500 万条记录。
我正在考虑使用 SQL 服务器,因为我每天将有 72 亿条记录。但是当我在我的 PC(双核 E6300、@Gb RAM、HDD 500Gb SATA)上测试写入速度时,我发现 Visual Foxpro 9 注册 100 万条记录的速度是 SQL Server 2008 的 100 倍。
SQL Server,2.55 分钟:
declare @i int=1
while @i<1000001
begin
insert into dbo.sensor (sensorid, datetime, value) values (1,getdate(),@i)
set @i=@i+1
end
Run Code Online (Sandbox Code Playgroud)
VFP9,2 秒:
? DATETIME ()
FOR i=1 TO 1 000 000 STEP 1
INSERT INTO Table1 (sensorid, dtime, value, status) VALUES (i, date(), i, "S")
ENDFOR
? DATETIME()
Run Code Online (Sandbox Code Playgroud)
我提到没有索引,并且该表将是只读的。怎么了?
FoxPro DBF 并不是仅就大小而言的真正选择。VFP 中的 DBF 文件限制为 2GB。看起来您的数据每行至少有 20 个字节,这意味着一天的数据价值超过 100GB。我建议你忘记使用 DBF。
DBMS 写入性能只是问题的一个方面,实际速度将取决于整个堆栈、读取和缓存数据的方式等。您的测试并没有真正表明太多。
您是否查看过各种可用的复杂事件处理 (CEP) 解决方案?您应该使用一些技术来优化流数据的存储和操作。一些可用的 CEP 解决方案包括:Oracle CEP、Microsoft StreamInsight、StreamBase 和 OsiSoft PI 系统。