【问题标题】:Data Architecture: Deduplication of product catalogs数据架构:产品目录的重复数据删除
【发布时间】:2012-09-15 03:50:53
【问题描述】:

我正在考虑合并(和重复数据删除)多个产品目录的策略。

我将使用 no-sql 数据库,并且需要查询 N 个目录部分重叠的产品。

分类、标签、描述等某些方面需要规范化,我需要跟踪哪些目录包含每个独特的项目(产品重复数据删除在每个目录中,例如按 UPC)。

我目前的想法是将各个目录导入到自己的目录中 表,然后使用自建算法来识别“相似”项目, 执行规范化,然后创建一个最终的“主”表 包含规范化和去重的数据 - (主记录 值将从它所在的任何目录或目录组合中复制 从中选择并包含指向包含该项目的目录的链接)。

我想知道关于这个主题还有哪些其他想法?我应该研究哪些研究领域来更好地教育自己?

【问题讨论】:

  • 重复数据删除和规范化是适用于关系数据库的概念,不能很好地转化为 NoSQL。请记住,NoSQL 实现不支持连接,这使得查询完全规范化的数据变得极其困难。
  • 我认为您在关系数据库中使用重复数据删除和规范化的术语。在这种情况下,产品目录的重复数据删除和分类等功能的规范化是更高级别的概念,与 SQL 模式的严格租户无关。之所以考虑 NoSQL 方法,主要是因为需要在大型数据集上执行一些更大的聚类、分类和/或推荐算法。在我目前的想法中,为了有效地适应 NoSQL DB 模型,实际上会有相当多的数据重复。

标签: database-design architecture duplicates hbase record-linkage


【解决方案1】:

您没有提供很多细节,但据我了解,如果您要使用 HBase,您可以执行以下操作:

  1. 将所有数据以原始格式或接近的格式写入hbase 那
  2. 编写一个 map/reduce 来解决问题:

    2.1。在映射阶段归一化并发出潜在的键

    2.2。在他减少阶段(你得到所有具有相同键的记录)产生主记录

  3. 将主记录导出到您想要的位置

【讨论】:

  • 是的,这就是它的要点。我真的只是想尝试了解我还不知道的东西,看看是否有我可能还不知道的工具、框架和社区专注于这些挑战。我对 hadoop、hbase 和 mahout 非常熟悉。
  • 我没有说清楚,但我的意思是您应该将所有内容写入一个 HBase 表而不是多个表。 HBase 轻松支持多结构数据,您可以解决地图端的一些重复数据(使用组合器)。
【解决方案2】:

这里有一些本地公司每晚/每周从 NoSql 生成 Sql 模式以用于报告目的。

据我了解,他们使用的方法正是您所描述的。我相信您的数据集非常大,您不应该对该策略有任何问题。

【讨论】:

    【解决方案3】:

    自 1940 年代以来(不,老实说),这一直是一个巨大的研究领域,名称为 record linkage(但不幸的是,它也有许多其他名称,如“身份解析”、“数据匹配”、“合并/清除”等)。这里有很多东西要学,人们已经开发了很多你可以使用的技术和工具。我强烈建议您在尝试自己编写内容之前先熟悉这些内容。

    请注意,关键问题是性能。您基本上必须比较所有记录对(即 O(n^2)),并且理想情况下应该使用模糊字符串比较器(它们都很慢)。仅此一项就是使用已经解决了性能问题的工具的一个很好的理由,并且还可以提供字符串比较器等。

    维基百科链接包含对研究和工具的引用。强烈推荐看看。

    无论如何,如果您想了解更多信息,第一本(我所知道的)关于该主题的书已于今年早些时候出版:Data Matching, by Peter Christen。两篇很好的概述论文是重复记录检测:调查(Elmagarmid、Ipeirotis 和 Verykios)和记录链接和当前研究方向概述(William Winkler)。我会发布链接,但反垃圾邮件不会让我。今年早些时候,我对此做了一个演示,简要概述了问题、研究和解决方案(它在幻灯片共享上,标题为“链接没有通用标识符的数据”)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多