第6章:数据工程
数据工程是信息系统的基石,它贯穿数据的整个生命周期——从采集、存储、治理到分析应用,为信息系统提供可靠的数据基础,并保障数据共享的安全高效。可以把它想象成一条“数据生产线”:先获取原材料(采集),然后清洗整理(预处理),存入仓库(存储管理),再按需加工(治理建模),最终制成产品供人使用(分析应用)。
6.1 数据采集和预处理
数据的质量决定了数据价值的上限。采集到高质量的数据,并对其进行必要的预处理,是数据工程的起点。
6.1.1 数据采集
数据采集就是根据需要收集数据的过程。数据类型包括:
- 结构化数据:像表格一样规整,例如关系数据库中的表。
- 半结构化数据:有一定结构但不严格,比如日志文件、XML文档、电子邮件。
- 非结构化数据:没有固定格式,如办公文档、图片、音频、视频等。
采集方法主要有四种:
- 传感器采集:通过传感器感知物理世界的信息并转换为电信号,比如温度传感器、GPS、摄像头等。
- 系统日志采集:读取服务器、应用等产生的日志文件(如Logstash、Flume等工具)。日志就像系统的“黑匣子”,记录着一切活动。
- 网络采集:通过API接口或网络爬虫从互联网抓取数据。爬虫就像一只自动浏览网页的“蜘蛛”,按照规则提取所需信息。
- 其他方式:例如与数据服务商合作购买数据。
6.1.2 数据预处理
预处理是为了让数据变得干净、规范。流程包括三个步骤(如图6-1):
- 数据分析:先摸清数据的“脾气”,找出控制规则,比如字段取值范围、业务逻辑。
- 数据检测:根据规则检查数据是否有问题(如缺失、异常、重复)。
- 数据修正:手工或自动修正错误数据。
6.1.3 数据预处理方法
不同的问题采用不同的处理方法:
| 问题类型 | 常用方法 | 解释 |
|---|---|---|
| 缺失数据 | 删除缺失值、均值填补、热卡填补 | 像填空一样,要么整行删掉,要么用周围的值补上 |
| 异常数据 | 分箱法、回归法 | 把数据放进“箱子”里平滑处理,或用函数拟合消除噪声 |
| 不一致数据 | 人工修改、ETL工具转换 | 纠正逻辑矛盾,如年龄与生日不符 |
| 重复数据 | Excel、Python等去重 | 删掉重复记录,节省存储 |
| 格式不符 | 统一格式转换 | 把各种乱七八糟的格式统一成标准样式 |
6.2 数据存储及管理
经过预处理的数据是宝贵的数字资产,需要妥善存储和管理。
6.2.1 数据存储
存储包括介质和形式两个方面。
存储介质(表6-1):
- 磁带:成本低、容量大,但速度慢,适合归档。
- 光盘:只读、不受电磁干扰,适合永久备份。
- 磁盘:通过RAID技术组合多个磁盘,提高性能和安全性。
- 内存:速度极快,但断电数据丢失。
- 闪存:介于内存和磁盘之间,如固态硬盘。
- 云存储:通过网络访问的异地存储,可扩展性强。
存储形式(表6-2):
- 文件存储:分层目录结构,就像电脑里的文件夹。
- 块存储:将数据分成固定大小的块,每个块有唯一标识,适合高性能计算。
- 对象存储:把数据和元数据打包成对象,适合海量非结构化数据(如图片、视频)。
存储管理(表6-3)包括:
- 资源调度:动态分配存储节点。
- 资源监控:监控硬件状态、性能。
- 负载均衡:避免某些节点过忙。
- 安全管理:防攻击、防数据泄露。
6.2.2 数据归档
将不常访问的“冷数据”从高性能存储迁移到低成本存储(如磁带),释放空间。注意:
- 在业务低峰期执行,以免影响线上业务。
- 归档后原数据被删除,可能产生“数据空洞”,需后续填充。
- 一旦影响业务,立即停止并排查问题。
6.2.3 数据备份
备份是为了防止数据丢失,将数据复制到其他介质。
备份结构(表6-4):
- DAS:备份设备直连服务器,适合小规模环境。
- 基于LAN:通过局域网共享备份设备,方便集中管理,但占用网络带宽。
- LAN-FREE:备份数据走专用存储网络(SAN),业务数据走局域网,互不干扰。
- SERVER-FREE:不经过应用服务器,由第三方代理直接传输,性能最好。
备份策略(图6-2):
- 完全备份:每次都全量备份,恢复简单但费时费空间。
- 差分备份:只备份自上次完全备份以来变化的数据,恢复需要完全+最后一次差分。
- 增量备份:只备份自上次备份(无论哪种)以来变化的数据,最省空间,但恢复时需要依次恢复所有增量,风险较高。
6.2.4 数据容灾
容灾是在灾难发生时能快速恢复系统。两个关键指标:
- RPO(恢复点目标):允许丢失多少数据(时间维度)。
- RTO(恢复时间目标):需要多长时间恢复。
关键技术:
- 远程镜像:将数据同步复制到异地,主备镜像实时或准实时更新。
- 快照:数据在某个时间点的“照片”,可用来快速恢复或用于测试分析。
6.3 数据治理和建模
数据治理是对数据资产进行管控,确保数据可用、可信、可管。
6.3.1 元数据
元数据是“关于数据的数据”,就像图书馆的卡片目录,描述数据的来源、格式、质量、所有者等。元数据体系(图6-3)从底层到高层包括:原始数据描述、数据字典、元元数据等。
元数据的作用(表6-5):
- 描述:让用户理解数据含义。
- 资源发现:帮助快速检索到所需数据。
- 组织管理:按主题组织数据资源。
- 互操作性:不同系统之间能交换和理解数据。
- 归档保存:记录数据的来源和变化,便于长期保存。
6.3.2 数据标准化
让数据“说同一种语言”,包括:
- 元数据标准化:统一描述方式。
- 数据元标准化:定义数据的基本单元(如“姓名”的格式)。
- 数据模式标准化:统一数据结构。
- 数据分类与编码标准化:为数据分类并赋予统一代码。
标准化过程分四步:确定数据需求 → 制定数据标准 → 批准数据标准 → 实施数据标准。
6.3.3 数据质量
数据质量衡量指标:完整性、规范性、一致性、准确性、唯一性、及时性。
质量评价过程(图6-4):
- 确定数据质量元素(如完整性)。
- 确定评价方法(直接对比或间接推断)。
- 执行评价并报告结果。
质量控制分为前期(录入前和录入中)和后期(入库后检测)。
6.3.4 数据模型
数据模型是现实世界的抽象,分为三层:
- 概念模型(表6-6):面向用户,描述实体、属性、关系,如E-R图。
- 逻辑模型(表6-7):在概念模型基础上细化,用关系、视图等表示,如关系模型。
- 物理模型:在逻辑模型基础上考虑具体数据库技术,如表、索引、存储过程等。
6.3.5 数据建模
建模过程:
- 数据需求分析:了解用户需要什么数据,用数据流图描述。
- 概念模型设计:抽象出实体和关系。
- 逻辑模型设计:转换为关系模式。
- 物理模型设计:实现为数据库表、索引等。
6.4 数据仓库和数据资产
6.4.1 数据仓库
数据仓库是一个面向主题、集成、稳定、随时间变化的数据集合,用于支持决策。它由四部分组成:
- 数据源:内部业务数据、外部数据。
- 数据存储与管理:核心,按主题组织数据。
- OLAP服务器:多维分析,支持快速查询。
- 前端工具:报表、分析、挖掘工具。
6.4.2 主题库
主题库是围绕特定主题(如人口、企业)构建的数据集合,便于快速反映该主题全貌。采用三层结构:
- 数据源层:原始数据。
- 构件层:基础构件和组合构件,用于数据交互和维护。
- 主题库层:按业务需求组合成统一接口的主题库。
6.4.3 数据资产管理
数据资产管理是对数据资产进行规划、控制和增值。包括两个核心环节:
- 数据资源化:通过治理将原始数据变为有序的数据资源。
- 数据资产化:将资源转化为可计量、可交易的数据资产。
之后还有:
- 数据资产流通:通过共享、开放、交易实现价值。
- 数据资产运营:持续跟踪和优化数据服务。
- 数据价值评估:计量数据的经济效益和业务效益。
6.4.4 数据资源编目
编目就像给数据建立“户口本”,便于管理、查找和共享。包括:
- 数据资源目录:分为资源目录(原始数据)、资产目录(处理后数据)、服务目录(对外提供的数据服务)。
- 信息项:元数据的流水账,包括资源信息项、资产信息项、服务信息项。
- 数据资源库:物理存储,分专题库、主题库、基础库。
- 标准规范:元数据、编码、分类等标准。
6.5 数据分析及应用
6.5.1 数据集成
将分散在不同数据源的数据整合起来,提供统一视图。常用方法:
- 模式集成:构建全局模式,用户查询时实时转换。
- 复制集成:将数据复制到统一位置,提高查询性能。
- 混合集成:两者结合。
数据访问接口标准:
- ODBC:Windows平台通用的数据库接口。
- JDBC:Java语言的数据库接口。
- OLE DB:基于COM的数据访问组件。
- ADO:应用层的数据访问接口,简单易用。
Web Services技术:通过WSDL、SOAP、UDDI实现跨平台服务调用和数据集成。
- WSDL:描述Web服务的“说明书”。
- SOAP:消息传递协议,基于XML。
- UDDI:服务注册中心,用于发布和查找服务。
数据网格技术:实现分布式、异构数据的透明访问,用户感觉不到数据的位置和异构性。
6.5.2 数据挖掘
从大量数据中自动发现隐含的、有用的知识。它与传统数据分析的区别:
- 数据量更大
- 方法更综合(统计、AI、可视化)
- 更注重预测和发现
- 部分方法仍处于发展阶段
主要任务:
- 数据总结:浓缩数据,如计算平均值、方差。
- 关联分析:发现数据间的关联规则(如“买尿布的顾客也买啤酒”)。
- 分类和预测:根据已有数据建立分类模型,预测新数据类别。
- 聚类分析:将数据分成相似的组,无预先定义类别。
- 孤立点分析:找出与众不同的异常数据,可能代表欺诈或故障。
挖掘流程(图6-7):确定分析对象 → 数据准备 → 数据挖掘 → 结果评估 → 结果应用。
6.5.3 数据服务
为用户提供数据访问功能:
- 数据目录服务:类似搜索引擎,帮助用户发现数据。
- 数据查询与浏览及下载服务:通过关键字检索,下载数据集。
- 数据分发服务:将数据从生产者传送到用户,包括发布、发现、评价。
6.5.4 数据可视化
将数据转换成图形,直观展示信息。常见表现方式(表6-8):
- 一维:文本、数字列表。
- 二维:地图、平面图。
- 三维:立体模型。
- 多维:通过降维技术展示三维以上数据。
- 时态:随时间变化的图表,如股票走势。
- 层次:树形结构,如组织结构图。
- 网络:节点和连接关系,如社交网络图。
6.6 数据脱敏和分类分级
6.6.1 数据脱敏
对敏感数据进行模糊化处理,保护隐私的同时保留数据可用性。
敏感数据包括个人隐私(姓名、身份证)、商业机密、国家秘密等。可划分为L1~L5五个密级。
脱敏方式:
- 可恢复:通过加密/解密还原,如加密算法。
- 不可恢复:替换或生成,无法还原。
脱敏原则:
- 算法不可逆:不能从脱敏数据反推原始数据。
- 保持数据特征:脱敏后仍保留原始数据的分布、格式等特征。
- 保留引用完整性:主键和外键关系不变。
- 规避融合风险:多个非敏感字段组合可能推导出敏感信息,需一并处理。
- 自动化:脱敏过程自动执行。
- 结果可重复:同一数据多次脱敏结果一致(或可控的不一致)。
6.6.2 数据分类
按属性或特征将数据分门别类。分类依据应选择最稳定的本质属性。分类有助于统一数据管理。
6.6.3 数据分级
根据数据被破坏后的危害程度进行定级,以制定相应的安全策略。国家数据安全框架将数据分为三级(表6-9):
- 一般数据:危害很小或无危害。
- 重要数据:可能危害国家安全、公共利益等。
- 核心数据:危害严重,涉及国家安全。