基于数据库代理实现数据库分表、分库访问的方案研究

2019-02-14 16:20姬渭孟于雪莲
数字通信世界 2019年9期
关键词:语句应用程序解析

姬渭孟,于雪莲

(1.吉林移动业务支撑中心,长春 130000 ;2.中国联通吉林省公司,长春 130000)

1 方案提出的背景

随着MySQL 开源软件的发展,由于其使用方便、安全维护简单,越来越多的IT 系统开始采用MySQL 作为自己的数据库,存储系统数据。但此数据库产品由于性能、安全等方面限制,一般来说建议单个数据库容量不能过大(一般在1-2T 左右),单个数据库表记录数不能过多(建议单表数量不高于500万),而在IT 系统中,往往有大量的数据,常常单个数据库达到10T 以上,单表超过一亿条。目前通用的方法是采用分库、分表的方式,通过对数据进行分区,将一个大数据库分为多个小的数据库,对于分表的方式,多通过表字段取模等方法,将一个数据库表拆分成多个数据库表。业务系统应用程序在访问和操作数据时,在应用程序侧进行判断,确定要访问和操作的数据库和数据库表,然后进行访问和操作。此方案的问题是应用和数据耦合度高,应用需要清楚了解自己所操作数据的位置(哪个分库、哪个分表),当数据量增加,数据库、数据库表进行扩展时,如增加新数据库、增加新数据库表,都需要对应用程序进行改造,以访问和操作新增加的数据库、新的数据库表,改造的工作量较大、工期长、风险较高。

2 具体方案介绍

本方案提出一种数据库代理装置,它由几部分组成:(1)数据库扫描模块;(2)分库分表策略存储模块;(3)SQL 语句接收和解析模块;(4)SQL 语句执行模块;(5)结果返回模块。

数据库扫描模块通过数据库连接池访问底层的多个数据库,将扫描结果进行分析处理,形成数据库分库、分表信息,将这些信息存储到分库分表策略存储模块。前端应用需要进行SQL 语句执行时,首先访问数据库代理装置的SQL 语句接收和解析模块,提供需要执行的SQL 语句,此模块通过对SQL 语句进行解析,获取要访问的数据库对象信息,通过与分库分表策略存储模块进行交互,转化成具体要访问的实体数据库和表,将解析结果传递给SQL 语句执行模块,通过数据库连接池,连接到具体的分数据库,完成SQL 的执行,将执行结果记录,并通过结果返回模块与前端应用进行交互,将SQL 语句执行结果返回给前端应用。

详细处理步骤如下:

步骤101:为数据库代理装置中数据库扫描模块创建连接池,与底层多个小的分数据库进行链接,能否进行访问。

步骤102:数据库扫描模块通过连接池,能够访问底层的各个小的数据库,并可以访问各个小的数据库的数据库对象(如数据库表)。

步骤103:数据库扫描模块扫描底层数据库,获取分库分表信息。

如一个完整的数据库对象,通过之前人为定义的分库分表路由策略,数据库扫描模块按照策略进行扫描,最终确定每一个数据库对象保存在哪几个数据库,或者保存在哪些分表中,包括数据库名称、分表的名称。

步骤104:数据库扫描模块扫描的结果与上次相比是否发生了变化?如新增数据库、新增数据库对象等。

步骤105:如果发生了变化,则由数据库扫描模块更新分库、分表信息到分库分表策略存储模块。同时也提供手工访问更新的功能。

步骤106:如未发生变化,则记录扫描日志记录后,不再进行处理。

步骤107:当应用程序需要访问数据库执行SQL 语句时,首先访问数据库代理层的SQL 语句接收和解析模块。

步骤108:SQL 语句接收和解析模块接收SQL 语句,应用程序不再需要指明要访问哪个分库、哪个分表,只要指明访问的数据即可。

步骤109:SQL 语句接收和解析模块与分库分表策略存储模块通信,获取实时的数据库分库、分表策略信息。

步骤110:SQL 语句接收和解析模块对SQL 访问数据库及表进行解析匹配,将访问对象转换成具体访问的数据库名、数据库分表名称等信息。

步骤111:SQL 语句接收和解析模块将SQL 解析结果传递给SQL 执行模块。

步骤112:SQL 执行模块通过数据库连接池,访问具体的分数据库和分表,将SQL 语句完整执行,获取最终执行结果。

并将执行结果传递给结果返回模块,由结果返回模块与应用进行通信,并将具体的SQL 执行结果返回给前端应用,由应用进行处理。

本方案的优点:应用程序侧不再需要指定要访问的哪个数据库,哪个具体的表,只需要明确访问的数据内容,由数据库代理层通过内部的相关模块,获取访问数据库、表的策略,获取访问路径,这样当分数据库、数据库分表发生变化时,也不再需要通知应用程序,由策略存储模块提供访问策略,进行访问及操作。

3 结束语

在IT 软件系统中,针对某些数据库表数据量过大的情况,分散存储在不同的数据库,不同的表中。本方法通过提出一套数据库代理装置,有效解决了应用软件与数据库耦合性高的问题。

猜你喜欢
语句应用程序解析
三角函数解析式中ω的几种求法
重点:语句衔接
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
睡梦解析仪
电竞初解析
对称巧用解析妙解
我喜欢
三星电子将开设应用程序下载商店
作文语句实录