博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据之多数据源综合管理系统:数据源配置管理
阅读量:5104 次
发布时间:2019-06-13

本文共 5699 字,大约阅读时间需要 18 分钟。

基本上每种数据库都有对应的java开发jar包,为了规范使用和便于分发,我们会对每种数据库提供的java api进行封装,封装后的工具类将作为数据库管理、数据通道、数据迁移的基础。

封装数据库工具类好处有很多:规范编程人员的开发规范、易于培训、利于维护调试、便于分发,在开发成本、开发效率和安全性等多个方面可以进行有效控制。坏处就是:在某些地方可能会过度封装,影响接口的执行效率。不过在多方权衡后,我们仍然认为,在设计这样一个复杂的数据源管理系统时,进行数据库工具类的封装是不得不做的事情。

工具类中的接口按照技术架构分为以下几种:原生api封装接口、rmi接口、thrift接口。我们将在第三章节“数据通道管理”中详细介绍各种技术架构的接口服务。

封装接口

原生api封装接口是在各种数据库官方api接口的基础上进行的二次轻微封装,封装的目的,一是制定开发规范;二是便于接口调用和维护(譬如如果采用原生hadoop api接口,则需要引用几十个jar文件);三是为其他类型的接口提供设计基础。原生api封装接口一般只在设计“多数据源综合管理系统”时使用,所以在下面各个“工具类”章节中我们将不再详细介绍原生api封装接口,如果您有兴趣,可以参考数据库官方提供的api手册。

接口

rmi接口是我们在各数据库官方api接口的基础上设计的针对java语言的接口服务,在设计的过程中,我们添加了以下几种特性。

第一, 将rmi服务进行逻辑上的分层,三层分别为:通道、服务、接口;基于此种逻辑上的划分,我们为每种数据库设计了rmi通道模板,通过这些模板,我们可以快速地不编写任何代码地构建出rmi通道,并且同一数据源可以有多个rmi通道。通道包括多个服务,服务包括多个接口。并且rmi通道服务的各种配置信息(譬如服务名、路径、端口号等)以及启动关闭等操作等均由“多数据源综合管理系统”配置管理,客户端只需引用jar包文件即可访问rmi服务通道。

第二, 具有灵活的授权控制机制。针对通道、服务、接口三个层次,可以在用户、IP地址两个层面上进行授权控制。

第三, 接口访问日志监控机制,系统会记录下接口调用的详细信息,包括用户、客户端IP、时间、接口名称等。

第四, 在线用户监控机制,系统会记录访问rmi通道的在线用户信息。

接口

thrift接口是我们在各数据库官方api接口的基础上设计的针对跨语言的接口服务。截止到编写本文档时,thrift接口正在设计和测试中,后续将会更新发布。

接口

截止到编写本文档时,restful接口正在设计和测试中,后续将会更新发布。

下表是我们已经封装后的数据库工具类(均包含原生api封装接口和rmi接口,暂不包括thrift等其他接口)。

名称

描述

hnepri-hbase-template-v1.0.jar

HBase数据库工具类,包括命名空间管理、表管理、写数据、读数据、分页检索、过滤器等接口方法。支持非kerberos和kerberos两种版本。

hnepri-hdfs-template-v1.0.jar

HDFS分布式文件系统工具类,包括目录文件管理、文件上传下载、文件权限设置等接口方法。支持非kerberos和kerberos两种版本。

hnepri-neo4j-template-v1.0.jar

Neo4j图数据库工具类,包括图数据模式管理、节点管理、关系管理、索引管理、路径管理、Cypher操作等接口方法。

hnepri-mongodb-template-v1.0.jar

MongoDB文档数据库工具类,包括数据库管理、集合管理、文档管理、用户管理、索引管理等接口方法。

hnepri-hve-template-v1.0.jar

Hive数据仓库工具类,包括数据库管理、表视图管理、HBasse表映射管理、数据检索等接口方法。支持非kerberos和kerberos两种版本。

hnepri-bricklayer-common-v2.0.jar

基础工具类(包含关系数据库工具类)。

hnepri-redis-template-v1.0.jar

Redis键值数据库工具类,包括key管理、List管理、Hash管理、Set管理等接口方法。

【注】在下面的几个章节中,我们将陆续穿插讲解各个数据库工具类的设计细节,并在发布的试用系统中分发对应的工具类jar包文件。

当我们决定将某个数据库接入本系统中时,需要先注册其数据源信息,其实就是数据库的连接信息。截止到编写本文档时,系统已经允许接入以下8种类型的数据库,分别为:关系数据库(Oracle、MySQL等)、HBase、HDFS、Hive、Neo4j、MongoDB、Redis等,其他类型的数据库正在设计或者测试中。可以为一个数据库配置多个数据源。功能界面如下所示:

其中, 图标表示此数据源尚未连接,此时字体颜色为黑色; 图标表示此数据源已经连接,此时字体颜色为蓝色。当点击 图标时,将弹出“登录”窗口,并显示部分连接选项信息,用户只需点击“登录”即可。当点击图标时,将断开与数据源的连接,此时所有与此数据源相关的数据访问操作都将中断,包括数据访问、数据迁移、数据通道等,所以一旦数据源启动,就不能随随便便停止或者断开。

2.2.1.1 注册数据源

数据源基本信息如下表所示:

属性

描述

名称

数据源名称;一般采用具有实际意义的英文单词表示。数据源名称由英文字母、数字、下划线等组合而成,必须具有唯一性,并且建议用具有实际意义的字词进行命名,譬如“hnepri_test_hbase”,表示公司的测试的HBase集群。【必填项】

标题

数据源标题;数据源中文标题。

种类

数据源所属数据库种类。

验证登录

此数据库是否需要登录验证。

服务器

部署服务器信息。

数据库版本

数据版本信息。

安装类型

数据库安装类型信息。

启用状态

此数据库在系统中是否已经启用(此属性暂时未使用到)。

备注

数据源描述信息。

新增或者编辑数据源基本信息后,可以配置数据源的连接选项信息,然后就可以进行数据库连接测试。可以在“数据源配置管理”页面中点击图标连接数据库,也可以在对应的管理页面中点击图标连接数据库。

功能截图如下所示:

2.2.1.2 删除数据源

用户拥有删除自己创建的数据源的权利,但是无权删除为其授权分配的可访问的数据源。数据源删除之前,需要先删除删除连接配置选项信息。删除数据源后,将同时删除授权信息、日志信息等。其他的关联数据,譬如数据通道信息、数据迁移方案信息等,需要手动删除。

2.2.1.3 登录/注销数据源

登录连接数据源,是基于此数据源进行数据访问操作的第一步,也是后续数据通道、数据迁移等正常运行的基础。数据源登录后,连接对象会一直保存在内存中,只有非常非常微小的概率,会出现连接对象超时中断、损坏等异常,一般情况下,只需重新登录即可解决。

注销断开数据源,会注销数据库连接对象并释放资源,同时从数据源连接列表中删除。

2.2.2.1 数据源种类

DataBaseCategoryHelper

类型(Type

种类(Category

名称

关系数据库

Oracle

MySQL

分布式文件系统

HDFS

列数据库

HBase

图形数据库

Neo4j

键值数据库

Redis

文档数据库

MongoDB

CouchDB

对象数据库

db4o

Versant

XML数据库

Berkeley DB XML

BaseX

其他数据库

Cassandra

Voldemort

2.2.2.2 数据源类型

DataBaseTypeHelper

代码

名称

Sql

关系数据库

DFS

分布式文件系统

Column

列数据库

Graph

图形数据库

KeyValue

键值数据库

Document

文档数据库

Object

对象数据库

XML

XML数据库

Other

其他数据库

 

下表为数据源的连接选项信息表:

数据源类型

连接选项名称

连接选项描述

关系数据库

JDBC数据库连接字符串

关系数据库库连接字符串,譬如针对Oracle,其连接字符串为“jdbc:oracle:thin:@10.230.4.12:1521:orcl”。

目前支持的关系数据库包括:ORACLE,MYSQL,SqlServer,DB2,PostgreSQL,Sybase,Informix,Access等8中,其中Oracle和MySQL已经经过测试,其他几种未完全测试。【必填项】

数据库登录用户名称

数据库登录用户名称。【必填项】

数据库登录用户密码

数据库登录用户密码。【必填项】

HDFS

coreSite文件名

core-site.xml文件,一般将此文件放在classes目录下,如下图所示:

【必填项】

hdfsSite文件名

hdfs-site.xml文件,一般将此文件放在classes目录下。通过hdfs工具类连接HDFS集群时会根据这两个属性读取xml文件,并初始化Configuration对象。【必填项】

启用Kerberos

hdfs集群是否启用了kerberos机制。如果启用了则输入true,否则输入false。默认情况下视为未启用kerberos机制。

Kerberos用户名

当启用Kerberos机制时,必须配置Kerberos用户名。

Kerberos配置文件

当启用Kerberos机制时,必须配置Kerberos配置文件。文件后缀名为conf,譬如krb5.conf,此文件可以放在本地磁盘的任何目录中,配置时输入完整的文件路径即可。

Kerberos证书密钥文件

当启用Kerberos机制时,必须配置Kerberos证书密钥文件。文件后缀名keytab,譬如ZK00001.keytab,此文件可以放在本地磁盘的任何目录中,配置时输入完整的文件路径即可。

HBase

Master主机名/IP地址

HBase Master主机名称,一般不建议用IP地址。【必填项】

zookeeper监听端口号

Zookeeper服务的监听端口号,一般为2181。【必填项】

zookeeper实例部署地址

Zookeeper服务部署主机名称,一个集群一般至少要有三个zookeeper。主机名称之间用英文逗号分割。当zookeeper服务主机较少时,可以使用此种方式,如果zookeeper服务主机较多(譬如超过10个等),可以选择采用下面的“zookeeper实例文件路径”进行配置。

zookeeper实例文件路径

当zookeeper服务主机较多时,可以将这些主机名称按照每行一个的方式组织存储在文本文件中,然后将此选项配置为文件的完整路径即可。工具类会自动解析实例文件,并初始化Configuration。谨记:zookeeper实例部署地址和zookeeper实例文件路径只能二选一。

coreSite文件名

请参考HDFS对应选项。

hdfsSite文件名

请参考HDFS对应选项。

hbaseSite文件名

hbase-site.xml文件,一般将此文件放在classes目录下。

启用Kerberos

请参考HDFS对应选项。

Kerberos用户名

请参考HDFS对应选项。

Kerberos配置文件

请参考HDFS对应选项。

Kerberos证书密钥文件

请参考HDFS对应选项。

Neo4j

数据库服务器IP地址

数据库服务器IP地址。【必填项】

数据库服务器端口号

数据库服务器端口号,默认是7474。【必填项】

数据库登录用户名称

数据库登录用户名称。【必填项】

数据库登录用户密码

数据库登录用户密码。【必填项】

MongoDB

数据库服务器IP地址

数据库服务器IP地址。【必填项】

数据库服务器端口号

数据库服务器端口号,默认是27017。【必填项】

数据库登录用户名称

数据库登录用户名称。【备用选项】

数据库登录用户密码

数据库登录用户密码。【备用选项】

Hive

JDBC数据库驱动

org.apache.hive.jdbc.HiveDriver【必填项】

JDBC数据库连接字符串

jdbc:hive2://10.230.5.2:10000/default?characterEncoding=UTF-8【必填项】

数据库登录用户名称

数据库登录用户名称【必填项】

数据库登录用户密码

数据库登录用户密码【必填项】

Redis

数据库服务器IP地址

数据库服务器IP地址。【必填项】

数据库服务器端口号

数据库服务器端口号,默认是6379。【必填项】

数据库登录用户名称

数据库登录用户名称。【备用选项】

数据库登录用户密码

数据库登录用户密码。【备用选项】

 

数据源授权机制仅仅是针对本系统内而言,而并非指数据源本身的授权验证机制。数据源授权机制主要分为两个层级。第一,用户是否有权访问数据源,称之为数据源访问授权。第二,用户拥有哪些数据源动作,称之为数据源动作授权。

2.2.4.1 数据源访问授权

这个很容易理解,如果用户没有数据源访问授权,将无法读写数据,更别说数据源管理操作了,同样也将无法进行针对此数据源进行数据迁移操作。

系统管理员拥有访问系统内已注册的所有数据源的权利,可以为任何数据源授权访问用户。

非系统管理员,只能访问自己注册和被授权访问的数据源,可以为自己注册的数据源授权访问用户。

查看用户的授权动作。

删除用户的授权动作

删除授权用户

添加授权用户

2.2.4.2 数据源动作授权

在本系统中,将HDFS分布式文件系统也视为一种数据源,但是针对它的动作却和正规意义上的数据库动作不同,而更倾向于常规的文件系统动作。如下图所示:

【数据库动作】

【文件系统动作】

 

【未完待续】

转载于:https://www.cnblogs.com/shangbingbing/p/6410441.html

你可能感兴趣的文章
10_android打包的过程
查看>>
MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?...
查看>>
我最宏大的个人愿望
查看>>
北漂周记--第5记--拼命编程
查看>>
比赛总结一
查看>>
SpringBoot项目打包
查看>>
JSP的3种方式实现radio ,checkBox,select的默认选择值
查看>>
Linux操作系统 和 Windows操作系统 的区别
查看>>
《QQ欢乐斗地主》山寨版
查看>>
文件流的使用以及序列化和反序列化的方法使用
查看>>
Android-多线程AsyncTask
查看>>
第一个Spring冲刺周期团队进展报告
查看>>
C++函数基础知识
查看>>
红黑树 c++ 实现
查看>>
Android 获取网络链接类型
查看>>
报表服务框架:WEB前端UI
查看>>
5.9UDP客户端服务器-基于OK6410
查看>>
java自学基础、项目实战网站推荐
查看>>
软件包的使用
查看>>
linux中启动与终止lnmp的脚本
查看>>