版权归原作者所有,如有侵权,请联系我们

[科普中国]-数据虚拟化

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

定义

数据虚拟化(Data virtualization)– 数据整合的过程,以此获得更多的数据信息,这个过程通常会引入其他技术,例如数据库,应用程序,文件系统,网页技术,大数据技术等等。

数据虚拟化概念图如图所示1。

数据虚拟化(data virtualization)是用来描述所有数据管理方法的涵盖性术语,这些方法允许应用程序检索并管理数据,且不需要数据相关的技术细节,例如它格式化的方式或物理位置所在。

如果你在Facebook之类的社交网站存储照片,你也许会对数据虚拟化(data virtualization)的概念很熟悉。当你从桌面电脑上传照片到Facebook时,你必须告诉上传工具这些照片的位置信息—照片的文件路径。但是一旦它们已经上传到Facebook,你不需要知道新的文件路径就能检索该照片。事实上,你绝对不会知道Facebook将你的照片存放在哪里,因为Facebook软件有一个抽象层来隐藏技术性信息。这个抽象层对于某些厂商来说,就是他们口中的数据虚拟化所指。

数据虚拟化(data virtualization)这个词可能有点令人困惑,因为有些厂商互换地使用数据虚拟化和数据联合(data federation)。但是两者之间确实有些许不同。数据联合技术的目的是从不同来源收集异构(heterogeneous)数据并以单点访问的方式来访问它。然而数据虚拟化一词仅仅代表有关数据的技术性信息已经隐藏了。严格说来,这并不意味着数据是异构的或者可以通过单点访问查看。

系统架构从用户应用的角度出发,我们认为数据虚拟化系统架构应该包含3层:应用层、数据虚拟化层和源数据层。其中,数据虚拟化层包括数据虚拟化平面和管理平面,二者相互结合执行全方位的查询、处理、集成和管理功能。数据虚拟化系统架构如图所示1。

应用层应用层主要是面向前端各种各样的数据查询访问应用,将用户的查询请求传递到数据虚拟化层。系统为数据消费者的查询请求提供多种访问接口,用于访问数据虚拟化系统,如某些数据消费者可以用JDBC/SQL接口访问,另一些数据消费者可以采用MDX(multi-dimensionalexpressions)接口或基于SOAP(simple object access protocol)接口访问相同的数据服务,对数据消费者而言可以根据自己确定的访问方式发起查询请求。

数据虚拟化层数据虚拟化层是整个数据虚拟化系统的核心,包括2个平面:数据虚拟化平面和管理平面。其中,数据虚拟化平面包含4个层次的内容,完成数据的抽象、元数据建模、数据源映射、查询驱动与响应等功能;管理平面进行系统配置、管理、监测、安全、数据检查与维护等工作。下面对数据虚拟化平面及管理平面分别进行介绍。

数据虚拟化平面

查询响应层。该层针对用户的查询需求,主要任务是制定最佳的查询处理策略和性能优化措施。其中处理策略是数据虚拟化系统根据用户查询请求对目标数据的访问方式给出执行方案与流程;优化器是系统确定数据访问方式之后,对查询过程作出优化以提高查询效率。

数据服务层。数据虚拟化系统面向用户会创建各种数据服务。数据服务的最常用对象是数据视图或虚拟表。整体上看,数据虚拟化系统中会定义2种类型的表:即虚拟表和数据封装表。由于不同的数据源所有者会开放全部或部分的数据给虚拟化系统,这些开放数据可能是原始数据,更多的是加工后的数据。封装表对应于不同的数据源,实现对开放源数据的接口封装,并作为这些数据源的代理供虚拟化系统调用。在数据服务层进行数据视图/虚拟表的定义、认证和授权;数据服务的封装、发布与组合。视图/虚拟表的定义是建立在封装表或其他虚拟表之上,虚拟表之间可以进行组合与嵌套,虚拟表在定义之后可以作为一种数据服务发布出去。数据服务更多关注数据资源的获取与集成方式,而虚拟表的定义关注的是数据本身,因此数据虚拟化系统可以以虚拟表的方式呈现数据服务所需的底层数据。

元数据组织层。数据虚拟化系统不会存储数据源的物理数据,但是针对不同的数据源开放数据,需要对开放数据源的元数据进行组织存储与管理,并面向数据服务层作为其定义数据视图或虚拟表的基础。针对用户的查询请求,高性能的元数据组织、存储与快速查找是保证用户获取所需数据资源的关键。该层主要包括2个方面的内容:元数据的抽取、存储与元数据组织模型。

数据映射层。数据映射层实现虚拟表到数据源的映射,从而保证数据虚拟化平台向数据消费者交付正确的数据。在此应该理清虚拟表、映射与封装表三者之间的关系。虚拟表是建立在封装表基础之上,而封装表是以数据源为基础的。封装表与数据源之间是多对一的关系,根据一个数据源可以定义一个或多个封装表。定义虚拟表的过程也是定义映射的过程,在封装表基础上定义虚拟表。映射对于虚拟表而言相当于查询定义,包含虚拟表的结构(行、列选择;列转换;表名称改变;分组等)、数据如何被转换为虚拟表的内容等。如果没有映射,虚拟表就是一个没有内容的空表。因此,要保证正确的映射,必须正确分析封装表中数据间关系,保证从数据源到封装表再到虚拟表的定义是准确的。数据虚拟化系统中也允许少量虚拟表在起初不定义映射,它们是从数据消费者角度来定义的(自顶向下),因此定义时只关心数据消费需求而不考虑数据源表中数据类型、列间关系等,但是在后期必需执行映射的再定义。

总结来说,当用户发起一个查询请求,查询引擎确定查询策略并进行查询结果计算、优化及结果响应。若数据服务层没有预先定义该查询对应的虚拟表,则元数据组织层需根据系统存储的元数据信息对查询所需的相关元数据进行组织,生成对应的临时虚拟表。数据映射层实施相应虚拟表与封装表的映射,进而访问底层数据源。

管理平面

管理平面的目标是通过配置、监测、管理控制等手段支撑整个虚拟化系统的安全、可靠、高效运行。通过对数据虚拟化系统的配置,完成生产、备份、故障切换等任务。数据虚拟化平台中的整合管理工具支持软件供应,对源数据访问的授权,与LDAP(light weight directory access protocol)的整合以及其他安全工具等。系统管理工具管理服务器会话、数据服务、元数据等。

针对数据虚拟化平面的4个层次,管理平面也要完成对应的管理功能。对于数据映射层而言,要实现每个应用所需数据的映射,管理层必须实现对封装表、源数据、源数据间关系的管理;在元数据组织层,管理环境要实施对元数据的清洗、一致性检测等任务,保证元数据缓存的高效性;在数据服务层,管理环境要完成对虚拟表或数据服务组合、更新过程的维护等,部署管理器完成对数据服务的扩展部署,确保其持续可用;针对查询响应层,控制器、监测器、管理器等共同作用保证整个查询过程的正确实施。

源数据层源数据层针对各个数据所有者提供的多源异构数据源进行统一的接口管理,实现数据虚拟化系统中各种不同数据源的访问细节对用户进行屏蔽。通过ODBC/JDBC,JSON,API等接口,实现源数据的获取和传输,最终完成用户所需数据资源的交付。

特别注意:源数据层只是对各种物理数据源的访问接口管理,并不需要了解具体的物理源数据的组织、存储及管理方式;物理数据源由所有者管理,并根据自身策略来开放全部或部分源数据的视图给数据虚拟化系统。

数据虚拟化研究问题一个完整的数据虚拟化系统应具备创建视图/虚拟表、提供数据服务、优化联合查询、数据缓存、以及细粒度的安全性等能力,使用户在不同数据源中发现数据、检索与访问数据。虽然数据虚拟化会在很大程度上能够提高数据集成的灵活性和敏捷性,如用户通过单一接入点访问不同数据源的数据、数据服务面向所有的数据消费者、避免数据物理转移、提高数据使用率等,但是仍然存在一些问题与挑战需要研究解决。

异构数据源的集成不同数据源的数据可能采用不同结构的数据,包括结构化、半结构化与混合结构数据。如有的数据集采用关系数据模式,有的采用HTML/XML文件,有的采用日志格式文件等。这些异构的数据源是数据统一集成中必然存在的巨大挑战。一些研究者从不同角度出发进行研究,例如,改进和扩展查询语言,将查询请求划分为多个子查询,基于语义相似性对元数据融合等。数据虚拟化面向的是多种不同应用,若对每类应用的查询,分别优化其查询语言则会影响整个数据虚拟化平台的效率,因此数据虚拟化平台提供多种访问接口对来自不同数据源的数据进行统一存取或访问。例如,对于关系数据库SQLServer,Oracle,Access,Excel等利用ODBC接口通过SQL语言访问;对于web应用程序则可以用REST或JSON接口等,以便屏蔽数据源数据模型的异构性,提供对数据的统一访问。解决数据源的异构性是保证数据服务的基础,但是由于数据源的多样性及复杂性,可能需要开发和改善更多种访问接口,所以对于数据源的异构性问题不容小觑。

异质数据的集成对于数据异质性问题,Sujansky从结构差异、命名差异、语义差异和内容差异4个方面分析了多源数据的异质性,如数据格式中存在多种日期与时间戳的格式,相同的数据在不同的数据源中有不同的定义等,因此数据异质性处理不当会导致集成数据的质量急剧下降。一些解决方案通过将数据虚拟化、抽象化,用一种统一的描述语言(如XML)或代码生成技术对所需数据进行处理或创建虚拟表、自动生成数据服务,对用户而言屏蔽掉了底层数据的存储格式、语义等方面的差异,一定程度上解决了这一问题,但是仍没有通用的数据模型。由于XML语言易于操作、理解、跨平台可移植性等特点,很多数据虚拟化平台采用XML语言对数据进行统一描述,从数据描述方式的通用性出发,提出一种基于XML语言的DIMs(datainformationmodel)数据信息模型,并满足数据模型的可移植性。解决数据异质性是进行元数据组织,创建可重用视图/虚拟表的前提。值得注意的是,由于底层数据模型的差异,在转化为统一数据格式时,如何保证数据的正确、完整、一致性,从而确保数据映射的准确性,这是急需解决的一个关键问题。

数据映射数据映射对查询到准确的源数据十分重要。基于一个数据源可以定义多个封装表,基于一个封装表也可以定义多个虚拟表。由于底层数据源的复杂多样性,分散的数据源间不可避免地会出现数据重复,建立的封装表间也会出现数据重叠现象。对查询而言,同一虚拟表可能会产生多个映射,进而引发底层数据源中相同数据的重复查询,导致查询的整体效率下降。这个问题涉及到封装表与映射策略,在定义封装表及映射过程中,要考虑到源端数据中的重复数据现象,对于基于不同数据源创建的有重叠数据的封装表是进行舍弃还是有效地合并?此外对于自顶而下定义的虚拟表,如何根据查询需求来正确定义映射?在保证数据消费者查询到所需数据的同时又避免重复数据查询,这是实现数据高效及准确映射时面临的挑战。

元数据组织模型类似于数据库管理系统,元数据也是虚拟化系统运行的核心。在元数据组织模型方面,目前的数据组织模型中,有些只关注某种特定应用或服务本身,没有考虑数据源间的数据关系,导致用户在查询时不得不对数据描述及组织方式进行分析,再通过编程查找底层数据源,这对于希望简单快速地获取所需数据资源的用户而言过于复杂。在数据即服务思想基础上,针对传统HTML数据模型在用户查询方面的不足,提出一种概念信息模型DEMODS(description model for DaaS),该模型隐藏了服务自动查询方式,将各数据源的数据交予数据组合和分析工具,对用户而言不用关心中间查询的操作。针对铁路分布式系统的信息转换、数据共享中存在的数据模型的异质性,提出一种基于XML的三维元数据组织模型,描述了不同系统中数据间关系,并实现不同数据模型与该元数据组织模型间的映射。针对一个数据虚拟化系统,合适的元数据组织模型是关键。根据用户查询需求及源数据间关系,对元数据进行分析、重新归类,建立结构性与关联性良好的、通用的元数据组织模型,特别是在数据服务层没有预先定义虚拟表或数据服务的情况下,元数据组织模型对于及时快捷的数据交付十分重要。目前虚拟化系统中的元数据组织模型还没有统一的标准,由于应用需求的灵活多样性,研究合适的元数据组织模型非常关键。

数据服务大数据技术的创新及DaaS模式的发展不仅促进了数据服务的潮流还推动了组合数据服务的研究,即多个基本数据服务通过关联可以组合成满足业务需求的复合数据服务。针对DaaS组合服务中存在的数据结构的不兼容、数据隐私问题进行了研究,并提出了相应的解决方法。数据虚拟化系统同样支持数据服务间的组合,在组合过程中,由于不同数据服务中数据属性、数据隐私程度、数据结构等的不同,也存在数据结构的不兼容、数据质量下降、数据访问权限差异等问题,目前数据虚拟化方案对这方面的研究较少,大都是用户在利用相应的分析组合工具进行处理,这增加了用户的负担。由于数据虚拟化系统创建的主要对象是数据服务,未来的研究中可以将数据虚拟化系统与DaaS模式融合,将数据虚拟化系统创建的数据服务作为基本服务,通过DaaS将基本数据服务模式进行合并、删除、排序、数据结构调整等,组合成新的数据服务,在减少用户操作的同时保证组合数据服务的质量。另外,对于非关系数据库,非结构化的数据内容而言,如何创建数据服务,能否以虚拟表的形式呈现各种底层数据源的查询,这也是创建数据服务中的一个重要问题。为了保证数据服务的持续可用,数据虚拟化系统需要对虚拟表进行更新,涉及到虚拟表如何根据底层数据源的变化进行自动即时更新。针对数据服务生成的虚拟表,如何保证更新的一致性及效率问题都是需要研究的重要问题。

查询优化查询优化的目标是提高用户获取所需数据资源的效率,也是数据虚拟化系统中的关键问题。一些研究利用中间件思想,将查询优化建立在数据模型基础上。通过对数据的分析挖掘提取出能够表示数据属性、数据间关系的最少元数据,通过访问元数据缩小数据的查询范围从而减少查询响应时间,优化查询,这也从另一个角度说明了元数据的质量及组织模型的重要性。也有一些研究通过优化查询系统的性能,提高查询效率,如文献通过在存储系统中加入一组丰富的硬件加速引擎来提高对存储数据的并行处理能力。一些企业如Cisco,Composite利用基于规则或成本的优化器对每个查询请求制定最佳查询方案,并利用扫描多路技术、约束传播技术、并行处理技术等优化网络资源和数据库,从而保证目标数据及时快捷地交付。目前数据虚拟化系统常用的一些查询优化技术有Querysubstitution,SQLpushdown,Parallelprocessing,Distributedjoins,Shipjoins,SQLoverride等。这些技术针对不同的应用场景,在某些方面也存在一定的限制,如Querysubstitution主要应用于嵌套虚拟表的查询;SQLpushdown不能用于底层数据源为序列文件或XMLWeb服务;Shipjoins一般用于合并2个不同的数据源。由于应用的多样性,没有一种查询策略能够适用于所有的应用场景。此外在提高查询效率方面,除了应用这些优化技术,对于一些特定的查询应用,有时需要将查询请求转化为另一种查询语言。从另外一个角度来看,应用缓存技术对于提高系统查询性能有极大的裨益。数据虚拟化系统通过提供灵活可扩展的缓存机制,针对底层数据源进行相关数据的缓存,对于查询而言,可以从缓存中查找数据,加速查询并减小底层数据源的查询负载。此外,为了保证缓存数据的一致性和新鲜度,还必须根据底层数据的变化即时更新缓存,这会涉及到数据一致性、更新效率问题。

系统扩展性数据虚拟化系统作为一种平台,新的数据源、应用请求、数据结构等会持续加入,系统必须具备良好的扩展性。新的数据所有者会开放数据源并注册到系统平台,原有的开放数据源也会全部或部分注销,这样会引起系统内的元数据组织、虚拟表定义、数据映射、数据缓存等等面临重构问题,系统必须具备在线添加、修改、更新能力,如何提高系统的扩展性与伸缩性是一个重要问题。由于用户的应用查询需求是无法预测的,要保证数据查询的性能,尤其是在处理一些大容量数据时,必须考虑到系统规模扩展后带来的性能挑战。在设计与开发数据虚拟化系统的早期阶段,就需注意考虑数据查询处理过程的性能与相关解决方案的可扩展性,以提高数据虚拟化系统的扩展性及查询性能。另外,在数据源不断地更新与数据消费者访问规模增长的情况下,如何确保数据源、封装表与虚拟表的同步性、数据一致性,并保证所有数据消费者的QoE体验,这也是数据虚拟化系统需要考虑的重要课题。

数据安全数据安全包括数据的认证、授权和加密,认证和授权主要是针对用户而言的,而加密则是从数据本身考虑的,数据只有在安全的基础上实现有效的共享才会产生更大的价值。数据虚拟化系统针对不同应用的相同数据服务实行不同的认证和授权机制,这一特性对数据安全又有新的要求,如查询与数据源间的安全通信、跨平台/跨系统访问的数据安全等。当用户进行数据请求访问时,数据虚拟化系统会对用户凭证(如用户ID、密码等)进行检测。不同的用户即便是对相同的数据元素的访问权限也是不同的,如对于一个虚拟表,有些用户可能只具有该表部分内容的访问权限。需特别注意的是数据虚拟化系统只执行数据消费者权限的检测,确定用户对数据的访问权利,而源数据访问的授权工作则是由底层数据源的所有者决定的,二者的访问权限必须区分开。有些底层数据源有自己的安全访问机制,对数据消费者而言,要实施对源数据的访问需要具备虚拟表与底层数据源的两层访问权限;也有一些底层数据存储没有定义安全机制,对上层数据访问是完全公开的,用户只执行虚拟表的访问权限。因此,用户凭证的安全保存机制、合适的授权机制、安全认证性能等都是需要考虑的问题。针对数据服务访问权限的定义也在一定程度上限制了用户查询数据的范围,因此在定义数据服务时也需要考虑相应的安全机制。但是从另外一方面来说,过于复杂的安全机制也会影响虚拟化系统在查询、处理数据时的性能。因此在设计数据服务时如何进行安全与性能的折衷将是一个挑战。

系统管理数据虚拟化系统实质上也是一个数据共享的平台,它以一种更简单敏捷的架构提供数据服务,也必需提供对整个数据虚拟化环境的良好管理,解决由谁负责共享的基础架构,谁负责共享的数据服务等问题。数据虚拟化管理平面需要多种系统管理工具,对系统运行过程实施管理、监控,如监测查询的数量、查询性能、系统的可用性、缓存的使用、缓存更新的速率等,这些都是需要考虑的问题。

数据虚拟化软件什么是数据虚拟化软件?

数据虚拟化技术会建立中间件,或者服务,IT架构层中数据可以从不同来源被聚集、查看并分析。该技术希望从传统集成方法(比如ETL还有数据库整合)中节省时间和费用,因为实际数据从未被从源系统中物理移动。

但是Myers认为Informatica的数据服务在某些领域也有待提升。首先,他希望看到随着时间推移软件变得更加用户友好。那样HealthNow公司业务分析师们就更容易映射数据源并依据从虚拟数据集市中拣选的信息创建简单报表。

Myers还希望Informatica与来自竞争对手的企业服务总线(ESB)技术能无缝连接操作。ESB技术是面向服务架构的支柱,它对服务提供一致的视图并隐藏了底层应用程序的复杂性。

Myers说:“你要能与消息队列交互。我知道Informatica已经在做一些队列功能,但是IBMMQ在ESB领域份额占据较大,另外还有其它竞争对手也在做。我不认为这是Informatica应该努力竞争的地方。我认为这会冲淡他们其它方面的工作成果。”

数据虚拟化最佳实践1.**将数据虚拟化方面的责任集中起来。**这么做的一个主要优点就是,能够迅速推动这项工作,并且着手处理更宏大的概念,比如定义通用规范和实施智能存储组件。

2.**约定和实施一种通用数据模型。**这将确保一致性、高质量的数据,让业务用户对于数据更有信心,并且提高IT工作人员的灵活性和生产力。

3.**确定一种治理方法。**这需要考虑到如何管理数据虚拟化环境。关键问题是谁负责共享的基础架构,谁负责共享的服务。

4.**对业务用户进行教育,让他们认识到数据虚拟化的优点。**抽出时间与业务用户进行交流,确保他们明白数据。日常多开展工作,让数据虚拟化能够为企业的其余部门所接受。

5.**注意性能调整和可扩展性。**在开发过程的早期阶段,就要调整性能、测试解决方案的可扩展性。要考虑引入大规模并行处理功能,以便处理大容量数据方面的查询性能。要兼顾这个事实:用户在专门查询和报告方面是无法预测的。

6.**分阶段实施数据虚拟化。**先对数据源进行抽象处理,然后将商业智能应用程序放到上面,最后逐步实施数据虚拟化的更高级的联合功能。

数据虚拟化案例HealthNow公司是蓝盾保险供应商,支撑纽约州西部大约80万会员。该公司拥有约2500名员工,其中包括一个30人组成的超级数据管理团队。

HealthNow公司的IT部门主要运行IBM的DB2,微软公司SQL Server和Sybase数据库管理软件。该公司还运行IBM的Cognos商业智能(BI)和TriZetto的Facets健康计划管理软件。

Myers说:“三年前的这个时候我加入了HealthNow公司,那时公司还在使用传统的ETL,没有做数据服务的概念。说实话,那时候没有SOA架构,也没有参考架构。”

所有这些在大约一年半之前开始改变了,那时Myers和他的团队开始评估数据联邦和数据虚拟化技术,显著成果之一就是他们比过去能更快地提取可用信息给业务分析师。

当时,Informatica还在零售Composite软件,这是原始设备制造商协议的一部分,刚刚自助开发了Informatica数据服务产品。Myers说,Informatica数据服务的路线图看起来前途无量,但是决定因素主要与Informatica公司使用数据质量规则的能力有关系。

Myers说:“Informatica告诉我们,我们不只可以联合数据,我们还可以附送质量规则。我们可以配置数据和那些规则,使他们正确映射。开发人员可以编写虚拟的数据模型映射。他们可以在每一步中看到和配置数据。”

使HealthNow公司的Informatica胜过IBM和Composite的另一个重要因素集中在公司提供质量维护和支持的能力上。HealthNow公司与Informatica谈判协议规定,所有的服务调用都要直接让大家知道。

这家保险公司大约一年前使用了Informatica数据服务,Myers说该软件的主要益处可以用一个关键词来描述:速度。

该公司现在有能力创建“虚拟化数据集市”,从不同的数据源提取数据,它可以很容易被业务用户访问到。Myers说,创建数据集市的过程可能只需要花两天时间。而在过去,为业务分析师整理数据可能需要几个月时间才能完成。

HealthNow公司面临数据虚拟化挑战

Forrester研究机构最近的一份研究报告指出,数据虚拟化软件包常常遭到终端用户组织的质疑,他们关注如何确保敏感信息的安全。

但是安全还不是HealthNow公司面临的主要问题,这要感谢该公司高度强健的IT架构。该公司在Informatica数据服务的前面运行着IBM的WebSphere DataPower应用,它给系统提供了一层安全保护。

Myers说:“能真正接触到数据服务层的人是其他应用开发人员。而且如果我们让终端用户通过Cognos接触它,我们就在其上拥有了Cognos安全层。”

对Myers来说,更大的挑战是说服HealthNow公司的数据集成团队,让他们相信Informatica数据服务是一套稳定的环境。Myers通过执行一些小的数据虚拟化项目并产生实效克服了这一障碍。

他说:“这表明环境是稳定的,也表明数据服务是可重用组件,事实证明它可以给业务方面提交正确的数据。这些组件可以被在延续业务线的许多新项目中重用。”

Myers说,尽管HealthNow公司在数据虚拟化方面的经验不足带来了一些小问题,Informatica数据服务实施也基本没什么痛苦。该公司在两个月内已经安装配置了该系统,并通过了概念测试验证。

Myers说:“你当然可以做的更快。但是我认为,与任何具备良好架构的团队一样,我们花了很多时间先要评估某种技术的最佳用法和我们向要发展的方向。”