WO2012102103A1 - 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム - Google Patents

情報処理装置、情報処理システム、情報処理方法および情報処理プログラム Download PDF

Info

Publication number
WO2012102103A1
WO2012102103A1 PCT/JP2012/050648 JP2012050648W WO2012102103A1 WO 2012102103 A1 WO2012102103 A1 WO 2012102103A1 JP 2012050648 W JP2012050648 W JP 2012050648W WO 2012102103 A1 WO2012102103 A1 WO 2012102103A1
Authority
WO
WIPO (PCT)
Prior art keywords
key
value
query
information processing
indicating
Prior art date
Application number
PCT/JP2012/050648
Other languages
English (en)
French (fr)
Inventor
佐藤 正
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to EP12739500.2A priority Critical patent/EP2669810A1/en
Priority to US13/980,174 priority patent/US20130304823A1/en
Priority to JP2012554723A priority patent/JP5949561B2/ja
Priority to CN2012800064036A priority patent/CN103339620A/zh
Publication of WO2012102103A1 publication Critical patent/WO2012102103A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Definitions

  • the present invention relates to a query transfer method in structured P2P (Peer-to-Peer).
  • nodes constituting the system share and process a query input from an external system.
  • a node is a program deployed on the memory of a device that includes a CPU (Central Processing Unit) and a memory. When the CPU reads and executes the program, the computer including the CPU functions as a node that transfers data and queries or holds them in the memory.
  • a value (key) generated from a query by a hash function or the like determines a node that the query should reach.
  • a key space that is a space of values that a key can take is defined, and a part of the key space is assigned to each node as a range (key range).
  • a key assigned to a node is called an assigned key of the node, and a range of assigned keys is called an assigned key range.
  • the key indicating the minimum value in the allocation key range is called a minimum allocation key
  • the key indicating the maximum value in the allocation key range is called a maximum allocation key.
  • the node When data is input from the external system, the node generates a key from the data and transfers the data to the node to which the generated key is assigned. Therefore, data and a query for generating the same key are transmitted to the same node to which the key is assigned.
  • the value obtained from the hash function using the data as an input is used as a key
  • the value obtained from the hash function using the data specified by the query as the key is used as a key Any configuration may be used. As a result, the completely matched data and the query arrive at the same node.
  • a method of routing a query input from an external system to a node that should process the query is disclosed (for example, see Non-Patent Document 1).
  • Non-Patent Document 1 operates as follows, for example.
  • Each node of the P2P system maps attribute values indicating respective values of multidimensional attributes to keys indicating one-dimensional data using a space filling curve.
  • each node When a query is input, each node generates a key range that is a set of keys indicating a certain value from the query.
  • the node determines the node to which the query is forwarded so that the query is sent to the node assigned the minimum key for each key range.
  • the node transmits the query to the transfer destination node.
  • the query is transmitted to the node to which the key is assigned via zero or more nodes.
  • the node to which the query is transferred receives the query and processes the received query.
  • the node forwards the received query to the successor.
  • a node successor is a node to which a key indicating a value obtained by adding 1 to the maximum value of each value indicated by the assignment key of the node is assigned. The process of a node forwarding a query to its successor is repeated until the maximum value of the key range generated from the query is less than the maximum value of the key range assigned to the node.
  • Prasanna Ganesan et al. “One torus to rule them all: Multi-dimensional queries in p2p systems,“ In WebDB '04: Processeds of the 7th International Works on the Web, 19N ACM Press. Christian Bohm et al. , “XZ-Ordering: A Space-Filling Curvefor Objects with Spatial Extension,” Proceedings of the 6th, International Symposium on Advances19-Spatial 75. Ion Stoica et al. , "Cord: A Scalable Peer-to-peer Lookup Service for Internet Applications," In Processings of the Technology, Applications, Technology, and Engineering Technologies. SIGCOMM '01. ACM, New York, NY, 149-160.
  • Non-Patent Document 1 generates a key range from a query, and transfers the key range to each node together with the query. Each node serializes the key range when transferring the key range, and deserializes the key range when receiving the key range. Therefore, the technique described in Non-Patent Document 1 has a heavy network load, serialization processing load, and deserialization processing load when a large amount of queries are transferred.
  • An example of an object of the present invention is to provide an information processing apparatus, an information processing method, and an information processing program capable of reducing a network load, a serialization processing load, and a deserialization processing load even when a large amount of queries are transferred. .
  • the first information processing apparatus includes a receiving unit that receives a query that specifies a range of a certain value, a path management unit that stores a key indicating a certain value, and a value closest to the value indicated by the predetermined key
  • a next key calculation unit that calculates a next key, which is a key indicating a value, from each key indicating any value included in the range specified by the query; a value indicated by the next key; and the path management unit Identifies one key from each key based on the magnitude relationship with the value that each key stores, and identifies the forwarding node identifier that is the identifier of the device identified based on the value of the one key
  • a destination final key A final key calculation unit that calculates from each key stored in the route management unit, wherein the query transfer control unit identifies the query and the transfer destination final key by the transfer destination node identifier. Forward to.
  • a first information processing system includes at least one information processing apparatus, and the information processing apparatus stores a reception unit that receives a query that specifies a range of a certain value and a key that indicates the certain value.
  • a next key that calculates a next key that is a key closest to the value indicated by the predetermined key from among each key that indicates one of the values included in the range specified by the query Based on the magnitude relationship between the value indicated by the calculation unit, the value indicated by the next key, and the value indicated by each key stored in the path management unit, one key is identified from each key, and based on the value of the one key Based on the value indicated by the one key corresponding to the transfer destination node identifier and the query transfer control unit that identifies the transfer destination node identifier that is the identifier of the information processing apparatus identified by the transfer destination node identifier Is A final key calculation unit that calculates a transfer destination final key, which is a key indicating a boundary of a range of the next key that can be calculated by the information processing apparatus, from each key stored in the path management unit, and the query transfer control The unit transfers the query and the transfer destination final key to the information processing apparatus identified by the transfer destination node identifier.
  • the first information processing method receives a query specifying a range of a certain value, stores a key indicating a certain value, and is a key indicating a value closest to a value indicated by a predetermined key.
  • the key is calculated from each key indicating any value included in the range specified by the query, and based on the magnitude relationship between the value indicated by the next key and the value indicated by each key stored.
  • Specifying one key from the keys specifying a transfer destination node identifier that is an identifier of a device identified based on the value of the one key, and indicating the one key corresponding to the transfer destination node identifier Based on the value, a transfer destination final key that is a key indicating a boundary of a range of the next key that can be calculated by the device identified by the transfer destination node identifier is calculated from the stored keys, and the query and the key Previous destination and last key Transferring to the device identified by the destination node identifier.
  • the first information processing program is the closest to a value indicated by a predetermined key, a process of receiving a query specifying a range of a certain value in a computer, a process of storing a key indicating a certain value, A process for calculating a next key, which is a key indicating a value, from each key indicating any value included in the range specified by the query, and a value indicated by the next key and each key to be stored are respectively A process of identifying one key from each key based on the magnitude relationship with the indicated value and identifying a transfer destination node identifier that is an identifier of the device identified based on the value of the one key; and Based on the value indicated by the one key corresponding to the node identifier, each transfer destination final key that is a key indicating the boundary of the range of the next key that can be calculated by the device identified by the transfer destination node identifier.
  • a process for calculating the in, to execute a process of transferring and the transfer destination final key to the query to the device identified by the destination node identifier In the first recording medium of one embodiment of the present invention, a process for receiving a query specifying a range of a certain value in a computer, a process for storing a key indicating a certain value, and a value closest to the value indicated by the predetermined key A process for calculating a next key, which is a key indicating a key, from among each key indicating any value included in the range specified by the query, and a value indicated by the next key and each key stored A process for identifying one key from each key based on the magnitude relationship with a value and identifying a transfer destination node identifier that is an identifier of a device identified based on the value of the one key; and Each key that stores a destination final key that is a key indicating a boundary of the range of the next key that can be calculated by the device identified by the destination node identifier based on
  • An example of the effect of the present invention is that even when a large number of queries are transferred, the network load, the load of serialization processing, and the load of deserialization processing can be reduced.
  • FIG. 1 is a block diagram showing the configuration of the information processing system in the first embodiment of the present invention.
  • FIG. 2 is an example showing two-dimensional attributes.
  • FIG. 3 is a diagram illustrating an example of a procedure in which the information processing system maps a multidimensional attribute to a key indicating one-dimensional information using a space filling curve.
  • FIG. 4 is a block diagram showing the configuration of the node in the first exemplary embodiment of the present invention.
  • FIG. 5 is a diagram illustrating an example of a configuration in which the path management unit stores the maximum allocation key of each node.
  • FIG. 6 is a diagram illustrating an example of calculating the next key.
  • FIG. 7 is a block diagram illustrating a program storage device included in the node.
  • FIG. 1 is a block diagram showing the configuration of the information processing system in the first embodiment of the present invention.
  • FIG. 2 is an example showing two-dimensional attributes.
  • FIG. 3 is a diagram illustrating an example of a procedure in which the information processing system
  • FIG. 8 is a flowchart showing an example of an outline of the operation of the node in the first exemplary embodiment of the present invention.
  • FIG. 9 is a diagram illustrating an example of a message generated by the query transfer control unit.
  • FIG. 10 is a flowchart showing an example of an outline of the operation of the node next key calculation unit according to the first embodiment of this invention.
  • FIG. 11 is a flowchart showing an example of the outline of the operation of the next key search processing by the node next key calculation unit in the first embodiment of the present invention.
  • FIG. 12 is a diagram illustrating a specific example of an operation in the next key search of the next key calculation unit.
  • FIG. 13 is a diagram illustrating a specific example of the index i.
  • FIG. 14 is a flowchart showing an example of an outline of the operation of the x area search processing by the node next key calculation unit in the first embodiment of the present invention.
  • FIG. 15 is a flowchart showing an example of the outline of the operation of the y area search process by the node next key calculation unit in the first embodiment of the present invention.
  • FIG. 16 is a flowchart showing an example of the outline of the operation of the next key generation processing by the node next key calculation unit in the first embodiment of the present invention.
  • FIG. 17 is a diagram schematically showing the Hilbert curve specified by the next key calculation unit.
  • FIG. 18 is a block diagram showing a configuration of a node in the second exemplary embodiment of the present invention.
  • FIG. 19 is a flowchart showing an example of an outline of operations different from the nodes in the first embodiment among the operations of the nodes in the second embodiment of the present invention.
  • FIG. 20 is a block diagram showing a configuration of a node in the third exemplary embodiment of the present invention.
  • FIG. 21 is a diagram illustrating an example of a minimum assignment key table held by the minimum assignment key holding unit.
  • FIG. 22 is a flowchart showing an example of an outline of operations different from the nodes in the first embodiment among the operations of the nodes in the third embodiment of the present invention.
  • FIG. 23 is an explanatory diagram showing a specific example of the operation of the node in the third exemplary embodiment of the present invention.
  • FIG. 24 is a block diagram showing a configuration of a node in the fourth exemplary embodiment of the present invention.
  • FIG. 25 is an example of information stored in the route management unit.
  • FIG. 26 is a block diagram illustrating a configuration of a node included in the information processing system according to the fifth embodiment of the present invention.
  • FIG. 27 is a block diagram illustrating a program storage device included in a node.
  • FIG. 1 is a block diagram showing a configuration of an information processing system 10 in the first embodiment of the present invention.
  • the information processing system 10 according to the first exemplary embodiment of the present invention includes a plurality of nodes 100a to 100r.
  • the node 100a to the node 100r are also described as the node 100 as representative.
  • Each node 100 is communicably connected to at least one other node 100.
  • each node 100 that has received a query transfers a final key (final key) indicating a boundary of a key to which each node 100 is responsible for a search together with the query to the node.
  • a final key final key
  • searching means searching for a key corresponding to the query.
  • the transmitting node must serialize the data of each key included in the key range. Further, when receiving the serialized data, the receiving node must deserialize it. Therefore, the information processing system 10 in the first embodiment can further reduce the network load.
  • the information processing system 10 maps a multidimensional attribute to a key indicating a certain value using a space filling curve.
  • FIG. 2 is an example showing two-dimensional attributes. A combination of attribute values of two-dimensional attributes is mapped to a certain key 803. For example, in FIG. 2, a certain combination of attribute values (xa, ya) included in a query area 805 indicating at least a part of an attribute space 804 that is a space composed of two-dimensional attributes is mapped to a certain key 803. .
  • an information processing system 10 includes nodes 100a to 100r. A part of the key range 802 of the one-dimensional key space 801 is assigned to each node 100.
  • data may include a plurality of attributes.
  • the data may include a “latitude” attribute and a “longitude” attribute as position information.
  • the attribute includes an attribute name that is information for identifying the type of the attribute, and a value (attribute value) for the attribute name.
  • the “latitude” attribute may include an attribute name “latitude” and an attribute value “north latitude 35 degrees 40 minutes”.
  • the query may be information specifying a range of attribute values.
  • the query may be information specifying the range of each attribute value such as 35 degrees 30 minutes north latitude to 35 degrees 50 minutes north latitude, 139 degrees 40 minutes east longitude to 139 degrees 50 minutes east longitude.
  • the data “north latitude 35 degrees 40 minutes, east longitude 139 degrees 46 minutes” is included in the range specified by the above query. Therefore, the data matches the above-mentioned query “from 35 degrees 30 minutes north latitude to 35 degrees 50 minutes north latitude, 139 degrees 40 minutes east longitude to 139 degrees 50 minutes east longitude”.
  • FIG. 3 is a diagram illustrating an example of a procedure in which the information processing system 10 maps a multidimensional attribute to a key indicating one-dimensional information using a space filling curve.
  • a two-dimensional attribute including an attribute x and an attribute y is mapped to a key indicating one-dimensional information.
  • an attribute x subkey range [011, 101] and an attribute y subkey range [00, 01] are generated from the attribute value range of attribute x and the attribute value range of attribute y.
  • the subkey is a value used to generate a key.
  • the subkey of the attribute x is 3 bits.
  • the subkey of attribute y is 2 bits.
  • a bit string in which bits are arranged alternately is a key. It is. For example, when the bits “011” and “00” are alternately arranged, “00101” is generated.
  • generating a key from “011” and “00”, which is a combination of subkeys is referred to as “generating a key from (011,00)”.
  • FIG. 4 is a block diagram showing the configuration of the node 100 according to the first embodiment of this invention.
  • the node 100 according to the first exemplary embodiment of the present invention includes a reception unit 101, a path management unit 102, a next key calculation unit 103, a query transfer control unit 104, and a final key calculation unit 105.
  • the receiving unit 101 passes the received query to the next key calculating unit 103 described later.
  • the receiving unit 101 determines whether or not the transfer destination final key is received together with the query.
  • the transfer destination final key is a final key (final key) indicating the boundary of the key to which the node 100 that has received the query should be responsible for the search.
  • the path management unit 102 compares the value indicated by the destination key with the value indicated by each stored key, and determines one value according to the magnitude relationship between these values. Identify the identifier and return it.
  • the key assigned to the node 100 is called the assigned key of the node, and the assigned key range is called the assigned key range.
  • the key indicating the minimum value in the allocation key range is called a minimum allocation key
  • the key indicating the maximum value in the allocation key range is called a maximum allocation key.
  • the node 100 may store information indicating the allocation key range.
  • the information indicating the allocation key range stored in the node 100 may be a minimum allocation key and a maximum allocation key, or all keys included in the allocation key range.
  • the key may be information that can identify one of the nodes 100.
  • the key may be an identifier that can identify the node 100 or a node address.
  • the key may be an identifier that can identify a certain node or information that uniquely corresponds to a node address.
  • the path management unit 102 may store a node address and a maximum allocation key of the node 100 as an identifier that can identify the node 100 in association with each other.
  • the path management unit 102 may store the maximum allocation key of the node 100 as the node address of each node 100. That is, in this case, the route management unit 102 may store the maximum allocation key of each node 100 as shown in FIG. This maximum allocation key is an identifier that can identify each node 100.
  • the route management unit 102 may calculate the node address of the corresponding node based on the stored maximum allocation key.
  • the route management unit 102 receives a destination key.
  • the path management unit 102 may specify a key indicating a value larger than the value indicated by the destination key and closest to the value from among the keys stored therein.
  • the route management unit 102 may specify the key indicating the minimum value when the key indicating a value larger than the value indicated by the destination key is not stored.
  • the route management unit 102 specifies the identifier of the node 100 associated with the specified key.
  • the path management unit 102 may specify a key indicating a maximum value that does not exceed the value indicated by the destination key from among the keys stored by itself. In this case, the route management unit 102 may specify the key indicating the minimum value when the key indicating the value not exceeding the value indicated by the destination key is not stored.
  • the route management unit 102 may specify the node address of the node 100 based on the identifier of the node 100.
  • the identifier of the node 100 may be the node address of the node 100. In the first embodiment, it is assumed that the identifier that can identify the node 100 is the node address of the node 100.
  • Each node 100 notifies at least the node address of the own node 100 and the maximum allocation key of the own node 100 to other nodes 100 in order to generate information indicating this route.
  • the route management unit 102 of each node 100 generates information (route table) indicating a route to the other node 100 based on the notified information, and stores the information.
  • the next key of a certain key k is specified as follows.
  • the next key of the key k is more than the value indicated by the key k in each key indicating a predetermined value specified based on the combination of the attribute values included in the attribute value range of each attribute included in the query. It is a key indicating a value that is large and closest to the value.
  • FIG. 6 is a diagram illustrating a calculation example of the next key by the next key calculation unit 103.
  • FIG. 6 is an example of a 5-bit key. It is assumed that the keys generated from the latitude range and the longitude range specified in the query are six keys “00101”, “00111”, and [10000, 10011]. In FIG. 6, it is assumed that the next key calculation unit 103 calculates a key (next key knext) next to a certain key (current key kcurrent).
  • kcurrent is “11101”
  • the next key knext of kcurrent is specified as “00101” which is the next key in the clockwise direction.
  • knext is specified as “00111”.
  • knext is specified as “10010”.
  • a key indicating a value obtained by adding 1 to the value of the key indicating the maximum value that can be taken by the key is the key indicating the minimum value that the key can take (FIG. 6 is “00000”).
  • a key indicating a value obtained by subtracting 1 from the value of the key indicating the minimum value that can be taken by the key (“00000” in FIG. 6) is a key indicating the maximum value that can be taken by the key (“11111 in FIG. 6). ]).
  • the value indicating the key is a value smaller than 0, or a value exceeding the total number of nodes, that is, a value exceeding the maximum value that the key can take, these values are It may be replaced with values congruent to those values modulo numbers.
  • the next key calculation unit 103 receives the inspection target key k from the query transfer control unit 104 described later, the next key is generated from the attribute value range of each attribute included in the query based on the inspection target key k.
  • next key calculation unit 103 passes the calculated next key to the query transfer control unit 104.
  • the final key calculation unit 105 (to be described later) specifies the final key of the node 100 when the reception unit 101 receives the query.
  • the query transfer control unit 104 determines that the next key is any key from the maximum allocation key of the node 100 to the last key, the query transfer control unit 104 performs the following processing.
  • the query transfer control unit 104 refers to the route management unit 102 and acquires the node address “addr” corresponding to the next key. Then, the query transfer control unit 104 passes the node address “addr” to the final key calculation unit 105 described later.
  • the query transfer control unit 104 passes the inspection target key k, which is the final key calculated by the final key calculation unit 105, to the next key calculation unit 103.
  • the next key calculation unit 103 calculates the next key again based on the inspection target key k, and passes the next key to the query transfer control unit 104.
  • the final key calculation unit 105 calculates a key indicating a value obtained by subtracting 1 from the minimum allocation key of the own node 100 as the final key.
  • the final key calculation unit 105 identifies the key that indicates the maximum value that can be taken by the key as the final key. Further, when it is determined that the receiving unit 101 has received the transfer destination final key together with the query, the final key calculation unit 105 identifies the received transfer destination final key as the final key of the own node 100.
  • the final key calculation unit 105 executes the following processing.
  • the final key calculation unit 105 refers to the route management unit 102 and, from the node address stored in the route management unit 102, the node to which the key having the smallest distance from the next key other than “addr” is assigned.
  • the address “next” is specified. That is, the final key calculation unit 105 identifies “next” as the node address associated with the key that indicates a value that is greater than the value associated with the key associated with the node address “addr” and that is closest to that value. To do. The description about the distance will be described later.
  • the final key calculation unit 105 refers to the path management unit 102 and identifies the key associated with the node address “next” as the inspection target key k.
  • the final key calculation unit 105 uses “addr” as the transfer destination node address and the inspection target key k as the transfer destination final key, and inserts these pairs into the transfer list.
  • the transfer list is a list including, as elements, a pair of a transfer destination node address indicating a node address of a transfer destination of a query and a transfer destination final key that is a final key transmitted together with the query.
  • the reception unit 101, the path management unit 102, the next key calculation unit 103, the query transfer control unit 104, and the final key calculation unit 105 are realized by, for example, a CPU that operates according to a program (information processing program).
  • the reception unit 101, the path management unit 102, the next key calculation unit 103, the query transfer control unit 104, and the final key calculation unit 105 may be realized by the same CPU.
  • the program is stored in, for example, a program storage device 121 (see FIG. 7) included in the node 100.
  • the CPU 122 may read the program and operate as the receiving unit 101, the path management unit 102, the next key calculation unit 103, the query transfer control unit 104, and the final key calculation unit 105 according to the program.
  • a recording medium (or storage medium) in which the above-described program code is recorded may be supplied to the node 100, and the node 100 may read and execute the program code stored in the recording medium.
  • the present invention also includes a recording medium 124 that temporarily or non-temporarily stores software (information processing program) to be executed by the node 100 according to the first embodiment.
  • the path management unit 102 may be realized by a storage device such as the hard disk 123, for example.
  • FIG. 8 is a flowchart showing an example of an outline of the operation of the node 100 according to the first embodiment of this invention.
  • the receiving unit 101 receives information including at least a query from an external system (not shown) or another node 100 (step D1). Then, the receiving unit 101 determines whether or not the received information includes the transfer destination final key (step D2).
  • the reception unit 101 determines that the received information includes the transfer destination final key (“Yes” in step D2)
  • the following processing is executed. That is, the final key calculation unit 105 identifies the received transfer destination final key as the final key of the own node 100 (step D3). Then, the processing of the node 100 proceeds to Step D5.
  • the final key calculation unit 105 executes the following processing. That is, the final key calculation unit 105 calculates a key indicating a value obtained by subtracting 1 from the minimum allocation key of its own node as the final key of its own node 100 (step D4). Then, the process of the node 100 proceeds to Step D5.
  • the next key calculation unit 103 identifies the maximum allocation key of the own node 100 as the inspection target key k (step D5). Then, the next key calculation unit 103 calculates the next key of the inspection target key k based on the query received by the reception unit 101 (step D6). Then, the query transfer control unit 104 determines that the value (k1) indicated by the next key calculated by the next key calculation unit 103 is the value (k2) indicated by the maximum allocation key of the node 100 and the value (k3) indicated by the final key. It is determined whether it is between (step D7). “K1 is between k2 and k3” means that the result of adding 1 to the value k2 may become the value k1 before reaching the value k3.
  • the value of the result of adding 1 to MAX is the minimum value of the value that the key can take. It is considered to be MIN.
  • the final key is either the final key received together with the query in step D1 or the final key calculated by the final key calculation unit 105 in step D4.
  • the query transfer control unit 104 determines that the value indicated by the next key is between the value indicated by the maximum allocation key of the node 100 and the value indicated by the final key (“Yes” in step D7), the following processing is performed. Execute.
  • the query transfer control unit 104 determines whether the next key of the inspection target key k has been received from the next key calculation unit 103 before (step D8). In this case, the query transfer control unit 104 may store the next key every time it receives the next key from the next key calculation unit 103.
  • the query transfer control unit 104 determines that the next key of the inspection target key k has been received from the next key calculation unit 103 (“Yes” in step D8), the process of the query transfer control unit 104 will be described later. The process proceeds to step D15.
  • the query transfer control unit 104 determines that the next key of the inspection target key k has not yet been received from the next key calculation unit 103 (“No” in step D8), the query transfer control unit 104 executes the following processing. That is, the query transfer control unit 104 refers to the route management unit 102 and acquires the node address “addr” corresponding to the next key (step D9). The query transfer control unit 104 passes the acquired node address “addr” to the final key calculation unit 105. The final key calculation unit 105 has a node address “next” of a node to which a key other than “addr” and the smallest distance from the next key is assigned among the nodes stored in the path management unit 102.
  • the distance is specified according to the routing protocol. For example, when Chord is applied as a routing protocol, the distance is a “clockwise distance” between nodes.
  • the clockwise distance from the key k1 to the key k2 is k2-k1 when k1 ⁇ k2.
  • FIG. 6 is a diagram illustrating a specific example of calculating the clockwise distance.
  • the distance is calculated by the formula MAX ⁇ k1 + k2 + 1.
  • MAX indicates the maximum value that the key can take.
  • the value of MAX is “11111” (31 in decimal).
  • the method for obtaining the node address “next” will be described below.
  • the assigned key ranges of the nodes 100a, 100b, and 100c are [0, 10], [20, 30], and [40, 50], respectively.
  • the assignment key of each node is a key indicating a continuous value and is exclusive. Therefore, if the query transfer control unit 104 or the route management unit 102 stores any one of the assignment keys of the nodes 100 for each node 100, the positional relationship between the nodes 100 can be calculated.
  • the final key calculation unit 105 identifies the key stored in the path management unit 102 in association with the node address “next” as a new inspection target key k (step D11).
  • the final key calculation unit 105 determines that the value (k4) indicated by the new inspection target key k is between the value (k1) indicated by the next key calculated by the next key calculation unit 103 and the value (k3) indicated by the final key. It is determined whether or not there is (step D12). The final key calculation unit 105 determines that the value indicated by the new inspection target key k is between the value indicated by the next key calculated by the next key calculation unit 103 and the value indicated by the final key (in step D12). “Yes”), the following processing is executed. In other words, the final key calculation unit 105 sets the node address “addr” as a transfer destination node address that is one of the elements and the check target key k as the transfer destination final key that is another element as a transfer list.
  • Step D13 the processing of the node 100 proceeds to Step D6.
  • step D12 “No” the final key calculation unit 105 determines that the value indicated by the new inspection target key k is not between the value indicated by the next key calculated by the next key calculation unit 103 and the value indicated by the final key.
  • step D12 “No” the following processing is executed. That is, the final key calculation unit 105 sets the node address “addr” as a transfer destination node address that is one of the elements, and the final key of the own node 100 as the transfer destination final key that is another element. Insert into the transfer list (step D14). Then, the processing of the node 100 proceeds to Step D15.
  • step D7 when it is determined that the value indicated by the next key is not between the value indicated by the minimum allocation key of the own node and the value indicated by the final key (“No” in step D7), the query transfer control unit 104 Performs the following processing. That is, the query transfer control unit 104 is shown in FIG. 9 for each pair included in the transfer list generated by the final key calculation unit 105 based on the transfer destination final key that is one element of the pair and the corresponding query. Generate a structure message.
  • FIG. 9 is a diagram illustrating an example of a message 819 including a query 820 and a transfer destination final key 821.
  • FIG. 10 is a flowchart illustrating an example of an outline of the operation of the next key calculation unit 103 of the node 100 according to the first embodiment of this invention.
  • the next key calculation unit 103 receives the query and the current key kcurrent that is a certain key (step E1). Then, the next key calculation unit 103 generates an attribute x subkey range [xmin, xmax] and an attribute y subkey range [ymin, ymax] from the attribute value range of the attribute x and the attribute value range of the attribute y constituting the query, respectively. (Step E2).
  • the rectangle specified based on the attribute x subkey range and the attribute y subkey range is called a query area and is represented as [xmin, xmax, ymin, ymax].
  • the next key calculation unit 103 determines whether or not the current key kcurrent is the maximum value that the key can take (step E3). If the next key calculation unit 103 determines that the next key is the maximum value that the key can take (“Yes” in step E3), the next key calculation unit 103 generates one key from xmin and ymin. Then, the next key calculation unit 103 calculates the generated key as the next key knext (step E4). Then, the process of the next key calculation unit 103 ends. In the example shown in FIG.
  • the maximum value that can be taken by the key is “11111”. If the next key calculation unit 103 determines that the next key is not the maximum value that can be taken by the key (“No” in step E3), the next key calculation unit 103 sets a key ktmp indicating a value obtained by adding 1 to the value indicated by the current key kcurrent. Calculate (step E5). ktmp is a candidate for the next key. The next key calculation unit 103 derives the attribute x subkey xtmp and the attribute y subkey ytmp from ktmp (step E6). For example, if ktmp is “11110”, xtmp is derived as “110” based on the odd bits of the key.
  • ytmp is derived as “11” based on the even bits of the key.
  • the next key calculation unit 103 generates a key amax based on (xmax, ymax).
  • the key amax is a key indicating the maximum value among keys generated based on the attribute x subkey range [xmin, xmax] and the attribute y subkey range [ymin, ymax].
  • the next key calculation unit 103 determines whether (xtmp, ytmp) is included in the query area [xmin, xmax, ymin, ymax] (step E7).
  • step E7 When determining that (xtmp, ytmp) is included in the query area [xmin, xmax, ymin, ymax] (“Yes” in step E7), the next key calculation unit 103 calculates ktmp as the next key knext. (Step E8). On the other hand, if the next key calculation unit 103 determines that (xtmp, ytmp) is not included in the query area [xmin, xmax, ymin, ymax] (“No” in step E7), does ktmp> amax hold? It is determined whether or not (step E9).
  • next key calculation unit 103 determines that ktmp> amax is satisfied (“Yes” in step E9), the process of the next key calculation unit 103 proceeds to step E4. Note that this case corresponds to the case where there is no key indicating a value greater than or equal to the value indicated by ktmp in the next key candidate. On the other hand, if it is determined that ktmp> amax does not hold (“No” in step E9), the next key calculation unit 103 executes a next key search (step E10). A specific example of the next key search will be described later. FIG.
  • FIG. 11 is a flowchart illustrating an example of an outline of the operation of the next key search process in step E10 by the next key calculation unit 103 of the node 100 according to the first embodiment of this invention.
  • FIG. 12 is a diagram illustrating a specific example of an operation in the next key search of the next key calculation unit 103.
  • the operation of the next key search process shown in FIGS. 11 to 16 is an example in which XZ-Order is applied as a space filling curve. An example in which another curve is applied as the space filling curve will be described later.
  • the current key kcurrent 822 is “01001”.
  • ktmp 823 is a value “01010” obtained by adding 1 to kcurrent.
  • the point (000, 11) on the key space identified from the two subkeys is not included in the query area [011, 101, 00, 01].
  • ktmp “01010”
  • ktmp> amax does not hold. Therefore, the next key calculation unit 103 executes a next key search process described below.
  • the feature of the next key search is that the area to be searched (search area) is recursively expanded until the next key is found in the search area.
  • the search area is expressed as [xs-min, xs-max, ys-min, ys-max].
  • the next key calculation unit 103 identifies the initial value of [xs-min, xs-max, ys-min, ys-max] as [xtmp, xtmp, ytmp, ytmp] (step E1001).
  • the search area is [000,000,11,11].
  • the next key calculation unit 103 sets the index i to 1 (step E1002).
  • the index i represents the number of digits from the lower bits of the bit string included in the key, as shown in FIG.
  • the next key calculation unit 103 determines whether the index i is an odd number or an even number (step E1003).
  • the next key calculation unit 103 expands the search area by incrementing the index i from 1 to the number of bits constituting the key.
  • i is an odd number (“odd number” in step E1003)
  • an x area search is performed (step E1004).
  • i is an even number (“even number” in step E1003)
  • a y area search is performed (step E1005). A specific example of the y area search will be described later.
  • the next key calculation unit 103 determines whether there is an area where the next key exists by performing an x area search or a y area search (step E1006). If the next key calculation unit 103 determines that there is an area where the next key exists (“Yes” in step E1006), the next key calculation unit 103 performs next key generation (step E1007). A specific example of the next key generation will be described later. On the other hand, if the next key calculation unit 103 determines that there is no area where the next key exists (“No” in step E1006), i is incremented (step E1008). Then, the process of the next key calculation unit 103 proceeds to step E1003. The initial value of the index i is 1.
  • the next key calculation unit 103 first performs an x area search.
  • the x area search is a process for enlarging the search area in the x-axis direction and determining whether or not the next key is included in the incremental area.
  • the incremental area is an area obtained by removing the search area before expansion from the search area after expansion when the search area is expanded.
  • the y area search is a process for enlarging the search area in the y-axis direction and determining whether or not the next key is included in the incremental area.
  • FIG. 14 is a flowchart showing an example of an outline of the operation of the x area search process in step E1004 by the next key calculation unit 103 of the node 100 according to the first embodiment of this invention.
  • the next key calculation unit 103 sets (i + 1) / 2 bits of xs-min to 0 in the search area [xs-min, xs-max, ys-min, ys-max], and sets xs-max to 0.
  • the (i + 1) / 2 bit is set to 1 (step E1401).
  • the search area is expanded in the x-axis direction, and the size of the search area is double that before the expansion.
  • the (i + 1) / 2 bit of xs-min and xs-max, that is, the first bit is updated.
  • the next key calculation unit 103 updates the search area to [000,001,11,11].
  • the next key calculation unit 103 determines whether or not the value indicated by the key corresponding to the increment area is larger than the value indicated by the key corresponding to the search area before enlargement (step E1402). Specifically, the next key calculation unit 103 determines whether or not the (i + 1) / 2 bit of xtmp is 0. If the (i + 1) / 2 bit of xtmp is 0, the value indicated by the key corresponding to the increment area is larger than the value indicated by the key corresponding to the search area before enlargement.
  • [001,001,11,11] is an incremental area.
  • the key “01011” corresponding to the increment area is larger than the key “01010” corresponding to the search area before enlargement.
  • the fact that the key corresponding to the increment area is larger than the key corresponding to the search area before expansion can be derived from xtmp, that is, the (i + 1) / 2 bit of “000”, that is, the first bit is 0.
  • next key calculation unit 103 determines that the value indicated by the key corresponding to the increment area is larger than the value indicated by the key corresponding to the search area before enlargement (“Yes” in step E1402), the following key processing is performed. Execute. That is, the next key calculation unit 103 calculates the increment area [xs-mid, xs-max, ys-min, ys-max] from the search area [xs-min, xs-max, ys-min, ys-max]. (Step E1403).
  • xs-mid is a value obtained by setting (i + 1) / 2 bits of xs-min to 1. For example, in the example of FIG.
  • the next key calculation unit 103 determines that the value indicated by the key corresponding to the increment area is not greater than the value indicated by the key corresponding to the search area before enlargement (“No” in step E1402), “ “Search is incomplete” is notified. Then, the next key calculation unit 103 ends the x area search process (step E1404).
  • the next key calculation unit 103 determines whether or not the query area [xmin, xmax, ymin, ymax] overlaps with the increment area [xs-mid, xs-max, ys-min, ys-max] (step E1405). ). If the next key calculation unit 103 determines that the query area and the increment area overlap (“Yes” in step E1405), the next key calculation unit 103 notifies the information that the next key is a value existing in the increment area and performs the x area search process. Is terminated (step E1406).
  • step E1405 if the next key calculation unit 103 determines that the query area and the increment area do not overlap (“Yes” in step E1405), the next key calculation unit 103 notifies the information that the search is incomplete and performs the x area search processing. The process ends (step E1404).
  • the query area [011, 101, 00, 01] does not overlap with the increment area [001, 001, 11, 11]. Therefore, the next key calculation unit 103 determines that an area where the next key exists is not found.
  • FIG. 15 is a flowchart illustrating an example of an outline of the operation of the y area search process in step E1005 by the next key calculation unit 103 of the node 100 according to the first embodiment of this invention.
  • the search area is expanded from [000,001,11,11] to [000,001,10,11].
  • the key corresponding to the increment area is smaller than the key corresponding to the search area before enlargement. Therefore, the next key calculation unit 103 determines that an area where the next key exists is not found.
  • next key calculation unit 103 takes out an overlapping area between the increment area and the query area (step E1701).
  • the key generated based on the extracted area is the next key.
  • the next key calculation unit 103 operates as follows.
  • the next key calculation unit 103 determines whether the index i is an even number or an odd number (step E1702).
  • the key “10000” generated based on the value is the next key.
  • the operation of the next key search process shown in FIGS. 11 to 16 is an example in which XZ-Order is applied as a space filling curve. Other curves may be applied as the space filling curve. For example, as a space filling curve, a Hilbert curve, a Gray code, a Peano curve, a Z-mirror, and a U-index as shown in Non-Patent Document 2 may be applied. .
  • the next key calculation unit 103 appropriately changes based on the space filling curve to which the operation of the next key search process in step E10 is applied.
  • the next key calculation unit 103 performs the next key search process in step E10 as described below.
  • the next key calculation unit 103 calculates a Hilbert curve.
  • the next key calculation unit 103 specifies the maximum value of the number of bits of the attribute x subkey and the number of bits of the attribute y subkey as the order of the Hilbert curve.
  • the next key calculation unit 103 specifies the Hilbert curve starting from the minimum value that the key can take.
  • FIG. 17 is a diagram schematically showing the Hilbert curve specified by the next key calculation unit 103. As shown in FIG.
  • each node 100 that has received a query transfers to the node 100 a final key (final key) indicating a boundary of a key to which each node 100 is responsible together with the query. . That is, each node 100 does not need to transmit a key range.
  • the transmitting node must serialize the data of each key included in the key range. Further, when receiving the serialized data, the receiving node must deserialize it.
  • the information processing system 10 in the first embodiment can further reduce the network load. Furthermore, the information processing system 10 according to the first embodiment can reduce the load of processing related to serialization and deserialization in each node 100.
  • the information processing system 20 in the second embodiment includes at least one node 200.
  • FIG. 18 is a block diagram illustrating a configuration of the node 200 according to the second embodiment of this invention. Referring to FIG. 18, the node 200 according to the second embodiment of the present invention includes a receiving unit 101, a path management unit 102, a next key calculation unit 203, a query transfer control unit 104, and a final key calculation unit 105. And a query processing unit 206.
  • the node 200 in the second embodiment receives a query and processes the received query.
  • the next key calculating unit 203 calculates a next key based on the received query and the minimum assignment key of the own node 200. Then, the next key calculation unit 203 determines whether or not the calculated next key is an allocation key of the own node 200. If the calculated next key is an allocation key of the own node 200, the next key calculation unit 203 passes the query to the query processing unit 206.
  • the method by which the next key calculation unit 203 calculates the next key is the same as the method by which the next key calculation unit 103 calculates the next key in the first embodiment.
  • the processing performed by the query processing unit 206 differs depending on the application method of the information processing system 20.
  • the information processing system 20 can be used as a Publish / Subscribe type system.
  • the application registers data conditions (the data conditions correspond to the queries described above) in the system in advance. When an event that matches the data condition occurs, the event is notified to the application that registered the data condition.
  • a data condition registered in the system is called a Subscribe.
  • a user registers data conditions (data conditions) in the information processing system 20 in advance.
  • data matching the data condition is input to the information processing system 20
  • the data is notified to the external system that has registered the data condition.
  • the data condition corresponds to a query. Therefore, the query processing unit 206 includes a functional unit that stores the query on the memory and determines whether the query matches the data when the data is input. After that, when data is input to the query processing unit 206, the query processing unit 206 performs a match determination with the query held in the memory.
  • FIG. 19 is a flowchart showing an example of an outline of operations different from the nodes in the first embodiment among the operations of the node 200 in the second embodiment of the present invention.
  • the node 200 performs the same processing as steps D1 to D4 in FIG.
  • the node 200 performs the process of step F1 shown in FIG. In step F1 in FIG.
  • the next key calculation unit 203 calculates the next key of the minimum allocation key based on the query received by the reception unit 101 and the minimum allocation key of the own node 200 (step F1). . Then, the next key calculation unit 203 determines whether or not the calculated next key is an allocation key of the own node 200 (step F2). When the next key calculation unit 203 determines that the calculated next key is an allocation key of the own node 200 (“Yes” in step F2), the next key calculation unit 203 passes the query to the query processing unit 206. The query processing unit 206 processes the query received from the next key calculation unit 203 (step F3). Then, the processing of the node 200 proceeds to step D8 shown in FIG.
  • the processing of the node 200 proceeds to step D in FIG.
  • the process of the node 200 is the same as that of step D8 thru
  • the information processing system 20 receives the query, and determines whether or not to process the query based on whether or not the next key calculated based on the received query is the allocation key of the own node 200. judge. That is, each node 100 does not need to transmit the key range when processing the query. Therefore, the information processing system 20 in the second embodiment can reduce the network load related to the transmission of the key range.
  • the information processing system 20 according to the second embodiment can reduce the burden of processing related to serialization and deserialization in each node 200.
  • the information processing system 30 in the third embodiment includes at least one node 300.
  • FIG. 20 is a block diagram illustrating a configuration of the node 300 according to the third embodiment of this invention.
  • a node 300 according to the third embodiment of the present invention includes a receiving unit 101, a path management unit 102, a next key calculation unit 103, a query transfer control unit 104, and a final key calculation unit 305. And a minimum assignment key holding unit 307.
  • An example of the minimum assignment key table held by the minimum assignment key holding unit 307 is shown in FIG.
  • the example shown in FIG. 21 is a minimum assignment key table 806 held by the node 300b, a minimum assignment key table 807 held by the node 300j, and a minimum assignment key table 808 held by the node 300m. Referring to FIG.
  • the minimum allocation key holding unit 307 of the node 300b has the minimum allocation keys of these nodes 300 for the node addresses c, d, f, j, respectively, kc-min, kd-min, It is stored that kf-min and kj-min.
  • the route management unit 102 When the route management unit 102 generates information (route table) indicating a route with another node 300, the node 300 performs processing for notifying another node 300 of the node address.
  • the minimum assignment key of the node 300 may be included in the notification message.
  • the minimum allocation key holding unit 307 stores the node address included in the notification message received by the path management unit 102 and the minimum allocation key in association with each other.
  • the minimum allocation key holding unit 307 can store the minimum allocation key table.
  • the final key calculation unit 305 identifies “next” as the node address associated with the key that indicates a value that is greater than the value associated with the key associated with the node address “addr” and that is closest to that value. To do.
  • the distance is the same as the distance described in the first embodiment.
  • the final key calculation unit 305 refers to the minimum assignment key holding unit 307 and determines a key indicating a value obtained by subtracting a predetermined value from the value indicated by the key associated with the node address “next” as the inspection target key. Specify k.
  • the predetermined value may be 1, for example.
  • the final key calculation unit 305 uses “addr” as the transfer destination node address and the inspection target key k as the transfer destination final key, and inserts these pairs into the transfer list.
  • the transfer list is the same as the transfer list in the first embodiment.
  • the final key calculation unit 305 executes the following processing when the reception unit 101 determines that the transfer destination final key is not received together with the query. That is, the final key calculation unit 305 calculates a key indicating a value obtained by subtracting, for example, 1 from the minimum allocation key of the own node 300 as the final key. When the value indicated by the minimum allocation key of the own node 300 is the minimum value that can be taken by the key, the final key calculation unit 305 identifies the key that indicates the maximum value that can be taken by the key as the final key.
  • FIG. 22 is a flowchart showing an example of an outline of operations different from those of the first embodiment among the operations of the node 300 according to the third embodiment of the present invention.
  • description of the same function as the operation of the node 100 in the first embodiment is omitted.
  • FIG. 23 is an explanatory diagram showing a specific example of the operation of the node 300 according to the third embodiment of this invention. The node 300 performs the processes of steps D1 to D10 and D12 to D15 in FIG.
  • the node 300 performs the process of Step G1 shown in FIG.
  • the final key calculation unit 305 refers to the minimum assignment key holding unit 307, and checks the key indicating a value obtained by subtracting 1 from the value indicated by the key associated with the node address “next”.
  • the target key k is identified (step G1).
  • the processing of the node 300 proceeds to step D12 in FIG.
  • the query includes an attribute x and an attribute y.
  • a bit string in which bits are alternately arranged Key is a node address that can identify each node 300. Further, it is assumed that the actual nodes are “11101”, “00110”, “01010”, “01101”, “10001”, and “10111”.
  • the receiving unit 101 of the node “11101” receives a query (step D1).
  • the path management unit 102 of the node “11101” holds keys “00110” and “01101” indicating each existing node as a path table.
  • the maximum allocation key of the node “11101” is “11101”, and the minimum allocation key is “11000”. Since the receiving unit 101 has not received the transfer destination final key together with the query (“No” in step D2), the final key calculating unit 305 receives the key “10111” indicating a value obtained by subtracting 1 from the minimum allocation key of the own node. The last key is specified (step D4). The next key calculation unit 103 identifies the maximum allocation key “11101” of the own node as the inspection target key k (step D5). Then, the next key calculation unit 103 calculates the next key of the inspection target key k (step D6). Then, the next key is calculated as “00101”.
  • the query transfer control unit 104 determines whether or not the value (k1) indicated by the next key to be calculated is between the value (k2) indicated by the maximum allocation key of the own node and the value (k3) indicated by the final key. (Step D7).
  • the query transfer control unit 104 determines that the value (k1) indicated by the next key to be calculated is between the value (k2) indicated by the maximum allocation key of the own node and the value (k3) indicated by the final key. It is determined that it exists (“Yes” in step D7).
  • the query transfer control unit 104 determines that the next key of the inspection target key k has not been received from the next key calculation unit 103 of its own node before (“No” in step D8).
  • the query transfer control unit 104 refers to the path management unit 102 and acquires the node address “addr” corresponding to the next key “00101” (step D9).
  • the path management unit 102 does not store a key indicating a value that does not exceed the value indicated by the next key “00101”. Therefore, the query transfer control unit 104 acquires the key “00110” indicating the minimum value as the node address “addr”.
  • the query transfer control unit 104 passes the acquired node address “00110” to the final key calculation unit 305.
  • the final key calculation unit 305 has a node address “next” of a node to which a key other than “00110” and the smallest distance from the next key is assigned among the nodes stored in the path management unit 102. Is acquired (step D10). In this case, the final key calculation unit 305 acquires “01101” as “next”. The final key calculation unit 305 refers to the minimum assignment key holding unit 307 and uses the key “01010” indicating a value obtained by subtracting 1 from the value indicated by the key associated with the node address “01101” as the inspection target key k. Specify (step G1).
  • the final key calculation unit 305 sets a pair in the transfer list with the node address “addr” as the transfer destination node address that is one of the elements and the check target key k as the transfer destination final key that is the other element. Insert (step D13).
  • the node address “addr” is “00110”.
  • the inspection target key k is “01010”.
  • the processing of the node “11101” proceeds to Step D6.
  • the next key calculation unit 103 calculates the next key of the inspection target key k (step D6). Then, the next key is calculated as “10000”.
  • the query transfer control unit 104 determines whether or not the value (k1) indicated by the next key to be calculated is between the value (k2) indicated by the maximum allocation key of the own node and the value (k3) indicated by the final key. (Step D7).
  • the query transfer control unit 104 determines that the value (k1) indicated by the next key to be calculated is between the value (k2) indicated by the maximum allocation key of the own node and the value (k3) indicated by the final key. It is determined that it exists (“Yes” in step D7).
  • the query transfer control unit 104 determines that the next key of the inspection target key k has not been received from the next key calculation unit 103 of its own node before (“No” in step D8).
  • the query transfer control unit 104 refers to the path management unit 102 and acquires the node address “addr” corresponding to the next key “10000” (step D9).
  • the query transfer control unit 104 acquires the key “01101” indicating the maximum value among the values not exceeding the value indicated by the next key “10000” as the node address “addr”.
  • the query transfer control unit 104 passes the acquired node address “01101” to the final key calculation unit 305.
  • the final key calculation unit 305 has a node address “next” of a node to which a key other than “01101” and the smallest distance from the next key is assigned among the nodes stored in the path management unit 102. Is acquired (step D10). In this case, the final key calculation unit 305 acquires “00110” as “next”. The final key calculation unit 305 refers to the minimum assignment key holding unit 307 and checks the key “11101” indicating a value obtained by subtracting 1 from the value indicated by the key “11110” associated with the node address “00110”. The key k is specified (step G1).
  • the final key calculation unit 305 uses the node address “addr” as the transfer destination node address that is one of the elements, and uses the final key of the own node as the transfer destination final key that is another element, and sets a pair as a transfer list. (Step D14).
  • the node address “addr” is “01101.
  • the final key of the own node is“ 10111 ”.
  • the query transfer control unit 104 For each pair included in the transfer list generated by the final key calculation unit 305, the query transfer control unit 104 generates a message based on the transfer destination final key that is one element of the pair and the corresponding query.
  • the query transfer control unit 104 transmits the generated message to the node specified by the transfer destination node address that is the other element of the pair (step D15).
  • the node “11101” sets the search target of the key from the maximum allocation key to the final key of the own node, and transfers the query to the node identified by the transfer destination node address.
  • the node “00110” specifies the transfer destination final key “01010” included in the message as the final key of the node (step D3).
  • the node “00110” uses the maximum allocation key to the last key of its own node as a key search target, and transfers the query to the node identified by the transfer destination node address.
  • the operation of the node “01101” that has received the message from the node “11101” is the same as described above.
  • the range of keys to be searched by each node to which a message is transferred from the node that first receives the query does not overlap. This is because the transfer destination final key included in each message is a value obtained by subtracting 1 from the node address “next” that is the transfer destination of the next message, and the node that received the message is incremented by 1 from the key value indicated by the own node. This is because the search is performed in the direction of addition.
  • the node transfer system 30 in the third embodiment transfers the transfer destination final key to each node together with the query.
  • the transfer destination final key is a final key indicating a value obtained by subtracting 1 from the value indicated by the minimum allocation key of another node adjacent to the own node to which the query is transferred.
  • Each node uses a key range from the maximum assigned key of its own node to the final key of its own node as a key search target. Therefore, the node transfer system 30 can reduce the possibility that the same query passes through the same node a plurality of times. Further, the node forwarding system 30 can reduce the possibility that the query is notified twice through different routes. This is because the key search target of each node 300 described above does not overlap, so that the query cannot reach each node a plurality of times.
  • the information processing system 40 according to the fourth embodiment includes at least one node 400 as in the information processing system 30 according to the third embodiment.
  • FIG. 24 is a block diagram showing a configuration of the node 400 in the fourth exemplary embodiment of the present invention.
  • a node 400 according to the fourth embodiment of the present invention includes a receiving unit 101, a path management unit 402, a next key calculation unit 103, a query transfer control unit 104, and a final key calculation unit 305. And a minimum assignment key holding unit 307.
  • the node 400 in the fourth embodiment is a specific example in which Chord is applied as a routing protocol for specifying the next transfer destination of a query.
  • Chord is a protocol that specifies a node to which a key (identification key) closest to the destination key is assigned as the next transfer destination.
  • the route management unit 402 stores information indicating a route to another node 400 (for example, in the case of Chord, it corresponds to a finger table).
  • FIG. 25 is an example of information stored in the route management unit 402. This information is also called a finger table 825.
  • start is a key indicating a value obtained by adding a predetermined number (for example, 2i, where i is an integer of 0 or more) to the value indicated by the key associated with the own node 400.
  • “Int.” Is information indicating a key range corresponding to the “start” key. For example, in a node associated with a key whose key value is n, “start” is n + 2i (where i is an integer greater than or equal to 0).
  • FIG. 26 is a block diagram illustrating a configuration of a node 500 included in the information processing system 50 according to the fifth embodiment of this invention.
  • the node 500 includes a receiving unit 501, a path management unit 502, a next key calculation unit 503, a query transfer control unit 504, and a final key calculation unit 505.
  • the receiving unit 501 receives a query that specifies a range of a certain value. Then, the reception unit 501 passes the received query to the next key calculation unit 503 described later.
  • the route management unit 502 stores a key indicating a certain value.
  • the next key calculation unit 503 calculates the next key from the keys indicating any value included in the range specified by the query received from the reception unit 501.
  • the next key is a key indicating a value closest to the value indicated by a predetermined key indicating a value corresponding to the node 500.
  • the query transfer control unit 504 specifies the magnitude relationship between the value indicated by the next key calculated by the next key calculation unit 503 and the value indicated by each key stored in the path management unit 502.
  • the query transfer control unit 504 specifies one key from the keys stored in the route management unit 502 based on the specified magnitude relationship. Then, the query transfer control unit 504 specifies a transfer destination node identifier that is an identifier of the device identified based on the value indicated by the specified one key. Further, the query transfer control unit 504 identifies a transfer destination final key calculated by a final key calculation unit 505 (to be described later) and a query received by the reception unit 501 by a transfer destination node identifier specified by the query transfer control unit 504. Forward to.
  • the final key calculation unit 505 stores the transfer destination final key in each key stored in the path management unit 502.
  • Calculate from The transfer destination final key is a key indicating the boundary of the range of the next key that can be calculated by the device identified by the transfer destination node identifier.
  • the reception unit 501, the path management unit 502, the next key calculation unit 503, the query transfer control unit 504, and the final key calculation unit 505 are realized by a CPU that operates according to a program (information processing program), for example.
  • the reception unit 501, the path management unit 502, the next key calculation unit 503, the query transfer control unit 504, and the final key calculation unit 505 may be realized by the same CPU.
  • the program is stored in, for example, a program storage device 521 (see FIG. 27) included in the node 500.
  • the CPU 522 may read the program and operate as the reception unit 501, the path management unit 502, the next key calculation unit 503, the query transfer control unit 504, and the final key calculation unit 505 according to the program.
  • a recording medium (or storage medium) in which the above-described program code is recorded may be supplied to the node 500, and the node 500 may read and execute the program code stored in the recording medium. That is, the present invention also includes a recording medium 524 that temporarily or non-temporarily stores software (information processing program) to be executed by the node 500 according to the fifth embodiment.
  • the path management unit 502 may be realized by a storage device such as the hard disk 523, for example. Since the information processing system 50 according to the fifth embodiment includes the node 500 including the above-described configuration, even if a large amount of queries are transferred, the network load, the serialization processing load, and the deserialization processing load can be reduced.
  • the present invention has been described above with reference to each embodiment and example. However, the present invention is not limited to the above embodiment and example. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention. In each embodiment of the present invention, the node 100, the node 200, the node 300, the node 400, and the node 500 are provided in an information processing apparatus or a part thereof.
  • one node may be composed of one information processing apparatus.
  • resources such as a memory, a CPU, and a hard disk included in the information processing apparatus may be allocated to one node. That is, a plurality of nodes may be configured from one information processing apparatus.
  • the information processing system of the present invention can be applied to a Publish / Subscribe type system that distributes a large amount of data (events) generated from devices such as RFID (Radio Frequency IDentification) and sensors to applications that require it. .
  • Information processing system 100, 200, 300, 400, 500 Node 101 Reception unit 102 Path management unit 103 Next key calculation unit 104 Query transfer control unit 105 Final key calculation unit 206 Query processing unit 307 Minimum Allocation key holding unit 121, 521 Program storage device 122, 522 CPU 123, 523 Hard disk 124, 524 Recording medium 801 Key space 802 Key range 803 Key 804 Attribute space 805 Query area 806, 807, 808 Minimum allocation key table 819 Message 820 Query 821 Transfer destination final key 822 kcurrent 823 ktmp 824 amax 825 finger table

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Fuzzy Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本発明は、大量のクエリが転送されても、ネットワーク負荷、シリアライズ処理の負荷およびデシリアライズ処理の負荷を低減できる。 情報処理装置は、ある値の範囲を特定するクエリを受け取り、ある値を示すキーを記憶し、所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出し、算出した次キーが示す値と記憶している各キーがそれぞれ示す値との大小関係に基づいて、その各キーから一のキーを特定し、特定した一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定し、特定した転送先ノード識別子に対応する前述の一のキーが示す値に基づいて、転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを記憶している各キーの中から算出し、クエリと転送先最終キーとを転送先ノード識別子で識別される装置へ転送する。

Description

情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
 本発明は、構造化P2P(Peer−to−Peer)におけるクエリの転送方法に関する。
 構造化P2P(Peer−to−Peer)では、システムを構成するノードは、外部システムから入力されるクエリを分担して処理する。ノードは、CPU(Central Processing Unit)やメモリから構成される装置のメモリ上に配備されるプログラムである。該プログラムをCPUが読み込んで実行することで、このCPUを備えるコンピュータは、データやクエリを転送したり、メモリ上に保持したりするノードとして機能する。クエリからハッシュ関数などによって生成される値(キー)によって、該クエリが到達するべきノードが決定される。構造化P2Pではキーがとりうる値の空間であるキー空間が定義され、各ノードにキー空間の一部が範囲(キー範囲)としてそれぞれ割り当てられる。ノードに割り当てられるキーは、該ノードの割当キーと呼ばれ、割り当てられるキーの範囲は割当キー範囲と呼ばれる。割当キー範囲のうち、最小の値を示すキーは最小割当キーと呼ばれ、割当キー範囲のうち、最大の値を示すキーは最大割当キーと呼ばれる。
 外部システムから入力されたクエリは、0以上のノードを経由して、該クエリから生成したキーが割り当てられたノードに送信される。クエリから複数のキーが生成される可能性があり、その場合、各キーが割り当てられたノードの全てに該クエリが送信される。経由されるノードの特定は、ルーティングプロトコルに依存する。あるキーが割り当てられたノードにクエリが送信されるとき、該キーは、該ノードの宛先キーと呼ばれる。
 外部システムからデータが入力されると、ノードは、該データからキーを生成し、生成したキーが割り当てられたノードへ、データを転送する。よって、同じキーが生成されるデータとクエリとが、そのキーが割り当てられた同一のノードに送信される。各ノードがデータとクエリとの完全一致を判定する場合には、データを入力としてハッシュ関数により得られる値をキーとし、クエリで指定されるデータを入力としてハッシュ関数により得られる値をキーとする構成であればよい。これにより、完全一致するデータとクエリとが同一のノードに到達することとなる。
 外部システムから入力されるクエリを、そのクエリを処理すべきノードにルーティングする方法が開示されている(例えば非特許文献1参照)。
 非特許文献1に記載された技術は、例えば以下のように動作する。P2Pシステムの各ノードは、多次元の属性のそれぞれの値を示す属性値を、空間充填曲線を使って1次元のデータを示すキーにマッピングする。そしてクエリが入力されると、各ノードは、該クエリからある値を示すキーの集合であるキー範囲を生成する。次に、ノードは、該クエリが各キー範囲の最小キーが割り当てられたノードに送信されるように、該クエリの転送先のノードを決定する。そして該ノードは、その転送先のノードに該クエリを送信する。クエリは、0以上のノードを経由して、該キーが割り当てられたノードに送信される。クエリの転送先のノードは、クエリを受信し、受信したクエリを処理する。その処理の際、該ノードに割り当てられたキー範囲の最大値よりもクエリのキー範囲の最大値の方が大きい場合、該ノードはサクセッサ(successor)に受信したクエリを転送する。ノードのサクセッサとは、該ノードの割当キーが示すそれぞれの値の最大値に1を加えた値を示すキーが割り当てられたノードである。ノードがそのサクセッサにクエリを転送する処理は、クエリから生成されたキー範囲の最大値が該ノードに割り当てられたキー範囲の最大値よりも小さくなるまで繰り返される。
Prasanna Ganesan et al.,"One torus to rule them all:Multi−dimensional queries in p2p systems,"In WebDB ’04:Proceedings of the 7thInternational Workshop on the Web and Databases,pages 19−24,New York,NY,USA,2004.ACM Press. Christian Bohm et al.,"XZ−Ordering:A Space−Filling Curvefor Objects with Spatial Extension,"Proceedings of the 6th InternationalSymposium on Advances in Spatial Databases,pages 75−90,July 20−23,1999. Ion Stoica et al.,"Chord:A Scalable Peer−to−peer Lookup Service for Internet Applications,"In Proceedings of the 2001 Conference onApplications,Technologies,Architectures,and Protocols For Computer Communications.SIGCOMM ’01.ACM,New York,NY,149−160.
 非特許文献1に記載された技術は、クエリからキー範囲を生成し、そのキー範囲をクエリとともに各ノードに転送する。各ノードは、キー範囲を転送する際にそのキー範囲のシリアライズを行い、キー範囲を受信する際にそのキー範囲のデシリアライズを行う。したがって、非特許文献1に記載された技術は、大量のクエリが転送されるときにネットワーク負荷、シリアライズ処理の負荷およびデシリアライズ処理の負荷が大きい。
 本発明の目的の一例は、大量のクエリが転送されても、ネットワーク負荷、シリアライズ処理の負荷およびデシリアライズ処理の負荷を低減できる情報処理装置、情報処理方法および情報処理プログラムを提供することである。
 本発明の一態様における第一の情報処理装置は、ある値の範囲を特定するクエリを受け取る受信部と、ある値を示すキーを記憶する経路管理部と、所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する次キー算出部と、前記次キーが示す値と前記経路管理部が記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定するクエリ転送制御部と、前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記経路管理部が記憶する各キーの中から算出する最終キー算出部と、を備え、前記クエリ転送制御部は、前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される装置へ転送する。
 本発明の一態様における第一の情報処理システムは、少なくとも一つの情報処理装置を備え、当該情報処理装置は、ある値の範囲を特定するクエリを受け取る受信部と、ある値を示すキーを記憶する経路管理部と、所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する次キー算出部と、前記次キーが示す値と前記経路管理部が記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される情報処理装置の識別子である転送先ノード識別子を特定するクエリ転送制御部と、前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される情報処理装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記経路管理部が記憶する各キーの中から算出する最終キー算出部と、を含み、前記クエリ転送制御部は、前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される情報処理装置へ転送する。
 本発明の一態様における第一の情報処理方法は、ある値の範囲を特定するクエリを受け取り、ある値を示すキーを記憶し、所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出し、前記次キーが示す値と前記記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定し、前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記記憶する各キーの中から算出し、前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される装置へ転送する。
 本発明の一態様における第一の情報処理プログラムは、コンピュータに、ある値の範囲を特定するクエリを受け取る処理と、ある値を示すキーを記憶する処理と、所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する処理と、前記次キーが示す値と前記記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定する処理と、前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記記憶する各キーの中から算出する処理と、前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される装置へ転送する処理とを実行させる。
 本発明の一態様における第一の記録媒体は、コンピュータに、ある値の範囲を特定するクエリを受け取る処理と、ある値を示すキーを記憶する処理と、所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する処理と、前記次キーが示す値と前記記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定する処理と、前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記記憶する各キーの中から算出する処理と、前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される装置へ転送する処理とを実行させる情報処理プログラムを記録する。
 本発明の効果の一例は、大量のクエリが転送されても、ネットワーク負荷、シリアライズ処理の負荷およびデシリアライズ処理の負荷を低減できることである。
図1は、本発明の第一の実施の形態における情報処理システムの構成を示すブロック図である。 図2は、二次元の属性を示す例である。 図3は、情報処理システムが、空間充填曲線を使って、多次元の属性を1次元の情報を示すキーにマッピングする手順の一例を示す図である。 図4は、本発明の第一の実施の形態におけるノードの構成を示すブロック図である。 図5は、経路管理部が、各ノードの最大割当キーを記憶する構成の一例を示す図である。 図6は、次キーの算出例を示す図である。 図7は、ノードが備えるプログラム記憶装置を示すブロック図である。 図8は、本発明の第一の実施の形態におけるノードの動作の概要の一例を示すフローチャートである。 図9は、クエリ転送制御部が生成するメッセージの例を示す図である。 図10は、本発明の第一の実施の形態におけるノードの次キー算出部の動作の概要の一例を示すフローチャートである。 図11は、本発明の第一の実施の形態におけるノードの次キー算出部による次キー探索の処理の動作の概要の一例を示すフローチャートである。 図12は、次キー算出部の次キー探索における動作の具体例を示す図である。 図13は、インデックスiの具体例を示す図である。 図14は、本発明の第一の実施の形態におけるノードの次キー算出部によるxエリア探索の処理の動作の概要の一例を示すフローチャートである。 図15は、本発明の第一の実施の形態におけるノードの次キー算出部によるyエリア探索の処理の動作の概要の一例を示すフローチャートである。 図16は、本発明の第一の実施の形態におけるノードの次キー算出部による次キー生成の処理の動作の概要の一例を示すフローチャートである。 図17は、次キー算出部が特定したヒルベルト曲線を模式的に示した図である。 図18は、本発明の第二の実施の形態におけるノードの構成を示すブロック図である。 図19は、本発明の第二の実施の形態におけるノードの動作のうち第一の実施の形態におけるノードと異なる動作の概要の一例を示すフローチャートである。 図20は、本発明の第三の実施の形態におけるノードの構成を示すブロック図である。 図21は、最小割当キー保持部が保持する最小割当キー表の例を示す図である。 図22は、本発明の第三の実施の形態におけるノードの動作のうち第一の実施の形態におけるノードと異なる動作の概要の一例を示すフローチャートである。 図23は、本発明の第三の実施の形態におけるノードの動作の具体例を示す説明図である。 図24は、本発明の第四の実施の形態におけるノードの構成を示すブロック図である。 図25は、経路管理部が記憶する情報の一例である。 図26は、本発明の第五の実施の形態における情報処理システムが備えるノードの構成を示すブロック図である。 図27は、ノードが備えるプログラム記憶装置を示すブロック図である。
 本発明を実施するための形態について図面を参照して詳細に説明する。なお、各図面および明細書記載の各実施の形態において、同様の機能を備える構成要素には同様の符号が与えられている。
 [第一の実施の形態]
 図1は、本発明の第一の実施の形態における情報処理システム10の構成を示すブロック図である。
 図1を参照すると、本発明の第一の実施の形態における情報処理システム10は、複数のノード100aないしノード100rを備える。ここで、ノード100aないしノード100rは、以下代表してノード100とも記載される。各ノード100は、少なくとも一つの他のノード100と通信可能に接続されている。
 第一の実施の形態における情報処理システム10において、クエリを受信した各ノード100は、クエリと共に各ノード100が検索の責任を負うべきキーの境界を示す最終のキー(最終キー)をノードに転送する。つまり各ノード100は、キー範囲を送信する必要がない。ここで検索とは、クエリに対応するキーを検索することを意味する。
 各ノード100が、キー範囲を転送する場合には、送信側のノードがキー範囲に含まれる各キーのデータをシリアライズしなければならない。また、受信側のノードは、シリアライズされたデータを受信した場合に、それをデシリアライズしなければならない。よって、第一の実施の形態における情報処理システム10は、ネットワーク負荷をさらに軽減できる。さらに第一の実施の形態における情報処理システム10は、各ノード100におけるシリアライズ、デシリアライズにかかる処理の負担を軽減させることができる。以下、第一の実施の形態における情報処理システム10について詳細に説明する。
 情報処理システム10は、空間充填曲線を使って多次元の属性を、ある値を示すキーにマッピングする。図2は、二次元の属性を示す例である。二次元の属性のそれぞれの属性値の組み合わせが、あるキー803にマッピングされる。例えば、図2において、二次元の属性からなる空間である属性空間804の少なくとも一部を示すクエリエリア805に含まれるある属性値の組み合わせ(xa,ya)が、あるキー803にマッピングされている。
 図1において、情報処理システム10は、ノード100aからノード100rまでを備える。そして、それぞれのノード100に対して一次元のキー空間801の一部のキー範囲802が割り当てられている。
 本明細書において、データは、複数の属性を含んでもよい。例えば、データは、位置情報として「緯度」属性と「経度」属性とを含んでもよい。属性は、属性の種別を識別する情報である属性名と、属性名に対する値(属性値)を含む。例えば、「緯度」属性は、属性名「緯度」と、属性値「北緯35度40分」とをそれぞれ含んでもよい。
 本明細書において、クエリは、属性値の範囲を指定する情報であってもよい。例えば、クエリは、北緯35度30分から北緯35度50分まで、東経139度40分から東経139度50分までといったように各属性値の範囲を指定する情報であってもよい。「北緯35度40分、東経139度46分」というデータは、前述のクエリで指定される範囲に含まれる。よって該データは、前述のクエリ「北緯35度30分から北緯35度50分まで、東経139度40分から東経139度50分まで」に合致する。
 次に、情報処理システム10が、空間充填曲線を使って、多次元の属性を一次元の情報を示すキーにマッピングする手順について説明する。
 図3は、情報処理システム10が、空間充填曲線を使って、多次元の属性を一次元の情報を示すキーにマッピングする手順の一例を示す図である。
 本例は、属性xと属性yとを含む二次元の属性が一次元の情報を示すキーにマッピングされる例である。まず、属性xの属性値範囲と属性yの属性値範囲とから、属性xサブキー範囲[011,101]と属性yサブキー範囲[00,01]が生成される。ここで、サブキーとは、キーを生成するために使用される値である。図3の例では、属性xのサブキーは、3ビットである。また属性yのサブキーは、2ビットである。本例において、属性xサブキー範囲に含まれるサブキー集合{011,100,101}と属性yサブキー範囲に含まれるサブキー集合{00,01}の全組み合わせについて、各ビットを交互に並べたビット列がキーである。例えば、「011」と「00」の各ビットが交互に並べられると、「00101」が生成される。以上の処理により、属性xの属性値範囲と属性yの属性値範囲から、2×3個(=6個)のキーが生成される。本明細書では、サブキーの組み合わせである、「011」と「00」と、からキーを生成することを、「(011,00)からキーを生成する」と表記する。上記のキー生成方法は例示であって、キー生成方法は、サブキー集合に含まれるビットの組み合わせに基づいてキーが生成される方法であればよい。
 図4は、本発明の第一の実施の形態におけるノード100の構成を示すブロック図である。
 図4を参照すると、本発明の第一の実施の形態におけるノード100は、受信部101と、経路管理部102と、次キー算出部103と、クエリ転送制御部104と、最終キー算出部105とを備える。
 ===受信部101===
 受信部101は、図示しない外部システムまたは他のノード100から少なくともクエリを含む情報を受け取る。受信部101は、受け取ったクエリを後述の次キー算出部103に渡す。
 受信部101は、クエリと共に転送先最終キーを受け取ったか否かを判定する。転送先最終キーとは、そのクエリを受け取ったノード100が検索の責任を負うべきキーの境界を示す最終のキー(最終キー)である。
 ===経路管理部102===
 経路管理部102は、あるキーと、そのキーが割り当てられたノード100に到達するための次の転送先であるノード100を識別できる識別子とを対応付けて記憶する。そして経路管理部102は、一つのキー(宛先キー)を受け取ると、その宛先キーが示す値と記憶している各キーが示す値とを比較し、それらの値の大小関係に応じて一つの識別子を特定し、それを返す。
 ノード100に割り当てられるキーは、該ノードの割当キーと呼ばれ、割り当てられるキーの範囲は割当キー範囲と呼ばれる。割当キー範囲のうち、最小の値を示すキーは最小割当キーと呼ばれ、割当キー範囲のうち、最大の値を示すキーは最大割当キーと呼ばれる。ノード100は割当キー範囲を示す情報を記憶してもよい。ノード100が記憶する割当キー範囲を示す情報とは、最小割当キーおよび最大割当キーでもよいし、割当キー範囲に含まれるすべてのキーであってもよい。
 キーはいずれかのノード100を識別できる情報であってもよい。また、キーは、ノード100を識別できる識別子、またはノードアドレスであってもよい。キーは、あるノードを識別できる識別子またはノードアドレスに一意に対応する情報であってもよい。
 具体的には、経路管理部102は、ノード100を識別できる識別子としてノードアドレスと、そのノード100の最大割当キーと、を対応付けて記憶してもよい。
 キーが各ノード100の識別子である場合、経路管理部102は各ノード100のノードアドレスとして、そのノード100の最大割当キーを記憶してもよい。つまりこの場合、経路管理部102は、図5に示されるように、各ノード100の最大割当キーを記憶してもよい。そしてこの最大割当キーが各ノード100を識別できる識別子となっている。経路管理部102は、記憶している最大割当キーに基づいて、対応するノードのノードアドレスを算出してもよい。
 経路管理部102は、ある宛先キーを受け取る。そして経路管理部102は、例えば、その宛先キーが示す値より大きくその値に最も近い値を示すキーを、自身が記憶しているキーの中から特定してもよい。この場合、経路管理部102は、宛先キーが示す値より大きい値を示すキーを記憶していない場合、最小値を示すキーを特定してもよい。そして経路管理部102は、特定したキーに対応付けられているノード100の識別子を特定する。
 また、経路管理部102は、例えば、その宛先キーが示す値を超えない最大値を示すキーを、自身が記憶しているキーの中から特定してもよい。この場合、経路管理部102は、宛先キーが示す値を超えない値を示すキーを記憶していない場合、最小値を示すキーを特定してもよい。
 経路管理部102は、ノード100の識別子に基づいてそのノード100のノードアドレスを特定してもよい。また、ノード100の識別子は、そのノード100のノードアドレスであってもよい。第一の実施の形態では、ノード100を識別できる識別子は、そのノード100のノードアドレスであると仮定する。
 各ノード100は、この経路を示す情報を生成するために、少なくとも自ノード100のノードアドレスと自ノード100の最大割当キーとを他のノード100に通知する。各ノード100の経路管理部102は、通知される情報を元に他ノード100との経路を示す情報(経路表)を生成し、その情報を記憶する。この経路表とは、具体的には前述の、あるキーと、そのキーが割り当てられたノード100に到達するための次の転送先であるノード100を識別できる識別子とを対応付けた情報である。
 ===次キー算出部103===
 次キー算出部103は、受信部101がクエリを受け取ると、自ノード100の最大割当キーとそのクエリとに基づき次キーを算出する。
 あるキーkの次キーとは、以下のように特定される。キーkの次キーは、クエリに含まれる各属性の属性値範囲に含まれるそれぞれの属性値の組み合わせに基づいて特定される所定の値を示す各キーの中で、キーkが示す値よりも大きく、かつ、その値に最も近い値を示すキーである。ただし、キーkが示す値が、前述の所定の値のいずれよりも大きい場合、キーkの次キーは、前述の所定の値の中で最小値を示すキーである。
 図6は、次キー算出部103による次キーの算出例を示す図である。図6は、5ビットのキーにおける例である。クエリで指定された緯度の範囲と経度の範囲とから生成されたキーは、「00101」と「00111」と[10000,10011]との6つのキーであると仮定する。図6において、次キー算出部103は、あるキー(現在キーkcurrent)の次のキー(次キーknext)を算出すると仮定する。例えば、kcurrentが「11101」である場合、kcurrentの次キーknextは、時計回りで次のキーである「00101」と特定される。また同様に、kcurrentが「00101」である場合、knextは、「00111」と特定される。同様に、kcurrentが「10001」である場合、knextは、「10010」と特定される。
 本実施の形態において、キーが取り得る値の最大値を示すキー(図6では「11111」)の値に1加算した値を示すキーは、キーが取り得る値の最小値を示すキー(図6では「00000」)である。また、キーが取り得る値の最小値を示すキー(図6では「00000」)の値に1減算した値を示すキーは、キーが取り得る値の最大値を示すキー(図6では「11111」)である。また本実施の形態において、キーを示す値が0より小さい値、または全ノード数を超える値、すなわちキーが取り得る値の最大値を超える値となった場合には、それらの値は、ノード数を法としたそれらの値に合同な値に置き換えられてもよい。
 また、次キー算出部103は、後述のクエリ転送制御部104から検査対象キーkを受け取ると、その検査対象キーkを元に次キーを、クエリに含まれる各属性の属性値範囲から生成される各キーの中から算出する。そして次キー算出部103は、算出した次キーをクエリ転送制御部104に渡す。
 ===クエリ転送制御部104===
 クエリ転送制御部104は、次キー算出部103が算出した次キーを受け取る。そしてクエリ転送制御部104は、受け取った次キーが自ノード100の最大割当キーから最終キーまでのいずれかのキーであるか否か判定する。ここで、自ノード100の最終キーは、受信部101がクエリを受け取った際に、後述の最終キー算出部105が特定する。
 クエリ転送制御部104は、次キーが自ノード100の最大割当キーから最終キーまでのいずれかのキーであると判定した場合に、以下の処理を行う。
 まず、クエリ転送制御部104は、経路管理部102を参照し、次キーに対応するノードアドレス“addr”を取得する。そしてクエリ転送制御部104は、ノードアドレス“addr”を後述の最終キー算出部105に渡す。
 クエリ転送制御部104は、次キー算出部103に、最終キー算出部105が算出した最終キーである検査対象キーkを渡す。次キー算出部103は、検査対象キーkを受け取ると、その検査対象キーkを元に次キーを再び算出し、その次キーをクエリ転送制御部104に渡す。
 一方、特定された次キーが自ノード100の最大割当キーから最終キーまでのいずれかのキーでなければ、クエリ転送制御部104は、以下の処理を行う。すなわちクエリ転送制御部104は、最終キー算出部105が生成した転送リストの各対について、対の一方である転送先最終キーと、クエリとを含むメッセージを生成する。そしてクエリ転送制御部104は、生成したメッセージを対のもう一方である転送先ノードアドレスで特定されるノードに送信する。転送リストについての説明は、後述される。
 ===最終キー算出部105===
 最終キー算出部105は、受信部101がクエリとともに転送先最終キーを受け取っていないと判定した場合に、以下の処理を実行する。すなわち最終キー算出部105は、自ノード100の最小割当キーから1を減じた値を示すキーを最終キーと算出する。自ノード100の最小割当キーが示す値が、キーの取り得る値の最小値であった場合、最終キー算出部105は、キーが取り得る値の最大値を示すキーを最終キーと特定する。
 また、最終キー算出部105は、受信部101がクエリと共に転送先最終キーを受け取っていると判定した場合に、その受け取った転送先最終キーを自ノード100の最終キーと特定する。
 最終キー算出部105は、クエリ転送制御部104からノードアドレス“addr”を受け取った場合に以下の処理を実行する。すなわち、最終キー算出部105は、経路管理部102を参照し、経路管理部102に記憶されるノードアドレスから、“addr”以外で、次キーからの距離が最も小さいキーが割り当てられているノードアドレス“next”を特定する。すなわち最終キー算出部105は、ノードアドレス“addr”に対応付けられているキーが示す値より大きくその値に最も値が近い値を示すキーに対応付けられているノードアドレスを“next”と特定する。距離についての説明は、後述される。
 次に、最終キー算出部105は、経路管理部102を参照し、ノードアドレス“next”に対応付けられているキーを検査対象キーkと特定する。
 最終キー算出部105は、“addr”を転送先ノードアドレス、検査対象キーkを転送先最終キーとし、それらの対を転送リストに挿入する。転送リストとは、クエリの転送先のノードアドレスを示す転送先ノードアドレスと、該クエリと共に送信する最終キーである転送先最終キーと、の対を要素に含むリストである。
 受信部101と、経路管理部102と、次キー算出部103と、クエリ転送制御部104と、最終キー算出部105とは、例えば、プログラム(情報処理プログラム)によって動作するCPUによって実現される。受信部101と、経路管理部102と、次キー算出部103と、クエリ転送制御部104と、最終キー算出部105とが、同一のCPUによって実現されてもよい。この場合、プログラムは、例えば、ノード100が備えるプログラム記憶装置121(図7参照)に記憶される。CPU122は、そのプログラムを読み込み、そのプログラムにしたがって、受信部101と、経路管理部102と、次キー算出部103と、クエリ転送制御部104と、最終キー算出部105として動作すればよい。
 また、前述のプログラムのコードを記録した記録媒体(または記憶媒体)が、ノード100に供給され、ノード100が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。すなわち、本発明は、第一の実施の形態におけるノード100が実行するためのソフトウェア(情報処理プログラム)を一時的に記憶するまたは非一時的に記憶する記録媒体124も含む。
 経路管理部102は、例えば、ハードディスク123のような記憶装置によって実現されてもよい。
 次に、本発明の第一の実施の形態におけるノード100の動作の一例について説明する。図8は、本発明の第一の実施の形態におけるノード100の動作の概要の一例を示すフローチャートである。
 受信部101は、図示しない外部システム、または他のノード100から少なくともクエリを含む情報を受け取る(ステップD1)。そして受信部101は、受け取った情報に転送先最終キーが含まれているか否か判定する(ステップD2)。受信部101が、受け取った情報に転送先最終キーが含まれていると判定した場合に(ステップD2の“Yes”)、以下の処理を実行する。すなわち最終キー算出部105は、受け取った転送先最終キーを自ノード100の最終キーとして特定する(ステップD3)。そしてノード100の処理はステップD5へ移行する。一方、受信部101が、受け取った情報に転送先最終キーが含まれていないと判定した場合(ステップD2の“No”)に、最終キー算出部105は、以下の処理を実行する。すなわち最終キー算出部105は、自ノードの最小割当キーから1を減じた値を示すキーを自ノード100の最終キーと算出する(ステップD4)。そして、ノード100の処理は、ステップD5へ移行する。
 次キー算出部103は、自ノード100の最大割当キーを検査対象キーkと特定する(ステップD5)。そして、次キー算出部103は、検査対象キーkの次キーを、受信部101が受け取ったクエリに基づいて算出する(ステップD6)。
 そしてクエリ転送制御部104は、次キー算出部103が算出する次キーが示す値(k1)が、自ノード100の最大割当キーが示す値(k2)と最終キーが示す値(k3)との間にあるか否か判定する(ステップD7)。
 「k1がk2とk3との間にある」とは、値k2に対して1ずつ加算した際の結果が、値k3に達する前に値k1となる場合があることをいう。ここで、k2に対して1ずつ加算した際の結果が、キーが取り得る値の最大値MAXに達した場合、MAXに対して1を加算した結果の値はキーがとりうる値の最小値MINであるとみなされる。
 ステップD7において、最終キーは、ステップD1においてクエリとともに受け取った最終キー、または、ステップD4において最終キー算出部105が算出した最終キーのいずれかである。
 クエリ転送制御部104は、次キーが示す値が自ノード100の最大割当キーが示す値と最終キーが示す値との間にあると判定した場合(ステップD7の“Yes”)、以下の処理を実行する。すなわちクエリ転送制御部104は、検査対象キーkの次キーを以前にすでに次キー算出部103から受け取っているか否か判定する(ステップD8)。この場合、クエリ転送制御部104は、次キー算出部103から次キーを受け取るたびに、その次キーを記憶しておいてもよい。
 クエリ転送制御部104は、検査対象キーkの次キーをすでに次キー算出部103から受け取っていると判定した場合に(ステップD8の“Yes”)、クエリ転送制御部104の処理は、後述されるステップD15に移行する。
 一方、クエリ転送制御部104は、検査対象キーkの次キーをまだ次キー算出部103から受け取っていないと判定した場合(ステップD8の“No”)、以下の処理を実行する。すなわちクエリ転送制御部104は、経路管理部102を参照し、次キーに対応するノードアドレス“addr”を取得する(ステップD9)。クエリ転送制御部104は、取得したノードアドレス“addr”を最終キー算出部105に渡す。
 最終キー算出部105は、経路管理部102に記憶されているノードの中から、“addr”以外で、かつ、次キーとの距離が最も小さいキーが割り当てられているノードのノードアドレス“next”を取得する(ステップD10)。
 ここで、距離とは、ルーティングプロトコルに応じて特定される。例えばルーティングプロトコルとしてChordが適用された場合、距離とは、ノード間の『時計回り距離』となる。キーk1からキーk2までの時計回り距離は、k1<k2が成り立つ場合、k2−k1となる。図6は、時計回り距離を算出する具体例を示す図である。図6は、5ビットのキーにおける例を示す図である。例えば、キー「00101」(10進数で5)からキー「00111」(10進数で7)までの距離は、7−5=2となる。k1<k2が成り立たない場合、距離は、数式MAX−k1+k2+1で算出される。MAXは、キーが取り得る値の最大値を示す。図6の例では、MAXの値は、「11111」(10進数で31)である。例えば、図6に示されるkcurrent(10進数で29)からknext(10進数で5)までの距離は、31−29+5+1=8である。
 前述のノードアドレス“next”の取得方法が、以下では説明される。例えば、ノード100a、100bおよび100cの割当キー範囲がそれぞれ[0,10]、[20,30]、[40,50]であると仮定する。ノード100aに割り当てられているキーからノード100bに割り当てられているキーへの距離は、20−10=10と算出される。また、ノード100aに割り当てられているキーからノード100cに割り当てられているキーへの距離は、40−10=30と算出される。よって、ノード100b、100cのうち、ノード100aに割り当てられているキーからの距離が最も小さいキーが割り当てられているノードは、100bである。各ノードの割当キーは、連続した値を示すキーであり、かつ、排他的である。よって、クエリ転送制御部104または経路管理部102は、ノード100の割当キーのいずれか一つをノード100毎に記憶していれば、それらのノード100の位置関係を算出することができる。
 最終キー算出部105は、経路管理部102においてノードアドレス“next”に対応付けられて記憶されているキーを新たな検査対象キーkと特定する(ステップD11)。
 最終キー算出部105は、新たな検査対象キーkが示す値(k4)が、次キー算出部103が算出する次キーが示す値(k1)と最終キーが示す値(k3)との間にあるか否か判定する(ステップD12)。
 最終キー算出部105は、新たな検査対象キーkが示す値が、次キー算出部103が算出する次キーが示す値と最終キーが示す値との間にあると判定した場合(ステップD12の“Yes”)、以下の処理を実行する。すなわち最終キー算出部105は、ノードアドレス“addr”を要素の一つである転送先ノードアドレスとし、検査対象キーkを要素のもう一つである転送先最終キーとした、対を転送リストに挿入する(ステップD13)。そしてノード100の処理は、ステップD6へと移行する。
 一方、最終キー算出部105は、新たな検査対象キーkが示す値が、次キー算出部103が算出する次キーが示す値と最終キーが示す値との間にないと判定した場合(ステップD12の“No”)、以下の処理を実行する。すなわち、最終キー算出部105は、ノードアドレス“addr”を要素の一つである転送先ノードアドレスとし、自ノード100の最終キーを要素のもう一つである転送先最終キーとした、対を転送リストに挿入する(ステップD14)。そしてノード100の処理は、ステップD15へと移行する。
 ステップD7の処理において、次キーが示す値が自ノードの最小割当キーが示す値と最終キーが示す値との間にないと判定した場合(ステップD7の“No”)、クエリ転送制御部104は、次の処理を実行する。すなわちクエリ転送制御部104は、最終キー算出部105が生成した転送リストに含まれる各対について、対の一方の要素である転送先最終キーと、対応するクエリとに基づいて図9に示される構造のメッセージを生成する。図9は、クエリ820と転送先最終キー821とを含むメッセージ819の例を示す図である。そしてクエリ転送制御部104は、生成したメッセージを対のもう一方の要素である転送先ノードアドレスで特定されるノード100へ送信する(ステップD15)。
 図10は、本発明の第一の実施の形態におけるノード100の次キー算出部103の動作の概要の一例を示すフローチャートである。
 次キー算出部103は、クエリと、ある一つのキーである現在キーkcurrentとを受け取る(ステップE1)。そして次キー算出部103は、クエリを構成する属性xの属性値範囲、属性yの属性値範囲からそれぞれ、属性xサブキー範囲[xmin,xmax]と属性yサブキー範囲[ymin,ymax]を生成する(ステップE2)。ここで、属性xサブキー範囲と属性yサブキー範囲とに基づいて特定される長方形は、クエリエリアと呼ばれ、[xmin,xmax,ymin,ymax]と表記される。
 次キー算出部103は、現在キーkcurrentが、キーの取り得る値の最大値であるか否か判定する(ステップE3)。次キー算出部103は、次キーがキーの取り得る値の最大値であると判定した場合(ステップE3の“Yes”)、xminとyminとから一のキーを生成する。そして次キー算出部103は、生成したキーを次キーknextとして算出する(ステップE4)。そして次キー算出部103の処理は終了する。図6に示される例の場合、キーの取り得る値の最大値は、「11111」である。
 次キー算出部103は、次キーがキーの取り得る値の最大値でないと判定した場合(ステップE3の“No”)、現在のキーkcurrentが示す値に1を加算した値を示すキーktmpを算出する(ステップE5)。ktmpは、次キーの候補である。
 次キー算出部103は、ktmpから属性xサブキーxtmpと属性yサブキーytmpを導出する(ステップE6)。例えば、ktmpが、「11110」である場合、xtmpは、キーの奇数ビットに基づいて「110」と導出される。また、ytmpは、キーの偶数ビットに基づいて「11」と導出される。
 そして次キー算出部103は、(xmax,ymax)に基づいてキーamaxを生成する。キーamaxは、属性xサブキー範囲[xmin,xmax]と属性yサブキー範囲[ymin,ymax]とに基づいて生成されるキーのうちの最大値を示すキーである。
 次に、次キー算出部103は、(xtmp,ytmp)がクエリエリア[xmin,xmax,ymin,ymax]に含まれているか否かを判定する(ステップE7)。次キー算出部103は、(xtmp,ytmp)がクエリエリア[xmin,xmax,ymin,ymax]に含まれていると判定した場合(ステップE7の“Yes”)、ktmpを次キーknextとして算出する(ステップE8)。一方、次キー算出部103は、(xtmp,ytmp)がクエリエリア[xmin,xmax,ymin,ymax]に含まれていないと判定した場合(ステップE7の“No”)、ktmp>amaxが成り立つか否か判定する(ステップE9)。次キー算出部103は、ktmp>amaxが成り立つと判定した場合(ステップE9の“Yes”)、次キー算出部103の処理は、ステップE4に移行する。なお、この場合は、次キーの候補に、ktmpが示す値以上の値を示すキーが存在しない場合に該当する。
 一方、次キー算出部103は、ktmp>amaxが成り立たないと判定した場合(ステップE9の“No”)、次キー探索を実行する(ステップE10)。次キー探索の具体例は、後述される。
 図11は、本発明の第一の実施の形態におけるノード100の次キー算出部103による前述ステップE10における次キー探索の処理の動作の概要の一例を示すフローチャートである。また図12は、次キー算出部103の次キー探索における動作の具体例を示す図である。なお、図11ないし図16に示される次キー探索の処理の動作は、空間充填曲線として、XZ−Orderが適用されている例である。空間充填曲線として他の曲線が適用される例は、後述される。
 図12を参照すると、現在キーkcurrent822は、「01001」である。この場合、ktmp823は、kcurrentに1を加えた値「01010」である。次キー算出部103は、ktmpから属性xサブキーxtmp=「000」と属性yサブキーytmp=「11」を導出する。2つのサブキーから特定されるキー空間上の点(000,11)は、クエリエリア[011,101,00,01]に含まれない。amax824は、(xmax,ymax)=(101,01)から求められるキー「10011」である。ここで、ktmp=「01010」であるため、ktmp>amaxは、成立しない。よって、次キー算出部103は、以下で説明する次キー探索の処理を実行する。
 次キー探索は、探索する対象のエリア(探索エリア)を、探索エリア内に次キーが見つかるまで、再帰的に拡大する点が特徴である。本例において、探索エリアは、[xs−min,xs−max,ys−min,ys−max]と表記される。
 次キー算出部103は、[xs−min,xs−max,ys−min,ys−max]の初期値を、[xtmp,xtmp,ytmp,ytmp]と特定する(ステップE1001)。図12の例では、探索エリアは、[000,000,11,11]である。
 次キー算出部103は、インデックスiを1にセットする(ステップE1002)。このインデックスiは、図13に示されるように、キーに含まれるビット列の下位ビットからの桁数を表す。次キー算出部103は、インデックスiが奇数であるか偶数であるかを判定する(ステップE1003)。
 次キー算出部103は、インデックスiを1からキーを構成するビット数になるまでインクリメントすることで探索エリアを拡大する。iが奇数の場合(ステップE1003の『奇数』)、xエリア探索を行う(ステップE1004)。xエリア探索の具体例は、後述される。一方、iが偶数の場合(ステップE1003の『偶数』)、yエリア探索を行う(ステップE1005)。yエリア探索の具体例は、後述される。
 次キー算出部103は、xエリア探索、またはyエリア探索を行うことで次キーが存在するエリアがあるか否か判定する(ステップE1006)。次キー算出部103は、次キーが存在するエリアがあると判定した場合(ステップE1006の“Yes”)、次キー生成を行う(ステップE1007)。次キー生成の具体例は、後述される。一方、次キー算出部103は、次キーが存在するエリアがないと判定した場合(ステップE1006の“No”)、iをインクリメントする(ステップE1008)。そして次キー算出部103の処理は、ステップE1003に移行する。
 インデックスiの初期値は1である。したがって次キー算出部103は、まずxエリア探索を行う。xエリア探索とは、x軸方向に探索エリアを拡大し、増分エリアに次キーが含まれているかどうかを判定する処理である。増分エリアとは、探索エリアが拡大された際の、拡大後の探索エリアから拡大前の探索エリアが除かれたエリアである。またyエリア探索とは、y軸方向に探索エリアを拡大し、増分エリアに次キーが含まれているかどうかを判定する処理である。
 図14は、本発明の第一の実施の形態におけるノード100の次キー算出部103による前述ステップE1004におけるxエリア探索の処理の動作の概要の一例を示すフローチャートである。
 次キー算出部103は、探索エリア[xs−min,xs−max,ys−min,ys−max]のうち、xs−minの(i+1)/2ビット目を0にセットし、xs−maxの(i+1)/2ビット目を1にセットする(ステップE1401)。この処理によって、探索エリアがx軸方向に拡大し、探索エリアの大きさは、拡大前の2倍になる。
 図12の例では、インデックスi=1の場合、次キー算出部103は、探索エリア[xs−min,xs−max,ys−min,ys−max]=[000,000,11,11]のxs−minとxs−maxの(i+1)/2ビット目、すなわち1ビット目を更新する。そして、次キー算出部103は、探索エリアを[000,001,11,11]に更新する。
 次に、次キー算出部103は、増分エリアに対応するキーの示す値が、拡大前の検索エリアに対応するキーの示す値よりも大きいか否か判定する(ステップE1402)。具体的には、次キー算出部103は、xtmpの(i+1)/2ビット目が0であるか否か判定する。xtmpの(i+1)/2ビット目が0であれば、増分エリアに対応するキーが示す値が拡大前の検索エリアに対応するキーが示す値よりも大きくなる。
 例えば図12を参照すると、探索エリアが[000,000,11,11]から[000,001,11,11]へと拡大される場合、[001,001,11,11]が増分エリアである。この場合、増分エリアに対応するキー「01011」が、拡大前の検索エリアに対応するキー「01010」よりも大きい。増分エリアに対応するキーが、拡大前の検索エリアに対応するキーよりも大きいことは、xtmp、すなわち「000」の(i+1)/2ビット目、すなわち1ビット目が0であることから導き出せる。
 次キー算出部103は、増分エリアに対応するキーの示す値が、拡大前の検索エリアに対応するキーの示す値よりも大きいと判定した場合(ステップE1402の“Yes”)、以下の処理を実行する。すなわち次キー算出部103は、探索エリア[xs−min,xs−max,ys−min,ys−max]から増分エリア[xs−mid,xs−max,ys−min,ys−max]を算出する(ステップE1403)。ここで、xs−midとは、xs−minの(i+1)/2ビット目を1にセットした値である。
 例えば、図12の例において、i=1、xs−min=「000」、xs−max=「001」である場合を仮定する。すると次キー算出部103は、xs−minの1ビット目に1をセットした値をxs−midと算出する。すなわち次キー算出部103は、xs−mid=「001」と算出する。
 一方、次キー算出部103は、増分エリアに対応するキーの示す値が、拡大前の検索エリアに対応するキーの示す値よりも大きくないと判定した場合(ステップE1402の“No”)、「探索は未完である」という情報を通知する。そして次キー算出部103は、xエリア探索の処理を終了する(ステップE1404)。
 次キー算出部103は、クエリエリア[xmin,xmax,ymin,ymax]が増分エリア[xs−mid,xs−max,ys−min,ys−max]とオーバーラップするか否か判定する(ステップE1405)。次キー算出部103は、クエリエリアと増分エリアとがオーバーラップすると判定した場合(ステップE1405の“Yes”)、次キーが増分エリアに存在する値という情報を通知して、xエリア探索の処理を終了する(ステップE1406)。
 一方、次キー算出部103は、クエリエリアと増分エリアとがオーバーラップしないと判定した場合(ステップE1405の“Yes”)、探索は未完であるという情報を通知して、xエリア探索の処理を終了する(ステップE1404)。図12の例では、クエリエリア[011,101,00,01]は、増分エリア[001,001,11,11]とオーバーラップしない。よって、次キー算出部103は、次キーが存在するエリアは見つからなかったと判定する。
 図15は、本発明の第一の実施の形態におけるノード100の次キー算出部103による前述ステップE1005におけるyエリア探索の処理の動作の概要の一例を示すフローチャートである。yエリア探索の処理の動作は、xエリア探索の動作と類似している。よって説明は、省略される。
 図12の例では、i=1の場合に、探索は未完となる。よって次キー算出部103は、iをインクリメントする。インクリメント後のiは、2であり、偶数である。よって次キー算出部103は、yエリア探索を実行する。yエリア探索において、探索エリアが[000,001,11,11]から[000,001,10,11]へと拡大される。増分エリアに対応するキーは、拡大前の探索エリアに対応するキーより小さい。よって、次キー算出部103は、次キーが存在するエリアは見つからなかったと判定する。
 次キー算出部103は、以上のようなxエリア探索とyエリア探索を、増分エリアがクエリエリアとオーバーラップするまで、交互に実行する。
 例えばi=5の場合に、探索エリアが[000,011,00,11]から[000,111,00,11]へと拡大される。増分エリア[100,111,00,11]は、クエリエリア[011,101,00,01]とオーバーラップする。よって次キー算出部103は、次キーが存在するエリアが見つかったと判定する。
 次キー算出部103は、次キーが存在する増分エリアが見つかったと判定したら、次キー生成を行う。
 図16は、本発明の第一の実施の形態におけるノード100の次キー算出部103による前述ステップE1007における次キー生成の処理の動作の概要の一例を示すフローチャートである。
 まず、次キー算出部103は、増分エリアとクエリエリアでオーバーラップしているエリアを取り出す(ステップE1701)。取り出したエリアの(x軸の最小値,y軸の最小値)に基づいて生成されるキーが次キーである。具体的には、次キー算出部103は以下のように動作する。
 次キー算出部103は、インデックスiが偶数であるか奇数であるかを判定する(ステップE1702)。iが奇数であれば(ステップE1702の奇数)、次キー算出部103は、x軸の最小値を、xs−midとxminとのうちより大きいほうの値と特定する。また次キー算出部103は、y軸の最小値を、ys−minとyminとのうちより大きいほうの値と特定する。
 すなわち、iが奇数であれば、次キー算出部103は、(x軸の最小値,y軸の最小値)=(xs−midとxminのうちより大きいほうの値,ys−minとyminのうちより大きいほうの値)と算出する(ステップE1703)。一方、iが偶数であれば(ステップE1702の偶数)、同様に次キー算出部103は、(x軸の最小値,y軸の最小値)=(xs−minとxminのうちより大きいほうの値,ys−midとyminのうちより大きいほうの値)と算出する(ステップE1704)。
 次キー算出部103は、算出したx軸の最小値およびy軸の最小値に基づいて次キーを算出する(ステップE1705)。図12の例では、次キー算出部103は、(x軸の最小値,y軸の最小値)=(100,00)と算出する。よってその値に基づいて生成されたキー「10000」が次キーである。
 図11ないし図16に示される次キー探索の処理の動作は、空間充填曲線として、XZ−Orderが適用されている例である。空間充填曲線として他の曲線が適用されてもよい。例えば空間充填曲線として、非特許文献2に示されるような、ヒルベルト曲線(Hilbert curve)、グレイコード(Gray code)、ペアノ曲線(Peano curve)、Z−mirror、U−indexが適用されてもよい。次キー算出部103は、前述ステップE10における次キー探索の処理の動作を適用する空間充填曲線に基づいて適宜変更する。
 例えば、次キー算出部103は、空間充填曲線としてヒルベルト曲線を利用した場合、以下のように前述ステップE10における次キー探索の処理を行う。
 まず、次キー算出部103は、ヒルベルト曲線を算出する。具体的には次キー算出部103は、属性xサブキーのビット数および属性yサブキーのビット数の最大値をヒルベルト曲線の位数と特定する。そして次キー算出部103は、キーの取り得る値の最小値を起点としてヒルベルト曲線を特定する。図17は、次キー算出部103が特定したヒルベルト曲線を模式的に示した図である。
 そして、次キー算出部103は、図17に示された情報を元に、前述のステップE1001ないしステップE1008の処理を実行すればよい。本例におけるステップE1001ないしステップE1008の処理は前述の各処理と同様である。
 第一の実施の形態における情報処理システム10において、クエリを受信した各ノード100は、クエリと共に各ノード100が責任を負うべきキーの境界を示す最終のキー(最終キー)をノード100に転送する。つまり各ノード100は、キー範囲を送信する必要がない。
 各ノード100が、キー範囲を転送する場合には、送信側のノードがキー範囲に含まれる各キーのデータをシリアライズしなければならない。また、受信側のノードは、シリアライズされたデータを受信した場合に、それをデシリアライズしなければならない。よって、第一の実施の形態における情報処理システム10は、ネットワーク負荷をさらに軽減できる。さらに第一の実施の形態における情報処理システム10は、各ノード100におけるシリアライズ、デシリアライズにかかる処理の負担を軽減させることができる。
 [第二の実施の形態]
 第二の実施の形態における情報処理システム20は、第一の実施の形態における情報処理システム10と同様に、少なくとも一つのノード200を備える。
 図18は、本発明の第二の実施の形態におけるノード200の構成を示すブロック図である。
 図18を参照すると、本発明の第二の実施の形態におけるノード200は、受信部101と、経路管理部102と、次キー算出部203と、クエリ転送制御部104と、最終キー算出部105と、クエリ処理部206とを備える。
 第二の実施の形態におけるノード200は、クエリを受け取り、受け取ったクエリを処理する。
 ===次キー算出部203===
 次キー算出部203は、第一の実施の形態における次キー算出部103が備える機能のほかに以下の機能を備える。
 次キー算出部203は、受信部101がクエリを受け取ると、受け取ったクエリと自ノード200の最小割当キーとに基づいて次キーを算出する。そして、次キー算出部203は、算出した次キーが自ノード200の割当キーであるか否か判定する。算出された次キーが自ノード200の割当キーであれば、次キー算出部203は、クエリをクエリ処理部206に渡す。
 次キー算出部203が次キーを算出する方法は第一の実施の形態における次キー算出部103が次キーを算出する方法と同様である。
 ===クエリ処理部206===
 クエリ処理部206は、次キー算出部203からクエリを受け取り、受け取ったクエリを処理する。クエリ処理部206が行う処理は、情報処理システム20の応用方法によって異なる。例えば、情報処理システム20は、Publish/Subscribe型のシステムとして利用されうる。
 Publish/Subscribe型のシステムでは、アプリケーションが、あらかじめデータの条件(データの条件とは、これまでの説明のクエリに相当する)をシステムに登録する。データの条件に合致するイベントが発生すると、そのイベントは、データの条件を登録したアプリケーションに通知される。イベントがシステムに入力されることは、Publishと、データの条件がシステムに登録されることは、Subscribeとそれぞれ呼ばれる。
 第二の実施の形態において、例えばあらかじめ、ユーザがデータの条件(データ条件)を情報処理システム20に登録しておく。そしてデータ条件にマッチするデータが情報処理システム20に入力されたら、該データを、データ条件を登録した外部システムに通知する。この場合、データ条件とは、クエリに相当する。よってクエリ処理部206は、クエリをメモリ上に記憶し、データが入力されたときにクエリとデータとの合致判定をする機能手段を備える。その後、データがクエリ処理部206に入力されたら、クエリ処理部206は、メモリ上に保持しているクエリとの合致判定を行う。クエリ処理部206は、合致したと判定した場合に、所定の通知先にその旨を通知する。
 図19は、本発明の第二の実施の形態におけるノード200の動作のうち第一の実施の形態におけるノードとは異なる動作の概要の一例を示すフローチャートである。本発明の第二の実施の形態におけるノード200の動作のうち、第一の実施の形態におけるノード100の動作と同様の機能の説明は、省略される。
 ノード200は、図8におけるステップD1ないしD4とそれぞれ同様の処理を行う。そしてノード200は、図8におけるステップD3またはステップD4の処理が終了した後、図19に示すステップF1の処理を行う。
 図19におけるステップF1において、次キー算出部203は、受信部101が受け取ったクエリと、自ノード200の最小割当キーと、に基づいて、該最小割当キーの次キーを算出する(ステップF1)。そして次キー算出部203は、算出した次キーが自ノード200の割当キーであるか否か判定する(ステップF2)。
 次キー算出部203は、算出した次キーが自ノード200の割当キーであると判定した場合(ステップF2の“Yes”)、該クエリをクエリ処理部206に渡す。クエリ処理部206は、次キー算出部203から受け取ったクエリを処理する(ステップF3)。そしてノード200の処理は、図8に示すステップD8に移行する。
 一方、次キー算出部203が、算出した次キーが自ノード200の割当キーでないと判定した場合(ステップF2の“No”)、ノード200の処理は、図8におけるステップDに移行する。以降、ノード200の処理は、図8におけるステップD8ないしD15と同様である。
 第二の実施の形態における情報処理システム20は、クエリを受け取り、受け取ったクエリに基づいて算出される次キーが自ノード200の割当キーであるか否かに基づいてクエリを処理するか否か判定する。つまり各ノード100は、クエリを処理するに当たって、キー範囲を送信する必要がない。
 よって第二の実施の形態における情報処理システム20は、キー範囲の送信にかかるネットワーク負荷を軽減できる。また、第二の実施の形態における情報処理システム20は、各ノード200におけるシリアライズ、デシリアライズにかかる処理の負担を軽減させることができる。
 [第三の実施の形態]
 第三の実施の形態における情報処理システム30は、第一の実施の形態における情報処理システム10と同様に、少なくとも一つのノード300を備える。
 図20は、本発明の第三の実施の形態におけるノード300の構成を示すブロック図である。
 図20を参照すると、本発明の第三の実施の形態におけるノード300は、受信部101と、経路管理部102と、次キー算出部103と、クエリ転送制御部104と、最終キー算出部305と、最小割当キー保持部307と、を備える。
 ===最小割当キー保持部307===
 最小割当キー保持部307は、他のノード300のノードアドレスと該ノード300の最小割当キーとを対応付けて保持する。最小割当キー保持部307が保持する最小割当キー表の例が図21に示されている。図21に示される例は、ノード300bが保持する最小割当キー表806、ノード300jが保持する最小割当キー表807およびノード300mが保持する最小割当キー表808、である。図21を参照すると、ノード300bの最小割当キー保持部307は、ノードアドレスc、d、f、jに対して、それらのノード300の最小割当キーが、それぞれ、kc−min、kd−min、kf−min、kj−minであることを記憶している。
 経路管理部102が他ノード300との経路を示す情報(経路表)を生成するときに、ノード300がノードアドレスを別のノード300に通知する処理を行う。該ノード300の最小割当キーは、その通知メッセージに含まれてもよい。最小割当キー保持部307は、経路管理部102が受け取った通知メッセージに含まれるノードアドレスと、最小割当キーとを対応付けて記憶する。これによって、経路管理部102が他ノード300との経路を示す情報を構築する際に、最小割当キー保持部307は、最小割当キー表を記憶することができる。
 ===最終キー算出部305===
 最終キー算出部305は、クエリ転送制御部104からノードアドレス“addr”を受け取る。そして、最終キー算出部305は、経路管理部102を参照し、経路管理部102に記憶されるノードアドレスから、“addr”以外で、次キーからの距離が最も小さいキーが割り当てられているノードアドレス“next”を特定する。すなわち最終キー算出部305は、ノードアドレス“addr”に対応付けられているキーが示す値より大きくその値に最も値が近い値を示すキーに対応付けられているノードアドレスを“next”と特定する。ここで距離は、第一の実施の形態において説明された距離と同様である。
 次に、最終キー算出部305は、最小割当キー保持部307を参照し、ノードアドレス“next”に対応付けられているキーが示す値から所定の値を減じた値を示すキーを検査対象キーkと特定する。この所定の値とは例えば1であってもよい。
 最終キー算出部305は、“addr”を転送先ノードアドレス、検査対象キーkを転送先最終キーとし、それらの対を転送リストに挿入する。転送リストとは、第一の実施の形態における転送リストと同様である。
 最終キー算出部305は、受信部101がクエリとともに転送先最終キーを受け取っていないと判定した場合に、以下の処理を実行する。すなわち最終キー算出部305は、自ノード300の最小割当キーから例えば1を減じた値を示すキーを最終キーと算出する。自ノード300の最小割当キーが示す値が、キーの取り得る値の最小値であった場合、最終キー算出部305は、キーが取り得る値の最大値を示すキーを最終キーと特定する。
 また、最終キー算出部305は、受信部101がクエリと共に転送先最終キーを受け取っていると判定した場合に、その受け取った転送先最終キーを自ノード300の最終キーと特定する。
 図22は本発明の第三の実施の形態におけるノード300の動作のうち第一の実施の形態とは異なる動作の概要の一例を示すフローチャートである。本発明の第三の実施の形態におけるノード300の動作のうち、第一の実施の形態におけるノード100の動作と同様の機能の説明は省略される。
 また図23は、本発明の第三の実施の形態におけるノード300の動作の具体例を示す説明図である。
 ノード300は、図8におけるステップD1ないしD10およびD12ないしD15の処理をそれぞれ行う。そして、ノード300は、ステップD10の処理が終了した後、図22に示すステップG1の処理を行う。
 図22におけるステップG1において、最終キー算出部305は、最小割当キー保持部307を参照し、ノードアドレス“next”に対応付けられているキーが示す値から1を減じた値を示すキーを検査対象キーkと特定する(ステップG1)。そしてノード300の処理は、図8におけるステップD12に移行する。
 次に、図23を参照して、図8および図22で示されるノード300の動作の具体例を説明する。本例において、クエリは属性xと属性yとを含んでいる。また本例において、属性xサブキー範囲に含まれるサブキー集合{011,100,101}と属性yサブキー範囲に含まれるサブキー集合{00,01}の全組み合わせについて、各ビットを交互に並べたビット列がキーである。そしてこのビット列は、各ノード300を識別できるノードアドレスである。また、実在するノードは、「11101」、「00110」、「01010」、「01101」、「10001」および「10111」であると仮定する。
 まず、ノード「11101」の受信部101がクエリを受け取る(ステップD1)。ノード「11101」の経路管理部102は、経路表として、実在する各ノードを示すキー「00110」および「01101」を保持している。ノード「11101」の最大割当キーは「11101」であり、最小割当キーは「11000」である。
 受信部101はクエリとともに転送先最終キーを受け取っていないので(ステップD2の“No”)、最終キー算出部305は、自ノードの最小割当キーから1を減じた値を示すキー「10111」を最終キーと特定する(ステップD4)。
 次キー算出部103は、自ノードの最大割当キー「11101」を検査対象キーkと特定する(ステップD5)。そして、次キー算出部103は、検査対象キーkの次キーを算出する(ステップD6)。すると、次キーは「00101」と算出される。
 そしてクエリ転送制御部104は、算出する次キーが示す値(k1)が、自ノードの最大割当キーが示す値(k2)と最終キーが示す値(k3)との間にあるか否か判定する(ステップD7)。本例において、k1、k2、およびk3の値は、それぞれ、k1=「00101」、k2=「11101」、k3=「10111」である。図23によれば、クエリ転送制御部104は、算出する次キーが示す値(k1)が、自ノードの最大割当キーが示す値(k2)と最終キーが示す値(k3)との間にあると判定する(ステップD7の“Yes”)。
 クエリ転送制御部104は、検査対象キーkの次キーを以前にすでに自ノードの次キー算出部103から受け取っていないと判定する(ステップD8の“No”)。
 クエリ転送制御部104は、経路管理部102を参照し、次キー「00101」に対応するノードアドレス“addr”を取得する(ステップD9)。この場合、経路管理部102は、次キー「00101」が示す値を超えない値を示すキーを記憶していない。よってクエリ転送制御部104は、最小値を示すキー「00110」をノードアドレス“addr”として取得する。
 クエリ転送制御部104は、取得したノードアドレス「00110」を最終キー算出部305に渡す。最終キー算出部305は、経路管理部102に記憶されているノードの中から、「00110」以外で、かつ、次キーとの距離が最も小さいキーが割り当てられているノードのノードアドレス“next”を取得する(ステップD10)。この場合、最終キー算出部305は、“next”として「01101」を取得する。
 最終キー算出部305は、最小割当キー保持部307を参照し、ノードアドレス「01101」に対応付けられているキーが示す値から1を減じた値を示すキー「01010」を検査対象キーkと特定する(ステップG1)。
 最終キー算出部305は、新たな検査対象キーkが示す値(k4=01010)が、次キー算出部103が算出する次キーが示す値(k1=00101)と最終キーが示す値(k3=10111)との間にあるか否か判定する(ステップD12)。
 図23によれば、最終キー算出部305は、新たな検査対象キーkが示す値が、次キー算出部103が算出する次キーが示す値と最終キーが示す値との間にあると判定し(ステップD12の“Yes”)、以下の処理を実行する。すなわち最終キー算出部305は、ノードアドレス“addr”を要素の一つである転送先ノードアドレスとし、検査対象キーkを要素のもう一つである転送先最終キーとした、対を転送リストに挿入する(ステップD13)。ここで、ノードアドレス“addr”は、「00110」である。また検査対象キーkは、「01010」である。そしてノード「11101」の処理は、ステップD6へと移行する。
 次キー算出部103は、検査対象キーkの次キーを算出する(ステップD6)。すると、次キーは「10000」と算出される。
 そしてクエリ転送制御部104は、算出する次キーが示す値(k1)が、自ノードの最大割当キーが示す値(k2)と最終キーが示す値(k3)との間にあるか否か判定する(ステップD7)。本例において、k1、k2、およびk3の値は、それぞれ、k1=「10000」、k2=「11101」、k3=「10111」である。図23によれば、クエリ転送制御部104は、算出する次キーが示す値(k1)が、自ノードの最大割当キーが示す値(k2)と最終キーが示す値(k3)との間にあると判定する(ステップD7の“Yes”)。
 クエリ転送制御部104は、検査対象キーkの次キーを以前にすでに自ノードの次キー算出部103から受け取っていないと判定する(ステップD8の“No”)。
 クエリ転送制御部104は、経路管理部102を参照し、次キー「10000」に対応するノードアドレス“addr”を取得する(ステップD9)。この場合、クエリ転送制御部104は、次キー「10000」が示す値を超えない値のうち最大値を示すキー「01101」をノードアドレス“addr”として取得する。
 クエリ転送制御部104は、取得したノードアドレス「01101」を最終キー算出部305に渡す。最終キー算出部305は、経路管理部102に記憶されているノードの中から、「01101」以外で、かつ、次キーとの距離が最も小さいキーが割り当てられているノードのノードアドレス“next”を取得する(ステップD10)。この場合、最終キー算出部305は、“next”として「00110」を取得する。
 最終キー算出部305は、最小割当キー保持部307を参照し、ノードアドレス「00110」に対応付けられているキー「11110」が示す値から1を減じた値を示すキー「11101」を検査対象キーkと特定する(ステップG1)。
 最終キー算出部305は、新たな検査対象キーkが示す値(k4=11101)が、次キー算出部103が算出する次キーが示す値(k1=00101)と最終キーが示す値(k3=10111)との間にあるか否か判定する(ステップD12)。
 図23によれば、最終キー算出部305は、新たな検査対象キーkが示す値が、次キー算出部103が算出する次キーが示す値と最終キーが示す値との間にないと判定し(ステップD12の“No”)、以下の処理を実行する。すなわち最終キー算出部305は、ノードアドレス“addr”を要素の一つである転送先ノードアドレスとし、自ノードの最終キーを要素のもう一つである転送先最終キーとした、対を転送リストに挿入する(ステップD14)。ここで、ノードアドレス“addr”は「01101である。また、自ノードの最終キーは「10111」である。
 クエリ転送制御部104は、最終キー算出部305が生成した転送リストに含まれる各対について、対の一方の要素である転送先最終キーと、対応するクエリとに基づいてメッセージを生成する。そしてクエリ転送制御部104は、生成したメッセージを対のもう一方の要素である転送先ノードアドレスで特定されるノードへ送信する(ステップD15)。
 以上より、ノード「11101」は自ノードの最大割当キーから最終キーまでをキーの検索対象とし、クエリを転送先ノードアドレスで識別されるノードへ転送する。
 ノード「11101」よりメッセージを受け取ったノード「00110」は、該メッセージに含まれる転送先最終キー「01010」を自ノードの最終キーと特定する(ステップD3)。そしてノード「00110」は、前述と同様に自ノードの最大割当キーから最終キーまでをキーの検索対象とし、クエリを転送先ノードアドレスで識別されるノードへ転送する。ノード「11101」よりメッセージを受け取ったノード「01101」の動作も上記と同様である。
 最初にクエリを受信したノードからメッセージを転送される各ノードが検索対象とするキーの範囲は重複しない。なぜなら各メッセージに含まれる転送先最終キーは、次のメッセージの転送先であるノードアドレス“next”から1を減じた値であり、メッセージを受け取ったノードは自ノードが示すキーの値から1ずつ加算する方向に検索を行うからである。
 第三の実施の形態におけるノード転送システム30は、クエリとともに、転送先最終キーを各ノードに転送する。転送先最終キーは、クエリが転送される自ノードのとなりの他のノードの最小割当キーが示す値から1を減じた値を示す最終キーである。また、各ノードは自ノードの最大割当キーから自ノードの最終キーまでのキーの範囲をキーの検索対象とする。したがって、ノード転送システム30は、同一のクエリが同じノードを複数回経由する可能性を低減できる。
 またノード転送システム30は、クエリが異なる経路を通って二重に通知される可能性を低減できる。なぜなら、前述の各ノード300のキーの検索対象は重複しないので、各ノードにはクエリが複数回到達しえないからである。
 以上の利点により、第三の実施の形態におけるノード転送システム30は、大量のクエリを転送する際にも高いパフォーマンスを得ることができる。
 [第四の実施の形態]
 第四の実施の形態における情報処理システム40は、第三の実施の形態における情報処理システム30と同様に、少なくとも一つのノード400を備える。
 図24は、本発明の第四の実施の形態におけるノード400の構成を示すブロック図である。
 図24を参照すると、本発明の第四の実施の形態におけるノード400は、受信部101と、経路管理部402と、次キー算出部103と、クエリ転送制御部104と、最終キー算出部305と、最小割当キー保持部307と、を備える。
 第四の実施の形態におけるノード400は、クエリの次の転送先を特定するためのルーティングプロトコルとして、Chordを適用した具体例である。
 ===経路管理部402===
 経路管理部402は、キー(宛先キー)に対して、該キーが割り当てられたノードに到達するために、次の転送先であるノードを識別できるキーである識別キーを算出する。例えば、経路管理部402は、Chord(例えば、非特許文献3参照)などのルーティングプロトコルに基づいて、識別キーを算出する。Chordは、宛先キーに最も近いキー(識別キー)が割り当てられたノードを次の転送先として特定するプロトコルである。
 経路管理部402は、他のノード400との経路を示す情報(例えば、Chordであれば、Finger tableに相当する)を記憶する。図25は、経路管理部402が記憶する情報の一例である。この情報はフィンガーテーブル825とも呼ばれる。図25において、「start」は、自ノード400に対応付けられているキーが示す値に所定数だけ(例えば2i、ただしiは0以上の整数)加算した値を示すキーである。また、「int.」は、「start」のキーに対応するキー範囲を示す情報である。例えばキーの値がnであるキーに対応付けられているノードにおいて「start」は、n+2i(ただしiは0以上の整数)である。そしてこのキー「n+2i」に対応付けられている「int.」は、n+2i≦k<2i+1を満たすキーkの集合、すなわち、キーkのキー範囲である。「succ.」は、int.で示されている各キーに対応するノードのうちstartに対応付けられているキーの値に最も近いキー(識別キー)で識別される他のノード400を示す識別子である。本例において、識別キーとその識別キーで識別されるノード400を示す識別子とは同一のものである。もちろん、識別キーとノード400を識別できる識別子とは、互いに対応する他の情報であってもよい。
 図25において、「int.」は、「succ.」で識別されるノードに対応付けられるキーの集合を示す情報であってもよい。また、「succ.」に含まれるノードの識別子は、ノードのノードアドレスであってもよい。
 第四の実施の形態における情報処理システム40は、特別なルーティングプロトコルでなく、一般的なChordに基づいて、大量のクエリが転送されても、ネットワーク負荷、シリアライズ処理の負荷およびデシリアライズ処理の負荷を低減できる。
 [第五の実施の形態]
 図26は、本発明の第五の実施の形態における情報処理システム50が備えるノード500の構成を示すブロック図である。図26を参照すると、ノード500は、受信部501と、経路管理部502と、次キー算出部503と、クエリ転送制御部504と、最終キー算出部505とを備える。
 受信部501は、ある値の範囲を特定するクエリを受け取る。そして受信部501は受け取ったクエリを後述の次キー算出部503に渡す。
 経路管理部502は、ある値を示すキーを記憶する。
 次キー算出部503は、次キーを受信部501から受け取ったクエリで特定される範囲に含まれるいずれかの値を示すキーの中から算出する。この次キーは、ノード500に対応する値を示す所定のキーが示すその値に最も近い値を示すキーである。
 クエリ転送制御部504は、次キー算出部503が算出した次キーが示す値と、経路管理部502が記憶するキーがそれぞれ示す値との大小関係を特定する。そしてクエリ転送制御部504は、特定した大小関係に基づいて経路管理部502が記憶するキーの中から一のキーを特定する。そしてクエリ転送制御部504は、特定した一のキーが示す値に基づいて識別される装置の識別子である転送先ノード識別子を特定する。
 また、クエリ転送制御部504は、後述の最終キー算出部505が算出する転送先最終キーと受信部501が受け取るクエリとを、クエリ転送制御部504が特定した転送先ノード識別子で識別される装置へ転送する。
 最終キー算出部505は、クエリ転送制御部504が特定した転送先ノード識別子に対応する前述の一のキーが示す値に基づいて、転送先最終キーを経路管理部502が記憶する各キーの中から算出する。転送先最終キーは、前述の転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである。
 受信部501と、経路管理部502と、次キー算出部503と、クエリ転送制御部504と、最終キー算出部505とは、例えば、プログラム(情報処理プログラム)によって動作するCPUによって実現される。受信部501と、経路管理部502と、次キー算出部503と、クエリ転送制御部504と、最終キー算出部505とが、同一のCPUによって実現されてもよい。この場合、プログラムは、例えば、ノード500が備えるプログラム記憶装置521(図27参照)に記憶される。CPU522は、そのプログラムを読み込み、そのプログラムにしたがって、受信部501と、経路管理部502と、次キー算出部503と、クエリ転送制御部504と、最終キー算出部505として動作すればよい。
 また、前述のプログラムのコードを記録した記録媒体(または記憶媒体)が、ノード500に供給され、ノード500が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。すなわち、本発明は、第五の実施の形態におけるノード500が実行するためのソフトウェア(情報処理プログラム)を一時的に記憶するまたは非一時的に記憶する記録媒体524も含む。
 経路管理部502は、例えば、ハードディスク523のような記憶装置によって実現されてもよい。
 第五の実施の形態における情報処理システム50は、上記の構成を含むノード500を備えるので、大量のクエリが転送されても、ネットワーク負荷、シリアライズ処理の負荷およびデシリアライズ処理の負荷を低減できる。
 以上、各実施の形態および実施例を参照して本発明を説明したが、本発明は上記実施の形態および実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しえる様々な変更をすることができる。
 本発明の各実施の形態において、ノード100、ノード200、ノード300、ノード400およびノード500は、情報処理装置またはその一部に備えられる。したがって、1つのノードが1つの情報処理装置から構成されてもよい。あるいは、1つのノードに、情報処理装置に含まれるメモリ、CPUおよびハードディスクなどの資源の少なくとも一部が割り当てられるように構成されてもよい。つまり、複数のノードが1つの情報処理装置から構成されてもよい。
 この出願は、2011年1月25日に出願された日本出願特願2011−012947を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 本発明の情報処理システムは、RFID(Radio Frequency IDentification)やセンサなどのデバイスから大量に発生するデータ(イベント)を、それを要求するアプリケーションに対して配信するPublish/Subscribe型のシステムに応用されうる。
 10、20、30、40、50  情報処理システム
 100、200、300、400、500  ノード
 101  受信部
 102  経路管理部
 103  次キー算出部
 104  クエリ転送制御部
 105  最終キー算出部
 206  クエリ処理部
 307  最小割当キー保持部
 121、521  プログラム記憶装置
 122、522  CPU
 123、523  ハードディスク
 124、524  記録媒体
 801  キー空間
 802  キー範囲
 803  キー
 804  属性空間
 805  クエリエリア
 806、807、808  最小割当キー表
 819  メッセージ
 820  クエリ
 821  転送先最終キー
 822  kcurrent
 823  ktmp
 824  amax
 825  フィンガーテーブル

Claims (18)

  1.  ある値の範囲を特定するクエリを受け取る受信手段と、
     ある値を示すキーを記憶する経路管理手段と、
     所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する次キー算出手段と、
     前記次キーが示す値と前記経路管理手段が記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定するクエリ転送制御手段と、
     前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記経路管理手段が記憶する各キーの中から算出する最終キー算出手段と、を備え、
     前記クエリ転送制御手段は、前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される装置へ転送する、情報処理装置。
  2.  請求項1に記載の情報処理装置であって、
     前記最終キー算出手段は、前記受信手段が前記クエリとともに転送先最終キーを受け取ったか否かに基づいて、自情報処理装置が算出しうる次キーの範囲の境界を示すキーである最終キーを特定し、
     前記クエリ転送制御手段は、前記次キー算出手段が算出した次キーが示す値と前記所定のキーが示す値と前記最終キーが示す値との間で所定の大小関係にあるか否か判定し、
     前記クエリ転送制御手段は、前記所定の大小関係にあると判定した場合に、前記次キーが示す値と前記経路管理手段が記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し、当該一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定する、情報処理装置。
  3.  請求項2に記載の情報処理装置であって、
     前記クエリ転送制御手段は、前記所定の大小関係にないと判定した場合に、前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される装置へ転送する、情報処理装置。
  4.  請求項2または3に記載の情報処理装置であって、
     前記受信手段は、前記クエリとともに転送先最終キーを受け取ったか否かを判定し、
     前記最終キー算出手段は、前記受信手段が転送先最終キーを受け取ったと判定した場合に、当該転送先最終キーを自情報処理装置の最終キーと特定する、情報処理装置。
  5.  請求項3に記載の情報処理装置であって、
     前記受信手段は、前記クエリとともに転送先最終キーを受け取ったか否か判定し、
     前記最終キー算出手段は、前記受信手段が転送先最終キーを受け取っていないと判定した場合に、自情報処理装置に対応する一のキーを最終キーと特定する、情報処理装置。
  6.  請求項1ないし5のいずれか1項に記載の情報処理装置であって、
     前記情報処理装置は、ある所定のキーの集合を示す割当キー範囲を記憶し、
     前記次キー算出手段は、前記割当キー範囲に含まれるキーが示す最大値に最も近い値を示す前記次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する、情報処理装置。
  7.  請求項6に記載の情報処理装置であって、
     前記クエリ転送制御手段は、前記次キー算出手段が算出した次キーが示す値が、前記割当キー範囲に含まれるキーが示す最大値と前記最終キーが示す値との間にあるという前記所定の関係があるか否か判定する、情報処理装置。
  8.  請求項6または7に記載の情報処理装置であって、
     前記次キー算出手段は、前記割当キー範囲に含まれるキーが示す最大値に最も近い値を示す前記次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する、情報処理装置。
  9.  請求項1ないし8のいずれか1項に記載の情報処理装置であって、
     前記クエリ転送制御手段は、前記次キーが示す値を超えない最大値を示すキーを、前記経路管理手段が記憶する各キーから特定し、特定したキーの値に基づいて、識別される装置の識別子である転送先ノード識別子を特定する、情報処理装置。
  10.  請求項9に記載の情報処理装置であって、
     前記最終キー算出手段は、前記クエリ転送制御手段が特定したキーが示す値より大きくその値に最も近い値を示す転送先最終キーを前記経路管理手段が記憶する各キーの中から算出する、情報処理装置。
  11.  請求項1ないし10のいずれか1項に記載の情報処理装置であって、
     クエリは複数の属性に対してそれぞれの属性値の範囲を示す情報であり、
     クエリで特定される値の範囲は、前記属性値の範囲に含まれる各属性値のすべての組み合わせを、それぞれの属性からなる属性空間で定義される空間充填曲線に写像することで得られる値の範囲であり、
     キーはある属性値の組み合わせに基づいて定められる値であり、
     前記次キー算出手段は、前記所定のキーが示す値と前記空間充填曲線上で最も近い値を示すキーを前記クエリで特定される値の範囲に含まれる値を示すキーの中から特定する、情報処理装置。
  12.  請求項1ないし11のいずれか1項に記載の情報処理装置であって、
     クエリは、一の属性の属性値の集合であるサブキー群を少なくとも一つ含み、
     キーの値は、各属性値の組み合わせに基づいて一意に特定される値であり、
     前記次キー算出手段は、それぞれの属性からなる属性空間の中から、前記クエリに含まれる前記サブキー群のそれぞれから特定される属性値の組み合わせの集合により特定される少なくとも一部の部分空間であるクエリエリアを当該クエリに基づいて特定し、
     前記次キー算出手段は、前記割当キー範囲に含まれる所定のキーの値に基づいて特定される各属性値のいずれかに所定数加算し、加算後の属性値を含む前記各属性の組み合わせに基づいて特定される値を有するキーである増分キーを少なくとも一つ特定し、
     前記キー算出手段は、前記増分キーが示す値に基づいて特定される各属性値の組み合わせで特定される空間である増分エリアの少なくとも一部が前記クエリエリアに包含されるか否かを判定し、
     前記次キー算出手段は、前記増分エリアの少なくとも一部が前記クエリエリアに包含されると判定した場合に、前記増分エリアと前記クエリエリアとで共通する属性値の組み合わせのうち、それぞれ最小の属性値の組み合わせに基づいて特定される値を有するキーを、次キーとして算出する、情報処理装置。
  13.  請求項1に記載の情報処理装置であって、
     ある装置を示すノード識別子と当該装置の割当キー範囲に含まれるキーのうち最小値を示すキーとを対応付けて記憶する最小割当キー保持手段を備え、
     前記経路管理手段は、ある装置を示すノード識別子と当該装置の割当キー範囲に含まれるキーのうち最大値を示すキーとを対応付けて記憶し、
     前記クエリ転送制御手段は、前記次キーが示す値と前記経路管理手段が記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に対応付けられているノード識別子を前記転送先ノード識別子として特定し、
     前記最終キー算出手段は、前記クエリ転送制御手段が特定した転送先ノード識別子に対応する前記一のキー以外のキーでかつ前記次キーが示す値に最も近い値を示すキーを前記経路管理手段から特定し、この特定したキーに対応付けられているノード識別子を特定し、このノード識別子に対応付けられているキーが示す値から所定数を減じた値を示すキーを前記最小キー保持手段から読み出し、この読み出したキーを前記転送先最終キーとして算出する、情報処理装置。
  14.  請求項1に記載の情報処理装置であって、
     ある装置を示すノード識別子と当該装置の割当キー範囲に含まれるキーのうち最小値を示すキーとを対応付けて記憶する最小割当キー保持手段を備え、
     前記経路管理手段は、あるキーと当該キーを自装置の割当キー範囲に含む当該装置を識別できるノード識別子である一のキーとを対応付けて記憶し、
     前記クエリ転送制御手段は、前記次キーが示す値を超えない最大値を示すキーに対応付けられているノード識別子を前記転送先ノード識別子として前記経路管理手段の中から特定し、
     前記最終キー算出手段は、前記クエリ転送制御手段が特定した転送先ノード識別子以外のノード識別子でかつ前記次キーが示す値に最も近い値を示すキーであるノード識別子を前記経路管理手段から特定し、特定したノード識別子に対応付けられているキーが示す値から所定数を減じた値を示すキーを前記最小割当キー保持手段から読み出し、この読み出したキーを前記転送先最終キーとして算出する、情報処理装置。
  15.  請求項1ないし14のいずれか1項に記載の情報処理装置であって、
     前記情報処理装置は、ある所定のキーの集合を示す割当キー範囲を記憶し、
     前記情報処理装置は、クエリを処理するクエリ処理手段を備え、
     前記次キー算出手段は、前記受信手段がクエリを受け取ると、受け取ったクエリと前記割当キー範囲に含まれるキーのうち最小値を示すキーに最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出し、算出した次キーが前記割当キー範囲に含まれる場合に前記クエリを前記クエリ処理手段に渡す、情報処理装置。
  16.  少なくとも一つの情報処理装置を備え、
     当該情報処理装置は、
     ある値の範囲を特定するクエリを受け取る受信手段と、
     ある値を示すキーを記憶する経路管理手段と、
     所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する次キー算出手段と、
     前記次キーが示す値と前記経路管理手段が記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される情報処理装置の識別子である転送先ノード識別子を特定するクエリ転送制御手段と、
     前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される情報処理装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記経路管理手段が記憶する各キーの中から算出する最終キー算出手段と、を含み、
     前記クエリ転送制御手段は、前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される情報処理装置へ転送する、情報処理システム。
  17.  ある値の範囲を特定するクエリを受け取り、
     ある値を示すキーを記憶し、
     所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出し、
     前記次キーが示す値と前記記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定し、
     前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記記憶する各キーの中から算出し、
     前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される装置へ転送する、情報処理方法。
  18.  コンピュータに、
     ある値の範囲を特定するクエリを受け取る処理と、
     ある値を示すキーを記憶する処理と、
     所定のキーが示す値に最も近い値を示すキーである次キーを、前記クエリで特定される範囲に含まれるいずれかの値を示す各キーの中から算出する処理と、
     前記次キーが示す値と前記記憶する各キーがそれぞれ示す値との大小関係に基づいて、当該各キーから一のキーを特定し当該一のキーの値に基づいて識別される装置の識別子である転送先ノード識別子を特定する処理と、
     前記転送先ノード識別子に対応する前記一のキーが示す値に基づいて、当該転送先ノード識別子で識別される装置が算出しうる次キーの範囲の境界を示すキーである転送先最終キーを前記記憶する各キーの中から算出する処理と、
     前記クエリと前記転送先最終キーとを前記転送先ノード識別子で識別される装置へ転送する処理と、を実行させるための情報処理プログラムを格納する記録媒体。
PCT/JP2012/050648 2011-01-25 2012-01-06 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム WO2012102103A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP12739500.2A EP2669810A1 (en) 2011-01-25 2012-01-06 Information processing device, information processing system, information processing method and information processing program
US13/980,174 US20130304823A1 (en) 2011-01-25 2012-01-06 Information processing device, information processing system, information processing method, and information processing program
JP2012554723A JP5949561B2 (ja) 2011-01-25 2012-01-06 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
CN2012800064036A CN103339620A (zh) 2011-01-25 2012-01-06 信息处理设备、信息处理系统、信息处理方法和信息处理程序

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011012947 2011-01-25
JP2011-012947 2011-01-25

Publications (1)

Publication Number Publication Date
WO2012102103A1 true WO2012102103A1 (ja) 2012-08-02

Family

ID=46580675

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/050648 WO2012102103A1 (ja) 2011-01-25 2012-01-06 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム

Country Status (5)

Country Link
US (1) US20130304823A1 (ja)
EP (1) EP2669810A1 (ja)
JP (1) JP5949561B2 (ja)
CN (1) CN103339620A (ja)
WO (1) WO2012102103A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103795770B (zh) * 2012-10-26 2017-07-04 伊姆西公司 在网络基础设施中提供高速缓存服务的方法和装置
JP6187478B2 (ja) * 2013-01-11 2017-08-30 日本電気株式会社 インデックスキー生成装置及びインデックスキー生成方法並びに検索方法
US20220374431A1 (en) * 2021-05-21 2022-11-24 Oracle International Corporation Techniques for a deterministic distributed cache to accelerate sql queries

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008132918A1 (ja) * 2007-04-13 2008-11-06 Nec Corporation データ検索装置、データ検索システム、データ検索方法およびデータ検索用プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5664172A (en) * 1994-07-19 1997-09-02 Oracle Corporation Range-based query optimizer
US7167856B2 (en) * 2001-05-15 2007-01-23 Jonathan Keir Lawder Method of storing and retrieving multi-dimensional data using the hilbert curve
US20050108203A1 (en) * 2003-11-13 2005-05-19 Chunqiang Tang Sample-directed searching in a peer-to-peer system
US20100169195A1 (en) * 2005-02-03 2010-07-01 Bernard Trest Preventing unauthorized distribution of content on computer networks
CN100576809C (zh) * 2007-08-21 2009-12-30 北京航空航天大学 大规模动态异构混合无线自组织网络中的接入及路由计算方法
CN101272399A (zh) * 2008-04-25 2008-09-24 浙江大学 一种基于p2p网络实现全文检索系统的方法
US8176021B2 (en) * 2008-06-02 2012-05-08 Microsoft Corporation Optimized reverse key indexes
US20100250614A1 (en) * 2009-03-31 2010-09-30 Comcast Cable Holdings, Llc Storing and searching encoded data
US9298761B2 (en) * 2009-04-30 2016-03-29 Hewlett Packard Enterprise Development Lp Adaptive merging in database indexes
US8892569B2 (en) * 2010-12-23 2014-11-18 Ianywhere Solutions, Inc. Indexing spatial data with a quadtree index having cost-based query decomposition

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008132918A1 (ja) * 2007-04-13 2008-11-06 Nec Corporation データ検索装置、データ検索システム、データ検索方法およびデータ検索用プログラム

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CHRISTIAN BOHM ET AL.: "XZ-Ordering: A Space-Filling Curvefor Objects with Spatial Extension", PROCEEDINGS OF THE 6TH INTERNATIONAL SYMPOSIUM ON ADVANCES IN SPATIAL DATABASES, 22 July 1999 (1999-07-22), pages 75 - 90, XP002258218
HIDEYUKI AKASAKI ET AL.: "A Proposal of Contents Sharing Method Based on Attribute with a Range as a Key in Skip Graph", IEICE TECHNICAL REPORT, vol. 109, no. 398, 21 January 2010 (2010-01-21), pages 65 - 70 *
ION STOICA ET AL.: "Proceedings of the 2001 Conference on Applications, Technologies, Architectures, and Protocols For Computer Communications. SIGCOMM '01", 2001, ACM, article "Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications", pages: 149 - 160
NOBUHIKO MATSUURA ET AL.: "Evaluation of Multi-dimensional Range Search Algorithm in P2P Networks Using B+-Tree", IEICE TECHNICAL REPORT, vol. 109, no. 438, 22 February 2010 (2010-02-22), pages 235 - 240 *
PRASANNA GANESAN ET AL.: "WebDB '04: Proceedings of the 7th International Workshop on the Web and Databases", 2004, ACM PRESS, article "One torus to rule them all: Multi-dimensional queries in p2p systems", pages: 19 - 24

Also Published As

Publication number Publication date
US20130304823A1 (en) 2013-11-14
JPWO2012102103A1 (ja) 2014-06-30
CN103339620A (zh) 2013-10-02
JP5949561B2 (ja) 2016-07-06
EP2669810A1 (en) 2013-12-04

Similar Documents

Publication Publication Date Title
US10397139B2 (en) Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method
KR101150131B1 (ko) 메타스페이스: 부분적으로 접속된 이동 애드 혹네트워크를 위한 통신 미들웨어
US7773609B2 (en) Overlay network system which constructs and maintains an overlay network
JP3866466B2 (ja) データ構造管理装置、データ構造管理システム、データ構造管理方法およびデータ構造管理プログラムを格納する記録媒体
KR101411321B1 (ko) 액티브 노드와 유사한 특성을 가지는 이웃 노드의 관리방법, 장치 및 그 방법을 구현하기 위한 프로그램이 기록된기록매체
JP5949561B2 (ja) 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
CN105740405A (zh) 存储数据的方法和装置
JP5724880B2 (ja) 情報処理システム、制御方法およびプログラム
CN104580428A (zh) 一种数据路由方法、数据管理装置和分布式存储系统
JP6705764B2 (ja) 生成装置、生成方法、及び生成プログラム
JP2010266952A (ja) メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法
US8595239B1 (en) Minimally disruptive hash table
US10795873B1 (en) Hash output manipulation
JP6036302B2 (ja) 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
JP2007156700A (ja) 情報検索方法、情報登録方法およびネットワークサービス情報検索システム
JP2018206084A (ja) データベース管理システムおよびデータベース管理方法
CN116126928A (zh) 一种基于可变指纹布谷鸟过滤器的信息查找系统
WO2013027784A1 (ja) データ処理装置、データ分散処理システム、データ処理方法およびプログラム記憶媒体
JP5867407B2 (ja) 情報処理装置、システム、制御方法およびプログラム
CN115550251B (zh) 区块链网络、节点集合的维护方法及装置
CN115567541B (zh) 区块链网络、节点集合的维护方法及装置
JP6702582B2 (ja) データベース管理システムおよびデータベース管理方法
US20230195761A1 (en) Spatial lsm tree apparatus and method for indexing blockchain based geospatial point data
JP4624314B2 (ja) データ管理装置
CN116975104A (zh) 用于查找数据的方法、电子设备和计算机程序产品

Legal Events

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

Ref document number: 12739500

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012739500

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2012554723

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 13980174

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE