前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >长文:漫谈“数据虚拟化”

长文:漫谈“数据虚拟化”

作者头像
用户5548425
发布2021-01-04 14:21:26
1.8K0
发布2021-01-04 14:21:26
举报
文章被收录于专栏:韩锋频道韩锋频道

随着数据在企业发展中发挥着愈发重要的作用,如何更高效、简洁地利用数据成为用户非常关心的问题。数据虚拟化技术,正是面向此类问题的一种解决方法。本文通过近期阅读的数据虚拟化一书,提纲挈领谈谈对数据虚拟化的认识。

1. 数据虚拟化概述

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

数据虚拟化,是一种给数据使用者提供一个统一的、抽象的和封装的视图,来查询和操作存储在异构数据存储集合中数据的技术。数据虚拟化是虚拟化的一种形式,其本质是对数据资源的封装。当使用数据虚拟化时,它通过提供了一个中间层,隐藏了大多数对数据是存储位置、技术接口、如何实现、使用平台等技术细节。概言之,数据虚拟化方法封装了数据资源使得所有的技术细节都隐藏起来,并且应用程序可以使用一个更简单的接口进行工作。数据虚拟方法存在于数据使用者和数据存储之间。数据使用者通过数据虚拟化层访问数据,数据虚拟化层隐藏数据存储。

相关概念

  • 数据集成 数据集成,是结合来自于异构数据存储集合的数据并创造所有数据的一个统一视图的过程。其涉及很多方面,例如数据合并、数据转换、数据充实、数据清洗等。很多数据虚拟化场景应用了数据集成,但是数据虚拟化并不需要数据集成。它依赖于被访问的数据存储的编码。
  • 企业信息集成(EII) 企业信息集成(EII)是一种集成信息的过程,通过数据抽象过程表达某一个组织或机构中观察所有数据的统一接口(成为统一数据访问),并约定命名(称为统一的信息表示)来表示数据。EII和数据虚拟化是同义的。

主要优点

  • 简化ETL过程 数据虚拟化,是一种将可用数据转换成分析和报告所需形式的可选择技术。它需要更少的数据库和更少的转换过程。换句话说,在BI中使用数据虚拟化会得到更短的数据库链,需要开发和管理更少的数据库,并且将会有更少的转换过程。
  • 优化交互体验 数据虚拟化层可将数据存储支持的语言和API转换为对消费者便利的语言和API,这样方便用户使用数据。
  • 抽象独立存储 数据虚拟化使数据使用者独立于特定的数据存储技术,使数据使用者更加方便。在恰当的时间使用恰当的数据存储技术将会让工作变得更加容易。
  • 避免数据干扰 数据使用者可能对访问的数据存储产生干扰。数据虚拟化产品提供缓存机制,最小化对源数据存储的干扰。
  • 共享元数据 很多数据使用者使用相同的数据虚拟层,它们共享相同的元数据规则。这简化了应用程序开发,并且带来更一致的应用行为和更一致的结果。
  • 简化元数据 使用数据虚拟化可以定义一个从复杂表结构到更简单适用的表结构的转换。这是通过元数据规范完成的,其仅定义一次,且可以被多个数据使用者使用。
  • 集中数据集成 数据虚拟化可实现集中式地转换,并且所有数据使用者皆可用。这些转换规范被视作元数据规范。此外,数据虚拟化也可实现数据清洗,并且只向数据使用者显示正确的值。
  • 统一数据访问 数据虚拟化层提供一个统一的API和数据库语言去访问所有这些不同的存储格式,因此简化了数据使用者的数据访问。它们仅需要支持一种语言和一种API。

实现方式

  • 专用的数据虚拟化服务器
  • 企业数据总线(ESB)
  • 数据云化存储及访问
  • 内存分析
  • 对象关系映射工具(ORM)

2. 背景:商业智能与数据仓库

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

商务智能是一种方法论、处理过程、体系结构和技术的集合。这个集合将未加工的数据转换为有意义的和有用的信息,以使实现更有效的、战略性的、巧妙的、可操作的洞察力和决策。而商务智能系统是用来支持和改进一个组织决策的解决方案。

支持工具

很多工具都是特别为支持决策过程而设计的。所有的工具可分为两类:

  • 面向过去:报表工具 允许使用者学习、过滤、聚合和总结数据等。在大多数情况下,展现在使用者面前的都是在机构中已发生的事物。
  • 面向未来:分析工具 基于统计、数据挖掘和操作调查的,并且支持预测算法、预测分析和优化功能。

数据存储

❖ 数据中转区

  • 数据中转区是一个存储来自生产系统数据的暂时中间存储器。其设立的目的主要是解决以下问题:
  • 数据进入数据仓库前需要很多处理,如果直接从生产系统拷贝到数据仓库,所有进程都能导致这些提供严重干扰。尽可能小的干扰生产系统,仅仅采取一对一的数据快照合并后做处理是一个不错的选择。
  • 数据仓库数据的更新周期较长(一周或一月更新一次),数据可能遗失。为了保证数据变更不丢失,所有对数据的变化都应该复制到数据中转区。
  • 数据中转区也能用来追踪哪些不被数据仓库使用的数据。

❖ 可操作数据存储(ODS)

操作数据存储是一种集成的可操作数据存储的架构。集成数据的需要贯穿整个IT系统中,有必要使用一个操作数据存储。操作数据存储可呈现一个可操作的数据集成视图,现在在生产系统中已经是可用的。其具有以下特点:

  • 操作数据存储是面向主题的,逻辑相符的数据被存储在一起。
  • 操作数据存储是被集成的,所有的转换都被应用于使数据之间相符。
  • 操作数据存储是不稳定的,数据发生变化会很快反映到操作数据存储中。
  • 通常没有历史记录被保留在操作数据存储中。

❖ 数据仓库

"数据仓库是一个支持管理决策进程的面向主题的、集成的、随时间变化的、永久保存的数据集合"。数据仓库是一个被设计用来报告和分析的独立数据存储。数据定期从生产数据库拷贝到数据仓库中,一般选择ETL的解决方案一体化实现。数据仓库解决的问题有:

  • 数据集成:来自不同的系统的数据进行一次集成,并以整合方式存储。
  • 缺陷数据:缺陷数据可以被清洗,并且所有报告共享清洗后的结果。
  • 数据一致性:所有报告均从数据仓库中提取,减少出现一致性问题的可能性。
  • 历史数据:生产数据库不保存历史,但数仓中被设计为可追溯历史数据的场所。
  • 干扰:报告、分析类需求不直接在生产数据库中运行,避免干扰正常业务行为。
  • 查询性能:数仓只为报告查询而特意设计和优化,这将提升查询性能。
  • 外部数据:如果报告需要外部数据,这些数据能存储在数仓中和内部数据一样容易访问。

❖ 数据集市

为了减少数据仓库的数据查询压力,可开发数据集市来减轻查询的工作量。其具有几个特点:

  • 数据集市是为一组专门用户开发的,通常来说是所有有数据需求的用户。
  • 数据集市包含数据仓库数据的子集。数据仓库包含最低级的数据,而数据集市包含所有数据的轻量聚集体。如果有数据集市,则大多数报告运行于数据集市而不是数据仓库。
  • 数据集市允许使用面向报告的存储技术和存储体系。例如,有些报告工具需要使用数据立方体,以提供更好的查询性能。

❖ 个人数据存储(PDS)

个人数据存储是为个别用户的需要而特别设计的。引入的原因是:

  • 性能原因,性能无法达到用户需求。
  • 权限原因,无法直接使用系统中数据。

对比 - 不同类型的数据存储

  • 易变数据:表明在数据存储中的数据是否是不断更新的。数据的状态与原始资料数据是同步或者几乎同步的。
  • 详细数据:意味着数据存储是否仅仅包含最低水平的细节。
  • 集成数据:表明逻辑相符的数据是否存储在一起。
  • 时变或历史数据:指的是数据存储是否也包括历史数据,即数据较旧的版本。
  • 概括、聚合和衍生数据:意味着数据不是粗略地存储,而是以某种方式通过应用聚合从最初原始资源数据中衍生的。
  • 企业级数据:意味着数据存储是为了组织的大部分用户而优化的,与此相反的是为了小部分用户而优化的数据存储。

数据模型

  • 关系模型 关系模型中,每个商务实例中只存储一次。其目的是避免存储重复的数据使得被存储的数据变得不一致。因为关系模型的表格不包含重复的数据,它们与数据插入、更新和删除的事务高度适应。
  • 星形模式 在星形模式中,表分为维度表和事实表。其名称的由来是因为其构图特征,事实表在中间,维度表像射线那样从中间发射出来,共同构成星形的图案。其中每一个维度表都有一个主键和一系列特征属性来描述这个维度。事实表则是星形模式的中心表,每个事实表都有一个主键包含着它引用的所有维度表中的主键。事实表中的一行往往代表一个业务事件。以星形模式安排表的主要目标是限制做连接查询的时候必须参与的表的数目。经常提及的改善查询性能方式是避免表之间的连接查询。另一个优点是书写查询和为最终用户提供一套能从工具中生产查询的选型变得更容易。
  • 雪花模式 雪花模式中的事实表只和维度表有关,这一点和星形模式一样。而另一方面,维度表可以和其他的表存在一对多的关系。其优点在于,与等价的星形模式相比减少冗余数据存储。除此之外,雪花模式还支持维度表中更低级别的查询。

数据加工

  • ETL 数据从一个或多个源数据存储区中抽取出,然后被转换、清洗、整合,最后被存储在一个目标数据存储区。
  • ELT 数据抽取开始,然后以未转换的形式存储在目标存储区,最后一步数据才会被转换并再次存储。

ETL vs ELT

两者的操作执行顺序不同。其本质是在ETL中,工具做了大部分的提升工作。它们处理了所有复杂的转换操作并使用数据库服务器简单地提取源数据和插入新的转换数据。在某种程度上,ETL中数据库服务器的性能并未得到充分使用。而ELT工具试着将数据库服务器的更多功能发挥出来。许多转换和整合操作也可由数据库服务器处理,所以ELT工具将大部分操作代理给数据库服务器。这样做的效果就是当数据被装载进一系列表格之后,相同的数据也会被检索、转换、整合、过滤并被复制到另一个表格。这类操作可通过所谓的INSERT-SELECT语句由数据库服务器很容易地完成。这种操作在数据库服务器中实现的好处是ELT服务器和数据库服务器之间的数据转换不会浪费时间。大部分的数据操作由数据库服务器本身完成。这样,数据库服务器的全部功能就被发挥出来。另一个优势是目标数据库还保存了原始的未经转换的数据和转换了的数据。对许多数据使用者来说,能使用原始数据是很有帮助的。

  • 复制 通过复制方式,数据可以从一个区域到另一个区域。ETL和ELT采用最优化方式成批拷贝数据,而复制方式是一条条记录实现的。复制通常是在插入、删除或修改其他数据时或者尽可能快到毫秒级别的场景下使用。除此之外,复制能减少对源数据存储区的干扰。复制的主要目标是速度,它的数据整合和转换能力就被限制了。复制技术适合从生产数据库拷贝数据到数据中转区或ODS,但不适合拷贝到数据集市和PDS。通常这两类操作不会连续被刷新,使用复制保持最新没有意义。

CDC

有些复制工作能够从日志文件中而不是从数据已经改变的数据库文件中提取数据。这意味着复制操作经常检测这些日志文件来检查一项交易是否已经完成。如果已经完成,相关的数据就会从日志文件中拷贝到目标系统中。这种读取日志文件的方式被称为改变数据捕捉(CDC)。

报告和分析形式

  • 运营报告和分析 运营报告和分析是指被管理层所应用的报告和分析的形式。大部分情况下,运营报告的分析需要访问几乎最新的数据。对于运营报告和分析,用户必须至少访问到运营数据。但大多数数据仓库提供的定期刷新能力,它们是不包括运营数据的。另外,由于报告与运营数据相距太远;对于新数据,从源系统到报告的道路很长。
  • 深度和大数据分析 很多报告是不需要详细数据的,只要聚合后的结果即可。但对于某些分析形式,详细数据是必须的,这种称之为"深度分析"。还有一种类似深度分析,需要存储和管理大量数据,例如传感器数据等,这类称之为大数据分析。这两类需求,应该允许用户直接访问生产系统和数据中转区。数据的庞大规模和一直持续涌入的数据量使得连续刷新数据仓库几乎是不可能的。
  • 自助式报告和分析 自助式报告和分析允许用户用最小设置来生产自己的报告。这种也被称为无计划分析,因此提前对这些查询做优化和调整是不可能的。
  • 无限制的自组织分析 用户可以分析未预定义的表格和关系。
  • 360°报告 包括目标对象的一个完整描绘。大部分情况下,360°报告是在细节的底层做的。此外,还可能需要访问非结构化数据源。
  • 探索性分析 需要访问非常大范围的数据资源和无条理的数据资源。
  • 基于文本的分析 无条理数据形式的文本分析。

传统方式的缺陷

  • 重复数据 数据分层存储造成大量数据冗余。出现这一问题主要是为了解决性能问题,为了加速查询,不得不做一定的冗余,物化部分信息。其不仅意味着昂贵的存储空间价格;而且不够灵活,每次修改都需要对重复数据进行额外操作。
  • 非共享的元数据规范 不可共享的元数据规范降低了灵活性,难以管理,将会导致不一致的报告结果。
  • 灵活局限性 在商务智能系统中采用抽象化和封装的概念,对于提高自身的灵活性、更容易地实现改变和采纳新的工程技术非常重要。
  • 数据质量下降 多数据副本导致的问题。
  • 有局限的运营报告支持 从生产数据库中获取资源到报告中,数据需要多次复制到另一区域,在极短时间内完成不可能。大多数商务智能没有按照运营报告与运营数据关联的方式来设计。我们不得不简化结构来支持运营系统,最根本的是移除数据存储区和最少化复制步骤来简化结构。

3. 数据虚拟化技术

人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。

1).构建篇

❖ 第一步:导入原始表

源表导入的过程,意味着数据虚拟化识别的过程。在导入的过程中,一部分元数据会被提取并存储在数据虚拟化服务器自己的字典中。其结果会生成一个名为封装表的对象。对于封装表来说,可以被查询,并且如果底层数据库服务器允许的话,可以对数据进行插入、更新和删除。封装表与源表是多对一的关系。对于一个源表可以定义一个或多个封装表,一个封装表至多可隶属于一个源表。这里需要关注的是导入中被提取并存储的元数据,它可以包含但不限于以下信息:

  • 源表所在服务器的网络位置
  • 登录数据库服务器的信息
  • 名称、所有者和源表建立的日期
  • 源表的结构(含每列的类型和非空规范)
  • 源表定义的主键和外键
  • 源表的行数和为每一列分配的值(用于查询优化)

❖ 第二步:映射虚拟表

封装表与源表具有相同的结构。如果用户需要看到部分列、汇聚后的结果或关联结果集,就需要在封装表上定义虚拟表。所谓映射的过程,就是定义了一个虚拟表的结构以及如何将一个源表(或一组源表)中的数据转换为虚拟表的内容。该映射成为虚拟表的定义。映射通常由一些操作组成,如行选择、列选择、列连接和转换、列名和表名变动、分组等。对于虚拟表来说,其是基于封装表或其他虚拟表定义的,虚拟表需要封装表;而封装表是基于源表定义的,它不需要虚拟表。

❖ 第三步:发布虚拟表

发布定义好的虚拟表,这意味着虚拟表可通过一个或多个语言和编程接口成为可用的数据使用者。常见的SQL就是一种访问接口。

❖ 其他问题:更新与事务

  • 虚拟表可更新因素 虚拟表指向源表内容是否能改变,取决于源表是否具有可更新性。有些源表(例如CUBE或外部数据),可能不支持插入、甚至更新。
  • 源表内容是否可以改变 这是权限问题,数据虚拟化服务器是否被授予了合适的权限。
  • 虚拟表与源表中记录关系 如虚拟表中行的更新、插入或删除可以被转换为源表中的一个记录的更新、插入或删除,那么改变是可以的。如果不存在一对一的关系,则很可能不能更新。
  • 数据虚拟化服务器支持事务管理。 如果一个数据存储支持事务管理,那么所做的改变可以形成一个原子事务。如果一个数据存储不支持事务,这种情况称为修正的事务机制。修正的意思是数据使用者必须能够活跃一些解开事务变化的逻辑。这种逻辑称为修正事务。因此当原始事务插入数据,这个修正事务删除它;当原始事务删除数据时,修改事务使数据回退。在大多数系统中,这意味着需要些较多的代码。部分数据虚拟化服务器支持分布式事务管理,但部分数据存储(例如电子表格)不支持XA。正确地操控它们,是数据使用者的责任。

2).管理篇

对数据虚拟化的主要管理动作,就是源表变化对虚拟化结果的影响。此时需要做“影响度分析”,其显示一个对象的改变而可能对其他对象造成的所有潜在影响。这里的前提是了解一个特定对象所依赖的对象,比如虚拟表所依赖的对象。通常的处理策略是周期性比较封装在源表中的元数据和底层数据存储区里真正的源表中的元数据,借此检测到源表已经发生变化,它们会检查这两个是否仍然是同步的。如不同步,需要做一些决策,包括:封装表删除、封装表无效、自动传播到封装表。这种情况,数据虚拟化服务器要确定封装表如何改变,使得它与源表再次同步;一般需要人工来确认是否执行。

3).安全篇

访问数据虚拟化的用户必须提供凭据以证明自己的身份,并确保确定登录用户的访问权限。

4).缓存篇

缓存是指虚拟表中的内容通过映射和存储磁盘或内存中的内容,从底层源表中检索出来。从此,当虚拟表被查询时,存储内容便可被访问,而不是从底层源表中访问。另外,转换也不需要了,因为数据(虚拟化内容)可以在缓存中获取。其副作用是,数据可能不是最新的。

❖ 使用原因

  • 查询性能 如果底层查询较慢,或者数据接入很庞大,以至于每次都很慢。大部分情况下,数据虚拟化不够快而底层数据存储却很快的问题不是那么突出。缓存可以帮助在虚拟表中加快查询的速度。
  • 负载优化 缓存可以将底层系统的负载减到最小。通过定义缓存,可以减少查询在旧系统上执行的次数。
  • 一致性报告 如果用户希望定期看到相同的结果,缓存可以提供一个稳定的数据源。
  • 数据源可用性 底层数据源并不总是可用的,缓存可以稳定运行。
  • 简化数据转换 如转换逻辑很复杂,以至于在每次用户请求时执行转换会花费很长时间。转换后的结果存储缓存,多次访问可重用结果。
  • 安全 安全策略可能不允许特定的用户访问某些源系统中的详细数据,但可访问聚合的数据。通过虚拟表创建缓存来存储特定的聚合数据,可防止用户看到详细数据。

❖ 缓存位置

  • 内存:速度快、价格贵
  • 磁盘 - 文件:速度快、使用简单、无法直接计算
  • 磁盘 - 数据库:适合大数据量、优化空间大

❖ 缓存刷新

  • 触发机制:手动、预定、查询驱动、事件驱动
  • 刷新方式:全量刷新、增量刷新、动态(自动)刷新
  • 更新方式:在线刷新、离线刷新

5).优化篇

❖ 查询阶段

  • 第1阶段 从数据使用者获得查询命令,传送给数据虚拟化服务。
  • 第2阶段 数据虚拟化服务的优化程序确定每一个虚拟表的数据存储区。优化过程就是每一个数据存储都生成一个查询。
  • 第3阶段 生成的查询被发送到正确的数据存储中。
  • 第4阶段 数据库服务器接受查询并对查询进行优化,该过程就是一种处理策略。
  • 第5阶段 通过低阶访问命令在存储单元中检索所需要的数据。
  • 第6阶段 把数据返回给数据库服务器。
  • 第7阶段 数据库将每个页面中的数据转换为数据表中的行,行中的数据被数据虚拟化服务请求。
  • 第8阶段 把行中的数据返回给数据虚拟化服务。
  • 第9阶段 数据虚拟化服务处理接收到数据。
  • 第10阶段 把行结合组成最红接过返回给数据使用者。

❖ 优化技术

  • 查询替换 数据虚拟化服务将查询结合成一个对数据库服务器的查询。即对虚拟表的映射的查询不是一个一个地执行,而是合并成一个综合查询并随之优化。这样最小化了数据库服务器与数据虚拟化服务之间传输的数据量。类似于数据库的的"视图分解"技术。
  • 下推优化 为了从源数据存储得到的数据量最小化,将处理操作尽量下推到数据库服务器执行。就是将选择、投影和分组等操作进行叠加。如数据存储能力不行,则仅检索所需数据,由上层的数据虚拟化服务执行。
  • 查询扩展 对于存储在两个不同数据存储区的表进行查询,可根据查询特点构造更为有效地处理分布式连接技术。例如将小表查询出结果,将大表的关联查询改造为常量查询,以只传输少量数据,代替了大表上传后过滤,提前到在源端过滤。
  • 运送连接优化 对于存储在两个不同数据存储区且数据量都比较大的两张表,需要使用传送连接优化技术。其过程为:先将其中一个数据表的数据传送到其他数据存储中;接下来虚拟化服务想这个数据存储发出连接两个数据表的命令,并且把连接结果返回到数据虚拟化服务器。至于与将两者传送到上层操作是否成本更低,需要优化程序根据信息作出判断。
  • 合并排序连接优化 同数据库的"合并排序"原理。
  • 缓存优化 使用缓存,加速访问。对于部分数据被缓存的情况,则会比较复杂。
  • 数据优化与统计 同数据库的"统计信息"原理。对于数据存储没有统计的情况(如XML文件),可手工输入统计信息。
  • 提示优化 同数据库的"Hint"原理。
  • SQL覆盖优化 开发者使用自定义SQL而不是由数据虚拟化服务来生成语句。这些自定义代码会直接传递到底层的数据库层,这种没有任何修改的特点也叫做"数据透传"。SQL覆盖最大的优点是,可利用一个特定数据存储的全部SQL查询功能。不足就是代码不能移植到其他数据存储中。

6).应用篇

数据虚拟化存在很多应用领域:

❖ 统一的数据访问

数据虚拟化的主要应用目标是在正确的时间以正确的形式给数据使用者提供正确的数据。这些数据是从数据存储中检索到的,包括数据仓库、数据集市、可操作数据存储和外部数据源。这些应用领域可概括为"统一数据访问"。数据使用者通过数据虚拟化服务访问数据,他们访问到的所有数据是来自多个数据存储统一后的数据存储中的逻辑数据。数据虚拟化服务负责集成和转换数据。统一数据访问是在商务智能系统的数据虚拟化中最常见的应用领域。

❖ 虚拟数据集市

企业开发数据集市最主要的原因是提高查询性能。没有数据集市,所有查询都是在数据仓库或其他中央数据存储中执行的。使用数据库技术进行查询的工作量可能太大,导致用户等待时间过长。通过使用数据集市,可以把大部分的查询从中央数据仓库转移到数据集市,并通过多个数据集市来分配查询负载,提高查询性能。在数据虚拟化服务中,可以开发出与物理数据集市中的虚拟表结构相同的虚拟表。然而,使用数据虚拟化服务器进行开发,数据并不是物理存储中的数据。访问虚拟数据集市时,数据被复制。通过这种方式,有其优缺点:

  • 优点:开发速度快 虚拟数据集市较物理数据集市所做工作少了很多
  • 优点:提高灵活度 在虚拟数据集市中改变虚拟表只需改变虚拟表的映射而不涉及其他的修改。在物理数据集市中可能还需修改表结构、重新定义ETL脚本、卸载和重新加载数据、改变现有索引结构、重新调整优化数据库等。虚拟方式涉及工作更少,因此更为灵活。
  • 优点:成本低 因为整体虚拟方式工作内容少,因此成本更低。
  • 缺点:性能差 物理数据集市的性能可能比虚拟方式更好,然而虚拟数据集市可通过引入缓存改进性能。

❖ 虚拟数据仓库—基于数据集市

如果一个企业的商务智能系统仅由数据集市构成,而不包括中央数据仓库。而开发的报告,需要整合来自多个数据集市的数据时,可使用数据虚拟化服务构建一个虚拟数据仓库。当开发报告请求数据时,即按需进行数据集成。注意,它需要访问的数据集市支持一致性维度表,这意味着可以把所需列加入这些表中。基于共同维度将这两个数据表结合起来,这就要保证两种数据支持同维度表。只有数据集市包含一致性的维度表,才能进行连接,进而开发虚拟数据仓库。另一种方法是周期性地把数据从数据集市复制到额外数据存储区。报告需要通过集成视图来访问这些数据存储。使用数据虚拟化服务的优点是,不必改变现有的架构,也不必开发和管理额外的数据存储。

❖ 虚拟数据仓库—基于生产数据库

开发虚拟数据仓库的另一种方式是通过在所有的生产数据库顶层设定一个数据虚拟化服务。从技术上可行,但有两个限定条件:

  • 生产数据库中包含用户需要的全部数据(含历史数据)
  • 对生产数据库执行的查询不会引起太多性能及并发性问题

❖ 扩展数据仓库

数据虚拟化服务可为外部存储提供集成视图,这样可以避免将数据从其他数据存储复制到数据仓库。创建非SQL数据源封装的能力,如Web服务、XML文档和Java组件,使得它能够相对容易地访问这些外部数据源。该报告将以与访问有内部数据的虚拟表相同的方式访问它们。

❖ 操作报告和分析

数据虚拟化服务提供报告直接访问生产数据库。通过定义正确的虚拟表和映射,它们能够呈现出更合适的数据结构、转换不正确的数据、整合来自不同生产数据库中的数据。以这样一种方式进行优化访问,使得性能和并发问题被最小化或完全解决。使用数据虚拟化的额外好处是,所有的数据虚拟化服务器中输入的规范是由所有需要访问的可操作数据的工具共享的:规范正在被重用。缺点是数据虚拟化服务的查询可能会对正在进行的业务工作带来负面影响,也可导致并发问题。

❖ 操作数据仓库

当报告工具需要访问生产数据库和数据仓库时,需要把操作数据和历史数据结合起来。部署数据虚拟化,并让数据虚拟化服务合并从生产数据库得到的实际数据和从数据仓库中得到的历史数据。这就是所说的"操作数据仓库",或者称为"在线或近线数据仓库"。这一方案中,需要解决的几个问题:

  • 需具有权限,把生产系统复制到数据仓库环境中。
  • 如果数据仓库中的数据已被清洗,而在生产系统中的数据还没有被清洗,则会发生不一致。
  • 访问生产系统会导致与上面同样的性能和并发问题。

❖ 虚拟企业数据仓库

当一个报告需要访问存储在所有这些中央数据仓库的数据时,数据虚拟化服务是最实际的解决方案。该解决方法非常类似于数据集市中虚拟数据仓库的解决方案。但并不是合并来自多个数据集市的数据形成一个虚拟数据仓库,而是合并多个数据仓库(或数据集市)的数据形成一个虚拟企业数据仓库。

❖ 自助服务报告和分析

在自助服务的最终形式下,用户被授予访问任何数据存储的权限。数据虚拟化服务器允许IT部门满足用户的此类需求。可定义虚拟表,转换、整合以及清洗规范在映射中实现。通过预先定义正确的虚拟表,用户可获得一组一致的表。如果需要更多的数据表,或者如果数据表结构必须做出改变,则可以一种快速和受控的方式进行访问。换句话说,通过数据虚拟化服务,虚拟表可以快速地创建和调整,因为它们时虚拟的,不涉及物理概念。IT部门的快速反应能力完全符合自助服务商务智能的特性。

❖ 虚拟沙盒

沙盒是指在商务智能中为分析师和数据科学家设立一个独立和孤立的环境,从而研究数据问题。在这一环境中,任何形式的报告或分析与其他用户的执行互不干扰。传统的方案,需要建立一套物理环境并将数据加载进去,这需要时间和金钱开销。虚拟沙盒可通过数据虚拟化服务实现,比物理沙盒需要更少的预先工作和更小的投资。另外,如果需要更多的数据,只需定义额外的虚拟表。总的来说,虚拟沙盒比物理沙盒更灵活,并且更适合在这种需要临时沙盒的环境下创建。

❖ 原型设计

不使用ETL脚本或任何其他额外数据存储的系统,可通过先开发原型来节省大量的时间。原型可通过数据虚拟化很容易地开发出来。虚拟表和映射可通过定义迅速得到,而且结果可通过正确的方式显示给用户。如果结果不对,可迅速改变映射和表结构,甚至当场就可以进行修改。通过这样的原型可很迅速地看出当前的转换、集成和清洗所存在的问题。数据虚拟化被作为原型设计工具,为用户提供更容易实现改变的动态环境。

❖ 分析半结构化和非结构化数据

利用数据虚拟化服务器的能力,可以对半结构化、非结构化数据进行查询,进而获取结构数据。但需注意的是,外部资源中的数值编码、数据语义等与内部数据可能不一致,或者不具有报告需要的格式和详细度。因此那些外部数据源对商务智能部门不负责,因此使用这些数据需要小心。

❖ 一次性报告

仅使用一、两次的报告,没必要花费时间去设计报告数据集市、ETL脚本等完整的物理环境,使用数据虚拟化非常合适。它可以很容易、很快速地开发出虚拟表,开发出报告并执行完毕。执行后可直接删除虚拟表,这是最低成本的投入。

❖ 扩展商务智能系统

很多商务智能系统给外部用户提供可用数据的访问途径。但这里需要解决几个问题:

  • 不允许外部用户访问所有数据,他们必须受到限制。访问数据必须控制在只允许查看那些行和列。数据虚拟化服务支持外部用户权限,给每位外部用户分配不同授权规则,尤其指明查看哪些行和列。
  • 外部用户可能利用广泛的、大量的接口技术和语言来查询数据。数据虚拟化的关键特征是封装和抽象。利用这些特征,可提供给外部用户正确的API和语言(封装),以及正确阶段中正确数据的聚合(抽象)。通过为每个外部用户定义的虚拟表,可得出多种技术接口。注意,一个虚拟表的映射和列结构只能被定义一次。
  • 外部用户产生的查询工作量可能很大且无法预估。这对稳定性及可用性带来很大调整。可通过在数据虚拟化中定义缓存和刷新策略来支持庞大的访问压力。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 韩锋频道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档