WO2013171953A1 - 分散データ管理装置及び分散データ操作装置 - Google Patents

分散データ管理装置及び分散データ操作装置 Download PDF

Info

Publication number
WO2013171953A1
WO2013171953A1 PCT/JP2013/001768 JP2013001768W WO2013171953A1 WO 2013171953 A1 WO2013171953 A1 WO 2013171953A1 JP 2013001768 W JP2013001768 W JP 2013001768W WO 2013171953 A1 WO2013171953 A1 WO 2013171953A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
tree
data
identifier
value
Prior art date
Application number
PCT/JP2013/001768
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 JP2014515468A priority Critical patent/JP5967195B2/ja
Priority to US14/400,056 priority patent/US10073857B2/en
Priority to EP13790415.7A priority patent/EP2851803A4/en
Priority to CN201380037661.5A priority patent/CN104487951B/zh
Publication of WO2013171953A1 publication Critical patent/WO2013171953A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Definitions

  • the present invention relates to a distributed management technique for data ordered in attribute value order.
  • associative arrays that obtain values from keys, key value stores, maps, and storage engines. Further, such data structures include those where keys are stored ordered by their values and those where the keys are stored unordered. In the non-ordered form, the data storage destination is determined based on the value obtained by hashing the key. On the other hand, in the ordered form, each storage destination has a range of values in charge as range data, and the storage location of the data is determined from the range data and the key.
  • Non-Patent Document 1 proposes an example of a range management method in an information system.
  • a system called Bigtable includes a tablet server that stores a plurality of data, a Bigtable master, a central server Chubby, a metadata tablet server, and a client.
  • Each tablet server stores data in a certain continuous range as a tablet.
  • the Bigtable master manages to which tablet server a tablet is stored by B + Tree, stores a plurality of subtrees constituting the B + Tree in a plurality of metadata tablet servers, and stores a subtree corresponding to the root in the Chubby. Store.
  • the tablet managed by the tablet server is changed, the change is notified to the master.
  • the client accessing this Bigtable accesses the Chubby to obtain the route of the B + Tree, obtains its subtree from the metadata tablet server, and caches it. While this cache is valid, the client can locally identify the tablet server corresponding to the key value. When the tablet that the tablet server is responsible for changes, the cache on the client becomes invalid, but the client only detects the invalidity by accessing the tablet server that corresponds to the key value, and the metadata tablet server Query valid information.
  • Non-Patent Document 2 proposes another example of the range management method.
  • a system called “Baton” is composed of a plurality of P2P (Peer to Peer) nodes. Each node stores continuous range data. Each node has a link relationship with other nodes, and the link relationship is a balanced tree as a whole. Each node has a link to a node corresponding to the parent node in the tree structure, a link to a node corresponding to the child node, and a link to an adjacent node in the same hierarchy. For links to adjacent nodes in the same hierarchy, the range related to each link destination is also managed.
  • a certain node When a certain node obtains an access request for a certain value, it decides in which range the value is included in the range that the adjacent node of the same hierarchy is in charge of, and sends the access request to the determined node. Forward. By continuing similar processing at the transfer destination node, a node holding data corresponding to the value is detected. The link relationship between nodes is sequentially changed so as to maintain a balanced tree when a node is newly added or removed. Further, when the distribution of stored data is not uniform among nodes and distortion occurs, each node changes the value range and link relationship so that the data distribution is uniform.
  • the above-described range management method has the following problems.
  • the client detects the change in the value range of the data storage node when the client executes access to the data. That is, after the detection, the client acquires a new value range from the metadata server and re-executes data access, so that the communication delay is directly taken as the data access time.
  • Non-Patent Document 1 a configuration in which the client periodically inquires the metadata server about the value range to the method of Non-Patent Document 1.
  • a plurality of metadata servers that are common in the system receive requests from all clients at predetermined intervals, and as the number of clients increases, the load on the metadata server and the system As a result, the communication load of the system becomes high, and as a result, the performance of the entire system deteriorates.
  • Non-Patent Document 2 since a data access request is sequentially transferred from a P2P node to another node, a node storing data to be accessed is detected. Tend to be longer.
  • the link relationship between nodes is updated according to the value range for each attribute or the load on the node, the link between P2P nodes increases as the number of attributes handled in the system increases. As a result, the relationship increases, resulting in an increase in the load required for management and update, and a situation in which a failure is likely to occur.
  • the present invention has been made in view of the circumstances as described above, and provides a distributed data management technique for reducing data access time while suppressing load in a system for managing distributed data in order of attribute values. There is.
  • the present invention relates to a distributed data management apparatus that implements a node.
  • the target logical node realized by the distributed data management device according to the first aspect is assigned to the target logical node among a plurality of identifiers that are uniquely assigned to the plurality of logical nodes in a finite identifier space having a ring structure.
  • a node identifier storage unit that stores a specified identifier as a target node identifier, a data storage unit that stores at least one of a plurality of partial data, and a communicable relationship between the target logical node and another logical node
  • a link table for storing link information between the target logical node and the link destination logical node established according to the relationship between the target node identifier in the identifier space, and a data storage unit Is a range boundary value for each attribute corresponding to the partial data stored in, and the range boundary for each attribute is the target logical node in the identifier space.
  • a range storage unit for storing a range boundary value for each attribute located between the target logical node and the adjacent logical node, and a range for specifying the logical node for storing the partial data corresponding to the access request are shown.
  • Tree structure data for each attribute composed of a plurality of tree nodes, which is formed from a pointer to a child tree node associated with the link destination logical node and a value indicating a range for selecting the pointer.
  • a tree storage unit for storing tree structure data having a root tree node including at least one entry.
  • a program for causing a computer to realize the target logical node as described above may be used, or a computer-readable recording medium that records such a program may be used.
  • This recording medium includes a non-transitory tangible medium.
  • FIG. 1 It is a figure which shows notionally the structural example of the distribution system in 1st Embodiment. It is a figure which shows notionally the process structural example of the data server in 1st Embodiment. It is a figure which shows notionally the example of the link relationship of a logical node. It is a figure which shows notionally the link relationship on the basis of the node N (1) shown by FIG. It is a figure which shows notionally the relationship between ID ring and range information. It is a figure which shows notionally the example of the tree structure data of the node N (1) based on the example of a link of FIG.3 and FIG.4 in the management form 3.
  • FIG. 3 shows notionally the structural example of the distribution system in 1st Embodiment. It is a figure which shows notionally the process structural example of the data server in 1st Embodiment. It is a figure which shows notionally the example of the link relationship of a logical node. It is a figure which shows notionally the link relationship on the basis of
  • FIG. It is a figure which shows notionally the example of the tree structure data of the node N (1) based on the example of a link of FIG.3 and FIG.4 in the management form 6.
  • FIG. It is a flowchart which shows the operation example of the tree production
  • FIG. 6 is a diagram illustrating a part of tree structure data generated at each node 11 in the first embodiment. It is a figure which shows notionally the example of the load distribution in Example 1.
  • FIG. It is a figure which shows notionally the example of the tree structure data of the node (980) after load distribution in Example 1.
  • FIG. It is a figure which shows notionally the example of the tree structure data after the version update of the node (413) in Example 1.
  • the distributed data management device includes a plurality of partial data obtained by dividing data ordered in attribute value order, and a plurality of partial data each having a value range for each attribute.
  • the target logical node in the present embodiment stores a node identifier storage unit that stores the target node identifier, a data storage unit that stores the partial data, and link information between the target logical node and the link destination logical node.
  • a link table a range storage unit that stores a range boundary value for each attribute corresponding to partial data stored in the data storage unit, a pointer to a child tree node associated with the link destination logical node, and this pointer
  • a tree storage unit that stores tree structure data for each attribute having a root tree node including at least one entry including a value indicating a range for selecting.
  • the logical node is a software element such as a task, a process, an instance, and the like, and is realized by a computer such as the distributed data management apparatus according to the present embodiment.
  • the target node identifier is an identifier assigned to the target logical node among a plurality of identifiers uniquely assigned to a plurality of logical nodes in a finite identifier space having a ring structure. That is, each logical node is assigned a unique identifier (hereinafter also referred to as node ID or ID).
  • a finite identifier space having a ring structure means an identifier space defined such that the largest identifier is followed by the smallest identifier in the space.
  • the target logical node establishes a link with another logical node (the link destination logical node) according to the relationship between the target node identifier and another identifier in the identifier space.
  • Link establishment means that the target logical node can communicate with the link destination logical node, and is realized by, for example, having an IP (Internet Protocol) address with each other. Note that this embodiment does not limit the method of realizing the link.
  • a topology based on the node ID is constructed in a plurality of logical nodes that manage data in a distributed manner.
  • each logical node manages range information corresponding to partial data to be stored, like the above-described range storage unit.
  • a value boundary for each attribute is located between adjacent logical nodes in the identifier space. That is, a value range for each attribute that each logical node is responsible for is determined corresponding to the ring structure of the node ID space.
  • the attribute value space for each attribute can be managed as having a cyclic order (ring structure).
  • This can also be said to be a configuration in which the range information view of the attribute value space is superposed on the link topology of the node ID space for management. With this configuration, it is possible to respond to the range change by changing only the range information view superimposed on the node ID space without changing the link topology of the node ID space.
  • the range boundary value stored in the range storage unit may be the starting point of the range of the partial data stored in the target logical node, may be the end point of the range, or may be the start point and end point of the range. It may be a combination. Further, the range storage unit may store not only the range boundary value of the target logical node but also the range boundary value of the partial data stored in the adjacent node of the target logical node.
  • the target logical node stores tree structure data in which the range of each logical node is reflected, and an arbitrary entry is made by referring to the tree node entry stored in the tree structure data.
  • a logical node that stores partial data including an attribute value is specified.
  • the root tree node entry included in the tree structure data includes a pointer to a child tree node associated with the link destination logical node.
  • the tree structure data in the present embodiment reflects the link relationship between the logical nodes on the topology constructed based on the node ID, so that the target logical node searches for the tree structure data.
  • the link destination logical node can be immediately identified.
  • the target logical node does not need to ask the specific server to change the value range, so that it is possible to prevent load concentration on the specific server.
  • the logical node can identify the logical node storing the desired range by referring to the tree structure data stored by itself, so that the node of the data access request As a result, it is possible to prevent an increase in data access time associated with the transfer of data access requests between nodes.
  • FIG. 1 is a diagram conceptually illustrating a configuration example of a distributed system 1 in the first embodiment.
  • the distributed system 1 in the first embodiment includes a plurality of data servers 10 and the like.
  • the data servers 10 are connected to each other via a network 9 so that they can communicate with each other.
  • the data server 10 corresponds to the distributed data management device in the above-described embodiment.
  • the data server 10 accesses data stored in the data server 10 and acquires desired data.
  • the data server 10 is a so-called computer and includes, for example, a CPU (Central Processing Unit) 2, a memory 3, an input / output interface (I / F) 4 and the like connected to each other via a bus 5.
  • the memory 3 is a RAM (Random Access Memory), a ROM (Read Only Memory), a hard disk, a portable storage medium, or the like.
  • the input / output I / F 4 is connected via a network 9 to a communication device 7 that communicates with another data server 10, a data operation client 50, another terminal, and the like.
  • the input / output I / F 4 may be connected to a user interface device such as a display device or an input device.
  • the hardware configuration of the data server 10 is not limited.
  • FIG. 2 is a diagram conceptually illustrating a processing configuration example of the data server 10 in the first embodiment.
  • the data server 10 includes a data operation unit 12, a tree search unit 13, a tree generation unit 14, a tree update unit 15, a version comparison unit 16, one or more logical nodes 11, and the like.
  • Each logical node includes a link generation unit 17, a node ID storage unit 18, a link table 19, a tree storage unit 20, a data access unit 21, a data storage unit 22, a value range storage unit 23, and the like.
  • processing units are realized by the CPU 2 executing a program stored in the memory 3.
  • the program is installed from a portable recording medium such as a CD (Compact Disc) or a memory card or another computer on the network via the input / output I / F 4 and stored in the memory 3.
  • a portable recording medium such as a CD (Compact Disc) or a memory card or another computer on the network via the input / output I / F 4 and stored in the memory 3.
  • the logical node 11 and each processing unit 12 to 16 are shown to be different software elements, but each processing unit 12 to 16 is provided for each logical node 11. Also good.
  • the logical node 11 is also simply referred to as the node 11.
  • the node ID storage unit 18 corresponds to the node identifier storage unit in the above-described embodiment. That is, the node ID storage unit 18 stores a node ID assigned to each node 11 within a finite ID space having a ring structure. For example, the hash value of the IP address of the corresponding server is used as the node ID.
  • the link table 19 stores the link relationship between the node 11 and other nodes as described in the above embodiment.
  • the link table 19 in the first embodiment stores a node ID, an IP address corresponding to the node, and a link relationship with the own node 11 for each of the other nodes.
  • the IP address corresponding to each node is an IP address used for communicating with each node, for example, the IP address of the data server 10 in which each node is realized.
  • the link relationship stored in the link table 19 includes whether or not the link table 19 is linked to the own node 11 and, if linked, a number (link order or the like) for identifying the link.
  • the link generation unit 17 builds a link relationship based on the distance in the ID space between the ID of the own node 11 and the ID of any other node in the distributed system 1 and reflects the content in the link table 19.
  • the Chord algorithm, the Koorde algorithm, or the like is used for the construction of the link relationship (construction of the ID topology).
  • the first embodiment does not limit the ID topology construction method as long as the topology is constructed to have a ring structure in a finite ID space.
  • FIG. 3 is a diagram conceptually illustrating an example of the link relationship of the logical nodes 11.
  • FIG. 4 is a diagram conceptually showing the link relationship based on the node N (1) shown in FIG.
  • the node N (1) is linked to the nodes N (3) and N (4), and the node N (3) is connected to the nodes N (5), N (6) and N (7) and node N (4) are linked to nodes N (7) and N (8).
  • the ID space has a ring structure.
  • this ring structure is also referred to as an ID ring.
  • the node 11 having the closest ID larger than the ID of the own node 11 is represented as a successor node or a suc node, and has an ID smaller than and closest to the own node 11.
  • the node 11 is expressed as a predecessor node or a pred node.
  • the node 11 having the maximum node ID in the ID space has the node 11 having the minimum node ID in the ID space as the suc node and has the minimum node ID in the ID space.
  • the node 11 having the maximum node ID in the ID space is a Pred node. Note that such a link relationship on the ID ring can be immediately identified by the value of the node ID, and therefore does not have to be stored in the link table 19 or between adjacent nodes in the ID space as described above. May be stored in the link table 19 together with the relationship.
  • the adjacent node 11 on the ID ring is referred to as a suc node or a pred node
  • the node 11 that is not adjacent on the ID ring and has a link established is referred to as a link destination node.
  • the distance from a certain node 11 to the other node following the link is expressed as a hop. That is, a node that is directly linked to a certain target node 11 is represented as a link destination node of the first hop of the target node 11, and a node that is directly linked to the link destination node of the first hop is the node of the target node 11. It is expressed as a link destination node of the second hop.
  • the data storage unit 22 stores some partial data of a plurality of partial data obtained by dividing data ordered in attribute value order.
  • Data handled in the present embodiment is data composed of a plurality of rows (tuples) each including a plurality of columns (attributes).
  • the stored attribute value may be a one-dimensional value obtained by processing a plurality of attribute values by space filling curve processing.
  • the data may be a conditional expression instead of the data itself.
  • the partial data stored in the data storage unit 22 has a value range for each attribute.
  • the range storage unit 23 stores, as metadata, the boundary value of the range for each attribute with other nodes that have divided the data.
  • Another node that is in a range that divides a value range from a certain node is an adjacent node having an ID that is closest to the ID of the certain node in the ID space.
  • the range boundary values stored in the range storage unit 23 in each node can have various forms.
  • a form in which the start point of the range is managed as a range boundary value (management form 1)
  • a form in which the end point of the range is managed as a range boundary value (management form 2)
  • there is a form in which both the start point and the end point are managed (management form 3).
  • both the start point and end point of the range corresponding to the partial data stored in the Suc node are managed (management mode 4), and both the start point and end point of the range corresponding to the partial data stored in the Pred node are managed.
  • Management form 5 form in which both the start point and end point of the range relating to the own node and the suc node are managed (management form 6), and both the start point and end point of the range relating to the own node and the Pred node are managed. (Management form 7).
  • each management form it is desirable to select each management form according to system requirements. For example, when the simplest configuration is desired, the management form 1 or 2 can be selected. In addition, for example, in a system in which data consistency is a requirement, the management form 3, 6 or 7 can be selected. In such a system, range boundary values are synchronized between adjacent nodes. Also, for example, in a system where high fault tolerance is a requirement, depending on the adjacent node (Suc node or Pred node) acting as a secondary node (backup node) of the own node, the management forms 4, 5, 6 or 7 can be selected. In such a system, the adjacent node (Suc node or Pred node) of the target node manages the range information of the target node. The present embodiment does not limit the form of range information managed in each node.
  • FIG. 5 is a diagram conceptually showing the relationship between the ID ring and range information.
  • the node N (0) stores the range boundary value (25) regarding the range boundary with the adjacent node N (1)
  • the node N (0 1) stores the range boundary value (32) regarding the range boundary with the adjacent node N (2).
  • the range for each attribute assigned to each node is determined corresponding to the ring structure of the ID space.
  • the attribute value (200) is determined to be larger than the range boundary value (175) of the node N (6) and smaller than the range boundary value (3) of the node N (7).
  • Such a circulation order in the attribute value space is used, for example, by the tree search unit 13 or the like.
  • the data access unit 21 receives a data access request to the own node 11, and the attribute value or attribute value range included in the request is included in the value range handled by the own node 11 stored in the value range storage unit 23. To determine whether or not If not included, the data access unit 21 returns invalidity to the issuer of the request. If the included attribute value or attribute value range exists, the data access unit 21 permits arbitrary processing to the data storage unit 22 and Return the result to the issuer of the request.
  • the tree storage unit 20 stores tree structure data for each attribute composed of a plurality of tree nodes each indicating a value range, as described in the above embodiment.
  • the tree structure data stored in the tree storage unit 20 in the first embodiment has a plurality of hierarchies, and has tree data for each hierarchy.
  • the node as an element which comprises this tree structure data is described as a tree node.
  • the hierarchy which each tree data of each hierarchy contained in this tree structure data has is described with a step.
  • the tree node is classified into a root tree node, a branch tree node, and a leaf tree node according to the existing stage.
  • the root node and the branch node include a pointer to a node (child tree node) one level below, and the leaf node includes a pointer to data that can specify the logical node 11 that is a data storage destination.
  • Each tree node has an entry that includes such a pointer and range information that specifies a range for selecting such a pointer.
  • the tree node in the first embodiment has the following characteristics in addition to such a structure similar to a tree data structure for searching for existing data such as a B-tree. Specifically, a range of attribute values not including all attribute values in the target attribute can be set in each root tree node of each tree data. Since the conventional tree data structure is composed of one piece of tree data, a range of attribute values including all attribute values in the target attribute is set in the root tree node. On the other hand, each root tree node in each hierarchy in the first embodiment supports a part of the range of all attribute values in the target attribute, and the whole root tree node in all hierarchies supports the range of all attribute values in the target attribute. To do.
  • the tree data of the first layer (hierarchy 0) is generated from the range information that the own node has in the range storage unit 23. Therefore, the structure of the tree data of hierarchy 0 corresponds to the management mode of the range information as described above. Therefore, for example, the tree data of the hierarchy 0 of the management form 6 is formed from root tree nodes having the following three entries. In this case, the root tree node also has the position of the leaf tree node.
  • the first entry includes the start point of the value range handled by the own node (the end point of the value range handled by the Pred node of the own node) and a pointer to data that can identify the own node.
  • the second entry includes the end point of the value range handled by the own node (the start point of the value range handled by the suc node of the own node) and a pointer to data that can identify the suc node of the own node.
  • the third entry includes the end point of the value range handled by the suc node of the self node and no value (Null).
  • node specifying data Data that can specify a certain node is hereinafter referred to as node specifying data. For example, a node ID is used as the node specifying data.
  • the tree data of the second hierarchy (hierarchy 1) is generated from the range information that the link destination node has in the range storage unit 23. Therefore, the structure of the tree data of the hierarchy 1 also corresponds to the management mode of the range information as described above.
  • the tree data of the hierarchy 1 in the management form 4 has a plurality of entries as follows. In each entry, an end point of a range that each link destination node is responsible for and a pointer to node specifying data of the suc node of the link destination node are set, and the last link destination node is set in the range boundary value of the last entry. The end point of the value range handled by the suc node is set, and no value (Null) is set for the pointer.
  • the last link destination node is a link destination node having a maximum ID value among a plurality of link destination nodes.
  • Hierarchy L (L is an integer of 2 or more) tree data is formed from information on each link destination node of the L hop and has an L-stage configuration.
  • the root tree node of the tree data of the hierarchy L includes at least one entry including a pointer to a child tree node associated with the link destination node and a value indicating a value range for selecting the pointer.
  • the form of associating the pointer to the child tree node with the link destination node is not limited as long as the node specifying data (for example, the node ID) of the corresponding link destination node can be acquired from the pointer.
  • the tree node below the root tree node of the hierarchy L is generated from the tree data of the hierarchy (L-1) in the link destination node. This generation method will be described later.
  • FIG. 6A is a diagram conceptually illustrating an example of the tree structure data of the node N (1) based on the link examples of FIGS. 3 and 4 in the management form 3.
  • FIG. 6B is a diagram conceptually illustrating an example of the tree structure data of the node N (1) based on the link examples of FIGS. 3 and 4 in the management form 6.
  • the left triangles in FIGS. 6A and 6B indicate each layer, and the right side indicates tree data in each layer.
  • the arrows in FIGS. 6A and 6B indicate a pointer, and the tip of the arrow indicates node specifying data.
  • N (x). sV indicates a range start point of the node N (x), and N (x). eV indicates the range end of the node N (X).
  • the example of FIGS. 6A and 6B shows tree structure data stored by the node N (1), and this tree structure data has tree data of three layers. In FIGS. 6A and 6B, the portion where Null is set is not shown.
  • the value range start point (N (1) .sV) of the own node the value range end point (N (1) .eV) of the own node, and a pointer to the node specifying data of the own node are set. ing.
  • the following data is set in each entry of the hierarchy 1 tree data.
  • the range start point (N (3) .sV) of the node N (3) that is the link destination node is set, and the pointer of the node N (3) is set in the pointer of the first entry Pointer to node specific data is set.
  • the range start point (N (4) .sV) of the node N (4) that is the link destination node is set, and the pointer of the node N (4) is set in the pointer of the second entry Pointer to node specific data is set.
  • the range end point (N (4) .eV) of the node N (4) is set, and Null is set in the pointer of the third entry.
  • the tree data of the hierarchy 2 includes a root tree node and two leaf tree nodes.
  • the root tree node includes child tree nodes (corresponding to nodes N (3) and N (4) which are link destination nodes. Two pointers to (leaf tree node) are included.
  • the two leaf tree nodes are linked to the nodes N (3) and N (4), and are the second hop destination nodes N (5) to N (8) that are based on the node N (1).
  • the leaf tree node indicated by the pointer associated with the node N (3) is generated from the tree data of the hierarchy 1 of the node N (3) and is associated with the node N (4). Is generated from the tree data of the hierarchy 1 of the node N (4).
  • an entry indicating a value range of the second hop nodes N (5) to N (8) is set in the root node of the hierarchy 2.
  • the tree data of each hierarchy shown in FIG. 6B will be described.
  • a pointer to the node specific data and an end point of the value range are set for the node N (2) that is the suc node of the own node N (1) in addition to the configuration shown in FIG. 6A. Is done.
  • a pointer to node specific data and an end point of a value range are set in the tree data of the hierarchy 1 regarding the node N (5) that is the suc node of the last link destination node N (4). Is done.
  • the tree data of the hierarchy 2 includes a pointer to the node specific data and a range of values related to the node N (9) that is the suc node of the last link destination node N (8) of the second hop. The end point is set.
  • the tree data of each hierarchy is generated in a form corresponding to the management form of the range information in each node.
  • the tree data of the hierarchy 0 is generated from the range information that the own node has in the range storage unit 23
  • the tree data of the hierarchy 1 is generated from the range information that the link destination node has in the range storage unit 23
  • the hierarchy L ( (L is 1 or more) tree data is consistent in that it is generated from the tree data of the link destination node hierarchy (L-1).
  • the smaller the hierarchy number of the tree data the higher the freshness of the range information reflected in the tree data.
  • version information is added to each tree node of each tree data. This version information is updated according to the range change. This version information is used by the version comparison unit 16 or the like.
  • the data operation unit 12 acquires a target attribute and an attribute value or a range of attribute values from a determination condition of operation target data acquired by an input from an application program or a user interface device, and the attribute value or attribute value
  • the node 11 corresponding to the value range is detected, and the data access process is executed for the node 11.
  • the corresponding node 11 is acquired from the tree search unit 13 by passing the target attribute and the attribute value or attribute value range to the tree search unit 13. If the data access fails, the data operation unit 12 inquires the tree search unit 13 again about the data access destination node.
  • the tree search unit 13 When the tree search unit 13 acquires the target attribute and the attribute value or the attribute value range from the data operation unit 12, the tree search unit 13 acquires the tree structure data related to the specified attribute of an arbitrary node from the tree storage unit 20, and The node 11 that stores the partial data corresponding to the attribute value or the attribute value range is identified from the inside.
  • the tree search unit 13 requests the tree generation unit 14 to generate tree data when the node 11 cannot be specified or when there is no tree data of a certain level of tree structure data. Detailed processing of the tree search unit 13 will be described in detail in the section of the operation example.
  • the tree generation unit 14 generates the tree structure data as described above.
  • the tree generation unit 14 acquires the communication address of the link destination node from the link table 19 of the target node 11, and uses the communication address.
  • the link destination node By using the link destination node, the tree data of the hierarchy (L-1) stored in the tree storage unit 20 of the link destination node is acquired.
  • the tree generation unit 14 may acquire the tree data of the hierarchy 0 stored in the tree storage unit 20 of the link destination node, or the link
  • the range information stored in the range storage unit 23 of the previous node may be acquired. Detailed processing of the tree generation unit 14 will be described in detail in the section of an operation example.
  • each node 11 manages range information regarding other nodes by using tree structure data stored in the tree storage unit 20. Therefore, a situation occurs in which the range change is not reflected in the tree structure data of a certain node 11 even though the range is changed in another node. In such a situation, the tree search unit 13 may identify an inappropriate node 11, that is, a node 11 that does not store partial data corresponding to a target attribute value or attribute value range. is there.
  • the tree update unit 15 confirms whether or not the tree structure data stored in each node 11 is the latest range information at an arbitrary timing, and the old range information The tree data that has become is updated with the latest range information. Specifically, for the tree data of each hierarchy higher than hierarchy 2, the tree update unit 15 performs the version of the child tree node indicated by the pointer with respect to the link destination node associated with the pointer included in the root tree node. Send a version confirmation request with information set. The tree update unit 15 updates the tree data and the version information of the layers having different versions by using the tree data and the version information included in the reply from the link destination node.
  • the tree update unit 15 periodically performs the version check and the update of the tree structure data at a predetermined cycle asynchronously with the data access process executed by the data operation unit 12. In this way, the transmission time of the range change to all the nodes can be shortened. As a result, the situation in which the tree search unit 13 identifies an inappropriate node 11 can be reduced. The increase in time can be suppressed.
  • the version comparison unit 16 transmits the version information included in this version confirmation request of the hierarchy (L-1) possessed by the node 11. Compare with the version information of the tree data. The version comparison unit 16 returns the tree data of the layer (L-1) having a different version together with the version information of each tree node to the other node of the request source.
  • the management form 6 that is, the form in which both the start point and the end point of the range relating to the own node and the Suc node are managed is used.
  • FIG. 7 is a flowchart showing an operation example of the tree generation unit 14 in the first embodiment.
  • the tree generation unit 14 receives a generation request in which an attribute and hierarchy of an arbitrary node 11 (target node 11) are specified, the tree generation unit 14 specifies the generation target attribute (S51), and according to the specified hierarchy, The following operation is performed (S52).
  • the tree generation unit 14 When the designated hierarchy is 0, the tree generation unit 14 generates each entry of the root tree node in the tree data of the hierarchy 0 of the target node 11 based on the range information stored in the range storage unit 23. The tree generation unit 14 sets, in the first entry, the range start point of the target node 11 and a pointer to data that can identify the target node 11 (S53).
  • the tree generation unit 14 generates a second entry of the root tree node in the tree data of the hierarchy 0 of the target node 11 (S54).
  • the tree generation unit 14 sets the value range start point of the suc node of the target node 11 and a pointer to the node specifying data of the suc node of the target node 11 in the second entry.
  • the tree generation unit 14 generates a third entry of the root tree node in the tree data of the hierarchy 0 of the target node 11 (S55).
  • the tree generation unit 14 sets a value range end point of the suc node of the target node 11 and no value (Null) in the third entry.
  • the tree generation unit 14 first specifies the link destination node m of the target node 11 with reference to the link table 19 (S61). When there are a plurality of link destination nodes, one of them is specified as the link destination node m. The initial value of m is 1.
  • the tree generation unit 14 generates the mth entry of the root tree node in the tree data of the hierarchy 1 (S62).
  • the tree generation unit 14 sets the range start point of the link destination node m and a pointer to the node specifying data of the link destination node m in the m-th entry.
  • the tree generation unit 14 acquires the communication address of the link destination node m from the link table 19, and acquires the range start point and the node specifying data from the link destination node m using the communication address.
  • the tree generation unit 14 executes (S61) and (S62) described above for all link destination nodes (S66).
  • the tree generation unit 14 If the link destination node m is the last link destination node (S63; YES), the tree generation unit 14 generates the (m + 1) th entry (S64), and further generates the (m + 2) entry (S65). ). Specifically, the tree generation unit 14 sets the range end point of the link destination node m and the pointer to the node specifying data of the suc node of the link destination node m in the (m + 1) th entry (S64). . Further, the tree generation unit 14 sets the range end of the suc node of the link destination node m in the (m + 2) th entry (S65).
  • the range end point of the link destination node m, the node specifying data of the suc node of the link destination node m, and the range end point of the suc node of the link destination node m are acquired from the link destination node m.
  • the tree generation unit 14 sets no value (Null) to the pointer of the last entry.
  • the tree generation unit 14 specifies the link destination node m of the target node 11 (S56) as in the above (S61). Subsequently, the tree generation unit 14 requests the link destination node m for the tree data of the hierarchy (L-1), and in response to this request, the tree generation unit 14 obtains the tree data of the hierarchy (L-1) from the link destination node m. Obtain (S57). Also at this time, as described above, the communication address of the link destination node m is acquired from the link table 19.
  • the tree generation unit 14 generates, from the acquired tree data, a tree node and lower specified by a certain pointer of the root tree node of the tree data of the hierarchy L (S58). That is, the tree generation unit 14 generates second and subsequent tree nodes based on the acquired tree data. When the acquired tree data is formed away from the two-stage tree node, the tree generation unit 14 connects the two-stage tree data to the root tree node.
  • the tree generation unit 14 generates the mth entry of the root tree node of the tree data of the hierarchy L (S59).
  • the tree generation unit 14 includes, in the m-th entry, the range boundary value set in the first entry of the root tree node of the acquired tree data and the tree data generated from the root tree node of the acquired tree data Set a pointer to At this time, information duplicated with a tree other than the m-th entry may be deleted as appropriate.
  • the tree generation unit 14 executes (S56), (S57), (S58), and (S59) described above for all link destination nodes (S60). For the last link of the root tree node of the tree data of the hierarchy L, the tree generation unit 14 has a range end point set in the last entry of the root tree node of the tree data and the pointer has no value (Null). Set the entry.
  • the generation process of the tree data of the hierarchy 1 and the generation process of the tree data of the hierarchy L (L ⁇ 2) are distinguished from each other. You may make it produce
  • the step (S52) it is determined whether the hierarchy is 0 or L (L ⁇ 1), and if the hierarchy 1 is designated, the process (S56) and subsequent steps may be executed.
  • FIG. 8 is a flowchart showing an operation example of the tree update unit 15 and the version comparison unit 16 in the first embodiment.
  • Each node 11 causes the tree update unit 15 to operate as follows at a predetermined timing.
  • the tree update unit 15 refers to the link table 19 to identify the link destination node m of the target node 11 (S70). When there are a plurality of link destination nodes, one of them is specified as the link destination node m. The initial value of m is 1.
  • the tree update unit 15 acquires the version information of the tree node specified by the pointer associated with the link destination node m included in the root tree node for each of the hierarchies 2 and higher of the target node 11. (S71).
  • the child tree node specified by the corresponding pointer is a branch tree node
  • version information of the child tree node and all tree nodes under the child tree node may be acquired.
  • the tree update unit 15 transmits to the link destination node m a version confirmation request that includes each version information acquired for each of the tiers 2 and higher (S72). Also at this time, as described above, the communication address of the link destination node m is acquired from the link table 19.
  • the link destination node m When the link destination node m receives this version confirmation request (S81), it causes the version comparison unit 16 to operate as follows.
  • the version comparison unit 16 compares the version information of each layer n included in the version confirmation request with the version information of each layer (n ⁇ 1) one level lower (S82). For example, the version information of the hierarchy 2 included in the version confirmation request is compared with the version information of the hierarchy 1 of the link destination node m, and the version information of the hierarchy 3 included in the version confirmation request is the hierarchy information of the hierarchy 2 of the link destination node m. Compared with version information.
  • the version comparison unit 16 corresponds to the tree data (including the version information) in the hierarchy having different versions, as the range information (the tree data in the hierarchy 0 of the link destination node m) of the link destination node m. ) And the response to the target node 11 (S83).
  • tree data of a hierarchy having different versions is formed from a plurality of tree nodes, data and version information relating to the plurality of tree nodes are returned.
  • the hierarchy (n -1) Tree data and version information are set in the reply.
  • the target node 11 When the target node 11 receives this reply (S73), it causes the tree update unit 15 to operate as follows. First, the tree update unit 15 relates to the tree data of the hierarchy 1, the range boundary value set in the entry corresponding to the range information possessed by the link destination node m, and the latest range information possessed by the link destination node m included in the reply. And compare. If they are different, the tree update unit 15 updates the range boundary value of the entry with the latest range information, and moves up the version information of the tree data of the hierarchy 1 (S74).
  • the tree update unit 15 refers to the reply and determines whether or not there is a hierarchy having a different version (S75).
  • the tree update unit 15 updates the partial tree data corresponding to the link destination node m in the hierarchy with different versions of the target node 11 with the new tree data included in the reply (S76). For example, when the version of the hierarchy 2 is different, the tree update unit 15 determines the child tree specified by the pointer corresponding to the link destination node included in the root tree node in the tree data of the hierarchy 2 of the target node 11. The nodes and below are updated with the tree data included in the reply. At this time, the version information of each tree node below the corresponding child tree node is also updated. Further, the range boundary value of the entry corresponding to the link destination node of the root tree node of hierarchy 2 is also updated.
  • the tree update unit 15 moves up the version information of the root tree node of the hierarchy having a different version (S77).
  • the tree update unit 15 executes (S70) to (S77) described above for all link destination nodes (S78).
  • the tree update unit 15 specifies a tree identified by a pointer associated with the link destination node m included in the root tree node for each of the hierarchies 1 and higher of the target node 11. Node version information may be acquired.
  • the version comparison unit 16 does not have to return the range boundary value of the link destination node m, and the tree update unit 15 does not have to execute the step (S74).
  • FIG. 9 is a flowchart showing an operation example of the tree search unit 13 in the first embodiment.
  • the tree search unit 13 acquires the target attribute and the attribute value or the attribute value range from the data operation unit 12, the tree search unit 13 relates to the target attribute from the tree storage unit 20 of an arbitrary node 11 (hereinafter referred to as the target node 11).
  • Tree structure data is acquired (S90).
  • the tree search unit 13 sets an initial value 0 to the hierarchy L (S91).
  • the hierarchy 0 is the lowest hierarchy, and the hierarchy L (1 or more) is an upper hierarchy.
  • the tree search unit 13 determines whether or not tree data of the hierarchy L exists in the acquired tree structure data (S92). When the tree data of the hierarchy L does not exist (S92; NO), the tree search unit 13 requests the tree generation unit 14 to create the tree data of the hierarchy L of the target node 11 (S93). In response to this request, tree data of the hierarchy L of the target node 11 is generated as described above.
  • the tree search unit 13 acquires tree data of the hierarchy L (S94), and identifies a node (destination node) having a value range corresponding to the attribute value of the target attribute or the attribute value range from the tree data of the hierarchy L. (S95). Details of the destination node specifying process will be described later with reference to FIG.
  • the tree search unit 13 If the tree search unit 13 succeeds in specifying the destination node (S96; YES), the tree search unit 13 outputs information about the destination node (S97). Based on the output information, the data operation unit 12 transfers a data access request to the destination node.
  • the layer L is incremented by 1 when the destination nodes of all virtual nodes fail to be identified in one layer. You may do it.
  • FIG. 10 is a flowchart showing an example of the operation of specifying the destination node from the tree data of the hierarchy L of the tree search unit 13 in the first embodiment. That is, FIG. 10 shows the detailed operation of (S95) in FIG.
  • the tree search unit 13 specifies the root tree node of the tree data of the hierarchy L (S100).
  • an initial value 0 (indicating the highest layer) is set for the layer L (S101).
  • the tree search unit 13 is specified based on the circulation order in the attribute value space of the target attribute using the range boundary value of the first entry of the specified tree node (here, the root tree node) as a reference value.
  • the entry including the value range corresponding to the attribute value or the attribute value range of the target attribute is identified from the tree nodes (S102). As described above, this circulation order corresponds to the ring structure of the attribute value space corresponding to the ID ring.
  • the tree search unit 13 determines the specification failure of the destination node (S108). On the other hand, when the tree search unit 13 succeeds in specifying the entry (S103; YES), the tree search unit 13 determines whether or not the pointer of the specified entry points to the node specifying data (S104).
  • the tree searching unit 13 When the tree search unit 13 indicates the node specifying data (S105; YES), the tree searching unit 13 acquires the node specifying data indicated by the pointer (S107). This process corresponds to identification of the destination node.
  • the tree search unit 13 specifies the child tree node pointed to by the pointer when the node specifying data is not pointed (S105; NO), that is, when the pointer points to the child tree node (S106).
  • the tree search unit 13 executes (S102) and subsequent steps for the identified tree node.
  • the node 11 uses the tree structure data stored in the tree storage unit 20 of the own node 11 in response to the data access request related to the attribute value or the attribute value range of the target attribute.
  • the destination node that stores the partial data that is the target of the data access request is specified.
  • the data access request can be directly transferred to the destination node specified by a certain node 11, an increase in the data access time associated with the inter-node transfer of the data access request is increased. Can be prevented.
  • the tree structure data reflecting the range information possessed by each node 11 is automatically generated from the tree data acquired from the link destination node of each node 11.
  • each tree node included in the tree structure data is assigned version information, and each node 11 stores this version information at a predetermined timing in the background of the data access process. Used to check and update the version of its own tree structure data. At this time, each node 11 acquires the latest tree data reflecting the range change from the link destination node.
  • the first embodiment since range information is exchanged between the node 11 and the link destination node, it is necessary to provide a specific server group such as a metadata server that centrally manages the range information. Thus, load concentration on a specific server group can be prevented. In addition, when a specific server group is provided, it becomes necessary to make the system robust and manage so that they do not become a single point of failure. It is possible to reduce the labor of countermeasures and operation and maintenance. According to the first embodiment, even if the range information generated individually at each node 11 disappears for some reason, it can be restored by acquiring it again from the link destination node. Operation and maintenance labor can also be reduced.
  • each node 11 operates to keep the range information (tree structure data) up-to-date autonomously and separately from the data access process.
  • range information tree structure data
  • the tree structure data reflecting the range information is formed to have the same structure as the link relation of the node IDs, and the version confirmation and acquisition of the range information (tree structure data) is performed for each node. 11 and the link destination node of each node 11.
  • the number of times of performing version confirmation (range change confirmation) at a predetermined time is the number of links of each node 11. The load of can also be suppressed.
  • each node 11 may update the tree structure data at the time of data access as well as performing version check every predetermined time.
  • the node ID corresponding to a certain key value is obtained by referring to the tree structure data, and after accessing the node, the value range is already old and the access is invalid and failed.
  • the tree structure can be updated with respect to the link corresponding to the path from the value tree node to the leaf tree node in the tree structure data.
  • the method of constructing the link relationship based on the node ID is not limited.
  • a new method is applied as the link relationship construction method, and system parameter adjustment processing related thereto is added.
  • the configuration of the distributed system 1 in the second embodiment is the same as that in the first embodiment, and the processing of the data server 10 is different from that in the first embodiment.
  • the data server 10 in the second embodiment will be described focusing on the contents different from the first embodiment, and the same contents as in the first embodiment will be omitted as appropriate.
  • FIG. 11 is a diagram conceptually illustrating a processing configuration example of the data server 10 in the second embodiment.
  • the data server 10 in the second embodiment further includes a parameter setting unit 31 in addition to the configuration of the first embodiment.
  • the link generation unit 17 constructs a link relationship based on the node ID by a new algorithm (hereinafter referred to as extended Koorde), and reflects the content in the link table 19.
  • extended Koorde a new algorithm
  • each node 11 is a Suc node, a Pred node corresponding to a value obtained by multiplying the ID of each node 11 by a parameter k (natural number), and (k ⁇ 1) Suc nodes from the Pred node. And establish a link with each.
  • the number of link destination nodes of all the nodes 11 is determined by a fixed value k.
  • the well-known Koorde is a node in the de Bruijn graph, but a node whose ID does not logically exist as a node is an absent node (Imaginary Note), and this absent node is managed by the Pred node. Take the expected distribution of the number of links required.
  • the present invention derives the distribution of the number of links necessary for hopping between the nodes of the de Bruijn graph, but the well-known method takes only the expected value of the distribution and calculates the number of link destination nodes. It can be interpreted that k was fixed. Therefore, in the well-known Koorde, there may be an order that is more than the required order (the number of link destination nodes), or there may be an order that is less than the required order, and when it is insufficient, routing (transfer) to the suc node. ). Independent of the way of linking, the well-known Koorde performs a shift operation on the number of (log 2 k) bits corresponding to the k-adic number, so k is limited to an exponential power of 2.
  • each node 11 has a first link destination node that is a Pred node for a value obtained by multiplying its own node ID by a parameter k (an integer of 2 or more), and the suc of its own node.
  • a second link destination node which is a Pred node for a value obtained by multiplying the node ID by a parameter k times, and a link destination node existing between the first link destination node and the second link destination node in the ID ring Each establishes a link.
  • the number (order) of link destination nodes determined for each node 11 has a probability distribution controlled by the parameter k, and many nodes 11 have orders smaller than the parameter k.
  • Node 11 has an order greater than the parameter k.
  • the expected value of the order is k + 1.
  • value obtained by multiplying ID by parameter k, etc.” means the remainder of (ID ⁇ k) divided by 2 b (ID space size) for convenience of explanation. It is an expression. In other places, it is simplified as “value obtained by multiplying ID by parameter k” as an expression indicating the meaning of “the remainder obtained by dividing (ID ⁇ k) by 2 b (size of ID space)”. There is a case.
  • the tree update unit 15 holds the value of the polling interval T, and executes the version confirmation based on the polling interval T.
  • the polling interval T may be a value that is inversely proportional to the order of each node, or may be the same value throughout the system. When inversely proportional, there is a merit that the polling load of each node becomes uniform. When the values are the same throughout the entire system, the time from when the range change occurs until the tree of each node is reflected in the original range can be restricted within a certain range.
  • the parameter setting unit 31 includes a maximum time wmax until the change of the range in a certain node 11 is transmitted to all the nodes 11 in the distributed system 1, a unit time load ⁇ for version confirmation executed by each node 11, At least one of the parameters k and T is set so as to satisfy the system requirement (constraint) for the maximum tree height hmax related to the tree update.
  • the system request is a minimization request such as setting an upper limit constraint that should be less than a certain value or reducing the load as much as possible.
  • the maximum height hmax is a system requirement (constraint) that includes a one-hop communication delay and processing time (indicated as ⁇ 0) per one level of the tree.
  • the delay in execution related to the update is (hmax ⁇ ⁇ 0) time, and ⁇ 0 is a predetermined value.
  • the unit time load ⁇ indicates, for example, the number of version confirmations per second executed by each node.
  • a delay in execution related to update is simply referred to as a delay in execution, and a communication delay and processing time of one hop per one level of the tree are expressed as an execution delay per one hop.
  • T is the same for all the nodes 11 (the total number N of nodes), and that the constraint time wc for the maximum time wmax is given.
  • T may be different for all nodes, and the polling interval T for each node is determined based on the constraint load ⁇ c with respect to the unit time load ⁇ .
  • the parameter setting unit 31 updates the value held by the tree update unit 15 at the determined polling interval T.
  • the parameter k is determined based on the tree height constraint hc with respect to the maximum tree height hmax.
  • the constraint time wc, the constraint load ⁇ c, and the tree height constraint hc may be acquired from another device via the communication device 7 or may be a user interface connected to the input / output I / F 4. It may be input by operating the device by a user, or may be acquired from a portable storage medium via the input / output I / F 4.
  • the parameter setting unit 31 satisfies the following (Formula 1) using the acquired constraint time wc, the total number N of nodes 11, and the parameter k used by the link generation unit 17.
  • the polling interval T to be calculated is calculated.
  • the parameter setting unit 31 uses the acquired constraint load ⁇ c and the number (order) D of the link destination nodes of the node acquired by the link generation unit 17 as follows.
  • a polling interval T that satisfies (Expression 2) is calculated.
  • the parameter setting unit 31 sets the parameter k according to the following (Equation 3) using the acquired tree height constraint hc. Note that the tree height constraint hc may be calculated from the execution time delay ( ⁇ 0) per one hop described above and the constraints on the execution time delay.
  • the polling interval T is the same value over the entire node, or when different for each node, it is assumed that the polling interval T is a value obtained from the distribution of the polling interval set in the above (Equation 2).
  • the expected value is (1 + k) / ⁇ c.
  • the unit time load ⁇ and the maximum time wmax vary according to the polling interval T of each node 11 and the parameter k.
  • the unit time load ⁇ can be expressed as in the following (formula 4).
  • the expected value of the time w required until the change of the range reaches all the nodes 11 is expressed by the following (formula 5).
  • the maximum time wmax can be expressed as shown below (Formula 6).
  • the right side of the above (Formula 5) is derived as follows. That is, when each version check executed by each node 11 is performed at the same timing independently and at a constant timing, and there are (log k N) stages, the time w required for propagation of the range change is (log k N It follows an Irwin-Hall distribution which is the sum of random variables according to a uniform distribution U (0, T). And the right side of the above (Formula 5) is derived from the expected value of the time w. The above (Equation 6) is obtained as the maximum value of this distribution.
  • the link generation unit 17 of each node 11 determines the link destination node of each node 11 by the extended Koorde algorithm.
  • the number (order) of link destination nodes in each node 11 is determined probabilistically.
  • the stochastic element resulting from the node ID being generated by hash does not appear in the number of links (constant) of each node 11, and between the Suc node and other nodes.
  • the number of links of each node 11 becomes probabilistic.
  • a single data server 10 has a large number of links 11 and the number of links. Therefore, there is a difference in the load of checking the version of the tree structure data in each node 11.
  • the version check load of the data server 10 can be made substantially constant.
  • the number (order, particularly the output order) at which one node links to another node is constant, but the number at which one node is linked from another node (input order) is: Stochastic and varied.
  • this variation exists, but the variation is smaller than that of the well-known Koorde, and the load is easily distributed. If the output order varies, it is possible to equalize the load by considering other factors such as the polling interval T as shown in the second parameter setting method described above.
  • the input order which is the “number of links”, to have a small degree of variation in the order as in the extended Koorde.
  • tree data of the hierarchy 1 or higher is generated according to the link relationship determined by the extended Koorde. Therefore, the transmission destination of the version confirmation request is excluded from the suc node and only the link destination node. And management of tree structure data reflecting range information can be facilitated. That is, a tree structure in which paths from each node to a node group that is h hop ahead can be balanced.
  • the polling interval T for realizing them is According to the polling interval T, the version of the tree structure data, that is, the range change confirmation is performed at each node 11. Therefore, according to the second embodiment, it is possible to prevent an unexpected load from being generated by the version confirmation process of the range information in each node 11.
  • each data server 10 that implements the node 11 that stores the partial data executes the above-described processing. However, in the device that does not store the partial data and does not implement the node 11, Such processing may be executed.
  • the distributed system 1 in the third embodiment further includes a data operation client 50 as an apparatus that does not store partial data and does not realize the node 11.
  • the distributed system 1 of the third embodiment will be described focusing on the contents different from the first embodiment, and the same contents as those of the first embodiment will be omitted as appropriate.
  • FIG. 12 is a diagram conceptually illustrating a configuration example of the distributed system 1 in the third embodiment.
  • the distributed system 1 in the third embodiment further includes a plurality of data operation clients (hereinafter simply referred to as clients) 50 in addition to the configuration of the first embodiment.
  • the client 50 is communicably connected to the data server 10 via the network 9. Similar to the data server 10, the client 50 accesses data stored in the data server 10 in response to a request from an application or another terminal, and acquires desired data.
  • the hardware configuration of the client 50 is the same as that of the data server 10, and the present embodiment does not limit the hardware configuration of the client 50.
  • FIG. 13 is a diagram conceptually illustrating a processing configuration example of the data operation client 50 in the third embodiment.
  • the client 50 includes a data operation unit 12, a tree search unit 13, a tree generation unit 14, a tree update unit 15, a version comparison unit 16, a link generation unit 17, a link table 19, and a tree storage unit 20. Etc.
  • Each of these processing units is basically the same as in the first embodiment.
  • the link generation unit 17 constructs a link relationship between any one or more nodes 11 among the plurality of nodes 11 realized by the plurality of data servers 10 and the client 50, and reflects this link relationship in the link table 19. To do. Since all the nodes hold the value ranges related to all the other nodes, the client 50 may have a link relationship of only one arbitrary node. Since the client 50 does not participate in the ID space constructed by the node ID of each node 11, that is, is not a target that is voluntarily accessed from each node 11, the link relationship construction method in the client 50 is not limited at all. .
  • the tree structure data stored in the tree storage unit 20 does not have hierarchy 0 tree data because the client 50 does not have an adjacent node on the ID ring.
  • the tree data of each hierarchy above hierarchy 1 is the same as in the first embodiment.
  • the tree generation unit 14 is the same as that of the first embodiment except that the tree data of the hierarchy 0 is not generated.
  • the same processing as in the first embodiment is performed in the client 50 that does not store the partial data and does not realize the node 11. Therefore, even when the client 50 in the third embodiment acquires a data access request, the same operations and effects as in the first embodiment can be achieved.
  • the finite range of the ID space of the node ID is [0, 1024), and nine nodes 11 are realized in the distributed system 1.
  • ID value a node having a certain ID value.
  • FIG. 14 is a diagram conceptually illustrating the relationship between the ID ring and the range information in the first embodiment.
  • the node (70) has a range of (10, 25)
  • the node (803) has a range of (175, 255] and (0, 3).
  • the link generation unit 17 of each node 11 determines the link destination node of the own node 11 by the extended Koorde algorithm.
  • the parameter k used in the extended Koorde algorithm is set to 2.
  • FIG. 15 is a diagram illustrating a part of the link relationship generated in the first embodiment.
  • the node (413) includes the above-described node (803) as the first link destination node, the above-described node (70) as the second link destination node, and the above-described third node existing between these nodes in the ID ring.
  • a link is established with the node (980) as the link destination node.
  • the node (803) is a Pred node for a value (826) obtained by multiplying the ID (413) of the node (413) by the parameter k (2).
  • the node (803) has a link with each node from the node (551) to the node (803).
  • the node (551) establishes a link with the node (70) and the node (129).
  • the node 70 establishes a link with the node (129) and the node (250).
  • the node (551) reaches from the node (70) to the node (250) in two hops.
  • Such a link relationship is generated by the link generation unit 17 of each node 11 and stored in the link table 19 of each node 11.
  • the tree search unit 13 and the first example in the first embodiment and The operation of the tree generation unit 14 will be described with reference to the flowcharts of FIGS.
  • the data operation unit 12 instructs the tree search unit 13 to specify the node 11 storing the partial data including the attribute value (35) with the node (413) as the target node. .
  • the tree search unit 13 acquires the attribute value (35) of the target attribute (S90), sets an initial value 0 to the hierarchy L (S91), and determines whether or not tree data of the hierarchy 0 exists (S92). ).
  • the tree search unit 13 requests the tree generation unit 14 to generate the tree data of the hierarchy 0 of the node (413) because the tree data of the hierarchy 0 does not exist (S92; NO) (S93).
  • the management form 6 that is, the form in which both the start point and the end point of the range related to the own node and the Suc node are managed is used. Therefore, at this time, the node (413) stores in the range storage unit 23 the start point (53) and end point (67) of the range of its own node (413), and the start point (67) and end point of the suc node (551) ( 138).
  • the tree generation unit 14 Based on the range start point (53) and range end point (67) of the own node (413) and the range start point (67) and range end point (138) of the Suc node (551), the tree generation unit 14 creates the following hierarchy: 0 tree data is generated (S53). First entry: Range boundary value (53), pointer related to node (413) Second entry: Pointer related to range boundary value (67), node (551) Third entry: Range boundary value (138), Null
  • the tree search unit 13 tries to specify a destination node having a value range including the attribute value (35) from the tree data of the hierarchy 0 (S95). However, since the value range indicated by the tree data of layer 0 is (53, 138), the attribute value (35) is not included.Therefore, the tree search unit 13 specifies the destination node in the tree data of layer 0. Since it cannot be performed (S96; NO), the search target level L is increased by one level (S98).
  • the tree search unit 13 requests generation of the tree data of the layer 1 of the node (413) from the tree generation unit 14 because the tree data of the layer 1 does not exist (S92; NO) (S93).
  • the tree generation unit 14 includes a range start point (175) of the link destination node (803), a range start point (3) of the link destination node (980), a range start point (10) and a range end point (25) of the link destination node (70). Based on the range end point (32) of the suc node (129) of the link destination node (70), the following hierarchical level 1 tree data is generated (S62).
  • the tree search unit 13 tries to specify a destination node having a value range including the attribute value (35) from the tree data of the hierarchy 1 (S95). However, since the value range indicated by the tree data of hierarchy 1 is (175, 32), the attribute value (35) is not included, so that the tree search unit 13 can specify the destination node in the tree data of hierarchy 1. Since it cannot be performed (S96; NO), the search target level L is further increased by one level (S98).
  • the tree search unit 13 Since the tree search unit 13 does not have the tree data of the hierarchy 2 (S92; NO), the tree search unit 13 requests the tree generation unit 14 to generate the tree data of the hierarchy 2 of the node (413) (S93).
  • the tree generation unit 14 acquires the tree data of the hierarchy 1 from the link destination nodes (803, 980, and 70) (S57), and generates the tree data of the hierarchy 2 based on the acquired tree data (S58). , S59). Thereby, the root tree node of the tree data of the hierarchy 2 is generated as follows.
  • Second entry Range boundary value (175), pointer to child tree node (corresponding to link destination node (980))
  • Third entry Range boundary value (25), pointer to child tree node (corresponding to link destination node (70))
  • the attribute value (53) is included.
  • (67, 67] is regarded as (67, 255] ⁇ [0, 67], and the attribute value (35) is included in this.
  • the tree search unit 13 sets (32, 53) to (32, 53). The entry to be the range is specified, the pointer of the entry is traced, and the pointer to the node specifying data of the node (250) is specified at the tree node one step below the root tree node (S107).
  • the data operation unit 12 acquires the communication address of the node (250) based on the node specifying data of the node (250) acquired from the tree search unit 13, and uses the communication address to acquire the node (250). ) Performs data access processing of the attribute value (35).
  • the tree structure data generated in this way is shown in FIG.
  • FIG. 16 is a diagram illustrating a part of the tree structure data generated at each node 11 in the first embodiment.
  • FIG. 17 is a diagram conceptually illustrating an example of load distribution in the first embodiment.
  • the node (129) stores the partial data having the range (25, 38)
  • the node (250) stores the partial data having the range (38, 53).
  • the load of the data node may be a data storage amount, a data access frequency, or the load around the logical node 11 may be equalized using the load around the data server 10 as an index.
  • the processing target of the tree update unit 15 and the version comparison unit 16 is a node (413) is taken as an example. At this time, it is assumed that the node (413) has tree structure data as shown in FIG.
  • the tree update unit 15 performs the following version check process at a predetermined timing.
  • the tree update unit 15 recognizes the link destination node (803, 980, 70) of the node (413) by referring to the link table 19 of the node (413), and one link destination node ( 803) is specified (S70). Subsequently, the tree update unit 15 determines the version information of the tree node specified by the pointer corresponding to the link destination node (803) set in the root tree node of the hierarchy 2 in the tree structure data of the node (413) ( Version 1 (ver. 1)) is acquired (S71). The tree update unit 15 transmits a version confirmation request including the version information (version 1) of the hierarchy 2 to the link destination node (803) (S72).
  • the version comparison unit 16 When the link destination node (803) receives the version confirmation request (S81), the version comparison unit 16 includes the layer 2 version information (version 1) included therein and the layer 1 version information of the link destination node (803). (Version 1) is compared (S82). Here, the versions are the same. Therefore, the version comparison unit 16 sends a reply including the range information possessed by the link destination node (803) (S83).
  • the range information management form (management form 6) of each node in the first embodiment as the range information held by the link destination node (803), the range start point (175) of the link destination node (803), the link destination node (803) The value range start point (3) and value range end point (10) of the suc node (980) are returned.
  • the tree update unit 15 When receiving the reply (S73), the tree update unit 15 is set from the first entry to the third entry corresponding to the range information of the link destination node (803) in the tree data of the hierarchy 1 of the node (413).
  • the current range boundary values (175, 3 and 10) are compared with the latest range information (175, 3 and 10) of the link destination node (803) included in the reply. Here, both are the same, and it is determined that the range has not been changed.
  • the tree update unit 15 determines whether or not there is a hierarchy having a different version by referring to the reply (S75).
  • the tree update unit 15 identifies the next link destination node (980) (S70).
  • the node (980) has tree structure data as shown in FIG.
  • FIG. 18 is a diagram conceptually illustrating an example of tree structure data of the node (980) after load distribution in the first exemplary embodiment. That is, since the range boundary value of the link destination node (129) of the node (980) has been changed, the version information of the tree data of the hierarchy 1 of the node (980) is carried up to 2.
  • the tree update unit 15 similarly performs the process (S71) for the link destination node (980), and transmits a version confirmation request including the version information (version 1) of the hierarchy 2 to the link destination node (980) (S72). ).
  • the version comparison unit 16 When the link destination node (980) receives the version confirmation request (S81), the version comparison unit 16 includes the layer 2 version information (version 1) included therein and the layer 1 version information of the link destination node (980). (Version 2) is compared (S82). Here, since the versions are different, the version comparison unit 16 uses the tree data (including version information) of the hierarchy 1 of the link destination node (980) and the range information (3, 10 and 25) held by the link destination node (980). A reply including is sent (S83).
  • the tree update unit 15 Upon receiving the reply (S73), the tree update unit 15 is set from the second entry to the fourth entry corresponding to the range information of the link destination node (980) in the tree data of the hierarchy 1 of the node (413).
  • the current range boundary values (3, 10 and 25) are compared with the latest range information (3, 10 and 25) held by the link destination node (980) included in the reply. Here, both are the same, and it is determined that the range has not been changed.
  • the tree update unit 15 determines that the version of the hierarchy 2 is different (S75; YES), and uses a pointer corresponding to the link destination node (980) included in the root tree node of the hierarchy 2
  • the identified tree node is updated with the tree data of the hierarchy 1 of the link destination node (980) included in the reply (S76).
  • the version information of the tree node specified by the pointer becomes 2.
  • the update may be a copy of the tree data included in the reply, or the range boundary value information in the tree data included in the reply is omitted in relation to the range boundary value set in the root tree node. You may be.
  • the tree update unit 15 uses the range boundary value (175) of the top entry of the tree data of the hierarchy 1 of the acquired link destination node (980) as the link destination node in the tree data of the hierarchy 2 of the node (413). The value is set to the range boundary value of the entry including the pointer associated with (980), and the version information of the root tree node of hierarchy 2 is carried up (S77). Subsequently, the tree update unit 15 specifies the next link destination node (70) (S70). Thereafter, the same version confirmation process is executed for the link destination node (70).
  • FIG. 19 is a diagram conceptually illustrating an example of the tree structure data after the version update of the node (413) in the first embodiment.
  • the version information (Ver. 3) of the root tree node and the version information of the child tree node specified by the pointer associated with the link destination node (980) ( Ver.2), the version information (Ver.2) and the range boundary value (38) of the child tree node specified by the pointer associated with the link destination node (70) are updated.
  • the nodes other than the node (413) that have a link to the node (980) are similarly processed, and new range information is acquired.
  • duplicate entries there are duplicate entries (three entries including range boundary values (25, 38 and 53)) in the tree data acquired from the link destination node (980) and the tree data acquired from the link destination node (70).
  • the duplicate entry is excluded from the child tree node specified by the pointer associated with the previous link destination node (980).
  • the tree nodes other than the root tree node of the tree data of the hierarchy 2 or higher may be a copy of the tree data included in the reply, or are modified from the tree data in order to eliminate redundancy. There may be.
  • the range boundary value is changed in the deleted entry because of redundancy, but the version information of the child tree node specified by the pointer associated with the link destination node (980) is carried up. It was. However, version information may not be carried up for updates to entries that are deleted due to redundancy (a part that overlaps with one's own suc).
  • Example 2 an extended Koorde and parameters used in the above-described second embodiment will be described.
  • the extended Koorde input order (indegree), output order (outdegree), and the height of the constructed tree (or the number of hops) depend strongly on a random variable related to the distance of each node to the Suc node.
  • the number of virtual servers number of logical nodes 11 around one physical server (data server 10) is v and the total number of logical nodes 11 is N
  • the random variable corresponding to the distance to the adjacent node follows the geometric distribution
  • the sum of the virtual server portion v follows a negative binomial distribution NB (v, p).
  • the number of nodes included in a certain range x follows a binomial distribution B (x, p).
  • p is N / 2b .
  • the output order ( ⁇ OUT ) and the input order ( ⁇ IN ) are given by (Expression X1) and (Expression X2) below.
  • the distribution of the upper limit of the highest tree height hmax can be easily obtained at each node.
  • hmax when the range of the ID of h-hop destination node group covers a rh, an rh> minimum height that satisfies 2 b (h).
  • rh is a distance between the node and the suc node, rh is wider than rk h , so hmax is at least the minimum h that satisfies rk h > 2 b , which is the upper limit hmax.
  • hc is the tree height constraint hc as described above. With these conditions as constraints, the Lagrangian function of the following (formula X4) is minimized.
  • the above (formula X4) is partially differentiated by the polling interval T, the following (formula X5) is obtained.
  • condition (i) 0 (denoted as condition (i)).
  • condition (i) corresponds to the case where hc> 0.78 log e N is satisfied.
  • the polling interval T is set by the following (formula X9).
  • Each node 11 may link with at least nodes from the pred node (km) to the pred node (km + k ⁇ ) using the given tree height constraint hc2 when constructing the link.
  • is expressed by the following (formula X10).
  • version information is compared on the link destination node side of the target node (S82 in FIG. 8), and tree data of a hierarchy having different versions is obtained from the link destination node. It has been returned to the target node (S83 in FIG. 8).
  • all the tree data after the hierarchy 2 may be sent from the link destination node to the target node, and the version information may be compared on the target node side.
  • the above-mentioned extended Koorde algorithm is effective even when applied in a manner other than that shown in the above-described embodiments and examples.
  • the extended Koorde algorithm may be applied to a DHT (Distributed Hash Table) in a data structure in which attribute values are not ordered.
  • DHT Distributed Hash Table
  • a distributed data management device for realizing at least one target logical node among a plurality of logical nodes storing a plurality of partial data into which data is divided,
  • the target logical node is A node identifier storage unit that stores, as a target node identifier, an identifier assigned to the target logical node among a plurality of identifiers uniquely assigned to the plurality of logical nodes within a finite identifier space having a ring structure;
  • a data storage unit for storing at least one of the plurality of partial data; Link information indicating a communicable relationship between the target logical node and another logical node, a value obtained by multiplying the target node identifier by a parameter k (k is a natural number), or smaller than the value And the first link destination logical node having the identifier closest to the value, the value obtained by multiplying the identifier of the successor logical node larger than the target node identifier and the identifier nearest by the parameter k,
  • the computer that implements the target logical node Link information indicating a communicable relationship between the target logical node and another logical node, a value obtained by multiplying the target node identifier by a parameter k (k is a natural number), or smaller than the value And the first link destination logical node having the identifier closest to the value, the value obtained by multiplying the identifier of the successor logical node larger than the target node identifier and the identifier nearest by the parameter k, or the value
  • a second link destination logical node that is small and has the nearest identifier of the value, and at least an identifier between the identifier of the first link destination logical node and the identifier of the second link destination logical node in the identifier space
  • Generating link information including a plurality of links between one third link destination logical node and the target logical node; Distributed data management method.
  • the target logical node is A node identifier storage unit that stores, as a target node identifier, an identifier assigned to the target logical node among a plurality of identifiers uniquely assigned to the plurality of logical nodes within a finite identifier space having a ring structure;
  • a data storage unit for storing at least one of the plurality of partial data;
  • Link information indicating a communicable relationship between the target logical node and another logical node, and the target logical node established according to a relationship between the target node identifier in the identifier space;
  • a link table for storing link information between link destination logical nodes;
  • the target logical node is Tree generation for acquiring tree data from the link destination logical node associated with the pointer included in the root tree node, and generating at least one tree node lower than the root tree node from the acquired tree data
  • the distributed data management device according to appendix 1, further comprising a unit.
  • the tree structure data stored in the tree storage unit has a plurality of hierarchies, each hierarchy has tree data, and the first hierarchy tree data is a value range stored in the range storage unit by the link destination logical node.
  • An entry corresponding to the information, the tree data of the hierarchy L higher than the first hierarchy (L is 2 or more) includes the root tree node;
  • the tree generation unit acquires tree data of the hierarchy (L-1) stored in the link destination logical node from the link destination logical node associated with the pointer included in the root tree node, and acquires the tree data
  • a partial tree data corresponding to the link destination logical node in the tree data of the hierarchy L is generated from the tree data of the hierarchy (L-1)
  • the distributed data management device according to attachment 2.
  • Each tree node constituting each tree data stored in the tree storage unit includes version information
  • the target logical node is A version confirmation request in which version information of a child tree node indicated by the pointer is set is transmitted to the link destination logical node associated with the pointer included in the root tree node of the hierarchy L, and the version A tree update unit for updating the version information of each tree node and each tree node with the tree data and version information included in the reply from the link destination logical node in response to the confirmation request;
  • the version confirmation request is received from another logical node, and the version information regarding the hierarchy L included in the version confirmation request is compared with the version information of the tree data of the hierarchy (L-1) possessed by the target logical node.
  • a version comparison unit for returning tree data of a different version (L-1) together with version information to the other logical node;
  • the distributed data management device according to appendix 3, further comprising:
  • the target logical node is The range boundary value indicated by the first entry of the tree node included in the tree structure data related to the search target attribute is set as a reference value in the attribute value space of the search target attribute, and from the reference value to the maximum value in the attribute value space
  • the tree structure by the inclusion determination based on the cyclic order of the attribute value space, including a case where an arbitrary value between is smaller than an arbitrary value between the minimum value in the attribute value space and the reference value
  • the distributed data management device according to appendix 4, further comprising a tree search unit that identifies an entry including a search target attribute value in the range from the data.
  • a value range that does not include all attribute values in the attribute value space is set for each root tree node of each hierarchy, When the tree search unit cannot identify an entry including the search target attribute value in the range from the tree data of a certain hierarchy, the tree search unit tries to search tree data of the hierarchy one level higher, and If the tree data of the hierarchy does not exist, the tree generation unit is requested to generate the tree data of the hierarchy one level above.
  • the distributed data management apparatus according to appendix 5.
  • the link information stored in the link table includes a value obtained by multiplying the target node identifier by a parameter k (k is a natural number), or a first link destination having an identifier smaller than the value and closest to the value A logical node, a value obtained by multiplying the identifier of a successor logical node having an identifier larger than the target node identifier and the nearest one by the parameter k, or a second link having an identifier smaller than the value and the nearest identifier of the value A destination logical node, at least one third link destination logical node having an identifier between the identifier of the first link destination logical node and the identifier of the second link destination logical node in the identifier space, and the target logic Including multiple links between nodes,
  • the distributed data management device according to any one of appendices 1 to 6.
  • the link table includes a value obtained from the target logical node by multiplying the target node identifier by a parameter k (k is a natural number), or a first link destination logical having an identifier smaller than the value and closest to the value.
  • a plurality of links to a logical node and at least one third linked logical node having an identifier between the identifier of the first linked logical node and the identifier of the second linked logical node in the identifier space Store link information,
  • the tree update unit transmits the version confirmation request at a polling interval T
  • the target logical node is A system constraint time wc with respect to a maximum time until a change in the range in at least one of the plurality of logical nodes is transmitted to all of the plurality of logical nodes, or a unit in which each logical node transmits the version check request
  • the system constraint load ⁇ c with respect to the time load is acquired, the acquired system constrain
  • Appendix 9 The distributed data management device according to appendix 7 or 8, wherein the parameter k is set to 4.
  • a distributed data operating device that stores partial data corresponding to an access request and identifies the target logical node realized by the distributed data management device according to attachment 6 as a destination of the access request, A link table storing link information capable of communicating with a plurality of link destination logical nodes including the target logical node;
  • the tree storage The tree update unit;
  • the tree search unit A distributed data manipulation device comprising:
  • the target logical node is A node identifier storage unit that stores, as a target node identifier, an identifier assigned to the target logical node among a plurality of identifiers uniquely assigned to the plurality of logical nodes within a finite identifier space having a ring structure;
  • a data storage unit for storing at least one of the plurality of partial data; Link information indicating a communicable relationship between the target logical node and another logical node, and the target logical node established according to a relationship between the target node identifier in the identifier space;
  • a link table for storing link information between link destination logical nodes; A range boundary value for each attribute corresponding to the partial data stored in the data storage unit
  • the target logical node acquires tree data from the link destination logical node associated with the pointer included in the root tree node, and at least one tree lower than the root tree node from the acquired tree data
  • the tree structure data stored in the tree storage unit has a plurality of hierarchies, each hierarchy has tree data, and the first hierarchy tree data is a value range stored in the range storage unit by the link destination logical node.
  • An entry corresponding to the information, the tree data of the hierarchy L higher than the first hierarchy (L is 2 or more) includes the root tree node;
  • the tree generation unit acquires tree data of the hierarchy (L-1) stored in the link destination logical node from the link destination logical node associated with the pointer included in the root tree node, and acquires the tree data
  • a partial tree data corresponding to the link destination logical node in the tree data of the hierarchy L is generated from the tree data of the hierarchy (L-1)
  • the program according to attachment 12 The program according to attachment 12.
  • Each tree node constituting each tree data stored in the tree storage unit includes version information
  • the target logical node is A version confirmation request in which version information of a child tree node indicated by the pointer is set is transmitted to the link destination logical node associated with the pointer included in the root tree node of the hierarchy L, and the version A tree update unit for updating the version information of each tree node and each tree node with the tree data and version information included in the reply from the link destination logical node in response to the confirmation request;
  • the version confirmation request is received from another logical node, and the version information regarding the hierarchy L included in the version confirmation request is compared with the version information of the tree data of the hierarchy (L-1) possessed by the target logical node.
  • a version comparison unit for returning tree data of a different version (L-1) together with version information to the other logical node;
  • the target logical node is The range boundary value indicated by the first entry of the tree node included in the tree structure data related to the search target attribute is set as a reference value in the attribute value space of the search target attribute, and from the reference value to the maximum value in the attribute value space
  • the tree structure by the inclusion determination based on the cyclic order of the attribute value space, including a case where an arbitrary value between is smaller than an arbitrary value between the minimum value in the attribute value space and the reference value 15.
  • a value range that does not include all attribute values in the attribute value space is set for each root tree node of each hierarchy, When the tree search unit cannot identify an entry including the search target attribute value in the range from the tree data of a certain hierarchy, the tree search unit tries to search tree data of the hierarchy one level higher, and If the tree data of the hierarchy does not exist, the tree generation unit is requested to generate the tree data of the hierarchy one level above.
  • the link information stored in the link table includes a value obtained by multiplying the target node identifier by a parameter k (k is a natural number), or a first link destination having an identifier smaller than the value and closest to the value A logical node, a value obtained by multiplying the identifier of a successor logical node having an identifier larger than the target node identifier and the nearest one by the parameter k, or a second link having an identifier smaller than the value and the nearest identifier of the value A destination logical node, at least one third link destination logical node having an identifier between the identifier of the first link destination logical node and the identifier of the second link destination logical node in the identifier space, and the target logic Including multiple links between nodes, The program according to any one of appendices 11 to 16.
  • the link table includes a value obtained from the target logical node by multiplying the target node identifier by a parameter k (k is a natural number), or a first link destination logical having an identifier smaller than the value and closest to the value.
  • a plurality of links to a logical node and at least one third linked logical node having an identifier between the identifier of the first linked logical node and the identifier of the second linked logical node in the identifier space Store link information,
  • the tree update unit transmits the version confirmation request at a polling interval T
  • the target logical node is A system constraint time wc with respect to a maximum time until a change in the range in at least one of the plurality of logical nodes is transmitted to all of the plurality of logical nodes, or a unit in which each logical node transmits the version check request
  • the system constraint load ⁇ c with respect to the time load is acquired, the acquired system constrain
  • a distributed data management device for realizing at least one target logical node among a plurality of logical nodes storing a plurality of partial data into which data is divided,
  • the target logical node is A node identifier storage unit that stores, as a target node identifier, an identifier assigned to the target logical node among a plurality of identifiers uniquely assigned to the plurality of logical nodes within a finite identifier space having a ring structure;
  • a data storage unit for storing at least one of the plurality of partial data; Link information indicating a communicable relationship between the target logical node and another logical node, a value obtained by multiplying the target node identifier by a parameter k (k is a natural number), or smaller than the value And the first link destination logical node having the identifier closest to the value, the value obtained by multiplying the identifier of the successor logical node larger than the target node identifier and the identifier nearest by the parameter k
  • the computer that implements the target logical node Link information indicating a communicable relationship between the target logical node and another logical node, a value obtained by multiplying the target node identifier by a parameter k (k is a natural number), or smaller than the value And the first link destination logical node having the identifier closest to the value, the value obtained by multiplying the identifier of the successor logical node larger than the target node identifier and the identifier nearest by the parameter k, or the value
  • a second link destination logical node that is small and has the nearest identifier of the value, and at least an identifier between the identifier of the first link destination logical node and the identifier of the second link destination logical node in the identifier space
  • Generating link information including a plurality of links between one third link destination logical node and the target logical node; Distributed data management method.
  • Appendix 22 A recording medium for recording the program according to any one of appendices 11 to 19 in a computer-readable manner.

Abstract

 分散データ管理装置で実現される対象論理ノードは、複数の論理ノードに一意にそれぞれ割り当てられる対象ノード識別子を格納する格納部と、複数の部分データの中の少なくとも1つを格納する格納部と、対象論理ノードとリンク先論理ノードとの間のリンク情報を格納するリンクテーブルと、部分データに対応する属性毎の値域境界値を格納する格納部と、アクセス要求に対応する部分データを格納する論理ノードを特定するための、値域をそれぞれ示す複数のツリーノードから構成される属性毎のツリー構造データであって、リンク先論理ノードと対応付けられた子ツリーノードへのポインタと、ポインタを選択するための値域を示す値とから形成される少なくとも1つのエントリを含む根ツリーノードを有するツリー構造データを格納する格納部とを備える。

Description

分散データ管理装置及び分散データ操作装置
 本発明は、属性値順に順序付けられたデータの分散管理技術に関する。
 アプリケーションプログラムやデータベースシステム等が利用する基本的なデータ構造として、キーから値を取得する連想配列、KeyValueストア、Map、ストレージエンジンと呼ばれる構造がある。更に、このようなデータ構造には、キーがその値で順序付けられて格納されるものと、順序付けられずに格納されるものがある。順序付けらない形態では、キーをHashした値に基づいてそのデータの格納先が決定される。一方、順序付けられた形態では、各格納先が担当する値域を値域データとしてそれぞれ持ち、その値域データとキーとからデータの格納先が決定される。
 非特許文献1は、情報システムにおける値域管理方法の一例を提案する。非特許文献1の例では、Bigtableと呼ばれるシステムが、複数のデータを格納するタブレットサーバ、Bigtableマスター、集中型サーバであるChubby、メタデータ・タブレットサーバ、クライアントから構成される。各タブレットサーバは、或る連続した値域のデータをタブレットとしてそれぞれ格納する。Bigtableマスターは、タブレットがどのタブレットサーバに格納されているかをB+Treeにより管理し、そのB+Treeを構成する複数の部分木を複数のメタデータ・タブレットサーバに格納し、ルートに相当する部分木をChubbyに格納する。タブレットサーバが管理するタブレットが変更される場合には、その変更はマスターに通知される。このBigtableにアクセスするクライアントは、Chubbyにアクセスして前記B+Treeのルートを取得し、その部分木をメタデータ・タブレットサーバから取得し、これをキャッシュする。このキャッシュが有効である間、クライアントはキーの値に対応するタブレットサーバをローカルで特定することができる。タブレットサーバが担当するタブレットが変更されると、クライアント上のキャッシュは無効となるが、クライアントはキーの値に対応するタブレットサーバにアクセスして始めて、その無効を検知し、メタデータ・タブレットサーバに有効な情報を問い合わせる。
 非特許文献2は、当該値域管理方法の他の例を提案する。非特許文献2の例では、Batonと呼ばれるシステムが、複数のP2P(Peer to Peer)ノードから構成される。各ノードは連続な値域のデータを格納する。各ノードは、他のノードとリンク関係を持ち、そのリンクの関係は全体で平衡木となる。各ノードは、その木構造における親ノードに当たるノードへのリンク、子ノードに当たるノードへのリンク、同一階層の隣接ノードへのリンクを持つ。同一階層の隣接ノードへのリンクについては、各リンク先に関する値域も管理する。或るノードは、或る値に対するアクセス要求を取得した場合、その値が同一階層の隣接ノードが担当する値域の中のどの値域に含まれるかを決定し、その決定されたノードに当該アクセス要求を転送する。転送先のノードで類似の処理を続けることで、その値に対応するデータを保持するノードが検出される。ノード間のリンク関係は、ノードの新規追加や離脱の際に、平衡木を保つように順次変更される。更に、格納されるデータの分布がノード間で均一でなくなり歪が発生すると、各ノードはデータの分布が均一化するように値域やリンク関係を変更する。
Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber, "Bigtable : A Distributed Storage System For Structured Data", Symposium on Operating Systems Design (SOSP) 2006, 2006/11/6-8. H.V. Jagadish, Beng Chin Ooi, Quang Hieu Vu, "BATON: A Balanced Tree Structure for Peer-to-Peer Networks", Very large data bases (VLDB) 2005, 2005/8/30-9/2.
 しかしながら、上述の値域管理方法では、次のような問題点がある。
 例えば、非特許文献1の方法では、データを格納するノードの値域に変更が発生した場合に、クライアントのデータアクセス時間が長くなってしまう。その理由は、クライアントがデータ格納ノードの値域の変更を検知するのは、クライアントがデータへのアクセスを実行した時であるからである。即ち、クライアントは、その検知後、メタデータサーバから新たな値域を取得し、データアクセスの再実行をすることになるため、その通信遅延がそのままデータアクセス時間としてかかってしまう。
 これを解決するために、非特許文献1の方法に、クライアントが値域をメタデータサーバに定期的に問い合わせる構成を付加することが考えられる。しかしながら、このような構成によれば、システム内で共通の複数のメタデータサーバは、所定間隔で全クライアントからの要求を受けることになり、クライアント数の増加に伴い、メタデータサーバの負荷やシステム内の通信負荷が高くなり、ひいては、システム全体の性能が劣化することになる。
 更に、例えば、非特許文献2の方法では、データアクセス要求がP2Pノードから他のノードに順次転送されることで、アクセス対象のデータを格納するノードが検出されるため、データアクセス処理に要する時間が長くなる傾向にある。また、非特許文献2の方法では、属性毎の値域又はノードの負荷に応じてノード間のリンク関係が更新されるため、システム内で扱う属性の数が増加するに伴い、P2Pノード間のリンク関係が増加し、結果、その管理及び更新に要する負荷が増加し、更に障害が発生し易い状況になりかねない。
 本発明は、上述のような事情に鑑みてなされたものであり、属性値順に順序付けられたデータを分散管理するシステムにおいて、負荷を抑制しつつデータアクセス時間を低減させる分散データ管理技術を提供することにある。
 本発明の各態様では、上述した課題を解決するために、それぞれ以下の構成を採用する。
 第1の態様は、属性値順に順序付けられたデータが分割された複数の部分データであって属性毎の値域をそれぞれ有する複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードを実現する分散データ管理装置に関する。第1態様に係る分散データ管理装置で実現される対象論理ノードは、リング構造を有する有限の識別子空間内で複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、複数の部分データの中の少なくとも1つを格納するデータ格納部と、対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、識別子空間内における対象ノード識別子との間の関係に応じて確立される対象論理ノードとリンク先論理ノードとの間のリンク情報を格納するリンクテーブルと、データ格納部に格納される部分データに対応する属性毎の値域境界値であって、属性毎の値域境界が識別子空間内において対象論理ノードと対象論理ノードと隣接する論理ノードとの間に位置する属性毎の値域境界値を格納する値域格納部と、アクセス要求に対応する部分データを格納する論理ノードを特定するための、値域をそれぞれ示す複数のツリーノードから構成される属性毎のツリー構造データであって、リンク先論理ノードと対応付けられた子ツリーノードへのポインタと、ポインタを選択するための値域を示す値とから形成される少なくとも1つのエントリを含む根ツリーノードを有するツリー構造データを格納するツリー格納部とを備える。
 なお、本発明の他の態様としては、上述のような対象論理ノードをコンピュータに実現させるプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記録媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
 上記各態様によれば、属性値順に順序付けられたデータを分散管理するシステムにおいて、負荷を抑制しつつデータアクセス時間を低減させる分散データ管理技術を提供することができる。
 上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
第1実施形態における分散システムの構成例を概念的に示す図である。 第1実施形態におけるデータサーバの処理構成例を概念的に示す図である。 論理ノードのリンク関係の例を概念的に示す図である。 図3に示されるノードN(1)を基準としたリンク関係を概念的に示す図である。 IDリングと値域情報との関係を概念的に示す図である。 管理形態3における、図3及び図4のリンク例に基づくノードN(1)のツリー構造データの例を概念的に示す図である。 管理形態6における、図3及び図4のリンク例に基づくノードN(1)のツリー構造データの例を概念的に示す図である。 第1実施形態におけるツリー生成部の動作例を示すフローチャートである。 第1実施形態におけるツリー更新部及びバージョン比較部の動作例を示すフローチャートである。 第1実施形態におけるツリー探索部の動作例を示すフローチャートである。 第1実施形態におけるツリー探索部の、階層Lのツリーデータから宛先ノードを特定する動作の例を示すフローチャートである。 第2実施形態におけるデータサーバの処理構成例を概念的に示す図である。 第3実施形態における分散システムの構成例を概念的に示す図である。 第3実施形態におけるデータ操作クライアントの処理構成例を概念的に示す図である。 実施例1におけるIDリングと値域情報との関係を概念的に示す図である。 実施例1において生成されるリンク関係の一部を示す図である。 実施例1において各ノード11で生成されるツリー構造データの一部を示す図である。 実施例1における負荷分散の例を概念的に示す図である。 実施例1における負荷分散後のノード(980)のツリー構造データの例を概念的に示す図である。 実施例1におけるノード(413)のバージョン更新後のツリー構造データの例を概念的に示す図である。
 以下、本発明の実施の形態について説明する。なお、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
 本実施形態に係る分散データ管理装置は、属性値順に順序付けられたデータが分割された複数の部分データであって属性毎の値域をそれぞれ有する複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードを実現する。本実施形態における当該対象論理ノードは、対象ノード識別子を格納するノード識別子格納部と、当該部分データを格納するデータ格納部と、対象論理ノードとリンク先論理ノードとの間のリンク情報を格納するリンクテーブルと、データ格納部に格納される部分データに対応する属性毎の値域境界値を格納する値域格納部と、当該リンク先論理ノードと対応付けられた子ツリーノードへのポインタと、このポインタを選択するための値域を示す値とを含む少なくとも1つのエントリを含む根ツリーノードを有する属性毎のツリー構造データを格納するツリー格納部と、を備える。
 ここで、論理ノードとは、タスク、プロセス、インスタンス等のようなソフトウェア要素であり、本実施形態に係る分散データ管理装置のようなコンピュータにより実現される。また、対象ノード識別子とは、リング構造を有する有限の識別子空間内で複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、対象論理ノードに割り当てられた識別子である。即ち、各論理ノードには、ユニークな識別子(以降、ノードID又はIDとも表記する)がそれぞれ割り当てられる。リング構造を有する有限の識別子空間とは、その空間内で最大の識別子の次に最小の識別子が続くように定義された識別子空間を意味する。
 対象論理ノードは、識別子空間内における対象ノード識別子と他の識別子との間の関係に応じて他の論理ノード(上記リンク先論理ノード)との間にリンクを確立する。リンク確立とは、対象論理ノードが当該リンク先論理ノードと通信可能となることを意味し、例えば、相互にIP(Internet Protocol)アドレスを持ち合うことで実現される。なお、本実施形態は、当該リンクの実現手法を制限しない。
 このように、本実施形態では、データを分散管理する複数の論理ノードにおいて、ノードIDに基づくトポロジが構築される。
 一方、各論理ノードは、上述の値域格納部のように、格納する部分データに対応する値域情報をそれぞれ管理する。そして、属性毎の値域境界は、識別子空間内において隣接する論理ノード間に位置する。即ち、ノードID空間のリング構造に対応して、各論理ノードが担当する属性毎の値域が決定される。これにより、ノードID空間と同様に、属性毎の属性値空間は、循環順序(リング構造)を持つものとして管理され得る。これは、ノードID空間のリンクトポロジ上に、属性値空間の値域情報ビューを重畳させて管理する構成であるとも言える。この構成により、値域変更に対して、ノードID空間のリンクトポロジは変更することなく、それに重畳されている値域情報ビューのみの変更で対応することができる。
 なお、値域格納部に格納される値域境界値は、対象論理ノードが格納する部分データの値域の起点であってもよいし、その値域の終点であってもよいし、その値域の始点と終点との組み合わせであってもよい。また、値域格納部には、対象論理ノードの値域境界値のみならず、対象論理ノードの隣接ノードが格納する部分データの値域境界値が格納されるようにしてもよい。
 本実施形態では、対象論理ノードは、このような各論理ノードの値域が反映されたツリー構造データを格納し、このツリー構造データに格納されるツリーノードのエントリが参照されることにより、任意の属性値を含む部分データを格納する論理ノードが特定される。本実施形態では、上述したように、ツリー構造データに含まれる根ツリーノードのエントリには、当該リンク先論理ノードと対応付けられた子ツリーノードへのポインタが含まれる。
 このように、本実施形態における当該ツリー構造データには、ノードIDに基づいて構築されるトポロジ上の論理ノード間のリンク関係が反映されるため、対象論理ノードは、ツリー構造データを探索しながら、リンク先論理ノードを即座に特定することができる。これにより、本実施形態によれば、リンク先論理ノードから値域情報を取得する形態や、リンク先論理ノードが有する値域情報を確認する形態等を実現し易くなる。このような形態にすれば、対象論理ノードは、特定サーバに値域変更を伺う必要がないため、特定サーバへの負荷集中を防ぐことができる。
 また、本実施形態では、論理ノードは、上述のように、自身が格納するツリー構造データを参照することにより、所望の値域を格納する論理ノードを特定することができるため、データアクセス要求のノード間転送が不要となり、結果、データアクセス要求のノード間転送に伴うデータアクセス時間の増加を防ぐことができる。
 以下、上述の実施形態について更に詳細を説明する。
 [第1実施形態]
 〔システム構成〕
 図1は、第1実施形態における分散システム1の構成例を概念的に示す図である。第1実施形態における分散システム1は、複数のデータサーバ10等を有する。データサーバ10は相互にネットワーク9によって通信可能に接続される。データサーバ10は、上述の実施形態における分散データ管理装置に対応する。データサーバ10は、アプリケーションや他の端末からの要求に応じて、データサーバ10に格納されるデータにアクセスし、所望のデータを取得する。
 データサーバ10は、いわゆるコンピュータであり、例えば、バス5で相互に接続される、CPU(Central Processing Unit)2、メモリ3、入出力インタフェース(I/F)4等を有する。メモリ3は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク、可搬型記憶媒体等である。入出力I/F4は、ネットワーク9を介して他のデータサーバ10、データ操作クライアント50、他の端末等と通信を行う通信装置7等と接続される。入出力I/F4は、表示装置や入力装置等のようなユーザインタフェース装置と接続されてもよい。なお、本実施形態は、データサーバ10のハードウェア構成を限定しない。
 〔装置構成〕
 図2は、第1実施形態におけるデータサーバ10の処理構成例を概念的に示す図である。図2に示されるように、データサーバ10は、データ操作部12、ツリー探索部13、ツリー生成部14、ツリー更新部15、バージョン比較部16、1以上の論理ノード11等を有する。各論理ノードは、リンク生成部17、ノードID格納部18、リンクテーブル19、ツリー格納部20、データアクセス部21、データ格納部22、値域格納部23等をそれぞれ有する。
 これら処理部は、メモリ3に格納されるプログラムがCPU2で実行されることにより実現される。そのプログラムは、例えば、CD(Compact Disc)、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力I/F4を介してインストールされ、メモリ3に格納される。なお、図2の例では、論理ノード11と、各処理部12から16とが、異なるソフトウェア要素であるように示されているが、各処理部12から16は論理ノード11毎に設けられてもよい。以降、論理ノード11は、単に、ノード11とも表記する。
 〈論理ノード〉
 以下、各ノード11が有する各処理部についてそれぞれ説明する。
 ノードID格納部18は、上述の実施形態におけるノード識別子格納部に対応する。即ち、ノードID格納部18は、リング構造を有する有限のID空間内で、各ノード11に割り当てられるノードIDを格納する。ノードIDには、例えば、対応するサーバのIPアドレスのハッシュ値が用いられる。
 リンクテーブル19は、上述の実施形態で説明されたように、ノード11と他のノードとのリンク関係を格納する。第1実施形態におけるリンクテーブル19は、他の各ノードについて、ノードID、そのノードに対応するIPアドレス、及び、自ノード11とのリンク関係をそれぞれ格納する。各ノードに対応するIPアドレスとは、各ノードと通信するために利用されるIPアドレスであり、例えば、各ノードが実現されているデータサーバ10のIPアドレスである。また、リンクテーブル19に格納されるリンク関係とは、自ノード11とリンクされているか否か、リンクされていればそのリンクを識別するための番号(リンクの順番等)等が含まれる。
 リンク生成部17は、自ノード11のIDと、分散システム1中の任意の他のノードのIDとのID空間における距離に基づき、リンク関係を構築し、その内容をリンクテーブル19に反映させる。このリンク関係の構築(IDトポロジの構築)には、例えば、Chordアルゴリズムや、Koordeアルゴリズムなどが用いられる。なお、第1実施形態は、有限のID空間で、リング構造を持つようにトポロジが構築されるのであれば、IDトポロジの構築の手法を限定しない。
 図3は、論理ノード11のリンク関係の例を概念的に示す図である。図4は、図3に示されるノードN(1)を基準としたリンク関係を概念的に示す図である。図3及び図4の例では、ノードN(1)が、ノードN(3)及びN(4)とリンクされており、ノードN(3)が、ノードN(5)、N(6)及びN(7)とリンクされており、ノードN(4)が、ノードN(7)及びN(8)とリンクされている。
 一方で、図3の例に示されるように、ID空間はリング構造を持つ。以降、このリング構造はIDリングとも表記される。このIDリング上では、各ノード11にとって、自ノード11のIDより大きくかつ最も近いIDを持つノード11は、Successorノード又はSucノードと表記され、自ノード11のIDより小さくかつ最も近いIDを持つノード11は、Predecessorノード又はPredノードと表記される。そして、IDリングでは、ID空間内で最大値のノードIDを持つノード11が、ID空間内で最小値のノードIDを持つノード11をSucノードとし、ID空間内で最小値のノードIDを持つノード11が、ID空間内で最大値のノードIDを持つノード11をPredノードとする。なお、このようなIDリング上のリンク関係は、ノードIDの値により即座に特定可能であるため、リンクテーブル19に格納されなくてもよいし、上述のようなID空間上で隣接しないノード間の関係と共にリンクテーブル19に格納されてもよい。
 以降、IDリング上で隣接するノード11は、Sucノード又はPredノードと表記され、IDリング上で隣接せずリンクが確立されているノード11が、リンク先ノードと表記される。また、図4に示されるように、或るノード11から、リンクを辿って他のノードに行き着くまでの間の距離をホップと表記する。即ち、或る対象ノード11と直接リンクされるノードは、対象ノード11の1ホップ目のリンク先ノードと表記され、その1ホップ目のリンク先ノードと直接リンクされるノードは、対象ノード11の2ホップ目のリンク先ノードと表記される。
 データ格納部22は、上述の実施形態で説明されたように、属性値順に順序付けられたデータが分割された複数の部分データの一部の部分データを格納する。本実施形態で扱われるデータは、複数の列(属性)をそれぞれ含む複数の行(タプル)から構成されるデータである。但し、本実施形態は、データの形態を制限しない。例えば、格納される属性値は、複数の属性値を空間充填曲線処理により、1次元の値としたものであっても良い。また、例えば、本実施形態がデータストリームシステムやPublish/Subscribe(Pub/Sub)システムに適用される場合には、当該データは、データそのものではなく条件式等であってもよい。このようなシステムでは、データベースにてデータを探す条件として扱われる、検索するキーの値や範囲などが、検出対象のデータとなる。すなわち、検出したい温度の範囲を1つの条件式(Subscribe)として与えると、その範囲を(x0,x1)=(下限値,上限値)という2次元の値とし、これを1次元化して得られる値として格納する。複数の条件式が与えられると、各々の条件式を表す1次元値がシステムに複数格納される。ある属性値のデータがシステムに与えられ(Publish)、それを条件内に含むような条件式と対応する通知先に通知する(Notify)際には、x0が[-∞,属性値]の範囲に含まれ、かつx1が[属性値,∞]に含まれる多次元範囲を検索する。これは、先に格納された複数の条件式から、この多次元空間と対応する1次元範囲に含まれる条件式を検索することで実現できる。このように、本実施形態は、データ検索だけでなく、範囲を条件としたPub/Subにも同様に適用することができる。
 データ格納部22に格納される部分データは、属性毎の値域をそれぞれ有する。
 値域格納部23は、上述の実施形態で説明されたように、データを分割し合った他のノードとの間の属性毎の値域の境界値をメタデータとして格納する。或るノードと値域を分ける関係にある他のノードは、ID空間内において当該或るノードのIDと距離の最も近いIDを持つ隣接ノードである。上述したように、各ノードにおいて値域格納部23に格納される値域境界値には、様々な形態があり得る。例えば、自ノードが格納する部分データに対応する値域に関し、値域の始点が値域境界値として管理される形態(管理形態1)、値域の終点が値域境界値として管理される形態(管理形態2)、及び、始点及び終点の両方が管理される形態が有る(管理形態3)。更に、Sucノードが格納する部分データに対応する値域の始点及び終点の両方が管理される形態(管理形態4)、Predノードが格納する部分データに対応する値域の始点及び終点の両方が管理される形態(管理形態5)、自ノードとSucノードとに関する値域の始点及び終点の両方が管理される形態(管理形態6)、自ノードとPredノードとに関する値域の始点及び終点の両方が管理される形態等が考えられる(管理形態7)。
 上記各管理形態は、システム要件により選択されることが望ましい。例えば、最も簡易な構成が望まれる場合には、上記管理形態1又は2が選択され得る。また、例えば、データの一貫性が要件とされるシステムでは、上記管理形態3、6又は7が選択され得る。このようなシステムでは、隣接ノード間で、値域境界値の同期が行われる。また、例えば、高い障害耐性が要件とされるシステムでは、自ノードのセカンダリノード(バックアップノード)として作用する隣接ノード(SucノードかPredノードか)に応じて、上記管理形態4、5、6又は7が選択され得る。このようなシステムでは、対象ノードの隣接ノード(Sucノード又はPredノード)が当該対象ノードの値域情報を管理する。本実施形態は、このような各ノードにおいて管理される値域情報の形態を制限しない。
 図5は、IDリングと値域情報との関係を概念的に示す図である。図5の例において上記管理形態2が用いられる場合には、ノードN(0)は、隣接するノードN(1)との値域の境界に関し、値域境界値(25)を格納し、ノードN(1)は、隣接するノードN(2)との値域の境界に関し、値域境界値(32)を格納する。このように、値域情報の管理形態としてどのような管理形態が用いられたとしても、ID空間のリング構造に対応して、各ノードが担当する属性毎の値域が決定されるため、属性値空間は、ノードID空間と同様に、循環順序(リング構造)を持つものとして管理されることができる。
 この循環順序によれば、或る属性において或る値域境界値を基準値(循環順序における始点)とした場合、その基準値からその属性値空間内の最大値までの間の任意の値が、その属性値空間内の最小値から基準値までの間の任意の値より小さくなる。図5の例における当該循環順序によれば、ノードN(6)からノードN(8)が担当する属性値の範囲を考えると、ノードN(6)が担当する値域境界値(175)を基準値とした場合、属性値(5)が、ノードN(6)が担当する値域境界値(175)よりも大きいと判断される。また、属性値(200)は、ノードN(6)が持つ値域境界値(175)より大きく、かつ、ノードN(7)が持つ値域境界値(3)よりも小さいと判断される。このような属性値空間における循環順序は、例えば、ツリー探索部13等により利用される。
 データアクセス部21は、自ノード11へのデータアクセス要求を受け、その要求に含まれている属性値又は属性値の範囲が、値域格納部23に格納された自ノード11が担当する値域に含まれるか否かを判断する。データアクセス部21は、含まれない場合は、要求の発行者に無効を返し、含まれる属性値又は属性値の範囲が存在する場合は、データ格納部22への任意の処理を許可し、その結果を要求の発行者に返す。
 ツリー格納部20は、上述の実施形態で説明されたように、値域をそれぞれ示す複数のツリーノードから構成される属性毎のツリー構造データを格納する。第1実施形態におけるツリー格納部20に格納されるツリー構造データは、複数階層を持ち、各階層についてツリーデータをそれぞれ持つ。以降、論理ノード11と区別するために、このツリー構造データを構成する要素としてのノードは、ツリーノードと表記される。また、ツリー構造データが持つ階層と区別するために、このツリー構造データに含まれる各階層の各ツリーデータが持つ階層は、段階と表記される。
 ツリーノードは、存在する段階に応じて、根ツリーノード、枝ツリーノード、葉ツリーノードに区別される。根ノード及び枝ノードは、1段下のノード(子ツリーノード)へのポインタを含み、葉ノードは、データの格納先となる論理ノード11を特定し得るデータへのポインタを含む。各ツリーノードは、そのようなポインタと、そのようなポインタを選択する範囲を特定する値域情報とを含むエントリをそれぞれ有する。
 第1実施形態におけるツリーノードは、Bツリー等のような既存のデータ検索のためのツリーデータ構造と同様なこのような構造に加えて、次のような特徴を持つ。具体的には、各ツリーデータの各根ツリーノードには、対象属性における全属性値を包含しない属性値の範囲が設定され得る。従来のツリーデータ構造は、1つのツリーデータにより構成されるため、根ツリーノードには、対象属性における全属性値を包含する属性値の範囲が設定される。一方、第1実施形態における各階層の各根ツリーノードは、対象属性における全属性値の範囲の一部をサポートし、全階層の全根ツリーノードにより、対象属性における全属性値の範囲をサポートする。
 1階層目(階層0)のツリーデータは、自ノードが値域格納部23に持つ値域情報から生成される。よって、階層0のツリーデータの構成は、上述のような値域情報の管理形態に対応する。よって、例えば、上記管理形態6の階層0のツリーデータは、次のような3つのエントリを持つ根ツリーノードから形成される。この場合、根ツリーノードは、葉ツリーノードの位置付けも持つ。第1エントリには、自ノードが担当する値域の始点(自ノードのPredノードが担当する値域の終点)と、自ノードを特定し得るデータへのポインタとが含まれる。第2エントリには、自ノードが担当する値域の終点(自ノードのSucノードが担当する値域の始点)と、自ノードのSucノードを特定し得るデータへのポインタとが含まれる。第3エントリには、自ノードのSucノードが担当する値域の終点と、値無し(Null)とが含まれる。或るノードを特定し得るデータは、以降、ノード特定データと表記され、ノード特定データには、例えばノードIDが利用される。
 2階層目(階層1)のツリーデータは、リンク先ノードが値域格納部23に持つ値域情報から生成される。よって、階層1のツリーデータの構成についても、上述のような値域情報の管理形態に対応する。例えば、上記管理形態4の階層1のツリーデータは、次のような複数エントリを有する。各エントリには、各リンク先ノードが担当する値域の終点とそのリンク先ノードのSucノードのノード特定データへのポインタとがそれぞれ設定され、最後のエントリの値域境界値には最後のリンク先ノードのSucノードが担当する値域の終点が設定され、ポインタには値無し(Null)が設定される。最後のリンク先ノードは、複数のリンク先ノードの中で最大ID値を持つリンク先ノードである。
 階層L(Lは2以上の整数)のツリーデータは、Lホップ目の各リンク先ノードに関する情報から形成され、L段階構成を持つ。階層Lのツリーデータの根ツリーノードは、リンク先ノードと対応付けられた子ツリーノードへのポインタと、このポインタを選択するための値域を示す値とを含む少なくとも1つのエントリから構成される。ここで、子ツリーノードへのポインタとリンク先ノードとの対応付けの形態は、そのポインタから、対応するリンク先ノードのノード特定データ(例えば、ノードID)を取得できるのであれば、限定されない。階層Lの根ツリーノードより下段のツリーノードは、リンク先ノードにおける階層(L-1)のツリーデータから生成される。この生成手法については、後述する。
 図6Aは、上記管理形態3における、図3及び図4のリンク例に基づくノードN(1)のツリー構造データの例を概念的に示す図である。図6Bは、上記管理形態6における、図3及び図4のリンク例に基づくノードN(1)のツリー構造データの例を概念的に示す図である。図6A及び図6Bにおける左側の三角形が各階層を示し、右側が各階層におけるツリーデータを示す。図6A及び図6Bの矢印はポインタを示し、その矢印の先がノード特定データを示す。また、N(x).sVは、ノードN(x)の値域始点を示し、N(x).eVは、ノードN(X)の値域終点を示す。図6A及び図6Bの例は、ノードN(1)により格納されるツリー構造データを示し、このツリー構造データは3つの階層のツリーデータを持つ。なお、図6A及び図6Bには、Nullが設定される部分は図示されていない。
 以下、図6Aに示される各階層のツリーデータについて説明する。
 階層0のツリーデータには、自ノードの値域始点(N(1).sV)及び自ノードの値域終点(N(1).eV)、並びに、自ノードのノード特定データへのポインタが設定されている。
 階層1のツリーデータの各エントリには次のようなデータが設定されている。第1エントリの値域境界値には、リンク先ノードであるノードN(3)の値域始点(N(3).sV)が設定され、第1エントリのポインタには、そのノードN(3)のノード特定データへのポインタが設定されている。第2エントリの値域境界値には、リンク先ノードであるノードN(4)の値域始点(N(4).sV)が設定され、第2エントリのポインタには、そのノードN(4)のノード特定データへのポインタが設定されている。第3エントリの値域境界値には、そのノードN(4)の値域終点(N(4).eV)が設定され、第3エントリのポインタにはNullが設定されている。
 階層2のツリーデータは、根ツリーノード及び2つの葉ツリーノードから構成され、根ツリーノードには、リンク先ノードであるノードN(3)及びN(4)に対応付けられた子ツリーノード(葉ツリーノード)への2つのポインタが含まれる。2つの葉ツリーノードは、ノードN(3)及びN(4)にリンクされる、ノードN(1)を基準とした2ホップ目のリンク先ノードであるノードN(5)からN(8)に格納された情報から形成される。本実施形態では、ノードN(3)に対応付けられたポインタが示す葉ツリーノードは、そのノードN(3)の階層1のツリーデータから生成され、ノードN(4)に対応付けられたポインタが示す葉ツリーノードは、そのノードN(4)の階層1のツリーデータから生成される。また、階層2の根ノードには、2ホップ目のノードN(5)からN(8)の値域を示すエントリが設定されている。
 以下、図6Bに示される各階層のツリーデータについて説明する。図6Bの階層0のツリーデータには、図6Aの構成に加えて、自ノードN(1)のSucノードであるノードN(2)に関する、ノード特定データへのポインタと値域の終点とが設定される。階層1のツリーデータには、図6Aの構成に加えて、最後のリンク先ノードN(4)のSucノードであるノードN(5)に関する、ノード特定データへのポインタと値域の終点とが設定される。階層2のツリーデータには、図6の構成に加えて、2ホップ目の最後のリンク先ノードN(8)のSucノードであるノードN(9)に関する、ノード特定データへのポインタと値域の終点とが設定される。
 このように、各階層のツリーデータは、各ノードにおける値域情報の管理形態に対応した形態で生成される。但し、階層0のツリーデータは、自ノードが値域格納部23に持つ値域情報から生成され、階層1のツリーデータは、リンク先ノードが値域格納部23に持つ値域情報から生成され、階層L(Lは1以上)のツリーデータは、リンク先ノードの階層(L-1)のツリーデータから生成される点において一貫している。また、ツリーデータの階層番号が小さい程、そのツリーデータに反映されている値域情報の鮮度は高くなる。
 また、各ツリーデータの各ツリーノードには、バージョン情報が付加されている。このバージョン情報は、値域変更に応じて更新される。このバージョン情報は、バージョン比較部16等により利用される。
 データ操作部12は、アプリケーションプログラムやユーザインタフェース装置からの入力等により取得された操作対象のデータの決定条件から、対象属性と、属性値又は属性値の範囲とを取得し、その属性値又は属性値の範囲に対応するノード11を検出し、そのノード11に対してデータアクセス処理を実行する。対応するノード11は、対象属性と、属性値又は属性値の範囲とをツリー探索部13に渡すことで、ツリー探索部13から取得される。データアクセスに失敗した場合には、データ操作部12は、再度、ツリー探索部13にデータアクセスの宛先のノードを問い合わせる。
 ツリー探索部13は、データ操作部12から、対象属性と、属性値又は属性値の範囲とを取得すると、ツリー格納部20から任意のノードの指定された属性に関するツリー構造データを取得し、その中から、その属性値又は属性値の範囲に対応する部分データを格納するノード11を特定する。ツリー探索部13は、ノード11を特定できない場合やツリー構造データの或る階層のツリーデータが存在しない場合には、ツリー生成部14にツリーデータの生成を要求する。ツリー探索部13の詳細処理については動作例の項において詳述する。
 ツリー生成部14は、上述したようなツリー構造データを生成する。対象ノード11における階層L(Lは2以上)のツリーデータを生成する際には、ツリー生成部14は、対象ノード11のリンクテーブル19からリンク先ノードの通信アドレスを取得し、その通信アドレスを用いてそのリンク先ノードから、そのリンク先ノードのツリー格納部20に格納される階層(L-1)のツリーデータを取得する。ツリー生成部14は、対象ノード11における階層1のツリーデータを生成する際には、そのリンク先ノードのツリー格納部20に格納される階層0のツリーデータを取得してもよいし、そのリンク先ノードの値域格納部23に格納される値域情報を取得してもよい。ツリー生成部14の詳細処理については動作例の項において詳述する。
 ところで、各ノード11に割り当てられる各属性の値域は、各ノード11の負荷や、各ノード11に格納されるデータ量のバランス等により変更される。一方、各ノード11は、他のノードに関する値域情報についてもツリー格納部20に格納されるツリー構造データにより管理している。そこで、他のノードにおいて値域が変更されたにも関わらず、その値域変更が或るノード11の当該ツリー構造データに反映されていない状況が生じる。このような状況では、ツリー探索部13が、不適切なノード11、即ち、対象となる属性値又は属性値の範囲に対応する部分データを格納していないノード11を特定してしまう可能性がある。
 このような状況を可能な限り低減させるために、ツリー更新部15は、各ノード11が格納するツリー構造データが最新の値域情報となっているか否かを任意のタイミングで確認し、古い値域情報となってしまっているツリーデータを最新の値域情報で更新する。具体的には、ツリー更新部15は、階層2以上の各階層のツリーデータについて、根ツリーノードに含まれるポインタに対応付けられたリンク先ノードに対して、そのポインタが指す子ツリーノードのバージョン情報が設定されたバージョン確認要求を送信する。ツリー更新部15は、そのリンク先ノードからの返信に含まれるツリーデータ及びバージョン情報により、バージョンが異なっている階層のツリーデータ及びそのバージョン情報を更新する。
 ツリー更新部15は、データ操作部12により実行されるデータアクセス処理とは非同期に、所定の周期で、定期的に、当該バージョン確認及びツリー構造データの更新を実行することが望ましい。このようにすれば、値域変更の全ノードへの伝達時間を短縮することができ、ひいては、ツリー探索部13が、不適切なノード11を特定する状況を減らすことができるため、これによるデータアクセス時間の増加を抑えることができる。
 バージョン比較部16は、他のノードから送られる、階層Lのツリーデータのためのバージョン確認要求に応じて、このバージョン確認要求に含まれるバージョン情報を、ノード11が持つ階層(L-1)のツリーデータのバージョン情報とそれぞれ比較する。バージョン比較部16は、バージョンが異なる階層(L-1)のツリーデータを各ツリーノードのバージョン情報と共にその要求元の他のノードへ返信する。
 〔動作例〕
 以下、第1実施形態におけるデータサーバ10の動作例について図7から図10を用いて説明する。なお、以下の説明では、各ノードにおける値域情報の管理形態として、上記管理形態6、即ち、自ノードとSucノードとに関する値域の始点及び終点の両方が管理される形態が用いられる。
 図7は、第1実施形態におけるツリー生成部14の動作例を示すフローチャートである。ツリー生成部14は、任意のノード11(対象ノード11)生成対象の属性及び階層が指定された生成要求を受けると、生成対象の属性を特定し(S51)、指定された階層に応じて、次のように動作する(S52)。
 ツリー生成部14は、指定された階層が0の場合、値域格納部23に格納される値域情報に基づいて、対象ノード11の階層0のツリーデータにおける根ツリーノードの各エントリを生成する。ツリー生成部14は、第1エントリには、対象ノード11の値域始点と、対象ノード11を特定し得るデータへのポインタとを設定する(S53)。
 次に、ツリー生成部14は、対象ノード11の階層0のツリーデータにおける根ツリーノードの第2エントリを生成する(S54)。ツリー生成部14は、第2エントリには、対象ノード11のSucノードの値域始点と、対象ノード11のSucノードのノード特定データへのポインタとを設定する。
 次に、ツリー生成部14は、対象ノード11の階層0のツリーデータにおける根ツリーノードの第3エントリを生成する(S55)。ツリー生成部14は、第3エントリには、対象ノード11のSucノードの値域終点と、値無し(Null)とを設定する。
 ツリー生成部14は、指定された階層が1の場合、まず、リンクテーブル19を参照して対象ノード11のリンク先ノードmを特定する(S61)。複数のリンク先ノードが存在する場合には、その中の1つがリンク先ノードmとして特定される。mの初期値は1である。
 ツリー生成部14は、階層1のツリーデータにおける根ツリーノードの第mエントリを生成する(S62)。ツリー生成部14は、第mエントリには、リンク先ノードmの値域起点と、そのリンク先ノードmのノード特定データへのポインタとを設定する。このとき、ツリー生成部14は、リンクテーブル19からリンク先ノードmの通信アドレスを取得し、この通信アドレスを用いて当該リンク先ノードmからその値域起点及びそのノード特定データを取得する。
 ツリー生成部14は、全リンク先ノードについて上述の(S61)及び(S62)をそれぞれ実行する(S66)。
 ツリー生成部14は、そのリンク先ノードmが最後のリンク先ノードであれば(S63;YES)、第(m+1)エントリを生成し(S64)、更に、第(m+2)エントリを生成する(S65)。具体的には、ツリー生成部14は、第(m+1)エントリには、リンク先ノードmの値域終点と、そのリンク先ノードmのSucノードのノード特定データへのポインタとを設定する(S64)。更に、ツリー生成部14は、第(m+2)エントリには、リンク先ノードmのSucノードの値域終点を設定する(S65)。上述の通り、リンク先ノードmの値域終点、リンク先ノードmのSucノードのノード特定データ、リンク先ノードmのSucノードの値域終点は、リンク先ノードmから取得される。ツリー生成部14は、最後のエントリのポインタには、値無し(Null)を設定する。
 ツリー生成部14は、指定された階層がL(Lは2以上)の場合、上述の(S61)と同様に、対象ノード11のリンク先ノードmを特定する(S56)。続いて、ツリー生成部14は、そのリンク先ノードmに階層(L-1)のツリーデータを要求し、この要求に応じて、当該リンク先ノードmから階層(L-1)のツリーデータを取得する(S57)。このときも上述のように、リンク先ノードmの通信アドレスがリンクテーブル19から取得される。
 ツリー生成部14は、取得されたツリーデータから、階層Lのツリーデータの根ツリーノードの或るポインタで特定されるツリーノード以下を生成する(S58)。即ち、ツリー生成部14は、その取得されたツリーデータに基づいて、2段目以降のツリーノードを生成する。取得されたツリーデータが2段のツリーノードから形成去れている場合には、ツリー生成部14は、根ツリーノードに、その2段のツリーデータを接続する。
 続いて、ツリー生成部14は、階層Lのツリーデータの根ツリーノードの第mエントリを生成する(S59)。ツリー生成部14は、第mエントリには、取得されたツリーデータの根ツリーノードの第1エントリに設定されている値域境界値と、取得されたツリーデータの根ツリーノードから生成されたツリーデータへのポインタとを設定する。この時、第mエントリ以外のツリーと重複した情報は適宜削除しても良い。
 ツリー生成部14は、全リンク先ノードについて上述の(S56)、(S57)、(S58)及び(S59)をそれぞれ実行する(S60)。ツリー生成部14は、階層Lのツリーデータの根ツリーノードの最後のリンクについては、ツリーデータの根ツリーノードの最後のエントリに設定されている値域終点と、ポインタが値無し(Null)であるエントリを設定する。
 上述の図7の例では、階層1のツリーデータの生成工程と階層L(L≧2)のツリーデータの生成工程とを区別して表記されたが、階層1のツリーデータについても階層Lのツリーデータと同様の工程で生成されるようにしてもよい。この場合、工程(S52)では、階層が0か、L(L≧1)かが判定され、階層1が指定された場合には、工程(S56)以降が実行されるようにすればよい。
 図8は、第1実施形態におけるツリー更新部15及びバージョン比較部16の動作例を示すフローチャートである。各ノード11(以下の説明では対象ノード11)は、所定タイミングで、ツリー更新部15に次のように動作させる。
 ツリー更新部15は、まず、リンクテーブル19を参照して対象ノード11のリンク先ノードmを特定する(S70)。複数のリンク先ノードが存在する場合には、その中の1つがリンク先ノードmとして特定される。mの初期値は1である。
 続いて、ツリー更新部15は、対象ノード11の階層2以上の各階層について、根ツリーノードに含まれるリンク先ノードmに対応付けられたポインタで特定されるツリーノードのバージョン情報をそれぞれ取得する(S71)。該当ポインタで特定される子ツリーノードが枝ツリーノードである場合、その子ツリーノード及びその配下の全ツリーノードのバージョン情報が取得されてもよい。
 ツリー更新部15は、階層2以上の各階層について取得された各バージョン情報をそれぞれ含むバージョン確認要求をリンク先ノードmに送信する(S72)。このときも上述のように、リンク先ノードmの通信アドレスがリンクテーブル19から取得される。
 リンク先ノードmは、このバージョン確認要求を受信すると(S81)、バージョン比較部16に次のように動作させる。バージョン比較部16は、バージョン確認要求に含まれる各階層nのバージョン情報を1段下の各階層(n-1)のバージョン情報とそれぞれ比較する(S82)。例えば、バージョン確認要求に含まれる階層2のバージョン情報は、リンク先ノードmの階層1のバージョン情報と比較され、バージョン確認要求に含まれる階層3のバージョン情報は、リンク先ノードmの階層2のバージョン情報と比較される。
 バージョン比較部16は、上記比較(S82)の結果、バージョンが異なる階層におけるツリーデータ(バージョン情報を含む)を、リンク先ノードmが持つ値域情報(リンク先ノードmの階層0のツリーデータに相当)と共に、対象ノード11に返信する(S83)。ここで、バージョンが異なる階層のツリーデータが複数のツリーノードから形成されている場合には、それら複数のツリーノードに関するデータとバージョン情報が返信される。このとき、バージョン確認要求に含まれる階層nとリンク先ノードmの階層(n-1)との間でバージョンが異なる場合、階層nのツリーデータ及びバージョン情報として、リンク先ノードmの階層(n-1)のツリーデータ及びバージョン情報が返信に設定される。
 対象ノード11は、この返信を受信すると(S73)、ツリー更新部15に次のように動作させる。まず、ツリー更新部15は、階層1のツリーデータに関し、リンク先ノードmが持つ値域情報に対応するエントリに設定される値域境界値と、返信に含まれるリンク先ノードmが持つ最新の値域情報とを比較する。ツリー更新部15は、それらが異なっていれば、当該エントリの値域境界値を最新の値域情報で更新し、階層1のツリーデータのバージョン情報を繰り上げる(S74)。
 次に、ツリー更新部15は、その返信を参照して、バージョンが異なる階層が存在するか否かを判断する(S75)。
 ツリー更新部15は、対象ノード11のバージョンが異なる階層における、リンク先ノードmに対応する部分ツリーデータを、その返信に含まれる新ツリーデータで更新する(S76)。例えば、ツリー更新部15は、階層2のバージョンが異なる場合には、対象ノード11の階層2のツリーデータの中の、根ツリーノードに含まれるリンク先ノードに対応するポインタで特定される子ツリーノード以下を、その返信に含まれるツリーデータで更新する。このとき、該当子ツリーノード以下の各ツリーノードのバージョン情報も更新される。また、階層2の根ツリーノードの、リンク先ノードに対応するエントリの値域境界値も更新される。
 更に、ツリー更新部15は、バージョンが異なる階層の根ツリーノードのバージョン情報を繰り上げる(S77)。ツリー更新部15は、全リンク先ノードについて上述の(S70)から(S77)をそれぞれ実行する(S78)。
 上述の図8では、対象ノード11の階層2以上の各階層を対象に処理される例が示されたが、階層1以上の各階層を対象に処理されるようにしてもよい。この場合には、工程(S71)では、ツリー更新部15は、対象ノード11の階層1以上の各階層について、根ツリーノードに含まれるリンク先ノードmに対応付けられたポインタで特定されるツリーノードのバージョン情報をそれぞれ取得するようにすればよい。工程(S83)では、バージョン比較部16は、リンク先ノードmの値域境界値を返信しなくてもよく、ツリー更新部15は、工程(S74)を実行しなくてもよい。
 図9は、第1実施形態におけるツリー探索部13の動作例を示すフローチャートである。ツリー探索部13は、データ操作部12から、対象属性と、属性値又は属性値の範囲とを取得すると、任意のノード11(以降、対象ノード11と表記)のツリー格納部20から対象属性に関するツリー構造データを取得する(S90)。ツリー探索部13は、階層Lに初期値0を設定する(S91)。階層0は最下位階層であり、階層L(1以上)がそれより上段の階層である。
 ツリー探索部13は、取得されたツリー構造データの中に、階層Lのツリーデータが存在するか否かを判定する(S92)。ツリー探索部13は、階層Lのツリーデータが存在しない場合(S92;NO)、ツリー生成部14に、対象ノード11の階層Lのツリーデータの作成を要求する(S93)。この要求に応じて、上述のように、対象ノード11の階層Lのツリーデータが生成される。
 ツリー探索部13は、階層Lのツリーデータを取得し(S94)、その階層Lのツリーデータから、対象属性の属性値又は属性値の範囲に対応する値域を持つノード(宛先ノード)を特定する(S95)。この宛先ノードの特定処理の詳細については図10を用いて後述する。
 ツリー探索部13は、宛先ノードの特定に成功すると(S96;YES)、宛先ノードに関する情報を出力する(S97)。この出力された情報に基づいて、データ操作部12が、その宛先ノードに、データアクセス要求を転送する。
 一方で、宛先ノードの特定に失敗すると(S96;NO)、ツリー探索部13は、階層Lを1増加させ(L=L+1)(S98)、増加された階層Lに関し処理(S92)以降を実行する。以降、ツリー探索部13は、宛先ノードが特定されるまで、探索対象の階層を順次上げていく。なお、一つのデータサーバ10(物理サーバ)上に複数の仮想ノード(論理ノード11)を設ける場合には、一つの階層において全ての仮想ノードの宛先ノード特定に失敗すると、階層Lを1増加させるようにしてもよい。
 図10は、第1実施形態におけるツリー探索部13の、階層Lのツリーデータから宛先ノードを特定する動作の例を示すフローチャートである。即ち、図10には、図9の(S95)の詳細動作が示される。まず、ツリー探索部13は、階層Lのツリーデータの根ツリーノードを特定する(S100)。まず、階層Lには初期値0(最上位層を示す)が設定される(S101)。
 続いて、ツリー探索部13は、特定されたツリーノード(ここでは根ツリーノード)の第1エントリの値域境界値を基準値とした、対象属性の属性値空間における循環順序に基づいて、特定されたツリーノードの中から、対象属性の属性値又は属性値の範囲に対応する値域を包含するエントリを特定する(S102)。この循環順序は、上述した通り、IDリングに対応して属性値空間が持つリング構造と対応する。
 ツリー探索部13は、その特定されたツリーノードからエントリを特定することができない場合には(S103;NO)、宛先ノードの特定失敗を決定する(S108)。一方で、ツリー探索部13は、エントリを特定することに成功した場合には(S103;YES)、特定されたエントリのポインタがノード特定データを指すか否かを判定する(S104)。
 ツリー探索部13は、ノード特定データを指す場合には(S105;YES)、そのポインタが指すノード特定データを取得する(S107)。この処理が宛先ノードの特定に対応する。
 ツリー探索部13は、ノード特定データを指さない場合(S105;NO)、即ち、そのポインタが子ツリーノードを指す場合には、そのポインタが指す子ツリーノードを特定する(S106)。ツリー探索部13は、この特定されたツリーノードに関し、(S102)以降を実行する。
 〔第1実施形態の作用及び効果〕
 上述したように、第1実施形態では、対象属性の属性値又は属性値の範囲に関するデータアクセス要求に応じて、ノード11は、自ノード11のツリー格納部20に格納されるツリー構造データを用いて、そのデータアクセス要求の対象となる部分データを格納する宛先ノードを特定する。これにより、第1実施形態によれば、データアクセス要求を或るノード11で特定された宛先ノードに直接に転送することができるため、データアクセス要求のノード間転送に伴うデータアクセス時間の増加を防ぐことができる。
 更に、第1実施形態では、各ノード11が持つ、値域情報が反映されたツリー構造データは、各ノード11のリンク先ノードから取得されるツリーデータにより自動生成される。また、第1実施形態では、ツリー構造データに含まれる各ツリーノードにはそれぞれバージョン情報が付されており、各ノード11が、データアクセス処理のバックグラウンドにより、所定のタイミングで、このバージョン情報を用いて自身のツリー構造データのバージョン確認及び更新を行う。このとき、各ノード11は、値域変更を反映した最新のツリーデータをリンク先ノードから取得する。
 このように、第1実施形態によれば、値域情報がノード11とリンク先ノードとの間でやりとりされるため、値域情報を集中管理するメタデータサーバ等のような特定サーバ群を設ける必要がなく、これにより、特定サーバ群への負荷集中を防ぐことができる。また、特定サーバ群を設けた場合、それらが単一障害点とならないようにシステムを堅牢化させて管理する必要が生じるところ、上述のような構成により、特定サーバ群を設けることに伴う、障害対策や運用保守の労力を低減させることができる。第1実施形態によれば、各ノード11で個別に生成される値域情報が何らかの理由で消失したとしても、リンク先ノードから再度取得することで復元可能であるため、各ノード11に関する障害対策や運用保守の労力も低減させることができる。
 更に、第1実施形態では、各ノード11が、自律的にかつデータアクセス処理とは別に、値域情報(ツリー構造データ)を最新の状態に保つように動作するため、宛先ノードとして特定されたノード11に対象の属性値又は属性値の範囲に対応する部分データが格納されていないといったアクセスミスを減らすことができる。即ち、第1実施形態によれば、値域変更の全ノードへの伝達時間を短縮することでデータアクセス実行時のアクセスミスを減らすことができ、ひいては、データアクセス時間の増加を低減させることができる。
 また、第1実施形態では、値域情報を反映するツリー構造データが、ノードIDのリンク関係と同様の構造を持つように形成され、値域情報(ツリー構造データ)のバージョン確認や取得は、各ノード11と各ノード11のリンク先ノードとの間で行われる。これにより、第1実施形態によれば、各ノード11にとって、所定時間にバージョン確認(値域変更確認)を行う回数は、各ノード11のリンク数となるため、各ノード11における値域変更確認のための負荷も抑制することができる。
 また、第1実施形態では、各ノード11が所定時間毎にバージョン確認を行うだけでなく、データアクセスの実行時にツリー構造データの更新を行っても良い。データアクセスの実行時とは、ツリー構造データを参照して、あるキー値に対応するノードIDを取得し、そのノードにアクセス後に、既に値域が古くなっておりアクセスが無効と失敗した時である。この時、そのツリー構造データ内の値ツリーノードから葉ツリーノードへの経路と対応するリンクに関して、ツリー構造の更新を行うこともできる。
 [第2実施形態]
 第1実施形態では、ノードIDに基づくリンク関係の構築の手法は限定されていなかった。第2実施形態では、当該リンク関係の構築手法として新たな手法が適応され、これに関連するシステムパラメータの調整処理が加えられる。第2実施形態における分散システム1の構成は、第1実施形態と同様であり、データサーバ10の処理が第1実施形態と異なる。以下、第2実施形態におけるデータサーバ10について第1実施形態と異なる内容を中心に説明し、第1実施形態と同様の内容については適宜省略する。
 〔装置構成〕
 図11は、第2実施形態におけるデータサーバ10の処理構成例を概念的に示す図である。第2実施形態におけるデータサーバ10は、第1実施形態の構成に加えて、パラメータ設定部31を更に有する。
 リンク生成部17は、新たなアルゴリズム(以降、拡張Koordeと表記する)により、ノードIDに基づくリンク関係を構築し、その内容をリンクテーブル19に反映させる。
 周知のKoordeでは、各ノード11が、Sucノードと、各ノード11のIDをパラメータk(自然数)倍して得られる値に対するPredノードと、このPredノードから(k-1)個分のSucノードとそれぞれリンクを確立する。周知のKoordeでは、全ノード11のリンク先ノードの数が固定値kで決められていた。周知のKoordeは、de Bruijnグラフのノードでありつつ、そのIDがノードとして論理的に存在していないノードを不在ノード(Imaginary Note)とし、この不在ノードはそのPredノードが管理することとしており、必要となるリンク数の分布の期待値を取る。即ち、本発明が、de Bruijnグラフのノード間でホップするために必要なリンク数の分布を導出しているが、周知の手法は、当該分布の期待値のみをとって、リンク先ノード数を固定的にkとしていたと解釈できる。そのため、周知のKoordeでは、必要な次数(リンク先ノードの数)より余分な次数が存在する場合もあれば、必要な次数より少ない場合もあり、不足する場合は、Sucノードへのルーティング(転送)により補われていた。また、リンクのさせ方とは独立に、周知のKoordeは、k進数と対応する(logk)ビット数のシフト演算を行うため、kは2の指数乗に限られていた。
 そこで、第2実施形態における拡張Koordeでは、各ノード11におけるリンク先ノードの数(次数)を確率的な次数とする。具体的には、拡張Koordeでは、各ノード11が、自ノードのIDをパラメータk(2以上の整数)倍などして得られる値に対するPredノードである第1リンク先ノードと、自ノードのSucノードのIDをパラメータk倍などして得られる値に対するPredノードである第2リンク先ノードと、IDリングにおいて第1リンク先ノードと第2リンク先ノードとの間に存在するリンク先ノードとに対してそれぞれリンクを確立する。これにより、拡張Koordeでは、各ノード11に対し決定されるリンク先ノードの数(次数)は、パラメータkで制御される確率分布となり、多くのノード11はパラメータkより小さい次数を持ち、一部のノード11はパラメータkより大きな次数を持つことになる。但し、次数の期待値はk+1となる。なお、上述の「IDをパラメータk倍などして得られる値」とは、説明の便宜のために、(ID×k)を2(ID空間のサイズ)で割った余りの意味を簡略化した表現である。他の箇所においても、「(ID×k)を2(ID空間のサイズ)で割った余り」の意味を示す表現として、「IDをパラメータk倍して得られる値」と簡略化される場合がある。
 ツリー更新部15は、ポーリング間隔Tの値を保持しており、このポーリング間隔Tにより、当該バージョン確認を実行する。ポーリング間隔Tは、各ノードの次数に反比例する値であっても良く、システム全体に渡って同一の値でも良い。反比例する場合には、各ノードのポーリング負荷が均一になるというメリットがある。システム全体に渡って、同一の値である場合には、値域変更が起こってから、各ノードのツリーが本来の値域に反映されるまでの時間を一定以内に制約することができるようになる。
 パラメータ設定部31は、或るノード11における値域の変更が分散システム1内の全ノード11に伝達されるまでの最大時間wmax、各ノード11により実行されるバージョン確認の単位時間負荷λ、実行時のツリー更新に関わるツリーの最大高さhmaxなどに対する、システム要求(制約)を満たすように、パラメータであるk及びTの少なくとも一方を設定する。システムの要求とは、或る値以下であるべきという上限値制約の設定や、なるべく小さい負荷にしたいといった最小化要求である。また、最大高さhmaxには、ツリーの高さ1段あたりにかかる1ホップの通信遅延及び処理時間(τ0と表記する)がシステム要求(制約)としてかかることになる。ここで、更新にかかる実行時の遅延は、(hmax×τ0)時間となり、τ0は、予め決められた値となる。単位時間負荷λは、例えば、各ノードが実行する1秒毎のバージョン確認回数を示す。以降、更新にかかる実行時の遅延を単に実行時遅延と表記し、ツリーの高さ1段あたりにかかる1ホップの通信遅延及び処理時間を1ホップ辺りの実行遅延と表記する。
 パラメータk及びTの設定方式としては次のような各方式が考えられる。第1のパラメータ設定方式では、Tが全ノード11(ノード総数N)で同じであり、上記最大時間wmaxに対する制約時間wcが与えられると見なす。第2のパラメータ設定方式では、Tが全ノードで異なってもよく、単位時間負荷λに対する制約負荷λcに基づいてノード毎のポーリング間隔Tが決定される。パラメータ設定部31は決定されたポーリング間隔Tでツリー更新部15が保持する値を更新する。一方、第3のパラメータ設定方式では、ツリーの最大高さhmaxに対するツリーの高さ制約hcに基づいて、パラメータkを決定する。
 なお、上記制約時間wc、上記制約負荷λc、及び、ツリーの高さ制約hcは、他の装置から通信装置7を介して取得されてもよいし、入出力I/F4に接続されるユーザインタフェース装置がユーザにより操作されることにより入力されてもよいし、可搬型の記憶媒体から入出力I/F4を介して取得されてもよい。
 パラメータ設定部31は、第1のパラメータ設定方式では、取得された制約時間wcと、ノード11の総数Nと、リンク生成部17により用いられるパラメータkとを用いて、下記(式1)を満足するポーリング間隔Tを算出する。また、パラメータ設定部31は、第2のパラメータ設定方式では、取得された制約負荷λcと、リンク生成部17により取得される、そのノードのリンク先ノードの数(次数)Dを用いて、下記(式2)を満足するポーリング間隔Tを算出する。パラメータ設定部31は、第3のパラメータ設定方式では、取得されたツリーの高さ制約hcを用いて、下記(式3)によりパラメータkを設定する。なお、上述した1ホップ辺りの実行時遅延(τ0)と、実行時遅延の制約から、ツリーの高さ制約hcが算出されても良い。
Figure JPOXMLDOC01-appb-M000001
 以降では、ポーリング間隔Tは、ノード全体に渡って同一の値である、又は、ノード毎に異なる場合には、上記(式2)で設定されたポーリング間隔の分布から得られる値であるとする。例えば、期待値は(1+k)/λcとなる。ここで、上記単位時間負荷λと、最大時間wmaxとは、各ノード11のポーリング間隔Tと、パラメータkに応じて変化する。上述のように出力次数の期待値はk+1であることから、単位時間負荷λは下記(式4)のように示すことができる。また、値域の変更が全てのノード11に行きわたるまでにかかる時間wの期待値は下記(式5)で示される。最大時間wmaxは、下記(式6)のように示すことが出来る。
Figure JPOXMLDOC01-appb-M000002
 上記(式5)の右辺は、次のように導出される。即ち、各ノード11が実行する各バージョン確認が互いに同一かつ独立に一定のタイミングで行われ、それが(logN)段存在する場合、値域変更の伝搬に要する時間wは、(logN)個の一様分布U(0,T)に従う確率変数の和であるIrwin-Hall分布に従う。そして、上記(式5)の右辺は、その時間wの期待値から導出される。この分布の最大値として、上記(式6)が得られる。
 〔第2実施形態の作用及び効果〕
 第2実施形態では、各ノード11のリンク生成部17は、拡張Koordeアルゴリズムにより、各ノード11のリンク先ノードを決定する。拡張Koordeでは、上述したように、各ノード11におけるリンク先ノードの数(次数)が確率的に決定されるものとした。これにより、周知のKoordeでは、ノードIDがハッシュにより生成されることに起因する確率的な要素が、各ノード11のリンク数(定数)には表れず、Sucノードとそれ以外のノードとの間の利用割合に表れていたのに対して、拡張Koordeでは、各ノード11のリンク数が確率的になる。
 従って、拡張Koordeを用いた第2実施形態では、特に同一のデータサーバ10に複数の仮想ノード(論理ノード11)を設定する場合、一つのデータサーバ10にはリンク数の多いノード11とリンク数の少ないノード11が存在することになり、各ノード11でのツリー構造データのバージョン確認の負荷に差が生じることになる。しかしながら、各データサーバ10に所定数のノード11を実現させることにより、リンク数の多いノード11とリンク数の少ないノード11が同一のデータサーバ10で実現される可能性が高まり、結果として、各データサーバ10のバージョン確認負荷を実質的に一定とすることができる。
 また、周知のKoordeでは、一つのノードが他のノードにリンクする数(次数、特に出力次数)が一定であったが、一つのノードが他のノードからリンクされる数(入力次数)は、確率的でばらつきがあった。拡張Koordeでは、このばらつきが存在するものの、周知のKoordeよりもそのばらつきは小さく、負荷分散されやすい。出力次数のばらつきであれば、上述の第2のパラメータ設定方式に示されるように、ポーリング間隔Tなどの他の要因を考慮することにより負荷の均一化を図ることは可能である。しかしながら、「リンクされてしまう数」である入力次数は、上述のように負荷の均一化を図ることが難しいため、拡張Koordeのように、次数のばらつきが少ないことは望ましい性質である。
 また、第2実施形態では、拡張Koordeで決定されたリンク関係に応じて、階層1以上のツリーデータが生成されるため、バージョン確認要求の送信先を、Sucノードを除外してリンク先ノードのみとすることができ、値域情報を反映するツリー構造データの管理を容易にすることができる。すなわち、各ノードからhホップ先のノード群へのパスをバランスした木構造とすることができる。
 更に、第2実施形態では、値域変更の最大伝達時間wmax及びバージョン確認の単位時間負荷λに対する制約時間τc及び制約負荷λcといったシステム要求(制約)が与えられると、それらを実現するポーリング間隔Tが決定され、そのポーリング間隔Tにより、ツリー構造データのバージョン確認、即ち、値域変更確認が各ノード11で行われる。よって、第2実施形態によれば、各ノード11における値域情報のバージョン確認処理により、予期せぬ負荷が発生するのを防ぐことができる。
 [第3実施形態]
 上述の各実施形態では、部分データを格納するノード11を実現する各データサーバ10が上述のような処理を実行していたが、部分データを格納せずノード11を実現しない装置において、上述のような処理が実行されてもよい。第3実施形態における分散システム1は、部分データを格納せずノード11を実現しない装置として、データ操作クライアント50を更に有する。以下、第3実施形態の分散システム1について、第1実施形態と異なる内容を中心に説明し、第1実施形態と同じ内容については適宜省略する。
 〔システム構成〕
 図12は、第3実施形態における分散システム1の構成例を概念的に示す図である。第3実施形態における分散システム1は、第1実施形態の構成に加えて、複数のデータ操作クライアント(以降、単にクライアントとも表記する)50を更に有する。クライアント50は、ネットワーク9を介してデータサーバ10と通信可能に接続される。クライアント50は、データサーバ10と同様に、アプリケーションや他の端末からの要求に応じて、データサーバ10に格納されるデータにアクセスし、所望のデータを取得する。なお、クライアント50のハードウェア構成もデータサーバ10と同様であり、本実施形態は、クライアント50のハードウェア構成を限定しない。
 〔装置構成〕
 図13は、第3実施形態におけるデータ操作クライアント50の処理構成例を概念的に示す図である。図13に示されるように、クライアント50は、データ操作部12、ツリー探索部13、ツリー生成部14、ツリー更新部15、バージョン比較部16、リンク生成部17、リンクテーブル19、ツリー格納部20等を有する。これら各処理部は、基本的には、第1実施形態と同様である。
 リンク生成部17は、複数のデータサーバ10で実現される複数のノード11の中の任意の1以上のノード11と、クライアント50とのリンク関係を構築し、このリンク関係をリンクテーブル19に反映する。全てのノードが、他の全ノードに関する値域を保持しているため、クライアント50は、任意の1つのノードのみのリンク関係を持つようにしてもよい。クライアント50は、各ノード11のノードIDで構築されるID空間には参加しない、即ち、各ノード11から自発的にアクセスされる対象ではないため、クライアント50におけるリンク関係の構築手法は何ら制限されない。
 ツリー格納部20に格納されるツリー構造データは、クライアント50がIDリング上における隣接ノードを持たないため、階層0のツリーデータを持たない。階層1以上の各階層のツリーデータについては、第1実施形態と同様である。これにより、ツリー生成部14は、階層0のツリーデータを生成しないことを除き、第1実施形態と同様である。
 〔第3実施形態の作用及び効果〕
 このように、第3実施形態では、部分データを格納せずノード11を実現しないクライアント50において、第1実施形態と同様の処理が行われる。よって、第3実施形態におけるクライアント50がデータアクセス要求を取得した場合でも、第1実施形態と同様の作用及び効果を奏することができる。
 以下に実施例を挙げ、上述の各実施形態を更に詳細に説明する。本発明は以下の各実施例から何ら制限を受けない。
 上述の第1実施形態の分散システム1において拡張Koordeが利用される形態の例を実施例1として以下に説明する。実施例1では、ノードIDのID空間が持つ有限範囲は、[0,1024)であり、分散システム1内で9個のノード11が実現される。また、説明を簡単にするために、1つの属性に対する処理のみが説明される。以降、或るID値を持つノードをノード(ID値)と表記する。
 図14は、実施例1におけるIDリングと値域情報との関係を概念的に示す図である。図14の例によれば、ノード(70)は(10,25]の値域を持ち、ノード(803)は(175,255]及び(0,3]の値域を持つ。
 各ノード11のリンク生成部17は、拡張Koordeアルゴリズムにより、自ノード11のリンク先ノードを決定する。実施例1では、拡張Koordeアルゴリズムで利用されるパラメータkが2に設定される。
 図15は、実施例1において生成されるリンク関係の一部を示す図である。ノード(413)は、上述の第1リンク先ノードとしてのノード(803)と、上述の第2リンク先ノードとしてのノード(70)と、IDリングにおいてそれらノードの間に存在する上述の第3リンク先ノードとしてのノード(980)とリンクを張る。ノード(803)は、ノード(413)のID(413)をパラメータk(2)倍して得られる値(826)に対するPredノードである。ノード(70)は、ノード(413)のSucノード(551)のID(551)をパラメータk(2)倍して得られる値(78=1102-1024)のPredノードである。
 ノード(803)は、ノード(551)からノード(803)までの各ノードとリンクを持つ。ノード(551)は、ノード(803)のID(803)をパラメータk(2)倍して得られる値(582=1606-1024)のPredノードである。ノード(803)は、ノード(803)のSucノード(980)のID(980)をパラメータk(2)倍して得られる値(936=1960-1024)のPredノードである。なお、第2リンク先ノードとしてのノード(803)は、自ノードであるため、そのリンク情報は格納されない。ノード(551)は、ノード(70)とノード(129)とリンクを張る。また、ノード70は、ノード(129)とノード(250)とリンクを張る。
 このようなリンク関係によれば、ノード(551)は、2ホップでノード(70)からノード(250)まで到達する。このようなリンク関係が、各ノード11のリンク生成部17により生成され、各ノード11のリンクテーブル19に格納される。
 このようなリンク関係が構築されている状態で、データ操作部12が対象属性の属性値(35)へのデータアクセス要求を取得したと仮定して、以下、実施例1におけるツリー探索部13及びツリー生成部14の動作について図7、図9及び図10のフローチャートを参照しながら説明する。このとき、データ操作部12は、ツリー探索部13に対して、ノード(413)を対象ノードとして、その属性値(35)を含む部分データを格納するノード11を特定するように指示すると仮定する。
 ツリー探索部13は、対象属性の属性値(35)を取得し(S90)、階層Lに初期値0を設定し(S91)、階層0のツリーデータが存在するか否かを判定する(S92)。ツリー探索部13は、階層0のツリーデータが存在しないため(S92;NO)、ツリー生成部14に、ノード(413)の階層0のツリーデータの生成を要求する(S93)。
 ところで、実施例1では、各ノードにおける値域情報の管理形態として、上記管理形態6、即ち、自ノードとSucノードとに関する値域の始点及び終点の両方が管理される形態が用いられる。よって、このとき、ノード(413)は、値域格納部23に、自ノード(413)の値域の始点(53)及び終点(67)、並びに、Sucノード(551)の始点(67)及び終点(138)を持つ。
 ツリー生成部14は、自ノード(413)の値域始点(53)及び値域終点(67)、Sucノード(551)の値域始点(67)及び値域終点(138)に基づいて、以下のような階層0のツリーデータを生成する(S53)。
 第1エントリ:値域境界値(53)、ノード(413)に関するポインタ
 第2エントリ:値域境界値(67)、ノード(551)に関するポインタ
 第3エントリ:値域境界値(138)、Null
 ツリー探索部13は、この階層0のツリーデータから、属性値(35)を包含する値域を持つ宛先ノードの特定を試みる(S95)。しかしながら、階層0のツリーデータが示す値域は、(53,138]であるため、属性値(35)は含まれない。よって、ツリー探索部13は、階層0のツリーデータでは宛先ノードの特定ができないため(S96;NO)、探索対象の階層Lを1段上げる(S98)。
 ツリー探索部13は、階層1のツリーデータが存在しないため(S92;NO)、ツリー生成部14に、ノード(413)の階層1のツリーデータの生成を要求する(S93)。ツリー生成部14は、リンク先ノード(803)の値域始点(175)、リンク先ノード(980)の値域始点(3)、リンク先ノード(70)の値域始点(10)及び値域終点(25)、リンク先ノード(70)のSucノード(129)の値域終点(32)に基づいて、以下のような階層1のツリーデータを生成する(S62)。
 第1エントリ:値域境界値(175)、ノード(803)に関するポインタ
 第2エントリ:値域境界値(3)、ノード(980)に関するポインタ
 第3エントリ:値域境界値(10)、ノード(70)に関するポインタ
 第4エントリ:値域境界値(25)、ノード(129)に関するポインタ
 第5エントリ:値域境界値(32)、Null
 ツリー探索部13は、この階層1のツリーデータから、属性値(35)を包含する値域を持つ宛先ノードの特定を試みる(S95)。しかしながら、階層1のツリーデータが示す値域は、(175,32]であるため、属性値(35)は含まれない。よって、ツリー探索部13は、階層1のツリーデータでは宛先ノードの特定ができないため(S96;NO)、探索対象の階層Lを更に1段上げる(S98)。
 ツリー探索部13は、階層2のツリーデータが存在しないため(S92;NO)、ツリー生成部14に、ノード(413)の階層2のツリーデータの生成を要求する(S93)。ツリー生成部14は、リンク先ノード(803、980及び70)から、階層1のツリーデータをそれぞれ取得し(S57)、取得されたツリーデータに基づいて、階層2のツリーデータを生成する(S58、S59)。これにより、階層2のツリーデータの根ツリーノードが次のように生成される。
 第1エントリ:値域境界値(67)、子ツリーノードへのポインタ(リンク先ノード(803)に対応)
 第2エントリ:値域境界値(175)、子ツリーノードへのポインタ(リンク先ノード(980)に対応)
 第3エントリ:値域境界値(25)、子ツリーノードへのポインタ(リンク先ノード(70)に対応)
 第4エントリ:値域境界値(67)、Null
 ここで、階層2のツリーデータの根ツリーノードが示す値域(67,67]は、全値域をカバーしているため、属性値(53)を含む。この包含判定は、67を基準とした循環順序であり、(67,67]は(67,255]∪[0,67]と見なされ、属性値(35)はこれに含まれる。更に、ツリー探索部13は、(32,53]を値域とするエントリを特定し、そのエントリのポインタを辿り、根ツリーノードの一段下のツリーノードにて、ノード(250)のノード特定データへのポインタを特定する(S107)。
 これにより、データ操作部12は、ツリー探索部13から取得されたノード(250)のノード特定データに基づいて、ノード(250)の通信アドレスを取得し、その通信アドレスを用いて、ノード(250)に属性値(35)のデータアクセス処理を行う。なお、このようにして生成されるツリー構造データが図16で示される。図16は、実施例1において各ノード11で生成されるツリー構造データの一部を示す図である。
 次に、実施例1におけるツリー更新部15及びバージョン比較部16の動作例について図8を参照し説明する。ここでは、ノード(250)とノード(129)との間で負荷分散が行われ、図17に示されるように値域変更が行われたものと仮定する。図17は、実施例1における負荷分散の例を概念的に示す図である。この負荷分散により、ノード(129)は、値域(25,38]を持つ部分データを格納し、ノード(250)は、値域(38,53]を持つ部分データを格納する。なお、この負荷分散における負荷は、データ格納量であっても、データアクセス頻度であっても良い。また、データサーバ10辺りの負荷を指標として、論理ノード11辺りの負荷を均一化しても良い。
 ここでは、ツリー更新部15及びバージョン比較部16の処理対象がノード(413)である場合を例に挙げる。このとき、ノード(413)は、図16に示されるようなツリー構造データを持つと仮定する。ツリー更新部15は、所定のタイミングで、次のようなバージョン確認処理を行う。
 まず、ツリー更新部15は、ノード(413)のリンクテーブル19を参照することにより、ノード(413)のリンク先ノード(803、980、70)を認識し、その中の1つのリンク先ノード(803)を特定する(S70)。続いて、ツリー更新部15は、ノード(413)のツリー構造データ内の階層2の根ツリーノードに設定されているリンク先ノード(803)に対応するポインタで特定されるツリーノードのバージョン情報(バージョン1(ver.1))を取得する(S71)。ツリー更新部15は、階層2のバージョン情報(バージョン1)を含むバージョン確認要求をリンク先ノード(803)に送信する(S72)。
 リンク先ノード(803)がそのバージョン確認要求を受信すると(S81)、バージョン比較部16が、それに含まれる階層2のバージョン情報(バージョン1)と、リンク先ノード(803)の階層1のバージョン情報(バージョン1)とを比較する(S82)。ここでは、バージョンは同一である。そこで、バージョン比較部16は、リンク先ノード(803)が持つ値域情報を含む返信を送る(S83)。実施例1における各ノードの値域情報管理形態(管理形態6)によれば、リンク先ノード(803)が持つ値域情報として、リンク先ノード(803)の値域始点(175)、リンク先ノード(803)のSucノード(980)の値域始点(3)及び値域終点(10)が返信される。
 ツリー更新部15は、その返信を受けると(S73)、ノード(413)の階層1のツリーデータにおける、リンク先ノード(803)が持つ値域情報に対応する第1エントリから第3エントリに設定されている値域境界値(175、3及び10)と、その返信に含まれるリンク先ノード(803)が持つ最新の値域情報(175、3及び10)とを比較する。ここでは、両者は同一であり、値域変更されていないと判定される。
 続いて、ツリー更新部15は、その返信を参照することにより、バージョンが異なる階層が存在するか否かを判定する(S75)。ここでは、バージョンが異なる階層が存在しないので(S75;NO)、ツリー更新部15は、次のリンク先ノード(980)を特定する(S70)。このとき、ノード(980)は、図18に示されるようなツリー構造データを持つと仮定する。
 図18は、実施例1における負荷分散後のノード(980)のツリー構造データの例を概念的に示す図である。即ち、ノード(980)のリンク先ノード(129)の値域境界値が変更されているため、ノード(980)の階層1のツリーデータのバージョン情報が2に繰り上げられている。
 ツリー更新部15は、リンク先ノード(980)に関しても同様に処理(S71)を実行し、階層2のバージョン情報(バージョン1)を含むバージョン確認要求をリンク先ノード(980)に送信する(S72)。
 リンク先ノード(980)がそのバージョン確認要求を受信すると(S81)、バージョン比較部16が、それに含まれる階層2のバージョン情報(バージョン1)と、リンク先ノード(980)の階層1のバージョン情報(バージョン2)とを比較する(S82)。ここでは、バージョンが異なるため、バージョン比較部16は、リンク先ノード(980)の階層1のツリーデータ(バージョン情報含む)と、リンク先ノード(980)が持つ値域情報(3、10及び25)とを含む返信を送る(S83)。
 ツリー更新部15は、その返信を受けると(S73)、ノード(413)の階層1のツリーデータにおける、リンク先ノード(980)が持つ値域情報に対応する第2エントリから第4エントリに設定されている値域境界値(3、10及び25)と、その返信に含まれるリンク先ノード(980)が持つ最新の値域情報(3、10及び25)とを比較する。ここでは、両者は同一であり、値域変更されていないと判定される。
 続いて、ツリー更新部15は、その返信に基づき、階層2のバージョンが異なると判定し(S75;YES)、階層2の根ツリーノードに含まれる、リンク先ノード(980)に対応するポインタで特定されるツリーノードを、その返信に含まれる、リンク先ノード(980)の階層1のツリーデータで更新する(S76)。これにより、そのポインタで特定されるツリーノードのバージョン情報は2となる。なお、当該更新は、返信に含まれるツリーデータの複製であってもよいし、根ツリーノードに設定される値域境界値との関係で、返信に含まれるツリーデータ内の値域境界値情報が省かれてもよい。
 更に、ツリー更新部15は、取得されたリンク先ノード(980)の階層1のツリーデータの先頭エントリの値域境界値(175)を、ノード(413)の階層2のツリーデータにおける、リンク先ノード(980)に対応付けられたポインタを含むエントリの値域境界値に設定し、階層2の根ツリーノードのバージョン情報を繰り上げる(S77)。続いて、ツリー更新部15は、次のリンク先ノード(70)を特定する(S70)。以降、リンク先ノード(70)についても同様のバージョン確認処理が実行される。
 図19は、実施例1におけるノード(413)のバージョン更新後のツリー構造データの例を概念的に示す図である。図19に示されるように、階層2のツリーデータに関し、根ツリーノードのバージョン情報(Ver.3)、リンク先ノード(980)に対応付けられたポインタで特定される子ツリーノードのバージョン情報(Ver.2)、リンク先ノード(70)に対応付けられたポインタで特定される子ツリーノードのバージョン情報(Ver.2)及び値域境界値(38)がそれぞれ更新されている。また、ノード(413)以外で、ノード(980)へのリンクを有しているノードについても同様に処理され、それぞれ新たな値域情報が取得される。
 なお、リンク先ノード(980)から取得されたツリーデータとリンク先ノード(70)から取得されたツリーデータとでは重複するエントリ(値域境界値(25、38及び53)を含む3つのエントリ)が存在するため、図19の例では、前のリンク先ノード(980)に対応付けられたポインタで特定される子ツリーノードからはその重複するエントリは排除されている。階層2以上のツリーデータの根ツリーノード以外のツリーノードは、返信に含まれるツリーデータの複製であってもよいし、このように冗長性を排除するためにそのツリーデータから変形されたものであってもよい。なお、このように、各枝(葉)ツリーノード間の冗長性を排除する場合、バージョン管理とツリーノード間の差分管理を対応づけておくことが望ましい。上述の例では、冗長なため削除されたエントリにおいて値域境界値の変更が発生していたが、リンク先ノード(980)に対応付けられたポインタで特定される子ツリーノードのバージョン情報が繰り上げられた。しかしながら、冗長なため削除されるエントリに対する更新(自分のSucと重複する箇所)については、バージョン情報を繰り上げないようにしてもよい。
 次に、実施例2として、上述の第2実施形態で利用される、拡張Koorde及びパラメータについて説明する。
 拡張Koordeの入力次数(indegree)、出力次数(outdegree)、及び、構築される木の高さ(又はホップ数)は、各ノードのSucノードまでの距離に関する確率変数に強く依存する。1つの物理サーバ(データサーバ10)辺りの仮想サーバ数(論理ノード11の数)をv、論理ノード11の総数をNとすると、隣接ノードまでの距離に対応する確率変数は幾何分布に従い、その仮想サーバ分vの和は、負の二項分布NB(v、p)に従う。また、或る範囲xに含まれるノード数は二項分布B(x、p)に従う。pは、N/2である。出力次数(δOUT)及び入力次数(δIN)は、下記(式X1)及び(式X2)で与えられる。
Figure JPOXMLDOC01-appb-M000003
 ツリーの階層については、各ノードにて最も高いツリーの高さhmaxの上限の分布が容易に求まる。hmaxは、hホップ先のノード群がカバーするIDの範囲をrhとすると、rh>2を満たす最小の高さ(h)である。ノードとSucノードとの距離をrとすると、rhはrkよりも広いため、hmaxは、少なくともrk>2となる最小のh以下であり、これが上限hmaxとなる。この上限の確率分布は、f(h)=2/kとすると、上記(式X3)で与えられる。
 ここで、或るノード11における値域の変更が分散システム1内の全ノード11に伝達されるまでの最大時間wmaxの制約(制約時間wc)及び実行時遅延の上限制約を設定した上で、各ノード11により実行されるバージョン確認の単位時間負荷λを最小化することを考える。ここでは、ラグランジュ乗数法による最適化を行う。ラグランジュ乗数をλとλとすると、KKT(Karush-Kuhn-Tucker)条件は、λ≧0、(wc-TlogN)≧0、λ(wc-TlogN)=0、及び、λ≧0、(hc-logN)≧0、λ(hc-logN)=0となる。hcとは、上述のとおり、ツリーの高さ制約hcである。これら条件を制約とし、下記(式X4)のラグランジュ関数を最小化する。
Figure JPOXMLDOC01-appb-M000004
 上記(式X4)をポーリング間隔Tで偏微分すると、下記(式X5)が得られる。
Figure JPOXMLDOC01-appb-M000005
 ここで、λ=0とすると、T>0及びk>0よりT→∞で上述の単位時間負荷λは最小となるが、これには、制約時間wcがwc>∞である必要があり、現実的でない。よって、KKT条件からwc=TlogNである。最適点では上記(式X5)が0であるため、下記(式X6)が得られる。
Figure JPOXMLDOC01-appb-M000006
 一方、上記(式X4)をkで偏微分して、上記(式X6)を用いると、下記(式X7)が得られる。
Figure JPOXMLDOC01-appb-M000007
 ここで、(hc-logN)>0である場合を考える(条件(i)と表記)。この時、KKT条件よりλ=0であり、上記(式X8)を0とするkは、logk=(1+k)/kを満たすk*であり、k*=3.59...である。kのこの値を用いると、条件(i)は、hc>0.78logNを満たす場合と対応する。例えば、N=1000の場合、設定されたhcがおよそ5.4以上の場合と対応する。この時、ポーリング間隔Tは、下記(式X9)により設定される。
Figure JPOXMLDOC01-appb-M000008
 上記条件(i)以外の場合、hc=logNであることから、パラメータkは、Nの(1/hc)乗で、ポーリング間隔Tは、T=wc/hcで決定される。なお、de Bruijn graphでの2ビットシフトと対応することから、k*は便宜的にk=4とするのが好ましい。
 各ノード11は、リンクを構築する際に、与えられたツリーの高さ制約hc2を用いて、少なくともpredノード(km)からpredノード(km+kρ)までのノードとリンクするようにしても良い。ρは、以下の(式X10)で示される。このようにすることで、全てのノード間でのホップ数の上限(直径)をhc2以下に抑える事が出来る。なお、kmとは、「km mod 2」を簡略化した表記である。
Figure JPOXMLDOC01-appb-M000009
 [変形例]
 上述の各実施形態及び各変形例におけるバージョン確認処理では、対象ノードのリンク先ノード側でバージョン情報の比較が行われ(図8のS82)、バージョンが異なる階層のツリーデータがそのリンク先ノードから対象ノードへ返信されていた(図8のS83)。このような構成は、リンク先ノードから対象ノードへ階層2以降の全ツリーデータが送られ、対象ノード側でバージョン情報の比較が行われるようにされてもよい。
 [補足]
 上述の拡張Koordeアルゴリズムは、上述のような各実施形態及び各実施例で示されるような態様以外に適用されても効果的である。例えば、当該拡張Koordeアルゴリズムは、属性値が順序付けられていないデータ構造におけるDHT(Distributed Hash Table)に適用されてもよい。この場合、次のような実施態様が考えられる。
 データが分割された複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードを実現する分散データ管理装置であって、
 前記対象論理ノードは、
 リング構造を有する有限の識別子空間内で前記複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、前記対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、
 前記複数の部分データの中の少なくとも1つを格納するデータ格納部と、
 前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含むリンク情報を格納するリンクテーブルと、
 を備える分散データ管理装置。
 データが分割された複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードであって、リング構造を有する有限の識別子空間内で該複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、該対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、該複数の部分データの中の少なくとも1つを格納するデータ格納部とを有する該対象論理ノードを実現するコンピュータが、
 前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含むリンク情報を生成する、
 分散データ管理方法。
 上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。また、上述の説明で用いた複数のフローチャートでは、複数のステップ(処理)が順番に記載されているが、本実施形態で実行される処理ステップの実行順序は、その記載の順番に制限されない。本実施形態では、図示される処理ステップの順番を内容的に支障のない範囲で変更することができる。
 上記の各実施形態及び各変形例の一部又は全部は、以下の付記のようにも特定され得る。但し、各実施形態及び各変形例が以下の記載に限定されるものではない。
(付記1)
 属性値順に順序付けられたデータが分割された複数の部分データであって属性毎の値域をそれぞれ有する複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードを実現する分散データ管理装置であって、
 前記対象論理ノードは、
 リング構造を有する有限の識別子空間内で前記複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、前記対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、
 前記複数の部分データの中の少なくとも1つを格納するデータ格納部と、
 前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記識別子空間内における前記対象ノード識別子との間の関係に応じて確立される前記対象論理ノードとリンク先論理ノードとの間のリンク情報を格納するリンクテーブルと、
 前記データ格納部に格納される前記部分データに対応する属性毎の値域境界値であって、該属性毎の該値域境界が前記識別子空間内において前記対象論理ノードと前記対象論理ノードと隣接する論理ノードとの間に位置する該属性毎の該値域境界値を格納する値域格納部と、
 アクセス要求に対応する前記部分データを格納する論理ノードを特定するための、値域をそれぞれ示す複数のツリーノードから構成される属性毎のツリー構造データであって、前記リンク先論理ノードと対応付けられた子ツリーノードへのポインタと、該ポインタを選択するための値域を示す値とから形成される少なくとも1つのエントリを含む根ツリーノードを有するツリー構造データを格納するツリー格納部と、
 を備える分散データ管理装置。
(付記2)
 前記対象論理ノードは、
 前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードからツリーデータを取得し、該取得されたツリーデータから前記根ツリーノードより下段の少なくとも1つのツリーノードを生成するツリー生成部を更に備える付記1に記載の分散データ管理装置。
(付記3)
 前記ツリー格納部に格納される前記ツリー構造データは、複数階層を持ち、各階層にツリーデータをそれぞれ持ち、第1階層のツリーデータは、前記リンク先論理ノードが前記値域格納部に格納する値域情報に対応するエントリを有し、前記第1階層より上位の階層L(Lは2以上)のツリーデータは、前記根ツリーノードを含み、
 前記ツリー生成部は、前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードから、前記リンク先論理ノードに格納される階層(L-1)のツリーデータを取得し、取得された階層(L-1)のツリーデータから、前記階層Lのツリーデータの中の前記リンク先論理ノードに対応する部分ツリーデータを生成する、
 付記2に記載の分散データ管理装置。
(付記4)
 前記ツリー格納部に格納される前記各ツリーデータを構成する各ツリーノードは、バージョン情報をそれぞれ含み、
 前記対象論理ノードは、
 前記階層Lの前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードに対して、該ポインタが指す子ツリーノードのバージョン情報が設定されたバージョン確認要求を送信し、該バージョン確認要求に対する該リンク先論理ノードからの返信に含まれるツリーデータ及びバージョン情報により、各ツリーノード及び各ツリーノードのバージョン情報を更新するツリー更新部と、
 他の論理ノードから前記バージョン確認要求を受信し、該バージョン確認要求に含まれる前記階層Lに関するバージョン情報を、前記対象論理ノードが持つ階層(L-1)のツリーデータのバージョン情報とそれぞれ比較し、バージョンが異なる階層(L-1)のツリーデータをバージョン情報と共に該他の論理ノードへ返信するバージョン比較部と、
 を更に備える付記3に記載の分散データ管理装置。
(付記5)
 前記対象論理ノードが、
 探索対象属性に関する前記ツリー構造データに含まれるツリーノードの第1エントリが示す値域境界値を該探索対象属性の属性値空間内の基準値とし、該基準値から該属性値空間内の最大値までの間の任意の値が、該属性値空間内の最小値から該基準値までの間の任意の値より小さくなる場合を含む、該属性値空間の循環順序に基づく包含判定により、前記ツリー構造データから探索対象の属性値を値域に含むエントリを特定するツリー探索部を更に備える付記4に記載の分散データ管理装置。
(付記6)
 前記各階層の根ツリーノードには、前記属性値空間における全属性値を包含しない値域がそれぞれ設定され、
 前記ツリー探索部は、或る階層の前記ツリーデータから、前記探索対象属性値を値域に含むエントリを特定できない場合には、1段上の階層のツリーデータの探索を試み、該1段上の階層のツリーデータが存在しない場合には、前記ツリー生成部に、該1段上の階層のツリーデータの生成を依頼する、
 付記5に記載の分散データ管理装置。
(付記7)
 前記リンクテーブルに格納される前記リンク情報は、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含む、
 付記1から6のいずれか1つに記載の分散データ管理装置。
(付記8)
 前記リンクテーブルは、前記対象論理ノードから、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードへの複数リンクを含むリンク情報を格納し、
 前記ツリー更新部は、前記バージョン確認要求をポーリング間隔Tで送信し、
 前記対象論理ノードは、
 前記複数の論理ノードの少なくとも1つにおける値域の変更が前記複数の論理ノードの全てに伝達されるまでの最大時間に対するシステム制約時間wc、又は、前記各論理ノードが前記バージョン確認要求を送信する単位時間負荷に対するシステム制約負荷λcを取得し、取得されたシステム制約時間wc又は取得されたシステム制約負荷λc、及び、前記論理ノードの総数N又は前記対象論理ノードのリンク先ノードの数Dを、下記(式1)又は下記(式2)に適用することにより、前記ポーリング間隔Tを算出するパラメータ設定部、
 を更に備える付記4から6のいずれか1つに記載の分散データ管理装置。
Figure JPOXMLDOC01-appb-M000010
 kは前記パラメータkを示す。
(付記9)
 前記パラメータkが4に設定される付記7又は8に記載の分散データ管理装置。
(付記10)
 アクセス要求に対応する部分データを格納しており、付記6に記載の分散データ管理装置で実現される前記対象論理ノードを該アクセス要求の宛先として特定する分散データ操作装置であって、
 前記対象論理ノードを含む複数のリンク先論理ノードと通信可能となるリンク情報を格納するリンクテーブルと、
 前記ツリー格納部と、
 前記ツリー更新部と、
 前記ツリー探索部と、
 を備える分散データ操作装置。
(付記11)
 属性値順に順序付けられたデータが分割された複数の部分データであって属性毎の値域をそれぞれ有する複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードをコンピュータに実現させるプログラムであって、
 前記対象論理ノードが、
 リング構造を有する有限の識別子空間内で前記複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、前記対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、
 前記複数の部分データの中の少なくとも1つを格納するデータ格納部と、
 前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記識別子空間内における前記対象ノード識別子との間の関係に応じて確立される前記対象論理ノードとリンク先論理ノードとの間のリンク情報を格納するリンクテーブルと、
 前記データ格納部に格納される前記部分データに対応する属性毎の値域境界値であって、該属性毎の該値域境界が前記識別子空間内において前記対象論理ノードと前記対象論理ノードと隣接する論理ノードとの間に位置する該属性毎の該値域境界値を格納する値域格納部と、
 アクセス要求に対応する前記部分データを格納する論理ノードを特定するための、値域をそれぞれ示す複数のツリーノードから構成される属性毎のツリー構造データであって、前記リンク先論理ノードと対応付けられた子ツリーノードへのポインタと、該ポインタを選択するための値域を示す値とから形成される少なくとも1つのエントリを含む根ツリーノードを有するツリー構造データを格納するツリー格納部と、
 を備えるプログラム。
(付記12)
 前記対象論理ノードが、前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードからツリーデータを取得し、該取得されたツリーデータから前記根ツリーノードより下段の少なくとも1つのツリーノードを生成するツリー生成部を更に備える付記11に記載のプログラム。
(付記13)
 前記ツリー格納部に格納される前記ツリー構造データは、複数階層を持ち、各階層にツリーデータをそれぞれ持ち、第1階層のツリーデータは、前記リンク先論理ノードが前記値域格納部に格納する値域情報に対応するエントリを有し、前記第1階層より上位の階層L(Lは2以上)のツリーデータは、前記根ツリーノードを含み、
 前記ツリー生成部は、前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードから、前記リンク先論理ノードに格納される階層(L-1)のツリーデータを取得し、取得された階層(L-1)のツリーデータから、前記階層Lのツリーデータの中の前記リンク先論理ノードに対応する部分ツリーデータを生成する、
 付記12に記載のプログラム。
(付記14)
 前記ツリー格納部に格納される前記各ツリーデータを構成する各ツリーノードは、バージョン情報をそれぞれ含み、
 前記対象論理ノードは、
 前記階層Lの前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードに対して、該ポインタが指す子ツリーノードのバージョン情報が設定されたバージョン確認要求を送信し、該バージョン確認要求に対する該リンク先論理ノードからの返信に含まれるツリーデータ及びバージョン情報により、各ツリーノード及び各ツリーノードのバージョン情報を更新するツリー更新部と、
 他の論理ノードから前記バージョン確認要求を受信し、該バージョン確認要求に含まれる前記階層Lに関するバージョン情報を、前記対象論理ノードが持つ階層(L-1)のツリーデータのバージョン情報とそれぞれ比較し、バージョンが異なる階層(L-1)のツリーデータをバージョン情報と共に該他の論理ノードへ返信するバージョン比較部と、
 を更に備える付記13に記載のプログラム。
(付記15)
 前記対象論理ノードが、
 探索対象属性に関する前記ツリー構造データに含まれるツリーノードの第1エントリが示す値域境界値を該探索対象属性の属性値空間内の基準値とし、該基準値から該属性値空間内の最大値までの間の任意の値が、該属性値空間内の最小値から該基準値までの間の任意の値より小さくなる場合を含む、該属性値空間の循環順序に基づく包含判定により、前記ツリー構造データから探索対象の属性値を値域に含むエントリを特定するツリー探索部を更に備える付記14に記載のプログラム。
(付記16)
 前記各階層の根ツリーノードには、前記属性値空間における全属性値を包含しない値域がそれぞれ設定され、
 前記ツリー探索部は、或る階層の前記ツリーデータから、前記探索対象属性値を値域に含むエントリを特定できない場合には、1段上の階層のツリーデータの探索を試み、該1段上の階層のツリーデータが存在しない場合には、前記ツリー生成部に、該1段上の階層のツリーデータの生成を依頼する、
 付記15に記載のプログラム。
(付記17)
 前記リンクテーブルに格納される前記リンク情報は、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含む、
 付記11から16のいずれか1つに記載のプログラム。
(付記18)
 前記リンクテーブルは、前記対象論理ノードから、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードへの複数リンクを含むリンク情報を格納し、
 前記ツリー更新部は、前記バージョン確認要求をポーリング間隔Tで送信し、
 前記対象論理ノードは、
 前記複数の論理ノードの少なくとも1つにおける値域の変更が前記複数の論理ノードの全てに伝達されるまでの最大時間に対するシステム制約時間wc、又は、前記各論理ノードが前記バージョン確認要求を送信する単位時間負荷に対するシステム制約負荷λcを取得し、取得されたシステム制約時間wc又は取得されたシステム制約負荷λc、及び、前記論理ノードの総数N又は前記対象論理ノードのリンク先ノードの数Dを、下記(式1)又は下記(式2)に適用することにより、前記ポーリング間隔Tを算出するパラメータ設定部、
 を更に備える付記14に記載のプログラム。
Figure JPOXMLDOC01-appb-M000011
 kは前記パラメータkを示す。
(付記19)
 前記パラメータkが4に設定される付記17又は18に記載のプログラム。
(付記20)
 データが分割された複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードを実現する分散データ管理装置であって、
 前記対象論理ノードは、
 リング構造を有する有限の識別子空間内で前記複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、前記対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、
 前記複数の部分データの中の少なくとも1つを格納するデータ格納部と、
 前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含むリンク情報を格納するリンクテーブルと、
 を備える分散データ管理装置。
(付記21)
 データが分割された複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードであって、リング構造を有する有限の識別子空間内で該複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、該対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、該複数の部分データの中の少なくとも1つを格納するデータ格納部とを有する該対象論理ノードを実現するコンピュータが、
 前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含むリンク情報を生成する、
 分散データ管理方法。
(付記22)
 付記11から19のいずれか1つに記載のプログラムをコンピュータに読み取り可能に記録する記録媒体。
 この出願は、2012年5月15日に出願された日本出願特願2012-111189号を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (21)

  1.  属性値順に順序付けられたデータが分割された複数の部分データであって属性毎の値域をそれぞれ有する複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードを実現する分散データ管理装置であって、
     前記対象論理ノードは、
     リング構造を有する有限の識別子空間内で前記複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、前記対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、
     前記複数の部分データの中の少なくとも1つを格納するデータ格納部と、
     前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記識別子空間内における前記対象ノード識別子との間の関係に応じて確立される前記対象論理ノードとリンク先論理ノードとの間のリンク情報を格納するリンクテーブルと、
     前記データ格納部に格納される前記部分データに対応する属性毎の値域境界値であって、該属性毎の該値域境界が前記識別子空間内において前記対象論理ノードと前記対象論理ノードと隣接する論理ノードとの間に位置する該属性毎の該値域境界値を格納する値域格納部と、
     アクセス要求に対応する前記部分データを格納する論理ノードを特定するための、値域をそれぞれ示す複数のツリーノードから構成される属性毎のツリー構造データであって、前記リンク先論理ノードと対応付けられた子ツリーノードへのポインタと、該ポインタを選択するための値域を示す値とから形成される少なくとも1つのエントリを含む根ツリーノードを有するツリー構造データを格納するツリー格納部と、
     を備える分散データ管理装置。
  2.  前記対象論理ノードは、
     前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードからツリーデータを取得し、該取得されたツリーデータから前記根ツリーノードより下段の少なくとも1つのツリーノードを生成するツリー生成部を更に備える請求項1に記載の分散データ管理装置。
  3.  前記ツリー格納部に格納される前記ツリー構造データは、複数階層を持ち、各階層にツリーデータをそれぞれ持ち、第1階層のツリーデータは、前記リンク先論理ノードが前記値域格納部に格納する値域情報に対応するエントリを有し、前記第1階層より上位の階層L(Lは2以上)のツリーデータは、前記根ツリーノードを含み、
     前記ツリー生成部は、前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードから、前記リンク先論理ノードに格納される階層(L-1)のツリーデータを取得し、取得された階層(L-1)のツリーデータから、前記階層Lのツリーデータの中の前記リンク先論理ノードに対応する部分ツリーデータを生成する、
     請求項2に記載の分散データ管理装置。
  4.  前記ツリー格納部に格納される前記各ツリーデータを構成する各ツリーノードは、バージョン情報をそれぞれ含み、
     前記対象論理ノードは、
     前記階層Lの前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードに対して、該ポインタが指す子ツリーノードのバージョン情報が設定されたバージョン確認要求を送信し、該バージョン確認要求に対する該リンク先論理ノードからの返信に含まれるツリーデータ及びバージョン情報により、各ツリーノード及び各ツリーノードのバージョン情報を更新するツリー更新部と、
     他の論理ノードから前記バージョン確認要求を受信し、該バージョン確認要求に含まれる前記階層Lに関するバージョン情報を、前記対象論理ノードが持つ階層(L-1)のツリーデータのバージョン情報とそれぞれ比較し、バージョンが異なる階層(L-1)のツリーデータをバージョン情報と共に該他の論理ノードへ返信するバージョン比較部と、
     を更に備える請求項3に記載の分散データ管理装置。
  5.  前記対象論理ノードが、
     探索対象属性に関する前記ツリー構造データに含まれるツリーノードの第1エントリが示す値域境界値を該探索対象属性の属性値空間内の基準値とし、該基準値から該属性値空間内の最大値までの間の任意の値が、該属性値空間内の最小値から該基準値までの間の任意の値より小さくなる場合を含む、該属性値空間の循環順序に基づく包含判定により、前記ツリー構造データから探索対象の属性値を値域に含むエントリを特定するツリー探索部を更に備える請求項4に記載の分散データ管理装置。
  6.  前記各階層の根ツリーノードには、前記属性値空間における全属性値を包含しない値域がそれぞれ設定され、
     前記ツリー探索部は、或る階層の前記ツリーデータから、前記探索対象属性値を値域に含むエントリを特定できない場合には、1段上の階層のツリーデータの探索を試み、該1段上の階層のツリーデータが存在しない場合には、前記ツリー生成部に、該1段上の階層のツリーデータの生成を依頼する、
     請求項5に記載の分散データ管理装置。
  7.  前記リンクテーブルに格納される前記リンク情報は、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含む、
     請求項1から6のいずれか1項に記載の分散データ管理装置。
  8.  前記リンクテーブルは、前記対象論理ノードから、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードへの複数リンクを含むリンク情報を格納し、
     前記ツリー更新部は、前記バージョン確認要求をポーリング間隔Tで送信し、
     前記対象論理ノードは、
     前記複数の論理ノードの少なくとも1つにおける値域の変更が前記複数の論理ノードの全てに伝達されるまでの最大時間に対するシステム制約時間wc、又は、前記各論理ノードが前記バージョン確認要求を送信する単位時間負荷に対するシステム制約負荷λcを取得し、取得されたシステム制約時間wc又は取得されたシステム制約負荷λc、及び、前記論理ノードの総数N又は前記対象論理ノードのリンク先ノードの数Dを、下記(式1)又は下記(式2)に適用することにより、前記ポーリング間隔Tを算出するパラメータ設定部、
     を更に備える請求項4から6のいずれか1項に記載の分散データ管理装置。
    Figure JPOXMLDOC01-appb-M000012
     kは前記パラメータkを示す。
  9.  前記パラメータkが4に設定される請求項7又は8に記載の分散データ管理装置。
  10.  アクセス要求に対応する部分データを格納しており、請求項6に記載の分散データ管理装置で実現される前記対象論理ノードを該アクセス要求の宛先として特定する分散データ操作装置であって、
     前記対象論理ノードを含む複数のリンク先論理ノードと通信可能となるリンク情報を格納するリンクテーブルと、
     前記ツリー格納部と、
     前記ツリー更新部と、
     前記ツリー探索部と、
     を備える分散データ操作装置。
  11.  属性値順に順序付けられたデータが分割された複数の部分データであって属性毎の値域をそれぞれ有する複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードをコンピュータに実現させるプログラムであって、
     前記対象論理ノードが、
     リング構造を有する有限の識別子空間内で前記複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、前記対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、
     前記複数の部分データの中の少なくとも1つを格納するデータ格納部と、
     前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記識別子空間内における前記対象ノード識別子との間の関係に応じて確立される前記対象論理ノードとリンク先論理ノードとの間のリンク情報を格納するリンクテーブルと、
     前記データ格納部に格納される前記部分データに対応する属性毎の値域境界値であって、該属性毎の該値域境界が前記識別子空間内において前記対象論理ノードと前記対象論理ノードと隣接する論理ノードとの間に位置する該属性毎の該値域境界値を格納する値域格納部と、
     アクセス要求に対応する前記部分データを格納する論理ノードを特定するための、値域をそれぞれ示す複数のツリーノードから構成される属性毎のツリー構造データであって、前記リンク先論理ノードと対応付けられた子ツリーノードへのポインタと、該ポインタを選択するための値域を示す値とから形成される少なくとも1つのエントリを含む根ツリーノードを有するツリー構造データを格納するツリー格納部と、
     を備えるプログラム。
  12.  前記対象論理ノードが、前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードからツリーデータを取得し、該取得されたツリーデータから前記根ツリーノードより下段の少なくとも1つのツリーノードを生成するツリー生成部を更に備える請求項11に記載のプログラム。
  13.  前記ツリー格納部に格納される前記ツリー構造データは、複数階層を持ち、各階層にツリーデータをそれぞれ持ち、第1階層のツリーデータは、前記リンク先論理ノードが前記値域格納部に格納する値域情報に対応するエントリを有し、前記第1階層より上位の階層L(Lは2以上)のツリーデータは、前記根ツリーノードを含み、
     前記ツリー生成部は、前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードから、前記リンク先論理ノードに格納される階層(L-1)のツリーデータを取得し、取得された階層(L-1)のツリーデータから、前記階層Lのツリーデータの中の前記リンク先論理ノードに対応する部分ツリーデータを生成する、
     請求項12に記載のプログラム。
  14.  前記ツリー格納部に格納される前記各ツリーデータを構成する各ツリーノードは、バージョン情報をそれぞれ含み、
     前記対象論理ノードは、
     前記階層Lの前記根ツリーノードに含まれる前記ポインタに対応付けられた前記リンク先論理ノードに対して、該ポインタが指す子ツリーノードのバージョン情報が設定されたバージョン確認要求を送信し、該バージョン確認要求に対する該リンク先論理ノードからの返信に含まれるツリーデータ及びバージョン情報により、各ツリーノード及び各ツリーノードのバージョン情報を更新するツリー更新部と、
     他の論理ノードから前記バージョン確認要求を受信し、該バージョン確認要求に含まれる前記階層Lに関するバージョン情報を、前記対象論理ノードが持つ階層(L-1)のツリーデータのバージョン情報とそれぞれ比較し、バージョンが異なる階層(L-1)のツリーデータをバージョン情報と共に該他の論理ノードへ返信するバージョン比較部と、
     を更に備える請求項13に記載のプログラム。
  15.  前記対象論理ノードが、
     探索対象属性に関する前記ツリー構造データに含まれるツリーノードの第1エントリが示す値域境界値を該探索対象属性の属性値空間内の基準値とし、該基準値から該属性値空間内の最大値までの間の任意の値が、該属性値空間内の最小値から該基準値までの間の任意の値より小さくなる場合を含む、該属性値空間の循環順序に基づく包含判定により、前記ツリー構造データから探索対象の属性値を値域に含むエントリを特定するツリー探索部を更に備える請求項14に記載のプログラム。
  16.  前記各階層の根ツリーノードには、前記属性値空間における全属性値を包含しない値域がそれぞれ設定され、
     前記ツリー探索部は、或る階層の前記ツリーデータから、前記探索対象属性値を値域に含むエントリを特定できない場合には、1段上の階層のツリーデータの探索を試み、該1段上の階層のツリーデータが存在しない場合には、前記ツリー生成部に、該1段上の階層のツリーデータの生成を依頼する、
     請求項15に記載のプログラム。
  17.  前記リンクテーブルに格納される前記リンク情報は、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含む、
     請求項11から16のいずれか1項に記載のプログラム。
  18.  前記リンクテーブルは、前記対象論理ノードから、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードへの複数リンクを含むリンク情報を格納し、
     前記ツリー更新部は、前記バージョン確認要求をポーリング間隔Tで送信し、
     前記対象論理ノードは、
     前記複数の論理ノードの少なくとも1つにおける値域の変更が前記複数の論理ノードの全てに伝達されるまでの最大時間に対するシステム制約時間wc、又は、前記各論理ノードが前記バージョン確認要求を送信する単位時間負荷に対するシステム制約負荷λcを取得し、取得されたシステム制約時間wc又は取得されたシステム制約負荷λc、及び、前記論理ノードの総数N又は前記対象論理ノードのリンク先ノードの数Dを、下記(式1)又は下記(式2)に適用することにより、前記ポーリング間隔Tを算出するパラメータ設定部、
     を更に備える請求項14に記載のプログラム。
    Figure JPOXMLDOC01-appb-M000013
     kは前記パラメータkを示す。
  19.  前記パラメータkが4に設定される請求項17又は18に記載のプログラム。
  20.  データが分割された複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードを実現する分散データ管理装置であって、
     前記対象論理ノードは、
     リング構造を有する有限の識別子空間内で前記複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、前記対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、
     前記複数の部分データの中の少なくとも1つを格納するデータ格納部と、
     前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含むリンク情報を格納するリンクテーブルと、
     を備える分散データ管理装置。
  21.  データが分割された複数の部分データを格納する複数の論理ノードの中の少なくとも1つの対象論理ノードであって、リング構造を有する有限の識別子空間内で該複数の論理ノードに一意にそれぞれ割り当てられる複数の識別子の中の、該対象論理ノードに割り当てられた識別子を対象ノード識別子として格納するノード識別子格納部と、該複数の部分データの中の少なくとも1つを格納するデータ格納部とを有する該対象論理ノードを実現するコンピュータが、
     前記対象論理ノードと他の論理ノードとの間の通信可能な関係を示すリンク情報であって、前記対象ノード識別子をパラメータk(kは自然数)倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第1リンク先論理ノード、前記対象ノード識別子よりも大きくかつ直近の識別子を持つ後継論理ノードの識別子を該パラメータk倍して得られる値、又は、該値より小さくかつ該値の直近の識別子を持つ第2リンク先論理ノード、及び、前記識別子空間における該第1リンク先論理ノードの識別子と該第2リンク先論理ノードの識別子との間の識別子を持つ少なくとも1つの第3リンク先論理ノードと、前記対象論理ノードとの間の複数リンクを含むリンク情報を生成する、
     分散データ管理方法。
PCT/JP2013/001768 2012-05-15 2013-03-15 分散データ管理装置及び分散データ操作装置 WO2013171953A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2014515468A JP5967195B2 (ja) 2012-05-15 2013-03-15 分散データ管理装置及び分散データ操作装置
US14/400,056 US10073857B2 (en) 2012-05-15 2013-03-15 Distributed data management device and distributed data operation device
EP13790415.7A EP2851803A4 (en) 2012-05-15 2013-03-15 DISTRIBUTED DATA MANAGEMENT DEVICE AND DISTRIBUTED DATA OPERATION DEVICE
CN201380037661.5A CN104487951B (zh) 2012-05-15 2013-03-15 分布式数据管理设备和分布式数据操作设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012-111189 2012-05-15
JP2012111189 2012-05-15

Publications (1)

Publication Number Publication Date
WO2013171953A1 true WO2013171953A1 (ja) 2013-11-21

Family

ID=49583386

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/001768 WO2013171953A1 (ja) 2012-05-15 2013-03-15 分散データ管理装置及び分散データ操作装置

Country Status (5)

Country Link
US (1) US10073857B2 (ja)
EP (1) EP2851803A4 (ja)
JP (1) JP5967195B2 (ja)
CN (1) CN104487951B (ja)
WO (1) WO2013171953A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021060635A (ja) * 2019-10-02 2021-04-15 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5850054B2 (ja) * 2011-08-01 2016-02-03 日本電気株式会社 分散処理管理サーバ、分散システム、及び分散処理管理方法
CN106484321A (zh) * 2016-09-08 2017-03-08 华为数字技术(成都)有限公司 一种数据存储方法及数据中心
CN107229429B (zh) * 2017-06-27 2020-06-16 苏州浪潮智能科技有限公司 一种存储空间管理方法及装置
CN107665241B (zh) * 2017-09-07 2020-09-29 北京京东尚科信息技术有限公司 一种实时数据多维度去重方法和装置
CN108536447B (zh) * 2018-04-11 2021-07-16 上海掌门科技有限公司 运维管理方法
US11119679B2 (en) * 2019-08-02 2021-09-14 Micron Technology, Inc. Storing data based on a probability of a data graph
US11474866B2 (en) * 2019-09-11 2022-10-18 International Business Machines Corporation Tree style memory zone traversal
US11507541B2 (en) * 2020-01-21 2022-11-22 Microsoft Technology Licensing, Llc Method to model server-client sync conflicts using version trees
CN113032401B (zh) * 2021-03-31 2023-09-08 合安科技技术有限公司 基于异形结构树的大数据处理方法、装置及相关设备
US11494366B1 (en) * 2021-05-25 2022-11-08 Oracle International Corporation Change data capture on no-master data stores

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005094264A (ja) * 2003-09-16 2005-04-07 Nomura Research Institute Ltd 論理ネットワークへの参加要求方法、参加受付方法、メッセージ送信方法、参加要求プログラム、参加受付プログラム、メッセージ送信プログラム、参加要求装置、参加受付装置、及びメッセージ送信装置
JP2005244630A (ja) * 2004-02-26 2005-09-08 Nomura Research Institute Ltd マルチキャストルーティング情報送信方法、マルチキャストメッセージ送信方法、マルチキャストルーティング情報送信プログラム、及びマルチキャストメッセージ送信プログラム
JP2008234563A (ja) * 2007-03-23 2008-10-02 Nec Corp オーバレイ管理装置、オーバレイ管理システム、オーバレイ管理方法およびオーバレイ管理用プログラム
JP2008262507A (ja) * 2007-04-13 2008-10-30 Nec Corp データ検索装置、データ検索システム、データ検索方法およびデータ検索用プログラム
JP2009508410A (ja) * 2005-09-08 2009-02-26 パナソニック株式会社 マルチデスティネーション・ルーティングを利用したピアツーピア・オーバーレイ通信の並列実行
JP2010509692A (ja) * 2006-11-14 2010-03-25 シーメンス アクチエンゲゼルシヤフト ピアツーピア・オーバーレイ・ネットワークにおける負荷分散のための方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2117846C (en) * 1993-10-20 2001-02-20 Allen Reiter Computer method and storage structure for storing and accessing multidimensional data
CN100401667C (zh) * 2000-06-21 2008-07-09 索尼公司 信息记录/再生装置及方法
US7519574B2 (en) * 2003-08-25 2009-04-14 International Business Machines Corporation Associating information related to components in structured documents stored in their native format in a database
EP1764710A4 (en) 2004-06-03 2009-03-18 Turbo Data Lab Inc LAYOUT GENERATION PROCESS, INFORMATION PROCESSING DEVICE AND PROGRAM
WO2006080268A1 (ja) * 2005-01-25 2006-08-03 Turbo Data Laboratories Inc. ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム
WO2007024918A2 (en) 2005-08-23 2007-03-01 Matsushita Electric Industrial Co., Ltd. System and method for service discovery in a computer network using dynamic proxy and data dissemination
US8250116B2 (en) * 2008-12-31 2012-08-21 Unisys Corporation KStore data simulator directives and values processor process and files

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005094264A (ja) * 2003-09-16 2005-04-07 Nomura Research Institute Ltd 論理ネットワークへの参加要求方法、参加受付方法、メッセージ送信方法、参加要求プログラム、参加受付プログラム、メッセージ送信プログラム、参加要求装置、参加受付装置、及びメッセージ送信装置
JP2005244630A (ja) * 2004-02-26 2005-09-08 Nomura Research Institute Ltd マルチキャストルーティング情報送信方法、マルチキャストメッセージ送信方法、マルチキャストルーティング情報送信プログラム、及びマルチキャストメッセージ送信プログラム
JP2009508410A (ja) * 2005-09-08 2009-02-26 パナソニック株式会社 マルチデスティネーション・ルーティングを利用したピアツーピア・オーバーレイ通信の並列実行
JP2010509692A (ja) * 2006-11-14 2010-03-25 シーメンス アクチエンゲゼルシヤフト ピアツーピア・オーバーレイ・ネットワークにおける負荷分散のための方法
JP2008234563A (ja) * 2007-03-23 2008-10-02 Nec Corp オーバレイ管理装置、オーバレイ管理システム、オーバレイ管理方法およびオーバレイ管理用プログラム
JP2008262507A (ja) * 2007-04-13 2008-10-30 Nec Corp データ検索装置、データ検索システム、データ検索方法およびデータ検索用プログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
FAY CHANG; JEFFREY DEAN; SANJAY GHEMAWAT; WILSON C. HSIEH; DEBORAH A; WALLACH MIKE BURROWS; TUSHAR CHANDRA; ANDREW FIKES; ROBERT E: "Bigtable : A Distributed Storage System For Structured Data", SYMPOSIUM ON OPERATING SYSTEMS DESIGN, 6 November 2006 (2006-11-06)
H.V. JAGADISH; BENG CHIN OOI; QUANG HIEU VU: "BATON: A Balanced Tree Structure for Peer-to-Peer Networks", VERY LARGE DATA BASES, 30 August 2005 (2005-08-30)
See also references of EP2851803A4
SHINJI NAKADAI ET AL.: "PLATON: Multi- dimensional Range Query System for Data Sharing in Distributed System", SYMPOSIUM ON MULTIMEDIA, DISTRIBUTED, COOPERATIVE AND MOBILE SYSTEMS (DICOM02007) RONBUNSHU, IPSJ SYMPOSIUM SERIES, vol. 2007, no. L, 4 July 2007 (2007-07-04), pages 173 - 184, XP008174995 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021060635A (ja) * 2019-10-02 2021-04-15 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP7239433B2 (ja) 2019-10-02 2023-03-14 ヤフー株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Also Published As

Publication number Publication date
US20150120649A1 (en) 2015-04-30
EP2851803A4 (en) 2016-01-13
CN104487951A (zh) 2015-04-01
CN104487951B (zh) 2017-09-22
JPWO2013171953A1 (ja) 2016-01-12
US10073857B2 (en) 2018-09-11
JP5967195B2 (ja) 2016-08-10
EP2851803A1 (en) 2015-03-25

Similar Documents

Publication Publication Date Title
JP5967195B2 (ja) 分散データ管理装置及び分散データ操作装置
US8166074B2 (en) Index data structure for a peer-to-peer network
JP6119421B2 (ja) エンコードされたトリプルを格納するデータベース、制御部、方法及びシステム
Wang et al. Indexing multi-dimensional data in a cloud system
JP6094487B2 (ja) 情報システム、管理装置、データ処理方法、データ構造、プログラム、および記録媒体
JP5090450B2 (ja) 階層に編成され、ネットワークを介してリンクされた複数のノードに保管された複製データを更新するための方法、プログラム、およびコンピュータ可読媒体
US20100161657A1 (en) Metadata server and metadata management method
US8296420B2 (en) Method and apparatus for constructing a DHT-based global namespace
CN103455531B (zh) 一种支持高维数据实时有偏查询的并行索引方法
CN105357247B (zh) 基于分层云对等网络的多维属性云资源区间查找方法
Choi et al. Dynamic hybrid replication effectively combining tree and grid topology
Kumar et al. M-Grid: a distributed framework for multidimensional indexing and querying of location based data
JP7202558B1 (ja) ヒューマンサイバーフィジカル融合環境におけるデジタルオブジェクトアクセス方法及びシステム
JP2008234563A (ja) オーバレイ管理装置、オーバレイ管理システム、オーバレイ管理方法およびオーバレイ管理用プログラム
Aebeloe et al. Decentralized indexing over a network of RDF peers
Hassanzadeh-Nazarabadi et al. Laras: Locality aware replication algorithm for the skip graph
US20060209717A1 (en) Distributed storing of network position information for nodes
Qi et al. A balanced strategy to improve data invulnerability in structured P2P system
JP6182861B2 (ja) 情報処理装置、情報処理端末、情報検索プログラム及び情報検索方法
Tran Data storage for social networks: a socially aware approach
Gao et al. Indexing multi-dimensional data in modular data centers
Antoine et al. Dealing with skewed data in structured overlays using variable hash functions
CN117440003A (zh) 一种无中心的分布式存储方法及系统
Malkov et al. An overlay network for distributed exact and range search in one-dimensional space
KR20240041205A (ko) 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 key-value 데이터베이스 시스템과 그 방법 및 컴퓨터 프로그램

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2013790415

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 14400056

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2014515468

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE