小编car*_*rdy的帖子

高效存储时间序列数据,不浪费空间

我正在构建一个应用程序来计算电子商务网站客户的不同KPI 指标,例如(平均订单价值、平均项目数等)。KPI 是整数和/或双值,例如购买的商品数量、平均值。订单价值、毛利率...

该应用程序获取订单数据、计算指标并存储它们。我使用 MySQL 作为关系数据库。

关于指标:

我目前有 10 个指标要为每个客户计算。

指标在未来可能会增加,但不会那么频繁,所以我可以认为“10”是非常确定的。无论如何,将来更改架构根本不是问题。

我需要每周(至少)计算每个指标。指标是关于客户的。

关于客户:

客户有 30k,并且以每月 0.5k 的速度增长。

并非所有客户都以相同的频率购买。我可以有偶尔的买家,但也有重度买家。

我想显示一个图表,其中包含给定时间跨度内特定 KPI 的总体趋势。

我想显示一个图表,其中包含给定时间跨度内特定客户的指标趋势。

我的实体是:

  • 订单
  • 顾客
  • 客户_kpi

我担心存储大量无用数据

52 周 * 30k 用户 * 4+ 年 = 至少 620 万行

我有两个问题:

  1. 我是否应该在给定的时间跨度内为没有订单的客户存储行(例如,该行将全部填充为 NULL)?可以在不影响数据可视化的情况下以某种方式避免它吗?

  2. 考虑到并非所有客户每周都购买并且指标数量不太可能经常更改,哪种表结构更有效(“瘦”表与“胖”表)?

我对customers_kpi表的这两个结构存有疑问:

顾客ID kpi1 kpi2 kpi3 ..kpiN

VS

顾客ID kpi_name kpi_value

mysql database-design time

6
推荐指数
1
解决办法
312
查看次数

标签 统计

database-design ×1

mysql ×1

time ×1