我正在为我的公司使用 SQL Server 创建数据仓库。我用一个简单的 SQL 关系数据库创建了一个 POC,其中有几个(大约 10 个)存储的用于 ETL 过程的 Procs。现在我已经获得业务支持,将其升级到生产状态,我将在该状态下将数据增加三倍,现在是确保我使用的技术最适合我们的需求并与一般最佳实践保持一致的正确时机。
我们每天将处理大约 50 万条记录,每天最多猜测大约 100 万条记录。然后,POC 将所有这些数据汇总为过去 4 年中每个客户每天 5 分钟的数据块。每个客户的每个事实(POC 有 4 个事实表)(让我们计划 25 个)总共有超过 50 万个时隙。因此,对于 POC,我们正在按客户和时间查看所有事实的大约 5000 万行。考虑到过去 6 个月满足所有问题的 85%,这意味着数据的最终视图很少,这意味着我们应该在 85% 的时间(如果不是更少)的时间里处理大约 250k 行的结果集。鉴于我希望将数据增加三倍,我们称之为最多 100 万行来满足 85% 的查询,分为大约 8 到 10 个具有大约 4 或 5 个维度表的事实表。
综上所述,如上所述,我处于一个非常幸运的位置,我现在可以选择用于仓库后端的技术。我从来没有真正有机会真正陷入 SSAS 并觉得它是我缺乏的一项技术。SSAS 是否仍然是数据仓库的热门选择,还是在过去几年中其受欢迎程度有所下降?它仍然像5年前一样使用吗?
简短版本:SSAS 是否仍然值得学习/投入时间和精力?
我们目前在 SQL 2016 上,这将在 SQL Server 2017 上构建
感谢您的所有意见。
在我看来,是的——它仍然是一项完全有效的技术。如果我们讨论的是表格而不是多维 SSAS 实现,则更是如此。例如,VertiPaq(运行表格模型的数据库引擎)与 PowerBI 中的引擎相同,如果您决定学习这些技能,您使用 SSAS/TOM/DAX 学习的任何技能都会对您有所帮助。还需要注意的是,PowerBI、Excel、SSRS 和许多其他工具可以连接到 SSAS/Tabular 以获取数据以构建仪表板和报告。
自 2014 年初以来,我个人一直在使用 SSAS/Tabular,并且我已经推出了 3 个大规模实现(我目前正在进行第 4 个)。我目前的公司使用 SSAS/Tabular 作为其核心产品的分析引擎。通过使用 PowerQuery 从其他来源获取数据,它可以与除 SQL Server 之外的许多其他产品集成。
如果您计划做的只是拥有一个星型模式(甚至雪花模式)的数据仓库,那么 Tabular 是一个不错的选择,因为它提供了出色的性能(取决于硬件)和惊人的压缩。你应该知道它是一个纯粹的内存分析引擎,所以如果你选择走这条路,请准备好购买大量的 RAM。要估计您需要多少 RAM,典型的表格安装将是原始数据大小的 1/10(取决于良好的建模原则)。
我有一个表格模型,它在主事实表中包含大约 8 亿行数据,在每个维度表中包含大约 1600 万行数据。它占用大约 48GB 的 RAM,但在应用过滤器时对它的查询是亚秒级的,而在转储整个表时不到 30 秒。与 SQL Server 不同,表格模型中的分区不会加速查询,因为数据不在磁盘上,但它会加速 ETL 过程,因为您可以加载单个分区。
话虽如此,我仍然有一个 SQL Server 数据仓库,用于存储我在表格模型中不需要的数据。与任何技术一样,为工作选择合适的工具。如果您想要一些可以为您提供高性能分析的东西,Tabular 是一个不错的选择,但确实需要您学习更多技术(我认为 C# 和 PowerShell 是必须的,因为它们有助于部署、管理和构建)。但是,如果您没有预算、资源或需要表格安装提供的功能,那么传统数据仓库或多维 SSAS 安装可能是更好的选择。