Patent Description:
Information processing systems often use key-value store to store data. The key-value store holds keys and values corresponding to the keys. For example, the key-value store is sometimes used to hold time-series data to be used for stream processing and the like.

For example, there is a proposal for a storage system that reads, from a data storage unit that stores divided data obtained by dividing time-series data, the divided data in an interval between first time and second time that a predetermined time has passed since the first time.

<CIT> refers to a scheduling system for scheduling the execution of tasks within a distributed computing system, wherein a key-value data store is used to store time windows for scheduled execution of tasks. An entry generator may generate schedule entries for inclusion within a time window of the time windows, each schedule identifying a task of the tasks and an associated schedule for execution.

Data in a time range having a predetermined time width is sometimes stored in one entry in the key-value store. Furthermore, a read request that specifies the time range with a certain time width is sometimes made to the key-value store. In this case, the number of reads of entries from the key-value store increases in order to read data for the requested time width as the time width of one entry in the key-value store is smaller than the time width for the read request.

In one aspect, an object of the present embodiments is to reduce the number of reads.

The object of the invention is solved by the subject matter of the independent claims. Advantageous embodiments of the invention are disclosed in the dependent claims. According to an example, a method performed by a computer for creating an entry includes: determining a first time width equal to or longer than a longest time width among time widths to be read based on a read request from each program to a key-value store that holds data that corresponds to time, as a time width to be associated with one entry in the key-value store; and creating the entry that corresponds to a plurality of data that belongs to a time range of the first time width based on the data for each time and storing the entry in the key-value store.

In one aspect, the number of reads can be reduced.

Hereinafter, the present embodiments will be described with reference to the drawings.

<FIG> is a diagram for describing an information processing device according to a first embodiment.

An information processing device <NUM> includes a storage unit <NUM> and a processing unit <NUM>. The storage unit <NUM> may be a volatile storage device such as a random access memory (RAM), or may be a nonvolatile storage device such as a hard disk drive (HDD) or a flash memory. The processing unit <NUM> may include a central processing unit (CPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), and the like. The processing unit <NUM> may be a processor that executes a program. The "processor" may include a set of a plurality of processors (multiprocessor).

The storage unit <NUM> has key-value store 11a. Note that the key-value store 11a may be included in a storage device outside the information processing device <NUM>. The key-value store 11a holds data corresponding to time. Specifically, the key-value store 11a holds an entry having a key and a value corresponding to the key. One entry corresponds to one record. Write and read of data to and from the key-value store 11a are performed in units of entries.

Here, the key is an identifier corresponding to time. The key may be an identifier that corresponds to a time range. The key may include, in addition to time, identification information of a device from which data is obtained, information of a type of data, and the like. The data stored in the key-value store 11a is, for example, data in time-series generated by a device such as a sensor, that is, time-series data. The data has a time stamp indicating the time when the data was generated and a value generated by the device (for example, a measured value of a physical quantity by a sensor). The data may be sensor data generated by a sensor.

In the example of the key-value store 11a, a time range that is a time width of <NUM> minutes is registered in an item of keys. Furthermore, a plurality of values corresponding to a plurality of pieces of time belonging to the time range that is the time width of five minute time is registered in an item of values. More specifically, the key-value store 11a stores an entry of the key "<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>" and the values "{<NUM>:<NUM>:<NUM>:v11,. , <NUM>:<NUM>:<NUM>:v12}". This entry indicates the value v11 at <NUM>:<NUM>:<NUM>,. , and the value v12 at <NUM>:<NUM>:<NUM> in the time range of the five-minute width from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>. In the example of the key-value store 11a, a plurality of entries corresponding to the time ranges of the five-minute width up to <NUM>:<NUM>:<NUM> is registered.

Here, it is assumed that the values corresponding to the key of the time range such as "<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>" include, for example, data up to the time (for example, "<NUM>:<NUM>:<NUM>") immediately before end time (for example, "<NUM>:<NUM>:<NUM>") and do not include data of the end time.

Furthermore, the key-value store 11a holds an entry that stores the latest data input in time-series until <NUM> minutes pass from <NUM>:<NUM>:<NUM>. The key of this entry is, for example, "latest". In the example of the key-value store 11a, values at and after <NUM>:<NUM>:<NUM> are recorded in the entry with the key "latest". Then, the processing unit <NUM> determines the time width to be associated with one entry in the key-value store 11a as follows.

The processing unit <NUM> accepts a read request from each program to the key-value store 11a. Each program may be executed by the information processing device <NUM>, or may be executed by another information processing device that communicates with the information processing device <NUM>. That is, the information processing device <NUM> may execute a plurality of programs that uses the data in the key-value store 11a, or accept a plurality of read requests from a plurality of programs executed by other information processing devices. The read request includes the time range to be read. The processing unit <NUM> reads and responds with the entry having the key corresponding to the appropriate time range from the key-value store 11a in response to the read request.

The processing unit <NUM> determines a first time width that is equal to or greater than the longest time width among the time widths to be read included in the read requests from each program, as the time width to be associated with one entry in the key-value store 11a. The time width to be read is the time width of the time range specified to be read.

For example, it is assumed that the processing unit <NUM> accepts read requests R1 and R2 until <NUM> minutes pass from <NUM>:<NUM>:<NUM>. The time width to be read for the read request R1 is <NUM> minutes. The time width to be read for the read request R2 is <NUM> minutes. The longest time width between the time widths for the read requests R1 and R2 is <NUM> minutes. In this case, as an example, the processing unit <NUM> sets <NUM> minutes as the first time width. Note that there are some cases where settable time width candidates are predetermined such as <NUM> minutes, <NUM> minutes, and the like. In that case, the processing unit <NUM> may set a time width candidate such as <NUM> minutes, which is longer than <NUM> minutes and has a small difference from <NUM> minutes, as the first time width.

The processing unit <NUM> creates an entry corresponding to a plurality of data belonging to the time range of the first time width based on input data for each time, and stores the entry in the key-value store 11a.

For example, at the point of time <NUM>:<NUM>:<NUM>, the processing unit <NUM> has already determined that the first time width is <NUM> minutes. Therefore, at the point of time <NUM>:<NUM>:<NUM>, the processing unit <NUM> does not create an entry with the time width of <NUM> minutes corresponding to at or after <NUM>:<NUM>:<NUM>, and continues recording of the values to the entry with the key "latest". Then, it is assumed that no read request longer than the time width of <NUM> minutes has occurred between <NUM>:<NUM>:<NUM> and <NUM>:<NUM>:<NUM>, and the first time width of <NUM> minutes is unchanged even at the point of time <NUM>:<NUM>:<NUM>.

Then, the processing unit <NUM> creates an entry e1 based on the record of the key "latest" in the key-value store 11a. The entry e1 has the key of "<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>" and the values of "{<NUM>:<NUM>:<NUM>:v41,. , <NUM>:<NUM>:<NUM>:v43}". The processing unit <NUM> stores the entry e1 in the key-value store 11a. Key-value store 11b indicates a result of storing the entry e1 in the key-value store 11a. The entry e1 corresponds to the time range from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (the time width of <NUM> minutes).

Furthermore, the processing unit <NUM> deletes the values of the key "latest" at the point of time the entry e1 has created. The value "{}" of the key "latest" in the key-value store 11b indicates the result of deleting the values. The entry with the key "latest" stores data input at or after <NUM>:<NUM>:<NUM>.

According to the information processing device <NUM>, the first time width that is equal to or greater than the longest time width among the time widths to be read based on the read requests from each program to the key-value store 11a is determined as the time width to be associated with one entry in the key-value store 11a. The entry e1 corresponding to the plurality of data belonging to the time range of the first time width is created and stored in the key-value store 11a based on the data for each time.

Thereby, the information processing device <NUM> can reduce the number of reads. In the above-described example, there is a high possibility that read requests with the time width to be read of <NUM> minutes will continue to occur like the read request R2 after the occurrence of the read request R2. Therefore, the information processing device <NUM> will be able to read the requested entry from the key-value store 11b with a relatively small number of reads even in a case of accepting the read request with the longest time width in the future by setting the time width of one entry to be equal to or greater than the longest time width. Therefore, the information processing device <NUM> can speed up the read of entries from the key-value store 11b. For example, in a case where the time range to be read is from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>, the information processing device <NUM> only needs to read the entry e1 once, and can read data at high speed in response to the read request.

Hereinafter, functions of the information processing device <NUM> will be described in more detail by illustrating an example of a more specific system.

Next, a second embodiment will be described.

<FIG> is a diagram illustrating an example of an information processing system according to the second embodiment.

The information processing system of the second embodiment includes an information processing device <NUM> and message queue servers <NUM> and <NUM>. The information processing device <NUM> and message queue servers <NUM> and <NUM> are coupled to a network <NUM>. The network <NUM> is, for example, a local area network (LAN). The message queue server <NUM> is coupled to a network <NUM>. The network <NUM> is a wide area network (WAN), the Internet, or the like. Connected cars <NUM>, <NUM>, and <NUM> and an internet of things (IoT) device <NUM> are coupled to the network <NUM>. The connected cars <NUM>, <NUM>, and <NUM> and the IoT device <NUM> have sensors that measure physical quantities such as speed and position.

The information processing system of the second embodiment collects event data such as the speed and position measured by the sensors of the connected cars <NUM>, <NUM>, and <NUM> and the sensors of the IoT device <NUM>. The event data may be referred to as sensor data. The event data is transmitted from the connected cars <NUM>, <NUM>, and <NUM> and the IoT device <NUM> in time-series. Therefore, the event data is a kind of time-series data. The information processing system executes stream processing for the event data input in time-series. The stream processing may be referred to as event stream processing.

The information processing system provides various services to users of the connected cars <NUM>, <NUM>, and <NUM> and the IoT device <NUM> according to a results of the stream processing. For example, a service that detects sway of a vehicle body from changes in speed over a certain time and warns the user of the appropriate vehicle, a service that notifies congestion information, detour route information, and the like to the users of vehicles in the vicinity of an appropriate road in a case where there is a large number of vehicles staying on the road, and the like are conceivable.

The information processing device <NUM> is a server computer that receives the event data from the message queue server <NUM> and executes the stream processing based on the event data. The event data includes time stamps and measured values by the sensors. Furthermore, a program that describes processing content of the stream processing is called user logic. One entry in KVS is a <key:value>, that is, a pair of key and value. Data is written to and read from KVS in units of entries.

The information processing device <NUM> holds the received event data and data obtained by processing the event data by the user logic in the key-value store (KVS). The information processing device <NUM> reads data from the KVS and writes data to the KVS in response to user logic requests. The information processing device <NUM> may also transmit a processing result of the user logic to the message queue server <NUM> as new event data.

The message queue servers <NUM> and <NUM> are server computers that function as message queues, respectively. A message queue is a queue that holds the received event data.

The message queue server <NUM> stores the event data received from the connected cars <NUM>, <NUM>, and <NUM> and the IoT device <NUM> in the message queue of the message queue server <NUM>. The message queue server <NUM> transmits the event data stored in the message queue to the information processing device <NUM>.

The message queue server <NUM> stores the event data received from the information processing device <NUM> in the message queue of the message queue server <NUM>. The message queue server <NUM> transmits the event data stored in the message queue to the information processing device <NUM> or another server computer that executes a predetermined service according to the event data. Here, in <FIG>, illustration of the another server computer is omitted. The another server computer may transmit the above-described warning of sway, congestion information, detour route information, and the like to the connected cars <NUM>, <NUM>, and <NUM> and the IoT device <NUM>. The processing for providing the predetermined service may be executed by the information processing device <NUM>.

In the information processing system of the second embodiment, each management unit of the connected cars <NUM>, <NUM>, and <NUM> and the IoT device <NUM> is called object. For example, the objects respectively corresponding to the connected cars <NUM>, <NUM>, and <NUM> may be referred to as vehicle objects. Furthermore, in a case where the IoT device <NUM> acquires information regarding a person, the IoT device <NUM> may be referred to as a human object. An object is information obtained by mapping a human, a device, or the like in a real world onto the information processing system. The object mapped to the information processing system is sometimes said to be a digital twin of the human, device, or the like in the real world.

Data representing a state of an object is called state. For example, a vehicle state includes information of speed, position, vehicle type, whether a wiper is on, or the like. Data of the state is associated with time information when the data was acquired by a sensor or the like, that is, a time stamp. In the processing of the user logic in the information processing device <NUM>, a certain time width is often specified from a data group of states existing in time-series and an access is made.

At this time, the time width required at the time of read differs for each user logic or state. Furthermore, the time width in which the user logic accesses the state is dynamic and unknown. The number of reads increases when the time width per entry in the KVS is smaller than the time width at the time of read access. For example, in a case where the time width of one entry is fixed to <NUM> minute determined in advance, that is, at least ten entries are read, that is, entries are read at least ten times, in response to the read request to read data for <NUM> minutes. Similarly, at least thirty entries are read, that is, entries are read at least thirty times, in response to the read request to read data for <NUM> minutes.

In this way, when storing time-series data in the KVS, for example, using a time width or a uniform time width for the entire digital twins determined in advance, there is a possibility that the number of read accesses increases and an execution time of the processing becomes long. Meanwhile, read is performed from the KVS in units of entries. Therefore, if the time width of one entry in the KVS is set to be very long in advance, extra data in the entry will be read together at the time of reading even if the time width of the read request is relatively short, and read cost increases compared to the time width of the read request.

Therefore, the information processing device <NUM> provides a function to control the time width of one entry in the KVS so as to efficiently perform read from the KVS.

<FIG> is a diagram illustrating a hardware example of the information processing device.

The information processing device <NUM> includes a CPU <NUM>, a RAM <NUM>, an HDD <NUM>, a graphics processing unit (GPU) <NUM>, an input interface <NUM>, a medium reader <NUM>, and a network interface card (NIC) <NUM>. Note that the CPU <NUM> is an example of the processing unit <NUM> according to the first embodiment. The RAM <NUM> or the HDD <NUM> is an example of the storage unit <NUM> according to the first embodiment.

The CPU <NUM> is a processor that executes program instructions. The CPU <NUM> loads at least a part of programs and data stored in the HDD <NUM> into the RAM <NUM> and executes the program. Note that the CPU <NUM> may include a plurality of processor cores. Furthermore, the information processing device <NUM> may include a plurality of processors. The processing to be described below may be executed in parallel using a plurality of processors or processor cores. Furthermore, a set of the plurality of processors is sometimes referred to as a "multiprocessor" or simply a "processor".

The RAM <NUM> is a volatile semiconductor memory that temporarily stores the program executed by the CPU <NUM> and data used by the CPU <NUM> for arithmetic operations. Note that the information processing device <NUM> may include a memory of a type other than the RAM or may include a plurality of memories.

The HDD <NUM> is a nonvolatile storage device that stores software programs such as an operating system (OS), middleware, and application software, and data. Note that the information processing device <NUM> may include other types of storage devices such as a flash memory and a solid state drive (SSD) and may include a plurality of nonvolatile storage devices.

The GPU <NUM> outputs an image to a display <NUM> coupled to the information processing device <NUM> in accordance with the instruction from the CPU <NUM>. As the display <NUM>, any type of display such as a cathode ray tube (CRT) display, a liquid crystal display (LCD), a plasma display, or an organic electro-luminescence (OEL) display can be used.

The input interface <NUM> acquires an input signal from an input device <NUM> coupled to the information processing device <NUM> and outputs the acquired input signal to the CPU <NUM>. As the input device <NUM>, a pointing device such as a mouse, a touch panel, a touch pad, or a trackball, a keyboard, a remote controller, a button switch, or the like can be used. Furthermore, a plurality of types of input devices may be coupled to the information processing device <NUM>.

The medium reader <NUM> is a reading device that reads a program and data recorded on a recording medium <NUM>. As the recording medium <NUM>, for example, a magnetic disk, an optical disk, a magneto-optical (MO) disk, a semiconductor memory, or the like can be used. The magnetic disk includes a flexible disk (FD) and an HDD. The optical disk includes a compact disc (CD) and a digital versatile disc (DVD).

The medium reader <NUM> copies the program and data read from the recording medium <NUM> to another recording medium such as the RAM <NUM> or the HDD <NUM>, for example. The read program is executed by the CPU <NUM>, for example. Note that the recording medium <NUM> may be a portable recording medium and is sometimes used for distribution of the program and data. Furthermore, the recording medium <NUM> and the HDD <NUM> are sometimes referred to as computer-readable recording media.

The NIC <NUM> is an interface that is coupled to the network <NUM> and communicates with another computer through the network <NUM>. The NIC <NUM> is coupled to a communication device such as a switch or a router by a cable, for example. The NIC <NUM> may be a wireless communication interface.

Note that the message queue servers <NUM> and <NUM> are also implemented by hardware similar to the information processing device <NUM>. Furthermore, the connected cars <NUM>, <NUM>, and <NUM> and the IoT device <NUM> are implemented by hardware including a CPU, a RAM, an SSD, a wireless communication interface, and sensors.

<FIG> is a diagram illustrating an example of functions of the information processing device.

The information processing device <NUM> has KVS <NUM>, a control information storage unit <NUM>, and an event processing unit <NUM>. Storage areas of the RAM <NUM> and the HDD <NUM> are used for the KVS <NUM> and the control information storage unit <NUM>. The event processing unit <NUM> is implemented by the CPU <NUM> executing a program stored in the RAM <NUM>.

The KVS <NUM> is a storage that holds the keys and values. The keys include the time range. The values include the sensor measured values at each time belonging to the time range.

The control information storage unit <NUM> stores control information to be used for processing by the event processing unit <NUM>.

The event processing unit <NUM> executes the stream processing for the event data received from the message queue server <NUM>. The event processing unit <NUM> has a data reception unit <NUM>, a user logic management unit <NUM>, user logics <NUM>, <NUM>, and <NUM>, a data transmission unit <NUM>, a read control unit <NUM>, and a write control unit <NUM>.

The data reception unit <NUM> receives the event data from message queue server <NUM>.

The user logic management unit <NUM> holds a list of the user logics <NUM>, <NUM>, and <NUM>, and executes the user logic to be executed based on the event data received by the data reception unit <NUM>.

The user logics <NUM>, <NUM>, and <NUM> acquire the event data received by the data reception unit <NUM> and read the data stored in the KVS <NUM> via the read control unit <NUM>. The user logics <NUM>, <NUM>, and <NUM> execute processing related to the user logics <NUM>, <NUM>, and <NUM> based on these data. Furthermore, the user logics <NUM>, <NUM>, and <NUM> write processing result data to the KVS <NUM> via the write control unit <NUM>. The event processing unit <NUM> may have user logics other than the user logics <NUM>, <NUM>, and <NUM>.

The data transmission unit <NUM> transmits the processing result data of the event processing unit <NUM> to an external device such as the message queue server <NUM>, for example.

The read control unit <NUM> controls data read from the KVS <NUM>. The read control unit <NUM> has a KVS read unit <NUM> and an access pattern acquisition unit <NUM>.

The KVS read unit <NUM> accesses the KVS <NUM> and executes read of data from the KVS. For example, the KVS read unit <NUM> reads entries with keys corresponding to the time ranges included in the read requests of the user logics <NUM>, <NUM>, <NUM> from the KVS <NUM>, and responds to the user logics <NUM>, <NUM>, <NUM>.

The access pattern acquisition unit <NUM> acquires a pattern of an access of read to the KVS <NUM> in response to the read request, that is, a pattern of read access, based on data read from the KVS <NUM> by the KVS read unit <NUM>. The pattern of read access is simply called an access pattern. The access pattern acquisition unit <NUM> stores acquired access pattern information in the control information storage unit <NUM>.

The write control unit <NUM> controls data write to the KVS <NUM>. The write control unit <NUM> has an entry creation determination unit <NUM>, an entry creation unit <NUM>, and a KVS write unit <NUM>.

The entry creation determination unit <NUM> determines the time width to be associated with one entry in the KVS <NUM> based on access pattern information stored in the control information storage unit <NUM>.

The entry creation unit <NUM> creates an entry for the KVS <NUM> by specifying an arbitrary key. For example, the entry creation unit <NUM> creates the entry for the KVS <NUM> by specifying the time range corresponding to the time width determined by the entry creation determination unit <NUM> as the key.

The KVS write unit <NUM> accesses the KVS <NUM> and writes the entry created by the entry creation unit <NUM> to the KVS <NUM>.

Note that the information processing device <NUM> may have a plurality of event processing units including the event processing unit <NUM>. For example, the processing result data by an upstream event processing unit may be input to a downstream event processing unit, and processing by the downstream event processing unit may be executed. In that case, for example, the data transmission unit of the upstream event processing unit may transmit the processing result data to the downstream event processing unit. Furthermore, as data reception, the downstream event processing unit may receive the processing result data from the upstream event processing unit.

<FIG> is a table illustrating an example of state accesses by the user logics.

Table <NUM> illustrates an example of state accesses by the user logic <NUM>, <NUM>, and <NUM>. Here, as an example, it is assumed that the state accessed by the user logics <NUM>, <NUM>, and <NUM> is speed. Note that the information processing device <NUM> does not have to have information corresponding to the table <NUM>.

In the table <NUM>, items of name of the user logics and content of the user logics. The name of the user logic <NUM> is user logic "a". The name of the user logic <NUM> is user logic "b". The name of the user logic <NUM> is user logic "c".

For example, the content of the user logic <NUM>, that is, the content of the user logic "a", is to acquire the speed at current time. The content of the user logic <NUM>, that is, the content of the user logic "b", is to acquire the speed of the last <NUM> minutes. The content of the user logic <NUM>, that is, the content of user logic "c", is to acquire the speed of the last <NUM> minutes once every <NUM> minutes at and after <NUM>:<NUM>:<NUM>.

<FIG> is a diagram illustrating an example of a time width threshold table.

A time width threshold table <NUM> is information that holds a maximum value and a minimum value of the time width to be associated with one entry in the KVS <NUM>. The time width threshold table <NUM> is stored in the control information storage unit <NUM> in advance. The time width threshold table <NUM> includes items of type and time width.

For example, the time width threshold table <NUM> indicates that the time width of the type "maximum value" is "<NUM> minutes". This indicates that regardless of an access status of the KVS <NUM>, the data to be stored in one entry is time-series data for at most <NUM> minutes.

Furthermore, the time width threshold table <NUM> indicates that the time width of the type "minimum value" is "<NUM> minutes". This indicates that regardless of the access status to the KVS <NUM>, time-series data for at least <NUM> minutes is stored in the same entry.

<FIG> is a table illustrating an example of the event data.

An event data group <NUM> describes a plurality of pieces of event data arriving at the information processing device <NUM> in a tabular form. One piece of event data has the time information, and the state items and values. The time information is a time stamp indicating the time when the event data was generated by the sensor or the like. The state items and values are a set of a state identifier and the value corresponding to the state. One piece of event data can include a plurality of sets of state items and values.

For example, the event data with the time information "<NUM>:<NUM>:<NUM>" has "{speed: <NUM>, position: (lon0, lat0),. }" as the state items and values. Here, the speed is expressed in units of km/h (kilometers per hour) or the like. Furthermore, the position is represented by (longitude, latitude) coordinates, for example. Furthermore, although not illustrated, each event data has an object name corresponding to a transmission source device.

<FIG> is a diagram illustrating an example of access width maximum value information.

Access width maximum value information <NUM> is an example of the access pattern information generated by the access pattern acquisition unit <NUM>. The access width maximum value information <NUM> is created by access pattern acquisition unit <NUM> and stored in the control information storage unit <NUM>. The access width maximum value information <NUM> is created for each object and state. As an example, the access width maximum value information <NUM> holds the access width maximum value of read from the KVS <NUM> for the state "speed" of a certain object. The access width maximum value is the maximum value of the time width (access time width) to be accessed by the read request.

The access width maximum value information <NUM> is reset to an initial value when a new entry corresponding to the appropriate state of the appropriate object is written to the KVS <NUM>. The initial value of the access width maximum value is the minimum value "<NUM> minutes" set in the time width threshold table <NUM>.

For example, the access pattern acquisition unit <NUM> updates the access width maximum value information <NUM> as follows based on the read accesses of the state "speed" of the appropriate object in the KVS <NUM> by the user logics "a" to "c". Note that the initial time is assumed to be <NUM>:<NUM>:<NUM>. At the time <NUM>:<NUM>:<NUM>, the access width maximum value information <NUM> is <NUM> minutes (initial value).

Access history information <NUM> indicates a history of the read accesses of the state "speed" of the appropriate object every second from the initial time <NUM>:<NUM>:<NUM> by the user logics "a" to "c". The access pattern acquisition unit <NUM> is only required to acquire the time width of access by each user logic at each time. The access history information <NUM> expresses the access history in an easy-to-understand manner, and does not have to be stored in the control information storage unit <NUM>.

In the access history information <NUM>, the access history is described by description of a set "read state name-time" of the state (read state) name to be read and the time to be read by each user logic. The time to be read is sometimes the time range. Furthermore, in the parentheses after the "read state name-time", the time width to be accessed is described. Here, the state to be read is speed. Therefore, the "read state name" is the "speed".

For example, at the time <NUM>:<NUM>:<NUM>, the following read access occurs. The first read access is the read access of "speed-<NUM>:<NUM>:<NUM>(<NUM>)" by the user logic "a". This indicates the read access of <NUM>:<NUM>:<NUM> (time width <NUM>) to the speed. The second read access is the read access of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "b". This indicates the read access from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (time width <NUM> minutes) to the speed. Note that no read access by the user logic "c" occurs from the time <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>. No access is indicated by a hyphen symbol "-" in the figure.

Furthermore, at the time <NUM>:<NUM>:<NUM>, the next read access occurs. The first read access is the read access of "speed-<NUM>:<NUM>:<NUM>(<NUM>)" by the user logic "a". The second read access is the read access of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "b".

At the point of time <NUM>:<NUM>:<NUM>, the read access occurs with the time width of "<NUM> minutes" longer than the "<NUM> minutes" held in the access width maximum value information <NUM>. Therefore, the access pattern acquisition unit <NUM> updates the access width maximum value information <NUM> with "<NUM> minutes" from "<NUM> minutes". Hereafter, it is assumed that the time width of one entry stored in the KVS <NUM> is determined to be <NUM> minutes.

The speed at each time is read by the user logic "a" and the speed of the last <NUM> minutes at each time is read by the user logic "b" from the KVS <NUM> until the time <NUM>:<NUM>:<NUM>.

Then, at the point of time <NUM>:<NUM>:<NUM>, the next read access occurs. The first read access is the read access of "speed-<NUM>:<NUM>:<NUM>(<NUM>)" by the user logic "a". The second read access is the read access of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "b". The third read access is the read access of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "c".

At the point of time <NUM>:<NUM>:<NUM>, the read access occurs with the time width of "<NUM> minutes" longer than the "<NUM> minutes" held in the access width maximum value information <NUM>. Therefore, the access pattern acquisition unit <NUM> updates the access width maximum value information <NUM> with "<NUM> minutes" from "<NUM> minutes".

<FIG> is a diagram illustrating an example of KVS entries.

A KVS entry group <NUM> is an example of entries stored in the KVS <NUM>. One entry has a key described as "object name-state name-time" and a measured value corresponding to the state name at an appropriate time. The time included in the key may be the time range. In the case where the time included in the key is the time range, the value includes a plurality of measured values corresponding to a plurality of pieces of time belonging to the time range.

Furthermore, the KVS entry group <NUM> has an entry in which "latest" is set in the item of time of the key as an entry in which data of the latest time is stored. The entry in which "latest" is set for the item of time of the key is called latest entry. For example, at the point of time of the time <NUM>:<NUM>:<NUM> immediately after the start of the stream processing by the information processing device <NUM>, the KVS <NUM> holds only the entry with the item of time in the key "latest" for any object and state.

For example, the KVS entry group <NUM> indicates the entries of the KVS <NUM> immediately after the start of processing at the time <NUM>:<NUM>:<NUM> (for example, at the point of time about <NUM> to <NUM> minutes have passed). "car1" in the key "car1-speed-latest" is an example of the object name corresponding to a certain connected car. Furthermore, "speed" is the state name of the state "speed". Moreover, "position" in the key "car1-position-latest" is the state name of the state "position".

When data of a specific time width indicated by the access width maximum value information <NUM> is accumulated in the latest entry, the entry creation unit <NUM> moves the data to another entry as old time-series data to empty the latest entry. Note that the entry creation unit <NUM> may hold a pointer such as "car1-speed-<NUM>:<NUM>:<NUM> is the latest entry" without using "latest". The entry creation unit <NUM> may newly create an entry "car1-speed-<NUM>:<NUM>:<NUM>" when data of a specific time width is accumulated in the latest entry, and update the pointer with "car1-speed-<NUM>:<NUM>:<NUM> is the latest entry".

An entry is created in the KVS <NUM> for the access width maximum value information <NUM> in <FIG> as follows.

<FIG> is a diagram illustrating an example of creating a KVS entry.

The entry creation determination unit <NUM> detects that the time has passed by the time width of the access width maximum value information <NUM> since the start of storage in the latest entry. Then, the entry creation unit <NUM> creates a separate entry and stores the content of the latest entry at that point of time in the KVS <NUM> via the KVS write unit <NUM>. Thereafter, the entry creation unit <NUM> initializes the content of the latest entry in the KVS <NUM> via the KVS write unit <NUM>. Subsequent data is stored in the initialized latest entry. Note that, at this time, the entry creation determination unit <NUM> also initializes the access width maximum value information <NUM> together.

Here, a KVS entry group <NUM> indicates each entry of the KVS <NUM> immediately before entry creation at the point of time <NUM>:<NUM>:<NUM>. Furthermore, a KVS entry group <NUM> indicates each entry of the KVS <NUM> immediately after the entry creation at the point of time <NUM>:<NUM>:<NUM>.

For example, the entry creation determination unit <NUM> detects that the access width maximum value information <NUM> indicates "<NUM> minutes" at the point of time <NUM>:<NUM>:<NUM>. Then, the entry creation determination unit <NUM> determines that no data will be stored in the same entry anymore because the latest entry stores the time-series data for <NUM> minutes from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>. Then, the entry creation unit <NUM> copies the value of the key "car1-speed-latest", which is the latest entry, to the entry with the key "car1-speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>: <NUM>" according to the determination of the entry creation determination unit <NUM>. Furthermore, the entry creation unit <NUM> empties the value of "car1-speed-latest". Moreover, the entry creation determination unit <NUM> initializes the access width maximum value information <NUM> in order to collect the access status again from <NUM>:<NUM>:<NUM> onwards.

It is assumed that the entry for the KVS <NUM> is created every maximum value "<NUM> minutes" of the time width of the read access by the user logic from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>. Meanwhile, at the point of time <NUM>:<NUM>:<NUM>, the read access with the width of <NUM> minutes is executed. Therefore, the access pattern acquisition unit <NUM> updates the access width maximum value information <NUM> with "<NUM> minutes" as illustrated in <FIG>.

Here, a KVS entry group <NUM> indicates each entry of the KVS <NUM> at the point of time <NUM>:<NUM>:<NUM>. Furthermore, a KVS entry group <NUM> indicates each entry of the KVS <NUM> at the point of time <NUM>:<NUM>:<NUM>.

At the point of time <NUM>:<NUM>:<NUM>, the entry creation determination unit <NUM> ongoingly waits until data for <NUM> minutes is stored in the latest entry although <NUM> minutes have passed since the start of storage in the latest entry. Then, at the point of time <NUM>:<NUM>:<NUM>, the entry creation determination unit <NUM> detects that <NUM> minutes have passed since the start of storage in the latest entry, and instructs the entry creation unit <NUM> to create the entry with the time width of <NUM> minutes.

Then, the entry creation unit <NUM> stores the value of the latest entry in another entry with the time width of <NUM> minutes via the KVS write unit <NUM>, and initializes the latest entry. Furthermore, the entry creation determination unit <NUM> initializes the access width maximum value information <NUM>.

Next, a processing procedure of the information processing device <NUM> according to the second embodiment will be described.

<FIG> is a flowchart illustrating an example of stream processing.

(S10) The event processing unit <NUM> calls a data reception sub-process of step S11 each time the event data is received.

(S11) The event processing unit <NUM> executes the data reception sub-process. Details of the data reception sub-process will be described below.

(S12) The event processing unit <NUM> repeats step S11 until the stream processing according to the received event data ends. For example, in the case where the event data includes a plurality of states, the stream processing for each state may be performed. Then, the stream processing ends.

<FIG> is a flowchart illustrating an example of the data reception sub-process.

The data reception sub-process corresponds to step S11.

(S20) The user logic management unit <NUM> calls all the user logics corresponding to the event data based on the event data received by the data reception unit <NUM>.

(S21) All the called user logics repeatedly execute step S22.

(S22) The user logics execute the processing based on the received event data and the data read from the KVS <NUM>. Details of the processing of the user logics will be described below.

(S23) When the processing of all the user logics ends, the processing proceeds to step S24.

(S24) The read control unit <NUM> executes an access pattern acquisition sub-process. Details of the access pattern acquisition sub-process will be described below.

(S25) The write control unit <NUM> acquires the data of the state to be written to the KVS <NUM>.

(S26) The write control unit <NUM> repeatedly executes step S27 for all the states to be written.

(S27) The write control unit <NUM> executes a state write sub-process. Details of the sub-process to be read will be described below.

(S28) When the write control unit <NUM> executes the state write sub-process for all the states to be written, the write control unit <NUM> terminates the data reception sub-process.

<FIG> is a flowchart illustrating an example of processing by a user logic.

The processing by a user logic corresponds to step S22. Hereinafter, an example of processing by a certain user logic will be exemplified, but other user logics such as the user logics <NUM>, <NUM>, and <NUM> also perform processing according to the processing by the other user logics.

(S30) The user logic acquires received data. The received data corresponds to the event data received by the data reception unit <NUM>.

(S31) The user logic specifies a road on which the connected car that has transmitted the event data is traveling from latitude and longitude information included in the received data.

(S32) The user logic reads speed and acceleration data for the past <NUM> minute from the KVS <NUM> via the read control unit <NUM>.

(S33) The user logic determines whether the appropriate connected car has swayed based on changes in the speed and acceleration for the past <NUM> minute. In the case where sway has occurred, the processing proceeds to step S34. In the case where sway has not occurred, the processing proceeds to step S36.

(S34) The user logic reads data regarding the presence or absence of sway for the past <NUM> minutes from the KVS <NUM> via the read control unit <NUM>.

(S35) The user logic notifies the connected car of a warning via the data transmission unit <NUM> in the case where sway has occurred a certain number of times or more based on the number of occurrences of sway for the past <NUM> minutes.

(S36) The user logic sets all the received data and the determination result of the presence or absence of sway calculated in step S33 as data to be written to the KVS <NUM>. Then, the processing by the user logic ends.

<FIG> is a flowchart illustrating an example of the access pattern acquisition sub-process.

The access pattern acquisition sub-process corresponds to step S24.

(S40) The access pattern acquisition unit <NUM> acquires the time width (access time width) of when the user logic executed immediately before has performed the read access to the KVS <NUM>. The access time width is acquired for each state.

(S41) The access pattern acquisition unit <NUM> acquires the maximum value of the access time width. The maximum value of the access time width is acquired for each state.

(S42) The access pattern acquisition unit <NUM> stores the maximum value of the access time width up to the current point of time. The maximum value of the access time width up to the current point of time is stored in the access width maximum value information <NUM> for each appropriate object and state. For example, in the case where the appropriate object has the states of speed, position, and presence/absence of occurrence of sway, the access width maximum value information <NUM> is also stored in the control information storage unit <NUM> for each of the speed, position, and presence/absence of occurrence of sway of the appropriate object. Then, the access pattern acquisition sub-process ends.

<FIG> is a flowchart illustrating an example of the state write sub-process.

The state write sub-process corresponds to step S27.

(S50) The write control unit <NUM> executes an entry creation determination sub-process. Details of the entry creation determination sub-process will be described below.

(S51) The write control unit <NUM> writes the state to the latest entry of the KVS <NUM>. Data of the state referred to here is, for example, the latest data of each state to be written in step S36 in the case of the processing by the user logic in <FIG>. Furthermore, the latest entry is the latest entry corresponding to the object name and the state name of the appropriate connected car in the KVS <NUM>. For example, for the latest entry of the state corresponding to the presence or absence of occurrence of sway, a value including the determination result of the presence or absence of occurrence of sway and the current time is registered. The state write sub-process then ends.

<FIG> is a flowchart illustrating an example of the entry creation determination sub-process.

The entry creation determination sub-process corresponds to step S50.

(S60) The entry creation determination unit <NUM> acquires the start time of the latest entry of the KVS <NUM> corresponding to the object and state corresponding to the event data of this time.

(S61) The entry creation determination unit <NUM> acquires the maximum value of the access time width based on the access width maximum value information <NUM> corresponding to the appropriate object and state.

(S62) The entry creation determination unit <NUM> determines whether a time equal to or greater than the maximum value of the access time width has passed since the start time of the latest entry corresponding to the appropriate object and state. In the case where the time has passed, the processing proceeds to step S63. In the case where the time has not passed, the entry creation determination sub-process ends.

(S63) The entry creation unit <NUM> newly creates an entry of the KVS <NUM> with the key "data name-entry start time to end time", and stores the value of the current latest entry corresponding to the appropriate object and state in the newly created entry. Here, the key "data name" corresponds to "object name-state name". The entry creation unit <NUM> writes the newly created entry to the KVS <NUM> via the KVS write unit <NUM>.

(S64) The entry creation unit <NUM> initializes the current latest entry corresponding to the appropriate object and state via the KVS write unit <NUM>.

(S65) The entry creation determination unit <NUM> deletes and initializes the maximum value of the access time width in the access width maximum value information <NUM> corresponding to the appropriate object and state. Then, the entry creation determination sub-process ends.

In this way, the information processing device <NUM> determines the longest access time width among the read access time widths for the KVS <NUM> as the time width to be associated with one entry in the KVS <NUM>.

<FIG> is a diagram illustrating an example of determining the time width of an entry.

The entry creation determination unit <NUM> determines the time width of the entry for the state "speed" of the vehicle object <NUM> with the object name "car1" based on access statistics as follows, for example. Note that, in the figure, the item of "time width" is described between "key" and "value" in the KVS <NUM> to make it easier to understand the time width corresponding to the entry, but the KVS <NUM> does not need to have the item "time width".

According to the access statistics up to <NUM>:<NUM>, the longest access time width for the KVS <NUM> has been <NUM> minutes, so the entry creation determination unit <NUM> determines the time width of one entry in the KVS <NUM> to be <NUM> minutes. Therefore, the entry creation unit <NUM> creates entries at intervals of <NUM> minutes until <NUM>:<NUM> and stores the entries in the KVS <NUM> via the KVS write unit <NUM>.

Meanwhile, in the access statistics at and after <NUM>:<NUM>, it is assumed that the longest access time width has changed to <NUM> minutes. Then, the entry creation determination unit <NUM> determines the time width of one entry in the KVS <NUM> to be <NUM> minutes. Therefore, the entry creation unit <NUM> creates entries at intervals of <NUM> minutes at and after <NUM>:<NUM> and stores the entries in the KVS <NUM> via the KVS write unit <NUM>.

In this way, the information processing device <NUM> acquires the access statistics of the user logic for each state of the vehicle object <NUM>, and dynamically determines the time width to be stored in one entry from the access statistics.

Thereby, the information processing device <NUM> can reduce the number of reads. For example, after the read request for the time width of <NUM> minutes has occurred, there is a high possibility that the read request for the time width of <NUM> minutes will continue to occur thereafter. Therefore, the information processing device <NUM> will be able to read the requested entry from the KVS <NUM> with a relatively small number of reads even in a case of accepting the read request with the longest time width in the future by setting the time width of one entry to the longest time width. Therefore, the information processing device <NUM> can speed up the read of entries from the KVS <NUM>.

Next, a third embodiment will be described. Matters different from the above-described second embodiment will be mainly described, and description of common matters will be omitted.

In the third embodiment, an information processing device <NUM> determines a time width to be associated with one entry in the KVS <NUM> based on an access pattern table.

<FIG> is a diagram illustrating an example of an access pattern table according to the third embodiment.

An access pattern table <NUM> is information indicating candidates for the time width previously specified for one entry in the KVS <NUM>. The access pattern table <NUM> is stored in a control information storage unit <NUM> in advance. The access pattern table <NUM> includes items of access pattern name, entry width, and condition for an access time width w.

In the item of access pattern name, an access pattern name that is a name of the access pattern is registered. In the item of entry time width, the time width to be associated with one entry in the KVS <NUM> is registered. In the item of condition for an access time width W, a condition of the access pattern corresponding to the appropriate access pattern name is registered.

For example, the access pattern table <NUM> has a record with the access pattern name "A", the entry time width "<NUM> minute", and the condition for the access time width w "w < <NUM> minute". This record corresponds to a case where the access time width w of the access pattern with the access pattern name "A" is less than <NUM> minute, and indicates that the time width of one entry in the KVS <NUM> is <NUM> minute.

Furthermore, the access pattern table <NUM> has a record with the access pattern name "B", the entry time width "<NUM> minutes", and the condition for the access time width w "<NUM> minute ≤ w < <NUM> minutes". This record corresponds to a case where the access time width w of the access pattern with the access pattern name "B" is <NUM> minute or longer and less than <NUM> minutes, and indicates that the time width of one entry in the KVS <NUM> is <NUM> minutes.

Furthermore, the access pattern table <NUM> has a record with the access pattern name "C", the entry time width "<NUM> minutes", and the condition for the access time width w "<NUM> minutes ≤ w < <NUM> minutes". This record corresponds to a case where the access time width w of the access pattern with the access pattern name "C" is <NUM> minutes or longer and less than <NUM> minutes, and indicates that the time width of one entry in the KVS <NUM> is <NUM> minutes.

Furthermore, the access pattern table <NUM> has a record with the access pattern name "D", the entry time width "<NUM> minutes", and the condition for the access time width w "<NUM> minutes ≤ w". This record corresponds to a case where the access time width w of the access pattern with the access pattern name "D" is <NUM> minutes or longer, and indicates that the time width of one entry in the KVS <NUM> is <NUM> minutes.

Note that, according to the access pattern table <NUM>, a minimum value of the entry time width is "<NUM> minute" and a maximum value of the entry time width is "<NUM> minutes". In the third embodiment, the control information storage unit <NUM> does not hold a time width threshold table <NUM>.

Thus, in the third embodiment, several patterns of time width candidates are determined in advance as the time width to be associated with one entry. The time width to be stored in one entry of the KVS <NUM> is selected from these several patterns. Selection methods include the following first and second methods.

The first method is a method for counting the time widths of recent read accesses by user logics for each access pattern according to classification of the access pattern table <NUM>, and setting the time width corresponding to the longest access pattern as the time width of one entry.

The second method is a method for excluding access patterns with the number of occurrences less than a certain percentage among the counted access patterns from the selection candidates, and setting the time width corresponding to the longest access pattern among the access patterns with the number of occurrences equal to or greater than the certain percentage as the time width of one entry.

By using the second method, it is possible to reduce a frequency of reading extra information longer than the time width from the KVS <NUM> for the read access with a relatively short time width, compared to the first method.

<FIG> is a diagram illustrating an example of entries in KVS according to access patterns.

A KVS entry group <NUM> is an example of entries in the KVS <NUM> for the object name "car1" and the state name "speed". In the access pattern table <NUM>, <NUM> minute, <NUM> minutes, <NUM> minutes, and <NUM> minutes are defined in advance as specified values of the time width. Therefore, the time to be associated with each entry in the KVS entry group <NUM> is <NUM> minute, <NUM> minutes, <NUM> minutes, or <NUM> minutes.

<FIG> is a table illustrating an example of state accesses of user logics.

Table <NUM> illustrates an example of state accesses by four user logics executed by the information processing device <NUM>. It is assumed that the state to be accessed is speed. Note that, in the example of the third embodiment, it is assumed that a value corresponding to the state "speed" in the KVS <NUM> also includes position information. Note that the information processing device <NUM> does not have to have information corresponding to the table <NUM>.

In the table <NUM>, items of name of the user logics and content of the user logics. Description of each item is the same as in the table <NUM>.

For example, the content of the user logic "a" is to acquire the speed at current time. The content of the user logic "b" is to acquire the speed in the last <NUM> minutes. The content of the user logic "c1" is to acquire the speed and position of the last <NUM> minutes, in a case where the position has been updated. The content of the user logic "d" is to acquire the speed of the last <NUM> minutes once an hour.

<FIG> is a diagram illustrating an example of access history information.

Access history information 123a indicates a history of the read accesses of the state "speed" of the appropriate object every second from initial time <NUM>:<NUM>:<NUM> by the user logics "a", "b", "c1", and "d". An access pattern acquisition unit <NUM> is only required to acquire the time width of access by each user logic at each time. Therefore, the access history information 123a expresses the access history in an easy-to-understand manner, and does not have to be stored in the control information storage unit <NUM>.

Description of each item of the access history information 123a is the same as that of the access history information <NUM>. Note that the access history information 123a includes "c1" and "d" as target user logics.

For example, at the time <NUM>:<NUM>:<NUM>, the following read accesses occur. The first read access is the read access of "speed-<NUM>:<NUM>:<NUM>(<NUM>)" by the user logic "a". The second read access is the read access of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "b". The third read access is the read accesses of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" and "position-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "c1". The fourth read access is the read access of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "d".

Furthermore, at the time <NUM>:<NUM>:<NUM>, the next read accesses occur. The first read access is the read access of "speed-<NUM>:<NUM>:<NUM>(<NUM>)" by the user logic "a". The second read access is the read access of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "b". The third read access is the read accesses of "speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" and "position-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> (<NUM> minutes)" by the user logic "c1". Note that no read access by the user logic "d" occurs from the time <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>.

<FIG> is a diagram illustrating an example of a KVS entry.

A KVS entry <NUM> is an example of the latest entry for the object name "car1" and the state name "speed". For example, the KVS entry <NUM> indicates the latest entry of the KVS <NUM> immediately after the start of processing at time <NUM>:<NUM>:<NUM> (for example, at the point of time about <NUM> to <NUM> minutes have passed). The time width for one entry is <NUM> minute for a shortest. In the example of the KVS entry <NUM>, the time width of one entry is undetermined because the read access with the time width of <NUM> minute or longer has occurred within <NUM> minute from the start time ("<NUM>:<NUM>:<NUM>") of the latest entry. In the figure, the undetermined is represented by "??".

<FIG> is a diagram illustrating an example of counting access patterns.

In the third embodiment, the information processing device <NUM> has a pattern counting table <NUM> and a pattern occurrence percentage table <NUM> instead of access width maximum value information <NUM>. The pattern counting table <NUM> and the pattern occurrence percentage table <NUM> are generated by an access pattern acquisition unit <NUM> and an entry creation determination unit <NUM>, respectively, and stored in the control information storage unit <NUM>.

In the pattern counting table <NUM>, a counting result of access patterns of the read accesses that have occurred at each time for a certain state of a certain object is recorded. In the pattern occurrence percentage table <NUM>, the entry creation determination unit <NUM> registers the occurrence percentage of each access pattern from the start time of the latest entry to the current time. Here, the occurrence percentage is a percentage of occurrence of the appropriate access pattern with respect to a total number of records in the pattern counting table <NUM>.

For example, it is assumed that the pattern counting table <NUM> indicates a counting result of the access patterns for the speed state of the appropriate object. The access pattern for a read request is specified based on a condition of an access time width w in the access pattern table <NUM>. As an example, in the pattern counting table <NUM>, a counting result of the access patterns for speeds every second from <NUM>:<NUM>:<NUM> is recorded.

For example, the pattern counting table <NUM> has a record of the time "<NUM>:<NUM>:<NUM>" and the counting result "speed: {A:<NUM>, B:<NUM>, C:<NUM>, D:<NUM>}" of the access patterns for the speed. This record indicates that at the time <NUM>:<NUM>:<NUM>, the access pattern "A" has occurred once, "B" has occurred once, "C" has occurred once, and "D" has occurred once. Similarly, in the pattern counting table <NUM>, records from the time "<NUM>:<NUM>:<NUM>" to "<NUM>:<NUM>:<NUM>" are recorded. Note that, in a case where no read access with the appropriate access pattern has not been observed at certain time, the number of occurrences of the access pattern is <NUM>, but the record of <NUM> is omitted in the pattern counting table <NUM>.

The pattern occurrence percentage table <NUM> indicates the number of occurrences and the occurrence percentage of each access pattern at the point of time of the time <NUM>:<NUM>:<NUM>. For example, the number of occurrences of the access pattern "A" is <NUM>, and the occurrence percentage is <NUM>/<NUM>*<NUM> = <NUM>%. The number of occurrences of the access pattern "B" is <NUM>, and the occurrence percentage is <NUM>/<NUM>*<NUM> = <NUM>%. The number of occurrences of the access pattern "C" is <NUM>, and the occurrence percentage is <NUM>/<NUM>*<NUM> = <NUM>%. The number of occurrences of the access pattern "D" is "<NUM>", and the occurrence percentage is <NUM>/<NUM>*<NUM> = <NUM>%.

According to the pattern occurrence percentage table <NUM> at the point of time <NUM>:<NUM>:<NUM>, it is known that the access patterns "B" with the width of <NUM> minutes, "C" with the width of <NUM> minutes, and the like have also occurred in addition to the access pattern "A" with the width of <NUM> minute. Therefore, the write control unit <NUM> determines to store data of or after <NUM>:<NUM>:<NUM> in the latest entry from <NUM>:<NUM>:<NUM>.

Therefore, the write control unit <NUM> does not newly create an entry at the point of time <NUM>:<NUM>:<NUM>, but continues to store data in the latest entry of <NUM>:<NUM>:<NUM>. Candidates for the time width of the entry are the access pattern "A" of <NUM> minute followed by the access pattern "B" of <NUM> minutes. Therefore, the write control unit <NUM> stores the data from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> as is in the latest entry. That is, the write control unit <NUM> performs processing as usual until data of <NUM>:<NUM>:<NUM> arrives, and determines whether to store the data of or after <NUM>:<NUM>:<NUM> in the latest entry when data of <NUM>:<NUM>:<NUM> has arrived.

The access pattern acquisition unit <NUM> creates a pattern occurrence percentage table 126a at the point of time <NUM>:<NUM>:<NUM>. Since the access pattern "C" with the width of <NUM> minutes and the like have occurred, similarly to the determination at <NUM>:<NUM>:<NUM>, the write control unit <NUM> does not newly create the entry at <NUM>:<NUM>:<NUM> and ongoingly stores the data in the latest entry that has started at <NUM>:<NUM>:<NUM>. The write control unit <NUM> performs determination again when the time width of <NUM> minutes of the next access pattern "C" has passed from the start time of the latest entry.

The access pattern acquisition unit <NUM> creates a pattern occurrence percentage table 126b at the point of time <NUM>:<NUM>:<NUM>. Since the access pattern "D" has the longest access time width, it is assumed that the write control unit <NUM> determines the time width to be associated with one entry in the KVS <NUM> to be <NUM> minutes corresponding to the access pattern "D" based on the pattern occurrence percentage table 126b.

Thereafter, the write control unit <NUM> writes data to the latest entry until <NUM>:<NUM>:<NUM>. For example, after the data of <NUM>:<NUM>:<NUM> is processed, the write control unit <NUM> creates an entry for storing the data from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>, copies the content of the latest entry to the newly created entry and initializes the latest entry. The key of the entry for storing the data from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM> is "car1-speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>". The write control unit <NUM> stores subsequent data in the latest entry. A KVS entry group <NUM> indicates an example of the entries stored in the KVS <NUM> at this point of time. Furthermore, the write control unit <NUM> also initializes the pattern counting table and pattern occurrence table at this point of time (deletes all the records).

Note that the example of creating an entry in <FIG> is based on the first method described in <FIG>. Meanwhile, the write control unit <NUM> may create an entry based on the second method. For example, in a case of excluding the access patterns with the occurrence percentage of less than <NUM>% from the selection candidates, the access pattern "D" is excluded from the selection candidates and the access patterns "A" to "C" are the selection candidates at <NUM>:<NUM>:<NUM>. In this case, the write control unit <NUM> adopts the entry time width of the access pattern "C". That is, at the point of time <NUM>:<NUM>:<NUM>, the write control unit <NUM> creates an entry from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>, copies the content of the latest entry, and initializes the latest entry.

Next, a processing procedure of the information processing device <NUM> according to the third embodiment will be described. The third embodiment differs from the second embodiment in procedures of an access pattern acquisition sub-process and an entry creation determination sub-process. Other procedures are the same as those of the second embodiment, so description thereof will be omitted.

(S70) The access pattern acquisition unit <NUM> acquires the time width (access time width) of when the user logic executed immediately before has performed the read access to the KVS <NUM>. The access time width is acquired for each state of an object corresponding to received event data.

(S71) The access pattern acquisition unit <NUM> converts the access time width into the access pattern based on the access pattern table <NUM>.

(S72) The access pattern acquisition unit <NUM> records the converted access pattern in the pattern counting table <NUM>. Then, the access pattern acquisition sub-process ends.

(S80) The entry creation determination unit <NUM> acquires the start time of the latest entry of the KVS <NUM> corresponding to the object and state corresponding to the event data of this time.

(S81) The entry creation determination unit <NUM> determines whether an interval time between access patterns has passed since the start time of the latest entry. In a case where the interval time has passed, the processing proceeds to step S82. In a case where the interval time has not passed, the entry creation determination sub-process ends. Here, in the example of the access pattern table <NUM>, the interval time between the access patterns "A" and "B" is <NUM> minute. Furthermore, the interval time between the access patterns "B" and "C" is <NUM> minutes. The interval time between the access patterns "C" and "D" is <NUM> minutes. Furthermore, the longest entry time width of <NUM> minutes in the access pattern table <NUM> is also one interval time.

(S82) The entry creation determination unit <NUM> acquires access pattern statistics at or after the start of the latest entry, that is, the pattern occurrence percentage table <NUM>, based on the pattern counting table <NUM>.

(S83) The entry creation determination unit <NUM> extracts the access patterns with an access execution percentage equal to or greater than a certain percentage from the acquired access pattern statistics. That is, the entry creation determination unit <NUM> extracts the access patterns with the occurrence percentage (access execution percentage) equal to or greater than a certain percentage from the pattern occurrence percentage table <NUM>. Note that in the case of using the first method, the certain percentage = <NUM> may be set. In the case of using the second method, the certain percentage is determined in advance, such as the certain percentage = <NUM>%. Furthermore, in the case of using the second method, in step S83, it is conceivable that there is no access pattern with the occurrence percentage equal to or greater than the certain percentage. In that case, the entry creation determination unit <NUM> may extract all the access patterns recorded in the pattern occurrence percentage table <NUM> based on the first method.

(S84) The entry creation determination unit <NUM> determines whether a time equal to or longer than the time width of the longest pattern among the access patterns extracted in step S83 has passed since the start time of the latest entry corresponding to the appropriate object and state. The longest pattern indicates the longest access pattern among the access patterns extracted in step S83. The time width of the longest pattern is the entry time width corresponding to the longest pattern in access pattern table <NUM>. In the case where the time equal to or longer than the time width of the longest pattern has passed, the processing proceeds to step S85. In the case where the time equal to or longer than the time width of the longest pattern has not passed, the entry creation sub-process ends.

(S85) The entry creation unit <NUM> newly creates an entry in the KVS <NUM> with the key "data name-entry start time to end time", and stores the value of the current latest entry corresponding to the appropriate object and state in the newly created entry. Here, the key "data name" corresponds to "object name-state name". The entry creation unit <NUM> writes the newly created entry to the KVS <NUM> via the KVS write unit <NUM>.

(S86) The entry creation unit <NUM> initializes the current latest entry corresponding to the appropriate object and state via the KVS write unit <NUM>.

(S87) The entry creation determination unit <NUM> deletes and initializes the access pattern statistics corresponding to the appropriate object and state. Specifically, the entry creation determination unit <NUM> deletes and initializes all the records of the pattern counting table <NUM> and the pattern occurrence percentage table <NUM>. Then, the entry creation determination sub-process ends.

As described above, the information processing device <NUM> counts the access patterns that have occurred, based on the access pattern table <NUM>, and creates the pattern occurrence percentage table <NUM>. The information processing device <NUM> then sets the entry time width corresponding to the longest access pattern as the time width to be associated with one entry in the KVS <NUM>. For example, in the case of <NUM> minutes ≤ w < <NUM> minutes in the w conditions of the access patterns "A" to "C" and the access pattern "D" in the access pattern table <NUM>, the entry time width is determined to become longer than the access time width w corresponding to the access patterns. In this way, the information processing device <NUM> may set the time width longer than the actually requested access time width as the time width to be associated with one entry. Thereby, the information processing device <NUM> can reduce the number of reads from the KVS <NUM>.

Furthermore, as indicated by the access pattern "D", an upper limit may be provided for the entry time width. In this case, the information processing device <NUM> can control the time width of one entry to be <NUM> minutes even if the access time width w is <NUM> minutes or longer. Therefore, the information processing device <NUM> can limit an amount of data in one entry so as not to become too large.

Furthermore, the information processing device <NUM> can suppress adoption of an inappropriate time width by excluding the entry time width corresponding to the access patterns with the occurrence percentage less than the certain percentage from the selection candidates based on the pattern occurrence percentage table <NUM>. For example, the access pattern that has occurred only a few times may be an access pattern that has occurred randomly, and may not be highly likely to occur continuously in the future. In such a case, the information processing device <NUM> can suppress the entry time width from being determined based on the access pattern that has randomly occurred.

In particular, if the entry time width is determined based on an infrequent long-time access, extra data will be read over a relatively long time width at the time of a read access with a relatively short time width, resulting in extra read costs. The information processing device <NUM> can reduce the possibility of extra read costs by ignoring the access patterns with the occurrence percentage lower than the certain percentage.

Hereinafter, modifications of the third embodiment will be described as fourth to sixth embodiments.

Next, a fourth embodiment will be described. Matters different from the above-described second and third embodiments will be mainly described, and description of common matters will be omitted.

<FIG> is a diagram illustrating an example of time widths of entries according to the fourth embodiment.

An entry creation determination unit <NUM> may simplify access pattern determination and access pattern counting according to an access time width as follows. Specifically, the entry creation determination unit <NUM> determines access patterns targeted for the access pattern determination up to access patterns corresponding the time width of a most recently created entry and one time width before and one time width after the time width. Then, in a case where there are four or more access patterns, determination and counting of all the access patterns are not needed, and only three access patterns need to be processed. Therefore, efficiency of the processing can be achieved.

Furthermore, abrupt lengthening or abrupt shortening can be suppressed in changes in the entry time width. For example, the entry creation determination unit <NUM> can suppress a behavior of creating a short-time width entry based on short-time statistics at the time of determining the next entry after creating a long-time width entry.

For example, a list <NUM> illustrates candidates for the entry time widths. In the fourth embodiment, only an upper limit of the entry time width is determined in advance instead of predetermined access patterns in an access pattern table <NUM>. Furthermore, as illustrated in the list <NUM>, the access patterns are in units of <NUM>n minutes such as <NUM> minute, <NUM> minutes, <NUM> minutes. n is an integer equal to or greater than <NUM>.

For example, in a case where the entry time width adopted immediately before is <NUM>m minutes, an access pattern acquisition unit <NUM> determines whether the access pattern by a user logic is "<NUM>m minutes or longer", "less than <NUM>m - <NUM> minutes", or "others (less than <NUM>m minutes and <NUM>m - <NUM> minutes or longer)". m is an integer equal to or greater than <NUM>. Then, the access pattern acquisition unit <NUM> creates a pattern counting table <NUM> for these three access patterns.

The entry creation determination unit <NUM> further counts the pattern counting table <NUM> and creates a pattern occurrence percentage table <NUM> when <NUM>m - <NUM> minutes have passed since the start of the latest entry. At this time, in a case where the access pattern with the highest occurrence percentage is "less than <NUM>m - <NUM> minutes", the entry creation determination unit <NUM> sets the time width to be associated with an entry to <NUM>m - <NUM> minutes. Otherwise, the entry creation determination unit <NUM> waits until <NUM>m minutes pass.

The entry creation determination unit <NUM> counts the pattern counting table <NUM> again and creates the pattern occurrence percentage table <NUM> when <NUM>m minutes have passed since the start of the latest entry. At this time, in a case where the access pattern with the highest occurrence percentage is "less than <NUM>m minutes and <NUM>m - <NUM> minutes or longer", the entry creation determination unit <NUM> sets the time width to be associated with one entry to <NUM>m minutes. Otherwise, the entry creation determination unit <NUM> sets the time width to <NUM>m + <NUM> minutes.

Thereafter, the entry creation determination unit <NUM> repeatedly executes a similar procedure.

For example, it is assumed that the most recently adopted entry has the time width of <NUM> minutes. In this case, the candidate for the time width of the entry of this time is one of <NUM>, <NUM>, or <NUM> minutes. In a case where there are many read accesses with the time width longer than <NUM> minutes, the entry creation determination unit <NUM> determines the time width of the entry of this time to be <NUM> minutes. Then, when creating the entry with the time width of <NUM> minutes, the entry creation determination unit <NUM> counts the access patterns with any one of <NUM>, <NUM>, or <NUM> minutes as the candidate for the next time width.

Thereby, the information processing device <NUM> can improve the efficiency of the access pattern counting, and can suppress changes in the time width of entries not to become too large. Note that the shortest time width and the longest time width are predetermined (for example, <NUM> minute for a minimum and <NUM> minutes for a maximum, or the like). Furthermore, the time width of the first entry is predetermined to one of the candidates in the list <NUM> (for example, the shortest value of <NUM> minute).

Next, a fifth embodiment will be described. Matters different from the above-described second to fourth embodiments will be mainly described, and description of common matters will be omitted.

<FIG> is a diagram illustrating an example of correcting time offset deviation according to a fifth embodiment.

An entry creation determination unit <NUM> may align an offset of time of an entry with respect to time of a read access by performing control to create an entry in KVS <NUM> with a time width other than an entry time width corresponding to a predetermined access pattern every certain time.

A list <NUM> illustrates an example of read accesses that have occurred to a KVS entry group <NUM> of the KVS <NUM>. The time width of each entry in the KVS entry group <NUM> is <NUM> minutes from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>. Furthermore, the time width required for each read access is <NUM> minutes. In this case, for example, the read access requires time range of <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>. Then, a read control unit <NUM> accesses two entries of a key "car1-speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>" and a key "car1-speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>" of the KVS entry group <NUM>.

Therefore, for example, when detecting that the read requests with the width of <NUM> minutes have continuously occurred for a certain time (for example, one hour) and there is a deviation in the offset, an entry creation determination unit <NUM> inserts an entry for correcting the offset deviation into the KVS <NUM>. The entry for correction is created by an entry creation unit <NUM>, and the created entry for correction is written to the KVS <NUM> by a KVS write unit <NUM>.

In the above-described example, the entry creation determination unit <NUM> inserts the entry with a key "car1-speed-<NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>" into the KVS <NUM>. Thereafter, the entry creation determination unit <NUM> again controls the entry creation unit <NUM> to create an entry for the KVS <NUM> with the time width of <NUM> minutes. In this way, the entry creation determination unit <NUM> matches the time range specified by the read request with the time range of the entry in the KVS <NUM>.

More specifically, the read control unit <NUM> and a write control unit <NUM> execute an offset adjustment process every certain time described below. First, an access pattern acquisition unit <NUM> detects that, by each user logic, a read access with an offset with respect to the time range of entries in the KVS <NUM> illustrated in the list <NUM> has occurred. The access pattern acquisition unit <NUM> determines whether an access time width matches an entry time width of any access pattern in an access pattern table <NUM>. In a case where the time widths match, the time widths and the offset are stored. In a case where the time widths do not match, the access pattern acquisition unit <NUM> ignores the read access. For example, the access pattern acquisition unit <NUM> stores the read access that has occurred in the past in an executed user logic, and compares access timing and the access time width with the entry time width of the access pattern table <NUM>, thereby to perform the above-described determination.

The entry creation determination unit <NUM> determines whether the time width of the entry matches the access time width illustrated in list <NUM> at the time of creating the entry. In the case where the time widths do not match, the entry creation determination unit <NUM> does nothing. In the case where the time widths match, the entry creation determination unit <NUM> determines whether the amount of deviation between a creation time of the entry and the offset matches a multiple of the access time width. In the case where the amount of deviation matches the multiple of the access time width, the entry creation determination unit <NUM> does nothing. In the case where the amount of deviation does not match the multiple of the access time width, the entry creation determination unit <NUM> records the amount of deviation.

Then, the entry creation determination unit <NUM> extends the time width of the entry at the time of creating the next entry by the recorded amount of deviation every certain time.

Thereby, an information processing device <NUM> can suppress occurrence of extra accesses due to the offset deviation. In the above-described example, the information processing device <NUM> have accessed two entries in response to the read request before correcting the offset deviation, but the information processing device only needs to access one entry in response to the read request after correcting the offset deviation. Thus, the read access is made more efficient.

Next, a sixth embodiment will be described. Matters different from the above-described second to fifth embodiments will be mainly described, and description of common matters will be omitted.

<FIG> is a diagram illustrating a modification of a time width of an access pattern according to the sixth embodiment.

An entry creation determination unit <NUM> may adjust an entry time width corresponding to an access pattern defined in an access pattern table <NUM> based on an actual access time width of each access pattern.

A KVS entry group 119a illustrates an example of each entry in KVS <NUM> from <NUM>:<NUM>:<NUM> to <NUM>:<NUM>:<NUM>. The entry creation determination unit <NUM> generates a pattern percentage counting table <NUM> based on a pattern counting table, which is a counting result of access patterns having occurred for the KVS entry group 119a, and stores the pattern percentage counting table <NUM> in a control information storage unit <NUM>. As described above, the pattern counting table is generated by an access pattern acquisition unit <NUM>, but its illustration is omitted in <FIG>. Furthermore, the pattern percentage counting table <NUM> is generated instead of a pattern occurrence percentage table <NUM>.

The pattern percentage counting table <NUM> holds, for each access pattern, a percentage at which entries have been created within a certain time with the access pattern and the longest access time width that has actually occurred with the access pattern.

In the example of the pattern percentage counting table <NUM>, the percentage of entries created with an access pattern "C" is the highest at <NUM>%. In the access pattern "C", the entry time width is <NUM> minutes. Meanwhile, among the read accesses determined to have the access pattern "C", the longest access time width that has actually occurred is <NUM> minutes. Therefore, the entry creation determination unit <NUM> changes the time width of the access pattern "C" from <NUM> minutes to <NUM> minutes. In this case, the entry creation determination unit <NUM> changes the entry time width of the access pattern "C" in the access pattern table <NUM> from "<NUM> minutes" to "<NUM> minutes". Moreover, the entry creation determination unit <NUM> sets a condition for an access time width w of the access pattern "C" in the access pattern table <NUM> to "<NUM> minutes ≤ w ≤ <NUM> minutes", and sets a condition for an access pattern "D" to "<NUM> minutes < w".

Thus, an information processing device <NUM> adjusts the entry time width in the access pattern table <NUM> according to the actual access time width, thereby matching the entry time width with the actually required time width. Thereby, the information processing device <NUM> can reduce a possibility that redundant data will be read in response to the read request, and improve efficiency of read access to the KVS <NUM>.

Note that, as illustrated in <FIG>, functions of the information processing device <NUM> can be used to provide various services.

<FIG> is a diagram illustrating an example of providing a service by an information processing system.

For example, data center <NUM> has the information processing device <NUM> and message queue servers <NUM> and <NUM>. The data center <NUM> further has a server <NUM>. The message queue server <NUM> has a message queue (MQ) <NUM>. The message queue server <NUM> has an MQ <NUM>. The server <NUM> executes a service <NUM>. The service <NUM> acquires data held in the MQ <NUM> and uses the data to notify a device group <NUM> including connected cars <NUM> to <NUM> and an IoT device <NUM> of congestion information, detour route information, advertisement recommendation information, and the like. Note that the data center <NUM> may have a plurality of information processing devices <NUM> and servers <NUM>, respectively.

The information processing device <NUM> has real world objects <NUM>, <NUM>, and the like including vehicle objects and human objects, and service objects <NUM>, <NUM>, and <NUM>. The real world objects <NUM>, <NUM>, and the like acquire and hold speed, position, driving log, and the like transmitted in units of seconds from the device group <NUM> via the MQ <NUM>.

The service objects <NUM>, <NUM>, and <NUM> are examples of user logics, and execute predetermined processing based on data such as the speed and position corresponding to the real world objects <NUM>, <NUM>, and the like. For example, the service object <NUM> detects the degree of congestion for each road, generates a vehicle list 163a indicating the degree of congestion for each road, and provides the service objects <NUM> and <NUM> with the vehicle list 163a. The service object <NUM> determines a congestion ranking for each road based on the vehicle list 163a, and stores the congestion degree list 164a indicating the congestion ranking in the MQ <NUM>. Furthermore, the service object <NUM> performs processing for congestion avoidance guidance for each road, and stores information of a recommended route 165a for congestion avoidance in the MQ <NUM>. The service <NUM> feeds back an advertisement recommendation service and a congestion notification service to the device group <NUM> based on the congestion degree list 164a and the recommended route 165a.

In the information processing device <NUM>, data used by the real world objects <NUM>, <NUM>, and the like, and the service objects <NUM>, <NUM>, and <NUM> is stored in the KVS <NUM>. As exemplified in the second to sixth embodiments, the information processing device <NUM> can reduce the number of reads associated with data read from the KVS <NUM> and improve read efficiency. For example, data read from the KVS <NUM> is speeded up. Therefore, services can be provided to the device group <NUM> in real time with little delay. That is, the information processing device <NUM> enables appropriate guidance notifications according to the status of the device group <NUM> that changes from moment to moment.

Note that, for a data structure of the KVS <NUM>, a log-structured merge tree (LSM-tree) is used, for example. The LSM-tree is one of index structures and data storage structures using the index structure, and is characterized by fast write and slow read compared to write. Stream processing that processes a large amount of input data at high speed often uses the KVS <NUM> using the LSM-tree structure for high-speed write. The functions of the information processing device <NUM> according to the first embodiment and the information processing devices <NUM> according to the second to sixth embodiments are particularly effective for speeding up the read in a data structure with a relatively slow read speed, such as an LSM-tree structure.

As described above, the information processing device <NUM> executes the following processing.

An event processing unit <NUM> determines a first time width with the longest time width or longer among the time widths to be read based on a read request from each program to the KVS <NUM> that holds data corresponding to time, as the time width to be associated with one entry in the KVS <NUM>. The event processing unit <NUM> creates entries corresponding to a plurality of data belonging to the time range of the first time width based on input data for each time and stores the entries in the KVS <NUM>.

Thereby, the information processing device <NUM> can reduce the number of reads associated with data read from the KVS <NUM>. As a result, the information processing device <NUM> can speed up the read of data from the KVS <NUM>. Each of user logics <NUM>, <NUM>, and <NUM> is an example of a program that issues the read request to the KVS <NUM>.

The event processing unit <NUM> may set the first time width to the same length as the longest time width among the time widths to be read based on the read request from each program. That is, the first time width may be the same length as the longest time width. Thereby, the information processing device <NUM> can reduce the number of reads associated with data read from the KVS <NUM>. Furthermore, the information processing device <NUM> can easily determine the first time width.

The event processing unit <NUM> may determine a candidate for the time width longer than the longest time width and with a minimum difference from the longest time width, as the first time width, based on first information indicating a plurality of candidates for the time width to be associated with one entry.

Thereby, the information processing device <NUM> can reduce the number of reads associated with data read from the KVS <NUM>. Note that the access pattern table <NUM> is an example of the first information.

In the first information, each of the plurality of candidates for the time width to be associated with one entry may be associated with an access pattern indicating a range of an access time width which indicates the time width of the read request and is shorter than the candidate. The event processing unit <NUM> may calculate an occurrence percentage in a predetermined period of the read request for each access pattern based on a read request history of each access pattern. The event processing unit <NUM> may specify the longest time width, excluding the read requests corresponding to the access patterns with the occurrence percentage lower than a certain percentage.

Thereby, the information processing device <NUM> can appropriately determine the time width to be associated with one entry. As described above, if the entry time width is determined based on the access patterns with a relatively low occurrence percentage, the time width may become too large or too small, and there is a possibility that read efficiency from the KVS <NUM> decreases. Therefore, the information processing device <NUM> can suppress the decrease in the read efficiency by specifying the longest time width, excluding the read requests corresponding to the access patterns with the occurrence percentage lower than a certain percentage. Note that a pattern counting table <NUM> is an example of a history of read requests for each access pattern. The occurrence percentage in a pattern occurrence percentage table <NUM> is an example of the occurrence percentage in a predetermined period of the read requests for each access pattern.

The event processing unit <NUM> may set the candidates for the time width of the entry to be created this time to a time width one step shorter than the first time width of previous time, the first time width of the previous time, and a time width one step longer than the first time width of the previous time, based on the first information, with respect to the first time width of the entry created previous time. Thereby, the information processing device <NUM> can efficiently determine the time width of entries. Furthermore, the information processing device <NUM> can suppress abrupt lengthening or abrupt shortening of the time width of entries.

For example, as exemplified in the fourth embodiment, the plurality of candidates for the time width may be values of nth power of <NUM> (where n is an integer equal to or greater than <NUM>). Then, in a case where the first time width of the entry created previous time is a value of mth power of <NUM> (m is an integer equal to or greater than <NUM>), the event processing unit <NUM> may set the plurality of candidates for the time width of the entry to be created next to a value of (m - <NUM>)th power of <NUM>, a value of mth power of <NUM>, and a value of (m + <NUM>)th power of <NUM>.

The event processing unit <NUM> may perform the following processing in a case where the time width to be read based on the read request and the time width of the entry to be created are constant for a predetermined time. The event processing unit <NUM> detects that a difference in start time between a first time range to be read based on the read request and a second time range corresponding to the entry read in response to the read request is constant for a predetermined time. Then, the event processing unit <NUM> shifts an end time of a third time range corresponding to the entry to be created next backward by the amount of the difference.

Thereby, the information processing device <NUM> can match the start time of the time range of the entry in the KVS <NUM> with the start time of the time range specified by the read request, and can further reduce the number of reads of data from the KVS <NUM>. Note that the case where the time width to be read based on the read request and the time width of the entry to be created are constant for a predetermined time means, for example, a case where a state in which the time width to be read based on the read request and the time width of the entry to be created match with a certain value continues for a predetermined time.

Furthermore, in a case where the candidate for the time width included in the first information, which is specified for the specified longest time width, is different from the longest time width, the event processing unit <NUM> may change the candidate for the time width included in the first information based on the specified longest time width. For example, the event processing unit <NUM> shortens the appropriate candidate for the time width to be shorter than the appropriate candidate for the time width and to be equal to or longer than the specified longest time width. The event processing unit <NUM> may set the appropriate candidate for the time width to be the same as the specified longest time width.

Thereby, the information processing device <NUM> can adjust the time width of one entry in the KVS <NUM> so as not to be too long with respect to the time width of the actual read request. As a result, the information processing device <NUM> can improve the efficiency of read from the KVS <NUM>.

For example, there is a case where the candidate for the time width included in the first information, which corresponds to a first access pattern to which the specified longest time width belongs, differs from the specified longest time width. In this case, the event processing unit <NUM> may change the candidate for the time width associated with the first access pattern in the first information based on the specified longest time width. For example, the event processing unit <NUM> shortens the candidate for the time width associated with the first access pattern to be shorter than the candidate for the time width and to be equal to or longer than the specified longest time width. The event processing unit <NUM> may set the candidate for the time width associated with the first access pattern to be the same as the specified longest time width.

Furthermore, the event processing unit <NUM> may specify the longest time width to be read in the read request based on the read requests that have been accepted since the entry in the KVS <NUM> was created previous time to the present. Thereby, the information processing device <NUM> can dynamically adjust the time width to be associated with one entry according to the status of the time width to be read based on the current read request by each program (each user logic). Furthermore, the time width to be associated with one entry can be appropriately adjusted according to the status of the time width to be read based on the current read request. Therefore, the efficiency of the read of data from the KVS <NUM> can be further improved. For example, both the reduction in the number of reads and the suppression of an excessive increase in the time width of an entry with respect to the time width of the read request can be achieved. As a result, the read of data from the KVS <NUM> can be speeded up.

For example, when the event processing unit <NUM> stores the created entry in the KVS <NUM>, the event processing unit <NUM> deletes the information of the time width actually specified in the read request, the information having been recorded to date. Then, the event processing unit <NUM> starts new recording of the actually specified time width in order to determine the first time width at the time of creating the next entry. Here, access width maximum value information <NUM>, the pattern counting table <NUM>, and the pattern occurrence percentage table <NUM> are examples of information of the time width actually specified in the read request.

Furthermore, the data stored in the KVS <NUM> may be sensor data acquired by a sensor. For example, the functions of the information processing device <NUM> are suitable for a stream processing platform that performs stream processing for sensor data transmitted in time-series from sensors.

Furthermore, one entry in the KVS <NUM> may have a key corresponding to a time range and a value containing data corresponding to each of a plurality of pieces of time belonging to the time range. Thereby, the information processing device <NUM> can easily read the data in the time range from the KVS <NUM> by specifying the time range for reading by each program.

Note that the information processing according to the first embodiment may be implemented by causing the processing unit <NUM> to execute a program. Furthermore, the information processing according to the second embodiment may be implemented by causing the CPU <NUM> to execute the program. The program can be recorded in the computer-readable recording medium <NUM>.

Claim 1:
A method performed by a computer for creating an entry, the method comprising:
determining a first time width equal to or longer than a longest time width among time widths to be read based on a read request from each program to a key-value store that holds data that corresponds to time, as a time width to be associated with an entry to be created next time in the key-value store;
creating a new entry that corresponds to a plurality of data that belongs to a time range of the first time width based on the data input since previous creation of an entry to present for each time; and
storing the new entry in the key-value store.