CN106503087A - 一种用于分布式数据访问的数据库中间件 - Google Patents
一种用于分布式数据访问的数据库中间件 Download PDFInfo
- Publication number
- CN106503087A CN106503087A CN201610888717.3A CN201610888717A CN106503087A CN 106503087 A CN106503087 A CN 106503087A CN 201610888717 A CN201610888717 A CN 201610888717A CN 106503087 A CN106503087 A CN 106503087A
- Authority
- CN
- China
- Prior art keywords
- database
- middleware
- module
- data
- database middleware
- 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.)
- Pending
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/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于分布式数据访问的数据库中间件,属于数据库访问技术领域。本发明的用于分布式数据访问的数据库中间件包括通信接口模块、SQL解析和路由模块、数据集合处理模块和数据库连接池模块,应用系统通过通信接口模块提供的用户名和密码连接到数据库中间件,数据库中间件根据数据库连接配置文件连接到各数据库;通信接口模块与SQL解析和路由模块、数据集合处理模块分别相连接通信,SQL解析和路由模块、数据集合处理模块分别与数据库连接池模块相连接通信。该发明的用于分布式数据访问的数据库中间件能减少应用系统的响应时间,大大提高应用系统的数据处理能力,提高系统中数据容量,具有很好的推广应用价值。
Description
技术领域
本发明涉及数据库访问技术领域,具体提供一种用于分布式数据访问的数据库中间件。
背景技术
应用程序通过JDBC(Java Database Connectivity standard)或ODBC(OpenDatabase Connectivity)等接口方式连接数据库,并对数据库中的数据进行增删改查等操作。如果应用程序所连接的数据库是单实例,此时应用程序的会话所有的数据操作都通过这一个单实例进行。如果应用程序所连接的数据库是集群(比如ORACLE RAC),应用程序会与集群中的每一个实例建立连接,当应用程序发起一个操作时只会使用集群中的一个实例完成增删改查等操作。也就是说不管是单实例还是集群,应用程序每一次操作只会有一个实例为应用提供数据服务。对于OLTP(On-Line Transaction Processing)类型系统,应用程序每次请求处理的数据量都很小,这种方式没有任何问题;对于OLAP(On-LineAnalytical Processing)类型系统,应用程序每次请求处理的都是大数据量查询请求,需要读取和处理的数据量非常大,这种方式花费的时间非常长,增加了应用系统的响应时间,降低应用系统的数据处理能力。
发明内容
本发明的技术任务是针对上述存在的问题,提供一种能减少应用系统的响应时间,大大提高应用系统的数据处理能力,提高系统中数据容量的用于分布式数据访问的数据库中间件。
为实现上述目的,本发明提供了如下技术方案:
一种用于分布式数据访问的数据库中间件,包括通信接口模块、SQL解析和路由模块、数据集合处理模块和数据库连接池模块,应用系统通过通信接口模块提供的用户名和密码连接到数据库中间件,数据库中间件根据数据库连接配置文件连接到各数据库;通信接口模块与SQL解析和路由模块、数据集合处理模块分别相连接通信,SQL解析和路由模块、数据集合处理模块分别与数据库连接池模块相连接通信,数据库连接池模块向外与各个数据库相连接,建立与各个数据库间的长连接;应用系统与数据库中间件连接后,发起所需操作,SQL解析和路由模块对应用系统发起的操作的SQL语句进行解析,以判断其数据所在的数据库,然后将语句发送给相应数据库执行,数据库中间件等待数据库的返回结果并对返回的结果进行汇总,数据集合处理模块对结果进行集合操作后发送给应用端。
所述数据库中间件通过JDBC方式或者ODBC方式连接到各数据库,在数据库连接配置文件中配置连接到各数据库的JDBC连接串或ODBC连接串,通过数据库连接配置文件配置某表数据在数据库中的分布原则。如:表A主键值为1-100,其中主键值为1-33的记录分布在数据库DB1中,主键值为34-66的记录分布在数据库DB2中,主键值为67-100的记录分布在数据库DB3中。
数据库中间件启动后根据JDBC连接串或者ODBC连接串连接到各数据库,并与数据库间建立长连接。应用系统发起所需操作,当数据需要从多个数据库中读取时,数据库中间件根据数据分布原则去相应数据库中读取数据,数据从各数据库读取后由数据库中间件进行汇总并发送给应用端。
作为优选,还包括监控管理模块,监控管理模块用于管理员准确了解数据库中间件的运行情况。
作为优选,应用系统与数据库中间件连接后,发起所需操作包括增、删、改和查。
与现有技术相比,本发明的用于分布式数据访问的数据库中间件具有以下突出的有益效果:
(一)通过本发明所述的用于分布式数据访问的数据库中间件,可以使表数据按一定规则分布到不同的数据库中,实现数据的并发读写,提高了SQL的执行效率,减少了应用系统的响应时间,大大提高了应用系统数据处理能力,提高了系统中数据容量;
(二)在数据库层可以配置数据库的容灾库,容灾库可以提供只读服务,在这种结构下主库用于数据的写入,容灾库可以用于报表查询,容灾库分担了主库的压力,可以对数据库中间件进行配置,使所有DML操作连接主库,所有报表查询操作连接备库,实现读写的分离;
(三)数据库层可以配置集群模式,数据库中间件对集群中各数据库节点的连接使用主备模式,当主节点发生故障时自动切换到备节点,保证业务的连续性。
附图说明
图1是本发明所述用于分布式数据访问的数据库中间件的结构示意图。
具体实施方式
下面将结合附图和实施例,对本发明的用于分布式数据访问的数据库中间件作进一步详细说明。
实施例
如图1所示,本发明的用于分布式数据访问的数据库中间件包括通信接口模块、SQL解析和路由模块、数据集合处理模块、数据库连接池模块和监控管理模块。应用系统通过通信接口模块提供的用户名和密码连接到数据库中间件,数据库中间件根据数据库连接配置文件连接到各数据库。通信接口模块与SQL解析和路由模块、数据集合处理模块分别相连接通信,SQL解析和路由模块、数据集合处理模块分别与数据库连接池模块相连接通信,数据库连接池模块向外与各个数据库相连接,建立与各个数据库间的长连接。应用系统与数据库中间件连接后,发起所需操作,SQL解析和路由模块对应用系统发起的操作的SQL语句进行解析,以判断其数据所在的数据库,然后将语句发送给相应数据库执行,数据库中间件等待数据库的返回结果并对返回的结果进行汇总,数据集合处理模块对结果进行集合操作后发送给应用端。监控管理模块提供WEB界面用于数据库连接池、数据库中间件内存使用、应用连接、SQL语句执行情况等信息的监控,便于管理员准确了解数据库中间件的运行情况,根据运行情况对数据库中间件参数进行调整。
该数据库中间件对于应用系统来说就是一个数据库,应用系统并不需要知道数据库及数据库中间件之间如何配置,应用系统通过一个用户名和密码连接数据库中间件,本实施例中的用户名和密码分别是myuser和dbpasswd。数据库中间件根据数据库连接配置文件连接到各数据库,orderdb是数据库中间件连接到相应数据库的连接名称。Orderdb与myuser可以相同也可以不相同。
<dbmid">
<user name="myuser">
<property name="password">dbpasswd</property>
<property name="schemas">orderdb</property>
</user>
</dbmid:server>。
应用系统可通过myuser和dbpasswd连接数据库中间件,进而访问orderdb名称表示的数据库下的数据库表、视图等对象。
数据库中间件通过JDBC方式或者ODBC方式连接到各数据库,在数据库连接配置文件中配置连接到各数据库的JDBC连接串或ODBC连接串。如下是配置了连接两个数据库的数据源,数据源名字分别是jdbchost和jdbchost2:
<dbmid>
<dataHost name="orderdb">
<writeHost host="master"
url="jdbc:oracle:thin:@192.168.21.112:1521:dbmida" user="root"
password="zaq1xsw2cde3"></writeHost>
</dataHost>
<dataHost name="jdbchost2">
<writeHost host="master"
url="jdbc:oracle:thin:@192.168.21.113:1521:mycatb" user="root"
password="zaq1xsw2cde3"></writeHost>
</dataHost>
</dbmid>。
通过数据库连接配置文件配置某表数据在数据库中的分布原则,数据库中间件根据这个分布原则去个数据库中访问相应表数据。
<dbmid>
<tableRule name="rule1">
<columns>ID</columns>
<dpmethod>hash</dpmethod>
</tableRule>
<dbmid>
上述分布策略名称为rule1,表用于数据分布的列为ID,对ID列做HASH计算后判断其所属的数据库。HASH算法只是众多数据分布的一种。
如:表A主键值为1-100,其中主键值为1-33的记录分布在数据库DB1中,主键值为34-66的记录分布在数据库DB2中,主键值为67-100的记录分布在数据库DB3中。
该数据库中间件是独立于数据库和应用系统的。数据库中间件通过配置文件配置一个供应用系统连接访问的用户,该用户对应一个后台数据库真实存在的数据库用户。用户、数据源和分布策略之间具有一定的对应关系,mytb1和mytb2为需要分布访问的表,这两张表都使用rule1做为分布策略,表数据在jdbchost和jdbchost2两个数据源间进行数据分布:
<dbmid>
<schema name="orderdb">
<table name="mytb1">
<rule>rule1</rule>
<datahost>jdbchost,jdbchost2</datahost>
</table>
<table name="mytb2">
<rule>rule1</rule>
<datahost>jdbchost,jdbchost2</datahost>
</table>
</schema>
</dbmid>。
数据库中间件启动后会根据数据库连接配置文件中配置的数据源建立与各个数据库的长连接,连接池有最小连接数、最大连接数等属性,数据库中间件启动后根据最小连接数创建连接池,应用系统发起连接后会从连接池中取一空闲连接给其使用,使用完毕后释放重新放回连接池,当连接数量不够用时逐渐增加连接直到达到最大连接数。
该数据库中间件可以连接各种不同类型的数据库,比如:DB2、ORACLE、MYSQL等,各种数据库间的SQL语句各有不同,SQL语句解析和路由模块自动修改前台发起的SQL语句以适应不同类型的数据库。SQL语句解析和路由模块对SQL语句中的条件进行解析,以判断其数据所在的数据库,然后将语句发送给相应数据库执行。
各数据库将返回的数据汇集到数据库中间内存中,数据库中间件对其进行集合处理,比如:排序、分组等。前台发起的SQL语句可能带有order by或group by等关键字,当数据从各数据源返回到数据库中间件后,数据库中间件给应用系统返回的数据需要满足order by或者group by等要求,所以数据库中间件需要对数据进行order by或者group by操作。如果发起的SQL语句不带有order by或者group by这样的集合操作,数据从数据源返回给数据库中间件后,数据库中间件不会进行集合操作,而是将数据拼合后直接返回给应用系统。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (3)
1.一种用于分布式数据访问的数据库中间件,其特征在于:包括通信接口模块、SQL解析和路由模块、数据集合处理模块和数据库连接池模块,应用系统通过通信接口模块提供的用户名和密码连接到数据库中间件,数据库中间件根据数据库连接配置文件连接到各数据库;通信接口模块与SQL解析和路由模块、数据集合处理模块分别相连接通信,SQL解析和路由模块、数据集合处理模块分别与数据库连接池模块相连接通信,数据库连接池模块向外与各个数据库相连接,建立与各个数据库间的长连接;应用系统与数据库中间件连接后,发起所需操作,SQL解析和路由模块对应用系统发起的操作的SQL语句进行解析,以判断其数据所在的数据库,然后将语句发送给相应数据库执行,数据库中间件等待数据库的返回结果并对返回的结果进行汇总,数据集合处理模块对结果进行集合操作后发送给应用端。
2.根据权利要求1所述的用于分布式数据访问的数据库中间件,其特征在于:还包括监控管理模块,监控管理模块用于管理员准确了解数据库中间件的运行情况。
3.根据权利要求1或2所述的用于分布式数据访问的数据库中间件,其特征在于:应用系统与数据库中间件连接后,发起所需操作包括增、删、改和查。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610888717.3A CN106503087A (zh) | 2016-10-12 | 2016-10-12 | 一种用于分布式数据访问的数据库中间件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610888717.3A CN106503087A (zh) | 2016-10-12 | 2016-10-12 | 一种用于分布式数据访问的数据库中间件 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106503087A true CN106503087A (zh) | 2017-03-15 |
Family
ID=58294833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610888717.3A Pending CN106503087A (zh) | 2016-10-12 | 2016-10-12 | 一种用于分布式数据访问的数据库中间件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106503087A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943868A (zh) * | 2017-11-10 | 2018-04-20 | 顺丰科技有限公司 | 支持系统信息友好查看的数据库中间件的方法及设备 |
CN108197277A (zh) * | 2018-01-09 | 2018-06-22 | 福建星瑞格软件有限公司 | 一种统一的数据库管理查询方法以及装置 |
CN109241037A (zh) * | 2018-08-28 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种实现数据库处理的方法、装置、设备及存储介质 |
CN110019444A (zh) * | 2017-09-08 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种操作请求处理方法、装置、设备及系统 |
CN110019517A (zh) * | 2017-11-14 | 2019-07-16 | 顺丰科技有限公司 | 一种数据库中间件动态配置方法、系统、设备、存储介质 |
CN110688397A (zh) * | 2019-07-30 | 2020-01-14 | 民生科技有限责任公司 | 一种基于sql的分布式数据统一访问系统及方法 |
WO2020015495A1 (zh) * | 2018-07-16 | 2020-01-23 | 中兴通讯股份有限公司 | 访问异构数据库的方法、装置、设备、插件及存储介质 |
CN111459677A (zh) * | 2020-04-01 | 2020-07-28 | 北京顺达同行科技有限公司 | 请求分配方法、装置、计算机设备和存储介质 |
CN111949721A (zh) * | 2020-08-25 | 2020-11-17 | 深圳市广通软件有限公司 | 实现Web数据库快速访问的方法、系统和存储介质 |
CN113468209A (zh) * | 2021-07-27 | 2021-10-01 | 广西电网有限责任公司 | 一种电网监控系统高速内存数据库访问方法 |
CN114254032A (zh) * | 2022-02-25 | 2022-03-29 | 成都思维世纪科技有限责任公司 | 分布式共享连接的资产静态数据采集方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840348A (zh) * | 2009-12-24 | 2010-09-22 | 陕西移数通电讯有限公司 | 数据库中间件系统 |
CN102609463A (zh) * | 2012-01-13 | 2012-07-25 | 广东电网公司电力科学研究院 | 一种基于准实时平台的数据集群管理系统 |
WO2016095216A1 (en) * | 2014-12-19 | 2016-06-23 | Microsoft Technology Licensing, Llc. | Graph processing in database |
-
2016
- 2016-10-12 CN CN201610888717.3A patent/CN106503087A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840348A (zh) * | 2009-12-24 | 2010-09-22 | 陕西移数通电讯有限公司 | 数据库中间件系统 |
CN102609463A (zh) * | 2012-01-13 | 2012-07-25 | 广东电网公司电力科学研究院 | 一种基于准实时平台的数据集群管理系统 |
WO2016095216A1 (en) * | 2014-12-19 | 2016-06-23 | Microsoft Technology Licensing, Llc. | Graph processing in database |
Non-Patent Citations (2)
Title |
---|
叶炜: ""分布式数据库中间件中的查询优化"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
宿方文: ""分布式数据库中间件server层的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019444B (zh) * | 2017-09-08 | 2023-07-25 | 阿里云计算有限公司 | 一种操作请求处理方法、装置、设备及系统 |
CN110019444A (zh) * | 2017-09-08 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种操作请求处理方法、装置、设备及系统 |
CN107943868A (zh) * | 2017-11-10 | 2018-04-20 | 顺丰科技有限公司 | 支持系统信息友好查看的数据库中间件的方法及设备 |
CN110019517A (zh) * | 2017-11-14 | 2019-07-16 | 顺丰科技有限公司 | 一种数据库中间件动态配置方法、系统、设备、存储介质 |
CN108197277A (zh) * | 2018-01-09 | 2018-06-22 | 福建星瑞格软件有限公司 | 一种统一的数据库管理查询方法以及装置 |
WO2020015495A1 (zh) * | 2018-07-16 | 2020-01-23 | 中兴通讯股份有限公司 | 访问异构数据库的方法、装置、设备、插件及存储介质 |
CN109241037A (zh) * | 2018-08-28 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种实现数据库处理的方法、装置、设备及存储介质 |
CN110688397A (zh) * | 2019-07-30 | 2020-01-14 | 民生科技有限责任公司 | 一种基于sql的分布式数据统一访问系统及方法 |
CN110688397B (zh) * | 2019-07-30 | 2022-05-17 | 民生科技有限责任公司 | 一种基于sql的分布式数据统一访问系统及方法 |
CN111459677A (zh) * | 2020-04-01 | 2020-07-28 | 北京顺达同行科技有限公司 | 请求分配方法、装置、计算机设备和存储介质 |
CN111949721A (zh) * | 2020-08-25 | 2020-11-17 | 深圳市广通软件有限公司 | 实现Web数据库快速访问的方法、系统和存储介质 |
CN113468209A (zh) * | 2021-07-27 | 2021-10-01 | 广西电网有限责任公司 | 一种电网监控系统高速内存数据库访问方法 |
CN114254032A (zh) * | 2022-02-25 | 2022-03-29 | 成都思维世纪科技有限责任公司 | 分布式共享连接的资产静态数据采集方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106503087A (zh) | 一种用于分布式数据访问的数据库中间件 | |
US11461356B2 (en) | Large scale unstructured database systems | |
US10579634B2 (en) | Apparatus and method for operating a distributed database with foreign tables | |
US20220405277A1 (en) | Joining large database tables | |
CN106547796B (zh) | 数据库的执行方法及装置 | |
JP6434960B2 (ja) | フローベースのetlおよびエンティティリレーションシップベースのetlの組合せのサポート | |
US20040225865A1 (en) | Integrated database indexing system | |
JP2001051879A (ja) | 非関係データベースへの改良されたアクセスのための方法およびシステム | |
WO2015062181A1 (zh) | 用于实现多源异构数据资源自动同步的方法 | |
US20080250073A1 (en) | Sql change tracking layer | |
WO2018036324A1 (zh) | 一种智慧城市信息共享的方法和装置 | |
WO2023087673A1 (zh) | 一种层次数据检索方法、装置和设备 | |
CN103455540A (zh) | 从数据仓库模型生成内存模型的系统和方法 | |
CN110688397B (zh) | 一种基于sql的分布式数据统一访问系统及方法 | |
US20120254214A1 (en) | Distributed system having a shared central database | |
US9971820B2 (en) | Distributed system with accelerator-created containers | |
US9171051B2 (en) | Data definition language (DDL) expression annotation | |
CN109947741B (zh) | 一种物项属性参数的建模和存储方法 | |
Kan et al. | Topology modeling and analysis of a power grid network using a graph database | |
CN104462185A (zh) | 一种基于混合结构的数字图书馆云存储系统 | |
CN103345502A (zh) | 分布式数据库的事务处理方法和系统 | |
CN103559189A (zh) | 基于元数据集成模型的电力仿真培训资源管理系统及方法 | |
CN114218218A (zh) | 基于数据仓库的数据处理方法、装置、设备及存储介质 | |
CN112131231A (zh) | 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 | |
JP2001350656A (ja) | 異種データソース統合アクセス方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170315 |