具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境中数据处理装置所属终端的结构示意图。
本发明实施例终端可以是PC。如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作服务器、网络通信模块、用户接口模块以及数据处理程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据处理程序。
在本实施例中,数据处理装置包括:存储器1005、处理器1001及存储在所述存储器1005上并可在所述处理器1001上运行的数据处理程序,其中,处理器1001调用存储器1005中存储的数据处理程序时,执行以下操作:
获取第一轨迹数据及数据库中的数据字典表;
基于所述数据字典表对所述第一轨迹数据进行筛选,以得到筛选后的第二轨迹数据;
确定所述第二轨迹数据的数据类型,将所述第二轨迹数据按照所述数据类型分类存储。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
获取所述数据字典表中的第一预设规则,并确定所述第一轨迹数据是否满足所述第一预设规则;
获取满足所述第一预设规则的第二轨迹数据。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
将所述第二轨迹数据存储在数据库中;
确定所述第二轨迹数据是否为热点数据;
当所述第二轨迹数据为热点数据时,将所述第二轨迹数据存入缓存。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
将所述第二轨迹数据按照第二预设规则进行分类排序;
提取所述第二轨迹数据中的预设字段作为一级索引。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
当所述第二轨迹数据不是热点数据时,建立二级索引;
将所述二级索引对应的索引数据存储至搜索服务器。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
当在预设时间段内所述缓存中的第二轨迹数据被查询量小于预设被查询量时,则自动删除所述第二轨迹数据。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
在接收到查询请求时,确定缓存中是否存在查询请求对应的查询内容;
当所述缓存中不存在所述查询内容时,确定所述查询请求是否需要二级索引;
当所述查询请求需要二级索引时,基于所述搜索服务器找到二级索引对应的一级索引,并基于所述一级索引在数据库中查找所述查询内容。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
当所述查询请求不需要二级索引时,在数据库中查找所述查询内容。
本发明进一步提供一种数据处理方法。参照图2,图2为本发明数据处理方法第一实施例的流程示意图。
在本实施例中,该数据处理方法包括以下步骤:
步骤S10,获取第一轨迹数据及数据库中的数据字典表;
在本实施例中,第一轨迹数据包括速度、经纬度、方向、时间、设备号等,数据字典表中包括GPS轨迹数据中必须包含的字段、内容等一些预设规则,例如,GPS轨迹中需要包括经纬度,但在进行数据筛选时,获取到的某一个GPS轨迹数据中没有经纬度,则说明该GPS轨迹数据为无效数据,将不获取该GPS轨迹数据。
进一步地,终端将GPS轨迹数据发送至接入服务端,在接入服务端对该GPS数据进行解析,将不同GPS轨迹数据发送至不同的消息队列Kafka集群,由客户端流式拉取对应消息,然后获取拉取到的消息对应的第一轨迹数据,其中,Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,其中,在写入消息队列时,消息队列中的数据按照不同类型、设备、业务进行分类。
步骤S20,基于所述数据字典表对所述第一轨迹数据进行筛选,以得到筛选后的第二轨迹数据;
在本实施例中,获取到的第一轨迹数据比较混乱,存在一部分数据是无效数据,第一轨迹数据中的数据能够通过数据字典表筛选出符合第一预设规则的数据,数据字典表中的第一预设规则包括字段是否必填,字段长度不足补全、是否存在必要字段、rowkey(行健)构成、长度等,例如,轨迹数据中必须存在GPS时间的字段,则在获取到的第一轨迹数据中根据数据字典进行筛选后,没有GPS时间的字段的数据则被直接被过滤,筛选出含有GPS时间的字段的数据。该预设条件可以是同时具备不同的条件,例如,既要符合数据中含有GPS时间段信息,又要符合数据中含有经纬度信息,则筛选出的数据中包括GPS时间段信息及经纬度信息。
进一步地,当获取到的第一轨迹数据字段长度不足时,根据数据字典表能够将第一轨迹数据的字段进行补全,或者,当第一轨迹数据中存在不必要字段时,也可以将不必要字段进行删除。
步骤S30,确定所述第二轨迹数据的数据类型,将所述第二轨迹数据按照所述数据类型分类存储。
在本实施例中,第二轨迹数据是根据数据字典库表筛选后得到的轨迹数据,在获取到筛选后的第二轨迹数据时,确定该第二轨迹数据的数据类型,该数据类型包括常规数据、热点数据,其中,常规数据与热点数由技术人员根据实际情况进行定义,例如,技术人员将某一段时间的GPS数据定义为热点数据,则在进行数据筛选时,含有该时间段的字段的轨迹数据将被定义为热点数据,存储至缓存,当然,无论是热点数据还是常规数据,都会存储至数据库中,首先确定该第二轨迹数据中是否存在热点数据,若存在热点数据,则将热点数据存储至缓存系统,然后将热点数据存储至数据库,最后获取第二轨迹数据中的索引数据,将索引数据存储至搜索服务器,该索引数据包括时间、设备号等,其中,确定第二轨迹数据中是否存在热点数据时,会根据技术人员预设的字段进行获取热点数据,例如,首先将获取到的第二轨迹数据写入HBase(Hadoop Database分布式存储系统)数据库中,然后将热点数据写入缓存,最后将索引数据写入Solr,其中,Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API(Application Program Interface应用程序接口)接口。用户可以通过HTTP(Hyper Text Transfer Protocol超文本传送协议)请求,向搜索引擎服务器提交一定格式的XML(eXtensible Markup Language可扩展标识语言)文件,生成索引。
进一步地,在缓存系统中的轨迹数据如果在某一段时间内没有过被搜索的记录或者被搜索的次数达不到预设次数时,则将该轨迹数据在缓存系统中进行删除,该预设时间段及预设次数由技术人员根据实际情况进行设定,预设时间段包括一天、二天、三天等,预设次数包括二十次、五十次、一百次等。
本实施例提出的数据处理方法,通过获取第一轨迹数据及数据库中的数据字典表,然后基于所述数据字典表对所述第一轨迹数据进行筛选,以得到筛选后的第二轨迹数据,最后确定所述第二轨迹数据的数据类型,将所述第二轨迹数据按照所述数据类型分类存储;实现了采用数据字典表过滤掉不满足预设规则的轨迹数据,并根据数据类型对轨迹数据进行分类存储,减小了数据库压力,提高了数据处理效率。
基于第一实施例,提出本发明数据处理方法的第二实施例,参照图3,本实施例中,步骤S20包括:
步骤S21,获取所述数据字典表中的预设规则,并确定所述第一轨迹数据是否满足所述第一预设规则;
在本实施例中,预设规则包括rowkey构成、长度,是否能为空,是否支持未知字段、必须存在的字段等,rowkey是一个二进制码流,可以是任意字符串,最大长度64kb,rowkey字段过长,内存的有效利用率就会降低,系统不能缓存更多的数据,这样会降低数据的处理效率,例如,当第一轨迹数据字节过长时,可以设定预设字节长度,获取第一轨迹数据中小于或者等于预设字节长度的轨迹数据,进一步地,有些第一轨迹数据包含的数据不完整,例如,缺少经纬度、时间等信息对应的数据,在筛选过程中,当获取到第一轨迹数据时,确定该第一轨迹数据中是否存在数据字典表中的预设字段,当该第一轨迹数据中不包括该预设字段时,则说明该第一轨迹数据不符合要求,直接过滤掉该第一轨迹数据,当第一轨迹数据中包括预设字段,则获取该第一轨迹数据,例如,当预设规则包括含有GPS时间的字段,则第二轨迹数据中不含GPS时间的字段的数据则为不满足数据字典库中的预设规则。一般而言,在HBase数据库中包括一级索引,该索引包括时间及GPS的设备号,可以输入设备号及时间来查询某一段时间内某台GPS的轨迹数据。
步骤S22,获取满足所述预设规则的第二轨迹数据。
在本实施例中,根据数据字典表中的预设规则,将不满足预设字典库中预设规则的第一轨迹数据可以进行删除,获取满足预设规则的第二轨迹数据,通过数据字典表的预设规则对数据进行规范化,有效过滤掉了不符合预设规则的数据。
本实施例提出的数据处理方法,通过获取所述数据字典表中的第一预设规则,并确定所述第一轨迹数据是否满足所述第一预设规则,然后获取满足所述预设规则的第二轨迹数据;实现了有效过滤掉了不满足预设规则的轨迹数据,从而减小了数据库的压力,进一步提高了数据处理效率。
基于第二实施例,提出本发明数据处理方法的第三实施例,所述数据类型包括常规数据及热点数据,参照图4,本实施例中,步骤S30包括:
步骤S31,确定所述第二轨迹数据是否为热点数据;
在本实施例中,确定所述第二轨迹数据是否为热点数据,具体地,热点数据由技术人员定义,技术人员可以设置某些预设字段,例如时间、方向、经纬度等,当第二轨迹数据存在与该预设字段一致的字段时,则认为该第二轨迹数据为热点数据,当第二轨迹数据中不存在与预设字段一致的字段时,则认为该第二轨迹数据为常规数据。
步骤S32,当所述第二轨迹数据为热点数据时,将所述第二轨迹数据存入缓存;
在本实施例中,当第二轨迹数据为热点数据时,将第二轨迹数据存储至缓存,热点数据存储至缓存后可以随机读取,大幅减轻HBase集群随机读取负荷。
步骤S33,将所述第二轨迹数据存储在数据库中。
在本实施例中,数据库中不仅存储着常规数据,还存储着热点数据,该常规数据与热点数据由技术人员根据实际情况进行定义,将热点数据存储至缓存系统时,也会将热点数据存储至数据库。
本实施例提出的数据处理方法,通过确定所述第二轨迹数据是否为热点数据,然后当所述第二轨迹数据为热点数据时,将所述第二轨迹数据存入缓存,最后将所述第二轨迹数据存储在数据库中;实现了将热点数据存储至缓存,有效减轻了数据库压力,在数据查询时能够增大数据处理的效率。
基于第三实施例,提出本发明数据处理方法的第四实施例,参照图5,本实施例中,步骤S33之后,还包括:
步骤S34,将所述第二轨迹数据按照第二预设规则进行分类排序;
在本实施例中,第二预设规则包括GPS设备号及时间顺序,在数据库中第二轨迹数据按照GPS设备号进行分类,相同设备号将排列在一起,相同设备号按照时间顺序进行排序,例如,一号设备一个月中的GPS数据按照从一号到月底最后一天的顺序进行排列,当需要查询昨天某台GPS设备对应的轨迹数据时,直接在在HBase中找到当月该台GPS设备对应所有轨迹数据,然后在这些轨迹数据里面遍历找到该台GPS设备昨天对应的轨迹数据,这样不用去对整个HBase进行遍历查找,只需要对该月份的GPS轨迹数据进行遍历查找,加快查找速度。
步骤S35,提取所述第二轨迹数据中的预设字段作为一级索引。
在本实施例中,预设字段包括GPS设备号及时间等,一级索引包括设备号及设备号对应的时间,该时间可以一天、一个月,在第二轨迹数据中提取对应的GPS设备号及时间的字段作为一级索引,根据一级索引直接在数据库中找到设备号及时间对应的GPS数据。
进一步地,在HBase中包括一级索引,将GPS轨迹数据按照设备号与时间进行分类,某个设备号对应多个大时间段,某个大时间段对应多个小时间段,例如,在HBase中,3号GPS设备对应1月份、2月份、三月份所有的GPS轨迹数据,其中,1月份数据中又包括一月份一号到月底所有的GPS轨迹数据,而且按时间进行排序,该设备号及月份可以作为一级索引。
本实施例提出的数据处理方法,通过将所述第二轨迹数据按照第二预设规则进行分类排序,然后提取第二轨迹数据中的预设字段作为一级索引;实现了将第二轨迹数据进行分类排序,从而在数据查询时能够加快查询速度,提高数据处理效率。
基于第四实施例,提出本发明数据处理方法的第五实施例,参照图6,本实施例中,步骤S31之后,还包括:
步骤S36,当所述第二轨迹数据不是热点数据时,建立二级索引;
在本实施例中,二级索引包括时间、区域等,例如,第二轨迹数据包括设备号、时间、经纬度、方向等,当第二轨迹数据不是热点数据时,可以将第二轨迹数据中的时间对应的数据提取出来作为二级索引。
步骤S37,将所述二级索引对应的索引数据存储至搜索服务器。
在本实施例中,将二级索引对应的索引数据存储至搜索服务器,该索引数据包括二级索引字段及对应的一级索引的字段,例如,将该索引数据存储至Solr,在进行数据查询时,不会对HBase数据表的全表扫描,可以在Solr中的索引表找到二级索引对应的一级索引的字段,然后根据一级索引找到HBase数据表中找到对应的数据,例如,参照图10,图10为数据库存储示意图,数据按照设备号及时间进行排序,如果查询设备号002在时间001的值组,该值组包括该设备号在对应时间的轨迹数据,则只需扫描设备号002-时间001这行数据,则可以查找到设备号002在时间001的轨迹数据,如果查询时间002的所有设备则只能遍历全表去查找,但建立二级索引后,参照图11,图11为索引表的示意图,首先在索引表中查询二级索引对应的一级索引,找到时间002的设备有002和003,再去HBase数据表查询设备号002-时间002,设备号003-时间002,就只需查询两条数据,不用对整个数据库进行遍历查找了。
本实施例提出的数据处理方法,通过当所述第二轨迹数据不是热点数据时,建立二级索引,然后将所述二级索引对应的索引数据存储至搜索服务器;实现了将索引数据存储至搜索服务器,防止对数据库的全盘扫描,进而提高了数据处理效率。
基于第五实施例,提出本发明数据处理方法的第六实施例,参照图7,本实施例中,步骤S32之后,还包括:
步骤S38,当在预设时间段内所述缓存中的第二轨迹数据被查询量小于预设被查询量时,则自动删除所述第二轨迹数据。
在本实施例中,被查询量包括被查询次数,该预算时间段及预设被查询量由技术人员进行设定,预设时间段包括两天、三天、四天等,预设被查询量包括二十次、三十次、五十次等,缓存中的当前热点数据如果被查询量小于预设被查询量时,则可以直接在缓存中删除被查询量少于预设被查询量的缓存数据,当然,技术人员也可以设置直接在预设时间段内直接删除缓存数据,再写存储新的缓存数据。
本实施例提出的数据处理方法,通过当在预设时间段内所述缓存中所述第二轨迹数据被查询量小于预设查询量时,则自动删除所述第二轨迹数据;实现了自动根据被查询量清理缓存数据,能够减小缓存压力,存储新的缓存数据,从而提高数据的处理效率。
基于以上所有实施例,提出本发明数据处理方法的第七实施例,参照图8,本实施例中,所述数据处理方法还包括:
步骤S40,在接收到查询请求时,确定缓存中是否存在查询请求对应的查询内容;
在本实施例中,该查询请求是指工作人员通过输入参数或者其他内容触发搜索查询请求,请求查询GPS轨迹数据对应的信息,在系统查询过程中,首先在缓存中进行查询,该缓存中存储着热点数据,当该查询的内容为热点数据时,则将直接在缓存中获取查询请求对应的查询内容。
步骤S50,当所述缓存中不存在所述查询内容时,确定所述查询请求是否需要二级索引;
在本实施例中,当缓存中不存在查询请求对应的查询内容时,则再确定查询请求是否需要二级索引。一般来说,对于针对多维查询,如果未能设计实时索引,多维查询只能全表扫描,达不到时效性,例如,当用户输入的参数为时间时,查询昨天所有设备的轨迹数据时,则只能遍历数据库进行查找。所以在本实施例中可以先判断是否需要二级索引,二级索引包括时间、区域,是否需要二级索引则先确定是否需要多维查询,例如,HBase数据表中存在设备号及时间段,当用户输入的参数为设备号及时间段时,则说明该查询请求不需要二级索引,直接可以在HBase数据表中进行查询,当用户输入参数为某个区域时,则需要二级索引,在搜索服务器中包括该区域对应的所有设备号。
步骤S60,当所述查询请求需要二级索引时,基于所述搜索服务器找到二级索引对应的一级索引,并基于所述一级索引在数据库中查找所述查询内容。
在本实施例中,当查询请求需要二级索引时,在Solr中根据二级索引查找对应的一级索引数据,例如,当查询一号GPS在昨天的轨迹数据时,二级索引为时间,则在Solr中的索引表包括时间对应的所有设备号,通过Solr可以查询到二级索引对应的一级索引,包括该时间对应的所有GPS设备号,然后根据GPS设备号与时间到HBase数据表中直接可以查询到对应的轨迹数据,不用对HBase数据表进行遍历。
本实施例提出的数据处理方法,通过在接收到查询请求时,确定缓存中是否存在查询请求对应的查询内容,然后当所述缓存中不存在所述查询内容时,确定所述查询请求是否需要二级索引,最后当所述查询请求需要二级索引时,基于所述搜索服务器找到二级索引对应的一级索引,并基于所述一级索引在数据库中查找所述查询内容;实现了首先在缓存中进行寻找,并且能够根据二级索引查找查询内容,防止了对数据库的全盘扫描,从而减轻了数据库的压力,提高了数据处理效率。
基于第七实施例,提出本发明数据处理方法的第八实施例,参照图9,本实施例中,步骤S50之后,还包括:
步骤S70,当所述查询请求不需要二级索引时,在数据库中查找所述查询内容。
在本实施例中,当所述查询请求不需要二级索引时,直接在数据库中查找查询请求对应的查询内容,该数据库包括HBase数据表,当GPS轨迹数据存储在数据库时,会对该GPS进行分类并排序,例如,某台GPS的轨迹数据会存储在一起,并且该台GPS的轨迹数据会按照时间进行排序,所以当查询请求不需要二级索引时,则直接在数据库中查询,例如,当用户查询四月份某台GPS对应的轨迹数据时,则在HBase数据表中直接可以找到该GPS轨迹数据4月份的轨迹数据。
本实施例提出的数据处理方法,通过当所述查询请求不需要二级索引时,在数据库中查找所述查询内容;实现了当不需要二级索引时,不需要通过搜索服务器进行搜索,直接在HBase中进行查找,从而提高了数据处理效率。
本发明还提供一种计算机可读存储介质,在本实施例中,计算机可读存储介质上存储有数据处理程序,其中:
获取第一轨迹数据及数据库中的数据字典表;
基于所述数据字典表对所述第一轨迹数据进行筛选,以得到筛选后的第二轨迹数据;
确定所述第二轨迹数据的数据类型,将所述第二轨迹数据按照所述数据类型分类存储。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
获取所述数据字典表中的第一预设规则,并确定所述第一轨迹数据是否满足所述第一预设规则;
获取满足所述第一预设规则的第二轨迹数据。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
将所述第二轨迹数据存储在数据库中;
确定所述第二轨迹数据是否为热点数据;
当所述第二轨迹数据为热点数据时,将所述第二轨迹数据存入缓存。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
将所述第二轨迹数据按照第二预设规则进行分类排序;
提取所述第二轨迹数据中的预设字段作为一级索引。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
当所述第二轨迹数据不是热点数据时,建立二级索引;
将所述二级索引对应的索引数据存储至搜索服务器。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
当在预设时间段内所述缓存中的第二轨迹数据被查询量小于预设被查询量时,则自动删除所述第二轨迹数据。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
在接收到查询请求时,确定缓存中是否存在查询请求对应的查询内容;
当所述缓存中不存在所述查询内容时,确定所述查询请求是否需要二级索引;
当所述查询请求需要二级索引时,基于所述搜索服务器找到二级索引对应的一级索引,并基于所述一级索引在数据库中查找所述查询内容。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
当所述查询请求不需要二级索引时,在数据库中查找所述查询内容。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。