引言
上文提到行业之间API 的分类和雾计算(fog computing)的用例,这两种技术都会制造和用到很多的数据。例如在雾计算中,底层的感应器会收集环境数据(e.g. 温度、距离、光度),再发送到雾计算服务器中处理。又例如用XAPI (Experience API) 投射价钱资讯给顾客前,程式可能会先分析顾客的年龄、工作、性别等个人资料,再决定以那种方式呈现给顾客(eg Experience 1: 显示限时优惠、Experience 2: 显示具吸引性的图片)。
当机构不断发展时,都会遇到一个问题,就是有太多数据。如果没有一个有系统的方法去管理数据,在想要某种数据时,很多时会因为数据库太大、太多,而找不到。更甚的是,可能同一数据(例如客户的名字)出现在不同的数据库(Database)中,内容是不同的。例如数据库A 储存的客户名字是Tommy、数据库B的名字是Tammy。程式要如何处理这种冲突,将会是一个很大的课题。
下文将会讨论企业之间,管理数据的方法(Data Governance)。亦会讨论一下数据管理其中一个重要概念 -- Data Lineage,以及当中细分的三个Lineage: Vertical Lineage、Horizontal Lineage 和 Business Lineage。再介绍Data Dictionary 在企业的用例(Use Case)和用途。
数据管理(Data Governance) 和数据沿袭 (Data Lineage)
数据管理这个名词相信很多人都有听过,亦有不同衍生出的字眼,例如数据治理、数据资料管理等,而它们意思大概相近。
简单来说,数据管理就是对数据的生命周期的管理,管理人员需确保数据在整个生命周期都能保持高质量(i.e. 准确和完整)。
以客户在银行开户(Account Opening)为例:
Step 1. 数据生成 (Data Generation): 管理者需确保在客户在输入数据时,数据没有遗漏并且准确。管理方法可以是要求客户输入两次、将特定的项目(e.g. 身份证号码) 设定为必须输入。
Step 2. 数据维护 (Maintenance): 管理者需确保客户资料保持更新和准确。例如客户需进行交易纪录查询时,可能需要地址和电话验证,如在此时发现客户更新了个人资料,管理者需确保数据库的数据能作出更新,保持客户资料准确。
Step 3. 数据使用 (Active use): 当数据需要作出使用时,管理者需确保有足够的存取权限限制。例如要经过特定的审批过程才能读取数据,并经过更严格的审批才能修改数据。
Step 4. 数据存档和清除 (Archiving and Purging): 管理者需确保数据保留有一定的期限。例如客户要求删除户口,客户的个人资料要在一定时间后清除,以释放数据库的空间和确保数据保持更新。
而对于一个用家来说,很多时他们是一个数据的使用者(p.s. 当然亦有一大部份是数据的输入者,但输入程序通常都会有格式限制,并不会出现很大的问题)。应用很多时都是制造报表、分析数据的走势和汇报业绩。他们拿到一堆数据时,通常他们都会问 “这个数据的来源是什么”、“这些数据是怎样经算出来的”,还有时候会说“我不信任这份报告的数据”。要解决这些问题,就是要厘清应用程式和数据库的数据沿袭(Data Lineage)。
数据与数据库和应用程式的关系,就是数据沿袭 (Data Lineage)。
当数据沿袭整理后,用户就可以知道这个数据是来前那一个系统(Origin)、经过那一些计算(Transform and Process)和修改某一数据会对那些流程会受影响(Data Flow),并对数据管理(Data Governance)有很大的帮助。管理者将会清楚那些数据可以删减、哪些数据有重覆,解决数据不一致(inconsistency) 的问题。而数据沿袭 (Data Lineage) 包括下文会将讨论的三种形式: Vertical Lineage、Horizontal Lineage 和 Business Lineage。
数据的垂直关系(Vertical Lineage)
当一个用家想使用数据时,很多时候不清楚有什么数据可以用。
就以分析客户资料(Customer Info) 为例,用家可能不知道IT 系统怎样储存一个客户的资料。例如,IT 系统有储存客户的收入吗? 有储存客户的名字和性别吗? 而解答这些问题,只需要了解数据的结构,就能知道(下图以XML Tree 来表达-- 显示出Customer 的资料,包含Account Name 及Name (First Name + Last Name)):
Customer
├───Account Name
└───Name
└───FName (First Name)
└───LName (Last Name)
而这个Biz Term 到 IT Term 的关系,正正是 Vertical Lineage 想获取的。而这里的 IT Term ,准确来是 IT metadata 。因为用家想得到的并非是单一数据,而是整个数据的结构。
总括而言,Vertical Lineage 就是:
- 连接Biz Terms (business friendly set of terms) 到 IT metadata
- 例子: 连接 Business Glossary (一个装着不同 terms 的字典) 到Technical Metadata (描述数据的架构的字典)
数据的横向关系 (Horizontal Lineage, a.k.a Technical Lineage)
而对于一个开发人员(Developer) 来说,拥有一个数据的结构并不足够。
如果想建立一个应用程式 (例如一个Data Reporting Dashboard),必须要知道数据的准确来源,包括这个数据是来是那个数据库或者是那个Application 的 Columns :
Hostname/ IP: 178.112.12.1
Database Type: MySQL
Database Name: Sales_Info
Database Schema: NE_Sales(AGG_Total, North, Sales)
而这些Data fields 和 Source Database 的关系,正正是Horizontal Lineage 想要得到的。 (p.s. 由于这些资讯非常technical,所以Horizontal Lineage 又称为Technical Lineage)
总括而言,Horizontal Lineage 就是:
- 连接Data Fields 到 Source DB/ App Column
- 例子: 连接 Reporting Dashboard 的Data Field 到 Database 的 Schema
数据的商业关系 (Business Lineage)
最后的Business Lineage 是 Horizontal Lineage 和 Vertical Lineage 的应用,而它的重点则放到Reporting Dashboard 上。
例如一个用家想知道第三季用户习惯有没有改变,如果Business Lineage 整理好,用户就可以看到 Customer 与 Reporting Dashboard 的Sales per customer、Ages有关系。并可以利用Reporting dashboard 的data field 作不同的分析。例如分析 Sales 和 Ages 的关系,再用结果制定宣传策略。
总括而言,Business Lineage 就是:
- 连接Biz Terms (business friendly set of terms) 到 Reporting Fields
- 例子: 连接 Business Glossary (一个装着不同 terms 的字典) 到 BI dashboard 的 reporting fields
数据字典的用例和应用 (Data Dictionary Application and Use Case)
而数据字典(Data Dictionary) 就是一个储存这些Data Lineage 的平台,并将Vertical Lineage、Horizontal Lineage 以及 Business Lineage 呈现,方便数据管理(Data governance)。
以下图为例,数据字典纪录了一个数据由输入 (Data Entry) 到储存 (Data Storage),再到处理(Data Processing)、分析(Data Analysis) 和汇报(Reporting) 的过程。当数据流程变得清晰后,则会发现有些过程可能会所重覆,例如下图有两个 Reporting 的Dashboard 去汇报同一 set 数据。如果移除Data Processing 的系统,会对哪个Data Analysis 和 Reporting 的系统有所影响。
而些Data Flow 的呈现,能大大帮助管理人员移除和优化数据管理流程,使数据管理更有效率和确保数据的一致性。