如何搜索巨大的非文本数据集?

New*_*bie 35 c# search solr nosql ravendb

在我正在工作的项目中,客户端有一个旧的大型(TB级)RDBMS.所有类型的查询都很慢,没有时间来修复/重构模式.我已经确定了需要优化的常见查询集.该集分为两部分:全文和元数据查询.

我的计划是从数据库中提取数据并将其分配到两个不同的存储系统中,每个存储系统都针对特定查询集进行了优化.

对于全文搜索,Solr是最有意义的引擎.它的分片和复制功能使其非常适合一半的问题.

对于元数据查询,我不确定要采取的路线.目前,我正在考虑使用具有极度非规范化模式的RDBMS,该模式表示来自"权威"RDBMS的数据的特定子集.但是,与已经包含它们的Solr相比,我的客户担心这种子系统缺少分片和复制以及设置这些功能的难度/复杂性.在这种情况下,元数据采用整数,日期,bool,位和字符串的形式(最大大小为10chars).

是否有一个数据库存储系统具有内置的分片和复制功能,可能对查询所述元数据特别有用?也许一个没有sql的解决方案提供了一个很好的查询引擎?

请照亮.

添加/回应:

Solr可用于元数据,但元数据是易失性的.因此,我必须经常提交索引.这会导致搜索速度非常快.

Mau*_*fer 22

RavenDB:

缺点:它是AGPL许可的.根据您的开发/服务器环境,您可以认为它在.NET上运行.此外,我不知道除.NET之外的其他平台的客户端状态.

Solandra:

  • 整合Solr和Cassandra
  • 由Solr管理的全文搜索
  • 由Cassandra管理的复制和分片

缺点:尚未发布.

ElasticSearch:

ElasticSearch看起来类似于RavenDB,但似乎强调全文搜索,其中RavenDB强调是一般的NoSQL数据库.

  • @Newbie; RavenDb在后台工作程序上处理其Lucene索引,这提供了最终一致性的概念,这意味着它们可能在提供结果时仍然是陈旧的.但是,您可以编写Map/Reduce索引,并使用名为实时投影的功能,您可以将数据的子集和项目数据映射到索引中,并组合来自多种文档类型的数据. (2认同)

ala*_*lan 4

使用MongoDB作为元数据存储:

然而,缺点是您无法执行连接。明智地对数据进行非规范化,这样就可以避免这种情况。