地震科学数据是认识地震的重要依据,全面的地震科学数据支撑,既对中国地震局各项业务的开展起着积极作用,也可以促进行业科研人员进行多学科交叉研究,推动地震科技发展。随着多年的累积,中国地震局整合了100多个数据集,可共享的地震资源达到300 TB。为此,中国地震台网中心于2002年率先在地震系统开展地震科学数据共享工程,整理了地震行业众多学科的数据资源,建设了学科主体数据库,规划设计了数据管理和服务标准[1];随后,江苏省地震局依托本省的测震数据库、前兆数据库建设了江苏省地震科学数据共享网站[2];上海市地震局建设了省局资源共享平台,对强震、测震、空间信息、地震地质背景等数据进行规范化管理[3]。上述系统的建设极大地推进了地震科学数据的共享进程。但由于地震科学数据涵盖学科多、时间跨度长、动态性强、数据量级大、数据结构异构等特点,现存系统在体量、功能和性能方面很难满足行业用户的数据共享需求,亟需一个面向全行业、零障碍、一站式的地震科学数据共享服务平台。为此,本文以国家科学数据共享工程要求为指导,遵循标准化、多层次、多手段共享理念,在综合调研现有系统的瓶颈和用户需求分析的基础上,利用主流MVC模式的SSH(Spring、Struts2和Hibernate)框架和Ajax框架,整合了电子地图数据库、行业数据库和所有Web应用服务(数据检索、可视化和下载等服务),最大限度地降低了数据获取和应用的成本,促进地震科学数据的交换共享效益,为全行业用户提供统一、开放、一站式的数据共享门户。
1 平台架构平台采用B/S架构,由网站客户端和服务端两大模块组成(图 1)。网站客户端是数据接口的具体表现层,提供数据类别选择、参数设定等功能,辅助用户锁定目标数据。服务端整合离线电子地图服务、数据库服务、测震波形文件服务等数据基础设施,提供数据检索、可视化、下载等服务,支撑共享服务平台。平台基于瘦客户端的应用架构,通过Web浏览器访问即可使用,具有良好的用户体验、可移植性、可维护性、可扩展性。
中国地震局第二监测中心电子地图服务器缓存了百度地图的瓦片底图,提供的Web地图API符合百度地图规范。考虑到平台数据类型多、空间覆盖广,为方便用户快速定位目标数据,本平台服务端整合了前述电子地图服务,构建GIS平台[4],实现标记、空间缓冲区查询等功能。
数据库服务器用于存储前兆数据(含前兆观测、GNSS产品、气象、热红外资料等)、专题数据(含中国震例、大震序列、地震区划、断裂构造、断层错动模型、应急产品等)以及地震目录、震源机制解等规范化测震数据,依据地震科学数据共享工程实施意见,为保证良好的数据表结构和分表分库体系,实现共享数据的规范化管理、存储和高效检索性能,采用关系型数据库Oracle。
测震波形文件服务器主要存储二进制测震波形数据和打包压缩的各类数据集,依托于中国地震台网中心FDSN标准数据共享Web服务云平台提供的fdsnws-event服务[5],服务接口满足RESTful规范[6],本平台集成这一服务,为用户提供互操作门户。
2 服务端设计高质量、高可用的服务端,一方面可以保证行业用户使用平台高效、稳定地完成数据资源各类服务请求,达到一个良好的体验度,降低获取地震资源的成本;另一方面,良好的高可用性可适应地震数据资源的需求形式随着不同业务和科研需求变化的情况,易于维护平台的专家扩充业务。为此,以保障服务质量和可维护性为目标,平台采用3层架构,即数据层、业务层、应用层,使得在服务器端有效地分离了数据存储、业务逻辑和应用需求,极大地降低了不同模块间的耦合度,保障了Web应用的快速响应和易扩展性(图 2)。所有Web服务与电子地图服务均采用基于http的请求-响应模型[7],通过Web应用将二者集成起来,易于使用服务。
数据层由数据库服务器和测震波形文件服务器两个部分组成,存储和管理平台共享数据,利于持续增加新的数据资源。业务层的构建基于共享数据的检索服务、可视化服务、下载服务和缓存清理服务,可快速扩充满足新资源的服务。应用层用于整合业务层的3种服务和电子地图服务,以响应各种用户请求,如基于台站、测点、测项、类别等不同数据检索策略的需求,波形数据预览、数据产品预览、GMT在线制图等可视化需求,数据的实时下载、线下准备、站内通知下载等个性化定制服务,通过这些渠道,确保用户获取资源形式简单化。
2.1 服务端框架设计平台逻辑结构分离了数据存储、业务逻辑、应用需求,各部分结构清晰,极大地降低了模块间的耦合度,有利于系统的扩展和维护。MVC模式能较好地解决层次整合问题,主要用于分离界面逻辑与业务逻辑[8]。本平台采用Java EE的基于MVC模式的SSH(Spring、Struts2和Hibernate)框架实现(图 3),各层应用不同的技术构造了灵活的、易于扩展维护的Web应用程序[9]。考虑系统各个应用请求响应的性能,为保证数据通信过程的流畅性,应用层应尽可能减少服务器请求,为此,平台集成了局部刷新技术(Ajax技术)完成数据请求,即使用异步数据传输http请求实现浏览器与Web服务器之间的通信,避免重新加载整个页面,只从服务器请求少量的信息[10]。Ajax和SSH框架的集成有利于构建高效的数据共享服务。
基于业务调配、逻辑实现,将业务层分为控制器层和业务逻辑层两个部分,以降低系统重构成本,提高系统的可维护性、扩展性和可修改性。业务层集成了Spring、Struts2两种框架。考虑控制器和业务逻辑的解耦,利用Spring来接管对象创建、调配。以Struts2框架作为控制器,负责用户参数接收、验证、业务调用、数据返回等职能。Web应用中配置方式如下:1)在web.xml配置文件中配置org.springframework.web.context.ContextLoaderListener监听器来完成框架统筹工作,调配框架之间的互操作;2)在struts2.xml配置文件中配置struts.objectFactory参数值为Spring,由Spring负责Action对象的生命周期。
数据访问层封装了各类数据的交互操作,支撑业务层服务。对于数据库服务器中的数据请求,为了方便操纵数据库的业务场景,以主流ORM框架Hibernate完成交互工作,隐藏复杂的数据访问细节,便于扩展。但考虑到数据结构的复杂性,为提高数据检索性能,并未使用Spring接管Hibernate,而是作为独立模块完成数据交互。对于文件服务器中的数据请求,基于http协议的Get方法实现,保证获取数据的完整性。
应用层是数据接口的表现层,整合了html/css/JavaScript等Web前端开发以及Ajax技术,来构建数据检索、预览、下载等各种应用。利用html/css/JavaScript等Web前端技术搭建网站客户端,提供简便易用的界面。平台中的数据检索、可视化、数据下载等请求则利用Ajax技术发送给Struts2的Action,由Struts2控制这些请求的处理和转发,精确调用业务逻辑满足用户需求。
2.2 共享数据格式平台数据涉及众多学科,规范不一,具有典型的海量、异构、多维等特点,且用户需求多样化,为此平台采取“分而治之”的策略。对于地震目录、震源机制等已规范化测震数据和专题数据,保留原有格式,便于用户直接使用。对于测震波形数据,因数据体量大、结构复杂,则采用地震学波形数据的标准格式miniSEED[11]作为共享格式,减少转换代价,并可满足专业用户需求。对于前兆数据,涉及学科较多,但数据参数基本一致,平台设计了一种易于理解、便于网络传输、共享的XML数据封装模型。
XML数据封装模型的定义基于前兆数据库的表结构,以标签qzdata为根元素标识数据类型,主体部分由元信息部分和数据集部分组成,分别以标签metadata和datasets标记。元信息部分包括台站代码、测点代码、测项代码、数据类型、采样率代码、产品编码、计算方法、其他编码等8个因子,数据集以d为尺度,封装成时间序列的集合。一个XML文档以8个因子作为数据识别单元,存储该单元在所选时间段的所有数据。
平台设计的XML文档依据前兆数据库管理规则,以统一的数据模型来描述保存在异构环境中的各种数据,灵活表达数据内涵,屏蔽了数据源中应用环境和数据结构的异构性。同时,标签元素的规整性也确保了文档在网络中传输的便利性以及平台处理数据的统一性[12]。这些特征有利于XML文档在不同系统之间的交换,推动数据的全面共享。
2.3 数据检索服务针对平台数据源的异构性,数据检索服务模块所定义的参数涵盖了前兆、测震、专题以及规范化测震数据的所有数据结构,以确保查询的精确性,满足用户不同维度(时间尺度、空间尺度、采样率、测项参数等)的检索需求。根据数据资源的数据格式、管理规则和行业用户需求,检索服务可分为3种:
1) 类别数据检索。针对地震目录、震源机制等已规范化的数据和专题数据,通过分类,提供规范化的分类目录供用户选择。
2) 测震波形数据检索。该类数据以二进制格式存储于中国地震台网中心Web服务云平台的文件服务器。本平台整合了台网中心云平台所提供的数据获取接口及其相关参数,封装了(连续和事件)波形数据请求,对用户提交的参数进行组装,利用http请求获取数据,以服务器作为中转站,提供给用户。
3) 前兆数据检索。该类数据存储于关系型数据库中,基于数据库中分表规则和表结构定义,封装不同学科的数据结构,并以数据需求为依据,提供基于台站、测点、测项3种检索模式,服务端依据3种检索模式组装请求参数,生成SQL查询语句,定位到具体的表,筛选出所需数据。参数组装分为表名称组装和筛选条件组装(表 1),表名称组装包括数据类型(原始数据和预处理数据)、测项代码、采样率的组合。
现有的行业数据共享平台一般仅提供部分数据的可视化。为提升用户体验、深度展现数据内涵,本平台设计了类别/前兆数据预览、测震波形数据预览、GMT在线制图等3个可视化模块,技术流程如图 4,可以展现平台的所有数据。
前兆数据和测震波形数据均为时间序列,数据量大,为保证可视化渲染模块快速预览、自动渲染出高质量图形,系统采用基于JavaScript的Highcharts作为渲染支持的图表库,真正实现跨语言、跨平台、实时显示的Web级图表显示框架[13]。GMT在线制图只针对特定的数据集(如台站信息数据),由用户与应用交互,提交渲染参数,服务自动抓取数据,生成脚本,绘制图形。
2.5 数据下载服务依据3种检索服务,系统提供了相应的3种数据下载服务:类别数据下载、前兆数据集下载和测震数据集下载,保证用户获取数据的条理性和便利性。
对于类别数据下载服务,依据用户所选择的不同类别,提供相应的规范文档数据供用户下载。对于前兆数据、测震波形数据下载服务,依据时间范围尺度,提供实时检索下载和离线检索下载两种方式。对于小范围时间段的数据集,可以实时检索、下载。针对长时间尺度的数据集,提供离线准备数据-通知下载的方式。两者对于离线准备下载服务的支持有所不同(表 2)。前兆数据面向的是网站的注册用户,用户以数据订单的形式请求;测震波形数据面向的是所有用户,采取“标准化规范约束”策略,用户请求参数需满足iris波形数据批量请求标准BREQ_FAST[14]。
面向地震行业的地震数据共享服务平台向地震全行业用户开放,主页链接为http://10.5.109.26:8080/csds/index.html。系统上线以来,运行稳定,具有可靠的容错机制;支持多用户并发操作;系统单次响应最大时间≤20 s;海量数据平均单次查询≤30 s;离线数据准备最大时间≤24 h;在服务端可动态添加业务service模块,提供接口使用,在功能和性能上均达到预期要求。
4 结语基于B/S架构开发的面向地震行业的地震数据共享服务平台利用主流的MVC模式的SSH(Spring、Struts2和Hibernate)框架和Ajax框架,解决了海量地震科学数据的交换共享技术瓶颈;利用XML数据封装模型实现了异构环境下数据的自由、便捷共享;提供了涵盖所有数据结构的多维度检索及相应的下载服务,从不同角度满足了用户的检索、下载需求;数据预览和在线制图功能为用户充分理解数据内涵提供了可视化服务;统一、开放的互操作门户网站为地震全行业用户提供了零障碍、一站式数据共享渠道,全面提升了行业数据资源的共享服务能力。随着平台的推广使用,主体共享数据和用户量都将不断扩充,数据的分布式管理和在线可视化功能仍需进一步完善,以保障系统的高效、稳定和体验度。
[1] |
刘瑞丰, 蔡晋安, 彭克银, 等. 地震科学数据共享工程[J]. 地震, 2007, 27(2): 9-16 (Liu Ruifeng, Cai Jin'an, Peng Keyin, et al. The Project of Seismological Data Sharing[J]. Earthquake, 2007, 27(2): 9-16 DOI:10.3969/j.issn.1000-3274.2007.02.002)
(0) |
[2] |
詹小艳, 许红梅, 朱升初, 等. 江苏省地震科学数据共享平台技术研究[J]. 防灾科技学院学报, 2012, 14(1): 57-63 (Zhan Xiaoyan, Xu Hongmei, Zhu Shengchu, et al. Study on Earthquake Science Data Sharing Platform Technology in Jiangsu Province[J]. Journal of College of Disaster Prevention Techniques, 2012, 14(1): 57-63 DOI:10.3969/j.issn.1673-8047.2012.01.012)
(0) |
[3] |
袁媛, 尹京苑. 上海地震科学数据共享服务平台建设[J]. 华北地震科学, 2014, 32(1): 16-21 (Yuan Yuan, Yin Jingyuan. The Establishment of Shanghai Seismological Data Sharing System[J]. North China Earthquake Sciences, 2014, 32(1): 16-21 DOI:10.3969/j.issn.1003-1375.2014.01.004)
(0) |
[4] |
胡斌, 董一兵, 刘新, 等. 基于百度地图API的测震台网电子地图服务系统的设计与实现[J]. 地震研究, 2014, 37(2): 312-316 (Hu Bin, Dong Yibing, Liu Xin, et al. Design & Implementation of E-Map Service System for Seismic Network Based on Baidu Maps API[J]. Journal of Seismological Research, 2014, 37(2): 312-316 DOI:10.3969/j.issn.1000-0666.2014.02.022)
(0) |
[5] |
马延路, 陈宏峰, 邹立晔, 等.数据共享FDSN标准Web服务云平台用户手册[Z]. 2015 (Ma Yanlu, Chen Hongfeng, Zou Liye, et al. User Manual on Web Services Cloud Platform: Data Sharing FDSN Standard[Z]. 2015)
(0) |
[6] |
王亚玲, 王胜, 李晓珍, 等. 基于面向资源架构的Web资源服务安全交互模型设计与实现[J]. 计算机应用, 2015(增2): 160-163 (Wang Yaling, Wang Sheng, Li Xiaozhen, et al. Design and Implementation of Web Resource Service Security Interaction Model Based on Resource-Oriented Architecture[J]. Journal of Computer Applications, 2015(S2): 160-163)
(0) |
[7] |
Fall K R, Stevens W R. TCP/IP Illustrated Volume 1[M]. New Jersey: Addison-Wesley Educational Publishers Inc, 2012
(0) |
[8] |
刘亮, 霍剑青, 郭玉刚, 等. 基于MVC的通用型模式的设计与实现[J]. 中国科学技术大学学报, 2010, 40(6): 635-639 (Liu Liang, Huo Jianqing, Guo Yugang, et al. Design and Actualization of Universal MVC Pattern[J]. Journal of University of Science and Technology of China, 2010, 40(6): 635-639 DOI:10.3969/j.issn.0253-2778.2010.06.016)
(0) |
[9] |
龚尚福, 龚琴, 冯健. 基于SSH框架的EPON性能管理系统的设计与实现[J]. 计算机应用, 2013, 33(2): 571-574 (Gong Shangfu, Gong Qin, Feng Jian. Design and Implementation of EPON Performance Management System Based on SSH Framework[J]. Journal of Computer Applications, 2013, 33(2): 571-574)
(0) |
[10] |
李先军, 刘波, 余丹, 等. 一种基于AJAX技术的B/S与C/S混合构架模式[J]. 计算机应用, 2009, 29(4): 1 135-1 138 (Li Xianjun, Liu Bo, Yu Dan, et al. Mixed C/S and B/S Architecture Pattern Based on AJAX[J]. Journal of Computer Applications, 2009, 29(4): 1 135-1 138)
(0) |
[11] |
IRIS.Data Formats[EB/OL]. http://ds.iris.edu/ds/nodes/dmc/data/formats/#miniseed, 2016
(0) |
[12] |
唐晓光.基于订阅机制的数据共享平台的研究与设计[D].大庆: 东北石油大学, 2013 (Tang Xiaoguang. Design and Research of Data Sharing Platform Based on Subscription Mechanism[D]. Daqing: Northeast Petroleum University, 2013)
(0) |
[13] |
张建军, 刘虎, 倪芳英. 基于SSH与Highcharts整合架构的Web应用研究[J]. 计算机技术与发展, 2013, 23(9): 245-247 (Zhang Jianjun, Liu Hu, Ni Fangying. Research and Application of Web Architecture Based on SSH and Highcharts[J]. Computer Technology and Development, 2013, 23(9): 245-247)
(0) |
[14] |
IRIS.Manuals: BREQ_FAST[EB/OL]. http://ds.iris.edu/ds/nodes/dmc/manuals/breq_fast/, 2016
(0) |