我正在构建一个应用程序来计算电子商务网站客户的不同KPI 指标,例如(平均订单价值、平均项目数等)。KPI 是整数和/或双值,例如购买的商品数量、平均值。订单价值、毛利率...
该应用程序获取订单数据、计算指标并存储它们。我使用 MySQL 作为关系数据库。
关于指标:
我目前有 10 个指标要为每个客户计算。
指标在未来可能会增加,但不会那么频繁,所以我可以认为“10”是非常确定的。无论如何,将来更改架构根本不是问题。
我需要每周(至少)计算每个指标。指标是关于客户的。
关于客户:
客户有 30k,并且以每月 0.5k 的速度增长。
并非所有客户都以相同的频率购买。我可以有偶尔的买家,但也有重度买家。
我想显示一个图表,其中包含给定时间跨度内特定 KPI 的总体趋势。
我想显示一个图表,其中包含给定时间跨度内特定客户的指标趋势。
我的实体是:
我担心存储大量无用数据
52 周 * 30k 用户 * 4+ 年 = 至少 620 万行
我有两个问题:
我是否应该在给定的时间跨度内为没有订单的客户存储行(例如,该行将全部填充为 NULL)?可以在不影响数据可视化的情况下以某种方式避免它吗?
考虑到并非所有客户每周都购买并且指标数量不太可能经常更改,哪种表结构更有效(“瘦”表与“胖”表)?
我对customers_kpi表的这两个结构存有疑问:
顾客ID | kpi1 | kpi2 | kpi3 | ..kpiN | 从 | 到 |
---|
VS
顾客ID | kpi_name | kpi_value | 从 | 到 |
---|