返回
中国计算机报1999年第81期

看SQL Server 7.0的数据仓库

闪四清

  最新发布的关系型数据库管理系统SQL Server 7.0确定了一个新的数据仓库策略。创建一个新的、综合的数据仓库,使得利用SQL Server设计和构建低成本数据库的工作更加容易。

  数据仓库涉及在关系数据库中存储数据和处理这些数据,使数据成为查询和决策支持分布的更加有效的工具。当前,数据传输和分析进程最流行的说法是商业智能。换句话说,数据仓库是一种把收集的数据转变成有意义的信息技术。数据仓库允许一个企业的各个部门之间共享数据,为企业更快、更好地做出商业决策提供更加准确、完整的信息。数据仓库是一个处理过程,该过程从历史的角度组织和存储数据,并能集成地进行数据分析。简而言之,数据仓库就是一个大的数据库,存储了该公司所有业务数据。这里我们简述一下SQL Server 7.0中对数据仓库的支持以及数据仓库的实现。


  数据仓库的支持工具


  数据仓库的实现最终由许多支持工具来完成。在SQL Server 7.0中,提供了一些实现数据仓库的支持工具。这些工具包括OLAP服务、数据转换服务、PivotTable服务、英语查询服务等。

  OLAP服务

  在数据仓库或者数据市场中的信息由在线分析进程(OLAP)处理。OLAP可以有效地以由维度和测度组成的立体方式查看数据。数据仓库和数据市场是存储用于分析数据的场地,OLAP是允许客户应用程序有效地访问这些数据的技术。OLAP描述的是一种多维数据服务(这里指的维是指人们观察客观世界的角度,例如时间、地域、业务等),这种服务的设计目的是保证分析员、经理和决策者针对特定的问题,通过快速、一致、交互式的实时数据访问和分析,获得有创意的发现。

  在SQL Server 7.0中,有三种用于存储数据仓库中维度数据的方法,每一种方法都随其数据存储要求和其数据检索速度而变化。(1)MOLAP。多维型OLAP在一个用于压缩索引的永久数据存储中存储维度数据和事实数据。合计存储用来加快数据访问。MOLAP查询引擎通常是专有的,并且优化成由MOLAP数据存储使用的存储格式。MOLAP提供了比ROLAP更快的查询处理速度,并且要求更少的存储空间。然而,它不能较好地伸缩,并且要求使用单独的数据库来存储。(2)ROLAP。关系型OLAP在关系型数据表中存储合计。ROLAP的关系型数据库的应用允许其利用已有的数据库资源,并且允许ROLAP应用程序很好地伸缩。然而,ROLAP使用表存储合计一般要求比MOLAP更多的磁盘空间,速度相对比较慢。(3)HOLAP。正如其名称所示,混合型OLAP介于MOLAP和ROLAP之间。像ROLAP一样,HOLAP使主数据存储在源数据库中。像MOLAP一样,HOLAP把合计存储在一个永久性数据存储的地方,它与主关系数据库分开。这种混合形成使HOLAP可以提供MOLAP和ROLAP两者的优点。然而,不像MOLAP和ROLAP,要求HOLAD按照已定义的标准,没有统一的实现形式。

  数据转换服务(DTS)

  数据转换服务提供了数据转换功能,例如数据引入、引出以及在SQL Server和任何OLEDB、ODBC或者文本格式文件之间转换数据。利用DTS,通过交互式地或者按照规划自动地(无须人工干预)从多处异构数据源输入数据,这样便有可能在SQL Server上建立数据仓库和数据市场。最大的问题是保持数据不断更新以与操作系统相适应。数据的来源特性允许用户输入查询数据的输入时间、地点及其计算方法。数据的引入引出是通过以相同的格式读写数据,在应用程序之间交换数据的过程。例如,DTS能够把数据从ASCII文本文件或者ORACLE数据库中引入到SQL Server中。反之,数据也能够从SQL Server中引出到一个ODBC数据源,或一个Microsoft Excel表单中。

  PivotTable服务

  PivotTable服务和OLAP一起为用户提供客户端对OLAP数据的存取。PivotTable服务运行于客户端工作站商,它使得其部门可以利用VisualBasic或其它语言来开发用户程序,这些程序可以利用OLEDB技术,并使用OLAP服务中的OLAP数据或直接取自关系数据库的数据。当它和OLAP服务一起使用时,PivotTable服务可以自动地将进程和缓冲内存分配到最合适的位置,并且允许多个客户动态存取同一个立方体。PivotTable服务也能在本地客户机上存储数据,从而使用户可以在不连接OLAP服务的情况下对数据进行分析。这个移动式的解决方案允许分析者将数据带回家或在路途中进行分析。为最终用户提供的OLAP数据分析和描述工具可以利用PivotTable服务进行开发。微软的ActiveX控件技术及其Office组件正在被创建以产生强大的图形用户界面。PivotTable服务也提供了开放的界面,独立的软件销售商可以利用它来开发第三方应用产品。

  英语查询服务

  英语查询环境允许设计者将他们的关系数据库转移到英语查询上来。这给最终用户提供了使用英语提出问题而不是用SQL语言进行查询的能力。英语查询程序是利用英语查询域编辑器创建的。其中,提供了数据库的有关信息,从而英语查询可用于处理关于特殊表、域和数据的英语问题。


  数据仓库的实现


  一般地,设计和创建数据仓库的步骤是:

  *确定用户需求

  *设计和创建数据库

  *提取和加载数据仓库

  确定用户需求

  确定终端用户的需要,为数据仓库中存储的数据建立模型。通过数据模型,可以得到企业完整而清晰的描述信息。数据模型是面向主题建立的,同时又为多个面向应用的数据源的集成提供了统一的标准。数据仓库的数据模型一般包括:企业的各个主题域、主题域之间的联系、描述主题的码和属性组。

  设计和建立数据库

  设计和建立数据库是成功地创建数据仓库的一个关键步骤。这一步通常由有经验的数据库设计人员使用,因为这一步涉及的数据来自多种数据源并且要把它们合并成一个单独的逻辑模型。不像OLTP系统那样以高度的正规化形式存储数据,数据仓库中存储的数据以一种非常非正规化的形式存储数据以便提高查询的性能。数据仓库常常使用星型模式和雪花型模式来存储数据,作为OLAP工具管理的合计基础,以便尽可能快地响应复杂查询。

  星型模式是最流行的实现数据仓库的设计结构。星型模式通过使用一个包含主题的事实表和多个包含事实的非正规化描述的维度表来执行典型的决策支持查询。一旦创建了事实表,那么可以使用OLAP工具预先计算常用的访问信息。星型模式是一种关系型数据库结构,在该模式的中间是事实表,周围是次要的表,数据在事实表中维护,维度数据在维度表中维护。每一个维度表通过一个关键字直接与事实表关联。维度是组织数据仓库数据的分类信息,例如时间、地理位置、组织等等。维度用于父层和子层这类分层结构。例如,地理位置维度可以包含国家、城市等数据。因此,在该维度表中,纬度由所有的国家、所有的城市组成。为了支持这种分层结构,在维度表中需要包括每一个成员与更高层次上纬度的关系。维度关键字是用于查询中心事实表数据的唯一标识符。维度关键字就像主键一样,把一个维度表与事实表中的一行链接起来。这种结构使得很容易构造复杂的查询语句,并且支持决策支持系统中向下挖掘式的分析。事实表包含了描述商业特定事件的数据。例如银行业务或者产品销售。事实表还包含了任何数据合计,例如每一个地区每月的销售情况。一般地,事实表中的数据是不允许修改的,新数据只是简单地增加进去。维度表包含了用于参考存储在事实表中数据的数据,例如产品描述、客户姓名和地址、供应商信息等。把特征信息和特定的事件分开,可以通过减少在事实表中扫描的数据量提高查询性能。维度表不包含与事实表同样多的数据,维度数据可以改变,例如客户的地址或者电话号码改变了。

  通过降低需要从磁盘读取数据的数据量,星型模式设计有助于提高查询性能。查询语句分析比较小的维度表中的数据来获取维度关键字以便在中心的事实表中索引,可以降低扫描的数据行。星型模式的结构如图1所示。

  图1星型模式结构示意图

  雪花模式是星型模式的一种扩展形式,在这种模式中,维度表存储了正规化的数据,这种结构通过减少磁盘读的数量而提高查询性能。维度表分解成与事实表直接关联的主维度表和与主维度表关联的次维度表,次维度表与事实表间接关联。雪花模式的结构示意图如图2所示。

  图2雪花模式结构示意图

  提取和加载数据

  把经营系统中数据提取出来然后加载到数据仓库中,随着复杂性的变化而变化。如果在数据源中的数据和将要出现在数据仓库中的数据是直接关联,那么这个进程非常简单。这个进程也可能非常复杂,例如数据源的数据驻留在多个异构系统中,并且在加载数据之前需要大量的转变格式和修改。