【问题标题】:Algorithm to quickly map out relationships among millions of objects快速绘制数百万对象之间关系的算法
【发布时间】:2012-09-19 21:20:38
【问题描述】:

我有一个包含数百万行的关系数据库表,每一个都链接到该表中的数百行。这是一个简单的关系,但当有数百万行时就会出现问题。每次添加新行时,都必须扫描整个范围。

有没有更有效的方法来执行这个操作?

我确信搜索引擎已经在更大范围内解决了这个问题。 (这类问题有术语吗?)

【问题讨论】:

  • “扫描整个范围”是什么意思?您能否向我们提供更多有关您将要做什么的信息 - 用英语进行,而不预先假定任何实施。
  • 每一行都根据匹配的关键字链接到其他行。添加新行时,系统必须扫描表中的每一行以查找匹配项。它可能是零个或数百个匹配项。
  • 为什么它“必须找到匹配”?再说一次,你想用英语做什么?忘记“行”、“表”和“数据”。请告诉我们意图。
  • 每一行都有 location nvarchar 字段(城市、州、国家的名称),它链接到同一位置产生的其他行

标签: database performance algorithm search-engine relationship


【解决方案1】:

标准数据库系统会使用索引,这样您就可以处理新行,而无需对整个数据库进行线性扫描。

传统的文本搜索系统会批量处理大量影响,例如对所有单词进行排序以构建倒排索引。它会等待一段时间来积累(或从 Web 收集)足够的输入以使批处理运行值得 - 因此您将批处理的成本分散在大量输入上。然后,您可以将批处理的结果与迄今为止累积的数据合并,或者将其分开并在用户提交查询时搜索多个索引数据。

如果没有您提出更具体的问题,我无法生成更具体的内容,但您可能会发现从大量输入行中提取关键字并将它们排序以生成单个排序关键字列表有助于匹配过程,或者可能在当前存储的所有行中保留关键字的倒排索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2011-04-13
    相关资源
    最近更新 更多