CN113901273A - 一种数据处理方法及装置 - Google Patents

一种数据处理方法及装置 Download PDF

Info

Publication number
CN113901273A
CN113901273A CN202111058611.8A CN202111058611A CN113901273A CN 113901273 A CN113901273 A CN 113901273A CN 202111058611 A CN202111058611 A CN 202111058611A CN 113901273 A CN113901273 A CN 113901273A
Authority
CN
China
Prior art keywords
data
key
value pair
nonvolatile memory
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.)
Pending
Application number
CN202111058611.8A
Other languages
English (en)
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.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing 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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN202111058611.8A priority Critical patent/CN113901273A/zh
Publication of CN113901273A publication Critical patent/CN113901273A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据处理方法及装置,方法包括:接收数据写入请求;响应于所述数据写入请求,对待写入数据执行序列化处理;将序列化处理后的待写入数据写入非易失性内存,所述非易失性内存可通过字节单元访问;获取所述序列化处理后的待写入数据中的键值对在所述非易失性内存中的存储地址;将所述键值对中的键及所述存储地址插入所述非易失性内存中的多叉树结构。通过本申请实施例提供的数据处理方法及装置,能够提高数据的写性能。

Description

一种数据处理方法及装置
技术领域
本申请涉及人工智能技术和大数据技术,尤其涉及一种数据处理方法及装置。
背景技术
随着大数据技术的发展,对数据存储的需求也日益增高。进一步优化数据的写性能是数据存储技术一直追求的目标。
发明内容
本申请实施例提供一种数据处理方法及装置,能够提高数据的写性能。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据处理方法,包括:接收数据写入请求;
响应于所述数据写入请求,对待写入数据执行序列化处理;
将序列化处理后的待写入数据写入非易失性内存,所述非易失性内存可通过字节单元访问;
获取所述序列化处理后的待写入数据中的键值对在所述非易失性内存中的存储地址;
将所述键值对中的键及所述存储地址插入所述非易失性内存中的多叉树结构。
在一些实施例中,所述方法还包括:响应于所述数据更新请求,在所述非易失性内存中更新第一键值对。
在一些实施例中,所述方法还包括:
在所述多叉树结构中查找所述第一键值对对应的信息;
若所述多叉树结构中存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
将所述多叉树结构中所述第一键值对对应的信息更新为所述第一键及所述第一存储地址。
在一些实施例中,所述方法还包括:在所述多叉树结构中删除更新前的所述第一键值对对应的信息。
在一些实施例中,所述方法还包括:若所述多叉树结构中不存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
将所述第一键及所述第一存储地址增加至所述多叉树结构。
在一些实施例中,所述将序列化处理后的待写入数据写入非易失性内存,包括:
获取所述序列化处理后的待写入数据写入所述非易失性内存的存储偏移;
基于所述存储偏移将所述序列化处理后的待写入数据写入所述非易失性内存。
在一些实施例中,所述基于所述存储偏移将所述序列化处理后的待写入数据写入所述非易失性内存,包括:
基于所述存储偏移和所述序列化处理后的待写入数据对应的标识的大小,确定所述序列化处理后的待写入数据在所述非易失性内存中的第二存储位置;
将所述序列化处理后的待写入数据写入所述第二存储位置,将所述标识写入所述存储偏移对应的第三存储位置。
本申请实施例提供一种数据处理装置,所述装置包括:
接收模块,用于接收数据写入请求;
处理模块,用于响应于所述数据写入请求,对待写入数据执行序列化处理;
写入模块,用于将序列化处理后的待写入数据写入非易失性内存,所述非易失性内存可通过字节单元访问;
获取模块,用于获取所述序列化处理后的待写入数据中的键值对在所述非易失性内存中的存储地址;
插入模块,用于将所述键值对中的键及所述存储地址插入所述非易失性内存中的多叉树结构。
在一些实施例中,所述接收模块,还用于接收数据更新请求;
所述写入模块,还用于响应于所述数据更新请求,在所述非易失性内存中更新第一键值对。
在一些实施例中,所述获取模块,还用于在所述多叉树结构中查找所述第一键值对对应的信息;若所述多叉树结构中存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
所述插入模块,还用于将所述多叉树结构中所述第一键值对对应的信息更新为所述第一键及所述第一存储地址。
在一些实施例中,所述处理模块,还用于在所述多叉树结构中删除更新前的所述第一键值对对应的信息。
在一些实施例中,所述获取模块,还用于若所述多叉树结构中不存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
所述插入模块,还用于将所述第一键及所述第一存储地址增加至所述多叉树结构。
在一些实施例中,所述写入模块,用于获取所述序列化处理后的待写入数据写入所述非易失性内存的存储偏移;
基于所述存储偏移将所述序列化处理后的待写入数据写入所述非易失性内存。
在一些实施例中,所述写入模块,用于基于所述存储偏移和所述序列化处理后的待写入数据对应的标识的大小,确定所述序列化处理后的待写入数据在所述非易失性内存中的第二存储位置;
将所述序列化处理后的待写入数据写入所述第二存储位置,将所述标识写入所述存储偏移对应的第三存储位置。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的数据处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于被处理器执行时,实现本申请实施例提供的数据处理方法。
本申请实施例提供的数据处理方法,所述方法包括:接收数据写入请求;响应于所述数据写入请求,对待写入数据执行序列化处理;将序列化处理后的待写入数据写入非易失性内存,所述非易失性内存可通过字节单元访问;获取所述序列化处理后的待写入数据中的键值对在所述非易失性内存中的存储地址;将所述键值对中的键及所述存储地址插入所述非易失性内存中的多叉树结构。本申请实施例中,通过将键值对中的键及键值对在非易失性内存中的存储地址插入多叉树结构,将键值对在非易失性内存中的存储地址作为多叉树结构上的值,避免了将键值对插入多叉树结构造成的写放大的问题,优化写数据的性能。
附图说明
图1是相关技术中在非易失性内存中写入数据的示意图;
图2是相关技术中在非易失性内存中更新数据的示意图;
图3是本申请实施例提供的数据处理方法的一种可选流程示意图;
图4是本申请实施例将待写入数据以LOG日志的形式写入非易失性内存的示意图;
图5是基于本申请实施例提供的数据处理方法将数据写入非易失性内存的示意图;
图6是本申请实施例提供的数据处理方法的另一种可选处理流程示意图;
图7是本申请实施例提供的在非易失性内存中更新数据的示意图;
图8是本申请实施例提供的数据处理装置的可选组成结构示意图;
图9是本申请实施例提供的电子设备的硬件组成结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。在以下的描述中,所涉及的术语“多个”是指至少两个。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在相关技术中,在非易失性内存中写入数据的示意图,如图1所示,写入数据的过程可以包括两个阶段,第一阶段是将待写入数据进行序列化处理后写入非易失性内存;具体的,将待写入数据中的键值对(Key-Value)序列化为二进制日志,写入非易失性内存;如图1所示,在第一阶段将键值对A:B,C:D,以及E:F写入非易失性内存。第二阶段是将key-value插入非易失性内存的多叉树结构中;由于非易失性内存只能保证8字节的原子写,因此在多叉树结构中插入Key-Value时,会导致多叉树结构中节点移动;导致多叉树结构中节点移动的内容需要通过事务的写机制来保证数据的安全性。如图1所示,将三个键值对分别插入多叉树结构中的不同节点中。但是,由于非易失性内存具有原子写的特性,因此,在第二阶段将Key-Value插入非易失性内存的多叉树结构时,再一次对Key-Value执行一次数据写入过程,这将会导致写放大的问题,降低写数据的性能。相关技术中在非易失性内存中更新数据的示意图,如图2所示,则需要在第二阶段将再次更新后的Key-Value插入非易失性内存的多叉树结构,如键值对E:F更新为E’:F’,则在多叉树结构中也需将E:F更新为E’:F’。由于在第一阶段和第二阶段均需要将Key-Value进行存储,因此会导致数据写放大的问题,降低写数据的性能。
本申请实施例提供一种数据处理方法,至少能够解决上述问题。
下面将结合本申请实施例提供的电子设备的示例性应用和实施,说明本申请实施例提供的数据处理方法。
参见图3,图3是本申请实施例提供的数据处理方法的一种可选流程示意图,将结合图3示出的步骤进行说明。
步骤S101,接收数据写入请求。
在一些实施例中,数据写入请求用于请求将待写入数据写入非易失性内存。其中,所述非易失性内存可以通过字节单元访问,或者在非易失性内存的一个单元里面存放一个或多个字节的数据。作为示例,非易失性内存可以是傲腾内存。
步骤S102,响应于数据写入请求,对待写入数据执行序列化处理。
在一些实施例中,对待写入数据进行序列化处理,可以是指将待写入数据对应的字符串进行二进制序列化处理,经序列化处理后的待写入数据可以包括数据标识和数据体(body)两部分;其中,数据标识的大小可以是8个字节,用于对数据体进行标识。数据体可以是键值对(key-value)的形式,键值对包括键(key)和值(value)。
在一些实施例中,在对待写入数据执行序列化处理时,可以对数据体的起始位置进行对齐处理。具体的,可以根据数据标识的大小对数据体的起始位置进行对齐处理;若数据标识的大小为8字节,则对数据体的起始位置进行8字节对齐处理。
步骤S103,将序列化处理后的待写入数据写入非易失性内存。
在一些实施例中,将序列化后的待写入数据以LOG日志的形式写入非易失性内存,或者将序列化后的待写入数据存储至LOG文件。
在一些实施例中,将序列化处理后的待写入数据写入非易失性内存的具体实现过程可以是:获取所述序列化处理后的待写入数据写入非易失性内存的存储偏移;基于存储偏移将序列化处理后的待写入数据写入非易失性内存。
其中,存储偏移可以是指待写入数据相对于LOG文件的起始位置的偏移,也可以是指待写入数据在LOG文件中的位置。
其中,基于存储偏移将序列化处理后的待写入数据写入非易失性内存的具体实现过程可以是:基于所述存储偏移和所述序列化处理后的待写入数据对应的标识的大小,确定所述序列化处理后的待写入数据在所述非易失性内存中的第二存储位置;将所述序列化处理后的待写入数据写入所述第二存储位置,将所述标识写入所述存储偏移对应的第三存储位置。具体的,首先,在非易失性内存中存储待写入数据(数据体)对应的数据标识,在数据标识之后的存储位置存储待写入数据。作为示例,若存储偏移为LOG文件中的第i个比特位,数据标识的大小为8个字节,则第二存储位置为第(i+64)个比特位。第三存储位置为LOG文件中的第i个比特位。将待写入数据以LOG日志的形式写入非易失性内存的示意图,如图4所示,待写入数据对应的键值对为{Key:1000,Value:XXXXX},待写入数据对应的数据标识为007,则在第二存储位置以LOG日志的形式写入键值对,在第三存储位置写入数据标识。
在一些实施例中,可以采用非事务的方式倒叙写入序列化后的待写入数据和数据标识;即数据标识在LOG文件中的写入位置在待写入数据在LOG文件中的写入位置之前。若接收到数据写入反馈消息,则认为写入非易失性内存的数据已经持久化,若读取的数据标识是正确的,则数据标识对应的数据也是有效的。
在一些实施例中,将序列化处理后的待写入数据写入非易失性内存的过程即为写入数据的第一阶段。
步骤S104,获取序列化处理后的待写入数据中的键值对在非易失性内存中的存储地址。
在一些实施例中,将序列化后的待写入数据写入非易失性内存之后,待写入数据中的键值对对应一个非易失性内存的存储地址。通过该存储地址,能够索引到非易失性内存中以LOG日志的形式存储的键值对。
步骤S105,将键值对中的键及存储地址插入非易失性内存中的多叉树结构。
在一些实施例中,将键值对中的Key以及键值对中Value在非易失性内存中的存储地址插入非易失性内存中的多叉树结构。
在一些实施例中,多叉树结构可以是btree。
在一些实施例中,将键值对中的键及存储地址插入非易失性内存中的多叉树结构的过程即为写入数据的第二阶段。由于存储地址占用的存储空间的大小远远小于键值对中的Value占用的存储空间的大小,因此,本申请实施例中,通过在多叉树结构中插入Key以及Value在非易失性内存中的存储地址,能够避免在多叉树结构中插入Key-Value导致的写放大的问题,提高数据的写性能。
基于本申请实施例提供的数据处理方法将数据写入非易失性内存的示意图,如图5所示,数据包括第一数据和第二数据,其中,第一数据的数据标识为“005”,数据标识的大小为8个字节,第一数据的数据体为“99/ZZ”,其中,“99”为键值对中的Key,“ZZ”为键值对中的Value,ZZ在非易失性内存中的LOG文件中的位置用ZZ_addr表示。第二数据的数据标识为“006”,数据标识的大小为8个字节,第二数据的数据体为“1000/XX”,其中,“1000”为键值对中的Key,“XX”为键值对中的Value,XX在非易失性内存中的LOG文件中的位置用XX_addr表示。在非易失性内存的多叉树结构中存储的是数据体中的键以及键值对中的值在LOG文件中的地址。因此,针对第一数据,在多叉树结构的一个节点上存储Key=99以及Value在LOG文件中的位置“ZZ_addr”。针对第一数据,在多叉树结构的另一个节点上存储Key=1000以及Value在LOG文件中的位置“XX_addr”。在该多叉树结构中,还包括历史存储的Key=1,以及Value在LOG文件中的地址“YY_addr”。
基于图3所示的数据处理方法,可以将待写入数据写入非易失性内存。在一些实施例中,若写入非易失性内存的数据发生更新,则本申请实施例提供的数据处理方法的另一种可选处理流程示意图,如图6所示,至少可以包括以下步骤:
步骤S201,响应于数据更新请求,在非易失性内存中更新第一键值对。
在一些实施例中,第一键值对在非易失性内存中以LOG日志的形式存储,第一键值对对应的Key以及第一键值对对应的Value在LOG日志中的位置插入至多叉树结构中。若接收到针对第一键值对的数据更新请求,则更新非易失性内存中以LOG日志的形式存储的第一键值对。
步骤S202,在多叉树结构中查找第一键值对对应的信息。
在一些实施例中,在多叉树结构中查找第一键值对对应的信息的具体处理过程,可以是在多叉树结构中查找第一键值对对应的数据标识,若在多叉树结构中能够查找到第一键值对对应的数据标识,则确认多叉树结构中包括第一键值对对应的信息;存储该数据标识的节点中存储有第一键值对对应的信息。若在多叉树结构中未查找到第一键值对对应的数据标识,则确认多叉树结构中不第一键值对对应的信息。
步骤S203,若多叉树结构中存在所述第一键值对对应的信息,则获取更新后的第一键值对中的第一键以及更新后的所述第一键值对在非易失性内存中的第一存储地址;将多叉树结构中所述第一键值对对应的信息更新为所述第一键及所述第一存储地址。
在一些实施例中,若多叉树结构包括第一键值对应的信息,则在非易失性内存中查找以LOG日志的形式存储的更新后的第一键值对中的Key,以及更新后的一键值对中的Value的在LOG日志中的位置(第一存储位置)。将多叉树结构中更新前的第一键值对对应的信息修改为更新后的第一键值对对应的信息;如将多叉树结构中的第一键值对对应的信息修改为更新后的第一键值对中的Key以及第一存储地址。
由于存储地址占用的存储空间的大小远远小于键值对中的Value占用的存储空间的大小,因此,本申请实施例中,通过在多叉树结构中更新Key以及Value在非易失性内存中的存储地址,能够避免在多叉树结构中重新插入Key-Value导致的写放大的问题,提高数据的写性能。
在一些实施例中,将多叉树结构中第一键值对对应的信息更新为第一键及所述一存储地址之后,所述方法还可以包括:在多叉树结构中删除更新前的第一键值对对应的信息。具体的,在多叉树结构中删除更新前的第一键值对中的Key以及更新前的第一键值对中的Value在LOG日志中的地址。
以图5所示的数据为例,本申请实施例提供的在非易失性内存中更新数据的示意图,如图7所示,若在非易失性内存中以LOG日志的形式存储的键值对“99/ZZ”更新为“99’/ZZ’”,键值对中的Value在LOG日志中的位置由YY更新为YY’。在多叉树结构中,键值对“99/ZZ”对应的信息更新为“99’/ZZ’_Addr”。如此,在对Key-Value进行一次或多次更新时,在多叉树结构中不需要进行数据的事务写,仅需要对Value在LOG文件中的地址进行原子更新即可,提高了再多叉树结构中插入数据的性能。
步骤S204,若多叉树结构中不存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在非易失性内存中的第一存储地址;将述第一键及第一存储地址增加至多叉树结构。
在一些实施例中,若多叉树结构包括第一键值对对应的信息,则在非易失性内存中查找以LOG日志的形式存储的更新后的第一键值对中的Key,以及更新后的一键值对中的Value的在LOG日志中的位置(第一存储位置)。在多叉树结构中的一个节点中写入更新后的第一键值对中的Key以及第一存储位置。
本申请实施例中,在将数据写入非易失性内存时,可以采用原子写的方式,即写入非易失性内存的数据全部写入或全部未写入。
本申请实施例中,在对数据进行存储时,首先以LOG日志的形式在非易失性内存中存储数据对应的Key-Value;然后,在多叉树结构中插入Key以及Value在LOG日志中的存储位置。相应的,在对数据进行更新时,首先更新非易失性内存中LOG日志的形式存储的Key-Value;然后,在多叉树结构中修改更新后的Key以及更新后的Value在LOG日志中的存储位置。如此,通过在多叉树结构中存储Key以及Value在LOG日志中的存储位置,能够避免在多叉树结构中存储Key-Value导致的写放大问题,也能够避免在更新LOG日志中的数据时在多叉树结构中修改Key-Value导致的写放大问题;优化了数据的写性能。
本申请实施例还提供了一种数据处理装置,数据处理装置的可选组成结构示意图,如图8所示,包括:
接收模块301,用于接收数据写入请求;
处理模块302,用于响应于所述数据写入请求,对待写入数据执行序列化处理;
写入模块303,用于将序列化处理后的待写入数据写入非易失性内存,所述非易失性内存可通过字节单元访问;
获取模块304,用于获取所述序列化处理后的待写入数据中的键值对在所述非易失性内存中的存储地址;
插入模块305,用于将所述键值对中的键及所述存储地址插入所述非易失性内存中的多叉树结构。
在一些实施例中,所述接收模块301,还用于接收数据更新请求;
所述写入模块303,还用于响应于所述数据更新请求,在所述非易失性内存中更新第一键值对。
在一些实施例中,所述获取模块304,还用于在所述多叉树结构中查找所述第一键值对对应的信息;若所述多叉树结构中存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
所述插入模块305,还用于将所述多叉树结构中所述第一键值对对应的信息更新为所述第一键及所述第一存储地址。
在一些实施例中,所述处理模块302,还用于在所述多叉树结构中删除更新前的所述第一键值对对应的信息。
在一些实施例中,所述获取模块304,还用于若所述多叉树结构中不存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
所述插入模块305,还用于将所述第一键及所述第一存储地址增加至所述多叉树结构。
在一些实施例中,所述写入模块303,用于获取所述序列化处理后的待写入数据写入所述非易失性内存的存储偏移;
基于所述存储偏移将所述序列化处理后的待写入数据写入所述非易失性内存。
在一些实施例中,所述写入模块303,用于基于所述存储偏移和所述序列化处理后的待写入数据对应的标识的大小,确定所述序列化处理后的待写入数据在所述非易失性内存中的第二存储位置;
将所述序列化处理后的待写入数据写入所述第二存储位置,将所述标识写入所述存储偏移对应的第三存储位置。
在一些实施例中,本申请实施例提供的数据处理方法可由终端设备或服务器实现。具体的,终端设备或服务器可以通过运行计算机程序来实现本申请实施例提供的数据处理方法,例如,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
在一些实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
以本申请实施例提供的数据处理方法是电子设备为例说明,本申请实施例提供的电子设备700的硬件组成结构示意图,图9所示的电子设备700包括:至少一个处理器701、存储器702和至少一个网络接口704。电子设备700中的各个组件通过总线系统705耦合在一起。可理解,总线系统705用于实现这些组件之间的连接通信。总线系统705除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线系统705。
可以理解,存储器702可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是ROM、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagneticrandom access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,SynchronousStatic Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random AccessMemory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random AccessMemory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data RateSynchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器702旨在包括但不限于这些和任意其它适合类型的存储器。
本申请实施例中的存储器702用于存储各种类型的数据以支持电子设备700的操作。这些数据的示例包括:用于在电子设备700上操作的任何计算机程序,如应用程序7022。实现本申请实施例方法的程序可以包含在应用程序7022中。
上述本申请实施例揭示的方法可以应用于处理器701中,或者由处理器701实现。处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器701可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、FPGA、通用处理器、控制器、MCU、MPU、或其他电子元件实现,用于执行前述方法。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的数据处理方法,例如,如图3至图7示出的数据处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperTextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (10)

1.一种数据处理方法,所述方法包括:
接收数据写入请求;
响应于所述数据写入请求,对待写入数据执行序列化处理;
将序列化处理后的待写入数据写入非易失性内存,所述非易失性内存可通过字节单元访问;
获取所述序列化处理后的待写入数据中的键值对在所述非易失性内存中的存储地址;
将所述键值对中的键及所述存储地址插入所述非易失性内存中的多叉树结构。
2.根据权利要求1所述的方法,所述方法还包括:
响应于所述数据更新请求,在所述非易失性内存中更新第一键值对。
3.根据权利要求2所述的方法,所述方法还包括:
在所述多叉树结构中查找所述第一键值对对应的信息;
若所述多叉树结构中存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
将所述多叉树结构中所述第一键值对对应的信息更新为所述第一键及所述第一存储地址。
4.根据权利要求2所述的方法,所述方法还包括:
在所述多叉树结构中删除更新前的所述第一键值对对应的信息。
5.根据权利要求3所述的方法,所述方法还包括:
若所述多叉树结构中不存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
将所述第一键及所述第一存储地址增加至所述多叉树结构。
6.根据权利要求1所述的方法,所述将序列化处理后的待写入数据写入非易失性内存,包括:
获取所述序列化处理后的待写入数据写入所述非易失性内存的存储偏移;
基于所述存储偏移将所述序列化处理后的待写入数据写入所述非易失性内存。
7.根据权利要求6所述的方法,所述基于所述存储偏移将所述序列化处理后的待写入数据写入所述非易失性内存,包括:
基于所述存储偏移和所述序列化处理后的待写入数据对应的标识的大小,确定所述序列化处理后的待写入数据在所述非易失性内存中的第二存储位置;
将所述序列化处理后的待写入数据写入所述第二存储位置,将所述标识写入所述存储偏移对应的第三存储位置。
8.一种数据处理装置,所述装置包括:
接收模块,用于接收数据写入请求;
处理模块,用于响应于所述数据写入请求,对待写入数据执行序列化处理;
写入模块,用于将序列化处理后的待写入数据写入非易失性内存,所述非易失性内存可通过字节单元访问;
获取模块,用于获取所述序列化处理后的待写入数据中的键值对在所述非易失性内存中的存储地址;
插入模块,用于将所述键值对中的键及所述存储地址插入所述非易失性内存中的多叉树结构。
9.根据权利要求8所述的装置,所述接收模块,还用于接收数据更新请求;
所述写入模块,还用于响应于所述数据更新请求,在所述非易失性内存中更新第一键值对。
10.根据权利要求9所述的装置,所述获取模块,还用于在所述多叉树结构中查找所述第一键值对对应的信息;若所述多叉树结构中存在所述第一键值对对应的信息,则获取更新后的所述第一键值对中的第一键以及更新后的所述第一键值对在所述非易失性内存中的第一存储地址;
所述插入模块,还用于将所述多叉树结构中所述第一键值对对应的信息更新为所述第一键及所述第一存储地址。
CN202111058611.8A 2021-09-07 2021-09-07 一种数据处理方法及装置 Pending CN113901273A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111058611.8A CN113901273A (zh) 2021-09-07 2021-09-07 一种数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111058611.8A CN113901273A (zh) 2021-09-07 2021-09-07 一种数据处理方法及装置

Publications (1)

Publication Number Publication Date
CN113901273A true CN113901273A (zh) 2022-01-07

Family

ID=79027645

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111058611.8A Pending CN113901273A (zh) 2021-09-07 2021-09-07 一种数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN113901273A (zh)

Similar Documents

Publication Publication Date Title
CN110018998B (zh) 一种文件管理方法、系统及电子设备和存储介质
CN112559529B (zh) 数据存储方法、装置、计算机设备及存储介质
CN112579602A (zh) 多版本数据存储方法、装置、计算机设备及存储介质
CN103530420A (zh) 数据文件的动态更新方法及装置
CN108846129B (zh) 存储数据访问方法、装置及存储介质
CN113010476A (zh) 元数据查找方法、装置、设备及计算机可读存储介质
CN111291083B (zh) 网页源码数据处理方法、装置及计算机设备
CN113504918A (zh) 设备树配置优化方法、装置、计算机设备和存储介质
CN111382179B (zh) 数据处理方法、装置及电子设备
CN112765215A (zh) 数据查询方法、装置
CN112395437B (zh) 一种3d模型的加载方法、装置、电子设备及存储介质
CN116644122A (zh) 数据事务处理方法、装置、计算机设备及存储介质
CN113901273A (zh) 一种数据处理方法及装置
CN107888686B (zh) 一种位于HBase客户端的用户数据有效性验证方法
US7861114B2 (en) System and method for recovery of memory transactions
CN112783866B (zh) 数据读取方法、装置、计算机设备和存储介质
CN115203211A (zh) 一种唯一哈希序号生成方法和系统
CN115129598A (zh) 一种sql语句的风险检测方法、装置、系统及介质
CN113535199A (zh) 基于WebApp的网站更新方法、系统和存储介质
CN114020296A (zh) 配置信息更新方法、装置、设备及可读存储介质
CN111722927A (zh) 一种数据缓存管理方法、系统、设备以及介质
CN113760195B (zh) 一种基于嵌入式的fatfs文件系统
US10795875B2 (en) Data storing method using multi-version based data structure
CN113792031B (zh) 键值对数据的处理方法、系统、设备和介质
CN115826880B (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