[发明专利]数据库管理方法及数据库系统有效
申请号: | 201710031732.0 | 申请日: | 2017-01-17 |
公开(公告)号: | CN108319602B | 公开(公告)日: | 2020-10-16 |
发明(设计)人: | 郑主能 | 申请(专利权)人: | 阿里巴巴(中国)有限公司 |
主分类号: | G06F16/11 | 分类号: | G06F16/11;G06F16/13;G06F16/18 |
代理公司: | 北京展翼知识产权代理事务所(特殊普通合伙) 11452 | 代理人: | 屠长存 |
地址: | 310052 浙江省杭州市滨江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 管理 方法 系统 | ||
1.一种数据库管理方法,用于存储多条数据,其中,每条所述数据包括相对应的键和值,该方法包括:
将所述多条数据写入外部存储器中的日志文件;
将所述日志文件中的数据写入内部存储器中的内存表,其中,写入所述内存表中的数据按照键的大小有序存储;
在所述内存表的大小超过预定阈值时,将所述内存表转化为只读内存表,并将所述日志文件中的后续数据写入新的内存表;
将所述只读内存表中的数据写入外部存储器中,以得到第一级存储文件;以及合并两个或更多个第一级存储文件,以得到第二级存储文件,
其中,所述存储文件的数据结构包括:
文件头,用于记录所述存储文件的元数据信息;
数据块,用于存放值;以及
索引块,用于以B+树的形式存放所述值对应的键,其中,所有键及其对应的值在所述数据块中的逻辑地址均分别记录于所述B+树中的叶子节点中,并且构成所述B+树的所有节点在物理上连续存储,
其中,所述合并两个第一级存储文件的步骤包括:
在第一存储文件之后追加写入追加数据块,其中写入第二存储文件的数据块中的值;
在所述追加数据块之后追加写入新索引块,所述新索引块是基于所述第一存储文件的索引块和所述第二存储文件的索引块生成的,所述第一存储文件的索引块和所述第二存储文件的索引块中的全部有效键及其对应的值在所述第一存储文件的数据块和所述追加数据块中的逻辑地址均分别记录于新B+树中的叶子节点中;
在所述新索引块之后追加写入新文件头,以记录合并后的新文件的元数据信息。
2.根据权利要求1所述的数据库管理方法,还包括:
以第一命名规则指定所述第一级存储文件的主文件名;以及
以第二命名规则指定所述第二级存储文件的主文件名,所述第一命名规则与所述第二命名规则不同,以便基于主文件名区分存储文件是第一级存储文件还是第二级存储文件。
3.根据权利要求1所述的数据库管理方法,其中,所述内存表由一个哈希表组成,所述哈希表包括一个或多个哈希桶,每个哈希桶对应一个跳表,所述内存表中的每条数据构成所述跳表的一个元素,其中,所述跳表中的元素的顺序是按照键的大小有序排列的。
4.根据权利要求1所述的数据库管理方法,还包括:
在所述内部存储器中维护只读内存表队列,在所述只读内存表中的数据未全部写入外部存储器,而新的内存表的大小超过预定阈值时,将所述新的内存表转化为另一个只读内存表,并放入所述只读内存表队列。
5.根据权利要求1所述的数据库管理方法,其中,所述元数据信息包括以下一项或多项:
所述索引块中键的数量;
所述索引块中键的范围;
所述B+树的高度;
所述B+树中第一个叶子节点的逻辑地址;
所述B+树中内部节点的个数。
6.根据权利要求1所述的数据库管理方法,还包括:
根据所述新文件头更新所述第一存储文件的文件头,以用所述新文件头中的元数据信息替换所述第一存储文件的文件头中的元数据信息。
7.根据权利要求6所述的数据库管理方法,其中,
所述存储文件包括位于文件头部的前文件头和位于文件尾部的后文件头,所述前文件头和所述后文件头的内容相同,
根据所述新文件头更新所述第一存储文件的前文件头,作为新文件的前文件头,而以所述新文件头作为新文件的后文件头。
8.根据权利要求6或7所述的数据库管理方法,还包括:
在所述新文件头中写入新文件的元数据信息的步骤出错的情况下,根据所述第一存储文件的文件头将新文件还原为合并前的所述第一存储文件;以及/或者
在更新所述第一存储文件的文件头的步骤出错的情况下,根据所述新文件头重新更新所述第一存储文件的文件头。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴(中国)有限公司,未经阿里巴巴(中国)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710031732.0/1.html,转载请声明来源钻瓜专利网。