数据存储方法、装置、服务器和系统与流程

文档序号:17180263发布日期:2019-03-22 20:50阅读:197来源:国知局
数据存储方法、装置、服务器和系统与流程

本发明涉及数据处理技术,尤其涉及一种数据存储方法、装置、服务器和系统。



背景技术:

跨时区的物联网系统从布置在各地的物联网终端采集数据,统一存储在中心数据库中。各地服务器从该中心数据库中获取数据下载到各服务器的本地存储。为了对不同时区的数据以统一的时间标准进行存储,中心数据库中存储数据的时间信息都是协调世界时(coordinateduniversaltime,简称:utc)。由于utc与各服务器所在地的时区可能具有差异,因此服务器在从中心数据库下载物联网数据文件后需要先时区转换再存储本地。

当前中心数据库中存储的物联网数据文件都是按照文件的utc采集时段进行存储,例如每个utc自然日的24点从物联网终端采集一次物联网数据文件,该物联网数据文件中记录了一个utc自然日内物联网终端的信息,则以采集到物联网数据文件的每个utc自然日的24点或该utc自然日日期作为物联网数据文件的索引存储在中心数据库中。服务器从中心数据库下载物联网数据文件,并将索引的utc时间转换为本地时区时间,将转换的本地时区时间作为本地存储的索引。

但由于物联网数据文件采集时间与物联网数据文件内容记录的业务时间具有差异,现有技术得到的本地索引时间与中心数据库下载的数据匹配度不高、关联性不强,无法满足时间强相关的物联网数据文件的信息准确性要求。



技术实现要素:

本发明提供一种数据存储方法、装置、服务器和系统,提高了物联网业务数据在本地存储的索引准确性,满足了对时间强相关数据的存储要求。

根据本发明的第一方面,提供一种数据存储方法,包括:

获取物联网数据文件内各业务数据的业务协调世界时utc时间;

根据所述业务utc时间,获取业务本地时间,所述业务本地时间指示了所述业务数据的生成时间对应本地时区的时间;

根据所述业务本地时间,存储所述业务数据。

可选地,所述根据所述业务本地时间,存储所述业务数据,包括:

在已存储的本地索引中,确定是否有所述业务本地时间对应的目标本地索引;

若是,则根据所述目标本地索引存储所述业务数据;

若否,则根据所述业务本地时间获得新的本地索引,并根据所述新的本地索引存储所述业务数据。

可选地,在所述获取物联网数据文件内各业务数据的业务协调世界时utc时间之前,还包括:

根据待获取的目标本地时间、本地时区与utc的时差,确定所述目标本地时间对应的第一utc时间;

根据所述物联网数据文件的采集周期和所述第一utc时间,确定第二utc时间,所述第二utc时间与所述中心数据库中的至少一个utc索引对应;

根据所述至少一个utc索引,从所述中心数据库中获取所述物联网数据文件。

可选地,所述根据所述至少一个utc索引,从所述中心数据库中获取所述物联网数据文件,包括:

获取所述目标utc索引在所述中心数据库中对应的目标文件;

若所述目标文件为至少2个增量文件,则将所述至少2个增量文件合并,得到所述物联网数据文件;

若所述目标文件为1个全量文件,则将所述全量文件确定为所述物联网数据文件。

可选地,所述获取物联网数据文件内各业务数据的业务协调世界时utc时间,包括:

获取所述物联网数据文件的内容信息;

从所述内容信息中,获取出业务数据和各所述业务数据对应的时间特征;

根据所述业务数据对应的时间特征,获取所述业务数据对应的业务utc时间。

根据本发明的第二方面,提供一种数据存储装置,包括:

utc时间获取模块,用于获取物联网数据文件内各业务数据的业务协调世界时utc时间;

业务本地时间获取模块,用于根据所述业务utc时间,获取业务本地时间,所述业务本地时间指示了所述业务数据的生成时间对应本地时区的时间;

存储模块,用于根据所述业务本地时间,存储所述业务数据。

可选地,所述存储模块用于:

在已存储的本地索引中,确定是否有所述业务本地时间对应的目标本地索引;若是,则根据所述目标本地索引存储所述业务数据;若否,则根据所述业务本地时间获得新的本地索引,并根据所述新的本地索引存储所述业务数据。

可选地,还包括物联网数据文件获取模块,用于:

在所述获取物联网数据文件内各业务数据的业务协调世界时utc时间之前,根据待获取的目标本地时间、本地时区与utc的时差,确定所述目标本地时间对应的第一utc时间;根据所述物联网数据文件的采集周期和所述第一utc时间,确定第二utc时间,所述第二utc时间与所述中心数据库中的至少一个utc索引对应;根据所述至少一个utc索引,从所述中心数据库中获取所述物联网数据文件。

可选地,所述物联网数据文件获取模块用于:

在所述获取物联网数据文件内各业务数据的业务协调世界时utc时间之前,根据待获取的目标本地时间、本地时区与utc的时差,确定所述目标本地时间对应的第一utc时间;根据所述物联网数据文件的采集周期和所述第一utc时间,确定第二utc时间,所述第二utc时间与所述中心数据库中的至少一个utc索引对应;获取所述目标utc索引在所述中心数据库中对应的目标文件;若所述目标文件为至少2个增量文件,则将所述至少2个增量文件合并,得到所述物联网数据文件;若所述目标文件为1个全量文件,则将所述全量文件确定为所述物联网数据文件。

可选地,所述utc时间获取模块,用于:

获取所述物联网数据文件的内容信息;从所述内容信息中,获取出业务数据和各所述业务数据对应的时间特征;根据所述业务数据对应的时间特征,获取所述业务数据对应的业务utc时间。

根据本发明的第三方面,提供一种服务器,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行本发明第一方面及第一方面的各种可能设计的所述数据存储方法。

根据本发明的第四方面,提供一种物联网系统,其特征在于,包括中心数据库和至少一个本发明的第三方面所述的服务器。

根据本发明的第五方面,提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被执行时用于实现本发明第一方面及第一方面各种可能设计的所述方法。

本发明提供的一种数据存储方法、装置、服务器和系统,通过获取物联网数据文件内各业务数据的业务协调世界时utc时间;根据所述业务utc时间,获取业务本地时间,所述业务本地时间指示了所述业务数据的生成时间对应本地时区的时间;根据所述业务本地时间,存储所述业务数据,提高了从物联网中获取到的各种业务数据与本地时间的关联强度,实现了与本地时间强关联性地数据存储,解决了从中心服务器下载获得的业务数据与本地业务时间匹配度不高、关联性弱的问题。

附图说明

图1是本发明实施例提供的一种应用场景示意图;

图2是本发明实施例提供的一种数据存储方法流程示意图;

图3是本发明实施例提供的一种物联网数据文件的示例;

图4是本发明实施例提供的另一种数据存储方法流程示意图;

图5是本发明实施例提供的再一种数据存储方法流程示意图;

图6是本发明实施例提供的一种数据存储方法的示例;

图7是本发明实施例提供的一种时区转换的示例;

图8是本发明实施例提供的一种数据存储装置的结构示意图;

图9是本发明实施例提供的一种服务器的硬件结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

应当理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

应当理解,在本申请中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应当理解,在本申请中,“与a相对应的b”、“a与b相对应”或者“b与a相对应”,表示b与a相关联,根据a可以确定b。根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其他信息确定b。

取决于语境,如在此所使用的“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。

应当理解,在本申请中,协调世界时(coordinateduniversaltime,简称:utc),又称之为世界统一时间、世界协调时间,世界协调时(coordinateduniversaltime)是以原子时秒长为计量单位、在时刻上与"平均太阳时"之差小于0.9秒的时间系统。原子时与地球自转没有直接联系,由于地球自转速度长期变慢的趋势,原子时与世界时的差异将逐渐变大,为了保证时间与季节的协调一致,便于日常使用,建立了以原子时秒长为计量单位、在时刻上与"平均太阳时"之差小于0.9秒的时间系统,称为世界协调时(utc)。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

参见图1,是本发明实施例提供的一种应用场景示意图。在图1所示的应用场景中,多个物联网终端1与中心数据库2连接,该中心数据库还与2个服务器3连接。物联网数据文件的采集,可以理解为物联网终端1将感应到的或者是接收到的业务数据上传至中心数据库2,也可以是理解为中心数据库2主动从各物联网终端1获取业务数据。中心数据库2将每个采集周期内采集到的业务数据生成一个物联网数据文件,并以采集时间作为该物联网数据文件的索引。中心数据库中的数据都配置为业务协调世界时utc时间。索引例如是物联网数据文件的文件名,每个物联网数据文件的文件名以预设的格式记录了该物联网数据文件的utc采集时间。处于各个时区的服务器3可以利用本发明的方法从中心数据库2中获取物联网数据文件,并将物联网数据文件中业务数据的生成时间,转换为服务器2本地时区时间,从而在服务器2本地按照本地时区时间对各业务数据进行分类存储。由于业务数据的生成时间与包含业务数据的物联网数据文件的生成时间具有差异,本发明以业务数据的时间作为各个业务数据在本地存储的依据,使得服务器本地存储的业务数据与其对应的索引具有较高的匹配度,提高了业务数据的时间相关性。

参见图2,是本发明实施例提供的一种数据存储方法流程示意图,参见图3,是本发明实施例提供的一种物联网数据文件的示例。图2所示方法的执行主体可以是硬件装置,也可以是软件装置,或者硬件与软件结合的装置。硬件装置例如是图1所示的服务器或者是其他具有数据存储功能的设备,软件装置例如是服务器中存储的软件模块。图2所示方法主要包括步骤s101至步骤s103,具体如下:

s101,获取物联网数据文件内各业务数据的业务协调世界时utc时间。

具体地,可以是先获取物联网数据文件,例如定期从中心数据库进行周期性地数据下载获取,或者从中心数据库进行指定时间段的数据下载获取。所述物联网数据文件可以是记录多个业务数据,且每个业务数据都对应记录有生成该业务数据的业务utc时间。例如分布在各地的空气质量检测终端将各自检测到的空气质量数据存储在中心数据库,每个物联网数据文件存储有一个utc自然日内的空气质量数据。参见图3所示的示例,以24小时作为生成物联网数据文件的周期,一个物联网数据文件中业务数据对应的业务utc时间是2018年3月7日00:00:00—23:59:59,该物联网数据文件在中心数据库中的索引可以为utc20180307,下一个物联网数据文件中业务数据对应的业务utc时间是2018年3月8日00:00:00—23:59:59,该物联网数据文件在中心数据库中的索引可以为utc20180308。物联网数据文件中每一个业务数据可以是配置有其数据生成时间,例如,某空气质量检测终端在2018年3月7日10:48:12获得空气质量检测的业务数据“mp2.5指数:37;空气综合指数:81;空气质量良”,中心数据库获得该业务数据后在物联网数据文件中记录为:“20180307104812;北京mp2.5指数:37;空气综合指数:81;空气质量良”。其中“北京mp2.5指数:37;空气综合指数:81;空气质量良”是业务数据,该业务数据的utc时间为2018年3月8日。其中,该utc时间的表示方式可以是2018年3月7日10:48:12,也可以是20180307104812,还可以是其他时间格式。通过获取各业务数据的utc时间可以确定生成各业务数据的时间,提高数据源的准确性。

s102,根据所述业务utc时间,获取业务本地时间。

其中,所述业务本地时间指示了所述业务数据的生成时间对应本地时区的时间。具体可以理解为先确定本地时区与utc之间的时差,再在业务utc时间的基础上加上所述时差,得到业务数据的业务本地时间。继续以上述空气质量检测的业务数据为例,该业务数据的业务utc时间为2018年3月7日10:48:12,假设本地为北京时区,北京时区比utc时区早8小时,即北京时区与utc的时差为8小时,则上述空气质量检测的业务数据的业务本地时间为北京时间2018年3月7日18:48:12。

s103,根据所述业务本地时间,存储所述业务数据。

具体地,在例如是服务器的数据存储装置的本地存储器中,业务数据可以是以其生成时间进行的分类存储。分类存储具体可以理解为将每一个本地时区自然日作为分类依据,或者以物联网服务所需的处理周期为分类依据,对从物联网数据文件中得到的业务数据进行分类存储。处理周期可以理解为由后续所需处理过程决定的,例如服务器需要向本地用户提供每个自然日全球环境的变化情况,需要对每个自然日中各地环境参数进行统计和分析处理,每次获取业务数据都是按本地自然日的24小时进行数据获取,因此本地存储的业务数据可以是按照其生成的自然日进行分类存储。继续以上述空气质量检测的业务数据为例,假设本地是按照每一个自然日对应一个本地索引,每个本地索引指向一个存储区域,上述业务数据“北京mp2.5指数:37;空气综合指数:81;空气质量良”对应的业务本地时间是北京时间2018年3月7日18:48:12,因此将该业务数据存储入2018年3月7日指向的存储空间。用户可以在2018年3月7日对应的本地文件或文件夹中查找到该业务数据。

在具体的实现过程中,由于物联网数据文件是按照utc时间进行的分类,如果按照现有技术中仅仅对物联网数据文件的utc索引进行时区转换,那么本地存储的业务数据存在与本地时区时间关联不准确的问题,或者以utc时间来分类存储,无法按照本地服务需求按照本地时间分类存储,例如将utc时间2018年3月7日00:00:00-23:59:59的业务数据作为一个分类,则该分类对应的北京时间为2018年3月7日08:00:00-2018年3月8日7:59:59,这个分类不能与本地自然日一一对应,难以满足按本地自然日进行数据读取的需求。在进行了本实施例的业务数据时区转换后,一个物联网数据文件中分离出对应2个本地时区自然日的业务数据,因此从一个物联网数据文件中获取到的业务数据最后分别分配到不同的本地索引,例如20180307和20180308,由此可以按照本地的服务需求进行分类存储,并提高了本地索引与业务数据的时间关联强度。

本实施例提供了一种数据存储方法,通过获取物联网数据文件内各业务数据的业务协调世界时utc时间;根据所述业务utc时间,获取业务本地时间,所述业务本地时间指示了所述业务数据的生成时间对应本地时区的时间;根据所述业务本地时间,存储所述业务数据,提高了从物联网中获取到的各种业务数据与本地时间的关联强度,实现了与本地时间强关联性地数据存储,解决了从中心服务器下载获得的业务数据与本地业务时间匹配度不高、关联性弱的问题。

参见图4,是本发明实施例提供的另一种数据存储方法流程示意图。在上述实施例的基础上,为了说明如何根据业务本地时间存储业务数据,下面结合图4和具体实施例对步骤s103的过程进行说明,图4所示的存储过程主要包括如下步骤s201至s203。

s201,在已存储的本地索引中,确定是否有所述业务本地时间对应的目标本地索引。

若是,则转入s202,若否,则转入s203。

具体地,已存储的本地索引,可以理解为本地对已存储的业务数据根据业务服务需求确定的时间分类索引,每个本地索引指向一个时间段的业务数据。例如在以每个自然日为单位分析数据的服务中,可以是以本地时区每个自然日确定一个本地索引,而在以每个小时为单位分析数据的服务中,可以是以本地时区每个小时确定一个本地索引。如果是以本地时区自然日确定的本地索引,那么如果业务本地时间为2018年3月7日08:00:00-2018年3月8日7:59:59的物联网数据文件中,业务本地时间在2018年3月7日08:00:00-2018年3月7日23:59:59的业务数据对应2018年3月7日的本地索引20180307,而业务本地时间在2018年3月8日00:00:00-2018年3月8日7:59:59的业务数据则对应2018年3月8日的本地索引20180308。

s202,根据所述目标本地索引存储所述业务数据。

具体地,可以理解为在目标本地索引已存在的情况下,直接将业务数据存储入目标本地索引指向的存储空间。例如,在已存储的本地索引中可以查询到本地索引20180307,则直接将业务本地时间在2018年3月7日08:00:00-2018年3月7日23:59:59的业务数据,存储入本地索引20180307指向的存储空间。

s203,根据所述业务本地时间获得新的本地索引,并根据所述新的本地索引存储所述业务数据。

具体地,可以理解为在目标本地索引不存在的情况下,表明本地存储的业务数据还没有新来的所述业务本地时间所对应时间段的,因此还没有相应的索引,无法直接将业务数据进行存储,需要先为要存储的业务数据配置新的本地索引。在具体实现过程中,可以是根据预设的数据分类规则和所述业务本地时间,确定与所述业务本地时间对应的新的本地索引。数据分类规则可以理解为是将每个本地时区的自然日作为一个分类,还是将每个本地时区的小时作为一个分类。进一步地,数据分类规则还可以对索引的表示内容进行限定,例如仅包含指示业务时间的标识,或者包含指示多种信息的标识。例如,在已存储的本地索引中无法查询到与业务本地时间在2018年3月8日00:00:00-2018年3月8日7:59:59对应的本地索引,而本地是按照本地时区的每个自然日进行分类存储的,则可以根据业务本地时间2018年3月8日00:00:00-2018年3月8日7:59:59确定这些业务数据都属于2018年3月8日的分类,创建新的本地索引20180308,然后将业务本地时间在2018年3月8日00:00:00-2018年3月8日7:59:59的业务数据,存储入新的本地索引20180308指向的存储空间。

本实施例先根据业务本地时间获取本地索引,再根据本地索引分别存储业务数据,将从中心数据库下载的数据按照本地的分类方式,按照本地索引存储,提高了业务数据与本地索引的时间关联强度。

参见图5,是本发明实施例提供的再一种数据存储方法流程示意图。在上述实施例的基础上,在步骤s101所述获取物联网数据文件内各业务数据的业务协调世界时utc时间之前,还可以包括如图5所示的如下步骤s301至s303。

s301,根据待获取的目标本地时间、本地时区与utc的时差,确定所述目标本地时间对应的第一utc时间。

具体地,可以是根据用户输入得到的,或者是服务器周期生成的需要获取数据的目标本地时间。例如服务器本地每天生成一个数据获取请求,该数据获取请求中包含的目标本地时间为前一天00:00:00-23:59:59。以本地为中国举例,北京时间与utc时差为+8小时,如果目标本地时间为2018年3月8日00:00:00-19:59:59,则第一utc时间为2018年3月7日16:00:00-2018年3月8日11:59:59。

s302,根据所述物联网数据文件的采集周期和所述第一utc时间,确定第二utc时间,所述第二utc时间与所述中心数据库中的至少一个utc索引对应。

具体地,中心数据库将每个采集周期采集到的业务数据存储为一个时间分类中,例如将一个utc自然日中的物联网数据合并在一个物联网数据文件中,该文件以其生成的utc日期进行命名。物联网数据文件的采集周期也可以理解为每个物联网数据文件中包含业务数据时间的周期长度,例如采集周期为24小时,则一个物联网数据文件中业务时间的最长间隔也是24小时。继续参考上述示例中第一utc时间为2018年3月7日16:00:00-11:59:59,如果物联网数据文件的采集周期是每个utc自然日,则第一utc时间2018年3月7日16:00:00-23:59:59对应的第二utc时间是2018年3月7日,第一utc时间2018年3月8日00:00:00-11:59:59对应的第二utc是2018年3月8日,即得到第二utc时间:2018年3月7日和2018年3月8日。这两个第二utc时间分别对应了utc索引:utc20180307和utc20180308。

s303,根据所述至少一个utc索引,从所述中心数据库中获取所述物联网数据文件。

继续参考上述utc索引为utc20180307和utc20180308的示例,根据utc索引可以从中心数据库中获取到如图3所示的2018年3月7日以及2018年3月8日的两个物联网数据文件。

在一种实现过程中,若获取到的文件为2个或2个以上增量文件,则可以先将增量文件合并,将合并后的文件作为所述物联网数据文件;若获取到的文件是1个全量文件,则直接作为所述物联网数据文件。具体地,首先获取所述目标utc索引在所述中心数据库中对应的目标文件。若所述目标文件为至少2个增量文件,则将所述至少2个增量文件合并,得到所述物联网数据文件;若所述目标文件为1个全量文件,则将所述全量文件确定为所述物联网数据文件。

参见图6,是本发明实施例提供的一种数据存储方法的示例。下面结合图6对以文件名作为utc索引的实现方式进行举例说明。图6中的中心数据库是全球范围内的的物联网平台数据库,以utc时间存储时间信息,可将不同地区的业务系统与无线技术完整融合,协助处理大量联网终端,其中便包括空气质量监控数据采集器,其通过传感器设备采集的数据,数据字段以“|”分割,时区采用utc时间,北京时间与utc的时差为8小时。图6所示2018年3月10日收到中心数据库推送过来的原始文件,原始文件根据其在中心数据库中的存储类型为增量文件或全量文件,分为两种情况处理:

对于增量文件,文件名是utc时间3月9日,文件内业务utc时间是utc时间3月8日,转换为业务本地时间是北京时间3月8日;

对于全量文件,文件名是utc时间3月9日,但文件内业务utc时间仍然是utc时间3月9日,转换为业务本地时间是北京时间3月9日。

如图6所示,服务器本地在数据入库的时候,按实际的业务本地时间入库,业务本地时间是北京时间3月8日的增量文件就入3月8日数据库,业务本地时间是北京时间3月9日的全量文件就入3月9日的数据库。

参见图7,是本发明实施例提供的一种时区转换的示例。对于增量文件,可以以如图7中北京时间2018年3月10日收到文件名为utc时间3月9日,文件内业务utc时间是3月8日00:00:00—23:59:59的物联网数据文件为例。需要获取的目标本地时间为北京时间3月8日00:00:00—23:59:59,将北京时间转换为utc时间,则对应的第一utc时间为3月7日16:00:00—3月8日15:59:59。所以从中心数据库获取的物联网数据文件就应该取文件名指示为3月7日和3月8日这两天的物联网数据文件,再筛选其中时间段为3月7日日16:00:00—3月8日15:59:59之间的业务数据进行后续处理和本地存储。对于全量文件,可以以如图7中北京时间2018年3月28日收到文件名为utc时间3月27日,文件内业务utc时间是utc时间3月26日00:00:00—23:59:59为例。需要获取的目标本地时间为账期初北京时间2月27日00:00:00至账期末日3月26日23:59:59,将北京时间转换为utc时间,时差8小时,则对应的第一utc时间为2月26日16:00:00—3月26日15:59:59。所以从中心数据库获取的物联网数据文件就应该取文件名指示为2.26到3.26之间的物联网数据文件,再筛选其中时间段为2.26日16:00:00—3.26日15:59:59之间的业务数据进行后续处理和本地存储。

在如图7所示的实施例中的业务可以是账单业务,具体实施过程中可以根据业务和数据对应关系进行时间周期关联。具体地根据账期规则及时区转换规则,利用scala语言实现calendar日期类,实现账期内时间列表、全量数据单天选择,总共涉及时间有3类,包括输入参数即向中心数据库获取数据的查询时间(如北京时间3月8日),全量账期时间(北京时间2月27日至3月8日,单个文件),增量账期时间(北京时间2月27日至3月8日,期间文件总和)。其中利用sacla语言中calendar日期类规则设置,得到对应的时间列表,如查询日为date格式——20180308,全量账期时间列表list(20180227,20180308),增量账期时间列表list(20180227、20180228、20180301、20180302……20180308)。

在上述实施例的基础上,所述步骤s101可以包括数据分割过程,具体可以是:

先获取所述物联网数据文件的内容信息。可以理解为对物联网数据文件的内容信息进行读取。然后,从所述内容信息中,获取出业务数据和各所述业务数据对应的时间特征。可以理解为对获取到的内容信息进行数据分割,将业务数据和业务数据对应的时间特征提取出来,建立对应关系。最后,根据所述业务数据对应的时间特征,获取所述业务数据对应的业务utc时间。可以理解为将时间特征转化为标准时间格式的业务utc时间信息。例如将信息缺失或错误的时间特征进行纠正,将不标准时间格式转化为标准格式。

具体地,数据格式可以是以“|”分割,利用spark数据处理器进行数据分割和过滤,并截取目标甲醛浓度字段。例如物联网数据文件中的内容信息为:

"2"|"2016-12-2310:48:12"|"柒贰零720"|"海淀","cg3001d3"|"晴"|"1482461280000"|null|"25.1"|"11.6"|"45"|"17"|"0.0192"|"0.315"|"13"|"19"|"2612"|"-1"|"36"|"28"|"16"|"28"|"36"|"-1"|"室内过于干燥,建议开启加湿器;室内tvoc超标,室外空气优良,建议开窗通风;室内eco2超标,室外空气优良,建议开窗通风;"|"fridec2310:48:122016"|"720测试点"|

物联网数据文件例如是hdfs文件,可以利用spark数据处理器中提供的两个读取hdfs文件的接口--read.text和read.textfile--并行读取数据。在读取文件时,默认以换行符为分隔符读取。但由于采集数据中,涉及文本字段,如字段"室内过于干燥,建议开启加湿器;室内tvoc超标,室外空气优良,建议开窗通风;室内eco2超标,室外空气优良,建议开窗通风;",会有一定比例的换行输入。为保证完整的一条数据,可以由ascii码02作为结束符,避免影响整体数据的读入。先将物联网数据文件中的换行符替换为空,即避免特殊字段存在换行符对数据造成的影响。然后将ascii02字符替换为换行符,以供read.textfile进行数据读入,得到数据框dataframe格式的数据。spark.map.filter中时间格式为20180213112233,转化为预设时间戳格式2018021311-22-33,sparksql中的filter中进行converttz函数进行时区转化,并保存为预设格式的hdfs文件。

新建样本类caseclass,用于定义有效字段的名称及数据类型,例如caseclassch2o(ts:timestamp,weathercityname:string,ch2o:float,devicenum:string),spark中dataframe中通过map(_split“|”)进行并行数据分割,根据读取的dataframe中目标字段的位置索引获得目标数据字段,如split(2)为ts时间戳字段。并存储至caseclass中,实现业务数据的分割。

上述增量文件合并解决因文件过碎导致的hadoop集群计算力下降,在运行jar包时报错。通过scala设置jdbc接口及目标数据库访问参数,以下载形式将分割后的业务数据导入本地数据库。利用spark生态体系,处理来自中心数据库的文件数据,对于时间强相关的、数据量大、采集点分散的数据进行处理和存储,并经过本地索引和业务本地时间的对应,周期性增量文件处理及特殊分隔符与spark中读取文件的匹配方法,实现utc时间转化并hdfs离线存储更新文件并导入数据库。

参见图8,是本发明实施例提供的一种数据存储装置的结构示意图,主要包括:

utc时间获取模块61,用于获取物联网数据文件内各业务数据的业务协调世界时utc时间;

业务本地时间获取模块62,用于根据所述业务utc时间,获取业务本地时间,所述业务本地时间指示了所述业务数据的生成时间对应本地时区的时间;

存储模块63,用于根据所述业务本地时间,存储所述业务数据。

图8所示实施例的数据存储装置对应地可用于执行图2所示方法实施例中的步骤,其实现原理和技术效果类似,此处不再赘述。

在上述实施例的基础上,所述存储模块63用于:

在已存储的本地索引中,确定是否有所述业务本地时间对应的目标本地索引;若是,则根据所述目标本地索引存储所述业务数据;若否,则根据所述业务本地时间获得新的本地索引,并根据所述新的本地索引存储所述业务数据。

在上述实施例的基础上,还包括物联网数据文件获取模块64,用于:

在所述获取物联网数据文件内各业务数据的业务协调世界时utc时间之前,根据待获取的目标本地时间、本地时区与utc的时差,确定所述目标本地时间对应的第一utc时间;根据所述物联网数据文件的采集周期和所述第一utc时间,确定第二utc时间,所述第二utc时间与所述中心数据库中的至少一个utc索引对应;根据所述至少一个utc索引,从所述中心数据库中获取所述物联网数据文件。

在上述实施例的基础上,所述物联网数据文件获取模块64用于:

在所述获取物联网数据文件内各业务数据的业务协调世界时utc时间之前,根据待获取的目标本地时间、本地时区与utc的时差,确定所述目标本地时间对应的第一utc时间;根据所述物联网数据文件的采集周期和所述第一utc时间,确定第二utc时间,所述第二utc时间与所述中心数据库中的至少一个utc索引对应;获取所述目标utc索引在所述中心数据库中对应的目标文件;若所述目标文件为至少2个增量文件,则将所述至少2个增量文件合并,得到所述物联网数据文件;若所述目标文件为1个全量文件,则将所述全量文件确定为所述物联网数据文件。

在上述实施例的基础上,所述utc时间获取模块61用于:

获取所述物联网数据文件的内容信息;从所述内容信息中,获取出业务数据和各所述业务数据对应的时间特征;根据所述业务数据对应的时间特征,获取所述业务数据对应的业务utc时间。

参见图9,是本发明实施例提供的一种服务器的硬件结构示意图,该服务器包括:处理器91、存储器92以及计算机程序;其中

存储器92,用于存储所述计算机程序,该存储器还可以是闪存(flash)。所述计算机程序例如是实现上述方法的应用程序、功能模块等。

处理器91,用于执行所述存储器存储的计算机程序,以实现上述方法中的各个步骤。具体可以参见前面方法实施例中的相关描述。

可选地,存储器92既可以是独立的,也可以跟处理器91集成在一起。

当所述存储器92是独立于处理器91之外的器件时,所述服务器还可以包括:

总线93,用于连接所述存储器92和处理器91。

本发明还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被执行时用于实现上述的各种实施方式提供的方法。

其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(applicationspecificintegratedcircuits,简称:asic)中。另外,该asic可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。

本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。

本发明还提供如图1所示的一种物联网系统,主要包括中心数据库2和至少一个上述各实施例所述的服务器3。

在上述终端或者服务器的实施例中,应理解,处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1