推荐一种可扩展的数据库解决方案,它可以对数亿条记录执行极其快速的复杂查询



我一直在使用Lucene来提供一个非常有效的解决方案,我的用户可以非常快速地查询大量记录(1亿+)。用户有一个很大的表单,其中有许多不同的字段可供选择。他们也有一个"高级搜索"选项,在那里他们可以构建自己的查询,支持嵌套逻辑与AND, OR和NOT操作符。

我使用MSSQL作为我的主要数据存储,然后我在Lucene索引数据。Lucene查询返回一个id列表,然后我直接从MSSQL数据库查询,从而避免了直接对数据库尝试等效查询的复杂(缓慢)查询计划。通过一些规划和设计,Lucene已经显示出自己能够在查询非常复杂的情况下执行非常快速的查询,例如((A AND B) OR (B AND C AND D)) OR (A[X TO Y] AND K) OR (Q,W,E,R,T,Y,U,I,O)。你懂的。

我遇到的问题是一个关系问题。当一条记录有相关的属性K时,每个属性都有自己的属性J,并且用户试图执行一个搜索,指定针对单个K的多个条件J,并且这些条件中有多个本质上是数字的,这时对关系存储的需求突然变得明显,因为没有真正有效的方法来标记一个数字属性与另一个数字属性之间的关系。

显然,有一些很棒的解决方案可以存储大量数据,并且在基本级别上仍然可以快速查询。我想知道的是,如果您有任何建议,这些解决方案中的哪一个能够执行非常快速的查找,当查询通常具有一定程度的复杂性,如前所述。

据我所知,目前还没有真正好的统一解决方案。我的解决方案是:

    MongoDB用于大数据存储和基于键的快速查找
  • Lucene用于超快速,复杂的查询

在索引中存储文档id,然后根据需要从数据库中检索。

最新更新