内存数据库的管理方法和装置的制作方法

文档序号:6330890阅读:127来源:国知局
专利名称:内存数据库的管理方法和装置的制作方法
技术领域
本发明涉及数据库领域中的内存数据库,具体而言,涉及一种内存数据库的管理 方法和装置。
背景技术
内存数据库是将数据放在内存中操作的数据库。相对于磁盘,内存的数据读写速 度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性 能。内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计了体 系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速 度比传统数据库的数据处理速度要快很多,一般都在10倍以上。同时,因内存数据库所有 活动数据全部存储在内存,存在数据丢失的风险。如何提高内存数据库的数据安全性就成 为内存数据库需要解决的问题。目前已有的解决方案,主要是通过维护主备两个或多个内存数据库,并通过消息 接口或日志文件来构造一个内存库的备份数据,以提高内存数据库的可靠性和安全性。但是,发明人发现根据上述现有技术的解决方案,在对内存数据库中的存储单元 进行管理时,需要对存储单元进行操作、且存储单元彼此可能是不连续存放的。由于影响磁盘I/O性能的因素主要有两个单位时间内写入磁盘的数据量,量越 大I/O的压力越大;写入磁盘数据的离散程度,数据越离散磁头的寻址时间越长,I/O的效 率越差,磁头寻址效率最高的情况是顺序读写数据,因此,现有技术中的内存数据库的管理 方法需要大量的寻址和更新时间,从而降低了磁盘I/O的传输速度。此外,根据上述现有技术的解决方案,需要额外的一个或多个备用设备来承载备 份内存数据库,这样就提高了系统的成本。同时还需要增加同步接口,来保证两个或多个内 存数据库数据一致,不但增加了内存数据库的逻辑复杂度,同时也降低了其性能。

发明内容
本发明的主要目的在于提供一种内存数据库的管理方法和装置,以至少解决现有 技术中磁盘I/O的传输速度较低的问题。根据本发明的一个方面,提供了一种内存数据库的管理方法方法,其包括在内存 数据库中设置记录存储区和位图区,其中,上述位图区中的比特位指示上述记录存储区中 的存储单元是否空闲;根据上述位图区对上述记录存储区中的存储单元执行管理操作。进一步地,根据上述位图区对上述记录存储区中的存储单元执行管理操作包括 当接收到的操作信息指示对上述记录存储区中的第一存储单元执行删除操作时,将上述位 图区中与上述第一存储单元对应的比特位的值设置成指示上述第一存储单元空闲,其中, 上述第一存储单元包括一个或多个存储单元。进一步地,根据上述位图区对上述记录存储区中的存储单元执行管理操作还包 括当接收到的操作信息指示对上述记录存储区中的第一存储单元执行修改操作时,对上述第一存储单元执行上述删除操作,再对上述第一存储单元执行插入操作。进一步地,对上述第一存储单元执行插入操作包括按照地址顺序查找地址最小 的空闲存储单元;将修改后的第一存储单元插入到上述查找到的地址最小的空闲存储单元 中。进一步地,上述在内存数据库中设置记录存储区和位图区包括按照操作系统页 划分上述内存数据库中的记录存储区,其中,一个上述操作系统页对应上述记录存储区中 的一个或多个存储单元。进一步地,在内存数据库中设置记录存储区和位图区之后,还包括在磁盘上创建 与上述记录存储区和位图区相同的记录存储区和位图区。进一步地,在根据上述位图区对上述记录存储区中的存储单元执行管理操作之 后,还包括若执行管理操作的存储单元的数量达到预定的阈值,或者,距离上一次执行管 理操作超过预定的时间,则将上述内存数据库中的记录存储区和位图区同步到上述磁盘上 的记录存储区和位图区。根据本发明的另一方面,提供了一种内存数据库的管理装置,其包括设置单元, 用于在内存数据库中设置记录存储区和位图区,其中,上述位图区中的比特位指示上述记 录存储区中的存储单元是否空闲;管理单元,用于根据上述位图区对上述记录存储区中的 存储单元执行管理操作。进一步地,上述管理单元包括设置模块,用于当接收到的操作信息指示对上述记 录存储区中的第一存储单元执行删除操作时,将上述位图区中与上述第一存储单元对应的 比特位的值设置成指示上述第一存储单元空闲,其中,上述第一存储单元包括一个或多个 存储单元。进一步地,上述设置模块还用于在接收到的操作信息指示对上述记录存储区中的 第一存储单元执行修改操作时,对上述第一存储单元执行上述删除操作;上述管理单元还 包括查找模块,用于在接收到的操作信息指示对上述记录存储区中的第一存储单元执行 修改操作时,按照地址顺序查找地址最小的空闲存储单元;插入模块,用于将修改后的第一 存储单元插入到上述查找到的地址最小的空闲存储单元中。通过本发明,采用了位图区来指示内存数据库中的存储单元是否被占用,从而在 对存储单元进行管理操作时,可以只对位图区进行操作,而不对存储单元进行操作,从而减 少了寻址和更新的时间,解决现有技术中磁盘I/O的传输速度较低的问题。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的内存数据库的管理方法的流程图;图2是根据本发明实施例的内存数据库的管理装置的一种优选的结构示意图;图3是根据本发明实施例的内存数据库的管理装置的另一种优选的结构示意图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。实施例1图1是根据本发明实施例的内存数据库的管理方法的流程图,其包括如下步骤S102,在内存数据库中设置记录存储区和位图区,其中,上述位图区中的比特位指 示上述记录存储区中的存储单元是否空闲;S104,根据上述位图区对上述记录存储区中的存储单元执行管理操作。通过本发明,采用了位图区来指示内存数据库中的存储单元是否被占用,从而在 对存储单元进行管理操作时,可以只对位图区进行操作,而不对存储单元进行操作,从而减 少了寻址和更新的时间,解决现有技术中磁盘I/O的传输速度较低的问题。优选的,根据所述位图区对所述记录存储区中的存储单元执行管理操作包括当 接收到的操作信息指示对所述记录存储区中的第一存储单元执行删除操作时,将所述位图 区中与所述第一存储单元对应的比特位的值设置成指示所述第一存储单元空闲,其中,所 述第一存储单元包括一个或多个存储单元。也就是说,在执行存储单元的删除操作时,并没 有实际删除该存储单元中的数据,而是将所述位图区中与该存储单元对应的比特位的值设 置成指示所述第一存储单元空闲。通过本实施例中的方法,将删除操作需要同步的数据量 缩小到一个或多个比特位,从而减少了 I/O的数据量,提高了磁盘I/O的传输速度。例如,比特位的值为0时,表示其所对应的存储单元空闲;比特位的值为1时,表示 其所对应的存储单元被占用。当执行第一存储单元的删除操作时,将与第一存储单元对应 的比特位置0,而不删除第一存储单元中的数据。优选的,根据所述位图区对所述记录存储区中的存储单元执行管理操作还包括 当接收到的操作信息指示对所述记录存储区中的第一存储单元执行修改操作时,对所述第 一存储单元执行所述删除操作,再对所述第一存储单元执行插入操作。通过本实施例中的 方法,减少了执行修改操作时的I/O的数据量,进一步提高了磁盘I/O的传输速度。优选的,对所述第一存储单元执行插入操作包括按照地址顺序查找地址最小的 空闲存储单元;将修改后的第一存储单元插入到所述查找到的地址最小的空闲存储单元 中。通过本实施例中,按照地址顺序递增优先寻找空闲存储单元,这样,就保证了记录存储 区内的数据更新趋于集中到连续的地址范围内,缩短了寻址的时间,继而提高同步磁盘的 效率。优选的,所述在内存数据库中设置记录存储区和位图区包括按照操作系统页划 分所述内存数据库中的记录存储区,其中,一个所述操作系统页对应所述记录存储区中的 一个或多个存储单元。通过本实施例,以操作系统页为单元划分存储单元,有利于提高操作 系统的管理效率。优选的,在内存数据库中设置记录存储区和位图区之后,还包括在磁盘上创建与 所述记录存储区和位图区相同的记录存储区和位图区。通过本实施例,将内存数据库中的 记录存储区和位图区同步映射到磁盘中,进一步保证了内存中数据的安全性。优选的,在根据所述位图区对所述记录存储区中的存储单元执行管理操作之后, 还包括若执行管理操作的存储单元的数量达到预定的阈值,或者,距离上一次执行管理操 作超过预定的时间,则将所述内存数据库中的记录存储区和位图区同步到所述磁盘上的记 录存储区和位图区。通过本实施例,可以灵活地控制同步的时间。
实施例2在本实施例中,内存数据的管理方法包括以下步骤Si,在内存数据库创建多个内存表,每个内存表包含记录存储区与位图区,其中, 记录存储区使用存储单元保存内存表中的数据记录,位图区用于保存记录存储区中存储单 元的使用情况,位图区用一个BIT位表示一条存储单元的使用情况。S2,在磁盘上创建内存数据库的内存表的对应存储文件。优选的,磁盘上的存储文 件包括内存表的记录存储区中的数据、位图区中的数据、控制信息,其中,控制信息包括以 下信息之一内存表记录长度、版本信息、记录存储区的偏移、位图区的偏移。S3,创建磁盘上的存储文件与内存数据库的内存表之间的映射,内存数据库通过 内存指针对磁盘上的存储文件进行访问。优选的,每个内存表可以对应一个内存文件映射 区,或者,多个内存表对应一个内存文件映射区。S4,当修改映射内存文件映射区时,即完成一次同步磁盘的操作。在本发明中,内 存文件映射区就相当于磁盘文件,对该映射区的修改即是对磁盘文件的修改。S5,当对内存中的存储单元进行修改时,在内存中创建脏数据缓冲区,其中,脏数 据缓冲区用于记录对应内存表的脏数据(即,被修改的存储单元中的数据)。优选的,脏数 据包括以下至少之一内粗表ID、内存表插入的新数据、内存表修改的数据、脏数据在内存 表数据区的偏移、脏数的长度、内存表的位图区。优选的,每个内存表可以对应一个脏数据 缓冲区,或者,多个内存表对应一个脏数据缓冲区。S6,当对内存表执行增加、删除、修改操作时,将变动的数据写入脏数据缓冲区。S7,当脏数据区存储的脏数据达到阈值,或者距离上一次修改内存文件映射区的 时间间隔超过阈值时,则执行一次脏数据区到磁盘上的文件映射区的数据同步。优选的,脏数据区到文件映射区的数据同步,逐一读取脏数据记录,根据内存表 ID、脏数据偏移、脏数据长度将脏数据记录拷贝到文件映射区对应的偏移位置;脏数据区内 的位图数据直接整体拷贝到文件映射区的位图数据区。S8,脏数据区的所有记录都同步到文件映射区后,将脏数据区清空。在本实施例中,为了降低同步磁盘的数据总量。内存表管理增加了位图区,该区通 过BIT位标识一个内存表存储单元的占用与否。当执行内存表存储记录删除时,只需要更 新一个或多个BIT位,这样避免了对实际存储单元的清除处理。从而将删除操作需要同步 的数据量缩小到一个BIT位,减少了系I/O传输的数据量,提高了 I/O的传输速度。为了提高磁盘的寻址效率,将内存表的数据修改请求,变更为删除操作与插入操 作。即,先执行上述的删除操作,然后,在对修改后的数据进行插入操作。在执行插入操作过 程中,按照地址顺序递增优先寻找空闲存储单元(例如,寻找地址最小的空闲存储单元), 然后,将修改后的数据插入到所寻找到的空闲存储单元中。这样就保证了记录存储区内的 更新后的存储单元集中到连续的地址范围内,继而提高同步磁盘的效率。当内存数据库重新启动时,首先检查磁盘同步的完整性与正确性,包括检查文件 的版本、内存记录长度、校验信息等。当检查通过后,根据文件内的控制信息加载文件内的 位图区数据、记录数据区数据在内存表的位图区和记录数据区。最后根据位图区占用标识, 逐一扫描记录数据区,重新创建内存表的索引。实施例3
7
本发明还提供了一种内存数据库的管理装置的实施例,其可以使用上述实施1-2 中的管理方法来对内存数据库中的数据进行管理。图2是根据本发明实施例的内存数据库的管理装置的一种优选的结构示意图,其 包括设置单元202,用于在内存数据库中设置记录存储区和位图区,其中,所述位图区中 的比特位指示所述记录存储区中的存储单元是否空闲;管理单元204,用于根据所述位图 区对所述记录存储区中的存储单元执行管理操作。通过本发明,采用了位图区来指示内存数据库中的存储单元是否被占用,从而在 对存储单元进行管理操作时,可以只对位图区进行操作,而不对存储单元进行操作,从而减 少了寻址和更新的时间,解决现有技术中磁盘I/O的传输速度较低的问题。优选的,所述管理单元包括204 设置模块2041,用于当接收到的操作信息指示对 所述记录存储区中的第一存储单元执行删除操作时,将所述位图区中与所述第一存储单元 对应的比特位的值设置成指示所述第一存储单元空闲,其中,所述第一存储单元包括一个 或多个存储单元。也就是说,在执行存储单元的删除操作时,并没有实际删除该存储单元中 的数据,而是将所述位图区中与该存储单元对应的比特位的值设置成指示所述第一存储单 元空闲。通过本实施例中的方法,将删除操作需要同步的数据量缩小到一个或多个比特位, 从而减少了 I/O的数据量,提高了磁盘I/O的传输速度。优选的,所述设置模块2041还用于在接收到的操作信息指示对所述记录存储区 中的第一存储单元执行修改操作时,对所述第一存储单元执行所述删除操作;所述管理单 元204还包括查找模块2042,用于在接收到的操作信息指示对所述记录存储区中的第一 存储单元执行修改操作时,按照地址顺序查找地址最小的空闲存储单元;插入模块2043, 用于在设置模块2041对所述第一存储单元执行所述删除操作之后,将修改后的第一存储 单元插入到所述查找到的地址最小的空闲存储单元中。通过本实施例中,按照地址顺序递 增优先寻找空闲存储单元,这样,就保证了记录存储区内的数据更新趋于集中到连续的地 址范围内,继而提高同步磁盘的效率。优选的,所述在内存数据库中设置记录存储区和位图区包括按照操作系统页划 分所述内存数据库中的记录存储区,其中,一个所述操作系统页对应所述记录存储区中的 一个或多个存储单元。通过本实施例,以操作系统页为单元划分存储单元,有利于提高操作 系统的管理效率。优选的,在内存数据库中设置记录存储区和位图区之后,上述内存数据库的管理 装置在磁盘上创建与所述记录存储区和位图区相同的记录存储区和位图区。通过本实施 例,将内存数据库中的记录存储区和位图区同步映射到磁盘中,进一步保证了内存中数据 的安全性。优选的,在根据所述位图区对所述记录存储区中的存储单元执行管理操作之后, 若执行管理操作的存储单元的数量达到预定的阈值,或者,距离上一次执行管理操作超过 预定的时间,上述内存数据库的管理装置将所述内存数据库中的记录存储区和位图区同步 到所述磁盘上的记录存储区和位图区。通过本实施例,可以灵活地控制同步的时间。实施例4图3是根据本发明实施例的内存数据库的管理装置的另一种优选的结构示意图, 其包括配置管理单元302、初始化管理单元304、内存表管理单元306、文件映射管理单元
8308、内存数据区310、内存文件映射区312以及映射文件314。上述元件的连接关系如图3 所示。配置管理单元302实现内存数据库信息配置管理,包括内存表大小、磁盘映射文 件的存储路径等;初始化管理单元304实现内存数据库进程创建、内存空间申请以及通知内存表管 理单元与文件映射管理单元创建内存表与创建映射区等;内存表管理单元306实现内存表的创建以及对外提供内存表访问接口,如内存表 查询、修改、删除等;文件映射管理单元308实现内存文件映射区的创建以及脏数据同步到磁盘文件 的管理;内存数据区310保存内存表以及脏数据区;内存文件映射区312为磁盘文件在数据库进程内存的内存文件映射;映射文件314为内存数据库各个内存表在磁盘的同步文件。上述几个管理单元具体实现既可以合一设置,也能够以独立的进程方式实现,具 体实施时可以根据设计需要灵活选择组织方式。本实施例中的内存数据库的管理装置采用内存文件映射实现内存表数据到磁盘 的快速同步,提高了内存数据库的数据安全性;并且无需进行主备内存数据库数据同步,降 低了设备成本和设备维护复杂度。此外,还提供内存表位图管理、数据修改操作转换处理、 空闲存储单元按照地址顺序寻址管理,进一步提高了数据库磁盘同步性能。综上所述,采用本发明所述方案,可以有效提高全内存数据库的容灾能力和磁盘 同步能力,具有很强的通用性。本发明已在短消息中心系统中应用,起到明显的优化作用。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用 的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成 的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储 在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示 出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或 步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
9
权利要求
一种内存数据库的管理方法,其特征在于,包括在内存数据库中设置记录存储区和位图区,其中,所述位图区中的比特位指示所述记录存储区中的存储单元是否空闲;根据所述位图区对所述记录存储区中的存储单元执行管理操作。
2.根据权利要求1所述的方法,其特征在于,根据所述位图区对所述记录存储区中的 存储单元执行管理操作包括当接收到的操作信息指示对所述记录存储区中的第一存储单元执行删除操作时,将所 述位图区中与所述第一存储单元对应的比特位的值设置成指示所述第一存储单元空闲,其 中,所述第一存储单元包括一个或多个存储单元。
3.根据权利要求2所述的方法,其特征在于,根据所述位图区对所述记录存储区中的 存储单元执行管理操作还包括当接收到的操作信息指示对所述记录存储区中的第一存储单元执行修改操作时,对所 述第一存储单元执行所述删除操作,再对所述第一存储单元执行插入操作。
4.根据权利要求3所述的方法,其特征在于,所述对所述第一存储单元执行插入操作 包括按照地址顺序查找地址最小的空闲存储单元;将修改后的第一存储单元插入到所述查找到的地址最小的空闲存储单元中。
5.根据权利要求1所述的方法,其特征在于,所述在内存数据库中设置记录存储区和 位图区包括按照操作系统页划分所述内存数据库中的记录存储区,其中,一个所述操作系统页对 应所述记录存储区中的一个或多个存储单元。
6.根据权利要求1所述的方法,其特征在于,在内存数据库中设置记录存储区和位图 区之后,还包括在磁盘上创建与所述记录存储区和位图区相同的记录存储区和位图区。
7.根据权利要求6所述的方法,其特征在于,在根据所述位图区对所述记录存储区中 的存储单元执行管理操作之后,还包括若执行管理操作的存储单元的数量达到预定的阈值,或者,距离上一次执行管理操作 超过预定的时间,则将所述内存数据库中的记录存储区和位图区同步到所述磁盘上的记录 存储区和位图区。
8.—种内存数据库的管理装置,其特征在于,包括设置单元,用于在内存数据库中设置记录存储区和位图区,其中,所述位图区中的比特 位指示所述记录存储区中的存储单元是否空闲;管理单元,用于根据所述位图区对所述记录存储区中的存储单元执行管理操作。
9.根据权利要求8所述的装置,其特征在于,所述管理单元包括设置模块,用于当接收到的操作信息指示对所述记录存储区中的第一存储单元执行删 除操作时,将所述位图区中与所述第一存储单元对应的比特位的值设置成指示所述第一存 储单元空闲,其中,所述第一存储单元包括一个或多个存储单元。
10.根据权利要求9所述的装置,其特征在于,所述设置模块还用于在接收到的操作信息指示对所述记录存储区中的第一存储单元执行修改操作时,对所述第一存储单元执行所 述删除操作;所述管理单元还包括查找模块,用于在接收到的操作信息指示对所述记录存储区中的第一存储单元执行修 改操作时,按照地址顺序查找地址最小的空闲存储单元;插入模块,用于将修改后的第一存储单元插入到所述查找到的地址最小的空闲存储单 元中。
全文摘要
本发明公开了一种内存数据库的管理方法和装置,其中,该内存数据库的管理方法包括在内存数据库中设置记录存储区和位图区,其中,上述位图区中的比特位指示上述记录存储区中的存储单元是否空闲;根据上述位图区对上述记录存储区中的存储单元执行管理操作。本发明减少了寻址和更新的时间,解决现有技术中磁盘I/O的传输速度较低的问题。
文档编号G06F17/30GK101916290SQ20101026272
公开日2010年12月15日 申请日期2010年8月18日 优先权日2010年8月18日
发明者李学领 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1