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

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

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

对于元数据查询,我不确定该走什么路线。当前,我正在考虑将RDBMS与高度非规范化的架构一起使用,该架构表示来自“权威” RDBMS的数据的特定子集。但是,我的客户担心的是,与已经包含这些子系统的Solr相比,缺少此类子系统的分片和复制以及设置此类功能的难度/复杂性。在这种情况下,元数据采用整数,日期, bool 值,位和字符串的形式(最大大小为10个字符)。

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

请照亮。

补充/回应:

Solr可以用于元数据,但是元数据是易失的。因此,我将不得不经常致力于索引。这将导致搜索降级得很快。

最佳答案

MongoDB 用于元数据存储:

  • 内置sharding
  • 内置复制
  • 故障转移和高可用性
  • Simple query engine适用于大多数常见情况

  • 但是的缺点是您无法执行联接。明智地对数据进行非规范化,以便避免这种情况。

    关于c# - 如何搜索庞大的非文本数据集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5987242/

    10-17 02:07
    查看更多