我公司的 SAS 程序员与研究人员合作,分析存储在一些大小约为 1Tb 的文本文件中的数据。生成的 SAS 进程可能需要数天才能运行。每当研究人员想要稍微更改一个问题时,就必须重新运行这些过程,这需要数小时或数天的时间。
SAS 程序员向我们的 DBA 团队寻求一种存储数据的方法,目的是大大提高查询性能。
两个主要的困难是:
- 我们只有少数几个示例查询,没有特别典型的查询集。
许多查询的形式如下
选择计数(不同的 ID) 从表 t 其中 a = 真 和 b = 3 AND c IN(3 到 10);
但其中 WHERE 过滤器参数是未知的,并且可以包括列和属性的任意组合。也就是说,在我看来(阅读了一些关于数据仓库的知识)我们的需求排除了典型的数据仓库方法,在这种方法中我们执行一些聚合并处理更高粒度的记录。
我正在寻找任何与设计具有类似约束的数据库有关的资源。在 Bill Inmon 的 Building the Data Warehouse 中,他简要提到了“探索仓库”和“数据挖掘仓库”。使用这些术语,我发现这篇文章略有帮助:“为有效数据挖掘设计数据仓库”[ pdf ],但或多或少就是这样。我在搜索 re:“data mining”时发现的大部分内容都与 OLAP 有关。
我是一名 DBA 新手,我的任务是为这个设计提出一些建议。我认为在这一点上,我最有帮助的建议是建议我们在设计时尽可能避免昂贵的连接。我在这里处于困境 - 不期待奇迹,但非常欢迎任何明智的建议或阅读建议。
谢谢!
最佳答案
尽你所能阅读拉尔夫·金博尔 (Ralph Kimball) 的所有内容。
http://www.amazon.com/Data-Warehouse-Toolkit-Complete-Dimensional/dp/0471200247
您的典型查询(SELECT aggregate FROM fact JOIN dimension WHERE criteria
)是星型模式的最佳选择。
忘掉“数据挖掘”吧。这不是一个有用的术语。
关注“星型模式”。构建正确的数据结构。
关于database-design - 设计超大、低粒度数据库的技巧/链接/书籍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247044/