2012-02-12 84 views
1

这是更多的讨论。如何有效搜索潜在的大型数据库?

我们有一个系统,它是multitenanted,并将有表可以有数百万行。我们的用户界面允许用户使用许多不同的搜索标准对这些表执行搜索 - 因此它们可以有这些标准的任意组合。

将数据库中的所有这些搜索列索引或在内存中加载完整表然后进行过滤是不现实的。

有人可以指出我正确的方向来解决这个问题的模式/设计吗?

+0

这是一个相当开放的问题。在实践中,如果不理解你的域名,我会问你是否可以重新定义范围。用户界面是否可以引导用户执行您有索引的搜索。而不是让用户做任何'adhoc'查询,你可以让用户与你一起讨论他们的需求并相应地调整数据和索引。 – 2012-02-12 22:20:23

+0

以下是一个示例:用户可以搜索发票。他们有能力搜索发票号码,发票日期,发票工作号码,发票的客户,发票的供应商,发票的状态(付款,无效等),发票付款日期。没有搜索指南。他们可以选择/填写任何标准并点击搜索 – Amitesh 2012-02-12 22:35:13

回答

0

我不知道任何模式来解决你描述的情况。无限数量的行,完全即席查询,许多同时用户?这不是要求;这是“一切皆有可能”。

我假设这是一个报告数据库,而不是事务性的。数据是只读的。那是对的吗?

具有星型模式的数据仓库将按照精心设计的尺寸规定查询。用户可以卷起尺寸(例如,时间维度允许用户滚动到日,周,月,季度,年等)。但是这样做的逻辑是在数据库上执行并在存储过程中编码的。

我想挑战用户需要中间层有数百万行的断言。没有用户可以一次获取数百万行。 Google一次返回25个由单个查询返回的数百万页。

也许你可以使用Excel或其他工具分析以分离方式使用的数据集。但这是我可以设想的最佳场景。

+0

嗨 感谢您的回复。这不仅仅是一个报告系统。所以它也有实时交易。同样,你说用户永远不会使用磨床行是正确的,但是我所描述的问题是查询超过一百万行的表。此查询可以是多个不同列的组合,这些列不一定需要编入索引 – Amitesh 2012-02-12 22:21:15

+0

查询一百万个没有索引的行将永远不会执行。那些做交易的人也会受到影响。你完蛋了。 – duffymo 2012-02-12 22:32:11

+0

答案是用户不应该有这么多的标准来搜索 – Amitesh 2012-02-12 22:45:12

相关问题