快速计算数百万的搜索值

时间:2012-09-27 19:57:16

标签: sql math

假设我有一个包含price属性的数百万个小部件的数据库。小部件属于供应商,我通过首先从供应商处购买小部件然后将其销售给客户来向客户销售小部件。通过这个基本设置,如果客户要求我提供低于50美元的每个小部件,那么列出它们是微不足道的。

但是,我以不同的方式标记来自各个供应商的小部件的价格。因此,我可能会将供应商A的小部件标记为10%,我可能会以5美元的固定费率标记供应商B的小部件。在数据库中,这些标记将存储在具有我的ID,供应商ID,标记类型(平面,百分比)和标记率的连接表中。除此之外,供应商可以在向我销售时添加他们自己的标记(这些标记将与供应商的ID,我的ID和标记类型/费率在同一个连接表中)。

因此,如果我想从供应商A出售45美元的小部件,它可能会被供应商的10%加价(达到49.50美元),然后是我自己的10美元平价加价(达到59.50美元)。这个小部件不会出现在客户端搜索价格低于50美元的小部件中。但是,80美元的小部件可能会在到达客户端时被标记为45美元,并且应该在结果中返回。这些标记可能会发生变化,让我们假设我是这个系统中数百人之一,通过供应商向客户销售小部件,所有这些都在该标记表中有自己的标记关系。

是否有先例可以在数百万个对象中快速执行此类计算?我意识到这是一个巨大的,非平凡的问题,但我很好奇如何开始解决这样的问题。

2 个答案:

答案 0 :(得分:5)

向数据库添加列并存储计算结果,并使用相关记录更改更新它们。您无法动态计算百万记录的这些值。

答案 1 :(得分:2)

  

在数百万人中快速执行此类计算是否有先例   对象?

标准。认真。数据仓库,风险预测。这样的东西 - 你的问题很小。预先计算所有组合,将它们存储在适当的更高级别的数据库服务器中,完成。

它并不大 - 严重。对于小型服务器来说,这只是一个巨大的问题,但是一旦你得到一个计算网格......这是非常微不足道的。数以百万计的物品?每台机器一分钟计算100.000个对象,1000万个是100分钟对象。你没有那么多变化。