2. 数据源管理

2.1. 数据库工具类

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

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

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

2.1.1 原生api封装接口

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

2.1.2 rmi接口

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

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

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

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

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

2.1.3 thrift接口

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

2.1.4 restful接口

截止到编写本文档时,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包文件。

2.2. 数据源配置管理

2.2.1 功能介绍

当我们决定将某个数据库接入本系统中时,需要先注册其数据源信息,其实就是数据库的连接信息。截止到编写本文档时,系统已经允许接入以下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 数据源分类信息
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

其他数据库

2.2.3 数据源连接选项

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

数据源类型

连接选项名称

连接选项描述

关系数据库

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 数据源授权机制

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

2.2.4.1 数据源访问授权

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

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

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

查看用户的授权动作。

删除用户的授权动作

删除授权用户

添加授权用户

2.2.4.2 数据源动作授权

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

【数据库动作】

【文件系统动作】

【未完待续】

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

大数据之多数据源综合管理系统:数据源配置管理相关推荐

  1. 原创程序|大疆无人机照片视频综合管理系统

    之前的文章共享了大疆无人机照片位置.覆盖范围及视频轨迹提取工具(见本文末相关链接),可以提取大疆无人机照片的拍摄位置和正射照片的地面覆盖范围以及大疆无人机视频录制时的飞行轨迹,为无人机照片和视频快速分 ...

  2. 大数据征信需把控 数据源的“量”与“度”

    随着互联网的发展,大数据征信已被越来越多地运用到金融领域,互联网金融平台利用大数据判断用户的信用记录是否良好,从而授予用户相应的信贷额度.传统银行也在加紧布局大数据网络,试图与互联网平台接轨.与传统信 ...

  3. hdfs mv命令_大数据入门:HDFS文件管理系统简介

    Hadoop作为大数据主流的基础架构选择,至今仍然占据着重要的地位,而基于Hadoop的分布式文件系统HDFS,也在大数据存储环节发挥着重要的支撑作用.今天的大数据入门分享,我们就主要来讲讲HDFS分 ...

  4. 大数据展示html模板_澳门媒体参观国家大数据(贵州)综合试验区展示中心

    多彩贵州网讯(记者 彭典)11月22日,来自澳门日报.澳广视等14家澳门主流媒体"脱贫攻坚贵州行"主题采访团来到最后一站--国家大数据(贵州)综合试验区展示中心(以下简称" ...

  5. 创意信息总经理何文江:打造大数据产品和解决方案综合提供商

    来源:中国证券报·中证网 作为大数据产品和综合解决方案的提供商,创意信息将公司发展融入国家"新基建"战略,突破国外软硬件厂商卡脖子式垄断,加快信创.大数据5G等方向的产品及综合解决 ...

  6. axure9数据统计插件_WMDA:大数据技术栈的综合实践

    一.概述 WMDA是58自主开发的用户行为分析产品,同时也是一款支持无埋点的数据采集产品,只需要在第一次使用的时候加载一段SDK代码,即可采集全量.实时的PC.M.APP三端以及小程序的用户行为数据. ...

  7. 大数据_Flink_数据处理_流式数据源测试---Flink工作笔记0010

    前面我们已经写好了,流式数据处理的案例了. 但是我们执行的时候可以看到,我们输入的流,实际上是我们准备的一个文件对吧. 一个Text文件,实际上不算是一个流式数据源 那么正式环境的时候,一般都是,用流 ...

  8. 【工业大数据】工厂大数据之数据源分析;如何挖掘并驾驭大数据的价值,成为“大数据企业”?

    众所周知,工业大数据是工厂智能化水平提升的关键路径,而数据源的分析和管理是工厂大数据的基础,理清理顺数据源也是实施工厂大数据的第一步.本文就对工厂的数据源进行简要分析. 数据源的划分 以下从两个维度对 ...

  9. 王叁寿:只有数据源服务商才有资格构建大数据生态圈

    王叁寿认为,如同在大数据价值变现过程中,数据源始终占有绝对重心一样(王叁寿图),未来只有数据源服务商,才有资格构建大数据生态圈. 数据源服务商产业链核心位置,无可替代 一个完整的大数据生态圈,由数据源 ...

  10. 基于大数据技术的综合数据分析平台

    对于企业来说,利用大数据技术建立综合数据分析平台有利于企业内的管理人员更好地掌握企业的实际情况,有效控制企业的经营成本,提高企业的经济效益,同时全面提高企业的管理水平,对企业的发展有非常积极的促进作用 ...

最新文章

  1. 在 Node.js 中用子进程操作标准输入/输出
  2. eureka心跳_Eureka工作原理及心跳机制
  3. 推荐系统的作用和问题
  4. 从一个页面跳转到用swiper写的全屏滚动页面的指定位置
  5. shell脚本备份mysql数据库(for循环)
  6. 前端接收pdf文件_雷达接收机的噪声系统及灵敏度
  7. Java API 文档中的接口方法和抽象方法,有什么区别?
  8. docker rabbitmq php扩展,Docker开启RabbitMQ延时消息队列
  9. win7系统如何更改密码策略
  10. 拒绝职场危机,程序员最核心的竞争力是什么?
  11. python 读shell
  12. 编程修养 阅读笔记三
  13. 学python可以做什么-学会Python后都能做什么?介绍五种Python的实用场景
  14. Atitit 遍历 与循环模式大总结 目录 1.1. 遍历的对象 数组 或对象 或对象数组 1 2. 遍历的概念 2 2.1. 祖先后代同胞 过滤 2 3. 常见的遍历四种方式 2 3.1.
  15. 绑定事件和解绑事件的方法
  16. UTF-8与GBK字符之间的转换
  17. 鼠标悬停出现二维码动画放大,url转二维码
  18. 高德地图功能点使用整理
  19. 【ESP8266】ESP8266的MQTT客户端搭建教程(基于NONS_SDK_v2.0)
  20. 74HC245引脚定义 使用方法

热门文章

  1. 一个程序段两个小问题
  2. 基于OpenCV的红绿灯识别代码解析
  3. 基于tetgen对曲面分隔的box区域做限定四面体剖分
  4. python2项目出现的错误(UnicodeDecodeError)
  5. 二:SpringMVC知识整理
  6. 451 Sort Characters By Frequency 根据字符出现频率排序
  7. 算法复习——带修改莫队(bzoj2453)
  8. 4556: [Tjoi2016Heoi2016]字符串
  9. 坚果pro2刷机分享
  10. android kl文件