sql-server - Microsoft 多维数据集使用边界和最佳实践
问题描述
所以我们正在考虑在我们的组织中使用多维数据集。
现状:
- DWH (Azure MS SQL) 查询语言 - SQL
- Microsoft 列存储(不是真正的多维数据集)查询语言 DAX(有 MDX 支持,但看起来实现得很差 - 效率低下)
- Tableau(BI 系统、报表) 可以使用 SQL 和 MDX
已知问题:
- 当我们使用 MDX 时,存在按日期聚合的问题(我们应该在查询中显示年、月、日期层次结构),而 DAX 则没有这样的问题。
- Microsoft Column Storage 运行总计计算效率低下。
我们现在想如何解决这个问题:
- 使用 Microsoft Column Storage,具体化运行总计,但不会在所有报表中使用这种“立方体”,仅用于少数真正需要它的人
- 在 DWH 中实现运行总计。所有使用它的 Tableau 报告
- 在 DWH 中,我们有每日粒度的数据(例如:我们有一条记录在 11 月 1 日、11 月 5 日、11 月 15 日发生了变化,之前我们在 DWH 中有 3 条记录,现在我们将有 15 条)。我们需要这样才能真正快速地获得任何日期数据(基本上我们正在实现我们自己的立方体线)
优点:
- 没有人需要深入了解 DAX 和 MDX 语言
- 我们不应该重构任何东西
因为:
- DWH 上传(更新)将变得比现在更长
- DWH 将变得更大(用于记录的日常数据)
- 我们需要以手动方式维护运行总字段
已知的替代品:
- Microsoft Power BI - 可以真正高效地使用 DAX 和 MDX
- Microsoft Analysis Services Cube (Real cubes) - MDX 效率在这个只要我们关心,不像在 Microsoft Column Storage
问题:
- 第一:如果可能的话,我真的很想了解您在开发和维护解决方案时所使用的技术,以了解是什么以及为什么会导致痛苦。
- 第二:如果您对我们目前的方法有任何批评,我们将不胜感激——为什么这么糟糕?
- 第三:立方体死了吗?我的意思是谷歌没有展示自己的立方体,也许它本身的技术是一条死胡同?
- 最后:如果您对我们需要使用什么有任何建议 - 那会很棒。
解决方案
我试图根据我的经验逐步回答,问题对于单个技术或个人来说太大了。
第一:如果可能的话,我真的很想了解您在开发和维护解决方案时所使用的技术,以了解是什么以及为什么会导致痛苦。
仓储、多维数据集、报告、查询在不同的分布式技术上快速发展,这些分布式技术可以在相对便宜的硬件上水平扩展,按需扩展/缩减,也可以快速扩展。随着互联网带宽、全球化、社交网络和各种原因的增加,数据的大小也在不断增加。Hadoop,云最初填补了分布式技术的空白,该技术可以在分布式水平上发展并可以轻松地向上/向下扩展。
拥有一个具有高计算量和高 RAM 用于内存中高数据的 sql server,mdx,cube 通常是垂直扩展的,成本很高,即使我们在云上有 SQL server,也不能像水平分布那样容易地缩减。
现在,优势在于开发大数据解决方案、学习曲线和维护的复杂性,这对于迄今为止还不熟悉它的新采用者来说又是一个巨大的挑战。
第二:如果您对我们目前的方法有任何批评,我们将不胜感激 - 为什么这么糟糕
没有金子弹或一线希望的架构可以解决您面临的每一个问题,而无需面对它自己的一些问题。您的方法再次可行,并且根据您当前的组织结构,它的优点和缺点。我假设您的团队熟悉 SQL 服务器、mdx、多维数据集和列存储,并且还进行了可行性分析。我看到的唯一问题是当数据大小增加时,SQL 需要更多的计算能力和 RAM,这主要可以通过升级 VM/机器来完成。垂直扩展成本高昂,并且在某些时候总是有限制。此外,此类基础设施上的故障转移/灾难恢复成本也更高。
第三:立方体死了吗?我的意思是谷歌没有展示自己的立方体,也许它本身的技术是一条死胡同?
如果你能找到对它的支持,任何技术都不会死,即使是汇编、C、C++、Cobol 对于旧项目和它比其他项目更适合的情况仍然很强大。
最后:如果您对我们需要使用什么有任何建议 - 那会很棒。
为至少 3-4 种解决方案/架构做 POC(概念证明),成本/技能/时间框架最适合您,您将成为最佳评判者。
如果您对基于云的解决方案持开放态度,我可以建议您尝试探索一些其他解决方案,例如带有 azure 数据工厂的数据湖,以进行概念证明,如果它可以满足您的要求。
此外,我最近还通过了微软的一个开箱即用的解决方案,值得一看:Azure Synapse Analytics ( https://azure.microsoft.com/en-in/services/synapse-analytics/ )。它内置了对数据件外壳、查询、对 AI/BI 的支持、流式传输、数据湖探索、安全性、规模、对 Spark 和 PowerBI 的各种其他来源的支持、洞察力/视觉显示。
推荐阅读
- azure - 如何调试 log4net 不在 Azure 应用服务上写入
- sql - 如果 dbWriteTable() 在插入期间失败,它是否会执行回滚?
- c# - 如何在 C# 中将 Action 作为参数传递而不会丢失引用
- java - Spring Boot JPA:为同一参数传递多个值 (JPQL)
- node.js - 带有 Passport-Local 和 deSerializeUser 问题的简单身份验证
- azure-devops - 在 Azure Devops Web UI 中删除存储库的分支
- powershell - 如何返回按属性名称过滤的 powershell 对象属性通配符?
- discord - 如何回复频道中发送的每条消息
- php - 使用 PHP 查询 SQL DB 中的单个单元格
- css - 嵌入在 CSS/SCSS 数据 URI 中的 SVG 是否仍需要进行 base64 编码?