一种车辆状态数据存储系统、存储方法与流程

文档序号:25949155发布日期:2021-07-20 17:04阅读:172来源:国知局
本发明属于车辆管理
技术领域
:,具体涉及一种车辆状态数据存储系统、储存方法。
背景技术
::随着注册车辆数量快速增长,按20秒间隔上报一条状态数据,每辆车每天有5760条左右。一年数据量有几十tb,每秒的写入速度要达到几万条。采用原有的数据库存储方式,写入经常阻塞,查询速度慢,成本也高。技术实现要素:本发明的目的在于提供一种车辆状态数据存储系统,克服了现有技术的不足,通过数据库和oss相结合方法,通过独特设计写入、归档和查询方法,在较低硬件成本下,解决了万级状态数据的并发写入,几十tb状态数据存储和快速查询。为解决上述问题,本发明所采取的技术方案如下:一种车辆状态数据存储系统,包括状态数据写入模块,用于获取车辆的状态数据,并根据车辆id将状态数据写入到不同的数据库中;状态数据归档模块,用于在车辆状态数据上传较少时对写入数据库的数据进行分组,再将数据同步归档至oss,同时在数据库中删除已经归档的数据;状态数据查询模块,用于对查询任务进行拆解后在数据库或oss中查询相关数据。进一步,所述状态数据写入模块包括若干个并行写入单元,所述写入单元由配置表、状态数据存储表和写入队列组成,所述配置表由表名前缀、可写标志和可读标志字段项组成,所述存储表由可读可写状态表和不可写状态表组成。进一步,所述状态数据归档模块包括数据分组单元、数据上传单元和数据删除单元,所述数据分组单元自不可写状态表中读取相关数据并进行排序和分组,所述数据上传单元将分组的数据上传至oss进行归档,所述数据删除单元用于删除数据库内已经归档的数据。进一步,所述状态数据查询模块包括任务拆分单元、数据查询单元和数据合并单元,所述任务拆分单元用于根据车辆id和查询时间对任务进行分解,所述数据查询单元根据分解的任务进行数据查询和提取,所述数据合并单元将查询到的数据进行合并后再反馈。本发明还保护一种车辆状态数据存储方法,包括以下步骤:(1)接收车辆上传的状态数据后进行分析处理,根据车辆id计算出数据库编号,追加到对应数据库写入队列中;(2)数据库写入队列根据配置表的参数值,获取可写表的表名前缀,同时根据车辆id计算出表索引号,同时生成表名,批量写入到状态数据存储表中;(3)在车辆状态数据上传业务量较少时,调整配置表中表可写和可读状态;(4)批量处理状态数据存储表,读取表内状态数据,按车辆id和记录年月日进行分组,按记录时间进行升序排列;(5)以记录年月日和车辆id,生成key值;从oss上查找是否存在相同key数据文件,存在就读取数据文件,与从步骤3查询到数据进行合并,把合并后数据转换为数据文件,更新到oss中;如果不存在,直接把步骤3查询到数据转为数据文件,保存到oss中;(6)所有数据处理完成后,修改数据储存表的可读标记,删除已归档状态数据存储表中的数据。进一步,归档后的数据状态查询具体包括以下步骤:(1)收到状态数据查询任务,根据车辆id和查询时间,按单个车辆和单天把查询任务分解多个子任务,推动到多任务查询队列;(2)等待所有查询子任务完成查询;对接所有查询子任务结果进行合并,返回给查询任务。本发明与现有技术相比较,具有以下有益效果:本发明所述一种车辆状态数据存储系统,通过写入、归档和查询模块的配合和调配,将数据库内的车辆状态数据同步到oss进行长期储存,避免发生写入堵塞、查询速度慢的问题,提高数据储存效率。本发明所述一种车辆状态数据存储方法,通过数据库和oss相结合方法,通过独特设计写入、归档和查询方法,在较低硬件成本下,解决了万级状态数据的并发写入,几十tb状态数据存储和快速查询。附图说明图1为一种车辆状态数据存储系统的原理框图。图2为一种车辆状态数据存储系统的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例1如图1-2所示,本实施例公开了一种车辆状态数据存储系统,包括状态数据写入模块,用于获取车辆的状态数据,并根据车辆id将状态数据写入到不同的数据库中;状态数据归档模块,用于在车辆状态数据上传较少时对写入数据库的数据进行分组,再将数据同步归档至oss,同时在数据库中删除已经归档的数据;状态数据查询模块,用于对查询任务进行拆解后在数据库或oss中查询相关数据。进一步,所述状态数据写入模块包括若干个并行写入单元,所述写入单元由配置表、状态数据存储表和写入队列组成,所述配置表由表名前缀、可写标志和可读标志字段项组成,所述存储表由可读可写状态表和不可写状态表组成。进一步,所述状态数据归档模块包括数据分组单元、数据上传单元和数据删除单元,所述数据分组单元自不可写状态表中读取相关数据并进行排序和分组,所述数据上传单元将分组的数据上传至oss进行归档,所述数据删除单元用于删除数据库内已经归档的数据。进一步,所述状态数据查询模块包括任务拆分单元、数据查询单元和数据合并单元,所述任务拆分单元用于根据车辆id和查询时间对任务进行分解,所述数据查询单元根据分解的任务进行数据查询和提取,所述数据合并单元将查询到的数据进行合并后再反馈。实施例2本实施例公开了一种一种车辆状态数据存储方法,包括以下步骤:(1)接收车辆上传的状态数据后进行分析处理,根据车辆id计算出数据库编号,追加到对应数据库写入队列中。(2)数据库写入队列根据配置表(gps_configparam)的参数值,获取可写表的表名前缀,同时根据车辆id计算出表索引号,同时生成表名,批量写入到状态数据存储表中。配置表:gps_configparamtableprefixwriteflagreadflaggps_historydata111gps_historydata200writeflag和readflag字段:1表示可写或可读,0表示不可写或不可读。状态数据存储表1:由表名前缀gps_historydata1和表索引号构成,gps_historydata1_xx。状态数据存储表2:由表名前缀gps_historydata2和表索引号构成,gps_historydata2_xx。(3)数据库编号和表索引号生成规则:数据库编号=(车辆idmod100)mod数据库数,表索引号=(车辆id/100)mod分表总数。(4)在车辆状态数据上传业务量较少时,调整配置表(gps_configparam)中表可写和可读状态,假设当前可写和可读表名前缀是gps_historydata1,首先同步把gps_historydata1可写标记改为0,gps_historydata2可写标记和可读标记改为1。(5)批量处理状态数据存储表gps_historydata1_xx,读取表内状态数据,按车辆id和记录年月日进行分组,按记录时间进行升序排列。(6)以记录年月日和车辆id,按yyyymmdd\车辆id规则生成key值。从oss上查找是否存在相同key数据文件。存在就读取数据文件,与从步骤3查询到数据进行合并,把合并后数据转换为数据文件,更新到oss中。如果不存在,直接把步骤3查询到数据转为数据文件,保存到oss中。(7)所有数据处理完成后,修改数据储存表的可读标记,休眠2分钟,等待修改信息在整个系统中生效;删除已归档状态数据存储表中的数据。进一步,归档后的数据状态查询具体包括以下步骤:(1)收到状态数据查询任务,根据车辆id和查询时间,按单个车辆和单天把查询任务分解多个子任务,推动到多任务查询队列。(2)等待所有查询子任务完成查询;对接所有查询子任务结果进行合并,返回给查询任务。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1