首页> 中国专利> 用于优化索引、主数据库节点和订户数据库节点的方法

用于优化索引、主数据库节点和订户数据库节点的方法

摘要

一种用于优化索引、主数据库节点和订户数据库节点的方法。这用于优化索引的方法包括:当所述索引被添加到所述主数据库节点时,主数据库节点检查索引的角色信息是否匹配所述主数据库节点的角色信息;当所述索引的所述角色信息匹配所述主数据库节点的所述角色信息时,通过使用所述索引更新数据库信息。因此,在保持架构相同的同时减少所述主数据库节点和所述订户数据库节点中不必要的索引。此外,减少了从所述主数据库节点传输到所述订户数据库节点的不必要的日志。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-09-03

    授权

    授权

  • 2016-07-27

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20140430

    实质审查的生效

  • 2016-06-29

    公开

    公开

说明书

技术领域

本发明涉及数据库技术,尤其涉及一种用于优化索引、主(master)数据库节点和订户(subscriber)数据库节点的方法。

背景技术

在关系数据库中,索引为最普通的加速查询数据库的方法。索引与表相关联。一旦索引与表相关联,索引上的操作(读或写)是隐式的。用户不需要认知索引。

出于恢复和复制目的,通常RDBMS生成描述每个操作的日志。该日志称为重做日志或事务日志或简称为日志。在许多情况下,该日志为实体性质。每当数据库上发生写操作时,日志记录该写操作。这由“日志写入进程(logwriterprocess)”完成。这些日志包括:表(数据段)的更新和与表关联的索引(索引段)的更新。

图1为示出RDBMS存储引擎内的标准操作示例的示意图。如图1所示,考虑具有两个索引的简单表。当向表内插入一条记录时,数据库进程将该记录写入数据段和两个索引段,同时生成各操作的日志。

另一方面,对于高可用性的要求,负载均衡数据库使用复制作为标准方法。最常见的复制实施形式为“日志传送(logshipping)”。

图2为示出主数据库节点和订户数据库节点之间的日志传送示例的示意图。如图2所示,在该解决方案中,指定的主数据库节点不断将其日志(例如,重做日志)传送到订户数据库节点。订户数据库节点将这些日志应用到数据库以和主数据库节点同步。传送的日志包括数据段和索引段的更新。

出于无缝切换(或故障转移)目的,主数据库节点和订户数据库节点中的架构最好保持相同。通信领域和企业领域中的大部分HA系统使用可读写的主数据节点和一个或多个只读订户数据库节点。

如今,从主数据库节点到订户数据库节点的日志传送为所有数据库复制的正常特征。专用复制解决方案,如(例如Oracle中的)GoldenGate可以在异构拓扑中同步数据库。通过使用【参考1】中的转换中间件(translationmiddleware)提供类似解决方案。这些解决方案使用基于SQL语句的逻辑复制,与基于日志传送的同步相比,基于SQL语句的逻辑复制慢得多。

【参考2】提出一项发明:从主数据库节点传送的数据,在订户数据库节点中进行语义的重新解释并随后应用到数据库。该解决方案可以减少从主数据库节点传送的日志的大小。

【参考3】提出一项发明:主数据库节点将日志传送到备用数据库节点。备用数据库节点具有映射到主DB表的表(称为联合表映射)。该更改被应用到联合表。

然而,所有上述解决方案都具有以下两个缺点:(1)在订户数据节点中完成了重新解释而主数据库节点却没有认知到这个事实,这无法帮助减少主数据库节点的负载;(2)由于两个节点在语义上不等,切换将会非常昂贵。

【参考4】提供了一项可减少主数据库节点和订户数据库节点负载的发明。本发明还可以减少主数据库节点上的内存消耗。在本发明中,订户数据库节点具有自己的索引集,订户数据库从主数据库节点接收日志后生成索引。切换后,新的主数据库节点丢弃这些索引。该解决方案的优点在于能够在主数据库节点上进行简单切换并优化了内存。

然而,该解决方案具有3个问题:(1)其不具有减少订户数据库节点上的冗余索引的机制;(2)其要求订户数据库节点确认哪些索引需要额外填充,并且这通常无法单独在存储引擎层完成;(3)其基于对于管理员而言的角色将onus索引创建放置在多个节点上。

【参考1】“基于中间件的数据库复制:理论与实践之间的差距”,有关数据管理的2008年ACMSIGMOD国际会议录,第739至752页。

【参考2】标题为“语义复制(SEMANTICREPLICATION)”的WIPO专利申请WO/2007/037984(还称为美国专利8290910)。

【参考3】标题为“选择性数据库复制(SELECTIVEDATABASEREPLICATION)”WIPO专利申请WO/2010/073110。

【参考4】标题为“物理数据复制中的备用索引(STANDBYINDEXINPHYSICALDATAREPLICATION)”的美国专利申请20110320404。

发明内容

本发明的实施例涉及一种用于优化索引、主数据库节点和订户数据库节点的方法。本发明的目的在于保持架构相同的同时减少所述主数据库节点和所述订户数据库节点中不必要的索引。

根据本发明的实施例的第一方面,提供一种用于优化索引的方法,所述方法包括:

当所述索引被添加到所述主数据库节点时,主数据库节点检查索引的角色信息是否匹配所述主数据库节点的角色信息;

当所述索引的所述角色信息匹配所述主数据库节点的所述角色信息时,所述主数据库节点通过使用所述索引更新数据库信息。

根据本发明的实施例的另一方面,在检查索引的角色信息是否匹配所述主数据库节点的角色信息之前,所述方法进一步包括:

为所述主数据库节点添加所述角色信息。

根据本发明的实施例的另一方面,在检查索引的角色信息是否匹配所述主数据库节点的角色信息之前,所述方法进一步包括:

通过使用数据定义语言创建所述索引;

更新带有所述角色信息的所述索引。

根据本发明的实施例的另一方面,所述方法进一步包括:

所述主数据库节点检查所述索引的所述角色信息是否匹配订户数据库节点的所述角色信息;

当所述索引的所述角色信息匹配所述订户数据库节点的所述角色信息时,所述主数据库节点将所述索引发送到所述订户数据库节点以使所述索引与所述订户数据库节点同步。

根据本发明的实施例的另一方面,所述方法进一步包括:

所述主数据库节点接收所述订户数据库节点的所述角色信息。

根据本发明的实施例的另一方面,所述方法进一步包括:

当需要插入记录到与所述索引相关联的表中时,所述主数据库节点检查所述索引的所述角色信息是否匹配所述主数据库节点的所述角色信息;

当所述索引的所述角色信息不匹配所述主数据库节点的所述角色信息时,为所述记录生成虚拟重做信息。

根据本发明的实施例的另一方面,所述方法进一步包括:

所述主数据库节点检查所述索引的所述角色信息是否匹配订户数据库节点的所述角色信息;

当所述索引的所述角色信息匹配所述订户数据库节点的所述角色信息时,所述主数据库节点将所述虚拟重做信息发送到所述订户数据库节点。

根据本发明的实施例的另一方面,当所述索引的所述角色信息匹配所述主数据库节点的所述角色信息时,所述方法进一步包括:

所述主数据库节点将所述记录插入到与所述索引相关联的所述表中;

为所述记录生成重做信息。

根据本发明的实施例的另一方面,所述方法进一步包括:

所述主数据库节点检查所述索引的所述角色信息是否匹配订户数据库节点的所述角色信息;

当所述索引的所述角色信息匹配所述订户数据库节点的所述角色信息时,所述主数据库节点将所述重做信息发送到所述订户数据库节点。

根据本发明的实施例的另一方面,所述方法进一步包括:

当所述主数据库节点的所述角色信息更新时,所述主数据库节点检查所述索引的所述角色信息是否匹配所述主数据库节点的更新的角色信息;

当所述索引的所述角色信息匹配所述主数据库节点的所述更新的角色信息时,所述主数据库节点填充所述索引。

根据本发明的实施例的第二方面,提供一种用于优化索引的方法,包括:

当所述订户数据库节点被添加到包含主数据库节点的集群时,订户数据库节点更新所述订户数据库节点的角色信息;

所述订户数据库节点将所述订户数据库节点的所述角色信息发送到所述主数据库节点。

根据本发明的实施例的另一方面,所述方法进一步包括:

所述订户数据库节点接收来自所述主数据库节点的索引;

使所述索引与所述主数据库节点同步。

根据本发明的实施例的另一方面,所述方法进一步包括:

所述订户数据库节点接收来自所述主数据库节点的重做信息;

当所述重做信息为索引重做信息时,基于所述重做信息更新相关段。

根据本发明的实施例的另一方面,所述方法进一步包括:

当所述重做信息既不是索引重做信息也不是虚拟重做信息时,更新带有所述重做信息的所述索引。

根据本发明的实施例的另一方面,所述方法进一步包括:

当所述重做信息不是索引重做信息而是虚拟重做信息时,根据所述重做信息生成索引数据并更新所述索引。

根据本发明的实施例的另一方面,所述方法进一步包括:

当所述订户数据库节点的所述角色信息更新时,所述订户数据库节点检查所述索引的所述角色信息是否匹配所述订户数据库节点的更新的角色信息;

当所述索引的所述角色信息匹配所述订户数据库节点的所述更新的角色信息时,所述订户数据库节点填充所述索引。

根据本发明的实施例的另一方面,所述方法进一步包括:

当所述索引的所述角色信息不匹配所述订户数据库节点的所述更新的角色信息时,所述订户数据库节点截断所述索引。

根据本发明的实施例的第三方面,提供一种主数据库节点,包括:

第一检查单元,用于当所述索引被添加到所述主数据库节点时,检查索引的角色信息是否匹配所述主数据库节点的角色信息;

第一更新单元,用于当所述索引的所述角色信息匹配所述主数据库节点的所述角色信息时,通过使用所述索引更新数据库信息。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第一添加单元,用于为所述主数据库节点添加所述角色信息。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第一创建单元,用于通过使用数据定义语言创建所述索引;

第二更新单元,用于更新带有所述角色信息的所述索引。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第二检查单元,用于检查所述索引的所述角色信息是否匹配订户数据库节点的所述角色信息;

第一发送单元,用于当所述索引的所述角色信息匹配所述订户数据库节点的所述角色信息时,将所述索引发送到所述订户数据库节点以使所述索引与所述订户数据库节点同步。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第一接收单元,用于接收所述订户数据库节点的所述角色信息。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第三检查单元,用于当需要插入记录到与所述索引相关联的表中时,检查所述索引的所述角色信息是否匹配所述主数据库节点的所述角色信息;

第一生成单元,用于当所述索引的所述角色信息不匹配所述主数据库节点的所述角色信息时,为所述记录生成虚拟重做信息。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第四检查单元,用于检查所述索引的所述角色信息是否匹配订户数据库节点的所述角色信息;

第二发送单元,用于当所述索引的所述角色信息匹配所述订户数据库节点的所述角色信息时,将所述虚拟重做信息发送到所述订户数据库节点。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第一插入单元,用于将所述记录插入到与所述索引相关联的所述表中;

第二生成单元,用于为所述记录生成重做信息。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第五检查单元,用于检查所述索引的所述角色信息是否匹配订户数据库节点的所述角色信息;

第三发送单元,用于当所述索引的所述角色信息匹配所述订户数据库节点的所述角色信息时,将所述重做信息发送到所述订户数据库节点。

根据本发明的实施例的另一方面,所述主数据库节点进一步包括:

第六检查单元,用于当所述主数据库节点的所述角色信息更新时,检查所述索引的所述角色信息是否匹配所述主数据库节点的更新的角色信息;

第一填充单元,用于当所述索引的所述角色信息匹配所述主数据库节点的所述更新的角色信息时,填充所述索引。

根据本发明的实施例的第四方面,提供一种订户数据库节点,包括:

第三更新单元,用于当所述订户数据库节点被添加到包含主数据库节点的集群时,更新所述订户数据库节点的角色信息;

第四发送单元,用于将所述订户数据库节点的所述角色信息发送到所述主数据库节点。

根据本发明的实施例的另一方面,所述订户数据库节点进一步包括:

第二接收单元,用于从所述主数据库节点接收索引;

同步单元,用于使所述索引与所述主数据库节点同步。

根据本发明的实施例的另一方面,所述订户数据库节点进一步包括:

第三接收单元,用于从所述主数据库节点接收重做信息;

第四更新单元,用于当所述重做信息为索引重做信息时,基于所述重做信息更新相关段。

根据本发明的实施例的另一方面,所述订户数据库节点进一步包括:

第五更新单元,用于当所述重做信息既不是索引重做信息也不是虚拟重做信息时,更新带有所述重做信息的所述索引。

根据本发明的实施例的另一方面,所述订户数据库节点进一步包括:

第二生成单元,用于当所述重做信息不是索引重做信息而是虚拟重做信息时,根据所述重做信息生成索引数据并更新所述索引。

根据本发明的实施例的另一方面,所述订户数据库节点进一步包括:

第七检查单元,用于当所述订户数据库节点的所述节点信息更新时,检查所述索引的所述角色信息是否匹配所述订户数据库节点的更新的角色信息;

第二填充单元,用于当所述索引的所述角色信息匹配所述订户数据库节点的所述更新的角色信息时,填充所述索引。

根据本发明的实施例的另一方面,所述订户数据库节点进一步包括:

截断单元,用于当所述索引的所述角色信息不匹配所述订户数据库节点的所述更新的角色信息时,截断所述索引。

本发明的优点在于:索引与角色信息相关联,而角色信息与所述主数据库节点和所述订户数据库节点相关联。在本发明中,在保持架构相同的同时减少所述主数据库节点和所述订户数据库节点中不必要的索引。此外,减少了从所述主数据库节点传输到所述订户数据库节点的不必要的日志。

参考以下描述和附图,本发明的这些和其它方面以及特征将显而易见。在描述和附图中,详细揭示了本发明的特定实施例,以指示出本发明的原理可以采用的一些方式,但应理解,本发明并不限于对应的范围。相反,本发明包括所附权利要求书的精神和项内的所有变化、修改以及等效物。

参考一项实施例描述和/或说明的特征可以采用相同方式或类似方式用于一项或多项其它实施例,和/或与其它实施例的特征结合使用或替代这些特征。

应强调的是,本说明书中所用的术语“包括”用于说明存在所述特征、整体、步骤或部件,但并不排除存在或添加一个或多个其它特征、整体、步骤、部件或上述项的组合。

参考以下附图可以更好地理解本发明的许多方面。附图中的部件不必按比例绘制,而是将重点放在清晰地说明本发明的原理上。为了有助于说明并描述本发明的一些部分,可以将附图中对应部分的尺寸放大,例如,相对于其它部分而言,使其比根据本发明实际制作的示例性设备大。本发明的一个附图或实施例中描绘的元件和特征可以与一个或多个额外附图或实施例中描绘的元件和特征相结合。此外,在附图中,相同参考编号指代若干视图中的对应部分,并且可以用来指代一项以上实施例中的相同或类似部分。

附图说明

附图被包括在内以提供对本发明的进一步理解,附图构成本说明书的一部分,说明本发明的优选实施例,并且与描述内容一起用于阐明本发明的原理。附图中相同的参考编号始终表示相同的元件。

在附图中:

图1为示出RDBMS存储引擎内的标准操作示例的示意图;

图2为示出主数据库节点和订户数据库节点之间的日志传送示例的示意图;

图3为示出主数据库节点和订户数据库节点中使用的索引示例的示意图;

图4为根据本发明实施例的用于优化索引的方法的流程图;

图5为示出主数据库节点和订户数据库节点中使用的索引示例的示意图;

图6为根据本发明实施例的用于优化索引的方法的另一流程图;

图7为示出向主数据库节点添加角色的示例的示意图;

图8为示出向主数据库节点添加索引的示例的示意图;

图9为根据本发明实施例的用于优化索引的方法的另一流程图;

图10为示出向集群添加订户数据库节点的示意图;

图11为根据本发明实施例的用于优化索引的方法的另一流程图;

图12为示出主数据库节点中的插入操作示例的示意图;

图13为根据本发明实施例的用于优化索引的方法的另一流程图;

图14为示出应用场景1的示例的示意图;

图15为示出场景1的表和索引信息的示例的示意图;

图16为示出应用场景2的示例的示意图;

图17为示出场景2的表和索引信息的示例的示意图;

图18为示出应用场景3的示例的示意图;

图19为根据本发明实施例的用于优化索引的方法的流程图;

图20为根据本发明实施例的用于优化索引的方法的另一流程图;

图21为根据本发明实施例的用于优化索引的方法的另一流程图;

图22为示出订户数据库中REDO重放示例的示意图;

图23为根据本发明实施例的用于优化索引的方法的另一流程图;

图24为示出订户数据库中角色转换处理示例的示意图;

图25为根据本发明实施例的主数据库节点的示意图;

图26为根据本发明实施例的主数据库节点的另一示意图;

图27为根据本发明实施例的订户数据库节点的示意图;

图28为根据本发明实施例的订户数据库节点的另一示意图。

具体实施方式

各实施例的许多特征和优点在详细说明书中显而易见,因此,所附权利要求书意图涵盖属于其真实精神和范围内的实施例的所有此类特征和优点。此外,由于所属领域的技术人员将容易想到多种修改和变化,因而并不希望将发明性实施例限于所说明并描述的确切构造和操作,因此,可以采取的所有适当修改和等效物均属于相应范围内。

图3为示出主数据库节点和订户数据库节点中使用的索引示例的示意图。如图3所示,考虑具有表的数据库以及与所述表相关联的两个索引。假设主数据库节点主要用于写且只使用索引-1,订户数据库节点用于只读且只使用索引-2。

如图3所示,标记为黑色的项目是不必要的。现有技术存在以下一些或所有问题:不必要的日志被传送到订户数据库节点并应用;要求主数据库节点为不必要的索引生成重做日志,这样导致主数据库节点的可用性降低了;要求主数据库节点和订户数据库节点维护花费额外内存的不必要索引;主数据库节点和订户数据库节点不分享相同架构,由此切换非常昂贵;主数据库节点不知道订户数据库节点的架构,使得集群拓扑非常复杂;存储引擎无法单独进行复制优化。

为了克服上述缺点,提出索引信息的可选性维护的解决方案。下文参考附图来描述本发明的实施例。

实施例1

本发明的该实施例提供了一种应用于主数据库节点中的优化索引的方法。

图4为根据本发明实施例的用于优化索引的方法的流程图;如图4所示,该方法包括:

步骤401,当索引被添加到主数据库节点时,主数据库节点检查索引的角色信息是否匹配主数据库节点的角色信息;

步骤402,当索引的角色信息匹配主数据库节点的角色信息时,主数据库节点通过使用索引更新数据库信息。

在该实施例中,在主数据库节点上创建的索引基于主数据库节点的主要用途分配有相应角色。该索引可以用术语“阅读辅助索引(read-aidindex)”或“写辅助索引(write-aidindex)”表示。该特征确定了该索引的复制性质。

在该实施例中,索引的特征映射到分配的主数据库节点的特征。仅当属性被映射时,索引将会存在在给定节点上。

图5为示出主数据库节点和订户数据库节点中使用的索引示例的示意图。如图5所示,例如索引-1被指定为“角色-1”索引且索引-2被指定为“角色-2”索引。

如图5所示,指定为“角色-1”节点的主数据库节点仅传送数据但不传送索引-1到订户数据库节点。此外,主数据库节点不插入任何信息到为“角色-2”索引的索引-2。

实际上,角色-1可以是“只写”且关联的索引可以是“写辅助”索引。类似地,角色-2可以是“只读”且关联的索引可以是“读辅助”索引。

图6为根据本发明实施例的用于优化索引的方法的另一流程图;如图6所示,该方法包括:

步骤601,主数据库节点添加角色信息;

步骤602,主数据库节点通过使用数据定义语言(DDL)创建索引。

步骤603,主数据库节点更新带有角色信息的索引;

步骤604,主数据库节点检查索引的角色信息是否匹配主数据库节点的角色信息;

步骤605,当索引的角色信息匹配主数据库节点的角色信息时,主数据库节点通过使用索引更新数据库信息。

在该实施例中,电信系统使用相同数据库的多个副本来实现高可用性。但很多时候,数据库的相同副本用于不同业务目的。因此,随着使用备用数据库(订户数据库)进行冗余,备用数据库可以用于多个业务原因。例如,备用数据库可用于处理基本呼叫操作。在此情况下,备用数据库仅需要关于电话号码和路由的信息。另一备用数据库可用于计费信息,如计费计划数据和每分钟计费。可考虑这些业务为数据库的不同“角色”。

数据库的不同业务将要求不同索引以优化处理。因此,还可以给索引分配“角色”。将索引集合分组到“角色”下并且还使用角色标记订户数据库节点可有助于仅同步相关信息到订户数据库节点并且还有助于仅将相关信息存储到主数据库节点中。用于角色的存储空间强化了数据库软件。目录或系统表具有启用的字段角色。

表1示出了系统表定义。如表1所示,系统表具有订户信息且索引信息通过“角色”ID字段添加。

表1

在另一实施例中,每个索引可以分配多个角色。此外,每个订户可以分配多个角色。表2示出了其它系统表定义。如表2所示,可以为索引或订户数据库节点分配多个角色。

表2

此外,还可存在预定义角色集合。例如,对于节点,角色通常可以是“只读”和“主写”角色。对于索引,角色通常可以是“阅读辅助”和“写辅助”。

在该实施例中,可以引进特殊目录(系统)表以处理主数据库节点中定义的角色。以下表3示出了该系统表(SysRoles)的结构。

表3

为了实现搜索和其它优化,还在此系统表中跟踪对应于给定角色的索引和对应于给定角色的订户。

在步骤601中,可以通过特殊DDL命令或在主数据库中配置将角色添加到数据库。一旦角色被添加到主DB,该数据放置在“SysRoles”表中。图7为示出向主数据库节点添加角色的示例的示意图。

在步骤602和603中,给主数据库节点分配一个角色,主数据库节点使用该角色以确保仅相关索引存储在主数据库节点中。通过与以下两种示例类似的方式,增强索引相关的DDL以支持“角色”作为参数:

1.CREATEINDEXidx1ONtable1(col1)WITHROLErole1

2.ALTERINDEXidx1SETROLErole1

在步骤604和605中,当索引被添加到主数据库节点时,主数据库节点将检查数据库中是否配置该角色。如果没有配置该角色,或如果索引中没有提及该角色,则分配的默认角色为“ALL”。角色验证之后,主数据库节点将该索引信息放置在SysRoles表中。

随后主数据库节点检查其自身角色是否对应于索引的角色。如果角色匹配,主数据库节点填充该索引字段。图8为示出向主数据库节点添加索引的示例的示意图。

上述实施例论述了:索引与角色信息相关联,而角色信息与主数据库节点和订户数据库节点相关联。在本实施例中,在保持架构相同的同时减少所述主数据库节点和所述订户数据库节点中不必要的索引。

在另一实施例中,与角色信息相关联的索引从主数据库节点传送到订户数据库节点。在该实施例中,减少了从所述主数据库节点传输到所述订户数据库节点的不必要的日志。

图9为根据本发明实施例的用于优化索引的方法的另一流程图;如图9所示,该方法包括:

步骤901,主数据库节点检查索引的角色信息是否匹配订户数据库节点的角色信息;

步骤902,当索引的角色信息匹配订户数据库节点的角色信息时,主数据库节点将索引发送到订户数据库节点以同步索引和订户数据库节点。

如图9所示,该方法可进一步包括:

步骤900,主数据库节点接收订户数据库节点的角色信息。

图10为示出向集群添加订户数据库节点的示例的示意图。如图10所示,当订户数据库节点添加到集群时,订户数据库节点向主数据库节点公布“角色”。

如图10所示,主数据库节点在SysSubscribers表中记录该信息。基于该角色,主数据库节点将相关信息复制到订户数据库节点。这通过遍历所有索引和检查订户数据库节点的角色是否匹配索引的角色完成。如果匹配,主数据库节点同步数据和订户数据库节点。

在另一实施例中,记录需要插入到与索引相关联的表中。在该实施例中,在将日志传送到订户数据库节点之前主数据库节点跟踪需要完成的工作量。

在完成该工作之后传送该日志。如果存在更多工作,该工作通常是更新与主数据库节点相关的索引,那么继续该工作。这减少了订户数据库节点和主数据库节点之间的数据同步的延迟。这使得主数据库节点和订户数据库节点更加实时同步。

图11为根据本发明实施例的用于优化索引的方法的另一流程图;如图11所示,该方法包括:

步骤1101,主数据库节点检查索引的角色信息是否匹配主数据库节点的角色信息;

步骤1102,当索引的角色信息不匹配主数据库节点的角色信息时,为记录生成虚拟重做信息。

如图11所示,该方法可进一步包括:

步骤1103,主数据库节点检查索引的角色信息是否匹配订户数据库节点的角色信息;

步骤1104,当索引的角色信息匹配订户数据库节点的角色信息时,主数据库节点将虚拟重做信息发送到订户数据库节点。

如图11所示,当索引的角色信息匹配主数据库节点的角色信息时,该方法可进一步包括:

步骤1105,主数据库节点将记录插入到与索引相关联的表中;

步骤1106,主数据库节点为该记录生成重做信息。

如图11所示,该方法可进一步包括:

步骤1107,主数据库节点检查索引的角色信息是否匹配订户数据库节点的角色信息;

步骤1108,当索引的角色信息匹配订户数据库节点的角色信息时,主数据库节点将重做信息发送到订户数据库节点。

图12为示出主数据库中的插入操作示例的示意图。如图12所示,当记录插入到主数据库节点中时,主数据库节点将该记录插入到相关表中。为该表的插入操作生成重做。

随后主数据库节点遍历与表相关的索引列表。主数据库节点首先为所有关联索引生成“虚拟REDO”。在索引的角色与主数据库节点不匹配时,生成虚拟REDO。在生成“虚拟REDO”的情况下,如果订户数据库节点的角色匹配索引的角色,那么“虚拟重做”被传送到订户数据库节点。

随后主数据库节点继续将数据插入到其角色与主数据库节点的角色匹配的所有索引。REDO日志为这些索引生成并随后传送到其角色与索引匹配的订户数据库节点。

在另一实施例中,可更新主数据库节点的角色信息。

图13为根据本发明实施例的用于优化索引的方法的另一流程图;如图13所示,该方法包括:

步骤1301,当主数据库节点的角色信息更新时,主数据库节点检查索引的角色信息是否匹配主数据库节点的更新的角色信息;

步骤1302,当索引的所述角色信息匹配主数据库节点的更新的角色信息时,主数据库节点填充该索引。

在该实施例中,当发生故障转移或切换时,新主数据库节点从持久化实体(其可以是集群管理器或其它服务器)获取主数据库节点的角色。它可从配置文件或公知位置获取默认角色。基于该新角色,主数据库节点将更新其索引。

在另一实施例中,订户数据库节点的“角色”可用作集群切换和管理的策略参数。该角色参数可用于确定来自主数据库节点的复制的优先级。

例如,报告节点可次于销售角色。因此具有“销售角色”的节点可在复制中获取优先权并且可以排出优先级以在切换期间接任主数据库节点。

本发明存在一些应用场景。然而,并不限于此,可根据实际需要来确定特定实施方式。

图14为示出应用场景1的示例的示意图;图15为示出场景1的表和索引信息的示例的示意图。

如图15所示,该架构为呼叫处理实体的一个样本架构。呼叫处理实体可以是软切换或电信切换。

如图14所示,在电信切换等用于呼叫处理实体的场景中,存在处理基本语音呼叫、增值业务以及处理计费系统的功能。

在该场景中,它们进行操作的基础数据是相同的。然而,用于操作的视图却完全不同。例如,单张表可包含关于计费、业务订阅和号码路由详情的所有信息。除业务呼叫处理实体以外的任意实体可能不需要计费信息。

在该场景中,通过为不同实体采用不同索引来优化数据库部署。这具有减少内存使用的优点,且与此同时,DB可用于HA。

图16为示出应用场景2的示例的示意图;图17为示出场景2的表和索引信息的示例的示意图。

如图17所示,该架构为简单项目管理实体的一个样本架构。存在一张包含项目信息的表。表包含三个集中在项目ID、项目名称和项目数量的索引。

如图16所示,场景中存在三个使用经复制的数据库的实体。数据表项操作存在一个实体。该实体标有供应链并且还用于价格控制。将项目信息输入到该系统。这充当集群的主数据库。

存在多个使用该项目表用于购物的商店。该实体可称为POS(销售点)实体。存在另一实体,报告实体。不同实体对该架构的不同方面感兴趣。这使我们为该表具有不同的索引。

例如,POS上更需要“项目名称”上的索引,在POS上,客户通过名称询问给定项目的可用性和价格。而报告实体可查询所有在特定数量级别以下的商品,因此需要数量上的索引。

在该场景中,基于角色的索引作为良好性能和内存改进措施。

图18为示出应用场景3的示例的示意图。在简单场景中,网络负载减少约65%(1次重做取代3次重做);主从数据库节点上的空间占用率减少约10%;主数据库节点的可用性增加65%用于插入、删除。

从上述实施例可以看出:网络流量将减少并因此带宽得到有效利用;由于减少的重放/重做生成,主从数据库节点中的延时减少;仅当索引的角色与节点的角色匹配时,由于分配了索引的段/空间,内存得到有效利用;主从数据库节点中的架构保持相同,从而切换平滑;不同索引为在线创建,这减少了切换上的业务中断。

实施例2

本发明的该实施例提供了一种应用于订户数据库节点中的优化索引的方法。该实施例对应于上述实施例1,并且相同内容将不再予以描述。

图19为根据本发明实施例的用于优化索引的方法的流程图;如图19所示,该方法包括:

步骤1901,当订户数据库节点被添加到包含主数据库节点的集群时,订户数据库节点更新订户数据库节点的角色信息;

步骤1902,订户数据库节点将订户数据库节点的角色信息发送到主数据库节点。

在另一实施例中,与角色信息相关联的索引从主数据库节点传送到订户数据库节点。

图20为根据本发明实施例的用于优化索引的方法的另一流程图;如图20所示,该方法包括:

步骤2001,订户数据库节点接收来自主数据库节点的索引;

步骤2002,订户数据库节点同步索引和主数据库节点。

在另一实施例中,记录需要插入到与索引相关联的表中。重做信息可传送到订户数据库节点。

图21为根据本发明实施例的用于优化索引的方法的另一流程图;如图21所示,该方法包括:

步骤2101,订户数据库节点接收来自主数据库节点的重做信息;

步骤2102,当重做信息为索引重做信息时,订户数据库节点基于重做信息更新相关段。

如图21所示,该方法可进一步包括:

步骤2103,当重做信息既不是索引重做信息也不是虚拟重做信息时,订户数据库节点更新带有重做信息的索引。

如图21所示,该方法可进一步包括:

步骤2104,当重做信息不是索引重做信息而是虚拟重做信息时,订户数据库节点根据重做信息生成索引数据和更新索引。

图22为示出订户数据库中REDO重放示例的示意图。如图22所示,当订户数据库节点从主数据库节点接收REDO日志时,订户数据库节点分析REDO是否为虚拟REDO日志。如果REDO日志为虚拟重做,订户数据库节点从表(数据段)中检索相应记录并将其插入索引中。如果REDO日志不是虚拟重做,订户数据库节点按照REDO日志信息运作。

在另一实施例中,可更新订户数据库节点的角色信息。

图23为根据本发明实施例的用于优化索引的方法的另一流程图;如图23所示,该方法包括:

步骤2301,当订户数据库节点的角色信息更新时,订户数据库节点检查索引的角色信息是否匹配订户数据库节点的更新的角色信息;

步骤2302,当索引的角色信息匹配订户数据库节点的更新的角色信息时,订户数据库节点填充该索引。

如图23所示,该方法可进一步包括:

步骤2303,当索引的角色信息不匹配订户数据库节点的更新的角色信息时,订户数据库节点截断该索引。

图24为示出订户数据库中角色转换处理示例的示意图。如图24所示,当订户数据库节点的角色改变时,节点中的数据应反映当前角色。这将涉及填充新索引和截断(清空)一些无关的索引。

如图24所示,当角色改变时,订户数据库节点将该信息传送到主数据库节点。随后订户数据库节点遍历所有可用索引并截断所有与当前角色不对应的索引。订户数据库节点还填充对应于当前角色的所有空索引。该索引更新在线进行,不会引起任何业务中断。

从上述实施例可以看出:索引与角色信息相关联,而角色信息与主数据库节点和订户数据库节点相关联。

此外,在保持架构相同的同时减少所述主数据库节点和所述订户数据库节点中不必要的索引。此外,减少了从所述主数据库节点传输到所述订户数据库节点的不必要的日志。

实施例3

本发明的实施例进一步提供了主数据库节点。该实施例对应于上述实施例1的方法,并且相同内容将不再予以描述。

图25为根据本发明的实施例的主数据库节点的示意图。如图25所示,主数据库节点2500包括:第一检查单元2501和第一更新单元2502。主数据库节点的其它部分可参考现有技术并且未在本发明中描述。然而,并不限于此,可根据实际需要来确定特定实施方式。

第一检查单元2501用于当索引被添加到主数据库节点时,检查索引的角色信息是否匹配主数据库节点的角色信息;第一更新单元2502用于当索引的角色信息匹配主数据库节点的角色信息时,使用该索引更新数据库信息。

图26为根据本发明实施例的主数据库节点的另一示意图。如图26所示,主数据库节点2600包括:第一检查单元2501和第一更新单元2502,如上文所述。

在另一实施例中,如图26所示,主数据库节点2600可进一步包括:第一添加单元2603,所述第一添加单元2603用于为主数据库节点添加角色信息。

如图26所示,主数据库节点2600可进一步包括:第一创建单元2604和第二更新单元2605。第一创建单元2604用于使用数据定义语言创建索引;第二更新单元2605用于更新带有角色信息的索引。

在另一实施例中,如图26所示,主数据库节点2600可进一步包括:第二检查单元2606和第一发送单元2607;

第二检查单元2606用于检查索引的角色信息是否匹配订户数据库节点的角色信息;第一发送单元2607用于当索引的角色信息匹配订户数据库节点的角色信息时,将索引发送到订户数据库节点以同步索引和订户数据库节点。

如图26所示,主数据库节点2600可进一步包括:第一接收单元2608,所述第一接收单元2608用于接收订户数据库节点的角色信息。

在另一实施例中,如图26所示,主数据库节点2600可进一步包括:第三检查单元2609和第一生成单元2610;

第三检查单元2609用于当需要插入记录到与索引相关的表中时,检查索引的角色信息是否匹配主数据库节点的角色信息;第一生成单元2610用于当索引的角色信息不匹配主数据库节点的角色信息时,为记录生成虚拟重做信息。

如图26所示,主数据库节点2600可进一步包括:第四检查单元2611和第二发送单元2612;

第四检查单元2611用于检查索引的角色信息是否匹配订户数据库节点的角色信息;第二发送单元2612用于当索引的角色信息匹配订户数据库节点的角色信息时,将虚拟重做信息发送到订户数据库节点。

如图26所示,主数据库节点2600可进一步包括:第一插入单元2613和第二生成单元2614;

第一插入单元2613用于将记录插入到与索引相关联的表中;第二生成单元2614用于为记录生成重做信息。

如图26所示,主数据库节点2600可进一步包括:第五检查单元2615和第三发送单元2616;

第五检查单元2615用于检查索引的角色信息是否匹配订户数据库节点的角色信息;第三发送单元2616用于当索引的角色信息匹配订户数据库节点的角色信息时,将重做信息发送到订户数据库节点。

在另一实施例中,如图26所示,主数据库节点2600可进一步包括:第六检查单元2617和第一填充单元2618;

第六检查单元2617用于当主数据库节点的角色信息更新时,检查索引的角色信息是否匹配主数据库节点的更新的角色信息;第一填充单元2618用于当索引的角色信息匹配主数据库节点的更新的角色信息时,填充该索引。

从上述实施例可以看出:索引与角色信息相关联,而角色信息与主数据库节点和订户数据库节点相关联。

此外,在保持架构相同的同时减少所述主数据库节点和所述订户数据库节点中不必要的索引。此外,减少了从所述主数据库节点传输到所述订户数据库节点的不必要的日志。

实施例4

本发明的实施例进一步提供了订户数据库节点。该实施例对应于上述实施例2的方法,相同内容将不再予以描述。

图27为根据本发明实施例的订户数据库节点的示意图。如图27所示,订户数据库节点2700包括:第三更新单元2701和第四发送单元2702。订户数据库节点的其它部分可参考现有技术并且未在本发明中描述。然而,并不限于此,可根据实际需要来确定特定实施方式。

第三更新单元2701用于当订户数据库节点添加到包含主数据库节点的集群时更新订户数据库节点的角色信息;第四发送单元2702用于将订户数据库节点的角色信息发送到主数据库节点。

图28为根据本发明实施例的订户数据库节点的另一示意图。如图28所示,订户数据库节点2800包括:第三更新单元2701和第四发送单元2702,如上文所述。

在另一实施例中,如图28所示,订户数据库节点2800可进一步包括:第二接收单元2803和同步单元2804;

第二接收单元2803用于从主数据库节点接收索引;同步单元2804用于同步索引和主数据库节点。

在另一实施例中,如图28所示,订户数据库节点2800可进一步包括:第三接收单元2805和第四更新单元2806;

第三接收单元2805用于从主数据库节点接收重做信息;第四更新单元2806用于当重做信息为索引重做信息时,基于重做信息更新相关段。

如图28所示,订户数据库节点2800可进一步包括:第五更新单元2807,所述第五更新单元2807用于当重做信息既不是索引重做信息也不是虚拟重做信息时,更新带有重做信息的索引。

如图28所示,订户数据库节点2800可进一步包括:第二生成单元2808,用于当重做信息不是索引重做信息而是虚拟重做信息时,根据重做信息生成索引数据和更新索引。

在另一实施例中,如图28所示,订户数据库节点2800可进一步包括:第七检查单元2809和第二填充单元2810;

第七检查单元2809用于当订户数据库节点的角色信息更新时,检查索引的角色信息是否匹配订户数据库节点的更新的角色信息;第二填充单元2810用于当索引的角色信息匹配订户数据库节点的更新的角色信息时,填充该索引。

如图28所示,订户数据库节点2800可进一步包括:截断单元2811,所述截断单元2811用于当索引的角色信息不匹配订户数据库节点的更新的角色信息时,截断该索引。

从上述实施例可以看出:索引与角色信息相关联,而角色信息与主数据库节点和订户数据库节点相关联。

此外,在保持架构相同的同时减少所述主数据库节点和所述订户数据库节点中不必要的索引。此外,减少了从所述主数据库节点传输到所述订户数据库节点的不必要的日志。

应理解,本发明的各部分可以由硬件、软件、固件或其组合来实施。在上述实施例中,多个步骤或方法可以由存储在存储器中的软件或固件来实现,并且由合适的指令执行系统来执行。例如,如果由硬件来实现,那么可以像在另一实施例中一样由所属领域已知的以下技术中的任一技术或其组合来实现:具有逻辑门电路的用于实现数据信号的逻辑功能的离散逻辑电路、具有适当的组合逻辑门电路的专用集成电路、可编程门阵列(PGA),以及现场可编程门阵列(FPGA)等等。

流程图中的描述或块或者采用其它形式的任何进程或方法应被理解成表明包括一个或多个模块、段或部分,以用于实现特定逻辑功能或进程中步骤的可执行指令的代码,而且本发明的优选实施例的范围包括其它实施方案,其中这些功能可以采用与所示或所述那些不同的方式来执行,包括根据相关功能以基本上同步的方式或以相反的顺序来执行这些功能,本发明相关领域的技术人员应理解上述内容。

例如,流程图中图示或本文以其它方式描述的逻辑和/或步骤应被理解为用于实现逻辑功能的可执行指令的顺序表,它可以在任何计算机可读媒体中实施,以供指令执行系统、设备或装置(例如,包括计算机的系统、包括处理器的系统,或能够从指令执行系统、设备或装置中提取指令并执行这些指令的其它系统)使用,或者与指令执行系统、设备或装置结合使用。

上述文字描述和附图示出了本发明的各种特征。应理解,所属领域的技术人员可以准备合适的计算机代码,以执行上文所述且附图所示的每个步骤和进程。还应理解,所有的终端、计算机、服务器以及网络可以是任何类型的,并且可以根据本发明来准备计算机代码,以通过使用相应设备来实施本发明。

本文中揭示了本发明的特定实施例。所属领域的技术人员将容易认识到,本发明可以应用于其它环境。实际上,存在许多实施例和实施方案。所附权利要求书并非意图将本发明的范围限于上述特定实施例。此外,任何对“用于……的设备”的引用都是在解释设备加功能,以描述元件和权利要求,而且并不希望将任何未引用“用于……的设备”的元件理解为设备加功能的元件,即使权利要求中包括词语“设备”也是如此。

虽然已经示出了一项特定的实施例并且已经描述了本发明,但很明显所属领域的技术人员在阅读并理解上述描述和附图后可以想到等效修改和变型。特别是对于由上述元件(部分、组件、设备以及组成等等)执行的各种功能而言,除非另有规定,否则希望描述这些元件的术语(包括对“设备”的引用)对应于执行这些元件的特定功能的任何元件(即,功能等效物),即使该元件不同于执行本发明就相关结构所说明的一项或多项示例性实施例的功能的元件。此外,尽管仅参考所述实施例中的一项或多项来描述本发明的特定特征,但是此类特征可以根据需要并鉴于任何给定或特定应用的有利方面而与其它实施例的一个或多个其它特征相结合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号