1 统计优化思路
传统的统计功能为统计整个数据库中的数据进行整理,在前端展示,这样的统计主要有以下几个问题:
- 表结构复杂,在统计业务中,很多数据、字段用不到,造成性能浪费,影响响应时间。新的统计独立与原库表之外,从新构造新的表结构,对表的字段进行精简。
- 统计多数业务会使用联合查询。因为原始的关系型数据库,表结构一般只存储显示字段以及与其他表关联的字段,通常情况下不会为其它业务提供字段的冗余,这样的数据查询起来的联合查询sql会格外的复杂,不易与开发,且性能较低。新的统计对表结构进行了调整,相当于生成一个专门为统计服务的表结构,提高统计性能。
- 提高服务器性能的路上,为了提高数据库性能,分库/分表 是必不可少的选择之一,对于分表后的数据进行统计,那么难度更是复杂,核心业务需要兼顾统计业务来进行 分库/分表 操作,包袱很重。拆离统计之后,统计可以专心为自己的业务,数据进行优化操作,不再需要
2 统计库数据生成策略

3 数据库结构
- 会员数据表
字段名 | 提示文字 | 类型 | 长度 | 是否主键 |
---|
id | id | 整数 | 10 | 是 |
member_id | 会员id | 整数 | 10 | 否 |
member_name | 会员名字 | 字符串 | 255 | 否 |
create_time | 注册日期 | 整数 | 12 | 否 |
- 订单数据表
字段名 | 提示文字 | 类型 | 长度 | 是否主键 |
---|
id | id | 整数 | 10 | 是 |
create_time | 订单创建时间 | 整数 | 12 | 否 |
ship_cityid | 市id | 整数 | 10 | 否 |
ship_provinceid | 省id | 整数 | 10 | 否 |
goods_num | 订单商品数量 | 字符串 | 255 | 否 |
order_price | 订单金额 | 字符串 | 255 | 否 |
pay_status | 付款状态 | 字符串 | 255 | 否 |
order_status | 订单状态 | 字符串 | 255 | 否 |
seller_id | 商家id | 整数 | 10 | 否 |
buyer_id | 会员id | 整数 | 10 | 否 |
sn | 订单编号 | 字符串 | 255 | 否 |
seller_name | 商家名称 | 大文本 | 255 | 否 |
buyer_name | 商家名称 | 大文本 | 255 | 否 |
- 订单商品表
字段名 | 提示文字 | 类型 | 长度 | 是否主键 |
---|
id | id | 整数 | 10 | 是 |
create_time | 创建时间 | 整数 | 12 | 否 |
category_id | 分类id | 整数 | 10 | 否 |
category_path | 分类path | 字符串 | 255 | 否 |
sub_total | 小计 | 浮点型 | 20,2 | 否 |
price | 商品单价 | 浮点型 | 20,2 | 否 |
goods_num | 数量 | 整数 | 10 | 否 |
goods_name | 商品名称 | 字符串 | 255 | 否 |
goods_id | 商品id | 整数 | 10 | 否 |
order_sn | 订单编号 | 字符串 | 255 | 否 |
industry_id | 行业id | 长整型 | 10 | 否 |
- 售后数据表
字段名 | 提示文字 | 类型 | 长度 | 是否主键 |
---|
id | id | 整数 | 10 | 是 |
member_id | 会员id | 整数 | 10 | 否 |
seller_id | 商家id | 整数 | 10 | 否 |
order_sn | 订单sn | 字符串 | 255 | 否 |
refund_sn | 售后订单sn | 字符串 | 255 | 否 |
refund_price | 退还金额 | 浮点型 | 20,2 | 否 |
create_time | 创建日期 | 整数 | 12 | 否 |
- 店铺流量数据表
字段名 | 提示文字 | 类型 | 长度 | 是否主键 |
---|
id | id | 整数 | 10 | 是 |
seller_id | 店铺id | 整数 | 10 | 否 |
vs_year | 年份 | 整数 | 4 | 否 |
vs_month | 月份 | 整数 | 4 | 否 |
vs_day | 日期 | 整数 | 4 | 否 |
vs_num | 访问量 | 整数 | 10 | 否 |
- 商品流量数据年表
字段名 | 提示文字 | 类型 | 长度 | 是否主键 |
---|
id | id | 整数 | 10 | 是 |
seller_id | 店铺id | 整数 | 10 | 否 |
goods_id | 商品id | 整数 | 10 | 否 |
goods_name | 商品名称 | 字符串 | 50 | 否 |
vs_year | 年份 | 整数 | 4 | 否 |
vs_num | 访问量 | 整数 | 10 | 否 |
- 商品流量数据年表
字段名 | 提示文字 | 类型 | 长度 | 是否主键 |
---|
id | id | 整数 | 10 | 是 |
seller_id | 店铺id | 整数 | 10 | 否 |
goods_id | 商品id | 整数 | 10 | 否 |
goods_name | 店铺名称 | 字符串 | 50 | 否 |
vs_month | 月份 | 整数 | 4 | 否 |
vs_num | 访问量 | 整数 | 10 | 否 |
4 统计错误码
异常类
StatisticsException
错误码
类:StatisticsErrorCode
错误码 | 含义 | CODE |
---|
801 | 错误的请求参数 | INVALID_REQUEST_PARAMETER |
802 | 数据查询异常 | BUSINESS_ERROR |
5 返回模型(VO)
通用模型

地图模型

6 分表查询说明
- 目前进行分表的表包含 订单数据、订单商品数据、页面流量。
- 分表规则:一年一张。(例如:es_xxx_xxx 表进行分表,2018年统计表为es_xxx_xxx_2018 )