首页 百科知识 数据仓库设计方法与步骤

数据仓库设计方法与步骤

时间:2022-10-09 百科知识 版权反馈
【摘要】:“数据驱动”系统设计方法的思路就是利用以前所取得的工作成果来进行系统建设。“数据驱动”的系统设计方法不再是面向应用。

4.3.2 数据仓库设计方法与步骤

1.设计方法

系统的设计一般采取系统生命周期法(Systems Development Life Cycle,SDLC)。而在分析型环境中,DSS分析员一般是企业的中上层管理人员,他们对决策分析的需求不能预先做出规范说明,只能给设计人员一个抽象模糊的描述。这就要求设计人员在与用户不断的交流中,将系统需求逐步明确与完善。

创建数据仓库的工作是在原有的数据库基础上进行的,那么在原有的数据库系统中有什么呢?有数据还有对数据的处理即应用。我们说,不论是在数据库系统中,还是在数据仓库环境中,一个企业的数据是固定的,即还是那些数据。但数据的处理则是特殊的,对同一数据的处理,在企业的不同部门是不同的,在数据库系统和数据仓库系统中也是不同的。因此,创建数据仓库的工作是在原有的数据库基础上进行的,这“基础”也只能是原有数据库中的数据,即从已经存在于操作型环境中的数据出发来进行数据仓库的建设工作,我们把这种从已有数据出发的数据仓库设计方法称为“数据驱动”的系统设计方法。下面从三个方面来看看“数据驱动”的系统设计方法的基本思路。

(1)“数据驱动”系统设计方法的思路就是利用以前所取得的工作成果来进行系统建设。要利用已有的工作成果,唯一的办法就是要能识别出当前系统设计与已做工作的“共同性”,即我们在进行数据仓库系统设计前,需要清楚地知道原有的数据库系统中已有什么,它们对当前系统设计有什么影响,等。要尽可能地利用已有的数据、代码等,而不是什么都从头开始,这是”数据驱动”的系统设计方法的出发点,也是其目的所在。

(2)“数据驱动”的系统设计方法不再是面向应用。从应用需求出发,这些工作已经在数据库系统设计时完成了,其成果就是现有的数据库系统及其在数据库系统中的数据资源。数据仓库的设计是从这些已有的数据库系统出发,按照分析领域对数据及数据之间的联系重新考察、组织数据仓库中的主题。

(3)“数据驱动”的系统设计方法的中心是利用数据模型有效地识别原有数据库中的数据和数据仓库中主题的数据的“共同性”。

值得注意的是,数据驱动系统设计方法的中心即数据模型与操作型数据环境的设计、数据仓库数据环境的设计、操作型数据处理应用的开发和设计,以及DSS应用的开发与设计。要理解这一点,首先就要理解为什么不去识别处理的“共同性”,难道识别处理的“共同性”不重要吗?事实上,如果能识别处理的“共同性”对于利用已取得的工作成果是很重要的,如DSS处理例行化体现了识别处理的“共同性”的优点。但是,由于处理的变化比起数据结构的变化要快得多,而且一个处理经常是由与其他处理相关的部分和自己特有的部分这样两部分组成,这两个部分经常是非常紧密地捆绑在一起,是无法分开的,从而有很大的限制性。相比之下,数据具有更大的稳定性,对于不同应用的数据,总可以分出公用数据与独占数据两部分。识别数据的“共同性”之所以更具价值,还因为在识别数据“共同性”的基础上,我们可以相应地得到一些处理的“共同性”。

数据仓库是面向主题的、集成的、不可更新的、随时间不断变化的,这些特点决定了数据仓库的系统设计不能采用同开发传统的OLTP一样的设计方法。数据仓库系统的原始需求不明确,且不断变化与增加,开发者不能确切了解到用户的明确而详细的需求,用户所能提供的无非是较大的部分需求,而不能较准确地预见到以后的需求。因此,采用原型法来进行数据仓库的开发是比较合适的。因为原型法的思想是从构建系统简单的基本框架着手,不断丰富与完善整个系统的。但是,数据仓库的设计开发又不同于一般意义上的原型法,数据仓库的设计是数据驱动的。

2.设计步骤

数据仓库的系统设计是一个动态的反馈和循环的过程。一方面数据仓库的数据内容、结构、粒度、分割以及其他物理设计根据用户所返回的信息不断地调整和完善,以提高系统的效率和性能;另一方面,通过不断地理解用户(确切地讲是领导)的分析需求,向用户提供更准确、更有用的决策信息。在数据库设计时,一个生命周期可以较明确地划分为需求分析、数据库设计、数据库实施及运行维护四个阶段。相比之下,数据仓库设计不具有像数据库设计那样可以明确划分的设计阶段。

尽管如此,数据仓库的设计并不是没有步骤可言的,大体上可以分为以下几个步骤:

●概念模型设计。

●技术准备工作。

●逻辑模型设计。

●物理模型设计。

●数据仓库的生成。

●数据仓库的使用与维护。

下面我们就以这6个主要设计步骤为主线,介绍在各个设计步骤中设计的基本内容。

步骤1:概念模型设计。

进行概念模型设计所要完成的工作包括:

(1)界定系统边界。

从某种意义上讲,界定系统边界的工作也可以看作是数据仓库系统设计的需求分析,因为它将决策者的数据分析的需求用系统边界的定义形式反映出来。

(2)确定主要的主题域及其内容。

在这一步中,要确定系统所包含的主题域,然后对每个主题域的内容进行较明确的描述,描述的内容包括:主题域的公共码键、主题域之间的联系、充分代表主题的属性组。

概念模型设计的成果是:在原有的数据库的基础上建立了一个较为稳固的概念模型。

因为数据仓库是对原有数据库系统中的数据进行集成和重组而形成的数据集合,所以数据仓库的概念模型设计,首先要对原有数据库系统加以分析理解,看在原有的数据库系统中“有什么”、“怎样组织的”和“如何分布的”等,然后再来考虑应当如何建立数据仓库系统的概念模型。一方面,通过原有的数据库的设计文档以及在数据字典中的数据库关系模式,可以对企业现有的数据库中的内容有一个完整而清晰的认识;另一方面,数据仓库的概念模型是面向企业全局建立的,它为集成来自各个面向应用的数据提供了统一的概念视图。

概念模型的设计是在较高的抽象层次上的设计,因此建立概念模型时不用考虑技术条件的限制。

步骤2:技术准备工作。

这一阶段的工作包括技术评估与技术环境准备。

(1)技术评估。

进行技术评估,就是确定数据仓库的各项性能指标。一般情况下,需要在这一步里确定的性能指标包括:管理大数据量数据的能力、进行灵活数据存取的能力、根据数据模型重组数据的能力、透明的数据发送和接收能力、周期性成批装载数据的能力、可设定完成时间的作业管理能力。

(2)技术环境准备。

一旦数据仓库的体系化结构的模型大体建好后,下一步的工作就是确定我们应该怎样来装配这个体系化结构模型,主要是确定对软硬件配置的要求。我们主要考虑相关的问题,如预期在数据仓库上分析处理的数据量有多大、如何减少或减轻竞争性存取程序的冲突、数据仓库的数据量与通信量有多大等。

根据这些考虑,就可以确定各项软硬件的配备要求,当各项技术准备工作已就绪,就可以装载数据了。这些配备包括:

●直接存取设备(DASD)。

●网络。

●管理直接存取设备(DASD)的操作系统。

●进出数据仓库的界面(主要是数据查询和分析工具)。

●管理数据仓库的软件(目前即选用各种商用数据仓库管理系统及有关的解决方案软件,如果购买的DWMS产品不能满足数据仓库应用的需要,还应考虑自己或软件集成商开发有关模块等)。

这一阶段的成果是:获得技术评估报告、软硬件配置方案、系统(软、硬件)总体设计方案。

管理数据仓库的技术要求与管理操作型环境中的数据与处理的技术要求区别很大,两者所考虑的方面也不同。所以在一般情况下总是将分析型数据与操作型数据分离开来,将分析型数据单独集中存放,也就是用数据仓库来存放。

步骤3:逻辑模型设计。

在这一步进行的工作主要包括:

(1)分析主题域,确定当前要装载的主题。

在概念模型设计中,我们确定了几个基本的主题域,但是,数据仓库的设计方法是一个逐步求精的过程,在进行设计时,一般是一次一个主题或一次若干个主题地逐步完成。所以,我们必须对概念模型设计步骤中确定的几个基本主题域进行分析,并选择首先要实施的主题域。选择第一个主题域所要考虑的是:它要足够大,以便使得该主题域能建设成为一个可应用的系统;它还要足够小,以便于开发和较快地实施。如果所选择的主题域很大并且很复杂,我们甚至可以针对它的一个有意义的子集来进行开发。在每一次的反馈过程中,都要进行主题域的分析。

(2)确定粒度层次划分。

数据仓库逻辑设计中要解决的一个重要问题是决定数据仓库的粒度划分层次,粒度层次划分适当与否直接影响到数据仓库中的数据量和所适合的查询类型。对数据仓库开发者来说,划分粒度是设计过程中最重要的问题之一。所谓粒度是指数据仓库中数据单元的详细程度和级别。数据越详细,粒度越小级别就越低,数据综合度越高,粒度越大级别就越高。在传统的操作型系统中,对数据的处理和操作都是在详细数据级别上的,即最低级的粒度。但是在数据仓库环境中主要是分析型处理,粒度的划分将直接影响数据仓库中的数据量以及所适合的查询类型。一般需要将数据划分为:详细数据、轻度总结、高度总结三级或更多级粒度。不同粒度级别的数据用于不同类型的分析处理。粒度的划分是数据仓库设计工作的一项重要内容,粒度划分是否适当是影响数据仓库性能的一个重要方面。

进行粒度划分,首先要确定所有在数据仓库中建立的表,然后估计每个表的大约行数。在这里只能估计一个上下限。需要明确的是,粒度划分的决定性因素并非总的数据量,而是总的行数。因为对数据的存取通常是通过存取索引来实现的,而索引是对应表的行来组织的,即在某一索引中每一行总有一个索引项,索引的大小只与表的总行数有关,而与表的数据量无关。

第一步是适当划分粒度,估算数据仓库中数据的行数和所需的DASD(Direct Access Storage Device)数。计算方法如下:

在每一已知表中,计算一行所占字节数的最大值、最小值;在一年内,统计可能出现的数据行数的最大行数、最小行数;在五年内,统计可能出现的数据行数的最大行数、最小行数。

计算每个表的码所占的字节数(直到计算完所有表):

一年产生的数据可能占用的最大空间=最大值×一年内最大行数+索引空间

一年产生的数据可能占用的最小空间=最小值×一年内最小行数+索引空间

五年产生的数据可能占用的最大空间=最大值×五年内最大行数+索引空间

五年产生的数据可能占用的最小空间=最小值×五年内最小行数+索引空间

第二步是根据估算出的数据行和DASD,决定是否要划分粒度;如果要,该如何划分粒度。一般情况下,如果数据行数在第一年内就在100 000行左右,那么只有单一粒度(即只有细节数据)是不太合适的,应该考虑粒度的划分,如可以增加一个综合级别。如果数据行数超过了1 000 000行,那么就要考虑采用多重粒度。数据行数在五年内如果预计将达到1 000 000行,那么也不能仅有细节级的数据,必须选择粒度的划分,如果超过10 000 000行,就必须选择多重粒度。五年和一年的标准之所以不同是因为:五年内将有更多的数据仓库领域的专家,硬件的性能价格比将会更好,将会有更强的软件工具,终端用户也会更熟练。

(3)确定数据分割策略。

数据分割是数据仓库设计的一项重要内容,是提高数据仓库性能的一项重要技术。数据的分割是指把逻辑上是统一整体的数据分割成较小的、可以独立管理的物理单元(称为分片)进行存储,以便于重构、重组和恢复,以提高创建索引和顺序扫描的效率。数据的分割使数据仓库的开发人员和用户具有更大的灵活性。

在这一步里,要选择适当的数据分割的标准,一般要考虑以下几方面因素:数据量(而非记录行数)、数据分析处理的实际情况、简单易行以及粒度划分策略等。数据量的大小是决定是否进行数据分割和如何分割的主要因素;数据分析处理的要求是选择分割标准的一个主要依据,因为数据分割是跟数据分析处理的对象紧密联系的;还要考虑到所选择的数据分割标准是否自然和易于实施;同时也要考虑数据分割的标准与粒度划分层次是否适应。

数据仓库中数据分割的概念与数据库中的数据分片概念是相近的。数据库系统中的数据分片有水平分片、垂直分片、混合分片和导出分片多种方式。水平分片是指按一定的条件将一个关系按行分为若干不相交的子集,每个子集为关系的一个片段;垂直分片是指将关系按列分为若干子集,垂直分片的片段必须能够重构原来的全局关系。下面我们以水平分片为例说明。

分割同时也可以有效地支持数据综合。关于这一点,我们在下面结合具体的分割形式来进行讨论。在实际系统设计中,通常采用的分割形式是按时间对数据进行分割,即将在同一时段内的数据组织在一起,并在物理上也紧凑地存放在一起,如将商场的销售数据按季节进行分割,这样分割的理由是商场的经理们经常关心某商品在某个季节的销售情况,如果数据已经是按照季节分割存储好的,就可以大大减小数据检索的范围,从而达到减小物理I/O次数,提高系统性能的目的。按照时间进行数据分割还可以是以时点采样的形式进行,如商品的库存信息的分割,我们将周末的商品库存数据组织在一起,以代表一周的商品库存,实际上实现了样本数据库的粒度形式。

按时间进行数据分割是最普遍的,一是因为数据仓库在获取数据时一般是按时间顺序进行的,同一时间段的数据往往可以连续获得,因而按时间进行数据分割简单易行;二是因为数据仓库的数据综合常常在时间上进行,如需要求得某商品某季节的销售总量等,按时间进行分割的数据便于进行这样的统计。另外,还可以按业务类型、地理分布等对数据进行分割。更多的情况下,数据分割采用的标准不是单一的,往往是多个标准的组合。因为数据仓库中的数据时间跨度较长,如果仅按地理或业务等来分割数据,每一分片上的数据量仍可能很大,所以经常可以将其他标准与时间标准组合使用,而时间几乎是分割标准的一个必然组合部分。

(4)关系模式定义。

数据仓库的每个主题都是由多个表来实现的,这些表之间依靠主题的公共码键联系在一起,形成一个完整的主题。在概念模型设计时,我们就确定了数据仓库的基本主题,并对每个主题的公共码键、基本内容等做了描述。在这一步里,需要对选定的当前实施的主题进行模式划分,形成多个表,并确定各个表的关系模式。

(5)记录系统定义。

数据仓库中的数据来源于多个已经存在的操作型系统及外部系统。一方面,各个系统的数据都是面向应用的,不能完整地描述企业中的主题域,另一方面,多个数据源的数据存在着许多不一致。因此要从数据仓库的概念模型出发,结合主题的多个表的关系模式,确定现有系统的哪些数据能较好地适应数据仓库的需要。这就要求选择最完整、最及时、最准确、最接近外部实体源的数据作为记录系统,同时这些数据所在的表的关系模式最接近于构成主题的多个表的关系模式。记录系统的定义要记入数据仓库的元数据。

逻辑模型设计的成果是,对每个当前要装载的主题的逻辑实现进行定义,内容记录在数据仓库的元数据中,包括:

●适当的粒度划分。

●合理的数据分割策略。

●适当的表划分。

●定义合适的数据来源等。

步骤4:物理模型设计。

这一步所做的工作是确定数据的存储结构,确定索引策略,确定数据存放位置,确定存储分配。

确定数据仓库实现的物理模型,要求设计人员必须要全面了解所选用的数据仓库和数据库管理系统,特别是存储结构和存取方法;了解数据环境、数据的使用频度、使用方式、数据规模以及响应时间要求等,这些是对时间和空间效率进行平衡和优化的重要依据;了解外部存储设备的特性,如分块原则,块大小的规定,设备的I/O特性等。

(1)确定数据的存储结构。

一个数据仓库系统或数据库管理系统往往都提供多种存储结构供设计人员选用,不同的存储结构有不同的实现方式,各有各的适用范围和优缺点,设计人员在选择合适的存储结构时应该权衡三个方面的主要因素:存取时间、存储空间利用率和维护代价。

(2)确定索引策略。

数据仓库的数据量很大,因而需要对数据的存取路径进行仔细设计和选择。由于数据仓库的数据都是不常更新的,因而可以设计多种多样的索引结构来提高数据存取效率。在数据仓库中,设计人员可以考虑对各个数据存储建立专用的、复杂的索引,以获得最高的存取效率,因为在数据仓库中的数据是不常更新的,也就是说每个数据存储是稳定的,因而虽然建立专用的、复杂的索引有一定的代价,但一旦建立就几乎不需要再付出维护索引的代价。

(3)确定数据存放位置。

同一个主题的数据并不要求存放在相同的介质上,在物理设计时,我们常常要按数据的重要程度、使用频率以及对响应时间的要求进行分类,并将不同类的数据分别存储在不同的存储设备中。重要程度高、经常存取并对响应时间要求高的数据就存放在高速存储设备上,如硬盘;存取频率低或对存取响应时间要求低的数据则可以放在低速存储设备上,如磁盘或磁带。

数据存放位置的确定还要考虑到其他一些方法,如:决定是否进行合并表;是否对一些经常性的应用建立数据序列;对常用的、不常修改的表或属性是否冗余存储。如果采用这些技术,就要记入元数据。

(4)确定存储分配。

许多数据库管理系统提供了一些存储分配的参数供设计者进行物理优化处理,如:块的尺寸、缓冲区的大小和个数等,它们都要在物理设计时确定。这同创建数据库系统时的考虑是一样的。

步骤5:数据仓库的生成。

在这一步里所要做的工作是接口编程,数据装入。

这一步工作的成果是,数据已经装入到数据仓库中,可以在其上建立数据仓库的应用,即DSS应用。

(1)设计接口。

将操作型环境下的数据装载进入数据仓库环境,需要在两个不同环境的记录系统之间建立一个接口。乍一看,建立和设计这个接口,似乎只要编制一个抽取程序就可以了,事实上,在这一阶段的工作中,的确对数据进行了抽取,但抽取并不是全部的工作,这一接口还应具有以下的功能:

●从面向应用和操作的环境中生成完整的数据。

●数据的基于时间的转换。

●数据的凝聚。

●对现有记录系统的有效扫描,以便以后进行追加,追加有以下几种方法:对操作型数据加时标、创建“delta”文件、使用系统日志或审计日志、修改程序代码、使用前映像或后映像文件。

当然,考虑这些因素的同时,还要考虑到物理设计的一些因素和技术条件限制,根据这些内容,严格地制定规格说明,然后根据规格说明,进行接口编程。

从操作型环境到数据仓库环境的数据接口编程的过程和一般的编程类似,它也包括伪码开发、编码、编译、检错、测试等步骤。

(2)数据装入。

在这一步里所进行的就是运行接口程序,将数据装入到数据仓库中。主要的工作是:

●确定数据装入的次序。

●清除无效或错误数据。

●数据“老化”。

●数据粒度管理。

●数据刷新等。

最初只使用一部分数据来生成第一个主题域,使得设计人员能够轻易且迅速地对已做工作进行调整,而且能够尽早地提交到下一步骤,即数据仓库的使用和维护,这样可以在经济上最快地得到回报,又能够通过最终用户的使用,尽早发现一些问题和新的需求,然后反馈给设计人员,设计人员继续对系统改进、扩展。

步骤6:数据仓库的使用和维护。

在这一步中所要做的工作有建立DSS应用,即使用数据仓库;理解需求,调整和完善系统,维护数据仓库。

(1)建立DSS应用。

建立企业的体系化环境,不仅包括建立起操作型和分析型的数据环境,还应包括在这一数据环境中建立起企业的各种应用。使用数据仓库,即开发DSS应用,与在操作型环境中的应用开发有着本质区别,开发DSS应用不同于联机事务处理应用开发的显著特点在于:

●DSS应用开发是从数据出发的。

●DSS应用的需求不能在开发初期明确了解。

●DSS应用开发是一个不断循环的过程,是启发式的开发。

DSS应用主要可分为两类:例行分析处理和启发式分析处理。例行分析处理是指那些重复进行的分析处理,它通常是属于部门级的应用,如部门统计分析,报表分析等;而个人级的分析应用经常是随机性很大的,企业经营者受到某种信息启发而进行的一些即时性的分析处理,可以称之为启发式的分析处理。

(2)理解需求,调整和完善系统,维护数据仓库。

数据仓库的开发采用的是逐步完善的原型法的开发方法,它要求:要尽快地让系统运行起来,尽早产生效益;要在系统运行或使用中,不断地理解需求,改善系统;不断地考虑新的需求,完善系统。

维护数据仓库的工作主要是管理日常数据装入的工作,包括刷新数据仓库的当前详细数据,将过时的数据转化成历史数据,清除不再使用的数据,管理元数据等;另外还包括如何利用接口定期从操作型环境向数据仓库追加数据,确定数据仓库数据刷新频率等。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈