在我正在处理的一个项目中,客户有一个旧且庞大(几TB)的关系型数据库。各种查询非常缓慢,没有时间去修复/重构架构。我已经确定了需要优化的常见查询集合。这个集合被划分为两部分:全文和元数据查询。
我的计划是从他们的数据库中提取数据,并将其分区到两个不同的存储系统中,每个系统针对特定查询集合进行优化。
对于全文搜索,Solr是最合适的引擎。它的分片和复制功能使其非常适合解决其中一半的问题。
对于元数据查询,我还不确定该采取什么路线。目前,我考虑使用一个极度去规范化的模式的关系型数据库,该模式代表“权威”RDBMS中的特定数据子集。然而,我的客户担心这样的子系统缺乏分片和复制以及设置这些功能的困难/复杂程度,与Solr相比,后者已经包含了这些功能。在这种情况下,元数据采用整数、日期、布尔值、位和字符串(最大长度为10个字符)的形式。
是否有具有内置分片和复制功能的数据库存储系统,可能特别适用于查询上述元数据?也许有一些非关系型数据库解决方案提供了良好的查询引擎?
请指点迷津。
Solr也可以用于元数据,但元数据是易变的。因此,我需要经常提交索引以保证搜索性能。这会导致搜索速度迅速下降。