基于数据仓库技术的消防分析系统设计研究
2013-08-20丁晓春
丁晓春 杜 渂
(1.上海消防局 上海 200051 2.上海迪爱斯通信设备有限公司 上海 200030)
0 引言
近年来,随着社会经济的快速发展,消防工作的重要性也越来越高,由于各级消防机关的重视,消防信息化建设也进入了快速发展的时期。随着消防一体化建设的深入开展,各级消防机关拥有的数据急剧增大,若能利用好这些海量的数据和信息,并进行快速深入的处理和分析,从中发现规律,找出问题,就可以帮助消防机关更好地进行研判决策。
本文结合实际业务需求,研究利用数据仓库在消防信息分析研判方面的建设模式和设计方法,探讨了实现“研判指导工作”的有效途径,提升了消防部门在分析决策上的及时性和准确性。
1 数据仓库概述
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合。
数据仓库用于分析型数据的处理,包含了用户大量历史数据,存放在数据仓库中的数据一般不再修改。数据仓库可对多个异构的数据源进行有效集成,集成后按用户需求构建相关主题,用于支持分析决策。
数据仓库的体系结构如下图所示,主要由5层组成。数据源层主要由各种业务数据库组成;汇聚层主要是ETL,包括数据的抽取、转换、清洗和加载等过程,并将整理好的数据加载到数据仓库中;存储层主要是按照业务要求架构的基于主题的数据仓库和数据集市;分析层主要通过OLAP工具和数据挖掘工具对数据仓库中的数据进行深层次的分析;交互层主要是通过报表、仪表板等各种展现方式将分析结果提供给用户做决策使用。
通过数据仓库的建设,可以针对某市消防部门建立统一的规范和标准,实现领域内各业务系统的数据汇聚,通过整合各种数据,达到消除信息孤岛现象的目的。通过前端智能展现技术,可以为消防部门的防火、灭火和抢险救援等各项工作提供决策性的数据支持。
2 应用设计和建模
基于数据仓库的消防分析系统设计主要包括数据仓库架构设计、主题设计、度量设计、维度设计、物理建模、ETL设计和OLAP设计等方面。下面将介绍这几个方面的设计内容。
图1 数据仓库体系结构图
2.1 消防数据仓库架构设计
数据仓库主要包括星型模型和雪花模型两种架构模型。星型模型中每个维度表都直接和事实表相关联,没有渐变维度,因此存在着一些冗余数据。雪花模型中存在着一个或多个维度通过其他维度与事实表相关联的情况,不存在冗余数据,因此雪花模型从关系数据库设计的角度来讲是满足第三范式的规范化要求的。
在星型模型中,由于利用冗余数据减少了表关联,因此统计效率相较与雪花模型要高。雪花模型由于满足规范化设计要求,节约了存储空间,但存在多个表关联的问题,因此效率上要低些。
在消防数据仓库结构的实际设计中两种模型都要用到,根据具体的业务需求及数据情况选择具体的架构模型。例如行政区划维度包含省、市、区县、街道,由于该维度数据量比较小,可以使用星型模型,直接将省、市、区县、街道存储在一张维度表中,这样查询效率较高。在时间维度设计上,由于需要维护一些特殊的节假日,可以单独设计一个特殊节假日维度和时间维度相关联,如果采用雪花模型,即方便扩展维护,也节约了存储空间。
2.2 消防数据信息的主题设计
分析主题是数据仓库设计中首先应明确的内容,主题是一个在较高层次将数据归类的标准[1]。每一个分析主题对应于一个分析领域和方向,即用户决策时需要解决的问题,如火灾高发时段分析主题、高层建筑火灾分析主题等。
主题主要体现某一方面的分析角度(维度)和统计数值型数据(度量)之间的关系,确定主题时需要综合考虑如何通过维度的组合达到考察量度的目的。
面向消防业务相关的分析主题主要包括有接警出动分析、火灾报告分析等。分析主题一般与消防实际业务功能相对应,如接警出动分析可以考察某时间范围内的接警出动人次、车次和出动效率等数据;火灾报告分析可以分析火灾高发时段、高发季节和某时间范围内高发警情类型等数据。每个分析主题都与多个分析维度及度量相关联,通过多个维度和度量的组合可得到多个具体的分析报告。
不同的主题来源于数据仓库中的不同子集,通常称为数据集市。数据集市体现了数据仓库某一方面的信息,多用于部门级的分析应用,多个数据集市构成了数据仓库。
2.3 消防数据信息的度量设计
当确定分析主题之后,需要确定分析的度量。度量是每个分析主题中与维度相关的实事数据,通常是需要分析的目标对象数据和技术指标,实际设计中也可以基于不同的度量进行的复杂的关键性能指标(KPI)计算。
面向消防业务接警出动分析主题相关的度量包括出动次数、出动人数和出动车辆数等内容;与火灾报告分析主题相关的度量包括火灾计数、直接财产损失、过火面积、受灾户数、受灾人数、死亡人数和受伤人数等内容,也可以包含同比、同比增长率、环比、环比增长率、占比、均数、极值、方差和标准差等技术指标。
结合每个度量的汇总情况和在不同维度下的聚合情况,度量的粒度设置也会不同,进行设计时通常采用“最小粒度原则”。当能确定分析需求的粒度时,可遵守相应的要求,否则应采用原始业务数据中能达到的最小粒度。例如在消防业务分析的需求和建模中,时间上需要精确到天,则数据度量的粒度到天即可。如果没有明确的需求或者为了应对以后的需求变化,则可以遵循“最小粒度原则”,将度量的粒度设置到秒级,在数据仓库实事表中保留每秒的数据,以便满足以后功能扩展或者分析细化的需求。当数据量巨大时,可以采用多维分析模型的方式,定时构建Cube,提前对海量数据进行汇总,保障分析和统计的执行效率。
2.4 消防数据信息的维度设计
维度是用于分析时的考察视角,主要与关系数据库中的字典表相对应。维度一般与分析主题相关联,通过把实事表的某些属性定义为维度,可以看到各度量的汇总情况,也可以基于所有的维度进行交叉分析,帮助用户对不同维度上的汇总数据进行深层次的对比分析。
维度存储一般分为ROLAP、MOLAP、HOLAP三种方式:
2.4.1 关系型维度(ROLAP)
ROLAP将维度存储在关系数据库中,所有聚合数据存在关系数据库视图中,在数据量大的情况下,效率很低。
2.4.2 多维度型(MOLAP)
MOLAP将维度及聚合数据存储在多维数据集中,利用数据立方体结构可以快速生成统计数据,需要占用较多的存储空间。
2.4.3 混合型(HOLAP)
HOLAP综合考虑了ROLAP和MOLAP优缺点,即将部分维度和度量值存储在关系数据库中,另一部分存在多维数据集中。
面向消防业务相关的维度包含了时间、消防单位、行政区划、事件类别、建筑类别、建筑结构、财产损失、过火面积、死亡人数、受伤人数、火灾等级和火灾原因等维度。
根据实际需要可以对某些维度生成层次结构,层次结构通常用来定义数据聚集,即用有序层次来组织数据的逻辑结构。如对时间维度的设计可以按“年-月-日-小时”、“年-季-月-旬-日”、“年-周”等各种层次结构进行设计,以满足不同的分析需求。针对消防的特殊业务需求,如需要重点关注春节期间的火灾情况,特别是大年三十晚上11:30至大年初一凌晨0:30这一特殊时段的因燃放烟花爆竹引起的火灾情况,可以建立基于农历节假日的“年-节日-特殊时段”时间维度进行深入分析。
维度的层次结构中包含着层次级别,通过向下钻取的方式可以层层展开需要统计的度量值数据,也可以通过向上聚集查看汇总的度量值数据。
对于维度级别的设定,可以将其绑定到维表中的不同字段,也可以绑定到维表中某些存在“父子维度”关系的字段。当使用父子维度时,通常绑定两个字段,一个字段用来标识维度的成员,另一个用来标识成员的父子关系。如行政区划维度,可以将所有行政区划存储在一列字段中,将其区划代码对应关系或者某区划的上级行政区划标识存储在另一列字段中,通过父子维度的绑定以实现层次结构。
2.5 数据仓库物理建模
数据仓库的物理建模是根据确定的某个分析主题,建立与分析主题相对应的事实表。在大多数情况下,事实表与业务库实体表相对应,如接警出动分析事实表所对应的实体表为接警表,火灾报告分析事实表所对应的实体表为反馈表。
事实表和维表共处与数据仓库之中,事实表是数据仓库的核心,通过将原始表和维度表进行关联而生成,包含了所有的业务数据,需要精心维护。
在设计时,原则上事实表中只包含业务键值、相关维度表的键值和相关的度量值。如前所述,事实表中的数据粒度应当尽量的小,并可根据实际的分析需要在多个事实表之上建立逻辑视图用于满足特殊的业务分析需求。
维度表与业务库中的数据字典表相对应,当存在多个异构数据源的数据字典表时需要进行数据清洗以保证维度数据的全局一致性。
2.6 消防数据信息的ETL设计
ETL是构建数据仓库的重要环节,是将业务系统数据库如消防接处警数据库、装备数据库、车辆数据库和人员数据库等相关数据采集汇聚到数据仓库的过程。
ETL包括数据的抽取、数据转换清洗和数据加载三个过程。
数据抽取过程将需要收集的数据放入数据采集区中,一般而言数据抽取只是简单的将业务系统中的数据复制到数据采集区中,不会改变数据结构,抽取的方式一般采用依据时间戳增量抽取的方式。
数据转换清洗过程是对数据采集区中的临时数据进行数据转换清洗,主要是解决数据质量问题。数据转换主要包括数据类型的转换、空值转换和时间类型转换等操作。数据清洗主要是为了解决数据的正确性、一致性和完整性等问题,同时需要对事实表中维度键值进行匹配,对多个异构数据源的维度进行统一处理,对错误数据进行修正等操作。当数据转换清洗过程中产生了问题数据时,如果有对应的清洗规时则按清洗规则处理,不符合清洗规则的数据则进入到问题数据表,等待后期的处理。
数据加载过程是对转换清洗后的数据按一定的顺序装载到数据仓库中。消防业务数据在加载时采用更新合并的方式。
消防分析系统中对接处警库进行ETL抽取的示例如下所示:
图2 ETL设计图
2.7 消防数据信息的OLAP设计
在系统的实际使用过程中,数据仓库和ETL都是为给OLAP提供数据支撑。OLAP提供了对海量数据的快速动态分析处理能力,通过建立各个面向主题的多维立方体(CUBE),采用上卷、下钻、切片、切块、透视、过滤和旋转等多种手段帮助消防指挥人员从多个视角全方位的综合分析数据,为辅助决策提供支持。如通过OLAP分析功能,消防指挥员可以快速对“某辖区电器类火灾的高发时间段”、“各支队本年度出动次数排名”等研判主题进行分析。
OLAP数据来源于数据仓库,需要与数据仓库中的数据进行同步,OLAP数据更新的过程即进行维度聚合计算的过程,计算的结果将被保存到多维数据集中。OLAP刷新的频率与业务仓库数据采集频率及实际应用需求相关,间隔时间从几分钟到几小时不等。
OLAP分析主题可以与数据仓库中的事实表相对应,也可以与数据仓库的逻辑视图相对应。OLAP建模主要包括构建数据视图、维度和度量值等内容。
消防分析系统中对火灾报告多维立方体建模的结构视图如下图所示:
图3 火灾报告的OLAP设计图
3 结论
本文结合消防领域的实际情况和辅助决策指挥信息化的客观需求,阐述了该领域内基于数据仓库技术的分析系统应用研究成果。利用该系统的分析结果,对消防相关部门的研判决策提供了数据支持,提升了消防相关部门在全面掌控防火、灭火和抢险救援等方面的能力,为消防部队“科技强警”的落实奠定了良好的基础,产生了良好的社会效益。
[1] Claudia Imhoff 等著,于戈等译.数据仓库设计[M].北京:机械工业出版社,2004.
[2] Jiawei Han,Micheline Kamber 著,范明,孟小峰译.数据挖掘概念与技术第二版[M].北京:机械工业出版社,2007.