替代/更快速地建模此数据的方法

时间:2015-03-16 14:25:49

标签: database postgresql

我们的SaaS应用程序可帮助电子商务商店创建更有效的促销活动。为了做到这一点,我们需要保留相当多的数据 - 促销数据以及这些促销与应用这些促销的每个客户群相关联的所有产品。我已经对这些数据进行了规范化,但我觉得这些表格中的一个,即promotion_products,可能会增长太快,并且会减慢我们最关键的查询速度。

以下是如何快速填充此表:如果商店有25,000种产品并且每10个客户组每周运行1次促销,那么promotion_products表每周将有250,000个新条目(100万/月) 。由于这是一个SaaS产品,我们有许多客户创建相同数量的数据或更多。

如何改进此架构,以便可以快速查询promotion_products中的数据?

products
  - product_id
  - customer_id
  - name

promotions
  - promotion_id
  - customer_id
  - promotion (i.e. 20% off etc)

promotion_products (need fast read access)
  - product_id
  - promotion_id
  - customer_id
  - group_id (each offer is associated w/ one or many customer groups)

1 个答案:

答案 0 :(得分:0)

看起来你通过在promotion_products表中添加customer_id来对其进行非规范化,这应该会有所帮助,特别是如果它已编入索引。您还可以考虑按客户和promotion_id对promotion_products表进行聚类。

我想知道为什么group_id和customer_id属于promotion_products,因为它似乎是冲突的,因为group_id似乎与多个客户有关。

确保索引要查询的所有字段。