一种大量实时数据存储分发及查询信息处理方法
技术领域
本发明涉及一种数据存储方法,尤其是涉及一种大量实时数据存储分发及查询信息处理方法。
背景技术
我们的系统需要采集大量实时数据,以山东临沂汽车站的GPS监控项目为例,每台GPS终端会没隔1分钟向数据中心上报一次实时数据。数据中心需要及时记录每台终端的最后一次上报情况,以及记录所有历史记录以备查询。
目前现存方案为:数据网关接收到一条上报数据后,即向数据库执行INSERTINTO操作,并且没隔一分钟,将向数据库执行一次大规模循环的UPDATE操作,以刷新最新在线状态记录表。
目前方案的性能表现有些问题,至多上线700左右终端,数据库服务器即表现为CPU占用居高不下的情况,应无法应对更大量的实时数据。
原方案问题分析
原方案存在如下问题:
原方案的分表策略为按照终端号和当前月份分表。也就是一个终端,每一个月份均建立一张表。此策略在查询时可有效增加查询速度,但是,在插入时存在问题:原方案的实现为:插入数据时通过存储过程实现,没此插入前,需判断是否有目标数据表的存在,若不存在,则生成目标数据表。此方法不宜应对频繁插入的情况,因为每次都需要进行判断。实际测试中,发现并发数超过800将出现并发错误,修改其中的部分代码可解决并发错误,但是每次都要多做查询目标表是否存在的判断,对效率有所影响。
原方案在数据插入时,采用来一条插一条的方式,此法在频繁插入时效率不高。一般来说,SQLSERVER在采用循环方式往数据库插入数据时,每秒100条记录即已几乎达到极限,即使考虑到服务器的因素,关系型数据库采用常规方法也无法应付如此密集的数据插入操作。
在线状况表的刷新,每次都需要将所有车辆的最新状态执行一次UPDATE,而且该操作频率极高,也极大增加数据库的压力。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种大量实时数据存储分发及查询信息处理方法。
本发明的目的可以通过以下技术方案来实现:
一种大量实时数据存储分发及查询信息处理方法,其特征在于,包括以下步骤:
1)数据查询服务器启动,启动后,将各终端对应数据网关的对应表加载入内存中,并且对外提供查询服务;
2)数据存储服务器启动,用于存储数据分发服务器分发来的数据,同时响应数据查询服务器的分布式查询;
3)数据分发服务器进行数据分发;
4)数据查询服务器进行查询。
所述的步骤3)数据分发服务器进行数据分发具体步骤如下:
1)先进行一次传输故障数据尝试;
2)加载终端与网关对应表;
3)每隔10秒钟向数据查询服务器注册自己的运行状况。
4)当接收到上报数据时,更新最新在线状态。
所述的步骤4)当接收到上报数据时,更新最新在线状态具体步骤如下:
1)如果发现并非自己负责的终端上报,则立即向数据查询服务器提交信息;
2)查找终端对应的数据存储服务器,向其传输数据;
3)如果传输失败,失败计数+1;
4)如果传输成功,失败计数归0;
5)如果传输失败次数达到5,则停止尝试传输,激活故障转移程序,将上报信息暂存入本地SQLLITE数据库,故障转移程序每若干时间间隔,检测终端对应的存储服务器是否以恢复上线。
所述的步骤4)数据查询服务器进行查询包括查询实时在线信息和查询历史信息。
所述的查询实时在线信息步骤如下:
1)从对应表中找到此终端相应的数据分发服务器;
2)查看其最近一分钟内有无注册信息,若有,则向其进行查询,若无,查找是否有上报的转移记录。
所述的查询历史信息步骤如下:
1)从对应表中找到终端相应的数据分发服务器;
2)同时对设计到得终端进行异步查询。
与现有技术相比,本发明具有可以配置多台数据存储服务器,也就是可以支持更多的终端数。另外数据发布服务器处还实现了故障转移功能。如果某台存储服务器瘫痪,那么数据发布服务器将暂时存放传输的数据,待存储服务器恢复后将数据传输过去.如果数据网关也瘫痪了的话,那么终端可以选择发送给另一个数据网关,以保证服务不间断。
附图说明
图1为本发明的流程图。
图2为本发明的硬件结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1、图2所示,一种大量实时数据存储分发及查询信息处理方法,包括以下步骤:
1)数据查询服务器1启动,启动后,将各终端对应数据网关4的对应表加载入内存中,并且对外提供查询服务;
2)数据存储服务器2启动,用于存储数据分发服务器3分发来的数据,同时响应数据查询服务器1的分布式查询;
3)数据分发服务器3进行数据分发;
4)数据查询服务器1进行查询。
所述的步骤3)数据分发服务器3进行数据分发具体步骤如下:
1)先进行一次传输故障数据尝试;
2)加载终端与网关对应表;
3)每隔10秒钟向数据查询服务器1注册自己的运行状况。
4)当接收到上报数据时,更新最新在线状态。
所述的步骤4)当接收到上报数据时,更新最新在线状态具体步骤如下:
1)如果发现并非自己负责的终端上报,则立即向数据查询服务器提交信息;
2)查找终端对应的数据存储服务器2,向其传输数据;
3)如果传输失败,失败计数+1;
4)如果传输成功,失败计数归0;
5)如果传输失败次数达到5,则停止尝试传输,激活故障转移程序,将上报信息暂存入本地SQLLITE数据库,故障转移程序每若干时间间隔,检测终端对应的存储服务器是否以恢复上线。
所述的步骤4)数据查询服务器1进行查询包括查询实时在线信息和查询历史信息。
所述的查询实时在线信息步骤如下:
1)从对应表中找到此终端相应的数据分发服务器;
2)查看其最近一分钟内有无注册信息,若有,则向其进行查询,若无,查找是否有上报的转移记录。
所述的查询历史信息步骤如下:
1)从对应表中找到终端相应的数据分发服务器;
2)同时对设计到得终端进行异步查询。
如图2所示,本发明的硬件设备包括数据查询服务器1、数据存储服务器2、数据分发服务器3、数据网关4、终端,所述的数据查询服务器1分别与数据存储服务器2、数据分发服务器3连接,所述的数据存储服务器1与数据分发服务器3连接,所述的数据分发服务器3与数据网关4连接,所述的数据网关4与终端连接。所述的数据存储服务器2与数据分发服务器3的数量相同,所述的数据存储服务器2与数据分发服务器3一一对应。所述的数据分发服务器3与数据网关4的数量相同,所述的数据分发服务器3与数据网关4一一对应。所述的数据网关4设有多个,每个数据网关4连接有多个终端。