使用分布式数据库构建对等搜索引擎的算法

时间:2014-12-13 16:21:47

标签: algorithm data-structures p2p distributed-system dht

我正在寻找构建分布式torrent搜索引擎。

我知道用于寻址对等网络中节点的分布式哈希表。我不完全了解每个节点如何获取全局唯一ID。

我需要构建分布式数据库所需的算法和数据结构,我不确定。它显然需要具有高度冗余,并且尽可能高效地进行搜索。

我真正需要的是指向某些资源的指针,最好是一些代码示例。

1 个答案:

答案 0 :(得分:4)

  

我并不完全了解每个节点如何获取全局唯一ID。

我认为这与你的问题的标题和具体的实现无关。 但一般来说,它要么是随机完成的,要么是基于公共IP的哈希值,而是根据子网的一些随机子部分进行模拟调整。例如,看看bittorrent的secure node ID generation algorithm

  

我需要构建分布式数据库所需的算法和数据结构,我不确定。

这是一个非平凡的话题,我认为不能在几个段落中回答。其基础上的DHT不允许枚举存储的值或由多个节点协调的任何复杂操作,直接键值查找就是他们所做的。 要实现关键字搜索,您必须完成一些算法和语言处理体操,并添加基本DHT协议的扩展以满足这些要求。

以下是要解决的几个问题的不完整列表:

  • 不均匀的单词分布在DHT键空间的某些部分上施加比其他部分更多的负载 - 这可以在某种程度上通过移动自身的节点,目标地址故障转移或扩展负责目标密钥的节点集来减轻。并简单地放下极端的话语
  • 在多个搜索词上执行联合或交叉操作 - 这可以在某种程度上使用布隆过滤器来完成
  • 将没有空格的脚本切换为搜索术语 - 这个问题也必须由非分布式索引引擎(如lucene)解决。 afaik使用N-gram
  • 阻止包含特定字词的热门内容淹没所有其他分享该字词的结果
  • 信任。即防止关键字垃圾邮件攻击

我不确定DHT在这里是否是正确的方法。我隐约地回想起基于语言/关键字本身的其他指标,其中节点在键区中移动自身以吸引使用中的单词,从而提供必要的网络容量。

我建议点击Google学者寻找与DHT相关的关键字搜索修改或替代覆盖。