用于内存数据库的一种数据操作接口的实现方法

文档序号:6532769阅读:185来源:国知局
专利名称:用于内存数据库的一种数据操作接口的实现方法
技术领域
本发明涉及内存数据库对所提供的数据操作方法,尤其涉及内存数据库对所提供的数据操作接口的实现方法。
背景技术
在移动通信的网元中,如HLR(位置归属寄存器)、GLMS(组列表管理服务器)等,为了提高数据处理的能力,都使用了内存数据库。内存数据库的使用已经在网络设备中越来越广泛。
在目前使用内存数据库中,对内存表的操作必须通过由数据库操作模块注册回调函数的方法来完成。其实现方法是,内存数据库定义操作一张表所需要的一套接口声明,由数据库操作模块为每一张内存数据库表提供这套操作的接口的实现,由内存数据库调用数据库操作模块提供的接口的实现来操作内存表。
这种方式有一个明显的缺点,就是对每一张表都需要数据库操作模块提供表操作的代码。也就是说,数据库操作模块直接操作内存表,数据库操作模块某一处的故障很可能导致整个内存数据库的内存状态错误,使得使用内存数据库的整个应用出现故障;并且,数据库操作模块的代码工作量很大。

发明内容
本发明所要解决的技术问题是提供内存数据库一种数据操作接口的实现方法,使得数据库操作模块可以通过内存数据库提供的接口完成内存数据操作,从而将数据库操作模块和内存数据库中的数据隔离,不再直接操作内存数据库数据。
为了实现上述目的,本发明提供了内存数据库对所提供的数据操作的接口的实现方法,其特点在于,设置一数据操作接口的步骤,将数据库操作模块和内存数据库中的数据隔离,使数据库操作模块通过所述数据操作接口完成内存数据的内存数据操作。
上述的用于内存数据库的一种数据操作接口的实现方法,其中,设置一数据操作接口的步骤又包括如下步骤步骤1,预备内存操作参数;步骤2,内存数据库将内存操作参数保留在一缓冲区中,所述缓冲区称为操作句柄;步骤3,内存数据库根据内存操作参数执行内存数据比较和/或拷贝的操作。
上述用于内存数据库的一种数据操作接口的实现方法,其中,所述内存操作参数包括操作类型、表名称、各字段的实际值的内存区参数、字段在表中的序号。
上述用于内存数据库的一种数据操作接口的实现方法,其中,字段的信息以字段缓冲值数组的形式传递给内存数据库。
上述用于内存数据库进行数据操作接口的实现方法,其中,所述步骤3还包括增加记录的步骤,设置字段缓冲值数组的长度为待新增记录中设置了值的字段的数目,所述字段缓冲值数组的首地址和长度记录在操作句柄对象中。
上述用于内存数据库进行数据操作接口的实现方法,其中,在执行操作句柄时,所述增加记录的步骤又包括步骤311,操作句柄将字段缓冲值数组的首地址和长度的信息传递给内存表对象,内存表首先为新记录在表记录数组中分配一条记录的空间;步骤312,内存表然后读取字段缓冲值数组中每一个字段的实际值,并根据字段的序号计算得到表记录中字段相对于记录首地址的偏移量,然后逐个地进行字段拷贝的操作;步骤313,将字段缓冲值数组中所有的字段的实际值拷贝到表记录相应的字段内存中后,再根据表上定义的索引,添加索引记录,完成一次表记录的新增操作,所述添加索引记录的方法是,对定义在该表上的每一个索引,执行步骤314到步骤316;步骤314,分配索引记录的空间,将该表记录的记录号写入索引记录数组中;步骤315,根据索引的字段定义组出索引内存值,然后根据索引内存值计算索引哈希值;步骤316,根据索引哈希值找到哈希入口地址数组中下标为该哈希值的元素,该元素是一个链表的头部,称为哈希冲突链表,链表中的元素都是索引哈希值相同的索引记录号,然后将该记录的索引记录的记录号写入链表的头部。
上述的内存数据库进行数据操作接口的实现方法,其中,所述步骤3还包括删除记录的步骤,设置字段缓冲值数组的长度为查询条件中字段的数目,字段缓冲值数组的首地址和长度记录在操作句柄对象中,当执行操作句柄的时候,句柄将字段缓冲值数组的首地址和长度信息传递给内存表对象,内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作。
上述的内存数据库进行数据操作接口的实现方法,其中,若存在相应索引,所述删除记录的步骤又包括步骤321,找到索引IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤322,然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤323到步骤328;步骤323,根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,索引记录中记录了该索引对应的表记录在表记录数组中的下标,该下标是表记录的记录号,然后获取该表记录;步骤324,根据表记录组出该记录的该索引的索引内存值,和输入的索引内存值进行内存比较,如果相等,则需要删除该条表记录,并将该表记录的所有索引记录都删除,否则处理哈希冲突链表中的下一个元素;步骤325,删除表记录前需要将表记录备份到一个内存缓冲区,等删除完该条记录及其索引后,再将备份从内存缓冲区中清空;步骤326,删除表记录;步骤327,删除表记录的索引记录,及索引记录在哈希冲突链表中对应的元素;步骤328,删除备份的表记录。
上述的内存数据库进行数据操作接口的实现方法,其中,所述步骤3还包括更改记录的步骤,字段缓冲值数组的长度为查询条件字段的数目和被更改字段的数目之和,字段缓冲值数组的首地址和长度记录在操作句柄对象中,当执行操作句柄的时候,操作句柄将字段缓冲值数组的首地址和长度信息传递给内存表对象,所述内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作。
上述的内存数据库进行数据操作接口的实现方法,其中,若存在相应索引,所述更改记录的步骤又包括步骤331,找到索引IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤332,然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤333到步骤338;步骤333,根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,在索引记录中记录该索引对应的表记录在表记录数组中的下标,该下标是表记录的记录号,然后获取该表记录;步骤334,根据表记录组出该记录的该索引的索引内存值,和输入的索引内存值进行内存比较,如果相等,则需要更改这条表记录,否则处理哈希冲突链表中的下一个元素;步骤335,更改表记录前需要将表记录备份到一个内存缓冲区,在更改完该条记录及其索引后,再将备份从内存缓冲区中清空;步骤336,内存表对象将读取字段缓冲值对象数组中不是查询条件的字段的值,将该字段的值拷贝到记录中的对应字段的内存块中,其中,对于索引字段被更改的情况,索引字段的信息为两份,一份说明查询条件,一份说明索引字段的新值;步骤337,对于需要更改索引字段的情况,将更改索引记录所属的哈希冲突链表;步骤338,删除备份的表记录。
上述的内存数据库进行数据操作的接口实现方法,其中,所述步骤3还包括查询记录步骤,字段缓冲值数组用于表示接受查询结果的缓冲区,假设用于接受查询结果的数据结构是一个结构体数组A2,将字段缓冲值数组的首地址和长度记录在操作句柄对象中,执行的时候可以指定执行次数,此处执行次数的含义是需要从内存库中查询多少条记录,必须小于数组A2的长度。假设执行次数指定为C1。,当执行操作句柄的时候,句柄将字段缓冲值数组的首地址和长度信息传递给内存表对象,内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作。
上述的内存数据库进行数据操作接口的实现方法,其中,所述查询记录的步骤又包括步骤341,找到索引需要使用的索引,设为IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤342,然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤343到步骤348;步骤343,根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,索引记录中记录了该索引对应的表记录在表记录数组中的下标,也就是表记录的记录号,然后获取该表记录;步骤344,根据表记录组出该记录的该索引的索引内存值,和输入的索引内存值进行内存比较,如果相等,则需要返回这条表记录,否则处理哈希冲突链表中的下一个元素;步骤345,内存表对象将读取结果集字段缓冲值数组中每一个元素,判断该字段缓冲值应该接收表记录的拿一个字段的值,然后将对应字段的内存值拷贝到字段缓冲值对象中记录的用于接收结果集字段值的内存块中,直到找不到符合条件的记录或已经找到C1条记录为止。
本发明通过内存数据库执行内存拷贝操作,无需数据库操作模块提供执行内存拷贝操作的实现。使得内存数据库不再依赖数据库操作模块提供表操作的实现,简化了数据库操作模块的代码,减小了数据库操作模块和内存数据库的耦合,加快使用内存数据库的通信系统的开发速度和稳定速度。并避免由于数据库操作模块直接操作内存表而产生的数据库操作模块某一处故障导致整个内存数据库的内存状态错误的情况发生。
下面结合附图和实施例对本发明进行详细说明。


图1是本发明内存数据库数据操作的接口实现流程图;图2是本发明实施例中内存数据库根据内存操作参数执行内存操作步骤中新增记录实现流程图;
图3是本发明实施例中内存数据库根据内存操作参数执行内存操作步骤中删除记录实现流程图;图4是本发明实施例中内存数据库根据内存操作参数执行内存操作步骤中更改记录实现过程图;图5是本发明实施例中内存数据库根据内存操作参数执行内存操作步骤中查询记录实现过程图;图6是本发明实施例中接口使用的数据结构示意图;图7是本发明实施例中接口被调用的流程图。
具体实施例方式
首先需要解释文中提出的2个技术方案概念——字段缓冲值和操作句柄。字段缓冲值表示和某个字段绑定的一片内存缓冲区。操作句柄表示一个内存数据库操作,记录了执行这个内存数据库操作所必需的参数信息。
本发明涉及一种内存数据库进行数据操作的接口实现方法,如图1所示,图1是本发明内存数据库数据操作的接口实现流程图,其包括步骤如下步骤1预备内存操作参数。内存操作参数包括操作类型、表名称、各字段的实际值的内存区参数(也就是内存区的地址和长度)、字段在表中的序号传递给内存数据库。这些信息实际上记录了内存比较和拷贝的参数,我们称为内存操作参数。其中,字段的信息以字段缓冲值数组的形式传递给内存数据库。
步骤2内存数据库把内存操作参数保留在一个缓冲区中。这个缓冲区称为操作句柄。
步骤3内存数据库根据内存操作参数执行内存比较和拷贝的操作。内存表记录中字段的信息可以通过数据字典得到。一下结合图2、3、4、5分别对具体的增删改和查询步骤进行具体描述。
图2是本发明实施例中内存数据库根据内存操作参数执行内存操作步骤中新增记录实现流程图。
增加记录字段缓冲值数组的长度(数组元素个数)为待新增记录中设置了值的字段的数目,也就是结构体变量中的成员数,假设为N1。字段缓冲值数组的首地址和长度记录在操作句柄对象中。当执行操作句柄的时候,其具体步骤如下
步骤311操作句柄将这些信息传递给内存表对象,内存表首先为新记录在表记录数组中分配一条记录的空间;步骤312内存表然后读取字段缓冲值数组中每一个字段的实际值,并根据字段的序号计算得到表记录中字段相对于记录首地址的偏移量,然后逐个地进行字段拷贝的操作;步骤313将字段缓冲值数组中所有的字段的实际值拷贝到表记录相应的字段内存中后,再根据表上定义的索引,添加索引记录,这样就完成了一次表记录的新增操作。添加索引记录的方法是对定义在该表上的每一个索引,执行步骤314到步骤316;步骤314分配索引记录的空间。将该表记录的记录号写入索引记录数组中;步骤315根据索引的字段定义组出索引内存值。然后根据索引内存值计算索引哈希值;步骤316根据索引哈希值找到哈希入口地址数组中下标为该哈希值的元素,该元素是一个链表的头部,称为哈希冲突链表,链表中的元素都是索引哈希值相同的索引记录号。然后将该记录的索引记录的记录号写入链表的头部。
为了支持批量操作,每次调用接口的时候,可以提供一个结构体变量数组A1,假设长度为N2。并使用字段缓冲值对象数组字段的实际值和字段的元信息绑定起来。此时,字段缓冲值数组的长度为结构体变量中成员的数目N1乘以数组A1的长度N2。每N1个字段缓冲值对象绑定了A1中的一个元素。在执行句柄的时候,需要指定操作执行的次数。操作执行的次数不能大于数组A1的长度。内存表对象每添加一条记录需要读取N1个字段缓冲值对象。添加一条记录的过程如前所述。下一次执行时读取接下来的N1个字段缓冲值对象执行新增一条记录操作。
图3是本发明实施例中内存数据库根据内存操作参数执行内存操作步骤中删除记录实现流程图。
删除记录字段缓冲值数组的长度为查询条件中字段的数目,也就是结构体变量中的成员数,假设为N1。字段缓冲值数组的首地址和长度记录在操作句柄对象中。当执行操作句柄的时候,句柄将这些信息传递给内存表对象,内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作。若存在相应的索引,其具体步骤如下步骤321找到索引IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤322然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤323到步骤328;步骤323根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,索引记录中记录了该索引对应的表记录在表记录数组中的下标,也就是表记录的记录号。然后获取该表记录;步骤324根据表记录组出该记录的该索引的索引内存值。和输入的索引内存值进行内存比较。如果相等,则需要删除这条表记录,并将该表记录的所有索引记录都删除。否则处理哈希冲突链表中的下一个元素;步骤325删除表记录前需要将表记录备份到一个内存缓冲区,等删除完这条记录及其索引后,再将备份从内存缓冲区中清空;步骤326删除表记录;步骤327删除表记录的索引记录,及索引记录在哈希冲突链表中对应的元素;步骤328删除备份的表记录。
为了支持批量操作,每次调用接口的时候,可以提供一个结构体变量数组A1,假设长度为N2。并使用字段缓冲值对象数组字段的实际值和字段的元信息绑定起来。此时,字段缓冲值数组的长度为结构体变量中成员的数目N1乘以数组A1的长度N2,每N1个字段缓冲值对象绑定了A1中的一个元素。在执行句柄的时候,需要指定操作执行的次数。操作执行的次数不能大于数组A1的长度。内存表对象每执行一次删除操作需要读取N1个字段缓冲值对象,也就是读取A1中的一个元素执行删除操作。执行一次删除操作的过程如前所述。下一次执行时读取接下来的N1个字段缓冲值对象执行删除操作。
图4是本发明实施例中内存数据库根据内存操作参数执行内存操作步骤中更改记录实现过程图。
更改记录字段缓冲值数组的长度为查询条件字段的数目和被更改字段的数目之和,也就是结构体变量中的成员数,假设为N1。字段缓冲值数组的首地址和长度记录在操作句柄对象中。当执行操作句柄的时候,句柄将这些信息传递给内存表对象,内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作,若存在相应索引,则具体步骤如下步骤331找到索引IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤332然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤333到步骤338;步骤333根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,索引记录中记录了该索引对应的表记录在表记录数组中的下标,也就是表记录的记录号。然后获取该表记录;步骤334根据表记录组出该记录的该索引的索引内存值。和输入的索引内存值进行内存比较。如果相等,则需要更改这条表记录。否则处理哈希冲突链表中的下一个元素;步骤335更改表记录前需要将表记录备份到一个内存缓冲区,在更改完这条记录及其索引后,再将备份从内存缓冲区中清空;步骤336内存表对象将读取字段缓冲值对象数组中不是查询条件的字段的值,将这些字段的值拷贝到记录中的对应字段的内存块中。需要注意的是,对于索引字段被更改的情况,索引字段的信息需要提供两份一份说明查询条件,一份说明索引字段的新值;步骤337对于需要更改索引字段的情况,需要更改索引记录所属的哈希冲突链表;步骤338删除备份的表记录。
为了支持批量操作,每次调用接口的时候,可以提供一个结构体变量数组A1,假设长度为N2。并使用字段缓冲值对象数组字段的实际值和字段的元信息绑定起来。此时,字段缓冲值数组的长度为结构体变量中成员的数目N1乘以数组A1的长度N2,每N1个字段缓冲值对象绑定了A1中的一个元素。在执行句柄的时候,需要指定操作执行的次数。操作执行的次数不能大于数组A1的长度。内存表对象每执行一次更改操作需要读取N1个字段缓冲值对象,也就是读取A1中的一个元素执行更改操作。执行一次更改操作的过程如前所述。下一次执行时读取接下来的N1个字段缓冲值对象执行更改操作。
图5是本发明实施例中内存数据库根据内存操作参数执行内存操作步骤中查询记录实现过程图。
查询记录字段缓冲值数组用于表示接受查询结果的缓冲区,假设用于接受查询结果的数据结构是一个结构体数组A2。将字段缓冲值数组的首地址和长度记录在操作句柄对象中。执行的时候可以指定执行次数,此处执行次数的含义是需要从内存数据库中查询多少条记录,必须小于数组A2的长度。假设执行次数指定为C1。当执行操作句柄的时候,句柄将这些信息传递给内存表对象,内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作。若存在,其具体执行步骤如下步骤341找到索引IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤342然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤343到步骤348;步骤343根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,索引记录中记录了该索引对应的表记录在表记录数组中的下标,也就是表记录的记录号。然后获取该表记录;步骤344根据表记录组出该记录的该索引的索引内存值。和输入的索引内存值进行内存比较。如果相等,则需要返回这条表记录。否则处理哈希冲突链表中的下一个元素;步骤345内存表对象将读取结果集字段缓冲值数组中每一个元素,判断该字段缓冲值应该接收表记录的那一个字段的值,然后将对应字段的内存值拷贝到字段缓冲值对象中记录的用于接收结果集字段值的内存块中。直到找不到符合条件的记录或已经找到C1条记录为止。
图6所示为本发明实施例中接口使用的数据结构示意图,图示为将字段实际值的内存区起始地址和长度、表名称、操作类型通过内存缓冲区传递给内存数据库。
图7是本发明实施例中接口被调用的流程图,其具体步骤如下步骤a数据库操作模块提供一个结构体变量,一个字段缓冲值数组,并将结构体变量和字段缓冲值数组绑定;步骤b数据库操作模块调用内存数据库接口,申请记录操作信息的缓冲区;
步骤c数据库操作模块调用内存数据库接口,将操作类型、表名称和用于绑定的字段缓冲值数组的信息记录到缓冲区中;步骤d数据库操作模块调用内存数据库接口,执行操作;步骤e释放记录操作信息的缓冲区;步骤f流程结束。
本发明的技术效果如下本发明通过内存数据库执行内存拷贝操作,无需数据库操作模块提供执行内存拷贝操作的实现。使得内存数据库不再依赖数据库操作模块提供表操作的实现,简化了数据库操作模块的代码,减小了数据库操作模块和内存数据库的耦合,加快使用内存数据库的通信系统的开发速度和稳定速度。并避免由于数据库操作模块直接操作内存表而产生的数据库操作模块某一处故障导致整个内存数据库的内存状态错误的情况发生。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.用于内存数据库的一种数据操作接口的实现方法,其特征在于,设置一数据操作接口的步骤,将数据库操作模块和内存数据库中的数据隔离,使数据库操作模块通过所述数据操作接口完成内存数据库的内存数据操作。
2.根据权利要求1所述用于内存数据库的一种数据操作接口的实现方法,其特征在于,所述设置一数据操作接口的步骤又包括如下步骤步骤1,预备内存操作参数;步骤2,内存数据库将内存操作参数保留在一缓冲区中,所述缓冲区称为操作句柄;步骤3,内存数据库根据内存操作参数执行内存数据比较和/或拷贝的操作。
3.根据权利要求2所述用于内存数据库的一种数据操作接口的实现方法,其特征在于,所述内存操作参数包括操作类型、表名称、各字段的实际值的内存区参数、字段在表中的序号。
4.根据权利要求3所述用于内存数据库的一种数据操作接口的实现方法,其特征在于,字段的信息以字段缓冲值数组的形式传递给内存数据库。
5.根据权利要求2、3或4所述用于内存数据库进行数据操作接口的实现方法,其特征在于,所述步骤3还包括增加记录的步骤,设置字段缓冲值数组的长度为待新增记录中设置了值的字段的数目,所述字段缓冲值数组的首地址和长度记录在操作句柄对象中。
6.根据权利要求5所述用于内存数据库进行数据操作接口的实现方法,其特征在于,在执行操作句柄时,所述增加记录的步骤又包括步骤311,操作句柄将字段缓冲值数组的首地址和长度的信息传递给内存表对象,内存表首先为新记录在表记录数组中分配一条记录的空间;步骤312,内存表然后读取字段缓冲值数组中每一个字段的实际值,并根据字段的序号计算得到表记录中字段相对于记录首地址的偏移量,然后逐个地进行字段拷贝的操作;步骤313,将字段缓冲值数组中所有的字段的实际值拷贝到表记录相应的字段内存中后,再根据表上定义的索引,添加索引记录,完成一次表记录的新增操作,所述添加索引记录的方法是,对定义在该表上的每一个索引,执行步骤314到步骤316;步骤314,分配索引记录的空间,将该表记录的记录号写入索引记录数组中;步骤315,根据索引的字段定义组出索引内存值,然后根据索引内存值计算索引哈希值;步骤316,根据索引哈希值找到哈希入口地址数组中下标为该哈希值的元素,该元素是一个链表的头部,称为哈希冲突链表,链表中的元素都是索引哈希值相同的索引记录号,然后将该记录的索引记录的记录号写入链表的头部。
7.根据权利要求2、3或4所述的内存数据库进行数据操作接口的实现方法,其特征在于,所述步骤3还包括删除记录的步骤,设置字段缓冲值数组的长度为查询条件中字段的数目,字段缓冲值数组的首地址和长度记录在操作句柄对象中,当执行操作句柄的时候,句柄将字段缓冲值数组的首地址和长度信息传递给内存表对象,内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作。
8.根据权利要求7所述的内存数据库进行数据操作接口的实现方法,其特征在于,若存在相应索引,所述删除记录的步骤又包括步骤321,找到需要使用的索引,设为IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤322,然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤323到步骤328;步骤323,根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,索引记录中记录了该索引对应的表记录在表记录数组中的下标,该下标是表记录的记录号,然后获取该表记录;步骤324,根据表记录组出该记录的该索引的索引内存值,和输入的索引内存值进行内存比较,如果相等,则需要删除该条表记录,并将该表记录的所有索引记录都删除,否则处理哈希冲突链表中的下一个元素;步骤325,删除表记录前需要将表记录备份到一个内存缓冲区,等删除完该条记录及其索引后,再将备份从内存缓冲区中清空;步骤326,删除表记录;步骤327,删除表记录的索引记录,及索引记录在哈希冲突链表中对应的元素;步骤328,删除备份的表记录。
9.根据权利要求2、3或4所述的内存数据库进行数据操作接口的实现方法,其特征在于,所述步骤3还包括更改记录的步骤,字段缓冲值数组的长度为查询条件字段的数目和被更改字段的数目之和,字段缓冲值数组的首地址和长度记录在操作句柄对象中,当执行操作句柄的时候,操作句柄将字段缓冲值数组的首地址和长度信息传递给内存表对象,所述内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作。
10根据权利要求9所述的内存数据库进行数据操作接口的实现方法,其特征在于,若存在相应索引,所述更改记录的步骤又包括步骤331,找到需要使用的索引,设为IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤332,然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤333到步骤338;步骤333,根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,在索引记录中记录该索引对应的表记录在表记录数组中的下标,该下标是表记录的记录号,然后获取该表记录;步骤334,根据表记录组出该记录的该索引的索引内存值,和输入的索引内存值进行内存比较,如果相等,则需要更改该条表记录,否则处理哈希冲突链表中的下一个元素;步骤335,更改表记录前需要将表记录备份到一个内存缓冲区,在更改完该条记录及其索引后,再将备份从内存缓冲区中清空;步骤336,内存表对象将读取字段缓冲值对象数组中不是查询条件的字段的值,将该字段的值拷贝到记录中的对应字段的内存块中,其中,对于索引字段被更改的情况,索引字段的信息为两份,一份说明查询条件,一份说明索引字段的新值;步骤337,对于需要更改索引字段的情况,将更改索引记录所属的哈希冲突链表;步骤338,删除备份的表记录。
11.根据权利要求2、3或4所述的内存数据库进行数据操作的接口实现方法,其特征在于,所述步骤3还包括查询记录步骤,字段缓冲值数组用于表示接受查询结果的缓冲区,假设用于接受查询结果的数据结构是一个结构体数组A2,将字段缓冲值数组的首地址和长度记录在操作句柄对象中,执行的时候可以指定执行次数,该执行次数必须小于数组A2的长度,当执行操作句柄的时候,句柄将字段缓冲值数组的首地址和长度信息传递给内存表对象,内存表首先判断是否存在相应的索引,如果不存在则无法执行此次操作。
12.根据权利要求11所述的内存数据库进行数据操作接口的实现方法,其特征在于,所述查询记录的步骤又包括步骤341,找到需要使用的索引,设为IDX1后,根据查询条件字段缓冲值数组中每一个字段的实际值组出索引值,并计算索引的哈希值;步骤342,然后在IDX1的哈希入口地址数组中对应元素指向的链表中,对于每一个链表元素,执行步骤343到步骤348;步骤343,根据元素中记录的索引记录的下标在索引记录数组中找到索引记录,索引记录中记录了该索引对应的表记录在表记录数组中的下标,也就是表记录的记录号,然后获取该表记录;步骤344,根据表记录组出该记录的该索引的索引内存值,和输入的索引内存值进行内存比较,如果相等,则需要返回该条表记录,否则处理哈希冲突链表中的下一个元素;步骤345,内存表对象将读取结果集字段缓冲值数组中每一个元素,判断该字段缓冲值应该接收表记录的拿一个字段的值,然后将对应字段的内存值拷贝到字段缓冲值对象中记录的用于接收结果集字段值的内存块中,直到找不到符合条件的记录或已经执行到指定执行次数为止。
全文摘要
本发明公开了用于内存数据库的一种数据操作接口的实现方法,其中,设置一数据操作接口的步骤,将数据库操作模块和内存数据库中的数据隔离,使数据库操作模块通过所述数据操作接口完成内存数据的内存数据操作。本发明通过将内存数据库执行内存拷贝操作,无需数据库操作模块提供执行内存拷贝操作的实现,使得内存数据库不再依赖数据库操作模块提供表操作的实现,简化了数据库操作模块的代码,减小了数据库操作模块和内存数据库的耦合,加快使用内存数据库的通信系统的开发速度和稳定速度。
文档编号G06F17/30GK1848111SQ20051003894
公开日2006年10月18日 申请日期2005年4月15日 优先权日2005年4月15日
发明者刘平 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1