CN113360478A - 一种多数据源集成方法 - Google Patents
一种多数据源集成方法 Download PDFInfo
- Publication number
- CN113360478A CN113360478A CN202110709477.7A CN202110709477A CN113360478A CN 113360478 A CN113360478 A CN 113360478A CN 202110709477 A CN202110709477 A CN 202110709477A CN 113360478 A CN113360478 A CN 113360478A
- Authority
- CN
- China
- Prior art keywords
- data source
- connection
- key
- information
- database
- 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.)
- Granted
Links
Images
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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及数据库领域,具体提供了一种多数据源集成方法,具有如下步骤:S1、数据源信息配置;S2、系统读取配置信息;S3、测试连接信息,连接数据库;S4、构建数据库连接池存放连接;S5、当使用到此连接,根据key值获取数据连接池,用此连接池中连接做其他数据库操作。与现有技术相比,本发明可以使调用者屏蔽掉数据连接层面的问题,进而专注于数据业务展示层面的开发。
Description
技术领域
本发明涉及数据库领域,具体提供一种多数据源集成方法。
背景技术
数据可视化主要旨在通过图形方式清晰有效地传递信息。也就是说,可视化的存在是为了帮助我们更好地传递信息。我们可以使用程序将已有数据转化为可视化结果,也可以使用简单的数据可视化工具通过相应的操作将数据文件转化为可视化结果,甚至进行进一步的数据分析与探索,这类工具很多,但是其中首要的条件都是创建数据源的连接,否则将无法读取相关数据库中的数据也无法做到数据的可视化。
但是目前数据库的种类极多,根据数控存储的方式目前分为两大类型,即关系型和非关系型数据库,若每个系统都去实现这部分数据库的连接过于繁琐,达不到快速开发的目的。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的多数据源集成方法。
本发明解决其技术问题所采用的技术方案是:
一种多数据源集成方法,具有如下步骤:
S1、数据源信息配置;
S2、系统读取配置信息;
S3、测试连接信息,连接数据库;
S4、构建数据库连接池存放连接;
S5、当使用到此连接,根据key值获取数据连接池,用此连接池中连接做其他数据库操作。
进一步的,在步骤S1中,采用spring boot作为后台框架,在项目启动时,读取项目中默认相关数据源的连接驱动。
作为优选,使用spring的ApplicationRunner,在项目启动时即将加载yml中配置的相关数据源信息,根据相关driver的名称加载到classloader中。
进一步的,对于外包扩展的数据源驱动,定义相关文件夹用于存储驱动,然后读取该文件夹路径,将相关驱动包动态加载到系统中,从而达到动态添加数据驱动的功能。
进一步的,当前端选定相关数据源并将相关数据源信息请求到后端时,后端采用将jdbcUrl、username、password和version关键信息做相关加密,后得到此连接的key,使用ConcurrentHashMap存储连接的key,value为对应连接的数据库连接池,此处使用DruidDataSource作为数据库的连接池。
进一步的,将所用到的数据库连接驱动jar包整理好,根据不同数据源驱动的不同连接url也做好相关配置。
作为优选,对于安全系数高的驱动采用Kerberos认证,在配置数据源信息时若存在Kerberos认证则需要配置相关密钥。
进一步的,根据步骤S1中的数据源信息配置,在步骤S2中根据规则生成key,判断Map中是否包含所述key,若存在,则取出对应的连接池;如不存在,创建对应连接池。
进一步的,当多个用户同时请求一个新数据源时,则加入ReentrantLock;若采用分布式部署的方式也可使用分布式锁来实现。
进一步的,在步骤S4中,取数据源版本,然后连接url,通过md5加密做key存储在map中。
本发明的一种多数据源集成方法和现有技术相比,具有以下突出的有益效果:
本发明可以使调用者屏蔽掉数据连接层面的问题,进而专注于数据业务展示层面的开发。对于多版本多数据源的情况可以较为全面的包含数据连接信息,从而完成对于数据源的统筹管理。不管对于关系型数据库还是非关系数据库都有较好的适配,对于安全等级较高的系统也可以采用Kerberos等认证的方式,从而达到对于数据安全的保护。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种多数据源集成方法的流程示意图;
附图2是一种多数据源集成方法中多数据源管理数据结构图;
附图3是一种多数据源集成方法中系统读取配置信息的流程示意图;
附图4是一种多数据源集成方法中请求锁流程示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
如图1所示,本实施例中的一种多数据源集成方法,具有如下步骤:
S1、数据源信息配置;
S2、系统读取配置信息;
S3、测试连接信息,连接数据库;
S4、构建数据库连接池存放连接;
S5、当使用到此连接,根据key值获取数据连接池,用此连接池中连接做其他数据库操作。
进一步的,在步骤S1中,采用spring boot作为后台框架,在项目启动时,读取项目中默认相关数据源的连接驱动。此处可以使用spring的ApplicationRunner,在项目启动时即将加载yml中配置的相关数据源信息,根据相关driver的名称加载到classloader中。对于外包扩展的数据源驱动,定义相关文件夹用于存储驱动,然后读取该文件夹路径,将相关驱动包动态加载到系统中,从而达到动态添加数据驱动的功能,避免停机加载对用户造成不便影响。
如图2、3所示,当前端选定相关数据源并将相关数据源信息请求到后端时,后端采用将jdbcUrl、username、password和version关键信息做相关加密,采用国密SM4算法对其加密,后得到此连接的key,使用ConcurrentHashMap存储连接的key,value为对应连接的数据库连接池,此处使用DruidDataSource作为数据库的连接池。使用ConcurrentHashMap的数据结构是因为它由一个Segment数组和多个HashEntry组成,实现原理是实现了锁分离的思路解决了多线程的安全问题。
将需要用到的数据库连接驱动jar包整理好,目前常用的数据源主要包括mysql、oracle、sqlserver、hs2、mongodb、elasticSearch、sparksql、impala、postgresql、newsql、phoenix、Greenplum等,根据不同数据源驱动的不同连接url也做好相关配置,做到一一针对,不同版本的数据库连接驱动存在些许区别,对于准备的连接驱动需要特别注意,对于某些安全系数较高的驱动还存在对应的认证还需要特别配置,采用Kerberos认证。
Kerberos认证使用对称密钥的方式对“用户对网络服务的访问”进行认证。对称密钥即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密,那么密码不需要在网络中传输。因此在配置数据源信息时若存在Kerberos认证则需要配置相关密钥。
如图4所示,当多个用户同时请求一个新数据源时,会存在并发请求的问题,此时,若是map中不存在此数据源则可能产生并发问题,多个请求同时创建连接池造成性能损耗,故此处加入ReentrantLock,加锁用于减少并发带来的性能损耗和其他由于并发问题。若采用分布式部署的方式也可使用分布式锁来实现,如redis、zookeeper等中间件。
在步骤S4中,取数据源版本,然后连接url,通过md5加密做key存储在map中。
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种多数据源集成方法权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (10)
1.一种多数据源集成方法,其特征在于,具有如下步骤:
S1、数据源信息配置;
S2、系统读取配置信息;
S3、测试连接信息,连接数据库;
S4、构建数据库连接池存放连接;
S5、当使用到此连接,根据key值获取数据连接池,用此连接池中连接做其他数据库操作。
2.根据权利要求1所述的一种多数据源集成方法,其特征在于,在步骤S1中,采用spring boot作为后台框架,在项目启动时,读取项目中默认相关数据源的连接驱动。
3.根据权利要求2所述的一种多数据源集成方法,其特征在于,使用spring的ApplicationRunner,在项目启动时即将加载yml中配置的相关数据源信息,根据相关driver的名称加载到classloader中。
4.根据权利要求3所述的一种多数据源集成方法,其特征在于,对于外包扩展的数据源驱动,定义相关文件夹用于存储驱动,然后读取该文件夹路径,将相关驱动包动态加载到系统中,从而达到动态添加数据驱动的功能。
5.根据权利要求4所述的一种多数据源集成方法,其特征在于,当前端选定相关数据源并将相关数据源信息请求到后端时,后端采用将jdbcUrl、username、password和version关键信息做相关加密,后得到此连接的key,使用ConcurrentHashMap存储连接的key,value为对应连接的数据库连接池,此处使用DruidDataSource作为数据库的连接池。
6.根据权利要求5所述的一种多数据源集成方法,其特征在于,将所用到的数据库连接驱动jar包整理好,根据不同数据源驱动的不同连接url也做好相关配置。
7.根据权利要求6所述的一种多数据源集成方法,其特征在于,对于安全系数高的驱动采用Kerberos认证,在配置数据源信息时若存在Kerberos认证则需要配置相关密钥。
8.根据权利要求7所述的一种多数据源集成方法,其特征在于,根据步骤S1中的数据源信息配置,在步骤S2中根据规则生成key,判断Map中是否包含所述key,若存在,则取出对应的连接池;如不存在,创建对应连接池。
9.根据权利要求8所述的一种多数据源集成方法,其特征在于,当多个用户同时请求一个新数据源时,则加入ReentrantLock;若采用分布式部署的方式也可使用分布式锁来实现。
10.根据权利要求9所述的一种多数据源集成方法,其特征在于,在步骤S4中,取数据源版本,然后连接url,通过md5加密做key存储在map中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110709477.7A CN113360478B (zh) | 2021-06-25 | 2021-06-25 | 一种多数据源集成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110709477.7A CN113360478B (zh) | 2021-06-25 | 2021-06-25 | 一种多数据源集成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360478A true CN113360478A (zh) | 2021-09-07 |
CN113360478B CN113360478B (zh) | 2023-03-10 |
Family
ID=77536359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110709477.7A Active CN113360478B (zh) | 2021-06-25 | 2021-06-25 | 一种多数据源集成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360478B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115952228A (zh) * | 2023-03-09 | 2023-04-11 | 山东浪潮超高清智能科技有限公司 | 一种数据库连接池连接Impala的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408899A (zh) * | 2008-11-21 | 2009-04-15 | 北京中企开源信息技术有限公司 | 一种网站多数据源切换方法和装置 |
CN107357831A (zh) * | 2017-06-21 | 2017-11-17 | 信雅达系统工程股份有限公司 | 可配置的流程实例数据分布式存储方法及系统 |
CN107844508A (zh) * | 2016-09-21 | 2018-03-27 | 北京航天长峰科技工业集团有限公司 | 一种企业业务流程数据管理方法 |
CN108667930A (zh) * | 2018-05-09 | 2018-10-16 | 聚龙股份有限公司 | 一种动态数据源配置与自动化切换方法 |
CN110502560A (zh) * | 2019-08-13 | 2019-11-26 | 威富通科技有限公司 | 一种数据库连接参数封装的方法及服务器 |
-
2021
- 2021-06-25 CN CN202110709477.7A patent/CN113360478B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101408899A (zh) * | 2008-11-21 | 2009-04-15 | 北京中企开源信息技术有限公司 | 一种网站多数据源切换方法和装置 |
CN107844508A (zh) * | 2016-09-21 | 2018-03-27 | 北京航天长峰科技工业集团有限公司 | 一种企业业务流程数据管理方法 |
CN107357831A (zh) * | 2017-06-21 | 2017-11-17 | 信雅达系统工程股份有限公司 | 可配置的流程实例数据分布式存储方法及系统 |
CN108667930A (zh) * | 2018-05-09 | 2018-10-16 | 聚龙股份有限公司 | 一种动态数据源配置与自动化切换方法 |
CN110502560A (zh) * | 2019-08-13 | 2019-11-26 | 威富通科技有限公司 | 一种数据库连接参数封装的方法及服务器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115952228A (zh) * | 2023-03-09 | 2023-04-11 | 山东浪潮超高清智能科技有限公司 | 一种数据库连接池连接Impala的方法及系统 |
CN115952228B (zh) * | 2023-03-09 | 2023-06-20 | 山东浪潮超高清智能科技有限公司 | 一种数据库连接池连接Impala的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113360478B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7743069B2 (en) | Database system providing SQL extensions for automated encryption and decryption of column data | |
US7797342B2 (en) | Database system providing encrypted column support for applications | |
US10002152B2 (en) | Client computer for updating a database stored on a server via a network | |
US9747456B2 (en) | Secure query processing over encrypted data | |
US10985902B2 (en) | Dynamic symmetric searchable encryption | |
CN101587479B (zh) | 面向数据库管理系统内核的数据加解密系统及其方法 | |
EP2430789B1 (en) | Protection of encryption keys in a database | |
US7587608B2 (en) | Method and apparatus for storing data on the application layer in mobile devices | |
US20070079140A1 (en) | Data migration | |
US8793797B2 (en) | Secured database system with built-in antivirus protection | |
US7266699B2 (en) | Cryptographic infrastructure for encrypting a database | |
US20090225987A1 (en) | Key rotation | |
CN105426775B (zh) | 一种保护智能手机信息安全的方法和系统 | |
US10250613B2 (en) | Data access method based on cloud computing platform, and user terminal | |
Ding et al. | Model-driven application-level encryption for the privacy of e-health data | |
US20130091357A1 (en) | Database management system and encryption method performed in database | |
EP2241986B1 (en) | Privacy and confidentiality preserving schema mapping repository for mapping reuse | |
US8769302B2 (en) | Encrypting data and characterization data that describes valid contents of a column | |
WO2007038509A2 (en) | System and method for protecting sensitive data | |
CN113360478B (zh) | 一种多数据源集成方法 | |
CN117971798A (zh) | SaaS软件多技术融合的数据隔离方法、系统及设备 | |
CN115630378A (zh) | 细粒度一体化数据存储安全密码防护方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |