精华内容
下载资源
问答
  • 针对目前海量多源异构空间数据在组织、管理、集成方面的困难以及传统方法在数据转化过程中造成的数据损耗等问题,结合海洋空间数据的特征,提出一种新的海量多源异构空间数据无缝集成技术(SIMMHS)。该技术针对底层...
  • 物联网的全面感知产生了海量的感知数据,并且感知数据呈现为显著的多源异构性.因此,如何实现海量多源异构感知数据的智能处理是一个具有挑战性的课题.数据融合是处理多模态数据并挖掘提取有价值信息的有效手段,但针对...
  • 随着大数据与人工智能技术的应用普及,海量多源异构数据急剧增加。传统大数据平台在面临多源异构数据处理时,面临数据采集处理能力不足、数据结构难以统一,数据运维困难等挑战,为企业探索数据价值带来了层层阻碍。...
  • 针对多源异构环境下数据的特点,提出一种数据同步复制新方案。该方案解决了多源异构环境下数据库的访问,数据的获取与复制,动态数据源的处理以及同步过程中数据冲突与同步的实时性等问题。最后将所提出的方案应用于...
  • 对企业来说,拥有处理多源异构数据分析的能力,将为实现这些多种数据源、多种格式数据的集成夯实了基础。 多源异构数据分析为什么需要数据湖? 数据湖的出现,将企业内、外部数据随需关联,打破了数据的系统界限,...

    随着我国网络化、信息化和智能化水平的不断提高,来自互联网数据、移动数据、社交媒体数据、物联网数据的规模,远远大于传统数据中心产生的数据。

    对企业来说,拥有处理多源异构数据分析的能力,将为实现这些多种数据源、多种格式数据的集成夯实了基础。

    多源异构数据分析为什么需要数据湖?
    数据湖的出现,将企业内、外部数据随需关联,打破了数据的系统界限,解决了系统间数据孤岛、各类应用统一访问问题,数据可获取性提高;具有弹性的分布数据处理的平台,能同时支撑批量和实时数据操作处理和分析,实现数据集中存储、处理、分类与管理,报表生成自动化、数据分析敏捷化、数据挖掘可视化,其次,数据湖重视集中、自动的元数据管理和入湖标准,避免成为没有价值的数据,帮助企业和组织获得数据价值的更好洞察,以做出更灵活更利于业务成长的决策。
    在这里插入图片描述

    现代化、更安全的数据湖
    对于任何一个企业的数字化转型和可持续发展来说,数据湖带来的优势及变革日益彰显,并在多个解决方案中实现了落地。

    以福韵多源数据融合分析系统为例,该系统以业务为中心,以服务为中心,以技术为中心,搭建了现代化、更安全的数据湖,提供丰富的数据计算分析引擎,实现了海量结构化、半结构化以及非结构化数据的承载与融合。

    基于多源的多样化数据特性,平台提供可拓展的大数据存储、处理、分析的基础设施,以数据为导向,通过与各类外部异构数据源的交互集成,支持各类企业级应用,从而帮助用户实现了更智能的数据接入、更精细的资产管理、更灵活的数据分析、更直观的数据价值,提升数据在组织运营管理过程中的支撑辅助作用。
    在这里插入图片描述

    其次,该系统建立敏捷的数据仓库,适应数据集成、研发,治理,服务,离线和实时数据处理方式,满足客户的各种数据应用场景。通过提供统一的分析环境,助力企业降低总拥有成本,提升自助分析服务,并减少重复性工作。
    在这里插入图片描述

    高效的数据服务,结合一批有实战经验的分析师团队,多源数据融合分析系统促进了大数据分析与生产环境的深入融合。落地以来,已获得中国海关、华为、安永、中国金融、招商证券等合作伙伴的广泛好评。

    展开全文
  • 什么是多源异构数据

    万次阅读 2018-11-20 19:32:39
    导致企业在发展过程中积累了大量采用不同存储方式的业务数据,包括采用的数据管理系统也大不相同,从简单的文件数据库到复杂的网络数据库,它们构成了企业的异构数据源。 ...

    在企业信息化建设过程中,由于各业务系统建设和实施数据管理系统的阶段性、技术性以及其它经济和人为因素等因素影响,导致企业在发展过程中积累了大量采用不同存储方式的业务数据,包括采用的数据管理系统也大不相同,从简单的文件数据库到复杂的网络数据库,它们构成了企业的异构数据源。

    展开全文
  • 点击上方蓝字关注我们制造业生产过程中多源异构数据处理方法综述陈世超1,2,崔春雨1,张华3,马戈4,朱凤华1,商秀芹1,熊刚,11中国科学院自动化研究所复杂系统管理与控制国...

    点击上方蓝字关注我们

    制造业生产过程中多源异构数据处理方法综述

    陈世超1,2, 崔春雨1, 张华3, 马戈4, 朱凤华1, 商秀芹1, 熊刚,1

    1 中国科学院自动化研究所复杂系统管理与控制国家重点实验室,北京 100190

    2 澳门科技大学,澳门 999078

    3 北京航天智造科技发展有限公司,北京 100039

    4 中国工业互联网研究院,北京 100102

     

    摘要随着现代制造业向着自动化、信息化、智能化方向快速发展,生产过程中会产生大量的多源异构数据。对多源异构数据的有效处理和深度挖掘可为生产制造者提供更有效的生产调度、设备管理等策略,从而提高生产质量和效率。针对制造业生产过程中多源异构数据的处理方法与技术等进行系统性的综述,首先明确了制造业生产过程多源异构数据内容及分类;其次,阐述了多源异构数据处理中数据采集、数据集成及数据分析各个阶段应用的数据处理方法和技术,并分析了各种方法与技术的优缺点以及应用;最后,对生产过程中多源异构数据处理方法和技术进行总结,指出了现阶段多源异构数据处理方法及技术面临的挑战和发展趋势。

    关键词  数据处理 ; 多源异构数据 ; 生产制造

    论文引用格式:

    陈世超,崔春雨,张华, 等. 制造业生产过程中多源异构数据处理方法综述[J]. 大数据, 2020, 6(5): 55-81.

    CHEN S C, CUI C Y, ZHANG H, et al. A survey on multi-source heterogeneous data processing methods in manufacturing process[J]. Big Data Research, 2020, 6(5): 55-81.


    1 引言

    在全球信息技术快速发展的背景下,随着科学技术的迅猛发展和社会信息化程度的不断提高,人类社会共享的数据的数量大大增加,共享的数据的形式大大丰富。据希捷公司与国际数据公司(IDC)共同发布的《数字化世界——从边缘到核心》白皮书,全球数据圈规模将从2018年的33 ZB增至2025年的175 ZB。其中,白皮书中指出,在全球数据圈中,制造业数据所占份额最大,远远超过其他行业。同时,伴随着中国“智能制造 2025”国家战略的实施,工业制造业面临重大的变革转型,大数据成为提升制造业生产力、创造力的关键。随着智能制造的发展,自动化、信息化、智能化等技术渗透到制造业生产过程的各个环节,从工业现场的传感器、设备到制造生产过程中的各个信息系统(如制造执行管理系统、生产监控系统、设备运行维护系统、产品质量检测系统、能耗管理系统等),均会产生大量不同结构类型的数据。以一个典型的纺织制造车间为例,其一天的数据量将达到84 GB,而一台半导体生产机器一天的数据量甚至可以达到TB级别,这些数据包括二进制、文本、视频、音频等数据。而海量的数据中蕴含着大量有价值的信息,对这些信息的提取有利于指导人们在生产制造、设备管理和生产调度等过程中做出正确的决策,达到优化制造流程、提高效能的目的,促进制造业生产过程的全面智能化,从而提高生产质量和效率。

    如图1所示,产品的制造流程包括研发设计、物料采购、生产制造、产品销售及产品售后5个阶段,每个阶段的数据都具有数据来源多样、数据质量低、数据蕴含信息复杂、数据实时性高等特点,而从海量数据中发掘指导制造业研发设计、生产制造、销售售后和经营管理等过程的知识和规则,需要大量的模型算法等数据处理方法的支撑。尤其是在产品生产制造过程中产生的数据,其不仅数据量十分庞大,来源丰富、类型多样、结构复杂,而且由于制造业不同的部门和系统之间数据的来源、存储形式等各不相同,数据源之间存在异构性、分布性和自治性,数据类型既包括数字、关系型数据等结构化数据,也包括图像、音频等非结构化数据。因此,这对制造业生产制造过程中海量数据的处理方法和技术提出了更高的要求。为了充分发挥制造业多源异构数据信息的潜力,更加高效地进行数据处理,必须在明确多源异构数据概念的基础上,对多源异构数据的处理方法和技术展开深入且系统性的研究。

    本文首先明确了制造业生产过程中多源异构数据的概念和类型;其次对生产过程中多源异构数据处理的过程进行了划分,同时对各个阶段的数据处理方法和技术及其在制造业生产过程中的应用进行了深入分析与讨论;最后,对生产过程中多源异构数据处理方法及技术进行了总结,并对现阶段面临的挑战及未来的发展趋势进行了分析与讨论。

    2 制造业生产过程中的多源异构数据

    《大数据:下一个创新、竞争和生产力的前沿》针对社会对大数据的关注及应用需求,对海量数据的处理技术进行了介绍和总结。基于对不同来源、多种结构数据的综合研究的迫切需要,多源异构数据这一概念随之产生,其主要包括两个特征:一是数据来源具有多源性;二是数据种类及形态具有复杂性,即异构性。

    图1   制造流程的5个阶段

    多源异构数据来自多个数据源,包括不同数据库系统和不同设备在工作中采集的数据集等。不同的数据源所在的操作系统、管理系统不同,数据的存储模式和逻辑结构不同,数据的产生时间、使用场所、代码协议等也不同,这造成了数据“多源”的特征。

    另外,多源异构数据包括多种类型的结构化数据、半结构化数据和非结构化数据。结构化数据指关系模型数据,即以关系数据库表形式管理的数据;半结构化数据指非关系模型的、有基本固定结构模式的数据,例如日志文件、XML文档、JSON文档、E-mail等;非结构化数据指没有固定模式的数据,如WORD、PDF、PPT、EXL及各种格式的图片、视频等。不同类型的数据在形成过程中没有统一的标准,因此造成了数据“异构”的特征。

    随着自动化、信息化、智能化等技术在制造业中的广泛应用,在生产过程中必然会产生大量的多源异构数据。从数据的来源来说,制造业的制造执行管理系统、生产监控系统、设备运行维护系统、产品质量检测系统、能耗管理系统中的各种机器设施、工业传感器等在运行和维护过程中都会产生大量的数据。从数据结构类型来看,这些海量多源异构数据既包括设备监测数据、产品质量检测数据、能耗数据等结构化数据,还包括生产监控系统产生的大量图片、视频等非结构化数据。本文综合其他学者的研究基础,针对制造业生产过程中产生的数据,按照数据来源和类型,将其做如下划分,见表1。对于制造业生产过程中的多源异构数据来说,由于生产过程存在复杂的变化条件,因此对数据的全面性、实时性的要求较高。

    3 制造业生产过程中多源异构数据处理

    在制造业生产过程中,从前期的数据广泛采集,到最后数据的价值提取,多源异构数据处理的一般流程包括数据采集、数据集成及数据分析。数据采集主要实现大量原始数据准确、实时的采集,为数据集成阶段提供原始数据源。数据集成主要实现数据的数据库存储,数据清洗、转换、降维等预处理以及构建海量关联数据库,为数据分析阶段提供预处理的数据源。数据分析主要利用关联分析、分类聚类及深度学习等技术实现数据的价值挖掘。多源异构数据处理的一般流程如图2所示。

    图2   多源异构数据处理的一般流程

    3.1 数据采集

    数据采集是多源异构数据处理的基础,只有实现对生产过程中产生的大量原始数据准确、实时的采集,并将其传输到数据存储管理平台,才能对生产设备、产品质量、工作调度等进行监控与管理,从而帮助生产管理部门做出更高效、精准的决策。

    针对不同类型生产制造业生产过程中的多源异构数据,需要采用不同的数据采集方法和工具。首先,对于离散制造业中的生产过程数据,主要使用射频识别(radio frequency identification,RFID)技术对生产车间中的原材料、设备、产品信息等进行数据采集。针对生产流水线上的产品信息,曹伟等人提出了一种无线射频识别数据采集单元模型,可获取零件的状态、时间等实时信息,并在此基础上建立了针对加工工序、工序流、批次与批量的无线射频识别监控模型,从而实现了对离散制造车间生产过程的可视化监控。而对于流程生产制造业中的生产过程数据,主要依靠传感 器及上位机对数据进行采集。陈开胜提出了采用分布式控制系统(distributed control system,DCS)和可编程逻辑控制器(programmable logic controller,PLC)等辅助控制系统和控制装置进行数据采集的方法,该方法是对计算机、网络和数据库的综合运用。此外,在流程生产中,以计算机为基础的数据采集系统还有数据采集与监视控制(supervisory control and data acquisition,SCADA)系统。其中,PLC主要应用于生产现场的温度测控;DCS主要应用在对测控精度及速度要求较高的生产现场的数据采集;SCADA则融合了PLC的现场测控功能和DCS的组网通信能力,可以对分散点进行控制,从而实现对分布范围较广的生产现场的覆盖。西门子公司在PLC的基础上加入了网络以及软件等,开发了SIMATIC PCS7西门子SCADA系统、SIMATIC WinCC西门子SCADA系统等控制系统,而DCS厂商霍尼韦尔公司也在其系统中融入了PLC,以增强其逻辑控制,开发了过程知识系统(process knowledge system,PKS)。对于在离散制造业及流程制造业中均广泛存在的日志数据及多媒体数据等,同样根据其各自的特点采用不同的数据采集方法。对于制造生产过程产生的日志数据文件,可以采用Flume这一分布式、高可靠、高可用的日志采集传输系统。陈飞等人提出了一种基于Flume并结合Elasticsearch及Kibana的新型分布式采集系统,该系统适用于海量日志数据的采集。针对生产过程对音频、视频等多媒体数据的监控,有利用多媒体流处理引擎直接抓取或利用厂商提供的软件开发工具包(software development kit,SDK)开发数据导入程序的数据采集方法。李凤娇在海康威视的8100系列网络硬盘录像机的基础上,通过调用海康威视提供的SDK中的相关接口函数读取实时视频流。另外,浙江宇视科技有限公司的IP流媒体解决方案可以通过安装流媒体服务器软件来对多媒体数据进行实时访问及存储。对于这几种典型的数据采集方法,本文根据其面向的数据类型及在生产过程中的应用进行了总结,见表2。

    另外,针对数据采集的新需求,相关研究也提出了许多与网络技术相结合的创新型数据采集方法。马吉军等人提出了一种基于边缘计算的生产数据采集方法,利用蜂窝网络对生产设备进行网络化改造,并利用边缘网关对采集到的生产数据进行本地处理。许瀚之和杨小健提出了一种基于虚拟专用网(virtual private network,VPN)的远程工业数据采集系统,在已建好的VPN环境下通过用于过程控制的OLE(OLE for process control, OPC)客户端进行数据采集。

    对于目前几种典型的数据采集场景,实际应用中根据其采集的数据类型及要求等,采用Flume、RFID、传感器等不同的采集方法,这些方法具有不同的优势。而面对目前数据量迅速增长以及数据类型日益复杂化的问题,传统数据采集方法难以满足更具实时性、更精确的采集要求,因此,与物联网等前沿技术相结合成为数据采集的发展趋势。

    3.2 数据集成

    多源异构数据集成是整合来自多个数据源的数据,屏蔽数据之间类型和结构上的差异,解决多源异构数据的来源复杂、结构异构问题,从而实现对数据的统一存储、管理和分析,实现用户无差别访问,充分发挥数据的价值。数据集成的关键技术包括数据存储管理、数据清洗与转换及数据降维。

    3.2.1 数据存储管理

    数据的存储管理是多源异构数据处理过程中非常重要的一个环节,选择合理的数据库可以减少数据检索的时间,提高数据查询的准确度,是后续数据处理的基础。目前常见的数据库技术包括:以MySQL、Oracle、DB2、SQL Server等为代表的SQL数据库,以Redis、HBase、MongoDB、Neo4j等为代表的NoSQL数据库,以及NewSQL数据库。

    美国甲骨文公司研发的Oracle是一种高效、适应高吞吐量的关系型数据库系统,在数据量大、对系统性能稳定要求高的钢铁、煤炭、汽车制造行业应用广泛。美国IBM公司开发的DB2具有伸缩性能良好、查询性能良好以及向下兼容性好的特点,适用于海量数据的存储管理,在政府、银行等广泛应用,另外在宝钢、本钢等钢铁企业也有应用。制造业生产制造过程中产生的海量多源异构数据包含结构化、半结构化和非结构化多种数据。由于面向结构化数据的传统关系型数据库在伸缩性、容错性、可扩展性等方面存在的固有局限性,单独使用难以满足对海量多源异构数据进行存储管理的要求,因此NoSQL数据库成为目前研究与应用的热点。

    根据数据存储模型和特点,NoSQL数据库可分为4种典型类型:以Redis、Memcached为代表的键值存储数据模型,以Bigtable、HBase为代表的列式存储数据模型,以MongoDB为代表的文档存储数据模型,以及以Neo4j为代表的图形存储数据模型。Redis常被应用在社交领域,用来存储用户关系和计数。由于生产过程中多源异构数据对实时性要求较高,因此Redis在制造业数据存储中常被用作缓存系统,以保障数据存储的低时延性。在电力计量采集系统中,基于Redis的分布式写缓存子系统用于缓存采集的计量数据,再批量写入关系数据库。在大型机械设备的数据采集与存储中,熊肖磊等人在数据层基于Redis实现了实时数据的解析缓存,使系统具有高效缓存数据的能力。Google Bigtable开源实现的HBase具有扩展性好、备份机制完善的特征,当制造业生产过程涉及多源异构数据的统计分析时,可使用HBase对来自各个子系统的数据进行同步整合存储。例如,在分布式电源控制系统中,可以实现各个分布式电源系统的运行状态数据至HBase数据库的同步。查询语言功能强大的文档存储数据库MongoDB适合数据量大、数据模型无法确认、需要对接多个数据源等的场景,数据来源复杂是制造业生产过程多源异构数据的主要特点之一,因此MongoDB常被用于多个数据源或子系统的对接。在工业生产中,MongoDB可用于对过程的连续监控;在混凝土行业中,MongoDB用来存储海量的混凝土生产消耗数据,并实现多个系统之间的数据对接;在电力行业, MongoDB可以实现电网图形的多时态、多级分布式存储。

    针对工业制造业过程数据产生速率快,实时性要求高,对事务的原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability) (即ACID)要求低的特点,冯德伦提出了NoSQL数据库合理组合的工业历史数据存储方案。针对制造业生产过程多源异构数据的来源更加多样化的发展趋势, NoSQL数据库与其他技术相结合的大数据平台或解决方案近年来也有不少案例。赵德基等人提出了基于Dubbo与NoSQL的工业领域大数据平台,针对工业多源异构数据的接收、存储、计算、分析及展示,根据不同场景的业务需求提供了相应的解决方案。文棒棒和曾献辉提出了一种基于传统数据库多表架构与NoSQL大数据库相结合的新型数据存储方案实现实时数据的分布式存储。

    除此之外,451 Group的分析师Aslett M提出了NewSQL技术,其具有NoSQL对海量数据的存储管理能力,同时还保持了传统数据库支持ACID和SQL的特性,但目前应用范围大多为专有软件或特定场景。对于上述几种典型的数据库技术,笔者对数据库模型、支持的数据类型和应用场景等进行了对比,结果见表3。

    以上几种典型的数据库技术均有其特定的优势及应用场景,而在特定复杂的应用场景中,单一的数据库往往难以满足人们对数据存储管理等多方面的要求,李东奎和鄂海红提出了关系型数据库不能完全被NoSQL数据库替代的观点,并基于Hibernate OGM建立了统一的SQL和NoSQL数据库访问模型,使得两类数据库能够在同一个框架下按照统一的规则进行读写。因此,根据具体的应用场景,选择不同类型的数据库进行混合部署,使数据库之间形成互补,是目前多源异构数据存储管理的发展趋势。

    3.2.2 数据清洗与转换

    准确可靠的数据是进行有效数据分析、数据挖掘的前提。在实际的生产过程中,由于多源异构数据来源众多的特征,采集到的数据的质量难以保证,缺失的、错误的、不一致的等不符合规范的“脏数据”普遍存在,同时来自不同系统的数据的格式也并不统一,这些都会给数据的有效分析带来困难。数据清洗的目的就是检测数据中存在的“脏数据”,通过数据筛选、数据修复等手段提高数据的质量。而数据转换主要是将多源异构数据转换成统一的目标数据格式,并完成对不同数据指标进行转换的计算。

    针对生产过程中不同的问题数据,可以给出不同的数据清洗方法。由于制造业生产过程中的多源异构数据往往来自多个数据源,各数据源通常具有不同的数据库系统、接口服务等,因此数据具有结构类型多样、表达形式不统一等特点,这就导致采集的数据中会存在数据缺失、数据错误、数据不一致等问题。对于缺失的数据,大多数情况下需要手工进行填入,某些情况下可以通过统计学习的方法对缺失值进行处理。曹林针对具有聚类特征的数据集,提出了一种回归插补的缺失值清洗框架。对于错误数据,首先利用统计分析的方法对可能出现的错误值进行识别,然后才能对错误数据进行清除,达到数据清洗的目的。对于不一致的数据,可以基于关联数据之间的一致性来检测数据潜在的错误,并进行修复,以完成对多数据源数据的清理。

    对于制造业生产过程中的多源异构数据来说,单一的数据清洗方法难以满足实际需求,这就需要一个系统的数据清洗方案。ETL(extract、transform、load)工具是一类常用的大数据预处理工具,应用广泛的有国外开源的Kettle工具、IBM公司的Datastage以及Informatica,其在数据清洗环节发挥着十分重要的作用。也有许多研究人员按照不同的需求对ETL技术进行了改进与完善。周瀚章等人设计了一种基于区域划分算法的ETL高效数据清洗方案,解决应用ETL时产生的大量错误属性数据的问题。ETL工具不仅在数据清洗方面具有广泛的应用,同时也是数据转换的主要工具。孙安健等人设计了一种可以屏蔽异构数据源访问差异的通用ETL工具,提供了大量转换组件来灵活处理复杂的应用场景。陈玉东和姚青提出了一种应用于业务流程数据的转换规则,通过设计流程数据转换算法来将流程日志中的数据快速准确地转换成评估系统需要的标准数据。

    除此之外,针对不同的制造业门类及数据采集方法,有不同的数据清洗方案。针对RFID采集数据实时性强、数据量大的特点,余杰和王睿提出了基于时间和基于时间间隔的布鲁姆滤波模型,可以在低内存的情况下保证数据应用的实时性。针对生产车间制造物联环境下采集到的数据连续性、冗余性强的特点,蓝波等人提出了一种基于卡尔曼滤波模型的滑动窗口技术,该技术更加适用于RFID标签移动的生产场景。这些研究针对不同的生产制造场景、不同的采集数据类型和特点,对数据清洗方法进行了改进和完善,使其更加适应实际应用的需要。

    目前,深度学习和众包技术开始在数据清洗环节得到应用。郝爽等人提出了利用深度学习模型解决复杂数据清洗任务的方法。针对参与者水平参差不齐造成数据清洗质量较低的情况,万耀璘等人提出了在决策阶段利用成熟计算机算法来提高众包可靠性的方案。深度学习可以减轻用户制定数据清洗规则的负担,众包技术将数据清洗任务发送到互联网,利用公众的参与来提高数据清洗的效率,二者与传统数据清洗技术的结合是数据清洗技术在未来一段时间的发展趋势。对于数据转换来说,ETL工具仍然是提高数据质量、屏蔽数据差异的首选工具。因此,对ETL工具自身现有的扩展性差、调试不便利等局限性进行改进和完善是下一步研究与开发的重点。

    3.2.3 数据降维

    多源异构数据具有种类繁多、结构复杂的特点,为了从原始数据中提取更加可靠、有效的数据信息,需要消除无关、冗余的特征,生成新的特征数据,从而实现对高维数据的降维。在现代制造技术的发展中,制造业生产过程中海量的多源异构数据往往维数较高且大量数据之间存在较高的相关性,这给数据降维带来了更高的难度。一般来说,可以通过对数据进行特征选择或者特征提取来实现数据降维。特征选择的方法通过对原始特征集合中的元素进行选择来得到原始特征集合的子集,从而实现降维;而特征提取的方法则通过对不同特征进行组合来得到新的特征集合,从而达到数据降维的目的。

    特征选择不改变特征的含义,从原始特征数据集中选择具有代表性和统计意义的特征,以实现降维的目的。特征选择方法包括基于全局搜索、随机搜索以及启发式搜索策略的特征选择方式和基于Filter、Wrapper的特征选择算法。

    全局搜索策略遍历原始特征集,通过评价准则选择满足特定条件的特征子集,其优点是可以得到最优特征子集。但制造业生产过程中的多源异构数据往往是具有多个独立或相关属性的高维数据,因此运算成本较高,在实际中难以应用。随机搜索策略首先随机选择特征,然后用模拟退火算法进行顺序搜索,或用遗传算法进行无规则搜索,再根据分类的有效性对特征赋予权重,选择权重大于定义阈值的特征。由于随机搜索易受随机因素的影响,不确定性较高,不同的参数设置对随机搜索结果也有较大的影响。启发式搜索策略又被称为序贯优选法,可以实现最优特征子集与计算复杂度之间的平衡。相比于前两种方法,其复杂度较低、效率更高。陈建华针对设备故障中对数据集降维的问题,提出了一种基于关联关系与启发式搜索组合的特征选择方法,特征子集通过双向搜索算法产生,并通过计算属性之间的关联关系来剔除冗余属性,提高了效率和准确性。

    基于Filter的特征选择直接根据评价准则对数据的统计特征进行评价,去除重要程度低的特征,选出的特征子集一般规模较大,适合作为特征预筛选器。基于Wrapper的特征选择依赖后续分类算法,将子集的选择看作搜索寻优问题,根据分类器的准确率来对特征子集进行评价,其分类效率与精度都较高。制造过程中的多源异构数据往往特征众多且关系复杂,田文荫提出了针对高维制造过程的结合偏最小二乘回归与Wrapper特征选择的混合特征选择方法,同时针对制造业生产数据常出现的类别间不平衡问题,提出了一种基于G-Mean的新的混合特征选择方法,在降维能力和分类性能方面均取得了良好的结果。

    特征提取通过将原始特征变换成具有具体物理意义或统计意义的特征,将高维的特征向量变换为低维的特征向量。由于制造业生产过程中的多源异构数据来源于制造生产各个环节中的设备、产品信息等,具有较强的专业性及关联性,因此在进行数据特征提取时会更加注重特征背后的物理意义以及特征之间的关联性。传统的特征提取方法包括线 性主成分分析(principal component analysis,PCA)、线性判别分析(linear discriminant analysis,LDA)、独立成分分析(independent component analysis,ICA)、非线性的核主成分分析(kernel principal component analysis, KPCA)、核独立成分分析法(kernel independent component analysis, KICA)。

    主成分分析法主要通过观测变量内部的相互关系来整理信息,将可能相关的原始数据集转换成线性不相关的新特征集合,实现高维数据向低维数据的压缩。在纺织业中,刘海军等人利用本色布纹理的自相关性特征,采用主成分分析法去除其相关性,得到了纹理的主成分,将在主成分方向上样本图像的压缩结果作为特征变量,进行分类检测,得到了较高的分类准确度。在煤矿井下供电系统故障检测中,郭凤仪等人通过对时频域变换的回路电流特征矩阵的奇异值进行主成分分析,得到了故障识别的特征,进一步采用遗传算法优化的支持向量机对故障电弧特征的有效性进行测试,可以有效识别电机及变频器负载回路的串联故障电弧。针对机械装备制造业生产过程对加工设备依赖程度高的问题,姚菲提出了一种对备件预测理论的创新性探索,利用基于主成分分析和支持向量机的综合算法进行需求预测,从而实现对设备备件需求的预测。主成分分析法适合处理呈高斯分布的原始数据,但实际生产过程中多源异构数据分布的复杂程度远超高斯分布,这限制了主成分分析法的应用。

    线性判别分析法是有监督的特征提取方法,降维后在新的子空间中使同类特征尽可能接近、不同类特征尽可能分散,与主成分分析法一样,也适合用于处理高斯分布数据。针对模拟电路故障诊断中故障数据的特征提取方法,肖迎群等人对模拟故障数据在主元变换空间进行线性判别分析,并将最优判别特征模式应用于模式分类器,在充分简化模式分类器模型及降低系统运行成本的基础上获得了较好的诊断结果。另外,在图像识别数据分析中,线性判别分析法也是一个十分具有优势的工具。在对铅酸蓄电池X射线图像的特征提取中,杨金堂等人分别采用主成分分析法、线性判别分析法以及二次线性判别分析法,最终得出二次线性判别分析法在该图像识别中具有较高识别率的结论。

    独立成分分析法将原始数据分解为若干独立分量的线性组合,更适合用于处理非高斯分布的情况。杨冲等人采用独立成分分析和主成分分析两种常用方法对制浆造纸废水处理过程中的传感器故障进行检测,由于制浆造纸废水处理过程中的数据呈非高斯分布,ICA的整体故障检测率高于PCA。针对滚动轴承在噪声背景下产生故障时的振动信号,姜怀斌利用独立成分分析在数据独立性分析方面的优势,提出了一种独立元核FDA(ICA-KFDA)故障检测模型,提高了故障诊断的准确率,降低了漏检率。

    对于图像视频等呈非线性分布的数据,需要使用非线性的特征提取方法。核主成分分析由Scholkopf B等人在PCA的基础上提出,将原始数据通过核函数映射到高维度空间后,再利用PCA进行降维。针对旋转机械结构中轴承状态的识别,谢锋云等人提出了粒子群优化核主成分分析法,对轴承的复合特征集进行特征提取,继而由支持向量机对识别特征集进行识别分类,提高了轴承状态识别的准确率。对于行星齿轮传动系统故障,贺妍和王宗彦用粒子群优化方法改善了核主成分分析法对非线性问题的分析,新方法在行星齿轮磨损程度的识别和诊断中取得了良好的结果。

    核独立成分分析法也是利用相同的思想在ICA的基础上进行扩展的,近年来被广泛应用在非线性混叠的源分离技术中。针对旋转机械结构中的滚动轴承故障,刘嘉辉等人提出了一种全矢谱和独立分量分析(ITD和KICA)相结合的盲源分离法,对采样的滚动轴承故障信号进行有效的信噪分离,在降噪的同时能够更加全面、准确地提取信息,并进行轴承故障诊断。针对化工行业的润滑油生产过程,许亮等人提出了基于混合核函数的KICA-LSSVM故障分类方法,提高了故障诊断的速度和准确性。

    除了对这些传统的特征提取方法进行优化以外,针对制造业生产过程中数据的特点,一些研究提出了不同的方法对数据特征进行提取。针对生产现场传感器时钟差别及生产设备运行原理导致的不同数据源之间可能存在延迟关联的问题,张守利等人提出了一种面向时延的传感器数据特征提取方法,利用基于皮尔逊相关系数的曲线排齐算法调整不同传感器数据之间的时间,使得调整之后的数据相关性达到最大。苗爱民等人提出了一种基于局部线性嵌入(locally linear embedding, LLE)的非线性故障检测新技术,可以有效地计算 出保留了局部邻域结构信息的数据的低维嵌入。尚超等人针对制造生产过程中某些产品质量和关键变量始终难以在线测量的问题,构建了一种基于历史测量数据驱动的软传感器,从而对这些变量进行稳定可靠的在线估计。

    随着制造业多源异构数据中非结构化数据所占份额的增多,对多源异构数据的特征提取在数据处理中的重要性也大大增加,而在未来一段时间内,对于多源异构数据处理平台来说,对实时数据以及高维度数据集的特征提取仍然是一个挑战。同时,由于工业生产环境的复杂性,针对工业生产过程中的数据降维,要更多地结合业务场景本身,利用先验知识或者专家知识对数据进行降维。

    3.3 数据分析

    数据分析是多源异构数据处理的关键,是指在数据采集与数据集成环节的基础上对工业生产数据的信息和知识进行提取,其目的是利用数据挖掘、机器学习、统计分析等技术对集成的多源异构数据进行分析和处理,从而提取出有价值的信息和知识,用于检测制造生产运行状况和生产产品质量检测、指导人员做决策等。针对工业生产中的数据分析技术等问题,其他学者也有相关研究,但本文从更广的应用领域及更全面的方法的角度对制造业生产过程中的数据处理方法进行综合研究。目前,数据分析环节的关键技术包括关联分析、分类分析和聚类分析等。

    3.3.1 关联分析

    数据关联分析就是发现表面看来无规律的数据间的关联性,从而发现事物之间的规律性和发展趋势等。常用的关联规则挖掘算法包括Apriori算法和FP-Growth算法。

    Apriori算法首先通过遍历数据库确定频繁项集,然后根据支持度阈值进行修剪,最后根据支持度来计算可信度,从而确定关联规则,是一种被广泛应用的关联规则挖掘算法。针对大型化和复杂化的机械装备制造业生产过程中异常事件发生概率高、报警数量巨大的问题,樊虹提出了基于数据挖掘Apriori算法的工业过程报警处理方法,缩小了重复报警的数量,提升了对报警事件的处理效率。但是该算法仍然存在需要频繁遍历数据库从而产生大量候选集的问题。针对这一问题,周凯等人提出了一种仅需对数据库扫描一次即可实现改进Apriori算法,可以有效地提高产生有效频繁项集的效率。除此之外,刘芳和吴广潮提出了一种将数据库转换为矩阵形式,通过缩小候选项集规模、减少无用候选项集生成来提高算法效率的方法。

    FP-Growth算法是对Apriori算法最经典的改进,采用频繁模式树(FP-tree)存储频繁项集,减少数据库扫描次数。针对制造业设备对快速准确诊断设备故障的需求,张斌等人提出了一种基于兴趣属性列的改进FP-Growth算法的数据挖掘方法,从而实现对工业生产设备故障的快速准确诊断。针对轮胎制造过程中质量异常的问题,李敏波等人提出了一种改进后的FP-Growth并行算法,该算法能够高效地找到影响轮胎质量的因素。另外,针对FPGrowth算法中存在的FP-tree占据空间过大的问题,顾军华等人通过对FP-Tree的规模大小和计算量以及F-List分组策略进行优化,提出了一种新的基于Spark的并行FP-Growth算法——BFPG算法。

    除上述两种数据关联分析算法外,由于制造生产过程中数据量在不断增加,在线的动态数据关联分析具有更加现实的意义。Hidber C提出了一种在线的关联分析数据挖掘算法——CARMA算法,该算法具有在线实现数据关联分析、精度高、允许用户在线调整阈值的优点。此后,于丽等人分别对算法的参数估计、数据集遍历次数进行了优化改进,提高了算法的速度及精度。如今,CARMA算法在预测和控制领域得到了广泛应用。

    目前关联分析方法存在诸多不足,如何利用关联规则算法对非结构化数据进行有效处理、如何将关联规则算法与其他的决策方法结合以实现更准确的数据分析等,均有待进一步的研究和发展。

    3.3.2 分类分析

    对于制造业生产过程的数据分析来说,数据的分类技术是实现数据信息挖掘及结果预测的十分重要的方法之一。

    分类是指通过算法将数据划分到已经定义好的类别中。常用的分类算法包括决策树算法、基于规则的分类法、人工神经网络算法、深度学习算法、支持向量机(SVM)算法、贝叶斯算法等。

    决策树通过对数据集的分析归纳进行学习,应用范围广泛,对于key-value类型的数据来说是最优选择。目前,较为常见的决策树分类算法有C4.5、SLIQ和SPRINT。决策树算法在生产计划安排方面的应用备受关注。针对离散工业的静态Job Shop调度问题,王成龙提出了用决策树模型提取调度知识的方法,对生产调度方案进行了优化。针对机械装备制造业生产计划中工单加工顺序和同一机器不同工件加工顺序等历史数据,于艺浩提出了一种可根据实时数据为工件安排合适的机器的决策树模型,达到了制造车间根据生产状态实时优化调度的效果。另外,在产品质量检测与分析方面,决策树算法也有非常广泛的应用。针对我国冷轧酸洗产品生产技术尚不成熟、产品表面不合格率较高的问题,郭龙波通过对冷轧酸洗产品数据使用二分决策树等工具进行分析,得出了影响冷轧酸洗产品表面质量缺陷的因素以及判定标准,使企业能够更高效、准确地对产品缺陷进行检测。宋建聪提出了一种基于C4.5决策树算法的生产过程质量分析模型,通过找出引起质量问题的主要因素来对产品质量缺陷进行责任分析和诊断,进而采取针对性的措施来提高产品合格率。

    基于规则的分类法是利用用户为每个类直接确定的分类规则来形成类别模板,规则分类器通过统计样本中满足分类规则的规则数和次数来确定样本种类的分类方法,常用来产生更易于解释的描述性模型,更适用于处理类分布不平衡的数据集。在能耗分析系统中,许明洋对基于规则的节能措施实施分类算法的应用进行了分析,基于规则的分类法需要用户自己学习规则,与其他分类算法相比,灵活性与准确性较差。

    人工神经网络(artificial neural network,ANN)具有自主学习、容错性高的特点,适合处理模糊、非线性的数据,其中前馈式神经网络模型常用于分类算法。其中,反向传播(back propagation,BP)神经网络算法主要利用反向传播算法对网络的权值和偏差进行反复调整训练,使输出的向量尽可能接近期望向量。但由于其随机获取网络初始权重和阈值的特点,BP神经网络具有收敛时间长、易陷入局部最优解的缺点。周福来、张细政等人、关子奇等人、夏颖怡均基于遗传算法对BP神经网络进行了优化,从而实现了对齿轮设备故障、焊接熔池照度以及刀具寿命等的精确诊断。李世科采用列文伯格马夸尔特(Levenberg-Marquardt,LM)算法对BP神经网络进行改进,对液压支架顶梁疲劳寿命进行了精确的预测。罗校清应用主元分析法对BP神经网络进行了优化,最终实现了对机械设备故障的准确判断和及时报警。

    深度学习最早起源于对人工神经网络的研究,最早由多伦多大学的Hinton G E等人在2006年提出,指基于样本数据的包含多层次的深度网络结构的机器学习过程。深度学习本质上属于机器学习的范畴,是机器学习领域一个新的研究方向,在图像、语音、文本分类识别方面具有非常好的优势,具有强大的对不同类型数据的处理能力,因此对制造业生产过程中的数据分析起到非常大的作用。如今被广泛熟知的深度学习基本模型包括深度神经网络(deep neural network,DNN)、循环神经网络(recurrent neural network, RNN)、卷积神经网络(convolutional neural network,CNN)、深度置信网络(deep belief network,DBN)等。深度神经网络可以简单地理解为含有多个隐藏层的神经网络,其优势体现在对无标签数据的自我学习。对于机械设备中常见的传动零件齿轮的故障监测,李嘉琳等人应用深度神经网络来诊断早期齿轮点蚀故障,将采集的振动信号直接作为DNN输入,可以有效解决特征提取环节造成的较大误差,与传统ANN诊断结果相比,故障诊断率得到了提高。针对制造车间中关键刀具设备的寿命预测问题,刘胜辉等人将小波包分析方法得到的结果作为输入来训练深度神经网络,建立刀具剩余寿命预测模型,可对切削刀具剩余寿命进行精确的预测。卷积神经网络是一种包含卷积计算的前馈神经网络,长期以来是图像识别领域的核心算法之一。曹大理等人采用卷积神经网络自适应地提取特征,避免了人为提取的局限性,提高了刀具磨损在线监测的精度。吴志洋等人针对布匹生产中的布匹瑕疵检测,提出了一种基于深度卷积神经网络的单色布匹瑕疵检测算法,很好地解决了人工检测效率低、误检率高的问题。彭大芹等人提出了一种基于卷积神经网络的液晶面板缺陷检测算法,并在传统单向特征融合的基础上提出了双向特征融合的网络结构,提高了检测精度。李广等人针对工业中常见的机床刀具消耗冗余问题,采用异常检测卷积神经网络(CNN-AD)对机床刀具的崩刃进行准确预测。循环神经网络是一类用于处理和预测序列数据的神经网络模型,与传统机器学习方法相比,其对于输入/输出数据没有过多限制,可以用来处理文本、音频和视频等序列数据。针对燃煤电站NOx排放预测模型建模中输入变量特征集确定困难的问题,王文广和赵文杰提出了一种基于数据驱动的门控循环单元(gated recurrent unit,GRU)循环神经网络模型,将GRU作为RNN的神经网络单元,从而使RNN能够分析长时间的时间序列问题,对燃煤电站锅炉NOx排放实现准确预测。对于基于循环神经网络的电力变压器故障诊断模型存在的诊断不清晰、收敛速度慢的缺陷,李俊峰基于蝙蝠算法对循环神经网络的参数进行了优化,改进后的变压器故障诊断模型的收敛性及诊断准确率均得到了较大提升。深度置信网络通过模拟人类大脑对外部信号的处理来实现功能,是由多个限制玻尔兹曼机(restricted Boltzmann machine,RBM)叠加组成的网络模型。王宪保等人运用深度置信网络训练网络的初值,再通过对比重构图像与缺陷图像,实现快速准确的太阳能电池片表面缺陷检测。李梦诗等人提出了一种基于深度置信网络的新型风力发电机故障诊断方法,并通过与传统检测方法进行对比,验证了该算法的鲁棒性。刘浩等人提出了一种基于多参数优化深度置信网络的滚动轴承外圈损伤程度识别方法,可有效地提高故障识别的准确性和稳定性。目前深度学习模型在制造生产数据分析中的大致发展方向是与其他算法相结合,对深度学习基本模型中的参数、结构进行优化,从而提高算法的精确性与鲁棒性,实现更精准的检测与预测。

    支持向量机是一种通过核函数免去高维变换,直接将低维参数代入核函数从而得出高维向量内积的分类方法,常用于故障诊断。针对机械制造业中滚动轴承造成的故障识别问题,吕震宇提出了一种使用磷虾群算法优化的支持向量机,对轴承状态进行精确诊断,从而精确地识别滚动轴承的故障类型,较传统支持向量机的识别精度更高。吕维宗等人提出了基于量子粒子群优化(quantum particle swarm optimization,QPSO)算法优化的相关向量机(relevance vector machine,RVM),并进行故障诊断,相较于支持向量机而言,其更适用于小样本处理和在线故障诊断。

    贝叶斯分类算法是在贝叶斯公式的基础上,利用概率统计进行分类计算的方法。其中,朴素贝叶斯分类应用最广泛。制造生产过程中少不了电池寿命与电力故障的问题,Ng S S Y等人针对不同工作环境温度及放电电流情况,提出了用于不同工作状况下电池估计和剩余使用寿命预测的朴素贝叶斯模型。李梦婷等人基于增量式贝叶斯算法,提出了一种实时性在线电路故障诊断方法,可以同时实现在线电路故障诊断的高精确性与高实时性。

    目前分类分析方法在工业生产中已经有广泛的应用,尤其是基于机器学习的分类方法。但是现阶段单一的数据分类方法并不具有较高的准确性及可靠性,需要不同算法的融合才能产生较为可靠的数据分类及预测结果。然而不同算法的融合势必会造成系统时延,如何平衡系统的可靠性和实时性是研究的方向之一。另外由于工业生产的特殊性和复杂性,针对同一类分类问题,并没有通用的分类方法可以使用,要得到可靠的分类结果,需要与实际场景、实际业务相结合。同时,如果要得到较为准确的分类结果,分类算法模型的训练数据集需要结合生产领域的经验知识进行相应的特征工程处理。

    3.3.3 聚类分析

    聚类就是将相似的数据归为一类,原则是使每一类数据的相似性最大。常用的聚类算法包括基于划分的聚类方法、基于层次的聚类方法、基于密度的聚类方法和基于模型的聚类方法四大类。

    其中,最常用的是K-means算法。K-means算法是一种基于划分的聚类方法,通过随机选择K个数据点作为初始聚类中心,根据特定的距离算法将待聚类的数据集分成K簇。娄小芳通过对大量铝工业生产历史能耗数据进行处理分析,运用K-means算法等方法分析其规律,以此指导生产部门改进参数,降低能耗。针对酿酒不良发酵行为早期迹象的识别,Urtubia A等人通过对产品中29种成分检测的数据采用K-means算法进行聚类分析,获得了不良发酵行为模型,从而实现了对产品质量的认定,减少了早期行为造成的损失。但该算法存在聚类结果受选择的初始聚类中心影响较大、处理大数据时间效率低等缺点。徐健锐和詹永照将改进的K-means算法和分布式计算框架Spark结合,提出了大数据下的快速聚类算法SparkKM,该算法既弥补了经典K-means算法的不足,又发挥了Spark分布式计算处理速度快的优势。

    除此之外,常用的聚类方法还有基于密度的DBSCAN算法、基于层次的BIRCH算法以及基于模型的高斯混合模型(GMM)等。基于密度的DBSCAN算法通过对核心点、边界点和噪声点的标记,将具有密度的区域划分成簇。针对风力发电设备中故障率最高的齿轮箱和主轴的故障识别问题,林涛等人利用DBSCAN聚类算法对运行数据进行密度聚类,对齿轮箱和主轴的故障进行较准确的诊断。针对电力系统信息安全问题,谢静瑶等人采用启发式的自适应算法对DBSCAN算法的部分参数进行估计,改进了聚类效果,从而提高了信息安全预警分析的准确性。基于层次的BIRCH算法利用树结构进行聚类,适用于数据量大、类别数多的数据处理。对于木材加工中木材缺陷的识别问题,吴东洋和业宁采用BIRCH算法对数据集进行一次扫描即可得到较高的聚类质量,提高了识别准确率。针对食品卫生的HACCP (hazard analysis critical control point)自动分类,叶飞跃等人提出了一种多阈值、多代表点的BIRCH算法,该算法可以适应HACCP分类中各种形状的数据集。基于模型的高斯混合模型是一种融合了参数模型和非参数模型的优势的聚类方法,常被应用在语音识别、图像识别等领域。针对机械结构中易损坏的滚动轴承,龙铭等人提出了一种基于自回归高斯混合模型(AR-GMM)的滚动轴承故障程度评估方法。它以早期无故障轴承振动信号的AR模型特征为基准特征,引入后期轴承振动信号的AR特征,可以监测滚动轴承各种形式的早期故障。针对应用广泛的螺栓连接,王刚等人利用监测区域内螺栓连接结构的各种松动工况的实时数据建立高斯混合模型,基于高斯混合模型的概率密度分布之间的相似度最大准则,可有效判断监测区域螺栓的松紧状态。针对印花织物的表面疵点检测,李敏等人在传统高斯混合背景模型的基础上引入了自适应分块建模的思想,在提高印花织物疵点检测准确率的同时,能有效地处理检测过程中的光照不均和噪声等问题。

    数据量的迅速增加使得对大规模数据的分类、聚类成为具有挑战性的研究问题。对于分类算法来说,不同的算法均有其独特的优势以及特定的应用领域。对于聚类算法来说,传统聚类算法经过抽样或降维会损失精确性,而并行聚类算法尽管具有对大数据高效、良好的扩展性等优点,但算法实现较复杂。简单高效、扩展性高的面向大数据且不消耗更多软硬件资源的分类聚类算法是未来的主要研究和优化方向。

    4 结束语

    本文对制造业生产过程中多源异构数据的概念和类型、数据处理的方法和技术进行了较为全面的综述和梳理。将生产过程中的多源异构数据按照数据来源和数据类型进行了分类,对数据处理的整体流程进行了定义,并对数据处理过程中的具体方法、技术及其在生产过程中的具体应用进行了总结分析。

    随着工业物联网的快速发展,数据的来源更多,数据结构更加多样化,同时生产过程中信息系统对数据处理的实时性、准确性要求更高,这给多源异构数据的处理带来了巨大的挑战。首先,设备的多样性和复杂性会给数据采集方法、技术带来新的挑战,需要增加更为丰富、可靠、高效的数据采集方法和技术;其次,海量的数据对数据存储技术的容量和效率、精度等提出了更高的要求,也对传统的SQL、NoSQL等数据存储系统的扩展能力提出了更高的要求,综合数据存储系统成为未来发展的趋势;最后,实际生产对数据清洗、降维及数据分析方法和技术的效率和精确度的要求进一步提高。另外,只有性能更高的数据处理分析平台及更高效的数据挖掘算法才能满足大规模多源异构数据的实时处理与分析要求。另外,随着边缘计算在工业生产过程中的快速应用,面向边缘控制器、边缘网关和边缘云的数据采集、存储、处理和分析的方法和技术的研发将成为重点研究方向。

    作者简介

    陈世超(1987-),男,澳门科技大学计算机技术及应用专业博士生,中国科学院自动化研究所复杂系统管理与控制国家重点实验室助理研究员,主要研究方向为数据处理、工业物联网、边缘计算 。

    崔春雨(1998-),女,就职于中国科学院自动化研究所复杂系统管理与控制国家重点实验室,主要研究方向为数据处理、边缘计算 。

    张华(1986-),女,博士,北京航天智造科技发展有限公司平台研发部高级工程师,主要研究方向为现代精密测量、工业物联网和边缘计算 。

    马戈(1990-),男,博士,中国工业互联网研究院智能化所工程师,主要研究方向为工业互联网、人工智能、边缘计算等 。

    朱凤华(1976-),男,博士,中国科学院自动化研究所复杂系统管理与控制国家重点实验室高级工程师,主要研究方向为人工交通系统、平行交通管理系统 。

    商秀芹(1983-),女,博士,中国科学院自动化研究所复杂系统管理与控制国家重点实验室助理研究员,主要研究方向为智能制造的数据驱动建模与优化技术 。

    熊刚(1969-),男,博士,中国科学院自动化研究所复杂系统管理与控制国家重点实验室研究员,主要研究方向为复杂系统平行控制与管理、智能制造、智能交通 E-mail:xionggang@casc.ac.cn。

    联系我们:

    Tel:010-81055448

           010-81055490

           010-81055534

    E-mail:bdr@bjxintong.com.cn 

    http://www.infocomm-journal.com/bdr

    http://www.j-bigdataresearch.com.cn/

    转载、合作:010-81055537

    大数据期刊

    《大数据(Big Data Research,BDR)》双月刊是由中华人民共和国工业和信息化部主管,人民邮电出版社主办,中国计算机学会大数据专家委员会学术指导,北京信通传媒有限责任公司出版的期刊,已成功入选中文科技核心期刊、中国计算机学会会刊、中国计算机学会推荐中文科技期刊,并被评为2018年国家哲学社会科学文献中心学术期刊数据库“综合性人文社会科学”学科最受欢迎期刊。

    关注《大数据》期刊微信公众号,获取更多内容

    展开全文
  • 当然,除了支持数据库迁移,多源异构迁移方案也支撑数据汇总、分发等业务场景,这也是TDSQL具备完善的产品服务体系的体现。 1. TDSQL异构数据迁移分发的背景及架构方案 1.1 TDSQL异构数据迁移方案的场景 TDSQL作为...

    为帮助开发者更好地了解和学习分布式数据库技术,2020年3月,腾讯云数据库、云加社区联合腾讯TEG数据库工作组特推出为期3个月的国产数据库专题线上技术沙龙《你想了解的国产数据库秘密,都在这!》,邀请数十位鹅厂资深数据库专家每周二和周四晚上在线深入解读TDSQL、CynosDB/CDB、TBase三款鹅厂自研数据库的核心架构、技术实现原理和最佳实践等。

    本文将带来直播回顾第五篇《高性能、安全稳定、数据一致:TDSQL如何实现数据库异构迁移》

    点击图片收看直播回放

    我今天的主题是关于TDSQL异构数据同步与迁移能力的建设以及应用方面的内容。整个内容分四个部分:

    一是异构数据库方面包括数据分发迁移同步的背景——我们为什么要发展这一块的能力以及现在这部分服务的基本架构;

    二是TDSQL异构迁移能力有哪些比较好的特性,以及在实现这些特性的过程中的难点问题和我们提出的特色的解决方案;

    三是结合TDSQL现在在国产数据库的一些推广以及应用的经验,我们针对在异构数据迁移或者同步的领域场景最佳实践,也介绍一些好的用法和场景;

    四是针对今天讲的内容做一个总结。

    事实上,作为国产自研的成熟的分布式数据库产品,TDSQL对内稳定支撑腾讯海量计费业务,对外开放5年来也通过云服务为微众银行等超过500家金融政企机构提供高性能、高可用、高可靠、强一致的分布式数据库服务。TDSQL崇尚良性的竞争,也给予客户强信任的保障:TDSQL具备开放的架构,不仅支持安全快速的数据库数据迁入,同样支持异构数据库迁出。

    从客户的需求角度出发,持续打磨产品,是我们一贯的原则。当然,除了支持数据库迁移,多源异构迁移方案也支撑数据汇总、分发等业务场景,这也是TDSQL具备完善的产品服务体系的体现。

    1. TDSQL异构数据迁移分发的背景及架构方案

    1.1 TDSQL异构数据迁移方案的场景

    TDSQL作为一个金融级数据库,面对的更多是金融级场景以及金融机构客户,金融机构往往有一些比较特殊的需求,比如说保险行业,他们基于TDSQL构建业务时会进行一些业务划分,或者基于水平扩展的要求,数据会落在多个分库上等,而有时又需要把多个区域或者多个分库上的数据汇总到一个总库上进行统计分析,TDSQL作为数据层的服务必须具备高性能、准确可靠的将数据实时汇总的能力。也就是说,TDSQL遇到的第一个数据库迁移场景需求就是要支持高速准确进行数据汇总的能力。

    二是来自跨城容灾场景的需求。举个例子,腾讯内部金融级业务有跨城容灾的需求,这也是大型互联网公司中常见的容灾级别要求,我们要求业务具备城市级别自动快速容灾切换的能力。比如说在深圳和上海分别有一套数据库并且支撑了相关业务SVR,我们就需要在这两个城市间的数据库DB之间实现数据实时同步,这样有两个好处:1、这一套实时同步的东西可以在城市级切换的时候快速地将业务切换备城;2、这一套实时同步做到足够好,比如说实时性更好或者说数据准确度是完全没有问题的情况下,我们可以做到业务的分流,比如有部分的业务是在主城的SVR上,当我们认为主城SVR业务量过大或者说压力太大时候,也可以切换一部分业务流量到备城的SVR上,实现两个城市之间数据层的数据和数据同步。我们遇到第二个需求就是在跨城容灾或者跨城业务分流、跨城数据同步上我们需要DB侧有这样的能力提供给业务使用。

    三是异构的数据分发和迁移。TDSQL作为一个金融级数据库,对外是非常开放的架构,我们支持将数据以各种各样满足业务的方式同步到外面的平台,比如当有一些业务需要在Oracle上跑一些比较老的业务或请求等等;也有一些业务需要把数据同步到消息队列给下游业务使用,比如大数据平台、其他的检索之类,我们可以通过消息队列把数据抽出来。金融机构往往需要数据不仅能够存进来而且能够很好地按照要求分发出去,供下游业务使用,这也是我们遇到比较重要的需求。

    针对上面提到的三种场景——数据汇总、跨城容灾、异构数据库间数据的分发和迁移TDSQL针对这些需求构建出一套叫做多源同步的系统。现在介绍一下多源同步的系统是通过什么样的架构来满足我们提到的三个需求的。

    1.2 开放的架构:TDSQL多源同步方案架构解读

    从图上可以看到有三个组成部分:一是原数据的抽取;二是中间的存储——这是一个消息队列,三是目标实例。这是一个非常典型的CDC架构,通过获取源端数据源的增量数据,通过消息队列,下游消费的逻辑将数据进行分发。从左边看到,这一套多源同步,源端支持MySQL,就是对MySQL系列的DB可以获取它的增量数据;还有Oracle。。抽取完数据增量,比如说binlog日志或者增量数据获取服务抽取到的数据,我们会以一个中间格式存放到消息队列里面;存到消息队列以后,我们自己实现了一个消费逻辑——叫做consumer消费者,它可以实现将这一套存到消息队列的数据按照不同的需求以及不同的目标端类型将数据推送到下游。

    目前TDSQL多源同步方案支持的目标端类型有下面这几种:PG, TDSQL, Oracle,还有一部分就是MySQL,另外还可以将增量数据再推往另外一个消息队列,比如说有一些业务可能需要将这套增量的数据推往业务使用的队列组件里面,我们也是支持这样做的。

    最后,在这一套同步的数据链路过程中,我们有一个数据校验的服务,包括两个方面:一是增量校验,含义就是会实时校验这一笔数据从源端抽取,到它的增量变化,再到写到目标端之后,这笔数据落库落得准不准确,是不是在正确的目标上写下这笔数据;二是存量校验,可能是一些定时定期去跑批,比如说定期对源和目标的数据进行整体的校验,我们能够主动及时地发现整个数据通路上的问题和错误。

    结合我们刚刚说的需求,基于数据同步的跨城双活架构,也是腾讯内部现在在使用的架构。基于数据同步的跨城双活架构是这样的形式:

    首先左边和右边代表不同的城市,这里举例左边是深圳,右边是上海。从图上可以看到,TDSQL在SZ这套实例会将业务不断写入的增量数据源源不断地写入本城的消息队列里面。对城的SH也会将自己业务访问的增量数据源源不断写到消息队列里面,同时在各个城市有一套自己的消费服务,这套消费服务会拉取对端的增量数据,也就是说会拉对城的消息队列里面的增量数据进行重放,这样就实现了两套基于数据同步的一套跨城双活。这个双活是有前提条件的——就是两套业务在SZ和SH同时写的时候,它的访问主键一定是分离,在这一套逻辑下面没有办法做到同时对同一条主键进行修改。我们基于跨城的这套双活架构也是要基于主键分离的做法。

    2 TDSQL 多源同步方案的挑战和特性

    2.1 要求与挑战

    介绍完整体架构,我们继续深入拆解下,这套架构所面对的业务场景,都有哪些要求?在这些要求实现的过程中是有哪些难点,并且针对这些难点我们是怎么处理的?以下将介绍这其中的特性、难点、解决方案。

    一是高性能:对实时性要求比较高的业务对数据同步的速率有比较高的要求,比如说秒级别等等。但无论如何,在这个互联网时代,这套数据同步要快,不能说加了这套数据同步、异构分发的逻辑以后,它同步的速度非常慢,这肯定是不可以。

    二是数据强一致性:在快的基础上,同步的数据一定要准。这套数据同系统,分发的系统把数据从源端抽出来,往里面写的过程中,需要做到原来写出来是什么样的,目标重放就是什么样的,两边的数据一致性一定要有保证,这里面就包含了我们如何规避在抽取链路、重放链路这两个数据链路上的错误;二是如何保证在异常情况下写入的数据一定是对的。

    三是服务高可用:这一套同步服务,一定是高可用的,体现在两个方面:1、灾难的情况下,本身消费者的服务能够在假如机器出现一些不可恢复的故障时能够及时地感知并且自动迁移和切换;2、要应对本身常规的扩容——垂直扩容或者水平扩容的伸缩性需求,这也是我们比较强调,这一套同步服务要能够兼容各种灾难情况和常规的运维场景下各种各样的要求来做到服务的高可用。

    接下来就针对上面这些点一个一个来看。

    2.2 一致性保障

    2.2.1 自动化消息连续性检测

    从上面的架构图我们可以看出来,整个数据链路比较长,它要先把增量数据拿到,写到消息队列里面去;再从消息队列里面消费出来。生产者这一套服务做的事情就是首先要拿到增量数据,二是要正确地把拿到的增量数据准确地投递到消息队列里面,这里面有两个问题:1、如何判断我拿到的消息——本身的增量数据,是对的;2、我如何确定写到消息队列里面,消息队列存的也是对的。

    这就衍生出来两个方式:一是拿到增量消息的时候,我们会根据GTID的特性,检测拿到消息的GTID的连续性,保证拿到这套增量数据的东西一定是准的,比如说GTID上一个拿到的是345,下一个如果拿到的是348,这个时候系统会认为现在拿到这一条GTID跟上一个并不连续,并不连续的情况下我们就要进行容错处理,比如会向主机补偿或者向其他的节点切换补偿等。总结来说,TDSQL在拿增量消息这部分,是具备连续性检测的能力,保证拿到的数据一定是准确、连续的。

    二是系统如何保证写到队列里面的数据一定是准?在写到队列过程中有可能出现重复、乱序等情况,TDSQL多源同步方案采用的策略是——利用Kafka本身在写消息的回调通知的特性,我们在将消息推到Kafka的时候,会给每个消息赋予一个连续递增的序列号,通过Kafka回调的写入消息来确定系统写入的消息是不是有序的。举个例子,我们按[5,6,7,8,9]这样的顺序向Kafka生产一部分消息(写),届时收到的消息回调序号也应该是[5,6,7,8,9];当接收完9号这条消息回调的时候,下一条如果收到的回调序号是12、或者11,那么就会认为从9号往后的消息队列消息不是一个有序的消息,这时系统会重新从9这条序号往后的消息重新上报kafka,最终保证写到消息队列里面的数据是没有空洞并且是连续递增的。这是生产者服务在消息连续性异常检测方面我们提供的两种机制。

    2.2.2 异常自动切换机制

    以上介绍的机制可以保障多源同步、异构迁移中如何检测到错误。那么,检测到错误之后如何处理呢?以下就介绍生产者异常自动切换的机制、切换的条件。

    这里面都以TDSQL的实践为例:获取增量日志必须要在一个合适的TDSQL角色上处理,TDSQL本身是一个一主多备的分布式数据库集群,在选择获取数据库增量日志的角色上我们选择从备机上获取。

    选择一个合适的备机对增量数据获取来说是非常重要的。当获取增量日志的备机的延迟比较大,或者这个备机本身不存活,或者这个冷备发生了迁移(什么是冷备?离主机的距离最近,或者跟主机的差距最小的备机,我们叫它冷备),这个时候系统就会将解析日志生产者的服务切换到另外一个节点,整个切换流程通过MetaCluster服务协调。也就是说当工作的数据库节点本身的状态发生跃迁之后,其他节点生产者服务就会通过MetaCluster来感知到状态的跃迁,并且适当地启动自己的服务——从一台备机状态跃迁到另外一台备机,而跃迁前的备机的生产者服务会停掉,新的备机生产者服务会自动拉起来。这就是它的切换流程——通过MetaCluster进行下发协调。

    切换是基于什么样的触发条件?现在解析到的这台备机本身状态是正常的,比如延迟没问题,存活性也正常,冷备角色一直没有发生变化,但是发现它的binlog不连续。当我们检测到拿到的这套binlog是不连续的时候,就可以认为这里面可能会出现binlog的丢失,这个时候就要发起补偿的操作。怎么补偿呢,通过这个流程给大家介绍一下。

    当系统发现解析到这套GTID不连续了,就会向ZK注册一个节点。举个例子,系统现在已经发现拿到的binlog不连续了,于是注册一个补偿节点,包含着“向主机补偿”这样的信号。当主机检测到有这样一个补偿节点时,会将日志解析的角色接管过来并开始工作。

    接下来,我们如何确定主机从哪里开始解析日志?我们会从Kafka上读取最后一条消息——最后一条消息包含GTID的信息。这时主机就会把这条消息对应的GTID转化成本地的binlog文件名和偏移量开始解析。

    主机的补偿需要持续多长时间?持续一个文件处理的流程。当主机补偿到解析的所在文件结束以后就会退出主机补偿的流程,并将这个角色通过MetaCluster重新下放给备机的生产流服务,而备机的生产流服务接到这个请求以后会重新从Kafka上拉取上一次主机补偿的日志中最后一套消息。如果说找到了对应的GTID,并且往下解析的时候没有发现不连续的情况,这一套补偿流程就算结束,备机会继续在自己的角色上持续地进行增量数据生产。

    如果发现从Kafka拉下来的主机补偿日志最后一条本机找不到,就说明这个主机的补偿不完整,有可能备机缺了两三个文件,这个时候会持续向主机进行补偿,通过注册MetaCluster节点的方式一直重复这个流程,直到主机补偿完成,备机在接管角色的时候能够连续顺利地接着解析,本身的日志才认为这套补偿流程已经完全结束——这就是一个通过不断向主补偿日志的方式来进行异常的切换的流程。

    2.2.3 幂等重放机制

    介绍完生产这套链路之后介绍一下下游的链路——消费,消费的链路中怎么保证数据一致性?首先回顾一下刚刚提到的生产端的数据一致性保障——生产端在实现消息生产的时候实现的是一种at-lease-once的模式进行消息生产,这里面就要求消费服务必须能够确地处理消息重复这个问题,也就是说我们要支持所谓的幂等逻辑。

    支持幂等之后有什么好处?在binlog是连续无空洞的前提下,支持幂等机制的消费服务可以从任意一个时间点重放binlog消息,当重放结束以后目标的数据会达到最终一致,这就是消费链路实现幂等的动机和优势。这个机制实现的难点在于要绝对的可靠——重放一定是要百分百没有问题,准确无误。

    基于这样的要求以及上游数据写到消息队列里面的现状,TDSQL以此为设计的原则,实现保证按照binlog事件本身的意图对目标实例进行修改。什么叫做按照binlog事件的意图去对目标进行修改呢?

    增量数据无非就是三个方面:一是insert的写入,二是更新,三是删除。

    1. insert写入

    在写入的时候我们是如何做到insert事件幂等呢?一个start进来我们要重放insert:

    当它的影响行数大于0,我们就认为这套insert执行成功;如果执行失败,我们认为它可能有一些报错,比如说语法错误或者目标的字段过小,并进行重试的逻辑。

    当影响行数等于0,则判定可能会出现主键冲突——insert失败影响行数为0,这里面唯一的可能就是出现了冲突。出现主键冲突的时候这个时候怎么处理?insert这一条数据发生的时候意图是什么?在insert之前DB里面是没有insert这条数据,而当这条insert发生之后,DB里面是有的——按照本身的意图来做,意味着如果发生了主键冲突或者影响行数等于0的情况,里面存在一个相同的记录,这个时候系统会按照insert本身的值拼一个delete操作。这条delete操作下去后,就能保证在这条insert写入之前,目标里面是没有这条数据的;当我这条delete做完之后,再把这条insert进行插入。这个时候如果影响行数大一点,可认为这条insert被按照本身的意图做完了。其实也就是说,要保证这条insert做的时候,只有当前这一条数据——这就是insert本身的幂等。

    2. 更新

    更新:首先一条update,如果影响行数大于0,可判定这条执行是正常的。如果小于0,则意味着可能出现一些执行错误,比如语法有问题或者字段长度有问题。

    如果它的影响行数等于0,有两种可能:一是没有匹配到——进行update时是按照全字段进行匹配的,这一行改之前和改之后所有的字段都在这条消息里面,原始更新也会按照所有字段来去拼装,没有匹配到则意味着某些字段没有匹配到,这个时候会按主键更新——也就是匹配到这些值可能是全字段,执行更新的操作。

    如果按照主键更新操作,影响行数还是0的话,则可以判定为出现了主键操作的冲突。这个时候系统就会思考一下,这条update它的语义是什么——update的语义是指这条update执行完以后,目标库里面第一个是没有改之前的值,第二个是有且只有改之后的值,所以我们按照这个语义做接下来的操作,按照所有的唯一键去构造一个删除的操作,操作完了以后再按照update里面改后的,构造一条插入操作,将这条插入操作写入目标DB——如果影响行数大于0,实际可认为这条update就是按照它本身的意图对目标实例进行了修改。

    3. 删除

    我们来看一下删除的过程。相对于update来说简单多了。这个过程中,delete结束后大于0就成功;小于0就是失败;等于0的时候我们认为它可能没有匹配到行,这个时候我就按照主键操作——因为删除的操作最终的结果就是目标一定没有了当前删除的消息主键所标识的这一行——这条操作完成后,DB里一定没有这行数据,因此仅仅是按照主键进行删除就可以了。这个时候如果影响行数大于0,则删除成功。如果等于0,就认为按照主键去匹配,本身删除不到,匹配不到——意思是本身目标就没有这条要删的主键所标识的数据——所以实际上它的结果跟要做完删除的结果,影响是一样,也就结束这一条删除的幂等。

    回顾三种类型的时候,我们比较关注这条数据在执行前后的状态,它执行前是什么样的,执行后是什么样的,我们在重放这条消息的时候,严格按照这个来做,insert就是执行前没有这条数据,执行后有这条数据,如果遇到冲突就先删除后insert,update执行后它的结果,一定没有改之前的值,有且只有改之后的值,删除也是一样,目标里面一定没有主键所标识的这一行在目标实例里面,我们按照这个逻辑设置幂等的流程,就是这样的过程。

    2.2.4 跨城数据同步如何规避数据回环

    接下来看一下在跨城数据同步如何规避数据回环。跨城的架构中,本城的一套数据实例会把增量数据写到消息队列,对城会有一个服务从消息队列里面把这个数据拉出来——对城的消息也会落到对城的消息队列,本城有一些消费服务会把这些数据拉过来,也就是说数据具有一个环路。如果不做回环检测和规避,比如插入这一条数据,这条数据的目标又插入了,并且也落了一个日志,做了这个日志又写回来,这相当于同一个主键的数据来来回回在写,这样会把数据写脏。

    我们是如何来规避跨城数据同步的回环,以及对它进行检测的?TDSQL结合DB内核的改造,通过SERVERID来规避数据在跨城双活数据同步架构里面的回环问题。

    假如说左右两端是两个DB,这两个DB对应的SERVER ID不一样:一个是23243,一个是43423。现在有一条叫做insert的数据写入目标,写入目标之后会设置当前这个SERVER ID跟原来的SERVER ID一样——23243的ID。这条insert落到DB里面,会记录成它的对应日志的SERVER ID 23243,而不是记录它本身备城的43423的ID。

    当消费服务拿到增量日志——拿到的这条日志所对应的SERVER ID跟目标DB的SERVER ID是一样时,则认为拿到这条日志一定是目标写过来的日志,然后执行跳过的操作。只有当拿到的这条日志对应的SERVER ID跟目标的SERVER ID不匹配的时候,才会把这条数据写到目标里面去。这样一来,才能保证只有是真正业务访问到源端的DB,并落下来的那条日志,才会被成功写入到目标上——这就形成一个通过SERVER ID将环路里面的数据过滤的机制。

    2.3高性能保障

    2.3.1 有序消息并发重放

    现在介绍一下关于高性能的优化实现。

    MySQL本身在落日志的时候是有序的消息,就是说binlog是有序的。如果按照binlog的数据来重放,是没有问题的——按照一个事务一个事务进行串行解析。但这会带来一个问题——就是慢。

    对于这个问题,TDSQL想办法对有序消息进行并发重放来提升数据同步的效率。采取通过基于row格式binlog日志的hash并发策略来实现。

    这个hash策略就是根据表名和主键来做:首先从消息队列拿到数据之后,系统会进行派发,派发过程中根据消息里面的主键和表名进行hash,将消息hash到不同的工作队列。

    这样的hash策略有一个什么样的结果?相同表的同一行操作的序列一定会被划分在同一个工作现场,只要保证对某一张表其中固定一行的操作是串行有序的,就认为这套数据在并发重放结束之后数据是最终一致的。

    总结而言,TDSQL多源同步并发策略就是按照主键和表名进行hash,保证每一个表里面的固定一行的操作序列在同一个工作队列里面串行化。并发的数据同步和串行数据同步区别就是一致性的问题,可以看到这种并发策略相当于把事务打散。这里面并发重放的时候就会产生事务一致性的问题,有可能会非常小的几率读到中间状态,在数据同步速率有保障的情况下说不会出现这种问题的。如果说这个业务本身对事务一致性要求非常严格——当然我们现在还没有碰到这样的场景。这就是一个有序消息的并发重放。

    2.3.2 有序消息并发解析

    以上是消费端性能优化的过程,首先就是要写得更快,通过各种优化把hash并发到多个现场去写。那么写完之后,消费端的性能瓶颈在哪里?在解析上。

    大家如果有印象的话,我们写到Kafka里面的数据是中间格式——json格式。json格式需要一个解析过程。当我们解决了重放性能瓶颈之后,原始的消息包拿到后解析的过程又变成性能优化的瓶颈。针对这个问题TDSQL同样做了有序消息的并发解析优化。

    并发解析的策略就是,维持一个线程池。从Kafka上拉下来的这条消息,本身是一个原始没有解析的包,当拉下来这条消息包时会从这个池子里面捞一个空闲队列,并把这个包给空闲的线程,这个线程拿到这个包以后就开始解析,当它拿到包这一刻就会进入到另外一个busy队列里面。它在忙队列里面会不停地解析拿到的这些原始消息,解析完之后会有一个协调线程,从忙队列面不断把解析线程摘出来唤醒,把解析后的消息再并发地分往后面的工作线程。源源不断从Kafka拉消息,拉完之后就把这些没有解析的消息分给一组线程去解析,这一组线程在解析的时候——虽然解析是并发的,但在被唤醒派发的时候有一个出队的操作——也就是派发是按照顺序派发——这就做到有序消息的并发解析:通过一个忙队列、一个闲暇队列,两个协调线程把整个流程串起来,这样基本解决了在json解析上的瓶颈。

    2.4 高可用保障:多机容灾保护

    2.4.1 多机容灾保护

    现在介绍一下消费者高可用保障。消费者服务本身无状态,所有的任务下发通过MetaCluster实现,可以通过多台机器去部署同步服务,这套容灾机制通过manager进程来实现,也就是说当整个机器掉电,运营这个机器的consumer已经不存活,这个时候这些consumer在MetaCluster上的存活节点的失效就会被其他机器的manager节点感知——认为另外一些机器的consumer已经不存活,这个时候就会把任务接管过来,并且在自己机器上重新拉起这些服务。

    二是我们要做到同一个数据同步的链路不能在两台机器上同时拉起,这是一个互斥的要求。高可用机制会通过一些像唯一标识或者当前的分派节点做到,同一个数据同步的任务在被拉起的时候一定是发生在不同的机器上来实现漂移与互斥的操作,这个多机容灾保护总体上就是通过MetaCluster和监控的进程,比如说manager这样的服务进行协调完成,保证在机器级别灾难或者其他灾难情况下这些任务能够在十秒以内成功迁移到其他的存活节点上。

    2.4.2 扩容场景的高可用设计

    可用性一方面在灾难情况下需要保证服务可用,另一方面则是在扩容等数据库常规运营场景下保证这个数据同步有效且不会中断。

    首先来说一下为什么在扩容的场景下,有可能造成数据同步异常?以垂直扩容来说,是相当于重新买了一套实例,然后经过数据的搬迁来实现数据同步的。这个时候我们是通过TOPIC唯一性来保证服务可用。扩容中从一个实例迁移到另外一个实例的时候,两个实例之间关系是什么?它们会往同一个Kafka上TOPIC去打增量数据。新实例打增量数据的起始点是什么?生产者在工作的时候会从Kafka上拿起始点,上一个服务结束的位置就是这个服务开始的位置。

    关于水平扩容,则是新扩出一个set来,然后建立数据同步,对重复的分区进行切割和删除。如果现在有两套分布式实例进行数据同步,比如源端有一个分布式实例,这里面对应会有两个同步任务写到目标上,如果对其中一个分片进行水平拆分之后,就会拆出另外一个实例来,这个实例在拆分中有一个数据同步的过程,这个过程会产生问题——在set 3 binlog里面,会有一些set2上写的数据,并且SERVER ID跟set 2一样,如果单纯对set 3新扩出来的分片创建一个数据同步任务,将数据写到目标上的话,我们认为这里面可能会把SET2已经写进去的部分数据重复。这个TDSQL的数据同步服务针对水平扩容的这个场景也是实现了高可用保障,比如我们会针对扩容前的SERVER ID进行过滤,过滤水平扩容前set的原实例的SERVERID,这个跟跨城的回环操作是比较类似的。通过这样的方式,来保证新创建出来的这部分增量数据开始往目标上写的时候,一定是这套扩容流程已经结束了,并且是有真的业务数据写到新扩的分片上来,不会出现同样的数据反复写两遍的情况。

    3 TDSQL 多源同步金融级应用场景和最佳实践

    上面我们解释了这个模块的特性、难点、解决的方式,现在介绍这些应用场景以及案例,包括TDSQL在多个客户场景中的最佳实践。

    3.1 实现业务验证

    关于实现业务的验证,比如可以对两个DB进行实时的数据同步。新的业务系统升级时,不可能直接把新的业务系统放到老的DB上直接跑,这时可以把新的业务系统先落到新的DB上做相关业务验证,或者在异构数据库的DB层变更上,把数据先同步到新的DB上来做业务上新老系统并行跑的验证——一方面是保证了原先业务系统的安全性,另一方面也可以让业务切割更加方便,因为数据已经实时同步了。

    3.2 实现业务灰度

    二是业务的灰度,以张家港农商银行的实践为例,在核心系统上线的过程中,我们把数据通过主键同步到TDSQL或者Oracle上,主库如果发生了一些比较小概率的灾难性实践,这时可以将这个业务系统迅速地切入到备库上,可以是TDSQL也可以是PG、Oracle,相当于是实时的数据备份来形成备份的DB,走备库上把这些业务拉起来在备份的DB上跑起来。

    3.3 实现业务割接

    三是在实现分布式改造、进行业务割接过程中,可以将单实例的操作同步到分布式的实例上——这个过程先将数据通过多源同步组件同步到分布式的实例上,之后将业务的流量逐渐地从单实例往分布式实例上切,同时在分布式实例上也可以去相关业务验证,这也是我们的应用场景。

    3.4 金融级最佳案例实践

    我们可以通过多源同步对业务进行分布式的改造,将数据直接通过实时的同步将单实例往分布式的架构上迁移。比如说保险客户通过多个分库、多个分片区或者多个单的业务、逻辑上的划分,把这些数据通过TDSQL这套服务同步到存量库里面。

    我们在云上也有一些客户。公有云上,TDSQL的实例是通过公网实时写入自建的IDC里面,不管是Oracle还是TDSQL——写到Oracle我们也支持,我们可以直接把MySQL的DDL转换成Oracle可以兼容的DDL,实现云上的生产业务在跑的同时,本身之前IDC离线业务的老旧业务系统也可以在自建IDC的老实例上运行。

    在张家港行实践中,核心交易集群是TDSQL,我们数据同步通过内部的局域网,将存量和增量数据,写入到备份机房,同时也通过全量的数据校验服务保证数据源、目标是完全一致的来做风险控制。当核心交易系统如果出现一些小概率不可恢复的灾难时候,系统可以在短时间内将交易的服务全部切换到备份机房的Oracle上。

    四 总结

    以上介绍TDSQL对外分发解耦,数据分发、迁移、同步的能力,承载这部分能力的模块叫做多源同步模块,在应对金融级别或者金融场景客户的对外解耦、迁移的需求时候,所衍生出来的,高一致、高性能、高可用这“三高”的特性,并且介绍了针对这些特性我们是如何通过技术手段来实现的。

    Q&A

    Q:全量检测的效率怎么样?

    A:单表的话全量校验一分钟可以校验5个G的数据,但是表和表之间本身是可以并发,也就是说单表一分钟5个G,但是可以多个表并发去跑,这个上限就是机器本身的上限,比如说网卡。这套全量校验也是通过主键去把数据值拉出来走内存去做MD5。这套效率目前来看还可以,但是校验速度也不适宜过快,本身它去拉取数据时候对数据库也是有一些影响的,我们本身做校验的时候也会在业务低峰或者晚上去做。

    Q:如何实现抽取binlog到Kafka不丢事务?

    A:这就是前面介绍的,系统去做GTID连续性检测,我们知道在记录binlog的时候,GTID一定是连续的,如果不连续则可判定认为它丢了,继而会到主机上补偿。就是通过这样的方式保证我们拿到的数据一定是没问题的。

    Q:DDL同步吗?

    A:DDL同步。因为DDL同步是会进行一次语法解析,解析出来相关的操作的,比如要改的哪些表、哪些字段,哪些类型需要改,针对目标的不同类型去做类型的转换,将这个DDL重放到目标上。

    Q:原抽取和目标回放支持按条件抽取、按条件回放吗?

    A:抽取我们支持按白名单去抽。为什么要支持白名单抽?我们原先的策略是全量上报到Kafka,有的时候会带来一些问题,比如说业务去清理一些历史的表,比如说一些流水的大表可能去做日志的删除等等,会批量去做一些操作,这个时候会产生一些疯狂往Kafka上打一些业务并不关心、同步并不关心的数据,这个时候我们也支持源端配白名单的方式,我抽取哪些库表的数据。目标重放更灵活一些,目标重放的时候是通过一个同步规则去配,同步规则本身支持精确匹配,同时也支持政策匹配。精确匹配就是一个表同步到另外一个表,精确匹配支持表名的变换,比如说我在原实例上表名是A表,同步到B实例上表名是B表,这里面强调的是表名可以不一样,但是它的表结构是要一样的。也支持我可以匹配源端多个表同步到目标的一张表里面,也可以支持汇总的方式,就是表名在映射这一块也是比较灵活的。

    以上是今天的提问解答。谢谢大家。

    TDSQL是腾讯TEG数据库工作组三大产品系之一,在国产数据库领域屡次率先突破,包括助力微众银行搭建首个全行级互联网银行核心系统,以及助力张家港农商行实现传统核心系统数据库首次国产化等。目前,TDSQL已广泛应用于金融、政务、物联网、智慧零售等行业,拥有大量分布式数据库最佳实践。

    推荐阅读:

    腾讯技术沙龙 | 快手春节红包:高并发存储架构设计

    亿级流量场景下的平滑扩容:TDSQL的水平扩容方案实践

    流量洪峰成为常态,腾讯数据库如何高性能支撑海量SQL查询?

    展开全文
  • 多源异构”和“异构同源”定义区分详解 一、多源异构 1、定义 2、示例解释 二、异构同源 1、定义 2、示例解释 三、综合举个简单栗子: 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力...
  • 在算法架构上,微信识图主要由三大核心步骤组成,即为主体检测+子类目预测+子类目细粒度同款检索,开发一个高性能的检测器对于前两个步骤至关重要,本文将主要介绍我们针对微信识图场景的数据多源异构特性而打造的...
  • 多源异构大数据PPT.ppt

    2020-10-21 01:22:24
    该PPT为电子科技大学大数据研究中心计算机科学与...基于海量数据分析决策的近传感器计算将成为未来战争的典型形态 大数据摧毁暴力恐怖 阿富汗反恐战争中针对每股恐怖分子的全方位情报侦监系统每天产生数据量平均达到
  • 在了解和掌握SOAP协议、Java基本技术的前提下,通过Web Service应用程序,对集团企业分公司的异构数据进行集合和共享,查询等功能的开发。
  • 当前, 电网中含有海量的多源信息数据, 但是由于数据体量大、种类多、维度... 本文以某区域电网数据库为算例进行模拟验证, 结果表明: 该方法可以实现配电网的多源异构信息提取, 有效避免重复数据, 满足在线工程决策要求.
  • 遥感数据源极大丰富,影像文件格式多样,组织方式也较复杂,如何采用统一的接口实现异构多源海量遥感数据的存储是一大难题。本文以多源遥感数据的存储为研究对象,在研究Oracle GeoRaster数据模型的基础上,设计了扩展的...
  • 多模态学习方法综述(期刊论文)

    千次阅读 2020-10-10 14:47:06
    期刊:工程科学学报引用:陈鹏,李擎,张德政,杨宇航,蔡铮,陆子怡.多模态学习方法综述[J/OL]...研究多模态 学习方法,赋予计算机理解多源异构海量数据的能力具有重要价值。本文归纳了多模态的定义与多模态学习的基本任 务
  • 数据管理模块支持多源异构海量数据接入,面向AI的数据预处理、特征工程及数据标注工具,为学习和训练提供有力的支撑。开发环境秒级为用户创建个性化的开发环境,融合Tensorflow,Pytorch,Keras ,MxNet,Caffe等多...
  • 基于大数据的多源信息集成的土地利用数据仓库框架体系研究,周豹,杨莉,本文以海量的、异构的、多源的土地利用数据在国土资源管理中的应用为研究背景,结合数据仓库在大数据管理中优势,给出了大数据环
  • 点击上方蓝字关注我们基于多源城市交通出行数据的定制公交需求辨识方法研究陈汐1,王印海2,代壮3,马晓磊41北京航空航天大学交通科学与工程学院,北京 1001912美国华盛顿大学...
  • 摘要:华为开发者大会2021(Cloud)大会期间,华为云FusionInsight MRS云原生数据湖HetuEngine架构师武文博,分享了“跨湖跨仓场景下如何实现海量数据分钟级分析”主题。
  • 摘 要:【目的/意义】针对现有集装箱运价指数编制中信息源不足、信息及时性不够等问题,...【结果/结论】实证结果显示,本文提出的数据模型和信息处理流程能有效的实现多源异构信息的集成,支持基于海量数据对的指数
  • 用友数据中台围绕数据从采集、存储、计算、分析、共享的端到端数据应用周期,从基于数据的业务创新出发,满足对数据的应用需求,提供海量多源异构数据整合、实时数据计算与发布、统一通道数据调用与分析能力,具备...
  • Model 3D Data&SDK 关于 Version 1.0.0 M3D (Model 3D Data) 是一种开放式、可扩展的三维数据格式,为海量多源异构空间三维模型数据在不同终端之间的传输...具备海量数据高效绘制的能力:支持LOD、批次绘制、实例化等技
  • 针对矿山多源异构海量数据,提出了构建矿山应急服务空间数据集成平台。该平台的构建可使煤矿企业在事故发生的灾前监测和灾后救援中快速获取矿山区域内各类空间信息;并将这些实时关联信息以可视化的图形、图像方式...
  • 摘要:随着物联网、大数据等IT技术的快速发展, 产生了大量多源异构数据, 但这些数据往往是各自为政、孤立存在, 数据中蕴藏的知识和价值不能得到有效释放。首先分析了工业大数据的现状和特性, 针对大数据时代的数据...
  • 随着煤矿智能化技术深度推进,其数据量级及类型均呈爆炸式增长,利用大数据技术针对煤矿多源海量数据进行集成分析与数据价值挖掘,实现动态诊断与辅助决策,成为煤矿智能化的关键。煤矿大数据平台向下实现多源异构...
  • 提出了通过对全网海量多源异构数据的全局分析,实现信息网络安全风险与态势的实时感知。该平台对于提升信息系统运行和安全管理水平、及时预警信息风险向电力系统传播扩散等方面具有重要的研究意义和应用价值。
  • 用友数据中台围绕数据从采集、存储、计算、分析、共享的端到端数据应用周期,基于数据的业务创新出发,满足对数据的应用需求,提供海量多源异构数据整合、实时数据计算与发布、统一通道数据调用与分析能力,具备高可...
  • 是指通过企业内外部多源异构数据采集、治理、建模、分析,应用,使数据对内优化管理提高业务,对外可以数据合作价值释放,成为企业数据资产管理中枢。数据中台是一套可持续“让企业的数据用起来”的机制,一种战略...
  • 物联网数据的储存

    千次阅读 2020-03-24 15:00:59
    多源异构数据的表达需要细致考虑 2.支持多粒度分级存储和检索,改善资源利用率,提高资源获取率 3.具有实时性的多维检测 4.冗余数据需要压缩 开放兼容 动态扩展 可靠高效 安全可信 关系型数据库 概念 域(Domain) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,597
精华内容 638
关键字:

多源异构海量数据