个人经验总结:数据仓库的数据存储和实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个人经验总结:数据仓库的数据存储和实现
当面对大量的数据,而且是各种各样类型的数据,还可能有的数据单元(粒度)很大,单纯靠数据库是不易解决,为了解决这些问题,提高系统后台的效率,就需要引进数据仓库。
有关数据仓库的数据存储的几个基本问题:
1、数据存储的方式?数据仓库的数据由两种存储方式:一种是存储在关系数据库中,另一种是按多维的方式存储,也就是多维数组。
2、存储何种数据?
数据仓库中存在不同的综合级别的数据。一般把数据分成四个级别,早期细节级数据,当前细节级数据,轻度综合级,高度综合级。不同的综合级别一般称为粒度。粒度越大,表示细节程度越低,综合程度越高。级别的划分是根据粒度进行的。
数据仓库中还有一种是元数据,
也就是关于数据的数据。传统数据库中的数据字典或者系统目录都是元数据,在
数据仓库中元数据表现为两种形式:一种是为了从操作型环境向数据仓库环境转换而建立的元数据,它包含了数据源的各种属性以及转换时的各种属性;另一种元数据是用来与多维模型和前端工具建立映射用的。
3、粒度与分割粒度是对数据仓库中的数据的综合程度高低的一个衡量。粒度越小,细节程度越高,综合程度越低,回答查询的种类越多;反之粒度越大,细节程度越低,综合程度越高,回答查询的种类越少。
分割是将数据分散到各自的物理单元中去以便能分别独立处理,以提高数据处理的效率。数据分割后的数据单元成为分片。数据分割的标准可以根据实际情况来确定,通常可选择按日期、地域或者业务领域等进行分割,也可以按照多个标准组合分割。
4、追加时数据的组织方式这里说一种比较简单的情况,轮转综合文件。比如:数据存储单位被分为日、周、季度、年等几个级别。每天将数据记录在日记录集中;然后七天的数据被综合存放在周记录集中,每隔一季度周记录集中的数据被存放到季度记录集中,依此类推……这种方法把越早期的记录存放的综合程度越高,也就是粒度越大。
B<>数据仓库的实现步骤:一般地,设计和创建数据仓库的步骤是:
1. 确定用户需求确定终端用户的需要,为数据仓库中存储的数据建立模型。通过数据模型,可以得到企业完整而清晰的描述信息。数据模型是面向主题建立的,同时又为多个面向应用的数据源的集成提供了统一的标准。数据仓库的数据模型一般
包括:企业的各个主题域、主题域之间的联系、描述主题的码和属性组。
深入地分析企业的数据源,记录数据源系统的功能与处理过程。一般地,设计数据仓库最重要的一步便是要理解商业动作的规律,只有了解数据是如何被处理的,才能分解商业处理过程,从中获取数据元素。
利用现有系统的信息,确定从源数据到数据仓库的数据模型所必须的转化/ 综合逻辑。这涉及到应该合并转化多少数据;是综合所有的数据文件还是综合发生变化的操作系统文件;转化/ 综合过程应该多长时间执行一次等问题。决定数据转化与更新频率是重要的商业事件。无论数据仓库的更新是采用事件驱动还是时间驱动,都必须让数据仓库知道当某种事件发生时就需要更新数据。
在数据仓库建立之前,应该写一个详细的方案和实现规划。这种方案和实现规划包括:建立商业案例、收集用户需求、确定技术需求。建立商业案例包括由该方案解决的商业需求、方案的成本和投资的收益。收集用户需求主要是调查用户建立数据仓库的意图。用户需求可以确定这些内容:数据需求(粒度级)、企业经营系统包含的数据、这些数据遵循的商业规则、需要提供给用户的查询、用户需要的标准报告、将要使用的客户应用程序工具。确定技术要求包括下列内容:硬件体系结构和框架(例如,链接到数据市场所在的地理位置)、备份和恢复机制、安全性限制、从经营系统到数据仓库加载数据和转换数据的方法。
2. 设计和建立数据库设计和建立数据库是成功地创建数据仓库的一个关键步骤。这一步通常由有经验的数据库设计人员使用,因为这一步涉及的数据来自多种数据源并且要把它们合并成一个单独的逻辑模型。不象OLTP系统那样以高度的正规化形式存储数据,数据仓库中存储的数据以一种非常非正规化的形式存储数据以便提高查询的性能。数据仓库常常使用星型模式和雪花型模式来存储数据,作为OLAP工具管
理的合计基础,以便尽可能快地响应复杂查询。
通过降低需要从磁盘读取数据的数据量,星型模式设计有助于提高查询性能。查询语句分析比较小的维度表中的数据来获取维度关键字以便在中心的事实表中索引,可以降低扫描的数据行。在转换OLTP数据库模式到星型模式时,涉及的步骤如下:
确定事实表和维度表
设计事实表
设计维度表
实现数据库设计
(1)确定事实表和维度表
确认在OLTP系统中现有的表和数据包含了将要用在事实表和维度表中的数据,
是非常重要的。如果确认不正确,那么数据仓库的性能就比较差,在以后可能需要重新设计。重新设计一个可能包含了大量数据的数据仓库是一项耗费很大的任务。确定事实表和维度表的结构和组成的过程比较难,特别是当涉及多个OLTP系统时。
(2)设计事实表
设计事实表的主要目标是最小化表的大小。事实表是数据库中的表,因为它们包含了基本的商业事务的详细信息。然而,一定要考虑存储和维护这些大表的成本。例如,大表的处理时间比较长、备份和恢复的时间比较长、执行查询的时间也比较长。降低事实表大小的最简单方法如下:降低列的数量、尽可能地降低每一个列的大小、把历史数据归档到单独的事实表等。
(3)设计维度表设计维度表的主要目标是非正规化那么参考事实表的数据到一个单独的表。
最常用的维度数据应该直接参考事实表,而不是通过其他维度表间接参考维度表。
这种方法可以最小化表连接的数量,提高系统的性能。
(4)实现数据库设计
当事实表和维度表设计之后,最后一步是在MicrosoftSQLServer 中物理地实现数据库。当创建数据库时,考虑分区策略,可以使用由SQLServer提供的可以并行处理数据的文件组。当创建用于存储事实和维度的表时,应该尽可能地考虑数据库的分区策略,把事实表分别存储在不同的文件组上。索引可以加速数据仓库的检索,应该在每一个维度表的关键字列上创建一个索引。
3. 提取和加载数据
把经营系统中数据提取出来然后加载到数据仓库中,随着复杂性的变化而变化。如果在数据源中的数据和将要出现在数据仓库中的数据是直接关联,那么这个进程非常简单。这个进程也可能非常地复杂,例如数据源的数据驻留在多个异构系统中,并且在加载数据之前需要大量的转变格式和修改。提取和加载数据的进程如下:
校验经营系统中的数据
从经营系统中提取数据
净化数据
把数据转换和迁移到数据仓库中