《数据虚拟化:商务智能系统的数据架构与管理》一 1.5 数据虚拟化与相关概念

简介: 本节书摘来自华章出版社《数据虚拟化:商务智能系统的数据架构与管理》一 书中的第1章,第1.5节,作者:[荷]里克 F. 范德兰斯(Rick F. van der Lans),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 数据虚拟化与相关概念

数据虚拟化和IT产业中一些众所周知的其他概念密切相关,如封装、信息隐藏、抽象数据联合、数据集成和企业信息集成。本节解释这些概念和它们与数据虚拟化的关系。
注意,关于这些概念存在不同的定义,并且有些人视这些概念为同义词。混淆这些概念的原因在文献[5]中Edward Berard已经表述得相当清晰:“抽象、信息隐藏和封装是非常不同但高度相关的概念。不难看出抽象、信息隐藏和封装是怎样相互混淆的。”

1.5.1 数据虚拟化与封装和信息隐藏

40多年前,David L. Parnas在1972年发表了开创性论文“On the Criteria to Be Used in Decomposing Systems into Modules”(见文献[6])。该论文已经出版了多次。在这个传奇的论文中,Parnas解释了对于应用程序来说,开发中将应用与存储的数据结构独立开是多么重要。这一概念的巨大优势是,如果一个变化,另一个并不一定要变化。此外,通过隐藏技术细节,应用程序将变得更加可维护,或者使用更现代的术语来说,应用程序变得更加灵活。Parnas称之为信息隐藏并解释其目的是“使某些细节不可访问且不影响系统的其他部分。”
许多年以后,术语封装在计算行业变得更加普遍,用来指代信息隐藏的概念。Blair定义封装如下(见文献[7]):
封装(也叫信息隐藏)指将一个对象外在部分与内部实现细节独立开,其中外在部分相对其他对象是可访问的,而内部实现细节则是隐藏的。
下面是由James Rumbaugh给出的可替代且可比较的封装定义(见文献[8]):
封装(也叫信息隐藏)阻止客户端看到它的内部内容,在内部实现了抽象行为。
如果我们把这个引入数据库世界,那么封装是关于隐藏一些数据存储的实现部分,例如它的API、语言、存储格式、地址、访问机制,等等。如果这些都正确地完成了,那么数据使用者就会看到一个简化的数据访问接口,它们不必关心具体的技术细节。汽车发动机的复杂工作被简单的仪表盘封装,这些是同种方式的封装。注意,这两个定义都将封装视作信息隐藏的同义词。我们将采取与此同样的立场。
整个封装的概念也非常类似于物理数据独立的概念,这是由关系模型的创始人E. F. (Ted) Codd提出的。他在1981年获得ACM图灵奖的论文中使用了这一术语(见文献[9])。物理数据独立的目的是为数据使用者隐藏“数据是怎样存储的和怎样访问的”。在某种程度上,这就是为什么在SQL查询中,我们只需要指定我们想要什么数据,而不需要指定怎样检索这些数据。后者是数据库服务器的责任,SQL封装了所有的技术细节。
数据虚拟化提供封装。数据使用者通过数据虚拟化层访问数据,它们看不到所有的技术细节。它们检索的数据是存储在SQL数据库中、电子表格文件中,还是来自外部网站,所有这些特定的技术细节都是隐藏的。

1.5.2 数据虚拟化与抽象

与封装一样,抽象也存在许多定义。下面给出D. T. Ross的定义(见文献[10]):
抽象是一个过程,这一过程中我们定义一个现象的重要方面而忽略它的细节。
通过一个数据库例子来解释抽象是最简单的方法。想象一下一个数据库包含许多表,但是很可能不是所有的表和它们的列都与每个数据使用者相关。对于每一个数据使用者来说,如果只有相关的表、列和行显示出来,那么应该会更简便。当应用了抽象,所有不相关的表、列和行都会隐藏。数据库的抽象同时也意味着如果对于数据使用者来说以一种聚合的方式来处理数据更加方便,那么它应该只看到聚合状态的数据,而不应该看到所有细节的数据行。抽象意味着只有相关的数据才会以数据使用者需要的格式展现,其余的则被隐藏。Codd称这一概念为逻辑数据独立。在大多数SQL数据库服务器中,抽象是通过视图实现的。
数据虚拟化提供了抽象。对于每个数据使用者来说,它可以以需要的格式呈现数据。

1.5.3 数据虚拟化与数据联合

很多时候,数据虚拟化这一术语会和数据联合相关联。有些人认为它们是同义词,但是另外一些人则认为数据虚拟化是数据联合的一种扩展形式。这一节解释一下这两者之间的联系和差异。
联合这个词来源于拉丁语单词foedus和foederis,两个单词的意思都是条约、协议和合同。大多数情况下,如果使用了联合这个词,它表示自动结合操作对象。例如,州可以联合起来组成国家,或者公司可以作为一个联合体来运作。
根据businessdictionary.com,一个联合体是包含多个小组织或公司的组织机构,它集中注意力解决对所有成员都重要的问题。每一个组成联合体的小组织保持对自己操作的控制权。例如,一组相关产业的小企业可以形成一个联合体,来说服政府制定支持小企业的法律。另外根据Merriam-Webster.com,联合体是一个由更小的或更局部的实体构成的综合性的政治或社会实体。每一个成员(例如,一个独立的联邦国家)同样也可以独立地运作。
如果我们把这个一般解释应用到数据联合这一术语上,它的意思就是自动联合数据存储单元来组成一个大型的数据存储。由以上解释,我们可以得到下面的定义:
数据联合是数据虚拟化的一个方面,其中,在自治数据存储中的某种异构子集合所存储的数据是对于数据使用者可访问的形式,这种形式的数据是采用按需集成方式存储的。
这个定义基于下面的几个概念。
数据虚拟化:数据联合是数据虚拟化的一个方面。值得注意的是,数据虚拟化并不总是暗指数据联合。例如,如果对于一个数据使用者,某个特定数据存储中的数据需要虚拟化,那么数据联合就没有存在的必要。但是数据联合总是要数据虚拟化,因为如果一组数据存储以一个整体呈现,那么空间分配方面对于应用程序来说就是隐藏的。
异构数据存储集合:数据联合应该允许整合来自不同存储结构、不同访问语言和不同API的数据存储中的数据。使用数据联合的数据使用者应该能够访问不同类型的数据库服务器和不同格式的文件;异构数据存储集合应该能够整合来自所有这些数据源的数据;它应该提供转换数据的功能;它应该允许数据使用者和工具通过不同的API和语言去访问数据。
自动数据存储:被数据联合访问的数据存储能够独立运作,换句话说,它们可以在数据联合范围的外部使用。
集成数据存储:无论数据怎样存储,存在什么地方,它都应该以一个整体的数据集合呈现。这就意味着数据联合涉及数据的转换、清洗,甚至数据的充实。
按需数据集成:这个概念指整合来自异构数据存储集合的数据。数据联合和集成快速发生,但不是批量发生。仅仅当数据使用者请求数据的时候,才访问和集成数据。因此数据并不是以一种集成的方式存储,而是保持它们原有的位置和格式。
既然我们知道了数据联合和数据虚拟化的意思,那我们就可以得到以下结论。第一,数据联合总是意味着多个数据存储,而数据虚拟化并不是这样。第二,数据联合可以被看作数据虚拟化的一个方面。
最后请注意:直到几年之前,所有用于数据虚拟化的产品都称作数据联合服务器。主要原因是这些产品主要用来使得多个数据库看起来像一个。现在它们叫作数据虚拟化服务器。改变名字的原因是:新的数据虚拟化服务器比旧的提供了更多的功能。例如,一些新的产品甚至支持数据建模、数据清洗和数据库语言翻译。有时候,这个名字的改变确实造成了混淆。在本书中,我们使用数据虚拟化服务器这个术语。

1.5.4 数据虚拟化与数据集成

数据虚拟化和本书已多次提到过的另一个概念数据集成有很强的联系。根据SearchCRM,集成(来自拉丁语单词integer,意思是“整个”或“全部”)通常意味着结合各个部分使它们共同工作或形成一个整体。如果来自不同数据源的数据被整合在一起,我们就称其为数据集成:
数据集成是结合来自异构数据存储集合的数据并创造所有数据的一个统一视图的过程。
数据集成涉及很多方面,例如数据合并、数据值转换、数据充实、数据值清洗等。数据集成定义没有说明集成是如何发生的。例如,可能是从源数据存储中拷贝原始数据,转换和清洗,随后存储在另一个数据存储中。如果集成发生在运行期间,则会有另一种解决方案。例如,一个应用访问多个数据源,从所有数据源中获取数据,然后把它们集成。另外一种方法是修改源数据存储使得可以实现数据转换和清洗。这和改变数据源本身一样,采用这种方式使得聚集数据时几乎不需要任何转换和清洗。
但是数据集成具体包含什么呢?
数据合并:数据合并是指来自不同数据存储的数据被整合到一起的过程。例如,一个数据库的客户表中的数据需要和另一个数据库的订单表中的数据合并,假设两个表都有相同的列—客户编号,并且每一个出现在订单表中的客户编号也都在客户表中。
数据转换:数据转换是指转换数据值的过程。数据转换的例子有清除电话号码中分离区号和用户号的破折号,连接客户的名和姓为一个字符串,替换州代码为州名。使用数据转换,把一种正确的数据值转换成其他正确的数据值。
数据清洗:数据清洗指有缺陷的数据被更正的过程。例如,Gender列包含数据值Woman、W和F来表示某个员工是女性。这些数据值需要修改成一个标准的编码,例如F。这是数据清洗的一个简单例子。其他例子有更正客户名称的错误拼写、补充缺失值、删除重复数据。数据转换和数据清洗之间重要的不同点是前者是将正确的数据值转换成正确的数据值,而后者是将有缺陷的数据值转换成正确的数据值。
很多应用数据虚拟化的场景也应用了数据集成,但是数据虚拟化并不需要数据集成。它依赖于被访问的数据存储的编码。例如,如果所有被虚拟化的数据都来自同一个数据存储,那么就没有必要进行数据集成。另一方面,数据联合总是需要数据集成,因为数据联合意味着将来自不同数据源的数据整合在一起,否则,就没有必要进行数据联合。
那就意味着数据联合和数据集成是相同的东西吗?它们两个是同义词吗?答案是否定的。数据集成是数据虚拟化的一个方面。在很多情况下,数据虚拟化需要集成数据,但也不总是这样。也许数据虚拟化仅仅用来将一个数据存储的技术接口转换为一个更加适合特定数据使用者的接口。

1.5.5 数据虚拟化与企业信息集成

企业信息集成(EII)是现今很少使用的一个术语。维基百科(在2011年7月8日)这样定义EII:
企业信息集成(EII)是一种集成信息的过程,通过数据抽象过程表达某一个组织或机构中观察所有数据的统一接口(称为统一数据访问),并约定命名(称为统一的信息表示)来表示数据。
根据这一定义,EII的目标是使一个大的异构数据源呈现为单个同类的用户数据源或是一个系统。换句话来说,EII和数据虚拟化是同义的。作为数据联合,它可以被看作数据虚拟化的一个更“老”的术语。

相关文章
|
1月前
|
消息中间件 存储 缓存
Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
81 2
|
2月前
|
SQL 分布式计算 Hadoop
Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
【2月更文挑战第6天】Azkaban【基础 01】核心概念+特点+Web界面+架构+Job类型(一篇即可入门Azkaban工作流调度系统)
79 0
|
3月前
|
领域建模
架构设计 DDD领域建模 核心概念
【1月更文挑战第6天】架构设计 DDD领域建模 核心概念
|
6月前
|
监控 负载均衡 测试技术
服务网格简介:探索现代微服务架构中的服务网格概念和价值
服务网格简介:探索现代微服务架构中的服务网格概念和价值
100 0
|
7月前
|
监控 数据管理 API
深入了解微服务架构:从概念到实践
微服务架构是近年来在软件开发领域崭露头角的一种架构范式。它的灵活性和可伸缩性使其成为许多大型企业和创业公司的首选。本文将深入介绍微服务架构的概念、优势、挑战以及实际应用。
|
6月前
|
XML Java 数据格式
Spring框架(二) 底层架构核心概念解析-四万字你值得一看
上面说到解析为BeanDefintion之后会注册到Spring容器中 , 那么什么是容器? 其实在DefaultListableBeanFactory这个类中就有体现 , 源码中是这样定义的
58 0
|
4月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
108 0
|
4月前
|
安全 Java 大数据
Spring概述、系统架构及核心概念
Spring概述、系统架构及核心概念
165 0
|
1月前
|
消息中间件 存储 SQL
Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
【2月更文挑战第18天】Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
447 0
|
3月前
|
消息中间件 负载均衡 监控
微服务架构:从概念到实践
微服务架构是一种面向服务的架构风格,旨在将复杂的应用程序拆分成更小、更可管理的部分。本文将介绍微服务架构的概念和原则,并提供一些实践经验和最佳实践。

热门文章

最新文章