WO2012046316A1 - ストリームデータ処理方法及び装置 - Google Patents

ストリームデータ処理方法及び装置 Download PDF

Info

Publication number
WO2012046316A1
WO2012046316A1 PCT/JP2010/067587 JP2010067587W WO2012046316A1 WO 2012046316 A1 WO2012046316 A1 WO 2012046316A1 JP 2010067587 W JP2010067587 W JP 2010067587W WO 2012046316 A1 WO2012046316 A1 WO 2012046316A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
input
stream
operator
execution
Prior art date
Application number
PCT/JP2010/067587
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 JP2012537519A priority Critical patent/JP5480395B2/ja
Priority to PCT/JP2010/067587 priority patent/WO2012046316A1/ja
Priority to US13/824,873 priority patent/US20130226909A1/en
Publication of WO2012046316A1 publication Critical patent/WO2012046316A1/ja

Links

Images

Classifications

    • 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/248Presentation of query results
    • 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 method and apparatus for processing stream data.
  • DBMS database management system
  • the DBMS stores data to be processed in a storage and realizes highly reliable processing represented by transaction processing for the stored data.
  • DBMS it is difficult to satisfy the above-mentioned request for real-time processing because search processing is performed on all data every time new data arrives.
  • search processing is performed on all data every time new data arrives.
  • one of the most important issues of the system is how quickly it can react to fluctuations in stock prices.
  • the data search process cannot catch up with the speed of stock price fluctuations, and may miss a business opportunity.
  • Non-Patent Document 1 discloses a stream data processing system “STREAM”.
  • a query is first registered in the system, and the query is continuously executed as data arrives. Since the query to be executed can be grasped in advance, when new data arrives, high-speed processing is possible by processing only the difference from the processing result up to that point. Therefore, the stream data processing enables real-time analysis of data generated at a high rate in stock trading and the like, and it is possible to monitor and utilize the occurrence of events effective for business.
  • Stream data processing assumes input data in time order so that it can be processed simultaneously with data input, realizing real-time performance. Therefore, when data is input from nodes (computers) installed at distributed bases such as stock exchanges, base stations, and electric meters, data from different bases are not input in time order. Sorts in order of time when inputting and enables stream data processing. However, when there are many nodes at distributed bases or when the bases are geographically separated, the time order sorting at the time of data input increases memory cost and processing latency, so input data that is not in time order Patent Document 1, Patent Document 2, Patent Document 3, Patent Document 4, Non-Patent Document 2, and Non-Patent Document 3 are disclosed as countermeasures against the above. Note that the memory cost refers to the amount of memory used in a computer that is required to hold data during processing. The processing latency is a delay time from when stream data is input to a computer that processes stream data until the data is output.
  • Patent Documents 2 and 3 in input data aggregation processing that is not in time order, the arrival of input data delayed in time is not necessarily waited, and the processing result is calculated as an approximate solution, thereby increasing memory cost and latency. Suppress. However, since the consistency of data or processing cannot be maintained only by processing using an approximate solution, the scope of operations to which these Patent Documents 2 and 3 can be applied is limited.
  • Non-Patent Document 2 In Non-Patent Document 2 above, input that is not in chronological order is permitted for the stream. Then, to explicitly advance the time, a control packet is sent, and when the control packet is input to the operator, the operator processes the data up to the time of the control packet. In the process of Non-Patent Document 2, when the control packet is frequently transmitted, there is a problem that the processing capacity of the computer deteriorates due to the process of the control packet. Further, in the processing of Non-Patent Document 2, when the control packet transmission interval is widened, each operator waits for the control packet and executes the processing, which causes a problem that processing latency and memory cost increase. .
  • an object of the present invention is to suppress an increase in processing latency and an increase in memory cost while maintaining processing consistency.
  • a stream data processing apparatus comprising a processor and a memory, receiving stream data composed of input data including a time, and executing the processing of the stream data according to a pre-registered query
  • the stream data processing device includes: a data input unit that receives a plurality of input data constituting the stream data; a first key that specifies, as a data set, items of the input data that process the input data in time order; , A definition of the stream data, a query registration unit that accepts the definition of the query and generates an operator that processes the input data, an operator that processes the input data for each data set, and determines the operator by the operator
  • a data execution unit that outputs the result of processing the input data
  • the stream data processing method includes: a data set in which the query registration unit receives the first key, the query definition, and the stream data definition, and processes the items in the input data in time order.
  • the data input unit receives the input data, classifies the input data for each data set according to the item specified by the first key, and sets the data set.
  • a third step of processing by the operator, and a fourth step of generating a result processed by the operator as a single output stream. Includes a step, a.
  • FIG. 1 is a block diagram illustrating an example of a computer system according to a first embodiment of this invention. It is a block diagram which shows the 1st Embodiment of this invention and shows the input / output relationship of a stream data processing server.
  • FIG. 3 is a detailed block diagram illustrating a data execution unit of the stream data processing server according to the first embodiment of this invention.
  • FIG. 5 is an explanatory diagram illustrating an example of a stream definition according to the first embodiment of this invention. It is explanatory drawing which shows the 1st Embodiment of this invention and shows an example of query definition. It is explanatory drawing which shows the 1st Embodiment of this invention and shows an example of a data set key.
  • FIG. 1 It is a block diagram which shows the 1st Embodiment of this invention and shows an example of the execution area A of a data execution part. It is a block diagram which shows the 1st Embodiment of this invention and shows an example of the execution area
  • FIG. 1st Embodiment of this invention It is a block diagram which shows the 1st Embodiment of this invention and shows an example of the execution area A of a data execution part. It is a block diagram which shows the 1st Embodiment of this invention and shows an example of the execution area
  • FIG. 5 is a first half of a flowchart illustrating an example of processing of a data input unit according to the first embodiment of this invention. It is a latter half part of the flowchart which shows the 1st Embodiment of this invention and shows an example of a process of a data input part.
  • FIG. 5 is a first half of a flowchart illustrating an example of processing of a data execution unit according to the first embodiment of this invention. It is a latter half part of the flowchart which shows the 1st Embodiment of this invention and shows an example of a process of a data execution part.
  • FIG. 2nd Embodiment of this invention It is a block diagram which shows the 2nd Embodiment of this invention and shows an example of the execution area A.
  • FIG. It is a block diagram which shows the 2nd Embodiment of this invention and shows an example of the execution area
  • FIG. It is a flowchart which shows the 2nd Embodiment of this invention and shows an example of a process of a query registration part. It is the first half of the flowchart which shows the 2nd Embodiment of this invention and shows an example of the process of a data execution part. It is a second half part of the flowchart which shows the 2nd Embodiment of this invention and shows an example of a process of a data execution part.
  • FIG. 1 is a block diagram showing a configuration of a computer system according to the first embodiment of the present invention.
  • the transmission servers 101 to 103 are connected via a network 104 to a stream data processing server 108 that executes a stream data processing system.
  • the registration server 105 is connected to the stream data processing server 108 via the network 107.
  • the receiving server 117 is connected to the stream data processing server 108 via the network 116.
  • the networks 104, 107, and 116 may be Ethernet (registered trademark), a local area network (LAN) connected by an optical fiber, or a wide area network (WAN) including the Internet that is slower than the LAN.
  • the stream data processing server 108, the transmission servers 101 to 103, the registration server 105, and the reception server 117 can be configured by an arbitrary computer system such as a personal computer (PC) or a blade type computer system.
  • PC personal computer
  • blade type computer system such as a blade type computer system.
  • the stream data processing server 108 is a computer in which an I / O interface 115 constituting an interface unit, a central processing unit (CPU) 113 constituting a processing unit, and a memory 109 serving as a storage unit are coupled by a bus.
  • I / O interface 115 constituting an interface unit
  • CPU central processing unit
  • memory 109 serving as a storage unit
  • the stream data processing server 108 accesses the networks 104, 107 and 116 via the I / O interface 115.
  • the storage device 114 is a storage unit. Can be used.
  • the storage device 114 is directly connected via the I / O interface 115 or is connected via the network from the I / O interface 115.
  • the memory 109 stores a query registration unit 111, a data input unit 110, and a data execution unit 112 as modules constituting stream data processing. The operation of each module will be described later.
  • FIGS. 2A and 2B are block diagrams illustrating the configuration of the stream data processing server 108 according to the first embodiment.
  • 2A is a block diagram of the computer system showing the input / output relationship of the stream data processing server 108.
  • FIG. 2B is a detailed block diagram of the data execution unit 112 of the stream data processing server 108.
  • the setting data including the stream and query definition 206 and the data set key 205 described by the user 204 is stored in the registration server 105 and transmitted from the registration server 105 to the stream data processing server 108. Then, after receiving the setting data, the stream data processing server 108 generates the data set conversion table 210 and the execution region name reference table 215 from the data set key 205 in the data set key reading unit 211 of the query registration unit 111. To do.
  • the compiling unit 212 compiles the stream and query definition 206 to generate an execution tree 228.
  • the transmission servers 101 to 103 continue to transmit the input data 201 to 203 to the stream data processing server 108. .
  • the input data receiving unit 207 of the data input unit 110 receives the input data 201 to 203, and stores the received input data in the input data storage area 208.
  • the input data storage area 208 includes a queue that temporarily holds the received input data 201 to 203.
  • the partial time order sort processing unit 209 sorts the input data 201 to 203 stored in the input data storage area 208 partially in time order using the data set conversion table 210, and the sorted input data 213 is input stream. It stores in 214.
  • the data input unit 110 outputs the input stream 214 to the data execution unit 112.
  • the execution order determination unit 217 of the data execution unit 112 takes out the input data 213 stored in the input stream 214.
  • the execution order determination unit 217 refers to the execution area name reference table 215, extracts the execution area name 216 if the execution areas 218 and 219 exist, and creates a new execution area if the execution area does not exist. Is generated.
  • the execution areas 218 and 219 include a stream data storage queue 221, an ignition time reference table 222, and an execution state 223.
  • the execution order determination unit 217 stores the input data 213 in the stream data storage queue 221 of the execution area 218 pointed to by the extracted execution area name 216, and uses the firing time reference table 222 of the execution area 218 to execute the execution data 224 and The execution operator 226 is extracted.
  • the operator processing unit 227 of the data execution unit 112 executes predetermined processing using the execution data 224 extracted by the execution order determination unit 217 and the execution tree 228 from the execution operator 226.
  • the operator processing unit 227 uses the execution state 223 of the execution area 218 pointed to by the execution area name 216 when executing the process.
  • the output data 229 obtained by the execution of the operator processing unit 227 is stored in the output stream 231 by the data output unit 230.
  • the reception server 117 receives the data stored in the output stream 231. Further, the input data receiving unit 207 receives the data stored in the output stream 231 when further operator processing is performed. Next, details of the operation of the first embodiment will be described.
  • FIG. Reference numeral 301 shown in FIG. 3A is a definition of an electric meter stream in which “meter” of power, “power used”, and “installation location” of the meter are columns (or data items).
  • This stream definition 301 is a definition for the stream data processing server 108 to identify a plurality of items included in the input data 201 to 203 constituting the stream data.
  • the input data 201 to 203 includes time (or time stamp), in the present embodiment, it is assumed that time information is given to the input data 201 to 203. Was omitted.
  • This query definition 302 shown in FIG. 3B is a definition of a used power totaling query that inputs the electric meter stream definition 301 and outputs the total used power every 10 minutes for each installation location.
  • This query definition 302 is a definition for determining an operator who processes the input data 201 to 203.
  • the data set key 205 includes an input stream data set key (first key) 304 and an input data data set key (second key) 303.
  • first key an input stream data set key
  • second key an input data data set key
  • “meter” in the input data column is set as the input data data set key 303
  • “installation location” is set in the input data column as the input stream data set key 304. An example is shown.
  • the input data data set key 303 indicates that input data having the same specified column value is arranged in time order and input to the data input unit 110 of the stream data processing server 108. That is, the input data is input in a state of being arranged in order of time for each “meter”.
  • the input stream data set key 304 indicates that input data having the same specified column value is treated as a group to be processed by a query, and is processed in time order in the input stream 214 of the data execution unit 112. That is, the input data is classified by “installation location” to form a data set, and the input data for each data set is processed in time order.
  • the input stream data set key 304 indicates that the data execution unit 112 generates a number of execution areas corresponding to the type of “installation location” of the input data. In other words, a data set is configured for each type of “installation location” of the input data.
  • the method for designating the input data set key 303 and the input stream data set key 304 may be described in a query, may be instructed via a setting file or the like, or may be another method. .
  • FIG. 4 shows an example of the data set conversion table 210.
  • the data set conversion table 210 is a table for setting the relationship between the input data set key 303 and the input stream data set key 304 set in FIG. 3C for the input data stored in the input data storage area 208. .
  • FIG. 4 shows an example in which a meter is designated as the input data data set key 401 and an installation location is designated as the input stream data set key 402. From the setting of the data set key in FIG. It shows that “Tanaka family” (403), meter “meter 10” and installation location “Sato Building” (404), meter “meter 11” and installation location “Sato Building” (405) correspond to each other.
  • FIG. 5 shows an example of the execution area name reference table 215.
  • the execution area name reference table 215 shows the correspondence between the input stream data set key value 401 and the independent execution area name 502 that actually processes the input data.
  • FIG. 5 shows an example in which the installation location is designated as the input stream data set key 402, as shown in FIG. 4, and the installation location “Tanaka family”, execution region name “execution region A” (503), installation This indicates that the place “Sato Building” and the execution area name “execution area B” (504) correspond to each other.
  • FIG. 5 shows an example in which an independent execution area is generated for each input stream data set key 304 among the data set keys in FIG. 3C.
  • the input data storage area 208 “Tanaka” and “Sato”
  • the execution area name reference table 215 stores independent execution areas A and B (503, 504) for each input stream data set key value 402. Suggest to generate.
  • FIG. 6 is a diagram illustrating an example of the execution tree 228.
  • the execution tree of FIG. 6 represents the execution tree generated by the query registration unit 111 by compiling the query definition 302 for calculating the power consumption, and includes an operator RANGE 601, an operator GROUP BY 602, and an operator ISTREAM 603.
  • the execution tree shown in FIG. 6 indicates that the operator processing unit 227 of the data execution unit 112 executes RANGE 601, GROUP BY 602, and ISTREAM 603 in this order.
  • FIG. 7 is a diagram illustrating an example of input data transmitted by the transmission servers 101 to 103.
  • FIG. 7 shows input data to the electric meter stream definition 301 shown in FIG. 3A.
  • the stream data processing server 108 receives the input data 706, the input data 707, and the input data 708 in this order.
  • the input data 706 includes the time “7:59”, the meter “meter 10”, and the power consumption “50 W / min”.
  • the installation location“ Sato Building ” the input data 707 is the time“ 8:00 ”, the meter“ Meter 01 ”, the power consumption“ 100 W / min ”, the installation location“ Tanakaya ”, and the input data 708 is the time “7:59”, meter “meter 11”, power consumption “200 W / min”, and installation location “Sato Building”.
  • FIG. 8 is a diagram illustrating an example of the input data storage area 208.
  • the input data storage area 208 stores the input data received from the transmission servers 101 to 103 in the queues 805 to 807 for each input data data set key value 401 shown in FIG.
  • FIG. 8 shows input data for storing “meter” among the input data of the electric meter stream definition 301 when “meter” is designated as the input data data set key value 401 as shown in FIG.
  • a storage area 208 is shown.
  • 805 is a queue for storing the input data 706 of “Meter 10” (802)
  • 806 is a queue for storing the input data 707 of “Meter 01” (803)
  • 807 is the queue of “Meter 11” (804).
  • This is a queue for storing input data 708. That is, the data input unit 110 generates a queue for storing the input data for each input data data set key value 401 on the memory 109 and stores the input data 201 to 203 (706, 707, 708). .
  • FIG. 9 is a diagram illustrating an example of the input stream 214.
  • the input stream 214 stores input data for executing operator processing.
  • 214 is an example of an input stream generated by the data input unit 110 in accordance with the definition (301) of the electric meter stream shown in FIG. 3A.
  • FIG. 10A and FIG. 10B are diagrams showing examples of execution areas 218 and 219 of operator processing generated independently.
  • the execution area is generated by the data execution unit 112 for each value 402 of the input stream data set key.
  • the execution area A (218) is generated as the execution area of the installation location “Tanaka family” with the input stream data set key value 402.
  • the input stream data set key value 402 is set to the installation location “ An example is shown in which execution area B (219) is generated as the execution area of “Sato Building”.
  • stream data storage queues 1002, 1015 for storing the input stream 214 In each execution area 218, 219, stream data storage queues 1002, 1015 for storing the input stream 214, firing time reference tables 1004, 1017 in which the time for starting the operator processing for the input stream 214 is set, and the state of the operator Including execution states 1008 and 1021.
  • the generic name of the execution states 1008 and 1021 is 223.
  • the execution state 223 can store, for example, an operator processing result, and can represent the operator state by the stored value.
  • Stream data storage queues 1000 and 1015 are queues that store input data 213 having the input stream data set key value 402 of the input stream 214. Note that a generic name of the stream data storage queues 1000 and 1015 is represented by reference numeral 221.
  • the firing time reference tables 1004 and 1017 are the operators 1005 and 1018 that execute processing of the input data stored in the stream data storage queues 1002 and 1015, and the firing times 1006 and 1019 that are times when the operators are executed. Is stored.
  • the firing time 1006 of the operator RANGE in the execution area A (218) is as shown in the power usage totalization query definition 302 of FIG. Since the counting period is a 10-minute window, the next firing time becomes “8:01” (1007) by “7: 51 + 10 minutes” obtained by adding 10 minutes to the previous execution time. Similarly, the firing time of the operator RANGE in the execution area B is the same as the 10 minutes window when the time of the oldest data in the operator RANGE is “7:50”. Becomes “8:00” (1029). These firing times can be set by the execution order determination unit 217.
  • Execution states 1008 and 1021 indicate states used for processing of each operator in processing of input data stored in the stream data storage queues 1002 and 1015.
  • the execution state A1 (1011) and the execution state B1 (1024), which are the execution states of the operator RANGE, are 10-minute windows. Therefore, input data at a time within 10 minutes from the current time is stored in each execution area. To do.
  • the execution state A2 (1012) and execution state B2 (1025) indicating the execution state of the operator GROUP BY store the total value of input data at a time within 10 minutes from the current time.
  • FIG. 11 shows an example of the execution data 224 and the execution operator 226.
  • the execution data 224 is data executed by the operator processing unit 227
  • the execution operator 226 is an operator that executes processing for the execution data 224 by the operator processing unit 227.
  • 11 exemplifies the input data 706 shown in FIG. 7 as the execution data 224 and the operator RANGE 601 shown in FIG. 6 as the execution operator 226.
  • FIG. 12 is a diagram illustrating an example of the output data 229 and the output stream 231.
  • the output data is an operator processing result acquired by the receiving server 117 or the input data receiving unit 207.
  • the output stream 231 is an area for storing output data.
  • reference numeral 231 denotes an output stream for storing output data 1202 to 1204 of the power usage total query definition 302.
  • the processing results of the input data 706, the input data 707, and the input data 708 are output data 1203, output data 1204, Output data 1202.
  • the generic name of the output data 1202 to 1204 is represented by reference numeral 229 shown in FIG. 2B.
  • FIG. 13 is a flowchart illustrating an example of processing of the query registration unit 111.
  • the query registration unit 111 receives the stream definition 301 and query definition 302 defined by the registration server 105, compiles them, and processes the input data and the operator.
  • Execution tree 228 (FIG. 6) is generated.
  • the query registration unit 111 stores the generated execution tree 228 in the operator processing unit 227 (1307).
  • the query registration unit 111 After compilation, the query registration unit 111 starts reading the data set key 205 in the data set key reading unit 211 (1301).
  • the data set key reading unit 211 receives the input data set key 303 and the input stream data set key 304 constituting the data set key 205 from the registration server 105 (1302).
  • the data set key reading unit 211 generates an execution area name reference table 215 (FIG. 5) indicating the correspondence between the received input stream data set key value 402 and the execution area name 502 (1303).
  • the generated execution region name reference table 215 may include data such as the entries 503 and 504 illustrated in FIG. 5 or may be an empty table in which no data exists.
  • the query registration unit 111 ends the data set key reading unit (1306).
  • a data set conversion table 210 (FIG. 4) is generated (1305).
  • the generated data set conversion table 210 may contain data such as entries 403 to 405 shown in FIG. 4, or may be an empty table in which no data exists. *
  • the query registration unit 111 compiles the stream definition 301 and the query definition 302 defined by the registration server 105 to generate an operator and an execution tree 228, and the data from the data set key 205 defined by the registration server 105.
  • a set conversion table 210 and an execution area name reference table 215 are generated. This process can be executed when the query registration unit 111 receives a stream and query definition 206 and a data set key 205 from the registration server 105.
  • FIG. 14A and 14B are flowcharts showing an example of processing performed in the data input unit 110.
  • FIG. In the data input unit 110 first, the input data receiving unit 207 (1401) receives the input data 201 to 203 from the transmission servers 101 to 103 (1402).
  • the data input unit 110 determines whether or not the data set conversion table 210 exists (1403). When the data set conversion table does not exist, the data input unit 110 stores the input data 201 to 203 in the input stream 214 (1405), outputs the input stream 214 to the data execution unit 112, and then receives the input data reception unit. The process of 207 is terminated (1406).
  • the data input unit 110 executes the following processing. First, the data input unit 110, when the input data data set key value 401 exists in the items of the input data 201 to 203 in the data set conversion table 210 (1404), the value 401 of the input data data set key 401 Accordingly, the input data is stored in the queue of the input data storage area 208 (1408), and the processing of the input data receiving unit 207 is ended (1409).
  • FIG. 4 and FIG. 8 show the data set conversion table 210 and the input data storage area 208 when the input data 708 shown in FIG. 7 is received by the data input unit 110 (when it arrives).
  • meter is designated as the input data set key, and the value of the meter 703 in the input data 708 shown in FIG. 7 is “meter 11”.
  • the unit 110 creates a queue 807 in the input data storage area 208 and stores the input data 708.
  • step 1404 if the data set key value 401 for the input data 201 to 203 does not exist in the data set conversion table 210, the input received by the data input unit 110 in the data set conversion table 210. A data set key value 401 for input data and a data set key value 402 for input stream are stored. Further, the data input unit 110 adds a queue corresponding to the input data data set key value 401 of the input data to the input data storage area 208 (1407).
  • the data input unit 110 stores the input data in the queue of the input data storage area 208 in accordance with the input data data set key value 401 (1408), and ends the processing of the input data receiving unit 207 (1409).
  • the input data receiving unit 207 stores the dummy data input data set key value 401 and the input stream data set key value 402 in the data set conversion table 210 in the same manner as the data input described above.
  • a queue corresponding to the input data data set key value 401 for dummy data may be added to the storage area 208.
  • input data data set key value 401, input stream data set key value 402, time and dummy data having an end flag can be input, and the following processing can be executed by the input data receiving unit 207.
  • the input data receiving unit 207 reads an end flag.
  • the data set conversion table 210 has a data set to which the input data extracted by the input data receiving unit 207 from the input data data set key value 401 of the dummy data belongs.
  • the input data set key value 401 and the input stream data set key value 402 for the dummy data are deleted from the data set conversion table 210.
  • the queue corresponding to the input data data set key value 401 of the dummy data is deleted from the input data storage area 208.
  • the entry of the data set conversion table 210 and the queue of the input data storage area 208 can be deleted. Thereby, it is possible to prevent the amount of memory 109 used in the data input unit 110 from becoming excessive.
  • the queue of the input data storage area 208 can be generated by the data input unit 110 in the order of arrival of data, as indicated by reference numerals 805 to 807 shown in FIG.
  • the data input unit 110 generates a queue for each value of the input data data set key value 401 (“meter” in the present embodiment).
  • the data input unit 110 stores a queue 805 that stores input data of “Meter 10”, a queue 806 that stores input data of “Meter 01”, and input data of “Meter 11”.
  • generated the queue 807 is shown.
  • input data is stored by being classified for each “meter” in the order of arrival at the data input unit 110. That is, the data input unit 110 classifies the input data for each item specified by the input data data set key value 401 and stores it in the queues 805 to 807.
  • step 1404 if the data set conversion table 210 exists, the processing of the partial time order sort processing unit 209 is started (1410).
  • the partial time order sort processing unit 209 first compares the time of the head data of the queue in which data having the same input stream data set key value 402 is stored in the input data storage area 208 (1411). In this process, the time (first time 702 in FIG. 7) of the first input data stored in the queue of the input data storage area 208 having different input data data set key values 401 and the same input stream data set key values 402 is partially stored. The target time order sort processing unit 209 performs comparison.
  • the partial time order sort processing unit 209 stores the input data shown in FIG. 7 in the queues 805 to 807 of the input data storage area 208 and then sets the input stream data set key value 402 as the first key.
  • Comparing time 702 of input data with the same “installation location” and different input data data set key value 401 “meter” as the second key.
  • the partial time order sort processing unit 209 determines that the oldest data (hereinafter, the oldest data) among the input data having the same input stream data set key value 402 in the input data storage area 208 is obtained. It is determined whether or not there is data (1412).
  • the oldest data is acquired from the queues 805 to 807 of the input data storage area 208 and stored in the input stream 214 (1413). Then, the processes of steps 1411 to 1413 are repeated as long as the oldest data exists. When the oldest data is exhausted, the process proceeds to step 1402 to receive new input data from the transmission server.
  • FIG. 9 shows the input stream 214 after the input data 708 is received by the data input unit 110.
  • the “installation location” of the meter is designated as the input stream data set key 304, and as shown in FIG. 8, the installation location of the meter of the input data 708 is “Sato Building”. Therefore, the times of the head data 706 and 708 in the queues 805 and 807 in which the input data whose installation location is “Sato Building” are stored are compared. Then, since there is no data in the queue 807 that is older than the data 706 in the queue 805, the oldest data is set as data 706 and stored in the input stream 214.
  • the partial time order sort processing unit 209 sorts the input data 706 and 708 in which the input stream data set key value 402 is equal to “Sato Building” in order of oldest time. Is output to the data execution unit 112.
  • the partial time order sort processing unit 209 has the same “installation location” designated by the input stream data set key value 402 as the first key from the input data of FIG. Input data with different “meters” specified by a certain input data data set key value 401 is sorted in order of oldest time 702 to generate an input stream 214, and the input stream 214 is output to the data execution unit 112. Therefore, the partial time order sort processing unit 209 outputs the input stream 214 in which the input data is grouped and sorted in order of time for each “installation location” specified by the input stream data set key value 402 as the first key. can do.
  • FIG. 16A and 16B show time charts of the data input unit 110 and the data execution unit 112 when the input data 707 to 708 arrive at the stream data processing server 108.
  • FIG. 16A and 16B show time charts of the data input unit 110 and the data execution unit 112 when the input data 707 to 708 arrive at the stream data processing server 108.
  • the data input unit 110 stores the input data 706 and the input data 708 in the input stream 214 and outputs them to the data execution unit 112 as shown in FIG.
  • the data set key value 402 of the input data 707 is “Tanaka family”, and the input data data set key value is other than “meter 01”. Since there is no input data for the meter, the input data 707 which is the oldest data in the data of “Meter 01” becomes the oldest data in the “Tanaka family”, so the input data 707 is input to the input stream 214. Store and output to the data execution unit 112.
  • FIG. 15A and 15B are flowcharts showing an example of processing of the data execution unit 112.
  • FIG. This process can be started when the input stream 214 is received from the data input unit 110.
  • the execution order determination unit 217 acquires the input data 213 from the input stream 214 output from the data input unit 110. Then, the execution order determination unit 217 refers to the execution area name reference table 215 from the input stream data set key value 402 of the input data 213 and extracts the execution area name corresponding to the input stream data set key value 402. , It is set as the execution area of the data set to which the input data 213 belongs. At that time, the execution order determination unit 217 may check whether or not the input data 213 is arranged in time order in the same data set (input stream 214).
  • the execution order determination unit 217 determines whether or not there is an execution region corresponding to the input stream data set key value 402 of the input data 213 in the execution region name reference table 215 (1503).
  • the execution order determination unit 217 stores the input data in the stream data storage queue 221 of the execution area to which the input data 213 belongs (1505). .
  • the execution order determination unit 217 determines that the input stream data set An execution area corresponding to the key value 402 is generated, and the input stream data set key value 402 and the generated execution area name are added to the execution area name reference table 215 (1504).
  • the execution area generated by the execution order determination unit 217 is set as the execution area of the data set to which the input data 213 belongs, and the input data 213 is stored in the stream data storage queue 221 of the execution area (1505).
  • the firing time reference table 222 for the execution area is an empty table such as 1007 where there is no entry.
  • the execution state 223 of the execution area is also an empty area where no entry such as 1011 and 1012 exists.
  • the operator processing unit 227 updates the firing time reference table 222 and the execution state 223.
  • the input data 707 is stored in the stream data storage queue 1002 of the execution area A218 illustrated in FIG. 10A because the input stream data set key value 402 is “Tanaka family”.
  • the input data 708 is stored in the stream data storage queue 1015 in the execution area B219 of FIG. 10B.
  • the execution order determination unit 217 When the dummy data is input, the execution order determination unit 217 generates an execution area corresponding to the dummy data input stream data set key value 402, and the execution area name reference table 215 stores the dummy data input stream. The data set key value 402 and the generated execution area name may be added. Further, by inputting dummy data having an end flag, the following processing can be executed by the execution order determination unit 217. As an example of processing, the execution order determination unit 217 first reads an end flag. When the end flag is a predetermined value, if there is an execution area corresponding to the dummy data input stream data set key value 402, the execution area is deleted and the input stream name is read from the execution area name reference table 215. The data set key value 402 and the execution area name 502 are deleted.
  • the execution order determination unit 217 refers to the stream data storage queue 221 in the execution area of the data set to which the input data 213 belongs, and the time of the top data (in the case of a query that processes data of a plurality of input streams, The time of the head data of the plurality of stream data storage queues) is compared with the firing time of each operator in the firing time reference table 222, and if the oldest data exists in the stream data storage queue 221 (1506), This data is assumed to be execution data.
  • the execution order determination unit 217 also sets the first operator of the execution tree 228 as the execution operator when the execution data 224 is the head data of the stream data storage queue 221. If the current time is data corresponding to the ignition time of the operator, the execution order determining unit 217 sets the operator corresponding to the ignition time as the execution operator (1507), and the execution order determining unit 217 The process ends (1508).
  • step 1506 if there is no data with the oldest time, the execution order determination unit 217 returns to the process of step 1502 again to acquire the next input data 213 from the input stream 214, and the same as above. Repeat the process.
  • the execution order determination unit 217 stores the input data 706 in the stream data storage queue 1016 in the execution area B 219, the time “7:59” of the input data 706 and the firing time reference table 222 are stored.
  • the execution order determination unit 217 compares the firing time “8:00” (1020) of the operator RANGE, and the time “7:59” of the input data 706 is old, so that the execution data 224 is set as the input data 706 and the execution tree 228
  • the first operator 601 in FIG. 6 is commanded to the operator processing unit 227 as the execution operator 226.
  • the operator processing unit 227 processes the execution data 224 with the execution operator 226 using the execution state 223 on the execution area corresponding to the input stream data set key value 402 of the execution data 224 (1509).
  • the data execution unit 112 performs processing of the data output unit 230 that outputs the processing result of the execution operator 226 (1510).
  • the data output unit 230 determines whether there is output data for the processing result of the execution operator 226 (1511). If there is no output data, the process proceeds to step 1513 and the process of the data output unit 230 is terminated. On the other hand, if the output data exists, the data output unit 230 performs Step 1512.
  • the data output unit 230 When the processing result of the execution operator 226 is acquired as output data by the receiving server 117 or the input data receiving unit 207, the data output unit 230 outputs the output data 229 that is the processing result of the execution operator 226 for each execution region. Are merged into a single stream (1512). The data output unit 230 merges the plurality of output data 229 and outputs it as an output stream 231. When the processing of the data output unit 230 ends (1513), the data execution unit 112 resumes the processing of the execution order determination unit 217 (1514).
  • step 1515 the execution order determination unit 217 determines whether or not the next operator exists in the execution tree 228 (1515). If the next operator exists in the execution tree 228, the process proceeds to step 1516. If the operator does not exist, the process returns to step 1506 to repeat the above processing. In step 1516, the execution order determination unit 217 determines the next operator of the execution tree 228 as the execution operator 226, returns to step 1508, and repeats the above processing.
  • the data execution unit 112 sets the next operator as the execution operator 226 and uses the same data set as the execution data 224 that has been processed (data set key for input stream).
  • the next data at the same time is the execution data 224, and the processing is continued using the execution state 223 on the execution area corresponding to the input stream data set key value 402 of the execution data 224.
  • step 1515 if there is no next operator in the execution tree 228, the data execution unit 112 extracts executable data in step 1506 and processes it as described above. If the executable data cannot be extracted in 1506, the input data is acquired from the input stream in 1502, and the operation is performed as described above.
  • the processing result 1603 is set as the execution data 224, and the next operator GROUP BY (602 ) Is executed as the execution operator 226.
  • the data execution unit 112 further performs an operator process using the processing result 1604 of the operator GROUP BY (602) as the execution data 224, the next operator ISTREAM (603) as the execution operator 226, and the processing result 1203 to the receiving server 117. In order to transmit, it is stored in the output stream 231 as output data. Further, since there is no next operator in the execution tree 228 (FIG. 6), the operator processing is subsequently executed using the input data 708 as the execution data 224.
  • the first embodiment described above is one implementation method of the present invention based on the operator scheduling disclosed in Patent Document 4, and there are various other implementation methods.
  • the firing time reference tables 1004 and 1017 and the stream data storage queues 1002 and 1015 are divided for each input stream data set key value 402 without dividing the execution areas 218 and 219 for each input stream data set key value 402.
  • the execution order determination unit 217 refers to the firing time reference table 222 and the stream data storage queue 221, and is common to the above-mentioned Patent Document 4, but the execution region name reference table 215 Unlike Patent Document 4, the configuration is unique to the present invention in that the execution region name 216 and the execution regions 218 and 219 are referred to.
  • the data set key reading unit 211, the data set key 205, the partial time order sort processing unit 209, the data set conversion table 210, and the data output unit 230 are included. This is a configuration unique to the present invention.
  • the stream data processing server 108 that processes the input data 201 to 203 including time (hereinafter simply referred to as input data) receives the data set key 205 and generates the data set conversion table 210.
  • the data set conversion table 210 is input in the state of being arranged in time order with the input stream data set key 402 (first key) that defines the type (group) of input data processed in the same execution area.
  • Input data data set key 401 (second key) defining two items of input data to be input.
  • the query registration unit 111 receives the stream and query definition 206, generates an execution tree 228, and outputs the execution tree 228 to the data execution unit 112.
  • the data input unit 110 of the stream data processing server 108 collects the input data for each input data data set key 401 and then sorts the input data in order of time for each input stream data set key 402 to generate the input stream 214.
  • the data execution unit 112 sets execution areas 218 and 219 as areas for processing input data on the memory 109 for each input stream data set key 402 of the data set conversion table 210. In other words, an execution area is generated for each group (data set) of input data classified by the item of the input stream data set key 402.
  • an operator corresponding to the input data is determined in the execution area for each type (data set) of the input data included in the input stream 214, a predetermined query process is performed by the operator, and the output stream 231. Is output.
  • the input data 213 can be processed by the operator in the execution areas 218 and 219 on the memory 109 that are different for each input stream data set key value 402 as the first key. That is, only one input data having the same input stream data set key value 402, which is the first key, can be processed by the operator while maintaining the time order.
  • the execution areas 218 and 219 of the data execution unit 112 can input the input data with different input stream data set key values 402 as the first key without waiting for the arrival of the input data delayed in time. Therefore, it is possible to suppress an increase in processing latency while maintaining processing consistency.
  • the data input unit 110 accepts a plurality of input data from a plurality of transmission servers 101 to 103 by sorting the input data in time order for each data set before executing the query in the data execution unit 112. In the same way as the data set in one server, the execution order can be determined.
  • the data execution unit 112 can dynamically generate an execution area on the memory 109 during stream data processing. In other words, even if the stream data processing is started, the stream data processing server 108 does not generate an execution area until the input data corresponding to the input stream data set key 402 is actually received. For this reason, since the stream data processing server 108 of the present invention secures only the execution area necessary for the stream data processing on the memory 109, it is possible to suppress an increase in memory cost as in the conventional example.
  • FIG. 17A and 17B are block diagrams of the second embodiment.
  • FIG. 17A is a block diagram of the computer system showing the input / output relationship of the stream data processing server 108.
  • FIG. 17B is a detailed block diagram of the data execution unit 112 of the stream data processing server 108.
  • the data set key reading unit 211 of the query registration unit 111 generates the executable data reference table 1701 from the data set key 205 and the execution tree 228 generated by the compiling unit 212.
  • the data input unit 110 performs the same processing as in the first embodiment.
  • the execution order determination unit 217 of the data execution unit 112 extracts the execution data 224 and the execution operator 226 using the executable data reference table 1701.
  • the execution areas 218A and 219A differ from the first embodiment in that the firing time reference table is deleted.
  • the operator processing unit 227 and the data output unit 230 of the data execution unit 112 perform processing in the same manner as in the first embodiment.
  • symbol as FIG. 2A and FIG. 2B was attached
  • FIG. 18 is an explanatory diagram showing an example of the executable data reference table 1701.
  • the executable data reference table 1701 is generated by the query registration unit 111 and updated by the data execution unit 112.
  • the executable data reference table 1701 indicates whether or not each operator of the execution tree 228 has executable data for each input stream data set key value 402.
  • 19A and 19B are block diagrams illustrating an example of the execution areas 218A and 219A. Unlike the execution areas 218 and 219 of the first embodiment, the execution areas 218A and 219A in the second embodiment do not include the firing time reference tables 1004 and 1017, and the stream data storage queues 1002 and 1015 and the execution state 1008. , 1021.
  • FIG. 20 is a flowchart illustrating an example of processing of the query registration unit 111. This flowchart is obtained by adding Step 2001 between Step 1303 and Step 1304 of the flowchart shown in FIG. 13 of the first embodiment, and other processes are the same as those in FIG. In addition, below, the overlapping description is abbreviate
  • the executable data reference table 1701 is generated from each operator included in the list (2001).
  • the generated executable data reference table 1701 may include data such as 1805 and 1806 shown in FIG. 18, or may be an empty table in which no data exists.
  • Other processes at the time of query registration are the same as those in the first embodiment (1301 to 1307).
  • the processing of the data input unit 110 is the same as in the first embodiment.
  • FIGS. 21A and 21B are flowcharts showing an example of processing of the data execution unit 112.
  • FIG. The processes in FIGS. 21A and 21B are processes performed by the data execution unit 112 in place of FIGS. 15A and 15B in the first embodiment.
  • the stream data storage queue is executed according to the procedures 1502 to 1505 (similar to the first embodiment). Continue to store input data in.
  • the execution order determination unit 217 determines that the input data 213 of the input stream 214 is input to the input stream data set key value 402 as in FIG. 15A of the first embodiment. Stored in the stream data storage queue 221 of each execution area 218A, 219A.
  • FIG. 22A and 22B show time charts of the data input unit 110 and the data execution unit 112.
  • the data execution unit 112 obtains input data 707, 706, and 708 continuously from the input stream 214 output from the data input unit 110 by the processing of the step 2101, unlike the first embodiment.
  • 707 stores the stream data storage queue 1002 in the execution area A and the input data 706 and 708 in the stream data storage queue 1015 in the execution area B.
  • the execution order determination unit 217 of the data execution unit 112 sets the first operator of the execution tree 228 as the execution operator 226 (2102 in FIG. 21A).
  • the data execution unit 112 sets the time of the top data in the stream data storage queue 221 of the execution area of the data set to which the acquired input data 213 belongs (in the case of a query that processes data of a plurality of input streams, a plurality of stream data The time of the first data in the storage queues 1002 and 1015) is compared, and the stream data storage queue in which the data with the oldest time exists is selected. Then, the data execution unit 112 corresponds to the input data set (input stream data set key 402) in the executable data reference table 1701 (FIG. 18) for the input data 213 in the selected stream data storage queue. An “O” flag is added to the item of the execution operator, and the executable data reference table 1701 is updated.
  • the execution order determination unit 217 extracts the input data 213 having the oldest time from the input data 213 of the stream data storage queues 1002 and 1015, and corresponds to the input data 213 and the execution tree 228.
  • the entry of the executable data reference table 1701 is updated by writing a value indicating that it is executable (for example, “ ⁇ ”).
  • the execution order determination unit 217 refers to the executable data reference table 1701 after the update, and in the execution operator 226, when there is executable data in any data set (2103 in FIG. 21B), Using the execution state 223 on the execution area of the data set, the execution data 224 is processed by the execution operator 226 (1509 in FIG. 21B).
  • the execution order determination unit 217 resets by deleting the corresponding “ ⁇ ” flag in the executable data reference table (FIG. 18). (2106 in FIG. 21B).
  • the execution order determination unit 217 processes the execution operator 226 and then acquires the processing result as output data in the reception server 117 or the input data reception unit 207 (1511), as in the first embodiment. Merge into a single stream (1512).
  • the execution order determination unit 217 repeats the processing from step 2103 to step 1512 described above. If the execution data 224 is not obtained in step 2103, the execution order determination unit 217 sets the next operator of the execution tree 228 as the execution operator 226 (2104), and performs the process of step 2103. When the next operator no longer exists in the execution tree 228 in step 2104, the execution order determination unit 217 returns to the processing in step 1502, acquires the input data 213 from the input stream 214, and processes it in the same manner as described above.
  • FIGS. 19A and 19B are stream data storage queues 221 (1002, 1016) in which input data 707, 706, and 708 are stored.
  • the execution order determination unit 217 of the data execution unit 112 is the first operator of the execution tree 228 (FIG. 6) after storing the input data 213 in the stream data storage queue 221 as shown in FIGS. 22A and 22B.
  • the operator RANGE 601 is determined as the execution operator 226.
  • the execution order determination unit 217 refers to the executable data reference table 1701 (FIG. 18), and the data set “Sato Building” can be executed by the operator RANGE 601 (the flag “ ⁇ ” is stored).
  • the execution data is assumed to be 706.
  • the execution order determination unit 217 then processes the execution data 706 by the RANGE 601 that is the execution operator 226 in the execution area B, and then deletes the flag “ ⁇ ” of the operator RANGE of the data set “Sato Building” in the executable data reference table 1701. (Reset), set the flag “ ⁇ ” in the operator GROUP BY of the same data set, and update the executable data reference table 1701.
  • the execution order determination unit 217 executes the data 708 of the data set “Sato Building” as execution data, and then executes the data 707 of the data set “Tanaka family”.
  • the executable data reference table 1701 is updated in the same manner as described above.
  • the execution order determination unit 217 finally processes the execution data 1604, 1606, and 1602 by the operator ISTREAM 603, and then outputs the processing results as output data 1203, 1202, and 1204, as in the first embodiment. Store in stream.
  • the processing performed by the data execution unit 112 is the same operator as the execution operator 226 as long as there is execution data 224 of each operator in the round robin operator scheduling disclosed in Non-Patent Document 3. It is a technique to process. In addition to the above, there are a scheduling method in which the same operator is set as the execution operator 226 for a certain time or a certain number of times, and a scheduling method in which an operator having executable data is randomly executed as an execution operator. However, the present invention can be similarly realized.
  • the execution order determination unit 217 refers to the stream data storage queue 221 in common with Non-Patent Document 3.
  • the execution area name reference table 215, the execution area name 216, and the execution area 218 are used. 219, which differs from Non-Patent Document 3 in that it refers to the executable data reference table 1701.
  • the stream data processing server 108 includes a data set key reading unit 211, a data set key 205, a partial time order sort processing unit 209, a data set conversion table 210, and a data output.
  • the point including the portion 230 is a structural feature.
  • FIG. 23A and 23B are block diagrams showing a computer system according to the third embodiment.
  • FIG. 23A is a block diagram showing the input / output relationship of the stream data processing server 108.
  • FIG. 23B is a detailed block diagram of the stream data processing server 108.
  • the user 204 in the query registration unit 111, specifies the maximum processing data number 2301, and the specified maximum processing data number 2301 is stored in the registration server. The data is transmitted from 105 to the stream data processing server 108.
  • the query registration unit 111 receives the data set key 205, the stream and query definition 206, and the maximum number of data sets 2301 from the registration server 105 in the stream and query replication unit 2302, and generates a plurality of streams and query definition 2303. .
  • the compiling unit 212 generates a plurality of execution trees 228 from the plurality of streams and the query definition 2303, and transfers each execution tree 228 to the plurality of data execution units 112.
  • 23A and 23B show an example in which the plurality of data execution units 112 are configured by three data execution units # 1 to # 3, but any number of data execution units 112 can be provided.
  • the input data partially sorted in the time order by the partial time order sort processing unit 209 is converted according to the data set and stream correspondence table 2305. And stored in the input streams 214 of the plurality of data execution units 112, respectively.
  • the plurality of data execution units (# 1 to # 3) 112 process the input stream 214 in the same manner as the conventional stream data processing system, store the output data 229 of the processing result in the output stream 231 and output it.
  • the stream merge unit 2306 acquires the output data 229 from the output streams 231 of the plurality of data execution units 112 and stores them in the output queue 2307.
  • the output data 229 stored in the output queue 2307 is transmitted to the receiving server 117 and the input data receiving unit 207.
  • FIG. 24 shows an example of the maximum number of data sets 2301.
  • the maximum data set number 2301 by the query registration unit 111 represents the number of values that can be set in the input stream data set key 402.
  • reference numeral 2301 indicates that the maximum number of data sets is 3, and the input stream data set key is “installation location”, which indicates that the maximum number of installation locations is 3.
  • the maximum number of data sets 2301 indicates the number of input streams 214 of the data execution unit 112.
  • FIG. 25 shows an example of a correspondence table 2305 between the data set of the data input unit 110 and the stream.
  • the data input unit 110 generates different input streams 214 corresponding to the plurality of data execution units # 1 to # 3 for each input stream data set key value, and stores the input data.
  • a data set / stream correspondence table 2305 shows a correspondence relationship between the input stream data set key value 2501 and the input stream 2502 storing the input data having the input stream data set key value. For example, an entry 2503 in the figure indicates that input data whose input stream data set key value 2501 is “Tanakaya” is stored in the input stream “electric meter 1”.
  • An entry 2504 indicates that input data whose input stream data set key value 2501 is “Sato Building” is stored in the input stream “electric meter 2”.
  • An entry 2505 indicates that there is no input data to be stored in the input stream “electric meter 3”.
  • the input stream “Electric meter 1” corresponds to the input stream 214 of the data execution unit # 1
  • the input stream “Electric meter 2” corresponds to the input stream 214 of the data execution unit # 2
  • the input stream “Electric meter 3” corresponds to the input stream 214 of the data execution unit # 3.
  • FIG. 26 shows an example of the output queue 2307.
  • the output queue 2307 is a queue that stores output data 229 to be transmitted to the receiving server 117 and the input data receiving unit 207.
  • FIG. 26 shows an example in which output data 1202 to 1204 are stored in the output queue 2307.
  • FIGS. 27A to 27F show an example of a duplicate stream and query definition 2303 of the query registration unit 111.
  • the duplicate stream and query definition 2303 is a stream and query definition 206 (FIGS. 3A and 3B) specified by the user on the registration server 105, and the query definition is duplicated by the stream and query duplication unit 2302, and the stream after duplication Name, stream definition with changed query name, and query definition.
  • 27A, 27C, and 27E show the electric meter 1 to 3 streams 2701, 2703, and 2705 of the data set and stream correspondence table 2305 shown in FIG. 25.
  • the definition of each stream is a stream and query duplication unit 2302.
  • the electric meter stream definition 301 of FIG. 3A is duplicated into three, and the stream names are changed respectively.
  • FIG. 27B, FIG. 27D, and FIG. 27F show power usage 1 to 3 queries 2702, 2704, and 2706 corresponding to the electricity meter 1 to 3 streams, and the stream and query replication unit 2302 uses the usage shown in FIG. 3B.
  • This is a query definition in which the power aggregation query definition 302 is duplicated into three and the query name is changed.
  • FIG. 28 is a flowchart illustrating an example of processing of the query registration unit 111.
  • the query registration unit 111 receives the data set key 205 from the registration server 105 by the data set key reading unit 211 (2801, 1302).
  • the query registration unit 111 generates a data set & stream correspondence table 2305 from the input stream data set key 304 of the data set key 205 shown in FIG. 3C (2802).
  • the generated data set & stream correspondence table 2305 may include data such as entries 2503 to 2505 in FIG. 25, or may be an empty table in which no data exists.
  • the query registration part 111 produces
  • the query registration unit 111 receives the stream and query definition 206 and the maximum number of data sets 2301 from the registration server 105 in the stream and query replication unit 2302, and defines The stream and the query are duplicated by the number corresponding to the value of the maximum data set number 2301, and the names are changed to generate a plurality of streams and the query definition 2303 (2804).
  • the compiling unit 212 of the query registration unit 111 compiles the plurality of copied streams and the query definition 2303 to generate a plurality of execution trees 228 (2805).
  • the generated plurality of execution trees 228 are stored in the operator processing unit 227 in the different data execution units # 1 to # 3.
  • the query registration unit Reference numeral 111 denotes duplicate streams (electric meter 1 to 3 streams) 2701, 2703, and 2705 shown in FIGS. 27A, 27C, and 27E, and query definitions (used power aggregation 1 to 3 queries) shown in FIGS.
  • 27B, 27D, and 27F. ) 2702, 2704, 2706 are generated.
  • the compiling unit 212 generates three execution trees 228 (FIG. 6) from the duplicate stream and the query definitions 2701 to 2706.
  • the generated execution trees 228 are output from the query registration unit 111 to the data execution units # 1 to # 3.
  • FIG. 29 is a flowchart showing an example of processing of the data input unit 110.
  • input data reception processing is performed using the data set conversion table 210, and an input stream data set key value 402 (FIG. 4). ), The input data is sorted in time order (1411). Then, after the partial time order sort processing unit 209 of the data input unit 110 finishes the partial time order sort processing (2902), the stream distribution processing unit 2304 starts processing (2903).
  • the stream distribution processing unit 2304 extracts the input stream 2502 to which the data belongs by referring to the data set & stream correspondence table 2305 from the input stream data set key value 2501 of the input data with the oldest time (2905), The data is stored in the input stream 214 (2907).
  • step 2905 when the input stream 2502 to which the data belongs is not extracted, the stream distribution processing unit 2304 stores the data set key value 2501 for the input stream of the data and the data set in the data set & stream correspondence table 2305.
  • An unassigned input stream name 2502 is added (2906), and the data is stored in the input stream (2907).
  • the input stream 2502 for each input stream data set key value 2501 is processed by a plurality of data execution units # 1 to # 3, and the processing result is stored in the output stream 231. .
  • FIG. 31 shows a time chart of the data input unit 110, the data execution unit (# 1, # 2) 112, and the stream merge unit 2306.
  • the data input unit 110 receives the input data 706 to 708, and inputs the input data 707 of the data set “Tanakaya” and the input data 706 and 708 of the data set “Sato Building” into a data set & stream correspondence table 2305 (FIG. 25) and stored in the input streams 2502 (214) of the independent data execution units # 1 and # 2.
  • the output data 1204 and the output data 1203 and 1202 are stored in the output stream 231.
  • FIG. 30 is a flowchart showing an example of processing of the stream merge unit 2306.
  • the stream merge unit 2306 (3001) as long as output data exists in any one of the output streams 231 of the data execution units # 1 to # 3 (3002), the output data is sent to a single output queue 2307 regardless of the output stream. (3003).
  • the processing results of the input data 706 to 708 are stored as output data 1202 to 1204 in the output queue 2307.
  • the output data 1202 to 1204 stored in the output queue 2307 is transmitted to the reception server 117 at a predetermined timing (for example, a predetermined cycle).
  • the third embodiment described above can achieve the same effects as the first embodiment without changing the conventional stream data processing engine (data execution units # 1 to # 3).
  • the maximum number of data sets 2301 is not specified, and as the number of input stream data set key values 2501 increases during the execution of processing by the data execution units # 1 to # 3, the stream and query Duplicate definition. It is also possible to compile the copied stream and query and register the generated execution tree 228.
  • the setting information such as the data set key 205 and the stream and query definition 206 is received from the registration server 105.
  • the stream data processing server 108 is provided with an input device. The setting information may be received from the input device.
  • the present invention can be applied to a computer system that performs stream data processing on input data including time.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 時刻が含まれた入力データで構成されるストリームデータを処理するストリームデータ処理装置を提供するもので、前記ストリームデータを構成する入力データを受信するデータ入力部と、入力データを時刻順に処理する前記入力データの項目をデータセットとして指定する第1のキーと、前記ストリームデータ定義及びクエリ定義を受け付けて前記入力データを処理するオペレータを生成するクエリ登録部と、前記データセット毎に前記入力データを処理するオペレータを決定し、当該オペレータで前記入力データを処理した結果を出力するデータ実行部と、を有し、前記データ入力部が、前記第1のキーで指定された項目で、前記受信した入力データを前記データセット毎に分類し、前記データセット毎に前記入力データを時刻順にソートして入力ストリームを生成し、データ実行部は、前記入力ストリームをデータセット毎に前記オペレータで処理する。

Description

ストリームデータ処理方法及び装置
 本発明は、ストリームデータの処理方法及び装置に関する。
 時々刻々と到着する大量のデータをリアルタイム処理するデータ処理システムに対する要求が高まっている。例えば、株式自動売買、カープローブ、Webのアクセス監視、製造監視などを挙げることができる。
 従来、企業情報システムのデータ管理の中心にはデータベース管理システム(以下、DBMSとする)が位置づけられていた。DBMSは、処理対象のデータをストレージに格納し、格納したデータに対してトランザクション処理に代表される高信頼な処理を実現している。しかし、DBMSでは、新たなデータが到着する度に、全てのデータに対して検索処理を施すため上記のリアルタイム処理の要求を満たすことは難しい。例えば、株取引を支援する金融アプリケーションを考えた場合、株価の変動にいかに迅速に反応できるかがシステムの最重要課題の一つである。しかし、上記従来のDBMSでは、データの検索処理が株価変動のスピードに追いつくことができず、ビジネスチャンスを逃してしまうことになりかねない。
 このようなリアルタイムデータ処理に好適なデータ処理システムとして、ストリームデータ処理システムが提案されている。例えば非特許文献1にストリームデータ処理システム"STREAM"が開示されている。ストリームデータ処理システムでは従来のDBMSとは異なり、まずクエリ(問合せ)をシステムに登録しておき、データの到来と共に該クエリが継続的に実行される。実行されるクエリがあらかじめ把握できるため、新たなデータが到着したら、それまでの処理結果からの差分のみを処理することで高速な処理が可能である。したがって、ストリームデータ処理によって、株取引などにおける高レートで発生するデータをリアルタイムに解析し、ビジネスに有効なイベントの発生を監視して活用することが可能になる。
 ストリームデータ処理では時刻順の入力データを前提とすることで、データ入力と同時に逐次処理することが可能となりリアルタイム性を実現する。したがって、証券取引所や、基地局、電気メータなど、分散拠点に設置されるノード(計算機)からデータが入力される場合、異なる拠点からのデータは時刻順に入力されないため、ナイーブな方式では、データ入力時に時刻順にソートし、ストリームデータ処理可能にする。しかし分散拠点のノードが多数存在する場合や、各拠点が地理的に離れている場合には、データ入力時の時刻順ソートにより、メモリコストや処理のレイテンシが増大するため、時刻順でない入力データへの対策として、特許文献1、特許文献2、特許文献3、特許文献4、非特許文献2、非特許文献3が開示されている。なお、メモリコストは、処理待ち等でデータを保持するために必要となる、計算機に搭載するメモリの使用量を指す。また、処理のレイテンシは、ストリームデータの処理を行う計算機へストリームデータを入力してからデータを出力するまでの遅延時間である。
米国特許出願公開第2008/0072221号明細書 米国特許出願公開第2009/0172058号明細書 米国特許出願公開第2009/0172059号明細書 米国特許出願公開第2010/0106946号明細書
R.Motwani,J.Widom,A.Arasu,B.Babcock,S. Babu,M.Datar,G.Manku,C.Olston,J.Rosenstein and R. Varma著:"Query Processing,Resource Management,and Approximation in a Data Stream Management System" ,In Proc.of the 2003 Conf.on Innovative Data Systems Research (CIDR),January 2003 J.Li,K.Tufte,V.Shkapenyuk,V.Papadimos,T.Johnson,D.Maier著: "Out-of-Order Processing: a New Architecture for High-Performance Stream Systems" ,In Proc.of the VLDB Endowment,2008 B.Babcock,S.Babu,M.Datar,R.Motwani,and D.Thomas著: "Operator Scheduling in Data Stream Systems" ,2005
 上記特許文献2、特許文献3では、時刻順でない入力データの集計処理において、時刻が遅れた入力データの到着を必ずしも待たず、処理結果を近似解として算出することで、メモリコストやレイテンシの増大を抑える。しかし、近似解を用いた処理だけではデータまたは処理の整合性が保たれないため、これら特許文献2、3を適用可能な業務などの範囲は限定される。
 また、上記特許文献1では、一定時間以上データが到着しなかった場合に、処理を先に進めてよい合図をストリーム処理システムに送ることで、メモリコストや処理のレイテンシの増大を抑える。しかし、あらかじめ指定された時間よりも遅れたデータは破棄されてしまうため、処理の整合性が保たれない、という問題があった。
 上記非特許文献2では、ストリームに対して時刻順でない入力を許可する。そして、明示的に時刻を進めるために、制御パケットを送り、制御パケットがオペレータに入力されると、そのオペレータでは制御パケットの時刻までデータを処理する。この非特許文献2の処理では制御パケットを頻繁に送信する場合、その制御パケットの処理のために計算機の処理能力が劣化する、という問題があった。また、非特許文献2の処理では制御パケット送信の間隔を広げた場合には、各オペレータで制御パケットを待って処理を実行するため、処理のレイテンシやメモリコストが大きくなる、という問題があった。
 したがって、上記公知例では、処理の整合性や、レイテンシやメモリコストなど性能に関して十分とは言えない。
 そこで本発明では、処理の整合性を保ちつつ、処理のレイテンシ増大やメモリコストの増大を抑えることを課題とする。
 プロセッサとメモリを備えたストリームデータ処理装置で、時刻が含まれた入力データで構成されるストリームデータを受信し、予め登録されたクエリに従って前記ストリームデータの処理を実行するストリームデータ処理方法であって、前記ストリームデータ処理装置は、前記ストリームデータを構成する複数の入力データを受信するデータ入力部と、前記入力データを時刻順に処理する前記入力データの項目をデータセットとして指定する第1のキーと、前記ストリームデータの定義と、前記クエリの定義を受け付けて前記入力データを処理するオペレータを生成するクエリ登録部と、前記データセット毎に前記入力データを処理するオペレータを決定し、当該オペレータで前記入力データを処理した結果を出力するデータ実行部と、を有し、前記ストリームデータ処理方法は、前記クエリ登録部が、前記第1のキーとクエリの定義及びストリームデータの定義を受け付けて、前記入力データに含まれる項目のうち、時刻順に処理するデータセットを設定する第1のステップと、前記データ入力部が、前記入力データを受信して、前記第1のキーで指定された項目で、前記入力データを前記データセット毎に分類し、前記データセット毎に前記入力データを時刻順にソートして入力ストリームを生成する第2のステップと、前記データ実行部が、前記入力ストリームを受け付けて、当該入力ストリームに含まれる入力データを、前記データセット毎に前記オペレータで処理する第3のステップと、前記オペレータが処理した結果を単一の出力ストリームとして生成する第4のステップと、を含む。
 時刻順でない入力データを扱うストリームデータ処理において、処理の整合性を保ちながらも、処理の低レイテンシ化、低メモリコスト化を実現することができる。
本発明の第1の実施形態を示し、計算機システムの一例を示すブロック図である。 本発明の第1の実施形態を示し、ストリームデータ処理サーバの入出力の関係を示すブロック図である。 本発明の第1の実施形態を示し、ストリームデータ処理サーバのデータ実行部の詳細なブロック図である。 本発明の第1の実施形態を示し、ストリーム定義の一例を示す説明図である。 本発明の第1の実施形態を示し、クエリ定義の一例を示す説明図である。 本発明の第1の実施形態を示し、データセットキーの一例を示す説明図である。 本発明の第1の実施形態を示し、データセット変換テーブルの一例を示す説明図である。 本発明の第1の実施形態を示し、実行領域名参照テーブルの一例を示す説明図である。 本発明の第1の実施形態を示し、実行木の一例を示すブロック図である。 本発明の第1の実施形態を示し、入力データの一例を示す説明図である。 本発明の第1の実施形態を示し、入力データ格納領域の一例を示す説明図である。 本発明の第1の実施形態を示し、入力ストリームの一例を示す説明図である。 本発明の第1の実施形態を示し、データ実行部の実行領域Aの一例を示すブロック図である。 本発明の第1の実施形態を示し、データ実行部の実行領域Bの一例を示すブロック図である。 本発明の第1の実施形態を示し、実行データ、実行オペレータの一例を示す説明図である。 本発明の第1の実施形態を示し、出力データと出力ストリームの一例を示す説明図である。 本発明の第1の実施形態を示し、クエリ登録部の処理の一例を示すフローチャートである。 本発明の第1の実施形態を示し、データ入力部の処理の一例を示すフローチャートの前半部である。 本発明の第1の実施形態を示し、データ入力部の処理の一例を示すフローチャートの後半部である。 本発明の第1の実施形態を示し、データ実行部の処理の一例を示すフローチャートの前半部である。 本発明の第1の実施形態を示し、データ実行部の処理の一例を示すフローチャートの後半部である。 本発明の第1の実施形態を示し、データ入力部とデータ実行部の処理の一例を示すタイムチャートの前半部である。 本発明の第1の実施形態を示し、データ入力部とデータ実行部の処理の一例を示すタイムチャートの後半部である。 本発明の第2の実施形態を示し、ストリームデータ処理サーバの入出力の関係を示すブロック図である。 本発明の第2の実施形態を示し、ストリームデータ処理サーバのデータ実行部の詳細なブロック図である。 本発明の第2の実施形態を示し、実行可能データ参照テーブルの一例を示す説明図である。 本発明の第2の実施形態を示し、実行領域Aの一例を示すブロック図である。 本発明の第2の実施形態を示し、実行領域Bの一例を示すブロック図である。 本発明の第2の実施形態を示し、クエリ登録部の処理の一例を示すフローチャートである。 本発明の第2の実施形態を示し、データ実行部の処理の一例を示すフローチャートの前半部である。 本発明の第2の実施形態を示し、データ実行部の処理の一例を示すフローチャートの後半部である。 本発明の第2の実施形態を示し、データ入力部とデータ実行部の処理の一例を示すタイムチャートの前半部である。 本発明の第2の実施形態を示し、データ入力部とデータ実行部の処理の一例を示すタイムチャートの後半部である。 本発明の第3の実施形態を示し、ストリームデータ処理サーバの入出力の関係を示すブロック図である。 本発明の第3の実施形態を示し、ストリームデータ処理サーバの詳細なブロック図である。 本発明の第3の実施形態を示し、最大データセット数の一例を示す説明図である。 本発明の第3の実施形態を示し、データセットとストリームの対応テーブルの一例を示す説明図である。 本発明の第3の実施形態を示し、出力キューの一例を示す説明図である。 本発明の第3の実施形態を示し、複製ストリームの一例を示す説明図である。 本発明の第3の実施形態を示し、クエリ定義の一例を示す説明図である。 本発明の第3の実施形態を示し、複製ストリームの一例を示す説明図である。 本発明の第3の実施形態を示し、クエリ定義の一例を示す説明図である。 本発明の第3の実施形態を示し、複製ストリームの一例を示す説明図である。 本発明の第3の実施形態を示し、クエリ定義の一例を示す説明図である。 本発明の第3の実施形態を示し、クエリ登録部の処理の一例を示すフローチャートである。 本発明の第3の実施形態を示し、データ入力部の処理の一例を示すフローチャートである。 本発明の第3の実施形態を示し、ストリームマージ部の処理の一例を示すフローチャートを示す図である。 本発明の第3の実施形態を示し、データ入力部とデータ実行部及びストリームマージ部の処理の一例を示すタイムチャートの前半部である。 本発明の第3の実施形態を示し、データ入力部とデータ実行部及びストリームマージ部の処理の一例を示すタイムチャートの後半部である。
 以下、本発明の一実施形態について添付図面を用いて説明する。
<第一実施形態>
 図1は本発明の第一の実施形態における計算機システムの一構成を示すブロック図である。送信サーバ101~103はネットワーク104を介して、ストリームデータ処理システムを実行するストリームデータ処理サーバ108に接続されている。登録サーバ105はネットワーク107を介して、ストリームデータ処理サーバ108に接続されている。受信サーバ117はネットワーク116を介して、ストリームデータ処理サーバ108に接続されている。ネットワーク104、107、116は、イーサネット(登録商標)、光ファイバなどで接続されるローカルエリアネットワーク(LAN)、もしくはLANよりも低速なインターネットを含んだワイドエリアネットワーク(WAN)でも差し支えない。また、ストリームデータ処理サーバ108、送信サーバ101~103、登録サーバ105、受信サーバ117はパーソナルコンピュータ(PC)や、ブレード型の計算機システムなどの任意のコンピュータシステムで構成することができる。
 ストリームデータ処理サーバ108は、インタフェース部を構成するI/Oインタフェース115、処理部を構成する中央処理部(CPU)113、記憶部であるメモリ109が、バスで結合された計算機である。
 ストリームデータ処理サーバ108は、I/Oインタフェース115を介してネットワーク104、107、116にアクセスする。また、CPU113(あるいはプロセッサ113でもよい)、ストリームデータ処理の結果、処理の中間結果、あるいはシステム動作に必要な設定データを不揮発性のストレージに格納する場合には、それぞれ記憶部であるストレージ装置114を用いることができる。ストレージ装置114は、I/Oインタフェース115を介して直接接続されるか、もしくはI/Oインタフェース115よりネットワークを介して接続される。そしてメモリ109には、ストリームデータ処理を構成するモジュールとして、クエリ登録部111、データ入力部110、データ実行部112が格納されている。各モジュールの動作については後述する。
 以下、第一の実施形態について図面を用いて説明する。第一実施形態では、特許文献4に開示されているオペレータスケジューリングを基にした、本発明の実現方法を示す。
 図2A、図2Bは、第一実施形態のストリームデータ処理サーバ108の構成を示すブロック図である。なお、図2Aは、ストリームデータ処理サーバ108の入出力の関係を示す計算機システムのブロック図である。また、図2Bは、ストリームデータ処理サーバ108のデータ実行部112の詳細なブロック図である。
 まずユーザ204によって記述された、ストリーム及びクエリ定義206及び、データセットキー205を含む設定データは、登録サーバ105に格納され、登録サーバ105から、ストリームデータ処理サーバ108に送信される。そして、ストリームデータ処理サーバ108では、上記設定データを受信した後、クエリ登録部111のデータセットキー読込み部211において、データセットキー205からデータセット変換テーブル210及び、実行領域名参照テーブル215を生成する。またコンパイル部212において、ストリーム及びクエリ定義206をコンパイルし、実行木228を生成する。
 ストリームデータ処理サーバ108でデータセット変換テーブル210及び、実行領域名参照テーブル215、実行木228を生成した後、送信サーバ101~103は、入力データ201~203をストリームデータ処理サーバ108に送信し続ける。
 そしてストリームデータ処理サーバ108では、データ入力部110の入力データ受信部207が入力データ201~203を受信し、受信した入力データを入力データ格納領域208に格納する。なお、入力データ格納領域208は、受信した入力データ201~203を一時的に保持するキューで構成される。そして部分的時刻順ソート処理部209が、入力データ格納領域208に格納した入力データ201~203を、データセット変換テーブル210を用いて部分的に時刻順にソートし、ソートした入力データ213を入力ストリーム214に格納する。データ入力部110は入力ストリーム214をデータ実行部112へ出力する。
 そして、データ実行部112の実行順序決定部217では、入力ストリーム214に格納された入力データ213を取り出す。実行順序決定部217は、実行領域名参照テーブル215を参照し、実行領域218、219が存在する場合には、実行領域名216を抽出し、実行領域が存在しない場合には、新たな実行領域を生成する。なお実行領域218、219は、ストリームデータ格納キュー221、発火時刻参照テーブル222、実行状態223から構成される。
 実行順序決定部217では、抽出した実行領域名216が指す実行領域218のストリームデータ格納キュー221に入力データ213を格納し、該実行領域218の発火時刻参照テーブル222を用いて、実行データ224と、実行オペレータ226を抽出する。
 データ実行部112のオペレータ処理部227では、実行順序決定部217が抽出した実行データ224と、実行オペレータ226から実行木228を用いて所定の処理を実行する。オペレータ処理部227は処理を実行する際に、実行領域名216が指す実行領域218の実行状態223を用いる。
 そしてオペレータ処理部227の実行による出力データ229は、データ出力部230により出力ストリーム231に格納する。出力ストリーム231に格納されたデータは、受信サーバ117が受け取る。また、出力ストリーム231に格納されたデータを、さらにオペレータ処理する場合には入力データ受信部207が受信する。
続いて、第一実施形態の動作の詳細を説明する。
 図3A~図3Cは、ストリーム及びクエリ定義206に含まれるストリーム定義301、クエリ定義302と、データセットキー205の一例を示す。図3Aに示す301は、電力の「メータ」、「使用電力」、メータの「設置場所」をカラム(またはデータ項目)とする電気メータストリームの定義である。このストリーム定義301は、ストリームデータを構成する入力データ201~203に含まれる複数の項目を、ストリームデータ処理サーバ108で識別するための定義である。なお、入力データ201~203には時刻(またはタイムスタンプ)が含まれるが、本実施形態では、入力データ201~203に時刻情報が付与されていることが前提であるため、ストリーム定義301では定義を省略した。
 図3Bに示す302は、電気メータストリーム定義301を入力し、設置場所ごとの10分毎の合計使用電力を出力する使用電力集計クエリの定義である。このクエリ定義302は、入力データ201~203を処理するオペレータを決定するための定義である。
 そしてこのようなストリーム定義301と、クエリ定義302に対し、図3Cに示すデータセットキー205(303,304)が登録サーバ105でユーザにより指定される。
 データセットキー205は、入力ストリーム用データセットキー(第1のキー)304と、入力データ用データセットキー(第2のキー)303から構成される。本第一実施形態では、入力データ用データセットキー303として入力データのカラムのうち「メータ」が設定され、入力ストリーム用データセットキー304として入力データのカラムのうち「設置場所」が設定された例を示す。
 入力データ用データセットキー303は、指定したカラムの値が同一の入力データが時刻順に整列されて、ストリームデータ処理サーバ108のデータ入力部110へ入力されることを示す。つまり入力データは「メータ」毎に時刻順で整列された状態で入力されることを示す。
 入力ストリーム用データセットキー304は、指定したカラムの値が同一の入力データを、クエリで処理するグループと扱い、データ実行部112の入力ストリーム214において時刻順に処理されることを示す。つまり入力データは「設置場所」毎に分類されてデータセットを構成し、データセット毎の入力データが時刻順で処理されることを示す。また、入力ストリーム用データセットキー304は、入力データの「設置場所」の種類に応じた数の実行領域をデータ実行部112で生成することを示す。換言すれば、入力データの「設置場所」の種類毎にデータセットが構成される。
 なお入力データ用データセットキー303と入力ストリーム用データセットキー304を指定する方法は、クエリに記述してもよいし、設定ファイル等を介して指示してもよく、あるいはその他の方法でも構わない。
 図4は、データセット変換テーブル210の一例を示す。データセット変換テーブル210は、入力データ格納領域208に格納された入力データについて、図3Cで設定された入力データ用データセットキー303と、入力ストリーム用データセットキー304の関係を設定するテーブルである。
 図4では、入力データ用データセットキー401としてメータ、入力ストリーム用データセットキー402として設置場所が指定された例であり、図3Cのデータセットキーの設定から、メータ「メータ00」と設置場所「田中家」(403)、メータ「メータ10」と設置場所「佐藤ビル」(404)、メータ「メータ11」と設置場所「佐藤ビル」(405)が対応していることを示す。
 図5は、実行領域名参照テーブル215の一例を示す。実行領域名参照テーブル215は、入力ストリーム用データセットキー値401と、実際に入力データの処理を行う独立した実行領域名502の対応関係を示す。図5では、図4で示したように、入力ストリーム用データセットキー402として設置場所が指定された例であり、設置場所「田中家」と実行領域名「実行領域A」(503)、設置場所「佐藤ビル」と実行領域名「実行領域B」(504)がそれぞれ対応していることを示す。
 図5の例では、図3Cのデータセットキーのうち、入力ストリーム用データセットキー304ごとに、独立した実行領域を生成する例を示し、入力データ格納領域208内に「田中家」と「佐藤ビル」の2種類の入力ストリーム用データセットキー値402が存在し、実行領域名参照テーブル215は、各入力ストリーム用データセットキー値402毎に独立した実行領域A、B(503、504)を生成することを示唆する。
 図6は、実行木228の一例を示す図である。図6の実行木は、使用電力集計のクエリ定義302をコンパイルしてクエリ登録部111で生成された実行木を表し、オペレータRANGE 601、オペレータGROUP BY 602と、オペレータISTREAM 603で構成される。図6に示す実行木は、データ実行部112のオペレータ処理部227において、RANGE601、GROUP BY602、ISTREAM603の順に実行することを示す。
 図7は、送信サーバ101~103が送信する入力データの一例を示す図である。図7は、図3Aに示した電気メータストリーム定義301への入力データを示す。各入力データの到着順701、入力データに付加された時刻702と、電気メータストリーム定義301の項目である、メータ703、使用電力704、設置場所705の値を示す。
 図7では、入力データ706、入力データ707、入力データ708の順でストリームデータ処理サーバ108が受信し、入力データ706は時刻「7:59」、メータ「メータ10」、使用電力「50W/分」、設置場所「佐藤ビル」であり、入力データ707は時刻「8:00」、メータ「メータ01」、使用電力「100W/分」、設置場所「田中家」であり、入力データ708は時刻「7:59」、メータ「メータ11」、使用電力「200W/分」、設置場所「佐藤ビル」となっている。
 図8は、入力データ格納領域208の一例を示す図である。入力データ格納領域208は、送信サーバ101~103から受信した入力データを、図4に示した入力データ用データセットキー値401ごとに、キュー805~807に格納する。図8は、図4で示したように、入力データ用データセットキー値401として「メータ」が指定された場合に、電気メータストリーム定義301の入力データのうち「メータ」を格納する、入力データ格納領域208を示す。
 図8において、805は「メータ10」(802)の入力データ706を格納するキュー、806は「メータ01」(803)の入力データ707を格納するキュー、807は「メータ11」(804)の入力データ708を格納するキューである。すなわち、データ入力部110は、入力データ用データセットキー値401ごとに入力データを格納するキューをメモリ109上に生成して、入力データ201~203(706,707,708)を格納していく。
 図9は、入力ストリーム214の一例を示す図である。入力ストリーム214は、オペレータ処理を実行する入力データを格納する。本発明では、従来例とは異なり、入力ストリーム214内の全ての入力データが時刻順に並んでいる必要はなく、入力データ用データセットキー値401が同一のデータについて時刻順に並んでいればよい。214は、図3Aに示した電気メータストリームの定義(301)に従ってデータ入力部110が生成した入力ストリームの例である。
 図10A、図10Bは、独立して生成されるオペレータ処理の実行領域218,219の一例を示す図である。実行領域は、入力ストリーム用データセットキーの値402ごとにデータ実行部112が生成する。図10Aでは、入力ストリーム用データセットキー値402が設置場所「田中家」の実行領域として、実行領域A(218)が生成され、図10Bでは、入力ストリーム用データセットキー値402が設置場所「佐藤ビル」の実行領域として、実行領域B(219)が生成された例を示す。各実行領域218、219には、入力ストリーム214を格納するストリームデータ格納キュー1002、1015、入力ストリーム214に対してオペレータ処理を開始する時刻を設定した発火時刻参照テーブル1004、1017と、オペレータの状態を示す実行状態1008、1021を含む。なお、実行状態1008、1021の総称は223とする。また、実行状態223は、例えば、オペレータの処理結果を格納し、当該格納した値でオペレータの状態を表すことができる。
 ストリームデータ格納キュー1000、1015は、入力ストリーム214の入力ストリーム用データセットキー値402を持つ入力データ213を格納するキューである。なお、ストリームデータ格納キュー1000、1015の総称を符号221で表す。
 発火時刻参照テーブル1004,1017は、ストリームデータ格納キュー1002,1015に格納された入力データの処理について、処理を実行するオペレータ1005、1018と、当該オペレータが実行される時刻である発火時刻1006、1019を格納する。
 例えば、実行領域A(218)におけるオペレータRANGEの発火時刻1006は、オペレータRANGE内の最古データの時刻が「7:51」である場合、図3Bの使用電力集計クエリ定義302に示すように、集計期間が10分間ウィンドウであるため、前回の実行時刻に10分を加えた「7:51+10分」により、次回の発火時刻は「8:01」(1007)となる。同様に実行領域BにおけるオペレータRANGEの発火時刻は、オペレータRANGE内の最古データの時刻が「7:50」である場合、同じく10分間ウィンドウであるため、7:50+10分により、次回の発火時刻は「8:00」(1029)となる。これらの発火時刻は、実行順序決定部217が設定することができる。
 また実行状態1008、1021は、ストリームデータ格納キュー1002,1015に格納された入力データの処理において、各オペレータの処理に用いる状態を示す。例えば、オペレータRANGEの実行状態である、実行状態A1(1011)、実行状態B1(1024)は、10分間ウィンドウであるため、各々実行領域に、現在時刻から10分以内の時刻の入力データを格納する。また、オペレータGROUP BYの実行状態を示す実行状態A2(1012)、実行状態B2 (1025)は、現在時刻から10分以内の時刻の入力データの集計値を格納する。
 図11は、実行データ224と、実行オペレータ226の一例を示す。実行データ224はオペレータ処理部227で実行するデータであり、実行オペレータ226はオペレータ処理部227で実行データ224に対する処理を実行するオペレータである。図11では実行データ224として、図7に示した入力データ706と、実行オペレータ226として図6に示したオペレータRANGE601を例示する。
 図12は、出力データ229と出力ストリーム231の一例を示す図である。出力データは、受信サーバ117や入力データ受信部207において取得されるオペレータの処理結果である。また出力ストリーム231は出力データを格納する領域である。図中231は、使用電力集計クエリ定義302の出力データ1202~1204を格納する出力ストリームであり、入力データ706、入力データ707、入力データ708の処理結果が、それぞれ出力データ1203、出力データ1204、出力データ1202である。なお、出力データ1202~1204の総称を図2Bで示した符号229で表す。
 図13は、クエリ登録部111の処理の一例を示すフローチャートである。まず、前記従来例のストリームデータ処理方法と同様に、クエリ登録部111は、登録サーバ105で定義されたストリーム定義301、クエリ定義302を受信した後にコンパイルし、入力データを処理するオペレータと当該オペレータの実行木228(図6)を生成する。クエリ登録部111は、生成した実行木228をオペレータ処理部227に格納する(1307)。
 そしてコンパイル後、クエリ登録部111は、データセットキー読込み部211において、データセットキー205の読み込みを開始する(1301)。データセットキー読み込み部211は、登録サーバ105からデータセットキー205を構成する入力データ用データセットキー303と、入力ストリーム用データセットキー304を受信する(1302)。
 次に、データセットキー読み込み部211は、受信した入力ストリーム用データセットキー値402と実行領域名502の対応関係を示す実行領域名参照テーブル215(図5)を生成する(1303)。生成された実行領域名参照テーブル215は、図5に示したエントリ503、504のようなデータが存在してもよいし、データが存在しない空のテーブルであってもよい。
 そして、クエリ登録部111は、入力データ用データセットキー303と入力ストリーム用データセットキー304が一致した場合には(1304)、データセットキー読込み部を終了する(1306)。
 一方、ステップ1304において、入力データ用データセットキー303と入力ストリーム用データセットキー304が一致しなかった場合には、入力データ用データセットキー値401と入力ストリーム用データセットキー値402の対応関係を示すデータセット変換テーブル210(図4)を生成する(1305)。生成したデータセット変換テーブル210は、図4に示したエントリ403~405のようなデータが存在してもよいし、データが存在しない空のテーブルであってもよい。 
 そして、クエリ登録部111は、データセット変換テーブル210を生成した後、データセット読み込み部を終了する(1306)。
 上記処理により、クエリ登録部111は、登録サーバ105で定義されたストリーム定義301、クエリ定義302をコンパイルしてオペレータと実行木228を生成し、登録サーバ105で定義されたデータセットキー205からデータセット変換テーブル210と実行領域名参照テーブル215を生成する。なお、この処理は、クエリ登録部111が、登録サーバ105からストリーム及びクエリ定義206やデータセットキー205を受け付けたときに実行することができる。
 図14A、図14Bは、データ入力部110で行われる処理の一例を示すフローチャートである。データ入力部110では、まず入力データ受信部207において(1401)、送信サーバ101~103から入力データ201~203を受信する(1402)。
 そして、データ入力部110は、データセット変換テーブル210の有無を判定する(1403)。データ入力部110は、データセット変換テーブルが存在しない場合には、入力データ201~203を入力ストリーム214に格納し(1405)、入力ストリーム214をデータ実行部112へ出力してから入力データ受信部207の処理を終了する(1406)。
 一方、上記ステップ1403において、データセット変換テーブル210が存在する場合には、データ入力部110が以下の処理を実行する。まずデータ入力部110は、データセット変換テーブル210に、入力データ201~203の項目に入力データ用データセットキー値401が存在する場合には(1404)、当該入力データ用データセットキーの値401に従って、入力データ格納領域208のキューに入力データを格納し(1408)、入力データ受信部207の処理を終了する(1409)。
 例えば、図7に示した入力データ708をデータ入力部110で受信したとき(到着時)の、データセット変換テーブル210、入力データ格納領域208を、図4、図8に示す。
 今、図3Cの303のように、入力データ用データセットキーとして「メータ」が指定されており、図7に示す入力データ708のメータ703の値は「メータ11」であることから、データ入力部110は、入力データ格納領域208のキュー807を生成して入力データ708を格納する。
 また、上記ステップ1404において、データセット変換テーブル210に、入力データ201~203の入力データ用データセットキー値401が存在しない場合には、データセット変換テーブル210に、データ入力部110が受信した入力データの入力データ用データセットキー値401と入力ストリーム用データセットキー値402を格納する。また、データ入力部110は、入力データ格納領域208に、入力データの入力データ用データセットキー値401に対応するキューを追加する(1407)。
 そして、データ入力部110は、入力データを、入力データ用データセットキー値401に従って入力データ格納領域208のキューに格納し(1408)、入力データ受信部207の処理を終了する(1409)。
 なお送信サーバ101~103からの入力データ201~203ではなく、入力データ用データセットキー値401、入力ストリーム用データセットキー値402と、時刻を持つダミーデータをデータ入力部110へ入力することにより、入力データ受信部207で、上記データ入力時と同様に、データセット変換テーブル210に、ダミーデータの入力データ用データセットキー値401と入力ストリーム用データセットキー値402を格納し、また入力データ格納領域208に、ダミーデータの入力データ用データセットキー値401に対応するキューを追加しても構わない。
 また、入力データ用データセットキー値401、入力ストリーム用データセットキー値402、時刻と、終了フラグを持つダミーデータを入力し、以下のような処理を入力データ受信部207で実行することができる。処理の一例としては、まず入力データ受信部207で、終了フラグを読み取る。そして、終了フラグが所定の値の場合には、入力データ受信部207が、ダミーデータの入力データ用データセットキー値401から抽出した入力データが属するデータセットが、データセット変換テーブル210に存在する場合は、データセット変換テーブル210から、ダミーデータの入力データ用データセットキー値401と入力ストリーム用データセットキー値402を削除する。また入力データ格納領域208からダミーデータの入力データ用データセットキー値401に対応するキューを削除する。上記ダミーデータを用いることで、データセット変換テーブル210のエントリと、入力データ格納領域208のキューを削除することができる。これにより、データ入力部110のメモリ109使用量が過大になるのを抑制できる。
 なお、入力データ格納領域208のキューは、図8で示した805~807のように、データ入力部110がデータの到着順に生成することができる。データ入力部110は、入力データ用データセットキー値401の値(本実施形態では「メータ」)ごとにキューを生成する。図8の例では、データ入力部110は、「メータ10」の入力データを格納するキュー805と、「メータ01」の入力データを格納するキュー806と、「メータ11」の入力データを格納するキュー807を生成した例を示す。各キュー805~807にはデータ入力部110へ到着した順序で「メータ」毎に分類されて入力データが格納される。つまり、データ入力部110は、入力データ用データセットキー値401で指定された項目毎に、入力データを分類してキュー805~807に格納する。
 次に、上記ステップ1404において、データセット変換テーブル210が存在する場合には、次に部分的時刻順ソート処理部209の処理を開始する(1410)。
 部分的時刻順ソート処理部209では、まず入力データ格納領域208において、入力ストリーム用データセットキー値402が等しいデータが格納されたキューの先頭データの時刻を比較する(1411)。この処理は、入力データ用データセットキー値401が異なり入力ストリーム用データセットキー値402が等しい入力データ格納領域208のキューに格納された先頭の入力データの時刻(図7の時刻702)を部分的時刻順ソート処理部209が比較する。
 すなわち、部分的時刻順ソート処理部209は、図7に示す入力データを、入力データ格納領域208のキュー805~807へ格納してから、第1のキーである入力ストリーム用データセットキー値402=「設置場所」が同一で、かつ、第2のキーである入力データ用データセットキー値401=「メータ」が異なる入力データの時刻702を比較する。
 次に、部分的時刻順ソート処理部209は、上記比較の結果、入力データ格納領域208内で入力ストリーム用データセットキー値402が等しい入力データのうち、最も時刻が古いデータ(以下、最古データとする)が存在するか否かを判定する(1412)。
 そして最古データが存在する場合には(1412)、最古データを入力データ格納領域208のキュー805~807から取得し、入力ストリーム214に格納する(1413)。そしてステップ1411~1413の処理を、最古データが存在する限り繰り返し、最古データがなくなるとステップ1402に進んで、送信サーバから新たな入力データを受信する。
 例えば、入力データ708をデータ入力部110で受信した後の、入力ストリーム214を図9に示す。入力ストリーム用データセットキー304しては図3Cで示したようにメータの「設置場所」が指定されており、図8で示したように、入力データ708のメータの設置場所は「佐藤ビル」であることから、設置場所が「佐藤ビル」の入力データが格納されたキュー805、807の先頭データ706、708の時刻を比較する。そして、キュー805のデータ706よりも時刻が古いデータがキュー807に存在しないため、最古データをデータ706とし、入力ストリーム214に格納する。また同じくデータ708よりも時刻が古いデータがキュー805に存在しないため、最古データをデータ708とし、入力ストリーム214に格納する。この結果、図9で示すように、部分的時刻順ソート処理部209は、入力ストリーム用データセットキー値402が「佐藤ビル」に等しい入力データ706、708を時刻の古い順にソートした入力ストリーム214を生成し、データ実行部112へ出力する。
 上記処理によって、部分的時刻順ソート処理部209は、図7の入力データから第1のキーである入力ストリーム用データセットキー値402で指定された「設置場所」が等しく、第2のキーである入力データ用データセットキー値401で指定された「メータ」が異なる入力データを時刻702の古い順にソートして入力ストリーム214を生成して、入力ストリーム214をデータ実行部112へ出力する。したがって、部分的時刻順ソート処理部209は、第1のキーである入力ストリーム用データセットキー値402で指定された「設置場所」ごとに入力データをまとめて時刻順にソートした入力ストリーム214を出力することができる。
 図16A、図16Bは、入力データ707~708がストリームデータ処理サーバ108に到着した時の、データ入力部110とデータ実行部112のタイムチャートを示す。
 データ入力部110では、前述の図9のように、入力データ708を受信した時に、入力データ706及び、入力データ708を入力ストリーム214に格納し、データ実行部112へ出力する。 また入力データ707を受信した時に、この入力データ707の入力ストリーム用データセットキー値402である「田中家」を設置場所とするデータで、入力データ用データセットキー値が「メータ01」以外をメータとする入力データは存在しないので、「メータ01」のデータの中で最古データである入力データ707が、「田中家」の中でも最古データとなるため、入力データ707を入力ストリーム214に格納し、データ実行部112へ出力する。
 図15A、図15Bは、データ実行部112の処理の一例を示すフローチャートである。この処理は、データ入力部110から入力ストリーム214を受け付けたときに実行を開始することができる。
 まず実行順序決定部217(1501)は、データ入力部110が出力した入力ストリーム214から入力データ213を取得する。そして実行順序決定部217は、入力データ213の入力ストリーム用データセットキーの値402から、実行領域名参照テーブル215を参照し、入力ストリーム用データセットキー値402に対応する実行領域名を抽出し、入力データ213が属するデータセットの実行領域として設定する。その際に、実行順序決定部217は、入力データ213について同一のデータセット(入力ストリーム214)内において時刻順に並んでいるか否かを検査してもよい。
 次に、実行順序決定部217は、実行領域名参照テーブル215に入力データ213の入力ストリーム用データセットキー値402に対応する実行領域が存在するか否かを判定する(1503)。
 入力ストリーム用データセットキー値402に対応する実行領域が存在する場合には、実行順序決定部217が、入力データ213の所属する実行領域のストリームデータ格納キュー221に入力データを格納する(1505)。
 一方、上記ステップ1503の判定で、実行領域名参照テーブル215に、入力データ213の入力ストリーム用データセットキー値402が存在しなかった場合には、実行順序決定部217が当該入力ストリーム用データセットキー値402に対応する実行領域を生成し、実行領域名参照テーブル215に、当該入力ストリーム用データセットキー値402と、生成した実行領域名を追加する(1504)。そして実行順序決定部217が生成した実行領域を、入力データ213が属するデータセットの実行領域とし、当該実行領域のストリームデータ格納キュー221に入力データ213を格納する(1505)。なお当該実行領域の発火時刻参照テーブル222は、1007のようなエントリが存在しない空のテーブルである。また当該実行領域の実行状態223も、1011、1012のようなエントリが存在しない空の領域である。発火時刻参照テーブル222、実行状態223はオペレータ処理部227が更新する。
 例えば、図9に示した入力ストリーム214から入力データ706を取得した場合、実行順序決定部217は、入力データ706の入力ストリーム用データセットキー値402は「佐藤ビル」であるため、実行領域名参照テーブル215(図5参照)から、入力ストリーム用データセットキー値402=「佐藤ビル」の実行領域として「実行領域B」を抽出し、図10Bに示した実行領域B219のストリームデータ格納キュー1015に入力データ706を格納する。同様に、図16Aに示すように、入力データ707は、入力ストリーム用データセットキー値402が「田中家」であるから、図10Aに示した実行領域A218のストリームデータ格納キュー1002に格納する。また入力データ708は、入力ストリーム用データセットキー値402が「佐藤ビル」であるから、図10Bの実行領域B219のストリームデータ格納キュー1015に格納する。
 なおダミーデータを入力することにより、実行順序決定部217で、ダミーデータの入力ストリーム用データセットキー値402に対応する実行領域を生成し、実行領域名参照テーブル215に、ダミーデータの入力ストリーム用データセットキー値402と、生成した実行領域名を追加してもよい。また、終了フラグを持つダミーデータを入力することにより、以下のような処理を実行順序決定部217で実行することができる。処理の一例としては、実行順序決定部217が、まず終了フラグを読み取る。そして終了フラグが所定の値のときには、ダミーデータの入力ストリーム用データセットキー値402に対応する実行領域が存在する場合には、該実行領域を削除し、実行領域名参照テーブル215から入力ストリーム用データセットキー値402と実行領域名502を削除する。
 次に、実行順序決定部217は、入力データ213が属するデータセットの実行領域のストリームデータ格納キュー221を参照し、先頭データの時刻(複数の入力ストリームのデータを処理するクエリの場合には、複数のストリームデータ格納キューの先頭データの時刻)と、発火時刻参照テーブル222の各オペレータの発火時刻を比較し、最も時刻が古いデータがストリームデータ格納キュー221に存在する場合には(1506)、当該データを実行データとする。実行順序決定部217は、また、実行データ224がストリームデータ格納キュー221の先頭データの場合には、実行木228の最初のオペレータを実行オペレータとして設定する。また、実行順序決定部217は、現在時刻がオペレータの発火時刻に対応するデータである場合には、当該発火時刻に対応するオペレータを実行オペレータとして設定(1507)して、実行順序決定部217の処理を終了する(1508)。
 上記ステップ1506において、最も時刻が古いデータが存在しなかった場合には、実行順序決定部217は、再びステップ1502の処理に戻って入力ストリーム214から次の入力データ213を取得し、上記と同様の処理を繰り返す。
 例えば、実行領域B219のストリームデータ格納キュー1016に、実行順序決定部217が入力データ706を格納した場合には、入力データ706の時刻「7:59」と、発火時刻参照テーブル222に格納されているオペレータRANGEの発火時刻「8:00」(1020)を実行順序決定部217が比較し、入力データ706の時刻「7:59」が古いため、実行データ224を入力データ706とし、実行木228(図6)の最初のオペレータ601を、実行オペレータ226としてオペレータ処理部227に指令する。
 そしてオペレータ処理部227で、実行データ224の入力ストリーム用データセットキー値402に対応する実行領域上の実行状態223を用いて、実行データ224を実行オペレータ226で処理する(1509)。
 次に、データ実行部112は、実行オペレータ226の処理結果を出力するデータ出力部230の処理を行う(1510)。まず、データ出力部230は、実行オペレータ226の処理結果について出力データが存在するか否かを判定する(1511)。出力データが存在しない場合には、ステップ1513へ進んでデータ出力部230の処理を終了する。一方、出力データが存在する場合には、データ出力部230はステップ1512を実施する。
 実行オペレータ226の処理結果を、受信サーバ117や入力データ受信部207で出力データとして取得する場合には、データ出力部230は、実行オペレータ226の処理結果である出力データ229を実行領域ごとではなく、単一のストリームにマージする(1512)。データ出力部230は、複数の出力データ229をマージして出力ストリーム231として出力する。データ実行部112は、データ出力部230の処理が終了すると(1513)、実行順序決定部217の処理を再開する(1514)。
 ステップ1515では、実行順序決定部217が実行木228に次のオペレータが存在するか否かを判定する(1515)。実行木228に次のオペレータが存在する場合には、ステップ1516へ進み、オペレータが存在しない場合にはステップ1506へ戻って上記処理を繰り返す。ステップ1516では、実行順序決定部217が実行木228の次のオペレータを実行オペレータ226として決定し、ステップ1508へ戻り、上記処理を繰り返す。
 つまり、データ実行部112では、実行木228に次のオペレータが存在する限り(1515)、次のオペレータを実行オペレータ226とし、処理が終わった実行データ224と同一データセット(入力ストリーム用データセットキーの値402が同一)かつ同一時刻の次のデータを実行データ224とし、実行データ224の入力ストリーム用データセットキー値402に対応する実行領域上の実行状態223を用いて処理を続ける。
 データ実行部112は、ステップ1515において実行木228に次のオペレータがなくなった場合には、ステップ1506において実行可能なデータを抽出し、前記したように処理する。なお1506において実行可能なデータを抽出できなかった場合には、1502において入力ストリームから入力データを取得し、前述したように動作する。
 例えば、図16Bに示すように、入力データ706を実行データ224、オペレータRANGE(601)を実行オペレータ226としてオペレータ処理した後に、その処理結果の1603を実行データ224とし、次のオペレータGROUP BY(602)を実行オペレータ226としてオペレータ処理を行う。データ実行部112では、さらにオペレータGROUP BY(602)の処理結果の1604を実行データ224とし、次のオペレータISTREAM(603)を実行オペレータ226としてオペレータ処理を行い、その処理結果1203を受信サーバ117へ送信するため、出力データとして出力ストリーム231に格納する。また実行木228(図6)に次のオペレータが存在しないため、続いて入力データ708を実行データ224としてオペレータ処理を実行する。
 以上で記述した第一実施形態は、特許文献4に開示されているオペレータスケジューリングを基にした、本発明の一つの実現方法であり、他にも様々な実現方法がある。例えば、入力ストリーム用データセットキー値402ごとに実行領域218、219を分けずに、発火時刻参照テーブル1004、1017と、ストリームデータ格納キュー1002、1015を入力ストリーム用データセットキー値402ごとに分け、実行状態1008、1021を入力ストリーム用データセットキー値ごとに分けず、クエリで定義することによりオペレータ毎に実行状態を分ける方法も可能である。
 なお、上記第一実施形態では、実行順序決定部217において、発火時刻参照テーブル222、ストリームデータ格納キュー221を参照する点で、上記特許文献4と共通しているが、実行領域名参照テーブル215及び、実行領域名216、実行領域218、219を参照する点で特許文献4とは異なり、本発明に固有の構成である。また第一実施形態では、特許文献4とは異なり、データセットキー読込み部211、データセットキー205、部分的時刻順ソート処理部209、データセット変換テーブル210、データ出力部230を含む点が、本発明に固有の構成である。
 以上のように、本発明では、時刻を含む入力データ201~203(以下、単に入力データとする)を処理するストリームデータ処理サーバ108がデータセットキー205を受け付けて、データセット変換テーブル210を生成する。ここで、データセット変換テーブル210は、同一の実行領域で処理する入力データの種類(グループ)を定義する入力ストリーム用データセットキー402(第1のキー)と、時刻順に整列された状態で入力される入力データの項目を定義する入力データ用データセットキー401(第2のキー)の2つのキーを有する。また、クエリ登録部111では、ストリーム及びクエリの定義206を受け付けて実行木228を生成し、データ実行部112に出力する。
 ストリームデータ処理サーバ108のデータ入力部110は、入力データを入力データ用データセットキー401毎にまとめてから、入力ストリーム用データセットキー402毎に時刻順にソートして入力ストリーム214を生成する。
 そして、データ実行部112では、データセット変換テーブル210の入力ストリーム用データセットキー402毎に、メモリ109上に入力データを処理する領域として実行領域218,219を設定する。換言すれば、入力ストリーム用データセットキー402の項目で分類された入力データのグループ(データセット)毎に実行領域が生成される。
 データ実行部112では、入力ストリーム214に含まれる入力データの種類(データセット)毎の実行領域で、入力データに対応するオペレータが決定されて、当該オペレータにより所定のクエリ処理を行い、出力ストリーム231を出力する。
 上記処理により、第1のキーである入力ストリーム用データセットキー値402毎に異なるメモリ109上の実行領域218、219でオペレータによって入力データ213を処理することができる。すなわち、一つのストリームデータで、第1のキーである入力ストリーム用データセットキー値402が同一の入力データについてのみ、時刻の順序を保ってオペレータによる処理を行うことができる。これにより、データ実行部112の各実行領域218、219は、第1のキーである入力ストリーム用データセットキー値402が異なる入力データについては、時刻が遅れた入力データの到着を待たずにオペレータによる処理を実行でき、処理の整合性を保ちながら、処理のレイテンシが増大するのを抑制できる。
 すなわち、データ入力部110では、データ実行部112でクエリを実行する前にデータセットごとに時刻順で入力データをソートすることにより、複数の送信サーバ101~103から、複数の入力データを受け付けても、ひとつのサーバ内のデータセットと同様に実行順序を決定することができる。
 これにより、時刻順でない入力データを受け付けても前記従来例のように制御パケットで時刻を進めたり、データの破棄などの処理を行うことがなくなって、データ処理の整合性を保ちつつ、処理のレイテンシが増大するのを防ぐことができる。また、前記従来例のように制御パケットを待つ間のメモリ領域も不要となるので、メモリコストの増大を抑制できる。
 さらに、データ実行部112では、メモリ109上の実行領域をストリームデータ処理中に動的に生成することができる。つまり、ストリームデータ処理が開始されても、ストリームデータ処理サーバ108は実際に入力ストリーム用データセットキー402に対応する入力データを受け付けるまで、実行領域を生成しない。このため、本発明のストリームデータ処理サーバ108は、ストリームデータ処理に必要な実行領域のみをメモリ109上に確保するので、前記従来例のようにメモリコストが増大するのを抑制できる。
<第二実施形態>
 続いて本発明の第二実施形態について図面を用いて説明する。第二実施形態では、非特許文献3に開示されているラウンドロビンのオペレータスケジューリングを基にした、本発明の実現方法を示す。
 図17A、図17Bは第二実施形態のブロック図である。なお、図17Aはストリームデータ処理サーバ108の入出力の関係を示す計算機システムのブロック図である。また、図17Bは、ストリームデータ処理サーバ108のデータ実行部112の詳細なブロック図である。
 第二実施形態では、クエリ登録部111のデータセットキー読込み部211において、データセットキー205及び、コンパイル部212で生成された実行木228から、実行可能データ参照テーブル1701を生成する点が前記第一実施形態と相違する。またデータ入力部110では前記第一実施例と同様の処理が行われる。そしてデータ実行部112の実行順序決定部217は、実行可能データ参照テーブル1701を用いて、実行データ224、実行オペレータ226を抽出する。また、図17Bで示すように、実行領域218A、219Aは、前記第一実施形態と異なり、発火時刻参照テーブルを削除した点が相違する。なお、データ実行部112のオペレータ処理部227及び、データ出力部230は、前記第一実施形態と同様に処理を行う。また、前記第一実施形態と同一の構成については、図2A、図2Bと同一の符号を付した。
 図18は、実行可能データ参照テーブル1701の一例を示す説明図である。実行可能データ参照テーブル1701は、クエリ登録部111で生成されてデータ実行部112で更新される。実行可能データ参照テーブル1701は、実行木228の各オペレータが、入力ストリーム用データセットキー値402ごとに、実行可能なデータが存在するか否かを示す。図18では、入力ストリーム用データセットキー値402として「田中家」1805、「佐藤ビル」1806があり、それぞれオペレータRANGE 1802、GROUP BY 1803、ISTREAM 1804に実行可能なデータが存在するか否かを、フラグ「○」が格納されているか否かで示す。
 図19A,図19Bは、実行領域218A、219Aの一例を示すブロック図である。第二実施形態における実行領域218A、219Aは、前記第一実施形態の実行領域218、219とは異なり、発火時刻参照テーブル1004、1017を含まず、ストリームデータ格納キュー1002、1015と、実行状態1008、1021を含む。
 図20は、クエリ登録部111の処理の一例を示すフローチャートである。このフローチャートは、前記第一実施形態の図13に示したフローチャートのステップ1303とステップ1304の間に、ステップ2001を加えたもので、その他の処理は図13と同様である。なお、以下では前記第一実施形態の図13と同一の処理については重複した説明を省略する。
 第二実施形態のクエリ登録部111の処理では、第一実施形態とは異なり、ユーザの入力を送信する登録サーバ105から受け取った入力ストリーム用データセットキー205と、実行木(コンパイル部で生成)に含まれる各オペレータから、実行可能データ参照テーブル1701を生成する(2001)。生成した実行可能データ参照テーブル1701は図18に示した1805、1806のようなデータは存在しても構わないし、データが存在しない空のテーブルであってもよい。その他のクエリ登録時の処理については、前記第一実施形態と同様である(1301~1307)。
 データ入力部110の処理については、前記第一実施形態と同様である。
 図21A、図21Bは、データ実行部112の処理の一例を示すフローチャートである。図21A、図21Bの処理は、前記第一実施形態の図15A、図15Bに代わってデータ実行部112で行われる処理である。
 データ実行部112の処理では、まず実行順序決定部(2107)において、入力ストリーム214に入力データが存在する限り(2101)、1502~1505の手順(第一実施形態と同様)に従ってストリームデータ格納キューに入力データを格納し続ける。
 実行順序決定部217は、ステップ1502~1505については、前記第一実施形態の図15Aと同様に、実行順序決定部217が、入力ストリーム214の入力データ213を、入力ストリーム用データセットキー値402毎の実行領域218A、219Aのストリームデータ格納キュー221に格納する。
 図22A、図22Bは、データ入力部110とデータ実行部112のタイムチャートを示す。上記データ実行部112では、上記ステップ2101の処理により、前記第一実施形態とは異なり、データ入力部110が出力した入力ストリーム214から連続して入力データ707、706、708を取得し、入力データ707を実行領域Aのストリームデータ格納キュー1002と、入力データ706、708を実行領域Bのストリームデータ格納キュー1015にそれぞれ格納する。
 そしてデータ実行部112の実行順序決定部217は、入力ストリーム214に入力データ213が存在しなくなったら(図21Aの2101)、実行木228の最初のオペレータを実行オペレータ226とする(図21Aの2102)。
 そしてデータ実行部112は、取得した入力データ213が属するデータセットの実行領域のストリームデータ格納キュー221の先頭データの時刻(複数の入力ストリームのデータを処理するクエリの場合には、複数のストリームデータ格納キュー1002,1015の先頭データの時刻)を比較し、最も時刻が古いデータが存在するストリームデータ格納キューを選択する。そして、データ実行部112は、選択したストリームデータ格納キューの入力データ213について、実行可能データ参照テーブル1701(図18)の、入力データのデータセット(入力ストリーム用データセットキー402)に対応する、実行オペレータの項目に「○」フラグを付加し、実行可能データ参照テーブル1701を更新する。
 つまり、実行順序決定部217は、ストリームデータ格納キュー1002,1015の入力データ213のうち、先頭データの時刻が最も古い時刻の入力データ213を抽出し、この入力データ213と実行木228に対応する実行可能データ参照テーブル1701のエントリを、実行可能であることを示す値(例えば、「○」)を書き込んで更新する。
 そして実行順序決定部217は、更新後の実行可能データ参照テーブル1701を参照し、実行オペレータ226において、いずれかのデータセットに実行可能なデータが存在する場合には(図21Bの2103)、当該データセットの実行領域上の実行状態223を用いて、実行データ224を実行オペレータ226で処理する(図21Bの1509)。
 そして、実行順序決定部217は、実行オペレータ226が該データセットにおいて実行可能なデータがなくなった場合には、実行可能データ参照テーブル(図18)の対応する「○」フラグを消すことによりリセットする(図21Bの2106)。
 実行順序決定部217は、前記実行オペレータ226を処理した後、処理結果を、受信サーバ117や入力データ受信部207において、出力データとして取得する場合には(1511)、第一実施形態と同様に単一のストリームにマージする(1512)。
 実行順序決定部217では、以上のステップ2103からステップ1512の処理を繰り返す。そして実行順序決定部217は、ステップ2103において実行データ224が求められなかった場合には、実行木228の次のオペレータを実行オペレータ226として(2104)、上記ステップ2103の処理を行う。そして実行順序決定部217は、ステップ2104において実行木228に次のオペレータが存在しなくなったら、ステップ1502の処理に戻って入力ストリーム214から入力データ213を取得し、上記と同様に処理する。
 例えば、図19A、図19Bは、入力データ707、706、708を格納したストリームデータ格納キュー221(1002、1016)である。データ実行部112の実行順序決定部217は、ストリームデータ格納キュー221へ前記入力データ213を格納した後、図22A、図22Bに示すように、実行木228(図6)の最初のオペレータであるオペレータRANGE601を、実行オペレータ226として決定する。そして、実行順序決定部217が、実行可能データ参照テーブル1701(図18)を参照し、データセット「佐藤ビル」がオペレータRANGE601において実行可能である(フラグ「○」を格納している)ことから、図22A,図22Bに示すように、実行データを706とする。そして実行順序決定部217は、実行領域Bで実行オペレータ226であるRANGE601で実行データ706を処理した後、実行可能データ参照テーブル1701においてデータセット「佐藤ビル」のオペレータRANGEのフラグ「○」を削除(リセット)し、同データセットのオペレータGROUP BYにフラグ「○」を設定し、実行可能データ参照テーブル1701を更新する。
 そして実行順序決定部217は、図22A、図22Bで示すように、続いてデータセット「佐藤ビル」のデータ708を実行データとし、次にデータセット「田中家」のデータ707を実行し、上記と同様に実行可能データ参照テーブル1701を更新する。
 そして実行順序決定部217では、オペレータRANGE601の実行後、オペレータRANGE 601で実行可能なデータが存在しなくなるため、実行木228(図6)の次のオペレータGROUP BY 602を実行オペレータ226とし、同様に実行データ1603,1605,1601を選択して、オペレータGROUP BY 602で処理し、実行可能データ参照テーブル1701を上述のように更新する。
 実行順序決定部217は、最後にオペレータISTREAM 603で各実行データ1604,1606,1602に対して処理を行った後、第一実施形態と同様に、処理結果を出力データ1203、1202、1204として出力ストリームに格納する。
 なお上記のデータ実行部112で行われる処理は、前記非特許文献3に開示されているラウンドロビンのオペレータスケジューリングの中で、各オペレータの実行データ224がある限り、同じオペレータを実行オペレータ226としていて処理する手法である。上記の他にも一定時間や一定回数まで同一のオペレータを実行オペレータ226とするスケジューリング方法や、実行可能なデータが存在するオペレータをランダムに実行オペレータとするスケジューリング方法もあるが、これらのスケジューリング方法についても、本発明では同様に実現可能である。
 なお第二実施形態では実行順序決定部217において、ストリームデータ格納キュー221を参照する点で非特許文献3と共通しているが、実行領域名参照テーブル215及び、実行領域名216、実行領域218、219、実行可能データ参照テーブル1701を参照する点で非特許文献3と異なる。また、第二実施形態では非特許文献3とは異なり、ストリームデータ処理サーバ108がデータセットキー読込み部211、データセットキー205、部分的時刻順ソート処理部209、データセット変換テーブル210、データ出力部230を含む点が、構成上の特徴である。
<第三実施形態>
 続いて第三実施形態について図面を用いて説明する。第三実施形態は前記第一実施形態、第二実施形態とは異なり、ストリームデータ処理エンジン(本発明ではデータ実行部112に相当)を従来例から変更することなしに、同様の効果を実現する。
 図23A、図23Bは第三実施形態の計算機システムを示すブロック図である。図23Aは、ストリームデータ処理サーバ108の入出力の関係を示すブロック図である。また、図23Bは、ストリームデータ処理サーバ108の詳細なブロック図である。
 第三実施形態では、クエリ登録部111において、前記第一実施形態、第二実施形態とは異なり、ユーザ204が最大処理データ数2301を指定し、指定された最大処理データ数2301を、登録サーバ105からストリームデータ処理サーバ108に送信する。
 そしてクエリ登録部111は、ストリーム及びクエリ複製部2302において、データセットキー205と、ストリーム及びクエリ定義206と、最大データセット数2301を登録サーバ105から受信し、複数ストリーム及びクエリ定義2303を生成する。そしてクエリ登録部111では、コンパイル部212が、複数ストリーム及びクエリ定義2303から複数の実行木228を生成し、各実行木228を複数のデータ実行部112に転送する。なお、図23A、図23Bでは、複数のデータ実行部112が3つのデータ実行部#1~#3で構成された例を示すが、任意の数のデータ実行部112を備えることができる。
 そしてデータ入力部110では、第一実施形態、第二実施形態とは異なり、部分的時刻順ソート処理部209において部分的に時刻順でソートした入力データを、データセットとストリームの対応テーブル2305に従って、複数のデータ実行部112の入力ストリーム214にそれぞれ格納する。
 複数のデータ実行部(#1~#3)112は、該入力ストリーム214を従来のストリームデータ処理システムと同様に処理し、処理結果の出力データ229を出力ストリーム231に格納して出力する。
 最後にストリームマージ部2306において、複数のデータ実行部112の出力ストリーム231から出力データ229を取得して出力キュー2307に格納する。
 出力キュー2307に格納された出力データ229は、受信サーバ117や入力データ受信部207に送信される。
 図24は、最大データセット数2301の一例を示す。クエリ登録部111が最大データセット数2301は、入力ストリーム用データセットキー402に設定可能な値の数を表す。図中2301では、最大データセット数は3であり、入力ストリーム用データセットキーが「設置場所」であることから、設置場所の数が最大で3であることを示す。後述するように最大データセット数2301は、データ実行部112の入力ストリーム214の数を示す。
 図25は、データ入力部110のデータセットとストリームの対応テーブル2305の一例を示す。第三実施形態では、データ入力部110が、入力ストリーム用データセットキーの値ごとに、複数のデータ実行部#1~#3に対応する異なる入力ストリーム214を生成して入力データを格納する。データセットとストリームの対応テーブル2305では、入力ストリーム用データセットキー値2501と、入力ストリーム用データセットキー値を有する入力データを格納する入力ストリーム2502の対応関係を示す。例えば図中のエントリ2503は、入力ストリーム用データセットキー値2501が「田中家」の入力データは、入力ストリーム「電気メータ1」に格納することを示す。またエントリ2504では、入力ストリーム用データセットキー値2501が「佐藤ビル」の入力データは、入力ストリーム「電気メータ2」に格納することを示す。またエントリ2505に、入力ストリーム「電気メータ3」に格納する入力データが存在しないことを示す。図示の例では、入力ストリーム「電気メータ1」はデータ実行部#1の入力ストリーム214に対応し、入力ストリーム「電気メータ2」は、データ実行部#2の入力ストリーム214に対応し、入力ストリーム「電気メータ3」は、データ実行部#3の入力ストリーム214に対応する。
 図26は、出力キュー2307の一例を示す。出力キュー2307は、受信サーバ117や入力データ受信部207に送信する出力データ229を格納するキューである。図26では、出力キュー2307に、出力データ1202~1204が格納されている例を示す。
 図27A~図27Fは、クエリ登録部111の複製ストリーム及びクエリ定義2303の一例を示す。複製ストリーム及びクエリ定義2303は、ユーザが登録サーバ105で指定したストリーム及びクエリ定義206(図3A、図3B)のストリーム定義と、クエリ定義をストリーム及びクエリ複製部2302で複製し、複製後のストリーム名と、クエリ名を変更したストリーム定義と、クエリ定義である。
 図27A、図27C,図27Eは、図25に示したデータセットとストリームの対応テーブル2305の電気メータ1~3ストリーム2701、2703、2705を示し、各ストリームの定義は、ストリーム及びクエリ複製部2302が、図3Aの電気メータストリーム定義301を3つに複製し、それぞれストリーム名を変更したストリーム定義である。
 また、図27B、図27D,図27Fは、電気メータ1~3ストリームに対応する使用電力集計1~3クエリ2702、2704、2706を示し、ストリーム及びクエリ複製部2302が、図3Bに示した使用電力集計クエリ定義302を3つに複製し、クエリ名を変更したクエリ定義である。
 図28は、クエリ登録部111の処理の一例を示すフローチャートである。クエリ登録部111は、データセットキー読込み部211で登録サーバ105からデータセットキー205を受信する(2801、1302)。次に、クエリ登録部111は、第一実施形態とは異なり、図3Cに示したデータセットキー205の入力ストリーム用データセットキー304からデータセット&ストリーム対応テーブル2305を生成する(2802)。生成されたデータセット&ストリーム対応テーブル2305は、図25のエントリ2503~2505のようなデータは存在しても構わないし、データが存在しない空のテーブルであっても構わない。
 そして、クエリ登録部111は前記第一実施形態の図13と同様にステップ1304,1305でデータセット変換テーブル210を生成する。クエリ登録部111は、データセットキー読込み部211の処理が終了した後(2803)、ストリーム及びクエリ複製部2302で、登録サーバ105からストリーム及びクエリ定義206と最大データセット数2301を受信し、定義されたストリームと、クエリを最大データセット数2301の値に応じた数だけ複製し、名称を変更して複数ストリーム及びクエリ定義2303を生成する(2804)。
 そしてクエリ登録部111のコンパイル部212は、複製された複数のストリーム及びクエリ定義2303をコンパイルして、複数の実行木228を生成する(2805)。そして、生成された複数の実行木228を異なるデータ実行部#1~#3におけるオペレータ処理部227に格納する。例えば、前記第一実施形態の図3A、図3Bと同様に、ストリーム定義301、クエリ定義302が設定され、最大データセット数2301は図24で示した「3」の場合には、クエリ登録部111は、図27A、図27C、図27Eに示した複製ストリーム(電気メータ1~3ストリーム)2701,2703,2705と、図27B、図27D、図27Fのクエリ定義(使用電力集計1~3クエリ)2702,2704,2706を生成する。そしてコンパイル部212において、複製ストリーム及びクエリ定義2701~2706から、実行木228(図6)を3つ生成する。生成された各実行木228はクエリ登録部111から各データ実行部#1~#3に出力される。
 図29は、データ入力部110の処理の一例を示すフローチャートである。データ入力部110では、前記第一実施形態の図14のステップ1402~1409と同様に、データセット変換テーブル210を用いて入力データの受信処理を行い、入力ストリーム用データセットキー値402(図4)毎に入力データを時刻順にソートする(1411)。そして、データ入力部110の部分的時刻順ソート処理部209で部分的時刻順ソート処理が終了した後(2902)、ストリーム振分け処理部2304の処理を開始する(2903)。
 ストリーム振分け処理部2304では、時刻が最古の入力データの入力ストリーム用データセットキー値2501から、データセット&ストリーム対応テーブル2305を参照し、該データが属する入力ストリーム2502を抽出し(2905)、該データを入力ストリーム214に格納する(2907)。ステップ2905において、ストリーム振分け処理部2304は、該データが属する入力ストリーム2502が抽出されない場合には、データセット&ストリーム対応テーブル2305に、該データの入力ストリーム用データセットキー値2501と、データセットが割当てられていない入力ストリーム名2502を追加し(2906)、当該入力ストリームに該データを格納する(2907)。該データは従来のストリームデータ処理システムと同様に入力ストリーム用データセットキー値2501毎の入力ストリーム2502を複数のデータ実行部#1~#3で処理し、処理結果を出力ストリーム231にそれぞれ格納する。
 図31は、データ入力部110とデータ実行部(#1,#2)112、ストリームマージ部2306のタイムチャートを示す。データ入力部110において、入力データ706~708を受信し、データセット「田中家」の入力データ707と、データセット「佐藤ビル」の入力データ706、708を、データセット&ストリーム対応テーブル2305(図25)に従って、独立したデータ実行部#1、#2の入力ストリーム2502(214)に格納する。そしてそれぞれのデータ実行部#1、#2では、出力ストリーム231に、出力データ1204及び、出力データ1203、1202を格納する。
 図30は、ストリームマージ部2306の処理の一例を示すフローチャートである。ストリームマージ部2306(3001)では、データ実行部#1~#3のいずれかの出力ストリーム231に出力データが存在する限り(3002)、該出力データを出力ストリームに関係なく単一の出力キュー2307に格納し続ける(3003)。例えば、図26に示すように、出力キュー2307に、入力データ706~708の処理結果を、出力データ1202~1204として格納する。なお、出力キュー2307に格納された出力データ1202~1204は、所定のタイミング(例えば、所定の周期)で受信サーバ117に送信される。
 以上で記述した第三実施形態は、従来のストリームデータ処理エンジン(データ実行部#1~#3)を変更することなしに、前記第一実施形態と同様の効果を実現することができる。上記の他に、最大データセット数2301を指定せず、データ実行部#1~#3での処理の実行時に入力ストリーム用データセットキー値2501の数の増加に従って、動的にストリーム及びクエリの定義を複製する。そして複製したストリーム及びクエリをコンパイルし、生成した実行木228を登録することも可能である。
 なお、上記第一~第三の実施形態において、データセットキー205やストリーム及びクエリ定義206等の設定情報を登録サーバ105から受信する例を示したが、ストリームデータ処理サーバ108に入力装置を設け、当該入力装置から設定情報を受け付けてもよい。
 以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
 本発明は、時刻を含む入力データに対してストリームデータ処理を行う計算機システムに適用することができる。

Claims (14)

  1.  プロセッサとメモリを備えたストリームデータ処理装置で、時刻が含まれた入力データで構成されるストリームデータを受信し、予め登録されたクエリに従って前記ストリームデータの処理を実行するストリームデータ処理方法であって、
     前記ストリームデータ処理装置は、
     前記ストリームデータを構成する複数の入力データを受信するデータ入力部と、
     前記入力データを時刻順に処理する前記入力データの項目をデータセットとして指定する第1のキーと、前記ストリームデータの定義と、前記クエリの定義を受け付けて前記入力データを処理するオペレータを生成するクエリ登録部と、
     前記データセット毎に前記入力データを処理するオペレータを決定し、当該オペレータで前記入力データを処理した結果を出力するデータ実行部と、を有し、
     前記ストリームデータ処理方法は、
     前記クエリ登録部が、前記第1のキーとクエリの定義及びストリームデータの定義を受け付けて、前記入力データに含まれる項目のうち、時刻順に処理するデータセットを設定する第1のステップと、
     前記データ入力部が、前記入力データを受信して、入力ストリームを生成する第2のステップと、
     前記データ実行部が、前記入力ストリームを受け付けて、当該入力ストリームに含まれる入力データを、前記データセット毎に前記オペレータで処理する第3のステップと、
     前記オペレータが処理した結果を単一の出力ストリームとして生成する第4のステップと、を含むことを特徴とするストリームデータ処理方法。
  2.  請求項1に記載のストリームデータ処理方法であって、
     前記第3のステップは、
     前記データ実行部が、前記第1のキーで指定された項目を用いて前記データセット毎に入力データを処理する実行領域を前記メモリ上に生成する第5のステップと、
     前記データ実行部が、前記入力ストリームに含まれる入力データが属するデータセットを決定する第6のステップと、
     前記データ実行部が、前記決定されたデータセットに対応する前記実行領域へ前記入力データを格納する第7のステップと、
     前記データ実行部が、前記実行領域毎に前記オペレータで前記入力データを処理する第8のステップと、を含むことを特徴とするストリームデータ処理方法。
  3.  請求項2に記載のストリームデータ処理方法であって、
     前記第5のステップは、
     前記データ実行部が、前記データセットに対応する入力データを初めて受け付けたときに前記実行領域を前記メモリ上に生成することを特徴とするストリームデータ処理方法。
  4.  請求項2に記載のストリームデータ処理方法であって、
     前記第8のステップは、
     前記データ実行部が、前記入力データを処理する前記オペレータを前記実行領域に格納し、前記オペレータを実行する時刻を発火時刻として格納し、前記時刻が前記発火時刻となった入力データを実行し、前記オペレータの処理が終わった入力データと同一のデータセットかつ同一時刻に実行可能な次の入力データがある限り、当該オペレータで前記次の入力データを処理することを特徴とするストリームデータ処理方法。
  5.  請求項2に記載のストリームデータ処理方法であって、
     前記第8のステップは、
     前記データ実行部が、前記入力データとオペレータ毎に実行可能か否かを示す情報を格納する実行可能データ情報を設定する第9のステップと、
     前記データ実行部が、前記実行可能データ情報を参照して実行可能な入力データとオペレータを決定する第10のステップと、
     前記データ実行部が、前記実行した入力データとオペレータに対応する実行可能データ情報を更新する第11のステップと、
    を含むことを特徴とするストリームデータ処理方法。
  6.  請求項1に記載のストリームデータ処理方法であって、
     前記第1のステップは、
     前記クエリ登録部が、前記データセットとして指定する第1のキーに加えて、前記入力データを時刻順にソートする前記入力データの項目を指定する第2のキーを受け付けて、
     前記第2のステップは、
     前記データ入力部が、前記第1のキーで指定された項目で、前記入力データを前記データセット毎に分類し、前記データセット毎に前記第2のキーに対応する入力データの項目を時刻順にソートして入力ストリームを生成する際に、前記第1のキーの値が同一の入力データのうち、前記第2のキーの値が異なる入力データを時刻順にソートすることを特徴とするストリームデータ処理方法。
  7.  請求項1に記載のストリームデータ処理方法であって、
     前記第1のステップは、
     前記クエリ登録部が、前記第1のキーとクエリの定義及びストリームデータの定義を受け付けて、前記ストリームデータの定義を複製して複数の入力ストリームを定義し、前記入力データに含まれる項目のうち、時刻順に処理するデータセットと複数の入力ストリームの関係を設定し、
     前記第2のステップは、
     前記データ入力部が、前記入力データを受信して、前記第1のキーで指定された項目で、前記入力データを前記データセット毎に分類し、前記データセット毎に前記入力データを時刻順にソートして前記データセットと複数の入力ストリームの関係から複数の入力ストリームを生成し、
     前記第3のステップは、
     前記データ実行部が、前記複数の入力ストリームをそれぞれ受け付けて、当該入力ストリームに含まれる入力データを、前記入力ストリーム毎に前記オペレータで処理し、
     前記第4のステップは、
     前記複数の入力ストリームをオペレータが処理した結果を単一のキューに出力して出力ストリームを生成することを特徴とするストリームデータ処理方法。
  8.  プロセッサとメモリを備えて、時刻が含まれた入力データで構成されるストリームデータを受信し、予め登録されたクエリに従って前記ストリームデータの処理を実行するストリームデータ処理装置であって、
     前記ストリームデータを構成する複数の入力データを受信するデータ入力部と、
     前記入力データを時刻順に処理する前記入力データの項目をデータセットとして指定する第1のキーと、前記ストリームデータの定義と、前記クエリの定義を受け付けて前記入力データを処理するオペレータを生成するクエリ登録部と、
     前記データセット毎に前記入力データを処理するオペレータを決定し、当該オペレータで前記入力データを処理した結果を出力するデータ実行部と、を有し、
     前記クエリ登録部は、
     前記第1のキーとクエリの定義及びストリームデータの定義を受け付けて、前記入力データに含まれる項目のうち、時刻順に処理するデータセットを設定し、
     前記データ入力部は、
     前記入力データを受信して、入力ストリームを生成し、
     前記データ実行部は、
     前記入力ストリームを受け付けて、当該入力ストリームに含まれる入力データを、前記データセット毎に前記オペレータで処し、前記オペレータが処理した結果を単一の出力ストリームとして生成することを特徴とするストリームデータ処理装置。
  9.  請求項8に記載のストリームデータ処理装置であって、
     前記データ実行部は、前記第1のキーで指定された項目を用いて前記データセット毎に入力データを処理する実行領域を前記メモリ上に生成し、前記入力ストリームに含まれる入力データが属するデータセットを決定し、前記決定されたデータセットに対応する前記実行領域へ前記入力データを格納し、前記実行領域毎に前記オペレータで前記入力データを処理することを特徴とするストリームデータ処理装置。
  10.  請求項9に記載のストリームデータ処理装置であって、
     前記データ実行部は、前記データセットに対応する入力データを初めて受け付けたときに前記実行領域を前記メモリ上に生成することを特徴とするストリームデータ処理装置。
  11.  請求項9に記載のストリームデータ処理装置であって、
     前記データ実行部は、前記入力データを処理する前記オペレータを前記実行領域に格納し、前記オペレータを実行する時刻を発火時刻として格納し、前記時刻が前記発火時刻となった入力データを実行し、前記オペレータの処理が終わった入力データと同一のデータセットかつ同一時刻に実行可能な次の入力データがある限り、当該オペレータで前記次の入力データを処理することを特徴とするストリームデータ処理装置。
  12.  請求項9に記載のストリームデータ処理装置であって、
     前記データ実行部は、前記入力データとオペレータ毎に実行可能か否かを示す情報を格納する実行可能データ情報を設定し、前記実行可能データ情報を参照して実行可能な入力データとオペレータを決定し、前記実行した入力データとオペレータに対応する実行可能データ情報を更新することを特徴とするストリームデータ処理装置。
  13.  請求項8に記載のストリームデータ処理装置であって、
     前記クエリ登録部は、前記データセットとして指定する第1のキーに加えて、前記入力データを時刻順にソートする前記入力データの項目を指定する第2のキーを受け付け、
     前記データ入力部は、前記第1のキーで指定された項目で、前記入力データを前記データセット毎に分類し、前記データセット毎に前記第2のキーに対応する入力データの項目を時刻順にソートして入力ストリームを生成する際に、前記第1のキーの値が同一の入力データのうち、前記第2のキーの値が異なる入力データを時刻順にソートすることを特徴とするストリームデータ処理装置。
  14.  請求項8に記載のストリームデータ処理装置であって、
     前記クエリ登録部は、前記第1のキーとクエリの定義及びストリームデータの定義を受け付けて、前記ストリームデータの定義を複製して複数の入力ストリームを定義し、前記入力データに含まれる項目のうち、時刻順に処理するデータセットと複数の入力ストリームの関係を設定し、
     前記データ入力部は、前記入力データを受信して、前記第1のキーで指定された項目で、前記入力データを前記データセット毎に分類し、前記データセット毎に前記入力データを時刻順にソートして前記データセットと複数の入力ストリームの関係から複数の入力ストリームを生成し、
     前記データ実行部は、前記複数の入力ストリームをそれぞれ受け付けて、当該入力ストリームに含まれる入力データを、前記入力ストリーム毎に前記オペレータで処理し、前記複数の入力ストリームをオペレータが処理した結果を単一のキューに出力して出力ストリームを生成することを特徴とするストリームデータ処理装置。
PCT/JP2010/067587 2010-10-06 2010-10-06 ストリームデータ処理方法及び装置 WO2012046316A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012537519A JP5480395B2 (ja) 2010-10-06 2010-10-06 ストリームデータ処理方法及び装置
PCT/JP2010/067587 WO2012046316A1 (ja) 2010-10-06 2010-10-06 ストリームデータ処理方法及び装置
US13/824,873 US20130226909A1 (en) 2010-10-06 2010-10-06 Stream Data Processing Method and Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/067587 WO2012046316A1 (ja) 2010-10-06 2010-10-06 ストリームデータ処理方法及び装置

Publications (1)

Publication Number Publication Date
WO2012046316A1 true WO2012046316A1 (ja) 2012-04-12

Family

ID=45927332

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/067587 WO2012046316A1 (ja) 2010-10-06 2010-10-06 ストリームデータ処理方法及び装置

Country Status (3)

Country Link
US (1) US20130226909A1 (ja)
JP (1) JP5480395B2 (ja)
WO (1) WO2012046316A1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014041673A1 (ja) * 2012-09-14 2014-03-20 株式会社日立製作所 ストリームデータ多重処理方法
WO2016067335A1 (ja) * 2014-10-27 2016-05-06 株式会社日立製作所 ストリームデータの処理方法及びストリームデータ処理装置
JPWO2014163072A1 (ja) * 2013-04-01 2017-02-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム
JP2017514216A (ja) * 2014-03-31 2017-06-01 華為技術有限公司Huawei Technologies Co.,Ltd. イベント処理システム
JP2017535012A (ja) * 2014-10-08 2017-11-24 シグナルエフエックス インコーポレイテッド ソフトウェアの計測に基づいたリアルタイム報告
JP2019521421A (ja) * 2016-05-24 2019-07-25 アビニシオ テクノロジー エルエルシー ネットワーク内のキー付きデータを処理するための実行可能ロジック
JP2020074157A (ja) * 2014-12-19 2020-05-14 シグナルエフエックス インコーポレイテッド 計測手段が組み込まれたソフトウェアを分析するためのデータストリーム処理言語
US11010278B2 (en) 2014-10-08 2021-05-18 Splunk Inc. Real-time reporting based on instrumentation of software
US11194697B2 (en) 2015-01-29 2021-12-07 Splunk Inc. Real-time processing of data streams received from instrumented software

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579603B2 (en) 2015-04-17 2020-03-03 International Business Machines Corporation Removing sets of tuples in a streaming environment
US10073877B2 (en) 2015-06-11 2018-09-11 International Business Machines Corporation Data processing flow optimization
CN107589907B (zh) * 2017-08-10 2019-12-13 深圳壹账通智能科技有限公司 数据处理方法、电子设备及计算机可读存储介质
CN107590023B (zh) * 2017-08-10 2020-10-02 深圳壹账通智能科技有限公司 数据处理方法、电子设备及计算机可读存储介质
US11409701B2 (en) * 2019-08-07 2022-08-09 Sap Se Efficiently processing configurable criteria
US12001427B2 (en) * 2020-12-28 2024-06-04 Samsung Electronics Co., Ltd. Systems, methods, and devices for acceleration of merge join operations

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010108044A (ja) * 2008-10-28 2010-05-13 Hitachi Ltd ストリームデータ処理プログラム及び計算機システム
JP2010108152A (ja) * 2008-10-29 2010-05-13 Hitachi Ltd ストリームデータ処理方法、及びそのシステム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8396886B1 (en) * 2005-02-03 2013-03-12 Sybase Inc. Continuous processing language for real-time data streams
US7673065B2 (en) * 2007-10-20 2010-03-02 Oracle International Corporation Support for sharing computation between aggregations in a data stream management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010108044A (ja) * 2008-10-28 2010-05-13 Hitachi Ltd ストリームデータ処理プログラム及び計算機システム
JP2010108152A (ja) * 2008-10-29 2010-05-13 Hitachi Ltd ストリームデータ処理方法、及びそのシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SATOSHI KATSUNUMA ET AL.: "Stream Data Shori no Bunsan Heiretsuka Jikko ni Okeru Merge Shori Cost Sakugen Hoshiki", THE SECOND FORUM ON DATA ENGINEERING AND INFORMATION MANAGEMENT RONBUNSHU, 25 May 2010 (2010-05-25), pages 1 - 8, Retrieved from the Internet <URL:http://db-event.jpn.org/deim2010/proceedings/files/B3-3.pdf> [retrieved on 20101026] *

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798830B2 (en) 2012-09-14 2017-10-24 Hitachi, Ltd. Stream data multiprocessing method
JP5887418B2 (ja) * 2012-09-14 2016-03-16 株式会社日立製作所 ストリームデータ多重処理方法
WO2014041673A1 (ja) * 2012-09-14 2014-03-20 株式会社日立製作所 ストリームデータ多重処理方法
JPWO2014163072A1 (ja) * 2013-04-01 2017-02-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム
US11138177B2 (en) 2014-03-31 2021-10-05 Huawei Technologies Co., Ltd. Event processing system
JP2017514216A (ja) * 2014-03-31 2017-06-01 華為技術有限公司Huawei Technologies Co.,Ltd. イベント処理システム
US11010278B2 (en) 2014-10-08 2021-05-18 Splunk Inc. Real-time reporting based on instrumentation of software
JP7065916B2 (ja) 2014-10-08 2022-05-12 スプランク インコーポレイテッド ソフトウェアの計測に基づいたリアルタイム報告
JP2020187798A (ja) * 2014-10-08 2020-11-19 スプランク インコーポレイテッド ソフトウェアの計測に基づいたリアルタイム報告
JP2017535012A (ja) * 2014-10-08 2017-11-24 シグナルエフエックス インコーポレイテッド ソフトウェアの計測に基づいたリアルタイム報告
JP7023113B2 (ja) 2014-10-08 2022-02-21 スプランク インコーポレイテッド ソフトウェアの計測に基づいたリアルタイム報告
JPWO2016067335A1 (ja) * 2014-10-27 2017-04-27 株式会社日立製作所 ストリームデータの処理方法及びストリームデータ処理装置
WO2016067335A1 (ja) * 2014-10-27 2016-05-06 株式会社日立製作所 ストリームデータの処理方法及びストリームデータ処理装置
US12039307B1 (en) 2014-12-19 2024-07-16 Splunk Inc. Dynamically changing input data streams processed by data stream language programs
JP2020074157A (ja) * 2014-12-19 2020-05-14 シグナルエフエックス インコーポレイテッド 計測手段が組み込まれたソフトウェアを分析するためのデータストリーム処理言語
US10949180B2 (en) 2014-12-19 2021-03-16 Splunk Inc. Dynamically changing input data streams processed by data stream language programs
US11733982B1 (en) 2014-12-19 2023-08-22 Splunk Inc. Dynamically changing input data streams processed by data stream language programs
US11709661B2 (en) 2014-12-19 2023-07-25 Splunk Inc. Representing result data streams based on execution of data stream language programs
US11194697B2 (en) 2015-01-29 2021-12-07 Splunk Inc. Real-time processing of data streams received from instrumented software
US11928046B1 (en) 2015-01-29 2024-03-12 Splunk Inc. Real-time processing of data streams received from instrumented software
JP7163435B2 (ja) 2016-05-24 2022-10-31 アビニシオ テクノロジー エルエルシー ネットワーク内のキー付きデータを処理するための実行可能ロジック
US11295049B2 (en) 2016-05-24 2022-04-05 Ab Initio Technology Llc Executable logic for processing keyed data in networks
JP2021106000A (ja) * 2016-05-24 2021-07-26 アビニシオ テクノロジー エルエルシー ネットワーク内のキー付きデータを処理するための実行可能ロジック
JP2019521421A (ja) * 2016-05-24 2019-07-25 アビニシオ テクノロジー エルエルシー ネットワーク内のキー付きデータを処理するための実行可能ロジック

Also Published As

Publication number Publication date
JP5480395B2 (ja) 2014-04-23
US20130226909A1 (en) 2013-08-29
JPWO2012046316A1 (ja) 2014-02-24

Similar Documents

Publication Publication Date Title
JP5480395B2 (ja) ストリームデータ処理方法及び装置
JP5395565B2 (ja) ストリームデータ処理方法及び装置
He et al. Comet: batched stream processing for data intensive distributed computing
JP5377897B2 (ja) ストリームデータのランキングクエリ処理方法およびランキングクエリ処理機構を有するストリームデータ処理システム
Yang et al. Huge: An efficient and scalable subgraph enumeration system
US9426211B2 (en) Scaling event processing in a network environment
US20160098450A1 (en) Querying input data
Margara et al. High-performance publish-subscribe matching using parallel hardware
CN105138679B (zh) 一种基于分布式缓存的数据处理系统及处理方法
US9990403B2 (en) System and a method for reasoning and running continuous queries over data streams
WO2012137347A1 (ja) 計算機システム及び並列分散処理方法
CN114756629A (zh) 基于sql的多源异构数据交互分析引擎及方法
Liu et al. Optimizing shuffle in wide-area data analytics
JP2013058108A (ja) タグ管理装置およびタグ管理プログラム
Lv et al. An effective framework for asynchronous incremental graph processing
Zhang et al. Egraph: efficient concurrent GPU-based dynamic graph processing
US10599472B2 (en) Information processing apparatus, stage-out processing method and recording medium recording job management program
Chen et al. Pisces: optimizing multi-job application execution in mapreduce
Aziz et al. An efficient data access approach with queue and stack in optimized hybrid join
Yan et al. Efficient processing of very large graphs in a small cluster
Nykiel et al. Sharing across multiple MapReduce jobs
CN114116015B (zh) 用于管理硬件命令队列的方法及系统
Farag et al. Adaptive query processing in data stream management systems under limited memory resources
US9172595B2 (en) Systems and methods of packet object database management
Wang et al. OPTAS: Optimal data placement in MapReduce

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: 10858124

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012537519

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13824873

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 10858124

Country of ref document: EP

Kind code of ref document: A1