1.1. 系统背景
最初的时候,我们只是想设计一个Web版本的HBase数据浏览器,类似于PL/SQL那样便捷,后来又添加了HDFS分布式文件系统浏览器,再后来又添加了Hive数据仓库浏览器功能。这个时候,hadoop集群由一个扩张到三个,大数据业务系统所涉及到的NoSQL数据库也越来越多,譬如Neo4j、MongoDB、Redis等,所涉及的批处理和流计算平台也从最初的只有MapReduce,又相继增加了Spark和Storm等。
原本,只是抱着学习和技术探索的态度进入hadoop生态技术圈的,也并没有指望在正式的生产环境中进行深度应用,但是现在,让我们措手不及的是要在很短的时期内进行数据库技术的转型,面对即将全面铺开的业务应用,以及由此导致的在多种数据库和计算平台的频繁切换,让我们逐渐生出些许烦躁和厌恶。
于是,决定做一些整合性的开发,“工欲善其事,必先利其器”,希望在战斗即将打响前,自己有一套稍稍完整的装备,不至于措手不及和手忙脚乱。这就是“大数据之多数据源综合管理系统”设计的初衷。“综合管理系统”,听起来这是一个多么庞大的系统,其实呢,这只是对一堆难以梳理的技术的一种懒惰的叫法,我们相信,很多人都从事开发过类似于“综合管理系统”这样的项目,它就是一种混混沌沌的状态,在叫法上,你我大可不必斤斤计较。
系统的设计基本上分为五个阶段。
第一,数据源管理。理想的构建目标中,系统将囊括业务系统所涉及到的所有的数据库,包括关系数据库(Oracle、MySql等)和非关系数据库(HBase、HDFS、Hive、Neo4j、MongoDB、Redis等等),以及其他不断涌现的新的数据存储技术。希望能够在这样一个系统中,实现对多种数据库的统一管理,包括数据库连接配置、数据库对象管理、数据浏览器、数据维护、访问授权管理等,免去在多种独立工具之间的频繁切换。
第二,数据通道管理。数据该如何写入数据库呢?外部系统该如何访问数据呢?在读写数据时该如何平衡速度、安全和传输量三者呢?如何解决跨语言应用的问题呢?这就是数据通道需要解决的问题。其实,刚开始的时候,设计数据通道的想法并非是基于以上目标,而只是不愿意在访

