目录
- 一、电商业务简介
-
- 1.1 电商业务流程
- 1.2 电商常识(SKU、SPU)
- 1.3 电商系统表结构
-
- 1.3.1 活动信息表(activity_info)
- 1.3.2 活动规则表(activity_rule)
- 1.3.3 活动商品关联表(activity_sku)
- 1.3.4 平台属性表(base_attr_info)
- 1.3.5 平台属性值表(base_attr_value)
- 1.3.6 商品一级分类表(base_category1)
- 1.3.7 二级分类表(base_category2)
- 1.3.8 三级分类表(base_category3)
- 1.3.9 字典表(base_dic)
- 1.3.10 省份表(base_province)
- 1.3.11 地区表(base_region)
- 1.3.12 品牌表(base_trademark)
- 1.3.13 购物车表(cart_info)
- 1.3.14 评价表(comment_info)
- 1.3.15 优惠券信息表(coupon_info)
- 1.3.16 优惠券优惠范围表(coupon_range)
- 1.3.17 优惠券领用表(coupon_use)
- 1.3.18 收藏表(favor_info)
- 1.3.19 订单明细表(order_detail)
- 1.3.20 订单明细活动关联表(order_detail_activity)
- 1.3.21 订单明细优惠券关联表(order_detail_coupon)
- 1.3.22 订单表(order_info)
- 1.3.23 退单表(order_refund_info)
- 1.3.24 订单状态流水表(order_status_log)
- 1.3.25 支付表(payment_info)
- 1.3.26 退款表(refund_payment)
- 1.3.27 SKU平台属性表(sku_attr_info)
- 1.3.28 SKU信息表(sku_info)
- 1.3.29 SKU销售属性表(sku_sale_attr_value)
- 1.3.30 SPU信息表(spu_info)
- 1.3.31 SPU销售属性表(spu_sale_attr)
- 1.3.32 SPU销售属性值表(spu_sale_attr_value)
- 1.3.33 用户地址表(user_address)
- 1.3.34 用户信息表(user_info)
- 二、业务数据采集模块
- 三、数据环境准备
-----------------------------------------------------分隔符-----------------------------------------------------
数据仓库之电商数仓-- 1、用户行为数据采集==>
数据仓库之电商数仓-- 2、业务数据采集平台==>
数据仓库之电商数仓-- 3.1、电商数据仓库系统(DIM层、ODS层、DWD层)==>
数据仓库之电商数仓-- 3.2、电商数据仓库系统(DWS层)==>
数据仓库之电商数仓-- 3.3、电商数据仓库系统(DWT层)==>
数据仓库之电商数仓-- 3.4、电商数据仓库系统(ADS层)==>
数据仓库之电商数仓-- 4、可视化报表Superset==>
数据仓库之电商数仓-- 5、即席查询Kylin==>
一、电商业务简介
1.1 电商业务流程
电商的业务流程可以以一个普通用户的浏览足迹为例进行说明,用户点开电商首页开始浏览,可能会通过分类查询
也可能通过全文搜索
寻找自己中意的商品,这些商品无疑都是存储在后台的管理系统
中的。
当用户寻找到自己中意的商品,可能会想要购买,将商品添加到购物车
后发现需要登录
, 登录后对商品进行结算
,这时候购物车的管理和商品订单信息的生成都会对业务数据库产生影响,会生成相应的订单数据
和支付数据
。
订单正式生成之后,还会对订单进行跟踪处理
,直到订单全部完成
。
电商的主要业务流程包括用户前台浏览商品时的商品详情的管理
,用户商品加入购物车进行支付时用户个人中心
&支付服务的管理
,用户支付完成后订单后台服务的管理
,这些流程涉及到了十几个甚至几十个业务数据表,甚至更多。
1.2 电商常识(SKU、SPU)
SKU=StockKeepingUni(t 库存量基本单位) : 现在已经被引申为产品统一编号的简称, 每种产品均对应有唯一的 SKU 号。
SPU(Standard Product Unit): 是商品信息聚合的最小单位,是一组可复用、易检索的 标准化信息集合。
例如:iPhoneX 手机就是 SPU。一台银色、128G 内存的、支持联通网络的 iPhoneX,就 是 SKU。
tips:
简单来说,SKU、SPU都是指一类产品;SPU表示商品名称、型号相同的一类商品;SKU是指商品名称、型号、各个参数属性也相同的一类商品。
SPU 表示一类商品。好处就是:可以共用商品图片,海报、销售属性等。
1.3 电商系统表结构
本电商数仓系统涉及到的业务数据表结构关系共 34 个表,以订单表、用户表、SKU 商品表、活动表和优惠券表为中心,延伸出了优惠券领用表、支付流水表、活动订单表、订单 详情表、订单状态表、商品评论表、编码字典表退单表、SPU 商品表等,用户表提供用户的详细信息,支付流水表提供该订单的支付详情,订单详情表提供订单的商品数量等情况,商品表给订单详情表提供商品的详细信息。
电商业务表
后台管理系统
1.3.1 活动信息表(activity_info)
1.3.2 活动规则表(activity_rule)
1.3.3 活动商品关联表(activity_sku)
1.3.4 平台属性表(base_attr_info)
1.3.5 平台属性值表(base_attr_value)
1.3.6 商品一级分类表(base_category1)
1.3.7 二级分类表(base_category2)
1.3.8 三级分类表(base_category3)
1.3.9 字典表(base_dic)
1.3.10 省份表(base_province)
1.3.11 地区表(base_region)
1.3.12 品牌表(base_trademark)
1.3.13 购物车表(cart_info)
1.3.14 评价表(comment_info)
1.3.15 优惠券信息表(coupon_info)
1.3.16 优惠券优惠范围表(coupon_range)
1.3.17 优惠券领用表(coupon_use)
1.3.18 收藏表(favor_info)
1.3.19 订单明细表(order_detail)
1.3.20 订单明细活动关联表(order_detail_activity)
1.3.21 订单明细优惠券关联表(order_detail_coupon)
1.3.22 订单表(order_info)
1.3.23 退单表(order_refund_info)
1.3.24 订单状态流水表(order_status_log)
1.3.25 支付表(payment_info)
1.3.26 退款表(refund_payment)
1.3.27 SKU平台属性表(sku_attr_info)
1.3.28 SKU信息表(sku_info)
1.3.29 SKU销售属性表(sku_sale_attr_value)
1.3.30 SPU信息表(spu_info)
1.3.31 SPU销售属性表(spu_sale_attr)
1.3.32 SPU销售属性值表(spu_sale_attr_value)
1.3.33 用户地址表(user_address)
1.3.34 用户信息表(user_info)
二、业务数据采集模块
2.1 MySQL安装
2.1.1 安装MySQL
- 如图,将安装包和JDBC驱动上传到/opt/software/mysql:
- 卸载自带的Mysql-libs
[xiaobai@hadoop102 mysql]$ rpm -qa | grep -i -E mysql\ | mariadb | xargs =-n1 sudo rpm -e --nodeps
tips: 查询自带的rpm包 -i忽略大小写 -E正则表达式查询 mysql/mariadb; xargs=-n1 表示将上一个命令的输出作为下一个命令sudo rpm -e --nodeps
的输入。
- 安装MySQL依赖:
[xiaobai@hadoop102 mysql]$ sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
[xiaobai@hadoop102 mysql]$ sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
[xiaobai@hadoop102 mysql]$ sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
- 安装mysql-client:
[xiaobai@hadoop102 mysql]$ sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
- 安装mysql-server:
[xiaobai@hadoop102 mysql]$ sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm
注⚠️:
若是报以下错误,是由于yum安装了旧版本的GPG keys造成的,从rpm版本4.1后,在安装或升级软件包时会自动检查软件包的签名。
解决方法: 在安装包命令后加上--force --nodeps
:
[xiaobai@hadoop102 mysql]$ sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm --force --nodeps
- 启动MySQL:
[xiaobai@hadoop102 mysql]$ sudo systemctl start mysqld
- 查看MySQL密码:
[xiaobai@hadoop102 mysql]$ sudo cat /var/log/mysqld.log | grep password
2.1.2 配置MySQL
注⚠️:
配置只要是root用户 + 密码,在任何主机上都可以登录MySQL数据库。
- 用刚查询到的密码进入MySQL:
使用此方法进不去mysql,提示ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost错误的请戳这里==>
- 设置复杂密码(MySQL密码策略):
mysql> set password=password("H232%sd=55");
- 更改MySQL密码策略:
mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0;
- 设置自己的密码:
mysql> set password=password("******");
- 进入MySQL库:
mysql> use mysql
- 查询user表:
mysql> select user, host from user;
+-----------+-----------+
| user | host |
+-----------+-----------+
| mysql.sys | localhost |
| root | localhost |
+-----------+-----------+
2 rows in set (0.00 sec)
- 修改user表,把Host表内容修改为%:
mysql> update user set host="%" where user="root";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select user,host from user;
+-----------+-----------+
| user | host |
+-----------+-----------+
| root | % |
| mysql.sys | localhost |
+-----------+-----------+
2 rows in set (0.00 sec)
- 刷新:
mysql> flush privileges;
- 退出:
mysql> quit
2.2 业务数据生成
2.2.1 连接MySQL
通过Navicat Premium连接MySQL数据库,可先点击连接测试
进行测试:
2.2.2 建表语句
-
通过 Navicat 创建数据库
gmall
; -
如图,设置数据库编码: 默认字符集设为
utf8
,默认排序规则设为utf8_general_ci
:
-
导入数据库结构脚本(
gmall.sql
):打开数据库–>运行sql文件–>gmall.sql–>开始:
注⚠️:编码选择utf-8;
-
如图,右键点击‘表’ 进行‘刷新’即可看见数据库中的表:
2.2.3 生成业务数据
- 在 hadoop102 的/opt/module/目录下创建
db_log
文件夹:
[xiaobai@hadoop102 module]$ mkdir db_log/
-
将业务数据生成器以及配置文件
gmall2020-mock-db-2021-01-22.jar
、application.properties
上传到 hadoop102 的 /opt/module/db_log 路径上;
-
根据需求修改 application.properties 相关配置:
logging.level.root=info
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://hadoop102:3306/gmall?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=记得修改密码!
logging.pattern.console=%m%n
mybatis-plus.global-config.db-config.field-strategy=not_null
#业务日期
mock.date=2020-06-14
#是否重置 注意:第一次执行必须设置为1,后续不需要重置不用设置为1
mock.clear=1
#是否重置用户 注意:第一次执行必须设置为1,后续不需要重置不用设置为1
mock.clear.user=1
#生成新用户数量
mock.user.count=100
#男性比例
mock.user.male-rate=20
#用户数据变化概率
mock.user.update-rate:20
#收藏取消比例
mock.favor.cancel-rate=