一. 数据仓库概念

二. 项目需求及架构设计

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 电商常识(SKUSPU

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

性别

email

邮箱

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. 雪花模型、星型模型和星座模型

在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型。

未完待续........

电商数据仓库的架构、模型与应用实践相关推荐

  1. 视频教程-全新大数据企业电商数据仓库项目实战教程-大数据

    全新大数据企业电商数据仓库项目实战教程 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业.拥有丰 ...

  2. 数据仓库电商建模_真实电商数据仓库全流程开发详解,资源教程下载

    课程名称 Hadoop大数据视频教程-第一季:真实电商数据仓库全流程开发详解(共46讲),资源教程下载 课程目录 第一部分:数据仓库基础理论与技术圈 第一章:互联网电商大数据环境 第二章:商业智能与数 ...

  3. 海尔电商峰值系统架构设计最佳实践

    多数电商平台都会经历相似的过程,流量和业绩每年以几倍至十几倍的速度增长,每年都要接受几次大规模.全方位的系统检阅,例如双11.周年庆等购物狂欢节,期间流量和订单可能是日常的十几倍甚至几十倍,产生的峰值 ...

  4. 聊聊电商交易平台的架构设计(干货)

    JAVA日知录 2023-04-13 08:37 发表于安徽 以下文章来源于vivo互联网技术 ,作者官网商城开发团队 vivo互联网技术. 分享 vivo 互联网技术干货与沙龙活动,推荐最新行业动态 ...

  5. 全球大型电商测试基础架构设计概览

    作者 | 茹炳晟 编辑 | Eva 本文为 eBay中国研发中心测试基础架构技术主管 茹炳晟关于"eBay高效能测试基础架构的前世今生"主题分享的部分节选,想了解全部内容,请在公众 ...

  6. 电商平台 lnmp 架构之 mysql 高速缓存--redis

    电商平台 lnmp 架构之 mysql 高速缓存 --redis 1. redis的介绍 2. redis服务的安装 3. Redis常用命令 4. Redis异步复制 5. Redis高可用 6. ...

  7. 电商产品设计实战(二):电商整体产品架构

    http://www.aoyii.com/ecm-pd-02.html 电商产品架构是整个电商数字系统的基本框架,它代表了这个虚拟数字世界的游戏规则,也反映出了电商企业的商业核心战略,一个好的电商产品 ...

  8. 《程序员》2014年11月刊:电商峰值系统架构设计

    双11来临之际,<程序员>以"电商峰值系统架构设计"为主题,力邀京东.当当.小米.1号店.海尔商城.唯品会.蘑菇街.麦包包等电商企业,及商派.基调网络等服务公司,分享电 ...

  9. Java生鲜电商平台-电商支付流程架构实战

    Java生鲜电商平台-电商支付流程架构实战 说明:我一直秉承的就是接地气的业务架构实战.我的文章都有一个这样的核心. 1. 业务场景 2. 解决问题. 3.代码实现. 4.代码重构. 5.总结与复盘. ...

最新文章

  1. MPB:林科院袁志林组-​栎类外生菌根形态学特征描述
  2. log4j配置文件说明
  3. XCTF-Reverse:simple-unpack
  4. 后台(27)——文件上传
  5. The test form is only available for requests from the local machine解决方法
  6. 【转】Eclipse+CDT+Gcc编译选项控制
  7. Json学习总结(5)——阿里巴巴开源库 Fastjson详解
  8. 99%的程序都没有考虑的网络异常
  9. python 下载文件-python实现下载文件的三种方法_python
  10. linux禁止客户端上传文件_linux 文件服务
  11. ps计算机设置,ps标尺怎么调出来
  12. [乐意黎原创]hosts文件位置及说明
  13. 高性能、分布式、低延迟的发布订阅中间件对比 Redis 和 emitter
  14. 小曾WRF自学日记(3)渐入佳境 ——WRF实例-数据下载与WPS前处理
  15. 依存分析:基于序列标注的中文依存句法分析模型实现
  16. 贪心算法 Greedy
  17. window10鼠标加速怎么关_鼠标加速怎么关闭_电脑鼠标加速如何关闭
  18. 【无标题sdasd】
  19. 趣题:奇怪的自然数集划分
  20. 信息的可用性带来最高价值的辅助决策回报

热门文章

  1. (4)msp430f5529东拼西凑的开环垃圾小车(舵机,电机,红外对管的应用)
  2. SSRS地图图例嵌入自定义图像显示解决
  3. [Vue warn]: Error in callback for watcher “value“
  4. 架设Wikipedia的本地镜像
  5. 查找算法之顺序查找和二分查找
  6. 联通电信收入之和接近移动:渐形成三足鼎立
  7. 现货黄金与现货白银的区别
  8. matlab批量修改图片的大小_图像处理成统一大小
  9. Deep Learning with Pytorch 读书笔记 A pretrained network that recognizes the subject of an image
  10. 云模型在综合评价过程中的应用