大數據之多數據源綜合管理系統:數據源配置管理


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目錄下,如下圖所示:

xml列表

【必填項】

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分布式文件系統也視為一種數據源,但是針對它的動作卻和正規意義上的數據庫動作不同,而更傾向於常規的文件系統動作。如下圖所示:

【數據庫動作】

數據庫授權動作

【文件系統動作】

hdfs文件系統授權動作

 

【未完待續】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM