掌桥专利:专业的专利平台
掌桥专利
首页

数据存储方法、装置、设备及介质

文献发布时间:2023-06-19 10:06:57


数据存储方法、装置、设备及介质

技术领域

本申请属于计算机技术领域,尤其涉及一种数据存储方法、装置、设备及介质。

背景技术

目前针对各种智能化电子设备,都存在电子设备的日志数据备份、存储和处理问题。以车辆诊断设备为例,车辆诊断设备通常是用于对车辆进行检测与诊断的设备。实践中,车辆诊断设备通常用于确定车辆技术状况或用于查明车辆的故障部位、故障原因等。实际应用中,车辆诊断设备在对车辆进行诊断时,通常会产生与车辆诊断相关的车辆日志数据。车辆日志数据可用于对车辆进行后续分析。

相关技术中,存在对日志数据进行存储的需求。

发明内容

本申请实施例提供了数据存储方法、装置、设备及介质。

第一方面,本申请实施例提供了一种数据存储方法,该方法包括:

响应于接收到日志数据,将日志数据写入处于第一状态的数据队列,其中,第一状态用于指示数据队列当前可用;

响应于处于第一状态的数据队列被写满,将处于第一状态的数据队列的状态修改为第二状态,以及将处于第三状态的数据队列的状态修改为第一状态,其中,第二状态用于指示数据队列当前被写满,第三状态用于指示数据队列当前空闲;

将处于第二状态的数据队列中的日志数据存储至目标日志文件。

进一步地,在将处于第二状态的数据队列中的日志数据存储至目标日志文件之后,还包括:

响应于处于第二状态的数据队列为空队列,将处于第二状态的数据队列的状态修改为第三状态。

进一步地,将处于第二状态的数据队列中的日志数据存储至目标日志文件,包括:

针对处于第二状态的数据队列中的日志数据,执行如下存储步骤:

响应于该日志数据的大小小于或等于目标日志文件的剩余存储空间,将该日志数据存储至目标日志文件;

响应于该日志数据的大小大于目标日志文件的剩余存储空间,将目标日志文件作为历史日志文件存入历史日志文件集合,创建新的日志文件,将该日志数据存储至新的日志文件;将新的日志文件确定为目标日志文件。

进一步地,将目标日志文件作为历史日志文件存入历史日志文件集合,包括:

响应于历史日志文件集合中的历史日志文件的数目小于预设数目,将目标日志文件作为历史日志文件存入历史日志文件集合。

进一步地,将目标日志文件作为历史日志文件存入历史日志文件集合,包括:

响应于历史日志文件集合中的历史日志文件的数目大于或等于预设数目,删除历史日志文件集合中被最早存入的历史日志文件,以及将目标日志文件作为历史日志文件存入历史日志文件集合。

进一步地,历史日志文件集合用于存储历史时刻的目标日志文件,方法还包括:

响应于满足预设数据导出条件,将目标日志文件作为历史日志文件存入历史日志文件集合,以及将历史日志文件集合向目标服务器发送,使得目标服务器对历史日志文件集合中各历史日志文件所存储的日志数据进行解析。

进一步地,数据导出条件包括以下任意一项或多项:车辆诊断设备处于空闲状态,车辆诊断设备处于网络连接状态。

第二方面,本申请实施例提供了一种数据存储装置,该装置包括:

数据接收单元,用于响应于接收到日志数据,将日志数据写入处于第一状态的数据队列,其中,第一状态用于指示数据队列当前可用;

状态修改单元,用于响应于处于第一状态的数据队列被写满,将处于第一状态的数据队列的状态修改为第二状态,以及将处于第三状态的数据队列的状态修改为第一状态,其中,第二状态用于指示数据队列当前被写满,第三状态用于指示数据队列当前空闲;

数据存储单元,用于将处于第二状态的数据队列中的日志数据存储至目标日志文件。

进一步地,在将处于第二状态的数据队列中的日志数据存储至目标日志文件之后,还包括:

响应于处于第二状态的数据队列为空队列,将处于第二状态的数据队列的状态修改为第三状态。

进一步地,数据存储单元具体用于:

针对处于第二状态的数据队列中的日志数据,执行如下存储步骤:

响应于该日志数据的大小小于或等于目标日志文件的剩余存储空间,将该日志数据存储至目标日志文件;

响应于该日志数据的大小大于目标日志文件的剩余存储空间,将目标日志文件作为历史日志文件存入历史日志文件集合,创建新的日志文件,将该日志数据存储至新的日志文件;将新的日志文件确定为目标日志文件。

进一步地,将目标日志文件作为历史日志文件存入历史日志文件集合,包括:

响应于历史日志文件集合中的历史日志文件的数目小于预设数目,将目标日志文件作为历史日志文件存入历史日志文件集合。

进一步地,将目标日志文件作为历史日志文件存入历史日志文件集合,包括:

响应于历史日志文件集合中的历史日志文件的数目大于或等于预设数目,删除历史日志文件集合中被最早存入的历史日志文件,以及将目标日志文件作为历史日志文件存入历史日志文件集合。

进一步地,历史日志文件集合用于存储历史时刻的目标日志文件,装置还包括数据导出单元,用于:

响应于满足预设数据导出条件,将目标日志文件作为历史日志文件存入历史日志文件集合,以及将历史日志文件集合向目标服务器发送,使得目标服务器对历史日志文件集合中各历史日志文件所存储的日志数据进行解析。

进一步地,数据导出条件包括以下任意一项或多项:车辆诊断设备处于空闲状态,车辆诊断设备处于网络连接状态。

第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述数据存储方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现上述数据存储方法的步骤。

第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面中任一项的数据存储方法。

本申请实施例与相关技术相比存在的有益效果是:通过将实时产生的日志数据交替写入多个数据队列,可以实现在一个数据队列被写入当前时刻的日志数据时,另一个数据队列将上一时刻被写入的日志数据存储至目标日志文件,可以实现及时对日志数据进行存储,有助于提高对日志数据进行存储的存储效率。

可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一实施例提供的数据存储方法应用的系统架构图;

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

图3是本申请另一实施例提供的数据存储方法的流程示意图;

图4是本申请又一实施例提供的数据存储方法的流程示意图;

图5是本申请一实施例提供的数据存储装置的结构示意图;

图6是本申请一实施例提供的电子设备的结构示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。

为了说明本申请的技术方案,下面通过以下实施例来进行说明。

参考图1,为本申请实施例提供的一种数据存储方法应用的系统架构图。

如图1所示,本申请实施例以车辆诊断设备为例,用于接收并处理车辆的车辆日志数据。该系统架构可以包括车辆101、网络102和车辆诊断设备103,其中,网络102用以在车辆101和车辆诊断设备103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

车辆101可以是各种车辆。例如,无人车、小汽车、大卡车等。需要指出的是,车辆101也可以是各种其它交通工具。例如,飞机、轮船。

车辆诊断设备103可以包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等各种终端设备,本实施例不做具体限定。在对车辆进行诊断时,车辆诊断设备可以接收到车辆的车辆日志数据。具体地,车辆诊断设备可以响应于接收到车辆日志数据,将车辆日志数据写入处于第一状态的数据队列,其中,第一状态用于指示数据队列当前可用;响应于处于第一状态的数据队列被写满,将处于第一状态的数据队列的状态修改为第二状态,以及将处于第三状态的数据队列的状态修改为第一状态,其中,第二状态用于指示数据队列当前被写满,第三状态用于指示数据队列当前空闲;将处于第二状态的数据队列中的车辆日志数据存储至目标日志文件。这样,通过多个数据队列交替接收车辆所产生的车辆日志数据,可以实现在当前接收车辆日志数据的同时,将上一时刻所接收的车辆日志数据及时存储至目标日志文件,可以实现及时对车辆日志数据进行存储,有助于提高对车辆日志数据进行存储的存储效率。

参考图2,为本申请实施例提供的一种数据存储方法的流程示意图,如图2所示的数据存储方法,包括:

步骤201,响应于接收到日志数据,将日志数据写入处于第一状态的数据队列。

其中,第一状态用于指示数据队列当前可用。

其中,日志数据可以包括但不限于车辆日志数据。上述车辆日志数据通常是对车辆进行诊断过程中所产生的数据。车辆日志数据通常包括被诊断车辆的数据和车辆诊断设备的数据。作为示例,上述被诊断车辆的数据可以包括车辆诊断数据,如针对车辆的发动机的诊断数据、针对车辆的底盘的诊断数据等。上述车辆诊断设备的数据可以包括车辆诊断设备的开机时间、断电时间等。

其中,上述数据队列通常是用于保存数据的队列。队列是运算受到限制的一种线性表,被写进队列中的数据通常遵循先进先出的规则。实践中,以车辆诊断设备为例,车辆诊断过程中,由于通常会不断地产生车辆日志数据,且产生车辆日志数据的速度通常要比对车辆日志数据进行存储的速度快。因此,通过将所产生的车辆日志数据写入数据队列中,可以实现及时对车辆日志数据进行可靠缓存。这样,车辆诊断设备无需时刻关注是否有新产生的车辆日志数据,可以节约车辆诊断设备的数据处理资源。

在本实施例中,数据存储方法的执行主体可以为各种智能化电子设备,如可以为图1所示的车辆诊断设备103。上述执行主体可以接收到日志数据,然后将所接收到的日志数据写入处于第一状态的数据队列。

步骤202,响应于处于第一状态的数据队列被写满,将处于第一状态的数据队列的状态修改为第二状态,以及将处于第三状态的数据队列的状态修改为第一状态。

其中,第二状态用于指示数据队列当前被写满,第三状态用于指示数据队列当前空闲。

在本实施例中,若处于第一状态的数据队列被写满,则上述执行主体可以将该被写满的数据队列的状态修改为用于指示该数据队列当前被写满的第二状态,以及将当前空闲的数据队列的状态修改为第一状态。这样,可以实现总是将所产生的日志数据存入当前处于第一状态的数据队列中。

举例来说,若有两个数据队列,其中一个为数据队列甲,另一个为数据队列乙。若某一时刻数据队列甲的状态为第一状态,且数据队列乙的状态为第三状态。则上述执行主体可以先将日志数据写入数据队列甲中。在数据队列甲被写满后,可以将数据队列甲的状态修改为第二状态,以及将数据队列乙的状态修改为第一状态。这样,上述执行主体可以将日志数据写入数据队列乙中。

步骤203,将处于第二状态的数据队列中的日志数据存储至目标日志文件。

其中,上述目标日志文件通常是用于存储日志数据的文件。实践中,上述目标日志文件的格式可以为文本格式。

在本实施例中,上述执行主体可以将当前被写满的数据队列中的日志数据存储至目标日志文件。

本实施例提供的方法,通过将实时产生的日志数据交替写入多个数据队列,可以实现在一个数据队列被写入当前时刻的日志数据时,另一个数据队列将上一时刻被写入的日志数据存储至目标日志文件,可以实现及时对日志数据进行存储,有助于提高对日志数据进行存储的存储效率。

在本实施例的一些可选的实现方式中,在将处于第二状态的数据队列中的日志数据存储至目标日志文件之后,还包括:

响应于处于第二状态的数据队列为空队列,将处于第二状态的数据队列的状态修改为第三状态。

这里,在处于第二状态的数据队列中的日志数据均被存入目标日志文件后,该处于第二状态的数据队列为空队列。此时,上述执行主体可以将该处于第二状态的数据队列的状态修改为第三状态。这样,在当前处于第一状态的数据队列被写满后,上述执行主体可以通过执行上述步骤202实现将该第三状态的数据队列修改为第一状态,以继续对新产生的日志数据进行缓存。从而进一步提高对日志数据进行存储的存储效率。

在本实施例的一些可选的实现方式中,上述将处于第二状态的数据队列中的日志数据存储至目标日志文件,包括:针对处于第二状态的数据队列中的日志数据,执行如下存储步骤:响应于该日志数据的大小小于或等于目标日志文件的剩余存储空间,将该日志数据存储至目标日志文件。响应于该日志数据的大小大于目标日志文件的剩余存储空间,将目标日志文件作为历史日志文件存入历史日志文件集合,创建新的日志文件,将该日志数据存储至新的日志文件;将新的日志文件确定为目标日志文件。

本实现方式中,将被写满的数据队列中的日志数据存储至目标日志文件时,可以对被写满的数据队列中的每个日志数据执行存储步骤。

具体地,若该日志数据的大小小于或等于目标日志文件的剩余存储空间,则表明目标日志文件可以存下该日志数据,此时,上述执行主体可以将该日志数据存储至目标日志文件。反之,若该日志数据的大小大于目标日志文件的剩余存储空间,则表明目标日志文件存不下该日志数据。此时,可以认为该目标日志文件已被存满,上述执行主体可以首先将该被存满的目标日志文件作为历史日志文件,存入历史日志文件集合。然后,创建一个新的用于存储日志数据的日志文件。之后,将该日志数据存储至新创建的日志文件,以及将新创建的日志文件确定为目标日志文件。这样,后续的日志数据可以存入该新确定的目标日志文件中,直至该新确定的目标日志文件被存满。需要指出的是,历史日志文件集合在缺省情况下为空集。

实践中,由于用于存储日志数据的存储资源有限,因此,通常对目标日志文件预设有最大存储量,如5M。本实现方式中,将日志数据存入目标日志文件时,对日志数据执行存储步骤,可以实现对日志数据的有效存储,有助于进一步提高对日志数据进行存储的存储效率。

上述实现方式中,上述将目标日志文件作为历史日志文件存入历史日志文件集合,包括:响应于历史日志文件集合中的历史日志文件的数目小于预设数目,将目标日志文件作为历史日志文件存入历史日志文件集合。

其中,上述预设数目可以为预先设定的数值。作为示例,上述预设数目可以为6。

这里,在将历史日志文件存入历史日志文件集合之前,上述执行主体可以先确定当前历史日志文件集合中的历史日志文件的数目。若所确定的数目小于预设数目,则上述执行主体可以将历史日志文件存入历史日志文件集合。实践中,系统自动创建的日志文件通常具有统一的名称,如,可以为run.log。将历史日志文件存入历史日志文件集合时,通常可以先采用当前时间对历史日志文件进行重命名。如,可以将该历史日志文件重命名为202011041520.log。然后,将该重命名的历史日志文件的名称存入名称的集合。之后,可以通过名称的集合中的名称找到对应的历史日志文件。

上述实现方式中,上述将目标日志文件作为历史日志文件存入历史日志文件集合,包括:响应于历史日志文件集合中的历史日志文件的数目大于或等于预设数目,删除历史日志文件集合中被最早存入的历史日志文件,以及将目标日志文件作为历史日志文件存入历史日志文件集合。

这里,在将历史日志文件存入历史日志文件集合之前,上述执行主体可以先确定当前历史日志文件集合中的历史日志文件的数目。若所确定的数目大于或等于预设数目,则上述执行主体可以先将历史日志文件集合中的被最早存入的历史日志文件删除,然后将当前需要被存入的历史日志文件存入历史日志文件集合。

本实现方式中,可以避免日志数据占用过多的存储资源。这样,有助于保障执行主体具有足够的资源执行其他任务,实现在保障执行主体对其他任务的执行速度的同时,提高对日志数据进行存储的存储效率。以车辆诊断设备为例,避免日志数据占用过多的存储资源,有助于保障车辆诊断设备具有足够的资源对车辆进行诊断。实现在保障车辆诊断设备的诊断速度的同时,提高对车辆日志数据进行存储的存储效率。

继续参考图3,为本申请实施例提供的一种数据存储方法的流程示意图,如图3所示的数据存储方法,包括:

步骤301,响应于接收到日志数据,将日志数据写入处于第一状态的数据队列。

其中,第一状态用于指示数据队列当前可用。

步骤302,响应于处于第一状态的数据队列被写满,将处于第一状态的数据队列的状态修改为第二状态,以及将处于第三状态的数据队列的状态修改为第一状态。

其中,第二状态用于指示数据队列当前被写满,第三状态用于指示数据队列当前空闲;

步骤303,将处于第二状态的数据队列中的日志数据存储至目标日志文件。

在本实施例中,步骤301-303的具体操作与图2所示的实施例中步骤201-203的操作基本相同,在此不再赘述。

步骤304,响应于满足预设数据导出条件,将目标日志文件作为历史日志文件存入历史日志文件集合,以及将历史日志文件集合向目标服务器发送,使得目标服务器对历史日志文件集合中各历史日志文件所存储的日志数据进行解析。

其中,上述数据导出条件可以是预先设定的各种条件。上述目标服务器可以是预先设定的服务器。

在本实施例中,在当前满足数据导出条件时,上述执行主体可以将目标日志文件作为历史日志文件存入历史日志文件集合。然后,可以将历史日志文件集合整个向目标服务器发送。这样,目标服务器可以对历史日志文件集合中的各历史日志文件中的日志数据进行解析。实践中,由于日志数据通常具有特定的格式,为了便于阅读,通常需要将日志数据进行解析。将对日志数据进行解析的操作由目标服务器执行,可以节约执行主体(如车辆诊断设备)的数据处理资源。

需要指出的是,由于向目标服务器发送历史日志文件集合通常需要消耗较多网络资源。本实施例只在满足数据导出条件的情况下,才执行将历史日志文件集合向目标服务器发送,可以节约网络资源。

可选地,若上述数据存储方法被应用于车辆诊断设备,则数据导出条件包括以下任意一项或多项:车辆诊断设备处于空闲状态。车辆诊断设备处于网络连接状态。

其中,车辆诊断设备处于空闲状态通常是指车辆诊断设备处于不执行车辆诊断的状态。

本实现方式中,在车辆诊断设备处于空闲状态和/或诊断设备处于网络连接状态下,才执行数据发送,可以不占用用于对车辆进行诊断的资源。有助于进一步实现在保障车辆诊断设备的诊断速度的同时,提高对日志数据进行存储的存储效率。

继续参考图4,为本申请实施例提供的数据存储方法的流程示意图。

如图4所示地,本实施例中的数据存储方法,可以包括步骤401-409。步骤401-409的执行主体可以为车辆诊断设备。

步骤401,初始化:定义单个日志文件的最大存储量,以及定义日志文件的最大数目。启动日志写线程,且日志写线程处于任务等待状态。

这里,可以定义单个日志文件的最大存储量为5M,以及定义日志文件的最大数目为6个。日志写线程为预先设定的用于将日志数据写入日志文件的程序。这里,日志数据可以为车辆日志数据。

步骤402,当前队列指针指向队列1。

这里,当前队列指针所指向的队列为处于第一状态的数据队列。

步骤403,判断队列1是否写满。若未写满,则执行步骤404。否则执行步骤405。

步骤404,将日志数据记录至队列1。

步骤405,将当前队列指针指向空闲队列2,将备份指针指向队列1,并将日志数据添加至队列2中。通知日志写线程。

这里,备份指针指向的队列为处于第二状态的数据队列。空闲队列为处于第三状态的数据队列。在处于第一状态的数据队列被写满时,上述执行主体可以将处于第一状态的数据队列的状态修改为第二状态,以及将当前处于第三状态的队列2的状态修改为第一状态。

步骤406,日志写线程将被写满的队列中的日志数据写入日志文件:判断当前备份指针所指向的队列是否为空。若不为空,则将当前备份指针所指向的队列中的数据写入日志文件。判断当前日志文件是否写满,未写满则继续写入,若写满则将当前日志文件保存,以及创建新的日志文件继续写入。

这里,日志写线程通常是将处于第二状态的数据队列中的日志数据写入目标日志文件。当一个目标日志文件被存满,可以创建新的日志文件作为目标日志文件进行继续存储。上述将当前日志文件保存通常是按当前时间对当前日志文件命名,然后将文件名保存至文件队列中。另外,将当前日志文件保存时,若文件队列中的文件名个数超过6个,则将文件队列头部最早的文件名从队列中删除,并将对应的日志文件删除。从而将当前日志文件存入。

步骤407,当队列2写满后,执行步骤402,以及将备份指针指向队列2,通知日志写线程,日志写线程通过执行步骤406将队列2中日志数据写入日志文件。

这里,在对车辆进行诊断过程中,通过多个数据队列交替被写入车辆日志数据,实现一个数据队列被写入当前时刻的车辆日志数据时,另一个数据队列将上一时刻被写入的车辆日志数据存储至目标日志文件,可以实现及时对车辆日志数据进行存储,有助于提高对车辆日志数据进行存储的存储效率。

步骤408,日志文件上传:车辆诊断设备初次上电联网后自动上传日志文件至服务器,将日志目录下所有日志文件压缩打包后,上传至服务器,上传成功后则删除日志文件,并重置文件队列个数为0。

这里,上述服务器为前述目标服务器。实践中,在车辆诊断设备初次上电,或者是诊断结束,以及处于与网络连接的情况下,可以将所有的日志文件发送至目标服务器。

步骤409,服务器对日志文件进行解析,用于后续数据分析。

这里,目标服务器可以对所接收的日志文件中的日志数据进行解析。实践中,可以是目标服务器在接收到用户终端发送的用于获取日志文件的请求后,将日志文件发送至用户终端。这样,可以实现用户终端对日志文件进行解析。

进一步参考图5,对应于上文实施例的数据存储方法,图5为本申请实施例提供的数据存储装置500的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。

参照图5,该装置包括:

数据接收单元501,用于响应于接收到日志数据,将日志数据写入处于第一状态的数据队列,其中,第一状态用于指示数据队列当前可用;

状态修改单元502,用于响应于处于第一状态的数据队列被写满,将处于第一状态的数据队列的状态修改为第二状态,以及将处于第三状态的数据队列的状态修改为第一状态,其中,第二状态用于指示数据队列当前被写满,第三状态用于指示数据队列当前空闲;

数据存储单元503,用于将处于第二状态的数据队列中的日志数据存储至目标日志文件。

在一个实施例中,在将处于第二状态的数据队列中的日志数据存储至目标日志文件之后,还包括:

响应于处于第二状态的数据队列为空队列,将处于第二状态的数据队列的状态修改为第三状态。

在一个实施例中,数据存储单元具体用于:

针对处于第二状态的数据队列中的日志数据,执行如下存储步骤:

响应于该日志数据的大小小于或等于目标日志文件的剩余存储空间,将该日志数据存储至目标日志文件;

响应于该日志数据的大小大于目标日志文件的剩余存储空间,将目标日志文件作为历史日志文件存入历史日志文件集合,创建新的日志文件,将该日志数据存储至新的日志文件;将新的日志文件确定为目标日志文件。

在一个实施例中,将目标日志文件作为历史日志文件存入历史日志文件集合,包括:

响应于历史日志文件集合中的历史日志文件的数目小于预设数目,将目标日志文件作为历史日志文件存入历史日志文件集合。

在一个实施例中,将目标日志文件作为历史日志文件存入历史日志文件集合,包括:

响应于历史日志文件集合中的历史日志文件的数目大于或等于预设数目,删除历史日志文件集合中被最早存入的历史日志文件,以及将目标日志文件作为历史日志文件存入历史日志文件集合。

在一个实施例中,历史日志文件集合用于存储历史时刻的目标日志文件,装置还包括数据导出单元,用于:

响应于满足预设数据导出条件,将目标日志文件作为历史日志文件存入历史日志文件集合,以及将历史日志文件集合向目标服务器发送,使得目标服务器对历史日志文件集合中各历史日志文件所存储的日志数据进行解析。

在一个实施例中,数据导出条件包括以下任意一项或多项:车辆诊断设备处于空闲状态,车辆诊断设备处于网络连接状态。

本实施例提供的装置,通过将实时产生的日志数据交替写入多个数据队列,可以实现在一个数据队列被写入当前时刻的日志数据时,另一个数据队列将上一时刻被写入的日志数据存储至目标日志文件,可以实现及时对日志数据进行存储,有助于提高对日志数据进行存储的存储效率。

需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。

进一步参考图6,图6为本申请一实施例提供的电子设备600的结构示意图。如图6所示,该实施例的电子设备600包括:至少一个处理器601(图6中仅示出一个处理器)、存储器602以及存储在存储器602中并可在至少一个处理器601上运行的计算机程序603,例如数据存储程序。处理器601执行计算机程序603时实现上述任意各个方法实施例中的步骤。处理器601执行计算机程序603时实现上述各个数据存储方法的实施例中的步骤。处理器601执行计算机程序603时实现上述各装置实施例中各模块/单元的功能,例如图5所示单元501至503的功能。

示例性的,计算机程序603可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器602中,并由处理器601执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序603在电子设备600中的执行过程。例如,计算机程序603可以被分割成数据接收单元,状态修改单元,数据存储单元,各单元具体功能在上述实施例中已有描述,此处不再赘述。

电子设备600可以是服务器、台式电脑、平板电脑、云端服务器和移动终端等计算设备。电子设备600可包括,但不仅限于,处理器601,存储器602。本领域技术人员可以理解,图6仅仅是电子设备600的示例,并不构成对电子设备600的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子设备还可以包括输入输出设备、网络接入设备、总线等。

所称处理器601可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器602可以是电子设备600的内部存储单元,例如电子设备600的硬盘或内存。存储器602也可以是电子设备600的外部存储设备,例如电子设备600上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。进一步地,存储器602还可以既包括电子设备600的内部存储单元也包括外部存储设备。存储器602用于存储计算机程序以及电子设备所需的其他程序和数据。存储器602还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的装置/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/电子设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

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

相关技术
  • 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质
  • 数据存储方法、数据校验方法、装置、设备及介质
技术分类

06120112423212