匹配2个名字数据库,给出第一个,最后一个,性别和DOB?

时间:2013-09-26 15:51:14

标签: mysql

我收集了来自我的用户的Facebook好友列表,包括First,Last,Gender和DOB。然后我尝试将名称数据库(存储为MySQL中的表)与另一个由类似信息组成的数据库进行比较。

从概念上链接这些结果的最佳方法是什么,第二个数据库是更大的记录集(> 500k行)?

以下是我的建议:

  • 通过Facebook名称进行迭代
  • 搜索上一个+ DOB - 如果匹配,则采取“自信”匹配
  • 搜索上一个+第一个 - 如果匹配,则假设“可能”匹配
  • 搜索最后+ Lichtenstein(第一)超过一定水平,假设“可能”匹配

我是否缺少可能比顺序mySQL方法更快的分布式计算概念?还有哪些陷阱可能会出现,并指出没有假阳性而不是错过记录更为重要?

2 个答案:

答案 0 :(得分:1)

是的,你的想法似乎是一个更好的算法。

假设您需要考虑性能,可以使用缓存来存储刚搜索的值。您还可以在NoSQL数据库中开始索引结果,以便结果更快,从而获得更好的读取性能。如果您必须使用MySQL,请阅读polyglot persistence

假设你很关注简单性,你仍然可以在NoSQL数据库中使用索引,所以在你不必进行大量连接的时候会破坏用户和开发人员的体验。

可能会有更多的问题,但这一切都取决于您希望在何处使用它,在网站中使用,或者用于此类数据分析目的。

答案 1 :(得分:1)

如果你想对整个数据集进行操作(而不是某些交互式的东西),这个数据集的大小可能很小,只能悄悄进入内存并从那里开始。使用List挂起数据,然后创建Map>每个唯一的姓氏(通过整数索引)指向列表中存在的所有位置。您还将自己设置为能够执行更复杂的匹配逻辑,而不会试图强迫SQL执行此操作。特别是因为你正在跨越两个不同的物理数据库...