OneData体系架构详解
阿里巴巴的 OneData 体系架构方法论,主要分为三个阶段:业务板块、规范定义 和 模型设计。每个阶段的核心目标是确保数据的高效管理、共享与分析能力。
一. 业务板块(Business Segment)
业务板块是OneData体系架构中的第一步,重点是将企业的各个业务领域进行划分,使得每个业务单元能够独立管理自己的数据,确保数据之间的独立性和一致性。业务重叠性较小的企业可以学习。
-
目标:根据业务领域的不同需求,将企业的数据划分为几个相对独立的模块或板块,每个板块都有清晰的业务目标,且这些目标之间的重叠度较低。这样有助于简化复杂的业务需求和数据处理,减少数据交互中的复杂性。
-
划分依据:业务板块的划分一般是根据 业务属性 和 数据的业务重要性 来进行的。不同的业务板块会独立处理与之相关的数据,可以是基于产品、客户、财务等维度进行拆分。例如:
- 用户板块:关注用户行为、用户画像、用户生命周期等。
- 商品板块:处理商品分类、库存、定价等相关信息。
- 交易板块:涉及订单、支付、退款等业务。
二. 规范定义(Standard Definition)
规范定义阶段,以 维度建模理论 为基础,通过构建 总线矩阵,划分和定义 数据域、业务过程、维度、度量/原子指标、修饰类型、修饰词、时间周期、派生指标 等。这些要素的定义和设计,确保数据能够被统一规范、标准化地存储和使用。
具体来说,规范定义包含以下几个关键要素:
1、业务过程(Business Process)
业务过程是指企业中的某些关键业务活动或事件,它通常代表了一个数据生成的过程。例如:
- 订单生成过程:表示一个订单从创建到支付完成的业务流程,涉及多个操作(如下单、支付、发货等)。
- 用户行为分析过程:表示从用户登录到购买、浏览行为的全过程。
在维度建模中,业务过程通常对应于事实表,记录了与这些过程相关的所有度量和事件数据。
2.数据域(Data Domain)
数据域指的是数据的一个逻辑划分,它描述了不同业务模块中数据的范围。例如:
- 销售数据域:涉及销售相关的所有数据,如订单、交易、付款等。
- 用户数据域:涉及用户的基本信息、行为数据等。
- 财务数据域:涉及公司财务状况的数据,如收入、支出、利润等。
数据域的划分帮助确保每个业务板块的数据具有独立性,同时在后续的数据处理和建模中具有清晰的边界。
3. 维度(Dimension)
维度是描述业务过程的多个方面的属性,通常用于对事实数据进行分组、筛选和排序。在OneData架构中,维度设计基于业务需求和分析场景,例如:
- 时间维度:用于表示事件发生的时间,通常包括年、季度、月份、周、日等。
- 产品维度:描述产品的各类属性,如品类、品牌、型号等。
- 客户维度:描述客户的属性,如年龄、性别、地域、消费习惯等。
维度表提供了对事实数据的多角度分析支持。
4. 度量/原子指标(Metrics/Atomic Measures)
度量或原子指标是用来衡量某个业务过程的具体数据点,它通常是数值型数据,如销售额、交易量、利润等。原子指标是最基本的、不可进一步拆解的数据度量。它们通常出现在事实表中。
例如:
- 销售额:记录一笔交易的销售金额。
- 交易量:记录某段时间内发生的订单数量。
这些度量值是数据仓库分析的基础。
5. 修饰类型和修饰词(Modifiers)
修饰类型和修饰词指的是数据的描述和附加信息,用于对度量进行细化或限定。修饰类型通常用于进一步描述某个度量值的维度或范围,修饰词则用于细化这些描述。例如:
- 修饰类型:客户类型(新客户、老客户)、时间类型(周、月、年)等。
- 修饰词:例如“按地区分布”、“按时间范围”等,用于对度量进行更精确的筛选。
通过修饰,可以使分析更加细粒度,帮助用户对复杂数据进行深入的探讨和比较。
6. 时间周期(Time Period)
时间周期定义了业务分析中的时间范围,时间是维度建模中非常重要的一部分。时间周期用于定义数据的时间切片,例如:
- 日周期:按天统计。
- 月周期:按月进行数据汇总。
- 年周期:按年进行数据统计。
时间周期的定义确保了数据可以在不同的时间维度上进行分析。
7. 派生指标(Derived Metrics)
派生指标 = 一个原子指标 + 多个修饰词(可选) + 时间周期
其中:
- 原子指标:是最基本的度量单位,通常是对某个业务过程的数值衡量,如“支付金额”、“订单数量”。
- 修饰词:用于限定或细化数据的范围,通常与维度相关,例如“海外买家”、“新客户”、“按地区分布”等。
- 时间周期:限定数据的统计时间范围,如“最近1天”、“上个月”、“今年”等。
举例说明:
-
原子指标:支付金额。表示交易过程中用户支付的金额。
-
修饰词:海外买家。这个修饰词限定了分析的业务对象,指的是来自海外的用户。
-
时间周期:最近1天。这个时间周期限定了数据的时间范围,指的是过去24小时内的数据。
派生指标的实例:
-
最近1天海外买家支付金额
- 这里,“支付金额”是原子指标,“海外买家”是修饰词,用于限定买家的地区,“最近1天”是时间周期,用于限定数据的统计范围。
-
上个月的产品A销售额
- “销售额”是原子指标,“产品A”是修饰词,限定了分析的是某个特定产品的销售数据,“上个月”是时间周期,限定了统计的时间范围。
-
去年全球用户订单数量
- “订单数量”是原子指标,“全球用户”是修饰词,限定了分析对象是全球的所有用户,“去年”是时间周期,限定了数据统计的时间。
三、派生指标分类
派生指标可以分为以下三类:事务型指标、存量型指标 和 复合型指标。
1. 事务型指标
定义:
事务型指标用于衡量业务活动的数量或金额。这类指标通常反映动态的业务行为,例如用户的操作、系统的交互。
特点:
- 数据是随着时间发生变化的。
- 需要维护原子指标及修饰词,在此基础上构建派生指标。
- 时间周期通常为明确的时间范围,如“今天”、“最近1周”。
例子:
- 新发商品数:当天新增的商品数量。
- 订单支付金额:某时间段内支付成功的订单金额。
- 新增注册会员数:当天新注册的用户数量。
2. 存量型指标
定义:
存量型指标用于衡量实体对象(如商品、会员、账户等)某些状态的累计结果。这类指标反映的是一个时刻的统计值。
特点:
- 数据通常是历史累计到某个时间点。
- 需要维护原子指标及修饰词。
- 时间周期一般是“历史至当前时间”。
例子:
- 商品总数:当前系统中所有商品的总数量。
- 注册会员总数:截止到某时间点注册的会员总数。
派生指标实例:
- 截至2024年1月1日的注册会员总数
- 当前有效商品总数
3. 复合型指标
定义:
复合型指标是基于事务型指标和存量型指标通过一定的计算复合而成。这类指标通常用于衡量转化率或综合性能。
特点:
- 数据是由事务型和存量型指标组合而成。
- 有些需要创建新的原子指标,有些可以直接在事务型或存量型指标的基础上加修饰词。
- 通常表现为比例、效率或转化类的指标。
例子:
- 下单转化率:浏览UV到下单买家的转化率。
- 库存周转率:存货的周转次数(公式:销售额 ÷ 平均库存金额)。
- 订单支付成功率:支付成功的订单数占总订单数的比例。
派生指标实例:
- 最近1个月某商品类目的下单转化率
- 截止当前,商品库存周转率为3次/月
四、模型设计
基于阿里巴巴的数据分层架构,模型设计可以按照以下三个主要层次进行规划:操作数据层(ODS)、公共维度模型层(CDM,包括 DWD 和 DWS)、应用数据层(ADS)。以下是各层的详细说明及其在模型设计中的作用:
1. 操作数据层 (ODS)
定义:
ODS 是数据仓库的基础层,用于存储从业务系统直接同步的原始数据,目标是保证数据的完整性和原始性,为后续加工提供基础。
模型设计内容:
-
数据同步:
- 结构化数据: 支持增量或全量数据同步,通常通过工具(如 MaxCompute、Flink 等)将业务数据导入。
- 非结构化数据: 例如日志数据,通过结构化处理后存储到仓库中。
-
历史数据累积:
- 保存全量或增量历史数据,满足数据稽核和审计需求。
-
初步清洗:
- 对原始数据进行基础清洗(如去重、字段格式化),确保数据的质量。
举例:
- 将电商系统中的订单、用户注册信息和商品信息以原始表的形式同步到仓库,如
ods_order
、ods_user
、ods_product
。
2. 公共维度模型层 (CDM)
CDM 是数据仓库的核心层,基于维度建模理论细分为明细数据层(DWD)和汇总数据层(DWS)。这一层的重点是通过加工原始数据,生成高效的分析模型,建立一致性维度和公共指标。
2.1 明细数据层 (DWD)
-
定义:
- 存放业务的明细事实数据和维度数据,保持数据的原始粒度。
-
模型设计内容:
- 维度退化: 将一些维度信息直接存入事实表,减少事实表与维表的关联,提高查询性能。
- 明细宽表: 通过多表关联,将相关数据整合为一张宽表,便于直接使用。
- 一致性维度: 定义一致的维度表(如时间维度、用户维度),为多场景共享提供支持。
-
举例:
- 构建商品交易事实表(
dwd_order_detail
),包含订单编号、商品 ID、下单时间、金额等原始粒度信息。 - 定义时间维度表(
dim_time
),记录日期、周、季度等属性。
- 构建商品交易事实表(
2.2 汇总数据层 (DWS)
-
定义:
- 存放汇总后的公共指标数据,通过聚合计算生成统计结果,支持更高层次的应用需求。
-
模型设计内容:
- 公共指标加工: 基于 OneData 体系,定义统一口径的统计指标(如 GMV、付费转化率)。
- 宽表设计: 构建宽表存储多维度指标,减少重复计算。
- 优化查询性能: 加强指标的维度退化,降低查询复杂度。
-
举例:
- 汇总用户行为数据生成用户活跃指标表(
dws_user_behavior_summary
),包含日活跃用户数、付费用户数等。 - 订单分析宽表(
dws_order_summary
),按时间、地区、商品分类汇总销售金额和订单量。
- 汇总用户行为数据生成用户活跃指标表(
3. 应用数据层 (ADS)
定义:
ADS 是面向具体业务场景和数据产品的应用层,存放经过高度个性化处理的统计指标数据。
模型设计内容:
-
场景化数据:
- 针对具体需求设计满足特定场景的表,如为报表系统、推荐系统提供个性化指标。
-
轻量化加工:
- 在 CDM 层数据基础上,做进一步的细化和过滤,生成最终的输出数据。
-
实时数据支持:
- 针对实时场景,设计数据流处理模型,满足秒级响应需求。
举例:
- 针对电商运营团队构建活动效果分析表(
ads_campaign_analysis
),包含活动期间的订单量、销售额、优惠券使用率等。 - 为客户生成会员积分管理表(
ads_member_points
),统计会员的积分变化和等级情况。
相关文章:

OneData体系架构详解
阿里巴巴的 OneData 体系架构方法论,主要分为三个阶段:业务板块、规范定义 和 模型设计。每个阶段的核心目标是确保数据的高效管理、共享与分析能力。 一. 业务板块(Business Segment) 业务板块是OneData体系架构中的第一步&…...

Gin 框架入门实战系列教程
一,Gin介绍 Gin是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,如果你是性能和高效的追求者,我们推荐你使用Gin框架。 Gin最擅长的就是Api接口的高并发,如果项目的规模不大,业务相对简单…...

鸿蒙harmony json转对象(2)
在ArkTS(Ark TypeScript)中,接口(interface)是用来定义一个对象的结构,它可以包含属性、方法签名,以及嵌套的类型(包括其他接口或对象类型)。因此,接口里面可…...

M-LAG与E-trunk
M-LAG和E-trunk都是用来实现跨设备链路聚合,解决单点故障的,其大部分特性相同,工作模式M-LAG更胜一筹,支持双活,而且其原理感觉像是vrrpmstp的升级版,是往增加网络可靠性去发展的;而E-trunk是基于LACP扩展实现…...

【面试常见问题】
如何自我介绍 自我介绍是面试关键部分,是面试官了解求职者的首要途径,清晰自信的介绍能提升面试官印象,对求职成功至关重要。 糟糕的自我介绍示例 求职者朱晓明虽表明自己善于交际、积极,23 年毕业且从事 java 开发,…...

Spring Boot Starter介绍
前言 大概10来年以前,当时springboot刚刚出现并没有流行,当时的Java开发者们开发Web应用主要是使用spring整合springmvc或者struts、iBatis、hibernate等开发框架来进行开发。项目里一般有许多xml文件配置,其中配置了很多项目中需要用到的Be…...

vue和reacts数据响应式的差异
Vue 的数据响应式: 原理: Vue 使用 Object.defineProperty 或 Proxy(在 Vue 3 中)来实现数据的响应式。当创建 Vue 实例时,会对 data 对象中的属性进行遍历,将其转换为响应式属性。对于 Object.definePro…...

OpenEuler学习笔记(九):安装 OpenEuler后配置和优化
安装OpenEuler后,可以从系统基础设置、网络配置、性能优化等方面进行配置和优化,以下是具体内容: 系统基础设置 更新系统:以root用户登录系统后,在终端中执行sudo yum update命令,对系统进行更新…...

npm命令与yarn命令的区别
npm与Yarn的区别详解 在软件开发中,npm和Yarn都是流行的包管理工具,它们各自拥有独特的特性和优势。以下是它们的主要区别: 1. 安装速度 npm:安装速度相对较慢,尤其是在依赖项较多的情况下。Yarn:采用并…...

python如何导出数据到excel文件
python导出数据到excel文件的方法: 1、调用Workbook()对象中的add_sheet()方法 wb xlwt.Workbook() ws wb.add_sheet(A Test Sheet) 2、通过add_sheet()方法中的write()函数将数据写入到excel中,然后使用save()函数保存excel文件 ws.write(0, 0, 1234…...

MYSQL学习笔记(五):单行函数(字符串、数学、日期时间、条件判断、信息、加密、进制转换函数)讲解
前言: 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇,涵盖入门、进阶、高级(一些原理分析);这一篇是讲解单行函数,当然mysql函数很多哈,只有多用才能记得…...

Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert
概述 关于Prometheus和Grafana的安装,略过。 写在前面 Dashboard:仪表板,可包含多个PanelPanel:面板,Dashboard中的组件 如有写得不对的地方,烦请指出。 新增仪表板 点击右上角的 选择New dashboard…...

(java版本)基于Misty1算法的加密软件的实现-毕业设计
一、基于Misty1算法的加密软件(Java)的实现 随着计算机网络及通信技术的飞速发展,信息安全成了信息社会急需解决的最重要的问题之一,密码技术是保证信息安全的核心技术。本文用JAVA语言开发了一个基于Misty1算法的加密软件&#x…...

Spring注解篇:@RestController详解
全文目录: 开篇语前言摘要概述源码解析使用案例分享代码分析使用场景优缺点分析测试用例 应用场景案例优缺点分析核心类方法介绍测试用例测试用例分析使用场景优缺点分析测试用例 小结总结文末 开篇语 哈喽,各位小伙伴们,你们好呀,…...

C++:将字符数组rkpryyrag,每个字母转换为其前面第13个字母后输出,如果超过a则从z再继续接着数。例如:b前面第1个字母是a。a前面第3个字母是x。
代码如下: #include <iostream> #include <string> using namespace std;int main(){string str "rkpryyrag";for (int i 0; i < str.length(); i){if (str[i] > a && str[i] < z){if (str[i] - a < 13){cout <<…...

《探秘鸿蒙Next:人工智能助力元宇宙高效渲染新征程》
在元宇宙的宏大愿景中,高效的渲染技术是构建沉浸式虚拟世界的关键。鸿蒙Next凭借与人工智能的深度融合,为元宇宙的渲染带来了全新的解决方案和无限可能。 智能场景分析与优化 人工智能能够对元宇宙场景进行智能分析。鸿蒙Next可以利用AI技术对场景中的…...

微前端qiankun的部署
微前端qiankun的部署 本地开发主应用配置启动端口子应用配置启动端口测试环境部署:场景 1:主应用和微应用部署到同一个服务器(同一个 IP 和端口)微应用都放在在一个特殊名称(不会和微应用重名)的文件夹下主应用配置子应用配置配置nginx本地开发 主应用配置启动端口 打开…...

HTML表格-掌握表格标签与属性
HTML表格是网页设计中用于展示数据的强大工具,它通过一系列标签和属性来控制表格的布局和样式。 一、HTML表格的基本结构 HTML表格由<table>标签定义,内部包含多个行(<tr>)、单元格(<td>或<th&…...

PID控制的优势与LabVIEW应用
PID控制(比例-积分-微分控制)已在工业控制领域得到广泛应用,尤其在实时控制和自动化系统中,其核心优点是简单、稳定且高效。尽管许多现代控制方法(如自适应控制、模型预测控制等)逐渐崭露头角,P…...

全球化趋势与中资企业出海背景
1. 全球化趋势与中资企业出海背景 1.1 全球经济格局变化 全球经济格局正经历深刻变革,新兴经济体崛起,全球产业链重塑,中资企业出海面临新机遇与挑战。据世界银行数据,新兴市场和发展中经济体在全球 GDP 中占比已超 40%ÿ…...

Oracle之RMAN备份异机恢复(单机到单机)
Oracle之RMAN备份异机恢复(单机到单机) 一、环境说明二、正式库进行RMAN备份三、将正式库备份与参数文件拷贝到测试库四、测试库异机恢复五、验证数据 一、环境说明 系统版本主机名DB版本DB名实例名Public-IP正式库Redhat9.5lemonEnterprise 19.25lemon…...

Servlet快速入门
Servlet 由于目前主流使用SpringBoot进行开发Servlet可以说是时代的眼泪,这篇文章主要介绍我基于SpringBoot对应Servlet的浅薄认知,有利于更好的理解前端界面和java服务器的数据交换过程 快速入门 我比较推荐这篇文章来对Servlet有一个大概的了解 都2…...

深入解析 Linux 内核中的 InfiniBand 驱动接口:ib_verbs.h
InfiniBand(IB)是一种高性能、低延迟的网络互连技术,广泛应用于高性能计算(HPC)、数据中心和云计算等领域。Linux 内核通过 InfiniBand 子系统提供了对 IB 设备的支持,而 ib_verbs.h 是 InfiniBand 驱动开发中的核心头文件之一。它定义了 IB 核心框架与用户空间接口(ver…...

vulnhub靶场【kioptrix-1靶机】
前言 靶机:kioptrix-1,IP地址为192.168.1.104 攻击:kali,IP地址为192.168.1.16 都采用虚拟机,网卡为桥接模式 文章中涉及的靶机,来源于vulnhub官网,想要下载,可自行访问官网下载&…...

Linux 6.14 内核的主要特性
原文参考:https://www.kernel.org/ Linux 6.14 内核是 Linux 内核的一个重要版本,预计于 2025 年 3 月发布。该版本引入了多项新特性和改进,涵盖了硬件支持、性能优化、安全性增强以及新技术的整合。 1. Rust 语言驱动的正式支持 Linux 6.1…...

【Linux】深刻理解动静态库
1.什么是库 库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式,可以被操作系统载…...

亚博microros小车-原生ubuntu支持系列:8-脸部检测与人脸特效
前面的都是使用了mediapipe框架。后面的这两节采用了opencv\dlib的框架。 一 脸部检测 核心:opencv detectMultiScale函数 detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize) image--待检测图片,一般为灰度图像加快检测…...

代码随想录算法训练营day32
代码随想录算法训练营 —day32 文章目录 代码随想录算法训练营前言一、动态规划理论基础二、509. 斐波那契数动态规划动态规划优化空间版递归法 三、70. 爬楼梯动态规划动态规划空间优化 746. 使用最小花费爬楼梯动态规划空间优化 总结 前言 今天是算法营的第32天,…...

缓存之美:万文详解 Caffeine 实现原理(下)
上篇文章:缓存之美:万文详解 Caffeine 实现原理(上) getIfPresent 现在我们对 put 方法有了基本了解,现在我们继续深入 getIfPresent 方法: public class TestReadSourceCode {Testpublic void doRead() …...

中企出海:从国际投资建厂:投前投中投后重点事项
1. 投前重点事项 1.1 市场调研与分析 在国际投资建厂的投前阶段,市场调研与分析是至关重要的基础工作,它能够帮助企业全面了解目标市场,为后续决策提供有力依据。 市场规模与潜力:通过收集和分析目标国家或地区的经济数据、行业…...