数据库集群、数据查询方法、数据同步方法和装置制造方法

文档序号:6624306阅读:141来源:国知局
数据库集群、数据查询方法、数据同步方法和装置制造方法
【专利摘要】本发明公开了一种数据库集群、数据查询方法、数据同步方法和装置,属于数据处理【技术领域】。所述数据库集群包括存储有相同数据的第一分区集合和第二分区集合;所述第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储;所述第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
【专利说明】数据库集群、数据查询方法、数据同步方法和装置

【技术领域】
[0001]本发明涉及数据处理【技术领域】,特别涉及一种数据库集群、数据查询方法、数据同步方法和装置。

【背景技术】
[0002]为了提高数据库的存储能力,目前通常使用数据库集群来共同提供存储服务。数据库集群将原始数据表中的数据按照主键存放到数据库集群中的多个分区,也即在每个分区中存储原始数据表中的一部分数据来实现大数据量的数据存储。
[0003]为了实现对数据库集群中存储的数据进行快速查询,系统还可以在每个分区中分别创建二级索引,存储创建的二级索引。此后,当系统接收到基于索引字段的数据查询语句时,系统可以先在各个分区存储的二级索引中查询与数据查询语句中的索引字段匹配的索弓丨,在查询到的索引所在的分区中查询与该索引对应的主键,然后在分区中查询与主键对应的数据,最后,将在各个分区中查询到的数据组合作为查询结果。
[0004]在实现本发明的过程中,发明人发现上述技术至少存在以下问题:由于二级索引是对应于分区的索引,如果有100个分区就有100个二级索引,所以在系统根据索引进行数据查询时,系统需要遍历查询所有分区中的所有索引,系统的数据查询效率较低。


【发明内容】

[0005]为了解决现有技术中系统的数据查询效率较低的问题,本发明实施例提供了一种数据库集群、数据查询方法、数据同步方法和装置。所述技术方案如下:
[0006]第一方面,提供了一种数据库集群,所述数据库集群包括存储有相同数据的第一分区集合和第二分区集合;
[0007]所述第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储;
[0008]所述第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。
[0009]第二方面,提供了一种数据查询方法,所述方法用于第一方面所述的数据库集群中,所述方法包括:
[0010]获取针对所述数据库集群的查询语句;
[0011]判断所述查询语句是否是基于索引字段的查询语句;
[0012]如果所述查询语句是基于索引字段的查询语句,则在所述第二分区集合中查询与所述查询语句对应的数据。
[0013]可选地,所述在所述第二分区集合中查询与所述查询语句对应的数据,包括:
[0014]获取所述第二分区集合中的各个分区的分区描述信息;
[0015]根据所述查询语句以及所述分区描述信息确定所述第二分区集合中与所述查询语句所对应的分区;
[0016]在确定的所述分区中进行数据查询。
[0017]可选地,所述方法还包括:
[0018]如果所述查询语句是基于主键的查询语句,则在所述第一分区集合中进行数据查询。
[0019]第三方面,提供了一种数据同步方法,所述方法用于第一方面所述的数据库集群中,所述方法包括:
[0020]获取所述数据库集群中的所述第一分区集合所对应的服务器中的日志事件;
[0021]根据所述日志事件同步所述数据库集群中的所述第二分区集合中的数据。
[0022]可选地,所述根据所述日志事件同步所述数据库集群中的所述第二分区集合中的数据,包括:
[0023]从所述日志事件中过滤出所述第一分区集合的数据操作事件,所述数据操作事件包括:数据新建事件、数据更新事件和数据删除事件;
[0024]根据过滤得到的所述数据操作事件生成执行命令;
[0025]根据所述执行命令同步所述第二分区集合中相应的数据。
[0026]第四方面,提供了一种数据查询装置,所述装置用于第一方面所述的数据库集群中,所述装置包括:
[0027]查询语句获取模块,用于获取针对所述数据库集群的查询语句;
[0028]查询语句判断模块,用于判断所述查询语句获取模块获取到的所述查询语句是否是基于索引字段的查询语句;
[0029]第一数据查询模块,用于在所述查询语句判断模块的判断结果为所述查询语句是基于索引字段的查询语句时,在所述第二分区集合中查询与所述查询语句对应的数据。
[0030]可选地,所述第一数据查询模块,包括:
[0031]分区信息获取单元,用于获取所述第二分区集合中的各个分区的分区描述信息;
[0032]分区确定单元,用于根据所述查询语句以及所述分区信息获取单元获取到的所述分区描述信息确定所述第二分区集合中与所述查询语句所对应的分区;
[0033]数据查询单元,用于在所述分区确定单元确定的所述分区中进行数据查询。
[0034]可选地,所述装置还包括:
[0035]第二数据查询模块,用于在所述查询语句判断模块的判断结果为所述查询语句是基于主键的查询语句时,在所述第一分区集合中进行数据查询。
[0036]第五方面,提供了一种数据同步装置,用于第一方面所述的数据库集群中,所述装置包括:
[0037]日志事件获取模块,用于获取所述数据库集群中的所述第一分区集合所对应的服务器中的日志事件;
[0038]数据同步模块,用于根据所述日志事件获取模块获取到的所述日志事件同步所述数据库集群中的所述第二分区集合中的数据。
[0039]可选地,操作事件获取单元,用于从所述日志事件中过滤出所述第一分区集合的数据操作事件,所述数据操作事件包括:数据新建事件、数据更新事件和数据删除事件;
[0040]命令生成单元,用于根据所述操作事件获取单元过滤得到的所述数据操作事件生成执行命令;
[0041]数据同步单元,用于根据所述命令生成单元生成的所述执行命令同步所述第二分区集合中相应的数据。
[0042]本发明实施例提供的技术方案的有益效果是:
[0043]通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区的得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。

【专利附图】

【附图说明】
[0044]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0045]图1是本发明一个实施例提供的数据库集群的结构示意图;
[0046]图2是本发明一个实施例提供的数据查询方法的方法流程图;
[0047]图3是本发明另一实施例提供的数据查询方法的方法流程图;
[0048]图4是本发明一个实施例提供的数据同步方法的方法流程图;
[0049]图5是本发明另一实施例提供的数据同步方法的方法流程图;
[0050]图6是本发明一个实施例提供的数据查询装置的结构方框图;
[0051]图7是本发明另一实施例提供的数据查询装置的结构方框图;
[0052]图8是本发明一个实施例提供的数据同步装置的结构方框图;
[0053]图9是本发明另一实施例提供的数据同步装置的结构方框图。

【具体实施方式】
[0054]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0055]请参考图1,其示出了本发明一个实施例提供的数据库集群的结构示意图,该数据库集群100包括存储有相同数据的第一分区集合110和第二分区集合120。
[0056]当系统需要在数据库集群100中存储数据时,系统可以按照第一分区方式将数据根据主键划分为至少一个主键分区,在划分得到的至少一个主键分区中存储数据。其中,主键用于唯一标识数据中的每一行记录。
[0057]具体的,系统可以将主键取值在第一范围内的各个主键划分在第一主键分区,将主键取值在第二范围内的各个主键划分在第二主键分区,…,将主键取值在第m范围内的各个主键划分在第m主键分区。然后将取值在第一范围内的各个主键所对应的数据存储在第一主键分区中,将取值在第二范围内的各个主键所对应的数据存储在第二主键分区中,…,将取值为第m范围内的各个主键所对应的数据存储在第m主键分区中。
[0058]比如,系统将某服装店的销售记录存储在数据库集群100中时,销售记录包括流水号、商品名称、商品价格和业务员,系统可以将标识每条销售记录的流水号作为主键,并将主键取值在O?1000之间的各个流水号所对应的记录存储在第一主键分区,将主键取值在1001?2000之间的各个流水号所对应的记录存储在第二主键分区,…,类似的,将主键取值在mOOl?(m+l)000之间的各个流水号所对应的记录存储在第m主键分区。(表I以某一主键分区存储的记录来举例说明)
[0059]
流水号商品名称商品价格业务员
1001新款九分裤 499RMBH=
1002I 号衬衫298RMBΨΕ
1003春秋印花长裤 128RMBW=
?...........1998新款九分裤 499RMBH=
1999春秋印花长裤 298RMB?Ξ
2000I 号衬衫128RMBΨΕ
[0060]表I
[0061]在系统按照上述存储方式将数据存储至各个主键分区之后,数据库集群100中可以相应的形成第一分区集合110。第一分区集合110包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储。
[0062]此外,系统还可以通过其它存储方式再存储一份相同的数据。具体的,系统还可以按照第二分区方式将数据按照全局索引划分为至少一个索引分区,在划分得到的至少一个索引分区中存储数据。其中,相同索引的数据存储在相同的索引分区中。
[0063]系统可以选取数据中的某一列或者至少两列的组合作为全局索引,然后根据全局索引划分索引分区,将相同索引的各个数据存储在同一个索引分区中。在实际实现时,系统可以根据需要的查询条件来创建全局索引,本实施例对此并不做限定。
[0064]比如,仍然以上述举例为例,当后续需要根据商品名称进行数据查询时,系统可以选取销售记录中的商品名称作为全局索引,将需要存储的所有销售记录中同种商品的各条销售记录存储在同一个索引分区中,并将不同商品的销售记录存储在不同的索引分区中。(表2以某一索引分区中存储的记录来举例说明)。
[0065]

【权利要求】
1.一种数据库集群,其特征在于,所述数据库集群包括存储有相同数据的第一分区集合和第二分区集合; 所述第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储; 所述第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。
2.一种数据查询方法,用于权利要求1所述的数据库集群中,其特征在于,所述方法包括: 获取针对所述数据库集群的查询语句; 判断所述查询语句是否是基于索引字段的查询语句; 如果所述查询语句是基于索引字段的查询语句,则在所述第二分区集合中查询与所述查询语句对应的数据。
3.根据权利要求2所述的方法,其特征在于,所述在所述第二分区集合中查询与所述查询语句对应的数据,包括: 获取所述第二分区集合中的各个分区的分区描述信息; 根据所述查询语句以及所述分区描述信息确定所述第二分区集合中与所述查询语句所对应的分区; 在确定的所述分区中进行数据查询。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 如果所述查询语句是基于主键的查询语句,则在所述第一分区集合中进行数据查询。
5.一种数据同步方法,用于权利要求1所述的数据库集群中,其特征在于,所述方法包括: 获取所述数据库集群中的所述第一分区集合所对应的服务器中的日志事件; 根据所述日志事件同步所述数据库集群中的所述第二分区集合中的数据。
6.根据权利要求5所述的方法,其特征在于,所述根据所述日志事件同步所述数据库集群中的所述第二分区集合中的数据,包括: 从所述日志事件中过滤出所述第一分区集合的数据操作事件,所述数据操作事件包括:数据新建事件、数据更新事件和数据删除事件; 根据过滤得到的所述数据操作事件生成执行命令; 根据所述执行命令同步所述第二分区集合中相应的数据。
7.一种数据查询装置,用于权利要求1所述的数据库集群中,其特征在于,所述装置包括: 查询语句获取模块,用于获取针对所述数据库集群的查询语句; 查询语句判断模块,用于判断所述查询语句获取模块获取到的所述查询语句是否是基于索引字段的查询语句; 第一数据查询模块,用于在所述查询语句判断模块的判断结果为所述查询语句是基于索引字段的查询语句时,在所述第二分区集合中查询与所述查询语句对应的数据。
8.根据权利要求7所述的装置,其特征在于,所述第一数据查询模块,包括: 分区信息获取单元,用于获取所述第二分区集合中的各个分区的分区描述信息; 分区确定单元,用于根据所述查询语句以及所述分区信息获取单元获取到的所述分区描述信息确定所述第二分区集合中与所述查询语句所对应的分区; 数据查询单元,用于在所述分区确定单元确定的所述分区中进行数据查询。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括: 第二数据查询模块,用于在所述查询语句判断模块的判断结果为所述查询语句是基于主键的查询语句时,在所述第一分区集合中进行数据查询。
10.一种数据同步装置,用于权利要求1所述的数据库集群中,其特征在于,所述装置包括: 日志事件获取模块,用于获取所述数据库集群中的所述第一分区集合所对应的服务器中的日志事件; 数据同步模块,用于根据所述日志事件获取模块获取到的所述日志事件同步所述数据库集群中的所述第二分区集合中的数据。
11.根据权利要求10所述的装置,其特征在于,所述数据同步模块,包括: 操作事件获取单元,用于从所述日志事件中过滤出所述第一分区集合的数据操作事件,所述数据操作事件包括:数据新建事件、数据更新事件和数据删除事件; 命令生成单元,用于根据所述操作事件获取单元过滤得到的所述数据操作事件生成执行命令; 数据同步单元,用于根据所述命令生成单元生成的所述执行命令同步所述第二分区集合中相应的数据。
【文档编号】G06F17/30GK104199881SQ201410415862
【公开日】2014年12月10日 申请日期:2014年8月21日 优先权日:2014年8月21日
【发明者】喻先兵 申请人:广州华多网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1