统计架构
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 统计错误码
| 错误码 | 含义 | CODE |
|---|---|---|
| 801 | 错误的请求参数 | INVALID_REQUEST_PARAMETER |
| 802 | 数据查询异常 | BUSINESS_ERROR |
5 返回模型(VO)
通用模型

地图模型

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