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

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

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


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

技术领域

本申请涉及数据存储技术领域,具体涉及一种数据存储方法、装置、设备及系统、存储介质。

背景技术

关系型数据库的重要特点有长事务、实时性,但面对海量数据时不能使用长事务,同时,实时性也会随着数据量的增多而越来越差。

目前的通行做法是将数据以文档结构形式存储在磁盘上,通过先写入磁盘然后再读取的方式满足业务需求。然而,数据写入内存后再转储到磁盘中,若发生宕机或断电等异常情况,即使有UPS应急电源的情况下数据依然会存在丢失风险;并且,数据写入磁盘后才能进行数据的查询,如果数据量较大,则查询时效性较低。

发明内容

有鉴于此,本申请的目的在于克服现有技术的不足,提供一种数据存储方法、装置、设备及系统、存储介质。

为实现以上目的,本申请采用如下技术方案:

本申请的第一方面提供一种数据存储方法,包括:

将新增数据加载到内存中进行缓存;

检测所述内存中的缓存数据是否达到预设条件,若所述内存中的缓存数据达到预设条件,利用所述缓存数据生成一个数据段;

将所述数据段的段信息写入事务日志中,将所述事务日志写入磁盘;

将所述数据段缓存到文件缓存系统中,按照预设写入策略,将所述文件缓存系统中的所述数据段写入到磁盘中进行存储,并同步标记写入状态到所述事务日志。

可选的,所述将所述文件缓存系统中的所述数据段写入到磁盘中进行存储之后,所述方法还包括:

在所述事务日志上标记所述数据段的写入已完成后,清除所述内存中已写入的所述数据段的内存区域。

可选的,所述将所述文件缓存系统中的所述数据段写入到磁盘中并存储之后,还包括:

基于所述磁盘中已完成写入的所述数据段,生成对应的提交点信息;

所述将所述文件缓存系统中的所述数据段写入到磁盘中进行存储,包括:

基于上一次写入的数据段的提交点信息,确定本次写入所述磁盘的位置;

基于本次写入所述磁盘的位置,将所述数据段写入到磁盘中并存储。

可选的,所述清除所述内存中已写入的所述数据段的内存区域之后,所述方法还包括:

通知数据源处理后续数据。

可选的,所述段信息包括:所述数据段中数据的起始位置、数据段的名称和数据段的位置。

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

加载模块,用于将新增数据加载到内存中进行缓存;

生成模块,用于检测所述内存中的缓存数据是否达到预设条件,若所述内存中的缓存数据达到预设条件,利用所述缓存数据生成一个数据段;

第一写入模块,用于将所述数据段的段信息写入事务日志中,将所述事务日志写入磁盘;

第二写入模块,用于将所述数据段缓存到文件缓存系统中,按照预设写入策略,将所述文件缓存系统中的所述数据段写入到磁盘中进行存储,并同步标记写入状态到所述事务日志。

可选的,还包括清除模块,所述清除模块用于:

在所述事务日志上标记所述数据段的写入已完成后,清除所述内存中已写入的所述数据段的内存区域。

本申请的第三方面提供一种数据存储设备,包括:

处理器,以及与所述处理器相连接的存储器;

所述存储器用于存储计算机程序;

所述处理器用于调用并执行所述存储器中的所述计算机程序,以执行如本申请的第一方面所述的方法。

本申请的第四方面提供一种数据存储系统,包括如本申请的第三方面所述的数据存储设备。

本申请的第五方面提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如本申请的第一方面所述的数据存储方法的各个步骤。

本申请提供的技术方案可以包括以下有益效果:

本申请的方案中,在将新增数据加载到内存中缓存后,通过检测内存中的缓存数据是否达到预设条件,可以将新增数据按照一定的策略拆分成数据段,同时,将生成的数据段的段信息写入到事务日志中,用于记录内存中未完全写入磁盘的数据,并将事务日志写入到磁盘中。在确定事务日志写入成功后,将数据段缓存到文件缓存系统中,并按照预设写入策略,将文件缓存系统中的数据段写入到磁盘中进行存储,同时,同步标记写入状态到事务日志中。如此,利用事务日志记录数据的写入状态,可以用于作为宕机或者断电情况下的数据恢复的依据,避免了写入过程中数据丢失的风险;将新增数据以数据段的形式写入磁盘,保证了海量数据写入的稳定性,大大提升了数据的读写性能,并且,结合预设写入策略,实现了海量数据的近实时搜索,为用户提供了很大的便利。

附图说明

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

图1是本申请一个实施例提供的一种数据存储方法的流程图。

图2是本申请另一个实施例提供的一种数据存储装置的结构示意图。

图3是本申请另一个实施例提供的一种数据存储设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将对本申请的技术方案进行详细的描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本申请所保护的范围。

参见图1是本申请一个实施例提供的一种数据存储方法的流程图。本申请的实施例提供一种数据存储方法,如图所示,该方法具体可以包括如下步骤:

步骤11、将新增数据加载到内存中进行缓存。

步骤12、检测内存中的缓存数据是否达到预设条件,若内存中的缓存数据达到预设条件,利用缓存数据生成一个数据段。

其中,预设条件可以根据实际需求进行设定。例如,预设条件可以是默认的一个时间点或者是内存数据到达一定量。

数据段为数据文件的子文件,具有不变性,一旦数据段被写入到磁盘,就不可再修改。对缓存数据采用分段存储的方式,可以使其在读写时大体上避免锁的出现,可以有效提升读写性能。

具体实施时,当内存中的新增数据达到一个默认的时间点比如1秒钟,或者内存数据到达一定量时,会触发一次数据刷新,以将内存中的数据生成一个新的数据段。

步骤13、将数据段的段信息写入事务日志中,将事务日志写入磁盘。

数据段的段信息可以包括:数据段中数据的起始位置、数据段的名称和数据段的位置。

实施时,事务日志用于记录所有还没有持久化到磁盘中的数据,通过这种方式,可以在宕机或者断电后,服务器重启时,使系统可以根据事务日志中的记录把未持久化的数据重新持久化到磁盘中,避免数据丢失的可能。

步骤14、将数据段缓存到文件缓存系统中,按照预设写入策略,将文件缓存系统中的数据段写入到磁盘中进行存储,并同步标记写入状态到事务日志。

其中,预设写入策略可以根据实际需求进行设定,此处不作限定。

实施过程中,每当有数据段被缓存到文件缓存系统中后,都会按照预设写入策略被刷新到磁盘中,例如,预设写入策略是每秒钟刷新一次,那么新增到文件缓存系统中的数据段都会在一秒后被写入到磁盘中,事务日志同步记录数据段的写入状态,以确保数据段最终被完全写入到磁盘中。

本实施例中,在将新增数据加载到内存中缓存后,通过检测内存中的缓存数据是否达到预设条件,可以将新增数据按照一定的策略拆分成数据段,同时,将生成的数据段的段信息写入到事务日志中,用于记录内存中未完全写入磁盘的数据,并将事务日志写入到磁盘中。在确定事务日志写入成功后,将数据段缓存到文件缓存系统中,并按照预设写入策略,将文件缓存系统中的数据段写入到磁盘中进行存储,同时,同步标记写入状态到事务日志中。如此,利用事务日志记录数据的写入状态,用于作为宕机或者断电情况下的数据恢复依据,避免了写入过程中数据丢失的风险;将新增数据以数据段的形式写入磁盘,保证了海量数据写入的稳定性,大大提升了数据的读写性能,并且,结合预设写入策略,实现了海量数据的近实时搜索,为用户提供了很大的便利。

当数据段从文件缓存到磁盘后,待写入磁盘的数据信息会进行清除避免长时间占用空间导致数据溢出(待写入磁盘的段数据会被标记为不可查询);当成功写入段数据后,将写入的数据重新缓存到文件缓存中,并标记其可以提供查询使用(重新写入磁盘的段数据会被标记为可提供查询)。

在将文件缓存系统中的数据段写入到磁盘后,会返回磁盘写入状态给文件缓存系统,并标记写入结果,以确保数据段已被完全写入。若数据段没有被完全写入,则基于事务日志,将文件缓存系统中没有写入的部分再次进行写入,直至数据段被完全写入到磁盘中。

一些实施例中,为了节省内存空间,在将文件缓存系统中的数据段写入到磁盘中进行存储之后,数据存储方法还可以包括:在事务日志上标记数据段的写入已完成后,清除内存中已写入的数据段的内存区域,为后续新增数据的进入提供空间资源。

在清除了内存中已写入的数据段的内存区域之后,就可以通知数据源处理后续的数据,以使得数据源中的待处理数据被加载到内存中,再次按序被写入到磁盘里。

一些实施例中,在数据段被写入到磁盘中后,会生成一个与数据段对应的提交点信息,该提交点信息是记录该数据段的段信息的文件,即记录当前事务日志记录的写入位置。并且,一个数据段一旦拥有了提交点信息,就说明这个数据段只有读的权限,失去了写的权限。相反,当数据段还在内存中时,就只有写的权限,没有读的权限。

相应的,在将文件缓存系统中的数据段写入到磁盘中进行存储时,可以基于上一次写入的数据段的提交点信息,确定本次数据段应该写入到磁盘中的写入位置。如此,根据确定的本次应该写入到磁盘中的写入位置,就可以将数据段写入到磁盘中,确保了数据的有效写入。

本申请的实施例提供一种数据存储装置,如图2所示,该装置具体可以包括:加载模块201,用于将新增数据加载到内存中进行缓存;生成模块202,用于检测内存中的缓存数据是否达到预设条件,若内存中的缓存数据达到预设条件,利用缓存数据生成一个数据段;第一写入模块203,用于将数据段的段信息写入事务日志中,将事务日志写入磁盘;第二写入模块204,用于将数据段缓存到文件缓存系统中,按照预设写入策略,将文件缓存系统中的数据段写入到磁盘中进行存储,并同步标记写入状态到事务日志。

可选的,数据存储装置还可以包括清除模块,清除模块具体可以用于:在事务日志上标记数据段的写入已完成后,清除内存中已写入的数据段的内存区域。

可选的,数据存储装置还可以包括生成模块,生成模块具体可以用于:基于磁盘中已完成写入的数据段,生成对应的提交点信息。

相应的,将文件缓存系统中的数据段写入到磁盘中并存储,第二写入模块,具体可以用于:基于上一次写入的数据段的提交点信息,确定本次写入磁盘的位置;基于本次写入磁盘的位置,将数据段写入到磁盘中并存储。

可选的,数据存储装置还可以包括通知模块,通知模块具体可以用于:通知数据源处理后续数据。

本实施例提供的数据存储装置的具体实现方式可以参考以上任意实施例所述的数据存储方法的具体实现方式,此处不再赘述。

本申请的实施例提供一种数据存储设备,如图3所示,该数据存储装置具体可以包括:处理器301,以及与处理器301相连接的存储器302;存储器302用于存储计算机程序;处理器301用于调用并执行存储器302中的计算机程序,以执行如以上任意实施例所述的数据存储方法。

本实施例提供的数据存储设备的具体实现方式可以参考以上任意实施例所述的数据存储方法的具体实现方式,此处不再赘述。

本申请的实施例提供一种数据存储系统,包括如以上任意实施例所述的数据存储设备。

本申请的实施例提供一种存储介质,该存储介质存储有计算机程序,计算机程序被处理器执行时,实现如以上任意实施例所述的数据存储方法的各个步骤。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

相关技术
  • 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质
  • 一种基于大数据的数据存储方法、系统、设备及存储介质
技术分类

06120112390179