WO2015008379A1 - データ処理装置およびデータ処理方法 - Google Patents

データ処理装置およびデータ処理方法 Download PDF

Info

Publication number
WO2015008379A1
WO2015008379A1 PCT/JP2013/069630 JP2013069630W WO2015008379A1 WO 2015008379 A1 WO2015008379 A1 WO 2015008379A1 JP 2013069630 W JP2013069630 W JP 2013069630W WO 2015008379 A1 WO2015008379 A1 WO 2015008379A1
Authority
WO
WIPO (PCT)
Prior art keywords
stream
data
processing
program
batch
Prior art date
Application number
PCT/JP2013/069630
Other languages
English (en)
French (fr)
Inventor
聡 勝沼
常之 今木
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2013/069630 priority Critical patent/WO2015008379A1/ja
Priority to US14/771,064 priority patent/US9921869B2/en
Priority to JP2015527126A priority patent/JP6038324B2/ja
Publication of WO2015008379A1 publication Critical patent/WO2015008379A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries

Definitions

  • the present invention relates to a data processing apparatus and a data processing method for processing data.
  • time series data monitoring process rules are defined in advance for time series data such as sensors and logs, and processing such as time series data filtering, aggregation, anomaly detection, and future prediction is executed according to the rules.
  • time series data monitoring process there is monitoring of a plant or a server in a factory.
  • the plant monitoring process in a factory is a process that acquires the value of a sensor such as temperature or voltage attached to a machine, extracts a singular point from the time series of the sensor value for several hours to every day, and determines that it is abnormal. is there.
  • the server monitoring process obtains CPU (Central Processing Unit) and hard disk usage or network packet volume from the server log, and detects abnormalities by monitoring time-series changes from several seconds to several hours. This is the process to be performed.
  • Examples of the execution method of the time series data monitoring processing program include batch processing and stream processing.
  • a program for batch processing (hereinafter referred to as “batch program”) collectively inputs time series data stored in a file or database as vector data and outputs the processing results as vector data.
  • middleware that supports execution of a batch program include the batch processing platform disclosed in Patent Document 1 below.
  • the batch processing platform is middleware that executes scheduling, starting, and stopping of batch programs. Batch processing is used for projects that require low response time, such as factory plant monitoring, and that require high processing throughput and low cost.
  • a stream processing program sequentially processes stream data to be delivered from moment to moment, and sequentially outputs the processing result as stream data.
  • middleware that supports the execution of a stream program include the stream processing platform disclosed in Non-Patent Document 1.
  • the stream processing infrastructure is middleware that executes scheduling, starting, and stopping of a stream program.
  • Stream processing is used for projects that have high response time requirements, such as server monitoring, and low processing throughput and cost requirements.
  • Patent Document 1 supports operating a stream program on a batch basis. For this reason, Patent Document 1 designates a time range of input data for accumulated data on a batch processing platform, converts data within the range to stream data, and executes the stream program. On the other hand, Non-Patent Document 1 supports the operation of a batch program on a stream basis. Therefore, Non-Patent Document 1 collects a plurality of stream data in a data block called SigSegs on a stream processing platform, and executes a batch program that uses the data block as input / output.
  • SigSegs a data block
  • Non-Patent Document 1 when the batch program is executed on the stream processing platform of Non-Patent Document 1, it is not considered that the same stream data is provided in a plurality of data blocks, that is, the input data of the batch program is overlapped. . Therefore, on the stream processing platform of Non-Patent Document 1, there is a problem that it is not possible to execute a batch program that holds time-series data in a certain number of windows and slides the window for processing.
  • the present invention can perform batch processing and stream processing on one processing base without changing the code or algorithm of the other processing program executed on the other processing base. It is an object of the present invention to make it possible to execute the program of the above process with overlapping time series data.
  • a data processing apparatus and a data processing method are a processor, a stream program that executes stream processing, a batch program that executes batch processing, and a stream processing control program that controls the stream program And a data processing method executed by the data processing device, wherein the processor uses a stream processing control program to generate a stream data from a stream data stream.
  • a first generation procedure for generating first vector data in which each stream data of the first stream data group is grouped as an element and the stream processing control program, Time For the second stream data group in a time series starting from the middle stream data of the first stream data group and having the same number of data as the first stream data, A second generation procedure for generating second vector data in which each stream data of the second stream data group is collected as an element; and the first generation procedure and the second generation procedure by the stream processing control program And a control procedure for executing the batch processing by inputting the first vector data and the second vector data generated by the above to the batch program.
  • a data processing apparatus and a data processing method are a processor, a batch program for executing batch processing, a stream program for executing stream processing, and a batch for controlling the batch program.
  • a data processing device having a memory for storing a processing control program, and a data processing method executed by the data processing device, wherein the processor includes an element sequence that is a value for each time by the batch processing control program A first generation procedure for generating a first stream data group in which each element of the first element group in the element sequence is divided into time series from vector data, and the batch processing control program, the element And the first element group in the column starts from the middle, and the first element group A first generation procedure for generating a second stream data group in which each element of the second element group is divided into time series for the second element group in time series having the same number of elements as the prime group And the batch processing control program inputs the first stream data group and the second stream data group generated by the first generation procedure and the second generation procedure to the stream program to perform stream processing.
  • a stream of a third stream data group that is an execution result of the control procedure to be executed and the stream processing executed by the control procedure when the first stream data group is input to the stream program by the batch processing control program Data is acquired, and the second stream data group is input to the stream program and the control is performed.
  • the other processing program is executed on one processing platform without changing the code or algorithm of the other processing program executed on the other processing platform.
  • This processing program can be executed with overlapping time series data.
  • FIG. 33 is an explanatory diagram illustrating an example of a calculation state storage area illustrated in FIG. 32. It is a flowchart which shows the process sequence example by a 2nd static determination part. It is a flowchart which shows the example of a process sequence by a stream execution monitoring part. It is a flowchart which shows the process sequence example by a 2nd dynamic determination part. 33 is a flowchart illustrating an example of a processing procedure performed by an input data / vector TO stream conversion unit illustrated in FIG. 32. It is explanatory drawing which shows the example of conversion from vector data to stream data. 33 is a flowchart illustrating an example of a processing procedure performed by an output data stream TO vector conversion unit illustrated in FIG.
  • the other processing is executed with overlapping time series data. This makes it possible to execute the program of the other processing on one processing base without changing the code or algorithm of the program of the other processing executed on the one processing base.
  • Example 1 an example (Example 1) in which a batch program is executed on a stream processing base and an example (Example 2) in which a stream program is executed on a batch processing base will be described.
  • program and “processing infrastructure” may be described as the subject.
  • the program and “processing infrastructure” are defined as being executed by a processor in a memory and a communication port ( Since the communication control device is used, the description may be given with the processor as the subject.
  • the processing disclosed with the program as the subject may be processing performed by a computer. Further, part or all of the program may be realized by dedicated hardware.
  • Example 1 1 and 2 are explanatory diagrams illustrating an example of executing a batch program on a stream processing platform.
  • FIG. 1 shows an example of execution when there is no data overlap.
  • the batch program has a program configuration in which the number of data corresponding to the window width is four and the number of slides that is the number of data to be slid is two. Note that the unit of time is “seconds” as an example.
  • the stream processing platform executes a predetermined calculation while sliding stream data having a window width of 4 pieces by two.
  • the stream processing platform converts the stream data sequence 101 from time 1:00 to 1:03 into vector data 102, which is a data block, by stream TO vector conversion 100. Thereby, the stream processing platform gives the vector data 102 to the batch program BP, and the batch program BP executes the calculation using the vector data 102. Since the number of slides is two, the next target stream data string is the stream data string 103 at time 1:05.
  • the stream data sequence 103 at time 1:05 overlaps with the stream data sequence 101 because it includes stream data at times 1:02 and 1:03. Since the stream processing platform does not have data overlap, the stream data sequence 103 cannot be converted into the vector data 104 by the stream TO vector conversion 100. Therefore, the stream processing platform cannot give the vector data 104 to the batch program BP, and the batch program BP cannot execute the calculation using the vector data 104. Since the number of slides is two, the next target stream data sequence is the stream data sequence 105 at time 1:07.
  • the stream data sequence 105 at time 1:07 does not overlap with the stream data in the stream data sequence 101. Since the stream processing platform does not have data overlap in the converted vector data, when the stream data sequence 105 is given, the stream processing vector is converted into the vector data 106 by the stream TO vector conversion 100. As a result, the stream processing platform gives the vector data 106 to the batch program BP, and the batch program BP executes the calculation using the vector data 106.
  • Fig. 2 shows an example of execution when data overlap is provided.
  • the program configuration of the batch program is the same as that shown in FIG. In FIG. 2, the response which is a platform requirement is 16 seconds. The response is the time from when the stream data is input until the processing is completed.
  • the stream processing platform determines the input data size and overlap width based on the program configuration and platform requirements.
  • the input data size is the number of stream data included in the vector data to be converted. Here, the number is eight.
  • the overlap width is two as in FIG.
  • the stream processing platform converts the stream data string 201 at time 0:56 to 1:03 into vector data 202, which is a data block, by stream TO vector conversion 100.
  • the stream processing platform gives the vector data 202 to the batch program BP, and the batch program BP executes the calculation using the vector data 202. Since the number of slides is 2, the next target stream data string is the stream data string 203 at time 1:05.
  • the overlapping width with the stream data string 201 is six. Since the two overlap widths that have been set are exceeded, at time 1:05, the stream processing platform does not convert the stream data string 203 into vector data by the stream TO vector conversion 100. Since the number of slides is two, the next target stream data string is the stream data string 205 at time 1:07.
  • the stream data string 205 at time 1:07 includes stream data at times 1:00 to 1:03, so the overlap width with the stream data string 201 is 4. It becomes a piece. Since the two overlap widths that have been set are exceeded, the stream processing platform does not convert the stream data string 205 into vector data by the stream TO vector conversion 100 even at time 1:07. Since the number of slides is two, the next target stream data string is the stream data string 207 at time 1:09.
  • the stream processing platform Since the stream data string 207 at time 1:09 includes stream data at time 1:02 to 1:03, the overlap width with the stream data string 201 is two. Since it matches the set overlap width of two, at time 1:09, the stream processing platform converts the stream data string 207 into vector data 208 by the stream TO vector conversion 100. As a result, the stream processing platform gives the vector data 207 to the batch program BP, and the batch program BP executes the calculation using the vector data 208.
  • the data size of the vector data is determined so that only the data corresponding to the set overlapping width overlaps. In the example of FIG. 2, no vector data is generated at times 1:05 and 1:07. This is because the vector data 202 and 208 can be covered without generating the vector data. As described above, since generation of vector data exceeding the overlap width can be suppressed, the processing load can be reduced.
  • FIG. 3 is a system configuration diagram illustrating an example of the stream processing system 300.
  • the stream processing system 300 has a configuration in which a client 301, a data source 302, and a stream processing server 303 are communicably connected via a network.
  • the network 304 may be a local area network (LAN) connected by Ethernet (registered trademark), an optical fiber, or the like, or a wide area network (WAN) including the Internet at a lower speed than the LAN.
  • the client 301, the data source 302, and the stream processing server 303 may be any computer system such as a personal computer (PC) or a blade type computer system.
  • PC personal computer
  • the client 301 is a computer that executes registration processing for the stream processing server 303. Details of the registration process will be described later.
  • the data source 302 is a supply source that supplies a series of time-series data to be processed to the stream processing server 303, and examples thereof include the plant and server of the factory described above.
  • sensor values such as temperature and voltage attached to the machine are time-series data.
  • server for example, the CPU and hard disk usage obtained from the server log, or the packet amount of the network 304 is time-series data.
  • the stream processing server 303 is a computer in which a CPU 311, a memory 312, an I / O interface 313, and a storage 314 are coupled via a bus 315.
  • the stream processing server 303 accesses the network 304 via the I / O interface 313. Further, the stream processing server 303 can store the processing result, the intermediate result of the processing, and the setting data necessary for the system operation in the nonvolatile storage 314.
  • the storage 314 is directly connected via the I / O interface 313, but may be connected via the network 304 via the I / O interface 313 outside the stream processing server 303.
  • the stream processing base 321 is mapped to the memory 312.
  • the stream processing platform 321 is middleware to which general stream processing modules such as a start / stop module and a scheduling module of a stream program group 331 that is one or more stream programs are mapped.
  • the stream processing platform 321 includes a batch program execution unit 335 including a batch program input / output static determination unit 332, a batch program input / output dynamic determination unit 333, and a batch program group 334 that is one or more batch programs. To be mapped.
  • FIG. 4 is an explanatory diagram showing an example of a stream program in the stream program group 331 shown in FIG.
  • the stream program 400 is a program that inputs and outputs stream data.
  • FIG. 4 shows a stream program 400 defined in a CQL (Continuous Query Language) language.
  • the stream program 400 includes an input stream definition, an output stream definition, and a query definition group.
  • a sensor stream 401 having “time” and “measured value” as columns is defined as an input stream definition. Further, as an output stream definition, an abnormal sensor stream 402 having “time” and “measurement value” as columns is defined.
  • the query definition group includes query definition 1 and query definition 2.
  • a noise removal query 403 is defined, and as the query definition 2, an abnormal sensor query 404 is defined.
  • the noise removal query 403 is a query that receives stream data from the sensor stream 401 and calculates an average value of the latest four measured values.
  • the abnormal sensor query 404 is a query for outputting the stream data of the sensor stream 401 to the abnormal sensor stream 402 when the average value calculated by the noise removal query 403 is larger than ⁇ .
  • FIG. 4 shows an example of the stream program 400.
  • the stream program 400 may be defined in C language, Java language, or any other programming language.
  • FIG. 5 is an explanatory diagram showing an example of stream data.
  • the stream data 500 to 513 have time, and are stored in the stream storage queue Q in order of time.
  • FIG. 5 shows stream data 500 to 513 having time and measurement values as columns as shown in the legend.
  • the stream data 50 at the time “1:00” and the measurement value “10.0” is stored at the head, and then the stream data at the time “1:01” and the measurement value “15.0” is stored.
  • stream data 502 of time “1:02” and measurement value “14.0” is stored.
  • stream data 513 of time “1:13” and measurement value “12.0” is stored at the end of the stream storage queue Q.
  • FIG. 6 is an explanatory diagram showing an example of a batch program in the batch program group 334 shown in FIG.
  • the batch program 600 is a program that uses vector data as input and output.
  • the batch program 600 includes a definition of vector data and a batch processing function.
  • a sensor array 601 having “time” and “measured value” as columns is defined.
  • a preprocessing function 602 is defined as a batch processing function definition.
  • the pre-processing function 602 is a function that receives the sensor array 601 as an input, obtains a weighted average for the three most recent measurement values by the function SMOOTHING, and smoothes the measurement values.
  • the preprocessing function 602 calculates a differential value from the current value and the previous value for the smoothed value by the function DERIVATION.
  • the function DELIVATION is a function that performs sampling on the elements of the vector data and reduces the number of elements by 50%. For example, when 8 elements of time 1:01, 1:02, 1:03, 1:04, 1:05, 1:06, 1:07, 1:08 are input to the function DERIVATION, the function DERIVATION is , Reduce 50% of the 8 elements. As a result, four elements of time 1:01, 1:03, 1:05, and 1:07 are output.
  • the preprocessing function 602 outputs the differential value calculated by the function DELIVATION to the sensor array 601 and ends the process.
  • the batch program 600 is an example of the batch program 600, and the batch program 600 may be defined in R language, C language, Java language, or any other programming language.
  • FIG. 7 is an explanatory diagram showing an example of vector data.
  • the vector data VD is an aggregate having a plurality of elements.
  • the vector data VD shown in FIG. 7 is realized as an array, and each element of the array has a time and a measured value.
  • an index 700 has an element 700 of time “0:58” and a measured value “11.0”
  • an index 1 has an element 701 of time “0:59” and a measured value “14.0”
  • an index. 2 has an element 702 of time “10:00” and a measured value “10.0”
  • an index 7 has an element 707 of time “1:05” and a measured value “12.0”.
  • the method for realizing the vector data VD may be a list or other data structure in addition to the array.
  • FIG. 8 is an explanatory diagram showing the input / output relationship of the batch program input / output static determination unit 332 shown in FIG.
  • the batch program input / output static determination unit 332 is a program executed by the CPU 311 on the stream processing board 321, and determines the static input / output setting of the batch program 600.
  • the batch program input / output static determination unit 332 includes a first static determination unit 804.
  • the first static determination unit 804 receives registration information such as a program configuration 801, a platform requirement 802, and a batch execution specification 803 from the client 301. Then, the first static determination unit 804 determines the static input data size and the overlap width of the batch program 600. The determined input data size and overlap width are output as batch program input / output settings. The input data size and overlap width will be described later.
  • FIG. 9 is an explanatory diagram showing an example of the program configuration 801 shown in FIG.
  • the program configuration 801 is information in which parameters that configure the operation of the program are set.
  • the parameters include, for example, a window width 901 and the number of slides 902, and are designated by the user by operating the client 301.
  • the window width 901 indicates the width of a window including time series data necessary for processing of the stream program 400 and the batch program 600.
  • the window width is the number of time-series data included in the window.
  • the number of slides 902 is a size for sliding the window for each process. For example, in the stream program 400 shown in FIG. 4, since the noise removal query 403 continues to calculate by shifting the average value of the latest four measured values one by one, the window width 901 is four and the number of slides 902 is one. It becomes.
  • the window width 901 is four in total.
  • the number of slides 902 is two because the elements of the vector data VD are sampled and reduced by 50%.
  • FIG. 10 is an explanatory diagram showing an example of the platform requirement 802 shown in FIG.
  • the platform requirement 802 is a condition imposed on the stream processing infrastructure 321.
  • the parameter includes, for example, a response time 1001 and is designated by the user by operating the client 301.
  • the response time 1001 is a time that can be allowed by the user from when data is input to the stream processing server 303 until the processing of the data is completed. In FIG. 10, since the response time 1001 is designated as “16 seconds”, the time from the input of data to the completion of the processing of the data is allowed up to 16 seconds.
  • FIG. 11 is an explanatory diagram showing an example of the batch execution specification 803 shown in FIG.
  • the batch execution specification 803 is information that defines the execution method of batch processing.
  • the input rate 1101 indicates an interval at which stream data input by the batch program 600 arrives.
  • the processing throughput 1102 indicates the number of elements of the vector data VD that the batch program 600 processes per unit time.
  • the batch program 600 can process one element per second.
  • FIG. 12 is an explanatory diagram showing the input / output relationship of the batch program input / output dynamic determination unit 333 shown in FIG.
  • the batch program input / output dynamic determination unit 333 is a program executed by the CPU 311 on the stream processing board 321 and determines dynamic input / output setting of the batch program 600.
  • the batch program input / output dynamic determination unit 333 includes a batch execution monitoring unit 1201 and a first dynamic determination unit 1203.
  • the batch execution monitoring unit 1201 monitors the batch program 600 being executed, and generates a batch execution monitoring value 1202.
  • the batch execution monitoring value 1202 is an observation value in the batch program 600 being executed.
  • the batch execution monitoring value 1202 will be described later.
  • the first dynamic determination unit 1203 receives from the client 301 the program configuration 801 shown in FIG. 9, the platform requirement 802 and the batch execution monitoring value 1202 shown in FIG. Then, the first dynamic determination unit 1203 determines the dynamic input data size and the overlap width of the batch program 600. The determined input data size and overlap width are output as a batch program input / output setting 805. The input data size and overlap width will be described later.
  • FIG. 13 is an explanatory diagram showing an example of the batch execution monitoring value 1202.
  • the batch execution monitoring value 1202 has the number of processing target data 1301 and the processing throughput 1302 as parameters, and is output by the batch execution monitoring unit 1201.
  • the processing target data count 1301 indicates the number of stream data stored in the stream storage queue Q and input by the batch program 600. In FIG. 13, since the processing target data count 1301 is “6”, it indicates that there are six stream data in the stream storage queue Q.
  • the processing throughput 1302 indicates the size of the value of the vector data VD that the batch program 600 processes per unit time.
  • FIG. 14 is an explanatory diagram showing an example of the batch program input / output setting 805 shown in FIGS. 8 and 12.
  • the batch program input / output setting 805 is information that defines data input / output to / from the batch program 600. For example, there are an input data size 1401 and an overlap width 1402 as parameters, which are specified by the user by operating the client 301.
  • the input data size 1401 indicates the number of elements of the vector data VD input by the batch program 600.
  • the number of elements of the vector data VD is eight.
  • the overlap width 1402 indicates the number of elements that overlap between the vector data VD input by the current batch program 600 and the vector data VD input by the previous batch program 600.
  • the vector data VD input by the previous batch program 600 also includes an index 701 element 701 and an index 1 element 702. In such a case, the overlap width 1402 is two.
  • FIG. 15 is an explanatory diagram showing the input / output relationship of the batch program execution unit 335 shown in FIG.
  • the batch program execution unit 335 includes an input data / stream TO vector conversion unit 1501 and an output data / vector TO stream conversion unit 1502.
  • the input data stream TO vector conversion unit 1501 receives the batch program input / output setting 805.
  • the batch program input / output setting 805 may be generated by the first static determination unit 804 or the first dynamic determination unit 1203 or may be manually created by the user.
  • the input data stream TO vector conversion unit 1501 inputs a plurality of stream data strings SD1 and SD2 from the stream storage queue Q and the overlap data storage area 1500, and from the stream data strings SD1 and SD2 according to the batch program input / output setting 805. Conversion to vector data VD1.
  • the overlap data storage area 1500 is an area in which the stream data string SD2 having the latest overlap width 1402 is stored. Details will be described later.
  • the stream data string SD1 of the stream storage queue Q may be generated by the stream program 400 or by another program.
  • the batch program 600 receives the vector data VD1 output from the input data stream TO vector conversion unit 1501, and outputs the vector data VD2 as the processing result. Then, the output data / vector TO stream conversion unit 1502 receives the vector data VD2 output from the batch program 600 and converts it into a stream data string SD3.
  • the stream data string SD3 output by the output data / vector TO stream conversion unit 1502 is stored in the stream storage queue Q. Subsequently, the stream data queue SD3 in the stream storage queue Q may be input by the stream program 400 or by another program.
  • FIG. 16 is an explanatory diagram showing an example of the overlapping data storage area 1500.
  • the overlap data storage area 1500 stores stream data 1601 at time “0:58” and measurement value “11: 0”, and stream data 1601 at time “0:59” and measurement value “14.0”.
  • the input data / stream TO vector conversion unit 1501 inputs the stream data held in the overlap data storage area 1500 and generates vector data.
  • FIG. 17 is a flowchart illustrating an example of a processing procedure performed by the batch program input / output static determination unit 332.
  • the first static determination unit 804 reads a program configuration 801, a platform requirement 802, and a batch execution specification 803 specified by the user (S1701).
  • the first static determination unit 804 sets the overlap width 1402 to “window width ⁇ slide number” and sets it in the batch program input / output setting 805 (S1702).
  • the time until the head data of the stream storage queue Q that stores the stream data to be input to the batch program 600 is executed by the batch program 600 is a waiting time
  • the time that the batch program 600 is executed is the execution time.
  • the first static determination unit 804 can satisfy the requested response time 1001 if the waiting time + the execution time is equal to or shorter than the response time 1001.
  • the waiting time is “the number of data in the stream storage queue Q (hereinafter, the number of queue data) / input rate”, and the execution time is “the number of queue data / processing throughput”. Therefore, “the number of queue data / input rate + the number of queue data / processing throughput” needs to be equal to or shorter than the response time.
  • the number of data that can be processed in the stream storage queue Q (hereinafter, the number of data that can be processed) is the maximum number of queue data that satisfies “number of queue data / input rate + number of queue data / processing throughput ⁇ response time”.
  • the number of data that can be processed is [response time ⁇ processing throughput ⁇ input rate / (processing throughput + input rate)] (step S1703). [] Is a Gaussian symbol.
  • the first static determination unit 804 sets the input data size 1401 as the processable data number in the batch program input / output setting 805 ( Step S1705). Thereby, the input data size 1401 can be maximized while satisfying the requirement of the response time 1001.
  • the first static determination unit 804 can process the vector data VD having a smaller number of elements than the window width 901. Therefore, the input data size 1401 is set to the window width 901, and the calculated input data size 1401 and overlap width 1402 are set in the batch program input / output setting 805 (S1706).
  • the window width 901 is four
  • the number of slides 902 is two
  • the response time 1001 is 16 seconds as shown in FIG. 10
  • the input rate 1101 is 1 / piece as shown in FIG. Second
  • the number of processable data is 16 [seconds] ⁇ 1 [piece / second] ⁇ 1 [piece / second] / (1 [piece / second] +1 [piece / second] Seconds]). Therefore, since the window width 901 is four, the number of data that can be processed is larger than the window width 901, and the input data size 1401 is eight that is the number of data that can be processed.
  • FIG. 18 is a flowchart illustrating an example of a processing procedure performed by the batch execution monitoring unit 1201.
  • the batch execution monitoring unit 1201 acquires the current number of data in the stream storage queue Q that stores the stream data that is input to the batch program 600, and sets the batch execution monitoring value 1202 to the number of processing target data 1301 (S1801).
  • the batch execution monitoring unit 1201 extracts the processing throughput 1102 from the log of the stream processing base 321 and sets it to the processing throughput 1102 of the batch execution monitoring value 1202 (S1802).
  • the batch execution monitoring unit 1201 returns to step S1801 if the stream processing infrastructure 321 has not ended (step S1803: No), and ends the processing if it has ended (step S1803: Yes).
  • FIG. 19 is a flowchart illustrating an example of a processing procedure performed by the first dynamic determination unit 1203.
  • the first dynamic determination unit 1203 first reads the program configuration 801 and the platform requirement 802 (S1901). Next, the first dynamic determination unit 1203 sets the overlap width 1402 to “window width 901—the number of slides” and sets it in the batch program input / output setting 805 (S1902).
  • the first dynamic determination unit 1203 waits for the stream data to be processed to be input to the stream storage queue Q (step S1903: No).
  • the first dynamic determination unit 1203 reads the batch execution monitoring value 1202 (S1904).
  • the first dynamic determination unit 1203 determines the maximum number of stream data satisfying the requirements of the response time 1001 (hereinafter referred to as the response time 1001, the processing throughput 1102, the current time, and the oldest time of the data in the stream storage queue Q). “Processable data count”) is set to “processing throughput ⁇ (response time ⁇ (current time ⁇ oldest time of processing target data))” (S1905).
  • step S1906 Yes
  • the first dynamic determination unit 1203 cannot process the vector data VD having a smaller number of elements than the window width 901. Therefore, the input data size 1401 is set to the window width 901 and set in the batch program input / output setting 805 (S1907). Then, control goes to a step S1911.
  • the first dynamic determination unit 1203 determines whether the processable data number is equal to or less than the process target data number 1301 + the overlap width 1402. Judgment is made (step S1908). If the number of processable data is equal to or less than the number of process target data + the overlap width (step S1908: Yes), the first dynamic determination unit 1203 sets the input data size 1401 as the number of processable data, and sets batch program input / output settings 805 (S1909). Then, control goes to a step S1911.
  • step S1908 when the number of data that can be processed is not equal to or less than the number of data to be processed + the overlap width (step S1908: No), the first dynamic determination unit 1203 sets the input data size 1401 to “the number of processable data + the overlap width 1402”. And set in the batch program input / output setting 805 (S1910). Then, control goes to a step S1911.
  • step S1911 the first dynamic determination unit 1203 determines whether or not the stream processing base 321 has ended (step S1911). If the stream processing base 321 has not ended (step S1911: No), the process returns to step S1903. On the other hand, when the processing is finished (step S1911: Yes), the processing by the first dynamic determination unit 1203 is finished.
  • FIG. 20 is a flowchart illustrating an example of a processing procedure performed by the input data stream TO vector conversion unit 1501.
  • the input data stream TO vector conversion unit 1501 reads the batch program input / output setting (S2001).
  • the input data stream TO vector conversion unit 1501 determines whether or not stream data equal to or larger than the number obtained by subtracting the overlap width 1402 from the input data size 1401 exists in the stream storage queue Q (step S2002).
  • step S1803 If there is no more stream data than the number obtained by subtracting the overlap width 1402 from the input data size 1401 (step S1803: No), the process returns to step S2001 and waits until stream data is accumulated.
  • step S2002: Yes the input data stream TO vector conversion unit 1501 is the number obtained by subtracting the overlap width 1402 from the input data size 1401. Stream data is acquired from the stream storage queue Q (S2003).
  • the input data stream TO vector conversion unit 1501 acquires stream data from the overlap data storage area 1500 (S2004).
  • the input data / stream TO vector conversion unit 1501 converts the stream data acquired from the stream storage queue Q and the overlap data storage area 1500 into vector data VD (S2005), and starts the batch program 600 with the vector data VD as an input. (S2006).
  • the input data stream TO vector conversion unit 1501 adds the stream data having the newest overlap width 1402 among the stream data acquired from the stream storage queue Q and the overlap data storage area 1500 to the overlap data storage area 1500.
  • Store S2007).
  • step S2008 determines whether or not the stream processing infrastructure 321 has ended (step S2008), and when it has not ended (step S2008: No), returns to step S2002. On the other hand, when the processing is completed (step S2008: Yes), the processing by the input data stream TO vector conversion unit 1501 is ended.
  • FIG. 21 is an explanatory diagram showing an example of conversion from stream data to vector data VD. 21 will be described with reference to the step numbers in FIG.
  • the input data stream TO vector conversion unit 1501 reads the batch program input / output setting 805 having eight input data sizes 1401 and two overlap widths 1402.
  • step S2002 the input data stream TO vector conversion unit 1501 determines whether or not stream data equal to or larger than the number obtained by subtracting the overlap width 1402 from the input data size 1401 exists in the stream storage queue Q.
  • step S2003 the input data stream TO vector conversion unit 1501 acquires the five stream data 501 to 505 from the time 1:00 to 1:05 from the stream storage queue Q.
  • step S2004 the input data stream TO vector conversion unit 1501 acquires stream data 1601 and 1602 at times 0:58 and 0:59 from the overlap data storage area 1500.
  • step S2005 the input data / stream TO vector conversion unit 1501 performs stream data 1601 and 1602 at times 0:58 and 0:59 and six stream data 501 to 505 are converted into vector data VD1 having elements 700 to 707 with indexes 0 to 7.
  • step S2007 the input data stream TO vector conversion unit 1501 has the overlapping width 1402: 2 streams having a newer time among the eight stream data acquired from time 0:59 to 1:05. Select data. In this case, two stream data at times 1:04 and 1:05 are selected.
  • the input data stream TO vector conversion unit 1501 overwrites and saves the two stream data at times 1:04 and 1:05 in the overlapping data storage area 1500.
  • the overlap data storage area 1500 stores stream data at times 1:04 and 1:05 instead of stream data at times 0:58 and 0:59. Therefore, when stream data is newly acquired in step S2003, stream data at times 1:04 and 1:05 is acquired from the overlapping data storage area 1500 in step S2004.
  • FIG. 22 is a flowchart illustrating an example of a processing procedure performed by the output data / vector TO stream conversion unit 1502.
  • the output data / vector TO stream conversion unit 1502 acquires the vector data VD output from the batch program 600 (S2201).
  • the output data / vector TO stream conversion unit 1502 sequentially acquires elements from the vector data VD, and adds stream time to the acquired elements to generate stream data (step S2202).
  • the output data / vector TO stream conversion unit 1502 stores the generated stream data in the stream storage queue Q in time order (S2203). After that, the output data / vector TO stream conversion unit 1502 determines whether or not the stream processing infrastructure 321 has ended (step S2204), and when it has not ended (step S2204: No), the process returns to step S2201. On the other hand, if completed (step S2204: Yes), the processing by the output data / vector TO stream converter 1502 is terminated.
  • FIG. 23 is an explanatory diagram showing an example of conversion from vector data VD to stream data. 23 will be described with reference to step numbers in FIG.
  • the output data / vector TO stream conversion unit 1502 obtains vector data VD2 having elements of indexes 0-2.
  • the output data / vector TO stream conversion unit 1502 generates stream data 2311, 2313, 2315 at times 1:01, 1:03, 1:05 corresponding to the elements, and the stream storage queue.
  • the downstream stream program 400 can acquire the stream data 2311, 2313, and 2315 stored in the stream storage queue Q and execute the stream processing.
  • the vector data can be overlapped, so that it is possible to avoid the state where the calculation cannot be executed, and the batch program semantics can be maintained. Therefore, the batch program 600 can be executed on the stream processing base 321 without changing the code or algorithm of the batch program. Further, the data size of the vector data VD is determined so that only the data corresponding to the overlap width 1402 is overlapped. As described above, since the generation of the vector data VD exceeding the overlap width 1402 can be suppressed, the processing load can be reduced.
  • the stream data group as the execution result is collectively converted into vector data, so that it is given as input data to subsequent stream data executed on the stream processing board 321.
  • stream processing on the stream processing board 321 can be made more efficient.
  • Example 2 Next, Example 2 will be described.
  • the second embodiment is an example in which the stream program 400 is executed on a batch processing base.
  • symbol is attached
  • FIG. 24 and 25 are explanatory diagrams showing an example of executing the stream program SP on the batch processing base.
  • FIG. 24 shows an example of execution when data is not overlapped.
  • the stream program SP has a program configuration in which the window width is 60 and the number of slides is one.
  • the unit of time is “minute” as an example.
  • the batch processing platform executes batch processing every 4 hours as an example.
  • the batch processing platform executes the batch processing based vector TO stream conversion 2400 that converts the value for each time in the file F into stream data in time units.
  • the converted stream data string 2401 is input to the stream program SP.
  • the stream program SP executes a predetermined process using the input stream data string 2401 while sliding one by one.
  • Vector TO stream conversion 2400 is performed. That is, at time 5:59, the batch processing platform generates a stream data string 2402 by performing vector TO stream conversion on the time value from 5:00 to 8:59.
  • the stream data at time 5:00 is head data in the vector TO stream conversion at time 8:59. Accordingly, when the stream data at time 5:00 is input to the stream program SP, the stream program SP does not have 59 stream data from time 4:01 to 4:59, so the stream data at time 5:00 The predetermined process cannot be executed. Therefore, when the stream program SP processes the stream data at time 5:00, it is necessary to provide the previous 59 stream data or to keep the stream data calculation state at time 4:59. is there.
  • FIG. 25 shows an execution example when data overlap is provided.
  • the program configuration of the stream program SP is the same as that shown in FIG.
  • the platform requirement for the stream program SP is 480 minutes.
  • the batch processing platform determines the overlap width or whether or not to maintain the calculation state based on the program configuration and platform requirements.
  • the batch processing base selects whether to apply the overlap width or the calculation state holding after comparing the calculation processing amount.
  • the batch processing platform converts the data including the overlap width into stream data by the vector TO stream conversion 2400.
  • the vector TO stream conversion 2400 In the case of time 8:59, in FIG. 24, the vector TO stream conversion 2400 generates a stream data string 2402 of time 5:00 to 8:59, but in FIG. A stream data string 2501 at time 4:01 to 8:00 including stream data corresponding to 59 overlap widths immediately before 00 is generated. Note that the stream data at times 8:01 to 8:59 that have not been generated are generated at the timing of the next batch processing.
  • the calculation state of the stream program SP at time 4:59 is held.
  • the vector TO stream conversion 2400 generates stream data 2502 at times 5:00 to 8:59 at time 8:59 as in FIG. 24, and outputs the stream data 2502 to the stream program SP.
  • the stream program SP executes a predetermined process using the calculation state of the stream program SP at time 4:59 and the stream data string 2502 at time 5:00 to 8:59.
  • FIG. 26 is a system configuration diagram illustrating an example of a batch processing system.
  • the batch processing system 2600 has a configuration in which a client 301, a data source 302, and a batch processing server 2603 are communicably connected via a network 304.
  • the network 304 can be Ethernet, LAN, or WAN.
  • the client 301, the data source 302, and the stream processing server 303 may be any computer system such as a PC or a blade-type computer system.
  • the client 301 is a computer that executes registration processing for the batch processing server 2603. Details of the registration process will be described later.
  • the data source 302 is a supply source that supplies a series of time-series data to be processed to the batch processing server 2603, and examples thereof include the plant and server of the factory described above.
  • the batch processing server 2603 is a computer in which an I / O interface 2613, a CPU 2611, a memory 2612, and a storage 2614 are coupled by a bus 2615.
  • the batch processing server 2603 accesses the network 304 via the I / O interface 2613. Further, the batch processing server 2603 can store processing results, intermediate results of processing, and setting data necessary for system operation in the nonvolatile storage 2614.
  • the storage 2614 is directly connected via the I / O interface 2613, but may be connected outside the batch processing server 2603 via the network 304 via the I / O interface 2613.
  • a batch processing base 2621 is mapped to the memory 2612.
  • the batch processing platform 2621 is middleware to which general stream processing modules such as a batch program group 334 that is one or more batch programs are started, stopped, and scheduled.
  • the batch processing platform 2621 includes a stream program input / output setting static determination unit 2632, a stream program input / output setting dynamic determination unit 2633, and a stream program execution unit including a stream program group 331 that is one or more stream programs. 2635 is mapped.
  • FIG. 27 is an explanatory diagram showing the input / output relationship of the stream program input / output setting static determination unit 2632 shown in FIG.
  • the stream program input / output setting static determination unit 2632 is a program executed by the CPU 2611 on the batch processing base 2621 and determines the static input / output setting of the stream program 400.
  • the stream program input / output setting static determination unit 2632 includes a second static determination unit 2702.
  • the second static determination unit 2702 receives registration information such as a program configuration 801, a platform requirement 802, and a stream execution specification 2701 from the client 301. Then, the second static determination unit 2702 determines whether or not the static input data size, the overlap width, and the calculation state of the stream program 400 are retained.
  • the calculation state holding means holding a calculation state that is an execution result of the stream program 400 executed on the batch processing base 2621.
  • the determined input data size and overlap width are output as a stream program input / output setting 2703.
  • FIG. 28 is an explanatory diagram showing an example of the stream execution specification 2701.
  • the stream execution specification 2701 is information that defines an execution method of stream processing.
  • the parameters include, for example, an input rate 2801, a processing throughput 2802, a calculation state holding / reading time 2803, and are designated by the user by operating the client 301.
  • the input rate 2801 indicates an interval at which elements of the vector data VD input by the stream program 400 arrive.
  • the processing throughput 2802 indicates the number of stream data that the stream program 400 processes per unit time. In FIG. 28, since the processing throughput 2802 is 1 / min, it indicates that the stream program 400 can process one value per minute.
  • the calculation state holding / reading time 2803 indicates the time required for holding and reading the calculation state. In FIG. 28, since the calculation state holding / reading time 2803 is 5 minutes, the calculation state holding and reading takes 5 minutes.
  • FIG. 29 is an explanatory diagram showing the input / output relationship of the stream program input / output setting dynamic determination unit 2633 shown in FIG.
  • the stream program input / output setting dynamic determination unit 2633 is a program executed by the CPU 2611 on the batch processing base 2621 and determines the dynamic input / output setting of the stream program 400.
  • the stream program input / output setting dynamic determination unit 2633 includes a stream execution monitoring unit 2901 and a second dynamic determination unit 2903.
  • the stream execution monitoring unit 2901 monitors the stream program 400 being executed and generates a stream execution monitoring value 2902.
  • the stream execution monitoring value 2902 is an observation value in the batch program 600 being executed.
  • the stream execution monitoring value 2902 will be described later.
  • the second dynamic determination unit 2903 receives from the client 301 the program configuration 801 shown in FIG. 9, the platform requirement 802 and the stream execution monitoring value 2902 shown in FIG. Then, the second dynamic determination unit 2903 determines the dynamic input data size, the overlap width, and the presence / absence of the calculation state of the stream program 400.
  • the determined input data size 1401 and overlap width 1402 are output as a stream program input / output setting 2703. The input data size and overlap width will be described later.
  • FIG. 30 is an explanatory diagram showing an example of the stream execution monitoring value 2902.
  • the stream execution monitoring value 2902 has, as parameters, the number of data to be processed 3001, a processing throughput 3002, and a calculation state holding / reading time 3003, and is output by the stream execution monitoring unit 2901.
  • the processing target data number 3001 indicates the number of elements of the vector data VD input by the stream program 400.
  • the number of elements is stored in a file, for example.
  • the processing target data number 3001 is 240, it indicates that the number of vector data VD elements is 240 in the file.
  • the processing throughput 3002 indicates the number of stream data processed by the stream program 400 per unit time.
  • the calculation state holding / reading time 3003 indicates the time required for holding and reading the calculation state.
  • FIG. 31 is an explanatory diagram showing an example of the stream program input / output setting 2703 shown in FIG. 27 and FIG.
  • the stream program input / output setting 2703 is information that defines data to be input / output to / from the stream program 400.
  • As parameters for example, there are an input data size 3101, an overlap width 3102, and a calculation state holding presence / absence 3103, which are designated by the user by operating the client 301.
  • An input data size 3101 indicates the size of stream data input by the stream program 400.
  • the stream program 400 inputs 240 stream data.
  • the overlap width 3102 indicates the number of stream data that overlaps between the stream data input by the stream program 400 and the stream data input by the stream program 400 in the previous execution. In FIG. 31, since there are three overlap widths 3102, the stream data input by the stream program 400 in the previous execution and the three stream data overlap.
  • the calculation state holding presence / absence 3103 indicates whether or not the calculation state of the stream program 400 is held. In FIG. 31, since the calculation state holding presence / absence 3103 is “none”, the calculation state is not held.
  • FIG. 32 is an explanatory diagram showing the input / output relationship of the stream program execution unit 2635 shown in FIG.
  • the stream program execution unit 2635 includes an input data / vector TO stream conversion unit 3201, an output data / stream TO vector conversion unit 3202, a calculation state reading unit 3203, and a calculation state holding unit 3204.
  • the input data / vector TO stream conversion unit 3201, the calculation state reading unit 3203, and the calculation state holding unit 3204 receive the stream program input / output setting 2703.
  • the stream program input / output setting 2703 may be generated by the second static determination unit 2702 or the second dynamic determination unit 2903, or may be manually created by the user.
  • the calculation state reading unit 3203 reads the calculation state 3211 stored in the calculation state storage area 3210 and inputs it to the stream program 400 according to the stream program input / output setting 2703 when the execution of the stream program 400 is started.
  • the calculation state holding unit 3204 inputs the calculation state 3211 to the stream program 400 according to the stream program input / output setting 2703 when the execution of the stream program 400 ends.
  • the input data / vector TO stream conversion unit 3201 receives the vector data VD3 in the file F1, which is the output of the batch program BP1, and converts the vector data VD3 into stream data according to the stream program input / output setting 2703.
  • the vector data VD3 input by the input data / vector TO stream conversion unit 3201 may be stored in a file, database, or other storage area. Further, the batch program 600 may store the vector data VD3 in the file F1 and other storage areas, and other programs may store them.
  • the stream program 400 receives the stream data output from the input data / vector TO stream conversion unit 3201, and outputs the stream data as the processing result. Then, the output data / stream TO vector conversion unit 3202 receives the stream data SD4 output from the stream program 400 and converts it into vector data VD4.
  • the vector data VD output from the output data stream TO vector conversion unit 3202 is stored in the file F2, a database, or other storage area.
  • the vector data VD4 stored in the file F2 or other storage area may be input by the batch program 600 or other programs.
  • FIG. 33 is an explanatory diagram showing an example of the overlapping data time shown in FIG.
  • the overlap data time OT indicates the time of stream data that overlaps with the stream data input by the stream program 400 in the previous execution in the stream data input by the stream program 400.
  • the overlap data time OT is “0:57 to 0:59”
  • the time “0:57” to “0:59” is used in both execution of the current stream program 400 and the previous stream program 400.
  • the overlap data time OT is set by the input data / vector TO stream conversion unit 3201 and used by the output data / stream TO vector conversion unit 3202.
  • FIG. 34 is an explanatory diagram of an example of an operator tree.
  • the operator tree 3400 is generated by compiling the stream program 400 described in CQL.
  • the stream processing infrastructure 321 executes the operators 3401 to 3404 constituting the operator tree 3400 in the order specified by the operator tree 3400.
  • An operator tree 3400 shown in FIG. 34 is an operator tree 3400 generated as a result of compilation of the noise removal query 403 and the abnormal sensor query 404 shown in FIG.
  • the operator tree 3400 includes, for example, ROWS 3401, GROUP BY 3402, ISTREAM 3403, and ISTREAM 3404.
  • the operator tree 3400 is executed in the order of ROWS 3401, GROUP BY 3402, ISTREAM 3403, and ISTREAM 3404.
  • FIG. 35 is an explanatory diagram showing an example of the calculation state storage area 3210 shown in FIG.
  • a calculation state 3211 is stored in the calculation state storage area 3210.
  • a calculation state 3211 indicates a state used for calculation of each operator 3401 to 3404. For example, since the calculation state of the ROWS 3401 is a window that holds four stream data recently, four stream data are stored. Further, the calculation state 3211 of the operator GROUP BY 3402 stores an average value of the latest four measurement values.
  • FIG. 36 is a flowchart illustrating an example of a processing procedure performed by the second static determination unit 2702.
  • the second static determination unit 2702 reads the program configuration 801, the platform requirement 802, and the stream execution specification 2701 (step S3601).
  • the second static determination unit 2702 determines whether or not “(window width ⁇ number of slides) / processing throughput” is greater than the calculated state holding / reading time 2803 (step S 3602). If it is larger (step S3602: Yes), the second static determination unit 2702 sets the calculation state holding presence / absence 3103 to “present” in the stream program input / output setting 2703 (step S3603), and the stream program input / output setting 2703 The overlap width 3102 is set to 0 (step S3604). Then, control goes to a step S3607.
  • step S3602 when “(window width ⁇ number of slides) / processing throughput” is equal to or shorter than the calculation state holding / reading time 2803 (step S3602: No), the second static determination unit 2702 calculates the calculation state in the stream program input / output setting.
  • the holding presence / absence 3103 is set to “none” (step S 3605), and the overlap width 3102 is set to “window width ⁇ slide number” in the stream program input / output setting 2703 (step S 3606). Then, control goes to a step S3607.
  • the time until the stream data 400 is executed in the vector data VD to be processed is the waiting time, and the execution time of the stream program 400 is the execution time. If the waiting time + execution time is equal to or shorter than the response time 1001, processing can be performed with the requested response time 1001.
  • the waiting time is “size of vector data VD to be processed (hereinafter referred to as vector size) / input rate”, and the execution time is “vector size / processing throughput”.
  • vector size / input rate + vector size / processing throughput needs to be a response time of 1001 or less. Therefore, the processable data size of the vector data VD (hereinafter, “number of processable data”) is the maximum vector size that satisfies “vector size / input rate + vector size / processing throughput ⁇ response time”. As a result, the vector size becomes [response time ⁇ processing throughput ⁇ input rate / (processing throughput + input rate)] ([] is a Gaussian symbol).
  • the second static determination unit 2702 sets the input data size 3101 as [response time ⁇ processing throughput ⁇ input rate / (processing throughput + input rate)] in the stream program input / output setting 2703 (step S3607). ). Thereby, the process by the second static determination unit 2702 ends.
  • FIG. 37 is a flowchart illustrating a processing procedure example by the stream execution monitoring unit 2901.
  • the stream execution monitoring unit 2901 refers to the file storing the stream data to be input to the stream program 400, and sets the stream execution monitoring value 2902 to the processing target data number 3001 (step S3701).
  • the stream execution monitoring unit 2901 extracts the processing throughput from the log of the batch processing infrastructure 2621 and sets it to the processing throughput 3002 of the stream execution monitoring value 2902 (step S3702). Then, the batch execution monitoring unit 1201 returns to step S3701 if the batch processing base 2621 has not ended (step S3703: No), and ends the process if completed (step S3703: Yes).
  • FIG. 38 is a flowchart illustrating an example of a processing procedure performed by the second dynamic determination unit 2903.
  • the second dynamic determination unit 2903 first reads the program configuration 801 and the platform requirement 802 (step S3801). Next, the second dynamic determination unit 2903 determines whether or not the element of the vector data VD to be processed exists in the file (step S3802). When the vector data VD to be processed exists in the file (step S3802: Yes), the second dynamic determination unit 2903 reads the stream execution monitoring value 2902 (step S3803).
  • the second dynamic determination unit 2903 determines whether or not “(window width ⁇ number of slides) / processing throughput” is larger than the calculation state holding / reading time 3003 (step S3804). If larger (step S3804: YES), the second dynamic determination unit 2903 sets the calculation state holding presence / absence 3103 to “present” in the stream program input / output setting 2703 (step S3805), and the stream program input / output setting 2703 The overlap width 3102 is set to 0 (step S3806). Then, control goes to a step S3809.
  • step S3804 determines whether “(window width ⁇ number of slides) / processing throughput” is less than or equal to the calculation state holding / reading time 3003 (step S3804: No).
  • the second dynamic determination unit 2903 calculates the stream program input / output setting 2703.
  • the state holding presence / absence 3103 is set to “none” (step S3807), and the overlap width 3102 is set to “window width ⁇ slide number” in the stream program input / output setting 2703 (step S3808). Then, control goes to a step S3809.
  • the time until the stream data 400 is executed in the vector data VD to be processed is the waiting time, and the execution time of the stream program 400 is the execution time. If the waiting time + execution time is equal to or shorter than the response time 1001, processing can be performed with the requested response time 1001.
  • the waiting time is “size of vector data VD to be processed (hereinafter referred to as vector size) / input rate”, and the execution time is “vector size / processing throughput”.
  • vector size / input rate + vector size / processing throughput needs to be a response time of 1001 or less. Therefore, the processable data size of the vector data VD (hereinafter, “number of processable data”) is the maximum vector size that satisfies “vector size / input rate + vector size / processing throughput ⁇ response time”. As a result, the vector size becomes [response time ⁇ processing throughput ⁇ input rate / (processing throughput + input rate)] ([] is a Gaussian symbol).
  • the second dynamic determination unit 2903 sets the input data size 3101 as [response time ⁇ processing throughput ⁇ input rate / (processing throughput + input rate)] in the stream program input / output setting 2703 (step S3809). ).
  • step S3810 determines whether or not the batch processing base 2621 has ended (step S3810), and if it has not ended (step S3810: No), the process returns to step S3802. On the other hand, when the processing ends (step S3810: Yes), the processing by the second dynamic determination unit 2903 ends.
  • FIG. 39 is a flowchart showing an example of a processing procedure by the input data / vector TO stream conversion unit 3201 shown in FIG.
  • the input data / vector TO stream conversion unit 3201 sets the read index of the file to “index of last input data + 1 ⁇ overlap width” (step S3901).
  • the last input data is an element of the vector data VD read from the file last.
  • the input data / vector TO stream conversion unit 3201 sets the overlap data time OT from the time of the element of the read index of the file to the time of the element obtained by subtracting 1 from the index of the last input data (step S3902).
  • the input data / vector TO stream conversion unit 3201 acquires the element of the vector data VD of the read index from the file (step S3903), adds the time to the acquired element, and generates stream data (step S3904). .
  • the input data / vector TO stream conversion unit 3201 stores the stream data in the stream storage queue Q (step S3905).
  • the input data / vector TO stream conversion unit 3201 determines whether or not the number of acquired elements is smaller than the input data size (step S3906). If smaller (step S3906: YES), the input data / vector TO stream conversion unit 3201 adds one read index (step S3907), returns to step 3903, and executes steps S3903 to S3905.
  • step S3906 If the acquired number of data exceeds the input data size (step S3906: NO), the input data / vector TO stream conversion unit 3201 sets the last index element in the file as the last input data ( In step S3908), the processing by the input data / vector TO stream conversion unit 3201 is terminated.
  • FIG. 40 is an explanatory diagram showing an example of conversion from vector data VD to stream data. 40 will be described with reference to step numbers in FIG. Note that the last input data at this time is the element (10.0) of the index 1002.
  • step S3902 the input data / vector TO stream conversion unit 3201 sets the time 0:59 of the element of the read index 1000 of the file to the time 0:59 of the element of the index 1002 of the last input data as the overlapping time. .
  • step S3903 the input data / vector TO stream conversion unit 3201 acquires the element (10.0) of the read index 1002 from the file, and generates stream data with the element time 0:59 added in step S3904. And stored in the stream storage queue Q.
  • step S3906 the input data / vector TO stream conversion unit 3201 determines whether or not the number of acquired elements (one element of the index 1000 at this stage) is smaller than 240 of the input data size. In this case, since it is small, the input data / vector TO stream conversion unit 3201 changes the reading index from 1000 to 1001. By repeating this loop, data of indexes 1001 to 1239 that are elements of the vector data VD are sequentially acquired, and stream data 3806 to 3809 at times 0:57 to 4:59 can be stored in the stream storage queue Q501. it can.
  • FIG. 41 is a flowchart showing an example of a processing procedure performed by the output data stream TO vector conversion unit 3202 shown in FIG.
  • the output data / stream TO vector conversion unit 3202 sequentially acquires stream data from the stream storage queue Q (S4101).
  • the output data stream TO vector conversion unit 3202 determines whether or not the time of the acquired stream data coincides with the overlap data time OT (step S4102).
  • step S4102 If they match (step S4102: Yes), the process proceeds to step S4104. If they do not match (step S4102: NO), the output data stream TO vector conversion unit 3202 stores the acquired stream data in a file (step S4102). S4103), the process proceeds to step S4104.
  • step S4104 the output data stream TO vector conversion unit 3202 determines whether or not the batch processing platform 2621 has ended (step S4104). If not completed (step S4104: No), the process returns to step S4101. On the other hand, when the processing is completed (step S4104: Yes), the processing by the output data stream TO vector conversion unit 3202 is ended.
  • FIG. 42 is an explanatory diagram showing an example of conversion from stream data to vector data VD. 42 will be described with reference to step numbers in FIG.
  • step S 4101 the output data / stream TO vector conversion unit 3202 sequentially acquires the stream data 4201 to 4204 from the stream storage queue Q.
  • step S4102 the output data stream TO vector conversion unit 3202 determines whether or not the obtained stream data matches the overlap data time OT. In this case, stream data 4201 at time 0:58 matches, and stream data 4202 after time 1:02 does not match. For this reason, in step S4103, the output data / stream TO vector conversion unit 3202 stores the stream data 4202 to 4204 after time 1:02, which are inconsistent, in the file F2. As a result, the stream data having the same time as the previous stream data is not output because it is not vector-converted. As a result, the batch program 600 at the subsequent stage can execute the batch processing with reference to the file.
  • FIG. 43 is a flowchart showing a processing procedure by the calculation state reading unit 3203 shown in FIG.
  • the calculation state reading unit 3203 sequentially refers to the operators configuring the operator tree 3400 (step S4301), extracts the calculation state 3211 of the referenced operator from the calculation state storage area 3210, and writes it in the stream program 400 (step S4302). ).
  • the calculation state reading unit 3203 determines whether all operators in the operator tree 3400 have been referred to (step S4303). If all operators are not referred to (step S4303: NO), the process returns to step S4301. On the other hand, when all operators are referred to (step S4303: YES), the processing by the calculation state reading unit 3203 is terminated.
  • FIG. 44 is a flowchart showing a processing procedure by the calculation state holding unit 3204 shown in FIG.
  • the calculation state holding unit 3204 sequentially refers to the operators constituting the operator tree 3400 (step S4401), reads the calculation state 3211 of the referenced operator from the stream program 400, and holds it in the calculation state storage area 3210 (step S4401). S4402). Then, the calculation state holding unit 3204 determines whether all operators in the operator tree 3400 have been referred to (step S4403). If not all operators are referred to (step S4403: NO), the process returns to step S4401. On the other hand, when all operators have been referred to (step S4403: YES), the processing by the calculation state holding unit 3204 is terminated.
  • the second embodiment it is possible to substantially overlap the stream data by using the execution result of the stream processing at the previous batch processing. Therefore, it is possible to avoid a state in which calculation cannot be performed, and it is possible to maintain the semantics of the stream program.
  • processing throughput can be improved by increasing the input data size of the batch program and executing the batch program. Also, it is possible to execute a stream program that requires input data to overlap on a batch processing platform.
  • the other processing when one processing platform and the program of the other processing are executed on the one processing platform, the other processing can be executed with overlapping time series data.
  • the program of the other process can be executed on the one processing board without changing the code or algorithm of the program of the other process executed on the one processing board. Therefore, an existing program can be used on a processing platform with different processing, and the program can be executed easily and efficiently.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

 プロセッサは、ストリーム処理制御プログラムにより、時系列なストリームデータ列のうちあるストリームデータからの時系列なストリームデータ列201について、当該ストリームデータ列201の各ストリームデータを要素としてまとめたベクトルデータ202を生成し、ストリーム処理制御プログラムにより、時系列なストリームデータ列のうちストリームデータ列201の中途のストリームデータ(時刻1:02)を先頭とし、かつ、ストリームデータ列201と同数のデータ数である時系列なストリームデータ列207について、各ストリームデータを要素としてまとめたベクトルデータ208を生成し、ストリーム処理制御プログラムにより、ベクトルデータ202およびベクトルデータ207をバッチプログラムBPに入力してバッチ処理を実行させる。

Description

データ処理装置およびデータ処理方法
 本発明は、データを処理するデータ処理装置およびデータ処理方法に関する。
 時系列データの監視処理では、センサやログなどの時系列データに対して事前にプログラムでルールが定義され、そのルールに従って時系列データのフィルタリングや集計、異常検知、将来予測などの処理が実行される。時系列データの監視処理の例としては、工場のプラントやサーバの監視が挙げられる。工場のプラント監視処理は、機械に取り付けられた温度や電圧などのセンサの値を取得し、そのセンサの値の数時間~日毎の時系列の変化から特異点を抽出し異常と判定する処理である。一方、サーバの監視処理は、サーバのログからCPU(Central Processing Unit)やハードディスクの使用量、あるいはネットワークのパケット量を取得し、数秒~数時間の時系列の変化を監視することで異常検出を行う処理である。時系列データの監視処理のプログラムの実行方法として、バッチ処理及びストリーム処理が挙げられる。
 バッチ処理を行うプログラム(以下、「バッチプログラム」)は、ファイルやデータベースなどに蓄積されている時系列データを纏めてベクトルデータとして入力し、その処理結果を纏めてベクトルデータとして出力する。バッチプログラムの実行を支援するミドルウェアとしては、下記特許文献1に開示されているバッチ処理基盤が挙げられる。バッチ処理基盤は、バッチプログラムのスケジューリングや、起動、停止などを実行するミドルウェアである。バッチ処理は、工場プラントの監視などレスポンス時間の要件が低く、逆に高い処理スループットや低コストが求められる案件に活用される。
 一方、ストリーム処理を行うプログラム(以下、「ストリームプログラム」)は、時々刻々と配信するストリームデータを、逐次処理し、その処理結果もストリームデータとして逐次出力する。ストリームプログラムの実行を支援するミドルウェアとしては、非特許文献1に開示されているストリーム処理基盤が挙げられる。ストリーム処理基盤は、ストリームプログラムのスケジューリングや、起動、停止などを実行するミドルウェアである。ストリーム処理としては、サーバの監視などレスポンス時間の要件が高く、逆に処理スループットやコストの用件が低い案件に活用される。
 時系列データの監視処理の案件の拡大に伴い、案件毎にプログラムを開発することは難しくなっており、既存のストリームプログラムやバッチプログラムを様々な案件で再利用する必要性が出てきている。しかし、工場プラントやサーバの監視などのように、案件毎に求められるレスポンス時間や処理スループットなどの要件が異なる。したがって、レスポンス時間の短縮のために既存のバッチプログラムをストリーム処理基盤で実行することや、処理スループット向上のため既存のストリームプログラムをバッチ処理基盤で実行することが求められる。
 特許文献1は、ストリームプログラムをバッチ基盤で動作することを支援する。そのため、特許文献1は、バッチ処理基盤上で蓄積データに対して、入力データの時間範囲を指定し、その範囲内のデータに対し、ストリームデータに変換し、ストリームプログラムで実行する。一方、非特許文献1は、バッチプログラムをストリーム基盤で動作することを支援する。そのため、非特許文献1は、ストリーム処理基盤上で複数のストリームデータをSigSegsと呼ぶデータブロックに纏め、そのデータブロックを入出力とするバッチプログラムを実行する。
特開2011-221799号公報
L. Girod, Y. Mei, S. Rost, A. Thiagarajan, H. Balakrishnan, S. Madden, "XStream: a Signal-Oriented Data Stream Management System", International Conference on Data Engineering (ICDE), Apr 2008.
 しかしながら、非特許文献1のストリーム処理基盤でバッチプログラムを実行する場合、複数のデータブロックに同一のストリームデータを持たせること、すなわちバッチプログラムの入力データに重なりを持たせることは、考慮されていない。したがって、非特許文献1のストリーム処理基盤上で、時系列データを一定件数ずつウィンドウに保持し、そのウィンドウをスライドして処理を行うバッチプログラムを実行することができないという問題がある。
 また、特許文献1のバッチ処理基盤は、ストリームデータに重なりを持たせることは、考慮されていない。したがって、特許文献1のバッチ処理基盤上で、ウィンドウをスライドさせて実行するストリームプログラムを実行することができないという問題がある。
 このように、バッチ処理およびストリーム処理について、処理基盤と当該処理基盤上で実行されるプログラムとで処理内容が異なる場合、時系列データに重なりを持たせることができないという問題がある。
 本発明は、上述した問題点を解決するため、バッチ処理およびストリーム処理について、一方の処理基盤上で実行する他方の処理のプログラムのコードやアルゴリズムを変更することなく、一方の処理基盤上で他方の処理のプログラムを時系列データに重なりを持たせて実行可能にすることを目的とする。
 本願において開示される発明の一側面となるデータ処理装置およびデータ処理方法は、プロセッサと、ストリーム処理を実行するストリームプログラム、バッチ処理を実行するバッチプログラム、および前記ストリームプログラムを制御するストリーム処理制御プログラムを記憶するメモリと、を有するデータ処理装置および当該データ処理装置が実行するデータ処理方法であって、前記プロセッサは、前記ストリーム処理制御プログラムにより、時系列なストリームデータ列のうちあるストリームデータからの時系列な第1のストリームデータ群について、当該第1のストリームデータ群の各ストリームデータを要素としてまとめた第1のベクトルデータを生成する第1の生成手順と、前記ストリーム処理制御プログラムにより、前記時系列なストリームデータ列のうち前記第1のストリームデータ群の中途のストリームデータを先頭とし、かつ、前記第1のストリームデータと同数のデータ数である時系列な第2のストリームデータ群について、当該第2のストリームデータ群の各ストリームデータを要素としてまとめた第2のベクトルデータを生成する第2の生成手順と、前記ストリーム処理制御プログラムにより、前記第1の生成手順および前記第2の生成手順によって生成された第1のベクトルデータおよび第2のベクトルデータを前記バッチプログラムに入力してバッチ処理を実行させる制御手順と、を実行する。
 また、本願において開示される発明の他の側面となるデータ処理装置およびデータ処理方法は、プロセッサと、バッチ処理を実行するバッチプログラム、ストリーム処理を実行するストリームプログラム、および前記バッチプログラムを制御するバッチ処理制御プログラムを記憶するメモリと、を有するデータ処理装置および当該データ処理装置が実行するデータ処理方法であって、前記プロセッサは、前記バッチ処理制御プログラムにより、時刻ごとの値である要素列を含むベクトルデータから、前記要素列内の第1の要素群の各要素を分割して時系列にした第1のストリームデータ群を生成する第1の生成手順と、前記バッチ処理制御プログラムにより、前記要素列のうち前記第1の要素群の中途の要素を先頭とし、かつ、前記第1の要素群と同数の要素数である時系列な第2の要素群について、当該第2の要素群の各要素を分割して時系列にした第2のストリームデータ群を生成する第1の生成手順と、前記バッチ処理制御プログラムにより、前記第1の生成手順および前記第2の生成手順によって生成された第1のストリームデータ群および第2のストリームデータ群を前記ストリームプログラムに入力してストリーム処理を実行させる制御手順と、前記バッチ処理制御プログラムにより、前記第1のストリームデータ群が前記ストリームプログラムに入力されて前記制御手順によってストリーム処理が実行された実行結果である第3のストリームデータ群のストリームデータを取得し、前記第2のストリームデータ群が前記ストリームプログラムに入力されて前記制御手順によってストリーム処理が実行された実行結果である第4のストリームデータ群を取得し、当該第4のストリームデータ群から前記第3のストリームデータ群のストリームデータと重複するストリームデータを除外した除外後のストリームデータ群を第2のベクトルデータに変換する変換手順と、を実行する。
 本発明の代表的な実施の形態によれば、バッチ処理およびストリーム処理について、一方の処理基盤上で実行する他方の処理のプログラムのコードやアルゴリズムを変更することなく、一方の処理基盤上で他方の処理のプログラムを時系列データに重なりを持たせて実行することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
ストリーム処理基盤上でバッチプログラムを実行する例1を示す説明図である。 ストリーム処理基盤上でバッチプログラムを実行する例2を示す説明図である。 ストリーム処理システムの一例を示すシステム構成図である。 図3に示したストリームプログラム群の中のあるストリームプログラムの一例を示す説明図である。 ストリームデータの一例を示す説明図である。 図3に示したバッチプログラム群の中のあるバッチプログラムの一例を示す説明図である。 ベクトルデータの一例を示す説明図である。 図3に示したバッチプログラム入出力静的決定部の入出力関係を示す説明図である。 図8に示したプログラム構成の一例を示す説明図である。 図8に示したプラットフォーム要件の一例を示す説明図である。 図8に示したバッチ実行仕様の一例を示す説明図である。 図3に示したバッチプログラム入出力動的決定部の入出力関係を示す説明図である。 バッチ実行モニタリング値の一例を示す説明図である。 図8および図12に示したバッチプログラム入出力設定の一例を示す説明図である。 図3に示したバッチプログラム実行部の入出力の関係を示す説明図である。 重なりデータ格納領域の一例を示す説明図である。 バッチプログラム入出力静的決定部による処理手順例を示すフローチャートである。 バッチ実行モニタリング部による処理手順例を示すフローチャートである。 第1の動的決定部による処理手順例を示すフローチャートである。 入力データ・ストリームTOベクトル変換部による処理手順例を示すフローチャートである。 ストリームデータからベクトルデータへの変換例を示す説明図である。 出力データ・ベクトルTOストリーム変換部による処理手順例を示すフローチャートである。 ベクトルデータVDからストリームデータへの変換例を示す説明図である。 バッチ処理基盤上でストリームプログラムを実行する例1を示す説明図である。 バッチ処理基盤上でストリームプログラムを実行する例2を示す説明図である。 バッチ処理システムの一例を示すシステム構成図である。 図26に示したストリームプログラム入出力設定静的決定部の入出力関係を示す説明図である。 ストリーム実行仕様の一例を示す説明図である。 図26に示したストリームプログラム入出力設定動的決定部の入出力関係を示す説明図である。 ストリーム実行モニタリング値の一例を示す説明図である。 図27および図29に示したストリームプログラム入出力設定の一例を示す説明図である。 図26に示したストリームプログラム実行部の入出力の関係を示す説明図である。 図32に示した重なりデータ時刻の一例を示す説明図である。 オペレータツリーの一例を示す説明図である。 図32に示した計算状態格納領域の一例を示す説明図である。 第2の静的決定部による処理手順例を示すフローチャートである。 ストリーム実行モニタリング部による処理手順例を示すフローチャートである。 第2の動的決定部による処理手順例を示すフローチャートである。 図32に示した入力データ・ベクトルTOストリーム変換部による処理手順例を示すフローチャートである。 ベクトルデータからストリームデータへの変換例を示す説明図である。 図32に示した出力データ・ストリームTOベクトル変換部による処理手順例を示すフローチャートである。 ストリームデータからベクトルデータへの変換例を示す説明図である。 図32に示した計算状態読出し部による処理手順を示すフローチャートである。 図32に示した計算状態保持部による処理手順を示すフローチャートである。
 本発明は、バッチ処理およびストリーム処理について、一方の処理基盤と当該一方の処理基盤上で他方の処理のプログラムを実行する場合、時系列データに重なりを持たせて他方の処理を実行する。これにより、一方の処理基盤上で実行する他方の処理のプログラムのコードやアルゴリズムを変更することなく、一方の処理基盤上で他方の処理のプログラムを実行可能にする。
 したがって、既存のプログラムを処理が異なる処理基盤上で流用することができ、容易かつ効率的にプログラムを実行することができる。以下、ストリーム処理基盤上でバッチプログラムを実行する例(実施例1)と、バッチ処理基盤上でストリームプログラムを実行する例(実施例2)と、に分けて説明する。
 なお、本明細書において「プログラム」や「処理基盤」を主語として説明を行う場合があるが、プログラムや「処理基盤」は、プロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御デバイス)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は計算機が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
 (実施例1)
 図1および図2は、ストリーム処理基盤上でバッチプログラムを実行する例を示す説明図である。図1は、データの重なりを持たせない場合の実行例である。バッチプログラムは、ウィンドウ幅となるデータ数が4個、スライドさせるデータ数であるスライド数が2個となるプログラム構成とする。なお、時刻の単位は、一例として「秒」とする。ストリーム処理基盤は、ウィンドウ幅4個のストリームデータを2個ずつスライドさせながら、所定の計算を実行する。
 時刻1:03において、ストリーム処理基盤は、ストリームTOベクトル変換100により、時刻1:00~1:03のストリームデータ列101を、データブロックであるベクトルデータ102に変換する。これにより、ストリーム処理基盤は、ベクトルデータ102をバッチプログラムBPに与え、バッチプログラムBPはベクトルデータ102を用いて計算を実行する。なお、スライド数が2個であるため、つぎに対象となるストリームデータ列は、時刻1:05のストリームデータ列103である。
 時刻1:05のストリームデータ列103は、時刻1:02および1:03のストリームデータを含むため、ストリームデータ列101と重なる。ストリーム処理基盤は、データの重なりを持たせないので、ストリームTOベクトル変換100により、ストリームデータ列103をベクトルデータ104に変換することができない。したがって、ストリーム処理基盤は、ベクトルデータ104をバッチプログラムBPに与えることができず、バッチプログラムBPはベクトルデータ104を用いた計算を実行することができない。なお、スライド数が2個であるため、つぎに対象となるストリームデータ列は、時刻1:07のストリームデータ列105である。
 時刻1:07のストリームデータ列105は、ストリームデータ列101内のストリームデータと重ならない。ストリーム処理基盤は、変換後のベクトルデータにおいてデータの重なりを持たせないので、ストリームデータ列105が与えられると、ストリームTOベクトル変換100により、ベクトルデータ106に変換する。これにより、ストリーム処理基盤は、ベクトルデータ106をバッチプログラムBPに与え、バッチプログラムBPはベクトルデータ106を用いて計算を実行する。
 図2は、データの重なりを持たせる場合の実行例である。バッチプログラムのプログラム構成は、図1と同様である。また、図2では、プラットフォーム要件であるレスポンスを16秒とする。レスポンスとは、ストリームデータが入力されてから処理が完了するまでの時間である。
 ストリーム処理基盤は、プログラム構成とプラットフォーム要件とに基づいて、入力データサイズと重なり幅を決定する。入力データサイズとは、変換されるベクトルデータに含まれるストリームデータの個数である。ここでは、8個とする。また、重なり幅を図1と同様2個とする。
 まず、時刻1:03において、ストリーム処理基盤は、ストリームTOベクトル変換100により、時刻0:56~1:03のストリームデータ列201を、データブロックであるベクトルデータ202に変換する。これにより、ストリーム処理基盤は、ベクトルデータ202をバッチプログラムBPに与え、バッチプログラムBPはベクトルデータ202を用いて計算を実行する。なお、スライド数が2個であるため、つぎに対象となるストリームデータ列は、時刻1:05のストリームデータ列203である。
 時刻1:05のストリームデータ列203は、時刻0:58~1:03のストリームデータを含むため、ストリームデータ列201との重なり幅は6個となる。設定された重なり幅である2個を超えたため、時刻1:05では、ストリーム処理基盤は、ストリームTOベクトル変換100により、ストリームデータ列203をベクトルデータに変換しない。なお、スライド数が2個であるため、つぎに対象となるストリームデータ列は、時刻1:07のストリームデータ列205である。
 時刻1:07においても、時刻1:05と同様、時刻1:07のストリームデータ列205は、時刻1:00~1:03のストリームデータを含むため、ストリームデータ列201との重なり幅は4個となる。設定された重なり幅である2個を超えたため、時刻1:07でも、ストリーム処理基盤は、ストリームTOベクトル変換100により、ストリームデータ列205をベクトルデータに変換しない。なお、スライド数が2個であるため、つぎに対象となるストリームデータ列は、時刻1:09のストリームデータ列207である。
 時刻1:09のストリームデータ列207は、時刻1:02~1:03のストリームデータを含むため、ストリームデータ列201との重なり幅は2個となる。設定された重なり幅である2個と一致するため、時刻1:09では、ストリーム処理基盤は、ストリームTOベクトル変換100により、ストリームデータ列207をベクトルデータ208に変換する。これにより、ストリーム処理基盤は、ベクトルデータ207をバッチプログラムBPに与え、バッチプログラムBPはベクトルデータ208を用いて計算を実行する。
 このように、図2の例では、ベクトルデータ202,208間でデータの重なりを持たせることができるため、図1のベクトルデータ104のような計算実行不可という状態を回避することができ、バッチプログラムのセマンティックスを保持することができる。また、設定された重なり幅分のデータだけが重複するように、ベクトルデータのデータサイズが決定される。図2の例では、時刻1:05、1:07において、ベクトルデータは生成されない。このベクトルデータを生成しなくても、ベクトルデータ202、208で網羅できるからである。このように、重なり幅を超えるベクトルデータの生成を抑制することができるため、処理負荷の軽減を図ることができる。
 <システム構成例>
 図3は、ストリーム処理システム300の一例を示すシステム構成図である。ストリーム処理システム300は、クライアント301と、データソース302と、ストリーム処理サーバ303と、が、ネットワークを介して通信可能に接続された構成である。ネットワーク304は、イーサネット(登録商標)、光ファイバなどで接続されるローカルエリアネットワーク(LAN)、またはLANよりも低速なインターネットを含んだワイドエリアネットワーク(WAN)でも差し支えない。また、クライアント301、データソース302、およびストリーム処理サーバ303は、パーソナルコンピュータ(PC)、ブレード型の計算機システムなどの任意のコンピュータシステムでよい。
 クライアント301は、ストリーム処理サーバ303に対し登録処理を実行する計算機である。登録処理の詳細については後述する。
 データソース302は、ストリーム処理サーバ303に、処理対象となる一連の時系列データを供給する供給源であり、たとえば、上述した工場のプラントやサーバが挙げられる。工場のプラントの場合、たとえば、機械に取り付けられた温度や電圧などのセンサの値が時系列データとなる。また、サーバの場合、たとえば、サーバのログから得られるCPUやハードディスクの使用量、またはネットワーク304のパケット量が時系列データとなる。
 ストリーム処理サーバ303は、CPU311、メモリ312、I/Oインターフェース313およびストレージ314が、バス315で結合された計算機である。ストリーム処理サーバ303は、I/Oインターフェース313を介してネットワーク304にアクセスする。また、ストリーム処理サーバ303は、処理結果、処理の中間結果、システム動作に必要な設定データを、不揮発性のストレージ314に格納することができる。ストレージ314は、I/Oインターフェース313を介して直接接続されるが、ストリーム処理サーバ303外において、I/Oインターフェース313によりネットワーク304を介して接続されることとしてもよい。
 メモリ312には、ストリーム処理基盤321がマッピングされる。ストリーム処理基盤321は、1以上のストリームプログラムであるストリームプログラム群331の起動、停止モジュールやスケジューリングモジュールなど一般的なストリーム処理のモジュールがマッピングされたミドルウェアである。このほかに、ストリーム処理基盤321には、バッチプログラム入出力静的決定部332、バッチプログラム入出力動的決定部333、1以上のバッチプログラムであるバッチプログラム群334を含むバッチプログラム実行部335がマッピングされる。
 <ストリームプログラム>
 図4は、図3に示したストリームプログラム群331の中のあるストリームプログラムの一例を示す説明図である。ストリームプログラム400は、ストリームデータを入出力とするプログラムである。図4では、CQL(Continuous Query Language)言語で定義されたストリームプログラム400を示す。ストリームプログラム400は入力ストリーム定義、出力ストリーム定義、およびクエリ定義群を含む。
 入力ストリーム定義として、「時刻」および「計測値」をカラムとするセンサストリーム401が定義される。また、出力ストリーム定義として、「時刻」および「計測値」をカラムとする異常センサストリーム402が定義される。
 クエリ定義群は、クエリ定義1とクエリ定義2とを含む。クエリ定義1として、ノイズ除去クエリ403が定義され、クエリ定義2として、異常センサクエリ404が定義される。ノイズ除去クエリ403は、センサストリーム401からストリームデータを入力し、直近4個の計測値の平均値を算出するクエリである。
 異常センサクエリ404は、ノイズ除去クエリ403で算出された平均値がαより大きい場合に、センサストリーム401のストリームデータを、異常センサストリーム402に出力するクエリである。なお、図4は、ストリームプログラム400の一例であり、CQL言語の他に、C言語やJava言語やその他の任意のプログラミング言語でストリームプログラム400を定義してもよい。
 図5は、ストリームデータの一例を示す説明図である。ストリームデータ500~513は時刻を持ち、ストリーム格納キューQに時刻順に格納される。図5では、凡例に示すようにカラムとして時刻、計測値を持つストリームデータ500~513を示す。ストリーム格納キューQには、先頭に時刻「1:00」、計測値「10.0」のストリームデータ50が格納され、続いて時刻「1:01」、計測値「15.0」のストリームデータ501、時刻「1:02」、計測値「14.0」のストリームデータ502が格納される。そしてストリーム格納キューQの最後尾に時刻「1:13」、計測値「12.0」のストリームデータ513が格納される。
 <バッチプログラム>
 図6は、図3に示したバッチプログラム群334の中のあるバッチプログラムの一例を示す説明図である。バッチプログラム600は、ベクトルデータを入出力とするプログラムである。図5では、バッチプログラム600は、ベクトルデータの定義とバッチ処理関数とを含む。
 ベクトルデータ定義として、「時刻」および「計測値」をカラムとするセンサ配列601が定義される。また、バッチ処理関数定義として、前処理関数602が定義される。前処理関数602は、センサ配列601を入力とし、関数SMOOTHINGにより直近3個の計測値に対して重み付き平均を求め、計測値の平滑化を行う関数である。
 そして、前処理関数602は、平滑化した値に対して、関数DERIVATIONにより現在値と一つ前の値から微分値を算出する。なお、関数DERIVATIONは、ベクトルデータの要素に対してサンプリングを行い、要素数を50%削減する関数である。例えば、時刻1:01、1:02、1:03、1:04、1:05、1:06、1:07、1:08の8個の要素を関数DERIVATIONに入力した場合、関数DERIVATIONは、8個の要素のうち50%を削減する。その結果、時刻1:01、1:03、1:05、1:07の4個の要素が出力される。前処理関数602は、関数DERIVATIONで算出した微分値をセンサ配列601に出力し、処理を終了する。
 なお、図6は、バッチプログラム600の一例であり、R言語や、C言語、Java言語やその他の任意のプログラミング言語でバッチプログラム600を定義してもよい。
 図7は、ベクトルデータの一例を示す説明図である。ベクトルデータVDは複数の要素を持つ集合体である。図7に示すベクトルデータVDは配列として実現され、配列の各要素は時刻と計測値の値を持つ。配列の要素として、インデックス0に時刻「0:58」、計測値「11.0」の要素700を持ち、インデックス1に時刻「0:59」、計測値「14.0」の要素701、インデックス2に時刻「1:00」、計測値「10.0」の要素702、最後にインデックス7に時刻「1:05」、計測値「12.0」の要素707を持つ。なおベクトルデータVDの実現方法は、配列の他にリストやその他のデータ構造でもよい。
 <バッチプログラム入出力静的決定部332>
 図8は、図3に示したバッチプログラム入出力静的決定部332の入出力関係を示す説明図である。バッチプログラム入出力静的決定部332は、ストリーム処理基盤321上でCPU311により実行されるプログラムであり、バッチプログラム600の静的な入出力設定を決定する。バッチプログラム入出力静的決定部332は、第1の静的決定部804を有する。
 第1の静的決定部804は、クライアント301から、プログラム構成801、プラットフォーム要件802、およびバッチ実行仕様803といった登録情報を受け付ける。そして、第1の静的決定部804は、バッチプログラム600の静的な入力データサイズおよび重なり幅を決定する。決定された入力データサイズおよび重なり幅は、バッチプログラム入出力設定として出力される。入力データサイズおよび重なり幅については、後述する。
 <プログラム構成801>
 図9は、図8に示したプログラム構成801の一例を示す説明図である。プログラム構成801とは、プログラムの動作を構成するパラメータが設定される情報である。パラメータとしては、たとえば、ウィンドウ幅901とスライド数902があり、クライアント301を操作することでユーザにより指定される。
 ウィンドウ幅901は、ストリームプログラム400やバッチプログラム600の処理に必要とする時系列データを含むウィンドウの幅を示す。ウィンドウの幅とは、すなわち、ウィンドウ内に含まれる時系列データの個数である。スライド数902は、処理毎にウィンドウをスライドさせるサイズである。たとえば、図4に示したストリームプログラム400では、ノイズ除去クエリ403が直近4個の計測値の平均値を1つずつずらして算出し続けるため、ウィンドウ幅901は4個、スライド数902は1個となる。
 また、図5に示したバッチプログラム600では、関数SMOOTHINGにより直近3個の計測値の重み付き平均を求め、また関数DERIVATIONにより現在値と一つ前の値から微分値を算出する。したがって、関数SMOOTHINGと関数DERIVATIONを含む前処理関数602では、合計してウィンドウ幅901は4個となる。また、関数DERIVATIONでは、ベクトルデータVDの要素をサンプリングし50%削減するため、スライド数902は2個となる。
 <プラットフォーム要件802>
 図10は、図8に示したプラットフォーム要件802の一例を示す説明図である。プラットフォーム要件802は、ストリーム処理基盤321に課される条件である。パラメータとしては、たとえば、レスポンス時間1001があり、クライアント301を操作することでユーザにより指定される。レスポンス時間1001は、データがストリーム処理サーバ303に入力してから、そのデータの処理が完了するまでの、ユーザが許容できる時間である。図10では、レスポンス時間1001は「16秒」と指定されているため、データの入力からそのデータの処理完了までの時間が16秒まで許容される。
 <バッチ実行仕様803>
 図11は、図8に示したバッチ実行仕様803の一例を示す説明図である。バッチ実行仕様803とは、バッチ処理の実行方法を規定する情報である。パラメータとして、たとえば、入力レート1101および処理スループット1102があり、クライアント301を操作することでユーザにより指定される。入力レート1101は、バッチプログラム600が入力とするストリームデータが到着する間隔を示す。図11では入力レート1101は1個/秒であるため、毎秒1個、ストリームデータが到着することを示す。また、処理スループット1102は、バッチプログラム600が単位時間当たりに処理する、ベクトルデータVDの要素数を示す。図11では、処理スループット1102は1個/秒であるため、バッチプログラム600が毎秒1個の要素を処理できることを示す。
 <バッチプログラム入出力設定動的決定部>
 図12は、図3に示したバッチプログラム入出力動的決定部333の入出力関係を示す説明図である。バッチプログラム入出力動的決定部333は、ストリーム処理基盤321上でCPU311により実行されるプログラムであり、バッチプログラム600の動的な入出力設定を決定する。バッチプログラム入出力動的決定部333は、バッチ実行モニタリング部1201と、第1の動的決定部1203とを有する。
 バッチ実行モニタリング部1201は、実行中のバッチプログラム600を監視し、バッチ実行モニタリング値1202を生成する。バッチ実行モニタリング値1202とは、実行中のバッチプログラム600における観測値である。バッチ実行モニタリング値1202については、後述する。
 第1の動的決定部1203は、クライアント301から、図9に示したプログラム構成801、図10に示したプラットフォーム要件802およびバッチ実行モニタリング値1202を受け付ける。そして、第1の動的決定部1203は、バッチプログラム600の動的な入力データサイズおよび重なり幅を決定する。決定された入力データサイズおよび重なり幅は、バッチプログラム入出力設定805として出力される。入力データサイズおよび重なり幅については、後述する。
 <バッチ実行モニタリング値1202>
 図13は、バッチ実行モニタリング値1202の一例を示す説明図である。バッチ実行モニタリング値1202は、パラメータとして、処理対象データ数1301および処理スループット1302を有し、バッチ実行モニタリング部1201により出力される。処理対象データ数1301は、ストリーム格納キューQに格納される、バッチプログラム600が入力とするストリームデータの数を示す。図13では処理対象データ数1301が「6」であるため、ストリーム格納キューQに6個のストリームデータがあることを示す。また処理スループット1302はバッチプログラム600が単位時間当たりに処理する、ベクトルデータVDの値のサイズを示す。
 <バッチプログラム入出力設定805>
 図14は、図8および図12に示したバッチプログラム入出力設定805の一例を示す説明図である。バッチプログラム入出力設定805とは、バッチプログラム600に入出力されるデータを規定する情報である。パラメータとして、たとえば、入力データサイズ1401および重なり幅1402があり、クライアント301を操作することでユーザにより指定される。入力データサイズ1401は、バッチプログラム600が入力するベクトルデータVDの要素数を示す。
 たとえば、図7に示したベクトルデータVDの場合は、インデックス0から7の要素700~707が存在するため、ベクトルデータVDの要素数は8個となる。また、重なり幅1402は、現在のバッチプログラム600が入力するベクトルデータVDと、一つ前のバッチプログラム600が入力するベクトルデータVDで重複する要素数を示す。たとえば、図7に示したベクトルデータVDをバッチプログラム600が入力する場合に、一つ前のバッチプログラム600が入力するベクトルデータVDにも、インデックス0の要素701およびインデックス1の要素702が含まれている場合には、重なり幅1402は2個となる。
 <バッチプログラム実行部335>
 図15は、図3に示したバッチプログラム実行部335の入出力の関係を示す説明図である。バッチプログラム実行部335は、入力データ・ストリームTOベクトル変換部1501および出力データ・ベクトルTOストリーム変換部1502を有する。入力データ・ストリームTOベクトル変換部1501は、バッチプログラム入出力設定805を入力する。バッチプログラム入出力設定805は、第1の静的決定部804や、第1の動的決定部1203が生成しても、ユーザにより手動で作成してもよい。
 そして、入力データ・ストリームTOベクトル変換部1501は、ストリーム格納キューQおよび重なりデータ格納領域1500から複数のストリームデータ列SD1、SD2を入力し、バッチプログラム入出力設定805に従ってストリームデータ列SD1、SD2からベクトルデータVD1に変換する。重なりデータ格納領域1500とは、最新の重なり幅1402となるストリームデータ列SD2が格納される領域である。詳細については後述する。ストリーム格納キューQのストリームデータ列SD1は、ストリームプログラム400が生成しても、その他のプログラムが生成してもよい。
 バッチプログラム600は、入力データ・ストリームTOベクトル変換部1501が出力したベクトルデータVD1を入力し、その処理結果としてベクトルデータVD2を出力する。そして、出力データ・ベクトルTOストリーム変換部1502が、バッチプログラム600が出力したベクトルデータVD2を入力し、ストリームデータ列SD3に変換する。出力データ・ベクトルTOストリーム変換部1502が出力したストリームデータ列SD3は、ストリーム格納キューQに格納される。続いて、ストリーム格納キューQのストリームデータ列SD3は、ストリームプログラム400が入力してもよく、その他のプログラムが入力してもよい。
 図16は、重なりデータ格納領域1500の一例を示す説明図である。重なりデータ格納領域1500には、次のバッチプログラムが入力するベクトルデータと、前のバッチプログラム600が入力するベクトルデータとの間で、重複して用いるストリームデータが格納される。図16では重なりデータ格納領域1500に、時刻「0:58」、計測値「11:0」のストリームデータ1601、時刻「0:59」、計測値「14.0」のストリームデータ1601が格納される。入力データ・ストリームTOベクトル変換部1501が、重なりデータ格納領域1500で保持しているストリームデータを入力し、ベクトルデータを生成する。
 <バッチプログラム入出力静的決定部332による処理手順>
 図17は、バッチプログラム入出力静的決定部332による処理手順例を示すフローチャートである。第1の静的決定部804は、まず、ユーザが指定したプログラム構成801、プラットフォーム要件802、およびバッチ実行仕様803を読込む(S1701)。つぎに、第1の静的決定部804は、重なり幅1402を「ウィンドウ幅-スライド数」としバッチプログラム入出力設定805にセットする(S1702)。
 ここで、バッチプログラム600の入力となるストリームデータを格納するストリーム格納キューQの先頭データがバッチプログラム600で実行される迄の時間を待ち時間とし、バッチプログラム600が実行されている時間を実行時間とする。第1の静的決定部804は、待ち時間+実行時間がレスポンス時間1001以下であれば、要求したレスポンス時間1001を満たすことができる。
 待ち時間は「ストリーム格納キューQのデータ数(以下、キューデータ数)/入力レート」であり、実行時間は「キューデータ数/処理スループット」である。したがって、「キューデータ数/入力レート+キューデータ数/処理スループット」がレスポンス時間以下となる必要がある。ストリーム格納キューQにおける処理可能なデータ数(以下、処理可能データ数)は、「キューデータ数/入力レート+キューデータ数/処理スループット≦レスポンス時間」を満たす、最大のキューデータ数となる。
 このため、処理可能データ数は、[レスポンス時間×処理スループット×入力レート/(処理スループット+入力レート)]となる(ステップS1703)。なお、[]はガウス記号である。
 処理可能データ数がウィンドウ幅901以上の場合には(S1704:Yes)、第1の静的決定部804は、入力データサイズ1401を処理可能データ数として、バッチプログラム入出力設定805にセットする(ステップS1705)。これにより、レスポンス時間1001の要件を満たしつつ入力データサイズ1401を最大化することができる。一方、処理可能データ数がウィンドウ幅901より小さい場合には(ステップS1704:No)、第1の静的決定部804は、ウィンドウ幅901より要素数が少ないベクトルデータVDをバッチプログラム600は処理可能でないため、入力データサイズ1401をウィンドウ幅901とし、算出した入力データサイズ1401、重なり幅1402をバッチプログラム入出力設定805にセットする(S1706)。
 たとえば、図9に示すようにウィンドウ幅901が4個、スライド数902が2個、また図10に示すようにレスポンス時間1001が16秒、また図11に示すように入力レート1101が1個/秒、処理スループット1102が1個/秒の場合には、処理可能データ数が16[秒]×1[個/秒]×1[個/秒]/(1[個/秒]+1[個/秒])より8個となる。したがって、ウィンドウ幅901が4個であるため、ウィンドウ幅901よりも処理可能データ数が大きくなり、入力データサイズ1401は処理可能データ数である8個となる。また、重なり幅1402は「ウィンドウ幅901-スライド数902」より、4[個]-2[個]=2個となる。このようにして、図14に示したバッチプログラム入出力設定805が生成される。
 <バッチ実行モニタリング部1201による処理手順>
 図18は、バッチ実行モニタリング部1201による処理手順例を示すフローチャートである。バッチ実行モニタリング部1201は、バッチプログラム600の入力となるストリームデータを格納するストリーム格納キューQの現在のデータ数を取得し、バッチ実行モニタリング値1202を処理対象データ数1301にセットする(S1801)。つぎに、バッチ実行モニタリング部1201は、ストリーム処理基盤321のログから処理スループット1102を取り出し、バッチ実行モニタリング値1202の処理スループット1102にセットする(S1802)。そして、バッチ実行モニタリング部1201は、ストリーム処理基盤321が終了していなければ(ステップS1803:No)、ステップS1801に戻り、終了していれば(ステップS1803:Yes)、処理を終了する。
 <第1の動的決定部1203による処理手順>
 図19は、第1の動的決定部1203による処理手順例を示すフローチャートである。第1の動的決定部1203は、まずプログラム構成801およびプラットフォーム要件802を読み込む(S1901)。つぎに、第1の動的決定部1203は、重なり幅1402を「ウィンドウ幅901-スライド数」とし、バッチプログラム入出力設定805にセットする(S1902)。
 そして、第1の動的決定部1203は、処理対象のストリームデータがストリーム格納キューQに入力されるのを待ち受ける(ステップS1903:No)。処理対象のストリームデータがストリーム格納キューQに存在する場合(ステップS1903:Yes)、第1の動的決定部1203は、バッチ実行モニタリング値1202を読込む(S1904)。そして、第1の動的決定部1203は、レスポンス時間1001、処理スループット1102、現在時刻、ストリーム格納キューQのデータの最古時刻から、レスポンス時間1001の要件を満たす最大のストリームデータ数(以下、「処理可能データ数」)を「処理スループット×(レスポンス時間-(現在時刻-処理対象データの最古時刻))」とする(S1905)。
 このあと、処理可能データ数がウィンドウ幅901以下の場合(ステップS1906:Yes)、第1の動的決定部1203は、バッチプログラム600はウィンドウ幅901より要素数が少ないベクトルデータVDを処理可能でないため、入力データサイズ1401をウィンドウ幅901とし、バッチプログラム入出力設定805にセットする(S1907)。そして、ステップS1911に移行する。
 一方、処理可能データ数がウィンドウ幅901より大きい場合(ステップS1906:No)、第1の動的決定部1203は、処理可能データ数が処理対象データ数1301+重なり幅1402以下であるか否かを判断する(ステップS1908)。処理可能データ数が処理対象データ数+重なり幅以下である場合(ステップS1908:Yes)、第1の動的決定部1203は、入力データサイズ1401を処理可能データ数とし、バッチプログラム入出力設定805にセットする(S1909)。そして、ステップS1911に移行する。
 一方、処理可能データ数が処理対象データ数+重なり幅以下でない場合(ステップS1908:No)、第1の動的決定部1203は、入力データサイズ1401を、「処理可能データ数+重なり幅1402」とし、バッチプログラム入出力設定805にセットする(S1910)。そして、ステップS1911に移行する。
 ステップS1911では、第1の動的決定部1203は、ストリーム処理基盤321が終了したか否かを判断し(ステップS1911)、終了していない場合(ステップS1911:No)、ステップS1903に戻る。一方、終了した場合(ステップS1911:Yes)、第1の動的決定部1203による処理を終了する。
 <入力データ・ストリームTOベクトル変換部1501による処理手順>
 図20は、入力データ・ストリームTOベクトル変換部1501による処理手順例を示すフローチャートである。入力データ・ストリームTOベクトル変換部1501は、バッチプログラム入出力設定を読込む(S2001)。つぎに、入力データ・ストリームTOベクトル変換部1501は、ストリーム格納キューQに、入力データサイズ1401から重なり幅1402を引いた数以上のストリームデータが存在するか否かを判断する(ステップS2002)。
 入力データサイズ1401から重なり幅1402を引いた数以上のストリームデータが存在しない場合(ステップS1803:No)、ステップS2001に戻り、ストリームデータが溜まるまで待ち受ける。入力データサイズ1401から重なり幅1402を引いた数以上のストリームデータが存在する場合(ステップS2002:Yes)、入力データ・ストリームTOベクトル変換部1501は、入力データサイズ1401から重なり幅1402を引いた数のストリームデータをストリーム格納キューQから取得する(S2003)。
 そして、入力データ・ストリームTOベクトル変換部1501は、重なりデータ格納領域1500からストリームデータを取得する(S2004)。入力データ・ストリームTOベクトル変換部1501は、ストリーム格納キューQおよび重なりデータ格納領域1500から取得したストリームデータをベクトルデータVDに変換し(S2005)、そのベクトルデータVDを入力としてバッチプログラム600を起動する(S2006)。その後、入力データ・ストリームTOベクトル変換部1501は、ストリーム格納キューQおよび重なりデータ格納領域1500から取得したストリームデータのうち、より時刻が新しい重なり幅1402の数のストリームデータを重なりデータ格納領域1500に格納する(S2007)。
 このあと、入力データ・ストリームTOベクトル変換部1501は、ストリーム処理基盤321が終了したか否かを判断し(ステップS2008)、終了していない場合(ステップS2008:No)、ステップS2002に戻る。一方、終了した場合(ステップS2008:Yes)、入力データ・ストリームTOベクトル変換部1501による処理を終了する。
 <ストリームデータからベクトルデータVDへの変換例>
 図21は、ストリームデータからベクトルデータVDへの変換例を示す説明図である。図21では、図20のステップ番号を参照して説明する。ステップS2001において、入力データ・ストリームTOベクトル変換部1501は、入力データサイズ1401が8個で重なり幅1402が2個であるバッチプログラム入出力設定805を読込む。
 ステップS2002において、入力データ・ストリームTOベクトル変換部1501は、ストリーム格納キューQに、入力データサイズ1401から重なり幅1402を引いた数以上のストリームデータが存在するか否かを判断する。入力データサイズ1401(8個)から重なり幅1402(2個)を引いた数は、8-2=6である。ストリーム格納キューQには、時刻1:00~1:13までの14個のストリームデータ500~513が格納されているため、入力データサイズ1401(8個)から重なり幅1402(2個)を引いた数(6)以上のストリームデータが格納されている。
 したがって、ステップS2003において、入力データ・ストリームTOベクトル変換部1501は、時刻1:00~1:05までの5個のストリームデータ501~505を、ストリーム格納キューQから取得する。
 また、ステップS2004において、入力データ・ストリームTOベクトル変換部1501は、重なりデータ格納領域1500から時刻0:58および0:59のストリームデータ1601,1602を取得する。そして、ステップS2005において、入力データ・ストリームTOベクトル変換部1501は、時刻0:58および0:59のストリームデータ1601,1602と、時刻1:00~1:05までの6個のストリームデータ501~505とを、インデックス0~7の要素700~707を持つベクトルデータVD1に変換する。
 また、ステップS2007において、入力データ・ストリームTOベクトル変換部1501は、取得した時刻0:59~1:05までの8個のストリームデータのうち、より時刻が新しい重なり幅1402:2個分のストリームデータを選択する。この場合、時刻1:04および1:05の2個のストリームデータが選択される。
 そして、入力データ・ストリームTOベクトル変換部1501は、時刻1:04および1:05の2個のストリームデータを、重なりデータ格納領域1500に上書き保存する。これにより、重なりデータ格納領域1500には、時刻0:58および0:59のストリームデータに替わって、時刻1:04および1:05のストリームデータが格納される。したがって、ステップS2003であらたにストリームデータが取得されると、ステップS2004で、重なりデータ格納領域1500から時刻1:04および1:05のストリームデータが取得されることになる。
 <入力データ・ストリームTOベクトル変換部1501による処理手順>
 図22は、出力データ・ベクトルTOストリーム変換部1502による処理手順例を示すフローチャートである。出力データ・ベクトルTOストリーム変換部1502は、バッチプログラム600が出力するベクトルデータVDを取得する(S2201)。つぎに、出力データ・ベクトルTOストリーム変換部1502は、ベクトルデータVDから要素を順次取得し、取得した要素に時刻を付加してストリームデータを生成する(ステップS2202)。
 そして、出力データ・ベクトルTOストリーム変換部1502は、生成したストリームデータを時刻順にストリーム格納キューQに格納する(S2203)。このあと、出力データ・ベクトルTOストリーム変換部1502は、ストリーム処理基盤321が終了したか否かを判断し(ステップS2204)、終了していない場合(ステップS2204:No)、ステップS2201に戻る。一方、終了した場合(ステップS2204:Yes)、出力データ・ベクトルTOストリーム変換部1502による処理を終了する。
 <ベクトルデータVDからストリームデータへの変換例>
 図23は、ベクトルデータVDからストリームデータへの変換例を示す説明図である。図23では、図22のステップ番号を参照して説明する。ステップS2201において、出力データ・ベクトルTOストリーム変換部1502は、インデックス0~2の要素を持つベクトルデータVD2を取得する。
 そして、ステップS2202およびS2203において、出力データ・ベクトルTOストリーム変換部1502は、要素に対応する時刻1:01、1:03,1:05のストリームデータ2311,2313,2315を生成し、ストリーム格納キューQに格納する。これにより、後段のストリームプログラム400は、ストリーム格納キューQに格納されたストリームデータ2311,2313,2315を取得して、ストリーム処理を実行することができる。
 このように、実施例1によれば、ベクトルデータ間で重なりを持たせることができるため、計算実行不可という状態を回避することができ、バッチプログラムのセマンティックスを保持することができる。したがって、バッチプログラムのコードやアルゴリズムを変更することなく、ストリーム処理基盤321上でバッチプログラム600を実行することができる。また、重なり幅1402分のデータだけが重複するように、ベクトルデータVDのデータサイズが決定される。このように、重なり幅1402を超えるベクトルデータVDの生成を抑制することができるため、処理負荷の軽減を図ることができる。
 また、ストリーム処理基盤321上でバッチプログラム600の実行後、実行結果であるストリームデータ群を纏めてベクトルデータに変換するため、ストリーム処理基盤321上で実行される後段のストリームデータに入力データとして与えることができ、ストリーム処理基盤321上でのストリーム処理の効率化を図ることができる。
 (実施例2)
 つぎに、実施例2について説明する。実施例2は、バッチ処理基盤上でストリームプログラム400を実行する例である。なお、実施例1と同一構成には同一符号を付し、その説明を省略する。
 図24および図25は、バッチ処理基盤上でストリームプログラムSPを実行する例を示す説明図である。図24は、データの重なりを持たせない場合実行例である。図24では、ストリームプログラムSPは、ウィンドウ幅が60個、スライド数が1個となるプログラム構成とする。なお、時刻の単位は、一例として「分」とする。また、バッチ処理基盤は、一例として4時間ごとにバッチ処理を実行するものとする。
 バッチ処理基盤は、ファイルF内の時刻ごとの値を時刻単位のストリームデータに変換するバッチ処理基盤のベクトルTOストリーム変換2400を実行する。変換されたストリームデータ列2401は、ストリームプログラムSPに入力される。ストリームプログラムSPは、入力されてくるストリームデータ列2401を1個ずつスライドさせながら用いて所定の処理を実行する。
 データに重なりを持たせないため、時刻4:59での変換後、8:59にバッチ処理をする場合、バッチ処理基盤は、前回である時刻4:59でのデータとは重ならないように、ベクトルTOストリーム変換2400を実行する。すなわち、時刻5:59では、バッチ処理基盤は、時刻5:00~8:59までの時刻の値をベクトルTOストリーム変換することにより、ストリームデータ列2402を生成する。
 ここで、時刻5:00のストリームデータは、時刻8:59でのベクトルTOストリーム変換における先頭データである。したがって、時刻5:00のストリームデータがストリームプログラムSPに入力された場合、ストリームプログラムSPは、時刻4:01~4:59の59個のストリームデータがないため、時刻5:00のストリームデータについての所定の処理を実行できない。したがって、ストリームプログラムSPが、時刻5:00のストリームデータを処理する場合、直前の59個のストリームデータを与えるか、または、時刻4:59でのストリームデータの計算状態を保持しておく必要がある。
 図25は、データの重なりを持たせた場合の実行例である。ストリームプログラムSPのプログラム構成は、図24と同一である。また、ストリームプログラムSPのプラットフォーム要件は、480分とする。
 バッチ処理基盤は、プログラム構成とプラットフォーム要件とに基づいて、重なり幅または計算状態保持の有無を決定する。バッチ処理基盤は、重なり幅と計算状態保持のいずれを適用するかは、計算処理量を比較した上で選択することになる。重なり幅が適用される場合、バッチ処理基盤は、ベクトルTOストリーム変換2400により、重なり幅分のデータを含めてストリームデータに変換する。
 時刻8:59の場合、図24では、ベクトルTOストリーム変換2400は、時刻5:00~8:59のストリームデータ列2402を生成したが、図25では、ベクトルTOストリーム変換2400は、時刻5:00の直前の重なり幅59個分のストリームデータを含む時刻4:01~8:00のストリームデータ列2501を生成する。なお、生成されなかった時刻8:01~8:59のストリームデータについては、つぎのバッチ処理のタイミングで生成される。
 また、計算状態保持が適用される場合、時刻4:59でのストリームプログラムSPの計算状態が保持される。また、ベクトルTOストリーム変換2400は、時刻8:59において、図24と同様、時刻5:00~8:59のストリームデータ2502を生成し、ストリームプログラムSPに出力する。ストリームプログラムSPは、時刻4:59でのストリームプログラムSPの計算状態と、時刻5:00~8:59のストリームデータ列2502と、を用いて、所定の処理を実行する。
 このように、前回のバッチ処理時におけるストリーム処理の実行結果を用いることにより、実質的にストリームデータ間で重なりを持たせることができる。したがって、図24の例のような計算実行不可という状態を回避することができ、ストリームプログラム400のセマンティックスを保持することができる。
 <システム構成例>
 図26は、バッチ処理システムの一例を示すシステム構成図である。バッチ処理システム2600は、クライアント301と、データソース302と、バッチ処理サーバ2603と、が、ネットワーク304を介して通信可能に接続された構成である。ネットワーク304は、イーサネット(登録商標)、LAN、またはWANでも差し支えない。また、クライアント301、データソース302、およびストリーム処理サーバ303は、PC、ブレード型の計算機システムなどの任意のコンピュータシステムでよい。
 クライアント301は、バッチ処理サーバ2603に対し登録処理を実行する計算機である。登録処理の詳細については後述する。
 データソース302は、バッチ処理サーバ2603に、処理対象となる一連の時系列データを供給する供給源であり、たとえば、上述した工場のプラントやサーバが挙げられる。
 バッチ処理サーバ2603は、I/Oインターフェース2613、CPU2611、メモリ2612およびストレージ2614が、バス2615で結合された計算機である。バッチ処理サーバ2603は、I/Oインターフェース2613を介してネットワーク304にアクセスする。また、バッチ処理サーバ2603は、処理結果、処理の中間結果、システム動作に必要な設定データを、不揮発性のストレージ2614に格納することができる。ストレージ2614は、I/Oインターフェース2613を介して直接接続されるが、バッチ処理サーバ2603外において、I/Oインターフェース2613によりネットワーク304を介して接続されることとしてもよい。
 メモリ2612には、バッチ処理基盤2621がマッピングされる。バッチ処理基盤2621は、1以上のバッチプログラムであるバッチプログラム群334の起動、停止モジュールやスケジューリングモジュールなど一般的なストリーム処理のモジュールがマッピングされたミドルウェアである。このほかに、バッチ処理基盤2621には、ストリームプログラム入出力設定静的決定部2632、ストリームプログラム入出力設定動的決定部2633、1以上のストリームプログラムであるストリームプログラム群331を含むストリームプログラム実行部2635がマッピングされる。
 <ストリームプログラム入出力設定静的決定部2632>
 図27は、図26に示したストリームプログラム入出力設定静的決定部2632の入出力関係を示す説明図である。ストリームプログラム入出力設定静的決定部2632は、バッチ処理基盤2621上でCPU2611により実行されるプログラムであり、ストリームプログラム400の静的な入出力設定を決定する。ストリームプログラム入出力設定静的決定部2632は、第2の静的決定部2702を有する。
 第2の静的決定部2702は、クライアント301から、プログラム構成801、プラットフォーム要件802、およびストリーム実行仕様2701といった登録情報を受け付ける。そして、第2の静的決定部2702は、ストリームプログラム400の静的な入力データサイズ、重なり幅および計算状態保持の有無を決定する。計算状態保持とは、バッチ処理基盤2621上で実行されるストリームプログラム400の実行結果である計算状態を保持することである。決定された入力データサイズおよび重なり幅は、ストリームプログラム入出力設定2703として出力される。
 <バッチ実行仕様803>
 図28は、ストリーム実行仕様2701の一例を示す説明図である。ストリーム実行仕様2701とは、ストリーム処理の実行方法を規定する情報である。パラメータとして、たとえば、入力レート2801、処理スループット2802、計算状態保持・読出し時間2803があり、クライアント301を操作することでユーザにより指定される。入力レート2801は、ストリームプログラム400が入力とするベクトルデータVDの要素が到着する間隔を示す。
 図28では、入力レート2801は1個/分であるため、毎分1個、ベクトルデータVDの要素が到着することを示す。また、処理スループット2802は、ストリームプログラム400が単位時間当たりに処理する、ストリームデータの数を示す。図28では処理スループット2802は1個/分であるため、ストリームプログラム400が毎分1個の値を処理できることを示す。計算状態保持・読出し時間2803は、計算状態の保持と読み出しに要する時間を示す。図28では、計算状態保持・読出し時間2803は5分であるため、計算状態の保持と読み出しに5分かかることを示す。
 <ストリームプログラム入出力設定動的決定部2633>
 図29は、図26に示したストリームプログラム入出力設定動的決定部2633の入出力関係を示す説明図である。ストリームプログラム入出力設定動的決定部2633は、バッチ処理基盤2621上でCPU2611により実行されるプログラムであり、ストリームプログラム400の動的な入出力設定を決定する。ストリームプログラム入出力設定動的決定部2633は、ストリーム実行モニタリング部2901と、第2の動的決定部2903とを有する。
 ストリーム実行モニタリング部2901は、実行中のストリームプログラム400を監視し、ストリーム実行モニタリング値2902を生成する。ストリーム実行モニタリング値2902とは、実行中のバッチプログラム600における観測値である。ストリーム実行モニタリング値2902については、後述する。
 第2の動的決定部2903は、クライアント301から、図9に示したプログラム構成801、図10に示したプラットフォーム要件802およびストリーム実行モニタリング値2902を受け付ける。そして、第2の動的決定部2903は、ストリームプログラム400の動的な入力データサイズ、重なり幅および計算状態の有無を決定する。決定された入力データサイズ1401および重なり幅1402は、ストリームプログラム入出力設定2703として出力される。入力データサイズおよび重なり幅については、後述する。
 <ストリーム実行モニタリング値2902>
 図30は、ストリーム実行モニタリング値2902の一例を示す説明図である。ストリーム実行モニタリング値2902は、パラメータとして、処理対象データ数3001、処理スループット3002、および計算状態保持・読出し時間3003を有し、ストリーム実行モニタリング部2901により出力される。処理対象データ数3001は、ストリームプログラム400が入力とするベクトルデータVDの要素数を示す。当該要素数は、たとえば、ファイルに格納されている。
 図30では、処理対象データ数3001が240個であるため、ファイルにベクトルデータVDの要素数が240個であることを示す。また、処理スループット3002は、ストリームプログラム400が単位時間当たりに処理するストリームデータの数を示す。計算状態保持・読出し時間3003は、計算状態の保持と読み出しに要する時間を示す。
 <ストリームプログラム入出力設定2703>
 図31は、図27および図29に示したストリームプログラム入出力設定2703の一例を示す説明図である。ストリームプログラム入出力設定2703とは、ストリームプログラム400に入出力されるデータを規定する情報である。パラメータとして、たとえば、入力データサイズ3101、重なり幅3102、計算状態保持有無3103があり、クライアント301を操作することでユーザにより指定される。入力データサイズ3101は、ストリームプログラム400が入力するストリームデータのサイズを示す。
 たとえば、図31に示した入力データサイズ3101は240個であるため、ストリームプログラム400は、240個のストリームデータを入力する。また、重なり幅3102は、ストリームプログラム400が入力するストリームデータと、一つ前の実行でストリームプログラム400が入力したストリームデータとの間で、重複するストリームデータの数を示す。図31では、重なり幅3102は3個であるため、一つ前の実行でストリームプログラム400が入力したストリームデータと3個のストリームデータが重複することを示す。また、計算状態保持有無3103は、ストリームプログラム400の計算状態を保持するか否かを示す。図31では、計算状態保持有無3103は「なし」であるため、計算状態は保持されない。
 <ストリームプログラム実行部2635>
 図32は、図26に示したストリームプログラム実行部2635の入出力の関係を示す説明図である。ストリームプログラム実行部2635は、入力データ・ベクトルTOストリーム変換部3201と、出力データ・ストリームTOベクトル変換部3202と、計算状態読出し部3203と、計算状態保持部3204と、を有する。
 入力データ・ベクトルTOストリーム変換部3201、計算状態読出し部3203、および計算状態保持部3204は、ストリームプログラム入出力設定2703を入力する。ストリームプログラム入出力設定2703は、第2の静的決定部2702や、第2の動的決定部2903が生成してもよく、ユーザにより手動で作成してもよい。
 計算状態読出し部3203は、ストリームプログラム400の実行開始時に、計算状態格納領域3210に格納されている計算状態3211を読出し、ストリームプログラム入出力設定2703に従って、ストリームプログラム400に入力する。計算状態保持部3204は、ストリームプログラム400の実行終了時に、ストリームプログラム入出力設定2703に従って計算状態3211をストリームプログラム400に入力する。
 入力データ・ベクトルTOストリーム変換部3201は、バッチプログラムBP1の出力であるファイルF1内のベクトルデータVD3を入力とし、ストリームプログラム入出力設定2703に従ってベクトルデータVD3からストリームデータに変換する。入力データ・ベクトルTOストリーム変換部3201が入力するベクトルデータVD3は、ファイル、およびデータベースやその他の記憶領域に格納してもよい。また、ファイルF1やその他の記憶領域に、バッチプログラム600がベクトルデータVD3を格納してもよく、その他のプログラムが格納してもよい。
 ストリームプログラム400は、入力データ・ベクトルTOストリーム変換部3201が出力したストリームデータを入力し、その処理結果としてストリームデータを出力する。そして、出力データ・ストリームTOベクトル変換部3202が、ストリームプログラム400が出力したストリームデータSD4を入力し、ベクトルデータVD4に変換する。出力データ・ストリームTOベクトル変換部3202が出力したベクトルデータVDは、ファイルF2やデータベースまたはその他の記憶領域に格納される。ファイルF2やその他の記憶領域に格納されたベクトルデータVD4はバッチプログラム600が入力してもよく、その他のプログラムが入力してもよい。
 <重なりデータ時刻>
 図33は、図32に示した重なりデータ時刻の一例を示す説明図である。重なりデータ時刻OTは、ストリームプログラム400が入力するストリームデータの中で、一つ前の実行でストリームプログラム400が入力するストリームデータと重複するストリームデータの時刻を示す。図33では、重なりデータ時刻OTは「0:57~0:59」であるため、現在と一つ前のストリームプログラム400のいずれの実行においても、時刻「0:57」~「0:59」のストリームデータを入力として持つ。重なりデータ時刻OTは、入力データ・ベクトルTOストリーム変換部3201により設定され、出力データ・ストリームTOベクトル変換部3202に使用される。
 <オペレータツリー>
 図34は、オペレータツリーの一例を示す説明図である。オペレータツリー3400は、CQLで記述したストリームプログラム400をコンパイルすることに生成される。ストリーム処理基盤321は、オペレータツリー3400を構成する各オペレータ3401~3404を、オペレータツリー3400で指定された順に実行する。図34に示すオペレータツリー3400は、図4に示すノイズ除去クエリ403および異常センサクエリ404のコンパイルの結果、生成されたオペレータツリー3400である。オペレータツリー3400は、たとえば、ROWS3401、GROUP BY3402、ISTREAM3403、ISTREAM3404により構成され、ROWS3401、GROUP BY3402、ISTREAM3403、ISTREAM3404の順に実行される。
 <計算状態格納領域3210>
 図35は、図32に示した計算状態格納領域3210の一例を示す説明図である。計算状態格納領域3210には、計算状態3211が格納される。計算状態3211は、各オペレータ3401~3404の計算に用いる状態を示す。たとえば、ROWS3401の計算状態は、最近4個のストリームデータを保持するウィンドウであるため、4個のストリームデータを格納する。また、オペレータGROUP BY3402の計算状態3211は、最近4個の計測値の平均値を格納する。
 <第2の静的決定部2702による処理手順>
 図36は、第2の静的決定部2702による処理手順例を示すフローチャートである。第2の静的決定部2702は、まず、プログラム構成801、プラットフォーム要件802、およびストリーム実行仕様2701を読込む(ステップS3601)。
 つぎに、第2の静的決定部2702は、「(ウィンドウ幅-スライド数)/処理スループット」が計算状態保持・読出し時間2803よりも大きいか否かを判断する(ステップS3602)。大きい場合(ステップS3602:Yes)、第2の静的決定部2702は、ストリームプログラム入出力設定2703において計算状態保持有無3103を「あり」にセットし(ステップS3603)、ストリームプログラム入出力設定2703において重なり幅3102を0にセットする(ステップS3604)。そして、ステップS3607に移行する。
 一方、「(ウィンドウ幅-スライド数)/処理スループット」が計算状態保持・読出し時間2803以下の場合(ステップS3602:No)、第2の静的決定部2702は、ストリームプログラム入出力設定において計算状態保持有無3103を「なし」にセットし(ステップS3605)、また、ストリームプログラム入出力設定2703において重なり幅3102を「ウィンドウ幅-スライド数」にセットする(ステップS3606)。そして、ステップS3607に移行する。
 ここで、処理対象のベクトルデータVDにおいてストリームプログラム400で実行する迄の時間を待ち時間、ストリームプログラム400の実行時間を実行時間とする。待ち時間+実行時間がレスポンス時間1001以下であれば、要求したレスポンス時間1001で処理することが可能となる。待ち時間は、「処理対象のベクトルデータVDのサイズ(以下、ベクトルサイズ)/入力レート」であり、また実行時間は「ベクトルサイズ/処理スループット」である。
 このため、「ベクトルサイズ/入力レート+ベクトルサイズ/処理スループット」がレスポンス時間1001以下となる必要がある。したがって、ベクトルデータVDの処理可能なデータサイズ(以下、「処理可能データ数」)は、「ベクトルサイズ/入力レート+ベクトルサイズ/処理スループット≦レスポンス時間」を満たす、最大のベクトルサイズとなる。これにより、ベクトルサイズは、[レスポンス時間×処理スループット×入力レート/(処理スループット+入力レート)]となる([]はガウス記号)。
 したがって、第2の静的決定部2702は、入力データサイズ3101を、[レスポンス時間×処理スループット×入力レート/(処理スループット+入力レート)]として、ストリームプログラム入出力設定2703にセットする(ステップS3607)。これにより、第2の静的決定部2702による処理を終了する。
 <ストリーム実行モニタリング部2901による処理手順>
 図37は、ストリーム実行モニタリング部2901による処理手順例を示すフローチャートである。ストリーム実行モニタリング部2901は、ストリームプログラム400の入力となるストリームデータを格納するファイルを参照し、ストリーム実行モニタリング値2902を処理対象データ数3001にセットする(ステップS3701)。
 つぎに、ストリーム実行モニタリング部2901は、バッチ処理基盤2621のログから処理スループットを取り出し、ストリーム実行モニタリング値2902の処理スループット3002にセットする(ステップS3702)。そして、バッチ実行モニタリング部1201は、バッチ処理基盤2621が終了していなければ(ステップS3703:No)、ステップS3701に戻り、終了していれば(ステップS3703:Yes)、処理を終了する。
 <第2の動的決定部2903による処理手順>
 図38は、第2の動的決定部2903による処理手順例を示すフローチャートである。第2の動的決定部2903は、まず、プログラム構成801およびプラットフォーム要件802を読み込む(ステップS3801)。つぎに、第2の動的決定部2903は、処理対象のベクトルデータVDの要素がファイルに存在するか否かを判断する(ステップS3802)。処理対象のベクトルデータVDがファイルに存在する場合(ステップS3802:Yes)、第2の動的決定部2903は、ストリーム実行モニタリング値2902を読込む(ステップS3803)。
 つぎに、第2の動的決定部2903は、「(ウィンドウ幅-スライド数)/処理スループット」が計算状態保持・読出し時間3003よりも大きいか否かを判断する(ステップS3804)。大きい場合(ステップS3804:Yes)、第2の動的決定部2903は、ストリームプログラム入出力設定2703において計算状態保持有無3103を「あり」にセットし(ステップS3805)、ストリームプログラム入出力設定2703において重なり幅3102を0にセットする(ステップS3806)。そして、ステップS3809に移行する。
 一方、「(ウィンドウ幅-スライド数)/処理スループット」が計算状態保持・読出し時間3003以下の場合(ステップS3804:No)、第2の動的決定部2903は、ストリームプログラム入出力設定2703において計算状態保持有無3103を「なし」にセットし(ステップS3807)、また、ストリームプログラム入出力設定2703において重なり幅3102を「ウィンドウ幅-スライド数」にセットする(ステップS3808)。そして、ステップS3809に移行する。
 ここで、処理対象のベクトルデータVDにおいてストリームプログラム400で実行する迄の時間を待ち時間、ストリームプログラム400の実行時間を実行時間とする。待ち時間+実行時間がレスポンス時間1001以下であれば、要求したレスポンス時間1001で処理することが可能となる。待ち時間は、「処理対象のベクトルデータVDのサイズ(以下、ベクトルサイズ)/入力レート」であり、また実行時間は「ベクトルサイズ/処理スループット」である。
 このため、「ベクトルサイズ/入力レート+ベクトルサイズ/処理スループット」がレスポンス時間1001以下となる必要がある。したがって、ベクトルデータVDの処理可能なデータサイズ(以下、「処理可能データ数」)は、「ベクトルサイズ/入力レート+ベクトルサイズ/処理スループット≦レスポンス時間」を満たす、最大のベクトルサイズとなる。これにより、ベクトルサイズは、[レスポンス時間×処理スループット×入力レート/(処理スループット+入力レート)]となる([]はガウス記号)。
 したがって、第2の動的決定部2903は、入力データサイズ3101を、[レスポンス時間×処理スループット×入力レート/(処理スループット+入力レート)]として、ストリームプログラム入出力設定2703にセットする(ステップS3809)。
 このあと、第2の動的決定部2903は、バッチ処理基盤2621が終了したか否かを判断し(ステップS3810)、終了していない場合(ステップS3810:No)、ステップS3802に戻る。一方、終了した場合(ステップS3810:Yes)、第2の動的決定部2903による処理を終了する。
 <入力データ・ストリームTOベクトル変換部3202による処理手順>
 図39は、図32に示した入力データ・ベクトルTOストリーム変換部3201による処理手順例を示すフローチャートである。入力データ・ベクトルTOストリーム変換部3201は、まず、ファイルの読出しインデックスを、「最後入力データのインデックス+1-重なり幅」に設定する(ステップS3901)。最後入力データとは、最後にファイルから読み出されたベクトルデータVDの要素である。
 つぎに、入力データ・ベクトルTOストリーム変換部3201は、ファイルの読出しインデックスの要素の時刻から最後入力データのインデックスから1引いた要素の時刻までを、重なりデータ時刻OTに設定する(ステップS3902)。
 そして、入力データ・ベクトルTOストリーム変換部3201は、読出しインデックスのベクトルデータVDの要素をファイルから取得し(ステップS3903)、その取得した要素に時刻を付加してストリームデータを生成する(ステップS3904)。そして、入力データ・ベクトルTOストリーム変換部3201は、ストリームデータをストリーム格納キューQに格納する(ステップS3905)。
 そして、入力データ・ベクトルTOストリーム変換部3201は、取得した要素の数が入力データサイズより小さいか否かを判断する(ステップS3906)。小さい場合(ステップS3906:Yes)、入力データ・ベクトルTOストリーム変換部3201は、読出しインデックスを1つ加算し(ステップS3907)、ステップ3903に戻り、ステップS3903~S3905を実行する。
 そして、取得したデータ数が入力データサイズ以上になった場合(ステップS3906:No)、入力データ・ベクトルTOストリーム変換部3201は、ファイル内の末尾のインデックスの要素を、最後入力データに設定し(ステップS3908)、入力データ・ベクトルTOストリーム変換部3201による処理を終了する。
 <ベクトルデータVDからストリームデータへの変換例>
 図40は、ベクトルデータVDからストリームデータへの変換例を示す説明図である。図40では、図39のステップ番号を参照して説明する。なお、この時点での最後入力データを、インデックス1002の要素(10.0)とする。
 ステップS3901において、入力データ・ベクトルTOストリーム変換部3201は、ファイルの読出しインデックスを、最後入力データのインデックス1002+1-重なり幅3=1000に設定する。
 また、ステップS3902において、入力データ・ベクトルTOストリーム変換部3201は、ファイルの読出しインデックス1000の要素の時刻0:57~最後入力データのインデックス1002の要素の時刻0:59を、重なり時刻に設定する。
 また、ステップS3903において、入力データ・ベクトルTOストリーム変換部3201は、読出しインデックス1002の要素(10.0)をファイルから取得し、ステップS3904において、要素の時刻0:59を付加したストリームデータを生成し、ストリーム格納キューQに格納する。
 そして、ステップS3906において、入力データ・ベクトルTOストリーム変換部3201は、取得要素数(この段階ではインデックス1000の要素1個)が入力データサイズ240個より小さいか否かを判断する。この場合は、小さいため、入力データ・ベクトルTOストリーム変換部3201は、読出しインデックスを1000から1001にする。このループを繰り返すことで、ベクトルデータVDの要素であるインデックス1001~1239のデータを順次取得し、ストリーム格納キューQ501に、時刻0:57~4:59のストリームデータ3806~3809を格納することができる。
 <出力データ・ストリームTOベクトル変換部3202による処理手順>
 図41は、図32に示した出力データ・ストリームTOベクトル変換部3202による処理手順例を示すフローチャートである。出力データ・ストリームTOベクトル変換部3202は、ストリーム格納キューQから順次ストリームデータを取得する(S4101)。つぎに、出力データ・ストリームTOベクトル変換部3202は、取得したストリームデータに時刻が、重なりデータ時刻OTと一致するか否かを判断する(ステップS4102)。
 一致する場合(ステップS4102:Yes)、ステップS4104に移行し、不一致である場合(ステップS4102:No)、出力データ・ストリームTOベクトル変換部3202は、取得したストリームデータをファイルに格納して(ステップS4103)、ステップS4104に移行する。
 ステップS4104では、出力データ・ストリームTOベクトル変換部3202は、バッチ処理基盤2621が終了したか否かを判断し(ステップS4104)、終了していない場合(ステップS4104:No)、ステップS4101に戻る。一方、終了した場合(ステップS4104:Yes)、出力データ・ストリームTOベクトル変換部3202による処理を終了する。
 <ストリームデータからベクトルデータVDへの変換例>
 図42は、ストリームデータからベクトルデータVDへの変換例を示す説明図である。図42では、図41のステップ番号を参照して説明する。ステップS4101において、出力データ・ストリームTOベクトル変換部3202は、ストリーム格納キューQから順次ストリームデータ4201~4204を取得する。
 ステップS4102において、出力データ・ストリームTOベクトル変換部3202は、取得したストリームデータごとに、重なりデータ時刻OTと一致するか否かを判定する。この場合、時刻0:58のストリームデータ4201が一致し、時刻1:02以降のストリームデータ4202は不一致となる。このため、ステップS4103において、出力データ・ストリームTOベクトル変換部3202は、不一致である時刻1:02以降のストリームデータ4202~4204をファイルF2に格納する。これにより、前回のストリームデータと時刻が重複するストリームデータについては、ベクトル変換されないため、出力されない。これにより、後段のバッチプログラム600は、ファイル参照して、バッチ処理を実行することができる。
 <計算状態読出し部3203による処理手順>
 図43は、図32に示した計算状態読出し部3203による処理手順を示すフローチャートである。まず、計算状態読出し部3203は、オペレータツリー3400を構成するオペレータを順次参照し(ステップS4301)、参照したオペレータの計算状態3211を、計算状態格納領域3210から取り出し、ストリームプログラム400に書き込む(ステップS4302)。そして、計算状態読出し部3203は、オペレータツリー3400の全オペレータを参照したか否かを判断する(ステップS4303)。全オペレータを参照していない場合(ステップS4303:No)、ステップS4301に戻る。一方、全オペレータを参照した場合(ステップS4303:Yes)、計算状態読出し部3203による処理を終了する。
 <計算状態保持部3204による処理手順>
 図44は、図32に示した計算状態保持部3204による処理手順を示すフローチャートである。まず、計算状態保持部3204は、オペレータツリー3400を構成するオペレータを順次参照し(ステップS4401)、参照したオペレータの計算状態3211を、ストリームプログラム400から読出し、計算状態格納領域3210に保持する(ステップS4402)。そして、計算状態保持部3204は、オペレータツリー3400の全オペレータを参照したか否かを判断する(ステップS4403)。全オペレータを参照していない場合(ステップS4403:No)、ステップS4401に戻る。一方、全オペレータを参照した場合(ステップS4403:Yes)、計算状態保持部3204による処理を終了する。
 このように、実施例2によれば、前回のバッチ処理時におけるストリーム処理の実行結果を用いることにより、実質的にストリームデータ間で重なりを持たせることができる。したがって、計算実行不可という状態を回避することができ、ストリームプログラムのセマンティックスを保持することができる。
 以上説明したように、本実施の形態によれば、ストリーム処理基盤上で、入力データに重なりを持たせる必要があるバッチプログラムを実行可能とすることができる。また、バッチプログラムの入力データサイズを増やし纏めて実行することで処理スループットの向上を図ることができる。また、バッチ処理基盤上で、入力データに重なりを持たせる必要があるストリームプログラムを実行可能にすることができる。
 すなわち、バッチ処理およびストリーム処理について、一方の処理基盤と当該一方の処理基盤上で他方の処理のプログラムを実行する場合、時系列データに重なりを持たせて他方の処理を実行することができる。これにより、一方の処理基盤上で実行する他方の処理のプログラムのコードやアルゴリズムを変更することなく、一方の処理基盤上で他方の処理のプログラムを実行することができる。したがって、既存のプログラムを処理が異なる処理基盤上で流用することができ、容易かつ効率的にプログラムを実行することができる。
 以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。

Claims (14)

  1.  プロセッサと、ストリーム処理を実行するストリームプログラム、バッチ処理を実行するバッチプログラム、および前記ストリームプログラムを制御するストリーム処理制御プログラムを記憶するメモリと、を有するデータ処理装置であって、
     前記プロセッサは、
     前記ストリーム処理制御プログラムにより、時系列なストリームデータ列のうちあるストリームデータからの時系列な第1のストリームデータ群について、当該第1のストリームデータ群の各ストリームデータを要素としてまとめた第1のベクトルデータを生成する第1の生成手順と、
     前記ストリーム処理制御プログラムにより、前記時系列なストリームデータ列のうち前記第1のストリームデータ群の中途のストリームデータを先頭とし、かつ、前記第1のストリームデータ群と同数のデータ数である時系列な第2のストリームデータ群について、当該第2のストリームデータ群の各ストリームデータを要素としてまとめた第2のベクトルデータを生成する第2の生成手順と、
     前記ストリーム処理制御プログラムにより、前記第1の生成手順および前記第2の生成手順によって生成された第1のベクトルデータおよび第2のベクトルデータを前記バッチプログラムに入力してバッチ処理を実行させる制御手順と、
     を実行することを特徴とするデータ処理装置。
  2.  前記プロセッサは、
     前記ストリーム処理制御プログラムにより、前記第1のベクトルデータが前記バッチプログラムに入力されて前記制御手順によってバッチ処理が実行された実行結果である第3のベクトルデータについて、当該第3のベクトルデータに含まれる時刻ごとの値である要素群を、時刻に対応する値となる時系列な第3のストリームデータ群に変換する第1の変換手順と、
     前記ストリーム処理制御プログラムにより、前記第2のベクトルデータが前記バッチプログラムに入力されて前記制御手順によってバッチ処理が実行された実行結果である第4のベクトルデータについて、当該第4のベクトルデータに含まれる時刻ごとの値である要素群を、時刻に対応する値となる時系列な第4のストリームデータ群に変換する第2の変換手順と、
     を実行することを特徴とする請求項1に記載のデータ処理装置。
  3.  前記プロセッサは、
     前記ストリーム処理制御プログラムにより、前記ストリームプログラムを制御して実行されたストリーム処理の処理結果である前記第1のストリームデータ群および前記第2のストリームデータ群を出力する出力手順を実行し、
     前記第1の生成手順では、
     前記ストリーム処理制御プログラムにより、前記出力手順によって出力された前記第1のストリームデータ群について、前記第1のベクトルデータを生成し、
     前記第2の生成手順では、
     前記ストリーム処理制御プログラムにより、前記出力手順によって出力された前記第2のストリームデータ群について、前記第2のベクトルデータを生成することを特徴とする請求項1に記載のデータ処理装置。
  4.  前記プロセッサは、
     前記ストリーム処理制御プログラムにより、前記第1のストリームデータ群および前記第2のストリームデータ群に存在するデータの個数と同数である、前記第1のベクトルデータおよび前記第2のベクトルデータに含ませる要素数を、入力データサイズとして設定し、前記第1のストリームデータ群と前記第2のストリームデータ群との間でのストリームデータの重複数と同数である、前記第1のベクトルデータと前記第2のベクトルデータとの間の前記要素の重複数を、重なり幅として設定する設定手順を実行し、
     前記第1の生成手順では、
     前記ストリーム処理制御プログラムにより、前記設定手順によって設定された入力データサイズおよび重なり幅にしたがって、前記出力手順によって出力された前記第1のストリームデータ群について、前記第1のベクトルデータを生成し、
     前記第2の生成手順では、
     前記ストリーム処理制御プログラムにより、前記設定手順によって設定された入力データサイズおよび重なり幅にしたがって、前記出力手順によって出力された前記第2のストリームデータ群について、前記第2のベクトルデータを生成することを特徴とする請求項1に記載のデータ処理装置。
  5.  前記プロセッサは、
     前記設定手順では、
     前記ストリーム処理制御プログラムにより、前記バッチプログラムで前記時系列なストリームデータ列の各ストリームデータが入力されてからバッチ処理が完了するまでのレスポンス時間と、前記バッチプログラムに前記各ストリームデータが入力される間隔である入力レートと、前記バッチプログラムが単位時間当たりに処理するベクトルデータの要素数である処理スループットと、に基づいて、前記入力データサイズを設定することを特徴とする請求項4に記載のデータ処理装置。
  6.  前記プロセッサは、
     前記時系列なストリームデータ列のうちキューに格納されているストリームデータの個数である処理対象データ数と、前記ストリーム処理制御プログラムにより現在前記バッチプログラムが単位時間当たりに処理するベクトルデータの要素数である処理スループットと、を取得する取得手順と、
     前記取得手順によって取得された処理スループットと、前記キューに格納されているストリームデータが有する時刻のうち最古の時刻と、前記バッチプログラムで前記時系列なストリームデータ列の各ストリームデータが入力されてからバッチ処理が完了するまでのレスポンス時間と、に基づいて、前記バッチプログラムでの処理可能なストリームデータ数を算出する算出手順と、を実行し、
     前記設定手順では、
     前記取得手順によって取得された処理対象データ数と、前記重なり幅と、前記算出手順によって算出された処理可能なストリームデータ数と、に基づいて、前記入力データサイズを設定することを特徴とする請求項4に記載のデータ処理装置。
  7.  プロセッサと、バッチ処理を実行するバッチプログラム、ストリーム処理を実行するストリームプログラム、および前記バッチプログラムを制御するバッチ処理制御プログラムを記憶するメモリと、を有するデータ処理装置であって、
     前記プロセッサは、
     前記バッチ処理制御プログラムにより、時刻ごとの値である要素列を含むベクトルデータから、前記要素列内の第1の要素群の各要素を分割して時系列にした第1のストリームデータ群を生成する第1の生成手順と、
     前記バッチ処理制御プログラムにより、前記要素列のうち前記第1の要素群の中途の要素を先頭とし、かつ、前記第1の要素群と同数の要素数である時系列な第2の要素群について、当該第2の要素群の各要素を分割して時系列にした第2のストリームデータ群を生成する第2の生成手順と、
     前記バッチ処理制御プログラムにより、前記第1の生成手順および前記第2の生成手順によって生成された第1のストリームデータ群および第2のストリームデータ群を前記ストリームプログラムに入力してストリーム処理を実行させる制御手順と、
     前記バッチ処理制御プログラムにより、前記第1のストリームデータ群が前記ストリームプログラムに入力されて前記制御手順によってストリーム処理が実行された実行結果である第3のストリームデータ群のストリームデータを取得し、前記第2のストリームデータ群が前記ストリームプログラムに入力されて前記制御手順によってストリーム処理が実行された実行結果である第4のストリームデータ群を取得し、当該第4のストリームデータ群から前記第3のストリームデータ群のストリームデータと重複するストリームデータを除外した除外後のストリームデータ群を第2のベクトルデータに変換する変換手順と、
     を実行することを特徴とするデータ処理装置。
  8.  前記プロセッサは、
     前記バッチ処理制御プログラムにより、前記第1のストリームデータ群および前記第2のストリームデータ群に含ませるストリームデータの個数である入力データサイズと、前記第1のストリームデータ群と前記第2のストリームデータ群との間のストリームデータの重複数である重なり幅と、を設定する設定手順を実行し、
     前記第1の生成手順は、
     前記ストリーム処理制御プログラムにより、前記設定手順によって設定された入力データサイズおよび重なり幅にしたがって、前記第1のベクトルデータから、前記第1のストリームデータ群を生成し、
     前記第2の生成手順は、
     前記ストリーム処理制御プログラムにより、前記設定手順によって設定された入力データサイズおよび重なり幅にしたがって、前記第1のベクトルデータから、前記第2のストリームデータ群を生成することを特徴とする請求項7に記載のデータ処理装置。
  9.  プロセッサと、ストリーム処理を実行するストリームプログラム、バッチ処理を実行するバッチプログラム、および前記ストリームプログラムを制御するストリーム処理制御プログラムを記憶するメモリと、を有するデータ処理装置が実行するデータ処理方法であって、
     前記プロセッサは、
     前記ストリーム処理制御プログラムにより、時系列なストリームデータ列のうちあるストリームデータからの時系列な第1のストリームデータ群について、当該第1のストリームデータ群の各ストリームデータを要素としてまとめた第1のベクトルデータを生成する第1の生成手順と、
     前記ストリーム処理制御プログラムにより、前記時系列なストリームデータ列のうち前記第1のストリームデータ群の中途のストリームデータを先頭とし、かつ、前記第1のストリームデータ群と同数のデータ数である時系列な第2のストリームデータ群について、当該第2のストリームデータ群の各ストリームデータを要素としてまとめた第2のベクトルデータを生成する第2の生成手順と、
     前記ストリーム処理制御プログラムにより、前記第1の生成手順および前記第2の生成手順によって生成された第1のベクトルデータおよび第2のベクトルデータを前記バッチプログラムに入力してバッチ処理を実行させる制御手順と、
     を実行することを特徴とするデータ処理方法。
  10.  前記プロセッサは、
     前記ストリーム処理制御プログラムにより、前記第1のベクトルデータが前記バッチプログラムに入力されて前記制御手順によってバッチ処理が実行された実行結果である第3のベクトルデータについて、当該第3のベクトルデータに含まれる時刻ごとの値である要素群を、時刻に対応する値となる時系列な第3のストリームデータ群に変換する第1の変換手順と、
     前記ストリーム処理制御プログラムにより、前記第2のベクトルデータが前記バッチプログラムに入力されて前記制御手順によってバッチ処理が実行された実行結果である第4のベクトルデータについて、討議亜第4のベクトルデータに含まれる時刻ごとの値である要素群を、時刻に対応する値となる時系列な第4のストリームデータ群に変換する第2の変換手順と、
     を実行することを特徴とする請求項9に記載のデータ処理方法。
  11.  前記プロセッサは、
     前記ストリーム処理制御プログラムにより、前記ストリームプログラムを制御して実行されたストリーム処理の処理結果である前記第1のストリームデータ群および前記第2のストリームデータ群を出力する出力手順を実行し、
     前記第1の生成手順では、
     前記ストリーム処理制御プログラムにより、前記出力手順によって出力された前記第1のストリームデータ群について、前記第1のベクトルデータを生成し、
     前記第2の生成手順では、
     前記ストリーム処理制御プログラムにより、前記出力手順によって出力された前記第2のストリームデータ群について、前記第2のベクトルデータを生成することを特徴とする請求項9に記載のデータ処理方法。
  12.  前記プロセッサは、
     前記ストリーム処理制御プログラムにより、前記第1のストリームデータ群および前記第2のストリームデータ群に存在するデータの個数と同数である、前記第1のベクトルデータおよび前記第2のベクトルデータに含ませる要素数を、入力データサイズとして設定し、前記第1のストリームデータ群と前記第2のストリームデータ群との間でのストリームデータの重複数と同数である、前記第1のベクトルデータと前記第2のベクトルデータとの間の前記要素の重複数を、重なり幅として設定する設定手順を実行し、
     前記第1の生成手順では、
     前記ストリーム処理制御プログラムにより、前記設定手順によって設定された入力データサイズおよび重なり幅にしたがって、前記出力手順によって出力された前記第1のストリームデータ群について、前記第1のベクトルデータを生成し、
     前記第2の生成手順では、
     前記ストリーム処理制御プログラムにより、前記設定手順によって設定された入力データサイズおよび重なり幅にしたがって、前記出力手順によって出力された前記第2のストリームデータ群について、前記第2のベクトルデータを生成することを特徴とする請求項9に記載のデータ処理方法。
  13.  前記プロセッサは、
     前記設定手順では、
     前記ストリーム処理制御プログラムにより、前記バッチプログラムで前記時系列なストリームデータ列の各ストリームデータが入力されてからバッチ処理が完了するまでのレスポンス時間と、前記バッチプログラムに前記各ストリームデータが入力される間隔である入力レートと、前記バッチプログラムが単位時間当たりに処理するベクトルデータの要素数である処理スループットと、に基づいて、前記入力データサイズを設定することを特徴とする請求項12に記載のデータ処理方法。
  14.  前記プロセッサは、
     前記時系列なストリームデータ列のうちキューに格納されているストリームデータの個数である処理対象データ数と、前記ストリーム処理制御プログラムにより現在前記バッチプログラムが単位時間当たりに処理するベクトルデータの要素数である処理スループットと、を取得する取得手順と、
     前記取得手順によって取得された処理スループットと、前記キューに格納されているストリームデータが有する時刻のうち最古の時刻と、前記バッチプログラムで前記時系列なストリームデータ列の各ストリームデータが入力されてからバッチ処理が完了するまでのレスポンス時間と、に基づいて、前記バッチプログラムでの処理可能なストリームデータ数を算出する算出手順と、を実行し、
     前記設定手順では、
     前記取得手順によって取得された処理対象データ数と、前記重なり幅と、前記算出手順によって算出された処理可能なストリームデータ数と、に基づいて、前記入力データサイズを設定することを特徴とする請求項12に記載のデータ処理方法。
PCT/JP2013/069630 2013-07-19 2013-07-19 データ処理装置およびデータ処理方法 WO2015008379A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2013/069630 WO2015008379A1 (ja) 2013-07-19 2013-07-19 データ処理装置およびデータ処理方法
US14/771,064 US9921869B2 (en) 2013-07-19 2013-07-19 Data processing apparatus and data processing method
JP2015527126A JP6038324B2 (ja) 2013-07-19 2013-07-19 データ処理装置およびデータ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/069630 WO2015008379A1 (ja) 2013-07-19 2013-07-19 データ処理装置およびデータ処理方法

Publications (1)

Publication Number Publication Date
WO2015008379A1 true WO2015008379A1 (ja) 2015-01-22

Family

ID=52345871

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/069630 WO2015008379A1 (ja) 2013-07-19 2013-07-19 データ処理装置およびデータ処理方法

Country Status (3)

Country Link
US (1) US9921869B2 (ja)
JP (1) JP6038324B2 (ja)
WO (1) WO2015008379A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116841753A (zh) * 2023-08-31 2023-10-03 杭州迅杭科技有限公司 一种流处理和批处理的切换方法及切换装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748646B2 (en) * 2016-12-30 2020-08-18 General Electric Company Chunk-wise transmission of time-series data to mobile devices
CN111506350A (zh) * 2020-04-30 2020-08-07 中科院计算所西部高等技术研究院 具有ooda循环分区机制的流式处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7310638B1 (en) * 2004-10-06 2007-12-18 Metra Tech Method and apparatus for efficiently processing queries in a streaming transaction processing system
JP2010108073A (ja) * 2008-10-28 2010-05-13 Hitachi Ltd ストリームデータ処理方法、及びシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5423553B2 (ja) 2010-04-09 2014-02-19 株式会社日立製作所 データベース管理方法、計算機、センサネットワークシステム及びデータベース検索プログラム
US9275093B2 (en) * 2011-01-28 2016-03-01 Cisco Technology, Inc. Indexing sensor data
US8978034B1 (en) * 2013-03-15 2015-03-10 Natero, Inc. System for dynamic batching at varying granularities using micro-batching to achieve both near real-time and batch processing characteristics

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7310638B1 (en) * 2004-10-06 2007-12-18 Metra Tech Method and apparatus for efficiently processing queries in a streaming transaction processing system
JP2010108073A (ja) * 2008-10-28 2010-05-13 Hitachi Ltd ストリームデータ処理方法、及びシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116841753A (zh) * 2023-08-31 2023-10-03 杭州迅杭科技有限公司 一种流处理和批处理的切换方法及切换装置
CN116841753B (zh) * 2023-08-31 2023-11-17 杭州迅杭科技有限公司 一种流处理和批处理的切换方法及切换装置

Also Published As

Publication number Publication date
JP6038324B2 (ja) 2016-12-07
US20160004555A1 (en) 2016-01-07
US9921869B2 (en) 2018-03-20
JPWO2015008379A1 (ja) 2017-03-02

Similar Documents

Publication Publication Date Title
EP2932407B1 (en) Method for storage, querying, and analysis of time series data
EP3502814B1 (en) Processing loads balancing of control and monitoring functions
JP6038324B2 (ja) データ処理装置およびデータ処理方法
CN105980941A (zh) 监视装置及监视方法
US10452048B2 (en) Control system and control device
Sobaszek et al. Predictive scheduling as a part of intelligent job scheduling system
WO2020072155A1 (en) Orchestration of containerized applications
CN116594349B (zh) 机床预测方法、装置、终端设备以及计算机可读存储介质
JP2018512630A (ja) 工作機械の監視方法
CN105988854A (zh) 动态编译方法及装置
Alrabghi et al. A novel framework for simulation-based optimisation of maintenance systems
Huba Some practical issues in the smith predictor design for FOTD systems
Balbastre et al. Control tasks delay reduction under static and dynamic scheduling policies
JP5149254B2 (ja) 実行可能な設定の生成
US10871759B2 (en) Machining time prediction device for predicting an execution time for tool change
US20170371908A1 (en) Automatic updating of operational tables
EP4130899A1 (en) Control device, program, and control method
Su et al. A Decentralized MILP Method for Rescheduling Semiconductor Assembly Systems with Re-Entrance and Time Window Constraints
US10088834B2 (en) Control system having function for optimizing control software of numerical controller in accordance with machining program
JP6349837B2 (ja) スケジューラ装置及びそのスケジューリング方法、演算処理システム、並びにコンピュータ・プログラム
US20160154387A1 (en) Function unit, analog input unit, and programmable controller system
CN117896417B (zh) 一种嵌入式工业物联网控制器
Žužek et al. A max-plus algebra approach for generating non-delay schedule
US20180173504A1 (en) Apparatus for Providing Program
JP2007011685A (ja) パラメータ設定装置、パラメータ設定方法およびプログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13889631

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14771064

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2015527126

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13889631

Country of ref document: EP

Kind code of ref document: A1