APP下载

综合监控系统多关系数据库同步组件设计

2012-01-17包德梅

城市轨道交通研究 2012年11期
关键词:关系数据库标签服务器

朱 超 翁 元 包德梅

(国电南京自动化股份有限公司,210003,南京∥第一作者,工程师)

0 前言

城市轨道交通综合监控系统(ISCS)集成或互联BAS(设备监控系统)、FAS(防灾报警系统)、PSCADA(电力监控)、PA(广播)、CCTV(闭路电视)等多个专业子系统,实现包括突发异常工况在内的统一运营、统一管理。这其中,以关系数据库为基础的大容量历史数据存储和综合管理利用是系统平台不可或缺的重要功能之一。

就目前ISCS组网结构而言,通常包括三种关系数据库存储节点:OCC(运营控制中心)数据存储、车站级数据存储、面向特定应用的数据存储。

1)OCC数据存储主要以冗余历史数据库+磁盘阵列的方式配置,主备历史服务器共享磁盘阵列数据并对外提供统一透明的访问接口;

2)在“三级控制、两级管理”模式下,考虑系统可靠性提升及降级运行的要求,车站级需要具备一定时间段的数据存储功能;

3)越来越多的用户和应用要求将其所需的各类业务数据从“胖而全”的集中历史数据库中分离出来,存放在其他服务器和数据库节点上,并保持数据准实时同步,以满足运营对管理模式转变、数据查询实时性、特定数据安全性、数据管理责任划分等定向业务需求,如用电数据管理、设备维修管理等。

这些节点间不可避免地要实现数据按需流动和高效同步,可以是数据完整镜像级同步,也可能是按既定条件进行数据过滤和数据转储到其他机器节点上。

1 现有同步技术分析

目前节点数据同步设计主要包括两种方式:

1)多数ISCS系统平台采用同步模块和系统紧密结合的高耦合方式。即依据运行操作系统,采用的商用数据库平台及特点,系统内模块间的交互设计模式等设计开发,优化适应自身系统运行的同步模型。这种设计能较好地满足自身系统的运行需求,但对特定业务数据的分离存储需要重新设计开发程序,有些缺少对跨关系数据库平台的支持。

2)采用商用关系数据库自身附带的高级发布订阅机制,主流商用关系数据库一般提供此项功能,如MS SQLServer的三种发布订阅机制(快照、合并、事务)、Sync Framework和Sync Services;Oracle的高级复制、流技术;Sybase的RSM复制管理,MySQL的同步复制机制等等。这种方式利用商用数据库内置一体化的成熟数据分发技术,通过配置方式代替了绝大部分专用程序的开发测试工作,节省了系统实施的工作量,具有较好的适应性。但面向平台的实际使用过程需要较多的限制条件,如账户要求、故障还原模型、数据表建立的主键要求、服务器名称限制等;配置较为繁琐,节点越多,复杂度越高;对数据表增加了很多额外字段和同步专用数据量,对同步过程中新建数据表的情况处理不佳。

2 多节点同步架构

多个关系数据库节点同步组件Sycom覆盖普通的双机数据库同步需求,并支持多个业务节点间网状结构的数据交互。同步过程由同步规则约束,同步规则可以通过界面组态的友好方式设定数据源、数据终点、发布过滤条件,并细化到记录级。目的是通过简单易用的配置界面表达用户的多样化业务数据复制需求,实现双机、多机间更为灵活的数据同步和发布复制工作,以适应越来越细化的用户管理需求。

2.1 同步模型分析

同步组件着力解决以下三类典型的网络及数据模型(见图1)。

图1 同步网络模型

2.1.1 双机模型

常用于OCC主备数据库同步和车站配置主备服务器的情况(配置共享磁盘阵列则无需同步)。目的是将发生主备冗余切换后一段时间内分离存储的数据作并集式合并,再有差别地复制到双方数据库中,既保证主备节点数据一致性、完整性和对外部查询利用的透明性;同时避免数据双向流动导致的数据重复。

2.1.2 分布式模型

常用于车站和OCC主备服务器的数据交互,通过骨干的通信网络实现数据传输。每个车站都需要支持区域内一段时间内的独立数据磁盘存储,并要求将所有数据最终汇集到中央数据中心。正常运行情况下,对车站数据的查询利用可从车站本地获取,而不是将请求全部都发送到中心处理。异常及降级模式下,与中心失去通信,由于车站内存有数据,一般数据服务仍可正常进行。

2.1.3 业务数据分发模型

面向运营管理流程的优化和专业分工的精细化,对数据的利用已经不仅仅局限于条件查询及各类HMI(人机界面)显示(报表、曲线)。越来越多的面向行业的高级应用被提出,如历史数据挖掘应用、DSS(辅助决策支持系统)、预期提醒报警、历史重演等等,有些还需要较高的查询效率。因此把符合需求的数据复制到专门的业务服务器节点并保持同步,不仅满足了应用也方便了后续业务的扩展。

2.2 同步要素

1)组态规则。同步过程由规则决定,该规则定制实际数据流向、数据选择、同步效率。每个机器节点都可根据需要配置本地应参与的同步规则集合。

2)节点编号及路径标签。网络中所有机器节点的唯一逻辑编码,以“编号+IP地址(组)+描述”的记录方式存放在配置文件中,所有节点都会加载该文件信息以完全掌握自身及其他节点的编号及网络连接信息(见表1)。

表1 节点配置文件示例

3)刻度表。记录所有同步任务的同步刻度,表名为*.scale,即同步过程进展,具体到哪个库哪张表的哪条记录。当任何情况导致的通信中断、同步组件中断、组件退出后,再次启动时将读取刻度表中的同步刻度继续同步任务。

3 同步关键问题设计

3.1 同步规则

通过HMI方式接受用户的同步规则描述,形成.INI配置文件,进而形成同步规则集合;规则用于定制Sycom的实际数据流向、数据选择以约束同步过程。

规则包含如下属性(主要部分):

1)RuleID—规则唯一性标识。

2)Source/Destination—源/目的节点。

3)Login&Password(S/D)—源/目的节点安全登录信息。

4)Directory—同步文件存放目录。

5)DBName—数据库名,允许多个数据库项,限定同步库级范围。

6)TableName—二维数据表名,允许多个表项,限定同步表级范围;由于历史数据存储的长期性和累积性,不可避免地涉及到数据分割和二维表的动态建立,因此表名支持字符串的模式匹配和正则表达式,能满足有既定规律命名的表集合。

7)Filter—过滤器,设定表中记录的过滤条件,限定记录级的同步范围;不设定则为全同步模式;支持通用SQL语句的输入设定。

8)同步性能参数设置。BatchSize—批处理大小,每次同步数据包大小,以记录行数为依据;SyncType—调度类型,支持单次、每天、每周、每月以及固定间隔等同步周期。SyncInterval—调度时刻,时间类型。

规则组态合理设计关系到同步的效率和数据正确性、完整性。对于复杂的同步需求还需要拆分成多条简单的规则来解决。

3.2 路径标签原理

历史数据有新生成态和已同步态两种状态。新生成态即为外部应用(如历史进程)写入数据库的历史数据,在直接写入机器节点上其路径标签为空;已同步态即已经对本数据做了同步动作,而不论同步动作经历过多少次,其经由路径均被记录在路径标签中。

存放于关系数据库中的所有记录(数据点)都有独立的路径标签,此标签附加了来源节点的编号信息,可以有效防止在双向同步中出现“同步环”,即来源节点的数据不会被再次同步回该节点。节点在接收到其他节点的同步数据后如果需要再次将该批数据同步到其他机器,则需要将自身编号添加到标签上。数据可以通过标签作路径追溯,可用做来源检查和数据责任认定。图2描述了4个节点情况下不同数据记录在不同节点上的路径标签原理。

图2 路径标签原理图

路径标签的生成由同步规则决定,通过解析同步规则的配置串即可以决定哪些数据将保持新生成态,哪些数据将被添加路径标签的标识。举例说明:在主服务器(节点1)上将所有报警信息同步到备服务器(节点2)上,以保证主备机的报警信息表一致。采用规则串:“2;;sa;sa;2;sa;sa;/data/syntemp;Chec_Event;Event*;[F:ObjectId,AttributeId,Time,Msec;Flag not like‘%002%’];…”,将本机报警数据库中所有表名形如Event*的表内4个字段的记录信息复制到备服务器上。路径标签在库中为一个Flag字符型字段,本例中则将每条符合条件记录的Flag字段累加“001”标识并存储在节点2对应的同步记录中。

规则的编写基于对数据分发需求的逻辑分析,进行合理地拆分或合并。同时需要考虑规则设计给系统效率带来的影响。如多个节点向主备服务器上送节点数据,可将部分站点配置成与主服务器同步,剩余站点与备服务器同步,依靠两台服务器自身同步完成最终数据整合;以此减少单台服务器负责所有任务带来的节点压力。

3.3 同步调度机制

同步调度即同步的时机及步进过程。由于历史数据库同步不同于实时数据库同步,无法做到完全实时同步,同时又要综合考虑大量历史数据量同步给节点CPU,RAM资源以及网络带宽带来的消耗。Sycom采用双周期批处理方式实施同步。

1)双周期调度:包括同步调度周期和线程事务处理周期。同步周期即执行同步的时刻,由同步规则中的SyncType和SyncInterval控制;线程事务处理周期即以较小的时间间隔完成各种标志、状态、数据库连接等实时检测,并可响应外部进程的调度需求。同一个节点上的多个规则任务采用串行方式运行,减少多个任务并发运行给数据库和网络带来的负荷,降低对系统正常运行的影响。图3显示了一个同步周期内的时间段划分。

图3 单个调度周期时间划分示意图

2)批处理:不论是一段较短时间内(如一个调度周期)需同步的少量数据还是长期累积(如单台服务器故障至修复期间)未同步的大量数据,均采用批处理方式。采用大容量数据dump方式先将待同步数据分割到文件名形如*.bt临时文件群中。批大小根据需求配置。以MS SQLServer为例,尽管理论上批越大吞吐率越高,但实际应用中存在大文件的数据交互占用资源的持续时间长、同步中断概率增加、同步失败回滚导致的日志空间控制难度增加等问题,故批大小采用按工程实际计算后设定的方式,综合考虑文件长度和批记录条数决定。文件大小和批记录条数计算公式为:

式中:

Len——二进制文件大小;

N——单个批次记录条数;

fn——字段长度。

默认BatchSize配置为测试经验值2K。文件中数据采用与库匹配的二进制格式,由格式文件统一控制。一个典型的用于控制模拟量值保存的格式文件float.fmt形如:

3.4 异常情况同步处理

异常同步情况包括以下几个方面:

1)长时间累积的大量数据同步任务。由于采用单个规则任务间隔分批处理且吞吐率可设置以及多个任务串行处理的方式,对大批量数据仍能保证同步过程对CPU、磁盘以及网络带宽的消耗一直处于良好的可控状态。

2)通信中断或系统故障后恢复。组件采用的双周期调度中能有效检测数据库实时连接状态;每个批次在正确执行完毕后均记录同步刻度,故在通信中断或其他系统故障恢复运行后,将从前次刻度处继续运行。同时单个批次均以原子事务方式运行,一个批次内同步失败将使该批次已导入数据回滚,确保实际同步刻度与已记录刻度的完全一致性。

3)冲突数据容错处理。对于有主键(单字段如Id或组合字段如ObjectId+AttributeId+Time)的数据表而言,相同主键数据将导致数据插入失败,此时将同步策略便自动改变为逐条记录插入的方式,在记录遍历过程中,对于相同主键数据,已存在数据优先,欲插入数据将被过滤舍弃;当数据表不存在主键时,不对可能存在冲突的数据做任何处理,最大化保留所有数据,由后续读取数据的应用程序根据需要作进一步处理。

4 跨平台应用

Sycom可运行在不同的操作系统平台上(Windows/Linux/Unix),采用 Qt开发包设计开发。Qt提供了丰富的关系数据库访问接口和功能封装、便利的网络访问功能、文件读写及目录操作功能、多线程程序设计等模块类。Sycom主要涉及类库包括:

通过对应操作系统平台的动态链接库实现操作系统级的透明运行;通过封装了各关系数据库标准访问接口的驱动程序实现关系数据库的透明访问。对于数据库及二维表操作均采用标准SQL语句实现。

5 结语

多业务节点间的数据交互模型,满足ISCS用户对各类业务数据自由分离、合并的同步分发需求,适应运营管理流程优化和专业分工精细化的需求和发展趋势;采用组态方式确定及控制数据流向、同步过程实现,减少了开发人员工作量和使用复杂度,提高了系统适应不同需求的灵活性;通过对跨操作系统及主流关系数据库平台的支持,与ISCS系统平台低耦合性的设计,使得整个系统相比较现有技术具有较高的开发效率、适用性和设计弹性。

[1] 本-甘.Microsoft SQL Server 2008技术内幕:T-SQL查询[M].北京:电子工业出版社,2009.

[2] Robert Vieira.Professional microsoft SQL server 2008 programming[M].北京:清华大学出版社,2010.

[3] 李鹏,于洪涛,徐静波.七号信令监测系统中基于Oracle的数据同步方案研究[J].电信科学,2010(2):61.

[4] 王珊,周胜.SYBASE Replication Server高级使用指南[M].北京:水利水电出版社,2002.

[5] 宋兴彬.基于Sybase复制技术的分布式数据库系统的建立[J].山东科学,2000,13(1):42.

[6] 方丹辉,张狄.MySQL主从服务器数据库同步的实现[J].计算机应用,2002,20(7):116.

[7] Oracle,Inc.MySQL 5.5Reference Manual[DB/OL].(2011-4-5)www.mysql.com/products/enterprise/replication.html.

[8] Microsoft,Inc.MSDN library for SQLServer2008[DB/OL].http:∥msdn.microsoft.com/zh-cn/library/ms151198.aspx,2011-3-10.

[9] Microsoft,Inc.MSDN library for SQLServer2008[DB/OL].http:∥msdn.microsoft.com/zh-cn/library/ms188267.aspx,2011-3-12.

[10] EEzust A,Ezust P.An introduction to design patterns in C++ with QT4[M].北京:清华大学出版社,2007.

[11] 杜瑞东,吴娟.地铁综合监控系统软件平台[J].城市轨道交通研究,2011(6):47.

[12] 陈天皓,赵鑫,刘佳宝.RT 21—ISCS综合监控系统中基于ID的模型数据合并技术[J].城市轨道交通研究,2011(6):89.

猜你喜欢

关系数据库标签服务器
关系数据库在高炉数据采集系统中的应用
通信控制服务器(CCS)维护终端的设计与实现
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
标签化伤害了谁
科学家的标签
基于索引结构的关系数据库关键词检索