一种基于 SQL 的数据库管理方法和装置 【技术领域】
本发明涉及计算机应用技术领域, 尤其涉及一种基于 SQL 的数据库管理方法和装置。 背景技术
目前, 在很多的计算机应用系统中, 以 SQL(Structured Query Language, 结构化 查询语言 ) 语言为基础的数据库承担了系统业务数据的存储和业务逻辑的计算。而在系统 的长期运行中, 对于数据库系统的维护和升级却存在着高成本、 低效率的问题。例如 :
场景 1 : 数据库系统经过长时间的现场运行, 由于多种因素的影响, 其业务数据可 能会存在错误、 冗余, 以及不一致等情况。常见的检查和修正方法是 : 由专业技术人员针对 每种检查和修正需求, 编写对应的数据库脚本, 由现场工程人员将这些脚本在数据库自带 的客户端中依次执行, 并将每个脚本对应的执行结果保存至文件后发回给专业技术人员分 析。这种方式存在以下缺陷 : 首先, 工程人员需手动执行每个脚本, 专业技术人员需分析每 个工程人员返回的执行结果, 因此其工作效率较低。 其次, 还可能存在因为执行结果和执行 脚本的映射错误问题, 导致分析结果产生错误。
场景 2 : 应用系统的升级更新涉及数据库系统的升级和更新, 常见的数据库系统 的升级和更新方法是由专业技术人员编写升级脚本, 由现场工程人员在实际环境中执行, 为了提高效率, 常常编写脚本批处理所有升级脚本。采用这种方式存在难以甚至无法判断 和保存每个脚本执行情况的问题。 发明内容
本发明实施例的目的在于提供一种基于 SQL 的数据库管理方法及装置, 其可以自 动执行 SQL 脚本集合, 保存 SQL 脚本执行结果信息, 并据此生成应用分析报告, 采用本发明 可以减少数据库的运维错误、 提高数据库的运维效率, 以及降低数据库的运维成本。
为了达到上述本发明的目的, 本发明采用以下技术方案实现 :
一种基于 SQL 的数据库管理方法, 包括 :
针对各个数据库管理任务项编写相应的 SQL 脚本, 形成 SQL 脚本集 ;
建立各数据库管理任务项与对应 SQL 脚本的逻辑映射文件 ;
将 SQL 脚本集以及逻辑映射文件部署于数据库管理客户端可访问的位置。
优选地, 所述逻辑映射文件保存为 XML 类型文件。
优选地, 在执行所有步骤之后还包括 :
用户在数据库管理客户端上激活数据库管理任务项 ;
依据逻辑映射文件, 获取与数据库管理任务项相对应的 SQL 脚本 ;
对待管理数据库执行所述 SQL 脚本。
优选地, 在执行所有步骤之后还包括 :
定时器到, 则依据逻辑映射文件, 获取与预先设置的数据库管理任务项相对应的SQL 脚本 ;
对待管理数据库执行所述 SQL 脚本。
优选地, 当有多项数据库管理任务项时, 对应的多个 SQL 脚本采用多线程并行方 式执行。
优选地, 在执行所有步骤之后还包括 :
保存每个 SQL 脚本执行后的结果, 并形成 SQL 脚本执行结果集。
一种基于 SQL 的数据库管理装置, 包括 :
存储模块, 用于存储与各个数据库管理任务项相对应的 SQL 脚本形成的 SQL 脚本 集, 以及, 数据库管理任务项与对应 SQL 脚本的逻辑映射文件 ;
控制模块, 用于根据用户对数据库管理任务项的激活操作或定时器的对数据库管 理任务项自动激活操作, 并依据逻辑映射文件, 获取与数据库管理任务项相对应的 SQL 脚 本;
数据库访问模块, 用于对待管理数据库执行所述 SQL 脚本。
优选地, 所述基于 SQL 的数据库管理装置还包括人机交互模块, 用于呈现并设置 数据库管理任务项, 以及呈现 SQL 脚本的执行进度以及 SQL 脚本的执行结果。 优选地, 所述基于 SQL 的数据库管理装置还包括日志模块, 用于记录每个 SQL 脚本 执行后的结果所形成 SQL 脚本执行结果集。
优选地, 所述基于 SQL 的数据库管理装置还包括脚本编辑模块, 用于针对各个数 据库管理任务项编写相应的 SQL 脚本。
通过以上本发明的技术方案可以看出, 使用本发明可通过配置数据库管理任务项 和以及相应的 SQL 脚本的映射关系, 实现数据库管理任务项的自动批量执行, 实现数据库 管理任务项的结果解析保存, 从而可以减少数据库管理过程中的人工干预, 提高执行效率, 降低维护成本。
附图说明
图 1 是本发明实施例提供的基于 SQL 的数据库管理方法配置阶段流程图 ;
图 2 是本发明实施例提供的基于 SQL 的数据库管理方法运行阶段配置流程图 ;
图 3 是本发明实施例提供的基于 SQL 的数据库管理方法运行阶段运行流程图 ;
图 4 是本发明实施例提供的基于 SQL 的数据库管理装置结构示意图。
本发明目的的实现、 功能特点及优异效果, 下面将结合具体实施例以及附图做进 一步的说明。 具体实施方式
下面结合附图和具体实施例对本发明所述技术方案作进一步的详细描述, 以使本 领域的技术人员可以更好的理解本发明并能予以实施, 但所举实施例不作为对本发明的限 定。
本发明提供了一种基于 SQL 的数据库管理方法, 包括如下步骤 :
S300、 针对各个数据库管理任务项编写相应的 SQL 脚本, 形成 SQL 脚本集 ;
S301、 建立各数据库管理任务项与对应 SQL 脚本的逻辑映射文件 ;S302、 将 SQL 脚本集以及逻辑映射文件部署于数据库管理客户端可访问的位置。
优选实施方式下, 所述逻辑映射文件保存为 XML 类型文件。当然, 除此之外, 所述 逻辑映射文件还可保存为其他类型的可编辑的文件。
一种优选的实施方式下, 在执行 S300-S302 的所有步骤之后, 所述基于 SQL 的数据 库管理方法还包括如下步骤 :
S303、 用户在数据库管理客户端上激活数据库管理任务项 ;
S304、 依据逻辑映射文件, 获取与数据库管理任务项相对应的 SQL 脚本 ;
S305、 对待管理数据库执行所述 SQL 脚本。
在该实施方式下, 对待管理数据库的维护工作由人工触发, 当用户选择好了相应 的数据库管理任务项之后, 在数据库管理客户端上激活数据库管理任务项, 并最终执行对 应的 SQL 脚本, 以对数据库进行维护。
另一种优选的实施方式下, 在执行 S300-S302 的所有步骤之后, 所述基于 SQL 的数 据库管理方法还包括如下步骤 :
S303、 定时器到, 则依据逻辑映射文件, 获取与预先设置的数据库管理任务项相对 应的 SQL 脚本 ;
S304、 对待管理数据库执行所述 SQL 脚本。
在该实施方式下, 对待管理数据库的维护工作是由系统自动运行的, 对于该基于 SQL 的数据库管理方法的执行是由预先设置的定时器进行触发, 当定时器时间到, 则遍历逻 辑映射文件, 找到与预先设置的数据库管理任务项对应的 SQL 脚本, 并最终将其执行, 从而 实现对数据库的维护工作。
优选实施方式下, 为了提高执行的效率, 当有多项数据库管理任务项时, 对应的多 个 SQL 脚本采用多线程并行方式执行。
在基于以上两种优选实施方式下的情形下, 在执行 S300-S302 的所有步骤之后, 所述基于 SQL 的数据库管理方法还包括下述步骤 S306 或 S305 :
S306(S305)、 保存每个 SQL 脚本执行后的结果, 并形成 SQL 脚本执行结果集。
参照图 1, 其描述了本发明实施例提供的基于 SQL 的数据库管理方法配置阶段流 程, 具体如下 :
步骤 101, 分类数据库管理应用需求, 确定数据库管理任务项集合。
步骤 102, 根据每个数据库管理任务项编写, 调试相应的 SQL 脚本, 确保其可被应 用数据库执行。
其中, SQL 脚本内容必须包含可执行的 SQL 语句若干, 同时可使用注释等方式 对 SQL 语句进行特征描述, 表明其执行目的。例如, 某 SQL 语句有返回集的类型 ( 例如, select), 可描述其查询意图, 并为该结果集起个易懂的表名, 为后面的执行结果保存及查 看提供便利。
步骤 103, 配置数据库管理任务项和 SQL 脚本之间的逻辑映射文件, 逻辑映射文件 可采用任何可解析的文本格式, 推荐使用 XML(Extensible Markup Language, 可扩展标记 语言 ) 类型文件, 方便阅读编辑和解析。逻辑映射文件必须包含数据库管理任务项和 SQL 脚本的映射关系, 同时也可包含数据库管理任务项的描述信息, 配置方式可采用最简单的 文本编辑方式, 或者定制相应的图形化编辑方式。步骤 104, 将步骤 102 和 103 输出的 SQL 脚本集和逻辑映射文件, 放置于数据库管 理客户端可访问到的位置, 例如放置方式可以涉及网络传输方式进行放置。
参照图 2, 其描述了本发明实施例提供的基于 SQL 的数据库管理方法运行阶段配 置流程, 具体如下 :
步骤 201, 数据库管理客户端解析逻辑映射文件, 在内存中建立数据库管理任务项 和 SQL 脚本的映射关系集合, 解析数据库管理任务项的描述信息。
步骤 202, 通过人机交互方式, 呈现可执行的数据库管理任务项。
步骤 203, 通过人机交互方式, 设置执行数据库参数和执行动作参数, 数据库参数 包括服务器地址, 数据库名称, 数据库用户名, 数据库密码, 数据库连接超时时间等 ; 执行动 作参数包括执行方式, 自动执行的周期, 自动执行的时间等。
步骤 204, 数据库管理客户端根据执行动作参数确定执行时刻。例如, 人工执行方 式下, 人工触发执行即为执行时刻, 自动执行方式下, 一般使用定时器线程, 定时判断当前 时刻是否为目标时刻。
步骤 205, 数据库管理客户端在执行时刻, 遍历内存中的逻辑映射文件, 执行每个 数据库管理任务项。在有多个数据库管理任务项的情形下, 对于其执行可使用多线程并行 方式提高效率。 参照图 3, 其描述了本发明实施例提供的基于 SQL 的数据库管理方法运行阶段运 行流程, 具体如下 :
步骤 301, 数据库管理客户端根据逻辑映射文件找到该数据库管理任务项映射的 SQL 脚本, 读取该数据库管理任务项的 SQL 脚本内容。解析该 SQL 脚本的可执行 SQL 语句集 合及 SQL 语句的执行目的。
步骤 302, 对待管理数据库依次执行每个 SQL 语句。
步骤 303, 在执行每个 SQL 语句时, 数据库管理客户端记录其执行返回是否成功, 若失败, 需记录其失败的原因。若该 SQL 语句有执行目的, 例如其执行后会得到一个结果 集, 则根据执行目的信息记录保存该结果集。
步骤 304, 数据库管理任务项执行完毕后, 通过人机交互方式, 实时更新任务的执 行进度, 任务项的执行返回, 结果集信息等。 数据库管理客户端记录数据库管理任务项的执 行过程。
本发明还提供了一种基于 SQL 的数据库管理装置, 如图 4 所示, 其包括 :
存储模块 20, 用于存储与各个数据库管理任务项相对应的 SQL 脚本形成的 SQL 脚 本集, 以及, 数据库管理任务项与对应 SQL 脚本的逻辑映射文件 ;
控制模块 10, 用于根据用户对数据库管理任务项的激活操作或定时器的对数据库 管理任务项自动激活操作, 并依据逻辑映射文件, 获取与数据库管理任务项相对应的 SQL 脚本 ;
数据库访问模块 30, 用于对待管理数据库 70 执行所述 SQL 脚本。
优选实施方式下, 所述基于 SQL 的数据库管理装置还包括人机交互模块 40, 用于 呈现并设置数据库管理任务项, 以及呈现 SQL 脚本的执行进度以及 SQL 脚本的执行结果。
优选实施方式下, 所述基于 SQL 的数据库管理装置还包括日志模块 50, 用于记录 每个 SQL 脚本执行后的结果所形成 SQL 脚本执行结果集。
优选实施方式下, 所述基于 SQL 的数据库管理装置还包括脚本编辑模块 60, 用于 针对各个数据库管理任务项编写相应的 SQL 脚本。
下面将举 3 个不同的实施例来分别说明本发明提供的基于 SQL 的数据库管理方法 及装置对待管理数据库进行不同的维护工作的过程。
实施例 1 数据库业务升级
场景描述 : 因业务需求的升级, 待管理数据库的相应数据需要进行更新。例如, 在 该实施例中, 升级的目标包括如下几项 :
1、 增加某表 ;
2、 某表增加字段。
其实施步骤包括如下配置阶段以及运行阶段, 分别介绍如下 :
配置阶段
1、 根据应用需求, 确定数据库管理任务项集合 :
数据库管理任务项 1 : 增加表 ;
数据库管理任务项 2 : 更新表。
2、 根据数据库管理任务项编写 SQL 脚本, 例如 : AddTable.sql 文本内容 :
CREATE TABLE...... ;
UpdateTable.sql 文本内容 :
ALTER TABLE...... ;
3、 配置逻辑映射文件 function.xml, 其包含数据库管理任务项和 SQL 脚本的映射 关系, 类似下文 :
4、 将 AddTable.sql、 UpdateTable.sql、 function.xml 放置于数据库管理客户端 上该基于 SQL 的数据库管理装置指定的位置。
运行阶段
1、 运行该基于 SQL 的数据库管理装置, 装置解析逻辑映射文件 function.xml, 建 立如下的映射关系, 并将数据库管理任务项呈现于装置界面。
增加表 <->AddTable.sql
更新表 <->UpdateTable.sql
2、 现场工程人员设置数据库参数, 设置执行方式为手工执行。
3、 现场工程人员手工触发执行, 装置遍历执行任务项集合。当执行数据库管理任 务项 1 时, 读取 AddTable.sql 脚本内容, 将脚本内容作用于目标数据库。当执行数据库管 理任务项 2 时, 读取 UpdateTable.sql 脚本内容, 将脚本内容作用于目标数据库。装置实时
显示数据库管理任务项的执行进度和执行结果。
4、 装置将数据库管理任务项的执行过程和执行结果记录至本地或指定网络位置, 便于日后工程人员查阅。
适用范围 :
此实施例一般适用于下列情况 :
任务项无返回集。
SQL 脚本只需运行一次。
实施例 2 数据库业务人工维护
场景描述 : 现场系统出现故障, 需要查询数据库中特定数据进行故障排查。例如, 排查目标包括 :
1、 查询某种错误数据的个数 ;
2、 查询数据库服务器存储空间 ;
3、 清除某种错误的数据。
其实施步骤包括如下配置阶段以及运行阶段, 分别介绍如下 :
配置阶段 1、 根据应用需求, 确定数据库管理任务项集合 :
数据库管理任务项 1 : 统计错误数据。
数据库管理任务项 2 : 统计存储空间。
数据库管理任务项 3 : 修复错误数据。
2、 根据数据库管理任务项编写 SQL 脚本, 文本中用注释中的 TableName 这个关键 字来表明查询内容会返回一个数据表。
Error.sql 文本内容, 该脚本执行后会返回一个 “错误数据” 表:
--TableName : 错误数据
SELECT COUNT(*)AS 错误个数 FROM xxx WHERE...... ;
Space.sql 文本内容, 该脚本执行后会返回一个 “存储空间” 表:
--TableName : 存储空间
IF OBJECT_ID(N′ [#t]′, N′ U′ )IS NOT NULL
DROP TABLE[#t]
CREATE TABLE#t
(
表名 VARCHAR(255),
记录数 BIGINT,
分配总空间 VARCHAR(20),
数据使用空间 VARCHAR(20),
索引使用空间 VARCHAR(20),
未使用空间 VARCHAR(20)
)
EXEC sp_MSforeachtable″ INSERT INTO#t EXEC sp_spaceused′?′″
SELECT*FROM#t
DROP TABLE#t ;
Repairsql 文本内容 :
UPDATE xxx SET xxx = xxx WHERE xxx = xxx
3、 配置逻辑映射文件 function.xml, 其包含数据库管理任务项和 SQL 脚本的映射 关系, 类似下文 :
2、 将 Error.sql、 Space.sql、 Repairsql、 function.xml 放置于数据库管理客户端 上该基于 SQL 的数据库管理装置指定的位置。
运行阶段
1、 运行装置, 该基于 SQL 的数据库管理装置解析逻辑映射文件 function.xml, 建 立如下的映射关系, 并将任务项呈现于装置界面。
统计错误数据 <->Error.sql
统计存储空间 <->Space.sql
修复错误数据 <->Repair sql
2、 现场工程人员设置数据库参数, 设置执行方式为手工执行。
3、 现场工程人员手工触发执行, 装置遍历执行数据库管理任务项集合。当执行数 据库管理任务项 1 时, 读取 Error.sql 脚本内容, 将脚本内容中 SQL 语句作用于目标数据 库, 并将执行返回集作为 “错误数据” 表保存。当执行数据库管理任务项 2 时, 读取 Space. sql 脚本内容, 将脚本内容中 SQL 语句作用于目标数据库, 并将执行返回集作为 “存储空间” 表保存。装置实时显示数据库管理任务项的执行进度和执行结果。当执行数据库管理任务 项 3 时, 读取 Repair.sql 脚本内容, 将脚本内容中 SQL 语句作用于目标数据库。装置实时 显示数据库管理任务项的执行进度和执行结果。现场工程人员可以通过装置界面查看 “错 误数据” 表和 “存储空间” 表, 通过其中的数据判断故障定位。
(4) 装置将数据库管理任务项的执行过程和执行结果记录至本地或指定网络位 置, 便于日后工程人员查阅。
适用范围 :
此实施例一般适用于下列情况 :
(1) 数据库管理任务项有返回集或无返回集, 返回集名称和内容需要明了易懂。
(2)SQL 脚本的执行由人工控制。
(3) 数据库管理任务项的执行结果需要及时呈现和保存。
实施例 3 数据库业务自动维护
场景描述 : 受某些因素影响, 现场数据库需要定期进行维护, 维护内容包括数据的
统计, 整理和清理。例如, 维护目标包括 :
(1) 统计某类数据, 出具报表 ;
(2) 将某类数据分类后, 迁移至其他表存储 ;
(3) 清除某类垃圾数据 ;
(4) 周期为一周。
其实施步骤包括如下配置阶段以及运行阶段, 分别介绍如下 :
配置阶段 :
1、 根据应用需求, 确定数据库任务项集合 :
数据库管理任务项 1 : 统计数据。
数据库管理任务项 2 : 迁移数据。
数据库管理任务项 3 : 清理数据。
2、 根据数据库管理任务项编写 SQL 脚本, 文本中用注释中的 TableName 这个关键 字来表明查询内容会返回一个数据表。
Statistics.sql 文本内容, 该脚本执行后会返回一个 “统计报表” :
--TableName : 统计报表 SELECT xxx FROM...... ;
Move.sql 文本内容 :
INSERT INTO...... ;
Delete.sql 文本内容 :
DELETE FROM......
3、 配置逻辑映射文件 function.xml, 其包含数据库管理任务项和 SQL 脚本的映射 关系, 类似下文 :
4、 将 Statistics.sql、 Move.sql、 Delete.sql、 function.xml 放置于数据库管理 客户端上该基于 SQL 的数据库管理装置指定的位置。
运行阶段
1、 运行该基于 SQL 的数据库管理装置, 装置解析逻辑映射文件 function.xml, 建 立如下的映射关系 :
统计数据 <->Statistics.sql
迁移数据 <->Move.sql
清理数据 <->Delete.sql
2、 现场工程人员设置数据库参数, 设置执行方式为自动执行, 执行时刻为每周 x
的 xx 时 xx 分 xx 秒。
3、 该基于 SQL 的数据库管理装置长期在线运行, 其内部定期器在每周 x 的 xx 时 xx 分 xx 秒触发执行, 装置遍历执行数据库管理任务项集合。当执行数据库管理任务项 1 时, 读取 Statistics.sql 脚本内容, 将脚本内容中 SQL 语句作用于目标数据库, 并将执行返回 集作为 “统计报表” 表保存。当执行数据库管理任务项 2 时, 读取 Move.sql 脚本内容, 将脚 本内容中 SQL 语句作用于目标数据库。当执行数据库管理任务项 3 时, 读取 Delete.sql 脚 本内容, 将脚本内容中 SQL 语句作用于目标数据库。
4、 装置将数据库管理任务项的执行过程和执行结果记录至本地或指定网络位置, 便于日后工程人员查阅。
适用范围 :
此实施例一般适用于下列情况 :
(1) 数据库管理任务项有返回集或无返回集, 返回集名称和内容需要明了易懂。
(2)SQL 脚本的执行需定期自动执行。
(3) 数据库管理任务项的执行结果需要作为维护日志长期记录和保存。
以上所述仅为本发明的优选实施例, 并非因此限制本发明的专利范围, 凡是利用 本发明说明书及附图内容所作的等效结构或等效流程变换, 或直接或间接运用在其他相关 的技术领域, 均同理包括在本发明的专利保护范围内。