AX系统已有的BI分析架构

对于AX 的BI分析架构,相信大家都了解,可以看Reinhard之前的译文[译]Dynamics AX 2012 R2 BI系列-分析的架构

AX 的BI分析架构的优势

从图上我们可以看出,AX是弱化了数据仓库的概念,直接用多维数据集作为分析报表的数据源。得益于AX与SSAS的深度集成,并且提供了许多预先定义好的多维数据集,可以很快地制作一个简单的分析报表。

Dynamics 365技术架构的优势

在新出的Dynamics 365里,提出了Common Data Model的概念,在一定程度上,从应用的底层解决了多系统数据整合的问题。Reinhard在12月初的微软技术大会上了解到,Dynamics 365 Operations除了Online版本外,On Premise版也在12月初有了销售版,感兴趣的同学可以关注下。

数据仓库

既然说到了数据仓库,那么我们就来看看什么是数据仓库。

数据仓库的定义

数据仓库是一个数据库,这种数据库的设计,可以支持商业智能活动:帮助用户理解和提高组织的绩效。它的设计,是用于查询和分析,而不是事务处理,并且通常包含从交易数据中派生的历史数据,也包含其他数据源中的数据。数据仓库将分析的工作负载,从事务的工作负载中分离出来,让企业能够整合来自多个数据源的数据

除了一个关系型数据库外,一个数据仓库环境还需要包含ETL解决方案统计分析报表数据挖掘客户端分析工具

数据仓库需要使用从多个源收集的数据。这些源数据可能来自企业内部自己开发的系统,采购的应用程序,第三方数据提供商,和其他源。它可能涉及交易,生产,市场,人力资源等。在今天这个大数据的时代,网站上点击事件的数据可能超过数十亿条,还有自动化机器的传感器产生的大量数据流。

为什么不能将AX作为数据仓库来用?

这里,需要说说AX系统与数据仓库主要的区别:

环境上的不同

两者最大的不同,是AX系统其实是一个OLTP系统,它的设计需要遵循3NF标准。而数据仓库并不完全遵循3NF标准。

需求上的不同

工作负载

数据仓库的设计,是为了适应即席查询和数据分析。因为对工作负载无法预知,所以要对大量可能的查询和分析操作,进行性能优化。

AX系统中,执行的其实大多数都是预先定义好的操作,如更新、写入、删除等。

数据修改

数据仓库一般是通过ETL更新,最终用户不能直接更新数据仓库。

AX系统中,最终用户的修改会持久化到数据库中,AX系统总是反映每个商业交易的最新状态。

架构设计

数据仓库总是使用部分非规范化的架构,来优化查询和分析的性能。

AX系统中,总是使用完全规范的架构,来优化更新、写入、删除操作,来保证数据的一致性。

典型操作

数据仓库的典型查询,会扫描上百万的记录。

AX系统的典型操作,是对某一行记录进行操作,这只需访问少量的记录。

历史数据

数据仓库通常需要存储几个月甚至几年的数据,这些数据为历史分析和报表提供支持。

AX系统中,反应的是每个商业交易的最新状态。不过有时也会为了满足当前交易的需要,存储一些相关的历史数据。

建立数据仓库的必要性

传统BI分析

我们知道,OLAP Cube一般而言,在性能上要比RDBMS更好。

对于传统BI分析来说,是需要建立OLAP Cube的。在建立Cube前,一般也会在数据库使用星型架构建立维度化的模型,将数据清洗好,填充进来,作为Cube的数据源。这里的星型架构和OLAP cube其实都属于数据仓库的一部分。

AX的BI分析

对于AX而言,是用表或视图来创建透视,然后定义维度和测量,接着运行分析服务项目向导来生成、部署项目,最后对多维数据集进行处理。每次处理,Cube中的数据都会更新,其实是无法做历史数据分析的。

敏捷BI分析

随着软件发展的日新月异,计算机的硬件也越来越先进,仿佛OLAP Cube的优势也没那么明显了。近几年流行的敏捷BI工具,如Power BI、Tableau、Qlik等,就有意弱化了分析建模的过程。它们使用了内存数据库、列存储数据库等技术,来对数据进行缓存,加快了数据处理、渲染的速度,有时甚至可以直连生产环境且对生产环境性能的影响微乎其微。那么使用敏捷BI分析工具还需要建立数据仓库么?

Reinhard认为,如果你的分析需要整合多个系统的数据,如果你要分析历史数据,如果你的业务系统的数据库无法满足查询和分析的性能需求,那么你仍然需要建立数据仓库。先对多个系统的数据进行整合、清洗,然后将清洗过的数据导入到企业级的数据仓库中,才能用于数据分析和展示

最新文章

  1. BZOJ1864[ZJOI2006]三色二叉树[树形DP]
  2. canvas像素操作
  3. C#人爱学不学9[C#5.0异步实例+WPF自己的MVVM Async应用 1/12]
  4. 关于Redis的启动过程
  5. .tostring()格式化大全
  6. 在Visual Studio里配置及查看IL(转载)
  7. Hololens开发笔记之Gesture手势识别(基本介绍)
  8. XCode中的特殊快捷键图标
  9. JDK源码阅读(二) AbstractList
  10. typedef struct
  11. Tomcat7.0更改默认的路径来访问自己的项目
  12. codefirst mvc Self referencing loop detected for property
  13. Android 视频直播 SDK
  14. 【前端】ACE Editor(代码编辑器) 简易使用示例
  15. 利用web.py快速搭建网页helloworld
  16. 【错误总结1:unity StartCoroutine 报 NullReferenceException 错误】
  17. win10升级后蓝牙不见了,设备管理器里没有,多了个串行控制器里的未知USB设备?
  18. thinkphp (tcms)
  19. 使用http-server创建本地服务
  20. Jmeter使用HTTP代理服务器进行录制

热门文章

  1. ES6 will change the way you write JS code.
  2. 使用dbghelp生成dump文件以及事后调试分析
  3. Python 代码覆盖率统计工具 coverage.py
  4. 【原创】Android selector选择器无效或无法正常显示的一点研究
  5. java中的注解(Annotation)
  6. LeetCode Paint House
  7. 一次性搞明白 service和factory区别
  8. 如何设置jvm内存
  9. java中一些定时器的使用
  10. Linux(Ubuntu)环境下使用Fiddler