内存关系数据库的数据组织及访问方法

文档序号:9911245阅读:583来源:国知局
内存关系数据库的数据组织及访问方法
【技术领域】
[0001]本发明属于计算机技术领域,具体涉及一种关系数据库在内存中的数据组织及访问方法。
[0002]背景意义
[0003]关系数据库(relat1naldatabase)是一种采用关系模型作为数据的组织方式。关系数据库的特点在于将具有相同属性的数据独立地存储在一个表中。用户对数据库里的表进行查询、插入、删除和连接等操作,实际是读、写存储设备上的数据。要从表中数据的逻辑地址找到其在存储设备上的物理位置,需要有一个索引结构。因此,访问存储设备的性能对数据库的性能有至关重要的影响。
[0004]内存关系数据库(in-memorydatabase)是指将关系数据库的部分数据或全部数据存放在内存中。目前,内存数据库中的数据在物理内存中有两种组织及访问方式:
[0005]1.现有技术一:数据库的表以文件的形式存放在内存中。这种方式下,访问表中的数据实际是访问文件系统中的文件,需要调用文件系统的接口,例如read()、write()。访问数据库的性能依赖访问文件的性能。
[0006]现有技术一有以下缺点:
[0007]应用程序访问表中的数据需要至少一次拷贝操作,即把数据从文件系统拷贝到用户缓存。
[0008]访问表的数据需要切换内核态,并经过文件系统的多个软件层次,例如Linux操作系统中的虚拟文件系统层(virtual file system)。因此会有较大的性能开销。
[0009]所以,现有技术一在组织和访问表的过程中有较大的软件层性能开销。
[0010]2.现有技术二:使用专有内存管理机制管理数据库所使用的内存。例如目前卡耐基梅隆大学和Intel的联合研究 “Let,s Talk About Storage&Recovery Methods forNon-Volatile Memory Database Systems”,In Proceedings of the 2015ACM SIGMODInternat1nal Conference on Management of Data,Joy Arulraj,Andrew Pavlo,andSubramanya R.Dulloor,ISBN:978-1-4503-2758-9( “谈非易失性内存数据库系统的存储和恢复方法”,2015美国计算机学会SIGMOD数据管理国际会议,Joy Arulraj ,Andrew Pavlo,and Subramanya R.Dulloor,ISBN: 978-1-4503-2758-9),使用一个特殊的内存分配器给数据库的表分配内存,直接把存放数据的物理内存映射到一块用户虚拟地址空间。此时用户访问已映射好的内存就不再需要拷贝操作。为了确保已映射的物理内存不会丢失,已映射的物理内存总是使用固定的用户虚拟地址空间,并且在操作系统中保存已有的映射关系。
[0011]现有技术二有以下缺点:
[0012]已有的数据持续占用虚拟地址空间;
[0013]由于已分配的用户虚拟地址空间和物理内存有固定的映射关系,因此需要额外的机制记录和回收物理内存和虚拟内存;
[0014]数据库的启动速度慢,需要在用户地址空间重建整个数据库中数据的映射关系;
[0015]由于地址映射方式的问题,表的大小受限于虚拟地址空间的大小和表的数量;
[0016]此外,在表的增长过程中会出现虚拟地址冲突问题,需要额外的冲突控制机制。

【发明内容】

[0017]有鉴于此,本发明提供一种内存关系数据库的数据组织及访问方法,能实现快速映射和高速访问表中的数据。
[0018]本发明通过以下技术手段解决上述技术问题:
[0019]内存关系数据库的数据组织方法,包括如下步骤:
[0020]a)以表的形式组织数据;
[0021 ] b)为每个表建立连续且独立的虚拟地址空间;
[0022]c)将数据在内存中的物理地址存储在表页表中;
[0023]d)将表和表页表的映射关系存放在内存关系数据库的索引表中;
[0024]e)用内存关系数据库管理数据和进程页表的物理内存。
[0025]进一步,所述步骤b)中,所述表页表为一级页表或多级页表,为多级页表时,其中最后一级页表中存放有数据页的起始物理地址。
[0026]进一步,所述步骤d)中,索引表的数据结构为数组、链表或结构体。
[0027]进一步,所述索引表中保存有表及表页表的最尚级指针,所述最尚级指针指向表页表。
[0028]内存关系数据库的数据访问方法,包括如下步骤:
[0029]I)建立映射;具体包括如下步骤:
[0030]11)接收到进程为表建立映射的请求;
[0031]12)从发出请求的进程的虚拟地址空间中获得一块独立且连续的虚拟地址空间,作为要访问的表在进程中的虚拟地址空间,并返回表在虚拟地址空间的起始地址;
[0032]13)利用控制寄存器,访问进程的进程页表,找到表的虚拟地址空间在进程页表中对应的条目;
[0033 ] 14)在内存关系数据库的索引表中找到表的最高级指针;
[0034]15)将最高级指针的值写入进程页表中对应的条目,即完成表在进程页表中的映射;
[0035]2)读数据或写数据;
[0036]读数据时包括如下步骤:
[0037]211)接收进程读取表中数据的请求;
[0038]212)通过表在虚拟地址空间的起始虚拟地址加上进程所请求的数据在表中的偏移量,计算出所请求的数据的虚拟地址;
[0039]213)通过内存映射设备和连接到进程页表的表页表,将步骤212)中获得的数据的虚拟地址转换为数据在内存关系数据库所管理的内存上的物理地址;
[0040]214)进程访问物理地址所指数据页中的数据;
[0041 ]写数据时包括如下步骤:
[0042]221)接收进程向表中写数据的请求;
[0043]222)通过表在虚拟地址空间的起始虚拟地址,加上进程写数据的位置在表中的偏移量,计算出写数据的位置的虚拟地址;
[0044]223)判断写操作是否需要分配新的存储空间,如是,则执行步骤224),如否,执行步骤225);
[0045]224)从内存关系数据库所管理的物理内存中获取空闲物理页面,并加入到表的表页表中,完成映射;
[0046]225)进程将数据写入表在内存关系数据库中对应的物理页面,并通过内存映射设备和插入到进程页表的表页表,将步骤222)中得到的虚拟地址转换为内存关系数据库管理的内存的物理地址,完成映射;
[0047]3)取消映射;具体包括如下步骤
[0048]31)接收到进程为表取消映射的请求;
[0049]32)释放表建立映射时获得的进程中的虚拟地址空间;
[0050]33)清除虚拟地址空间在进程的进程页表中对应的条目。
[0051]进一步,步骤12)中,返回的表在虚拟地址空间的起始地址记录在关系数据库中、用户进程中或索引表中。
[0052]与现有技术相比,本发明的有益效果如下:
[0053 ] 一、数据访问速度快。原因有二:
[0054]1.使用内存映射硬件设备进行虚拟地址到物理地址的转换,充分发挥内存的高访问速度。
[0055]2.利用表页表的形式组织数据库中表,可以保证单个表具有独立且连续的虚拟地址空间,由于数据的组织使用连续的地址空间,可以从读写数据的起始虚拟地址开始,一次性访问读写长度内的数据页,不需要用软件反复查找不同数据页的虚拟地址。
[0056]二、常数时间内建立表的物理地址到虚拟地址的映射。原因:表的组织格式与进程页表格式相同,实现零切换,无需重建,只需要将表页表的指针插入进程页表,是常数时间的操作。
[0057]良好的表保护,不需要额外的写保护机制。原因:不同的表各有独立的虚拟地址空间,内存关系数据库在存储介质上的信息受进程虚拟地址和内存映射硬件设备的保护,不会误写。
【附图说明】
[0058]下面结合附图和实施例对本发明作进一步描述。
[0059]图1示出了内存关系数据库的数据组织方法的流程示意图;
[0060]图2示出了内存关系数据库的数据访问方法的流程示意图。
【具体实施方式】
[0061 ]以下将结合附图对本发明进行详细说明。
[0062]—、内存关系数据库的数据组织方法
[0063]参见图1,包括如下步骤:
[0064]a)以表的形式组织数据;内存关系数据库的数据以一个或
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1