APP下载

实时数据库历史数据存储结构及索引机制分析

2016-07-04孔洁刘杨

电脑知识与技术 2016年15期
关键词:信息化

孔洁+刘杨

摘要:随着计算机技术的发展,越来越要求数据库能够快速响应并存储海量数据,同时能够高效收集、压缩、存储、分析数据。传统的关系型数据库不再能够满足要求,实时数据库是实现海量数据采集的有效手段,实时数据库通过采用实时数据压缩算法以及特殊的历史数据存储索引机制,应对目前的需求。实时数据库推动了信息化从传统领域向新的领域发展,为企业生产、管理、数据分析、决策提供实时数据服务和多种数据管理。

关键词:实时数据库;索引;信息化

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2016)15-0008-02

1 实时数据库简介及应用背景

实时数据库是一种特殊类型的数据库,目前广泛应用于电力、石油、石化、交通、航空、水利、环保等重要领域,在“信息化与工业化融合”过程中发挥着重要作用。

目前数据库技术广泛应用于工业控制、企业MES环境、智能交通、智能楼宇、通信等领域。这些应用的特点主要有:维护大量共享数据和控制数据;有很强的时间性,要求在规定的时刻或在一定的时间范围内完成处理;而且,所处理的数据有一定的有效时间,过时则会有新的数据产生,所以,这种应用对数据库和实时处理功能及特性均有需求。但传统的数据库系统主要处理永久、稳定的数据,强调维护数据的完整性、一致性,考虑有关数据及其处理的定时限制。所以,传统的数据库管理系统不能满足这种实时应用的需要。

2 实时数据库的特点

实时数据库所面向的应用领域有如下特点:

1)单位时间内响应的数据量很大

例如:一个企业的SIS系统使用实时数据库来存储数据,需要处理的测点数量超过一万。这些测点的变化周期通常在1秒钟之内,即,超过一万点的数据在1秒钟之内要保存到数据库中。

2)存储数据的量大

实时数据库的核心就是对大量实时信息进行处理,大量的数据将占据大量的硬盘空间。如果同时处理一万点的系统,每 1秒钟存储一次,每次单点占用 8个字节,那么保存10年的数据量将有 10000*8*10*365*86400=25228800000000字节,接近 23TGB。

3)时效性非常强

由于每个需要处理的测点的值都与时间相关,一秒钟之后的数据与一秒钟之前的数据很有可能就不一样,所以在保存测点值的同时,必须通过某种方法将其对应的时间也纪录起来。

3 实时数据库的历史数据存储结构及索引机制

实时数据库的历史存储模块是整个实时数据库的核心的部分。对用户提供数据存储和查询的作用。该模块面对的需求有以下特点:

1) 数据量巨大。如果数据不设置压缩,一个测点一秒存储一次,那么一天就有86400条记录。每个数据库有10万个左右的测点。数据库运行时间都在几年以上。产生的数据量会很巨大。

2) 用户对数据的访问方式特殊,多数情况下用户查询一个测点一段时间的数据。如查看某个测点一天内的趋势。

3) 插入新数据并更新索引的效率必须非常高。因为在现实应用中实时数据库不停的写入新的实时数据。如果存储并更新索引的效率低,会影响整个数据库的效率。

4) 在不影响读写效率的前提下,必须尽可能地节省磁盘空间。

3.1 存储结构及索引机制

针对以上的需求特点,设计了特殊的存储和索引机制。主要特点如下:

1) 在磁盘中以页为基本单位进行数据存储。每个页的大小为4K。

2) 按照每条记录的时间戳建立索引,索引只访问到页,而不是页内的每条记录。

3) 每个页内存放的记录都是属于一个测点。并且页内所有的记录都按照时间戳严格升序排列。

4) 属于同一个测点的所有的页的时间区间,都不存在交集。如果由于特殊情况造成了交集,必须通过拆分、移动页,来避免交集。

5) 对于已经写满的归档文件采用B+树的数据结构组织索引。如果归档文件已经写满,重新生成B+树的索引。提高查询效率。

6) 对于当前活动的归档文件采用链表的数据结构组织索引。提高实时数据归档的效率。只需要将新的页的地址添加到链表的尾部即可。如果采用B+的索引方式,需要进行复杂的树的平衡操作,影响了写的效率。

整个实时数据库的存储结构如图1所示:

3.2 B+树的索引机制

B+树是B树的一个变种,因此必须先介绍B树。

B树也叫平衡多路查找树。B树是一个平衡多路查找树结构。与二叉查找树,平衡二叉查找树,红黑树等树结构相比虽然查找的时间复杂度相同都是O(logN)。B树是一种多叉的树结构,树的深度更低。降低了磁盘I/O频率,从而提高了访问及查询效率。

一个n阶的B 树 (n叉树)的特性如下:

1)树中每个结点最多有n个孩子(n>=2);

2)除根结点和叶子结点之外,其他每个结点至少有[ceil(n / 2)]个孩子(其中ceil(x)是一个取上限的函数);

3)如果根结点不是叶子结点,则至少有2个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树只有一个根节点);

4)所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息(可以看做是外部接点或查询失败的接点,而实际上这些结点不存在,指向这些结点的指针都为null);

5)每个非终端结点中包含有m个关键字信息: (n,P0,K1,P1,K2,P2,…,Km,Pm)。其中:

a)Ki (i=1…n)为关键字,且关键字按顺序升序排序K(i-1)< Ki。

b)Pi为指向子树根的接点,且指针P(i-1)指向子树种所有结点的关键字均小于Ki,但都大于K(i-1)。

c) 关键字的个数m必须满足: [ceil(n/2)-1]<=m<=n-1。

B+树:是B树的一个变种,相对于B树在每个叶子节点增加了指向下一个叶子节点的指针。

一棵n阶的B+树和n阶的B树的差异在于:

1)有m棵子树的结点中含有m个关键字(B 树是m棵子树有m-1个关键字)

2)所有的叶子结点包含了全部关键字的信息,以及指向含有这些关键字记录的指针,而且叶子结点本身依关键字的大小自小而大的顺序链接。 (B 树的叶子节点并没有包括全部需要查找的信息)

3)所有非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。

B+树广泛应用于文件索引和数据库索引中。无论是随机查找还是顺序查找,都表现出了很好的效率。

目前电厂厂级监控信息系统SIS是实时数据库主要应用领域。SIS系统是介于DCS系统和MIS系统之间的具有独立功能的系统,它的核心是实时数据库。实时数据库向下负责集成各个不同控制系统的实时数据,而且能够长期保存这些历史数据。向上可以提供开放的实时数据库和历史数据服务,为ERP系统所用。实时数据库开发的其他模块,例如:生产过程监控,厂级机组性能计算,经济指标分析,优化运行操作指导,故障诊断等,可以帮助企业提高自身的生产力和竞争力。

参考文献:

[1] 张志檀.实时数据库原理及应用[M].中国石化出版社,2001.

[2] 张少敏,李志雄.一种面向智能电网的实时数据库数据完整性方法[J].电力系统自动化,2013,37(13):93-98.

[3] 李蔚,盛德仁.火电厂SIS系统中实时数据库平台的选择[J].中国电机学报,2003,23(12):218-221.

[4] 刘云生.实时数据库系统[M].科学出版社,2012.

[5] 曹志英,李冠字,谢益武,等.企业现有应用系统的概念层数据整合技术与方法[J].计算机工程与应用,2003,39(8):222-224.

[6] 钱笑宇.张彦武.工业实时数据库的研究和设计[J].计算机工程,2005(l):98-100.

猜你喜欢

信息化
水利信息化
“云会计”在中小企业会计信息化中的应用分析
论述金融管理信息化的创新与应用实践
基于会计信息化下的企业内部审计探讨
如何构建交通信息化的防护墙?
法律为信息化护航
医院会计信息化 路怎么走?
信息化是医改的重要支撑
信息化