【发布时间】:2011-08-24 15:22:22
【问题描述】:
在我正在工作的一个项目中,客户有一个旧的和海量(TB 级)的 RDBMS。各种查询都很慢,没有时间修复/重构模式。我已经确定了需要优化的常见查询集。该集合分为两部分:全文查询和元数据查询。
我的计划是从他们的数据库中提取数据并将其分区到两个不同的存储系统中,每个系统都针对特定的查询集进行了优化。
对于全文搜索,Solr 是最有意义的引擎。它的分片和复制功能非常适合解决一半的问题。
对于元数据查询,我不确定该采取什么途径。目前,我正在考虑使用具有极度非规范化模式的 RDBMS,该模式表示来自“权威”RDBMS 的特定数据子集。但是,我的客户担心与已经包含它们的 Solr 相比,此类子系统缺乏分片和复制,以及设置此类功能的困难/复杂性。在这种情况下,元数据采用整数、日期、布尔值、位和字符串的形式(最大大小为 10 个字符)。
是否有具有内置分片和复制功能的数据库存储系统可能对查询所述元数据特别有用?也许有一个提供良好查询引擎的无 sql 解决方案?
请点亮。
补充/回复:
Solr 可用于元数据,但是元数据是易失的。因此,我必须经常提交索引。这会导致搜索性能下降很快。
【问题讨论】:
-
啊,你不想在 Solr 中进行元数据查询有什么特别的原因吗?它也非常有能力处理所有其他数据类型。
-
Solr 可用于元数据,但是元数据是易失的。因此,我必须经常提交索引。这将导致搜索性能下降得非常快。嗯,也许某种缓解这个问题的索引管理策略可以产生预期的结果?我会考虑的。
-
啊。我的印象是数据库主要是历史的和静态的,而不是快速变化的。您开始徘徊在分布式搜索领域:我希望您必须在其他解决方案之上推出自己的索引管理(或者如果您有预算,请付钱给其他人为您推出它:))
-
元数据有多少数据?
-
@Charles,很好的问题,元数据大约为数百 GB,不到 1 TB 的存储空间。粗略地说,在任何给定时间点都是 500GB-1000GB。这种特殊性是因为我打算执行某种归档策略来在实时搜索和基于工作的搜索之间划清界限(例如,您的搜索需要一些时间来处理,几分钟后回来查看您的结果)。当然,在这个问题的背景下,我正在解决近实时用例。
标签: c# search solr nosql ravendb