1.1. 系統(tǒng)背景
最初的時(shí)候,我們只是想設(shè)計(jì)一個(gè)Web版本的HBase數(shù)據(jù)瀏覽器,類似于PL/SQL那樣便捷,后來(lái)又添加了HDFS分布式文件系統(tǒng)瀏覽器,再后來(lái)又添加了Hive數(shù)據(jù)倉(cāng)庫(kù)瀏覽器功能。這個(gè)時(shí)候,hadoop集群由一個(gè)擴(kuò)張到三個(gè),大數(shù)據(jù)業(yè)務(wù)系統(tǒng)所涉及到的NoSQL數(shù)據(jù)庫(kù)也越來(lái)越多,譬如Neo4j、MongoDB、Redis等,所涉及的批處理和流計(jì)算平臺(tái)也從最初的只有MapReduce,又相繼增加了Spark和Storm等。
原本,只是抱著學(xué)習(xí)和技術(shù)探索的態(tài)度進(jìn)入hadoop生態(tài)技術(shù)圈的,也并沒(méi)有指望在正式的生產(chǎn)環(huán)境中進(jìn)行深度應(yīng)用,但是現(xiàn)在,讓我們措手不及的是要在很短的時(shí)期內(nèi)進(jìn)行數(shù)據(jù)庫(kù)技術(shù)的轉(zhuǎn)型,面對(duì)即將全面鋪開的業(yè)務(wù)應(yīng)用,以及由此導(dǎo)致的在多種數(shù)據(jù)庫(kù)和計(jì)算平臺(tái)的頻繁切換,讓我們逐漸生出些許煩躁和厭惡。
于是,決定做一些整合性的開發(fā),“工欲善其事,必先利其器”,希望在戰(zhàn)斗即將打響前,自己有一套稍稍完整的裝備,不至于措手不及和手忙腳亂。這就是“大數(shù)據(jù)之多數(shù)據(jù)源綜合管理系統(tǒng)”設(shè)計(jì)的初衷?!熬C合管理系統(tǒng)”,聽起來(lái)這是一個(gè)多么龐大的系統(tǒng),其實(shí)呢,這只是對(duì)一堆難以梳理的技術(shù)的一種懶惰的叫法,我們相信,很多人都從事開發(fā)過(guò)類似于“綜合管理系統(tǒng)”這樣的項(xiàng)目,它就是一種混混沌沌的狀態(tài),在叫法上,你我大可不必斤斤計(jì)較。
系統(tǒng)的設(shè)計(jì)基本上分為五個(gè)階段。
第一,數(shù)據(jù)源管理。理想的構(gòu)建目標(biāo)中,系統(tǒng)將囊括業(yè)務(wù)系統(tǒng)所涉及到的所有的數(shù)據(jù)庫(kù),包括關(guān)系數(shù)據(jù)庫(kù)(Oracle、MySql等)和非關(guān)系數(shù)據(jù)庫(kù)(HBase、HDFS、Hive、Neo4j、MongoDB、Redis等等),以及其他不斷涌現(xiàn)的新的數(shù)據(jù)存儲(chǔ)技術(shù)。希望能夠在這樣一個(gè)系統(tǒng)中,實(shí)現(xiàn)對(duì)多種數(shù)據(jù)庫(kù)的統(tǒng)一管理,包括數(shù)據(jù)庫(kù)連接配置、數(shù)據(jù)庫(kù)對(duì)象管理、數(shù)據(jù)瀏覽器、數(shù)據(jù)維護(hù)、訪問(wèn)授權(quán)管理等,免去在多種獨(dú)立工具之間的頻繁切換。
第二,數(shù)據(jù)通道管理。數(shù)據(jù)該如何寫入數(shù)據(jù)庫(kù)呢?外部系統(tǒng)該如何訪問(wèn)數(shù)據(jù)呢?在讀寫數(shù)據(jù)時(shí)該如何平衡速度、安全和傳輸量三者呢?如何解決跨語(yǔ)言應(yīng)用的問(wèn)題呢?這就是數(shù)據(jù)通道需要解決的問(wèn)題。其實(shí),剛開始的時(shí)候,設(shè)計(jì)數(shù)據(jù)通道的想法并非是基于以上目標(biāo),而只是不愿意在訪