分布式数据库非分片字段的查询方法、系统和设备与流程

文档序号:12550670阅读:402来源:国知局
分布式数据库非分片字段的查询方法、系统和设备与流程

本发明涉及分布式数据库技术领域,特别涉及一种分布式数据库非分片字段的查询方法、系统和设备。



背景技术:

在传统集中式的数据库中,数据库表都在一个数据库中。如果数据量很大,一个数据库无法容纳,需要把一个集中数据库拆成多个分布式数据库。在分布式的数据库中,通过主键进行分库分表,实现数据库的分布式处理。

如果数据量很大,一个Oracle数据库无法容纳,需要把一个集中数据库拆成两个分布式数据库。例如,如图2和图3所示,对customer、order表按照cust_id取模2,奇数在DB1,偶数在DB2。cust_id是分片字段,order_id是非分片字段,如果此时按照order_id查询orders表,无法定位是DB1,还是DB2,系统只能把这条sql语句发送给所有的分片节点,若查询order_id=r1,由于order_id=r1实际在DB1中,因此发送到DB2的查询属于无效查询,会浪费资源。

由于互联网公司业务相对来说简单一些,第一次执行查询的时候,会把非分片字段的sql发送给所有节点,执行完成后,根据结果,缓存非分片字段和节点的关系,也就是非分片字段和分片主键的关系。再次执行查询时,根据缓存的关系,找到具体节点去执行,而不是向所有节点广播执行。对于数据模型复杂、热点数据分布不均的情况,如果采用此方法,内存消耗很大,代价极高。



技术实现要素:

本发明实施例所要解决的一个技术问题是:如何克服分布式数据库 非分片字段的查询内存消耗很大,代价极高的问题,使得分布式数据库非分片字段的查询快速有效进行。

根据本发明实施例的一个方面,提供了一种分布式数据库非分片字段的查询方法,包括:客户端向全局索引库查询非分片字段的索引信息;客户端接收全局索引库返回的非分片字段的索引信息,其中,非分片字段的索引信息为非分片字段所在的分布式数据库的信息或者非分片字段对应的分片主键;如果接收的非分片字段的索引信息为非分片字段所在的分布式数据库的信息,客户端向非分片字段所在的分布式数据库查询非分片字段的信息;或者,如果接收的非分片字段的索引信息为非分片字段对应的分片主键,客户端根据非分片字段对应的分片主键确定非分片字段所在的分布式数据库,并向非分片字段所在的分布式数据库查询非分片字段的信息。

根据本发明实施例的另一个方面,提供了一种分布式数据库非分片字段的查询客户端,包括:索引信息查询模块,用于向全局索引库查询非分片字段的索引信息;索引信息接收模块,用于接收全局索引库返回的非分片字段的索引信息,其中,非分片字段的索引信息为非分片字段所在的分布式数据库的信息或者非分片字段对应的分片主键;内容查询模块,用于如果接收的非分片字段的索引信息为非分片字段所在的分布式数据库的信息,向非分片字段所在的分布式数据库查询非分片字段的信息;如果接收的非分片字段的索引信息为非分片字段对应的分片主键,根据非分片字段对应的分片主键确定非分片字段所在的分布式数据库,并用于向非分片字段所在的分布式数据库查询非分片字段的信息。

根据本发明实施例的又一个方面,提供了一种分布式数据库非分片字段的索引服务器,包括:数据库日志获取模块,用于从各个分布式数据库获取客户端向分布式数据库写入业务数据的数据库日志;数据库日志分析模块,用于根据数据库日志得到非分片字段的对应信息,对应信息包括非分片字段对应的分片主键以及所在的分布式数据库中的至少一项信息;全局索引库写操作模块,用于将非分片字段及其对 应信息作为全局索引写入全局索引库。

根据本发明实施例的又一个方面,提供了一种分布式数据库非分片字段的索引稽核模块,包括:索引队列获取单元,用于从各个客户端获取写入业务数据相关的索引队列,索引队列包括非分片字段,还包括非分片字段对应的分片主键以及所在的分布式数据库中的至少一项信息;比对稽核单元,用于将各个客户端的索引队列与全局索引库中存储的全局索引进行比对和稽核。

根据本发明实施例的再一个方面,提供了一种分布式数据库非分片字段的索引系统,包括上述的查询客户端、上述的索引服务器。

根据本发明实施例的再一个方面,提供了一种分布式数据库非分片字段的索引系统,包括上述的查询客户端、上述的索引服务器以及上述的索引稽核模块。

本发明至少具有以下优点:

通过全局索引定位非分片字段所在的分布式数据库,然后向定位的分布式数据库发起非分片字段相关内容的查询,解决了在分布式数据库非分片字段的查询中代价极高的问题,使得分布式数据库非分片字段的查询更加快速有效。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1示出本发明分布式数据库非分片字段的查询方法的一个实施例的流程示意图。

图2示出本发明两个数据表Customer和Orders的示意图。

图3示出本发明前述两个数据表的分布式数据库示意图。

图4示出本发明分布式数据库非分片字段的查询方法的全局索引库的建立过程示意图及全局索引数据稽核的流程示意图。

图5示出本发明分布式数据库非分片字段的查询客户端的一个实施例的结构示意图。

图6示出本发明分布式数据库非分片字段的索引服务器的一个实施例的结构示意图。

图7示出本发明分布式数据库非分片字段的索引服务器的另一个实施例的结构示意图。

图8示出本发明分布式数据库非分片字段的索引稽核模块的一个实施例的结构示意图。

图9示出本发明分布式数据库非分片字段的索引系统的一个实施例的结构示意图。

图10示出本发明分布式数据库非分片字段的索引系统的另一个实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1描述本发明一个实施例的分布式数据库非分片字段的查询方法。

图1示出根据本发明分布式数据库非分片字段的查询方法的一个实施例的流程示意图。如图1所示,该实施例的方法包括:

步骤S102,客户端向全局索引库查询非分片字段的索引信息。

其中,集中数据库根据分片主键可以拆分成几个分布式数据库, 分片主键之外的其他字段则为非分片字段,通过非分片字段无法定位其所在的分布式数据库。

步骤S104,客户端接收全局索引库返回的非分片字段的索引信息,其中,非分片字段的索引信息为非分片字段所在的分布式数据库的信息或者非分片字段对应的分片主键。

如果接收的非分片字段的索引信息为非分片字段所在的分布式数据库的信息,则执行步骤S108,即,客户端向非分片字段所在的分布式数据库查询非分片字段的信息。

如果接收的非分片字段的索引信息为非分片字段对应的分片主键,则执行步骤S106,即,客户端根据非分片字段对应的分片主键确定非分片字段所在的分布式数据库,然后再执行步骤S108,即,客户端向非分片字段所在的分布式数据库查询非分片字段的信息。

下面对根据分片主键确定非分片字段所在的分布式数据库进行举例说明。例如,若数据表按照分片主键取模2进行分布式拆分,奇数在DB1,偶数在DB2,那么在获知非分片字段对应的分片主键后,根据分片主键的拆分方法,对分片主键取模2,若是奇数,则非分片字段及其分片主键在DB1,若是偶数,则非分片字段及其分片主键在DB2。

下面结合图2和图3描述一个分布式数据库非分片字段的查询示例。图2示出本发明两个数据表Customer和Orders的示意图。图3示出本发明前述两个数据表的分布式数据库示意图。图2是一个集中数据库,其中存储着例如数据表Customer和Orders,如果数据量很大,需要把一个集中数据库拆成两个分布式数据库,即对customer、order表按照cust_id取模2,奇数存放在DB1分片节点,偶数在DB2分片节点。按照现有技术,如果此时按照order_id查询orders表,order_id是非分片字段,无法定位是DB1分片节点还是DB2分片节点,系统只能把这条sql语句发送给所有的分片节点。

按照本发明的方案,在查询示例中,首先客户端向全局索引库查询非分片字段r1的索引信息。然后,客户端接收全局索引库返回的非分片字段r1所在的分布式数据库的信息DB1或者非分片字段对应的分片主 键c1。如果接收的非分片字段的索引信息为非分片字段r1所在的分布式数据库的信息DB1,则客户端向非分片字段r1所在的分布式数据库DB1查询非分片字段r1的信息;如果接收的非分片字段的索引信息为非分片字段对应的分片主键c1,客户端根据非分片字段对应的分片主键c1取模2是奇数,可以确定在分布式数据库DB1,可以通过SQL(结构化查询语言)向非分片字段r1所在的分布式数据库DB1查询非分片字段r1的信息。

通过上述方法,解决了在分布式数据库非分片字段的查询中代价极高的问题,使得分布式数据库非分片字段的查询快速有效进行。

下面结合图4描述全局索引库的建立过程。

图4示出本发明分布式数据库非分片字段的查询方法的全局索引库的建立过程示意图。如图4所示,在上述实施例的基础上,本实施例的方法还包括:

步骤S4012,索引服务器从各个分布式数据库获取业务数据的数据库日志;

一种示例性的方法,把索引服务器伪装成各个分布式数据库(或称,分片节点)的从服务器,截取分片节点的数据库日志,并根据配置好的索引模型,异步建立全局索引库,对应用层和数据库都透明,无需改动任何客户端代码和mysql的部署架构。

步骤S4014,索引服务器根据数据库日志得到非分片字段的对应信息,对应信息包括非分片字段对应的分片主键以及所在的分布式数据库中的至少一项信息;

步骤S4016,索引服务器将非分片字段及其对应信息作为全局索引写入全局索引库。

上述方法在执行步骤S102之前,先通过索引服务器建立全局索引库,以便于客户端对非分片字段进行查询。

下面结合图4描述本发明全局索引数据稽核的情形。

图4还示出本发明分布式数据库非分片字段的查询方法的全局索引数据稽核的流程示意图。如图4所示,在上述实施例的基础上, 本实施例的方法进一步包括:

步骤S410,稽核模块从各个客户端获取写入业务数据相关的索引队列,索引队列包括非分片字段,还包括非分片字段对应的分片主键以及所在的分布式数据库中的至少一项信息。

步骤S412,稽核模块将各个客户端的索引队列与全局索引库中存储的全局索引进行比对和稽核。

仍以图3中所示的内容为例,索引稽核模块从各个客户端获取写入业务数据相关的索引队列,索引队列包括非分片字段r1,还包括非分片字段r1对应的分片主键c1以及所在的分布式数据库中DB1中的的至少一项信息。然后,索引稽核模块将各个客户端的索引队列与全局索引库中存储的全局索引进行比对和稽核。如果各个客户端的索引队列与全局索引库中存储的全局索引一致,则索引稽核模块认定全局索引库中存储的全局索引是正确的,无需对全局索引进行调整。如果如果各个客户端的索引队列与全局索引库中存储的全局索引不一致,则索引稽核模块认定全局索引库中存储的全局索引有误,索引稽核模块可以通知索引服务器重新建立全局索引有误的部分,或者索引稽核模块通知索引服务器对全局索引有误的部分进行更新。

通过将全局索引库和客户端的写入业务数据相关的索引队列进行比对稽核,可以保证索引的完整性和一致性。

下面结合图5描述本发明一个实施例的分布式数据库非分片字段的查询客户端。

图5示出本发明分布式数据库非分片字段的查询客户端的一个实施例的结构示意图。如图5所示,该实施例的分布式数据库非分片字段的查询客户端50包括:

索引信息查询模块502,用于向全局索引库查询非分片字段的索引信息;

索引信息接收模块504,用于接收全局索引库返回的非分片字段的索引信息,其中,非分片字段的索引信息为非分片字段所在的分布式数据库的信息或者非分片字段对应的分片主键;

内容查询模块506,用于如果接收的非分片字段的索引信息为非分片字段所在的分布式数据库的信息,向非分片字段所在的分布式数据库查询非分片字段的信息;如果接收的非分片字段的索引信息为非分片字段对应的分片主键,根据非分片字段对应的分片主键确定非分片字段所在的分布式数据库,并用于向非分片字段所在的分布式数据库查询非分片字段的信息。

下面结合图6描述本发明一个实施例的分布式数据库非分片字段的索引服务器。

图6示出本发明分布式数据库非分片字段的索引服务器的一个实施例的结构示意图。如图6所示,该实施例的分布式数据库非分片字段的索引服务器60包括:

数据库日志获取模块602,用于从各个分布式数据库获取客户端向分布式数据库写入业务数据的数据库日志;

数据库日志分析模块604,用于根据数据库日志得到非分片字段的对应信息,对应信息包括非分片字段对应的分片主键以及所在的分布式数据库中的至少一项信息;

全局索引库写操作模块606,用于将非分片字段及其对应信息作为全局索引写入全局索引库。

下面结合图7描述本发明另一个实施例的分布式数据库非分片字段的索引服务器。

图7示出本发明分布式数据库非分片字段的索引服务器的另一个实施例的结构示意图。如图7所示,该实施例的分布式数据库非分片字段的索引服务器60还包括:

索引稽核模块708,用于从各个客户端获取写入业务数据相关的索引队列,索引队列包括非分片字段,还包括非分片字段对应的分片主键以及所在的分布式数据库中的至少一项信息;并用于将各个客户端的索引队列与全局索引库中存储的全局索引进行比对和稽核。

下面结合图8描述本发明另一个实施例的分布式数据库非分片字段的索引稽核模块。

图8示出本发明分布式数据库非分片字段的索引稽核模块的一个实施例的结构示意图。如图8所示,该实施例的分布式数据库非分片字段的索引稽核模块80包括:

索引队列获取单元802,用于从各个客户端获取写入业务数据相关的索引队列,索引队列包括非分片字段,还包括非分片字段对应的分片主键以及所在的分布式数据库中的至少一项信息;

比对稽核单元804,用于将各个客户端的索引队列与全局索引库中存储的全局索引进行比对和稽核。

下面结合图9描述本发明另一个实施例的分布式数据库非分片字段的索引系统。

图9示出本发明分布式数据库非分片字段的索引系统的一个实施例的结构示意图。如图9所示,该实施例的分布式数据库非分片字段的索引系统90包括分布式数据库非分片字段的查询客户端50、分布式数据库非分片字段的索引服务器60或70。

下面结合图10描述本发明另一个实施例的分布式数据库非分片字段的索引系统。

图10示出本发明分布式数据库非分片字段的索引系统的另一个实施例的结构示意图。如图10所示,在图9所示实施例的基础上,本实施例的分布式数据库非分片字段的索引系统还包括分布式数据库非分片字段的索引稽核模块80。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1