CN106326256A - 一种数据库访问方法及装置 - Google Patents
一种数据库访问方法及装置 Download PDFInfo
- Publication number
- CN106326256A CN106326256A CN201510361770.3A CN201510361770A CN106326256A CN 106326256 A CN106326256 A CN 106326256A CN 201510361770 A CN201510361770 A CN 201510361770A CN 106326256 A CN106326256 A CN 106326256A
- Authority
- CN
- China
- Prior art keywords
- access
- database
- interface
- target database
- application program
- 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.)
- Withdrawn
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
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据库访问方法,包括以下步骤:接收应用程序发送的对数据库系统中目标数据库的访问请求;从接口层中预设的各类数据库对应的访问接口中选择该目标数据库对应的访问接口;根据所述访问请求,调用所选择的访问接口对该目标数据库执行访问操作。本发明还提供一种数据库访问装置。利用本发明可以使应用程序的访问简单化,保证数据库系统升级时的稳定性和完整性。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据库访问方法及装置。
背景技术
在通信、互联网、计算机等领域,随着处理的数据量与日俱增,目前大数据数据库已经得到广泛的使用。从Oracle、Sybase IQ到Hive、Spark,越来越多的数据库被应用在数据库系统中,成为数据库系统中非常重要的一个部分,为各类数据提供了保存、查询、分析等访问方式。
当数据库系统需要升级,例如在数据库系统中接入新的数据库,或是替换原有的数据库时,保证数据库系统的完整性和稳定性是对升级操作提出的一大挑战。为了使数据库系统能够兼容不同种类的数据库,目前的做法是当在数据库系统中新增一种数据库时,需要在数据库系统中新增一套与新增数据库适配的接口,或将与替换前的数据库适配的接口修改成与替换后的数据库适配的接口,从而完成数据库系统的升级。这样不可避免地会对数据库系统进行大规模的改动,从而破坏了原有系统的完整性,为系统的稳定性埋下了隐患。
例如图1所示,数据库系统中原先仅包括数据库Sybase IQ,CPP(C++)应用程序通过ODBC(Open Database Connectivity,开放数据库互连)接口访问Sybase IQ。Sybase IQ是一种集中存储的列式数据库。随着数据量越来越大,集中存储无法满足海量数据的存储需求,需要在数据库系统中接入一大数据数据库Hive。然而采用ODBC接口访问Hive不太稳定,而采用JDBC(Java Data Base Connectivity,Java数据库互连)接口访问Hive是比较稳定的。因此,CPP应用程序访问JDBC接口时需要增加一个CPP调用Java程序的转接接口。CPP应用程序既需要访问ODBC接口,也需要访问CPP转JDBC接口,而这两种接口的调用方式不一致,因此CPP应用程序需要关注接口层的一些技术细节,导致应用层访问越来越复杂。
发明内容
有鉴于此,有必要提供一种数据库访问方法及装置,可以通过独立于数据库系统的接口层访问数据库系统中各数据库,屏蔽应用程序对不同种类数据库的访问差异,在数据库系统升级时,可以保证系统的稳定性和完整性,且应用程序无需感知,从而使应用程序的访问简单化。
一种数据库访问方法,包括以下步骤:接收应用程序发送的对数据库系统中目标数据库的访问请求;从接口层中预设的各类数据库对应的访问接口中选择该目标数据库对应的访问接口;根据所述访问请求,调用所选择的访问接口对该目标数据库执行访问操作。
一种数据库访问装置,包括:接收模块,用于接收应用程序发送的对数据库系统中目标数据库的访问请求;选择模块,用于从接口层中预设的各类数据库对应的访问接口中选择该目标数据库对应的访问接口;访问模块,用于根据所述访问请求,调用所选择的访问接口对该目标数据库执行访问操作。
上述技术方案的有益效果是:数据库访问方法及装置,在接收到应用程序发送的对数据库系统中目标数据库的访问请求时,从接口层中预设的各类数据库对应的访问接口中选择该目标数据库对应的访问接口,然后根据所述访问请求调用所选择的访问接口对该目标数据库执行访问操作,因此可以通过独立于数据库系统的接口层访问数据库系统中各数据库,屏蔽应用程序对不同种类数据库的访问差异,在数据库系统升级时,可以保证系统的稳定性和完整性,且应用程序无需感知,从而使应用程序的访问简单化,减轻应用程序开发的工作量。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1为现有技术中数据库系统升级后对数据库的访问方式的示例图。
图2为本发明第一实施例提供的数据库访问方法的流程图。
图3为本发明第一实施例提供的数据库访问方法的应用示例图。
图4为本发明第三实施例提供的数据库访问方法的流程图。
图5为本发明第三实施例提供的数据库访问方法的应用示例图。
图6为本发明第四实施例提供的数据库访问装置的框图。
具体实施方式
为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如后。
第一实施例
参阅图2所示,为本发明第一实施例提供的数据库访问方法的流程图。在本实施例中,该方法包括以下步骤:
步骤S1,接收应用程序发送的对数据库系统中目标数据库的访问请求;
步骤S2,从接口层中预设的各类数据库对应的访问接口中选择该目标数据库对应的访问接口;
步骤S3,根据所述访问请求,调用所选择的访问接口对该目标数据库执行访问操作。
按照上述的数据库访问方法,可以通过独立于数据库系统的接口层访问数据库系统中各数据库,屏蔽应用层对不同种类数据库的访问差异,在数据库系统升级时,可以保证系统的稳定性和完整性,且应用程序无需感知,从而使应用程序的访问简单化,减轻应用程序开发的工作量。
在一些实例中,上述方法的各步骤的实现细节如下:
步骤S1所述的应用程序例如为CPP程序、Java应用程序等。该应用程序为应用层中的应用程序之一。该应用层中包括的一个或多个应用程序可以通过所述接口层访问数据库系统中的各个相同种类或不同种类的数据库。其中,该应用层、接口层及数据库系统的架构如图3所示。
所述接口层独立于所述数据库系统设置。该接口层中预设有各类数据库对应的访问接口,该各类数据库对应的访问接口根据各类数据库的访问特性预设和优化,并且可以根据需要灵活地更新,例如新增某类数据库对应的访问接口,或修改某类数据库对应的访问接口。具体地,在一些实例中,如图3所示,数据库系统中包括Hive、Impala、Spark SQL、Oracle和Sybase IQ五类数据库,根据该五类数据库的访问特性,可以将其对应的访问接口预设如下:
预设Hive的访问接口为Hive JDBC;
预设Impala的访问接口为Impala JDBC;
预设Spark SQL的访问接口为Hive Context;
预设Oracle的访问接口为Oracle ODBC;及
预设Sybase IQ的访问接口为Sybase IQ ODBC。
步骤S1所述的访问请求例如可以是对目标数据库中数据的查询、保存或分析等请求。当应用层中的一个或多个程序需要查询或分析目标数据库中的数据时,或需要将数据保存至目标数据库时,可向接口层发送所述访问请求。
步骤S2根据所述的访问请求,得知所需访问的目标数据库,从而从接口层中找出预设的该目标数据库对应的访问接口。具体地,可以根据所述访问请求获取目标数据库的标识,例如ID号等,并将该标识与数据库系统中各个数据库的标识进行比对,从而找出目标数据库。
步骤S3根据所述访问请求,调用所选择的访问接口对该目标数据库执行访问操作。此外,步骤S3还可以调用所选择的访问接口获取对目标数据库的访问结果,并将该访问结果发送至所述应用程序。具体地,例如,若该访问请求为请求将数据保存到目标数据库中,则调用所选择的访问接口将该数据库保存至目标数据库,所述访问结果可以为该数据保存成功的信息。若该访问请求为请求查询目标数据库中的数据,则调用所选择的访问接口在目标数据库中查询该数据,并将查询得到的该数据作为访问结果,然后通过所选择的访问接口获取该访问结果,并将该访问结果发送至所述应用程序。若该访问请求为请求分析目标数据库中的数据,则调用所选择的访问接口在目标数据库中分析该数据,并将分析结果作为访问结果,然后通过所选择的访问接口获取该访问结果,并将该访问结果发送至所述应用程序,等等。
综上所述,通过本发明实施例提供的数据库访问方法,应用层与数据库系统通过独立于数据库系统的接口层间接进行交互,可以屏蔽应用层对不同种类数据库的访问差异。在数据库系统升级时,例如将图3中的Hive替换为Impala、Spark SQL,或将Sybase IQ替换为Oracle时,应用层的代码不需要修改,从而应用层无需感知,不仅使应用层的访问简单化,还可以保证系统的稳定性和完整性。
第二实施例
本发明第二实施例提供一种数据库访问方法,其相较于第一实施例提供的数据库访问方法,进一步提出:
所述步骤S1中接收应用程序发送的对数据库系统中目标数据库的访问请求可通过编程语言无关的数据交换协议实现。具体地,该编程语言无关的数据交换协议可以为基于超文本传输协议(HTTP,HyperText TransferProtocol)的简单对象访问协议(SOAP,Simple Object Access Protoco)。同样的,所述访问结果通过所选择的访问接口发送至应用程序也通过所述编程语言无关的数据交换协议实现。
由于应用层与通用接口层通过所述编程语言无关的数据交换协议,例如SOAP实现交互,因此应用层的应用程序可以为任何主流编程语言开发的应用程序,以任意一种编程语言按照约定的SOAP访问数据库系统,从而跨越编程语言,穿越防火墙。
第三实施例
参阅图4所示,为本发明第三实施例提供的数据库访问方法的流程图。在本实施例中,将第一实施例和第二实施例所述的数据库访问方法应用于一种大数据数据库(例如Hive)与传统数据库(例如Sybase IQ)整合的应用场景。具体地,应用层中的应用程序通过接口层向Hive下发数据分析请求,Hive接收到该数据分析请求后,将分析结果返回给应用层。应用程序在接收到该分析结果后,通过接口层向Sybase IQ下发数据保存请求,Sybase IQ接收到该数据保存请求后,保存该分析结果。此外,若应用程序再有相同的所述数据分析请求,可以直接访问Sybase IQ,从Sybase IQ中获取所述分析结果。其中,应用层、接口层与Hive和Sybase IQ的架构示例如图5所示。
具体而言,本实施例提供的数据库访问方法包括以下步骤:
步骤S11,通过SOAP接收应用程序发送的对数据库系统中Hive的数据分析请求;此时,应用程序作为SOAP客户端,接口层作为SOAP服务端;
步骤S12,从接口层中预设的各类数据库对应的访问接口中选择Hive对应的Hive JDBC接口;
步骤S13,根据该数据分析请求,通过该Hive JDBC接口对Hive进行数据分析,通过Hive JDBC接口得到分析结果,并将该分析结果返回至应用程序;
步骤S14,通过SOAP接收应用程序发送的将所述分析结果保存至数据库系统中Sybase IQ的数据保存请求;
步骤S15,从接口层中预设的各类数据库对应的访问接口中选择Sybase IQ对应的Sybase IQ ODBC接口;
步骤S16,根据该数据保存请求,通过该Sybase IQ ODBC接口将所述分析结果保存至Sybase IQ,最终将分析结果持久化到Sybase IQ。
在本实施例中,数据库系统中整合有Hive和Sybase IQ两种数据库,这两种数据库对应的访问接口不同,分别为Hive JDBC接口和Sybase IQODBC接口。然而,通过将该Hive JDBC接口和Sybase IQ ODBC接口统一预设在独立的接口层中,应用程序可以从Hive中提取数据并存放到SybaseIQ中。应用程序与数据库系统之间通过接口层间接进行交互,从而可以屏蔽应用层对不同种类数据库的访问差异。对应用层来说,所使用的是一种通用的数据库访问通道。
第四实施例
参阅图6所示,本发明第四实施例提供一种数据库访问装置100,其包括接收模块101、选择模块102和访问模块103。该数据库访问装置100可以嵌入或外设于所述的接口层。可以理解,上述的各模块是指计算机程序或者程序段,用于执行某一项或多项特定的功能。此外,上述各模块的区分并不代表实际的程序代码也必须是分开的。
接收模块101,用于接收应用程序发送的对数据库系统中目标数据库的访问请求。所述接收模块101可以通过编程语言无关的数据交换协议实现接收应用程序发送的对数据库系统中目标数据库的访问请求。所述编程语言无关的数据交换协议可以为简单对象访问协议(SOAP)。
选择模块102,用于从接口层中预设的各类数据库对应的访问接口中选择该目标数据库对应的访问接口。
访问模块103,用于根据所述访问请求,调用所选择的访问接口对该目标数据库执行访问操作。所述访问模块103还可以将访问结果通过所选择的访问接口发送至所述应用程序。
上述模块的具体实施细节可参考本发明第一实施例和第二实施例提供的数据库访问方法中的描述,此处不再赘述。
本实施例提供的数据库访问装置100,可以通过独立于数据库系统的接口层访问数据库系统中各数据库,屏蔽应用程序对不同种类数据库的访问差异,在数据库系统升级时,可以保证系统的稳定性和完整性,且应用层无需感知,从而使应用层的访问简单化。此外,由于应用层与通用接口层通过所述编程语言无关的数据交换协议,因此应用层的应用程序可以为任何主流编程语言开发的应用程序,以任意一种编程语言按照约定的协议访问数据库系统,从而跨越编程语言,穿越防火墙。
此外,本发明实施例还提供一种计算机可读存储介质,其内存储有计算机可执行指令,上述的计算机可读存储介质例如为非易失性存储器例如光盘、硬盘、或者闪存。上述的计算机可执行指令用于让计算机或者类似的运算装置完成上述的数据库访问方法中的各种操作。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明,任何本领域技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简介修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (8)
1.一种数据库访问方法,其特征在于,该方法包括以下步骤:
接收应用程序发送的对数据库系统中目标数据库的访问请求;
从接口层中预设的各类数据库对应的访问接口中选择该目标数据库对应的访问接口;
根据所述访问请求,调用所选择的访问接口对该目标数据库执行访问操作。
2.如权利要求1所述的数据库访问方法,其特征在于,所述接收应用程序发送的对数据库系统中目标数据库的访问请求通过编程语言无关的数据交换协议实现。
3.如权利要求2所述的数据库访问方法,其特征在于,所述编程语言无关的数据交换协议为简单对象访问协议。
4.如权利要求1所述的数据库访问方法,其特征在于,所述根据所述访问请求对该目标数据库执行访问操作的步骤还包括:
调用所选择的访问接口获取对目标数据库的访问结果,并将该访问结果发送至所述应用程序。
5.一种数据库访问装置,其特征在于,该装置包括:
接收模块,用于接收应用程序发送的对数据库系统中目标数据库的访问请求;
选择模块,用于从接口层中预设的各类数据库对应的访问接口中选择该目标数据库对应的访问接口;
访问模块,用于根据所述访问请求,调用所选择的访问接口对该目标数据库执行访问操作。
6.如权利要求5所述的数据库访问装置,其特征在于,所述接收模块,用于通过编程语言无关的数据交换协议接收应用程序发送的对数据库系统中目标数据库的访问请求。
7.如权利要求6所述的数据库访问装置,其特征在于,所述编程语言无关的数据交换协议为简单对象访问协议。
8.如权利要求5所述的数据库访问装置,其特征在于,所述访问模块还用于:
调用所选择的访问接口获取对目标数据库的访问结果,并将该访问结果发送至所述应用程序。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510361770.3A CN106326256A (zh) | 2015-06-26 | 2015-06-26 | 一种数据库访问方法及装置 |
PCT/CN2016/075801 WO2016206405A1 (zh) | 2015-06-26 | 2016-03-07 | 一种数据库访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510361770.3A CN106326256A (zh) | 2015-06-26 | 2015-06-26 | 一种数据库访问方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106326256A true CN106326256A (zh) | 2017-01-11 |
Family
ID=57586100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510361770.3A Withdrawn CN106326256A (zh) | 2015-06-26 | 2015-06-26 | 一种数据库访问方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106326256A (zh) |
WO (1) | WO2016206405A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804087A (zh) * | 2017-04-26 | 2018-11-13 | 武汉斗鱼网络科技有限公司 | 一种动态切换第三方程序库的实现方法及实现装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112307122B (zh) * | 2020-10-30 | 2023-06-02 | 杭州海康威视数字技术股份有限公司 | 一种基于数据湖的数据管理系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661494A (zh) * | 2009-09-29 | 2010-03-03 | 莱芜钢铁集团有限公司 | 一种分布式中间件与数据库数据交互方法 |
CN101739460A (zh) * | 2009-12-16 | 2010-06-16 | 中国科学院对地观测与数字地球科学中心 | 基于网格的空间数据源统一化服务系统和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314375A (zh) * | 2011-03-18 | 2012-01-11 | 北京神州数码思特奇信息技术股份有限公司 | 一种异构数据库存储统一接口和数据库访问方法 |
US8745040B2 (en) * | 2011-06-27 | 2014-06-03 | Bmc Software, Inc. | Service context |
CN103902286A (zh) * | 2014-03-12 | 2014-07-02 | 郑州轻工业学院 | 基于soa的层级式多源数据融合方法 |
-
2015
- 2015-06-26 CN CN201510361770.3A patent/CN106326256A/zh not_active Withdrawn
-
2016
- 2016-03-07 WO PCT/CN2016/075801 patent/WO2016206405A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661494A (zh) * | 2009-09-29 | 2010-03-03 | 莱芜钢铁集团有限公司 | 一种分布式中间件与数据库数据交互方法 |
CN101739460A (zh) * | 2009-12-16 | 2010-06-16 | 中国科学院对地观测与数字地球科学中心 | 基于网格的空间数据源统一化服务系统和方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804087A (zh) * | 2017-04-26 | 2018-11-13 | 武汉斗鱼网络科技有限公司 | 一种动态切换第三方程序库的实现方法及实现装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016206405A1 (zh) | 2016-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11064053B2 (en) | Method, apparatus and system for processing data | |
US8418142B2 (en) | Architecture for data validation | |
US20120310934A1 (en) | Historic View on Column Tables Using a History Table | |
US20090327311A1 (en) | Systems and methods for implementing a tenant space in a provider-tenant environment | |
US20180220292A1 (en) | Blockchain-Based Subscription Management | |
US8630969B2 (en) | Systems and methods for implementing business rules designed with cloud computing | |
US20080162660A1 (en) | Systems and methods for accessing a shared space in a provider-tenant environment by using middleware | |
CN103942225A (zh) | 一种混合型应用客户端的资源调用方法、客户端及系统 | |
EP2778968B1 (en) | Mobile telecommunication device remote access to cloud-based or virtualized database systems | |
CN101727475B (zh) | 一种获取数据库访问过程的方法、装置及系统 | |
CN114064690A (zh) | 数据处理方法及装置 | |
US11665247B2 (en) | Resource discovery agent computing device, software application, and method | |
CN108228799A (zh) | 对象索引信息的存储方法及装置 | |
US20180084075A1 (en) | Request cache to improve web applications performance | |
US10997170B2 (en) | Local database cache | |
CN105867928A (zh) | 一种在指定分布式系统中接入指定计算模型的方法和装置 | |
CN106326256A (zh) | 一种数据库访问方法及装置 | |
US20140156696A1 (en) | Dynamic generation of database queries in query builders | |
CN105868384A (zh) | 一种更新共享数据的方法、装置及系统 | |
US9384284B2 (en) | Value-added usage of process-oriented extension fields in business mashups | |
US20110099477A1 (en) | Systems and methods for dynamic historical browsing | |
Samuel et al. | Dawes: datawarehouse fed with web services | |
CN114020319A (zh) | 接口调用的方法、装置、服务器及计算机可读存储介质 | |
CN113688151A (zh) | 基于虚拟数据库的数据访问方法、装置、系统、设备和介质 | |
US9569482B2 (en) | Transforming default values dynamically |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170111 |