mysql - 匹配 2 个姓名数据库,给出名字、姓氏、性别和出生日期?

标签 mysql

我从用户那里收集 Facebook 好友列表,包括名字、姓氏、性别和出生日期。然后,我尝试将该名称数据库(作为 MySQL 中的表存储)与包含类似信息的另一个数据库进行比较。

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

这是我的提议:

  • 迭代 Facebook 名称
  • 搜索最后 + 出生日期 - 如果它们匹配,则假定“可信”匹配
  • 搜索最后一个 + 第一个 - 如果它们匹配,则假定“可能”匹配
  • 搜索 Last + Lichtenstein(First) 超过一定级别,假设“可能”匹配

我是否缺少一些分布式计算概念,这些概念可能会比顺序 mySQL 方法更快?注意到没有误报比错过记录更重要,还会出现哪些其他陷阱?

最佳答案

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

假设您关心性能,您可以使用缓存来存储刚刚搜索的值。您还可以开始在 NoSQL 数据库中对结果建立索引,这样结果会非常快,从而获得更好的读取性能。如果您必须使用 MySQL,请阅读 polyglot persistence

假设您关心的是简单性,您仍然可以在 NoSQL 数据库中使用索引,因此随着时间的推移,您不必进行无数会破坏用户和开发人员体验的联接。

可能还有更多的担忧,但这完全取决于您想在哪里使用它、在网站中使用它或用于此类数据分析目的。

关于mysql - 匹配 2 个姓名数据库,给出名字、姓氏、性别和出生日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032937/

相关文章:

python - 将字符串变量传递给 MySQL,作为元组失败

mysql - 如果我将列的类型从 int 更改为 Year 会发生什么?

mysql - 结合两个复杂的查询

php - MySQL 5.0.12 - 列表不在 GROUP BY 子句中并且包含非聚合列?

PHP SQL 函数

mysql - SQL 插入选择依赖于其他表

c# - Web服务返回数据库中自动递增的值

php - 如何创建一个具有自动增量但不从 1 开始而是从所需数字开始的交易编号

MySQL优化过早杀死

php - PDO - 检查行是否更新?