大型网站(如约会网站)如何在其所有用户之间进行比较?

时间:2015-12-05 14:27:20

标签: database-design bigdata

所以,让我思考的数学是,500万用户 - 我们希望能够按相似性进行排名,以及可能在现场进行计算的各种其他任务不实用。

5,000,000 ** 2 = 25,000,000,000,000

即使我们假设每个比较记录都是1 Byte,也就是25 PBytes!更不用说在更改用户数据时进行大量处理。

这只是执行此类任务的成本吗?什么技术(软和硬)可以用来存储trillion records? (他们可能希望每个都大大超过1个字节!)
或者还有其他更好的解决方案可以解决这类问题吗?

1 个答案:

答案 0 :(得分:3)

我们通常使用各种算法过滤技术处理前端:在开始时训练一个小的子集,使用定制的标量相似性度量来聚类数据或将其转换为稀疏图。这种聚类允许我们对可能的匹配进行基本推断,这些匹配是从现有的匹配中得出的。利息门槛也起到了一定作用。

例如,考虑A和B在同一个集群中,匹配为0.94。 Y和Z在另一个簇中具有相同的值。然后我们进行一些簇间检查 - 并发现A和Z匹配为0.10。如果我们的兴趣阈值是0.80(并且我们可以为每个集群调整此值),那么我们就知道B和Y无法满足该阈值。在大多数情况下,我们可以在不进行进一步计算的情况下消除B的整个聚类:取决于从我们的相似性度量得出的距离度量,我们可以针对已经针对A测量的任何人设置B的严格截止值。

此外,当我们正在寻找“最佳N匹配”时,我们可以通过B的本机群集中的一些检查来提高该条形码。一个新用户得到了类似的处理:用一个集群识别,或许还有其他人注意到,其余的是具有高阈值的衍生物。

更改用户数据不需要比摄取新用户更多的工作,并且通常更容易,因为没有太多的数据更改。用户的原始记录很可能是适当的接触点。

您的后端问题有部分答案here。有许多大型数据库工具可以处理大数据,在发布问题之前先研究should have done

此外,除了一些较为成熟的数据(再次进行研究)之外,现场还出现了几个大数据machine-learning engines

免责声明:我在英特尔的可信分析平台上工作。这里的意见和建议是我自己的。