关于数据管理:数据管理业务数据清洗落地实现方案

50次阅读

共计 2817 个字符,预计需要花费 8 分钟才能阅读完成。

一、业务背景

在零碎业务开发的过程中,都会面临这样一个问题:面对业务的疾速扩大,很多版本在过后没有工夫去全局思考,导致很多业务数据存储和治理并不标准,例如常见的问题:

  • 地址采取输出的形式,而非三级联动;
  • 没有对立治理数据字典获取接口;
  • 数据存储的地位和结构设计不合理;
  • 不同服务的数据库之间存在同步通道;

而剖析业务通常都是要面对全局数据,如果呈现大量的上述情况,就会导致数据在应用的时候难度十分大,随之也会带来很多问题:数据扩散不标准,导致响应性能差,稳定性低,同时进步治理老本。

当随着业务倒退,数据的积淀越来越多,应用的难度就会陡增,会导致在数据分析之前,须要大量工夫去荡涤数据。

二、数据荡涤概述

1、根本计划

核心思想:

  • 读 - 洗 - 写入业务库继续服务;
  • 读 - 洗 - 写入档案数据资产库;

业务数据荡涤实质上了解起来并不难,即读取待荡涤的数据源,通过荡涤服务规范化解决后,再把数据放到指定的数据源,然而实际操作起来相对叫人眼花撩到。

2、容器迁徙

数据存储的形式自身就是多种抉择,荡涤数据要面对的第一个问题就是:数据容器的迁徙;

  • 读数据源:文件、缓存、数据库等;
  • 长期容器:荡涤过程存储节点数据;
  • 写数据源:荡涤后数据注入的容器;

所以荡涤数据的第一步就是明确整个流程下要适配多少数据源,做好服务的根底功能设计与架构,这是撑持荡涤服务的根底;

3、结构化治理

读取的荡涤数据可能并不是基于库表治理的结构化数据,或者在数据处理过程中在两头长期容器存储时,为了不便下次操作取到数据,都须要对数据做简略的构造治理;

例如:通常读取文件的服务性能是很差,当数据读取之后在荡涤的过程中,一旦流程中断,可能须要对数据从新读取,此时如果再次读取文件是不合理的,文件中数据一旦读取进去,应该转换成简略的构造存储在长期容器中,不便再次获取,防止重温解决文件的 IO 流;

常见数据结构治理的几个业务场景:

  • 数据容器更换,须要重组构造;
  • 脏数据结构删除或者多字段合并;
  • 文件数据 (Json、Xml 等) 转构造;

留神:这里的构造治理可能不是单纯的库表构造,也可能是基于库表存储的 JSON 构造或者其余,次要为了不便荡涤流程的应用,以至最终数据的写入。

4、标准化内容

标准化内容则是数据荡涤服务中的一些基本准则,或者一些业务中的标准,这块齐全依据需要来确定,也波及到荡涤数据的一些根本办法;

于业务自身的需要而言,可能常见几个荡涤策略如下:

  • 基于字典对立治理 :例如常见的地址输出,如果值 浦东新区 XX 路 XX 区 ,这样要荡涤为 上海市 - 浦东新区 -XX 路 XX 区,省市区这种地区必定是要基于字典形式治理的表,事实上在零碎中很多字段属性都是要基于字典去治理值的边界和标准,这样解决之后有利于数据的应用、搜寻、剖析等;
  • 数据分析档案化:例如在某个业务模块须要用户实名认证,如果认证胜利,基于手机号 + 身份证所读取到的用户信息则是变动极小,特地是基于身份证号合成进去的相干数据,这些数据则能够作为用户档案数据,做数据资产化治理;
  • 业务数据结构重组:通常剖析都会基于全局数据来解决,这就波及到数据分分合合的治理,这样可能须要对局部数据结构做搬运,或者不同业务场景下的数据结构做合并,这样整体剖析,更容易捕捉有价值的信息数据;

然对于数据荡涤自身来说,也是有一些根本策略:

  • 数据根底构造的增、删、合并等;
  • 数据类型的转变,或者长度解决;
  • 数据分析中数值转换、缺失数据补救或抛弃;
  • 数据值自身的规范化解决,修复等;
  • 对立字符串、日期、工夫戳等格局;

在数据荡涤的策略中并没有一个标准化的标准,这齐全取决数据荡涤后的业务需要,例如数据品质差,重大缺失的话可能间接抛弃,也可能基于多种策略做补救,这齐全取决于后果数据的利用场景。

三、服务架构

1、根底设计

通常在数据荡涤的服务中,会围绕数据的读 - 洗 - 写根本链路来做架构,各个场景自身并没有过于简单的逻辑:

数据源读取

数据源读取两面对两个关键问题之一:适配,不同的存储形式,要开发不同的读取机制;

  • 数据库:MySQL、Oracle 等;
  • 文件型:XML、CSV、Excel 等;
  • 中间件:Redis、ES 索引等;

另一个关键问题就是数据读取规定:波及读取速度,大小,先后等;

  • 如果数据文件过大可能要做切割;
  • 数据间如果存在时序性,要分先后读取;
  • 依据荡涤服务解决能力,测评读取大小;

2、服务间交互

事实上服务间如何交互,如何治理数据在整个荡涤链路上的流动规定,须要依据不同服务角色的吞吐量去考量,根本交互逻辑为两个:直调、异步;

  • 直调:如果各服务节点解决能力雷同,采纳直调形式即可,这种形式流程比较简单,并且能够第一工夫捕捉异样,做相应的弥补解决,但实际上荡涤服务要解决的规定十分多,天然要耗时很多;
  • 异步:每个服务间做解耦,通过异步的形式推动各个节点服务执行,例如数据读取之后,异步调用荡涤服务,当数据荡涤实现后,在异步调用数据写入服务,同时告诉数据读服务再次读取数据,这样各个服务的资源有开释的空隙,升高服务压力,为了提高效率能够在不同服务做一些预处理,这样的流程设计尽管更正当,然而复杂度偏高。

数据的荡涤是一个粗疏且消耗精力的活,要依据不同需要,对服务做继续优化和通用性能的积淀。

3、流程化治理

对数据荡涤链路做一个流程治理非常有必要,通常要从两个方面思考:节点状态、节点数据;

荡涤节点:这是重点记录的节点,如果荡涤规定过多,分批解决的话,对于每个要害流程解决胜利后的数据和状态做记录尤其重要;

读写节点:依据数据源类型选择性存储,例如文件类型;

转发节点:记录转发状态,常见胜利或者失败状态;

对于要害节点后果记录,能够在荡涤链路失败的时候疾速执行重试机制,哪个节点出现异常,能够疾速构建从新执行的数据,例如读取文件 A 的数据,然而荡涤过程失败,那么能够基于读节点的数据记录疾速重试;

如果数据量过大,能够对解决胜利的数据进行周期性删除,或者间接在数据写胜利之后间接告诉删除,升高保护荡涤链路自身对资源的适度占用。

4、工具化积淀

在数据荡涤的链路中,能够对一些工具型代码做继续积淀和扩大:

  • 数据源适配,罕用库和文件类型;
  • 文件切割,对大文件的解决;
  • 非结构化数据转结构化表数据;
  • 数据类型转换和校验机制;
  • 并发模式设计,多线程解决;
  • 荡涤规定策略配置,字典数据管理;

数据荡涤的业务和规定很难一概而论,然而对荡涤服务的架构设计,和链路中工具的封装积淀是很有必要的,从而能够集中工夫和精力解决业务自身,这样面对不同的业务场景,能够更加的疾速和高效。

5、链路测试

数据荡涤的链路是比拟长的,所以对链路的测试很有必要,基本上从两个极其状况测试即可:

  • 缺失:非必要数据之外全副缺失;
  • 残缺:所有数据属性的值全存在;

这两个场景为了验证荡涤链路的可用性和准确性,升高异样产生的可能性。

浏览标签

【Java 根底】【设计模式】【构造与算法】【Linux 零碎】【数据库】

【分布式架构】【微服务】【大数据组件】【SpringBoot 进阶】【Spring&Boot 根底】

【数据分析】【技术导图】【职场】

正文完
 0