CN111221474A - 一种数据的存储方法、装置、设备和存储介质 - Google Patents

一种数据的存储方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN111221474A
CN111221474A CN202010003246.XA CN202010003246A CN111221474A CN 111221474 A CN111221474 A CN 111221474A CN 202010003246 A CN202010003246 A CN 202010003246A CN 111221474 A CN111221474 A CN 111221474A
Authority
CN
China
Prior art keywords
data
area
state
region
written
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.)
Granted
Application number
CN202010003246.XA
Other languages
English (en)
Other versions
CN111221474B (zh
Inventor
陈慕仪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202010003246.XA priority Critical patent/CN111221474B/zh
Publication of CN111221474A publication Critical patent/CN111221474A/zh
Application granted granted Critical
Publication of CN111221474B publication Critical patent/CN111221474B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据的存储方法、装置、设备和存储介质。通过接收数据;启动写操作,写操作用于将数据写入用于临时存储的数据区域,数据区域位于第一区域;若数据全部写入数据区域,将第一区域的状态从无使用状态修改为未拷贝状态;根据未拷贝状态,将数据从第一区域中迁移至第二区域。实现了在第一区域的数据区域中对数据临时存储完毕后,再将数据从第一区域拷贝到第二区域的效果,由于增加了对第一区域中数据完整性的判断,从而避免了不完整的数据进入持久化存储的第二区域,达到了对第二区域的数据进行保护的有益效果。

Description

一种数据的存储方法、装置、设备和存储介质
技术领域
本发明实施例涉及数据存储技术,尤其涉及一种数据的存储方法、装置、设备和存储介质。
背景技术
目前,随着互联网的普及与发展,有越来越多的数据需要被处理,同时对处理的要求也越来越高。对于一些网站运营商而言,每天可能需要面对极大的数据,随着数据量的增大,对数据的稳定存储、快速读取的要求也越来越高。
数据会存储在一个数据库中,当数据发生变化时,会对数据进行修改。通常,会将一次需要修改的多条数据打包为数据集合,将该数据集合发送至数据库,以使数据库中的数据被批量修改。但是,若在修改的过程中,发生宕机等突发事件,那么会导致数据集合中的部分数据被写入数据库,在突发事件解决后继续加载数据集合时会发生无法预知的结果。
发明内容
本发明提供一种数据的存储方法、装置、设备和存储介质,以解决数据集合中的部分数据被写入数据库中导致的无法预知的结果的问题。
第一方面,本发明实施例提供了一种数据的存储方法,存储区域包括第一区域和第二区域,所述第一区域包括至少两个数据区域,所述第二区域用于持久化存储,所述方法包括:
接收数据;
启动写操作,所述写操作用于将所述数据写入用于临时存储的数据区域,所述数据区域位于第一区域;
若所述数据全部写入所述数据区域,将所述第一区域的状态从无使用状态修改为未拷贝状态;
根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域。
在此基础上,所述第一区域还包括编号区域;
所述启动写操作,包括:
从所述编号区域中、读取所述数据区域的编号;
逐条将所述数据写入所述编号所属的数据区域中;
当所述数据区域的空间被所述数据全部占用时,修改所述编号区域中的所述编号。
在此基础上,所述逐条将所述数据写入所述编号所属的数据区域中,包括:
确定所述编号所属数据区域中可使用的空间;
确定当前待写入的数据的体积;
当所述可使用的空间大于或等于所述体积时,将所述数据写入所述数据区域。
在此基础上,所述数据区域包括字节数区域、地址区域和值区域;
所述逐条将所述数据写入所述编号所属的数据区域中,包括:
确定当前待写入的数据在写入过程中修改的字节数;
确定写入所述当前待写入的数据的相对存储地址;
将所述相对存储地址写入所述地址区域、将所述修改的字节数写入所述字节数区域、将所述当前待写入的数据写入所述值区域中。
在此基础上,所述第一区域还包括计数器;
所述逐条将所述数据写入所述编号所属的数据区域中之后,还包括:
从第一区域中确定所述计数器;
在所述计数器当前的数值基础上加一。
在此基础上,所述第一区域还包括计数器,所述计数器用于表示所述第一区域中存储的数据的数量;
所述启动写操作之后,还包括:
读取所述计数器的数值;
当所述数据的数量与所述计数器的数值相同时,确定所述数据已经全部写入所述数据区域。
在此基础上,还包括:
在所述接收数据的操作中断、且所述数据未全部写入所述数据区域的情况下,确定所述数据的类型;
当所述数据的类型为关联类型时,清空所述数据区域,所述关联类型的数据全部同时被执行;
当所述数据的类型为非关联类型时,将所述数据区域中已写入的部分所述数据拷贝至所述第二区域,所述非关联类型的数据部分被执行。
在此基础上,所述第一区域中包括数据的相对存储地址、修改的字节数;
所述根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域,包括:
确定所述第一区域的状态为未拷贝状态;
将所述相对存储地址替换为第二区域中的绝对存储地址;
根据所述修改的字节数将所述数据拷贝到所述绝对存储地址中,所述修改的字节数用于表示所述数据的体积。
在此基础上,所述接收数据之后,还包括:将所述第一区域的状态从无使用状态修改为使用状态;
所述根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域之后,还包括:将所述第一区域的状态从未拷贝状态修改为无使用状态。第二方面,本发明实施例还提供了一种数据的存储方法,其特征在于,在第一区域中包括两个或两个以上的数据区域,所述数据区域用于临时存储数据,在第二区域持久化来源于所述数据区域的数据,所述方法包括:
在接收数据的操作中断产生的重启信号,执行重启操作后,确定所述第一区域的状态,所述状态用于表示所述数据从写入所述数据区域至迁移至所述第二区域的过程;
根据所述第一区域的状态对所述数据区域中的所述数据进行处理。
在此基础上,所述第一区域的状态包括使用状态,所述数据的类型包括关联类型;
所述根据所述第一区域的状态对所述数据区域中的所述数据进行处理,包括:
清空所述第一区域;
将所述第一区域的状态从使用状态修改为无使用状态。
在此基础上,所述第一区域的状态包括使用状态,所述数据的类型包括非关联类型;
所述根据所述第一区域的状态对所述数据区域中的所述数据进行处理,包括:
将所述第一区域中的数据拷贝至所述第二区域;
清空所述第一区域;
将所述第一区域的状态从使用状态修改为无使用状态。
在此基础上,所述第一区域的状态包括未拷贝状态;
所述据所述第一区域的状态对所述数据区域中的所述数据进行处理,包括:
将所述第一区域中的数据拷贝至所述第二区域;
清空所述第一区域;
将所述第一区域的状态从未拷贝状态修改为无使用状态。
第三方面,本发明实施例还提供了一种数据的存储装置,包括:
数据接收模块,用于接收数据;
写操作启动模块,用于启动写操作,所述写操作用于将所述数据写入用于临时存储的数据区域,所述数据区域位于第一区域;
状态修改模块,用于若所述数据全部写入所述数据区域,将所述第一区域的状态从无使用状态修改为未拷贝状态;
数据迁移模块,用于根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域。
第四方面,本发明实施例还提供了一种数据的存储装置,包括:
重启信号响应模块,用于在接收数据的操作中断产生的重启信号,执行重启操作后,确定所述第一区域的状态,所述状态用于表示所述数据从写入所述数据区域至迁移至所述第二区域的过程;
数据处理模块,用于根据所述第一区域的状态对所述数据区域中的所述数据进行处理。
第五方面,本发明实施例还提供了一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如任一方面所述的一种数据的存储方法。
第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如任一方面所述的一种数据的存储方法。
本发明实施例将用于临时存储的一整个第一区域划分为多个数据区域,先将数据写入数据区域进行临时存储,当该数据全部写入数据区域后,再拷贝到第二区域进行持久化,在将数据写入数据区域的过程中,若发生宕机等突发事件,由于数据并未全部写入数据区域中,该数据并不会写入第二区域,此时,该第二区域并未存在不可用的数据,从而避免产生脏数据,对第二区域中的数据实现了保护,并且,使用多个数据区域存储数据,可分散存储数据,有利于对数据进行细颗粒度管理,扩展存储功能。解决了将数据直接写入第二区域、数据写入过程还在进行,由于各种原因导致写入过程中断时,产生的第二区域部分数据不可用的问题。实现了在第一区域的数据区域中对数据临时存储完毕后,再将数据从第一区域拷贝到第二区域的效果,由于增加了对第一区域中数据完整性的判断,从而避免了不完整的数据进入持久化存储的第二区域,达到了对第二区域的数据进行保护的有益效果。
附图说明
图1为本发明实施例一提供的一种数据的存储方法的流程图;
图2为本发明实施例二提供的一种数据的存储方法的流程图;
图3为本发明实施例三提供的一种数据的存储方法的流程图;
图4为本发明实施例二提供的一种数据的存储方法的示意图;
图5为本发明实施例四提供的一种数据的存储方法的流程图;
图6为本发明实施例五提供的一种数据的存储装置的结构图;
图7为本发明实施例六提供的一种数据的存储装置的结构图;
图8为本发明实施例七提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据的存储方法的流程图。本实施例适用于设定用于临时存储数据的数据区域,在判定数据完全写入数据区域后,将数据从包括数据区域的第一区域迁移到持久化存储数据的第二区域中的场景。该方法可以一种数据的存储装置来执行,该装置可以由软件和/或硬件的方式实现。在本实施例中,存储区域包括第一区域和第二区域,所述第一区域包括至少两个数据区域,所述第二区域用于持久化存储。
第一区域与第二区域是在数据库中开辟的区域。第一区域用于临时对接收到的数据进行存储。第二区域用于持久化,即相对稳定的对接收到的数据进行存储,以供访问者进行访问。
当硬盘接到写入数据的指令之后,并不会马上将数据写入到盘片上,而是先暂时存储在缓存里,然后发送一个“数据已写入”的信号给系统,这时系统就会认为数据已经写入,并继续执行下面的工作,而硬盘则在空闲(不进行读取或写入的时候)时再将缓存中的数据写入到盘片上。虽然对于写入数据的性能有一定提升,但也不可避免地带来了安全隐患——数据还在缓存里的时候突然掉电,那么这些数据就会丢失。
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、可扩展标记语言数据文件中等等。持久化是将程序数据在持久状态和瞬时状态间转换的机制。
第一区域与第二区域是对空间的一种划分方式,该空间可以是内存中的一段空间,也可以是磁盘中的一段空间。如果该空间是内存中的一段空间,那么该方案可以应用于内存数据库。如果该空间是磁盘中的一段空间,那么该方案可以应用于磁盘数据库。当然,本方案还可以应用于传统数据库中。
传统的数据库系统是关系型数据库,开发这种数据库的目的,是处理永久、稳定的数据。关系数据库强调维护数据的完整性、一致性,但很难顾及有关数据及其处理的定时限制,不能满足工业生产管理实时应用的需要,因为实时事务要求系统能较准确地预报事务的运行时间。
对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间与估算的最坏情况执行时间相差很大,如果将整个数据库或其主要的“工作”部分放入内存,使每个事务在执行过程中没有输入/输出,则为系统较准确估算和安排事务的运行时间,使之具有较好的动态可预报性提供了有力的支持,同时也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。
内存数据库所处理的数据通常是“短暂”的,即有一定的有效时间,过时则有新的数据产生,而当前的决策推导变成无效。所以,实际应用中采用内存数据库来处理实时性强的业务逻辑处理数据。而传统数据库旨在处理永久、稳定的数据,其性能目标是高的系统吞吐量和低的代价,处理数据的实时性就要考虑的相对少一些。实际应用中利用传统数据库这一特性存放相对实时性要求不高的数据。
在对第一区域再次进行划分,将其中的部分区域作为数据区域,数据区域的数量为两个或两个以上,每个数据区域均可用于临时存储数据。
参考图1,该方法包括:
S101、接收数据。
数据一般是指用户与网站交互时产生的记录。接收数据是指分析用户与网站交互时产生的记录的格式,确定格式中不同字节段对应的不同内容。将交互产生的带格式的内容作为数据。数据还可以是管理员向用户下发的带格式的内容,管理员向用户下发的信息也会导致数据的变化,也需要都对第二区域中的数据进行修改。每间隔一段时间,数据的存储装置接收数据,并对数据进行处理。
一般的,数据通过键值对的形式表示。键值对(key=value)表现了键与值之间的对应关系,一个键可以对应于一个或多个值。从用户操作数据对应的字节段中选定一部分作为用户操作数据中的键,再选择一部分作为用户操作数据中的值,建立用户操作数据中的键与值的对应关系。用户操作数据中的键和值是本领域技术人员根据实际的业务情况进行选择的,本实施例对此不加以限制。
S102、启动写操作。
写操作用于将数据写入数据区域,以对数据进行临时存储。写操作启动后,会将数据一条一条的写入数据区域,当一个数据区域被写满之后,开始向另一个数据区域中写入。直到所有的数据均被写入数据区域后,执行下一操作。
在一可行的实现方式中,执行写操作时,不仅要将数据本体写入数据区域,还要将描述数据属性的其他信息一并写入数据区域,并将描述数据属性的其他信息与数据本体关联保存。
在一可行的实现方式中,执行写操作时,会对写入数据区域的数据进行计数。
S103、若所述数据全部写入所述数据区域,将所述第一区域的状态从无使用状态修改为未拷贝状态。
确定接收到的数据的数量,并确定持续进行的写操作将接收到的全部数据临时存储到了第一区域的多个数据区域中。
在一可行的实现方式中,当接收到需要进行临时存储的数据时,确定这些数据的数量。从这些临时存储的数据中确定一条待写入第一区域的数据,当这条数据被写入第一区域时,控制第一区域的计数器加一,同时当这条数据被写入第一区域中的某个数据区域时,将此数据的属性变为已写入。将计数器中的数量与数据的数量进行比较,当二者数量相同时,确定数据已全部写入数据区域中。
在一可行的实现方式中,可以采用写入一条删除一条的方式来处理需要写入数据区域的数据。当需要写入数据区域的数据全部被删除后,可以认为数据已经全部写入数据区域。在没有使用时,第一区域的状态为无使用状态。将数据全部写入数据区域后,将第一区域的状态从无使用状态修改为未拷贝状态。
S104、根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域。
迁移是指数据已经被存储在第一区域中,第一区域与第二区域可能属于相同的硬件,因此只需要对数据的地址进行更改就可以完成迁移的过程。一般的,为了保证数据的稳定性,会在数据区域中,对描述数据属性的其他信息(尤其是与地址相关的信息)进行修改,修改完成后,使用数据本体覆盖绝对地址中的数据。
当数据完全临时存储到了第一区域中的数据区域时,逐个将数据区域中的数据写入第二区域中。
本发明实施例将用于临时存储的一整个第一区域划分为多个数据区域,先将数据写入数据区域进行临时存储,当该数据全部写入数据区域后,再拷贝到第二区域进行持久化,在将数据写入数据区域的过程中,若发生宕机等突发事件,由于数据并未全部写入数据区域中,该数据并不会写入第二区域,此时,该第二区域并未存在不可用的数据,从而避免产生脏数据,对第二区域中的数据实现了保护,并且,使用多个数据区域存储数据,可分散存储数据,有利于对数据进行细颗粒度管理,扩展存储功能。解决了将数据直接写入第二区域、数据写入过程还在进行,由于各种原因导致写入过程中断时,产生的第二区域部分数据不可用的问题。实现了在第一区域的数据区域中对数据临时存储完毕后,再将数据从第一区域拷贝到第二区域的效果,由于增加了对第一区域中数据完整性的判断,从而避免了不完整的数据进入持久化存储的第二区域,达到了对第二区域的数据进行保护的有益效果。
实施例二
图2为本发明实施例二提供的一种数据的存储方法的流程图。本实施例是在实施例一的基础上进行的细化,详细描述了启动写操作和确定所述数据已全部写入所述数据区域中的具体方式。参考图2,该方式包括:
S201、接收数据。
一般的,数据包括用户行为产生的数据,也包括管理员向用户下发信息产生的数据。为了减少与服务器交互的次数,可以设定一段时间(如一分钟)与第一区域交互一次,让第一区域接收一批数据。当然,也可以设定数据的阈值(如一千条),当数据符合阈值时,与第一区域交互一次,让第一区域接收一批数据。
在一可行的实现方式中:某运营人员A运营一个网站,该网站每时每刻都有可能有X个不同用户,从不同地域访问。用户每次与网站交互,都产生这样格式的记录:时间,用户ID,省份。如:2018-11-17 16:05:10,user1,guangdong。可以将其作为一条数据。
在一可行的实现方式中:某运营人员A运营一个网站,该网站包括Y个注册用户,运营人员A需要向Y中符合条件的部分用户发放100积分,向每个符合条件的用户发放100积分的行为都会对应生成一条数据。
S202、从所述编号区域中、读取所述数据区域的编号。
第一区域还包括编号区域,编号区域中存储有空闲的数据区域的编号。
在一可行的实现方式中,对数据区域进行顺序编号,并对需要零食存储如第一区域的数据进行处理,以获得数据的数据编号,按照对应关系将数据编号对应与一个数据空间。一般的,可以对数据的键进行处理以获得数据的数据编号,处理的方法可以是:轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted)等。
在一具体实现方式中,若有N个数据区域,可以将其从1-N进行顺序编号,从而每个数据区域具有唯一的编号。对要进行计算的数据的键key,进行哈希码运算hashCode(key),从而得到一个整数。对整数取模,并对最终结果取绝对值运算|hashCode(key)%N|,得到正整数M。正整数M示N个已固定好顺序的数据区域中的第M个。可以理解为将数据存入编号为M的数据区域中。
在一具体实现方式中,以N=8(有8个存储空间)为例进行说明,
key=201811171605|guangdong
userId=user1
hashCode(key)=-1826944887
M=|hashCode(key)%N|=|-1826944887%8|=|-7|=7
即201811171605|guangdong->user1放到空间编号为7的存储空间中。
在一可行的实现方式中,对数据区域进行顺序编号,并且顺序使用数据区域。这样只需要在编号区域中存储当前空闲的数据区域的编号即可,这样节约了第一区域中为存储编号开辟的编号区域的空间。
S203、逐条将所述数据写入所述编号所属的数据区域中。
数据的数量与预先的设置有关,但可以知道的是数据的数量大于一条,一般的也大于一个数据区域可存储的数据条数。因此可以从数据中确定出一条数据作为待写入数据区域的数据,同时,也可以从多个数据区域中确定出一个接受数据的数据区域。
逐条将数据写入编号所属的数据区域中的操作,与数据区域的可使用空间有关,可以包括以下步骤:
S2031、确定所述编号所属数据区域中可使用的空间。
一般的,数据区域的大小是固定的,数据区域被设定为存储超过一条数据时,由于之前存储的数据的体积的影响,会导致数据区域中可使用空间的不一致。
具体的,根据编号确定当前接收数据的数据区域,同时确定该数据区域中可使用的空间的大小。数据被写入数据区域时,除了数据本体外,还会写入描述数据属性的其他信息,如数据所占的字节数等。在知道数据本体的大小和描述数据属性的其他信息所占的大小时,可以推定一条数据所占的体积。在此基础山,结合数据区域的空间的大小,可以知道数据区域中可使用的空间。
S2032、确定当前待写入的数据的体积。
从数据中选择一条数据作为当前待写入的数据,从描述数据属性的其他信息中确定数据本体的大小,以及用于存储其他信息的固定字节数,结合二者确定当前待写入的数据的体积。
S2033、当所述可使用的空间大于或等于所述体积时,将所述数据写入所述数据区域。
当数据区域中可使用的空间的大小大于当前待写入的数据的体积时,将当前待写入的数据写入该数据区域中。当数据区域中可使用的空间的大小小于当前待写入的数据的体积时,将当前待写入的数据写入下一数据区域中,并修改第一区域中编号区域中的编号。
逐条将数据写入编号所属的数据区域中的操作,用于描述数据属性的其他信息也会写入数据区域,可以包括以下步骤:
S2034、确定当前待写入的数据在写入过程中修改的字节数。
一般的,数据由键值对构成,可以理解为当前待写入的数据在写入过程中修改的字节数为键值对中值所占的字节数。
S2035、确定写入所述当前待写入的数据的相对存储地址。
相对存储地址是指数据区域中用于临时存储该数据的地址。存储地址是指对存储器编码(编码地址)的范围。所谓编码就是对每一个物理存储单元(一个字节)分配一个号码,通常称为“编址”。在两次存储过程中,相同的数据可能在数据区域中存储于不同的位置,但是相同的数据在第二区域中存储于相同的位置,因此将数据在数据区中存储的位置称为相对存储地址,而在第二区域中称为绝对存储地址。
具体的,由于数据区域为一小段连续的空间,可以在每个数据区域中开辟一段空间,用于存储当前已经被使用的空间的地址的下一个地址。
S2036、将所述相对存储地址写入所述地址区域、将所述修改的字节数写入所述字节数区域、将所述当前待写入的数据写入所述值区域中。
具体的,数据区域包括字节数区域、地址区域和值区域。地址区域用于存储相对存储地址,字节数区域用于存储修改的字节数,值区域用于存储当前待写入的数据。将相对存储地址、所述修改的字节数和所述当前待写入的数据一起写入数据区域中。
在一可行的实现方式中,第一区域还包括计数器。逐条将所述数据写入编号所属的数据区域中之后,从第一区域中确定所述计数器;在所述计数器当前的数值基础上加一。
S204、当所述数据区域的空间被所述数据全部占用时,修改所述编号区域中的所述编号。
具体的,当编号区域中的编号对应的数据区域的可使用的空间,不能容纳待写入数据的体积时,认为数据区域的空间被所述数据全部占用。此时修改编号区域中的编号,以指向下一个数据空间,以对数据进行临时存储。
S205、读取所述计数器的数值。
S206、当所述数据的数量与所述计数器的数值相同时,确定所述数据已经全部写入所述数据区域。
读取第一空间中计数器的数值,该数值表示数据空间接收到的数据的数量。将该计数器的数量与数据的实际数量进行比较,当数据的数量与计数器的数值相同时,确定数据已全部写入数据区域中。
S207、确定所述第一区域的状态为未拷贝状态。
第一区域可以包括三种状态:无使用状态、使用状态和未拷贝状态。其中,无使用状态表示第一区域是闲置的,可以随时临时存储数据;使用状态表示第一区域接收到了数据,可能准备开始向数据区域临时存储数据,也可能正在临时存储数据;未拷贝状态表示数据区域已经接收了全部的数据,但还没有开始向第二区域迁移。
通过读取第一区域状态的方式,对第一区域的状态进行确定。
S208、将所述相对存储地址替换为第二区域中的绝对存储地址。
将第一区域中的相对地址替换为第二区域中的绝对地址,实现将第一区域中的数据向第二区域的迁移。
S209、根据所述修改的字节数将所述数据拷贝到所述绝对存储地址中。
第二区域中的绝对地址根据修改的字节数判断该数据是否合法以及是否需要申请新的空间。若数据合法则将数据拷贝到绝对存储地址中。
实施例三
图3为本发明实施例三提供的一种数据的存储方法的流程图。本实施例是在实施例一的基础上进行的细化,详细描述了数据未全部写入数据区域中时的处理方式。参考图3,该方式包括:
S301、接收数据。
S302、启动写操作。
步骤S301-S302的具体实现方式可以参考实施例一中步骤S101-S102的实现方式,也可以参考实施例二中步骤S201-S204的实现方式。本实施例不再赘述。
S303、在所述接收数据的操作中断、且所述数据未全部写入所述数据区域的情况下,确定所述数据的类型。
数据未被全部写入数据区域可能是由于数据丢失造成的,如意外断电、异常删除等。当计数器的数值在预设时间没有变化,同时该数值与数据的实际数量不吻合时,认为数据未全部写入数据区域中。
数据的类型包括关联类型与非关联类型。关联类型的数据全部同时被执行,不可以选择其中部分被执行。非关联类型的数据可以部分被执行。
如接收的数据中依次包括数据A-数据B-数据C-数据D-数据E,若数据A、数据B、数据C、数据D和数据E要么全部被执行,要么全部不被执行,那么,数据A、数据B、数据C、数据D和数据E为关联类型。若数据A、数据B、数据C、数据D和数据E可以选择其中部分执行,那么,数据A、数据B、数据C、数据D和数据E为非关联类型。
S304、当所述数据的类型为关联类型时,清空所述数据区域,所述关联类型的数据全部同时被执行。
当数据的类型为关联类型时,如果数据不完整就无法被使用,因此需要清空数据区域中的数据。
S305、当所述数据的类型为非关联类型时,将所述数据区域中已写入的部分所述数据拷贝至所述第二区域,所述非关联类型的数据部分被执行。
当数据的类型为非关联类型时,即使数据不完整也可以被使用,因此将数据区域中已写入的部分数据拷贝至第二区域。
在上述实施例的基础上,第一区域会根据接收数据的情况来确定自身所处的状态。
第一区域可以包括三种状态:无使用状态、使用状态和未拷贝状态。其中,无使用状态表示第一区域是闲置的,可以随时临时存储数据;使用状态表示第一区域接收到了数据,可能准备开始向数据区域临时存储数据,也可能正在临时存储数据;未拷贝状态表示数据区域已经接收了全部的数据,但还没有开始向第二区域迁移。
具体的,第一区域一般处于无使用状态;接收数据之后,将第一区域的状态从无使用状态修改为使用状态;确定数据已全部写入数据区域中之后,将第一区域的状态从使用状态修改为未拷贝状态;将数据从第一区域中迁移至所述第二区域,以持久化所述数据之后,将第一区域的状态从未拷贝状态修改为无使用状态。
图4为本发明实施例二提供的一种数据的存储方法的示意图。如图所示,数据40首先由第一区域41接收,当数据40全部写入第一区域41后再将数据40写入第二区域42。第一区域41包括用于临时存储数据的多个数据区域46。
数据临时存储入第一区域41的过程可以理解为:从数据40中选择一条作为待写入的数据,并确定该待写入的数据需要修改的字节数,一般的可以理解为键值对中“值”的长度。通过第一区域41中的状态区域43确定第一区域的状态,以及是否需要对第一区域的状态进行修改。再从编号区域44中读取编号,以确定待写入的数据应该写入哪个数据区域,当确定好写入数据的数据区域46后,向该数据区域46写入该待写入数据。写入过程中,通过读取“相对存储地址”区域47中的信息确定该待写入的数据的地址,将待写入的数据的“值”的长度写入“修改的字节数”区域48,再将数据的本体写入“数据本体”区域49,返回修改“相对存储地址”区域47中的信息。确定待写入的数据写入数据区域后,增加计数器45的数值。
实施例四
图5为本发明实施例四提供的一种数据的存储方法的流程图。本实施例适用于接收重启信号后,根据第一区域的状态对数据区域中的数据进行处理的场景。该方法可以一种数据的存储装置来执行,该装置可以由软件和/或硬件的方式实现。参考图5,该方法包括:
S501、在接收数据的操作中断产生的重启信号,执行重启操作后,确定所述第一区域的状态。
重启信号是数据的存储装置接收到的信号。重启信号可以在一定情况下由设备自行产生,也可以由用户的操作触发。
由设备自行产生的重启信号可以通过预先设置情况来实现。如:检测到数据未被全部写入数据区域时产生重启信号。数据未被全部写入数据区域可能是由于数据丢失造成的,如意外断电、异常删除等。当计数器的数值在预设时间没有变化,同时该数值与数据的实际数量不吻合时,认为数据未全部写入数据区域中,此时产生重启信号。还可以是检测到设备上电的信号时,生成重启信号。
在一可行的实现方式中,数据的存储装置接收用户触发或者设备自行产生的重启信号。
所述状态用于表示所述数据从写入所述数据区域至迁移至所述第二区域的过程。
第一区域可以包括三种状态:无使用状态、使用状态和未拷贝状态。其中,无使用状态表示第一区域是闲置的,可以随时临时存储数据;使用状态表示第一区域接收到了数据,可能准备开始向数据区域临时存储数据,也可能正在临时存储数据;未拷贝状态表示数据区域已经接收了全部的数据,但还没有开始向第二区域迁移。
具体的,当接收到重启信号后,响应于重启信号,执行重启操作。重启操作的触发条件是数据存储的异常,因此需要借由重启操作来触发后续的一些列整理第一区域中数据的操作。如在执行重启操作时,确定第一区域的状态。
S502、根据所述第一区域的状态对所述数据区域中的所述数据进行处理。
第一区域包括三种不同的状态,根据第一区域的状态对数据区域中的数据进行处理。处理主要是指数据区域中的数据是否需要拷贝到第二区域、数据区域中的数据是否需要被清空、第一区域的状态是否需要修改等。
在一可行的实现方式中,第一区域的状态包括使用状态,数据的类型包括关联类型。则在不拷贝的情况下清空第一区域中的数据,将第一区域的状态修改为无使用状态。
在一可行的实现方式中,第一区域的状态包括使用状态,数据的类型包括非关联类型;将第一区域中的数据拷贝至第二区域;清空第一区域;将第一区域的状态修改为无使用状态。
在一可行的实现方式中,第一区域的状态包括未拷贝状态;将第一区域中的数据拷贝至第二区域;清空第一区域;将第一区域的状态修改为无使用状态。
具体的,根据第一区域的状态对数据区域中的数据进行处理的方式如表一。
表一
Figure BDA0002354256250000141
本发明实施例通过在接收数据的操作中断产生的重启信号,执行重启操作后,确定第一区域的状态,状态用于表示数据从写入数据区域至迁移至第二区域的过程;根据第一区域的状态对数据区域中的数据进行处理。重启后,第一区域无论处于何种状态,都会清空第一区域并将第一区域的状态修改为无使用状态,这样可以及时释放第一区域的空间,为后续的数据临时存储做准备。当第一区域处于使用状态时,说明第一区域中存在有数据,此时通过判定第一区域中数据间的关系来确定是否将数据拷入第二区域,可以起到节约时间和算力的效果。
实施例五
图6为本发明实施例五提供的一种数据的存储装置的结构图,该装置包括:数据接收模块61、写操作启动模块62、状态修改模块63和数据迁移模块64。其中:
数据接收模块61,用于接收数据;
写操作启动模块62,用于启动写操作,所述写操作用于将所述数据写入用于临时存储的数据区域,所述数据区域位于第一区域;
状态修改模块63,用于若所述数据全部写入所述数据区域,将所述第一区域的状态从无使用状态修改为未拷贝状态;
数据迁移模块64,用于根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域。
本发明实施例将用于临时存储的一整个第一区域划分为多个数据区域,先将数据写入数据区域进行临时存储,当该数据全部写入数据区域后,再拷贝到第二区域进行持久化,在将数据写入数据区域的过程中,若发生宕机等突发事件,由于数据并未全部写入数据区域中,该数据并不会写入第二区域,此时,该第二区域并未存在不可用的数据,从而避免产生脏数据,对第二区域中的数据实现了保护,并且,使用多个数据区域存储数据,可分散存储数据,有利于对数据进行细颗粒度管理,扩展存储功能。解决了将数据直接写入第二区域、数据写入过程还在进行,由于各种原因导致写入过程中断时,产生的第二区域部分数据不可用的问题。实现了在第一区域的数据区域中对数据临时存储完毕后,再将数据从第一区域拷贝到第二区域的效果,由于增加了对第一区域中数据完整性的判断,从而避免了不完整的数据进入持久化存储的第二区域,达到了对第二区域的数据进行保护的有益效果。
在上述实施例的基础上,所述第一区域还包括编号区域,所述写操作启动模块62包括:
编号读取子模块,用于从所述编号区域中、读取所述数据区域的编号;
数据写入子模块,用于逐条将所述数据写入所述编号所属的数据区域中;
编号修改子模块,用于当所述数据区域的空间被所述数据全部占用时,修改所述编号区域中的所述编号
在上述实施例的基础上,所述数据写入子模块包括:
空间确定单元,用于确定所述编号所属数据区域中可使用的空间;
体积确定单元,用于确定当前待写入的数据的体积;
数据写入单元,用于当所述可使用的空间大于或等于所述体积时,将所述数据写入所述数据区域。
在上述实施例的基础上,所述数据区域包括字节数区域、地址区域和值区域;所述数据写入子模块包括:
字节数确定单元,用于确定当前待写入的数据在写入过程中修改的字节数;
相对地址确定单元,用于确定写入所述当前待写入的数据的相对存储地址;
信息写入单元,用于将所述相对存储地址写入所述地址区域、将所述修改的字节数写入所述字节数区域、将所述当前待写入的数据写入所述值区域中。
在上述实施例的基础上,所述第一区域还包括计数器,还包括:
计数器确定模块,用于从第一区域中确定所述计数器;
数值加一模块,用于在所述计数器当前的数值基础上加一。
在上述实施例的基础上,所述第一区域还包括计数器,所述计数器用于表示所述第一区域中存储的数据的数量,还包括:
数值读取模块,用于读取所述计数器的数值;
写入确定模块,用于当所述数据的数量与所述计数器的数值相同时,确定所述数据已经全部写入所述数据区域。
在上述实施例的基础上,还包括:
数据类型确定模块,用于在所述接收数据的操作中断、且所述数据未全部写入所述数据区域的情况下,确定所述数据的类型;
第一类型执行模块,用于当所述数据的类型为关联类型时,清空所述数据区域,所述关联类型的数据全部同时被执行;
第二类型执行模块,用于当所述数据的类型为非关联类型时,将所述数据区域中已写入的部分所述数据拷贝至所述第二区域,所述非关联类型的数据部分被执行。
在上述实施例的基础上,所述第一区域中包括数据的相对存储地址、修改的字节数;数据迁移模块64包括:
状态确定子模块,用于确定所述第一区域的状态为未拷贝状态;
地址替换子模块,用于将所述相对存储地址替换为第二区域中的绝对存储地址;
数据迁移子模块,用于根据所述修改的字节数将所述数据拷贝到所述绝对存储地址中,所述修改的字节数用于表示所述数据的体积。
在上述实施例的基础上,还包括:
使用状态修改模块,用于将所述第一区域的状态从无使用状态修改为使用状态;
未拷贝状态修改模块,用于将所述第一区域的状态从未拷贝状态修改为无使用状态。
本实施例提供的一种数据的存储装置可用于执行实施例一、实施例二、实施例三提供的一种数据的存储方法,具有相应的功能和有益效果。
实施例六
图7为本发明实施例六提供的一种数据的存储装置的结构图,该装置包括:重启信号响应模块71和数据处理模块72。其中:
重启信号响应模块71,用于在接收数据的操作中断产生的重启信号,执行重启操作后,确定所述第一区域的状态,所述状态用于表示所述数据从写入所述数据区域至迁移至所述第二区域的过程;
数据处理模块72,用于根据所述第一区域的状态对所述数据区域中的所述数据进行处理。
本发明实施例通过在接收数据的操作中断产生的重启信号,执行重启操作后,确定第一区域的状态,状态用于表示数据从写入数据区域至迁移至第二区域的过程;根据第一区域的状态对数据区域中的数据进行处理。重启后,第一区域无论处于何种状态,都会清空第一区域并将第一区域的状态修改为无使用状态,这样可以及时释放第一区域的空间,为后续的数据临时存储做准备。当第一区域处于使用状态时,说明第一区域中存在有数据,此时通过判定第一区域中数据间的关系来确定是否将数据拷入第二区域,可以起到节约时间和算力的效果。
在上述实施例的基础上,所述第一区域的状态包括使用状态,所述数据的类型包括关联类型;数据处理模块72包括:
区域清空第一子模块,用于清空所述第一区域;
区域状态修改第一子模块,用于将所述第一区域的状态从使用状态修改为无使用状态。
在上述实施例的基础上,所述第一区域的状态包括使用状态,所述数据的类型包括非关联类型;数据处理模块72包括:
数据拷贝第一子模块,用于将所述第一区域中的数据拷贝至所述第二区域;
区域清空第二子模块,用于清空所述第一区域;
区域状态修改第二子模块,用于将所述第一区域的状态从使用状态修改为无使用状态。
在上述实施例的基础上,所述第一区域的状态包括未拷贝状态;数据处理模块72包括:
数据拷贝第二子模块,用于将所述第一区域中的数据拷贝至所述第二区域;
区域清空第三子模块,用于清空所述第一区域;
区域状态修改第三子模块,用于将所述第一区域的状态从未拷贝状态修改为无使用状态。
本实施例提供的一种数据的存储装置可用于执行实施例四提供的一种数据的存储方法,具有相应的功能和有益效果。
实施例七
图8为本发明实施例七提供的一种电子设备的结构示意图。如图8所示,该电子设备包括处理器80、存储器81、通信模块82、输入装置83和输出装置84;电子设备中处理器80的数量可以是一个或多个,图8中以一个处理器80为例;电子设备中的处理器80、存储器81、通信模块82、输入装置83和输出装置84可以通过总线或其他方式连接,图8中以通过总线连接为例。
存储器81作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本实施例中的一种数据的存储方法对应的模块(例如,一种数据的存储装置中的数据接收模块61、写操作启动模块62、状态修改模块63和数据迁移模块64。)。
存储器81作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本实施例中的一种数据的存储方法对应的模块(例如,的一种数据的存储装置中的重启信号响应模块71和数据处理模块72)。
处理器80通过运行存储在存储器81中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的一种数据的存储方法。
存储器81可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器81可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器81可进一步包括相对于处理器80远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信模块82,用于与显示屏建立连接,并实现与显示屏的数据交互。输入装置83可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。
本实施例提供的一种电子设备,可执行本发明任一实施例提供的数据的存储方法,具体相应的功能和有益效果。
实施例八
本发明实施例八还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据的存储方法,该方法包括:
接收数据;
启动写操作,所述写操作用于将所述数据写入用于临时存储的数据区域,所述数据区域位于第一区域;
若所述数据全部写入所述数据区域,将所述第一区域的状态从无使用状态修改为未拷贝状态;
根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域。
或者,
在接收数据的操作中断产生的重启信号,执行重启操作后,确定所述第一区域的状态,所述状态用于表示所述数据从写入所述数据区域至迁移至所述第二区域的过程;
根据所述第一区域的状态对所述数据区域中的所述数据进行处理。当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任一实施例所提供的数据的存储方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机电子设备(可以是个人计算机,服务器,或者网络电子设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述数据的存储装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (15)

1.一种数据的存储方法,其特征在于,存储区域包括第一区域和第二区域,所述第一区域包括至少两个数据区域,所述第二区域用于持久化存储,所述方法包括:
接收数据;
启动写操作,所述写操作用于将所述数据写入用于临时存储的数据区域,所述数据区域位于第一区域;
若所述数据全部写入所述数据区域,将所述第一区域的状态从无使用状态修改为未拷贝状态;
根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域。
2.根据权利要求1所述的方法,其特征在于,所述第一区域还包括编号区域;
所述启动写操作,包括:
从所述编号区域中、读取所述数据区域的编号;
逐条将所述数据写入所述编号所属的数据区域中;
当所述数据区域的空间被所述数据全部占用时,修改所述编号区域中的所述编号。
3.根据权利要求2所述的方法,其特征在于,所述逐条将所述数据写入所述编号所属的数据区域中,包括:
确定所述编号所属数据区域中可使用的空间;
确定当前待写入的数据的体积;
当所述可使用的空间大于或等于所述体积时,将所述数据写入所述数据区域。
4.根据权利要求2所述的方法,其特征在于,所述数据区域包括字节数区域、地址区域和值区域;
所述逐条将所述数据写入所述编号所属的数据区域中,包括:
确定当前待写入的数据在写入过程中修改的字节数;
确定写入所述当前待写入的数据的相对存储地址;
将所述相对存储地址写入所述地址区域、将所述修改的字节数写入所述字节数区域、将所述当前待写入的数据写入所述值区域中。
5.根据权利要求2所述的方法,其特征在于,所述第一区域还包括计数器;
所述逐条将所述数据写入所述编号所属的数据区域中之后,还包括:
从第一区域中确定所述计数器;
在所述计数器当前的数值基础上加一。
6.根据权利要求1所述的方法,其特征在于,所述第一区域还包括计数器,所述计数器用于表示所述第一区域中存储的数据的数量;
所述启动写操作之后,还包括:
读取所述计数器的数值;
当所述数据的数量与所述计数器的数值相同时,确定所述数据已经全部写入所述数据区域。
7.根据权利要求1所述的方法,其特征在于,还包括:
在所述接收数据的操作中断、且所述数据未全部写入所述数据区域的情况下,确定所述数据的类型;
当所述数据的类型为关联类型时,清空所述数据区域,所述关联类型的数据全部同时被执行;
当所述数据的类型为非关联类型时,将所述数据区域中已写入的部分所述数据拷贝至所述第二区域,所述非关联类型的数据部分被执行。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述第一区域中包括数据的相对存储地址、修改的字节数;
所述根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域,包括:
确定所述第一区域的状态为未拷贝状态;
将所述相对存储地址替换为第二区域中的绝对存储地址;
根据所述修改的字节数将所述数据拷贝到所述绝对存储地址中,所述修改的字节数用于表示所述数据的体积。
9.根据权利要求1-7任一项所述的方法,其特征在于,
所述接收数据之后,还包括:将所述第一区域的状态从无使用状态修改为使用状态;
所述根据所述未拷贝状态,将所述数据从所述第一区域中迁移至所述第二区域之后,还包括:将所述第一区域的状态从未拷贝状态修改为无使用状态。
10.一种数据的存储方法,其特征在于,在第一区域中包括两个或两个以上的数据区域,所述数据区域用于临时存储数据,在第二区域持久化来源于所述数据区域的数据,所述方法包括:
在接收数据的操作中断产生的重启信号,执行重启操作后,确定所述第一区域的状态,所述状态用于表示所述数据从写入所述数据区域至迁移至所述第二区域的过程;
根据所述第一区域的状态对所述数据区域中的所述数据进行处理。
11.根据权利要求10所述的方法,其特征在于,所述第一区域的状态包括使用状态,所述数据的类型包括关联类型;
所述根据所述第一区域的状态对所述数据区域中的所述数据进行处理,包括:
清空所述第一区域;
将所述第一区域的状态从使用状态修改为无使用状态。
12.根据权利要求10所述的方法,其特征在于,所述第一区域的状态包括使用状态,所述数据的类型包括非关联类型;
所述根据所述第一区域的状态对所述数据区域中的所述数据进行处理,包括:
将所述第一区域中的数据拷贝至所述第二区域;
清空所述第一区域;
将所述第一区域的状态从使用状态修改为无使用状态。
13.根据权利要求10所述的方法,其特征在于,所述第一区域的状态包括未拷贝状态;
所述据所述第一区域的状态对所述数据区域中的所述数据进行处理,包括:
将所述第一区域中的数据拷贝至所述第二区域;
清空所述第一区域;
将所述第一区域的状态从未拷贝状态修改为无使用状态。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-13任一所述的一种数据的存储方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-13任一所述的一种数据的存储方法。
CN202010003246.XA 2020-01-02 2020-01-02 一种数据的存储方法、装置、设备和存储介质 Active CN111221474B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010003246.XA CN111221474B (zh) 2020-01-02 2020-01-02 一种数据的存储方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010003246.XA CN111221474B (zh) 2020-01-02 2020-01-02 一种数据的存储方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN111221474A true CN111221474A (zh) 2020-06-02
CN111221474B CN111221474B (zh) 2023-05-26

Family

ID=70808253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010003246.XA Active CN111221474B (zh) 2020-01-02 2020-01-02 一种数据的存储方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN111221474B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916605A (en) * 1984-03-27 1990-04-10 International Business Machines Corporation Fast write operations
CN101430705A (zh) * 2008-11-29 2009-05-13 中兴通讯股份有限公司 基于嵌入式数据库的存储方法和装置
CN101464836A (zh) * 2007-12-20 2009-06-24 宇瞻科技股份有限公司 闪存储存装置的数据储存方法
CN104956311A (zh) * 2013-10-09 2015-09-30 株式会社日立制作所 存储系统以及存储控制方法
CN105612503A (zh) * 2013-08-09 2016-05-25 桑迪士克科技股份有限公司 持久性数据结构
CN107329696A (zh) * 2017-06-23 2017-11-07 华中科技大学 一种保证数据崩溃一致性的方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916605A (en) * 1984-03-27 1990-04-10 International Business Machines Corporation Fast write operations
CN101464836A (zh) * 2007-12-20 2009-06-24 宇瞻科技股份有限公司 闪存储存装置的数据储存方法
CN101430705A (zh) * 2008-11-29 2009-05-13 中兴通讯股份有限公司 基于嵌入式数据库的存储方法和装置
CN105612503A (zh) * 2013-08-09 2016-05-25 桑迪士克科技股份有限公司 持久性数据结构
CN104956311A (zh) * 2013-10-09 2015-09-30 株式会社日立制作所 存储系统以及存储控制方法
CN107329696A (zh) * 2017-06-23 2017-11-07 华中科技大学 一种保证数据崩溃一致性的方法及系统

Also Published As

Publication number Publication date
CN111221474B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
JP6884128B2 (ja) データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム
US9251011B2 (en) Backup of in-memory databases
KR20200111295A (ko) 메모리 리클레임 방법 및 장치
CN101211289A (zh) 恢复操作管理系统和方法
WO2020093501A1 (zh) 文件存储方法、删除方法、服务器及存储介质
CN106446044B (zh) 存储空间回收方法及装置
CN109597707B (zh) 克隆卷数据拷贝方法、装置及计算机可读存储介质
CN113190503B (zh) 文件系统扩容方法、装置、电子设备及存储介质
CN114780252B (zh) 数据仓库系统的资源管理方法及装置
US10509767B2 (en) Systems and methods for managing snapshots of a file system volume
US8898124B2 (en) Controlling database trigger execution with trigger return data
CN110737604A (zh) 一种自动清理内存的方法、装置、电子设备及存储介质
JP2020080130A (ja) ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム
CN110659259A (zh) 数据库迁移方法、服务器以及计算机存储介质
EP3422186B1 (en) Method, device and system for preventing memory data loss
CN114924999A (zh) 一种高速缓存管理方法、装置、系统、设备及介质
CN111143231B (zh) 用于数据处理的方法、设备和计算机程序产品
CN111221474B (zh) 一种数据的存储方法、装置、设备和存储介质
CN112835511B (zh) 分布式存储集群的数据写入方法、装置、设备和介质
WO2023193630A1 (zh) 一种峰值检测方法、装置、计算机设备和存储介质
CN112463058A (zh) 一种碎片数据整理方法、装置及存储节点
CN106557263B (zh) 用于在数据块删除中检查伪共享的方法及设备
CN113641640B (zh) 用于流式计算系统的数据处理方法、装置、设备和介质
CN113132241B (zh) Acl模板动态配置方法及装置
CN114020745A (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
GR01 Patent grant
GR01 Patent grant