CN111367836A - 一种针对数据库的处理方法及装置 - Google Patents

一种针对数据库的处理方法及装置 Download PDF

Info

Publication number
CN111367836A
CN111367836A CN201811596179.6A CN201811596179A CN111367836A CN 111367836 A CN111367836 A CN 111367836A CN 201811596179 A CN201811596179 A CN 201811596179A CN 111367836 A CN111367836 A CN 111367836A
Authority
CN
China
Prior art keywords
database
database entry
data storage
page
instruction
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
CN201811596179.6A
Other languages
English (en)
Other versions
CN111367836B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811596179.6A priority Critical patent/CN111367836B/zh
Publication of CN111367836A publication Critical patent/CN111367836A/zh
Application granted granted Critical
Publication of CN111367836B publication Critical patent/CN111367836B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种针对数据库的处理方法及装置。其中,所述方法包括:获得用于恢复数据库的第一指令;根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。采用本申请提供的方法,解决了现有技术中数据库在非易失性内存中的内存处理性能低的问题。

Description

一种针对数据库的处理方法及装置
技术领域
本申请涉及数据存储领域,具体涉及一种针对数据库的处理方法及装置。
背景技术
目前的内存数据库为了保证数据不会丢失,会把内存中的数据备份到磁盘中。因为备份操作以及I/O操作的引入会极大降低内存数据库的效率。近年出现的非易失性内存(NVM,Non-Volatile Memory)具有掉电不丢失数据、字节可寻址以及读写速度快等特点,把内存数据库部署在NVM上,可以极大地提升数据库的效率。
在NVM数据库场景中有以下背景:分配对象之间有着直接的联系,例如以指针方式互相引用;对分配器的性能要求高;NVM数据库本身需要对NVM进行大量读写,故NVM读写资源宝贵;在发生掉电等情况后,需要保证数据不丢失。
针对上述背景,在现有的NVM分配器技术方案中,是将元数据全部放置在DRAM中,定期将DRAM中元数据写回的,但如此会导致部分数据无法恢复以及NVM泄漏。
发明内容
本申请提供一种针对数据库的处理方法,以解决现有技术中,数据库在非易失性内存中的内存处理性能低的问题。
本申请提供的一种针对数据库的处理方法,包括:
获得用于恢复数据库的第一指令;
根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
可选的,所述根据所述第一指令,获得存储于所述第一存储介质的第一数据库条目标识信息,包括:
根据所述第一指令,获得所述数据库的根对象;
根据所述根对象和所述根对象对应的子对象之间的关系,获得所述子对象对应的存储于所述第一存储介质的第一数据库条目的信息;
根据所述第一数据库条目的信息,获得所述第一数据库条目对应的第三页面;
根据所述第三页面,获得存储于所述第一存储介质的第一数据库条目标识信息。
可选的,所述根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,包括:
根据数据库条目的尺寸信息和编号信息中的至少一种信息,获得用于处理第一存储介质的第一数据存储结构。
可选的,所述根据所述第一指令和第一数据存储结构,针对所述数据库进行恢复处理,包括:
根据所述第一指令,在所述第一数据存储结构中将所述数据库的第一数据库条目标识为已分配;
将标识为已分配的所述第一数据库条目确定为恢复的数据库数据。
可选的,还包括:
获取用于在所述第一存储介质分配第二数据库条目的第二指令;
根据所述第二指令,确定用于内存分配的第二数据存储结构;
在所述第二数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第二数据库条目,将所述第二数据库条目对应的存储于第二存储介质的元数据标识为已分配。
可选的,还包括:
如果在所述第二数据存储结构中未查找到空闲的数据库条目,则从非易失性内存池中获得第四页面;
将所述第四页面添加到所述第二数据存储结构的链表中;
重新执行所述在所述第二数据存储结构中查找空闲的数据库条目的步骤。
可选的,还包括:
获取用于释放第三数据库条目的第三指令;
根据所述第三指令,确定所述第三数据库条目对应的第三数据存储结构;
根据所述第三数据存储结构,获得存储于第二存储介质中的所述第三数据库条目对应的元数据;
在所述元数据中,将对应的所述第三数据库条目标识为未分配。
可选的,还包括:
获取用于申请页面的第四指令;
根据所述第四指令,确定第四数据存储结构;
根据所述第四指令,从非易失性内存池中获得第五页面;
将所述第五页面添加到所述第四数据存储结构的链表中。
本申请提供一种针对数据库的处理装置,包括:
指令获得单元,用于获得用于恢复数据库的第一指令;
标识获得单元,用于根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
存储结构获得单元,用于根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
恢复处理单元,用于根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
可选的,所述标识获得单元,具体用于:
根据所述第一指令,获得所述数据库的根对象;
根据所述根对象和所述根对象对应的子对象之间的关系,获得所述子对象对应的存储于所述第一存储介质的第一数据库条目的信息;
根据所述第一数据库条目的信息,获得所述第一数据库条目对应的第三页面;
根据所述第三页面,获得存储于所述第一存储介质的第一数据库条目标识信息。
可选的,所述存储结构获得单元,具体用于:
根据数据库条目的尺寸信息和编号信息中的至少一种信息,获得用于处理第一存储介质的第一数据存储结构。
可选的,所述恢复处理单元,具体用于:
根据所述第一指令,在所述第一数据存储结构中将所述数据库的第一数据库条目标识为已分配;
将所述已分配的第一数据库条目确认为恢复的数据库数据。
可选的,还包括分配单元,所述分配单元用于:
获取用于在所述第一存储介质分配第二数据库条目的第二指令;
根据所述第二指令,确定用于内存分配的第二数据存储结构;
在所述第二数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第二数据库条目,将所述第二数据库条目对应的存储于第二存储介质的元数据标识为已分配。
可选的,所述分配单元还用于:如果在所述第二数据存储结构中未查找到空闲的数据库条目,则从非易失性内存池中获得第四页面;
将所述第四页面添加到所述第二数据存储结构的链表中;
重新执行所述在所述第二数据存储结构中查找空闲的数据库条目的步骤。
可选的,还包括释放单元,所述释放单元用于:
获取用于释放第三数据库条目的第三指令;
根据所述第三指令,确定所述第三数据库条目对应的第三数据存储结构;
根据所述第三数据存储结构,获得存储于第二存储介质中的所述第三数据库条目对应的元数据;
在所述元数据中,将对应的所述第三数据库条目标识为未分配。
可选的,还包括申请新页面单元,所述申请新页面单元用于:
获取用于申请页面的第四指令;
根据所述第四指令,确定第四数据存储结构;
根据所述第四指令,从非易失性内存池中获得第五页面;
将所述第五页面添加到所述第四数据存储结构的链表中。
本申请提供一种电子设备,所述电子设备包括:
处理器;
存储器,用于存储链表的处理程序,所述程序在被所述处理器读取执行时,执行如下操作:
获得用于恢复数据库的第一指令;
根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
本申请提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
获得用于恢复数据库的第一指令;
根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
本申请提供一种针对数据库的处理方法,包括:
获得用于分配第四数据库条目的第五指令;
根据所述第五指令,确定用于第一存储介质分配的第三数据存储结构,所述第三数据存储结构包括第六页面,所述第六页面包括第三数据库条目标识信息;
在所述第三数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第四数据库条目,将所述第四数据库条目对应的存储于第二存储介质的元数据标识为已分配。
本申请提供一种针对数据库的处理方法,包括:
获取用于释放第一存储介质中第五数据库条目的第六指令;
根据所述第六指令,确定所述第五数据库条目对应的第四数据存储结构,所述第四数据存储结构包括第七页面,所述第七页面包括第四数据库条目标识信息;
根据所述第四数据存储结构,获得存储于第二存储介质中的所述第五数据库条目对应的元数据;
在所述元数据中,将对应的所述第五数据库条目标识为未分配。与现有技术相比,本申请具有如下优点:
采用本申请提供的方法,使用基于slab机制的内存分配方式,在分配出去的数据库数据对象之间互相有关联的情况下,在非易失性内存上为每个页面保存数据库条目标识信息,保证了在非易失性内存中数据库内容的可恢复性,而且无需记录分配日志,重做日志,分配版本等,解决了现有技术中数据库在非易失性内存中的内存处理性能低的问题。
附图说明
图1是本申请第一实施例的流程图;
图2是本申请第一实施例涉及的数据存储结构示意图;
图3是本申请第一实施例涉及的一个例子的示意图。
图4是本申请第二实施例的单元框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种针对数据库的处理方法。请参看图1,该图为本申请第一实施例的流程图。以下结合图1对本申请第一实施例提供一种针对数据库的处理方法进行详细说明。所述方法包括如下步骤:
步骤S101:获得用于恢复数据库的第一指令。
本步骤用于获得用于恢复数据库的第一指令。
目前,随着大数据时代的到来。提高数据的访问效率越来越被重视。显然,内存数据库是提高效率的最佳选择。然而内存数据库还存在很多缺陷,例如在保证效率的同时,内存数据库不能够提供比较强的一致性,内存数据库掉电或者故障后数据有可能丢失,内存数据库要在外存储器中做备份。
以数据层次的服务来说,key-value类型的数据库被应用于各个行业,例如高访问速度需求的数据中心、移动终端设备和图形处理平台等。作为应用中最基本的存储服务,把key-value型的数据存储部署到内存中,能够提高相关应用的效率。随着非易失性存储技术的发展,新一代的非易失性存储设备提供了诱人的特性:存储速度快,字节可寻址以及非易失性,依据此特性,非易失性内存是内存数据库存储的最佳选择。
把内存数据库直接运行于非易失性内存上是不合理的。现有的内存数据库都是基于现有的DRAM设计的,所以不能充分适用于非易失性内存。大部分内存key-value型的存储引擎都是由内存作为运行时存储空间,以磁盘或者固态硬盘作为持久化存储。
DRAM是具有高效的读写的特性,同时又字节可寻址。这些特性使得其存取效率和CPU相匹配。但是DRAM也有一个弊端就是其易失性,掉电后存储内容全部丢失。在互联网数据量迅速发展的促使下,数据的实时处理能力的需求不断提高。同时为了克服DRAM的易失性,非易失性内存技术也在迅速发展。
现有NVM中内存分配器大致有如下几种NVM管理方式:
方案1:将元数据全部放置在DRAM中,定期将DRAM中元数据写回NVM。
方案2:将元数据直接放置在NVM中。
方案3:使用版本阵列(Version Map)管理对象分配信息,其他元数据放置在DRAM中。
但是这些方案都有一些缺点。
对于方案1,将元数据全部放置在DRAM中,定期将DRAM中元数据写回的,但如此会导致部分数据无法恢复以及NVM泄漏。
对于方案2,将大量元数据直接放置在NVM中的,可以保证数据的可恢复性,但是会对申请和释放的速度造成影响,同时会占用NVM的写入资源
对于方案3,使用版本阵列(Version Map)管理对象分配信息,主要优势在于可以在线恢复,恢复效率高,但每次分配依然将信息需要写入NVM。
现有方案有对NVM中元数据进行修改后不立即写入NVM而是等待CPU缓存淘汰写回的,如此虽然对申请和释放的速度影响较小,但依然会占用NVM的写入资源,影响系统的整体吞吐。现有方案不支持NVM整理。对于libpmemobj中的slab_allocator,由于slab_allocator依然是调用了libpmemobj的分配函数,依然需要每次记录redo log以防止突然断电等。会对申请和释放的速度造成影响,同时会占用NVM的写入资源。
本实施例提供的方法,通过将绝大多数元数据放置在内存中的方式规避对NVM的写入操作,提供近似于DRAM内存分配器的分配性能。同时通过分配对象之间的关系以及为每个页面保存数据库条目大小提供恢复能力且保证恢复后无NVM泄漏。以libpmemobj的slab_allocator作为对比,本实施例在分配释放时无需记录redo log,也几乎无需对NVM进行任何写入,可以提供更高的性能。
在非易失性内存中的数据库需要恢复时,获得所述第一指令。例如在数据库断电时,就需要恢复非易失性内存中的数据库,所述指令可以包括需要恢复的数据库信息。
步骤S102:根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息。
本步骤用于根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息。
本实施例中,所述第一数据库条目标识信息可以存放于采用slab机制分配的页面的头部。请参看图2,图中的page_info即为存放第一数据库条目标识信息。所述第一数据库条目标识信息可以是采用slab机制分配的页面的数据库条目尺寸,例如图2中,slab_manager_0存储的页面的数据条目尺寸是64。在获得存放于非易失性内存中的数据库条目的地址信息,就可以获得所述地址信息对应的采用slab机制分配的页面,根据页面中第一数据库条目标识信息,例如数据条目尺寸是64,就可以确定具体的slab_manager数组元素,从而获得更多的信息。
数据库在所述非易失性内存中采用slab机制获得内存。内核中的slab是基于对象进行管理的,所谓的对象可以内核中的数据结构(例如:task_struct,file_struct等)。相同类型的对象归为一类,每当要申请这样一个对象时,slab分配器就从一个slab列表中分配一个这样大小的单元出去,而当要释放时,将其重新保存在该列表中,而不是直接返回给伙伴系统,从而避免内部碎片。slab分配器并不丢弃已经分配的对象,而是释放并把它们保存在内存中。slab分配对象时,会使用最近释放的对象的内存块,因此其驻留在cpu高速缓存中的概率会大大提高。
本实施例中所用的slab机制,是基于不同的待分配内存尺寸进行分配,和内核中基于对象类型的slab略有区别。例如,本实施例所使用的slab机制,有64B和72B的slab,如果此时需要分配70B的内存空间,则会从72B的slab里面分配。从72B的slab中释放的内存空间可以提供给68B或其他大小介于65B和72B之间的内存分配申请者。
本实施例中,数据库利用slab机制获得数据库条目的内存。所述数据库条目可以是key-value存储中的value等。例如,如果key-value存储中的value的尺寸是46,则在图2中,非易失性内存分配器就在page中数据条目尺寸为64的slab_manager_0来提供内存。
请见图2,是本实施例中用到的slab结构的数据存储结构示意图。
本实施例中对于NVM的管理利用slab结构,由一个slab_mangers数组构成。数组中包括为为每种不同大小数据库条目创建的slab_manager。slab_manager会从NVM池中获取页面并进行切分和分配。slab_manager会按照页面中已分配的数据库条目的比例将页面归到不同的链表中。特别的,所有分配和释放所需的页面元数据均在DRAM中,在NVM中保存的只有额外的一份数据库条目的大小,用于恢复。
图2中,slab_manager数组可以用来管理不同尺寸的数据库条目内存。例如图2中,slab_manager_0用来管理64byte的数据库条目。每个slab_manager保存了三种链表,分别为full,partial,free。其中full链表保存了全部被使用的页面,partial链表中的页面部分被使用,free保存的页面完全没有被使用。在图2中,每个页面有一块区域用来存储数据库条目标识信息。所述数据库条目标识信息可以为数据库条目的尺寸信息。在图2中,page_info即对应的数据库条目标识信息。
所述根据所述第一指令,获得存储于所述非易失性内存的第一数据库条目标识信息,包括:
根据所述第一指令,获得所述数据库的根对象;
根据所述根对象和所述根对象对应的子对象之间的关系,获得所述子对象对应的存储于所述非易失性内存的第一数据库条目的信息;
根据所述第一数据库条目的信息,获得所述第一数据库条目对应的第三页面;
根据所述第三页面,获得存储于所述非易失性内存的第一数据库条目标识信息。
以当前常用的Redis数据库为例,其每个数据库都是由redisDb结构体来标识的。在这个结构体中有一个字典dict字段,保存数据库中所有的key。对于key的索引结构是哈希表。每个key对应一个value,这个value存储的就是数据库的具体内容。所述根对象可以为redisDb结构体,子对象可以为字典dict中的所有key。例如通过dict字段的key1,可以获得keyl对应的value1,根据value1的地址,可以获得value1在上述slab结构中对应的页面page1,在page1中可以获取数据库条目标识信息,如数据库条目的尺寸(如64byte)。
图3是本步骤的另外一个例子。图3中存储一个经典的kV数据库的结构。Hashtable保存在NVM的固定偏移位置,首先找到Hash table,然后从第一个Hash head开始访问。由于该Hash head中有一个指针指向Key A,可以得知Key A是已分配的,进而通过KeyA的内存地址找到对应的页面,并从页面中读出该页面内的数据库条目大小。接着用数据库条目大小查找到Key A所属的slab结构。
步骤S103:根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息。
本步骤用于根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括由第二页面组成的链表,所述第二页面包括第二数据库条目标识信息。
所述第一数据存储结构即在图2提供的用于本实施例的slab结构。请见图2,是本实施例中用到的slab结构的数据存储结构示意图。
本实施例中对于NVM的管理利用slab结构,由一个slab_mangers数组构成。数组中包括为每种不同大小数据库条目创建的slab_manager。slab_manager会从NVM池中获取页面并进行切分和分配。slab_manager会按照页面中已分配的数据库条目的比例将页面归到不同的链表中。特别的,所有分配和释放所需的页面元数据均在DRAM中,在NVM中保存的只有额外的一份数据库条目的大小,用于恢复。
图2中,slab_manager数组用来管理不同尺寸的数据库条目内存。例如图2中,slab_manager_0用来管理64byte的数据库条目。每个slab_manager保存了三种链表,分别为full,partial,freelist。其中full链表保存了全部被使用的页面,partial链表中的页面部分被使用,freelist保存的页面完全没有被使用。在图2中,每个页面有一块区域用来存储数据库条目标识信息。所述数据库条目标识信息可以为数据库条目的尺寸信息。在图2中,page_info即对应的数据库条目标识信息。
所述根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,包括:
根据数据库条目的尺寸信息和编号信息中的至少一种信息,获得用于处理非易失性内存的第一数据存储结构。
如图2中,page_info可以是数据库条目的尺寸信息,如64byte。根据这个信息,就可以获得具体slab_manager数组的元素,从而可以获得slab结构的各种信息。
步骤S104:根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
本步骤用于根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
所述根据所述第一指令和第一数据存储结构,针对所述数据库进行恢复处理,包括:
根据所述第一指令,在所述第一数据存储结构中将所述数据库的第一数据库条目标识为已分配;
将标识为已分配的所述第一数据库条目确定为恢复的数据库数据。
根据恢复数据库的第一指令,在所述第一数据存储结构中将所述数据库的第一数据库条目标识为已分配,将标识为已分配的所述第一数据库条目确定为恢复的数据库数据。
本实施例提供的针对数据库的处理方法,还包括:
获取用于在所述非易失性内存分配第二数据库条目的第二指令;
根据所述第二指令,确定用于内存分配的第二数据存储结构;
在所述第二数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第二数据库条目,将所述第二数据库条目对应的存储于动态随机存储器的元数据标识为已分配。
上述步骤提供一种NVM中的内存分配方法,首先根据所述第二指令中待分配内存的数据库条目尺寸等信息查找易失性内存中的slab结构,寻找空闲的数据库条目,在找到合适的空闲数据库条目后,修改易失性内存中的slab结构和页面元数据,将该数据库条目取出。例如在图2中的partial链表中分配了一个数据库条目之后,所述数据库条目在slab结构中的页面中所有数据库条目都已经被分配了,那么该页面可以被放到full链表中。这里页面元数据可以在DRAM中存储,修改所述页面元数据,即在所述页面元数据将所述页面元数据对应的数据库条目标识为已分配。
本实施例将绝大多数元数据放置在动态随机存储器中的方式规避对NVM的写入操作,提供近似于动态随机存储器内存分配器的分配性能。
现有技术中,每次在NVM中进行内存分配都要将相关内存分配信息写入NVM,而NVM的写入速度比较慢,容易影响内存分配性能。采用本实施例提供的方法,通过记录每个页面对应的数据库条目尺寸的方式,使得只需要在分配新的一页的时候才需要将相关内存分配信息写入NVM,从而提升了内存分配的性能。
本实施例提供的针对数据库的处理方法,还包括:
如果在所述第二数据存储结构中未查找到空闲的数据库条目,则从非易失性内存池中获得第四页面;
将所述第四页面添加到所述第二数据存储结构的链表中;
重新执行所述在所述第二数据存储结构中查找空闲的数据库条目的步骤。
这里的第二数据存储结构即图2中的slab结构。
如果在图2所述slab_manager中未查找到空闲的数据库条目,则向非易失性内存池申请新页面,即第四页面。然后将所述第四页面添加到所述第二数据存储结构的链表中。这样slab_manager就有了新的数据空间,重新执行所述在所述第二数据存储结构中查找空闲的数据库条目的步骤,就可以获得新的数据库条目。
本实施例提供的针对数据库的处理方法,还包括:
获取用于释放第三数据库条目的第三指令;
根据所述第三指令,确定所述第三数据库条目对应的第三数据存储结构;
根据所述第三数据存储结构,获得存储于第二存储介质中的所述第三数据库条目对应的元数据;
在所述元数据中,将对应的所述第三数据库条目标识为未分配。
修改易失性内存中的slab结构和元数据,将被释放的数据库条目归还到对应的页面中。首先获取用于释放数据库条目的指令,根据该数据库条目信息,如数据条目的地址,可以获得所述数据库条目的slab结构,根据所述slab结构的信息,可以获得存储于动态随机存储器中的元数据信息。在所述元数据中,将对应的所述第三数据库条目标识为未分配。
本实施例提供的针对数据库的处理方法,还包括:
获取用于申请页面的第四指令:
根据所述第四指令,确定第四数据存储结构;
根据所述第四指令,从非易失性内存池中获得第五页面;
将所述第五页面添加到所述第四数据存储结构的链表中。
当图2中的slab_manager的链表中没有可分配的数据时,可以使用申请页面指令。根据申请页面的指令,确定是具体是哪一个slab_mangager需要获得新页面,然后向非易失性内存池发出申请,获得新页面,将新页面添加到对应的链表中。
在上述的实施例中,提供了一种针对数据库的处理方法,与之相对应的,本申请还提供一种针对数据库的处理装置。
请参看图4,其为本申请的一种针对数据库的处理装置实施例的流程图。由于本实施例,即第二实施例,基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
本实施例提供的一种针对数据库的处理装置,包括:
指令获得单元401,用于获得用于恢复数据库的第一指令;
标识获得单元402,用于根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
存储结构获得单元403,用于根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
恢复处理单元404,用于根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
本实施例中,所述标识获得单元,具体用于:
根据所述第一指令,获得所述数据库的根对象;
根据所述根对象和所述根对象对应的子对象之间的关系,获得所述子对象对应的存储于所述非易失性内存的第一数据库条目的信息;
根据所述第一数据库条目的信息,获得所述第一数据库条目对应的第三页面;
根据所述第三页面,获得存储于所述非易失性内存的第一数据库条目标识信息。
本实施例中,所述存储结构获得单元,具体用于:
根据数据库条目的尺寸信息和编号信息中的至少一种信息,获得用于处理非易失性内存的第一数据存储结构。
本实施例中,所述恢复处理单元,具体用于:
根据所述第一指令,在所述第一数据存储结构中将所述数据库的第一数据库条目标识为已分配;
将所述已分配的第一数据库条目确认为恢复的数据库数据。
本实施例中,所述处理装置还包括分配单元,所述分配单元用于:
获取用于在所述非易失性内存分配第二数据库条目的第二指令;
根据所述第二指令,确定用于内存分配的第二数据存储结构;
在所述第二数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第二数据库条目,将所述第二数据库条目对应的存储于第二存储介质的元数据标识为已分配。
本实施例中,所述分配单元还用于:如果在所述第二数据存储结构中未查找到空闲的数据库条目,则从非易失性内存池中获得第四页面;
将所述第四页面添加到所述第二数据存储结构的链表中;
重新执行所述在所述第二数据存储结构中查找空闲的数据库条目的步骤。
本实施例中,所述处理装置还包括释放单元,所述释放单元用于:
获取用于释放第三数据库条目的第三指令;
根据所述第三指令,确定所述第三数据库条目对应的第三数据存储结构;
根据所述第三数据存储结构,获得存储于第二存储介质中的所述第三数据库条目对应的元数据;
在所述元数据中,将对应的所述第三数据库条目标识为未分配。
本实施例中,所述处理装置还包括申请新页面单元,所述申请新页面单元用于:
获取用于申请页面的第四指令;
根据所述第四指令,确定第四数据存储结构;
根据所述第四指令,从非易失性内存池中获得第五页面;
将所述第五页面添加到所述第四数据存储结构的链表中。
本申请第三实施例提供一种电子设备,所述电子设备包括:
处理器;
存储器,用于存储链表的处理程序,所述程序在被所述处理器读取执行时,执行如下操作:
获得用于恢复数据库的第一指令;
根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
本申请第四实施例提供一种计算机可读取存储介质,其上存储有计算机程序,该程序被处理器执行时,实现以下步骤:
获得用于恢复数据库的第一指令;
根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
本申请第五实施例提供一种针对数据库的处理方法,包括:
获得用于分配第四数据库条目的第五指令;
根据所述第五指令,确定用于第一存储介质分配的第三数据存储结构,所述第三数据存储结构包括第六页面,所述第六页面包括第三数据库条目标识信息;
在所述第三数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第四数据库条目,将所述第四数据库条目对应的存储于第二存储介质的元数据标识为已分配。
本申请第六实施例提供一种针对数据库的处理方法,包括:
获取用于释放第一存储介质中第五数据库条目的第六指令;
根据所述第六指令,确定所述第五数据库条目对应的第四数据存储结构,所述第四数据存储结构包括第七页面,所述第七页面包括第四数据库条目标识信息;
根据所述第四数据存储结构,获得存储于第二存储介质中的所述第五数据库条目对应的元数据;
在所述元数据中,将对应的所述第五数据库条目标识为未分配。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个操作器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (20)

1.一种针对数据库的处理方法,其特征在于,包括:
获得用于恢复数据库的第一指令;
根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
2.根据权利要求1所述的针对数据库的处理方法,其特征在于,所述根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息,包括:
根据所述第一指令,获得所述数据库的根对象;
根据所述根对象和所述根对象对应的子对象之间的关系,获得所述子对象对应的存储于所述第一存储介质的第一数据库条目的信息;
根据所述第一数据库条目的信息,获得所述第一数据库条目对应的第三页面;
根据所述第三页面,获得第一存储介质中第一数据库条目标识信息。
3.根据权利要求1所述的针对数据库的处理方法,其特征在于,所述根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,包括:
根据数据库条目的尺寸信息和编号信息中的至少一种信息,获得用于管理所述第一存储介质的第一数据存储结构。
4.根据权利要求1所述的针对数据库的处理方法,其特征在于,所述根据所述第一指令和第一数据存储结构,针对所述数据库进行恢复处理,包括:
根据所述第一指令,在所述第一数据存储结构中将所述数据库的第一数据库条目标识为已分配;
将标识为已分配的所述第一数据库条目确定为恢复的数据库数据。
5.根据权利要求1所述的针对数据库的处理方法,其特征在于,还包括:
获取用于在所述第一存储介质分配第二数据库条目的第二指令;
根据所述第二指令,确定用于第一存储介质分配的第二数据存储结构;
在所述第二数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第二数据库条目,将所述第二数据库条目对应的存储于第二存储介质的元数据标识为已分配。
6.根据权利要求5所述的针对数据库的处理方法,其特征在于,还包括:
如果在所述第二数据存储结构中未查找到空闲的数据库条目,则从非易失性内存池中获得第四页面;
将所述第四页面添加到所述第二数据存储结构的链表中;
重新执行所述在所述第二数据存储结构中查找空闲的数据库条目的步骤。
7.根据权利要求1所述的针对数据库的处理方法,其特征在于,还包括:
获取用于释放第三数据库条目的第三指令;
根据所述第三指令,确定所述第三数据库条目对应的第三数据存储结构;
根据所述第三数据存储结构,获得存储于第二存储介质中的所述第三数据库条目对应的元数据;
在所述元数据中,将对应的所述第三数据库条目标识为未分配。
8.根据权利要求1所述的针对数据库的处理方法,其特征在于,还包括:
获取用于申请页面的第四指令;
根据所述第四指令,确定第四数据存储结构;
根据所述第四指令,从非易失性内存池中获得第五页面;
将所述第五页面添加到所述第四数据存储结构的链表中。
9.一种针对数据库的处理装置,其特征在于,包括:
指令获得单元,用于获得用于恢复数据库的第一指令;
标识获得单元,用于根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
存储结构获得单元,用于根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
恢复处理单元,用于根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
10.根据权利要求9所述的针对数据库的处理装置,其特征在于,所述标识获得单元,具体用于:
根据所述第一指令,获得所述数据库的根对象;
根据所述根对象和所述根对象对应的子对象之间的关系,获得所述子对象对应的存储于所述第一存储介质的第一数据库条目的信息;
根据所述第一数据库条目的信息,获得所述第一数据库条目对应的第三页面;
根据所述第三页面,获得存储于所述第一存储介质的第一数据库条目标识信息。
11.根据权利要求9所述的针对数据库的处理装置,其特征在于,所述存储结构获得单元,具体用于:
根据数据库条目的尺寸信息和编号信息中的至少一种信息,获得用于处理第一存储介质的第一数据存储结构。
12.根据权利要求9所述的针对数据库的处理装置,其特征在于,所述恢复处理单元,具体用于:
根据所述第一指令,在所述第一数据存储结构中将所述数据库的第一数据库条目标识为已分配;
将所述已分配的第一数据库条目确认为恢复的数据库数据。
13.根据权利要求9所述的针对数据库的处理装置,其特征在于,还包括分配单元,所述分配单元用于:
获取用于在所述第一存储介质分配第二数据库条目的第二指令;
根据所述第二指令,确定用于内存分配的第二数据存储结构;
在所述第二数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第二数据库条目,将所述第二数据库条目对应的存储于第二存储介质的元数据标识为已分配。
14.根据权利要求13所述的针对数据库的处理装置,其特征在于,所述分配单元还用于:如果在所述第二数据存储结构中未查找到空闲的数据库条目,则从非易失性内存池中获得第四页面;
将所述第四页面添加到所述第二数据存储结构的链表中;
重新执行所述在所述第二数据存储结构中查找空闲的数据库条目的步骤。
15.根据权利要求9所述的针对数据库的处理装置,其特征在于,还包括释放单元,所述释放单元用于:
获取用于释放第三数据库条目的第三指令;
根据所述第三指令,确定所述第三数据库条目对应的第三数据存储结构;
根据所述第三数据存储结构,获得存储于第二存储介质中的所述第三数据库条目对应的元数据;
在所述元数据中,将对应的所述第三数据库条目标识为未分配。
16.根据权利要求9所述的针对数据库的处理装置,其特征在于,还包括申请新页面单元,所述申请新页面单元用于:
获取用于申请页面的第四指令;
根据所述第四指令,确定第四数据存储结构;
根据所述第四指令,从非易失性内存池中获得第五页面;
将所述第五页面添加到所述第四数据存储结构的链表中。
17.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储器,用于存储链表的处理程序,所述程序在被所述处理器读取执行时,执行如下操作:
获得用于恢复数据库的第一指令;
根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
18.一种计算机可读取第一存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现以下步骤:
获得用于恢复数据库的第一指令;
根据所述第一指令,获得第一存储介质中第一页面的第一数据库条目标识信息;
根据所述第一数据库条目标识信息,获得用于管理所述第一存储介质的第一数据存储结构,所述第一数据存储结构包括第二页面,所述第二页面包括第二数据库条目标识信息;
根据所述第一指令和所述第一数据存储结构,针对所述数据库进行恢复处理。
19.一种针对数据库的处理方法,其特征在于,包括:
获得用于分配第四数据库条目的第五指令;
根据所述第五指令,确定用于第一存储介质分配的第三数据存储结构,所述第三数据存储结构包括第六页面,所述第六页面包括第三数据库条目标识信息;
在所述第三数据存储结构中查找空闲的数据库条目,将所述空闲的数据库条目作为分配的所述第四数据库条目,将所述第四数据库条目对应的存储于第二存储介质的元数据标识为已分配。
20.一种针对数据库的处理方法,其特征在于,包括:
获取用于释放第一存储介质中第五数据库条目的第六指令;
根据所述第六指令,确定所述第五数据库条目对应的第四数据存储结构,所述第四数据存储结构包括第七页面,所述第七页面包括第四数据库条目标识信息;
根据所述第四数据存储结构,获得存储于第二存储介质中的所述第五数据库条目对应的元数据;
在所述元数据中,将对应的所述第五数据库条目标识为未分配。
CN201811596179.6A 2018-12-25 2018-12-25 一种针对数据库的处理方法及装置 Active CN111367836B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811596179.6A CN111367836B (zh) 2018-12-25 2018-12-25 一种针对数据库的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811596179.6A CN111367836B (zh) 2018-12-25 2018-12-25 一种针对数据库的处理方法及装置

Publications (2)

Publication Number Publication Date
CN111367836A true CN111367836A (zh) 2020-07-03
CN111367836B CN111367836B (zh) 2023-06-13

Family

ID=71206080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811596179.6A Active CN111367836B (zh) 2018-12-25 2018-12-25 一种针对数据库的处理方法及装置

Country Status (1)

Country Link
CN (1) CN111367836B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161297A1 (en) * 2009-12-28 2011-06-30 Riverbed Technology, Inc. Cloud synthetic backups
CN106104515A (zh) * 2014-01-24 2016-11-09 新加坡科技研究局 利用非易失性存储器的文件系统设计和故障恢复方法
US20170147499A1 (en) * 2015-11-25 2017-05-25 Sandisk Technologies Llc Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device
CN107220142A (zh) * 2016-03-22 2017-09-29 阿里巴巴集团控股有限公司 执行数据恢复操作的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161297A1 (en) * 2009-12-28 2011-06-30 Riverbed Technology, Inc. Cloud synthetic backups
CN106104515A (zh) * 2014-01-24 2016-11-09 新加坡科技研究局 利用非易失性存储器的文件系统设计和故障恢复方法
US20170147499A1 (en) * 2015-11-25 2017-05-25 Sandisk Technologies Llc Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device
CN107220142A (zh) * 2016-03-22 2017-09-29 阿里巴巴集团控股有限公司 执行数据恢复操作的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SUPARNA BHATTACHARYA 等: "Coordinating backup/recovery and data consistency between database and file systems" *
马殿龙: "面向非易失性内存的持久化Key-value内存数据库设计与实现" *

Also Published As

Publication number Publication date
CN111367836B (zh) 2023-06-13

Similar Documents

Publication Publication Date Title
US9727452B2 (en) Distributing metadata across multiple different disruption regions within an asymmetric memory system
US9436597B1 (en) Using non-volatile memory resources to enable a virtual buffer pool for a database application
US8135904B2 (en) Method and apparatus for facilitating fast wake-up of a non-volatile memory system
KR100390734B1 (ko) 고정적이고 확실한 저장 할당을 위한 시스템 및 방법
CN109902034B (zh) 快照创建方法、装置、电子设备及机器可读存储介质
US20030005219A1 (en) Partitioning cache metadata state
KR102443600B1 (ko) 하이브리드 메모리 시스템
CN110716845B (zh) 一种Android系统的日志信息读取的方法
US10387399B1 (en) Efficient database journaling using non-volatile system memory
US11640244B2 (en) Intelligent block deallocation verification
US10198352B2 (en) Efficient pointer swizzling for persistent objects
KR20200117032A (ko) 하이브리드 메모리 시스템
Chen et al. A unified framework for designing high performance in-memory and hybrid memory file systems
US11055184B2 (en) In-place garbage collection of a sharded, replicated distributed state machine based on supersedable operations
CN116680233A (zh) 一种文件访问方法、系统、电子设备及机器可读存储介质
CN111367836B (zh) 一种针对数据库的处理方法及装置
CN115687185A (zh) 基于mmap内存映射的手持端低功耗数据采集方法
US7949632B2 (en) Database-rearranging program, database-rearranging method, and database-rearranging apparatus
US11467777B1 (en) Method and system for storing data in portable storage devices
CN115268767A (zh) 数据处理方法以及装置
US11354233B2 (en) Method and system for facilitating fast crash recovery in a storage device
CN111444114B (zh) 一种非易失性内存中数据的处理方法、装置及系统
US11579789B2 (en) Techniques for managing context information for a storage device
KR20090131142A (ko) 메모리 관리 장치 및 방법
CN113448722A (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