首页> 中国专利> 数据库管理方法、计算机、传感器网络系统以及数据库搜索程序

数据库管理方法、计算机、传感器网络系统以及数据库搜索程序

摘要

本发明提供一种数据库管理方法、计算机、传感器网络系统以及数据库搜索程序。本发明的目的在于,在工厂设备等处理多个传感器信息的系统中,缩减存储在数据库中的数据量,易于进行用于确定异常部位和异常原因的追踪。本发明的数据库管理方法,用于计算机中,并管理数据库,在接收到查询的情况下,计算机包括以下步骤:分析查询;根据查询的分析结果,生成用于搜索压缩数据的第一询问;生成用于对时间序列数据执行搜索的第二询问;根据针对第二询问的响应结果,从获取到的多个时间序列数据中提取规定数据;从提取出的规定数据中提取用于输出到客户端计算机的数据,生成输出结果。

著录项

  • 公开/公告号CN102792282A

    专利类型发明专利

  • 公开/公告日2012-11-21

    原文格式PDF

  • 申请/专利权人 株式会社日立制作所;

    申请/专利号CN201080065327.7

  • 发明设计人 中野定树;室启朗;藤原真二;

    申请日2010-07-22

  • 分类号G06F12/00(20060101);G06F17/30(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人陈伟;孟祥海

  • 地址 日本东京都

  • 入库时间 2023-12-18 07:26:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-04

    未缴年费专利权终止 IPC(主分类):G06F12/00 专利号:ZL2010800653277 申请日:20100722 授权公告日:20151216

    专利权的终止

  • 2015-12-16

    授权

    授权

  • 2013-01-16

    实质审查的生效 IPC(主分类):G06F12/00 申请日:20100722

    实质审查的生效

  • 2012-11-21

    公开

    公开

说明书

技术领域

本发明涉及一种用于进行数据处理的计算机系统及其数据处理 方法,尤其涉及一种适于处理以工厂、工厂设备(plante)中的设备 等的预防维护为目的而收集的大量数据的计算机系统及其数据处理 方法。

背景技术

在火力发电工厂设备中,多达几千个传感器被安装于设施的各种 部位。这些传感器按照秒单位或者毫秒单位始终持续发送测量结果, 在工厂设备寿命中发送的数据量估算为几百~几十梯(tera-)字节这 种庞大的数据量。在对这些多年内每天每刻发送过来的数据进行管理 的系统中,存储在数据库中的数据量变得庞大,因此数据库的盘容量 的增加成为问题。

另一方面,在工厂设备内产生异常的情况下,工厂设备的管理者 对存储在该数据库中的传感器信息进行分析而需要提前确定产生异 常的原因。但是,在将表示异常值的传感器数据(信号)显示在浏览器 等中的同时,为了缩小产生问题的原因,需要对数据库上的庞大的数 据发出几次搜索查询,确定出异常原因要花费时间。

作为解决这些问题的方法,例如专利文献1所记载那样,压缩传 感器信息而存储到数据库,由此能够消除盘容量的增加。另外,在异 常原因的确定中,通过缩减向数据库发出的查询数来在短时间内进行 异常原因的确定。

专利文献1:日本特开2002-358117号公报

发明内容

发明要解决的问题

但是,在上述方法中,在搜索压缩数据的情况下,在将数据暂时 向某处展开之后,需要对展开后的数据进行搜索,因此存在搜索速度 被牺牲这种问题。另外,在确定异常原因的情况下,需要多次发出根 据传感器信息来用于搜索异常部位的搜索查询以及用于确定产生异 常的原因而用于进行异常部位的追踪的搜索查询。因而,存在发出的 查询数量增加以及异常部位的搜索时间增加这种问题。

本发明是鉴于上述问题点而完成的。即,目的在于缩减存储在数 据库中的数据量,从大量的数据中高效率地搜索期望的数据。

用于解决问题的方案

本发明的代表性的一例具有以下结构。即,一种数据库管理方法, 用于计算机中,该计算机具备处理器以及与上述处理器相连接的存储 器,并管理数据库,该数据库管理方法的特征在于,上述数据库存储 根据规定条件而被压缩了的多个压缩数据,上述数据库管理方法包括 如下步骤:第一步骤,在从与上述计算机相连接的客户端计算机接收 到向上述数据库的查询的情况下,上述计算机对接收到的上述查询进 行分析;第二步骤,上述计算机根据上述接收到的查询的分析结果, 生成用于从上述数据库搜索一个以上的上述压缩数据的第一询问;第 三步骤,上述计算机根据上述接收到的查询的分析结果,生成第二询 问,该第二询问用于对从作为上述第一询问的响应结果的、上述一个 以上的压缩数据获取到的多个时间序列数据执行搜索;第四步骤,上 述计算机对上述数据库发出上述第一询问,从上述数据库获取一个以 上的上述压缩数据作为上述第一询问的响应结果;第五步骤,上述计 算机对作为针对上述第一询问的响应结果而获取到的一个以上的压 缩数据进行解压缩,由此获取上述多个时间序列数据;第六步骤,上 述计算机对上述获取到的多个时间序列数据执行上述第二询问;第七 步骤,上述计算机根据针对上述第二询问的响应结果,从上述获取到 的多个时间序列数据中提取规定数据;以及第八步骤,上述计算机从 在上述第七步骤中提取出的规定数据中提取用于输出到上述客户端 计算机的数据,生成输出结果。

发明的效果

根据本发明,能够在维持实质性数据的同时缩减存储在数据库中 的数据量,并且能够从大量的数据中高效率地搜索所期望的数据。

附图说明

图1是是说明本发明所应用的传感器网络系统的一个实施方式中 的计算机系统的概要的框图。

图2是说明本实施方式中的中心服务器的硬件结构的框图。

图3是说明本实施方式中的中心网络系统的软件结构的框图。

图4是说明本实施方式中的数据装载模块和数据库的框图。

图5A是说明在本实施方式中通过数据装载模块执行的处理的流 程图。

图5B是说明在本实施方式中通过数据装载模块执行的数据加载 处理的流程图。

图5C是说明在本实施方式中通过数据装载模块执行的数据加载 处理的流程图。

图6是说明本实施方式中的数据搜索模块的框图。

图7是表示在本实施方式中通过数据搜索模块输出的数据的结构 的一例的说明图。

图8A是表示本实施方式中的查询、SQL以及CQL的一例的说明 图。

图8B是表示本实施方式中的查询、SQL以及CQL的一例的说明 图。

图9是说明通过数据搜索模块执行的处理的概要的流程图。

图10A是表示在本实施方式中通过查询分析部截出的字符串的说 明图。

图10B是说明通过本实施方式的查询分析部执行的查询分析处理 的一例的流程图。

图11A是表示用于生成本实施方式中的SQL的SQL模板的说明 图。

图11B是说明通过本实施方式的SQL生成部执行的处理的一例 的流程图。

图12A是说明用于生成本实施方式中的CQL的CQL模板的说明 图。

图12B是说明本实施方式中通过CQL生成部执行的处理的流程 图。

图13是说明通过本实施方式的DB搜索部执行的SQL处理的一 例的流程图。

图14A是说明通过本实施方式的数据解压缩/排序处理部执行的 处理的一例的流程图。

图14B是说明通过本实施方式的数据解压缩/排序处理部执行的 处理的一例的流程图。

图15是表示本实施方式中的流数据处理部的结构示例的说明图。

图16是表示本实施方式的用户定义函数的一例的说明图。

图17是表示根据本实施方式的用户定义函数内包含的函数提取 出的规定区间的数据的一例的说明图。

图18A是表示通过本实施方式的截出处理部执行的处理的一例的 流程图。

图18B是说明本实施方式的截出处理的详细的流程图。

图19是表示通过本实施方式的截出处理部输出的输出结果的一 例的说明图。

图20是说明通过本发明的实施方式的数据输出部执行的处理的 一例的流程图。

图21是表示在本实施方式中执行特征值搜索处理的情况下的查 询和SQL的一例的说明图。

图22是表示在本实施方式中用于生成特征值搜索用的SQL的 SQL模板的说明图。

图23是说明通过本实施方式的特征值搜索用SQL生成部执行的 处理的一例的流程图。

图24是说明在本实施方式中并行执行通过数据搜索模块执行的 处理的情况下的流程图。

图25是说明本发明的实施方式的特征值的种类和生成方法的图。

图26是说明对本发明的实施方式的时间序列数据块的时间幅度 进行决定的方法的图。

图27是说明通过本实施方式的流数据处理部执行的处理的一例 的流程图。

图28是说明通过本实施方式的输入控制部执行的处理的一例的 流程图。

图29是说明通过本实施方式的输出控制部执行的处理的一例的 流程图

具体实施方式

图1是说明本发明所应用的传感器网络系统的一个实施方式中的 计算机系统的概要的框图。

传感器网络系统具备工厂设备102、数据中心105以及工厂设备 监视点107,通过网络103相连接。作为网络103,例如也可以使用 专用线、所谓因特网等广域网或者LAN等局域网络。

工厂设备102具备传感器100和数据收集装置101。传感器100 与数据收集装置101相连接。此外,连接方法可以直接进行连接,也 可以通过LAN(Local Area Network:局域网)或者无线网络等进行连 接。

传感器100检测各种数据。此外,传感器100为了检测作为目的 的数据而包括各种传感器。

数据收集装置101收集通过传感器100检测出的数据,通过网络 103,将从传感器100收集的数据发送到数据中心105。数据收集装置 101具备CPU(省略图示)、与CPU相连接的存储器(省略图示)、与CPU 相连接的网络接口(省略图示)以及存储介质(省略图示)。此外,数据 收集装置101也可以具备显示器或者输入装置等。

数据中心105具备中心服务器104,该中心服务器104对从多个 工厂设备102的数据收集装置101发送的数据进行统一管理。

中心服务器104存储从数据收集装置101发送的数据。另外,中 心服务器104通过工厂设备监视点107等根据管理者的要求,从存储 的数据中取出规定数据或者对取出的数据进行分析而输出分析结果。

使用图2后文中说明中心服务器104的具体装置结构。

工厂设备监视点107具备数据显示终端106,该数据显示终端106 对数据中心105进行各种询问。

数据显示终端106通过网络103对存储在中心服务器104中的数 据进行监视或者阅览。数据显示终端106具备CPU(省略图示)、与CPU 相连接的存储器(省略图示)、与CPU相连接的网络接口(省略图示)、 存储介质(省略图示)、显示装置(省略图示)以及输入装置(省略图示)。

图2是说明本实施方式中的中心服务器104的硬件结构的框图。

中心服务器104具备CPU 121、存储器122、HDD 123、显示器 124、网络接口125、鼠标126、键盘127以及电源装置128。

CPU 121执行在存储器122上展开的程序。

存储器122存储通过CPU 121执行的程序以及执行该程序所需的 信息。另外,存储器122作为CPU用于执行各种处理的工作区而使 用。在本实施方式中,在存储器122上通过HDD 123来加载OS 158(参 照图3)、数据装载模块153(参照图3)、数据库154(参照图3)以及数 据搜索模块157(参照图3)等程序而执行。

HDD 123存储从存储器122读出的程序和各种信息。在图2示出 的示例中,HDD 123为仅一个,但是可以具备多个HDD 123,也可 以是由多个HDD 123构成的阵列组。

网络接口125是用于与网络103相连接的接口。

电源装置128是用于对中心服务器104提供电力的装置。

显示器124是对操作中心服务器104的操作者显示各种信息的装 置。鼠标126是操作中心服务器104的操作者所利用的指示设备。键 盘127是操作中心服务器104的操作者所利用的输入装置。

图3是说明本实施方式中的中心网络系统的软件结构的框图。

在中心服务器104上,通过CPU 121来执行OS(Operating System: 操作系统)158。OS 158执行各种处理。具体地说,OS 158执行数据 装载模块153、数据库154以及数据搜索模块157。

数据库154是对从数据收集装置101发送而通过数据装载模块 153变换为规定形式的数据进行管理的管理软件。使用图4后文中详 细说明存储在数据库154中的数据。

数据装载模块153从工厂设备102内包含的数据收集装置101通 过网络103而接收数据,将接收到的数据变换为规定形式而存储到数 据库的软件。

在图3示出的示例中,数据装载模块153从数据收集装置101接 收文件名称为“sid.csv”的输入文件1(151)以及文件名称为“input.csv” 的输入文件2(152),将输入文件1(151)和输入文件2(152)变换为规定 形式而存储到数据库154。

此外,图3示出的文件1(151)和文件2(152)是CSV(Comma  Separated Value:可以使用逗号分隔值)格式的文件。在此,CSV文件 表示多个字级被“,(逗号)”分隔的文件格式。在图3中记载了使用CSV 格式的示例,但是代替逗号也可以是使用TAB分隔的文件格式(TSV 格式)、二进制格式。

数据搜索模块157是根据所输入的查询,从数据库154中搜索作 为目的的数据而输出搜索结果的软件。

在图3示出的示例中,数据搜索模块157从接收数据显示终端106 的用户150接收查询155,根据该查询155来搜索数据,将该数据搜 索的结果作为搜索结果文件156而输出。数据显示终端106读出搜索 结果文件156,将数据变换为数字或者图形波形等形式而显示在画面 上。

图4是说明本实施方式中的数据装载模块153和数据库154的框 图。

首先,说明在输入文件1(151)、输入文件2(152)以及数据库154 内存储的数据的形式。

输入文件1(151)包括Name列1511和ID列1512。

Name列1511是工厂设备102所具备的传感器100的传感器名称。 ID列1512是用于对工厂设备102所具备的传感器100唯一地进行识 别的标识符。

输入文件2(152)包括datetime列1521和传感器名称列1522。

datetime列1521是表示传感器100获取到数据的时间的时间信 息。传感器名称列1522由各传感器100的名称构成,存储与Name 列1511对应的传感器名称。在构成传感器名称列1522的各传感器100 中由存储各传感器100检测出的值。

在图4示出的示例中,输入文件2(152)存储由各传感器100每一 秒钟检测出的数据。

数据库154存储SID表207和DAT表208。

SID表207包括Name列2071和ID列2072。

Name列2071是工厂设备102所具备的传感器100的传感器名称。 ID列2072用于对工厂设备102所具备的传感器100唯一地进行识别 的标识符。

DAT表208存储如下数据:在各传感器100中按照规定的连续的 每个时间单位(时间序列数据块)对输入文件2(152)内包含的数据进行 压缩而得到的数据。具体地说,对于各传感器100按每一行存储一小 时量压缩后的数据。

DAT表208包括datetime列2081、ID列2082、CDATA列2083、 MaxVal列2084以及MaxVal列2085。

datetime列2081存储表示压缩后的时间序列数据块的开始时间的 时间信息。在此,开始时间表示datetime列1521中的最久的时间、 即作为所压缩的时间序列数据块的起点的时间。

ID列2082是用于识别传感器100的标识符。CDATA列2083是 压缩后的数据。

MaxVal列2084是压缩后的时间序列数据块内包含的数据的最大 值。MaxVal列2085是压缩后的时间序列数据块内包含的最小值。

在图4示出的示例中,对数据组201压缩后的时间序列数据块与 行209对应,对数据组202压缩后的时间序列数据块与行210对应。

例如,行209是在传感器名称为“S4”的传感器100中“2009/10/1 的0时0分0秒钟”起一小时量的压缩数据而得到的数据“DDD”,表 示压缩前的数据内包含的最大值为“99”,压缩前的数据内包含的最小 值为“52”。

在本实施方式中,输入文件2(152)的3600行(一小时)的数据被压 缩成一行。此外,在本实施方式的以后的说明中,在时间序列数据块 内存储的时间范围固定一小时,但是还能够将时间序列数据块的时间 范围变更为一小时以外。

作为时间序列块的时间范围的决定方法,利用使用者的使用最多 的搜索期间。例如将最多期间搜索的范围的1/10的期间设为时间序列 数据块的时间范围。由此,如果搜索范围为一天则时间序列数据块的 时间范围设为2.4小时,如果搜索范围为一个月则时间序列数据块的 时间范围设为三天。在数据搜索模块157的查询分析部中,从根据图 8A的查询示例1的where timerange语句指定的搜索期间算出时间范 围,将时间范围作为频率表进行管理,由此能够实现这些结构。

另外,作为时间序列块的时间范围的决定方法,还能够使用产生 时间序列的特征变化的最小期间。使用图26说明对时间序列数据块 2601进行分割而将时间序列块2605设为最佳时间序列块的方法。

图26是说明对本发明的实施方式的时间序列数据块的时间幅度 进行决定的方法的图。

在时间序列块2601中,得到特征值a[1][1]。接着,将时间序列 数据块分为一半,得到特征值a[2][1]、a[2][2]。在此,在特征值a[i][j] 中,i是表示分割了几次的分割等级,j是表示是第几个时间序列数据 块的特征值的编号。递归地反复上述处理。

在此,将分割等级i中的特征值与分割等级i+1中的特征值之间 的差为阈值以下的情况设为时间序列数据块的最佳分割等级,将该时 间序列数据块的宽度设为最佳时间范围。还能够将特征值a[i][j]与 a[i+1][j]、a[i][j]与a[i+1][j+1]的差更大的值针对所有时间序列数据块 j取得平均,将该值作为“与特征值之间的差”进行阈值判断。

如图4所示,通过存储压缩数据,能够缩减数据库的使用容量。

接着,说明数据装载模块153。

数据装载模块153具备数据汇总部203、特征值提取部204、特 征值提取用流数据处理部2041、数据压缩部205以及数据插入部206。

数据汇总部203在各传感器100的每一个中汇总规定时间间隔(在 本实施方式中一小时)的数据。

特征值提取部204从压缩的数据中提取特征值。特征值在从数据 库154中搜索压缩数据时使用。使用图23在后文中说明使用了特征 值的搜索方法。此外,在本实施方式中,从压缩的数据中作为特征值 提取最大值和最小值。此外,如果是表示平均或者分散等进行压缩的 数据的特征的值,则提取出的特征值也可以是任意值。

使用图25说明特征值的示例。

在i1的事例中,使用压缩的数据的起点、终点等确定的值作为特 征值。

在i2的事例中,使用针对压缩的数据整体至任意区间的时间序列 的最大值、最小值、平均值、分散值或者标准偏差值作为特征量。

在i3和i4的事例中,使用多个传感器观察值i3、i4的平均值作 为特征值。

在i5的事例中,使压缩的数据的整体至任意的区间帧化,实施 FFT(Fast Fourier Transform:快速傅里叶变换)变换,由此变换为频带, 使用预先指定的频率A、B、C的振幅作为特征值。

特征值提取部204能够利用特征值提取用流数据处理部2041来 生成特征值。即,将实时地到来的时间序列数据存储到规定期间存储 器上,能够通过进行最大值、最小值、平均值或者分散值等的时间序 列分析来生成特征值。

数据压缩部205在各传感器各自中对规定时间间隔的数据进行压 缩。数据插入部206将压缩数据存储到DAT表208。

图5A是说明在本实施方式中通过数据装载模块153执行的处理 的流程图。

数据装载模块153判断在数据库154中是否存在SID表 207(S250)。例如,能够通过发出询问在数据库154中是否存在SID 表207的SQL等来判断数据装载模块153。

在判断为在数据库154中存在SID表207的情况下,数据装载模 块153进入到S252。

在判断为在数据库154中不存在SID表207的情况下,数据装载 模块153读出输入文件1(151)而生成SID表207(S251)。

数据装载模块153从输入文件2(152)中读出一行量的字符串,从 将逗号作为分隔符号而读出的字符串中提取与列相当的字符串,存储 到排列csv(S252)。例如,在提取出ci个字符串的情况下,提取出的 字符串分别被存储到排列csv[0]~csv[ci-1]。在此,ci表示列数。在本 实施方式中,在csv[0]中存储datetime,在csv[1]~csv[ci-1]中存储传 感器的值。

数据装载模块153生成用于能够从输入文件2(152)的传感器名称 列1522中搜索ID列2082的排列ID(S253)。

数据装载模块153对用于制作压缩数据的数据排列进行定义 (S254)。在本实施方式中,对一个传感器100的一小时量的数据进行 压缩,因此定义d[ci][3600]排列。即,对一个传感器100定义3600 个排列。

数据装载模块153判断在数据库154中是否存在DAT表 208(S255)。例如,能够通过发出询问在数据库154中是否存在DAT 表208的SQL等来判断数据装载模块153。

在判断为在数据库154中存在DAT表208的情况下,数据装载 模块153进入到S257。

在判断为在数据库154中不存在DAT表208的情况下,数据装 载模块153生成DAT表208(S256)。

数据装载模块153从在S254中获取到的排列生成压缩数据,执 行用于存储到DAT表208的数据加载处理(S257)。使用图5B在后文 中详细说明数据加载处理。

数据装载模块153判断输入文件2(152)的全部数据的处理是否结 束(S258)。

在判断为输入文件2(152)的全部数据的处理没有结束的情况下, 数据装载模块153返回到S257而执行相同的处理。

在判断为输入文件2(152)的全部数据的处理结束的情况下,数据 装载模块153结束处理。

图5B和图5C是说明在本实施方式中通过数据装载模块153执行 的数据加载处理的流程图。

数据装载模块153使表示时间(秒)的变量i初始化,对全部时间(秒) 执行处理(S259)。具体地说,数据装载模块153将变量i设定为“0”, 执行反复处理直到变量i变得大于“3600”。此外,在本实施方式中, 到0~3599秒钟的数据成为处理对象。

数据装载模块153从输入文件2(152)中读出一行量的数据,从读 出的数据中提取ci个字符串,存储到排列csv[0]~csv[ci-1](S260)。

数据装载模块153判断变量i是否为“0”(S261)。

在判断为变量i不是“0”的情况下,数据装载模块153进入到S263。

在判断为变量i为“0”的情况下,数据装载模块153在DAT表208 的datetime列2081中存储csv[0](S262)。

数据装载模块153按照各传感器100来汇总数据(S263)。具体地 说,数据汇总部203使存储在排列csv的值数值化而设定为排列d。

数据装载模块153判断是否执行反复处理、即全部时间的处理是 否结束(S264)。

在判断为全部变量i的处理没有结束的情况下,数据装载模块153 返回到S259,对变量i相加“1”,执行S260~S263为止的处理。

在判断为全部变量i的处理结束的情况下,数据装载模块153使 表示传感器100的数量的变量j初始化,对全部传感器100执行处理 (S265)。具体地说,数据装载模块153对变量j设定“1”,执行反复 处理直到变量j变得大于cn。

数据装载模块153从排列d[j][i]中提取特征值(S266)。具体地说, 特征值提取部204从排列d[j][0]~d[j][3599]中提取最大值、最小值、 平均值、分散值或者频谱上的确定值中的任一个、或者它们的组合。

数据装载模块153将排列d[j][i]压缩为规定形式(S267)。具体地 说,数据压缩部205将排列d[j][0]~d[j][3599]压缩为规定形式。此外, 作为压缩形式考虑zip、lzh、gzip以及bzip2等。

数据装载模块153将压缩后的数据存储到DAT表208(S268)。具 体地说,数据插入部206将在S253中生成的id[i]存储到ID列2082, 将在S262中设定的csv[0]存储到datetime列2081,将在S266中提取 出的最大值存储到DAT表208的MaxVal列2084,将在S266中提取 出的最小值存储到MaxVal列2085,以及将在S267中压缩后的数据 存储到CDATA2083。

数据装载模块153判断全部传感器100的处理是否结束(S269)。

在判断为全部传感器100的处理没有结束的情况下,数据装载模 块153返回到S266而执行相同的处理。

在判断为全部传感器100的处理结束的情况下,数据装载模块153 结束处理。

图6是说明本实施方式中的数据搜索模块157的框图。

数据搜索模块157根据所输入的查询155来将SQL发出到数据库 154,根据针对发出的SQL的响应来生成搜索结果,将所生成的搜索 结果输出到搜索结果文件156。

数据搜索模块157具备查询分析部300、SQL生成部301、特征 值搜索用SQL生成部302、CQL生成部303、DB搜索部304、数据 解压缩/排序处理部305、流数据处理部306、截出处理部307以及数 据输出部308。

查询分析部300对所输入的查询155进行分析,将该查询155的 内容作为全局变量309而输出。此外,全局变量309被存储到存储器 122等的存储区域,SQL生成部301、特征值搜索用SQL生成部302、 CQL生成部303、DB搜索部304、数据解压缩/排序处理部305、流 数据处理部306、截出处理部307以及数据输出部308的各部能够进 行参照。

SQL生成部301根据作为查询分析部300的分析结果的全局变量 309,生成用于搜索数据库154的SQL 310,将所生成的SQL 310输 出到DB搜索部304。

特征值搜索用SQL生成部302根据作为查询分析部300的分析结 果的全局变量309使用特征值来生成用于搜索数据库154的SQL 310, 将所生成的SQL 310输出到DB搜索部304。

CQL生成部303根据作为查询分析部300的分析结果的全局变量 309生成用于执行流数据处理的CQL 311,将所生成的CQL 311输出 到流数据处理部306。

DB搜索部304将通过SQL生成部301或者特征值搜索用SQL生 成部302生成的SQL 310发出到数据库154。DB搜索部304将SQL 310 的执行结果、即数据搜索结果输出到文件A312。此外,输出到文件 A312的数据是压缩数据。

数据解压缩/排序处理部305读出文件A312,对压缩数据进行解 压缩并且根据规定条件对解压缩后的数据进行排序。数据解压缩/排序 处理部305将处理后的数据输出到文件B313。

流数据处理部306根据通过CQL生成部303生成的CQL 311,将 文件B313作为输入数据而读出,对读出的各数据执行流数据处理。 流数据处理部306对文件C314输出处理后的数据。

截出处理部307从文件C314中提取与规定条件一致的数据。截 出处理部307对文件D315输出提取出的数据。

数据输出部308使用存储在文件D315中的数据来生成输出结果, 将所生成的输出结果作为搜索结果文件156而输出。

图7是表示在本实施方式中通过数据搜索模块157输出的数据的 结构的一例的说明图。

数据结构1(340)是存储在文件A312中的数据(包)的数据结构。文 件A312存储多个包。

数据结构1(340)由datetime3401、idx3402、zlen3403以及zblk3404 构成。

datetime3401表示日期和时间等的时间,与DAT表208的datetime 列2081对应。在本实施方式中,datetime3401的数据长度为8byte。

idx3402表示用于识别传感器100的传感器识别编号。查询示例1 的input_item语句内记录的传感器的排序作为传感器识别编号而分 配。在本实施方式中,idx3402的数据长度为4byte。

zlen3403表示压缩后的数据的块长,在本实施方式中数据长度为 4byte。

zblk3404表示压缩后的数据。具体地说,是压缩后的数据本身。 在本实施方式中,zblk3404的数据长度为nbyte。

数据结构2(341)是在文件B313、文件C314以及文件D315中存 储的数据(二进制)的数据结构。

datetime3411表示日期和时间等的时间。在本实施方式中, datetime3411的数据长度为8byte。

valn3412表示数据3413的数量,在本实施方式中,数据长度为 8byte。

数据3413表示通过数据解压缩/排序处理部305、流数据处理部 306以及截出处理部307来算出的值,在本实施方式中,数据长度分 别为4byte。

例如,在存在“2009/10/1 00:00:00,4,100,300,12,52” 这种数据的情况下,在datetime3411中存储了“2009/10/1 00:00: 00”,在valn3412中存储了“4”,在valn[0]中存储了“100”,在valn[1] 中存储了“300”,在valn[2]中存储了“12”,在valn[3]中存储了“52”。

数据结构3(342)是存储在搜索结果文件156中的数据的数据结 构。

在数据结构3(342)中存储有日期和时间等的时间以及各传感器 100的值。

图8A和图8B是表示本实施方式中的查询155、SQL 310以及CQL  311的一例的说明图。

查询示例1(350)和查询示例2(351)是查询155的一例。

查询示例1(350)是执行流数据处理的情况下的查询155。查询示 例1(350)是表示针对传感器名称为“Sensor1”和“Sensor2”的传感器100 的数据提取满足在where_timerange语句和where_conditon语句中指 定的条件的数据、并且将提取出的数据存储到“result.csv”的情况。

查询示例2(351)是不执行流数据处理的情况下的查询155。查询 示例2(351)是表示针对传感器的名称为“Sensor1”、“Sensor2”以及 “Sensor3”的传感器100的数据提取满足在where_timerange语句中指 定的时间间隔的数据、并且将提取出的数据存储到“result.csv”的情 况。

SQL示例1(352)是在输入了查询示例1(350)的情况下通过SQL生 成部301生成的SQL 310的一例。此外,使用图11A和图11B在后 文中说明SQL 310的生成方法。

CQL示例1(353)是在输入了查询示例1(350)的情况下通过CQL 生成部303生成的CQL 311的一例。此外,使用图12A和图12B在 后文中说明CQL 311的生成方法。

图9是说明通过本实施方式的数据搜索模块157执行的处理的概 要的流程图。

数据搜索模块157从数据显示终端106接收查询155的输入而开 始处理。

数据搜索模块157对所输入的查询155进行分析(S320)。具体地 说,对输入了查询分析部300的查询155进行分析。

数据搜索模块157判断所输入的查询155是否为要求执行特征值 搜索的查询(S321)。具体地说,查询分析部300判断在所输入的查询 155中是否包含meta_search语句。在所输入的查询155中包含 meta_search语句的情况下,判断为所输入的查询155是要求执行特征 值搜索的查询。此外,使用图22在后文中说明包含meta_search语句 的查询155的示例。

在判断为所输入的查询155并非要求执行特征值搜索的查询的情 况下,数据搜索模块157生成SQL 310(S322)。具体地说,SQL生成 部301生成SQL 310,进入到S324。

在判断为所输入的查询155是要求执行特征值搜索的查询的情况 下,数据搜索模块157生成特征值搜索用的SQL 310(S323)。具体地 说,特征值搜索用SQL生成部302生成特征值搜索用的SQL 310,进 入到S324。

接着,数据搜索模块157判断是否执行流数据处理(S324)。具体 地说,查询分析部300判断在所输入的查询155中是否包含 select_items语句。在所输入的查询155中包含select_items语句的情 况下,判断为执行流数据处理。

在判断为不执行流数据处理的情况下,数据搜索模块157根据通 过SQL生成部301或者特征值搜索用SQL生成部302生成的SQL  310,搜索数据库154(S325)。具体地说,DB搜索部304根据通过SQL 生成部301或者特征值搜索用SQL生成部302生成的SQL 310,搜索 数据库154,将搜索出的压缩数据输出到文件A312。

数据搜索模块157对存储在文件A312中的压缩数据进行解压缩, 对解压缩后的数据进行排序(S326)。具体地说,数据解压缩/排序处理 部305对存储在文件A中的压缩数据进行解压缩,对解压缩后的数据 进行排序而输出到文件B,进入到S332。

在S324中判断为执行流数据处理的情况下,数据搜索模块157 生成CQL 311(S327)。具体地说,CQL生成部303生成CQL 311。

数据搜索模块157根据通过SQL生成部301或者特征值搜索用 SQL生成部302生成的SQL 310,搜索数据库154(S328)。

数据搜索模块157对存储在文件A312中的压缩数据进行解压缩, 对解压缩后的数据进行排序(S329)。该处理是与S326相同的处理。

数据搜索模块157根据通过CQL生成部303生成的CQL 311来 执行流数据处理(S330)。具体地说,流数据处理部306根据通过CQL 生成部303生成的CQL 311来执行流数据处理,将执行结果输出到文 件C314。

数据搜索模块157从存储在文件C314中的数据中截出成为输出 对象的数据(S331)。具体地说,截出处理部307从存储在文件C314 中的数据中截出成为输出对象的数据,将截出的数据输出到文件 D315,进入到S332。

数据搜索模块157将存储在文件B或者文件D315中的数据变换 为用于显示数据显示终端106的输出数据,输出到搜索结果文件 156(S332),由此结束处理。

以下,详细说明各步骤的处理。

图10A是表示通过本实施方式中查询分析部300截出的字符串的 说明图。

字符截出部分360表示从所输入的查询155截出的字符串。查询 分析部300保持指示截出关键词的模板即字符截出部分360。

在图10A示出的示例中,从九个关键词中截出变量“$input”、 “$range”、“$select”、“$start”、“$end”、“$cond”、“$prev”、“$post”、 “$step”、“$file”以及“$meta”。在此,关键词表示“input_item s:”和 “select_items”等。

例如,从所输入的查询155中截出关键词“input_item s:”以下的 字符串,在变量「$input 」中存储截出的字符串。

以下,说明由查询分析部300执行的查询分析处理。

图10B是说明通过本实施方式的查询分析部300执行的查询分析 处理的一例的流程图。

查询分析部300接收查询155的输入,开始处理。

首先,查询分析部300使变量初始化(S361)。具体地说,查询分 析部300对“$range”、“$cond”以及“$step”中设定“1”,对“$orev”和 “$post”中设定“0”。另外,查询分析部300对“$input”、“$select”、 “$start”、“$end”、“$file”以及“$meta”执行Null初始化。

接着,查询分析部300根据字符截出部分360从所输入的查询155 中截出字符串,将截出的字符串存储到各变量(S362)。

具体地说,查询分析部300从查询155内包含的九个语句中截出 字符串,将截出的字符串分别存储到变量“$input”、“$range”、“$select”、 “$start”、“$end”、“$cond”、“$orev”、“$post”、“$step”、“$file”以及 “$meta”。

例如,在查询示例1(350)的情况下,在变量“$input”中存储 “’Sensor1’,’Sensor2’”。

此外,关于在查询155内没有包含的关键词,直接使用在S361 中设定的值。

查询分析部300算出变量“$input”和“$select”内包含的要素数 (S363)。

具体地说,查询分析部300在变量“$input”和“$select”内包含的字 符串中分别对用“,(逗号)”分隔的要素数进行计数,由此要素数。进 而,查询分析部300将变量“$input”内包含的要素数代入到变量 “$inum”,将变量“$select”内包含的要素数存储到变量“$snum”。

例如,在变量“$input”中存储有“’Sensor1’,’Sensor2’”的情况下, 在“$inum”中存储“2”。

查询分析部300将各变量作为全局变量309而输出(S364),结束 处理。

图11A是表示用于生成本实施方式中的SQL 310的SQL模板的 说明图。

SQL模板370是用于生成SQL 310的模板,由SQL生成部301 保持。

在图11A示出的示例中示出从根据各个ID列(2072、2082)表示的 值使SID表207和DAT表208这两个表进行等效结合(cnoin操作)得 到的表中根据规定条件来搜索时间(datetime)、传感器名称(SID.Name) 以及压缩数据(DAT.CDATA)得到的SQL的情况。另外,规定条件被 定义为where语句以下。即,定义将数据按时间顺序来排序而获取与 所指定的传感器名称和所指定的时间区间一致的数据的SQL。

SQL生成部301使用全局变量309来代入SQL模板370的粗字 符和用下划线部表示的部分所需的数据,由此生成SQL 310。具体地 说,SQL生成部301生成“$db_input”、“$db_start”以及“$db_ebd”,将 所生成的数据代入到SQL模板370。

以下说明SQL生成处理。

图11B是说明通过本实施方式的SQL生成部301执行的处理的 一例的流程图。

SQL生成部301使用全局变量309来生成“$db_input”、“$db_start” 以及“$db_ebd”(S371)。

具体地说,关于“$db_input”和“$db_ebd”生成“$db_input”=“$input” 以及“$db_ebd=$end”。另外,关于“$db_start”计算 “$db_start=$start-$range”,进而,该计算结果的分钟和秒钟单位的值 被初始化为“0”。这是由于,在本实施方式中搜索压缩为一小时单位 之后的数据。

接着,SQL生成部301生成SQL 310(S372),结束处理。

具体地说,SQL生成部301将所生成的“$db_input”、“$db_start” 以及“$db_ebd”代入到SQL模板370来生成SQL 310。

图12A是表示用于生成本实施方式中的CQL 311的CQL模板的 说明图。

CQL模板380是用于生成CQL 311的模板,由CQL生成部303 保持。

CQL生成部303使用全局变量309代入CQL模板380的粗字符 和用下划线部表示的部分所需的数据来生成CQL 311。

具体地说,CQL生成部303生成“$cql_input”、“$cql_select”、 “$range”、“$cql_label”以及“$cond”,将所生成的数据代入到CQL模 板380。

以下,说明CQL生成处理。

图12B是说明在本实施方式中通过CQL生成部303执行的处理 的流程图。

CQL生成部303使用全局变量309来生成“$cql_input”(S381)。具 体地说,执行以下两种处理。

首先,CQL生成部303使用全局变量309内包含的“$input”来执 行$input分解处理385。即,CQL生成部303将“$input”分解为多个 “$input_item”。该处理是从包含多个传感器名称的“$input”中获取各个 传感器名称的处理。

接着,CQL生成部303使用“$input_item”来执行$cql_input生成 处理386。CQL生成部303使用“$input_item”如$cql_input生成处理 386的右边所示那样生成“$cql_input”。

CQL生成部303使用全局变量309来生成“$cql_select”(S382)。具 体地说,执行以下两种处理。

首先,CQL生成部303使用全局变量309内包含的“$select”来执 行$select分解处理387。该处理是用于对$select内包含的要素进行分 解的处理。CQL生成部303通过执行$select分解处理387来获取 “$func1”或者“$func2”以及“$label”。

接着,CQL生成部303使用“$func1”或者“$func2”以及“$label”来 执行$cql_select生成处理388,生成“$cql_select”。在此“$func1”是汇 总函数,能够记载移动平均(avg)、分散、最大值、或者最小值等。

在此,在CQL中,无法将avg等汇总函数与“Sensor1”等信号名 进行混合来处理。因此,需要将“$select”内包含的要素使用last()函数 变换为汇总函数。例如,字符串“’Sensor1’as LABEL”变换为 “last(‘Sensor1’)as LABEL”和汇总函数。

CQL生成部303使用全局变量309来生成“$cql_label”(S383)。具 体地说,CQL生成部303使用“$label”执行$cql_label生成处理389来 生成“$cql_label”。

CQL生成部303通过将在S381~S383中生成的“$cql_input”、 “$cql_select”和“$cql_label”以及全局变量309内包含的“$range”和 “$cond”代入到CQL模板380来生成CQL 311(S384)。

如上所述,数据搜索模块157能够根据所输入的查询155来同时 生成SQL 310和CQL 311。

以下,说明使用所生成的SQL 310和CQL 311的处理。

图13是说明通过本实施方式的DB搜索部执行的SQL处理的一 例的流程图。

DB搜索部304使用全局变量309内包含的“$input”生成排列 KEY[0]~KEY[$inum-1](S400)。

具体地说,DB搜索部304使用“$input”来执行$signal提取处理 407。由此,提取出的“$inum”个“$signal”。DB搜索部304将提取出 的各“$signal”存储到排列KEY[0]~KEY[$inum-1]。通过上述处理来生 成排列KEY[0]~KEY[$inum-1]。

DB搜索部304使用所生成的排列KEY[0]~KEY[$inum-1]来生成 哈希排列hash(S401)。

DB搜索部304对数据库154发出SQL 310,数据库154执行SQL  310(S402)。由此,能够获取与发出的SQL 310中指定的条件一致的 数据作为执行结果。

DB搜索部304根据获取到的执行结果来取出一行量的数据,从 取出的数据中获取日期和时间等时间(datetime)、传感器名称(Name) 以及压缩数据(CDATA)(S403)。此外,取出的一行量的数据是一个传 感器的一小时量的压缩数据。

DB搜索部304判断根据执行结果来取出的一行量的数据是否为 空(S404)。即,判断全部执行结果的处理是否结束。

在判断为根据执行结果来取出的一行量的数据为空的情况下,DB 搜索部304结束处理。

在判断为根据执行结果来取出的一行量的数据不是空的情况下, DB搜索部304生成数据结构1(340)示出的包(S405)。

具体地说,DB搜索部304将取出的一行量的数据内包含的日期 和时间等的时间(datetime)存储到datetime3401,将以传感器名称 (Name)为关键字而从哈希排列hash得到的值存储到idx3402,将压缩 数据(CDATA)存储到zblk3404,将压缩数据(CDATA)的大小存储到 zlen3403。

DB搜索部304将所生成的包输出到文件A312(S406),返回到 S403,执行S403~S406的处理。

例如在执行SQL示例1(352)的情况下,关于传感器名称为 “’Sensor1’”和“’Sensor2’”的传感器100,从“2009-02-01 23:00:00” 至“2009-02-20 23:59:59”期间的数据被变换为多个数据结构1(340) 的包,输出到文件A312。

图14A和图14B是说明通过本实施方式的数据解压缩/排序处理 部305执行的处理的一例的流程图。

数据解压缩/排序处理部305定义data[3600][$inum]排列、缓冲器 排列以及blk排列(S450)。在本实施方式中,在一个压缩数据中针对 一个传感器100存储了一小时量的数据、3600点,因此定义 data[3600][$inum]排列。

数据解压缩/排序处理部305判断全局变量309内包含的「$snum」 是否为“0”(S451)。由此,判断是否执行了流数据处理。即,如图8A 的查询示例2(351)所示那样在查询155中没有包含select_items语句 的情况下,“$snum”为“0”,因此判断为不执行流数据处理。

在判断为“$snum”并非“0”的情况下,数据解压缩/排序处理部305 将输出处理结果的文件决定为文件B313(S452),进入到S434。

在判断为“$snum”为“0”的情况下,数据解压缩/排序处理部305将 输出处理结果的文件决定为文件D315(S453),进入到S434。

数据解压缩/排序处理部305使data[3600][$inum]排列和时间初始 化(S454)。具体地说,数据解压缩/排序处理部305使用NaN(Not a  Number)值使data[3600][$inum]初始化,另外,将表示时间的变量lastet 初始化为“0”。在本实施方式中,在排列data的初始化时,使用了NaN 值,但是如果不与数值重复的值,则可以是任意值。

数据解压缩/排序处理部305取出一个数据结构1(340)示出的包 (S455)。具体地说,数据解压缩/排序处理部305从缓冲器取出包。在 缓冲器中不存在包的情况下,从文件A312取出包。在初始处理时, 在缓冲器中没有存储包,因此从文件A312取出包。

数据解压缩/排序处理部305判断取出的包是否为空(S456)。即, 判断在所取出的包中是否包含处理对象的数据。

在判断为取出的包并非空的情况下,数据解压缩/排序处理部305 从该包中提取数据(S457)。具体地说,数据解压缩/排序处理部305从 包中提取datetime3401、idx3402、zlen3403以及zblk3404。

数据解压缩/排序处理部305集中处理相同时间的时间序列数据 块,因此判断取出的包是否为处理时间范围内的数据(S458)。具体地 说,在lastet中保持有前一次接收到的包的datetime3401,因此通过 将本次接收到的包(340)的datetime3401与lastet进行比较,能够判断 该包是否为作为处理时间的范围的一小时以内的包。

在判断为取出的包为处理时间范围内的数据的情况下,数据解压 缩/排序处理部305对压缩数据进行解压缩(S459)。具体地说,数据解 压缩/排序处理部305对取出的包内包含的zblk3404进行解压缩,将 该结果存储到blk。

数据解压缩/排序处理部305将解压缩后的数据存储到排列 data(S460),返回到S455而执行S455~S460的处理。具体地说,数据 解压缩/排序处理部305将blk存储到排列data。另外,数据解压缩/ 排序处理部305将datetime3401存储到latest。

在判断为在S456中取出的包为空的情况下或者判断为在S458中 取出的包并非处理时间范围内的数据的情况下,数据解压缩/排序处理 部305将取出的包回写到缓冲器(S461)。

数据解压缩/排序处理部305对表示循环次数的变量i设定“0”,对 包内的一小时量的各数据反复执行处理463、处理464(S462)。即,反 复执行处理直到变量i变得大于“3600”。

数据解压缩/排序处理部305生成输出结果(S463)。即,数据解压 缩/排序处理部305生成数据结构2(341)示出的数据。

具体地说,针对变量i,将latest+i存储到datetime3411,将“$inum” 存储到valn3412,将排列data存储到数据3413。由此,得到对 input_items语句指定的与传感器的一秒钟(一行)的数据对应的输出结 果。因而,反复执行全部变量i的相同的处理,由此得到对input_items 语句指定的传感器的一小时量的数据作为输出结果。

数据解压缩/排序处理部305将所生成的输出结果输出到文件 B313或者文件D315(S464)。

数据解压缩/排序处理部305判断一小时量的包的处理是否结束 (S465)。即,判断为变量i是否大于“3600”。在变量i小于“3600”的情 况下,判断为一小时量的包的处理没有处理。

在判断为全部变量i的处理没有结束的情况下、即变量i小于 “3600”的情况下,数据解压缩/排序处理部305返回到S462而执行 S462~S466的处理。

在判断为全部变量i的处理结束的情况下、即变量i大于“3600” 的情况下,数据解压缩/排序处理部305判断存储在文件A312中的全 部包的处理是否结束(S466)。

在判断为存储在文件A312中的全部包的处理没有结束的情况下, 数据解压缩/排序处理部305返回到S454而执行S454~S466的处理。

在判断为存储在文件A312中的全部包的处理结束的情况下,数 据解压缩/排序处理部305结束处理。

图15是表示本实施方式中的流数据处理部306的结构示例的说 明图。

流数据处理部306具备输入控制部500、输入队列501、流数据 处理引擎502、用户定义函数503、输出队列504以及输出控制部505。

输入控制部500执行输入控制。具体地说,输入控制部500接收 从文件B313输入的数据,将接收到的数据输出到输入队列501。输 入队列501存储输入到输入控制部500的数据。

流数据处理引擎502从输入队列501中取出数据,根据CQL 311 对取出的信息进行分析,将分析结果输出到输出队列504。

用户定义函数503存储在CQL 311中使用的函数的运算方法的定 义。此外,使用图16在后文中详细说明用户定义函数503。

输出队列504存储从流数据处理引擎502输入的分析结果。

输出控制部505执行输出控制。具体地说,输出控制部505从输 出队列504读出分析结果,对文件C输出分析结果。

在本实施方式中,首先存储在文件B313中的valn3412为“$inum” 的数据、即存储了“$inum”个传感器100的值的数据从文件B313被输 入到流数据处理部306。流数据处理部306根据CQL 311将执行处理 得到的结果输出到文件C314。

具体地说,在存储于该文件C314中的数据的valn3412中存储 “$snum+1”,在数据3413中的val[0]~val[$snum-1]中存储在查询155 的select_items语句中指定的处理结果,在数据3413中的val[$snum] 中存储针对在查询155的where_condition语句中指定的条件的处理结 果。

在此,当与在where_condition语句中指定的条件一致时,在 val[$snum]中存储“1”。另外,当不与在where_condition语句中指定的 条件一致时,在val[$snum]中存储“0”。对于存储在val[$snum]中的值, 后文中说明的截出处理部307作为用于决定截出范围552(参照图19) 的标识而使用。

在本实施方式中,对在select_items语句中指定的“$snum”个处理 结果中附加一个where_condition语句的处理结果,因此在存储在文件 C314中的数据的数据3413中包含“$snum+1”个值。

图16是表示本实施方式的用户定义函数503的一例的说明图。

用户定义函数503包括识别编号5031、函数名称5032、动作说 明5033以及备考5034。

识别编号5031是用于唯一地识别用户定义函数503内包含的函 数的标识符。函数名称5032是CQL 311内包含的函数的名称。动作 说明5033是与函数名称5032对应的函数的运算内容。备考5034是 与函数名称5032对应的函数的附加信息。

在图17示出的示例中,识别编号5031为“1”~“7”的函数是 “LABEL”和“num”提取满足动作说明5033示出的关系的数据的函数。 识别编号5031为“8”和“9”是“LABEL”提取动作说明5033示出的规定 区间内的数据的函数。识别编号5031为“10”~“12”是执行动作说明 5033示出的逻辑运算的函数。

此外,在图8B示出的CQL示例1(353)的GraterThanOeEqualTo 函数中,“LABEL”为“L1”,“num”为“70”。在CQL示例1(353)的 PositiveThreshold函数中,“LABEL”为“L3”,“num1”和“num2”为“300” 和“200”。

以下,说明根据识别编号5031为“8”和“9”的函数来提取出的规定 区间的数据。

图17是表示通过本实施方式的用户定义函数503内包含的函数 提取出的规定区间的数据的一例的说明图。

PositiveThreshold的示例表示根据识别编号5031为“8”的函数提 取出的规定区间的数据。如图17的动作说明5033所示,在 PositiveThreshold中,提取出“LABEL”的值变为“num1”以上而 “LABEL”的值变得小于“num2”为止的区间的数据。

NegativeThreshold的示例表示根据识别编号5031为“9”的函数提 取出的规定区间的数据。如图17的动作说明5033所示,在 NegativeThreshold中,提取出“LABEL”变为“num1”以下而“LABEL” 变得大于“num2”为止的区间的数据。

以下,说明由流数据处理部306执行的处理。

图27是说明通过本实施方式的流数据处理部306执行的处理的 一例的流程图。

流数据处理部306读出CQL(S900),进而将变量running设定为 “1”(S901)。

接着,流数据处理部306启动输入控制线程和输出控制线程 (S902、S903)。由此,输入控制部500和输出控制部505开始处理。 使用图28在后文中说明通过输入控制部500执行的处理。另外,使 用图29在后文中说明通过输出控制部505执行的处理。

流数据处理部306判断输出队列504中是否存在可用空间(S904)。

在判断为在输出队列504中不存在可用空间的情况下,流数据处 理部306持续等待到在输出队列504中空出可用空间为止(S905)。

在判断为在输出队列504存在可用空间的情况下,流数据处理部 306判断在输入队列501中是否存储有数据(S906)。

在判断为在输入队列501中存储了数据的情况下,流数据处理部 306从输入队列501中获取数据(S907)。

流数据处理部306根据CQL对获取到的数据进行处理(S908)。具 体地说,流数据处理引擎502执行CQL。

流数据处理部306将CQL的执行结果存储到输出队列504(S909), 返回到S904而执行相同的处理。

在S906中判断为在输入队列501没有存储数据的情况下,流数 据处理部306判断变量runnning是否为“1”(S911)。

在判断为变量runnning为“1”的情况下,流数据处理部306形成 等待处理的等待状态(S910),返回到S906而执行相同的处理。

在判断为变量runnning并非“1”的情况下,流数据处理部306判 断在输出队列504中是否存储了数据(S912)。

在判断为在输出队列504中没有存储数据的情况下,流数据处理 部306持续等待到在输出队列504中存储数据为止(S913)。

在判断为在输出队列504中存储了数据的情况下,流数据处理部 306使输入控制线程和输出控制线程停止(S914、S915),结束处理。 由此,结束输入控制部500和输出控制部505的处理。

图28是说明通过本实施方式的输入控制部500执行的处理的一 例的流程图。

当输入控制的处理开始时(S920),输入控制部500判断在输入队 列501中是否存在可用空间(S922)。

在判断为在输入队列501中不存在可用空间的情况下,输入控制 部500持续等待到在输入队列501中空出可用空间为止(S921)。

在判断为在输入队列501中存在可用空间的情况下,输入控制部 500判断在文件B313中是否存在数据(S923)。

在判断为在文件B313中不存在数据的情况下,输入控制部500 将变量runnning设定为“0”(S926),结束处理(S927)。

在判断为在文件B313中存在数据的情况下,输入控制部500从 文件B313中获取数据(S924),将获取到的数据存储到输入队列 501(S925),返回到S922而执行相同的处理。

图29是说明通过本实施方式的输出控制部505执行的处理的一 例的流程图。

当开始输出控制的处理时(S930),输出控制部505判断在输出队 列504中是否存在数据(S931)。

在判断为在输出队列504中不存在数据的情况下,输出控制部505 持续等待直到在输出队列504存储数据为止(S932)。

在判断为在输出队列504中存在数据的情况下,输出控制部505 从输出队列504中获取数据(S933),将获取到的数据存储到文件 C314(S934)。

输出控制部505之后返回到S931而执行相同的处理。

图18A是说明通过本实施方式的截出处理部307执行的处理的一 例的流程图。

截出处理部307在流数据处理部306的处理结束之后开始处理。

截出处理部307执行变量prev_cnt、变量post_cnt以及变量latest 的初始化、FIFO缓冲器的生成和初始化、indata缓冲器的定义和初始 化(S570)。

具体地说,截出处理部307将变量prev_cnt和变量post_cnt初始 化为“0”。另外,截出处理部307将变量latest初始化为 “$start-$orev-1”。另外,截出处理部307生成($orev+1)级的FIFO缓 冲器,将所生成的FIFO缓冲器初始化为“0”。此外,变量prev_cnt 和变量post_cnt是在后述的截出处理中使用的变量。

截出处理部307从文件C314中读出一个数据,存储到 indata(S571)。此外,在文件C314中存储多个select_items语句的运 算结果、与一行对应的数据结构2(341)的数据。

截出处理部307判断从文件C314中读出的数据是否为存储在文 件C314中的终端数据(S572)。例如,读出的数据的datetime3411能 够通过判断是否与全局变量309内包含的“$end”相同来实现。

在判断为从文件C314中读出的数据并非存储在文件C314中的终 端数据的情况下,截出处理部307使用indata内包含的datetime3411 和变量latest来将变量diff设定为“datetime-latest”(S573),进入到 S575。

在判断为从文件C314中读出的数据为存储在文件C314中的终端 数据的情况下,截出处理部307将变量diff设定为“$orev+1”(S574), 进入到S575。

截出处理部307将设定为变量diff的值代入为变量i,反复执行 处理直到变量i变得小于“0”(S575)。

截出处理部307判断变量i是否为“1”(S576)。

在判断为变量i并非“1”的情况下,截出处理部307生成插入到 FIFO缓冲器的伪数据(以下还记载为插入数据)(S577),进入到S580。

具体地说,生成数据结构2(341)示出的插入数据。在该情况下, 在插入数据的datetime3411中设定“latest+1”,在valn3412中设定 “$snum+1”。另外,在插入数据的数据3413中的val[0]~[$snum-1]中 设定表示空数据的值(NaN),在val[$snum]中设定“0”。

在判断为变量i为“1”的情况下,截出处理部307判断从文件C314 中读出的数据(indata)是否为存储在文件C314的终端数据(S578)。该 判断使用与S572相同的方法。

在判断为从文件C314中读出的数据(indata)为存储在文件C314 中的终端数据的情况下,截出处理部307结束处理。

在判断为从文件C314中读出的数据(indata)并非存储在文件C314 中的终端数据的情况下,截出处理部307生成输入数据(S579),进入 到S580。具体地说,截出处理部307将存储到indata的值设定到输入 数据。

截出处理部307使用输入数据来执行截出处理(S580)。使用图18B 在后文中详细说明截出处理。

截出处理部307判断是否反复执行处理(S581、S575)。即,截出 处理部307判断是否持续执行S575的for字符循环。具体地说,使变 量i递减,判断为是否为“i>0”。在判断结果为真的情况下,判断为反 复执行处理。

在判断为反复执行处理的情况下,截出处理部307返回到S575 而执行相同的处理(S575~S581)。

在判断为不需要反复执行处理的情况下,截出处理部307返回到 S571而执行相同的处理(S571~S581)。

图18B是说明本实施方式的截出处理的详细的流程图。

截出处理部307将插入数据的datetime设定到变量latest(S582)。

截出处理部307将一个插入数据输入到FIFO缓冲器,并且从FIFO 缓冲器输出一个数据(S583)。以下,还将从FIFO缓冲器输出的数据 记载为输出数据。

截出处理部307判断所输入的插入数据的val[$snum]是否为 “1”(S584)。

在判断为所输入的插入数据的val[$snum]并非“1”的情况下,截出 处理部307进入到S586。

在判断为所输入的插入数据的val[$snum]为“1”的情况下,截出处 理部307将变量prev_cnt的值相加到“1”(S585),进入到S586。

截出处理部307判断为所输出的输出数据的val[$snum]是否为 “1”(S586)。

在判断为所输出的输出数据的val[$snum]并非“1”的情况下,截出 处理部307进入到S588。

在判断为所输出的输出数据的val[$snum]为“1”的情况下,截出处 理部307将变量prev_cnt的值递减至“1”(S587),进入到S588。

截出处理部307根据变量prev_cnt、变量post_cnt以及所输入的 插入数据的val[$snum]的值,执行截出条件判断处理(S588)。具体地 说,执行以下示出的判断处理。

在S588中,截出处理部307执行三个判断处理。

第一,截出处理部307判断变量prev_cnt的值是否大于“0”。以下, 将该判断记载为截出条件(1)。

第二,截出处理部307判断所输出的输出数据的val[$snum]的值 是否为“1”。以下,将该判断记载为截出条件(2)。

第三,截出处理部307判断变量post_cnt的值是否大于“0”。以下, 将该判断记载为截出条件(3)。

截出处理部307根据截出条件判断处理的执行结果,判断是否满 足截出条件(1)、(2)或者(3)中的至少一个(S589)。

在判断为没有满足截出条件(1)、(2)或者(3)中的某一个的情况下, 截出处理部307结束截出处理S580的处理,进入到S581。

在判断为满足截出条件(1)、(2)或者(3)中的某一个的情况下,截 出处理部307根据截出条件判断处理的执行结果,判断是否满足截出 条件(1)或者(2)中的任一个(S590)。

在判断为满足截出条件(1)或者(2)中的某一个的情况下,截出处理 部307将“$post”的值设定为变量post_cnt(S591),进入到S593。

在判断为没有满足截出条件(1)或者(2)中的某一个的情况下,截出 处理部307将变量post_cnt递减“1”(S592),进入到S593。

截出处理部307将fout数据输出到文件D315(S593),结束截出处 理S580的处理,进入到S581。

通过该处理,仅满足截出条件的部分被输出到文件D315。此外, 在文件D315中存储包含满足在查询155的where_condition语句中指 定的条件的数据的附加了前后偏离的输出结果。

具体地说,截出处理部307在S588、S589中将表示满足截出条 件(1)的情况的标识、表示满足截出条件(2)的情况的标识以及表示满 足截出条件(3)的情况的标识附加到各插入数据。进而,截出处理部 307根据该标识来进行各截出条件的判断。

以下,说明通过由该截出处理部307执行的处理输出的输出结果。

图19是表示通过本实施方式的截出处理部307输出的输出结果 的一例的说明图。

在输入了查询示例3(550)的情况下,截出处理部307输出输出结 果551示出的结果。

具体地说,输出在where_condition语句中LABEL为“L1”的 Sensor1的值为“100”以上的条件成立范围554、包含前方偏离553和 后方偏离555的截出范围552或者条件成立范围554、包含前方偏离 553、后方偏离555、结合偏离556的截出范围552。

即,截出范围552示出的范围的数据被截出,作为输出结果而输 出。

此外,结合偏离556将前方偏离553与后方偏离555相重叠的部 分作为一个偏离而结合。

该输出结果是根据在图18的S589中附加的标识来生成的结果。 即,附加了截出条件(1)~(3)中的任一个的标识的插入数据与截出范围 552输出。具体地说,具有以下的结构。

附加了截出条件(2)的标识的插入数据作为截出范围552内的条件 成立范围554内包含的数据而输出。

附加了截出条件(1)的标识的插入数据作为截出范围552内的前方 偏离553内包含的数据而输出。

附加了截出条件(3)的标识的插入数据作为截出范围552内的后方 偏离555内包含的数据而输出。

截出处理部307截出与各个截出条件(1)~(3)一致的插入数据,将 截出的数据按时间顺序进行排序(整理)而输出。

此外,附加了两个以上截出条件(1)~(3)中的任一个标识的插入数 据作为包含结合偏离556的截出范围552而输出。

图20是说明通过本发明的实施方式的数据输出部308执行的处 理的一例的流程图。

数据输出部308定义tmp缓冲器(S605)。

数据输出部308从文件D315中读出数据,将读出的数据存储到 tmp(S600)。读出的数据是select_items语句的运算结果、与一行对应 的数据结构2(341)示出的数据。

数据输出部308参照读出的数据的datetime3411,执行搜索结果 提取处理(S601)。具体地说,执行以下两个处理。

第一,数据输出部308判断存储在datetime3411中的值是否为在 查询155的where_timerange语句中指定的时间范围内包含。即,判 断存储在datetime3411的值是否为“$start”以上且“$end”以下。以下, 将该判断记载为输出条件(1)。

执行是否满足输出条件(1)的判断处理的理由在于,通过SQL 310 搜索的范围的数据的对象为比在查询155中指定的时间范围大的范围 的数据。即,这是由于,如图11B中说明那样,在使用SQL 310时使 用的“$db_start”(参照图11B)还对比“$start”提前时间的数据进行处理。

第二,数据输出部308执行间拔处理。具体地说,判断将存储在 datetime3411中的值除以在查询155的step语句中指定的值、即“$step” 得到的剩余值是否成为“0”。以下,将该判断记载为输出条件(2)。在 查询示例1(350)示出的示例中,根据输出条件(2),输出每五秒钟的数 据。

数据输出部308根据在S601中的搜索结果提取处理的结果,判 断是否满足输出条件(1)和输出条件(2)(S602)。

在判断为不能同时满足输出条件(1)和输出条件(2)这两个判断的 情况下,数据输出部308进入到S604。即,不输出该数据。

在判断为满足输出条件(1)和输出条件(2)的情况下,数据输出部 308执行搜索结果生成处理(S603)。具体地说,数据输出部308将存 储在tmp中的数据变换为数据结构3(342)示出的csv形式而输出到搜 索结果文件156。

数据输出部308判断对存储在文件D315中的全部数据进行的处 理是否完成(S604)。

在本实施方式中,在数据库搜索处理中搜索压缩成一小时单位后 的压缩数据,在数据解压缩/排序处理中对压缩成一小时单位后的压缩 数据进行解压缩而生成一秒钟单位的数据,以后,在流数据处理、截 出处理、输出数据生成处理中执行一秒钟单位的数据的处理。此外, 在输出数据生成处理中,以一秒钟单位来处理数据,但是以通过$step 指定的单位输出数据。

由此,在工厂设备102中产生异常的情况下,不使该异常的搜索 精度下降而能够高速地进行搜索,另外,能够输出用于确定异常产生 的原因的数据范围。

图21是表示在本实施方式中执行特征值搜索处理的情况下的查 询155和SQL 310的一例的说明图。

在执行特征值搜索处理的情况下,对查询155追加meta_search 语句这一点不同。由此,能够使用在DAT表208内包含的MaxVal 列2084和MaxVal列2085进行搜索。

如图21所示那样,在查询示例4(700)中,MaxVal列2084的值大 于“100”的数据成为搜索的对象。

数据搜索模块157在接收到包含meta_search语句的查询155的 情况下,特征值搜索用SQL生成部302生成图21示出的SQL示例 4-1(701),在执行SQL示例4-1(701)之后,生成SQL示例4-2(702)。

SQL示例4-1(701)是时间截出用SQL,是用于提取出与特征值一 致的数据的时间(datetime)的SQL。

SQL示例4-2(702)是特征值搜索用SQL,是在通过SQL示例 4-1(701)提取出的datetime的范围中用于执行数据库154的搜索的 SQL。

SQL示例4-2(702)是与SQL示例1(352)相同的SQL 310,但是与 SQL示例1(352)相比,在SQL示例4-2(702)中通过执行SQL示例 4-1(701)而限定搜索范围,因此能够大幅缩短搜索处理的时间。

例如,在预知异常值的情况下,使用该异常值执行搜索处理,由 此与进行全部搜索的情况相比能够缩小要搜索的数据的范围,因此能 够缩短处理时间。

另外,在图21的查询示例4中,用户不一定指定meta_serach语 句。通常在阈值判断中,超过某一阈值的时间序列数据包含在最大值 超过该阈值的包集合中。另外,同样地,低于某一阈值的时间序列数 据包含在最小值低于该阈值的包集合中。通过对这种查询变换规则进 行管理,能够自动生成meta_search语句。具体地说,在图21的查询 示例4中,where_condition语句中指定了greaterthan语句和阈值的情 况下,在meta_seatch语句中作为最大值超过阈值的语句自动附加 MaxVal>阈值。另外,在where_condition语句中指定了lessthan语句 和阈值的情况下,在meta_seatch语句中作为最大值超过阈值的语句 而自动附加MaxVal<阈值。这种查询变换规则可以在系统中预先登 记,也可以是用户以后能够进行登记。

图22是表示在本实施方式中用于生成特征值搜索用的SQL 310 的SQL模板的说明图。

特征值搜索用SQL生成部302保持时间截出用SQL模板710和 特征值搜索用SQL模板711。

时间截出用SQL模板710是在执行特征值搜索的情况下用于生成 SQL 310的模板,是用于提取包含与特征值一致的数据的压缩数据的 时间的SQL。

具体地说,示出根据规定条件,从对ID列2072与ID列2082为 相同的SID表207与DAT表208进行组合而得到的表中搜索时间 (datetime)的SQL的情况。

将规定条件定义为where语句以下。即,定义按照时间顺序对数 据进行排序而提取出与所指定的传感器名称、所指定的特征值以及所 指定的时间区间一致的数据。

特征值搜索用SQL模板711在执行特征值搜索的情况下用于生成 SQL 310的模板,是在通过使用时间截出用SQL模板710生成的SQL 来提取出的时间范围中用于搜索压缩数据的SQL。

在图22示出的示例中,示出根据规定条件,从对ID列2072与 ID列2082为相同的SID表207与DAT表208进行组合得到的表中 来搜索时间(datetime)、传感器名称(SID.Name)以及压缩数据 (DAT.CDATA)的SQL的情况。

将规定条件定义为where语句以下。即,定义按照时间顺序对数 据进行排序而获取与所指定的传感器名称和所指定的时间区间一致 的数据。

图23是说明通过本实施方式的特征值搜索用SQL生成部302执 行的处理的一例的流程图。

特征值搜索用SQL生成部302使用全局变量309生成 “$meta_signal”和“$meta_cond”(S720)。具体地说,特征值搜索用SQL 生成部302使用在全局变量309内包含的“$meta”来执行$meta分解处 理730。即,特征值搜索用SQL生成部302将“$meta”分解为 “$meta_signal”和“$meta_cond”。

特征值搜索用SQL生成部302定义工件用的变量$dt_tmp(S7201)。

特征值搜索用SQL生成部302生成时间截出用SQL(S721)。

具体地说,首先,特征值搜索用SQL生成部302设定为 “$meta_start”=“$start”,进而,将分钟和秒钟单位的值初始化为“0”。 另外,特征值搜索用SQL生成部302设定为“$meta_end”=“$end”。接 着,特征值搜索用SQL生成部302将“$meta_signal”、“$meta-cond”、 “$meta_start”以及“$meta_end”代入到时间截出用SQL模板710,生成 时间截出用SQL。

特征值搜索用SQL生成部302对数据库154发出时间截出用 SQL(S722)。

特征值搜索用SQL生成部302从执行了时间截出用SQL的数据 库154中获取执行结果,存储到$dt_tmp(S723)。具体地说,获取与在 时间截出用SQL中指定的条件一致的时间数据作为执行结果,存储 到$dt_tmp。

特征值搜索用SQL生成部302判断存储在$dt_tmp中的一行量的 数据是否为Null(S724)。即,判断全部执行结果的处理是否结束。

在判断为存储在$dt_tmp中的一行量的数据为Null的情况下,特 征值搜索用SQL生成部302作为$db_input=$input生成$db_input,进 而,生成特征值搜索用SQL(S725),结束处理。具体地说,特征值搜 索用SQL生成部302在特征值搜索用SQL模板711中代入“$db_input” 和“$db_dtset”来生成特征值搜索用SQL。

在判断为存储在$dt_tmp中的一行量的数据并非Null的情况下, 特征值搜索用SQL生成部302算出存储了时间$dt_tmp的传感器数据 的、时间序列数据块的开始时间以及结束时间、即“$db_start”和 “$db_ebd”(S726)。

具体地说,对于“$db_start”,特征值搜索用SQL生成部302计算 “$db_start=$dt_tmp-$range”,进而,将该计算结果的量和秒钟单位的 值初始化为“0”。另外,关于“$db_ebd”,存储计算 “$db_ebd=$db_start+3599”值。相加“3599”的理由在于,在本实施方式 中以一小时单位来压缩数据而存储到数据库。

特征值搜索用SQL生成部302使用在S726中算出的“$db_start” 和“$db_ebd”,生成“$db_dtset”(S727),返回到S723执行相同的处理。 具体地说,特征值搜索用SQL生成部302使用“$db_start”和 “$db_ebd”,执行$db_dtset生成处理。

图24是说明在本实施方式中并行执行通过数据搜索模块157执 行的处理的情况的流程图。

CPU 121具备多个芯,如图10所示,还能够与执行DB搜索3204 同时地在各工艺1~4中执行每个处理。

S3200~S3202是与图9的S320~S323和S327相同的处理,因此 省略说明。

在数据搜索模块157中,启动工艺1~4(S3203),通过各工艺执行 每个处理(S3204~S3208)。

具体地说,在工艺1中执行数据解压缩/排序处理,在工艺2中执 行流数据处理,在工艺3中执行截出处理,另外,在工艺4中执行输 出数据生成处理。

由此,能够不将各处理的结果输出到文件A312~文件D315,而是 通过将一个工艺的输出结果传送到其它工艺来高速地进行处理。

根据本实施方式,将时间序列数据压缩成规定时间单位的压缩数 据存储到数据库,由此能够缩减存储在数据库中的数据量。另外,通 过接收一个查询,能够生成用于搜索压缩数据的SQL以及对解压缩 后的数据进行处理的CQL。进而,通过输出满足在CQL中指定的条 件的范围以及与该范围的前后区间一致的截出范围,不仅是产生异常 的部位,还能够输出产生异常前后的时间序列数据,用于确定异常部 位和异常原因的追踪变得容易。

由此,抑制中心服务器104的盘容量增加,并且对工厂设备中的 异常原因的分析变得容易。

进而,与特征值一起将压缩数据存储到数据库154,使用该特征 值来执行搜索,由此能够缩减处理时间。

以上,参照附图详细说明了本发明,但是本发明并不限定于这种 具体的结构,包含所添加的权利要求的范围的宗旨内的各种变更和同 等结构。

产业上的可利用性

本发明能够应用于处理庞大的数据的工厂、工厂设备中的设备等 的预防维护。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号