《一种基于多数据库的动态切换方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种基于多数据库的动态切换方法和装置.pdf(8页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103530427 A (43)申请公布日 2014.01.22 CN 103530427 A (21)申请号 201310537530.5 (22)申请日 2013.11.04 G06F 17/30(2006.01) (71)申请人 北京京东尚科信息技术有限公司 地址 100080 北京市海淀区苏州街20号2号 楼 2 层 申请人 北京京东世纪贸易有限公司 (72)发明人 崔振 (74)专利代理机构 北京德琦知识产权代理有限 公司 11018 代理人 阎敏 宋志强 (54) 发明名称 一种基于多数据库的动态切换方法和装置 (57) 摘要 本发明提出一种基于多数据库的。
2、动态切换方 法和装置, 其中方法包括 : 在计算机应用系统启 动时, 读取相关的配置文件 ; 所述配置文件包括 一个以上键值对, 其中, 键为数据库标识, 值为访 问所述数据库的方法名 ; 将所述配置文件中的数 据库标识设置在计算机应用系统的线程池中 ; 当 计算机应用系统的方法被调用时, 拦截该方法, 从 所述线程池中获取该方法所对应的数据库标识, 返回所述被拦截的方法 ; 利用获取的数据库标识 执行该方法。本发明能够实现基于配置的读写分 离, 并且达到方法级别的数据库切换。 (51)Int.Cl. 权利要求书 1 页 说明书 4 页 附图 2 页 (19)中华人民共和国国家知识产权局 (1。
3、2)发明专利申请 权利要求书1页 说明书4页 附图2页 (10)申请公布号 CN 103530427 A CN 103530427 A 1/1 页 2 1. 一种基于多数据库的动态切换方法, 其特征在于, 所述方法包括 : 在计算机应用系统启动时, 读取相关的配置文件 ; 所述配置文件包括一个以上键值对, 其中, 键为数据库标识, 值为访问所述数据库的方法名 ; 将所述配置文件中的数据库标识设 置在计算机应用系统的线程池中 ; 当计算机应用系统的方法被调用时, 拦截该方法, 从所述线程池中获取该方法所对应 的数据库标识, 返回所述被拦截的方法 ; 利用获取的数据库标识执行该方法。 2. 根据权。
4、利要求 1 所述的方法, 其特征在于, 所述配置文件在计算机应用系统的运行 过程中随着方法的变化而动态变化 ; 所述从线程池中获取该方法所对应的数据库标识的方式为 : 查找线程池中是否存在该 方法所对应的数据库标识, 如果存在, 则获取所述数据库标识 ; 如果不存在, 则重新读取配 置文件, 将配置文件中该方法对应的数据库标识设置在线程池中, 从线程池中获取所述数 据库标识。 3. 根据权利要求 1 所述的方法, 其特征在于, 所述拦截该方法的方式为 : 采用面向切面 编程 AOP 技术拦截该方法。 4. 一种基于多数据库的动态切换装置, 其特征在于, 所述装置包括 : 初始化模块, 用于在计。
5、算机应用系统启动时, 读取相关的配置文件, 并将所述配置文件 中的数据库标识设置在计算机应用系统的线程池中 ; 其中, 所述配置文件包括一个以上键 值对, 键为数据库标识, 值为访问所述数据库的方法名 ; 方法拦截模块, 用于当计算机应用系统的方法被调用时, 拦截该方法, 从所述线程池中 获取该方法所对应的数据库标识, 返回所述被拦截的方法 ; 方法执行模块, 用于利用所述方法拦截模块获取的数据库标识执行该方法。 5. 根据权利要求 4 所述的装置, 其特征在于, 所述配置文件在计算机应用系统的运行 过程中随着方法的变化而动态变化 ; 所述方法拦截模块从线程池中获取该方法所对应的数据库标识的方。
6、式为 : 查找线程池 中是否存在该方法所对应的数据库标识, 如果存在, 则获取所述数据库标识 ; 如果不存在, 则通知所述初始化模块重新读取配置文件, 将配置文件中该方法对应的数据库标识设置在 线程池中, 并在所述初始化模块设置完毕之后从线程池中获取所述数据库标识。 6. 根据权利要求 4 所述的装置, 其特征在于, 所述方法拦截模块拦截该方法的方式为 : 采用面向切面编程 AOP 技术拦截该方法。 权 利 要 求 书 CN 103530427 A 2 1/4 页 3 一种基于多数据库的动态切换方法和装置 技术领域 0001 本发明涉及数据库技术领域, 尤其涉及一种基于多数据库的动态切换方法和。
7、装 置。 背景技术 0002 当数据库包括主数据库和一个以上从数据库时, 从数据库按照固定的周期同步主 数据库中保存的数据。计算机应用系统可以向主数据库进行写操作 (包括增加、 插入、 删除 等改变数据内容的操作) , 并从从数据库进行读操作。计算机应用系统针对主数据库或从数 据库做的一个读操作或写操作称为一个方法 ; 多个方法组成一个类, 在一类方法中, 所有的 方法都针对同一个数据库做相同的操作 (即读操作或写操作) 。 0003 在现有技术中, 为每个读数据库的类或写数据库的类添加配上对应的数据库标识 (即 : 数据源) 。计算机应用系统启动后已经初始化好所有需要读写操作数据库的类, 无。
8、法通 过计算机应用系统运行时改变他们操作的数据库。如图 1 所示, 在计算机应用系统启动后, 负责写数据操作的一类方法针对对应的主数据库进行操作, 而负责读数据操作的一类方法 针对对应的从数据库进行操作。 0004 为了实现计算机应用系统在多个数据库之间的切换, 需要将读操作的方法与写操 作的方法完全分离到不同程序代码中, 这样不仅破坏了计算机应用系统的结构, 也给计算 机应用系统的开发增加成本 ; 并且, 现有技术只能实现对象级别 (即针对类) 的数据库切换, 无法实现方法级别的数据库切换 ; 同时, 由于预先为每一类方法设置对应的数据库标识, 计 算机应用系统启动后已经初始化好所有需要读写。
9、操作数据库的类, 因此无法在计算机应用 系统运行时实现数据库的动态切换。 发明内容 0005 本发明提供了一种基于多数据库的动态切换方法, 能够实现基于配置的读写分 离, 并且达到方法级别的数据库切换。 0006 本发明还提供了一种基于多数据库的动态切换装置, 能够实现基于配置的读写分 离, 并且达到方法级别的数据库切换。 0007 本发明的技术方案是这样实现的 : 0008 一种基于多数据库的动态切换方法, 包括 : 0009 在计算机应用系统启动时, 读取相关的配置文件 ; 所述配置文件包括一个以上键 值对, 其中, 键为数据库标识, 值为访问所述数据库的方法名 ; 将所述配置文件中的数据。
10、库 标识设置在计算机应用系统的线程池中 ; 0010 当计算机应用系统的方法被调用时, 拦截该方法, 从所述线程池中获取该方法所 对应的数据库标识, 返回所述被拦截的方法 ; 0011 利用获取的数据库标识执行该方法。 0012 上述方法中, 所述的配置文件在计算机应用系统的运行过程中随着方法的变化而 说 明 书 CN 103530427 A 3 2/4 页 4 动态变化 ; 0013 从线程池中获取该方法所对应的数据库标识的方式可以为 : 查找线程池中是否存 在该方法所对应的数据库标识, 如果存在, 则获取所述数据库标识 ; 如果不存在, 则重新读 取配置文件, 将配置文件中该方法对应的数据。
11、库标识设置在线程池中, 从线程池中获取所 述数据库标识。 0014 拦截方法的方式可以为 : 采用面向切面编程 (AOP) 技术拦截该方法。 0015 一种基于多数据库的动态切换装置, 包括 : 0016 初始化模块, 用于在计算机应用系统启动时, 读取相关的配置文件, 并将所述配置 文件中的数据库标识设置在计算机应用系统的线程池中 ; 其中, 所述配置文件包括一个以 上键值对, 键为数据库标识, 值为访问所述数据库的方法名 ; 0017 方法拦截模块, 用于当计算机应用系统的方法被调用时, 拦截该方法, 从所述线程 池中获取该方法所对应的数据库标识, 返回所述被拦截的方法 ; 0018 方法。
12、执行模块, 用于利用所述方法拦截模块获取的数据库标识执行该方法。 0019 上述装置中, 配置文件在计算机应用系统的运行过程中随着方法的变化而动态变 化 ; 0020 方法拦截模块从线程池中获取该方法所对应的数据库标识的方式可以为 : 查找线 程池中是否存在该方法所对应的数据库标识, 如果存在, 则获取所述数据库标识 ; 如果不存 在, 则通知所述初始化模块重新读取配置文件, 将配置文件中该方法对应的数据库标识设 置在线程池中, 并在所述初始化模块设置完毕之后从线程池中获取所述数据库标识。 0021 方法拦截模块拦截方法的方式可以为 : AOP 技术拦截该方法。 0022 可见, 本发明提出的。
13、基于多数据库的动态切换方法及装置, 通过将配置文件中的 数据库标识设置在计算机应用系统的线程池中, 实现了基于配置的读写分离 ; 并且, 由于配 置文件中的键值对是数据库标识与方法名的对应关系, 因此能够达到方法级别的数据库切 换。 附图说明 0023 图 1 为现有技术中计算机应用系统启动后调用方法的方式示意图 ; 0024 图 2 为本发明提出的基于多数据库的动态切换方法实现流程图 ; 0025 图 3 为本发明实施例一的实现流程图 ; 0026 图 4 为本发明提出的基于多数据库的动态切换装置结构示意图。 具体实施方式 0027 本发明提出一种基于多数据库的动态切换方法, 如图 2 为该。
14、方法的实现流程图, 包括 : 0028 步骤 201 : 在计算机应用系统启动时, 读取相关的配置文件 ; 所述配置文件包括一 个以上键值对, 其中, 键为数据库标识, 值为访问所述数据库的方法名 ; 将所述配置文件中 的数据库标识设置在计算机应用系统的线程池中 ; 0029 步骤 202 : 当计算机应用系统的方法被调用时, 拦截该方法, 从所述线程池中获取 该方法所对应的数据库标识, 返回所述被拦截的方法 ; 说 明 书 CN 103530427 A 4 3/4 页 5 0030 步骤 203 : 利用获取的数据库标识执行该方法。 0031 上述方法中, 当计算机应用系统启动之后, 如果出。
15、现新的方法, 则配置文件可以在 计算机应用系统的运行过程中随着方法的变化而动态变化 ; 0032 上述步骤 202 中, 从线程池中获取该方法所对应的数据库标识的方式可以为 : 查 找线程池中是否存在该方法所对应的数据库标识, 如果存在, 则获取所述数据库标识 ; 如果 不存在, 则重新读取配置文件, 将配置文件中该方法对应的数据库标识设置在线程池中, 从 线程池中获取所述数据库标识。 0033 拦 截 该 方 法 的 方 式 可 以 为 : 采 用 面 向 切 面 编 程 (AOP, Aspect Oriented Programming) 技术拦截该方法。 0034 以下举具体的实施例详细。
16、介绍。 0035 实施例一 : 0036 在本实施例中, 预先在计算机应用系统中设置基于多数据库的动态切换装置。如 图 3 为本发明实施例一的实现流程图, 包括 : 0037 步骤 301 : 在计算机应用系统启动时, 基于多数据库的动态切换装置读取相关的 配置文件 , 配置文件以键值对的形式出现, 其中, 键配置成数据库的标识, 值配置成需要访 问成这个数据库的方法名。 0038 配置文件存放在计算机应用系统中, 是现有技术中已有的文件, 配置文件就是在 用户登录电脑或使用软件时, 软件系统为用户所要加载所需环境的设置和文件的集合。它 包括所有用户专用的配置设置。 0039 步骤 302 :。
17、 当计算机应用系统的方法通过接口或服务被调用时, 基于多数据库的 动态切换装置采用 AOP 技术对该方法进行拦截, 并从计算机应用系统的本地线程池中查找 该方法对应的数据库标识。 0040 其中, 线程池中存放了计算机应用系统被调用的方法所对应的数据库标识 ; 当方 法被执行时, 就从这个线程池中获取该方法对应的数据库标识。这样做是为了能够实现动 态切换数据库。 0041 步骤303 : 判断线程池中是否存在该数据库标识 ; 如果存在, 则执行步骤304 ; 如果 不存在, 则执行步骤 305 ; 0042 步骤 304 : 获取该方法对应的数据库标识 ; 返回该方法, 利用该方法对应的数据库。
18、 标识执行该方法。结束当前流程。 0043 步骤 305 : 基于多数据库的动态切换装置重新读取配置文件, 根据配置文件的内 容进行初始化, 将该方法对应的数据库标识设置到本地线程池中, 获取该方法对应的数据 库标识 ; 返回该方法, 利用该方法对应的数据库标识执行该方法。 0044 本发明还提出一种基于多数据库的动态切换装置, 如图 4 为该装置结构示意图, 包括 : 0045 初始化模块 401, 用于在计算机应用系统启动时, 读取相关的配置文件, 并将所述 配置文件中的数据库标识设置在计算机应用系统的线程池中 ; 其中, 所述配置文件包括一 个以上键值对, 键为数据库标识, 值为访问所述。
19、数据库的方法名 ; 0046 方法拦截模块 402, 用于当计算机应用系统的方法被调用时, 拦截该方法, 从所述 线程池中获取该方法所对应的数据库标识, 返回所述被拦截的方法 ; 说 明 书 CN 103530427 A 5 4/4 页 6 0047 方法执行模块 403, 用于利用所述方法拦截模块 402 获取的数据库标识执行该方 法。 0048 上述装置中, 配置文件在计算机应用系统的运行过程中随着方法的变化而动态变 化 ; 0049 方法拦截模块 402 从线程池中获取该方法所对应的数据库标识的方式可以为 : 查 找线程池中是否存在该方法所对应的数据库标识, 如果存在, 则获取所述数据库。
20、标识 ; 如果 不存在, 则通知所述初始化模块 401 重新读取配置文件, 将配置文件中该方法对应的数据 库标识设置在线程池中, 并在所述初始化模块 401 设置完毕之后从线程池中获取所述数据 库标识。 0050 上述装置中, 方法拦截模块402拦截该方法的方式可以为 : 采用AOP技术拦截该方 法。 0051 综上可见, 本发明提出的基于多数据库的动态切换方法及装置, 通过将配置文件 中的数据库标识设置在计算机应用系统的线程池中, 实现了基于配置的读写分离 ; 并且, 由 于配置文件中的键值对是数据库标识与方法名的对应关系, 因此能够达到方法级别的数据 库切换。 当计算机应用系统运行过程中出。
21、现新的方法时, 不需要进行代码修改, 只需要采用 配置文件进行配置, 这种方式可以支持到方法级别上的数据源切换, 对于同一个数据操作 层无需进行类中的方法分离。对于线上已经上线的应用, 方便进行多数据源切换。 0052 以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内, 所做的任何修改、 等同替换、 改进等, 均应包含在本发明保护的范围之内。 说 明 书 CN 103530427 A 6 1/2 页 7 图 1 图 2 说 明 书 附 图 CN 103530427 A 7 2/2 页 8 图 3 图 4 说 明 书 附 图 CN 103530427 A 8 。