CN104199881B - 数据库集群、数据查询方法、数据同步方法和装置 - Google Patents
数据库集群、数据查询方法、数据同步方法和装置 Download PDFInfo
- Publication number
- CN104199881B CN104199881B CN201410415862.0A CN201410415862A CN104199881B CN 104199881 B CN104199881 B CN 104199881B CN 201410415862 A CN201410415862 A CN 201410415862A CN 104199881 B CN104199881 B CN 104199881B
- Authority
- CN
- China
- Prior art keywords
- data
- query statement
- subregion
- index
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Abstract
本发明公开了一种数据库集群、数据查询方法、数据同步方法和装置,属于数据处理技术领域。所述数据库集群包括存储有相同数据的第一分区集合和第二分区集合;所述第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储;所述第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据库集群、数据查询方法、数据同步方法和装置。
背景技术
为了提高数据库的存储能力,目前通常使用数据库集群来共同提供存储服务。数据库集群将原始数据表中的数据按照主键存放到数据库集群中的多个分区,也即在每个分区中存储原始数据表中的一部分数据来实现大数据量的数据存储。
为了实现对数据库集群中存储的数据进行快速查询,系统还可以在每个分区中分别创建二级索引,存储创建的二级索引。此后,当系统接收到基于索引字段的数据查询语句时,系统可以先在各个分区存储的二级索引中查询与数据查询语句中的索引字段匹配的索引,在查询到的索引所在的分区中查询与该索引对应的主键,然后在分区中查询与主键对应的数据,最后,将在各个分区中查询到的数据组合作为查询结果。
在实现本发明的过程中,发明人发现上述技术至少存在以下问题:由于二级索引是对应于分区的索引,如果有100个分区就有100个二级索引,所以在系统根据索引进行数据查询时,系统需要遍历查询所有分区中的所有索引,系统的数据查询效率较低。
发明内容
为了解决现有技术中系统的数据查询效率较低的问题,本发明实施例提供了一种数据库集群、数据查询方法、数据同步方法和装置。所述技术方案如下:
第一方面,提供了一种数据库集群,所述数据库集群包括存储有相同数据的第一分区集合和第二分区集合;
所述第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储;
所述第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。
第二方面,提供了一种数据查询方法,所述方法用于第一方面所述的数据库集群中,所述方法包括:
获取针对所述数据库集群的查询语句;
判断所述查询语句是否是基于索引字段的查询语句;
如果所述查询语句是基于索引字段的查询语句,则在所述第二分区集合中查询与所述查询语句对应的数据。
可选地,所述在所述第二分区集合中查询与所述查询语句对应的数据,包括:
获取所述第二分区集合中的各个分区的分区描述信息;
根据所述查询语句以及所述分区描述信息确定所述第二分区集合中与所述查询语句所对应的分区;
在确定的所述分区中进行数据查询。
可选地,所述方法还包括:
如果所述查询语句是基于主键的查询语句,则在所述第一分区集合中进行数据查询。
第三方面,提供了一种数据同步方法,所述方法用于第一方面所述的数据库集群中,所述方法包括:
获取所述数据库集群中的所述第一分区集合所对应的服务器中的日志事件;
根据所述日志事件同步所述数据库集群中的所述第二分区集合中的数据。
可选地,所述根据所述日志事件同步所述数据库集群中的所述第二分区集合中的数据,包括:
从所述日志事件中过滤出所述第一分区集合的数据操作事件,所述数据操作事件包括:数据新建事件、数据更新事件和数据删除事件;
根据过滤得到的所述数据操作事件生成执行命令;
根据所述执行命令同步所述第二分区集合中相应的数据。
第四方面,提供了一种数据查询装置,所述装置用于第一方面所述的数据库集群中,所述装置包括:
查询语句获取模块,用于获取针对所述数据库集群的查询语句;
查询语句判断模块,用于判断所述查询语句获取模块获取到的所述查询语句是否是基于索引字段的查询语句;
第一数据查询模块,用于在所述查询语句判断模块的判断结果为所述查询语句是基于索引字段的查询语句时,在所述第二分区集合中查询与所述查询语句对应的数据。
可选地,所述第一数据查询模块,包括:
分区信息获取单元,用于获取所述第二分区集合中的各个分区的分区描述信息;
分区确定单元,用于根据所述查询语句以及所述分区信息获取单元获取到的所述分区描述信息确定所述第二分区集合中与所述查询语句所对应的分区;
数据查询单元,用于在所述分区确定单元确定的所述分区中进行数据查询。
可选地,所述装置还包括:
第二数据查询模块,用于在所述查询语句判断模块的判断结果为所述查询语句是基于主键的查询语句时,在所述第一分区集合中进行数据查询。
第五方面,提供了一种数据同步装置,用于第一方面所述的数据库集群中,所述装置包括:
日志事件获取模块,用于获取所述数据库集群中的所述第一分区集合所对应的服务器中的日志事件;
数据同步模块,用于根据所述日志事件获取模块获取到的所述日志事件同步所述数据库集群中的所述第二分区集合中的数据。
可选地,操作事件获取单元,用于从所述日志事件中过滤出所述第一分区集合的数据操作事件,所述数据操作事件包括:数据新建事件、数据更新事件和数据删除事件;
命令生成单元,用于根据所述操作事件获取单元过滤得到的所述数据操作事件生成执行命令;
数据同步单元,用于根据所述命令生成单元生成的所述执行命令同步所述第二分区集合中相应的数据。
本发明实施例提供的技术方案的有益效果是:
通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区的得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的数据库集群的结构示意图;
图2是本发明一个实施例提供的数据查询方法的方法流程图;
图3是本发明另一实施例提供的数据查询方法的方法流程图;
图4是本发明一个实施例提供的数据同步方法的方法流程图;
图5是本发明另一实施例提供的数据同步方法的方法流程图;
图6是本发明一个实施例提供的数据查询装置的结构方框图;
图7是本发明另一实施例提供的数据查询装置的结构方框图;
图8是本发明一个实施例提供的数据同步装置的结构方框图;
图9是本发明另一实施例提供的数据同步装置的结构方框图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参考图1,其示出了本发明一个实施例提供的数据库集群的结构示意图,该数据库集群100包括存储有相同数据的第一分区集合110和第二分区集合120。
当系统需要在数据库集群100中存储数据时,系统可以按照第一分区方式将数据根据主键划分为至少一个主键分区,在划分得到的至少一个主键分区中存储数据。其中,主键用于唯一标识数据中的每一行记录。
具体的,系统可以将主键取值在第一范围内的各个主键划分在第一主键分区,将主键取值在第二范围内的各个主键划分在第二主键分区,…,将主键取值在第m范围内的各个主键划分在第m主键分区。然后将取值在第一范围内的各个主键所对应的数据存储在第一主键分区中,将取值在第二范围内的各个主键所对应的数据存储在第二主键分区中,…,将取值为第m范围内的各个主键所对应的数据存储在第m主键分区中。
比如,系统将某服装店的销售记录存储在数据库集群100中时,销售记录包括流水号、商品名称、商品价格和业务员,系统可以将标识每条销售记录的流水号作为主键,并将主键取值在0~1000之间的各个流水号所对应的记录存储在第一主键分区,将主键取值在1001~2000之间的各个流水号所对应的记录存储在第二主键分区,…,类似的,将主键取值在m001~(m+1)000之间的各个流水号所对应的记录存储在第m主键分区。(表1以某一主键分区存储的记录来举例说明)
流水号 | 商品名称 | 商品价格 | 业务员 |
1001 | 新款九分裤 | 499RMB | 张三 |
1002 | 1号衬衫 | 298RMB | 李四 |
1003 | 春秋印花长裤 | 128RMB | 张三 |
… | … | … | … |
1998 | 新款九分裤 | 499RMB | 张三 |
1999 | 春秋印花长裤 | 298RMB | 王二 |
2000 | 1号衬衫 | 128RMB | 李四 |
表1
在系统按照上述存储方式将数据存储至各个主键分区之后,数据库集群100中可以相应的形成第一分区集合110。第一分区集合110包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储。
此外,系统还可以通过其它存储方式再存储一份相同的数据。具体的,系统还可以按照第二分区方式将数据按照全局索引划分为至少一个索引分区,在划分得到的至少一个索引分区中存储数据。其中,相同索引的数据存储在相同的索引分区中。
系统可以选取数据中的某一列或者至少两列的组合作为全局索引,然后根据全局索引划分索引分区,将相同索引的各个数据存储在同一个索引分区中。在实际实现时,系统可以根据需要的查询条件来创建全局索引,本实施例对此并不做限定。
比如,仍然以上述举例为例,当后续需要根据商品名称进行数据查询时,系统可以选取销售记录中的商品名称作为全局索引,将需要存储的所有销售记录中同种商品的各条销售记录存储在同一个索引分区中,并将不同商品的销售记录存储在不同的索引分区中。(表2以某一索引分区中存储的记录来举例说明)。
商品名称 | 商品价格 | 流水号 | 业务员 |
新款九分裤 | 499RMB | 85 | 张三 |
新款九分裤 | 499RMB | 123 | 王二 |
新款九分裤 | 499RMB | 1001 | 张三 |
… | … | … | … |
新款九分裤 | 499RMB | 2369 | 张三 |
新款九分裤 | 499RMB | 3254 | 王二 |
新款九分裤 | 499RMB | 3288 | 张三 |
表2
类似的,当后续需要根据业务员来进行数据查询时,系统还可以将业务员作为全局索引,进而根据业务员来划分索引分区;当需要同时根据商品名称和业务员进行数据查询时,系统还可以将商品名称+业务员的组合作为全局索引,进而根据商品名称+业务员的组合划分索引分区,本实施例对此并不做限定。
需要说明的是,上述只是以不同索引的数据存储在不同索引分区中为例,在实际实现时,系统还可以将两个或者两个以上的索引所对应的数据同时存储在同一个索引分区中,只需要保证同一个索引的所有数据存储在同一个索引分区即可,本实施例对其实际划分方法并不做限定。
在系统将数据按照全局索引存储至各个索引分区之后,数据库集群100中可以相应的形成第二分区集合120。第二分区集合120包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。
综上所述,本实施例提供的数据库集群,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
请参考图2,其示出了本发明一个实施例提供的数据查询方法的方法流程图,本实施例以该数据查询方法用于图1所示的数据库集群中来举例说明,该数据查询方法包括:
步骤201,获取针对数据库集群的查询语句;
步骤202,判断查询语句是否是基于索引字段的查询语句;
步骤203,如果查询语句是基于索引字段的查询语句,则在第二分区集合中查询与查询语句对应的数据。
综上所述,本实施例提供的数据查询方法,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
请参考图3,其示出了本发明另一实施例提供的数据查询方法的方法流程图,本实施例以该数据查询方法用于图1所示的数据库集群中来举例说明,如图3所示,该数据查询方法包括:
步骤301,获取针对数据库集群的查询语句;
当用户希望对数据库集群中的数据进行查询时,用户可以通过终端发送查询语句至系统。相应的,系统可以获取到针对数据库集群的查询语句。
比如,对于存储有销售记录的数据库集群来说,当用户想要查找流水号为‘xxx’的记录时,用户可以通过终端发送基于流水号的查询语句至系统,系统可以相应的接收到基于流水号的查询语句。当用户想要查看某件商品的销售记录时,用户可以通过终端发送基于商品名称的查询语句,系统可以相应的接收到基于商品名称的查询语句。
在实际实现时,当数据库集群为MySQL(关系型数据库)集群时,查询语句可以为SQL(Structured Query Language,结构化查询语言)语句,本实施例对此并不做限定。
步骤302,判断查询语句是否是基于索引字段的查询语句;
系统可以解析获取到的查询语句,根据查询语句中的查询条件来判断查询语句是基于主键的查询语句还是基于索引字段的查询语句。
比如,仍然以上述举例为例,当系统解析到的查询语句为对流水号‘1205’的查询语句时,系统可以判定该查询语句是基于主键的查询语句;而当系统解析到查询语句为对商品名称‘新款九分裤’的查询语句时,系统可以判定该查询语句是基于索引字段的查询语句。
步骤303,如果查询语句是基于索引字段的查询语句,则获取第二分区集合中的各个分区的分区描述信息;
由于第二分区集合包括至少一个索引分区,每个索引分区按照索引存储数据,且具有相同索引的数据存储在同一个索引分区中,所以在系统的判断结果为查询语句是基于索引字段的查询语句时,为了获知查询语句所对应的数据存储在各个索引分区中的哪一个索引分区,系统可以先获取第二分区集合中的各个分区的分区描述信息。其中,分区描述信息描述了各个分区的划分方式以及这些分区在数据库集群中的存储位置。
具体的,系统可以直接读取数据库集群预先存储的第二分区集合的各个分区的分区描述信息。当然,在实际实现时,系统还可以通过其他获取方式来获取第二分区集合的分区描述信息,本实施例对此并不做限定。
步骤304,根据查询语句以及分区描述信息确定第二分区集合中与查询语句所对应的分区;
在获取到分区描述信息之后,系统可以根据查询语句以及分区描述信息确定第二分区集合中与查询语句所对应的分区。
比如,系统获取到的第二分区集合的分区描述信息为商品名称为‘1号衬衫’的记录存储在第一索引分区、商品名称为‘春秋印花长裤’的记录存储在第二索引分区以及商品名称为‘新款九分裤’的记录存储在第三索引分区。则当查询语句为对于‘新款九分裤’的记录进行查询的查询语句时,系统可以确定与查询语句所对应的分区为第三索引分区。
在实际实现时,如果第二分区集合中存在两个或者两个以上的索引所对应的数据存储在同一个索引分区的情况,比如,系统同时将商品名称为‘春秋印花长裤’和‘新款九分裤’两种商品的记录存储在第一索引分区,那么此时,不论查询语句是对‘春秋印花长裤’还是‘新款九分裤’的查询,系统确定的与查询语句对应的索引分区均为第一索引分区。
步骤305,在确定的分区中进行数据查询。
系统可以根据确定的分区对查询请求进行重写,生成最终的查询语句,然后在确定的分区中进行查询,将查询到的数据作为与查询语句对应的数据。在实际实现时,系统可以发送生成的最终查询语句至该分区所在的服务器,由服务器查询对应的数据,本实施例对此并不做限定。
根据表1和表2可以知道,当对某一商品的销售记录进行查询时,系统通过主键的查询效率远低于基于商品名称的查询效率,所以本实施例通过使用上述技术方案大大提高了数据查询效率。
综上所述,本实施例提供的数据查询方法,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
当数据库集群在第二分区集合中查询数据时,数据库集群通过获取第二分区集合中各个分区的分区描述信息,根据分区描述信息以及查询语句确定查询语句在第二分区集合中所对应的分区,进而在确定的分区中进行数据查询,缩小了数据库集群的数据查询范围,进一步提高了数据查询效率。
需要补充说明的是,如果步骤302的判断结果为查询语句是基于主键的查询语句,则此时,系统可以在第一分区集合中进行数据查询。第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储。
与在第二分区集合中查询数据类似的是,系统也可以获取第一分区集合中的各个主键分区的分区描述信息,根据查询语句以及获取到的分区描述信息确定该第一分区集合中与查询语句对应的主键分区,并在确定的主键分区中查询与查询语句对应的数据,本实施例在此不再赘述。
通过在获取到查询语句时,判断查询语句是基于主键的查询语句还是基于索引字段的查询语句,进而根据判断结果自适应的选择在第一分区集合中查询数据还是在第二分区集合中查询数据,大大提高了数据的查询效率。
请参考图4,其示出了本发明一个实施例提供的数据同步方法的方法流程图,本实施例以该数据查询方法用于图1所示的数据库集群中来举例说明,如图4所示,该数据同步方法包括:
步骤401,获取数据库集群中的第一分区集合所对应的服务器中的日志事件;
其中,第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储。
步骤402,根据日志事件同步数据库集群中的第二分区集合中的数据。
其中,第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。
综上所述,本实施例提供的数据同步方法,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
此外,本实施例通过获取数据库集群中的第一分区集合所对应的服务器中的日志事件,来获取数据库集群中存储的数据的变化,然后根据日志事件同步数据库集群中的第二分区集合中的数据,使得第二分区集合中存储的数据与主表中的数据一致,达到了不论基于主键查询还是基于索引字段查询均能查询到正确的数据的效果。
请参考图5,其示出了本发明一个实施例提供的数据同步方法的方法流程图,本实施例以该数据查询方法用于图1所示的数据库集群中来举例说明,如图5所示,该数据同步方法包括:
步骤501,获取数据库集群中的第一分区集合所对应的服务器中的日志事件;
数据库集群在运行过程中会产生日志事件。该日志事件中包括了数据操作事件。数据操作事件包括:数据新建事件、数据删除事件和数据更新事件。比如,在表中新建了一个数据,则数据新建事件将记录该数据的标识和具体取值。又比如,在表中删除了一个数据,则数据删除事件会记录该数据的标识和具体取值。再比如,在表中更新了一个数据,则数据更新事件会记录该数据的标识、变更前的取值和变更后的取值。当然,日志记录还记录了数据更改事件之外的其它事件。
由于系统在对数据库集群中的数据进行更改时,系统只能对主表中的数据也即只能对第一分区集合中存储的数据进行直接操作,所以为了获取第一分区集合中存储的数据的变化,系统可以获取数据库集群中第一分区集合所对应的服务器中的日志事件。其中,第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区中按照主键进行数据存储。
以数据库集群为MySQL集群为例,在MySQL集群的运行过程中,MySQL集群会生成二进制日志事件,利用MySQL集群提供的Binlog功能可以复制MySQL集群的二进制日志记录。为此,系统可以启动一个Binlog抓取线程,该Binlog抓取线程用于连接到MySQL集群来抓取第一分区集合所对应的服务器中的日志事件。
步骤502,从日志事件中过滤出第一分区集合的数据操作事件;
由于日志事件中还记载了除数据操作事件之外的其他事件,所以系统可以对获取到的日志事件进行过滤,进而获取只包括日志事件中关于第一分区集合的数据操作事件,而丢弃其他事件。其中,数据操作事件包括:数据新建事件、数据更新事件和数据删除事件。
步骤503,根据过滤得到的数据操作事件生成执行命令;
经过上述过滤之后的日志事件包含了数据库集群存储的数据中变更行的所有字段的数据。所以为了对存储相同数据的第二分区集合中的数据进行更新,系统可以根据过滤得到的数据操作事件生成执行命令。
步骤504,根据执行命令同步第二分区集合中相应的数据。
在系统生成执行命令之后,系统可以根据生成的执行命令同步第二分区集合中相应的数据。在系统同步第二分区集合中的数据之后,第二分区集合中的存储的数据即为数据库集群中存储的最新的数据,系统在基于索引字段进行数据查询,也即在第二分区集合中存储的数据中进行数据查询时,系统仍然能够查询到正确的数据。第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。
所以,本实施例提供的技术方案保证了第二分区集合中存储的数据与第一分区集合中存储的数据的一致性,进而保证了系统在第二分区集合中存储的数据中进行数据查询时,数据查询的准确性。
综上所述,本实施例提供的数据同步方法,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
此外,本实施例通过获取数据库集群中的第一分区集合所对应的服务器中的日志事件,来获取数据库集群中存储的数据的变化,然后根据日志事件同步数据库集群中的第二分区集合中的数据,使得第二分区集合中存储的数据与主表中的数据一致,达到了不论基于主键查询还是基于索引字段查询均能查询到正确的数据的效果。
请参考图6,其示出了本发明一个实施例提供的数据查询装置的结构方框图,本实施例以该数据查询装置用于图1所示的数据库集群中来举例说明,如图6所示,该数据查询装置可以包括:查询语句获取模块610、查询语句判断模块620和第一数据查询模块630;
查询语句获取模块610,用于获取针对数据库集群的查询语句;
查询语句判断模块620,用于判断查询语句获取模块610获取到的查询语句是否是基于索引字段的查询语句;
第一数据查询模块630,用于在查询语句判断模块620的判断结果为查询语句是基于索引字段的查询语句时,在第二分区集合中查询与查询语句对应的数据。
综上所述,本实施例提供的数据查询装置,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
请参考图7,其示出了本发明一个实施例提供的数据查询装置的结构方框图,本实施例以该数据查询装置用于图1所示的数据库集群中来举例说明,如图7所示,该数据查询装置可以包括:查询语句获取模块710、查询语句判断模块720和第一数据查询模块730;
查询语句获取模块710,用于获取针对数据库集群的查询语句;
查询语句判断模块720,用于判断查询语句获取模块710获取到的查询语句是否是基于索引字段的查询语句;
第一数据查询模块730,用于在查询语句判断模块720的判断结果为查询语句是基于索引字段的查询语句时,在第二分区集合中查询与查询语句对应的数据。
可选地,第一数据查询模块730,包括:
分区信息获取单元731,用于获取第二分区集合中的各个分区的分区描述信息;
分区确定单元732,用于根据查询语句以及分区信息获取单元731获取到的分区描述信息确定第二分区集合中与查询语句所对应的分区;
数据查询单元733,用于在分区确定单元732确定的分区中进行数据查询。
可选地,装置还包括:
第二数据查询模块740,用于在查询语句判断模块720的判断结果为查询语句是基于主键的查询语句时,在第一分区集合中进行数据查询。
综上所述,本实施例提供的数据查询装置,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
当数据库集群在第二分区集合中查询数据时,数据库集群通过获取第二分区集合中各个分区的分区描述信息,根据分区描述信息以及查询语句确定查询语句在第二分区集合中所对应的分区,进而在确定的分区中进行数据查询,缩小了数据库集群的数据查询范围,进一步提高了数据查询效率。
请参考图8,其示出了本发明一个实施例提供的数据同步装置的结构方框图,本实施例以该数据同步装置用于图1所示的数据库集群中来举例说明,该数据同步装置可以包括:日志事件获取模块810和数据同步模块820;
日志事件获取模块810,用于获取数据库集群中的第一分区集合所对应的服务器中的日志事件;
数据同步模块820,用于根据日志事件获取模块810获取到的日志事件同步数据库集群中的第二分区集合中的数据。
综上所述,本实施例提供的数据同步装置,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
此外,本实施例通过获取数据库集群中的第一分区集合所对应的服务器中的日志事件,来获取数据库集群中存储的数据的变化,然后根据日志事件同步数据库集群中的第二分区集合中的数据,使得第二分区集合中存储的数据与主表中的数据一致,达到了不论基于主键查询还是基于索引字段查询均能查询到正确的数据的效果。
请参考图9,其示出了本发明一个实施例提供的数据同步装置的结构方框图,本实施例以该数据同步装置用于图1所示的数据库集群中来举例说明,该数据同步装置可以包括:日志事件获取模块910和数据同步模块920;
日志事件获取模块910,用于获取数据库集群中的第一分区集合所对应的服务器中的日志事件;
数据同步模块920,用于根据日志事件获取模块910获取到的日志事件同步数据库集群中的第二分区集合中的数据。
可选地,数据同步模块920,包括:
操作事件获取单元921,用于从日志事件中过滤出第一分区集合的数据操作事件,数据操作事件包括:数据新建事件、数据更新事件和数据删除事件;
命令生成单元922,用于根据操作事件获取单元921过滤得到的数据操作事件生成执行命令;
数据同步单元923,用于根据命令生成单元922生成的执行命令同步第二分区集合中相应的数据。
综上所述,本实施例提供的数据同步装置,通过将数据同时存储在第一分区集合和第二分区集合中;第一分区集合包括按照主键进行分区的至少一个主键分区,每个主键分区按照主键进行数据存储;第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中;使得在数据查询时,当查询语句为基于索引字段的查询语句时,数据库集群可以在第二分区集合中直接查询与查询语句中的索引字段对应的数据;解决了现有技术中数据查询效率低的问题;达到了根据查询语句中的索引字段以及按照索引分区得到的至少一个索引分区可以直接查询到请求的数据,提高数据查询效率的效果。
此外,本实施例通过获取数据库集群中的第一分区集合所对应的服务器中的日志事件,来获取数据库集群中存储的数据的变化,然后根据日志事件同步数据库集群中的第二分区集合中的数据,使得第二分区集合中存储的数据与主表中的数据一致,达到了不论基于主键查询还是基于索引字段查询均能查询到正确的数据的效果。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种数据库集群,其特征在于,所述数据库集群包括存储有相同数据的第一分区集合和第二分区集合;
所述第一分区集合包括按照主键的取值范围进行分区的至少一个主键分区,每个主键分区中按照主键的取值范围进行数据存储;
所述第二分区集合包括按照全局索引进行分区的至少一个索引分区,每个索引分区中按照索引进行数据存储,且具有相同索引的数据存储于同一个索引分区中。
2.一种数据查询方法,用于权利要求1所述的数据库集群中,其特征在于,所述方法包括:
获取针对所述数据库集群的查询语句;
判断所述查询语句是否是基于索引字段的查询语句;
如果所述查询语句是基于索引字段的查询语句,则在所述第二分区集合中查询与所述查询语句对应的数据。
3.根据权利要求2所述的方法,其特征在于,所述在所述第二分区集合中查询与所述查询语句对应的数据,包括:
获取所述第二分区集合中的各个分区的分区描述信息;
根据所述查询语句以及所述分区描述信息确定所述第二分区集合中与所述查询语句所对应的分区;
在确定的所述分区中进行数据查询。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果所述查询语句是基于主键的查询语句,则在所述第一分区集合中进行数据查询。
5.一种数据同步方法,用于权利要求1所述的数据库集群中,其特征在于,所述方法包括:
获取所述数据库集群中的所述第一分区集合所对应的服务器中的日志事件;
根据所述日志事件同步所述数据库集群中的所述第二分区集合中的数据。
6.根据权利要求5所述的方法,其特征在于,所述根据所述日志事件同步所述数据库集群中的所述第二分区集合中的数据,包括:
从所述日志事件中过滤出所述第一分区集合的数据操作事件,所述数据操作事件包括:数据新建事件、数据更新事件和数据删除事件;
根据过滤得到的所述数据操作事件生成执行命令;
根据所述执行命令同步所述第二分区集合中相应的数据。
7.一种数据查询装置,用于权利要求1所述的数据库集群中,其特征在于,所述装置包括:
查询语句获取模块,用于获取针对所述数据库集群的查询语句;
查询语句判断模块,用于判断所述查询语句获取模块获取到的所述查询语句是否是基于索引字段的查询语句;
第一数据查询模块,用于在所述查询语句判断模块的判断结果为所述查询语句是基于索引字段的查询语句时,在所述第二分区集合中查询与所述查询语句对应的数据。
8.根据权利要求7所述的装置,其特征在于,所述第一数据查询模块,包括:
分区信息获取单元,用于获取所述第二分区集合中的各个分区的分区描述信息;
分区确定单元,用于根据所述查询语句以及所述分区信息获取单元获取到的所述分区描述信息确定所述第二分区集合中与所述查询语句所对应的分区;
数据查询单元,用于在所述分区确定单元确定的所述分区中进行数据查询。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二数据查询模块,用于在所述查询语句判断模块的判断结果为所述查询语句是基于主键的查询语句时,在所述第一分区集合中进行数据查询。
10.一种数据同步装置,用于权利要求1所述的数据库集群中,其特征在于,所述装置包括:
日志事件获取模块,用于获取所述数据库集群中的所述第一分区集合所对应的服务器中的日志事件;
数据同步模块,用于根据所述日志事件获取模块获取到的所述日志事件同步所述数据库集群中的所述第二分区集合中的数据。
11.根据权利要求10所述的装置,其特征在于,所述数据同步模块,包括:
操作事件获取单元,用于从所述日志事件中过滤出所述第一分区集合的数据操作事件,所述数据操作事件包括:数据新建事件、数据更新事件和数据删除事件;
命令生成单元,用于根据所述操作事件获取单元过滤得到的所述数据操作事件生成执行命令;
数据同步单元,用于根据所述命令生成单元生成的所述执行命令同步所述第二分区集合中相应的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410415862.0A CN104199881B (zh) | 2014-08-21 | 2014-08-21 | 数据库集群、数据查询方法、数据同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410415862.0A CN104199881B (zh) | 2014-08-21 | 2014-08-21 | 数据库集群、数据查询方法、数据同步方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104199881A CN104199881A (zh) | 2014-12-10 |
CN104199881B true CN104199881B (zh) | 2018-07-06 |
Family
ID=52085174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410415862.0A Active CN104199881B (zh) | 2014-08-21 | 2014-08-21 | 数据库集群、数据查询方法、数据同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104199881B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868197B (zh) * | 2015-01-20 | 2019-09-10 | 中移信息技术有限公司 | 一种话单数据的统计方法及统计装置 |
CN104598652B (zh) * | 2015-02-14 | 2017-11-24 | 广州华多网络科技有限公司 | 一种数据库查询方法及装置 |
CN106156088B (zh) * | 2015-04-01 | 2020-02-04 | 阿里巴巴集团控股有限公司 | 一种索引数据处理方法、数据查询方法及装置 |
CN107451154B (zh) * | 2016-05-31 | 2021-03-30 | 华为技术有限公司 | 一种数据表的处理方法、装置及系统 |
CN106776848B (zh) * | 2016-11-04 | 2020-04-17 | 广州市诚毅科技软件开发有限公司 | 一种数据库查询方法及装置 |
CN108089934B (zh) * | 2016-11-22 | 2021-08-03 | 成都华为技术有限公司 | 集群管理方法及集群服务器 |
CN106960007A (zh) * | 2017-02-28 | 2017-07-18 | 北京京东尚科信息技术有限公司 | 一种数据更新方法、装置及电子设备 |
CN109582694A (zh) * | 2017-09-29 | 2019-04-05 | 北京国双科技有限公司 | 一种生成数据查询脚本的方法及相关产品 |
CN109710635B (zh) * | 2018-12-29 | 2021-03-19 | 联想(北京)有限公司 | 用于数据库的处理方法、处理系统以及服务器组 |
CN110442673A (zh) * | 2019-08-14 | 2019-11-12 | 黄河水利职业技术学院 | 中文文学用的信息查询系统及方法 |
CN112416924A (zh) * | 2019-08-22 | 2021-02-26 | 富泰华工业(深圳)有限公司 | 数据同步查询方法、装置、计算机装置及存储介质 |
CN113268488B (zh) * | 2020-02-14 | 2023-11-03 | 北京京东振世信息技术有限公司 | 数据持久化的方法和装置 |
CN111914020A (zh) * | 2020-06-18 | 2020-11-10 | 北京旷视科技有限公司 | 数据同步方法及装置、数据查询方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436192B (zh) * | 2007-11-16 | 2011-03-16 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
CN102799628A (zh) * | 2012-06-21 | 2012-11-28 | 新浪网技术(中国)有限公司 | 在key-value数据库中进行数据分区的方法和装置 |
CN103500229A (zh) * | 2013-10-24 | 2014-01-08 | 北京奇虎科技有限公司 | 一种数据库同步方法和数据库系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595267B2 (en) * | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
-
2014
- 2014-08-21 CN CN201410415862.0A patent/CN104199881B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436192B (zh) * | 2007-11-16 | 2011-03-16 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
CN102799628A (zh) * | 2012-06-21 | 2012-11-28 | 新浪网技术(中国)有限公司 | 在key-value数据库中进行数据分区的方法和装置 |
CN103500229A (zh) * | 2013-10-24 | 2014-01-08 | 北京奇虎科技有限公司 | 一种数据库同步方法和数据库系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104199881A (zh) | 2014-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104199881B (zh) | 数据库集群、数据查询方法、数据同步方法和装置 | |
CN108536752A (zh) | 一种数据同步方法、装置和设备 | |
CN105446991B (zh) | 数据存储方法、查询方法及设备 | |
US9256665B2 (en) | Creation of inverted index system, and data processing method and apparatus | |
CN106326429A (zh) | 一种基于solr的Hbase秒级查询方案 | |
CN107818115A (zh) | 一种处理数据表的方法及装置 | |
CN106844397B (zh) | 基于分库分表的任务传输方法、装置及系统 | |
CN103631924B (zh) | 一种分布式数据库平台的应用方法和系统 | |
CN109710618A (zh) | 知识图谱数据关系分离的混合存储方法及系统 | |
CN107665246B (zh) | 基于图数据库的动态数据迁移方法及图数据库集群 | |
CN104794155B (zh) | 数据加载的方法、装置及系统 | |
CN105786877B (zh) | 一种数据存储方法、系统及查询方法 | |
CN111460240B (zh) | 一种跨地域多活微服务架构下翻页数据查询方法及装置 | |
CN106095964A (zh) | 一种对数据进行可视化归档与搜索的方法 | |
CN111339171A (zh) | 数据查询的方法、装置及设备 | |
CN107391769B (zh) | 一种索引查询方法及装置 | |
CN111026709B (zh) | 基于集群访问的数据处理方法及装置 | |
JP2010525477A (ja) | ウェブログの時系列分析のためのデータ格納および照会方法及びその方法を実行するシステム | |
US11531706B2 (en) | Graph search using index vertices | |
CN109165217A (zh) | 一种时序数据的高效存储方法 | |
CN105868023B (zh) | 一种分布式系统中的数据处理方法及计算节点 | |
US11263264B2 (en) | Management of graphs using secondary index vertices | |
CN108897858A (zh) | 分布式集群索引分片的评估方法及装置、电子设备 | |
CN109189864B (zh) | 一种数据同步延时的确定方法、装置和设备 | |
CN108595482A (zh) | 一种数据索引方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 511446 Guangzhou City, Guangdong Province, Panyu District, South Village, Huambo Business District Wanda Plaza, block B1, floor 28 Applicant after: Guangzhou Huaduo Network Technology Co., Ltd. Address before: 510655, Guangzhou, Whampoa Avenue, No. 2, creative industrial park, building 3-08, Applicant before: Guangzhou Huaduo Network Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |