CN115905307A - 数据存储方法及装置、电子设备、存储介质 - Google Patents
数据存储方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN115905307A CN115905307A CN202211713316.6A CN202211713316A CN115905307A CN 115905307 A CN115905307 A CN 115905307A CN 202211713316 A CN202211713316 A CN 202211713316A CN 115905307 A CN115905307 A CN 115905307A
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- stored
- sector
- state information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的实施例公开了一种数据存储方法及装置、电子设备、存储介质,该方法包括:获取待存储数据所要存储到的目标存储扇区;基于目标存储扇区中已存储数据的状态信息,确定待存储数据在目标存储扇区中的目标存储位置;其中,状态信息用于表征已存储数据存储的状态情况;将待存储数据存储到目标存储扇区中的目标存储位置;对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新。本申请实施例的技术方案能够提高对存储数据的查找效率。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种数据存储方法及装置、电子设备、计算机可读存储介质。
背景技术
目前,电能表作为数据节点,每时每刻都会产生数据,并按照(时间戳+采集数据)的格式进行保存。电表产生的数据通常要保存1年,甚至3年。对于嵌入式系统来说,数据量较大。集抄系统在需要时会通过时间段的方式对存储的数据进行抄读,比如说,抄读2022/08/03 00:00:00到2022/08/04 00:00:00的数据。
目前的存储方案一般是在EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦写可编程只读存储器)里面保存FIFO(First Input First Output,先入先出队列)的指针,在DataFlash(数据闪存)里面保存数据,这种存储方案涉及两种存储介质。集抄系统在抄读时采用遍历的方式进行数据查找,目标的存储方案只能满足记录频率低,数据总量小的情况。在记录频率高,数据量大的情况下,会发生EEPROM写坏,查找效率低的问题。
发明内容
为解决上述技术问题,本申请的实施例提供了一种数据存储方法及装置、电子设备、计算机可读存储介质,旨在解决对存储的数据的查找效率低的技术问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种数据存储方法,包括:
获取待存储数据所要存储到的目标存储扇区;
基于目标存储扇区中已存储数据的状态信息,确定待存储数据在目标存储扇区中的目标存储位置;其中,状态信息用于表征已存储数据存储的状态情况;
将待存储数据存储到目标存储扇区中的目标存储位置;
对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新。
进一步地,获取待存储数据所要存储到的目标存储扇区,包括:
获取待存储数据对应的存储区域,存储区域包括多个存储扇区;
基于多个存储扇区中已存储数据的状态信息,从多个存储扇区中确定目标存储扇区。
进一步地,基于多个存储扇区中已存储数据的状态信息,从多个存储扇区中确定目标存储扇区,包括:
针对每个存储扇区,基于存储扇区中已存储数据的状态信息对存储扇区中的存储位置进行遍历;
基于遍历情况确定最新的已存储数据所在的存储扇区;
基于最新的已存储数据所在的存储扇区,从多个存储扇区中确定目标存储扇区。
进一步地,基于遍历情况确定最新的已存储数据所在的存储扇区,包括:
若遍历的存储扇区中最后一个存储位置的状态信息表征空值状态,则将最后一个存储位置的状态信息表征空值状态的存储扇区作为候选存储扇区;
检测候选存储扇区中是否存在存储位置的状态信息表征当前状态;
若存在,则将存储位置的状态信息表征当前状态的候选存储扇区作为最新的已存储数据所在的存储扇区;
若不存在,则将遍历的存储扇区中最后一个存储位置的状态信息表征当前状态的存储扇区作为最新的已存储数据所在的存储扇区。
进一步地,基于最新的已存储数据所在的存储扇区,从多个存储扇区中确定目标存储扇区,包括:
若最新的已存储数据所在的存储扇区中存在空闲的存储位置,则从多个存储扇区中确定最新的已存储数据所在的存储扇区为目标存储扇区;
若最新的已存储数据所在的存储扇区中不存在空闲的存储位置,则从多个存储扇区中确定最新的已存储数据所在的存储扇区对应的下一个相邻存储扇区为目标存储扇区。
进一步地,对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新,包括:
待存储数据存储到目标存储扇区中的目标存储位置后,作为目标存储扇区中最新的已存储数据,并将最新的已存储数据设置为表征当前状态的状态信息;以及
将最新的已存储数据相邻的上一个已存储数据由表征当前状态的状态信息更新为表征有效状态的状态信息。
进一步地,在对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新之后,方法还包括:
若接收到数据查询请求,则获取异常信息;其中,异常信息是存储待存储数据的过程中记录得到的;
基于异常信息对存储区域内的所存储数据进行分段处理;
在分段处理后的存储数据中查询与数据查询请求对应的目标数据。
根据本申请实施例的一个方面,提供了一种数据存储装置,包括:
获取模块,配置为获取待存储数据所要存储到的目标存储扇区;
确定模块,配置为基于目标存储扇区中已存储数据的状态信息,确定待存储数据在目标存储扇区中的目标存储位置;其中,状态信息用于表征已存储数据存储的状态情况;
存储模块,配置为将待存储数据存储到目标存储扇区中的目标存储位置;
更新模块,配置为对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如前所述的数据存储方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行如上所述的数据存储方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施例中提供的数据存储方法。
在本申请的实施例所提供的技术方案中,当产生待存储数据后,获取对应所想要存储的目标存储扇区,基于目标存储扇区中已存储数据的状态信息,确定出待存储数据在目标存储扇区中的目标存储位置,将待存储数据存储到对应的目标存储位置后,对已存储数据的状态信息进行更新,便于后续新的待存储数据进行存储。本申请通过根据已存储数据的状态信息确定出对应的存储位置,无需单独设置一个存储介质用于存放指针信息,减少了在另一个存储介质中写入数据的操作,提高了查找效率,同时能够支持更频繁的存储待存储数据,同时降低存储的复杂性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本申请涉及的一种实施环境的示意图;
图2是本申请涉及的一种数据存储方法的流程图;
图3是本申请涉及的一个实施例中步骤S210的流程图;
图4是本申请涉及的一个实施例中步骤S320的流程图;
图5是本申请涉及的一个实施例中步骤S420的流程图;
图6是本申请涉及的一个实施例中步骤S430的流程图;
图7是本申请涉及的一个实施例中步骤S240的流程图;
图8是本申请涉及的另一种数据存储方法的流程图;
图9是本申请涉及的另一种数据存储方法的流程图;
图10是本申请涉及的一个实施例中步骤S910的流程图;
图11是本申请涉及的一个实施例中步骤S910的流程图;
图12是本申请涉及的一个实施例中步骤S920的流程图;
图13是本申请涉及的一种数据存储装置的框图;
图14示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
还需要说明的是:在本申请中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参阅图1,图1是本申请涉及的一种实施环境的示意图。该实施环境包括电表110和服务器120,电表110和服务器120之间通过有线或者无线网络进行通信。
服务器120中存储有电表110所产生的待存储数据。电表110中作为数据节点,每时每刻都会产生待存储数据,按照(时间戳+采集数据)的格式保存在服务器中。服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器,本处不对此进行限制。
图2是根据一示例性实施例示出的一种数据存储方法的流程图。该方法可以应用于图1所示的实施环境,并由图1所示实施例环境中的服务器120具体执行。如图2所示,在一示例性实施例中,该数据存储方法可以包括步骤S210至步骤S240,详细介绍如下:
步骤S210,获取待存储数据所要存储到的目标存储扇区。
本申请实施例中,上述待存储数据包括由智能电表所产生的数据,待存储数据中包括对应的时间戳和具体的数据。每个待存储数据需存储到的对应的目标存储扇区sector中,当生成待存储数据后,获取对应的目标存储扇区。
在本申请的一示例性实施例中,请参阅图3,在步骤S210中获取待存储数据所要存储到的目标存储扇区,包括步骤S310和步骤S320,详细介绍如下:
步骤S310,获取待存储数据对应的存储区域,存储区域包括多个存储扇区。
本申请实施例中,预先设置有存储区域,如数据闪存Data Flash,存储区域中设置有多个存储扇区,多个存储扇区中可能存在已存储满数据的存储扇区,也包括什么数据都未存储的存储扇区,还包括存储部分数据的存储扇区。当产生待存储数据后,获取对应的存储区域。
步骤S320,基于多个存储扇区中已存储数据的状态信息,从多个存储扇区中确定目标存储扇区。
本申请实施例中,存储扇区中在存储进数据时,按照先入先出队列进行存储,对相应的已存储数据设置有对应的状态信息,根据已存储数据的状态信息能够确定出待存储数据将要存储到哪个存储扇区,将该存储扇区作为目标存储扇区。
在本申请的一示例性实施例中,请参阅图4,在步骤S320中基于多个存储扇区中已存储数据的状态信息,从多个存储扇区中确定目标存储扇区,包括步骤S410至步骤S430,详细介绍如下:
步骤S410,针对每个存储扇区,基于存储扇区中已存储数据的状态信息对存储扇区中的存储位置进行遍历。
本申请实施例中,每个存储扇区都设置有对应的存储位置,每个存储位置相应的具有对应的状态信息,存储位置上存储有数据时,其对应的状态信息与对应存储的数据的状态信息相同,而未存储数据的存储位置的状态信息则统一为空值状态Empty(FF)。对每个存储扇区进行遍历,基于已存储数据的状态信息对存储扇区中的存储位置进行遍历。
步骤S420,基于遍历情况确定最新的已存储数据所在的存储扇区。
本申请实施例中,在存储数据时,最新已存储的数据与之前已存储的数据所对应的状态信息不同,根据遍历的情况则可确定出的已存储数据所在的存储扇区。
在本申请的一示例性实施例中,请参阅图5,在步骤S420中基于遍历情况确定最新的已存储数据所在的存储扇区,包括步骤S510至步骤S540,详细介绍如下:
步骤S510,若遍历的存储扇区中最后一个存储位置的状态信息表征空值状态,则将最后一个存储位置的状态信息表征空值状态的存储扇区作为候选存储扇区。
本申请实施例中,对多个存储扇区遍历时,优先遍历存储扇区最后一个存储位置,若最后一个存储位置的状态信息为表征空值状态,则可确定出该存储扇区未存储数据或存储部分数据,将这些存储扇区作为候选存储扇区。
步骤S520,检测候选存储扇区中是否存在存储位置的状态信息表征当前状态。
本申请实施例中,遍历候选存储扇区中的各个存储位置的状态信息会否存在至少一个存储位置的状态信息为当前状态。
步骤S530,若存在,则将存储位置的状态信息表征当前状态的候选存储扇区作为最新的已存储数据所在的存储扇区。
本申请实施例中,若候选存储扇区中存在候选存储扇区的存储位置为当前状态,则将该候选存储扇区作为最新的已存储数据所在的存储扇区。
在本申请的另一实施例中,可能存在设备故障,进而导致在对已存储数据的状态信息进行更新时,未能完成对应的更新,导致存在由多个存储位置的状态信息为表征当前状态,当检测到存在至少两个存储位置的状态信息为表征当前状态,获取对应的存储位置所存储的已存储数据所对应的时间戳,确定时间戳最大的已存储数据为最新的已存储数据,即距离当前时间最近的已存储数据为最新的已存储数据。
步骤S540,若不存在,则将遍历的存储扇区中最后一个存储位置的状态信息表征当前状态的存储扇区作为最新的已存储数据所在的存储扇区。
本申请实施例中,若候选存储扇区中不存在候选存储扇区的存储位置为当前状态,表明最新的已存储数据恰好存储在某一个存储扇区的最后一个存储位置,则可将遍历的存储扇区中,最后一个存储位置的状态信息表征当前状态的存储扇区作为最新的已存储数据所在的存储扇区。
在存储待存储数据时,可直接选定一个第一个存储位置和最后一个存储位置的状态信息为空值状态的存储扇区作为目标存储扇区,也可预先对每个存储扇区进行编号,根据最新的已存储数据所在的存储扇区的编号,确定对应的下一个相邻存储扇区为目标存储扇区。进一步地,在存储数据时,按照先入先出队列进行存储,即先存储的数据中,某些数据可能会被删除,进而空余出某些存储扇区,在对存储扇区进行编号时,需要根据空余的存储扇区进行更新,如预先设置有五个存储扇区,这五个存储扇区中现有的编号依次为1-5,但经过数据处理,第一个存储扇区和第二个存储扇区的数据全部被删除,第三个存储扇区的部分数据被扇区,则对存储扇区的编号进行更新,将第三个存储扇区的编号设置为1,第四个存储扇区的编号设置为2,将第五个存储扇区的编号设置为3,第一个存储扇区的编号设置为4,第二个存储扇区的编号设置为5。
步骤S430,基于最新的已存储数据所在的存储扇区,从多个存储扇区中确定目标存储扇区。
本申请实施例中,基于最新的已存储数据所在的存储扇区,从多个存储扇区中确定目标存储扇区。
在本申请的一示例性实施例中,请参阅图6,在步骤S430中基于最新的已存储数据所在的存储扇区,从多个存储扇区中确定目标存储扇区,包括步骤S610和步骤S620,详细介绍如下:
步骤S610,若最新的已存储数据所在的存储扇区中存在空闲的存储位置,则从多个存储扇区中确定最新的已存储数据所在的存储扇区为目标存储扇区。
本申请实施例中,若最新的已存储数据所在的存储扇区中存在空闲的存储位置,即存在状态信息为空值的存储位置时,确定最新的已存储数据所在的存储扇区为目标存储扇区。
步骤S620,若最新的已存储数据所在的存储扇区中不存在空闲的存储位置,则从多个存储扇区中确定最新的已存储数据所在的存储扇区对应的下一个相邻存储扇区为目标存储扇区。
本申请实施例中,若最新的已存储数据所在的存储扇区中存在空闲的存储位置,即不存在状态信息为空值的存储位置时,则确定最新的已存储数据所在的存储扇区对应的下一个相邻存储扇区为目标存储扇区。
步骤S220,基于目标存储扇区中已存储数据的状态信息,确定待存储数据在目标存储扇区中的目标存储位置;其中,状态信息用于表征已存储数据存储的状态情况。
本申请实施例中,在目标存储扇区内,根据已存储数据的状态信息确定目标存储位置,具体的,当目标存储扇区内存储有已存储数据时,根据已存储数据的状态信息确定出目标存储位置,即将为表征当前状态的已存储数据的相邻的下一个存储位置作为目标存储位置,当目标存储扇区内未存储有已存储数据,则直接将目标存储扇区的第一个存储位置作为目标存储位置。
步骤S230,将待存储数据存储到目标存储扇区中的目标存储位置。
本申请实施例中,将待存储数据存储到目标存储扇区的目标存储位置上。
步骤S240,对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新。
本申请实施例中,将待存储数据存储到目标存储扇区的目标存储位置上后,待存储数据即可作为已存储数据,对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新,便于新的待存储数据进行存储。
本申请实施例中,当产生待存储数据后,获取对应所想要存储的目标存储扇区,基于目标存储扇区中已存储数据的状态信息,确定出待存储数据在目标存储扇区中的目标存储位置,将待存储数据存储到对应的目标存储位置后,对已存储数据的状态信息进行更新,便于后续新的待存储数据进行存储。本申请根据已存储数据的状态信息确定出对应的存储位置,无需单独设置一个存储介质用于存放指针信息,减少在另一个存储介质中写入数据的操作,能够支持更频繁的存储待存储数据,同时降低存储的复杂性。
在本申请的一示例性实施例中,请参阅图7,在步骤S240中对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新,包括步骤S710和步骤S720,详细介绍如下:
步骤S710,待存储数据存储到目标存储扇区中的目标存储位置后,作为目标存储扇区中最新的已存储数据,并将最新的已存储数据设置为表征当前状态的状态信息;以及
本申请实施例中,将待存储数据存储到目标存储位置后,即可作为最新的已存储数据,将最新的已存储数据设置为表征当前状态的状态信息。
步骤S720,将最新的已存储数据相邻的上一个已存储数据由表征当前状态的状态信息更新为表征有效状态的状态信息。
本申请实施例中,将相邻的上一个已存储数据,即上一个最新的已存储数据的状态信息有当前状态更新为有效状态Valid(66)。
在本申请的一示例性实施例中,请参阅图8,在步骤S240对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新之后,数据存储方法还包括步骤S810至步骤S830,详细介绍如下:
步骤S810,若接收到数据查询请求,则获取异常信息;其中,异常信息是存储待存储数据的过程中记录得到的。
本申请实施例中,每个待存储数据在存储到目标存储位置后,将待存储数据的时间戳与对应的相邻的上一个已存储数据的时间戳进行比较,若待存储数据的时间戳小于对应的相邻的上一个已存储数据的时间戳,则记录一次异常,将所有记录到的异常汇总成异常信息,异常信息中包括有异常次数和每一次异常所发生的位置。当接收到数据查询请求后,获取异常信息。本申请在待存储数据进行存储时,已经对应的时间戳进行检测,在一定程度上提高数据存储的可靠性和稳定性。
步骤S820,基于异常信息对存储区域内的所存储数据进行分段处理。
本申请实施例中,根据异常信息中的异常次数和每一次异常所发生的位置进行分段处理,即在每一次异常所对应的数据处进行分段处理,得到多段数据段。
步骤S830,在分段处理后的存储数据中查询与数据查询请求对应的目标数据。
本申请实施例中,所有的数据按照先入先出队列存储,存储区域内所存储数据的时间戳是按照从小到大排列的,故分段处理后的每个数据段的时间戳也是从小到大排列,因此每个数据段都可以采用二分法去查找该段有没有满足数据查询请求对应的查询时间范围的数据。本申请实施例中,通过二分法查找目标数据,在最坏情况下的时间复杂度为O(log n),其对应的效率优于遍历查询,在一定程度上提高电表抄读效率。
如图9所示,在一示例性实施例中,示出了一种数据存储方法的流程图。该数据存储方法可以包括步骤S910至步骤S960,详细介绍如下:
步骤S910,获取待存储数据,并基于存储区域内的已存储数据的状态信息确定待存储数据的存储信息。
本申请实施例中,当产生待存储数据后,基于存储区域内的已存储数据的状态信息确定出对应的存储信息,基于存储信息则可确定出待存储数据应该存储在哪个存储位置。
步骤S920,根据存储信息将待存储信息存储至存储区域对应的目标存储位置,并对存储所述待存储数据后的目标存储扇区中已存储数据的状态信息进行更新。
本申请实施例中,根据存储信息将待存储信息存储至目标存储位置,再将最新的已存储数据设置为表征当前状态的状态信息,将相邻的上一个已存储数据,即上一个最新的已存储数据的状态信息有当前状态更新为有效状态。
步骤S930,将最新的已存储数据的时间戳与对应的相邻的上一个已存储数据的时间戳进行比较。
本申请实施例中,将待存储数据存储至对应的目标存储位置时,即该待存储数据则可作为最新的已存储数据,将最新的已存储数据的时间戳与对应的相邻的上一个已存储数据的时间戳进行比较。
步骤S940,若最新的已存储数据的时间戳小于对应的相邻的上一个已存储数据的时间戳,生成异常事件,并汇总所有异常事件,得到异常信息。
本申请实施例中,在对数据进行存储时,是按照先入先出队列进行存储的,若最新的已存储数据的时间戳小于对应的相邻的上一个已存储数据的时间戳,表明存储时出现异常,将此处记录为一次异常事件,汇总所有的异常事件,得到异常信息。
步骤S950,若接收到数据查询请求,基于异常信息对存储区域内的所存储数据进行分段处理。
本申请实施例中,上述步骤S950与前述步骤S820的说明一致,在此不进行赘述。
步骤S960,在分段处理后的存储数据中查询与数据查询请求对应的目标数据。
本申请实施例中,上述步骤S960与前述步骤S830的说明一致,在此不进行赘述。
在本申请的一示例性实施例中,请参阅图10,存储信息包括表征尾指针的第一存储信息和表征头指针的第二存储信息,在步骤S910中基于存储区域内的已存储数据的状态信息确定待存储数据的存储信息,包括步骤S1010至步骤S1070,详细介绍如下:
步骤S1010,获取当前遍历的存储扇区的第一个存储位置的状态信息和最后一个存储位置的状态信息。
本申请实施例中,依次遍历各个存储扇区,获取当前遍历的存储扇区的第一个存储位置的状态信息和最后一个存储位置的状态信息。
步骤S1020,检测当前遍历的存储扇区的第一个存储位置的状态信息或最后一个存储位置的状态信息是否表征当前状态。
本申请实施例中,检测第一个存储位置的状态信息是否表征当前状态,若第一个存储位置的状态信息不表征当前状态,检测最后一个存储位置的状态信息是否表征当前状态。
步骤S1030,若是,将当前遍历的存储扇区作为候选存储扇区。
本申请实施例中,若第一个存储位置的状态信息或最后一个存储位置的状态信息表征当前状态,则将当前遍历的存储扇区作为候选存储扇区。
步骤S1040,若否,检测当前遍历的存储扇区的第一个存储位置的状态信息是否表征有效状态或最后一个存储位置的状态信息是否表征空值状态。
本申请实施例中,若第一个存储位置的状态信息或最后一个存储位置的状态信息均不表征当前状态,则检测第一个存储位置的状态信息是否表征有效状态,若第一个存储位置的状态信息不表征有效状态,再检测最后一个存储位置的状态信息是否表征空值状态。
步骤S1030,若是,将当前遍历的存储扇区作为候选存储扇区。
本申请实施例中,若第一个存储位置的状态信息表征有效状态或最后一个存储位置的状态信息表征空值状态,则将当前比那里的存储扇区作为候选存储扇区。
步骤S1050,检测当前遍历的存储扇区是否为最后一个存储扇区。
本申请实施例中,在遍历时,依据存储扇区对应的顺序进行遍历,检测当前遍历的存储扇区是否是最后一个存储扇区,即检测是否遍历完成。
步骤S1060,若否,跳转执行获取当前遍历的存储扇区的第一个存储位置的状态信息和最后一个存储位置的状态信息的步骤,直至当前遍历的存储扇区未最后一个存储扇区。
本申请实施例中,若当前遍历的存储扇区不是最后一个存储扇区,则重新遍历下一个存储扇区,直至遍历完所有的存储扇区。
步骤S1070,若是,根据候选存储扇区内的已存储数据的状态信息确定待存储数据的第一存储信息。
本申请实施例中,若当前遍历的存储扇区是最后一个存储扇区,则在所有候选存储扇区中遍历状态信息为当前状态的存储位置。若存在多个状态信息为当前状态的存储位置,确定时间戳最大的存储位置的相关信息作为第一存储信息,将待存储数据存储在时间戳最大的存储位置的相邻的下一个存储位置上。
在本申请的一示例性实施例中,请参阅图11,存储信息包括表征尾指针的第一存储信息和表征头指针的第二存储信息,在步骤S910中基于存储区域内的已存储数据的状态信息确定待存储数据的存储信息,包括步骤S1110至步骤S1160,详细介绍如下:
步骤S1110,获取当前遍历的存储扇区的第一个存储位置的状态信息和当前遍历的存储扇区的相邻的上一个存储扇区的最后一个存储位置的状态信息。
本申请实施例中,依次遍历各个存储扇区,获取当前遍历的存储扇区的第一个存储位置的状态信息和当前遍历的存储扇区的相邻的上一个存储扇区的最后一个存储位置的状态信息。
步骤S1120,检测当前遍历的存储扇区的第一个存储位置的状态信息是否表征有效状态或当前遍历的存储扇区的相邻的上一个存储扇区的最后一个存储位置的状态信息是否表征空值状态。
本申请实施例中,检测当前遍历的存储扇区的第一个存储位置的状态信息是否表征有效状态,若否,检测当前遍历的存储扇区的相邻的上一个存储扇区的最后一个存储位置的状态信息是否表征空值状态。
步骤S1130,若是,将当前遍历的存储扇区作为候选存储扇区。
本申请实施例中,若当前遍历的存储扇区的第一个存储位置的状态信息表征有效状态或当前遍历的存储扇区的相邻的上一个存储扇区的最后一个存储位置的状态信息表征空值状态,将当前遍历的存储扇区作为候选存储扇区。
步骤S1140,若否,检测当前遍历的存储扇区是否为最后一个存储扇区。
本申请实施例中,若当前遍历的存储扇区的第一个存储位置的状态信息不表征有效状态,当前遍历的存储扇区的相邻的上一个存储扇区的最后一个存储位置的状态信息不表征空值状态,依据存储扇区对应的顺序进行遍历,检测当前遍历的存储扇区是否是最后一个存储扇区,即检测是否遍历完成。
步骤S1150,若否,跳转执行获取当前遍历的存储扇区的第一个存储位置的状态信息和当前遍历的存储扇区的相邻的上一个存储扇区的最后一个存储位置的状态信息的步骤,直至当前遍历的存储扇区为最后一个存储扇区。
本申请实施例中,若当前遍历的存储扇区不是最后一个存储扇区,则重新遍历下一个存储扇区,直至遍历完所有的存储扇区。
步骤S1160,若是,根据候选存储扇区内的已存储数据的状态信息确定待存储数据的第二存储信息。
本申请实施例中,若当前遍历的存储扇区是最后一个存储扇区,则在所有候选存储扇区中遍历第一个存储有数据的存储位置的状态信息为有效状态的存储位置。若存在多个第一个存储有数据的存储位置的状态信息为有效状态的存储位置,确定时间戳最小的存储位置的相关信息作为第二存储信息。
在本申请的一示例性实施例中,请参阅图12,在步骤S920中根据存储信息将待存储信息存储至存储区域对应的目标存储位置,并对存储所述待存储数据后的目标存储扇区中已存储数据的状态信息进行更新,包括步骤S1210至步骤S1240,详细介绍如下:
步骤S1210,根据存储信息检测最新的已存储数据所在的存储扇区是否存在空闲的存储位置。
本申请实施例中,根据存储信息检测最新的已存储数据所在的存储扇区是否存在空闲的存储位置,即检测是否跨存储扇区进行存储。
步骤S1220,若不存在,擦除最新的已存储数据所在的存储扇区相邻的下一个存储扇区,并将待存储数据存储已擦除的存储扇区的第一个存储位置。
本申请实施例中,若存储有最新的已存储数据所在的存储扇区中不存在空闲的存储位置,则需要重新提供一个存储扇区用于存储待存储数据。
步骤S1230,若存在,将待存储数据存储在最新的已存储数据所对应的存储位置的相邻的下一个存储位置。
本申请实施例中,若存储有最新的已存储数据所在的存储扇区中存在空闲的存储位置,则直接将待存储数据存储至最新的已存储数据所对应的存储位置的相邻的下一个存储位置。
步骤S1240,将待存储数据作为最新的已存储数据,将最新的已存储数据设置为表征当前状态的状态信息,将最新的已存储数据相邻的上一个已存储数据由表征当前状态的状态信息更新为表征有效状态的状态信息。
本申请实施例中,将存储完成的待存储数据作为最新的已存储数据,并将最新的已存储数据的状态信息设置为表征当前状态,并将最新的已存储数据相邻的上一个已存储数据由表征当前状态的状态信息更新为表征有效状态的状态信息。
在本申请的一个示例性实施例中,请参阅图13,图13是根据一示例性实施例示出的一种数据存储装置,包括:
获取模块1310,配置为获取待存储数据所要存储到的目标存储扇区;
确定模块1320,配置为基于目标存储扇区中已存储数据的状态信息,确定待存储数据在目标存储扇区中的目标存储位置;其中,状态信息用于表征已存储数据存储的状态情况;
存储模块1330,配置为将待存储数据存储到目标存储扇区中的目标存储位置;
更新模块1340,配置为对存储待存储数据后的目标存储扇区中已存储数据的状态信息进行更新。
在本申请的一个示例性实施例中,存储模块1330,包括:
获取子模块,配置为获取待存储数据对应的存储区域,存储区域包括多个存储扇区;
确定子模块,配置为基于多个存储扇区中已存储数据的状态信息,从多个存储扇区中确定目标存储扇区。
在本申请的一个示例性实施例中,确定子模块,包括:
遍历单元,配置为针对每个存储扇区,基于存储扇区中已存储数据的状态信息对存储扇区中的存储位置进行遍历;
第一确定单元,配置为基于遍历情况确定最新的已存储数据所在的存储扇区;
第二确定单元,配置为基于最新的已存储数据所在的存储扇区,从多个存储扇区中确定目标存储扇区。
在本申请的一个示例性实施例中,第一确定单元,包括:
第一作为子单元,配置为若遍历的存储扇区中最后一个存储位置的状态信息表征空值状态,则将最后一个存储位置的状态信息表征空值状态的存储扇区作为候选存储扇区;
检测子单元,配置为检测候选存储扇区中是否存在存储位置的状态信息表征当前状态;
第二作为子单元,配置为若存在,则将存储位置的状态信息表征当前状态的候选存储扇区作为最新的已存储数据所在的存储扇区;
第三作为子单元,配置为若不存在,则将遍历的存储扇区中最后一个存储位置的状态信息表征当前状态的存储扇区作为最新的已存储数据所在的存储扇区。
在本申请的一个示例性实施例中,第二确定单元,包括:
第一确定子单元,配置为若最新的已存储数据所在的存储扇区中存在空闲的存储位置,则从多个存储扇区中确定最新的已存储数据所在的存储扇区为目标存储扇区;
第二确定子单元,配置为若最新的已存储数据所在的存储扇区中不存在空闲的存储位置,则从多个存储扇区中确定最新的已存储数据所在的存储扇区对应的下一个相邻存储扇区为目标存储扇区。
在本申请的一个示例性实施例中,更新模块1340,包括:
设置子模块,配置为待存储数据存储到目标存储扇区中的目标存储位置后,作为目标存储扇区中最新的已存储数据,并将最新的已存储数据设置为表征当前状态的状态信息;以及
更新子模块,配置为将最新的已存储数据相邻的上一个已存储数据由表征当前状态的状态信息更新为表征有效状态的状态信息。
在本申请的一个示例性实施例中,数据存储装置,还包括:
获取异常信息模块,配置为若接收到数据查询请求,则获取异常信息;其中,异常信息是存储待存储数据的过程中记录得到的;
分段处理模块,配置为基于异常信息对存储区域内的所存储数据进行分段处理;
查询模块,配置为在分段处理后的存储数据中查询与数据查询请求对应的目标数据。
需要说明的是,上述实施例所提供的数据存储装置与上述实施例所提供的数据存储方法属于同一构思,其中各个模块、子模块、单元和子单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
本申请的实施例还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现上述各个实施例中提供的数据存储方法。
图14示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图14示出的电子设备的计算机系统1400仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图14所示,计算机系统1400包括中央处理单元(Central Processing Unit,CPU)1401,其可以根据存储在只读存储器(Read-Only Memory,ROM)1402中的程序或者从储存部分1408加载到随机访问存储器(Random Access Memory,RAM)1403中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1403中,还存储有系统操作所需的各种程序和数据。CPU 1401、ROM 1402以及RAM 1403通过总线1404彼此相连。输入/输出(Input/Output,I/O)接口1405也连接至总线1404。
以下部件连接至I/O接口1405:包括键盘、鼠标等的输入部分1406;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1407;包括硬盘等的储存部分1408;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1409。通信部分1409经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至I/O接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入储存部分1408。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1409从网络上被下载和安装,和/或从可拆卸介质1411被安装。在该计算机程序被中央处理单元(CPU)1401执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本申请的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前所述的方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的方法。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术人员根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
获取待存储数据所要存储到的目标存储扇区;
基于所述目标存储扇区中已存储数据的状态信息,确定所述待存储数据在所述目标存储扇区中的目标存储位置;其中,所述状态信息用于表征所述已存储数据存储的状态情况;
将所述待存储数据存储到所述目标存储扇区中的目标存储位置;
对存储所述待存储数据后的目标存储扇区中已存储数据的状态信息进行更新。
2.如权利要求1所述的方法,其特征在于,所述获取待存储数据所要存储到的目标存储扇区,包括:
获取所述待存储数据对应的存储区域,所述存储区域包括多个存储扇区;
基于所述多个存储扇区中已存储数据的状态信息,从所述多个存储扇区中确定所述目标存储扇区。
3.如权利要求2所述的方法,其特征在于,所述基于所述多个存储扇区中已存储数据的状态信息,从所述多个存储扇区中确定所述目标存储扇区,包括:
针对每个存储扇区,基于存储扇区中已存储数据的状态信息对所述存储扇区中的存储位置进行遍历;
基于遍历情况确定最新的已存储数据所在的存储扇区;
基于所述最新的已存储数据所在的存储扇区,从所述多个存储扇区中确定所述目标存储扇区。
4.如权利要求3所述的方法,其特征在于,所述基于遍历情况确定最新的已存储数据所在的存储扇区,包括:
若遍历的存储扇区中最后一个存储位置的状态信息表征空值状态,则将所述最后一个存储位置的状态信息表征空值状态的存储扇区作为候选存储扇区;
检测所述候选存储扇区中是否存在存储位置的状态信息表征当前状态;
若存在,则将存储位置的状态信息表征当前状态的候选存储扇区作为最新的已存储数据所在的存储扇区;
若不存在,则将遍历的存储扇区中最后一个存储位置的状态信息表征当前状态的存储扇区作为最新的已存储数据所在的存储扇区。
5.如权利要求3所述的方法,其特征在于,所述基于所述最新的已存储数据所在的存储扇区,从所述多个存储扇区中确定所述目标存储扇区,包括:
若最新的已存储数据所在的存储扇区中存在空闲的存储位置,则从所述多个存储扇区中确定所述最新的已存储数据所在的存储扇区为所述目标存储扇区;
若最新的已存储数据所在的存储扇区中不存在空闲的存储位置,则从所述多个存储扇区中确定所述最新的已存储数据所在的存储扇区对应的下一个相邻存储扇区为所述目标存储扇区。
6.如权利要求1至5中任一项所述的方法,其特征在于,所述对存储所述待存储数据后的目标存储扇区中已存储数据的状态信息进行更新,包括:
所述待存储数据存储到所述目标存储扇区中的目标存储位置后,作为所述目标存储扇区中最新的已存储数据,并将所述最新的已存储数据设置为表征当前状态的状态信息;以及
将所述最新的已存储数据相邻的上一个已存储数据由表征当前状态的状态信息更新为表征有效状态的状态信息。
7.如权利要求1至5中任一项所述的方法,其特征在于,在所述对存储所述待存储数据后的目标存储扇区中已存储数据的状态信息进行更新之后,所述方法还包括:
若接收到数据查询请求,则获取异常信息;其中,所述异常信息是存储所述待存储数据的过程中记录得到的;
基于所述异常信息对存储区域内的所存储数据进行分段处理;
在分段处理后的存储数据中查询与所述数据查询请求对应的目标数据。
8.一种数据存储装置,其特征在于,包括:
获取模块,配置为获取待存储数据所要存储到的目标存储扇区;
确定模块,配置为基于所述目标存储扇区中已存储数据的状态信息,确定所述待存储数据在所述目标存储扇区中的目标存储位置;其中,所述状态信息用于表征所述已存储数据存储的状态情况;
存储模块,配置为将所述待存储数据存储到所述目标存储扇区中的目标存储位置;
更新模块,配置为对存储所述待存储数据后的目标存储扇区中已存储数据的状态信息进行更新。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1至7中任一项所述的数据存储方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1至7中任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211713316.6A CN115905307A (zh) | 2022-12-29 | 2022-12-29 | 数据存储方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211713316.6A CN115905307A (zh) | 2022-12-29 | 2022-12-29 | 数据存储方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115905307A true CN115905307A (zh) | 2023-04-04 |
Family
ID=86496967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211713316.6A Pending CN115905307A (zh) | 2022-12-29 | 2022-12-29 | 数据存储方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115905307A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116149577A (zh) * | 2023-04-24 | 2023-05-23 | 杭州炬华科技股份有限公司 | 基于轮转池的数据处理方法、系统和可读存储介质 |
-
2022
- 2022-12-29 CN CN202211713316.6A patent/CN115905307A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116149577A (zh) * | 2023-04-24 | 2023-05-23 | 杭州炬华科技股份有限公司 | 基于轮转池的数据处理方法、系统和可读存储介质 |
CN116149577B (zh) * | 2023-04-24 | 2023-07-07 | 杭州炬华科技股份有限公司 | 基于轮转池的数据处理方法、系统和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851209B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN110019213A (zh) | 数据管理方法、装置、电子设备及存储介质 | |
CN107368513B (zh) | 客户端数据库更新的方法及装置 | |
CN111752945A (zh) | 一种基于容器和层次模型的时序数据库数据交互方法和系统 | |
CN115905307A (zh) | 数据存储方法及装置、电子设备、存储介质 | |
CN114676444A (zh) | 一种基于区块链的存储系统 | |
CN115509848A (zh) | 日志分析方法、装置、电子设备和存储介质 | |
CN112965943A (zh) | 一种数据处理方法、装置、电子设备以及存储介质 | |
CN113094415B (zh) | 数据抽取方法、装置、计算机可读介质及电子设备 | |
CN113761052A (zh) | 数据库同步方法和装置 | |
CN109739883B (zh) | 提升数据查询性能的方法、装置和电子设备 | |
CN111125226A (zh) | 一种配置数据采集方法及装置 | |
CN114185659A (zh) | 一种任务恢复方法、装置、电子设备及存储介质 | |
CN110321435B (zh) | 一种数据源划分方法、装置、设备和存储介质 | |
CN113760876A (zh) | 一种数据过滤方法和装置 | |
CN110929207B (zh) | 数据处理方法、装置和计算机可读存储介质 | |
US20210081370A1 (en) | Method, device and computer program product for event ordering | |
CN114116253A (zh) | 一种消息队列的消息处理方法及系统 | |
CN116107801A (zh) | 交易处理方法及相关产品 | |
CN109710673B (zh) | 作品处理方法、装置、设备和介质 | |
US20240202197A1 (en) | Distributed data storage using materialized intermediate partitions | |
CN109165208A (zh) | 一种用于将数据加载到数据库中的方法及系统 | |
CN114153830B (zh) | 数据验证方法及其装置、计算机存储介质、电子设备 | |
CN117349388B (zh) | 数据时效性确定方法、电子设备 | |
CN111399841B (zh) | 基于区块链的代码处理方法、装置、存储介质与电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |