[发明专利]一种实现内存数据库表存盘和加载的方法有效
申请号: | 200810004246.0 | 申请日: | 2008-01-24 |
公开(公告)号: | CN101221577A | 公开(公告)日: | 2008-07-16 |
发明(设计)人: | 杨绍明;葛聪;马龙 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京安信方达知识产权代理有限公司 | 代理人: | 龙洪;霍育栋 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 内存 数据库 存盘 加载 方法 | ||
1.一种实现内存数据库表存盘的方法,其特征在于,包括如下步骤:
(1)在进行内存数据库表存盘时,将有记录的内存表数据加载到内存缓冲区;
(2)创建表存盘文件并向表存盘文件中写入表注册信息;
(3)计算所述内存表数据的校验和;
(4)对所述内存表数据进行分块压缩并将压缩结果和所述校验和写入对应的表存盘文件。
2.如权利要求1所述方法,其特征在于,
步骤(4)中,以分块压缩方式写入数据时,根据分块时保持记录完整性的原则计算压缩块的大小:即根据最大压缩块大小除以表的记录长度,得到最多的记录数,然后以此记录数乘以记录长度来获取压缩块的大小;所述压缩结果包括压缩块大小和压缩块个数。
3.如权利要求1所述方法,其特征在于,
步骤(2)中,创建表存盘文件时以表名为存盘文件名,并加一文件后缀。
4.如权利要求1所述方法,其特征在于,
步骤(4)中,在存盘过程中按偏移量进行逐块地写入,全部分块写入之后进行延时。
5.如权利要求1~4所述方法,其特征在于,所述内存数据库表存盘后的结构包括:
数据N,表示压缩块的个数;
数据校验和;
文件有效性结构体,用于记录各N个压缩块的大小;
各个压缩块的数据,其中第一个压缩块是表的结构说明的注册信息压缩块,其后是表的数据的各压缩块。
6.如权利要求5所述方法,其特征在于,所述N为0或超过最大压缩块个数都视为此数据无效。
7.一种实现权利要求1所述方法存盘的内存数据库表加载的方法,其特征在于,包括如下步骤:
(a)读取内存表注册结构数据;
(b)分块读取指定表的压缩内存表数据到内存缓冲区,并进行解压缩;
(c)待所有分块数据都解压缩完毕,将内存缓冲区的数据加载到内存表中。
8.如权利要求7所述方法,其特征在于,
步骤(a)中,根据压缩块个数计算文件有效性结构数据的长度,然后依此长度读取文件有效性结构数据,即数据校验和与各压缩块大小。
9.如权利要求7所述方法,其特征在于,
步骤(c)中,在加载过程中,将缓冲区中表的注册信息与当前表的注册信息中的最大数据量对比,如果缓冲区中表的记录数与记录长度之积大于当前表的表容量与记录长度之积,则以当前表的数据量为准作为需要加载的数据量,否则仍以磁盘中的数据量作为需要加载的数据量。
10.如权利要求8所述方法,其特征在于,
步骤(c)中,对解压后的表数据进行校验和计算,将计算结果与读取的校验和比较,如果一致,认为数据正确,否则数据错误。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810004246.0/1.html,转载请声明来源钻瓜专利网。