CN104008199B - 一种数据查询方法 - Google Patents
一种数据查询方法 Download PDFInfo
- Publication number
- CN104008199B CN104008199B CN201410267074.1A CN201410267074A CN104008199B CN 104008199 B CN104008199 B CN 104008199B CN 201410267074 A CN201410267074 A CN 201410267074A CN 104008199 B CN104008199 B CN 104008199B
- Authority
- CN
- China
- Prior art keywords
- sublist
- incidence relation
- application server
- tables
- server
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了一种数据查询方法,在进行数据表的分布式存储时,应用服务器将具有关联关系的两个表,按照相同的子表数进行水平拆分,并按照相同的散列公式将两个表的相同索引号的子表散列到分布式数据库服务器上,在进行数据查询时,数据库服务器可以根据子表的关联关系进行简单的数据查询处理。采用本发明,可以避免进行合并查询时跨机查询的网络传输开销,减少复杂查询的处理时延,适用于OLTP应用场景。
Description
技术领域
本发明涉及分布式数据库系统的数据处理技术,特别是涉及一种分布式数据库系统中的数据查询方法。
背景技术
目前,随着数据规模及其访问量对关系数据库提出了很大挑战:数十亿条的记录、数TB的数据、数千TPS、数万QPS让传统的关系数据库不堪重负,单纯的硬件升级已经无法使得问题得到解决。而目前的分布式数据库技术无法有效的支持复杂的关联查询。
针对该问题,通常是采用对先对数据表进行水平拆分,然后再把拆分后的各子表分散到多个服务器上的方式,来实现大规模数据的存储。具体为:选取数据表中的某个或若干字段作为拆分键,将记录散列到不同的数据库服务器中。当客户端需要访问某个记录时,根据拆分键找到记录所在的服务器位置;
上述方法可以实现记录规模较大的数据表的分布存储,但是,在进行表关联查询时容易出现跨机查询,即需要关联的子表分布在不同的服务器上,该情况下,一方面各数据库服务器无法进行合并查询处理,而需要应用服务器从各数据库服务器中读取子表后,才能进行相应的合并查询处理,这样就会导致应用服务器的数据处理负荷就会较大,当跨机查询的数据越多时,系统的性能就会越差;另一方面,由于需要将数据库服务器中的数据统一发送给应用服务器处理,相应地,也会造成冗余的网络数据传输。
因此,在分布式数据库系统下,传统的数据查询方法存在网络传输开销大、处理时延长等问题,无法满足对时延要求高的在线事物处理(OLTP)应用场景下的关联查询。目前尚未提出一种适用于在OLTP情况下进行关联查询的方法。
发明内容
有鉴于此,本发明的主要目的在于提供一种数据查询方法,该方法可以有效减少网络传输开销,降低处理时延,适用于OLTP应用场景。
为了达到上述目的,本发明提出的技术方案为:
一种数据查询方法,包括:
当应用服务器对数据库系统中的数据进行存储时,对于存在关联关系的两个表,根据所述关联关系的关联字段,对每个所述表进行水平拆分,得到该表的N个子表;
对于所述两个表,所述应用服务器根据子表的索引号,利用相同的散列公式,确定用于存储各自子表的数据库服务器;将各所述子表存储在所确定的数据库服务器中;对于所述两个表的每对具有相同索引号的子表,所述应用服务器根据所述关联关系,确定该对子表的关联关系;
当客户端触发根据所述两个表的关联关系进行数据查询时,对于满足查询条件的子表,将该子表对应的关联关系发送给子表所在数据库服务器,同时触发所述数据库服务器根据该关联关系,按照所述查询条件进行查询,并返回结果给所述应用服务器;
所述应用服务器根据所述查询条件,对所述返回结果进行相应的查询处理并反馈结果给所述客户端。
综上所述,本发明提出的数据查询方法,在进行数据表的分布式存储时,应用服务器将具有关联关系的两个表,按照相同的子表数进行水平拆分,并按照相同的散列公式将两个表的相同索引号的子表散列到分布式数据库服务器上,如此,可确保具有关联关系的子表存储在相同的服务器上,避免进行合并查询时跨机查询的网络传输开销,减少复杂查询的处理时延,适用于OLTP应用场景。
附图说明
图1为本发明实施例一的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:对于具有关联关系的两个表,按照相同的子表数进行水平拆分,并按照相同的散列公式将两个表的相同索引号的子表散列到分布式数据库服务器上,使得具有关联关系的子表存储在相同的服务器上,使单个数据库服务器可以执行简单的查询合并处理,分担应用服务器的部分数据查询处理开销,并可避免进行合并查询时跨机查询的网络传输开销,减少复杂查询的处理时延,适用于OLTP应用场景。
图1为本发明实施例一的流程示意图,如图1所示,该实施例主要包括:
步骤101、当应用服务器对数据库系统中的数据进行存储时,对于存在关联关系的两个表,根据所述关联关系的关联字段,对每个所述表进行水平拆分,得到该表的N个子表。
本步骤中,与现有方案中的水平拆分所不同的是,需要根据所述关联关系的关联字段,来对每个所述表进行水平拆分,并且需要确保存在关联关系的两个表的拆分子表数量相同,即均为N个。这样,由于是以关联字段为拆分键,并且子表数量相同,因此,可以确保具有关联关系的两子表的子表索引号相同,以便后续过程中基于该特性实现具有关联关系的两子表存储在同一服务器上的目的。
步骤102、对于所述两个表,所述应用服务器根据子表的索引号,利用相同的散列公式,确定用于存储各自子表的数据库服务器;将各所述子表存储在所确定的数据库服务器中;对于所述两个表的每对具有相同索引号的子表,所述应用服务器根据所述关联关系,确定该对子表的关联关系。
本步骤中,确定子表与存储子表的服务器之间对应关系的具体方法同现有系统一样,与现有方案所不同的是,对于存在关联关系的两个表,需要采用相同的散列公式,。这样,由于散列公式相同,同一子表索引号的散列值也将相同,相同的散列值对应的路由路径也相同,因此,对应的数据库服务器也将相同。而如前所述步骤101中可以确保具有关联关系的两子表的子表索引号相同,因此,本步骤可以进一步确保具有关联关系的两个子表被保存在同一服务器上,从而可以确保相关联子表的查询操作在一台服务器上即可完成,进而可以避免数据服务器之间的数据交叉关联,避免多余的网络数据传输以及减少联合查询的处理时延。
另外,本步骤还需要根据拆分前两表之间的关联关系确定相应子表之间的关联关系,以便数据库服务器可以基于此进行数据的关联查询操作,具体确定方法如下:
对于每对具有相同索引号的子表,所述应用服务器根据所述关联关系,按照母表替换为子表的方式,得到该对子表的关联关系。所述母表即被拆分的表。
在具体实现时,表之间的关联关系是通过SQL语句进行描述的,根据表的关联关系得到子表的关联关系,也就是通过对表的关联关系的SQL语句进行修改,得到相应子表的关联关系。由于在上述方法中,散列方式相同,相同索引号的子表在相同的服务器上,因此在进行修改时,只需要修改SQL语句中数据表的名称,即将其中的数据表替换为相应的子表的名称即可。
步骤103、当客户端触发根据所述两个表的关联关系进行数据查询时,对于满足查询条件的子表,将该子表对应的关联关系发送给子表所在数据库服务器,触发所述数据库服务器根据该关联关系,按照所述查询条件进行查询,并返回结果给所述应用服务器。
这里,由于相关联的子表在同一服务器上,因此,数据库服务器可以在本机上行简单的查询合并处理,从而避免了跨机查询的诸多开销。
步骤104、所述应用服务器根据所述查询条件,对所述返回结果进行相应的查询处理并反馈结果给所述客户端。
本步骤具体实现时需要考虑查询条件中包含需要二次合并处理的关键字,如果有,则需要在接收到所有返回结果后,对它们进行相应的二次合并处理,以完成最终的数据查询操作,如果没有,则数据库服务器的返回结果即为最终查询结果,直接反馈给客户端即可。具体地,可以采用下述方法实现:
当所述查询条件中包含需要二次合并处理的关键字时,所述应用服务器根据所述查询条件,对所有所述数据库服务器的返回结果进行相应的合并处理,并将处理结果发送给所述客户端;
当所述查询条件中不包含需要二次合并处理的关键字时,所述应用服务器将接收到的所述返回结果直接发送给所述客户端。
在实际应用中,对于SQL系统,所述需要二次合并处理的关键字包括:UNION,MAX,MIN,AVG,GROUP,ORDER和HAVING等。
这里,由于在步骤103中数据库服务器已完成了大部分的数据关联查询操作,因此,在本步骤中应用服务器只需要进行二次合并处理,对于不需要二次合并处理的查询,直接将结果发给客户端即可,从而使应用服务器的运算负荷可以得到大幅度的降低。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种数据查询方法,其特征在于,包括:
当应用服务器对数据库系统中的数据进行存储时,对于存在关联关系的两个表,根据所述关联关系的关联字段,对每个所述表进行水平拆分,得到该表的N个子表;
对于所述两个表,所述应用服务器根据子表的索引号,利用相同的散列公式,确定用于存储各自子表的数据库服务器;将各所述子表存储在所确定的数据库服务器中;对于所述两个表的每对具有相同索引号的子表,所述应用服务器根据所述关联关系,确定该对子表的关联关系;
当客户端触发根据所述两个表的关联关系进行数据查询时,对于满足查询条件的子表,将该子表对应的关联关系发送给子表所在数据库服务器,触发所述数据库服务器根据该关联关系,按照所述查询条件进行查询,并返回结果给所述应用服务器;
所述应用服务器根据所述查询条件,对所述返回结果进行相应的查询处理并反馈结果给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述应用服务器根据所述查询条件,对所述返回结果进行相应的查询处理并反馈结果给所述客户端包括:
当所述查询条件中包含需要二次合并处理的关键字时,所述应用服务器根据所述查询条件,对所有所述数据库服务器的返回结果进行相应的合并处理,并将处理结果发送给所述客户端;
当所述查询条件中不包含需要二次合并处理的关键字时,所述应用服务器将接收到的所述返回结果直接发送给所述客户端。
3.根据权利要求2所述的方法,其特征在于,所述需要二次合并处理的关键字包括:UNION,MAX,MIN,AVG,GROUP,ORDER和HAVING。
4.根据权利要求1所述的方法,其特征在于,所述确定该对子表的关联关系包括:
对于每对具有相同索引号的子表,所述应用服务器根据所述关联关系,按照母表替换为子表的方式,得到该对子表的关联关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410267074.1A CN104008199B (zh) | 2014-06-16 | 2014-06-16 | 一种数据查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410267074.1A CN104008199B (zh) | 2014-06-16 | 2014-06-16 | 一种数据查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104008199A CN104008199A (zh) | 2014-08-27 |
CN104008199B true CN104008199B (zh) | 2017-05-31 |
Family
ID=51368856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410267074.1A Active CN104008199B (zh) | 2014-06-16 | 2014-06-16 | 一种数据查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104008199B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598652B (zh) * | 2015-02-14 | 2017-11-24 | 广州华多网络科技有限公司 | 一种数据库查询方法及装置 |
CN104965880A (zh) * | 2015-06-12 | 2015-10-07 | 小米科技有限责任公司 | 数据库拆分方法及装置 |
US20170147652A1 (en) * | 2015-11-19 | 2017-05-25 | Institute For Information Industry | Search servers, end devices, and search methods for use in a distributed network |
CN106339475A (zh) * | 2016-08-29 | 2017-01-18 | 联众智慧科技股份有限公司 | 一种海量数据的分布式存储系统 |
CN109299348B (zh) * | 2018-11-28 | 2021-09-28 | 北京字节跳动网络技术有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN110362535B (zh) * | 2019-07-12 | 2022-05-31 | 中国农业银行股份有限公司 | 一种文件管理方法、装置及系统 |
CN112181989B (zh) * | 2020-10-12 | 2024-09-03 | 浙江大华技术股份有限公司 | 一种分布式数据库的数据处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN103186651A (zh) * | 2011-12-31 | 2013-07-03 | 中国移动通信集团公司 | 一种分布式关系数据库及其建立、查询方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732159B2 (en) * | 2011-12-22 | 2014-05-20 | Sap Ag | Generic outer join across database borders |
-
2014
- 2014-06-16 CN CN201410267074.1A patent/CN104008199B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN103186651A (zh) * | 2011-12-31 | 2013-07-03 | 中国移动通信集团公司 | 一种分布式关系数据库及其建立、查询方法和装置 |
Non-Patent Citations (1)
Title |
---|
分布式空间拓扑连接查询优化处理算法;杨典华;《地球信息科学学报》;20131031;第15卷(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104008199A (zh) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104008199B (zh) | 一种数据查询方法 | |
US11354314B2 (en) | Method for connecting a relational data store's meta data with hadoop | |
US20210385087A1 (en) | Zero-knowledge identity verification in a distributed computing system | |
US8504557B2 (en) | System, method and computer program product for querying data relationships over a network | |
US11082226B2 (en) | Zero-knowledge identity verification in a distributed computing system | |
CN104820717B (zh) | 一种海量小文件存储及管理方法和系统 | |
KR101435789B1 (ko) | Dlp 시스템의 빅데이터 처리 시스템 및 방법 | |
EP2937797A1 (en) | System and method for searching a distributed node-sharded graph | |
CN104516979B (zh) | 一种基于二次检索的数据查询方法及系统 | |
CN107451208B (zh) | 一种数据搜索方法与装置 | |
CN104079538B (zh) | 一种支持跨平台互动的微博聚合方法及系统 | |
CN104063487B (zh) | 基于关系型数据库及k‑d树索引的文件数据管理方法 | |
CN103607312B (zh) | 用于服务器系统的数据请求处理方法及系统 | |
CN106202112A (zh) | 缓存目录刷新方法和装置 | |
CN104408159B (zh) | 一种数据关联、加载、查询方法及装置 | |
US20200042510A1 (en) | Method and device for correlating multiple tables in a database environment | |
US20160224641A1 (en) | Obtaining incremental updates from a database using a partial query | |
CN104539583B (zh) | 一种实时数据库订阅系统及方法 | |
CN106202416A (zh) | 列表数据写方法和装置、列表数据读取方法和装置 | |
CN106484694B (zh) | 基于分布式数据库的全文搜索方法及系统 | |
CN107729370A (zh) | 微服务多数据源连接实现方法 | |
US9824227B2 (en) | Simulated control of a third-party database | |
CN107577787A (zh) | 关联数据信息入库的方法及系统 | |
CN105765570B (zh) | 音乐识别 | |
WO2018107942A1 (en) | System and method of adaptively partitioning data to speed up join queries on distributed and parallel database systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |