数据分析技术最早可以追溯到关系型数据库,当时所有的数据分析都是在关系型数据库例如oracle、mysql上面完成。随着时间推移,信息行业的大力发展,数据越来越多。单机型的技术无法满足海量数据处理,尤其分析处理和事务处理共处一室,数据分析活动处理高峰时占有大量的系统资源影响、甚至阻碍事务处理不能运行。
数据分析技术最早可以追溯到关系型数据库,当时所有的数据分析都是在关系型数据库例如oracle、mysql上面完成。随着时间推移,信息行业的大力发展,数据越来越多。单机型的技术无法满足海量数据处理,尤其分析处理和事务处理共处一室,数据分析活动处理高峰时占有大量的系统资源影响、甚至阻碍事务处理不能运行。
为了保障信息系统业务运行稳定,最好把数据分析活动剥离分开,把数据从原来的地方转到另外一个地方,目前业界至今还在使用该项解决方案,它就是ETL。通过抽取(Extract)、转换(Transform)、加载(Load)各种各样数据源中的数据,结果置放到另外一个地方 。经过 ETL 这一整套流程,将加工后的数据集中保存在专题数据仓库中,供数据分析师或业务用户使用。
随着数据进一步的增长,ETL方案的基础上产生了ELT。再随着数据再进一步的增长,产生了数据复制技术。下面我们图示三种技术的区别。
总结三种技术的共性,打通数据孤岛之间的壁垒,底层技术都是数据传输搬送,ETL是先把数据处理后再传输,而ELT是先传输后再处理,即使是数据复制,它能识别数据源的增量变化数据的,也要把数据放到管道 ,根据设定的程序,源源不断同步到目标端,确认数据持久化后才能进一步的处理。三种数据集成模式,各有各的特点和优势。在不同的业务场景,三种模式可以交替使用,互相弥补不足。
大数据时代,数据增长速度远超人们想像,我们说4V ,规模性、多样性、高速性、价值性。传统的数据集成方式数据传输和搬送毕竟存在损耗,而且处理流程启动笨重耗时。为了解决数据孤岛问题,把所有的孤岛都装入一个大岛里面,随着业务应用的增多,大岛又变成另外一个数据孤岛。
有没有一种系统架构简洁、访问入口统一、系统集成度更好的解决方案呢?下面就是我们要聊的数据虚拟化,由于我们的是原始技术创新,我们更愿意用数据联邦一词代替更形象。
数据虚拟化(我们称为联邦)是指隐藏底层数据源(关系型数据库、NOSQL、NEWSQL、数据仓库)等技术访问细节,将数据源的抽象和聚合要求将物理资源抽象出来,对外为用户提供一个统一的数据接口。用户在定义数据源的初始化配置文件后,能够自由查询和操作各个目标源的数据源,一言简之,数据虚拟化技术实现前端与后端多源异构的解耦,轻量级简单解决数据集成多源异构的困难。
数据虚拟化本身具备核心处理技术,但是容许底下管理数据源保留自治处理的能力。数据虚拟化集群支持分布、集中、自治与异构,由一批互相协作但保持各自自治性的数据系统组成,类似联邦,中央既统一调控,又保留特殊地区独立自治性。
以中国移动为例,北京总公司称为集团,众省市之首,主要负责设定标准、设定目标,所有省市遵其法执行目标。但是对于广东移动有例外,原因在于广东移动业绩是最好的,所以允许按照实际情况发展,保留广东移动的独立自治。数据虚拟化的一个亮点特征是保持一个单元数据库系统继续自治操作的同时也可以参加联邦系统活动。
柏睿数据定义的数据虚拟化是多种数据处理技术并存,分布式内存计算引擎担当力,对外提供统一访问接口,深度解析请求内容进行智能调度,第一优先内存查找数据,内存找不到再往缓存里面找数据,缓存找不到数据下源利用数据源自带的引擎机制查找数据,查询数据优先保存在内存,内存放不下缓存在硬盘空间。内存、缓存、数据源之间的协调非常重要,每一次访 问意味着内存、硬盘、缓存、数据源的联动,好的联动机制能够最大化减少无谓的数据传输搬送,提升数据执行性能。
产品方面可以控制的能力是内存和缓存,柏睿数据在内存使用的技术是分布式内存MPP处理引擎,把所有的集群节点汇聚集成一个计算资源池,对数据进行高速计算。为了使缓存能够借助最强大的平台存储常用数据集和结果的本地副本,并在可能情况下使用该平台加快查询执行速度,抹平数据延迟之间的差异,高速缓存的技术实现可以通过内存缓存、硬盘缓存、数据库缓存。
柏睿数据认为,数据虚拟化的等级划分可分为内存缓存、硬盘缓存、数据库缓存三级等。目前,柏睿数据支持三种级别的缓存,Rapids Ferderation支持hadooop,即允许把大数据缓存HDFS上面。内存缓存的特点是性能快,但是内存是有限的资源。当高速缓存的数据存储在硬盘上时,它可以存储在文件中或者数据库表中。如果存储在文件中,数据虚拟化服务器使用的是快速查询处理优化的专有格式结构。这些文件由数据虚拟化服务器本身进行管理。如果数据存储在数据库中,这意味着高速缓存数据存储在专用的表中。这种表是由数据虚拟化服务器创建的,数据虚拟化服务器同样创建该表上的一些索引来优化查询。
大数据时代数据来源丰富多采,有互联网企业、电子商务、微博微信、政府网站、物联网、智慧城市等等。云计算通过为数据消费者提供动态、按需、自动化的存储、分析、可视化等数据服务,DAAS不是一种新的技术,而是一种新的数据使用模式,它的目标是使数据消费者在有条件的范围内可以快速自由使用各种各样的数据。在对数据统一建模的基础上,将各类数据源进行封装,对外提供标准化、模式化的数据服务交付,满足用户不同的数据服务需求。
功能需求
Data Cloud建设技术选型非常重要,既要发挥原先数据系统的优势,又要联邦各类数据源去做有目标的事,如果产品不满足要求,dataCloud要额外做开发,下面dataCloud的数据服务的需求功能以及RapidsDB本身提供的功能。
架构规划
架构规划主要对Data Cloud的规划部署设计,除了最基本的IAAS基础设施资源池外,还包括资源的规划以及服务的分配。Data Cloud根据面向的受众不同,可以分为共享数据服务、私有数据服务、大数据服务、专有数据服务等等。
共享数据服务资源池
首先需要进行共享数据库、应用私有库和非辈结构化数据存储的划分。对于共享数据库又包括了PaaS技术平台的数据库、SOA服务总线的数据库和业务应用的共享主数据库。在共享数据库中,SOA数据库和业务共享库将承受巨大的数据访问量和并发量。对于私有数据库主要为单个业务应用或业务组件服务,影响面相对较小,但是在规划设计时仍然需要考虑数据库的弹性扩展能力。对于NOSQL和HDFS存储 ,也要单独规划硬件设备 进行支撑,这类的 数据库主要是为PAAS技术平台提代的缓存、文件、消息等技术服务提供底层的数据持久化存储。
共享服务资源池主要包括了NOSQL数据库服务、微服务、消息缓存的技术服务、业务服务,数据服务等,由于共享性质肯定多人访问,业务共享库将承受巨大的访问量和并发量。平台必须提供足够多的资源作支持。共享资源池必须具备高可靠性,建议是需要单独划分硬件和分区进行管理。
私有数据服务资源池
私有服务资源池主要包括了RDBMS数据库服务、VPN服务、业务服务,数据服务等,私享数据 必然重视安全性,数据访问通道通VPN TUNNEL,私库数据加密,数据输出审计追踪。单独设置DMZ隔离区网络,对于需要隔离的应用或数据均放置在隔离区网络。平台对客户提供细粒度的数据资源访问,对关键数据实现数据脱敏处理。
大数据服务资源池
大数据服务资源池主要包括了HADOOP组件服务、批计算服务、流计算服务、业务服务,数据服务等,由于汲及返回的数据量大,数据传输必须耗费大量的时间,大数据服务池对用户提供的是发布订阅服务。客户的需求通过WEB Service的方式实现注册登记,后面通过底层数据源下推,数据源结果往上提纯到缓存再到内存,执行完成异步通知数据总线。
专有数据服务资源池
专有服务资源池主要包括了RDBMS数据库服务、NOSQL服务、微服务、认证服务、业务服务,数据服务等,专有服务兼具共享服务和私有服务的特点,即重视多并发的性能响应,也重视安全保护。主数据管理服务就隶属于专有服务,主数据是专门为业务系统服务的,作为所有的业务系统的统一数据源,主数据负责从各个数据源头汇聚数据,梳理数据,规范数据,再把数据分发到业务系统上。
物理实现
在进行网络优化和服务器布署时需要以下三点:
1. RapidsDB服务器需要优化内核参数和系统参数。
2. RapidsDB服务器必须优化网络,建议使用万兆光纤网卡,便于网络IO运行速度跟上内存速度。否则网络会是集群性能的瓶颈。
3. 核心网络交换机必须是两个,一主一备,中间关联做交叉线汇聚,提高网络背板处理能力。RapidsDB服务器网格禁止做负载均衡模式,只容许做主备避免,因为负载均衡会有多余的流理经过交叉线,造成集群负荷。
代码示例
Connector example: oracle mysql hadoop CREATE CONNECTOR oracleconn TYPE ORACLE WITH CONNECTIONSTRING='jdbc:oracle:thin:@x.x.x.x:1521:qas', TRACE_META='YES', SCHEMA_METADATA='/home/rapids/oraschema.sql', USER='sapbi', PASSWORD='sapbi90' NODE * CATALOG * SCHEMA * TABLE * ; CREATE CONNECTOR MYSQLCONN TYPE JDBC WITH USER='XX', CONNECTIONSTRING='jdbc:mysql://x.x.x.x:3306/item', PASSWORD='bigdata' NODE NODE1 CATALOG * SCHEMA * TABLE * ; CREATE CONNECTOR HDFSCONN TYPE HADOOP WITH FORMAT='delimited', HDFS='hdfs://x.x.x.x:8020', DELIMITER='|' NODE * CATALOG * SCHEMA * TABLE HDFSORDERS WITH FILE='/tmp/MKPF/*' USING ( ID integer, MBLNR varchar, MJAHR varchar, VGART varchar, BLART varchar, BLAUM varchar, BLDAT varchar, BUDAT varchar, CPUDT varchar, CPUTM varchar, PRODUCT varchar, USNAM varchar, TCODE varchar, XBLNR varchar, BKTXT varchar, PRICE integer, FRBNR varchar, WEVER varchar, XABLN varchar, AWSYS varchar, BLA2D varchar, TCODE2 varchar, BFWMS varchar, EXNUM varchar, SPE_BUDAT_UHR varchar, SPE_BUDAT_ZONE varchar, LE_VBELN varchar, SPE_LOGSYS varchar, SPE_MDNUM_EWM varchar, GTS_CUSREF_NO varchar, KNUMV varchar, XCOMPL varchar) ; Run SQL: Select product,sum(price) from oracleconn.items, left join mysqlconn.items on oracleconn.items.id= mysqlconn.items.id left join hdfsconn.items on mysqlconn.items.id= hdfsconn.items.id group by product; |