电商数据仓库的架构、模型与应用实践
一. 数据仓库概念
二. 项目需求及架构设计
1. 项目需求分析
2. 项目框架
2.1 技术选型
2.2 系统数据流程设计
2.3 框架版本选型
2.4 服务器选型
2.5 集群资源规划设计
2)测试集群服务器规划
服务名称 |
子服务 |
服务器 hadoop102 |
服务器 hadoop103 |
服务器 hadoop104 |
HDFS |
NameNode |
√ |
||
DataNode |
√ |
√ |
√ |
|
SecondaryNameNode |
√ |
|||
Yarn |
NodeManager |
√ |
√ |
√ |
Resourcemanager |
√ |
|||
Zookeeper |
Zookeeper Server |
√ |
√ |
√ |
Flume(采集日志) |
Flume |
√ |
√ |
|
Kafka |
Kafka |
√ |
√ |
√ |
Flume(消费Kafka) |
Flume |
√ |
||
Hive |
Hive |
√ |
||
MySQL |
MySQL |
√ |
||
Sqoop |
Sqoop |
√ |
||
Presto |
Coordinator |
√ |
||
Worker |
√ |
√ |
||
Azkaban |
AzkabanWebServer |
√ |
||
AzkabanExecutorServer |
√ |
|||
Druid |
Druid |
√ |
√ |
√ |
服务数总计 |
13 |
8 |
9 |
三. 数仓分层概念
1. 分层概念
2. 数仓分层
3. 数据集市与数据仓库概念
4. 数仓命名规范
- ODS层命名为ods
- DWD层命名为dwd
- DWS层命名为dws
- ADS层命名为ads
- 临时表数据库命名为xxx_tmp
- 备份数据数据库命名为xxx_bak
四. 数仓搭建环境准备
集群规划
服务器hadoop102 |
服务器hadoop103 |
服务器hadoop104 |
|
Hive |
Hive |
||
MySQL |
MySQL |
五. 业务知识准备
1. 业务术语
1.用户
用户以设备为判断标准,在移动统计中,每个独立设备认为是一个独立用户。Android系统根据IMEI号,IOS系统根据OpenUDID来标识一个独立用户,每部手机一个用户。
2. 新增用户
首次联网使用应用的用户。如果一个用户首次打开某APP,那这个用户定义为新增用户;卸载再安装的设备,不会被算作一次新增。新增用户包括日新增用户、周新增用户、月新增用户。
3. 活跃用户
打开应用的用户即为活跃用户,不考虑用户的使用情况。每天一台设备打开多次会被计为一个活跃用户。
4. 周(月)活跃用户
某个自然周(月)内启动过应用的用户,该周(月)内的多次启动只记一个活跃用户。
5. 月活跃率
月活跃用户与截止到该月累计的用户总和之间的比例。
6.沉默用户
用户仅在安装当天(次日)启动一次,后续时间无再启动行为。该指标可以反映新增用户质量和用户与APP的匹配程度。
7.版本分布
不同版本的周内各天新增用户数,活跃用户数和启动次数。利于判断APP各个版本之间的优劣和用户行为习惯。
8.本周回流用户
上周未启动过应用,本周启动了应用的用户。
9.连续n周活跃用户
连续n周,每周至少启动一次。
10.忠诚用户
连续活跃5周以上的用户
11.连续活跃用户
连续2周及以上活跃的用户
12.近期流失用户
连续n(2<= n <= 4)周没有启动应用的用户。(第n+1周没有启动过)
13.留存用户
某段时间内的新增用户,经过一段时间后,仍然使用应用的被认作是留存用户;这部分用户占当时新增用户的比例即是留存率。
例如,5月份新增用户200,这200人在6月份启动过应用的有100人,7月份启动过应用的有80人,8月份启动过应用的有50人;则5月份新增用户一个月后的留存率是50%,二个月后的留存率是40%,三个月后的留存率是25%。
14.用户新鲜度
每天启动应用的新老用户比例,即新增用户数占活跃用户数的比例。
15.单次使用时长
每次启动使用的时间长度。
16. 日使用时长
累计一天内的使用时间长度。
17. 启动次数计算标准
IOS平台应用退到后台就算一次独立的启动;Android平台我们规定,两次启动之间的间隔小于30秒,被计算一次启动。用户在使用过程中,若因收发短信或接电话等退出应用30秒又再次返回应用中,那这两次行为应该是延续而非独立的,所以可以被算作一次使用行为,即一次启动。业内大多使用30秒这个标准,但用户还是可以自定义此时间间隔。
六. 电商业务与数据结构简介
1 电商业务流程
2 电商常识(SKU、SPU)
SKU=Stock Keeping Unit(库存量基本单位)。现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的SKU号。
SPU(Standard Product Unit):是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息集合。
比如,咱们购买一台iPhoneX手机,iPhoneX手机就是一个SPU,但是你购买的时候,不可能是以iPhoneX手机为单位买的,商家也不可能以iPhoneX为单位记录库存SKU。必须要以什么颜色什么版本的iPhoneX为单位。比如,你购买的是一台银色、128G内存的、支持联通网络的iPhoneX,商家也会以这个单位来记录库存数。那这个更细致的单位就叫库存单元(SKU)。
那SPU又是干什么的呢?
SPU表示一类商品。好处就是:可以共用商品图片,海报、销售属性等。
3 电商表结构
3.1 订单表(order_info)
标签 |
含义 |
|
id |
订单编号 |
|
total_amount |
订单金额 |
|
order_status |
订单状态 |
|
user_id |
用户id |
|
payment_way |
支付方式 |
|
out_trade_no |
支付流水号 |
|
create_time |
创建时间 |
|
operate_time |
操作时间 |
3.2 订单详情表(order_detail)
标签 |
含义 |
|
id |
订单编号 |
|
order_id |
订单号 |
|
user_id |
用户id |
|
sku_id |
商品id |
|
sku_name |
商品名称 |
|
order_price |
商品价格 |
|
sku_num |
商品数量 |
|
create_time |
创建时间 |
3.3 商品表
标签 |
含义 |
|
id |
skuId |
|
spu_id |
spuid |
|
price |
价格 |
|
sku_name |
商品名称 |
|
sku_desc |
商品描述 |
|
weight |
重量 |
|
tm_id |
品牌id |
|
category3_id |
品类id |
|
create_time |
创建时间 |
3.4 用户表
标签 |
含义 |
|
id |
用户id |
|
name |
姓名 |
|
birthday |
生日 |
|
gender |
性别 |
|
|
邮箱 |
|
user_level |
用户等级 |
|
create_time |
创建时间 |
3.5 商品一级分类表
标签 |
含义 |
|
id |
id |
|
name |
名称 |
3.6 商品二级分类表
标签 |
含义 |
|
id |
id |
|
name |
名称 |
|
category1_id |
一级品类id |
3.7 商品三级分类表
标签 |
含义 |
|
id |
id |
|
name |
名称 |
|
Category2_id |
二级品类id |
3.8 支付流水表
标签 |
含义 |
|
id |
编号 |
|
out_trade_no |
对外业务编号 |
|
order_id |
订单编号 |
|
user_id |
用户编号 |
|
alipay_trade_no |
支付宝交易流水编号 |
|
total_amount |
支付金额 |
|
subject |
交易内容 |
|
payment_type |
支付类型 |
|
payment_time |
支付时间 |
七. 数仓理论
1 表的分类
1.1 实体表
实体表,一般是指一个现实存在的业务对象,比如用户,商品,商家,销售员等等。
用户表:
用户id |
姓名 |
生日 |
性别 |
邮箱 |
用户等级 |
创建时间 |
1 |
张三 |
2011-11-11 |
男 |
zs@163.com |
2 |
2018-11-11 |
2 |
李四 |
2011-11-11 |
女 |
ls@163.com |
3 |
2018-11-11 |
3 |
王五 |
2011-11-11 |
中性 |
ww@163.com |
1 |
2018-11-11 |
… |
… |
… |
… |
… |
… |
… |
1.2 维度表
维度表,一般是指对应一些业务状态,编号的解释表。也可以称之为码表。
比如地区表,订单状态,支付方式,审批状态,商品分类等等。
订单状态表:
订单状态编号 |
订单状态名称 |
1 |
未支付 |
2 |
支付 |
3 |
发货中 |
4 |
已发货 |
5 |
已完成 |
商品分类表:
商品分类编号 |
分类名称 |
1 |
服装 |
2 |
保健 |
3 |
电器 |
4 |
图书 |
1.3 事务型事实表
事务型事实表,一般指随着业务发生不断产生的数据。特点是一旦发生不会再变化。
一般比如,交易流水,操作日志,出库入库记录等等。
交易流水表:
编号 |
对外业务编号 |
订单编号 |
用户编号 |
支付宝交易流水编号 |
支付金额 |
交易内容 |
支付类型 |
支付时间 |
1 |
7577697945 |
1 |
111 |
QEyF-63000323 |
223.00 |
海狗人参丸1 |
alipay |
2019-02-10 00:50:02 |
2 |
0170099522 |
2 |
222 |
qdwV-25111279 |
589.00 |
海狗人参丸2 |
wechatpay |
2019-02-10 00:50:02 |
3 |
1840931679 |
3 |
666 |
hSUS-65716585 |
485.00 |
海狗人参丸3 |
unionpay |
2019-02-10 00:50:02 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
1.4 周期型事实表
周期型事实表,一般指随着业务发生不断产生的数据。
与事务型不同的是,数据会随着业务周期性的推进而变化。
比如订单,其中订单状态会周期性变化。再比如,请假、贷款申请,随着批复状态在周期性变化。
订单表:
订单编号 |
订单金额 |
订单状态 |
用户id |
支付方式 |
支付流水号 |
创建时间 |
操作时间 |
1 |
223.00 |
2 |
111 |
alipay |
QEyF-63000323 |
2019-02-10 00:01:29 |
2019-02-10 00:01:29 |
2 |
589.00 |
2 |
222 |
wechatpay |
qdwV-25111279 |
2019-02-10 00:05:02 |
2019-02-10 00:05:02 |
3 |
485.00 |
1 |
666 |
unionpay |
hSUS-65716585 |
2019-02-10 00:50:02 |
2019-02-10 00:50:02 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
。。。 |
2 同步策略
数据同步策略的类型包括:全量表、增量表、新增及变化表、拉链表
- 全量表:存储完整的数据。
- 增量表:存储新增加的数据。
- 新增及变化表:存储新增加的数据和变化的数据。
- 拉链表:对新增及变化表做定期合并。
2.1 实体表同步策略
实体表:比如用户,商品,商家,销售员等
实体表数据量比较小:通常可以做每日全量,就是每天存一份完整数据。即每日全量。
2.2 维度表同步策略
维度表:比如订单状态,审批状态,商品分类
维度表数据量比较小:通常可以做每日全量,就是每天存一份完整数据。即每日全量。
说明:
1)针对可能会有变化的状态数据可以存储每日全量。
2)没变化的客观世界的维度(比如性别,地区,民族,政治成分,鞋子尺码)可以只存一份固定值。
2.3 事务型事实表同步策略
事务型事实表:比如,交易流水,操作日志,出库入库记录等。
因为数据不会变化,而且数据量巨大,所以每天只同步新增数据即可,所以可以做成每日增量表,即每日创建一个分区存储。
2.4 周期型事实表同步策略
周期型事实表:比如,订单、请假、贷款申请等
这类表从数据量的角度,存每日全量的话,数据量太大,冗余也太大。如果用每日增量的话无法反应数据变化。
每日新增及变化量,包括了当日的新增和修改。一般来说这个表,足够计算大部分当日数据的。但是这种依然无法解决能够得到某一个历史时间点(时间切片)的切片数据。
所以要用利用每日新增和变化表,制作一张拉链表,以方便的取到某个时间切片的快照数据。所以我们需要得到每日新增及变化量。
拉链表:
name姓名 |
start新名字创建时间 |
end名字更改时间 |
张三 |
1990/1/1 |
2018/12/31 |
张小三 |
2019/1/1 |
2019/4/30 |
张大三 |
2019/5/1 |
9999-99-99 |
。。。 |
。。。 |
。。。 |
select * from user where start =<’2019-1-2’ and end>=’2019-1-2’
3. 关系建模与维度建模
- 关系模型
关系模型主要应用与OLTP系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。
- 维度模型
维度模型主要应用于OLAP系统中,因为关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。
所以把相关各种表整理成两种:事实表和维度表两种。所有维度表围绕着事实表进行解释。
4. 雪花模型、星型模型和星座模型
在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型。
未完待续........
电商数据仓库的架构、模型与应用实践相关推荐
- 视频教程-全新大数据企业电商数据仓库项目实战教程-大数据
全新大数据企业电商数据仓库项目实战教程 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业.拥有丰 ...
- 数据仓库电商建模_真实电商数据仓库全流程开发详解,资源教程下载
课程名称 Hadoop大数据视频教程-第一季:真实电商数据仓库全流程开发详解(共46讲),资源教程下载 课程目录 第一部分:数据仓库基础理论与技术圈 第一章:互联网电商大数据环境 第二章:商业智能与数 ...
- 海尔电商峰值系统架构设计最佳实践
多数电商平台都会经历相似的过程,流量和业绩每年以几倍至十几倍的速度增长,每年都要接受几次大规模.全方位的系统检阅,例如双11.周年庆等购物狂欢节,期间流量和订单可能是日常的十几倍甚至几十倍,产生的峰值 ...
- 聊聊电商交易平台的架构设计(干货)
JAVA日知录 2023-04-13 08:37 发表于安徽 以下文章来源于vivo互联网技术 ,作者官网商城开发团队 vivo互联网技术. 分享 vivo 互联网技术干货与沙龙活动,推荐最新行业动态 ...
- 全球大型电商测试基础架构设计概览
作者 | 茹炳晟 编辑 | Eva 本文为 eBay中国研发中心测试基础架构技术主管 茹炳晟关于"eBay高效能测试基础架构的前世今生"主题分享的部分节选,想了解全部内容,请在公众 ...
- 电商平台 lnmp 架构之 mysql 高速缓存--redis
电商平台 lnmp 架构之 mysql 高速缓存 --redis 1. redis的介绍 2. redis服务的安装 3. Redis常用命令 4. Redis异步复制 5. Redis高可用 6. ...
- 电商产品设计实战(二):电商整体产品架构
http://www.aoyii.com/ecm-pd-02.html 电商产品架构是整个电商数字系统的基本框架,它代表了这个虚拟数字世界的游戏规则,也反映出了电商企业的商业核心战略,一个好的电商产品 ...
- 《程序员》2014年11月刊:电商峰值系统架构设计
双11来临之际,<程序员>以"电商峰值系统架构设计"为主题,力邀京东.当当.小米.1号店.海尔商城.唯品会.蘑菇街.麦包包等电商企业,及商派.基调网络等服务公司,分享电 ...
- Java生鲜电商平台-电商支付流程架构实战
Java生鲜电商平台-电商支付流程架构实战 说明:我一直秉承的就是接地气的业务架构实战.我的文章都有一个这样的核心. 1. 业务场景 2. 解决问题. 3.代码实现. 4.代码重构. 5.总结与复盘. ...
最新文章
- MPB:林科院袁志林组-​栎类外生菌根形态学特征描述
- log4j配置文件说明
- XCTF-Reverse:simple-unpack
- 后台(27)——文件上传
- The test form is only available for requests from the local machine解决方法
- 【转】Eclipse+CDT+Gcc编译选项控制
- Json学习总结(5)——阿里巴巴开源库 Fastjson详解
- 99%的程序都没有考虑的网络异常
- python 下载文件-python实现下载文件的三种方法_python
- linux禁止客户端上传文件_linux 文件服务
- ps计算机设置,ps标尺怎么调出来
- [乐意黎原创]hosts文件位置及说明
- 高性能、分布式、低延迟的发布订阅中间件对比 Redis 和 emitter
- 小曾WRF自学日记(3)渐入佳境 ——WRF实例-数据下载与WPS前处理
- 依存分析:基于序列标注的中文依存句法分析模型实现
- 贪心算法 Greedy
- window10鼠标加速怎么关_鼠标加速怎么关闭_电脑鼠标加速如何关闭
- 【无标题sdasd】
- 趣题:奇怪的自然数集划分
- 信息的可用性带来最高价值的辅助决策回报
热门文章
- (4)msp430f5529东拼西凑的开环垃圾小车(舵机,电机,红外对管的应用)
- SSRS地图图例嵌入自定义图像显示解决
- [Vue warn]: Error in callback for watcher “value“
- 架设Wikipedia的本地镜像
- 查找算法之顺序查找和二分查找
- 联通电信收入之和接近移动:渐形成三足鼎立
- 现货黄金与现货白银的区别
- matlab批量修改图片的大小_图像处理成统一大小
- Deep Learning with Pytorch 读书笔记 A pretrained network that recognizes the subject of an image
- 云模型在综合评价过程中的应用