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

文档序号:9911245阅读:来源:国知局
多个表的方式存放在物理内存中。每个表可以用对应一个或多个物理内存页面存放数据,把这种内存页面称为“数据页”;
[0065]b)为每个表建立连续且独立的虚拟地址空间,即表虚拟地址空间(Table VirtualAddress Space,简称FVAS),其表现形式是表页表(Table Page Table,简称TPT);所述表页表为一级页表或多级页表,每一级表页表都存放在单个或多个物理内存页面中。每一级表页表都划分为多个条目,每个条目都可以存放下一级表页表的某一个物理内存页的起始物理地址。最低一级的表页表用于存放数据页的起始物理地址。
[0066]c)将数据在内存中的物理地址存储在表页表中;
[0067]d)将表和表页表的映射关系存放在内存关系数据库的索引表中,索引表的数据结构为数组、链表或结构体;索引表中保存有表及其表页表的最高级指针,所述最高级指针指向表页表。
[0068]e)用内存关系数据库管理数据和进程页表的物理内存。
[0069]二、内存关系数据库的数据访问方法。
[0070]在访问数据的过程中,需要用到的系统组件有CPU中的内存映射设备、数据库管理的内存、进程页表、内存关系数据库的索引表和表页表。
[0071 ]其中内存映射设备和数据库管理的内存是系统中的硬件设备,内存可以是DRAM、新型非易失性内存或其他高速存储介质。
[0072]进程页表是进程虚拟地址空间的表现形式,在64位系统中通常分为4级,在32位系统中通常只使用两级页表。
[0073]内存关系数据库的表页表是表虚拟地址空间的表现形式,是一个独立且连续的地址空间。表页表的组织形式可以是一级或多级系统页表。索引表是内存关系数据库中用于指明表的存储位置的数据结构。
[0074]参见图2,内存关系数据库的数据访问操作包括建立映射、读数据、写数据、取消映射,具体如下:
[0075]I)建立映射;具体包括如下步骤:
[0076]11)接收到进程为表建立映射的请求;
[0077]12)从发出请求的进程的虚拟地址空间中获得一块独立且连续的虚拟地址空间,作为要访问的表在进程中的虚拟地址空间,并返回表在虚拟地址空间的起始地址;返回的表在虚拟地址空间的起始地址记录在关系数据库中、用户进程中或索引表中;
[0078]13)利用控制寄存器,访问进程的进程页表,找到表的虚拟地址空间在进程页表中对应的条目;
[0079 ] 14)在内存关系数据库的索引表中找到表的最高级指针;
[0080]15)将最高级指针的值写入进程页表中对应的条目,即完成表在进程页表中的映射;
[0081]2)读数据或写数据;
[0082]读数据时包括如下步骤:
[0083]211)接收进程读取表中数据的请求;
[0084]212)通过表在虚拟地址空间的起始虚拟地址加上进程所请求的数据在表中的偏移量,计算出所请求的数据的虚拟地址;
[0085]213)通过内存映射设备和连接到进程页表的表页表,将步骤212)中获得的数据的虚拟地址转换为数据在内存关系数据库所管理的内存上的物理地址;
[0086]214)进程访问物理地址所指数据页中的数据;
[0087]写数据时包括如下步骤:
[0088]221)接收进程向表中写数据的请求;
[0089]222)通过表在虚拟地址空间的起始虚拟地址,加上进程写数据的位置在表中的偏移量,计算出所请求的数据的虚拟地址;
[0090]223)判断写操作是否需要分配新的存储空间,如是,则执行步骤224),如否,执行步骤225);
[0091]224)从内存关系数据库所管理的物理内存中获取空闲物理页面,并加入到表的表页表中,完成映射;
[0092]225)进程将数据写入表在内存关系数据库中对应的物理页面,并通过内存映射设备和插入到进程页表的表页表,将步骤222)中得到的虚拟地址转换为内存关系数据库管理的内存的物理地址,完成映射;
[0093]3)取消映射;具体包括如下步骤
[0094]31)接收到进程为表取消映射的请求;
[0095]32)释放表建立映射时获得的进程中的虚拟地址空间;
[0096]33)清除虚拟地址空间在进程的进程页表中对应的条目。
[0097]最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
【主权项】
1.内存关系数据库的数据组织方法,其特征在于:包括如下步骤: a)以表的形式组织数据; b)以表页表的方式为每个表建立连续且独立的虚拟地址空间; c)将数据在内存中的物理地址存储在表页表中; d)将表和表页表的映射关系存放在内存关系数据库的索引表中; e)用内存关系数据库管理数据和表页表的物理内存。2.如权利要求1所述的内存关系数据库的数据组织方法,其特征在于:所述步骤b)中,所述表页表为一级页表或多级页表,为多级页表时,上级页表的每一个条目可以存放一个下级页表的物理页面的起始物理地址;其中,最后一级页表中存放有数据页的起始物理地址。3.如权利要求1所述的内存关系数据库的数据组织方法,其特征在于:所述步骤d)中,索引表的数据结构为数组、链表或结构体。4.如权利要求1-3中任一项所述的内存关系数据库的数据组织方法,其特征在于:所述索引表中保存有表及其表页表的最尚级指针,所述最尚级指针指向表页表。5.内存关系数据库的数据访问方法,包括如下步骤: 1)建立映射;具体包括如下步骤: 11)接收到进程为表建立映射的请求; 12)从发出请求的进程的虚拟地址空间中获得一块独立且连续的虚拟地址空间,作为要访问的表在进程中的虚拟地址空间,并返回表在虚拟地址空间的起始虚拟地址; 13)利用控制寄存器,访问进程的进程页表,找到表的虚拟地址空间在进程页表中对应的条目; 14)在内存关系数据库的索引表中找到表页表的最高级指针; 15)将表页表的最高级指针的值写入进程页表中对应的条目,即完成表在进程页表中的映射; 2)读数据或写数据; 读数据时包括如下步骤: 211)接收进程读取表中数据的请求; 212)通过表在虚拟地址空间的起始虚拟地址加上进程所请求的数据在表中的偏移量,计算出所请求的数据的虚拟地址; 213)通过内存映射设备和连接到进程页表的表页表,将步骤212)中获得的数据的虚拟地址转换为数据在内存关系数据库所管理的内存上的物理地址; 214)进程访问物理地址所指数据页中的数据; 写数据时包括如下步骤: 221)接收进程向表中写数据的请求; 222)通过表在虚拟地址空间的起始虚拟地址,加上进程写数据的位置在表中的偏移量,计算出写数据的位置的虚拟地址; 223)判断写操作是否需要分配新的存储空间,如是,则执行步骤224),如否,执行步骤225); 224)从内存关系数据库所管理的物理内存中获取空闲物理页面,并加入到表的表页表中,完成映射; 225)进程通过内存映射设备和插入到进程页表的表页表,将步骤222)中得到的虚拟地址转换为内存关系数据库管理的内存的物理地址,将数据写入表在内存关系数据库中对应的物理页面,完成映射; 3)取消映射;具体包括如下步骤 31)接收到进程为表取消映射的请求; 32)释放表建立映射时获得的进程中的虚拟地址空间; 33)清除表页表在进程的进程页表中对应的条目。6.如权利要求5所述的内存关系数据库的数据访问方法,其特征在于:步骤12)中,返回的表在虚拟地址空间的起始地址记录在关系数据库中、用户进程中或索引表中。
【专利摘要】本发明属于计算机技术领域,具体涉及一种关系数据库在内存中的数据组织及访问方法,数据组织方法中,以表页表的方式为每个表建立连续且独立的虚拟地址空间;将表和表页表的映射关系存放在内存关系数据库的索引表中;并用内存关系数据库管理数据和表页表的物理内存;而数据访问方法包括建立映射、读数据、写数据和取消映射的步骤,数据的组织使用连续的地址空间,可以从读写数据的起始虚拟地址开始,一次性访问读写长度内的数据页,不需要用软件反复查找不同数据页的物理地址,表的组织格式与进程页表格式相同,实现零切换,无需重建,只需要将表页表的指针插入进程页表,能实现快速映射和高速访问表中的数据。
【IPC分类】G06F17/30
【公开号】CN105677879
【申请号】CN201610018195
【发明人】诸葛晴凤, 沙行勉, 陈咸彰
【申请人】诸葛晴凤
【公开日】2016年6月15日
【申请日】2016年1月12日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1