一种面向机电设备数据的存储及检索方法与流程

文档序号:12734156阅读:183来源:国知局

本发明涉及数据处理领域,具体涉及一种面向机电设备数据的存储及检索方法。



背景技术:

现代信息技术高速发展,新技术层出不穷,特别是在大数据技术、云计算技术、物联网技术发展的引领下,需要采集的机电设备数量和机电设备数据都呈几何级数增长。因此,对机电设备数据的存储技术与快速检索技术都提出了更高的要求。随着采集的数据量越来越大,海量的实时数据与历史数据给网络和信息处理系统造成了极大的负担。采用合理的存储策略和检索方法成为信息系统在海量数据下稳定、高效运行的有效途径。



技术实现要素:

在现代信息技术的背景下,有必要针对现有技术中存在的问题,提供一种面向机电设备数据的存储及检索方法,在保持高实时性等特点的同时,尽可能的提高数据检索速度。

为实现上述目的,本发明采用以下技术方案:

一种面向机电设备数据的存储方法,包括:

采用实时数据库系统对各个机电设备的实时数据进行接收、存储和管理;

其中,所述实时数据库系统包括内存数据库和磁盘数据库,内存数据库用于存储系统最近采集的批次的实时数据,磁盘数据库用于存储历史数据和实时历史数据。

进一步地,在接收实时数据时,对各个机电设备的实时数据进行同步接收,保证接收到的同一批次所有机电设备的实时数据的完备性,同时保证实时数据接收和存储的异步性。

进一步地,所述实时数据库系统采用UDP协议传输数据,并使用多线程技术和双缓冲队列构建基于UDP套接字技术的无阻塞实时数据快速接收。

进一步地,内存数据库的索引按如下方式形成:

标签数据在内存中按照对象的方式进行组织,除了在数据对象内部建立标签级的索引外,同时给这些数据对象建立相应的索引,从而形成多级索引的结构。

进一步地,内存数据库的存储结构如下:

用定长法存储每个关系的元组,每个元组在内存中存储时,包括一个操作符标记及所有的属性值;操作符标志标识元组在内存空间所处的状态和用户对该元组的操作类型,该标识符存放在元组的头部,包括可用、不可用、更新、插入和删除5个值;采用3bit大小的存储长度即可标识这些标记值。

进一步地,内存数据库的内存空间管理方法如下:

采用面向对象技术对内存进行管理,以数据对象形式分配内存区域。数据对象中包含关系元组和由元组构成的数据段,当用户提出内存空间请求,内存数据库将动态分配数据对象大小的内存空间。

进一步地,内存数据库的数据索引结构如下:

采用扩展的平衡二叉索引树作为索引结构,该索引结构采用属性索引与HASH索引相结合的多层次混合索引技术。对每一批次的实时数据中的时间进行变换能够产生唯一的正整数,一次整数作为索引值插入树形节点的数据域,而该批次的所有标签值则以对象的形式存储在HASH表中。

一种面向机电设备数据的检索方法,所述机电设备数据按照以上所述的存储方法进行存储,包括以下步骤:

S1、接受查询消息;

S2、解析查询消息;

S3、判断该查询消息是否为实时查询;

S4、如果是实时查询,从内存数据库中查询数据;

S5、如果不是实时查询,从磁盘数据库中查询。

进一步地,还包括:

S6查询优化;其具体包括:

建立历史数据表索引;

使用数据库分区技术。

本发明提供的是一种面向机器设备数据存储及检索方法,在保持高实时性等特点的同时,尽可能的提高了数据的存储效率和检索速度。运用此种方法下进行存储的实时数据库数据,可以实现海量数据的快速检索。

附图说明

图1是本发明实施例提供的一种面向机电设备数据的检索方法的流程示意图。

具体实施方式

下面将结合附图和具体的实施例,对本发明的技术方案进行详细说明。

本发明实施例提供了一种面向机电设备数据的存储方法,包括:

采用实时数据库系统对各个机电设备的实时数据进行接收、存储和管理;

其中,所述实时数据库系统包括内存数据库和磁盘数据库,内存数据库用于存储系统最近采集的批次的实时数据,磁盘数据库用于存储历史数据和实时历史数据。

进一步地,在接收实时数据时,对各个机电设备的实时数据进行同步接收,保证接收到的同一批次所有机电设备的实时数据的完备性,同时保证实时数据接收和存储的异步性。所述实时数据库系统采用UDP协议传输数据,并使用多线程技术和双缓冲队列构建基于UDP套接字技术的无阻塞实时数据快速接收。

为了满足外部系统对数据访问的实时性,需要设计优良的内存和磁盘存储和索引结构,同时使用高效的实现技术。

由于一些外部应用系统的实时性任务需要,采用内存来进行数据的存储是提高实时数据库系统运行速度和数据访问实时性的重要手段。因此,采用内存数据库技术,尤其是内存数据库的数据管理技术,作为实时数据库系统的存储技术,达到实现高效的存储及检索需求。

在实时数据库系统中,多数的应用都是以实时任务的方式访问实时数据和最近一段时间的历史数据,磁盘仅作为所有历史数据的存储手段。因而,存储的策略为内存常驻数据库方法,作为实时数据库的存储技术,即数据库的内存版本是主版本或者工作版本,磁盘仅仅是作为后背存储介质。这样,关于查询处理、并发控制和恢复等算法与数据结构的设计以CPU和内存的高效使用为目标,而不是磁盘的存取和存储为目标。内存数据库管理需要在内存索引方法与内存数据结构的组织上进行重新设计。

具体地,内存数据库的索引按如下方式形成:

标签数据在内存中按照对象的方式进行组织,除了在数据对象内部建立标签级的索引外,同时给这些数据对象建立相应的索引,从而形成多级索引的结构。

根据实时数据活动的分析,数据按照来源和数据类型进行分类,以更适合标签刷新活动和标签数据的存储。所以根据实时数据的来源、标签数据、实时数据、历史数据均采用相同的索引方式,可以共享一套索引结构。

在模型中,采用标签的实时数据和静态数据分别存储的方式,将标签的静态数据独立处理可以让所有的数据对象共享,支持更多的应用,方便扩展。

建立和设计数据对象内的标签存储和索引结构,这种机制作为本发明缺省的索引方法,主要提供系统的经常性失误的需求,例如,数据采集的事务,数据存储事务,保证这些事务的性能。这种结构在设计和实现上有如下特点:

1、多种数据的索引结构存在公用的部分,减少查询开销和存储开销。

2、多种标签类型的数据采用相同的形式存储,对于源标签,提出源标签占位的概念,形成源标签占位结构,提高源标签管理的扩展能力,同时实现了集中标签的统一访问和管理。

3、对数据采用多级管理的方式,构件对象一级的树形结构,形成包括标签索引在内的多层索引结构,提高查询效率。

4、在存储和查询结构的实现方面,可以采用模版结构(算法、容器和迭代器,几乎所有的代码都采用了模板类和模版函数的方式),构件高效、简洁的存储结构。

5、对于静态数据的查询,查询条件采用统一的表达形式,易于实现简单的查询支持。

6、内存管理上采用以对象为单位内存块动态分配技术,保证系统在大容量标签添加和删除操作时的性能。

各种数据分别按照数据对象的方式来管理,对数据对象建立相应的索引,形成多级索引结构,同时根据功能的需要,还可以建立其他索引,方便查询。为了提高整体的访问性能,在系统中还设置了访问记录模块,来记忆最近发生的查询和访问结果,以备重用,减少重复访问发生的次数。

本发明的历史数据在磁盘上以卷的形式保存,以年月进行卷的命名,相同类型的标签历史数据存储在同一数据表中,除了建立标签集的索引外,同时为数据表建立索引,形成多级索引,以便能够快速查找历史数据。

进一步地,内存数据库的存储结构如下:

关系元组的存储有变长和定长之分,变长存储可以减少内存空间的占用率,但是该方法的缺点在于,当系统运行一段时间后,内存空间中出现的碎片会增加,系统每隔一段时间需要通过数据移动对内存空间进行整理。内存碎片对内存数据库性能的影响比传统的关系数据库的影响更严重。对内存空间的重新整理必定影响所有的元组重新记性组织,最终可能会影响到实时事务的定时限制。如果采用定长法存储数据,则每一个关系的所有元组均可采用相同大小的空间进行存储。元组的更行操作不会产生内存碎片,组织所有元组的索引结构也不会发生改变,从而不会影响实时事务的完成。

在本发明中用定长法存储每个关系的元组。每个元组在内存中存储时,包括一个操作符标记及所有的属性值。操作符标志标识元组在内存空间所处的状态和用户对该元组的操作类型,该标识符存放在元组的头部,具体包括可用、不可用、更新、插入和删除等5个值。可以采用3bit大小的存储长度即可标识这些标记值。

本发明的数据段为一固定长度的连续内存区域,一个关系的元组长度也是固定的。所以,一个数据段中可以存放某种关系元组的最大数据也是固定的。对于不同关系的元组,其元组长度也可能不同,任意数据段中可能存在不完全存储某个元组的情况,数据段中出现剩余空间,如果将这些剩余空间也加以利用,则会增加内存数据库数据存取的复杂型。所以,出于管理的简单性考虑,若某一数据段中剩余空间不足以存储关系元组,则让该剩余空间空闲,不加以利用。

进一步地,内存数据库的内存空间管理方法如下:

本发明中内存数据库采用面向对象技术对内存进行管理,以数据对象形式分配内存区域。数据对象中包含关系元组和由元组构成的数据段,当用户提出内存空间请求,内存数据库将动态分配数据对象大小的内存空间。

数据对象的生命周期包括对象的创建、对象的使用和对象的清除三个阶段。如果要改善应用程序的性能,一方面应尽量减少创建对象的次数;同时,还应尽量减少新建对象和清楚对象的时间,而这些均可以通过对象池技术来实现。

对象池技术基本原理的核心包括缓存和共享。对于那些被频繁使用的对象,在使用完后,不会立即将它们释放,而是将它们缓存起来,以供后续的应用程序重复使用,从而减少创建对象和释放对象的次数,进而改善应用程序的性能。事实上,由于对象池技术将对象限制在一定的数量,也有效的减少了应用程序内存上的开销。

本发明需要周期性地检查内存池中每个数据对象的使用频道,释放使用频度为零的数据对象,清除内存池中的垃圾片段。垃圾收集算法的类型很多,本发明采用了引用计数法作为内存数据对象使用统计的算法。

进一步地,内存数据库的数据索引结构如下:

索引是实时数据系统重要的组成部分之一,内存索引的实现为实时数据的快速查询提供了保障。本发明采用扩展的平衡二叉索引树作为索引结构,该索引结构采用属性索引与HASH索引相结合的多层次混合索引技术。对每一批次的实时数据中的时间进行变换能够产生唯一的正整数,一次整数作为索引值插入树形节点的数据域,而该批次的所有标签值则以对象的形式存储在HASH表中。

如图1所示,本发明还提供了一种面向机电设备数据的检索方法,所述机电设备数据按照以上所述的存储方法进行存储,其包括以下步骤:

S1、接受查询消息;

S2、解析查询消息;

S3、判断该查询消息是否为实时查询;

S4、如果是实时查询,从内存数据库中查询数据;

S5、如果不是实时查询,从磁盘数据库中查询。

实时数据的检索是系统根据用户的检索条件,从内存数据库或者磁盘历史数据库中检索数据记录的过程。用户索要检索的数据可分为三类,第一类是实时数据,这些数据全部存储在系统的内存数据库中;第二类是历史数据,这些数据全部存储在基于磁盘的历史数据库;第三类是实时历史数据,这些数据部分存储在内存数据库中部分存储在历史数据库中。这三类数据的检索数据差距很大,由于无I/O操作,所以实时数据的检索速度最快,历史数据的检索速度最慢,实时历史数据位于二者之间。

为了提高检索的速度,系统当前最近采集的批次数据存储在内存数据库中,把实时历史数据存储在磁盘历史数据库中,用户可以对当前时间的实时数据和实时历史数据进行查询,本文提出了基于大数据的实时查询算法,系统根据接受到的查询消息,判断查询类型并使用响应的查询模型解析用户的查询表达式,生成查询语句。根据相应的查询策略执行特定的查询语句,并将查询结果返回到客户服务程序。

进一步地,还包括:

S6查询优化;其具体包括:

建立历史数据表索引;

使用数据库分区技术。

优化历史数据设计非常重要。实时数据不能全部存储在内数据库中,需要周期性的存储到磁盘等辅助存储设备中。当用户所要查询的实时历史数据存储在历史数据库中,实时数据处理需要使用查询语句从历史数据库中查询数据,合理设计历史数据库中的表结构可以减少查询比较的次数,从而达到减少查询时间、提高查询效率的目的。主要使用以下两种方法:

建立历史数据表索引,可以有效提高查询速度。当访问大型包含海量数据的数据表时,使用索引可以减少执行I/O的次数,从而提高数据查询的数据。在历史数据库中,B-树索引是一个通用的索引,在创建索引时它就是默认的索引类型,该索引可以是一个简单列的索引也可以是多个列组合后的索引。

使用数据库分区技术。其是构件海量数据高性能存储系统的关键技术。分区技术可以把数据库表和索引进行分割,划分为更小的段,系统对每个段单独或者集体管理。数据库分区包括范围分区、列表分区、散列分区和索引分区等类型。

本发明是一套技术的综合表述,实现实时数据和历史数据的存储与快速检索。主要针对实时数据的存储管理、实时数据索引机制、实时数据检索、索引、查询及其优化等方面进行了介绍,提出了新的理论和解决方案。经过了仿真与工程的实际检验,本发明是可以满足现代新技术发展的一套先进存储与检索方法。

以上所述仅表达了本发明的实施方式,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1