Sql server 推荐一个可扩展的数据库解决方案,它可以对数亿条记录执行盲目快速的复杂查询

Sql server 推荐一个可扩展的数据库解决方案,它可以对数亿条记录执行盲目快速的复杂查询,sql-server,database,lucene,indexing,Sql Server,Database,Lucene,Indexing,我一直在使用Lucene提供一个解决方案,我的用户可以很快地查询大量记录(1亿条以上)。用户有一个很大的表单,有很多不同的字段可以选择。它们还有一个“高级搜索”选项,可以构造自己的查询,支持带有AND、OR和NOT运算符的嵌套逻辑 我使用MSSQL作为主要数据存储,然后在Lucene中索引数据。Lucene查询将返回一个ID列表,然后直接从MSSQL数据库查询,从而避免了直接对数据库进行等效查询所产生的复杂(缓慢)查询计划。经过一点规划和设计,Lucene已经证明自己能够在查询具有大量复杂性的情

我一直在使用Lucene提供一个解决方案,我的用户可以很快地查询大量记录(1亿条以上)。用户有一个很大的表单,有很多不同的字段可以选择。它们还有一个“高级搜索”选项,可以构造自己的查询,支持带有AND、OR和NOT运算符的嵌套逻辑

我使用MSSQL作为主要数据存储,然后在Lucene中索引数据。Lucene查询将返回一个ID列表,然后直接从MSSQL数据库查询,从而避免了直接对数据库进行等效查询所产生的复杂(缓慢)查询计划。经过一点规划和设计,Lucene已经证明自己能够在查询具有大量复杂性的情况下执行非常快速的查询,例如
((a和B)或(B和C和D))或(a[X到Y]和K)或(Q,W,e,R,T,Y,U,I,O)
。你明白了

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


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

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

  • MongoDB用于大数据存储和基于快捷键的查找
  • Lucene用于超快速、复杂的查询
在索引中,我存储文档ID,然后根据需要从数据库中检索