CN107609091A - 一种跨库多表联合查询系统及其实现方法 - Google Patents
一种跨库多表联合查询系统及其实现方法 Download PDFInfo
- Publication number
- CN107609091A CN107609091A CN201710803626.XA CN201710803626A CN107609091A CN 107609091 A CN107609091 A CN 107609091A CN 201710803626 A CN201710803626 A CN 201710803626A CN 107609091 A CN107609091 A CN 107609091A
- Authority
- CN
- China
- Prior art keywords
- data
- buffer storage
- sql
- database
- data buffer
- 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.)
- Granted
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/24552—Database cache management
-
- 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
-
- 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
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机应用技术领域,具体涉及一种跨库多表联合查询系统及其实现方法。本发明由编译器、SQL方言优化器、数据缓存、查询器和结果集组成。通过编译器把查询异库的表的语句分离出来,形成独立的数据库方言,优化器对SQL进行优化,提高其执行的效率,最后执行SQL语句分别查询异库表,得到的查询结果保存在数据缓存中,最后查询器执行查询语句得到想要的结果集。本发明整个过程屏蔽了数据库的差异性,对上层操作透明;可以用于数据库跨库多表联合数据查询。
Description
技术领域
本发明涉及计算机应用技术领域,具体涉及一种跨库多表联合查询系统及其实现方法。
背景技术
随着互联网和计算机应用技术的不断发展,各种应用系统的普及,导致数据量激增。而各种应用系统的数据都是各自为政,形成了大量的数据孤岛。但是业务之间又需要各种数据的支撑,如果数据无法被共享则需要对各个业务系统所需的数据进行复制,形成多份数据。此时的数据无法及时更新,造成数据的不同步;所以数据能够被共享是解决以上问题的最好方法,所有的业务系统均使用同一数据源,这就要涉及多表联合查询的问题。因此异库数据之间的关联及管理成为了数据管理的关键。
发明内容
本发明解决的技术问题之一在于提供一种跨库多表联合查询系统;为有需要此业务场景的系统提供应用,简化业务流程,提高效率。
本发明解决的技术问题之二在于提供一种种跨库多表联合查询的实现方法。
本发明解决上述技术问题之一的技术方案是:
所述系统主要由编译器、SQL方言优化器、数据缓存、查询器和结果集组成;
所述编译器读取用户输入的查询语句并且把语句解释成相应的数据库方言和标准SQL;标准SQL发送查询器,数据库方言则发送SQL方言优化器;
所述查询器,执行标准SQL,在数据缓存查找所需的数据,如果数据在数据缓存中,则从数据缓存中查询数据,并返回结果;如果无法找到数据,则待SQL方言优化器将数据库方言优化、从相应数据库中获取数据;最后结果放入结果集;
所述SQL方言优化器,在查询器执行标准SQL后无法从数据缓存中查询数据时对数据库方言进行优化,最后执行优化后的SQL语句查询异库表,从相应的数据库查询获得结果,并保存在数据缓存;
所述异库表,描述各数据库的差异,并指向相应的数据库;
所述结果集,存放查询获得的结果。
还包括二级缓存;当数据缓存接收执行数据库方言后返回的数据,并做数据类型的统一转换,形成统一的临时数据表,供查询器做查询操作后;可将数据放入二级缓存,以供第二次可能相同的操作,从二级缓存将数据加载到数据缓存。
本发明解决上述技术问题之二的技术方案是:
所述的方法包括如下流程:
(1)、编译器读取SQL语句,并解释出数据库方言和标准SQL;
(2)、标准SQL发送到查询器进行执行,如果数据缓存缺失或者缺少所需的数据,那么需要执行相应的数据库方言,从数据库中查询所需要的数据;如果数据在数据缓存中,则从数据缓存中查询数据,并返回结果;
(3)、数据库方言发送到SQL优化器对语句进行优化,提高数据库的执行效率;
(4)、当数据从远程的数据库中查询出来后,装载到数据缓存;数据缓存根据相应的算法计算需要被替换的数据;当数据装载完毕,数据缓存通知查询器进行数据的查询操作;
(5)、查询器对数据缓存进行查询后,得到的结果存放到结果集,等待用户的获取。
当编译器读取用户输入的查询语句后,将语句解释成数据库方言和标准的SQL;数据库方言在相应的数据库上运行,得到的数据存放在数据缓存上;标准的SQL查询语句在查询器中执行得到结果。
当数据缓存中有新的数据需要存储的时候,能够对数据缓存的数据进行保存;当有新的查询请求时,先在二级缓存中查询是否有相同的数据;如果有,则从二级缓存加载到数据缓存中。
二级缓存所存储的数据存储结构是MAP;在采用java实现语言时采用currentMap来实现;同时,采用List结构来辅助存储数据;在采用java实现语言时采用LinkList来实现,方便修改操作。
二级缓存数据替换算法如下:
设n为最近一分钟的访问次数,m为最近两分钟访问次数,q为最近五分钟访问次数,则访问权重s=0.6*(n/1)+0.3*(m/2)+0.1*(q/5),权重越大,留在缓冲器的优先等级越高。
通过本发明,可以方便地使用同一个数据源而无需复制多份数据,避免数据不一致的情况出现。本发明整个过程屏蔽了数据库的差异性,对上层操作透明。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明的处理流程图;
图2是本发明的二级缓存结构图。
具体实施方式
见图1所示,本发明由编译器、SQL方言优化器、数据缓存、查询器和结果集组成。通过编译器把查询语句分离成相应的数据库方言和标准SQL语句,执行相应的查询语句,利用数据缓存把数据获取到本地,同时,如果有新的数据需要存入数据缓存,则数据会保存到二级缓存中,以提高数据的命中率。
如果查询器执行SQL在数据缓存中无法找到数据,则从数据库中获取数据。优化器对SQL进行优化,提高其执行效率,最后执行SQL语句分别查询异库表,查询结果保存在数据缓存中,最后查询器执行查询语句得到想要的结果集。
整个工作详细流程如下:
1、编译器读取SQL语句,并解释出数据库方言和SQL;
2、SQL发送到查询器进行执行,如果数据缓存缺失或者缺少所需的数据,那么需要执行相应的数据库方言,从数据库中查询所需要的数据;如果数据在数据缓存中,则从数据缓存中查询数据,并返回结果;
3、数据库方言发送到SQL优化器对语句进行优化,提高数据库的执行效率;
4、当数据从远程的数据库中查询出来后,会装载到数据缓存,缓存会根据相应的算法计算需要被替换的数据。当数据装载完毕,数据缓存会通知查询器进行数据的查询操作;
5、查询器对数据缓存进行查询后,得到的结果存放到结果集,等待用户的获取。
见图2所示,二级缓存构成如下:
1、由于二级缓存所存储的数据是使用频率高的数据,而且查询速度要快,所以使用的存储结构是MAP。具体到java实现语言,应该采用currentMap来实现;
2、采用List结构来辅助存储数据,方便对数据进行遍历操作。具体到java实现语言,应该采用LinkList来实现,方便修改操作。
二级缓存数据替换算法如下:
设n为最近一分钟的访问次数,m为最近两分钟访问次数,q为最近五分钟访问次数,则访问权重s=0.6*(n/1)+0.3*(m/2)+0.1*(q/5),权重越大,留在缓冲器的优先等级越高。
Claims (8)
1.一种跨库多表联合查询系统,其特征在于:所述系统主要由编译器、SQL方言优化器、数据缓存、查询器和结果集组成;
所述编译器读取用户输入的查询语句并且把语句解释成相应的数据库方言和标准SQL;标准SQL发送查询器,数据库方言则发送SQL方言优化器;
所述查询器,执行标准SQL,在数据缓存查找所需的数据,如果数据在数据缓存中,则从数据缓存中查询数据,并返回结果;如果无法找到数据,则待SQL方言优化器将数据库方言优化、从相应数据库中获取数据;最后结果放入结果集;
所述SQL方言优化器,在查询器执行标准SQL后无法从数据缓存中查询数据时对数据库方言进行优化,最后执行优化后的SQL语句查询异库表,从相应的数据库查询获得结果,并保存在数据缓存;
所述异库表,描述各数据库的差异,并指向相应的数据库;
所述结果集,存放查询获得的结果。
2.根据权利要求1所述的系统,其特征在于:还包括二级缓存;当数据缓存接收执行数据库方言后返回的数据,并做数据类型的统一转换,形成统一的临时数据表,供查询器做查询操作后;可将数据放入二级缓存,以供第二次可能相同的操作,从二级缓存将数据加载到数据缓存。
3.一种跨库多表联合查询的实现方法,其特征在于:所述的方法包括如下流程:
(1)、编译器读取SQL语句,并解释出数据库方言和标准SQL;
(2)、标准SQL发送到查询器进行执行,如果数据缓存缺失或者缺少所需的数据,那么需要执行相应的数据库方言,从数据库中查询所需要的数据;如果数据在数据缓存中,则从数据缓存中查询数据,并返回结果;
(3)、数据库方言发送到SQL优化器对语句进行优化,提高数据库的执行效率;
(4)、当数据从远程的数据库中查询出来后,装载到数据缓存;数据缓存根据相应的算法计算需要被替换的数据;当数据装载完毕,数据缓存通知查询器进行数据的查询操作;
(5)、查询器对数据缓存进行查询后,得到的结果存放到结果集,等待用户的获取。
4.根据权利要求3所述的方法,其特征在于:当编译器读取用户输入的查询语句后,将语句解释成数据库方言和标准的SQL;数据库方言在相应的数据库上运行,得到的数据存放在数据缓存上;标准的SQL查询语句在查询器中执行得到结果。
5.根据权利要求3或4所述的方法,其特征在于:当数据缓存中有新的数据需要存储的时候,能够对数据缓存的数据进行保存;当有新的查询请求时,先在二级缓存中查询是否有相同的数据;如果有,则从二级缓存加载到数据缓存中。
6.根据权利要求5所述的方法,其特征在于:
二级缓存所存储的数据存储结构是MAP;在采用java实现语言时采用currentMap来实现;同时,采用List结构来辅助存储数据;在采用java实现语言时采用LinkList来实现,方便修改操作。
7.根据权利要求5所述的方法,其特征在于:二级缓存数据替换算法如下:
设n为最近一分钟的访问次数,m为最近两分钟访问次数,q为最近五分钟访问次数,则访问权重s=0.6*(n/1)+0.3*(m/2)+0.1*(q/5),权重越大,留在缓冲器的优先等级越高。
8.根据权利要求6所述的方法,其特征在于:二级缓存数据替换算法如下:
设n为最近一分钟的访问次数,m为最近两分钟访问次数,q为最近五分钟访问次数,则访问权重s=0.6*(n/1)+0.3*(m/2)+0.1*(q/5),权重越大,留在缓冲器的优先等级越高。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710803626.XA CN107609091B (zh) | 2017-09-08 | 2017-09-08 | 一种跨库多表联合查询系统的实现方法 |
PCT/CN2017/109606 WO2019047359A1 (zh) | 2017-09-08 | 2017-11-06 | 一种跨库多表联合查询系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710803626.XA CN107609091B (zh) | 2017-09-08 | 2017-09-08 | 一种跨库多表联合查询系统的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107609091A true CN107609091A (zh) | 2018-01-19 |
CN107609091B CN107609091B (zh) | 2020-10-27 |
Family
ID=61063278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710803626.XA Active CN107609091B (zh) | 2017-09-08 | 2017-09-08 | 一种跨库多表联合查询系统的实现方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107609091B (zh) |
WO (1) | WO2019047359A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109508344A (zh) * | 2018-09-29 | 2019-03-22 | 中国平安人寿保险股份有限公司 | 业务数据查询方法、装置、电子设备及存储介质 |
CN110597849A (zh) * | 2018-05-25 | 2019-12-20 | 北京国双科技有限公司 | 数据查询方法及装置 |
CN115617859A (zh) * | 2022-12-16 | 2023-01-17 | 安徽华云安科技有限公司 | 基于知识图谱集群的数据查询方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050004906A1 (en) * | 2000-04-28 | 2005-01-06 | Huffman Paul C. | Execution of database queries including filtering |
CN101046811A (zh) * | 2006-06-07 | 2007-10-03 | 华为技术有限公司 | 数据集成服务系统及方法 |
CN103268343A (zh) * | 2013-05-24 | 2013-08-28 | 北京京东尚科信息技术有限公司 | 将关系数据库和缓存透明结合的系统和方法 |
CN104112008A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种多表数据关联查询优化方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1825309A (zh) * | 2006-01-18 | 2006-08-30 | 王宏源 | 基于Unicode编码的跨库检索方法 |
CN102163195B (zh) * | 2010-02-22 | 2013-04-24 | 北京东方通科技股份有限公司 | 一种基于分布式、异构数据库统一视图的查询优化方法 |
EP2463785A1 (en) * | 2010-12-13 | 2012-06-13 | Fujitsu Limited | Database and search-engine query system |
CN104572676B (zh) * | 2013-10-16 | 2017-11-17 | 中国银联股份有限公司 | 一种针对多数据库表的跨库分页查询方法 |
CN107025298A (zh) * | 2017-04-20 | 2017-08-08 | 科技谷(厦门)信息技术有限公司 | 一种大数据实时计算处理系统及方法 |
-
2017
- 2017-09-08 CN CN201710803626.XA patent/CN107609091B/zh active Active
- 2017-11-06 WO PCT/CN2017/109606 patent/WO2019047359A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050004906A1 (en) * | 2000-04-28 | 2005-01-06 | Huffman Paul C. | Execution of database queries including filtering |
CN101046811A (zh) * | 2006-06-07 | 2007-10-03 | 华为技术有限公司 | 数据集成服务系统及方法 |
CN103268343A (zh) * | 2013-05-24 | 2013-08-28 | 北京京东尚科信息技术有限公司 | 将关系数据库和缓存透明结合的系统和方法 |
CN104112008A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种多表数据关联查询优化方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597849A (zh) * | 2018-05-25 | 2019-12-20 | 北京国双科技有限公司 | 数据查询方法及装置 |
CN109508344A (zh) * | 2018-09-29 | 2019-03-22 | 中国平安人寿保险股份有限公司 | 业务数据查询方法、装置、电子设备及存储介质 |
CN109508344B (zh) * | 2018-09-29 | 2024-03-12 | 中国平安人寿保险股份有限公司 | 业务数据查询方法、装置、电子设备及存储介质 |
CN115617859A (zh) * | 2022-12-16 | 2023-01-17 | 安徽华云安科技有限公司 | 基于知识图谱集群的数据查询方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2019047359A1 (zh) | 2019-03-14 |
CN107609091B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299102B (zh) | 一种基于Elastcisearch的HBase二级索引系统及方法 | |
CN107463632A (zh) | 一种分布式NewSQL数据库系统和数据查询方法 | |
CN105868411B (zh) | 一种非关系型与关系型数据库一体化数据查询方法与系统 | |
Graux et al. | Sparqlgx: Efficient distributed evaluation of sparql with apache spark | |
KR101365464B1 (ko) | 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법 | |
ATE472774T1 (de) | Transparenter edge of network-datencache | |
CN107609091A (zh) | 一种跨库多表联合查询系统及其实现方法 | |
CN103927331B (zh) | 数据查询方法、装置及系统 | |
US20050289174A1 (en) | Method and system for implementing and accessing a virtual table on data from a central server | |
CN107783985B (zh) | 一种分布式数据库查询方法、装置及管理系统 | |
CN104572979A (zh) | 一种处理结构化查询语言sql的方法及装置 | |
CN104182405A (zh) | 一种连接查询方法及装置 | |
US20110289055A1 (en) | Linked Databases | |
CN102331985A (zh) | 网页页面的分片嵌套缓存的处理方法和装置 | |
CN102915382A (zh) | 一种基于索引的数据库的数据查询方法和装置 | |
CN112540982B (zh) | 具有可更新逻辑表指针的虚拟数据库表 | |
CN107943952A (zh) | 一种基于Spark框架进行全文检索的实现方法 | |
CN105740445A (zh) | 一种数据库查询方法及装置 | |
CN108509437A (zh) | 一种ElasticSearch查询加速方法 | |
US11537613B1 (en) | Merge small file consolidation | |
CN106484694B (zh) | 基于分布式数据库的全文搜索方法及系统 | |
CN107239485A (zh) | 数据库操作方法、装置及系统 | |
US11645281B1 (en) | Caching query plans in database systems | |
US8380701B1 (en) | Using a partially built index in a computer database system | |
CN103177046B (zh) | 一种基于行存储数据库的数据处理方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 523808 19th floor, Cloud Computing Center, Chinese Academy of Sciences, No.1 Kehui Road, Songshanhu high tech Industrial Development Zone, Dongguan City, Guangdong Province Patentee after: G-CLOUD TECHNOLOGY Co.,Ltd. Address before: 523808 No. 14 Building, Songke Garden, Songshan Lake Science and Technology Industrial Park, Dongguan City, Guangdong Province Patentee before: G-CLOUD TECHNOLOGY Co.,Ltd. |