数据中台的OneID是个什么鬼

2023-10-29 20:10
文章标签 数据 中台 oneid

本文主要是介绍数据中台的OneID是个什么鬼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如题!

这个问题一直困扰了我很久,在阿里的数据中台中,有三个主要的组成部分OneID、OneData和OneService。我之前写的一篇文章曾对阿里的数据中台做过解读,见《什么是One Data体系?阿里数据中台解读》。

在这篇文章中,笔者曾提到OneID的本质就是主数据,只是用的不是传统的主数据管理技术。

这篇文章发布后,很多读者朋友给我留言,告诉我OneID和主数据不是一回事,但没有一个人给我讲清楚这两个概念为什么不是一回事。

今天我们好好捋一下这个问题!

 01 

OneID和主数据到底是不是一回事?

在阿里巴巴 OneData 体系中,OneID 指统一数据萃取,是一套解决数据孤岛问题的思想和方法。

如果单看这个定义,你一定也会和我一样懵逼,啥是数据萃取?解决数据孤岛问题,主数据不也是干这个事情的吗?

别急,我们慢慢分解,先来看OneID到底是干啥的。

OneID也叫 ID-Mapping,就是将设备ID(例如手机MAC、IMEI、IMSI等),手机号、身份证号、邮箱地址、PC端的Cookie,用户名等信息,结合标签体系、知识图谱、机器学习等技术和算法,将各种 ID 都映射到统一的ID上。也就是说不论用户用什么ID登陆,不论登陆的是PC端还是手机APP,都能识别到他的一个唯一身份。

OneID干的这个事情是不是和主数据有点类似?主数据也是给数据对象赋予一个唯一的编码(身份)。

但是,不得不承认,OneID和主数据还是有很大区别的,如下:

第一,解决问题的环境不同。OneID主要是解决ToC业务,不同渠道、不同数据来源的用户身份的统一映射和识别问题,例如:PC端、移动APP,微信小程序、相关应用系统等。而主数据是对相同数据对象进行标准化定义并赋予唯一编码,更多的是用ToB业务中,解决企业内部异构系统之间数据不一致问题

第二,解决问题的“地点”不同。OneID是把各类UID信息汇聚在一起,在一个地方进行加工和处理,最后形成统一的Mapping关系,阿里管这个地方叫做“数据中台”。而主数据强调的是从源头统一标准,定义唯一编码,各异构系统都依据统一的标准执行,映射关系是建立在各异构系统中的。

第三,解决问题的技术不同。OneID是典型的OLAP技术,是在产生数据之后通过大数据分析、人工智能算法等技术将各种 UID 都映射到统一的ID上。而主数据是典型的OLTP技术,其本身是对数据的增删改查操作,例如客户主数据的定义和编码。

 02 

数据中台为什么需要OneID?

说起这个问题可能要追溯到“遥远”的互联网PC时代了。

在PC时代,各大网站都是通过Cookie记录用户信息的,网站为每一个访问者赋予一个唯一的ID,并将这个ID以文本的形式写入用户本地,这个文本就是Cookie。

笔者最早接触这项技术已经是18年前了,当时笔者所在公司的主要业务是网站运营和企业建站。笔者有幸参与了一个澳洲购物的电商网站开发,那时候,公司小、团队分工也不明确,一个人要干N个人的活,但真的很锻炼人,网页设计、裁图、前台页面、后台程序都摸了一个遍。因此,也摸清了互联网公司记录用户信息的技术和手段。

实际上,从用户第一次访问网站开始,无论浏览的是哪个页面都会调用网页的一个脚本程序,这个程序给访问者定义一个唯一ID并写入到Cookie中,之后用户的一些关键操作都可以记录Cookie中,例如:加入购物车、下单等。互联网网站就是通过Cookie来进行用户的身份鉴别和跟踪会话。

这项技术一直沿用至今,它为互联网公司收集和积累用户信息,建立标签体系、实现用户画像起到了重要的作用。

后来,随着智能手机的兴起,移动互联网的时代来了,人们访问网站的渠道更加丰富和多样。在移动互联时代,对用户ID的识别,不再是单一的Cookie,而是不同类型设备的ID,例如:Android设备的唯一编号(IMEI,MEID,ESN,IMSI),IOS系统的设备的唯一编号(UDID、UUID)等。同时,不同APP的用户登陆ID也不同,例如:手机号、电子邮箱、用户名等。

图片

互联网公司为了数据的最大化利用,就需要将这些不同渠道、不同来源的“ID”进行统一拉齐和打通,将PC时代累计下的数据资产进行跨渠道共享,从而实现用户的精准画像、多渠道触达和智能推荐。数据中台的OneID体系干的就是这个事情,为数据资源的最大化利用奠定了基础。例如:阿里数据中台就是基于OneID技术,实现了消费端、广告端、支付端、娱乐端等业务板块用户ID的打通,并通过这个统一 ID,关联起各个孤岛的数据,实现数据通融,进一步实现完整的用户画像和准确的数据应用。这就有了你在百度上搜索了“养生”,到淘宝网站上就会给你推荐“枸杞”。

 03 

OneID和主数据的实现原理

OneID是对不同渠道、不同来源的的“ID”进行统一拉齐和打通,其实现原理如下:

图片

为了方便理解,这里给出的例子是比较简单的,但在实际实施过程中,其应用要复杂很多,例如:相同ID的值不一致怎么办,重复的ID如何合并,ID信息发生变化如何更新,Mapping表的更新频率如何设置等等,这些问题就需要结合具体场景解决了。

我们再来看看主数据管理(MDM)的工作原理:

图片

主数据管理强调在源头治理,即:在数据源系统定义实现主数据的标准化,生成唯一主数据编码,并通过主数据系统分发标准数据到相关消费系统进行使用,消费系统只有查询和使用权不能对主数据进行“增删改”。另外,不同主数据的来源系统不同,如在这个例子中的客户主数据来源为CRM,物料主数据的来源为MDM,ERP系统和数据仓库是主数据的消费系统。

 04 

有了数据中台,还需要主数据吗?

在很多数据中台的解决方案中,主数据是数据中台的一个组成部分。例如在SAP的数字平台解决方案中,数据中台是由数据集成、数据存储、数据仓库、开发建模、数据资产管理、数据管控、人工智能与行业模版等多个部分组成。其中,数据管控模块中就包含了主数据治理,如下图:

图片

图:SAP 数字平台解决方案(来源:SAP天天事)

不止SAP,很多厂商的数据中台解决方案中都能够看到主数据的身影,如元年、袋鼠云等。

很多人都有个疑问,数据中台中既包含了数据采集/数据移动的能力,也包含数据服务共享的能力,同时还具备元数据、数据质量、数据安全等数据治理能力,有了数据中台,为什么还需要主数据管理?

数据中台通过数据采集、清洗、治理,再以标准接口服务的形式提供出去,供其他系统调用,这确实是数据中台的核心能力。从功能的角度,主数据管理也的确有类似的功能,例如:主数据采集、主数据清洗、主数据服务等。

但是,我们之前也说过,主数据与数据中台解决的问题并不相同。

数据中台是在有了数据之后,在中台进行数据治理,形成数据资产并提供数据服务。而主数据更强调在数据产生之前定义数据标准,建立数据管理流程,并在数据产生的过程中对数据质量进行校验,从源头进行数据治理。

因此,相对于数据中台来讲,主数据管理是一个后台系统,它可以作为数据中台的一个数据源为数据中台供应高质量的数据。

设想一下:如果没有主数据管理,从各个异构系统中采集到数据中台的主数据(如:客户、产品、供应商等)将有不同的定义和编码,这就需要在数据中台对这些不一致的数据进行统一治理,这将是一件非常痛苦的事情,而且不能从源头上解决问题。因此在笔者看来,站在整体解决方案的角度,将主数据治理提前,对于传统企业来讲可能是不错的解决方案。

写在最后的话

广义理解OneID,是指一个数据对象有且仅有一个ID。在本质上,OneID解决的问题和主数据编码其实是一样的,都是定义数据对象在一定数据环境下的唯一身份。它们是在不同的应用场景下(ToC或ToB),采用的两个不同技术架构(OLAP或OLDP)的解决方案!

举个不太恰当的例子,就如同我们饿了去吃饭一样,不论是吃中餐还是吃西餐,不论用刀叉还是用筷子,最终目的都是解决饥饿问题。但是,吃中餐的时候我们一般用筷子,而吃西餐的时候一般用刀叉。当然,你用刀叉去吃中国火锅也没问题,只要你不嫌麻烦。同样,你用OneID去解决主数据问题或者你用主数据解决OneID问题,都会一样麻烦!

这篇关于数据中台的OneID是个什么鬼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/303101

相关文章

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核