精华内容
下载资源
问答
  • 常见的数据集成问题
    千次阅读 多人点赞
    更多相关内容
  • 分析了目前常见的几种数据集成方式存在的问题,提出了一种建立多种数据集成接口适配组件的设计方案。该方案以中间件方式实现采集适配器,通过统一适配器实现对多种异构数据源的集成与处理及对系统集成平台的统一发布...
  • 现代数据环境下,如何做数据集成?这11个靠谱实践收藏了

    前言

    数据流转是持续的、不断变化的,我们应当善用这些数据特点来发挥最大价值。

    在大数据和实时数据技术出现之前,数据的流转相对简单,整个过程类似于工厂的生产线。要么是将数据从相对静态的数据库移动到数仓中的适当位置,要么是将数据以一种标准化的方式在数据库和应用程序之间移动。

    与过去相比,当前环境是多对多的场景,例如来自流式、批处理或微批处理的各类数据,被多个应用程序所消费。大规模数据的处理操作也不再遵循传统数据所走的线性路径,而更像是一个城市交通网格(即共享资源的网络)。

    此外,由于各方(甚至是第三方)分别管控数据来源和应用,一旦模式或语义不可避免地发生变化时(即数据漂移),则会对数据下游的应用(分析或交互)造成严重干扰。

    鉴于现代化数据的动态特性,我们需要从操作的角度出发,必须每天进行管理并随着时间的推移不断迭代。在当下,企业必须基于不断变化的特性来构建架构,并持续监视和调整其数据流转系统的性能。

    一、11个最佳实践

    下面我们分享一下数据集成的11个最佳实践:

    1、尽量避免手工编码

    虽然编写定制代码将数据从源头导入到数据仓库中早已是司空见惯的事,但是鉴于大数据的动态特性,这种做法是危险的。此类操作会在数据流处理中是被证明非常容易出错和难以维护,一旦数据模式发生微小的变化,则会导致数据管道丢失数据或完全失败。除此以外,还存在下述问题:

    • 缺少数据管道的监控: 由于检测工具必须显式地设计在其中(通常没有遵循),因此数据流可能成为黑箱。
    • 扼杀组织敏捷性: 底层编码将导致组件间的耦合更加紧密,使基础设施难以升级。

    目前,现代化的数据处理系统可以在数据源、中间处理系统(如Kafka等消息队列)和数据仓库之间建立无代码的即插即用连接。您可以从此类系统中得到灵活性、可见性和独立升级数据处理组件的能力。如果您担心定制化或可扩展性问题,这些工具一般会通过支持强大的表达式语言或插入自定义代码的能力来增强其内置连接器。

    Tapdata Real Time DaaS 就是一款基于数据即服务(DaaS)架构理念的现代数据集成系统,具备异构数据实时同步、批流一体数据融合、自助式 API 发布等核心功能,可帮助企业无代码快速连接孤岛系统,构建敏捷型的实时数据服务平台,能够为联机分析处理(OLAP)业务提供实时数据输入和为交互式业务(OLTP)提供实时的数据服务。Tapdata Real Time DaaS 核心优势是“全链路实时”:基于CDC方式实时采集;实时流式建模;亚秒级真实时分析;增量数据校验;高并发查询毫秒级响应。适用于企业统一数据管理、实时数据中台、实时数据库同步、业务系统升级与加速等多个场景。

    2、由业务驱动并减少对 Schema 规范的依赖

    虽然完整的 Schema 规范是传统数据世界的标准要求,但大数据场景下,它将导致工程时间和资源的浪费。消费应用程序通常仅使用几个关键字段进行分析,加上大数据源往往有控制不力的Schema,随着时间的推移而变化,迫使人们不断地进行维护。

    数据流系统应该是由业务驱动,而不是依赖于完整的 Schema 规范,因此您只需为下游分析有关的字段指定条件并执行转换。

    此类极简风格不仅减少了开发和实施管道所需的工作和时间,同时还使数据流更加可靠,出错可能性更小。

    3、设计批流一体的数据处理框架

    即使行业中有很多关于流分析的声音,但企业的数据仍然是一个基于过去30年开发的应用程序和源数据库的批处理世界。因此,当你在规划网络安全、物联网和其他利用流的新时代应用时,您必须考虑这样一个事实,即这些数据通常需要与批处理源(例如主数据或交易数据)结合或对其进行分析。

    实际场景中,需要将流合并到遗留的批处理驱动架构中,同时维护或改进整体数据操作的性能和可靠性,而不是建立一个仅用于流的框架。

    Tapdata Real Time DaaS 实时数据服务平台即采用了批流一体的实时数据融合架构,能够非常好的满足上述场景需求。

    4、在提取时清洗原始数据

    早期 Hadoop 用户的最初口号是只在数据仓库中存储只读不可变的原始数据。随着技术在真实场景的应用,我们逐渐认识到,如果没有对数据进行清洗有可能引发一些严重的缺陷。这就好比人喝了未经处理的水容易生病一样。

    直接存储原始数据通常会导致下述问题:

    • 数据仓库难以提供有效数据查询能力,失去利用价值
      Gartner 等公司将此类数据仓库比喻为“数据沼泽”。
    • 存储原始数据会导致数据湖中包含个人数据和其他敏感信息,额外增加了安全合规风险。

    为消除此类风险,常见的方法是由数据科学家来清洗每个消费活动的数据,但显然该方式的效率非常低。通过 Tapdata Real Time DaaS,您将实现在数据摄取时完成数据清洗:

    • 基础清洗:包括简单的“行进行出”转换,执行企业数据策略、规范化/标准化数据格式。
    • 高阶清洗:包括主数据建模,多表合并,聚合计算等,其结果可以更容易更快速的被下游开发者或者数据科学家和商业分析师广泛利用。

    尽可能地靠近数据源对数据进行清洗可以提高数据科学家的工作效率,让他们专注于特定用例的“数据整理(data wrangling)”,而不是将力气反复花在本应自动化的规则重建上。

    5、尽量不要依赖文件传输

    新的数据集通常是无限和连续的,比如不断变化的日志、点击流和物联网传感器输出等。如果对这些动态数据源使用文件传输或其他辅助机制会导致一个容易出现数据故障的体系结构,需要不断维护以保持可行性。

    由于文件的内容在大小、结构和格式上各不相同,因此很难即时检查到相关问题。这意味着无法观测到应该传达给消费系统和应用的变化。如果您打算依赖于文件传输机制,可以考虑对文件进行预处理,以标准化数据格式简化检查和分析,或者采用一个提取工具或框架来完成此工作。Tapdata Real Time DaaS 便可以协助您完成企业统一数据的管理。

    6、监控数据流中的一切

    在一个复杂的数据流系统中,你永远无法获得足够的可见性。当你面对不断变化的数据源和系统的挑战时,端到端的数据流转检测为您提供了一个了解性能的窗口。不仅需要用于对单个数据流进行时间序列分析以梳理随时间的变化,更重要的是,它可以帮助你在不同的数据流之间进行关联,以实时识别关心的事件。

    企业应该尽量捕获整个数据流架构的每个方面的细节,同时最大限度地减少系统之间的紧耦合和磨合成本。一个好的监控方法应满足以下特性:

    • 将测量值异步传递给外部管理系统。
    • 监测项可以从粗粒度下钻到细粒度,可适用于诊断、根因分析和问题修复。

    Tapdata Real Time DaaS 具备详尽的可观测性能力,在完整的数据链路上,从日志的采集和解析,到各个处理节点,到最终写入到目标,提供了上百个不同的指标监控点,并可以直接对接Prometheus平台,为用户提供数据任务的详细洞察能力。

    7、检查数据内容而不是只计算数量

    试想一下,如果机场安检只是清点乘客和行李,而不是实际扫描行李中的异常物品,你会感到安全吗?当然不会,然而传统的数据提取的指标是吞吐量和延迟。

    如果您在数据流转的过程中对其进行剖析和了解其价值,您会得到更好的结果和价值。 否则,会让自己处于数据格式或意义的突发变化的风险之中。数据值的重大变化可能表明现实世界发生了真正的变化,或者可能表明未检测到的数据漂移正在影响您的下游分析。

    检查数据内容的另一个好处是,它允许您识别传输基础设施的个人或其他敏感数据。许多行业和地区对个人数据的存储都有严格的要求,例如欧盟 2018 年“即用即弃”的 GDPR 要求。通过提供对收集和存储的任何个人数据的实时检测和跟踪, 持续监视输入数据的模式有助于公司遵守规则。

    8、通过 DevOps 来应对数据流转

    敏捷工作流的 DevOps 敏感性与系统设计者和运行者之间联系紧密,非常适合大数据的流转操作。在一个数据源、消费用例和数据处理系统不断演进的世界里,数据管道需要频繁地调整。

    传统的数据集成系统可以追溯到瀑布开发方法为王的时代,彼时的工具几乎完全专注于设计模式问题。早期的大数据采集开发框架(如Apache Sqoop和Apache Flume)也是如此。如今,使用 Tapdata Real Time DaaS,便可以快速提供了一个集成开发环境(IDE),满足在不断发展的数据流生命周期中持续使用的需求。

    9、分离数据流转系统与基础架构

    与为传统数据架构构建的单体式解决方案不同,大数据基础设施需要在同类最佳(通常是开源)组件之间进行协调,以实现特定功能,例如提取、消息队列、存储、搜索、分析和机器学习。 这些组件按照自己的节奏发展,且需要根据业务需求进行升级。因此,大型且昂贵的同步升级正在被对组件进行的一系列逐项更改所取代。

    为了让您的数据操作在这个日新月异的新时代中保持最新状态,您应该使用中间件层的数据传送系统,它能使每个传送链上的子系统相互之间松耦合。这使您无需重新实施基础设施的基础部分即可对 “用菜单点菜”的方式进行现代化改造。

    10、规划复合部署模式

    数据流不仅变得复杂,而且现在跨越了一系列部署备择方案。行业调查表明,企业期望跨多个云部署数据,同时仍保留本地数据操作。

    边缘操作正在从简单的收集转变为包括简单或复杂的处理,这取决于设备约束、紧急性和连接的稳健性。由于每个部署选项都有自己的优势,因此不要指望有一种方法能够一劳永逸。 实际上,业务需求将决定一个企业架构,该架构需要将其中的许多元素结合起来。

    无论你处于什么阶段,最好进行这样一个假设:您将数据存储在许多不同的环境中,并构建基于完整“工作负载可转移”的架构,您可以基于任务执行的最优代价和性能特征将数据流转至分析点,并且以最小的阻碍做到这一点。

    此外,随着云产品和业务需求的发展,您的多云架构将随着时间的推移而变化。

    11、建立卓越的动态数据中心

    数据的移动正在从“烟囱模型”演变为类似于"网格模型"。 你不能再使用“即用即走”的方法来构建数据摄取管道。 在这样的系统中,你必须规范化整体运作管理(包括对人员、流程以及系统的管理),以确保该系统能可靠地运行并持续满足SLA。这也就意味着:

    • 需要在系统中添加工具来提供对流量的实时可视化监控;
    • 系统还需要能够接收警告并应对数据传输过程中可能存在的违反数据完整性的问题。

    否则,你就会像”手握纸质地图尝试在瞬息万变的繁忙城市交通中导航“一样感到手足无措,与此同时,还可能存在数据延迟、不完整甚至数据丢失的风险。

    二、Tapdata Real Time DaaS 助您实现最佳数据集成

    类似于 IaaS,PaaS 或者 SaaS,Tapdata Real Time DaaS 是基于 DaaS (Data as a Service)架构, 将企业各个业务系统的数据汇总到一个中央化平台,经过低代码方式治理以后,形成可复用的企业数据资产,通过无代码数据接口方式提供给业务使用方。其特点和创新点是:具备“实时同步+实时处理+实时服务”的全链路实时数据处理及服务平台。

    • 实时数据采集同步。 Tapdata 的第一步就是将批量、滞后的 ETL 换成了 CDC 方式,基于数据库 Write Ahead Log 日志同步监听的方式来进行在不同系统之间的数据复制,它的优势在于:对源库性能影响小;资源消耗少;从事务在源端提交开始到更新写入同步的目标库,延迟可以小于1秒,能够满足对实时性要求较高的业务场景;

    • 基于Pipeline的流式数据处理建模。 当我们把需要的数据从源库里面无侵入、准实时地抽取了出来之后,可能还需要:对来自多个库的数据进行合并;对表结构进行重构,组成新的模型;构建业务宽表等。基于 Tapdata 实时流数据处理技术,可以实现事件触发、毫秒级数据更新、不间断持续运行,从而满足 TP 业务和实时分析等场景需求。

    • 基于分布式数据库 MongoDB 或 TiDB 的中间库存储。 相比 AP 数据平台常用的 Hadoop 大数据存储方案, 比较成熟的分布式数据库(MongoDB 或 TiDB)更适合作为 DaaS 的存储方案。主要原因是 DaaS 的很大一部分能力需要直接对接业务系统,高并发,毫秒级响应是必备的能力。这种能力只有基于索引机制的分布式数据库才可以做到。MongoDB 的模型变动灵活,非常适合多源快速融合,无需复杂关系建模。而 TiDB 的 HTAP 则能不错的支撑一些常见的分析业务。

      Tapdata Real Time DaaS 可以满足当下多种数据集成的应用场景:

    • 快速数据交付
      新型数据库和国产数据库越来越多,每一个新数据库场景的落地,都有可能需要获取已有业务系统的数据。直接从 Tapdata Real Time DaaS 导入并保持持续同步,满足实时数据更新的需求,从数周的时间缩短到数小时内完成数据交付;

    • 构建实时数据中台
      通过 Tapdata Real Time DaaS 实时打通企业数据孤岛,对数据进行实时采集,治理及建模,构建企业的主数据系统,为企业的交互式业务,包括客户管理、生产运营管理等提供一个完整全面的企业数据底座,支撑前端交互式业务。

    • 开发实时数据大屏
      Tapdata Real Time DaaS 完成数据采集同步,宽表构建,统计聚合计算,并为帆软、Tableau 或自研的数据可视化平台提供数据固化视图,以亚秒级的性能为这些可视化平台供数,超越传统大屏依赖 SQL 和逻辑视图的方案,让实时大屏交互体验无需等待,更流畅。

    • 构建实时数仓
      将企业主数据及运营数据统一汇聚到 Tapdata Real Time DaaS ,按照数仓分层理论分成基础数据,主数据和汇总数据层,为企业BI、报表等提供快速的数据支撑。

    • 构建企业数据服务平台
      企业内部部门众多,各业务均需要获取企业相关运营数据,通过 Tapdata Real Time DaaS 构建一个统一的数据服务平台,部门可以快速的获取业务所需要的数据,并且通过API方式可以实现自助访问。

    获取更多 Tapdata Real Time DaaS 的信息,可访问 Tapdata 官网 https://tapdata.net/ ,点击下载 Tapdata 技术白皮书免费试用 Tapdata Real Time DaaS

    展开全文
  • 数据集成

    千次阅读 2020-10-15 16:01:35
    数据集成一. 数据集成的基本概念二....数据集成技术是协调数据源之间不匹配问题[63−67],将异构、分布、自治的数据集成在一起,为用户提供单一视图,使得可以透明地访问数据源.系统数据集成主要指异构数据

    一. 数据集成的基本概念

    在信息化建设初期,由于缺乏有效合理的规划和协作,信息孤岛的现象普遍存在,大量的冗余数据和垃圾数据存在于信息系统中,数据质量得不到保证,信息的利用效率明显低下.为了解决这个问题,数据集成技术[62]应运而生.数据集成技术是协调数据源之间不匹配问题[63−67],将异构、分布、自治的数据集成在一起,为用户提供单一视图,使得可以透明地访问数据源.系统数据集成主要指异构数据集成,重点是数据标准化和元数据中心的建立.

    • 数据标准化:数据标准化的作用在于提高系统的可移植性、互操作性、可伸缩性、通用性和共享性.数据集成依据的数据标准包括属性数据标准、网络应用标准和系统元数据标准.
    • 名词术语词典、数据文件属性字典、菜单词典及各类代码表等为系统公共数据,在此基础上促成系统间的术语、名称、代码的统一,促成属性数据统一的维护管理;
    • 元数据中心的建立:在建立元数据标准的基础上,统一进行数据抽取、格式转换、重组、储存,实现对各业务系统数据的整合.经处理的数据保存在工作数据库中,库中所有属性数据文件代码及各数据文件中的属性项代码均按标准化要求编制,在整个系统中保持唯一性,可以迅速、准确定位.各属性项的文字值及代码,也都通过词库建设进行标准化处理,实现一词一义.建立元数据中心的基本流程如下图所示.
      在这里插入图片描述

    二. 数据集成方法

    数据规范和数据交换的完成,对数据集成的有效进行提供了很大的帮助,但在数据集成时仍然需要解决以下难题.
    首先是异构性.数据异构分为两个方面:其一,不同数据源数据的结构不同,此为结构性异构;其二,不同数据源的数据项在含义上有差别,此为语义性异构;其次是数据源的异地分布性;最后是数据源的自治性.数据源可以改变自身的结构和数据,这就要求数据集成系统应具有鲁棒性.
    为了解决这些难题,现在有模式集成方法、数据复制方法和基于本体的方法这几种典型的数据集成方法:

    2.1 模式集成方法

    模式集成方法为用户提供统一的查询接口,通过中介模式访问实时数据,该模式直接从原始数据库检索信息.该方法的实现共分为 4 个主要步骤:源数据库的发现、查询接口模式的抽取、领域源数据库的分类和全局查询接口集成[68−73].
    在这里插入图片描述
    模式集成方法依赖于中介模式与原始源模式之间的映射[74],并将查询转换为专用查询,以匹配原始数据库的模式.这种映射可以用两种方式指定:作为从中介模式中的实体到原始数据源中的实体的映射——全局视图(GAV)方法[75],或者作为从原始源中的实体到中介模式——本地视图(LAV)方法的映射[76].后一种方法需要更复杂的推理来解析对中介模式的查询[67,77,78],但是可以更容易地将新数据源添加到稳定中介模式中.
    模式集成方法的优点是为用户提供了统一的访问接口和全局数据视图;缺点是用户使用该方法时经常需要访问多个数据源,存在很大的网络延迟,数据源之间没有进行交互.

    2.2 数据复制方法

    数据复制方法是将用户可能用到的其他数据源的数据预先复制到统一的数据源中,用户使用时,仅需访问单一的数据源或少量的数据源.数据复制方法提供了紧密耦合的体系结构,数据已经在单个可查询的存储库中进行物理协调,因此解析查询通常需要很少的时间[79],系统处理用户请求的效率显著提升;但在使用该方法时,数据复制需要一定的时间,所以数据的实时一致性不好保证.
    该方法的过程是:先提取各个异构数据源中的数据,然后转换、加载到数据仓库中,用户在访问数据仓库查找数据时,类似访问普通数据库.对于经常更新的数据集,数据仓库方法不太可行,需要连续重新执行提取、转换、加载(ETL)过程以进行同步.根据数据复制方法的优缺点可以看出:数据源相对稳定或者用户查询模式已知或有限的时候,适合采用数据复制方法.数据仓库方法示意图如图 7 所示.
    在这里插入图片描述
    下面举例说明这两种集成方法具体应用的区别:目前我们想要设计一个应用程序,该应用程序的功能为用户可以利用该程序查询到自己所在城市的任何信息,包括天气信息、人口统计信息等.传统的思想是,把所有这些信息保存在一个后台数据库中,但是这种广度的信息收集起来难度大且成本高,即使收集到这些资源,它们也可能会复制已有数据库中的数据,不具备实时性.
    此时,我们选择模式集成方法解决该应用程序面临的问题,让开发人员构建虚拟模式——全局模式,然后对各个单独的数据源进行“包装”,这些“包装”只是将本地查询结果(实际上是由相对应的网站或数据库返回的结果)转换为易于处理的表单,当使用该应用程序的用户查询数据时,看似是本地查询,实则数据集成系统会将此查询转换为相应数据源上的相应查询.最后,虚拟数据库将这些查询的结果反馈给用户.如果我们选择使用数据复制方法来解决此问题的话,首先,我们需要把所有的数据信息复制到数据仓库中,每当数据(如天气情况)有所更新时,我们也要手动集成到系统中.所以,两种数据集成方法的使用需根据具体的
    情形来选择.

    2.3 基于本体的数据集成

    根据上述介绍,数据异构有两个方面:前两种方法都是针对解决结构异构而提出的解决方案;而本体技术致力于解决语义性异构问题.语义集成过程中,一般通过冲突检测、真值发现等技术来解决冲突,常见的冲突解决策略有如下 3 类:冲突忽略、冲突避免和冲突消解.冲突忽略是人工干预把冲突留给用户解决;冲突避免是对所有的情形使用统一的约束规则;冲突消解又分为 3 类:一是基于投票的方法采用简单的少数服从多数策略;二是基于质量的方法,此方法在第 1 种方法的基础上考虑数据来源的可信度;三是基于关系的方法,此方法在第 2 种方法的基础上考虑不同数据来源之间的关系.
    本体是对某一领域中的概念及其之间关系的显式描述,基于本体的数据集成系统允许用户通过对本体描述的全局模式的查询来有效地访问位于多个数据源中的数据[81].陶春等人针对基于本体的 XML 数据集成的查询处理提出了优化算法[82].目前,基于本体技术的数据集成方法有 3 种,分别为:单本体方法、多本体方法和混合本体方法.
    本体是对某一领域中的概念及其之间关系的显式描述,基于本体的数据集成系统允许用户通过对本体描述的全局模式的查询来有效地访问位于多个数据源中的数据[81].陶春等人针对基于本体的 XML 数据集成的查询处理提出了优化算法[82].目前,基于本体技术的数据集成方法有 3 种,分别为:单本体方法、多本体方法和混合本体方法.
    由于单本体方法所有的数据源都要与共享词汇库全局本体关联,应用范围很小,且数据源的改变会影响全局本体的改变.为了解决单本体方法的缺陷,多本体方法应运而生.多本体方法的每个数据源都由各自的本体进行描述,它的优点是数据源的改变对本体的影响小,但是由于缺少共享的词汇库,不同的数据源之间难以比较,数据源之间的共享性和交互性相对较差.混合本体方法的提出,解决了单本体和多本体方法的不足:混合本体的每个数据源的语义都由它们各自的本体进行描述,解决了单本体方法的缺点.混合本体还建立了一个全局共享词汇库以解决多本体方法的缺点,如图所示.混合本体方法有效地解决了数据源间的语义异构问题.
    在这里插入图片描述

    展开全文
  • 数据集成-3-数据集成框架

    千次阅读 2022-03-14 09:13:00
    数据集成-3-数据集成框架

    1. 数据集成概述

    1.1. 数据集成的必要性

    1. 历史数据的价值
    2. 异构环境数据源
      1. 不同时期、不同的公司、不同的工具、不同的平台
      2. 购买供应上应用包的数量日益增加
      3. 冗余数据、垃圾数据,数据一致性问题
    3. 企业需要将内部数据进行发布和交换
    4. 大数据和虚拟化的催化剂

    1.2. 数据集成的概念

    1. 对各种异构数据提供统一的表示、存储和管理, 以实现逻辑或物理上有机地集中
      1. 集成是指维护数据源整体上的数据一致性、提高信息共享利用的效率
      2. 透明的方式是指用户不必再考虑底层数据模型不同、位置不同等问题,能够通过一个统一的查询界面实现对网络上异构数据源的灵活访问
    2. 以一种统一的数据模式描述各数据源中的数据,屏蔽它们的平台、数据结构等异构性,实现数据的无缝集成
    3. 数据样例
      1. 运动的数据:数据治理、数据质量管理、集成
      2. 集成为通用格式——数据转换
      3. 数据从一个系统迁移到另一个系统
      4. 在组织内部移动数据
      5. 从非结构化数据中抽取信息
      6. 将处理移动到数据段。
    4. 简单场景:在下图的PPT下面

    1. 上图中是最全的一个场景
      1. 主数据:决定数据类
      2. 描述数据:描述数据的信息

    1.3. 数据集成的特征

    1. 分布性:网络传输的性能和安全性
    2. 自治性:在不通知集成系统的前提下改变自身的结构和数据
    3. 异构性:运行环境、数据模型和数据语义

    1.4. 数据集成的分类

    1. 批处理数据集成:将数据以成组的方式从源应用周期性地传输到目标应用
    2. 实时数据集成:为了完成一个业务事务处理而需要即时地贯穿多个系统的接口
    3. 大数据集成
    4. 数据虚拟化:使用多种数据集成技术以对多种数据源和技术的数据进行实时整合,而不仅仅结构化数据

    1.4.1. 批处理数据集成

    1. 数据转换方法:松散集成, 通过转换工具实现应用系统之间的数据转换和交换,较低层次的集成
    2. 数据聚合方法:借助于中间件系统构造一个虚拟的全局数据模式, 是一种集中式管理、分布式存储的较高层次的集成模式
    3. 析取、转换和装载(ETL):通过对异构数据源中的数据进行分析、转换和装载, 建立一个数据仓库,面向企业决策的数据集成方法

    1.4.1.1. 数据转换方法

    1. DBMS自带的转换、迁移工具
      1. Oracle的Migration Workbench
      2. Microsoft SQL Server的DTS
      3. 通用性不强
    2. 应用系统内部集成的转换工具
      1. 系统与其他应用系统之间的数据接口
      2. 两种规范,EDI
    3. 通用的、集成的数据转换工具

    1.4.1.2. 数据聚合方法

    1. 将多个数据库集成为一个统一的数据库视图
    2. 利用中间件集成异构数据源,不需要改变原始数据的存储和管理方式
    3. 中间件系统位于异构数据源和应用程序之间
      1. 向下协调各数据库系统
      2. 向上为访问集成数据的应用系统提供统一的全局数据模式和数据访问的通用接口

    1.4.1.3. ETL方法

    1. 从多个数据源中抽取数据, 然后进行数据转换和加载, 最终得到统一的、完备的数据仓库
    2. 原来分散的应用系统仍然独立运作, 原来存在的异构数据源仍然为各自的应用系统提供数据服务
      1. 不会破坏企业原有的应用架构, 比较适合于大量数据的迁移
      2. 可以提供复杂的数据转换功能
      3. 可以集成多种数据源和复杂的商业规则, 能容忍数据在时间上的延迟

    1.5. 数据集成开发生命周期

    1. 项目范围:数据移动的基本需求、基本设置
    2. 概要设置:要和数据拥有者以及安全团队谈判持续到达一个可以接受的方案
    3. (被盖住了)

    1.6. 关键问题

    1. 集成范围问题:一方面权限有限
    2. 数据资源所有权问题
    3. 全局模式问题:A、B、C三种数据源如何合并的问题
    4. 模式映射问题:冲突的规则如何进行确认
    5. 数据动态集成问题

    1.7. XML在数据集成中的作用

    1. 定义结构的好处
      1. 标准可以指定
      2. 方便进行管理
    2. SHA法:进行文件生成

    1.8. 基于XML的异构数据集成

    2. 元数据与数据映射

    3. 数据库访问接口

    3.1. 固有调用VS. 访问接口

    1. 数据库引擎带有自己的包含用于访问数据库的APl函数的动态链接库,应用程序可利用操纵数据库
      1. 执行效率
      2. 不通用
    2. 访问接口:透明连接
      1. 网络透明
      2. 服务器透明
      3. 语言透明

    3.2. 主流的数据访问技术

    1. ODBC
    2. OLE DB
    3. ADO
    4. JDBC
    5. Hibernate

    3.2.1. ODBC (Open DataBaseConnectivity )

    1. 应用程序:执行处理并调用ODBC API函数,以及提交SQL语句并检索结果
    2. 驱动程序管理器:根据应用程序需要加载/卸载驱动程序,处理ODBC函数调用,或把他们传送到驱动程序
    3. 驱动程序:处理ODBC函数调用,提交SQL请求到一个指定的数据源,并把结果返回到应用程序
    4. 数据源:包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象

    3.2.1.1. ODBC的API

    1. 核心级
      1. 最基本的功能:分配、释放环境句柄、数据库连接、执行SQL语句等
      2. 满足最基本的应用程序要求
    2. 扩展1级:增加一些函数,可在应用程序中动态了解表的模式,可用的概念模型类型等
    3. 扩展2级
      1. 主关键字和外来关键字的信息、表和列的权限信息、数据库中的存储过程信息等
      2. 游标和并发控制功能

    3.2.1.2. ODBC接口函数

    1. 分配和释放内存
    2. 连接
    3. 执行SQL语句
    4. 接收结果
    5. 事务控制
    6. 错误处理和其他事项

    3.2.1.3. 工作流程

    1. 调用驱动程序管理器,把目标数据源对相应的驱动程序调入动态连接库;
    2. 根据SQL语句,调用动态连接库中若干个相应的ODBC函数;
    3. 执行ODBC函数,把SQL语句以字符串的形式传到数据源处;
    4. 数据源执行所收到的SQL语句,把结果返回应用程序。

    3.2.1.3.1. SQL语句的执行
    main()
    {
      ASD asd;/*说明asd是一个环境型变量*/
      LZJ lzj;/*说明lzj是一个连接型变量*/
      JDK jdk;/*说明jdk是一个语句句柄变量*/
      RETCODE retcode;/*说明retcode是一个返回变量*/
      SQLAllocEnv(&asd);/*分配一个环境句柄*/
      SQLAllocConnect(asd,&lzj);/*分配一个连接句柄*/
      SQLConnect(lzj,"学生",SQL_NTS,NULL,0,NULL,0);/*连接数据源*/
      SQLAllocStmt(lzj,&jdk);/*分配一个语句句柄*/
      retcode=SQLExecDirect(jdk,"SELECT*FROMS",SQL_NTS);/*执行语句*/
      ……/*结果集处理*/
      SQLDisconnect(lzj);/*断开数据源*/
      SQLFreeStmt(jdk,SQL_DROP)/*释放一个语句句柄*/
      SQLFreeConnect(lzj);/*释放一个连接句柄*/
      SQLFreeEnv(asd);/*当应用完成后,释放环境句柄*/
    }
    
    3.2.1.3.2. 执行SQL语句的函数
    1. SQL语句预备函数:SQLPrepare(jdk,szSqlStr,cbSqlStr)。其中,参数hstmt是一个有效的语句句柄,参数szSqlStr和cbSqlStr分别表示将要执行的SQL语句的字符串及其长度
    2. SQL语句执行函数:SQLExecute(jdk)。其中参数jdk是一个有效的语句句柄
    3. SQL语句查询结果的获取:
    while(RETCODE_IS_SUCCESSFUL(retcode){
      retcode=SQLFetch(jdk);
      if(RETCODE_IS_SUCCESSFUL(retcode){
        do{
          rcGetData=SQLGetData(jdk,1,SQL_C_CHAR,szBuffer,sizeof(szBuffer),&cbValue);
          DISPLAY_MEMO(szBuffer,cbValue);/*显示*/
        }while(rcGetData!=SQL_NO_DATA_FOUND);
      }
    }
    

    3.2.1.4. ODBC数据库独立性

    1. ODBC是为最大的互用性而设计的,要求一个应用程序有用相同的源代码(不用重新编译或重新链接)访问不同的数据库管理系统(DBMS)的能力
    2. ODBC定义了一个标准的调用层接口(CLI)。包含X/Open和ISO/IEC的CLI规范中的所有函数,并提供应用程序普遍需要的附加函数
    3. 每个支持ODBC的DBMS需要不同的库或驱动程序,驱动程序实现ODBC API中的函数。当需要改变驱动程序时,应用程序不需要重新编译或者重新链接,只是动态加载新的驱动程序,并调用其中的函数即可。如果要同时访问多个DBMS系统,应用程序可加载多个驱动程序
    4. 如何支持驱动程序取决于操作系统,例如,在Windows操作系统上,驱动程序是动态链接库(DLL)

    3.2.1.5. DBMS特有功能的支持

    1. ODBC为所有DBMS功能都定义了公共接口。这些DBMS功能比多数DBMS支持的更多,但只要求驱动程序实现这些功能的一个子集
    2. ODBC定义了API和SQL语法一致层,它规定驱动程序应支持的基本功能
    3. ODBC还提供两个函数(SQLGetInfo和SQLGetFunctions)返回关于驱动程序和DBMS能力的一般信息及驱动程序支持的函数列表。因此,应用程序可以检查DBMS支持的特殊功能

    3.2.2. OLE DB

    1. 基于COM的数据存储对象,与ODBC 属于底层的数据库编程接口,对ODBC进行了扩展,可以访问非关系型数据库源
    2. OLEDB对ODBC进行了两个方面的扩展
      1. 提供了一个数据库编程的OLE接口,即COM
      2. 提供了一个可用于关系型和非关系型数据源的接口
    3. ODBC数据源是OLEDB的子集:ODBC OLE DB Provider
    4. OLEDB只针对C++的API

    3.2.2.1. OLE DB中的COM对象

    1. 数据源(Data Source):对应于一个数据提供者,负责管理用户权限,建立与数据源的连接等初始操作
    2. 会话(Session):提供事务控制机制
    3. 命令(Command):执行各种数据操作,如查询命令、修改
    4. 行集(RowSet):数据的抽象表示,是应用程序的操作对象

    3.2.3. ActiveX Data Object(ADO)

    1. 建立在OLE DB之上,为操作OLE DB数据源提供了一套高层次自动化接口。ADO实际上是一个OLE DB客户程序,使用ADO的应用程序要间接地使用OLE DB
    2. 提供了一种数据库编程对象模型,简化OLE DB,属高层的数据库接口,适用的编程语言更多

    3.2.3.1. ADO(ActiveX Data Objects)

    1. 一种与编程语言无关的面向对象的编程接口

    3.2.3.2. ADO对象

    3.2.4. JDBC

    3.2.4.1. JDBC VS. ODBC

    1. ODBC并不适合在Java中直接使用
    2. 完全精确地实现从C代码ODBC到JavaAPI写的ODBC的翻译也并不令人满意
    3. ODBC并不容易学习,它将简单特性和复杂特性混杂在一起,甚至对非常简单的查询都有复杂的选项;而JDBC刚好相反,它保持了简单事物的简单性,但又允许复杂的特性
    4. JDBC这样的JavaAPI对于纯Java方案来说是必须的

    3.2.4.2. 四种JDBC驱动

    1. 基于JDBC-ODBC桥的java驱动
    2. 基于数据源本地驱动程序的虚拟java驱动
    3. 基于网络驱动协议的java驱动
    4. 纯java驱动

    3.2.4.3. 常用的JDBC接口/类

    1. Java.sql.Driver:驱动程序实现的接口,提供连接数据库的基本方法
    2. Java.sql.DriverManager:管理JDBC驱动程序,提供获取连接对象的方法,建立于数据库的连接
    3. Java.sql.Connection:用于Java应用程序与数据库建立通信的对象,通过它进而创建Statement对象,执行SQL语句
    4. Java.sql.Statement:对SQL语句进行封装的特定对象,用来执行SQL语句进行数据库操作
    5. Java.sql.ResultSet:用于封装SQL语句查询的结果,是一个包含数据库记录的特殊对象

    3.2.4.4. 直接连接数据库的步骤

    1. 建立数据源
    2. 装载驱动程序
    3. 建立连接
    4. 建立语句对象
    5. 执行SQL语句
    6. 查询结果处理
    7. 获取元数据
    8. 关闭对象
    9. 处理异常和警告

    3.2.4.5. 示例

    connection con=DriveManager.GetConnection("jdbc:odbc:people","examle","password");
    //建立与数据库的连接
    Statement stmt=con.createstatement();
    //建立语句对象
    ResultSet rs=stmt.executeQuery("SELECT a,b,c FROM Table1");
    //运行SQL语句,返回数据//库操作结果
    while(rs.next()){
      intx=getInt("a");//获得数据库表记录a项的值
      strings=getstring("b");//获得数据库表记录b项的值
      floatf=getFloat("c");//获得数据库表记录c项的值
    }
    

    3.2.5. Hibernate

    1. 一种Java语言下的对象关系映射解决方案,一种自由、开源的软件
    2. 用来把对象模型表示的对象映射到基于SQL的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架
    3. 不仅管理Java类到数据库表的映射,还提供数据查询和获取数据的方法

    3.2.5.1. Hibernate API中的接口

    1. 提供访问数据库的操作(如保存、更新、删除和查询对象)的接口:Session、Transaction和Query
    2. 用于配置Hibernate的接口:Configuration
    3. 回调接口,使应用程序接收Hibernate内部发生的事件,并作出相关的回应:Interceptor、Lifecycle和Validatable
    4. 用于扩展Hibernate的功能的接口,如UserType、CompositeUserType和IdentifierGenerator接口。需要时应用程序可以扩展这些接口。

    3.2.5.2. 个核心接口

    1. Hibernate内部封装了JDBC、JTA和JNDI
    2. Configuration接口:配置hibernate,根启动hibernate,创建SessionFactory对象
    3. SessionFactory接口:初始化hibernate,充当数据存储源的代理,创建Session对象
    4. Session接口:负责保存、更新、删除、加载和查询对象
    5. Transaction:管理事务
    6. Query和Criteria接口:执行数据库查询

    3.2.5.3. 使用Hibernate的步骤

    1. 创建Hibernate的配置文件
    2. 创建持久化类
    3. 创建对象-关系映射文件
    4. 通过Hibernate API编写访问数据库的代码

    4. 元数据与数据映射

    4.1. 数据编码

    1. 字符集
    2. ASCII
    3. 汉字编码
    4. Unicode
    5. UTP-8
    6. 编码之间的关系

    4.1.1. 字符集

    1. Samuel F.B.Morse在1838年到1854年间发明了电
    2. Braille代码:一种6位代码,它把字符、常用字母组合、常用单字和标点进行编码
    3. Telex、Baudot以及CCITT #2代码都是包括字符和数字的5位代码
    4. 6位字符码系统BCDIC(Binary-Coded Decimal Interchange Code),8位EBCDIC IBM大型主机
    5. 美国信息交换标准码ASCII,1967年
    6. DBCS:double-byte character set
    7. Unicode解决方案

    4.1.2. ASCII

    1. 7个位所能提供的128个编码位置
    2. 94个图形字符码和34个控制字元码
      1. 图形字符包括52个大小写英文字母﹑10个阿拉伯数字﹑9个标点符号﹑6个括号,以及17个其它符号,编码范围从33到126
      2. 控制字符则包括10个传输控制字符、6个版面调整字符、4个设备控制字元、4个信息分隔字符和10个特殊控制字符,其编码为0~32和127
    3. 扩展ASCII

    4.1.3. 汉字编码

    1. GB2312 :小于127的字符的意义不变,两个大于127的字符连在一起表汉字7000
      1. 高字节从0xA1用到0xF7,把01-87加上0xA0
      2. 低字节从0xA1到0xFE,把01-94加上0xA0
    2. GBK:GB2312的扩展,主要扩展了繁体中文字的支持27000
    3. GB18030:解决汉字、日文假名、朝鲜语和中国少数民族文字组成的大字符集计算机编码问题。总编码空间超过150万个编码位,收录了27484个汉字
    4. BIG5:13,053个中文字,高位字节的编码范围0xA1-0xF9,低位字节的编码范围0x40-0x7E及0xA1-0xFE

    4.1.4. Unicode

    1. Universal Multiple-Octet Coded Character Set的简称,支持世界上超过650种语言的国际字符集
    2. Unicode允许在同一服务器上混合使用不同语言组的不同语言
    3. 由一个名为Unicode 学术学会(Unicode Consortium)的机构制订的字符编码系统,支持现今世界各种不同语言的书面文本的交换、处理及显示
    4. Unicode是一种在计算机上使用的字符编码,为每种语言中的每个字符设定了统一且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求
    5. Unicode通过增加一个高字节对ISO Latin-1字符集进行扩展,当这些高字节位为0时,低字节就是ISO Latin-1字符
    6. Unicode中不同部分的字符都同样基于现有的标准,便于转换
    7. 中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码
    8. Unicode只有一个字符集,没有歧
    9. Unicode在制订时没有考虑与任何一种现有的编码方案保持兼容

    4.1.5. 通用转换格式UTF-8

    1. 用ASCII表示的字符使用UNICODE并不高效
    2. 网络通讯时数据高低位的解读方式,核对双方对于高低位的认识是否是一致,标志符FEFF,EFBBBF for UTF-8。Byte Order Mark
    UNICODE UTF-8
    00000000 -0000007F 0xxxxxxx
    00000080 -000007FF 110xxxxx 10xxxxxx
    00000800 -0000FFFF 1110xxxx 10xxxxxx 10xxxxxx
    
    1. 以转换后第1字节起头连续设为"1"的标记位的数目表示转换成几个字节,第2~第4字节起头两个位被设为10当做识别

    4.1.6. 一个例子

    1. 联通的内码
      1. c1 1100 0001
      2. aa 1010 1010
      3. cd 1100 1101
      4. a8 1010 1000
    2. UTF8编码
      1. 0000 0000 0110 1010:j
      2. 0000 0011 0110 1000

    4.2. 元数据在集成中的作用

    1. 中央集线器确保Oracle电子商务套件与3个老的ERP系统之间一致的数据映射
    2. 大量的企业数据要么深锁在数据库中,要么就被封闭在应用中
    3. 随着企业跨应用组合不同的功能,这些数据模型也被混合在一起
    4. 对数据而言,始终存在一种上下文关系甚至当一个字段为空白时,不同应用会对它的含意做出不同的假设

    4.3. 什么是元数据

    1. data about data
    2. 通过一组属性或元素来描述特定的资源
    3. 元数据模型提供了描述一类资源的具体对象时所有规则的集合
      1. 描述资源属性的术语:元数据元素
      2. 关系、结构约束、语法表示等
    4. 提供规范、普遍的描述方法和检索工具,为分布的、由多种资源组成的信息体系提供整合的工具与纽带

    4.4. DBMS的元数据

    1. 某个数据库中的表和视图的个数以及名称
    2. 某个表或者视图中列的个数以及每一列的名称、数据类型、长度、精度、描述等
    3. 某个表上定义的约束
    4. 某个表上定义的索引以及主键/外键的信息

    4.5. SQL Server系统表与元数据

    4.6. 元数据的分类

    1. 从元数据的作用角度
      1. 描述型元数据
      2. 结构型元数据
      3. 管理型元数据
    2. 从信息系统的角度
      1. 业务元数据
      2. 技术元数据
      3. 操作元数据

    4.6.1. 业务元数据

    Title="Metadata Demystified"
    Creator="Brand, Amy"
    Subject="metadata"
    Description="Presents an overview ofmetadataconventions inpublishing."
    Publisher="NISO Press"
    Date="2003-07"
    Type="Text"
    Format="application/pdf"
    Identifier="http://www.niso.org/standards/resources/Metadata_Demystified.pdf"
    Language="en"
    

    4.7. 元数据的层次

    1. 分层管理是解决复杂问题的一种思路。将资源按照一定的层次进行分类,便于管理
    2. 元数据可应用于不同层次,可以定义全局的元数据,也可以定义某一层次资源的元数据
    3. 可以在"计算机图书"类中加上"相关编程语言"这样一个属性

    4.8. 元数据的功能

    1. 描述和发现资源
    2. 管理资源集合
    3. 保存数字化资源
    4. 提供数据互操作和数据转换方面的信息

    4.8.1. 描述和发现资源

    1. 允许通过相关的标准来发现资源
    2. 标识资源
    3. 把相似的资源放在一起
    4. 识别不一样的资源
    5. 提供定位(位置)信息

    4.8.2. 保存数字化资源

    1. 以一种统一和稳定的方式描述和组织存储在不同介质上的信息
    2. 创建描述性元数据的一个重要原因就是要使相关信息的发现更加容易
    3. 元数据是确保未来资源将存在并持续被访问的关键
    4. 通过资源发现,元数据可以有助于电子资源的组织,使交互操作和遗产资源集成,提供数据标识和支持存档和保存变得更加容易

    4.8.3. 数据互操作

    1. 采用元数据来描述一个资源,允许资源在提升交互操作性的途径下被人和机器所理解
    2. 交互操作就是在多个不同硬件和软件平台、数据结构和接口的系统之间最小内容和功能丢失的交换数据的能力
    3. 利用被定义的元数据模式,被共享的协议和元数据模式之间的关联,跨网络的资源可以被无缝的查询

    4.9. 元数据管理

    1. 元数据创建
    2. 元数据存储
    3. 元数据交换
    4. 元数据集成
    5. 元数据监督
    6. 元数据优化

    4.10. 元数据管理的五种成熟度

    1. 第一级随机状态
    2. 第二级发现
    3. 第三级管理控制
    4. 第四级优化
    5. 第五级自动化

    4.11. Resource Description Framework

    1. 一个用于描述Web 上的资源的框架
    2. 针对数据的模型以及语法,供不同的用户来交换和使用
    3. 使用XML 编
    4. W3C 语义网络活动的组成部分,是一个W3C 推荐标准(2004 年2 月)
      1. 描述购物项目的属性,如价格以及可用性
      2. 描述Web 事件的时间表
      3. 描述有关网页的信息,比如内容、作者以及被创建和修改的日期
      4. 描述网络图片的内容和等级
      5. 描述针对搜索引擎的内容

    4.11.1. RDF 规则

    1. RDF 使用属性和属性值来描述资源
      1. 资源是可拥有URI 的任何事物,比如"http://www.w3school.com.cn/rdf"
      2. 属性是拥有名称的资源,比如"author" 或"homepage属性值是某个属性的值,比如"David" 或http://www.w3school.com.cn
      3. 描述资源"http://www.w3school.com.cn/rdf" 的RDF 文档
    <?xml version="1.0"?>
    <RDF>
      <Description about="http://www.w3school.com.cn/RDF">
        <author>David</author>
        <homepage>http://www.w3school.com.cn</homepage>
      </Description>
    </RDF>
    

    4.11.2. RDF 陈述

    1. 资源、属性和属性值的组合形成一个陈述
    2. 陈述:“The author of http://www.w3school.com.cn/rdf is David.”
      1. 主体:http://www.w3school.com.cn/rdf
      2. 谓语:author
      3. 客体:David

    4.11.3. RDF 陈述

    4.11.4. 标准的资源描述框架

    1. 描述所有元数据格式,解决元数据互操作性
      1. XML以一种标准化的方式来建立数据表示的结构
      2. RDF明确表达元数据的语义、句法和结构
    2. 采用RDF Schema为RDF资源的属性和类型提供词汇表

    4.12. 元数据映射

    1. 信息系统的整合与交互性问题
      1. 同一领域的元数据标准
      2. 不同领域不同专业
    2. 元数据标准映射:元数据分析、建立元数据对应关系字典、编制转换程序
    3. 非实时映射:将源元数据系统的数据映射到目标元数据系统
    4. 实时映射:根据元数据映射表建立转换接口

    4.13. 元数据映射表

    1. 元数据语义映射描述元数据标准中元素的对应关系
      1. 一对一关系
      2. 一对多关系
      3. 多对一关系
      4. 无对应关系
    2. 元数据取值内容的映射关系
      1. 数据类型、取值范围、受控词汇
      2. 文本和数值类型间或文本和日期类型
      3. 自由文本和受控词,不同的受控词汇表

    4.14. 元数据匹配差异

    1. 必备元素与可选元素的差异
    2. 可重复元素与不可重复元素的差异
    3. 子元素差异
    4. 元素层次错位

    4.15. 元数据映射局限性

    1. 元素之间无法完全映射,信息丢失
    2. 随着元数据格式数量的增多,映射的工作量将大大增加

    4.16. 基于XSLT实现元数据映射

    4.17. 实施步骤

    1. 盘点各系统的数据库,提取出元数据,设计出Schema确定其编码属性
    2. 开发适配器,将源信息从关系数据库向XML文件转换
    3. 确定集成信息的映射规则和编码属性的对照关系,利用XSLT实现源XML 文件向目标文件转换
    4. 集成目标XML文件中的资源信息

    4.18. 数据异构冲突

    1. 命名冲突
      1. 同名异义、异名同义
      2. 全局命名映射
    2. 格式异构
      1. 类型转换函数
    3. 类型冲突
      1. 同一种数据类型精度不同
      2. 取舍

    5. ETL技术

    5.1. Extraction-Transformation-Loading

    1. 原本是构建数据仓库的一个环节:将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础
    2. ETL是BI项目重要的一个环节,BI项目中,通常情况下ETL会花掉整个项目的1/3的时间
    3. ETL也越来越多地应用于一般信息系统中数据的迁移、交换和同步

    5.2. 数据仓库

    1. 为决策支持服务的面向主题的、集成的并随时间变化的、相对稳定的数据集合
    2. 面向主题:数据仓库中的数据按照主题进行组织
    3. 集成:从多个数据源将数据集合到数据仓库中,并集成为一个整体;
    4. 稳定:数据仓库中的数据通常是历史数据,很少进行更新;
    5. 时变:数据仓库中的所有数据都有特定的时间标识.

    5.3. 数据仓库、ODS和数据库的比较

    5.4. 数据仓库概念模型

    5.5. 数据仓库的结构

    5.6. 数据分析方法

    1. 切片和切块(Slice and Dice):多维数据结构中,按二维进行切片,按三维进行切块,可得到所需要的数据。如在"城市、产品、时间"三维立方体中进行切块和切片,可得到各城市、各产品的销售情况
    2. 钻取(Drill):钻取包含向下钻取(Drill-down)和向上钻取(Drill-up)/上卷(Roll-up)操作,钻取的深度与维所划分的层次相对应
    3. 旋转(Rotate)/转轴(Pivot):通过旋转可以得到不同视角的数据

    5.6.1. 切片、切块

    5.6.2. 钻取

    5.6.3. 旋转

    5.7. 数据仓库的体系结构

    5.8. 数据仓库的元数据

    1. 管理元数据
      1. 所有建立使用DW的信息,源数据库
      2. 综合数据、维、层次信息
      3. 预定义的查询、报表和数据组织、分段
      4. 数据抽取、清洗、转换的规则
    2. 业务元数据
      1. 业务流程、数据的所有关系和存取控制策略
    3. 操作元数据
      1. 运行时管理信息
      2. 即时数据信息、监测信息

    5.9. 数据仓库的数据组织

    1. 虚拟存储
      1. 语义层工具转换
      2. 适用理想状况
    2. 基于关系表存储
      1. 模型定义、数据抽取
    3. 多维数据库存储
      1. 多维数据文件存储数据
      2. 维索引管理

    5.10. 维表(星型)

    5.11. 维表(雪花型)

    5.12. 数据仓库组成部分

    1. 数据源
    2. 数据抽取(extraction)、转换(transformation)和转载(load)工具
    3. 数据建模工具
    4. 核心仓储(Central Repository)
    5. 数据仓库的目标数据库
    6. 前端数据访问和分析工具
    7. 数据仓库管理工具

    5.13. 体系结构

    5.14. 数据集成领域中ETL

    1. 数据的差异性更大, 不仅是结构化数据, 可能还涉及到半结构数据和无结构数据, 并实现某些情况下的相互转换
    2. 数据抽取、转换和加载操作往往不在同一个地方, 在抽取和加载之间需要进行数据的远程传输
    3. 抽取和加载两个操作可能是完全独立的, 分别属于不同的企业或部门,具有高度的自治性
    4. 在数据仓库中一般只进行数据的增加,而数据集成应用可能还涉及到数据的删除和修改, 保证抽取方和加载方数据的一致性

    5.15. ETL的过程

    1. 抽取、转换和加工、装载
    2. 节点代表操作:过滤,转变,传输,压缩,加密等
    3. 增量、转换、调度和监控等处理

    5.15.1. 数据的抽取

    1. 与目标数据库系统相同的数据源:建立链接关系就可以写Select语句直接访问
    2. 与目标数据库系统不同的数据源
      1. 通过程序接口来完成
      2. 将数据导出成txt或者是xls文件,然后再将这些源系统文件导入到ODS中
    3. 文件类型数据源(txt, xls)
    4. 全量抽取和增量抽取:增量更新的问题

    5.15.2. 数据的清洗

    1. 数据格式不一致、数据输入错误、数据不完整
    2. 源数据和目标数据需要进行数据模式或语义映射的转换
    3. 在数据库中进行数据加工
      1. 利用数据库本身提供的SQL、函数
      2. 在SQL查询语句中添加where条件进行过滤
      3. 重命名字段名与目的表进行映射
      4. substr函数、case条件判断
    4. ETL引擎:以组件化的方式实现数据转换:字段映射、数据过滤、数据清洗、数据替换、数据计算、数据验证、数据加解密、数据合并、数据拆分等

    5.15.3. 数据装载

    1. 将转换后的数据装载到目标库
    2. 最佳方法取决于所执行操作的类型以及需要装入多少数据
    3. 目的库是关系数据库有两种装载方式
      1. 直接SQL语句进行insert、update、delete操作,进行了日志记录并且可恢复
      2. 采用批量装载方法,如bcp、bulk、关系数据库特有的批量装载工具或api,批量装载操作易于使用,并且在装入大量数据时效率较高

    5.16. ETL中的关键技术

    1. 增量复制
    2. 数据的清洗转换

    5.16.1. 增量复制

    1. 触发器
    2. 时间戳
    3. 快照方式
    4. 日志法

    5.16.1.1. 控制表法(触发器)

    1. 插入、修改、删除建trigger,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时表
    2. 控制表(变化表名、操作、主键、时间戳)
    Create trigger tri_insert_teacher on teacher
      For insert
        As
          Begin
            Declare @KeyId in
            Select @ KeyId = id from inserted
            Insert into Record values(teacher,"insert",@KeyId ,getdate())
    End
    

    5.16.1.2. 时间戳

    1. 一种基于快照比较的变化数据捕获方式
    2. 在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值
    3. 当进行数据抽取时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据
    4. 有的数据库的时间戳支持自动更新,即表的其它字段的数据发生改变时,自动更新时间戳字段的值
    5. 不支持时间戳的数据库则触发器方式

    5.16.1.3. 快照方式

    1. 快照是数据在某个时刻的一个备份
    2. 在上次发送时保留其快照, 在当前发送时, 可以通过比较当前数据与上次发送时的快照, 得到数据的增加、删除和修改情况
    3. 将二者的区别按照要求发送出去

    5.16.1.4. 根据主键判断

    1. 当前实视图为New,上次发送时的快照为Old, t为当前实视图中的一条记录
      1. t k e y ∈ N e w k e y t_{key} \in New_{key} tkeyNewkey t k e y ∉ O l d k e y t_{key} \notin Old_{key} tkey/Oldkey, 则t是增加数据
      2. t k e y ∈ O l d k e y t_{key}\in Old_{key} tkeyOldkey t k e y ∉ N e w k e y t_{key} \notin New_{key} tkey/Newkey, 则t是删除数据
      3. t n y ≠ ∅ t_{ny} \not = \emptyset tny=时, 若 t k e y ∈ N e w k e y t_{key}\in New_{key} tkeyNewkey t k e y ∈ O l d k e y t_{key}\in Old_{key} tkeyOldkey, 但 t n y ∈ N e w n y t_{ny}\in New_{ny} tnyNewny t n y ∉ O l d n y t_{ny} \notin Old_{ny} tny/Oldny, 或者 t n y ∈ O l d n y t_{ny}\in Old_{ny} tnyOldny t n y ∉ N e w n y t_{ny} \notin New_{ny} tny/Newny, 则t是修改数据

    5.16.2. 数据的清洗转换

    1. 过滤不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取
    2. 数据清洗是一个反复的过程,注意不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认
    3. 数据转换主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算

    5.16.2.1. 数据清洗

    1. 不完整的数据:一些应该有的信息缺失,如供应商的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等;过滤出来写入不同Excel文件向客户提交,要求在规定的时间内补全
    2. 错误的数据:业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、日期格式不正确、日期越界等;需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取
    3. 重复的数据:将重复数据记录的所有字段导出,让客户确认并整理

    5.16.2.2. 姓名常见的错误和变化

    5.16.2.3. 数据质量问题示例

    5.16.3. 清理、匹配、标准化

    5.16.4. 数据匹配与合并

    5.17. 数据转换

    1. 不一致数据转换:将不同业务系统的相同类型的数据统一,如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码
    2. 数据粒度的转换:业务系统一般存储非常明细的数据,而目标数据是用来分析的,不需要非常明细的数据
    3. 商务规则的计算:不同的企业有不同的业务规则、不同的数据指标,这些指标有时需要在ETL中将这些数据指标计算后存储在目标数据库中,以供分析使用

    5.18. ETL的三种实现方法

    1. 借助ETL工具:Oracle的ODI,SQL server 的SQL Server Integration Service:可以快速建立ETL工程,屏蔽了复杂的编码任务,提高的速度,降低的难度,但是缺少灵活
    2. SQL方式实现:灵活,提高ETL运行效率,但是编码复杂,对技术要求比较
    3. ETL工具和SQL相结合

    5.19. 提高ETL的性能

    1. 如果条件允许利用数据中转区对运营数据进行预处理,保证集成与加载的高效性
    2. 如果ETL的过程是主动"拉取",而不是从内部"推送",其可控性将大为增强
    3. ETL之前应制定流程化的配置管理和标准协议
    4. 关键数据标准至关重要

    5.20. 实施ETL的例子

    1. 往oracle数据库中插入excel文件中的数据

    6. 基于XML的数据集成

    1. 整个系统位于异构数据源和应用程序之间,向下协调各种数据源,向上为访问集成数据的应用提供了统一的模式和访问的通用接
    2. 数据抽取层
    3. 中介层
    4. 用户接口层

    6.1. 系统结构

    6.2. 数据抽取层

    1. 处于系统的最低层,是系统的数据提供者
    2. 提取和集成分布在多个异构数据源(数据库,知识库及构件库) 上的数据
    3. 采用Wrapper (包装器) 技术实现将一个从中介层得到的查询,翻译成能在经过封装的数据源上执行的操作,将查询结果抽取并打包到一个XML 文档,最后将该文档返回给中介层

    6.3. 中介层

    1. 一方面对上接受用户通过DOM(Document Object Model ,文档对象模型客户端API 向系统提交的或应用程序发出的查询,将其转换成对XML 的查询,并将查询结果返回给用户或应用程序
    2. 另一方面对下将XML 查询分发给各个包装器,并将查询结果通过DTD 说明再转换成XML 格式

    6.4. 用户接口层

    1. 用户接口层(User Interface Layer) 在中介层之上,负责将用户的查询命令提交给中介层,获得并解释查询结果,并将结果显示给用户
    2. 定义了XML文档的逻辑结构,访问及操作方法。由于数据显示与内容分开,XML 定义的数据允许指定不同的显示方式,使数据更合理的表现出来
    3. 本地的数据能够以客户配置,使用者选择或其他标准决定的方式动态的表现出来
    展开全文
  • 数据集成的概念,与主要挑战。 CDC技术详解:概念、主流解决方案、以及两个技术流派。 实时增量数据集成的主要开源技术:canal、maxwell、Debezium、FlinkCDC、FlinkX的主要特点,并详细介绍了canal的...
  • 阿里云DataWorks数据集成(DataX)架构&实践分享 分享嘉宾:罗海伟阿里云 编辑整理:约理中国科学院大学 目录 阿里云DataWorks数据集成(DataX)架构&实践分享 ▌为什么需要数据集成 数据集成的应用...
  • 数据集成-5-批数据集成

    千次阅读 2022-03-15 09:02:20
    数据集成-5-批数据集成
  • 数据集成-1-概述

    千次阅读 2022-03-14 09:11:47
    数据集成-1-概述
  • 数据集成方案

    千次阅读 2019-08-23 09:27:02
    也称ETL、对跨部门的...数据集成常见问题如下: 1 涉及部门众多,数据接口类型多样化。 2 顶层设计缺失或历史原因,数据缺乏统一标准,信息孤岛、数据碎片化现象严重。 3 数据冗余、数据不一致、错误数据等系列...
  • 数据集成解决方案

    千次阅读 2020-07-30 17:35:18
    数据集成需要解决的问题三. 业内常见解决方案及痛点四. 我们的解决方案-Dlink 一 . 业务背景 随着云计算的普及和大数据时代的到来,如何让各种数据源中的种类丰富的数据高效上云,以及经过云上大数据计算后,如何把...
  • 基于kettle的数据集成平台(汇总)

    千次阅读 2022-02-26 16:52:10
    问题:.https://blog.csdn.net/qingxinziran007/article/details/115464344 基于kettle的数据集成平台(四):基于kettle的数据集成平台(四)_qingxinziran007的专栏-CSDN博客上篇文章介绍了使用kettle平台实现mqtt...
  • 数据集成实际上是一个典型的ETL过程,我们会从源端数据库通过reader插件抽取数据,经过简单的转换,最终写入到大数据中心 。在抽取过程中,主要包含字段类型的转换、filter过滤条件,数据同步到大数据中心之后,可以...
  • RestCloud ETL数据融合平台是基于微服务架构研发的新一代数据融合平台,是为企业提供业务系统数据之间的集成,以及异构数据源之间的数据传输于一体的一站式的数据处理平台。
  • 数据预处理
  • 大数据处理技术之数据集成

    千次阅读 2019-03-20 16:40:23
    大数据处理技术是一个十分...而大数据处理的技术有很多,其中最常见的就是数据集成,那么什么是数据集成呢?下面我们就给大家介绍一下这些知识。 自学习大数据的时候,我门会学到很多的知识,也会了解到很多的知识点...
  • 数据集成 数据挖掘的过程中往往需要的数据分布在不同的数据库,数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。 实体识别 同名异义 名字相同但实际代表的含义不同 异名同义 名字...
  • ETL工具是什么呢?ETL是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取、转换、加载至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数...
  • STM32学习笔记 | ADC采集数据常见问题

    千次阅读 2021-03-12 14:58:45
    嵌入式专栏 3 STM32 ADC 常见问题 STM32内部集成ADC是一个常用的模块,单通道简单采集电压比较容易,但多通道、高频次等一些特殊情况下,对软件和硬件的要求更高。 些特殊情况下,对软件和 问题一:参考电压电阻...
  • 整个大数据的处理流程可以定义为,在合适工具的辅助下,对广泛异构的数据源进行抽取和集成,将结果按照一定的标准进行统一存储,然后利用合适的数据分析技术对存储的数据进行分析,从中提取有益的知识,并利用恰当的...
  • 我们在进行数据挖掘的过程中,往往需要从多个不同的数据源抽取数据,这时就需要对数据进行记录集成或字段集成集成是指将不同数据源之间进行合并的过程。 1. 记录集成(给数据增加行) 记录集成:指给数据表格...
  • 最近公司开始开发springboot的项目,需要对...由于目前需要将工作流做成一个独立的数据源,所以在集成的时候需要配置双数据源。 首先我们需要对springboot的配置文件applicantion.yml进行配置。 spring: pr...
  • 答:涉密信息系统集成资质(以下简称集成资质)包括系统集成、软件开发、综合布线、安防监控、屏蔽室建设、系统咨询、工程监理、运行维护、数据恢复共9个资质类别。 2.涉密信息系统集成甲级、乙级资质的区别是什么?...
  • 微服务架构中服务集成的主要技术

    千次阅读 2020-03-19 11:01:52
    在微服务架构中,服务之间势必需要集成,而这种集成关系远比简单的API调用要复杂。在本文中,我们将系统分析服务集成的方式以及在微服务架构中的表现形式。关于服务之间的集成存在一些通用的模式,我们也将在梳理...
  • 7.1 什么是数据仓库  数据仓库是基于特定的数据结构(以及有关应用程序)所构建的数据的中央存储库,以便为分析和报表提供 一致的数据源。面向整个组织创建的企业数据仓库(Enterprise Data Warehouse,EDW)用于...
  • 常见开源数据平台

    千次阅读 2020-08-08 13:53:19
    常见开源数据平台金融财经数据互联网数据政府数据 金融财经数据 同花顺数据中心:提供股票债券等金融数据 http://data.10jqka.com.cn/ 新浪财经:提供国内国民经济、行业信息、对外经贸、居民收入等各种宏观的经济...
  • 数据仓库常见建模方法与建模实例演示

    万次阅读 多人点赞 2020-04-14 15:52:09
    1.数据仓库建模的目的? 为什么要进行数据仓库建模?大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑 访问性能:能够快速...
  • 模块化的集成方便而且让设计效率高,根据十多年来的经验,分享蓝牙WIFI模块集成设计应用注意事项和常见问题解释,让硬件设计工程师少走弯路! 一:应用注意事项(主要上天线、供电、数字/模拟共地三方便) 射频出口到...
  • Spring Boot 集成Mybatis实现多数据

    万次阅读 热门讨论 2017-06-30 19:12:38
    项目提交测试,趁着中当间的这个空档期,把springboot的多数据源配置学习一下,总体来说多数据源配置有两种方式,一种是静态的,一种是动态的。 静态的方式 我们以两套配置方式为例,在项目中有两套配置文件,两套...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 256,298
精华内容 102,519
热门标签
关键字:

常见的数据集成问题