实时数据库技术探究
2018-07-23唐宇
唐 宇
(1.北京全路通信信号研究设计院集团有限公司,北京 100070 2.北京市高速铁路运行控制系统工程技术研究中心,北京 100070)
1 概述
近些年来,轨道交通行业迎来了更加广阔的市场机遇,同时也面临着更加严峻的市场竞争。产品要得到客户的认可,就必须要快速响应市场变化。如何利用信息技术和控制技术,提高系统及平台的信息化水平,进而提高产品的综合竞争力,是许多产商当前面临的重要课题。
信息是以数据的形式进行存储与传输的,要实现产品的信息化,数据的存取是必不可少的一环,而要提升产品信息化水平,数据的存取能力就必须得到保障。在轨道交通行业,产品信息化水平还有很大的提升空间。而关系型数据库数据处理速度低,关系数据模型无法对生产过程数据进行高效的处理、存储与检索,难以为轨道交通运营、管理过程中产生的海量实时数据提供快速的存取服务。因此,如何面向海量实时数据提供高效的数据存取成为一个亟待解决的重要问题。
本文将介绍实时数据库如何满足实时数据的存取需求,并根据综合监控系统需求提出一种实时数据库解决方案。
2 实时数据库
实时数据库是一种面向海量实时数据存储的数据库系统,可用于存储并管理来自各种控制系统和总线的设备状态与过程数据,提供系统级、甚至企业级的统一实时数据平台。
除了要满足经典数据库系统的数据正确性、安全性及可靠性之外,实时数据库还要满足一些其他特性。在学术研究领域,实时数据库需要保证数据及事务的定时限制,例如一个更新操作必须在规定时间内完成等,这是由于在实时应用环境中,数据的价值会随着时间增加而减小[1]。因此,很多学术工作致力于建立模型来研究事务的调度、事务执行时间预测等,以尽量保证数据的实时性。然而市场上很多实时数据库产品往往并不强调事务调度、执行时间预测等特性,往往更关注吞吐量、数据压缩比等指标,因为现代实时数据库已经能实现ms级的操作响应,这已经能满足绝大多数生产环境应用的需求,而过于复杂的事务调度、时间预测算法反而可能会影响数据库操作执行效率。
生产环境中的实时数据库一般包含以下主要特点:
1) 支持分布式数据采集。数据的来源包括分布在不同地理位置的大量设备、传感器,并能有效兼容多种异构的通信协议。
2) 海量数据的高效存取。数据库在内存中缓存数据并异步将数据持久化至磁盘,保证数据存取性能;同时提供压缩比高的有损压缩技术,节省磁盘空间,能够在线保存海量历史数据。
3) 支持动态报警阈值调整。在系统不停机的情况下,数据库支持在线修改报警触发条件,以便在第一时间发现紧急情况。
4) 实时数据的整合与发布。实时数据可以通过配套的数据整合工具发布到符合ODBC标准的关系数据库及EXCEL电子表格中,支持动态报表生成,并方便用户根据业务需求进行二次开发、信息集成。
从妍妍父母的话语得知,妍妍以前一直都很健康,他们也知道妍妍是在装病找借口,但女儿是他们的心头肉,他们不愿意勉强妍妍,所以只能给妍妍请假了。看来,我得先从妍妍父母做工作。我告诉他们,爱孩子也应该有原则,如果我们不能在开学这个阶段处理好孩子的“上学恐惧症”,继续这样一味地妥协下去,只会助长孩子以后遇事逃避的坏习惯,甚至会影响孩子的人生。
5) 开放的开发接口。实时数据库往往会为用户提供完整的数据存取编程接口,方便用户根据业务需求进行二次开发。
6) 时钟同步。提供时钟同步功能保证数据采集服务器与数据库服务器的时间一致,避免时间不一致导致的数据异常。
实时数据库可用于生产过程数据的自动采集、存储、监视和报警。一个成熟的实时数据库,通过高压缩比算法可在线存储所有数据采集点多年收集的数据。因此,用户既可以浏览当前生产的实时情况,也可回顾生产的历史情况。可以这么理解,实时数据库对于企业来说就如同飞机上的“黑匣子”。通过实时数据库可集成ERP、设备维护管理、管理信息系统(MIS)、模拟与优化等应用程序,在业务管理和实时生产之间起到桥梁作用,实现企业信息化、数字化管理。实时数据库系统在工业生产领域的应用市场前景极其广阔,目前已广泛应用于石油化工、冶金、电力、石化、交通、电信、证券、飞行控制、航空航天、智能建筑、气象等诸多领域,国内市场需求、潜力较大。
3 综合监控系统的数据存取需求
轨道交通综合监控(ISCS)系统是以计算机技术、网络技术、自动化技术和信息技术等为基础的计算机集成系统。该系统需要集成多个自动化专业子系统,并对各专业子系统进行统一监控,实现各专业系统的信息共享及系统之间的联动控制功能,提高运营效率,为实现轨道交通现代化运营管理提供信息化基础。本章主要分析综合监控系统对数据存取提出的需求。
综合监控系统的数据存取功能主要由实时数据库与关系数据库共同完成。其中,实时数据库专门用来提供高效的实时数据存取,是系统运行、处理的核心;关系数据库负责历史数据、系统运行参数等数据的存取。根据所存储数据的作用来划分,综合监控系统中的关系数据库又可分为参数库与历史库,前者存储着综合监控系统运行所需的部分参数,后者则主要存放系统监测到的历史数据,供统计及追溯用。
实时数据库在综合监控系统中起着承上启下的作用,是综合监控系统运行时的核心服务之一。如图1所示,一方面,参数库中的参数内容在实时数据库启动时会被加载进实时库表中,并且随着系统运行,一些需要保存备份的实时数据会被存入历史库中;另一方面,实时库为界面显示、交互操作、应用处理服务等提供实时数据支持。
图1 实时数据库与其他模块的交互示意图Fig.1 Interaction between real-time databases and other modules
保证数据存取的响应速度。实时数据库主要以内存为存储介质,而关系数据库的存储介质为磁盘。因此,实时数据库可以提供更快速的操作响应,不会因为参数库或者历史库的时耗而影响界面操作以及应用处理的响应速度。
保证系统可用性。实时数据库的运行状态可独立于参数库、历史库的运行状态;因此,在参数库、历史库不可使用的情况下,综合监控系统依然能在实时库的数据支持下持续运行。
综合监控系统需要实时数据库满足下列核心功能。
1) 海量数据高效的存取。包括监控点的属性信息(名称、数据类型、描述信息、计量单位、是否保存历史数据等)及监控到的数据的增删查改。
2) 与关系库的交互。包括在启动时从参数库中加载参数数据、将点属性及监控数据持久化到历史库。
3) 数据的订阅/发布。允许其他模块订阅相应的数据并指定数据发布的条件,具体条件包括有更新即发布、数据绝对值超过阈值即发布以及数据的改变值超过阈值即发布。
综合监控系统还需要实时数据库提供一定的二维表结构支持。此外,实时数据库还需要提供消息处理、连接验证、内存管理、日志管理、主从管理等功能,以确保系统完整性、安全性、可靠性、可用性及可扩展性。
在非功能属性上,实时数据库要满足单点数据读写响应时间在数百ms内的需求,能够在线存储一条典型轨道交通线路所包含数据采集点的实时数据量,满足相应的实时数据更新吞吐量需求。
4 面向综合监控系统的实时数据库解决方案
当前商用实时数据库均为闭源软件,客户只能通过数据库暴露的API进行二次开发,而不能自主修改实时数据库的特性。另外,购买商用实时数据库的价格不菲,例如对于一个拥有5 000监测点的系统,主流实时数据库PI的报价为10万美金左右,而轨道交通领域中,一个车站的数据收集点个数就不止5 000,一条轨道交通线路包含的各种监测点数则往往是数十万级的。如果依赖市场上的商业实时数据库构建综合监控系统将会导致巨大的成本开销。因此,自主研发实时数据库系统可以为企业节约软件成本。此外,鉴于实时数据库在其他领域的广泛应用,实时数据库产品还有为企业创造利润的价值。另一方面,实时数据库是基础软件数据库的一个分支,也是工业控制领域的核心服务之一,自主研发实时数据库可以提升企业在信息技术、工业控制领域的核心竞争力。
为节省开发时间成本,实时数据库可以基于内存数据库进行扩展。内存数据库主要以内存为存储介质提供数据的存取服务,不支持关系数据模型。内存数据库的优点在于存取效率高、性能好,缺点在于功能相对比较单一。根据综合监控系统的需求,实时数据库功能模块框如图2所示。
对于这些模块,实时数据库需要基于内存数据库添加或修改的功能主要包括(按模块划分):
1) 消息监听模块:将添加数据订阅接口以支持与数据值相关的订阅规则;
图2 实时数据库功能模块框图Fig.2 Functional modules of real-time databases
2) 消息发送模块:支持向关系库发送加载数据、持久化数据的请求,支持点数据的发布;
3) 存取引擎模块:在更新点数据时,支持将历史数据进行缓存;
4) 数据持久化模块:支持将缓存的点数据持久化到历史库中;
5) 数据加载模块:支持将系统运行参数、点属性、点的历史值等数据从参数库、历史库中获取;
6) 订阅/发布模块:支持一定的与数据值相关的订阅规则,包括设定点数据值阈值、点数据值变动阈值等;当更新的点数据值满足规则时,会将点数据值发布给订阅者;
7) 内存管理模块:可清理缓存的历史数据;
8) 日志管理模块:支持与实时库业务相关的日志管理,日志会记录应用报警、参数加载、数据持久化等信息;
9) 主从管理模块:采用主从的方式保存数据,避免出现单点故障。
另外,为使客户端连接到实时库服务,还需要为应用程序提供客户端库。客户端库需要提供的功能主要有:
1) 管理、维护与实时库的连接,包括建立、维护、关闭与服务器的连接,出现连接故障时会自动重连,在主服务器出现故障时可连接到备用服务器等;
2) 管理与实时库的读写请求的传输,并支持数据操作的批量提交以提升系统吞吐量;
3) 若应用程序希望以操作二维数据表的方式存取数据,客户端库需实现对二维数据操作的降维及恢复,包括将对二维表的数据操作转换为对一维特定格式字符串的操作及其逆转换。这是因为实时库采用了高效的键值数据模型来存取数据而不是传统的二维表模型。为同时保证应用程序操作数据的便利性及实时库处理数据的高性能,客户端库需要支持对二维数据操作与对字符串操作的相互转换。
5 结束语
如何利用信息化技术提升产品信息化水平,以提升产品竞争力是工业领域中诸多企业所面临的重要问题。作为信息的储存及传播的载体,数据不可避免地会成为各方关注的重点,而传统的关系型数据库在实时应用场景中难以满足数据高效存取的需求。实时数据库,一种能够快速存取实时数据的数据库系统,则能够很好地满足该类需求。本文根据轨道交通综合监控系统所提出的需求,分析形成了一种实时数据库解决方案。