专利名称:一种分布式数据库的管理方法和系统的制作方法
技术领域:
本申请涉及数据库技术领域,特别是涉及一种分布式数据库的管理方法和系统。
背景技术:
在通信系统中,由于需要对大量的数据进行处理,因此对数据库访问的实时性和访问效率要求比较高。目前的数据库从数据库存储方式分为内存数据库和磁盘数据库。其中,内存数据库用于将数据库的所有数据和索引存储在内存中,数据库的访问和操作基于内存进行。磁盘数据库用于将数据库的所有数据和索引存储在文件中,数据库访问和操作基于文件进行。为了提高访问的实时性和访问效率,在通信系统中通常会采用内存数据库。但是由于存储在内存数据库中的数据在系统掉电后会丢失,因此对于其中一些重要的数据还需 要永久存储,例如,在通信中需要对配置信息或者重要的计费信息等进行存盘,此时就要求数据库同时具备内存数据库和磁盘数据库的特点。针对上述情况,目前常用的一种方法是在访问内存数据库时将需要永久存储的数据写入磁盘文件,系统启动时再将数据从磁盘文件加载到内存中。但是该方法需要针对内存数据库设计对应的磁盘文件格式,设计过程复杂,并且磁盘的操作性能不高,从而导致数据库的管理过程复杂,数据库的访问效率低下。
发明内容
本申请所要解决的技术问题是提供一种分布式数据库的管理方法和系统,以解决数据库的管理过程复杂,访问效率低下的问题。为了解决上述问题,本申请公开了一种分布式数据库的管理方法,包括将第一数据库的访问接口和第二数据库的访问接口封装为统一接口 ;为节点创建数据库,所述为节点创建的数据库为通过所述统一接口访问的第一数据库,或者为通过所述统一接口访问的第二数据库,或者为通过所述统一接口访问的第一数据库和第二数据库;在每个节点的节点注册信息中登记数据库待同步的源节点和目标节点;依据所述节点注册信息完成源节点的数据库与目标节点的数据库之间的数据同
止/J/ O 优选的,所述第一数据库为内存数据库,所述第二数据库为物理数据库。优选的,所述依据所述节点注册信息完成源节点的数据库与目标节点的数据库之间的数据同步的步骤包括通过查找源节点的节点注册信息来确定与源节点同步的目标节点;完成所述源节点的数据库向目标节点的数据库的数据同步。优选的,每个节点具有发送链表和接收链表,其中,发送链表用于存储该节点要发送的同步数据块,接收链表用于存储该节点接收的同步数据块;
所述完成所述源节点的数据库向目标节点的数据库的数据同步的步骤包括源节点依据自己的发送链表、目标节点依据自己的接收链表,完成源节点的数据库向目标节点的数据库的数据同步。优选的,所述源节点依据自己的发送链表、目标节点依据自己的接收链表,完成源节点的数据库向目标节点的数据库的数据同步的步骤包括源节点上的消息收发线程将同步数据块存储在该源节点的发送链表上;源节点上的同步任务每隔预设时间段检测所述发送链表上是否包括同步数据块,若是,则获取所述同步数据块,并将同步数据块发送至目标节点;
所述目标节点在接收到所述同步数据块后,该目标节点上的消息收发线程将所述同步数据块存储在该目标节点的接收链表上;所述目标节点上的同步任务每隔预设时间段检测所述接收链表上是否包括同步数据块,若是,则获取所述同步数据块;所述目标节点依据所述同步数据块更新该节点的数据库,完成所述源节点的数据库向目标节点的数据库的数据同步。优选的,在源节点上的消息收发线程将同步数据块存储在该源节点的发送链表上之前,还包括通过查找目标节点的节点注册信息来确定向该目标节点同步的源节点;目标节点发送数据同步请求至所述源节点。优选的,所述方法还包括将所述目标节点作为源节点,通过查找该节点的节点注册信息确定与该节点同步的其他目标节点;完成该节点的数据库与所述其他目标节点的数据库之间的数据同步。优选的,在为节点创建数据库之后,还包括针对每个数据库创建多个数据表,并为每个数据表分配一个数据表名;为每个数据表分配一个句柄,所述句柄和所述数据表名的下标一一对应;查找与所述句柄相对应的数据表名,访问所述数据表名对应的数组中登记的数据表的结构信息。优选的,所述方法还包括每个应用对应一个应用标识,针对每个应用标识注册与其相匹配的数据表;当节点上的数据表中的数据更新之后,查找与所述数据表相匹配的应用标识;该节点通过所述统一接口将所述数据更新通知给所述相匹配的应用标识对应的应用。另一方面,本申请还公开了一种分布式数据库的管理系统,所述管理系统应用于分布式节点,所述管理系统包括封装模块,用于将第一数据库的访问接口和第二数据库的访问接口封装为统一接Π ;其中,每个分布式节点包括第一创建模块、登记模块和同步模块,第一创建模块,用于为节点创建数据库,所述为节点创建的数据库为通过所述统一接口访问的第一数据库,或者为通过所述统一接口访问的第二数据库,或者为通过所述统一接口访问的第一数据库和第二数据库;登记模块,用于在每个节点的节点注册信息中登记数据库待同步的源节点和目标节点;
源节点上的同步模块和目标节点上的同步模块用于依据所述数据同步信息完成第一节点的数据库与第二节点的数据库之间的数据同步。优选的,每个节点上的同步模块包括第一查找单元,用于当所述节点为源节点时,通过查找该源节点的节点注册信息来确定与源节点同步的目标节点;源节点上的同步模块和目标节点上的同步模块用于完成源节点的数据库向目标节点的数据库的数据同步。优选的,每个节点具有发送链表和接收链表,其中,发送链表用于存储该节点要发送的同步数据块,接收链表用于存储该节点接收的同步数据块;所述源节点上的同步模块和目标节点上的同步模块还用于通过源节点依据自己的发送链表、目标节点依据自己的接收链表,完成源节点的数据库向目标节点的数据库的数据同步。优选的,每个节点上的同步模块还包括第一存储单元,用于当所述节点为源节点时,通过该源节点上的消息收发线程将同步数据块存储在该源节点的发送链表上;第一获取单元,用于当所述节点为源节点时,通过该源节点上的同步任务每隔预设时间段检测所述发送链表上是否包括同步数据块,若是,则获取所述同步数据块,并将同步数据块发送至目标节点;第二存储单元,用于当所述节点为目标节点时,在接收到所述同步数据块后,通过该目标节点上的消息收发线程将所述同步数据块存储在该目标节点的接收链表上;第二获取单元,用于当所述节点为目标节点时,通过该目标节点上的同步任务每隔预设时间段检测所述接收链表上是否包括同步数据块,若是,则获取所述同步数据块;更新单元,用于当所述节点为目标节点时,依据所述同步数据块更新该节点的数据库,完成所述源节点的数据库向目标节点的数据库之间的数据同步。优选的,每个节点上的同步模块还包括第二查找单元,用于当所述节点为目标节点时,在第一存储单元通过源节点上的消息收发线程将同步数据块存储在该源节点的发送链表上之前,通过查找该目标节点的节点注册信息来确定向该目标节点同步的源节点;发送单元,用于当所述节点为目标节点时,发送数据同步请求至所述源节点。优选的,所述第一查找单元还用于当将所述目标节点作为源节点时,通过查找该节点的节点注册信息确定与该节点同步的其他目标节点;所述该节点上的同步模块和所述其他节点上的同步模块用于完成该节点的数据库与所述其他目标节点的数据库之间的数据同步。优选的,所述每个分布式节点还包括第二创建模块,用于在为节点创建数据库之后,针对每个数据库创建多个数据表,并为每个数据表分配一个数据表名;
分配模块,用于为每个数据表分配一个句柄,所述句柄和所述数据表名一一对应;访问模块,用于查找与所述句柄相对应的数据表名,访问所述数据表名对应的数据表的结构信息。优选的,每个应用对应一个应用标识,所述每个分布式节点还包括注册模块,用于针对每个应用标识注册与其相匹配的数据表;第二查找模块,用于当节点上的数据表中的数据更新之后,查找与所述数据表相匹配的应用标识;通知模块,用于该节点通过所述统一接口将所述数据更新通知给所述相匹配的应用标识对应的应用。与现有技术相比,本申请包括以下优点首先,本申请通过将第一数据库的访问接口和第二数据库的访问接口封装为统一接口,从而通过所述统一接口即可访问第一数据库或者第二数据库,或者同时访问第一数据库和第二数据库。因此在为节点创建数据库时,可以为不同的节点创建不同的数据库,其可以为第一数据库,或者第二数据库,或者第一数据库和第二数据库。并且,本申请通过在每个节点的节点注册信息中登记数据库待同步的源节点和目标节点,当某一节点的数据库需要将其数据同步到其他节点时,即可根据节点注册信息完成节点之间的数据库同步,实现了不同节点的数据库的一致性同步。因此,本申请针对于内存数据库和磁盘数据库来说,可以更加简便地实现两者之间的数据同步,避免了设计复杂的磁盘文件格式,简化了数据库的管理。其次,本申请将不同数据库的访问接口封装为统一接口,应用通过所述统一接口即可访问不同的数据库,有利于应用移植不同的数据库,提高了数据库的可移植性。再次,本申请针对每个应用注册与其相匹配的数据表,当数据表中的数据更新之 后,即可通过所述统一接口实时将数据更新通知给与数据表相匹配的应用,提高了数据库管理的实时性。
图I是本申请实施例一所述一种分布式数据库的管理方法的流程图;图2是本申请实施例二所述一种分布式数据库的管理方法的流程图;图3是本申请实施例所述内存库和物理库整合的结构示意图;图4是本申请实施例所述各个节点的数据库的分布和数据同步示意图;图5是本申请实施例三所述一种分布式数据库的管理方法的流程图;图6是本申请实施例四所述一种分布式数据库的管理系统的结构框图;图7是本申请实施例五所述一种分布式数据库的管理系统的结构框图;图8是本申请实施例六所述一种分布式数据库的管理系统的结构框图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。
本申请通过将不同数据库的访问接口封装为统一接口,通过所述统一接口即可访问不同形式的数据库,可以访问一个数据库或多个数据库,提高了访问效率。对于各个节点也可更加灵活地为其创建不同形式的数据库,当一个节点的数据库有数据更新时,可以将其同步到其他相关联节点的数据库中,实现了不同节点不同形式数据库之间的数据同步,简化了数据库的管理过程。参照图1,示出了本申请实施例一所述的一种分布式数据库的管理方法的流程图,所述方法包括步骤SlOl,将第一数据库的访问接口和第二数据库的访问接口封装为统一接口。
本申请实施例中数据库的接口分为两个层次的封装,第一层封装即分别将第一数据库的kernel (内核)和第二数据库的kernel (内核)封装为各自的访问接口,第二层封装即为将第一数据库的访问接口和第二数据库的访问接口封装为统一接口。其中,对于第一层封装在数据库的开发过程中即可完成,本申请对其不再进行详细论述。第二层封装所得到的统一接口是针对应用提供的,应用可以直接通过所述统一接口访问不同的数据库,具体的,可以访问第一数据库或者第二数据库,或者访问第一数据库和第二数据库。步骤S102,为节点创建数据库,所述为节点创建的数据库为通过所述统一接口访问的第一数据库,或者为通过所述统一接口访问的第二数据库,或者为通过所述统一接口访问的第一数据库和第二数据库。对于每个节点,首先为其创建数据库,由于通过所述统一接口可以访问第一数据库或者第二数据库,或者访问第一数据库和第二数据库,因此,为节点创建的数据库可以为第一数据库,或者第二数据库,或者第一数据库和第二数据库。各个节点可以通过所述统一接口调用各自对应的数据库。步骤S103,在每个节点的节点注册信息中登记数据库待同步的源节点和目标节点。在为节点创建数据库之后,某些节点的数据库之间是需要同步的。因此本申请实施例首先需要注册数据库待同步的节点,注册之后即表示这些节点的数据库之间是需要数据同步的。如果其中一个节点的数据库有数据更新,则要把所述数据更新同步至注册的其他节点的数据库中;或者其中一个节点需要和注册的其他节点数据同步,则需要将注册的其他节点的数据库中的数据同步至该节点的数据库中。在注册数据库待同步的节点的过程中,这些数据库待同步的节点可以是由某个应用指定的,即如果该应用需要用到某些节点,则注册这些节点为数据库待同步的节点。另外,所述数据库待同步的节点也可以不由应用指定,如果某两个节点的数据库之间是有关联的,但是应用只是用到了其中一个节点,那么也应该将这两个节点注册为数据库待同步的节点,即只要两个节点的数据库之间有关联,则可将其注册为数据库待同步的节点。具体的,为节点创建数据库之后,某些节点的数据库之间可能存在关联(例如,两个数据库中可能包括相同的数据表,或者数据表中包括相同的数据),如果某一个节点的数据库中的数据有更新,则需要将数据更新同步至与其相关联的节点中的数据库,从而实现具有关联关系的节点之间的数据库的数据同步更新。例如,两个节点的数据库中包括相同的数据表(如均为数据表I),当其中一个节点的数据库中的数据表I有数据更新时,则需要将所述数据更新同步至另一个节点的数据库中的数据表1,以使两个数据表I中的数据保持同步。在本申请实施例中,每个节点中都含有自己的节点注册信息,所述节点注册信息可以采用下述表一的形式表示表一
权利要求
1.一种分布式数据库的管理方法,其特征在于,包括 将第一数据库的访问接口和第二数据库的访问接口封装为统一接口; 为节点创建数据库,所述为节点创建的数据库为通过所述统一接口访问的第一数据库,或者为通过所述统一接口访问的第二数据库,或者为通过所述统一接口访问的第一数据库和第二数据库; 在每个节点的节点注册信息中登记数据库待同步的源节点和目标节点; 依据所述节点注册信息完成源节点的数据库与目标节点的数据库之间的数据同步。
2.根据权利要求I所述的方法,其特征在于,所述第一数据库为内存数据库,所述第二数据库为物理数据库。
3.根据权利要求I所述的方法,其特征在于,所述依据所述节点注册信息完成源节点的数据库与目标节点的数据库之间的数据同步的步骤包括 通过查找源节点的节点注册信息来确定与源节点同步的目标节点; 完成所述源节点的数据库向目标节点的数据库的数据同步。
4.根据权利要求3所述的方法,其特征在于, 每个节点具有发送链表和接收链表,其中,发送链表用于存储该节点要发送的同步数据块,接收链表用于存储该节点接收的同步数据块; 所述完成所述源节点的数据库向目标节点的数据库的数据同步的步骤包括 源节点依据自己的发送链表、目标节点依据自己的接收链表,完成源节点的数据库向目标节点的数据库的数据同步。
5.根据权利要求4所述的方法,其特征在于,所述源节点依据自己的发送链表、目标节点依据自己的接收链表,完成源节点的数据库向目标节点的数据库的数据同步的步骤包括 源节点上的消息收发线程将同步数据块存储在该源节点的发送链表上; 源节点上的同步任务每隔预设时间段检测所述发送链表上是否包括同步数据块,若是,则获取所述同步数据块,并将同步数据块发送至目标节点; 所述目标节点在接收到所述同步数据块后,该目标节点上的消息收发线程将所述同步数据块存储在该目标节点的接收链表上; 所述目标节点上的同步任务每隔预设时间段检测所述接收链表上是否包括同步数据块,若是,则获取所述同步数据块; 所述目标节点依据所述同步数据块更新该节点的数据库,完成所述源节点的数据库向目标节点的数据库的数据同步。
6.根据权利要求5所述的方法,其特征在于,在源节点上的消息收发线程将同步数据块存储在该源节点的发送链表上之前,还包括 通过查找目标节点的节点注册信息来确定向该目标节点同步的源节点; 目标节点发送数据同步请求至所述源节点。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括 将所述目标节点作为源节点,通过查找该节点的节点注册信息确定与该节点同步的其他目标节点; 完成该节点的数据库与所述其他目标节点的数据库之间的数据同步。
8.根据权利要求I所述的方法,其特征在于,在为节点创建数据库之后,还包括 针对每个数据库创建多个数据表,并为每个数据表分配一个数据表名; 为每个数据表分配一个句柄,所述句柄和所述数据表名一一对应; 查找与所述句柄相对应的数据表名,访问所述数据表名对应的数据表的结构信息。
9.根据权利要求8所述的方法,其特征在于,还包括 每个应用对应一个应用标识,针对每个应用标识注册与其相匹配的数据表; 当节点上的数据表中的数据更新之后,查找与所述数据表相匹配的应用标识; 该节点通过所述统一接口将所述数据更新通知给所述相匹配的应用标识对应的应用。
10.一种分布式数据库的管理系统,其特征在于,所述管理系统应用于分布式节点,所述管理系统包括 封装模块,用于将第一数据库的访问接口和第二数据库的访问接口封装为统一接口 ; 其中,每个分布式节点包括第一创建模块、登记模块和同步模块, 第一创建模块,用于为节点创建数据库,所述为节点创建的数据库为通过所述统一接口访问的第一数据库,或者为通过所述统一接口访问的第二数据库,或者为通过所述统一接口访问的第一数据库和第二数据库; 登记模块,用于在每个节点的节点注册信息中登记数据库待同步的源节点和目标节占. 源节点上的同步模块和目标节点上的同步模块用于依据所述节点注册信息完成源节点的数据库与目标节点的数据库之间的数据同步。
11.根据权利要求10所述的系统,其特征在于, 每个节点上的同步模块包括 第一查找单元,用于当所述节点为源节点时,通过查找该源节点的节点注册信息来确定与源节点同步的目标节点; 源节点上的同步模块和目标节点上的同步模块用于完成源节点的数据库向目标节点的数据库的数据同步。
12.根据权利要求11所述的系统,其特征在于, 每个节点具有发送链表和接收链表,其中,发送链表用于存储该节点要发送的同步数据块,接收链表用于存储该节点接收的同步数据块; 所述源节点上的同步模块和目标节点上的同步模块还用于通过源节点依据自己的发送链表、目标节点依据自己的接收链表,完成源节点的数据库向目标节点的数据库的数据同步。
13.根据权利要求12所述的系统,其特征在于, 每个节点上的同步模块还包括 第一存储单元,用于当所述节点为源节点时,通过该源节点上的消息收发线程将同步数据块存储在该源节点的发送链表上; 第一获取单元,用于当所述节点为源节点时,通过该源节点上的同步任务每隔预设时间段检测所述发送链表上是否包括同步数据块,若是,则获取所述同步数据块,并将同步数据块发送至目标节点; 第二存储单元,用于当所述节点为目标节点时,在接收到所述同步数据块后,通过该目标节点上的消息收发线程将所述同步数据块存储在该目标节点的接收链表上; 第二获取单元,用于当所述节点为目标节点时,通过该目标节点上的同步任务每隔预设时间段检测所述接收链表上是否包括同步数据块,若是,则获取所述同步数据块; 更新单元,用于当所述节点为目标节点时,依据所述同步数据块更新该节点的数据库,完成所述源节点的数据库向目标节点的数据库之间的数据同步。
14.根据权利要求13所述的系统,其特征在于,每个节点上的同步模块还包括 第二查找单元,用于当所述节点为目标节点时,在第一存储单元通过源节点上的消息收发线程将同步数据块存储在该源节点的发送链表上之前,通过查找该目标节点的节点注册信息来确定向该目标节点同步的源节点; 发送单元,用于当所述节点为目标节点时,发送数据同步请求至所述源节点。
15.根据权利要求14所述的系统,其特征在于, 所述第一查找单元还用于当将所述目标节点作为源节点时,通过查找该节点的节点注册信息确定与该节点同步的其他目标节点; 所述该节点上的同步模块和所述其他节点上的同步模块用于完成该节点的数据库与所述其他目标节点的数据库之间的数据同步。
16.根据权利要求10所述的系统,其特征在于,所述每个分布式节点还包括第二创建模块,用于在为节点创建数据库之后,针对每个数据库创建多个数据表,并为每个数据表分配一个数据表名; 分配模块,用于为每个数据表分配一个句柄,所述句柄和所述数据表名一一对应; 访问模块,用于查找与所述句柄相对应的数据表名,访问所述数据表名对应的数据表的结构信息。
17.根据权利要求16所述的系统,其特征在于,每个应用对应一个应用标识,所述每个分布式节点还包括 注册模块,用于针对每个应用标识注册与其相匹配的数据表; 第二查找模块,用于当节点上的数据表中的数据更新之后,查找与所述数据表相匹配的应用标识; 通知模块,用于该节点通过所述统一接口将所述数据更新通知给所述相匹配的应用标识对应的应用。
全文摘要
本申请提供了一种分布式数据库的管理方法和系统,以解决数据库的管理过程复杂,访问效率低下的问题。其中,所述方法包括将第一数据库的访问接口和第二数据库的访问接口封装为统一接口;为节点创建数据库,所述为节点创建的数据库为通过所述统一接口访问的第一数据库,或者为通过所述统一接口访问的第二数据库,或者为通过所述统一接口访问的第一数据库和第二数据库;在每个节点的节点注册信息中登记数据库待同步的源节点和目标节点;依据所述节点注册信息完成源节点的数据库与目标节点的数据库之间的数据同步。本申请简化了数据库的管理,提高了访问效率。
文档编号G06F17/30GK102831223SQ20121030366
公开日2012年12月19日 申请日期2012年8月23日 优先权日2012年8月23日
发明者林秋利 申请人:大唐移动通信设备有限公司