在我正在工作的项目中,客户端有一个旧的( an级范围)的RDBMS。所有类型的查询都很慢,没有时间修复/重构架构。我已经确定了需要优化的公共查询集。该集合分为两部分:全文查询和元数据查询。
我的计划是从数据库中提取数据,并将其划分到两个不同的存储系统中,每个存储系统都针对特定的查询集进行优化。
对于全文搜索,Solr是最有意义的引擎.它的切分和复制特性使得它非常适合这个问题的一半。
对于元数据查询,我不知道该采取什么方法。目前,我正在考虑使用一个RDBMS,它的模式非常不规范,表示来自“权威”RDBMS的数据的一个特定子集。但是,我的客户端担心的是,与已经包含这些功能的Solr相比,缺少这样的子系统的切分和复制,以及设置这些特性的困难/复杂。在这种情况下,元数据采用整数、日期、bools、位和字符串的形式(最大大小为10个字符)。
是否有一个数据库存储系统具有内置的切分和复制功能,对于查询所述元数据可能特别有用?也许是一个提供良好查询引擎的非sql解决方案?
请照一下。
补充/答复:
Solr可以用于元数据,但是元数据是不稳定的。因此,我必须经常提交索引。这将导致搜索相当快地退化。
发布于 2011-05-23 18:30:35
将MongoDB用于元数据存储:
但是,缺点是您不能执行联接。要聪明地去篡改你的数据,这样你就可以避免这种情况。
发布于 2011-05-13 14:05:25
RavenDB
缺点:这是AGPL授权的。根据您的dev/server环境,您可以认为在.NET上运行它是个骗局。另外,除了.NET之外,我不知道其他模式的客户端的状态。
缺点:还没有发布。
ElasticSearch:
ElasticSearch看起来类似于RavenDB,但在强调全文搜索看来,RavenDB强调的是一个通用的NoSQL数据库。
发布于 2011-05-20 14:23:46
我相信您知道,在任何有频繁更新的系统上,您都不会获得快速的查询时间。要实现针对RDBMS的切分,您需要找到一些键来拆分记录并填充多个数据库。然后,您可以同时查询所有这些数据,以获取和处理地图中的数据减少方式。这将允许您随着数据的增长而增加机器的数量,并可能允许您提高操作的速度。通过快速的谷歌搜索,MongoDB和Hadoop都提供了地图/还原功能,我对两者都不熟悉。
在动态中生成复杂的长时间运行的报告并不少见。然而,这通常伴随着电子邮件通知,当报告已经完成生成。它提供了一种很好的推送通知格式来与人进行接口。此外,如果预期这些报告是周期性的(例如,每周、每月等)当这些报告准备好后,您仍然可以使用电子邮件通知,唯一的区别是生成的开始时间是自动的。
https://stackoverflow.com/questions/5987242
复制相似问题