搜索查询的水平缩放

时间:2015-05-15 03:56:42

标签: sql postgresql hadoop apache-storm

我们正在建立简历评分服务,我们正在使用Postgres进行复杂的查询,以找到最符合空缺的cv&#39。 问题是,我们使用非常复杂的启发式方法来计算cv到空缺,并且每个查询的平均cv数量正在增加。 我想把这种负载放在数据库之外,并寻找现有的解决方案来横向扩展这样的负载。 查询应该在几分之一秒内执行,可以有数百个并发查询。每个查询平均得分为10k cvs。每个cv类似于当前关系形式的10个表中的大约50个记录。

我希望集群系统在多个并行进程(在许多服务器上)上运行每个查询并返回聚合结果。它应该快速且容错。 我当时正在寻找Hadoop,但看起来它是专为批量处理而设计的,而不是针对实时低延迟负载。有Apache Storm,但它专为连续流处理而设计。所以我不是shure :)

哪种工具可以满足我的需求? 谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 确保你没有重做工作,如果cv已被评分,则将其标记为得分并且不进行重新处理,除非有必要。

  2. 除非您在postgres中对数据进行分区,否则您可能希望这样做。通常不需要定期访问所有行。

  3. 听起来你想主要扩展读取,在这种情况下,postgres只读集群可能是一个选项。

  4. 看一下Elasticsearch,它的目的是做加权评分,分面等等。它也应该扩展,尽管我自己也没有尝试过。

  5. 我肯定从1开始,除非你必须做,否则不做。