基于分库分表的数据库操作装置及方法制造方法及图纸

技术编号:13989695 阅读:54 留言:0更新日期:2016-11-13 15:21
本发明专利技术公开了一种基于分库分表的数据库操作装置及方法,其中,所述装置包括:加载模块,用于加载配置文件和数据库脚本;处理模块,用于根据所述配置文件为目标数据库创建线程池和数据库连接池,其中,所述线程池包括数据库级线程池、数据库表级线程池和篮子级线程池;执行模块,用于通过所述线程池和数据库连接池,根据所述目标数据库对应的数据库脚本执行针对所述目标数据库的数据库操作。采用本发明专利技术,能够支持在实施分库分表策略的背景下,对各个分库的高效且可配置地变更及维护。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,更为具体而言,涉及一种基于分库分表的数据库操作装置及方法
技术介绍
当数据库中存在某个表的数据量过大,比如千万甚至上亿条记录时,此时数据库操作会十分耗时。为了支持高并发、大数据量的访问场景,也为了提高数据库访问效率、减少数据库访问时间,现有技术提出了数据库的分库分表策略,以满足并发访问的非功能指标。而与此同时,分库分表策略的实施对数据库的变更和管理提出了新的挑战。简单来讲,数据库的分库分表就是将原有的存储大量数据的表,按照某种规则,拆分成多个小数据量的表,并存储在多个数据库中。传统数据库的维护变更是针对单一数据源进行的。而针对分库分表场景,需要对多数据源的所有篮子进行相同的变更操作,工作量是成倍增长的。因此,在分库分表总体策略的影响下,业界迫切需要一种可以支持分库分表的数据库操作装置,来实现对数据库的维护和基本操作。
技术实现思路
鉴于现有技术的上述缺陷,本专利技术实施方式提供了一种基于分库分表的数据库操作装置及方法,能够支持在实施分库分表策略的背景下,对各个分库的高效且可配置地变更及维护。具体地,本专利技术实施方式提供了一种基于分库分表的数据库操作装置,其包括:加载模块,用于加载配置文件和数据库脚本;处理模块,用于根据所述配置文件为目标数据库创建线程池和数据库连接池,其中,所述线程池包括数据库级线程池、数据库表级线程池和篮子级线程池;执行模块,用于通过所述线程池和数据库连接池,根据所述目标数据库对应的数据库脚本执行针对所述目标数据库的数据库操作。相应地,本专利技术实施方式还提供了一种基于分库分表的数据库操作方法,其包括:加载配置文件和数据库脚本;根据所述配置文件为目标数据库创建线程池和数据库连接池,其中,所述线程池包括数据库级线程池、数据库表级线程池和篮子级线程池;通过所述线程池和数据库连接池,根据所述目标数据库对应的数据库脚本执行针对所述目标数据库的数据库操作。采用本专利技术实施方式,具有以下优点:1)能够支持在实施分库分表策略的背景下,对各个分库的变更及维护。具体而言,通过加载配置文件和数据库脚本并执行数据库脚本,可以在各个分库中,对每个篮子执行相应脚本的变更内容。2)通过数据库连接池和多线程技术,可以并发执行所有分库、分表的数据库变更,保证了一定的性能,提升了整体的执行效率。3)通过更改配置文件和数据库脚本,可以灵活地变更或修改具体的数据库操作,提高数据库操作装置的易用性。4)通过提供丰富的日志记录功能,不仅包括重跑日志,还包括工具执行过程信息,语句日志,语句结果日志,基于库和篮子的统计分析日志等,便于追踪问题和掌握执行情况。5)提供了失败或出错的重跑功能。当执行过程中,对某个脚本在某个库的某个篮子做变更时,遇到环境或脚本错误导致变更提交失败的情况下,不仅可以记录成功执行的库和篮子,还可以记录执行错误的篮子和对应的脚本信息。而通过重跑指令,可以针对失败内容进行重跑或多次重跑。附图说明图1是根据本专利技术实施例的一种基于分库分表的数据库操作装置的框图的一例;图2是图1所示数据库操作装置的处理模块的框图的一例;图3是图1所示数据库操作装置的执行模块的框图的一例;图4是根据本专利技术实施例的一种基于分库分表的数据库操作方法的流程示意图。具体实施方式为了便于理解本专利技术技术方案的各个方面、特征以及优点,下面结合附图对本专利技术进行具体描述。应当理解,下述的各种实施方式只用于举例说明,而非用于限制本专利技术的保护范围。首先,对本专利技术中涉及或可能涉及的名词或术语进行解释。分库分表策略:数据库的分库分表,简单来说就是将原有的存储大量数据的表,按照某种规则,拆分成多个小数据量的表,并存储在多个数据库中。在执行数据库操作时,根据传入的key(键)值,按照某种计算规则,计算出要访问的是哪个数据库的哪张数据表。篮子(bucket):按照分库分表策略,数据模型的设计是面向具体应用的,当实施时,需要把同一个模型部署在多个数据库的多个相同表结构的不同表上。这些不同的表的命名遵循一定的规则,即以相同的模型名称作前缀,以不同的编号作结尾。在这种规则下,可以看作不同的数据库表在同一个数据库里会“存储”到同一个“篮子”里。这里,对于同一张数据库表,在不同数据库中的每一个单位个体所对应的编号称之为篮子号。分库分表工具:虽然分库分表策略的应用可以提高系统并发吞吐量,但带来的数据库表维护工作量也是巨大的,分库分表工具就应运而生了。具体来说,分库分表策略从设计角度要求同一份代码对应到相同表结构的不同数据库的不同表上。而当发生数据库变更时,同一个变更要在所有对应的篮子上。如果没有专门的工具,难以保证变更的有效性和同步性。数据库连接池:数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。线程池:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。Spring:Spring是一个轻量级Java开发框架,为解决企业用开发的复杂性而创建。具有分层架构、控制反转、面向切面等特点。OpenFramework:建行新一代提出的基于Spring框架打造的开放环境通用技术框架(JAVA部分),也是各产品和平台的核心框架。交换区:建行框架openframework中的一个组件,是应用服务在每次被访问时创建的共享内存,当创建后随着生命周期可被其他组件所共享,一般用来放置公共参数或共享数据,随着访问的结束而被释放和回收。iBATIS:iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2002年发起的开放源代码项目。于2010年6月16号被谷歌托管,改名为MyBatis。是一个基于SQL映射支持Java和.NET的持久层框架。DDL:数据库模式定义语言(Data Definition Language),用于描述数据库中要存储的现实世界实体的语言。DML:数据操纵语言(Data Manipulation Language),用来对数据库里的数据进行操作的语言。NB:只分库不分表的数据库变更语句。SP:即存储过程(Stored Procedure)。是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该本文档来自技高网...

【技术保护点】
一种基于分库分表的数据库操作装置,其特征在于,所述装置包括:加载模块,用于加载配置文件和数据库脚本;处理模块,用于根据所述配置文件为目标数据库创建线程池和数据库连接池,其中,所述线程池包括数据库级线程池、数据库表级线程池和篮子级线程池;执行模块,用于通过所述线程池和数据库连接池,根据所述目标数据库对应的数据库脚本执行针对所述目标数据库的数据库操作。

【技术特征摘要】
1.一种基于分库分表的数据库操作装置,其特征在于,所述装置包括:加载模块,用于加载配置文件和数据库脚本;处理模块,用于根据所述配置文件为目标数据库创建线程池和数据库连接池,其中,所述线程池包括数据库级线程池、数据库表级线程池和篮子级线程池;执行模块,用于通过所述线程池和数据库连接池,根据所述目标数据库对应的数据库脚本执行针对所述目标数据库的数据库操作。2.如权利要求1所述的装置,其特征在于,所述装置还包括:执行入口模块,用于接收用户输入并根据用户输入确定所述执行模块所执行的数据库脚本。3.如权利要求1所述的装置,其特征在于,所述处理模块包括:分库处理子模块,用于根据所述配置文件中的数据源配置清单为所述目标数据库中的每一个创建数据库连接池和数据库级线程;分表处理子模块,用于根据所述配置文件中的数据库表清单在各个所述目标数据库所对应的线程下,为对应的数据库表创建数据库表级线程,以及,根据所述配置文件中的篮子级线程个数的配置在各个数据库表级线程下,创建篮子级线程。4.如权利要求3所述的装置,其特征在于,所述分库处理子模块还用于:在所述执行模块执行完对当前数据库的数据库操作后,关闭当前数据库所对应的数据库连接池,回收当前数据库对应的数据库级线程。5.如权利要求3或4所述的装置,其特征在于,所述分表处理子模块还用于:在所述执行模块执行完对当前数据库表的任务之后,回收当前数据库表的线程;在所述执行模块执行完对当前篮子的任务之后,回收当前篮子的线程。6.如权利要求1所述的装置,其特征在于,所述处理模块还用于:根据所述配置文件中的数据源配置清单确定所述目标数据库,根据预设的数据库脚本配置文件确定所述目标数据库对应的数据库脚本;或,根据记录数据库操作失败信息的重跑日志确定所述目标数据库,根据所述数据库脚本配置文件和所述重跑日志确定所述目标数据库对应的数据库脚本;其中,所述数据库脚本配置文件配置有所述目标数据库与所述数据库脚本的对应关系。7.如权利要求1所述的装置,其特征在于,所述执行模块包括:脚本处理子模块,用于根据当前目标数据库所对应的篮子号及对应的数据库脚本生成实际执行的脚本语句;执行子模块,用于执行所述实际执行的脚本语句。8.如权利要求1所述的装置,其特征在于,所述数据库脚本包括:数据库模式定义语言脚本、数据库操纵语言脚本、只分库...

【专利技术属性】
技术研发人员:陈超杨涛
申请(专利权)人:中国建设银行股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1