关键字:数据仓库,data warehouse,microsoft,SSAS
数据仓库总览
总的来说,数据仓库就是企业和组织用来将数据集中化之后进行报表的制作和分析的解决方案。实施一个数据仓库的解决方案能让企业和组织获得很多好处:
- 关键业务信息的准确性和全面性报告
- 集中化的信息使能做出更好的分析和决策
- 作为商业智能方案的基础
以下的文章为您介绍数据仓库解决方案的关键组件以及当您自己将要着手一个数据仓库时候需要高度注意的方面。
实际业务中的问题
一个有效率的业务流程可以让企业在日趋增长的全球性经济时代更好的面对各种各样的挑战。为了成功,企业必须适应环境的改变,也就要求在不断改变的环境中调整战略和做出正确的决策。但是,我们还是会面临一些问题让我们做决定的时候觉得异常困难
- 关键业务数据存储在多个业务系统中,这让收集数据更加的困难
- 当需要及时做出决定的时候,多个系统中传送的速度过慢
- 很多基础的问题无法搞清楚,例如“我们到底有多少客户”这类看起来很简单,但是在分布式的系统中确实是很难回答的
只要解决了这些问题,我们的业务流程肯定会变得更有效率,不管是决策方面,执行方面还是在日常业务中。
什么是数据仓库
data warehouse这个词现在有很多方式的解释,但是现今大众都比较认同的一个说法就是,数据仓库就是用来存放集中数据用来做报表服务和分析服务的地方。
一个典型的数据仓库:
- 存放的是海量的历史交易数据
- 对海量的读操作做了优化。这个与典型的OLTP的数据库不同。
- 不断的把增量加载进来
- 作为商业智能的基础
数据仓库架构
在企业中做数据仓库有很多种方法,不过通常情况下我们用以下方法:
- 建立一个中心的唯一的数据仓库用于所有的数据单元
- 建立一个小型的部门级别的数据仓库仅用于部门
- 使用辐射型结构,中心级数据仓库发散数据到部门级
实际中我们可以单独来使用或者混合使用
数据仓库解决方案组件
一个数据仓库通解决方案通常由以下组件组成
- 数据源
- ETL
- 数据中转区域
- 数据仓库
- 数据清洗以及排重
- 主数据管理
数据仓库项目
数据仓库项目和我们以前其他的项目有很大的类似性,所以很多东西是可以共用的,像方法论,敏捷开发的模式等等。但是,数据仓库的项目需要有对关键业务数据有一个很深的了解以及将这些东西量化,这个是其他项目所不具有的特性。
通常我们要完成一个高质量的数据仓库项目我们需要按照以下的步骤:
- 和业务者和信息管理者做一个很详细的沟通,来确认我们的数据仓库项目到底可以用来回答哪些问题
- 从维度和事实两个部分来思考到底我们需要把数据组织成什么样的形式。事实的数据是用来说明问题的数据,维度的数据是拿来划分事实数据的。
- 确定数据的来源,结构化数据,非结构化数据
- 数据重要的先后次序
数据仓库项目角色
- 项目经理
- 解决方案架构师
- 数据建模者
- 数据库管理员
- 外部架构
- ETL开发者
- 业务用户
- 测试
- 每个业务单元的管理者
数据仓库解决方案的注意点
数据仓库的数据库以及存储
一个数据仓库其实就是一个经过读操作优化的关系型数据库。以下方面是在做数据仓库需要考虑的。
Database Schema
在设计逻辑架构的时候,我们应该尽量保证少去进行JOIN的操作去做聚合。通常比较好的做法是设计成星型的架构,在事实表中存储实际的数据然后用外键连接到维度表。当然同时在设计这个连接外键的时候也要小心,要考虑到维度会变化的情况发生。
当然也需要考虑物理架构,这会对数据仓库的性能造成影响。通常我们会把事实表按时间划分成多个表分区然后存放在不同的文件组中,同时这样做还能保证当某个文件组发生故障的情况下受到的影响最小。最后还需要考虑下索引和压缩的策略。
硬件
硬件作为底层设备对数据仓库的性能和管理上的影响是巨大的。主要考虑的方面有内存和CPU,存储容量以及IO,网络,对高可用性的依赖性。
在数据仓库解决方案里有一句话是说,用空间换取时间,或者用空间换性能,在一定的预算下,当然不可能什么都用最好的,这个时候就需要做一定的平衡,看看瓶颈在哪,尽量做到效率的最大化。
高可用和容灾
数据仓库很快就会变成一个总览信息的地方,所以保证可用性是很必要的。sqlserver提供多种保证高可用的方案,可以选择最适合的方案来容灾。
同时也是要考虑到容灾时硬件环境的限制等等
安全性
数据仓库中必然是包含了大量的敏感信息的,所以我们肯定要对数据仓库的访问进行安全控制。