WO2012164735A1 - Information processing device, data management method, and data management program - Google Patents

Information processing device, data management method, and data management program Download PDF

Info

Publication number
WO2012164735A1
WO2012164735A1 PCT/JP2011/062759 JP2011062759W WO2012164735A1 WO 2012164735 A1 WO2012164735 A1 WO 2012164735A1 JP 2011062759 W JP2011062759 W JP 2011062759W WO 2012164735 A1 WO2012164735 A1 WO 2012164735A1
Authority
WO
WIPO (PCT)
Prior art keywords
segment
segments
data
threshold value
key
Prior art date
Application number
PCT/JP2011/062759
Other languages
French (fr)
Japanese (ja)
Inventor
美穂 村田
裕一 槌本
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2011/062759 priority Critical patent/WO2012164735A1/en
Priority to JP2013517787A priority patent/JP5633646B2/en
Publication of WO2012164735A1 publication Critical patent/WO2012164735A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor

Definitions

  • the present invention relates to an information processing apparatus, a data management method, and a data management program.
  • a method in which a key and data are associated with each other and stored in one or more storage devices can be considered.
  • Software such as application software performs data operations such as data reading (reading) and writing (writing) by specifying a key, for example.
  • data is distributed and stored in a plurality of storage devices, for example, the storage device of the data storage destination is determined using a key and a hash function, and the storage device storing the desired data is searched.
  • a method is conceivable.
  • a method of dividing a set of keys into a plurality of segments and managing the data in units of segments can be considered so that the data can be managed efficiently. For example, it is conceivable to determine a storage device for storing data on a segment basis.
  • a method of dividing a set of keys into a plurality of segments and assigning the keys to the segments for example, a method using a binary tree called PHT (Prefix Hash Tree) has been proposed.
  • PHT Prefix Hash Tree
  • Each node of PHT is given a binary number with a length corresponding to the depth from the root node as a label.
  • the root node has node 0 and node 1 as child nodes.
  • Node 0 has node 00 and node 01 as child nodes.
  • Each key is assigned to one leaf node (a node that has no child nodes) by comparing the prefix (a few bits from the beginning of the key) with the label when the key is expressed in binary number. .
  • Keys and data are managed in units of segments corresponding to leaf nodes.
  • the depth of PHT (the degree of segment division) is determined according to the amount of data to be managed, for example.
  • an object of the present invention is to provide an information processing apparatus, a data management method, and a data management program capable of suppressing concentration of data management load.
  • an information processing apparatus used in an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with the keys in units of segments.
  • the information processing apparatus includes a storage unit and a control unit.
  • storage part memorize
  • the control unit refers to the segment information, and divides the first segment into two or more segments based on the amount of data stored in association with the key belonging to the first segment and the first threshold value. To determine.
  • the first threshold value is different from the second threshold value used for determining whether to divide the second segment.
  • a data management method performed by an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with the keys in units of segments.
  • the amount of data stored in the storage device is calculated in association with the key belonging to the first segment among the plurality of segments. Whether to divide the first segment into two or more segments is determined based on the calculated amount of data and the first threshold value corresponding to the first segment. The first threshold value is different from the second threshold value used for determining whether to divide the second segment of the plurality of segments.
  • a data management program that is executed by a computer used in an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with the keys in units of segments.
  • the data management program causes the computer to execute the following processing.
  • the amount of data stored in the storage device is calculated in association with the key belonging to the first segment among the plurality of segments. Whether to divide the first segment into two or more segments is determined based on the calculated amount of data and the first threshold value corresponding to the first segment.
  • the first threshold value is different from the second threshold value used for determining whether to divide the second segment of the plurality of segments.
  • the concentration of data management load can be suppressed.
  • FIG. 1 is a diagram illustrating the information processing apparatus according to the first embodiment.
  • the information processing apparatus 10 is used in an information processing system that divides a set of keys into a plurality of segments and manages data stored in the storage devices 21 and 22 in association with the keys in units of segments.
  • One or both of the storage devices 21 and 22 may be a storage device included in the information processing apparatus 10.
  • the information processing apparatus 10 includes a storage unit 11 and a control unit 12.
  • the storage unit 11 stores segment information.
  • the segment information indicates the relationship between the key and the segment for at least segments # 1 and # 2 among the plurality of segments.
  • the segment information may represent a segment by a tree structure called a trie tree or a prefix tree.
  • the storage unit 11 may be a storage device such as a RAM (Random Access Memory) or an HDD (Hard Dirk Drive).
  • the control unit 12 refers to the segment information in the storage unit 11, and divides the segment # 1 into two or more segments based on the amount of data stored in association with the key belonging to the segment # 1 and the threshold value # 1. Judge whether to do. For example, the data amount is compared with the threshold value # 1, and it is determined that the segment # 1 is divided when the data amount exceeds the threshold value # 1. The amount of data can be confirmed by accessing the storage device in which segment # 1 is arranged. The threshold value # 1 is different from the threshold value # 2 used for determining whether to divide the segment # 2.
  • the threshold value # 1 is calculated from the identification information of the segment # 1 according to a predetermined calculation formula
  • the threshold value # 2 is calculated from the identification information of the segment # 2 according to a predetermined calculation formula.
  • the control unit 12 may be realized as a program executed using a CPU (Central Processing Unit) and a RAM.
  • the control unit 12 may calculate a threshold value so that at least the segments at the same hierarchical level have different values.
  • the control unit 12 changes the arrangement of segments in the storage devices 21 and 22 by dividing the segment # 1. Also good. For example, when segment # 1 is arranged in storage device 21, at least one of two or more segments divided from segment # 1 may be changed from storage device 21 to storage device 22.
  • the amount of data stored in one of the storage devices 21 and 22 in association with the key belonging to the segment # 1 among the plurality of segments is calculated. Based on the calculated amount of data and the threshold value # 1 corresponding to the segment # 1, it is determined whether the segment # 1 is divided into two or more segments.
  • the threshold value # 1 takes a value different from the threshold value # 2 used to determine whether the segment # 2 is divided among a plurality of segments.
  • the segment whose data amount has been increased by writing data in the storage devices 21 and 22 can be further dynamically divided into two or more segments.
  • the segment can be divided according to the actual increase amount of data, it is not necessary to know in advance how the data amount of each segment increases (data bias). Therefore, segment management such as segment change in the storage devices 21 and 22 is facilitated.
  • the necessity of division is determined using different threshold values for segment # 1 and segment # 2, the probability of division of segments # 1 and # 2 occurring at the same time can be reduced. Therefore, it is possible to suppress an increase in the load on the information processing system due to concentrated processing such as segment arrangement change and segment information update, and it is possible to suppress a decrease in performance of the information processing system.
  • FIG. 2 illustrates an information processing system according to the second embodiment.
  • the information processing system according to the second embodiment includes server apparatuses 100, 100a, 100b, and 100c, a management apparatus 200, and a client apparatus 300.
  • Server apparatuses 100, 100 a, 100 b, 100 c and management apparatus 200 are connected to a network 41.
  • the client device 300 is connected to the network 42.
  • the information processing system according to the second embodiment may be realized as a so-called cloud system.
  • the server apparatuses 100, 100a, 100b, and 100c are server computers that manage data in a distributed manner.
  • the server devices 100, 100a, 100b, and 100c store a key for identifying the data and the data in association with each other, and hold segment information for searching for the server device storing the data from the key. ing.
  • Any server device can accept a data processing request from the client device 300.
  • the server device that has received the request including the key searches the server device in which the processing target data is stored based on the segment information, and requests the searched server device for data processing.
  • the management apparatus 200 is a computer used by a user (for example, an information processing system administrator).
  • the management device 200 manages the server devices 100, 100a, 100b, and 100c based on user operations. For example, when a server device that stores data is added to the information processing system, the management device 200 transmits information on the added server device to the server devices 100, 100a, 100b, and 100c. Also, setting information for adjusting the distributed arrangement of data is transmitted to the server apparatuses 100, 100a, 100b, and 100c.
  • the client device 300 is a computer used by a user (for example, a user of a cloud service).
  • application software that handles data stored in the server devices 100, 100a, 100b, and 100c is executed.
  • the client device 300 transmits a data processing request to an arbitrary server device among the server devices 100, 100a, 100b, and 100c via the networks 41 and 42. In the request, one key or a range of keys is specified.
  • Data processing includes data read (read) and write (write).
  • the requested data processing is executed by transmitting a message between the server devices 100, 100a, 100b, and 100c.
  • the information processing system according to the second embodiment can be designed so that a device that becomes a bottleneck for data processing does not occur as much as possible, and can improve availability, response performance, and the like. .
  • FIG. 3 is a block diagram illustrating a hardware example of the server device.
  • the server apparatus 100 includes a CPU 101, a RAM 102, an HDD 103, an image signal processing unit 104, an input signal processing unit 105, a disk drive 106, and a communication unit 107.
  • the unit is connected to a bus in the server device 100.
  • the server devices 100a, 100b, and 100c, the management device 200, and the client device 300 can also be realized by the same hardware as the server device 100.
  • the CPU 101 is an arithmetic device that controls information processing in the server device 100.
  • the CPU 101 reads out at least a part of the programs and data stored in the HDD 103, expands them in the RAM 102, and executes the programs.
  • the server device 100 may include a plurality of arithmetic devices and execute information processing in a distributed manner.
  • the RAM 102 is a volatile memory that temporarily stores programs and data handled by the CPU 101.
  • the server device 100 may include a type of memory other than the RAM, or may include a plurality of memories.
  • the HDD 103 is a non-volatile storage device that stores programs such as an OS (Operating System) program and an application program, and data used for information processing.
  • the HDD 103 reads / writes data from / into the built-in magnetic disk according to instructions from the CPU 101.
  • the server device 100 may include a nonvolatile storage device (for example, SSD (Solid State Drive)) other than the HDD, or may include a plurality of storage devices.
  • the image signal processing unit 104 outputs an image to the display 31 connected to the server apparatus 100 in accordance with an instruction from the CPU 101.
  • the display 31 for example, a CRT (Cathode Ray Tube) display or a liquid crystal display can be used.
  • the input signal processing unit 105 acquires an input signal from the input device 32 connected to the server apparatus 100 and outputs it to the CPU 101.
  • the input device 32 for example, a pointing device such as a mouse or a touch panel, a keyboard, or the like can be used.
  • the disk drive 106 is a drive device that reads a program and data recorded on the recording medium 33.
  • a magnetic disk such as a flexible disk (FD: Flexible Disk) or HDD
  • an optical disk such as a CD (Compact Disk) or a DVD (Digital Versatile Disk)
  • a magneto-optical disk MO: Magneto-Optical disk.
  • the disk drive 106 stores the program and data read from the recording medium 33 in the RAM 102 or the HDD 103 in accordance with a command from the CPU 101.
  • the communication unit 107 is a communication interface that communicates by connecting to the network 41.
  • the connection method to the network 41 may be wired or wireless. That is, the communication unit 107 may be a wired communication interface or a wireless communication interface.
  • FIG. 4 is a diagram illustrating an example of request processing.
  • examples of requests include (A) a read request designating a single key, (B) a read request designating a key range, and (C) a write request.
  • the server apparatus 100a stores (2, data2), (3, data3) as a key and data pair (key, value), and the server apparatus 100c stores (4, data4), (5, data5).
  • the server apparatus 100 When the server apparatus 100 receives the read request get (2) designating the key 2 from the client apparatus 300, the server apparatus 100 determines that the data corresponding to the key 2 is stored in the server apparatus 100a. Then, a message indicating a read request for the key 2 is transmitted to the server device 100a. The server apparatus 100a transmits data2 to the server apparatus 100. The server apparatus 100 transmits data2 to the client apparatus 300.
  • (C) When the server apparatus 100 receives the write request set (1, data1) specifying the key 1 from the client apparatus 300, the server apparatus 100 determines that the data corresponding to the key 1 is stored in the server apparatus 100a. Then, a message indicating a write request for key 1 is transmitted to server device 100a. The server device 100a writes data1 to its own storage device and reports the completion of writing to the server device 100. The server apparatus 100 reports the completion of writing to the client apparatus 300.
  • the server apparatuses 100, 100a, 100b, and 100c hold keys and data in association with each other, and read data from the storage device and write data to the storage device in units of keys.
  • the key to be processed is specified by application software executed on the client device 300, for example. Therefore, the complexity of data processing of the server apparatuses 100, 100a, 100b, and 100c is suppressed, and the load is reduced.
  • the write request means adding data.
  • the write request means data overwrite.
  • the confirmation of whether or not the data corresponding to the key exists and the determination of whether or not overwriting is possible are performed, for example, under the responsibility of application software executed on the client device 300.
  • the information processing system according to the second embodiment can be used, for example, for managing data (for example, log data) using time as a key.
  • FIG. 5 is a diagram showing an example of the segment management tree.
  • the server apparatuses 100, 100a, 100b, and 100c have segment information describing a segment management tree.
  • As the segment management tree an ordered tree called a trie tree or a prefix tree can be used.
  • Non-Patent Document 1 (YatinYChawathe, Sriram Ramabhadran, Sylvia Ratnasamy, Anthony LaMarca, Scott Shenker and Joseph Hellerstein, "A Case Study in Building Layered DHT Applications”) may be used.
  • the key space is hierarchically divided into sections called segments.
  • Each node in the segment management tree corresponds to a segment.
  • Each node is given a label having a length corresponding to the depth of the node. For example, label 0 is assigned to the left child node of the root node, and label 1 is assigned to the right child node. Further, when a label L is given to a certain node, a label L + 0 is given to the left child node, and a label L + 1 is given to the right child node.
  • Each key included in the key space is associated with any one leaf node (a node having no child node) to which a label matching the prefix of the key is assigned.
  • the key can be represented by a 5-bit binary number. If the key specified from the client device 300 is not expressed in binary, it may be converted into binary. Further, as shown in FIG. 5, a segment management tree including five leaf nodes assigned labels 000, 001,01, 10, and 11 is considered. In this case, the keys 00000 to 0111 are associated with the node with the label 000. Keys 00100 to 00111 are associated with the node with label 001. Keys 01000 to 01111 are associated with the node of label 01. Keys 10000 to 10111 are associated with leaf nodes of label 10. Keys 11000 to 11111 are associated with leaf nodes of label 11.
  • Segments corresponding to leaf nodes of the segment management tree are arranged in the server apparatuses 100, 100a, 100b, and 100c.
  • the segment of the label 11 is arranged on the server device 100.
  • the segments with labels 000 and 10 are arranged in the server apparatus 100a.
  • the segment with the label 001, 01 is arranged in the server device 100c.
  • a server device that arranges a segment can be determined based on, for example, a hash value calculated by applying a hash function to the label of the segment.
  • the server device that arranges data in segment units determines the server device that arranges data in segment units, the locality of the keys can be maintained, and the data associated with the keys having similar values are arranged on the same server device as much as possible. become. For this reason, range-designated data processing such as range-designated read requests can be efficiently executed.
  • the depth of the segment management tree (the degree of segment division) is dynamically adjusted according to the amount of data stored in the server apparatuses 100, 100a, 100b, and 100c. As will be described later, a segment with an increased data amount is further automatically divided into a plurality of segments.
  • a binary tree is used as an example of the segment management tree, but a tree with an arbitrary number of branches may be used.
  • b is an integer of 2 or more
  • the node with label 0 has child nodes with labels 00, 01, 02.
  • FIG. 6 is a diagram illustrating an example of a method of arranging segments on the server device. As described above, the segment corresponding to the leaf node of the segment management tree is arranged in one of the server devices 100, 100a, 100b, and 100c according to the label of the segment.
  • a hash function corresponding to each server device is calculated by applying a hash function to identification information (for example, address) of each of the server devices 100, 100a, 100b, and 100c.
  • a hash function corresponding to the segment is calculated by applying a hash function to the segment label. Then, based on the positional relationship on the loop between the hash value of each server device and the hash value of the segment, the server device in which the segment is arranged is determined. For example, on the loop, the server device having the minimum hash value that precedes the hash value of the segment is selected.
  • the hash value h (s1) of the server device 100, the hash value h (s2) of the server device 100a, and the hash value h (0) of the label 0 are h (s2)> h (0)> h (s1). If so, the segment with label 0 is placed in the server device 100a.
  • the hash value h (s3) of the server device 100b, the hash value h (s4) of the server device 100c, and the hash value h (001) of the label 001 are h (s4)> h (001)> h (s3). If so, the segment with the label 001 is placed in the server device 100c.
  • the LSB (Least Significant Bit) of the label is 0, the consecutive 0s from the LSB toward the MSB (Most Significant Bit) are deleted and the hash function is applied. However, the MSB 0 is not deleted. For example, label 00,000 is converted to label 0, and label 10 is converted to label 1. Therefore, the hash values of the labels 0.000,000 are the same, and the hash values of the labels 1, 10 are the same. Accordingly, when a certain segment is divided into two or more segments, at least one of the two or more segments after the division is arranged in the same server device as the original segment.
  • the method of arranging the segments on the server devices 100, 100a, 100b, 100c is not limited to the above method.
  • a method is conceivable in which a hash value calculated from a segment label is divided by the number of server devices to obtain a remainder (residue), and a server device in which segments are arranged is selected according to the remainder.
  • the server apparatus 100b 2
  • FIG. 7 is a block diagram illustrating a software example of the server device.
  • the server device 100 includes a communication processing unit 110, an event processing unit 120, and a data storage unit 130.
  • the communication processing unit 110 and the event processing unit 120 can be realized as programs executed using the CPU 101 and the RAM 102, for example.
  • the data storage unit 130 can be realized as a storage area on the RAM 102 or the HDD 103, for example.
  • the server apparatuses 100a, 100b, and 100c can also be realized by the same block configuration as the server apparatus 100.
  • the communication processing unit 110 includes a request reception unit 111, a segment information storage unit 112, a segment management unit 113, and a message processing unit 114.
  • the request reception unit 111 receives a request from the client device 300 and requests the segment management unit 113 to determine a server device in which a desired segment is arranged. Further, the request reception unit 111 acquires the read data or the write result from the message processing unit 114 and transmits it to the client device 300 as a response.
  • the segment information storage unit 112 stores segment information describing a segment management tree as shown in FIG.
  • the segment information is updated as the segments are divided.
  • the segment information storage unit 112 may store information indicating a hash function.
  • the segment information storage unit 112 can be realized as a storage area on the RAM 102 or the HDD 103.
  • the segment management unit 113 searches for one or more segments corresponding to the key or key range specified in the request based on the segment information stored in the segment information storage unit 112. Then, one or more server devices in which the searched segment is arranged are determined from the segment label and the hash function. The segment management unit 113 requests the event processing unit 120 to perform data processing when the searched segment is in its own server device. If the retrieved segment is in another server device, the message processing unit 114 is requested to send a message to the other server device.
  • the segment management unit 113 updates the segment information stored in the segment information storage unit 112 when the event processing unit 120 reports that the segment has been divided. Then, the message processing unit 114 is requested to transmit a message indicating the segment update to another server device. Further, the segment management unit 113 updates the segment information stored in the segment information storage unit 112 in response to a request from the message processing unit 114. The segment management unit 113 receives the identification information of the server device in which the segment can be arranged as setting information from the management device 200 and holds it.
  • the message processing unit 114 transmits and receives messages to and from other server devices (server devices 100a, 100b, and 100c).
  • server devices 100a, 100b, and 100c server devices 100a, 100b, and 100c.
  • the message processing unit 114 requests the event processing unit 120 to perform data processing.
  • a read request or write request message is transmitted to another server device.
  • the message processing unit 114 transmits a segment update message to another server device in response to a request from the segment management unit 113.
  • the segment management unit 113 is requested to update the segment information.
  • the event processing unit 120 includes a data processing unit 121, a calculation formula storage unit 122, a threshold value calculation unit 123, and a division determination unit 124.
  • the data processing unit 121 performs data processing in response to a request from the segment management unit 113 or the message processing unit 114. If the read request specifies a key or a key range, the data processing unit 121 reads data corresponding to the key or a data group corresponding to the key range from the data storage unit 130. If the write request specifies a key, the data processing unit 121 writes data in the data storage unit 130 in association with the key.
  • the data processing unit 121 when the data processing unit 121 writes the data to the data storage unit 130, the data processing unit 121 inquires of the division determination unit 124 whether or not the segment is necessary. When the division determination unit 124 determines that division is required, the data processing unit 121 performs division processing. For example, a part of the data stored in the data storage unit 130 is moved to another server device. In addition, the segment management unit 113 is notified that the segment has been divided.
  • the calculation formula storage unit 122 stores a calculation formula for calculating a threshold for determining whether to divide a segment. As will be described later, the threshold value is calculated based on the label of the segment that determines whether or not division is necessary.
  • the calculation formula of the threshold is described by the user of the management apparatus 200 and is set in the calculation formula storage unit 122 by the management apparatus 200.
  • the calculation formula storage unit 122 can be realized as a storage area on the RAM 102 or the HDD 103.
  • the threshold value calculation unit 123 calculates the threshold value of the specified segment from the segment label specified by the division determination unit 124 and the threshold value calculation formula stored in the calculation formula storage unit 122. Then, the calculated threshold value is returned to the division determination unit 124.
  • the division determination unit 124 determines whether or not it is necessary to divide the segment where the data has been written.
  • the division determination unit 124 designates the label of the segment in which writing has been performed, and requests the threshold value calculation unit 123 to calculate the threshold value.
  • the segment label is obtained from the key specified in the write request with reference to the segment information.
  • the division determination unit 124 refers to the data storage unit 130 to obtain the data amount of the segment in which writing has been performed (for example, the total amount of data associated with the key belonging to the segment).
  • the division determination unit 124 determines that the division is necessary when the data amount exceeds the threshold value, and determines that the division is not required when the data amount is equal to or less than the threshold value.
  • the data storage unit 130 stores keys and data in association with each other.
  • the data storage unit 130 may divide the storage area into segments and store keys and data.
  • FIG. 8 is a flowchart showing request processing. Here, a case where the server apparatus 100 performs processing is considered.
  • the server apparatuses 100a, 100b, and 100c perform the same processing as the server apparatus 100. In the following, the process illustrated in FIG. 8 will be described in order of step number.
  • the request reception unit 111 receives a request from the client device 300.
  • the type of request includes a read request designating one key, a read request designating a key range, and a write request designating one key.
  • Step S12 The segment management unit 113 determines whether the request received in step S11 specifies a key range. If it is a range designation request, the process proceeds to step S14. Otherwise, the process proceeds to step S13.
  • the segment management unit 113 refers to the segment information stored in the segment information storage unit 112 and searches for a segment to which the key specified in the request belongs.
  • searching for a segment for example, the prefix and label of a key expressed in base b (b is an integer of 2 or more) are compared from the root node of the segment management tree toward the leaf node, and a label that matches the prefix is searched. Identify the leaf node that it has. A segment corresponding to the identified leaf node is a searched segment.
  • the segment management unit 113 refers to the segment information and searches for all segments including at least one key within the range specified by the request. In the search for a plurality of segments, for example, the longest prefix common to the maximum value and the minimum value of the keys in the range is obtained, and the node having the prefix as a label is specified. Then, a plurality of leaf nodes below the identified node are identified. A plurality of segments corresponding to the specified plurality of leaf nodes are searched segments.
  • the key range is 00010 to 00101
  • the longest prefix common to the minimum value 00010 and the maximum value 0101 is 00. Therefore, the leaf node of label 000,001 that is lower than the node of label 00 is specified. Then, a segment corresponding to the label 000 and a segment corresponding to the label 001 are searched.
  • Step S15 The segment management unit 113 calculates a hash value by applying a hash function to the label of the segment searched in step S13 or step S14. And the server apparatus by which the segment is arrange
  • the server device is specified by, for example, the method shown in FIG. When a plurality of segments are searched in step S14, a plurality of server devices may be specified. The following steps S16 to S18 are executed for each specified server device or each segment.
  • Step S16 The segment management unit 113 determines whether another server device has been identified in step S15 as the server device on which the data processing target segment is arranged. If another server device is specified, the process proceeds to step S17. When the own apparatus (server apparatus 100) is specified, the process proceeds to step S18.
  • Step S17 The message processing unit 114 transmits a message indicating a read request or a write request to the other server device specified in Step S15.
  • the message includes the key or key range stored in the destination server device among the keys or key ranges specified in the request from the client device 300. Thereafter, the message processing unit 114 receives a response message from another server device.
  • the response message includes data corresponding to the key or a write completion report.
  • Step S18 The data processing unit 121 performs data processing in response to a request from the client device 300.
  • a read request data corresponding to the key or key range stored in the own device is read from the data storage unit 130 out of the key or key range specified in the request.
  • the key and data included in the request are associated with each other and written to the data storage unit 130.
  • Step S19 The request reception unit 111 transmits a response to the request received in step S11 to the client device 300.
  • the request is a read request
  • the data read from the own device or another server device in steps S17 and S18 is transmitted as a response.
  • the request is a write request
  • a report of the completion of writing confirmed in steps S17 and S18 is transmitted as a response.
  • FIG. 9 is a flowchart showing segment division.
  • the server apparatuses 100a, 100b, and 100c perform the same processing as the server apparatus 100.
  • the process illustrated in FIG. 9 will be described in order of step number.
  • Step S21 The division determination unit 124 identifies the key of the data written by the data processing unit 121 in the data storage unit 130. Then, based on the segment information stored in the segment information storage unit 112, the segment corresponding to the key is searched.
  • Step S22 The threshold value calculation unit 123 substitutes the label of the segment searched in Step S21 for the calculation formula stored in the calculation formula storage unit 122, and calculates the threshold value of the segment.
  • the threshold calculation formula for example, the following formula (1) is used.
  • L is a label
  • R is a predetermined route threshold
  • b is the number of branches in the segment management tree.
  • length (L) indicates the number of bits of the label
  • value (L) indicates the value of the decimal number expression represented by the label L.
  • Step S23 The division determination unit 124 refers to the data storage unit 130 and calculates the data amount of the segment searched in Step S21 (for example, the total amount of data associated with the key belonging to the segment). Then, it is determined whether the data amount exceeds the threshold calculated in step S22. If the data amount exceeds the threshold value, the process proceeds to step S24. If the data amount is less than or equal to the threshold value, the process ends.
  • Step S25 The data processing unit 121 selects one key belonging to the segment searched in step S21 from the data storage unit 130.
  • Step S26 The data processing unit 121 specifies a child segment having a label that matches the prefix of the key selected in Step S25 from the child segments defined in Step S24. Then, the data processing unit 121 assigns the key selected in step S25 to the specified child segment.
  • Step S27 The data processing unit 121 determines whether all keys have been selected in step S25. If all keys have been selected, the process proceeds to step S28. If there is an unselected key, the process proceeds to step S25.
  • Step S28 The segment management unit 113 applies a hash function to the label of the child segment defined in step S24, and specifies the server device of the placement destination of each child segment.
  • the data processing unit 121 reads out data of a child segment arranged in another server device (data associated with a key belonging to the child segment) from the data storage unit 130, and transmits the data to the other server device. When the data transmission is completed, the child segment data arranged in another server device is deleted from the data storage unit 130.
  • Step S29 The segment management unit 113 updates the segment information stored in the segment information storage unit 112 so that the segment division in step S24 is reflected.
  • the message processing unit 114 notifies all other server devices of the segment update.
  • FIG. 10 is a diagram illustrating an example of the segment threshold.
  • the threshold value example in FIG. 10 is calculated by applying Equation (1) to the segment management tree in FIG.
  • a predetermined root threshold value R is set for the segment corresponding to the leftmost node (root node and node with a label of 0.00,000) at each hierarchical level.
  • R a data amount such as 100 [MB (megabyte)] is determined in advance.
  • the segment corresponding to the node other than the leftmost node, thresholds 2 f multiplying the R is set.
  • f can be expressed as a fraction, the number of bits of the label is used for the calculation of the denominator, and the value represented by the label is used for the numerator. Therefore, f becomes a different value between segments of the same hierarchical level, and the threshold value becomes different.
  • the data amount reaches the threshold value in R / S [seconds] in the root node segment.
  • the data amount reaches the threshold value at 2R / S [seconds].
  • the data amount reaches the threshold at 2.82 R / S [seconds].
  • the data amount reaches the threshold value at 4 R / S [seconds].
  • the data amount reaches the threshold value at 4.76 R / S [seconds].
  • the data amount reaches the threshold value at 5.64 R / S [seconds].
  • the data amount reaches the threshold at 6.72 R / S [seconds].
  • the data amount reaches the threshold value at 8 R / S [seconds].
  • the data amount reaches the threshold value at 8.72 R / S [seconds].
  • the threshold value of each segment is calculated according to the equation (1)
  • the division of the upper hierarchical level segment is completed, and then the lower hierarchical level is calculated. Segmentation is performed. For example, after the segment of label 1 is divided, the segment of label 00 is divided. After the segment of label 11 is divided, the segment of label 000 is divided. Further, all segments are divided at different timings. Whether or not to divide a segment can be determined from the label of the segment, and therefore can be determined independently between segments.
  • the root threshold value R is assigned to the leftmost node at each hierarchical level and the threshold value is increased from the leftmost node toward the rightmost node.
  • the root threshold value R is assigned to the rightmost node at each hierarchical level.
  • the threshold value may be increased from the right end node toward the left end node.
  • the data amount and the threshold are compared to determine whether to divide the segment.
  • the data amount and the threshold may be compared to determine whether to integrate the segments. For example, when the total data amount of the segments with the label 000,001 is equal to or less than the threshold value, it may be determined that the two segments are integrated.
  • the threshold used for determination of division and the threshold used for determination of integration may be calculated from different calculation formulas.
  • FIG. 11 is a sequence diagram showing request processing and segment division.
  • Step S ⁇ b> 31 The client device 300 transmits a request indicating data writing to the server device 100.
  • the request includes a key and data.
  • Step S32 The server device 100 searches for the segment to which the key belongs from the segment information of the device itself, and identifies the server device (here, the server device 100a) where the segment is arranged using the label and the hash function. To do. Then, a write request message is transmitted to the server apparatus 100a.
  • the message includes a key and data.
  • Step S33 The server apparatus 100a associates the key and the data included in the message received from the server apparatus 100 and writes them in the storage device of the own apparatus. Then, a response indicating the completion of writing is transmitted to the server apparatus 100.
  • Step S ⁇ b> 34 When the server apparatus 100 confirms that the writing is completed in the server apparatus 100 a, the server apparatus 100 transmits a response to the client apparatus 300.
  • Step S35 The server apparatus 100a detects that the data amount of the segment has exceeded the threshold value by writing data. Then, the server apparatus 100a further divides the segment into b (for example, two) segments.
  • the server apparatus 100a specifies the server apparatus (here, the server apparatuses 100a and 100b) on which the segment after the division is arranged using the label and the hash function. And the key and data of the segment arrange
  • the server apparatus 100b As described above, when one segment is divided into two child segments, one child segment is placed on the same server device as the original segment, and the other child segment is placed on a server device different from the original segment. You can also make it.
  • Step S37 The server apparatus 100b associates the key and data received from the server apparatus 100a with each other and writes them in the storage device of the own apparatus. Then, a response indicating the completion of writing is transmitted to the server device 100a.
  • Step S38 The server apparatus 100a deletes the key and data of the segment that has been copied to the server apparatus 100b from the storage device of the own apparatus. Further, the server apparatus 100a updates the segment information that the own apparatus has so that the segment division is reflected. Then, the server apparatus 100a transmits a notification indicating the segment update to all other server apparatuses (server apparatuses 100, 100b, and 100c).
  • Step S39 The server apparatuses 100, 100b, and 100c update the segment information of the own apparatus based on the notification from the server apparatus 100a. Then, a response indicating that segment information has been updated is transmitted to the server device 100a. Thereby, the update of the segment information by the server apparatus 100a is reflected in the segment information which the server apparatuses 100, 100b, and 100c have, and the segment information is in a synchronized state.
  • the server apparatuses 100, 100a, 100b, and 100c store the keys and data in association with each other, and perform data processing for the key specified by the client apparatus 300.
  • the load can be reduced.
  • any server device can accept a request from the client device 300, it can be designed so that no device becomes a bottleneck. Increases the availability of the processing system.
  • the key space is divided into a plurality of segments and the data is arranged in the server device in units of segments, there is a high probability that data corresponding to keys having similar values are stored in the same server device.
  • Data processing with a specified range can be executed efficiently.
  • each server device can determine without negotiating with other server devices, and scalability can be improved.
  • the threshold for determining whether segment division is necessary is calculated so that it differs between segments, it is possible to reduce the probability that division of multiple segments concentrates at the same time, and the load on the information processing system Can be reduced.
  • the data management of the second embodiment can be realized by causing the server apparatuses 100, 100a, 100b, and 100c as computers to execute data management programs, respectively.
  • the program can be recorded on a computer-readable recording medium (for example, the recording medium 33).
  • a computer-readable recording medium for example, the recording medium 33.
  • the recording medium for example, a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, or the like can be used.
  • Magnetic disks include FD and HDD.
  • Optical disks include CD, CD-R (Recordable) / RW (Rewritable), DVD, and DVD-R / RW.
  • a portable recording medium on which the program is recorded is provided. It is also possible to store the program in a storage device of another computer and distribute the program via the network 41.
  • the computer stores, for example, a program recorded on a portable recording medium or a program received from another computer in a storage device (for example, HDD 103), and reads and executes the program from the storage device.
  • a program read from a portable recording medium may be directly executed, or a program received from another computer via the network 41 may be directly executed.

Landscapes

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

Abstract

In order to prevent the concentration of a data management load, an information processing device (10) is used in an information processing system wherein a set of keys is divided into multiple segments, and data which is stored in association with a key is managed in units of segments. A storage unit (11) stores segment information indicating the relationship between the key and the segment for at least segments #1 and #2 of the multiple segments. A control unit (12) references the segment information and determines whether to divide segment #1 into two or more segments on the basis of the amount of data stored in association with the key belonging to segment #1 and on the basis of a threshold value #1. The threshold value #1 takes a different value than a threshold value #2 which is used to determine whether to divide segment #2.

Description

情報処理装置、データ管理方法およびデータ管理プログラムInformation processing apparatus, data management method, and data management program
 本発明は情報処理装置、データ管理方法およびデータ管理プログラムに関する。 The present invention relates to an information processing apparatus, a data management method, and a data management program.
 情報処理システムにおけるデータ管理方法の1つとして、キーとデータとを対応付けて1またはそれ以上の記憶装置に保存しておく方法が考えられる。アプリケーションソフトウェアなどのソフトウェアは、例えば、キーを指定して、データの読み出し(リード)や書き込み(ライト)などのデータ操作を行う。データを複数の記憶装置に分散して保存する場合、例えば、キーとハッシュ関数を用いて、データの保存先の記憶装置を決定し、また、所望のデータが保存されている記憶装置を検索する方法が考えられる。 As one of data management methods in the information processing system, a method in which a key and data are associated with each other and stored in one or more storage devices can be considered. Software such as application software performs data operations such as data reading (reading) and writing (writing) by specifying a key, for example. When data is distributed and stored in a plurality of storage devices, for example, the storage device of the data storage destination is determined using a key and a hash function, and the storage device storing the desired data is searched. A method is conceivable.
 また、データを効率的に管理できるように、キーの集合を複数のセグメントに分割し、セグメント単位でデータを管理する方法が考えられる。例えば、セグメント単位で、データの保存先の記憶装置を決定することが考えられる。キーの集合を複数のセグメントに分割してキーをセグメントに割り当てる方法として、例えば、PHT(Prefix Hash Tree)と呼ばれる2分木を用いる方法が提案されている。 Also, a method of dividing a set of keys into a plurality of segments and managing the data in units of segments can be considered so that the data can be managed efficiently. For example, it is conceivable to determine a storage device for storing data on a segment basis. As a method of dividing a set of keys into a plurality of segments and assigning the keys to the segments, for example, a method using a binary tree called PHT (Prefix Hash Tree) has been proposed.
 PHTの各ノードには、ルートノードからの深さに応じた長さの2進数がラベルとして付与される。ルートノードは、ノード0とノード1を子ノードとしてもつ。ノード0は、ノード00とノード01を子ノードとしてもつ。キーを2進数で表記したときのプレフィックス(キーの先頭から数ビットの部分)とラベルとを比較することで、各キーが何れか1つの葉ノード(子ノードをもたないノード)に割り当てられる。そして、葉ノードに相当するセグメント単位で、キーおよびデータが管理される。PHTの深さ(セグメントの分割の程度)は、例えば、管理するデータの量に応じて決定される。 Each node of PHT is given a binary number with a length corresponding to the depth from the root node as a label. The root node has node 0 and node 1 as child nodes. Node 0 has node 00 and node 01 as child nodes. Each key is assigned to one leaf node (a node that has no child nodes) by comparing the prefix (a few bits from the beginning of the key) with the label when the key is expressed in binary number. . Keys and data are managed in units of segments corresponding to leaf nodes. The depth of PHT (the degree of segment division) is determined according to the amount of data to be managed, for example.
 ところで、情報処理システムを運用するに従い、記憶装置にデータが書き込まれて、管理するデータの量が増加することがある。そこで、データをセグメント単位で管理するとき、データ量が大きくなったセグメントを、更に複数のセグメントに動的に分割することが考えられる。しかし、セグメントを分割するか否かを判定する基準の設定方法によっては、複数のセグメントの分割が同時期に集中して発生してしまう場合があるという問題がある。セグメントの分割が同時期に集中すると、データの移動や管理情報の更新などの処理によって情報処理システムの負荷が増大し、当該時期に要求されたデータ操作への応答が遅延するなどの性能低下が生じるおそれがある。 By the way, as the information processing system is operated, data is written to the storage device, and the amount of data to be managed may increase. Therefore, when managing data in segment units, it is conceivable to dynamically divide a segment having a large data amount into a plurality of segments. However, depending on the standard setting method for determining whether or not to divide a segment, there is a problem that division of a plurality of segments may occur at the same time. If segment segmentation is concentrated at the same time, the load on the information processing system will increase due to processing such as data movement and management information updates, resulting in performance degradation such as a delay in response to data operations requested at that time. May occur.
 一つの側面では、本発明は、データ管理の負荷が集中することを抑制できる情報処理装置、データ管理方法およびデータ管理プログラムを提供することを目的とする。 In one aspect, an object of the present invention is to provide an information processing apparatus, a data management method, and a data management program capable of suppressing concentration of data management load.
 一実施態様では、キーの集合を複数のセグメントに分割し、キーと対応付けて記憶装置に記憶されるデータをセグメント単位で管理する情報処理システムに用いられる情報処理装置が提供される。情報処理装置は、記憶部と制御部を有する。記憶部は、複数のセグメントのうち少なくとも第1および第2のセグメントについて、キーとセグメントとの関係を示すセグメント情報を記憶する。制御部は、セグメント情報を参照し、第1のセグメントに属するキーと対応付けて記憶されているデータの量と第1の閾値とに基づいて、第1のセグメントを2以上のセグメントに分割するか判定する。第1の閾値は、第2のセグメントを分割するか判定するために用いられる第2の閾値とは異なる値をとる。 In one embodiment, there is provided an information processing apparatus used in an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with the keys in units of segments. The information processing apparatus includes a storage unit and a control unit. A memory | storage part memorize | stores the segment information which shows the relationship between a key and a segment about at least the 1st and 2nd segment among several segments. The control unit refers to the segment information, and divides the first segment into two or more segments based on the amount of data stored in association with the key belonging to the first segment and the first threshold value. To determine. The first threshold value is different from the second threshold value used for determining whether to divide the second segment.
 また、一実施態様では、キーの集合を複数のセグメントに分割し、キーと対応付けて記憶装置に記憶されるデータをセグメント単位で管理する情報処理システムが行うデータ管理方法が提供される。データ管理方法では、複数のセグメントのうちの第1のセグメントに属するキーと対応付けて記憶装置に記憶されているデータの量を算出する。算出したデータの量と第1のセグメントに応じた第1の閾値とに基づいて、第1のセグメントを2以上のセグメントに分割するか判定する。第1の閾値は、複数のセグメントのうちの第2のセグメントを分割するか判定するために用いられる第2の閾値とは異なる値をとる。 In one embodiment, there is provided a data management method performed by an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with the keys in units of segments. In the data management method, the amount of data stored in the storage device is calculated in association with the key belonging to the first segment among the plurality of segments. Whether to divide the first segment into two or more segments is determined based on the calculated amount of data and the first threshold value corresponding to the first segment. The first threshold value is different from the second threshold value used for determining whether to divide the second segment of the plurality of segments.
 また、一実施態様では、キーの集合を複数のセグメントに分割し、キーと対応付けて記憶装置に記憶されるデータをセグメント単位で管理する情報処理システムに用いられるコンピュータに実行させるデータ管理プログラムが提供される。データ管理プログラムは、コンピュータに、以下の処理を実行させる。複数のセグメントのうちの第1のセグメントに属するキーと対応付けて記憶装置に記憶されているデータの量を算出する。算出したデータの量と第1のセグメントに応じた第1の閾値とに基づいて、第1のセグメントを2以上のセグメントに分割するか判定する。第1の閾値は、複数のセグメントのうちの第2のセグメントを分割するか判定するために用いられる第2の閾値とは異なる値をとる。 In one embodiment, there is provided a data management program that is executed by a computer used in an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with the keys in units of segments. Provided. The data management program causes the computer to execute the following processing. The amount of data stored in the storage device is calculated in association with the key belonging to the first segment among the plurality of segments. Whether to divide the first segment into two or more segments is determined based on the calculated amount of data and the first threshold value corresponding to the first segment. The first threshold value is different from the second threshold value used for determining whether to divide the second segment of the plurality of segments.
 一実施態様によれば、データ管理の負荷が集中することを抑制できる。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
According to one embodiment, the concentration of data management load can be suppressed.
These and other objects, features and advantages of the present invention will become apparent from the following description taken in conjunction with the accompanying drawings which illustrate preferred embodiments by way of example of the present invention.
第1の実施の形態の情報処理装置を示す図である。It is a figure which shows the information processing apparatus of 1st Embodiment. 第2の実施の形態の情報処理システムを示す図である。It is a figure which shows the information processing system of 2nd Embodiment. サーバ装置のハードウェア例を示すブロック図である。It is a block diagram which shows the hardware example of a server apparatus. リクエスト処理の例を示す図である。It is a figure which shows the example of a request process. セグメント管理ツリーの例を示す図である。It is a figure which shows the example of a segment management tree. サーバ装置へのセグメントの配置方法の例を示す図である。It is a figure which shows the example of the arrangement | positioning method of the segment to a server apparatus. サーバ装置のソフトウェア例を示すブロック図である。It is a block diagram which shows the example of software of a server apparatus. リクエスト処理を示すフローチャートである。It is a flowchart which shows a request process. セグメント分割を示すフローチャートである。It is a flowchart which shows segment division. セグメントの閾値の例を示す図である。It is a figure which shows the example of the threshold value of a segment. リクエスト処理およびセグメント分割を示すシーケンス図である。It is a sequence diagram which shows request processing and segment division.
 以下、本実施の形態を図面を参照して説明する。
 [第1の実施の形態]
 図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置10は、キーの集合を複数のセグメントに分割し、キーと対応付けて記憶装置21,22に記憶されるデータをセグメント単位で管理する情報処理システムに用いられる。記憶装置21,22の一方または両方は、情報処理装置10が備える記憶装置であってもよい。情報処理装置10は、記憶部11および制御部12を有する。
Hereinafter, the present embodiment will be described with reference to the drawings.
[First Embodiment]
FIG. 1 is a diagram illustrating the information processing apparatus according to the first embodiment. The information processing apparatus 10 is used in an information processing system that divides a set of keys into a plurality of segments and manages data stored in the storage devices 21 and 22 in association with the keys in units of segments. One or both of the storage devices 21 and 22 may be a storage device included in the information processing apparatus 10. The information processing apparatus 10 includes a storage unit 11 and a control unit 12.
 記憶部11は、セグメント情報を記憶する。セグメント情報は、複数のセグメントのうち少なくともセグメント#1,#2について、キーとセグメントとの関係を示す。セグメント情報は、トライ(Trie)木やプレフィックス木と呼ばれる木構造によってセグメントを表現したものであってもよい。記憶部11は、RAM(Random Access Memory)やHDD(Hard Dirk Drive)などの記憶装置であってもよい。 The storage unit 11 stores segment information. The segment information indicates the relationship between the key and the segment for at least segments # 1 and # 2 among the plurality of segments. The segment information may represent a segment by a tree structure called a trie tree or a prefix tree. The storage unit 11 may be a storage device such as a RAM (Random Access Memory) or an HDD (Hard Dirk Drive).
 制御部12は、記憶部11のセグメント情報を参照し、セグメント#1に属するキーと対応付けて記憶されているデータの量と閾値#1に基づいて、セグメント#1を2以上のセグメントに分割するか判定する。例えば、データ量と閾値#1を比較し、データ量が閾値#1を超えるときセグメント#1を分割すると判定する。データ量は、セグメント#1が配置されている記憶装置にアクセスして確認できる。閾値#1は、セグメント#2を分割するか判定するために用いる閾値#2とは異なる値をとる。例えば、閾値#1は、セグメント#1の識別情報から所定の算出式に従って算出され、閾値#2は、セグメント#2の識別情報から所定の算出式に従って算出される。制御部12は、CPU(Central Processing Unit)およびRAMを用いて実行されるプログラムとして実現してもよい。 The control unit 12 refers to the segment information in the storage unit 11, and divides the segment # 1 into two or more segments based on the amount of data stored in association with the key belonging to the segment # 1 and the threshold value # 1. Judge whether to do. For example, the data amount is compared with the threshold value # 1, and it is determined that the segment # 1 is divided when the data amount exceeds the threshold value # 1. The amount of data can be confirmed by accessing the storage device in which segment # 1 is arranged. The threshold value # 1 is different from the threshold value # 2 used for determining whether to divide the segment # 2. For example, the threshold value # 1 is calculated from the identification information of the segment # 1 according to a predetermined calculation formula, and the threshold value # 2 is calculated from the identification information of the segment # 2 according to a predetermined calculation formula. The control unit 12 may be realized as a program executed using a CPU (Central Processing Unit) and a RAM.
 なお、セグメント情報が複数のセグメントを木構造で表現したものである場合、制御部12は、少なくとも同じ階層レベルのセグメント間では、互いに異なる値になるように閾値を算出してもよい。また、記憶装置21,22のうちデータを格納する記憶装置がセグメント単位で選択される場合、制御部12は、セグメント#1の分割によって、記憶装置21,22へのセグメントの配置を変更してもよい。例えば、セグメント#1が記憶装置21に配置されていたとき、セグメント#1から分割された2以上のセグメントの少なくとも1つを、記憶装置21から記憶装置22に配置変更してもよい。 In addition, when the segment information is a plurality of segments expressed in a tree structure, the control unit 12 may calculate a threshold value so that at least the segments at the same hierarchical level have different values. In addition, when a storage device that stores data is selected from the storage devices 21 and 22 in units of segments, the control unit 12 changes the arrangement of segments in the storage devices 21 and 22 by dividing the segment # 1. Also good. For example, when segment # 1 is arranged in storage device 21, at least one of two or more segments divided from segment # 1 may be changed from storage device 21 to storage device 22.
 第1の情報処理装置10によれば、複数のセグメントのうちセグメント#1に属するキーと対応付けて記憶装置21,22の何れかに記憶されているデータの量が算出される。算出されたデータの量とセグメント#1に応じた閾値#1とに基づいて、セグメント#1を2以上のセグメントに分割するか判定される。閾値#1は、複数のセグメントのうちセグメント#2を分割するか判定するために用いられる閾値#2とは異なる値をとる。 According to the first information processing apparatus 10, the amount of data stored in one of the storage devices 21 and 22 in association with the key belonging to the segment # 1 among the plurality of segments is calculated. Based on the calculated amount of data and the threshold value # 1 corresponding to the segment # 1, it is determined whether the segment # 1 is divided into two or more segments. The threshold value # 1 takes a value different from the threshold value # 2 used to determine whether the segment # 2 is divided among a plurality of segments.
 これにより、記憶装置21,22にデータが書き込まれてデータ量の大きくなったセグメントを、更に2以上のセグメントに動的に分割することができる。例えば、データの実際の増加量に合わせてセグメントを分割できるため、予め各セグメントのデータ量がどのように増加するか(データの偏り)を把握しておかなくてもよい。よって、記憶装置21,22へのセグメントの配置変更などのセグメント管理が容易となる。また、セグメント#1とセグメント#2とで異なる閾値を用いて分割の要否を判定するため、セグメント#1,#2の分割が同時期に重なって発生する確率を低減できる。よって、セグメントの配置変更やセグメント情報の更新などの処理が集中して情報処理システムの負荷が増大することを抑制でき、情報処理システムの性能低下を抑制できる。 Thus, the segment whose data amount has been increased by writing data in the storage devices 21 and 22 can be further dynamically divided into two or more segments. For example, since the segment can be divided according to the actual increase amount of data, it is not necessary to know in advance how the data amount of each segment increases (data bias). Therefore, segment management such as segment change in the storage devices 21 and 22 is facilitated. In addition, since the necessity of division is determined using different threshold values for segment # 1 and segment # 2, the probability of division of segments # 1 and # 2 occurring at the same time can be reduced. Therefore, it is possible to suppress an increase in the load on the information processing system due to concentrated processing such as segment arrangement change and segment information update, and it is possible to suppress a decrease in performance of the information processing system.
 [第2の実施の形態]
 図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、サーバ装置100,100a,100b,100c、管理装置200およびクライアント装置300を含む。サーバ装置100,100a,100b,100cおよび管理装置200は、ネットワーク41に接続されている。クライアント装置300は、ネットワーク42に接続されている。第2の実施の形態の情報処理システムは、いわゆるクラウドシステムとして実現してもよい。
[Second Embodiment]
FIG. 2 illustrates an information processing system according to the second embodiment. The information processing system according to the second embodiment includes server apparatuses 100, 100a, 100b, and 100c, a management apparatus 200, and a client apparatus 300. Server apparatuses 100, 100 a, 100 b, 100 c and management apparatus 200 are connected to a network 41. The client device 300 is connected to the network 42. The information processing system according to the second embodiment may be realized as a so-called cloud system.
 サーバ装置100,100a,100b,100cは、データを分散管理するサーバコンピュータである。サーバ装置100,100a,100b,100cは、データを識別するためのキーとデータとを対応付けて記憶し、また、キーからデータが記憶されているサーバ装置を検索するためのセグメント情報を保持している。何れのサーバ装置も、クライアント装置300からデータ処理のリクエストを受け付けることができる。キーを含むリクエストを受け付けたサーバ装置は、処理対象のデータが記憶されているサーバ装置をセグメント情報に基づいて検索し、検索されたサーバ装置にデータ処理を依頼する。 The server apparatuses 100, 100a, 100b, and 100c are server computers that manage data in a distributed manner. The server devices 100, 100a, 100b, and 100c store a key for identifying the data and the data in association with each other, and hold segment information for searching for the server device storing the data from the key. ing. Any server device can accept a data processing request from the client device 300. The server device that has received the request including the key searches the server device in which the processing target data is stored based on the segment information, and requests the searched server device for data processing.
 管理装置200は、ユーザ(例えば、情報処理システムの管理者)が使用するコンピュータである。管理装置200は、ユーザ操作に基づいて、サーバ装置100,100a,100b,100cを管理する。例えば、管理装置200は、データを記憶するサーバ装置が情報処理システムに追加されるとき、追加されるサーバ装置の情報をサーバ装置100,100a,100b,100cに送信する。また、データの分散配置を調整するための設定情報を、サーバ装置100,100a,100b,100cに送信する。 The management apparatus 200 is a computer used by a user (for example, an information processing system administrator). The management device 200 manages the server devices 100, 100a, 100b, and 100c based on user operations. For example, when a server device that stores data is added to the information processing system, the management device 200 transmits information on the added server device to the server devices 100, 100a, 100b, and 100c. Also, setting information for adjusting the distributed arrangement of data is transmitted to the server apparatuses 100, 100a, 100b, and 100c.
 クライアント装置300は、ユーザ(例えば、クラウドサービスの利用者)が使用するコンピュータである。クライアント装置300では、例えば、サーバ装置100,100a,100b,100cに記憶されるデータを扱うアプリケーションソフトウェアが実行される。クライアント装置300は、ネットワーク41,42を介して、サーバ装置100,100a,100b,100cのうちの任意のサーバ装置に、データ処理のリクエストを送信する。リクエストでは、1つのキーまたはキーの範囲が指定される。データ処理には、データの読み出し(リード)や書き込み(ライト)が含まれる。 The client device 300 is a computer used by a user (for example, a user of a cloud service). In the client device 300, for example, application software that handles data stored in the server devices 100, 100a, 100b, and 100c is executed. The client device 300 transmits a data processing request to an arbitrary server device among the server devices 100, 100a, 100b, and 100c via the networks 41 and 42. In the request, one key or a range of keys is specified. Data processing includes data read (read) and write (write).
 何れのサーバ装置がクライアント装置300からリクエストを受信しても、サーバ装置100,100a,100b,100cの間でメッセージを伝送することで、要求されたデータ処理が実行される。このように、第2の実施の形態の情報処理システムは、できる限りデータ処理のボトルネックとなる装置が生じないように設計することが可能であり、可用性や応答性能などを向上させることができる。 Regardless of which server device receives the request from the client device 300, the requested data processing is executed by transmitting a message between the server devices 100, 100a, 100b, and 100c. As described above, the information processing system according to the second embodiment can be designed so that a device that becomes a bottleneck for data processing does not occur as much as possible, and can improve availability, response performance, and the like. .
 図3は、サーバ装置のハードウェア例を示すブロック図である。サーバ装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信部107を有する。上記ユニットは、サーバ装置100内でバスに接続されている。なお、サーバ装置100a,100b,100c、管理装置200およびクライアント装置300も、サーバ装置100と同様のハードウェアによって実現できる。 FIG. 3 is a block diagram illustrating a hardware example of the server device. The server apparatus 100 includes a CPU 101, a RAM 102, an HDD 103, an image signal processing unit 104, an input signal processing unit 105, a disk drive 106, and a communication unit 107. The unit is connected to a bus in the server device 100. The server devices 100a, 100b, and 100c, the management device 200, and the client device 300 can also be realized by the same hardware as the server device 100.
 CPU101は、サーバ装置100における情報処理を制御する演算装置である。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部を読み出してRAM102に展開し、プログラムを実行する。なお、サーバ装置100は、複数の演算装置を備えて、情報処理を分散して実行してもよい。 The CPU 101 is an arithmetic device that controls information processing in the server device 100. The CPU 101 reads out at least a part of the programs and data stored in the HDD 103, expands them in the RAM 102, and executes the programs. The server device 100 may include a plurality of arithmetic devices and execute information processing in a distributed manner.
 RAM102は、CPU101が扱うプログラムやデータを一時的に記憶しておく揮発性メモリである。なお、サーバ装置100は、RAM以外の種類のメモリを備えていてもよく、複数個のメモリを備えてもよい。 The RAM 102 is a volatile memory that temporarily stores programs and data handled by the CPU 101. Note that the server device 100 may include a type of memory other than the RAM, or may include a plurality of memories.
 HDD103は、OS(Operating System)プログラムやアプリケーションプログラムなどのプログラム、および、情報処理に用いられるデータを記憶する不揮発性の記憶装置である。HDD103は、CPU101の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、サーバ装置100は、HDD以外の不揮発性の記憶装置(例えば、SSD(Solid State Drive))を備えていてもよく、複数の記憶装置を備えてもよい。 The HDD 103 is a non-volatile storage device that stores programs such as an OS (Operating System) program and an application program, and data used for information processing. The HDD 103 reads / writes data from / into the built-in magnetic disk according to instructions from the CPU 101. The server device 100 may include a nonvolatile storage device (for example, SSD (Solid State Drive)) other than the HDD, or may include a plurality of storage devices.
 画像信号処理部104は、CPU101の命令に従って、サーバ装置100に接続されたディスプレイ31に画像を出力する。ディスプレイ31として、例えば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。 The image signal processing unit 104 outputs an image to the display 31 connected to the server apparatus 100 in accordance with an instruction from the CPU 101. As the display 31, for example, a CRT (Cathode Ray Tube) display or a liquid crystal display can be used.
 入力信号処理部105は、サーバ装置100に接続された入力デバイス32から入力信号を取得し、CPU101に出力する。入力デバイス32として、例えば、マウスやタッチパネルなどのポインティングデバイスや、キーボードなどを用いることができる。 The input signal processing unit 105 acquires an input signal from the input device 32 connected to the server apparatus 100 and outputs it to the CPU 101. As the input device 32, for example, a pointing device such as a mouse or a touch panel, a keyboard, or the like can be used.
 ディスクドライブ106は、記録媒体33に記録されたプログラムやデータを読み取る駆動装置である。記録媒体33として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体33から読み取ったプログラムやデータをRAM102またはHDD103に格納する。 The disk drive 106 is a drive device that reads a program and data recorded on the recording medium 33. As the recording medium 33, for example, a magnetic disk such as a flexible disk (FD: Flexible Disk) or HDD, an optical disk such as a CD (Compact Disk) or a DVD (Digital Versatile Disk), a magneto-optical disk (MO: Magneto-Optical disk). Can be used. For example, the disk drive 106 stores the program and data read from the recording medium 33 in the RAM 102 or the HDD 103 in accordance with a command from the CPU 101.
 通信部107は、ネットワーク41に接続して通信を行う通信インタフェースである。ネットワーク41への接続方法は、有線でも無線でもよい。すなわち、通信部107は、有線通信インタフェースでも無線通信インタフェースでもよい。 The communication unit 107 is a communication interface that communicates by connecting to the network 41. The connection method to the network 41 may be wired or wireless. That is, the communication unit 107 may be a wired communication interface or a wireless communication interface.
 図4は、リクエスト処理の例を示す図である。図4では、リクエストとして、(A)単一のキーを指定したリード要求、(B)キーの範囲を指定したリード要求、(C)ライト要求の例を挙げている。サーバ装置100aは、キーとデータの組(key,value)として、(2,data2),(3,data3)を記憶し、サーバ装置100cは、(4,data4),(5,data5)を記憶しているとする。 FIG. 4 is a diagram illustrating an example of request processing. In FIG. 4, examples of requests include (A) a read request designating a single key, (B) a read request designating a key range, and (C) a write request. The server apparatus 100a stores (2, data2), (3, data3) as a key and data pair (key, value), and the server apparatus 100c stores (4, data4), (5, data5). Suppose you are.
 (A)サーバ装置100は、キー2を指定したリード要求get(2)をクライアント装置300から受信すると、キー2に対応するデータがサーバ装置100aに記憶されていると判定する。そして、キー2に対するリード要求を示すメッセージをサーバ装置100aに送信する。サーバ装置100aは、data2をサーバ装置100に送信する。サーバ装置100は、data2をクライアント装置300に送信する。 (A) When the server apparatus 100 receives the read request get (2) designating the key 2 from the client apparatus 300, the server apparatus 100 determines that the data corresponding to the key 2 is stored in the server apparatus 100a. Then, a message indicating a read request for the key 2 is transmitted to the server device 100a. The server apparatus 100a transmits data2 to the server apparatus 100. The server apparatus 100 transmits data2 to the client apparatus 300.
 (B)サーバ装置100は、キーの範囲2~5を指定したリード要求range_get(2,5)をクライアント装置300から受信すると、キー2,3に対応するデータがサーバ装置100aに記憶され、キー4,5に対応するデータがサーバ装置100cに記憶されていると判定する。そして、キー2,3に対するリード要求を示すメッセージをサーバ装置100aに送信し、キー4,5に対するリード要求を示すメッセージをサーバ装置100cに送信する。サーバ装置100aは、data2,3をサーバ装置100に送信する。サーバ装置100cは、data4,5をサーバ装置100に送信する。サーバ装置100は、data2~5をクライアント装置300に送信する。 (B) When the server apparatus 100 receives the read request range_get (2, 5) designating the key range 2 to 5 from the client apparatus 300, the data corresponding to the keys 2 and 3 is stored in the server apparatus 100a, and the key It is determined that data corresponding to 4 and 5 is stored in the server device 100c. Then, a message indicating a read request for the keys 2 and 3 is transmitted to the server apparatus 100a, and a message indicating a read request for the keys 4 and 5 is transmitted to the server apparatus 100c. The server apparatus 100a transmits data 2 and 3 to the server apparatus 100. The server apparatus 100 c transmits data 4 and 5 to the server apparatus 100. The server apparatus 100 transmits data 2 to 5 to the client apparatus 300.
 (C)サーバ装置100は、キー1を指定したライト要求set(1,data1)をクライアント装置300から受信すると、キー1に対応するデータはサーバ装置100aに記憶されるものであると判定する。そして、キー1に対するライト要求を示すメッセージをサーバ装置100aに送信する。サーバ装置100aは、data1を自身の記憶装置に書き込み、サーバ装置100に書き込み完了を報告する。サーバ装置100は、書き込み完了をクライアント装置300に報告する。 (C) When the server apparatus 100 receives the write request set (1, data1) specifying the key 1 from the client apparatus 300, the server apparatus 100 determines that the data corresponding to the key 1 is stored in the server apparatus 100a. Then, a message indicating a write request for key 1 is transmitted to server device 100a. The server device 100a writes data1 to its own storage device and reports the completion of writing to the server device 100. The server apparatus 100 reports the completion of writing to the client apparatus 300.
 このように、サーバ装置100,100a,100b,100cは、キーとデータとを対応付けて保持し、キー単位で記憶装置からのデータの読み出しや記憶装置へのデータの書き込みを行う。処理対象のキーは、例えば、クライアント装置300で実行されるアプリケーションソフトウェアによって指定される。よって、サーバ装置100,100a,100b,100cのデータ処理の複雑性が抑えられ、負荷が軽減される。 As described above, the server apparatuses 100, 100a, 100b, and 100c hold keys and data in association with each other, and read data from the storage device and write data to the storage device in units of keys. The key to be processed is specified by application software executed on the client device 300, for example. Therefore, the complexity of data processing of the server apparatuses 100, 100a, 100b, and 100c is suppressed, and the load is reduced.
 ライト要求で指定されたキーに対応するデータがまだ存在しない場合、当該ライト要求はデータの追加を意味する。一方、ライト要求で指定されたキーに対応するデータが既に存在する場合、当該ライト要求はデータの上書きを意味する。キーに対応するデータが存在するか否かの確認や上書き可否の判断は、例えば、クライアント装置300で実行されるアプリケーションソフトウェアの責任で行われる。第2の実施の形態の情報処理システムは、例えば、時刻をキーとするデータ(例えば、ログデータ)の管理に利用できる。 When there is no data corresponding to the key specified in the write request, the write request means adding data. On the other hand, if data corresponding to the key specified in the write request already exists, the write request means data overwrite. The confirmation of whether or not the data corresponding to the key exists and the determination of whether or not overwriting is possible are performed, for example, under the responsibility of application software executed on the client device 300. The information processing system according to the second embodiment can be used, for example, for managing data (for example, log data) using time as a key.
 図5は、セグメント管理ツリーの例を示す図である。サーバ装置100,100a,100b,100cは、セグメント管理ツリーを記述したセグメント情報を有する。セグメント管理ツリーとして、トライ木やプレフィックス木と呼ばれる順序付きツリーを用いることができる。前述の非特許文献1(Yatin Chawathe, Sriram Ramabhadran, Sylvia Ratnasamy, Anthony LaMarca, Scott Shenker and Joseph Hellerstein, "A Case Study in Building Layered DHT Applications")に記載されたPHTを用いてもよい。 FIG. 5 is a diagram showing an example of the segment management tree. The server apparatuses 100, 100a, 100b, and 100c have segment information describing a segment management tree. As the segment management tree, an ordered tree called a trie tree or a prefix tree can be used. Non-Patent Document 1 (YatinYChawathe, Sriram Ramabhadran, Sylvia Ratnasamy, Anthony LaMarca, Scott Shenker and Joseph Hellerstein, "A Case Study in Building Layered DHT Applications") may be used.
 セグメント管理ツリーでは、キー空間が、セグメントと呼ばれる区間に階層的に分割される。セグメント管理ツリーの各ノードがセグメントに相当する。各ノードには、当該ノードの深さに応じた長さのラベルが付与される。例えば、ルートノードの左の子ノードにラベル0を付与し、右の子ノードにラベル1を付与する。また、あるノードにラベルLが付与されているとき、左の子ノードにラベルL+0、右の子ノードにラベルをL+1を付与する。キー空間に含まれる各キーは、当該キーのプレフィックスに一致するラベルが付与された何れか1つの葉ノード(子ノードをもたないノード)に対応付けられる。 In the segment management tree, the key space is hierarchically divided into sections called segments. Each node in the segment management tree corresponds to a segment. Each node is given a label having a length corresponding to the depth of the node. For example, label 0 is assigned to the left child node of the root node, and label 1 is assigned to the right child node. Further, when a label L is given to a certain node, a label L + 0 is given to the left child node, and a label L + 1 is given to the right child node. Each key included in the key space is associated with any one leaf node (a node having no child node) to which a label matching the prefix of the key is assigned.
 一例として、キーが5ビットの2進数で表現できる場合を考える。クライアント装置300から指定されるキーが2進数で表現されていない場合は、2進数に変換すればよい。また、図5に示したように、ラベル000,001,01,10,11が付与された5つの葉ノードを含むセグメント管理ツリーを考える。この場合、キー00000~00011は、ラベル000のノードに対応付けられる。キー00100~00111は、ラベル001のノードに対応付けられる。キー01000~01111は、ラベル01のノードに対応付けられる。キー10000~10111は、ラベル10の葉ノードに対応付けられる。キー11000~11111は、ラベル11の葉ノードに対応付けられる。 As an example, consider the case where the key can be represented by a 5-bit binary number. If the key specified from the client device 300 is not expressed in binary, it may be converted into binary. Further, as shown in FIG. 5, a segment management tree including five leaf nodes assigned labels 000, 001,01, 10, and 11 is considered. In this case, the keys 00000 to 0111 are associated with the node with the label 000. Keys 00100 to 00111 are associated with the node with label 001. Keys 01000 to 01111 are associated with the node of label 01. Keys 10000 to 10111 are associated with leaf nodes of label 10. Keys 11000 to 11111 are associated with leaf nodes of label 11.
 セグメント管理ツリーの葉ノードに相当するセグメントが、サーバ装置100,100a,100b,100cに配置される。例えば、ラベル11のセグメントが、サーバ装置100に配置される。ラベル000,10のセグメントが、サーバ装置100aに配置される。ラベル001,01のセグメントが、サーバ装置100cに配置される。セグメントを配置するサーバ装置は、例えば、当該セグメントのラベルにハッシュ関数を適用して算出されるハッシュ値に基づいて決定することができる。 Segments corresponding to leaf nodes of the segment management tree are arranged in the server apparatuses 100, 100a, 100b, and 100c. For example, the segment of the label 11 is arranged on the server device 100. The segments with labels 000 and 10 are arranged in the server apparatus 100a. The segment with the label 001, 01 is arranged in the server device 100c. A server device that arranges a segment can be determined based on, for example, a hash value calculated by applying a hash function to the label of the segment.
 このように、セグメント単位でデータを配置するサーバ装置を決定することで、キーのローカリティを維持することができ、値の近いキーに対応付けられるデータ同士ができる限り同じサーバ装置に配置されるようになる。このため、範囲指定のリード要求など、範囲指定のデータ処理を効率的に実行できるようになる。セグメント管理ツリーの深さ(セグメントの分割の程度)は、サーバ装置100,100a,100b,100cに記憶されたデータの量に応じて動的に調整される。後述するように、データ量の大きくなったセグメントは、更に複数のセグメントに自動的に分割される。 In this way, by determining the server device that arranges data in segment units, the locality of the keys can be maintained, and the data associated with the keys having similar values are arranged on the same server device as much as possible. become. For this reason, range-designated data processing such as range-designated read requests can be efficiently executed. The depth of the segment management tree (the degree of segment division) is dynamically adjusted according to the amount of data stored in the server apparatuses 100, 100a, 100b, and 100c. As will be described later, a segment with an increased data amount is further automatically divided into a plurality of segments.
 なお、以上の説明では、セグメント管理ツリーの例として2分木を用いたが、任意の分岐数のツリーを用いてもよい。葉ノード以外の各ノードがそれぞれb個(bは2以上の整数)の子ノードを有する場合、各ノードにはb進数のラベルを付与すればよい。例えば、b=3の場合、ルートノードはラベル0,1,2の子ノードを有する。また、ラベル0のノードは、ラベル00,01,02の子ノードを有する。キーをセグメントに対応付けるときは、キーをb進数に変換して、キーのプレフィックスとラベルを比較すればよい。 In the above description, a binary tree is used as an example of the segment management tree, but a tree with an arbitrary number of branches may be used. When each node other than the leaf node has b child nodes (b is an integer of 2 or more), a b-ary label may be assigned to each node. For example, when b = 3, the root node has child nodes with labels 0, 1, and 2. The node with label 0 has child nodes with labels 00, 01, 02. When associating a key with a segment, it is only necessary to convert the key to b-base and compare the key prefix with the label.
 図6は、サーバ装置へのセグメントの配置方法の例を示す図である。前述の通り、セグメント管理ツリーの葉ノードに対応するセグメントは、当該セグメントのラベルに応じてサーバ装置100,100a,100b,100cの何れかに配置される。 FIG. 6 is a diagram illustrating an example of a method of arranging segments on the server device. As described above, the segment corresponding to the leaf node of the segment management tree is arranged in one of the server devices 100, 100a, 100b, and 100c according to the label of the segment.
 ここでは、ハッシュ関数の値域(ハッシュ値が取り得る値)を0~2n-1(nは自然数)とし、値域をループ状にしたハッシュ値の空間を考える。サーバ装置100,100a,100b,100cそれぞれの識別情報(例えば、アドレス)にハッシュ関数を適用して、各サーバ装置に対応するハッシュ値を算出する。また、セグメントのラベルにハッシュ関数を適用して、当該セグメントに対応するハッシュ値を算出する。そして、各サーバ装置のハッシュ値とセグメントのハッシュ値のループ上での位置関係に基づいて、当該セグメントを配置するサーバ装置を決定する。例えば、ループ上で、セグメントのハッシュ値より先にある最小のハッシュ値をもつサーバ装置を選択する。 Here, let us consider a hash value space in which the value range of the hash function (values that the hash value can take) is 0 to 2 n −1 (n is a natural number) and the value range is a loop. A hash function corresponding to each server device is calculated by applying a hash function to identification information (for example, address) of each of the server devices 100, 100a, 100b, and 100c. Also, a hash function corresponding to the segment is calculated by applying a hash function to the segment label. Then, based on the positional relationship on the loop between the hash value of each server device and the hash value of the segment, the server device in which the segment is arranged is determined. For example, on the loop, the server device having the minimum hash value that precedes the hash value of the segment is selected.
 例えば、サーバ装置100のハッシュ値h(s1)とサーバ装置100aのハッシュ値h(s2)とラベル0のハッシュ値h(0)とが、h(s2)>h(0)>h(s1)の関係にある場合、ラベル0のセグメントをサーバ装置100aに配置する。また、サーバ装置100bのハッシュ値h(s3)とサーバ装置100cのハッシュ値h(s4)とラベル001のハッシュ値h(001)とが、h(s4)>h(001)>h(s3)の関係にある場合、ラベル001のセグメントをサーバ装置100cに配置する。 For example, the hash value h (s1) of the server device 100, the hash value h (s2) of the server device 100a, and the hash value h (0) of the label 0 are h (s2)> h (0)> h (s1). If so, the segment with label 0 is placed in the server device 100a. In addition, the hash value h (s3) of the server device 100b, the hash value h (s4) of the server device 100c, and the hash value h (001) of the label 001 are h (s4)> h (001)> h (s3). If so, the segment with the label 001 is placed in the server device 100c.
 なお、ラベルのLSB(Least Significant Bit)が0である場合、LSBからMSB(Most Significant Bit)に向かって連続する0を削除して、ハッシュ関数を適用する。ただし、MSBの0は削除しない。例えば、ラベル00,000はラベル0に変換され、ラベル10はラベル1に変換される。よって、ラベル0,00,000のハッシュ値は同一となり、ラベル1,10のハッシュ値は同一となる。これにより、あるセグメントを2以上のセグメントに分割したとき、分割後の2以上のセグメントの少なくとも1つは、元のセグメントと同じサーバ装置に配置されることになる。 If the LSB (Least Significant Bit) of the label is 0, the consecutive 0s from the LSB toward the MSB (Most Significant Bit) are deleted and the hash function is applied. However, the MSB 0 is not deleted. For example, label 00,000 is converted to label 0, and label 10 is converted to label 1. Therefore, the hash values of the labels 0.000,000 are the same, and the hash values of the labels 1, 10 are the same. Accordingly, when a certain segment is divided into two or more segments, at least one of the two or more segments after the division is arranged in the same server device as the original segment.
 ただし、サーバ装置100,100a,100b,100cへのセグメントの配置方法は、上記方法に限定されない。例えば、セグメントのラベルから算出されたハッシュ値をサーバ装置の数で割って余り(剰余)を求め、剰余に応じてセグメントを配置するサーバ装置を選択する方法が考えられる。例えば、ハッシュ値を4で割り、剰余=0のときはサーバ装置100、剰余=1のときはサーバ装置100a、剰余=2のときはサーバ装置100b、剰余=3のときはサーバ装置100cを選択する。 However, the method of arranging the segments on the server devices 100, 100a, 100b, 100c is not limited to the above method. For example, a method is conceivable in which a hash value calculated from a segment label is divided by the number of server devices to obtain a remainder (residue), and a server device in which segments are arranged is selected according to the remainder. For example, when the hash value is divided by 4, the server apparatus 100 is selected when the remainder = 0, the server apparatus 100a is selected when the remainder = 1, the server apparatus 100b is selected when the remainder = 2, and the server apparatus 100c is selected when the remainder = 3. To do.
 図7は、サーバ装置のソフトウェア例を示すブロック図である。サーバ装置100は、通信処理部110、イベント処理部120およびデータ記憶部130を有する。通信処理部110およびイベント処理部120は、例えば、CPU101およびRAM102を用いて実行されるプログラムとして実現できる。データ記憶部130は、例えば、RAM102やHDD103上の記憶領域として実現できる。サーバ装置100a,100b,100cも、サーバ装置100と同様のブロック構成によって実現できる。 FIG. 7 is a block diagram illustrating a software example of the server device. The server device 100 includes a communication processing unit 110, an event processing unit 120, and a data storage unit 130. The communication processing unit 110 and the event processing unit 120 can be realized as programs executed using the CPU 101 and the RAM 102, for example. The data storage unit 130 can be realized as a storage area on the RAM 102 or the HDD 103, for example. The server apparatuses 100a, 100b, and 100c can also be realized by the same block configuration as the server apparatus 100.
 通信処理部110は、リクエスト受信部111、セグメント情報記憶部112、セグメント管理部113およびメッセージ処理部114を有する。
 リクエスト受信部111は、クライアント装置300からリクエストを受信し、所望のセグメントが配置されたサーバ装置の判定をセグメント管理部113に依頼する。また、リクエスト受信部111は、読み出されたデータまたは書き込み結果をメッセージ処理部114から取得し、レスポンスとしてクライアント装置300に送信する。
The communication processing unit 110 includes a request reception unit 111, a segment information storage unit 112, a segment management unit 113, and a message processing unit 114.
The request reception unit 111 receives a request from the client device 300 and requests the segment management unit 113 to determine a server device in which a desired segment is arranged. Further, the request reception unit 111 acquires the read data or the write result from the message processing unit 114 and transmits it to the client device 300 as a response.
 セグメント情報記憶部112は、図5のようなセグメント管理ツリーを記載したセグメント情報を記憶する。セグメント情報は、セグメントの分割に伴って更新される。セグメント情報記憶部112は、ハッシュ関数を示す情報を記憶してもよい。なお、セグメント情報記憶部112は、RAM102またはHDD103上の記憶領域として実現できる。 The segment information storage unit 112 stores segment information describing a segment management tree as shown in FIG. The segment information is updated as the segments are divided. The segment information storage unit 112 may store information indicating a hash function. The segment information storage unit 112 can be realized as a storage area on the RAM 102 or the HDD 103.
 セグメント管理部113は、セグメント情報記憶部112に記憶されたセグメント情報に基づいて、リクエストで指定されたキーまたはキーの範囲に対応する1またはそれ以上のセグメントを検索する。そして、セグメントのラベルとハッシュ関数から、検索されたセグメントが配置されている1またはそれ以上のサーバ装置を判定する。セグメント管理部113は、検索されたセグメントが自サーバ装置にある場合、イベント処理部120にデータ処理を依頼する。検索されたセグメントが他のサーバ装置にある場合、メッセージ処理部114に当該他のサーバ装置へのメッセージの送信を依頼する。 The segment management unit 113 searches for one or more segments corresponding to the key or key range specified in the request based on the segment information stored in the segment information storage unit 112. Then, one or more server devices in which the searched segment is arranged are determined from the segment label and the hash function. The segment management unit 113 requests the event processing unit 120 to perform data processing when the searched segment is in its own server device. If the retrieved segment is in another server device, the message processing unit 114 is requested to send a message to the other server device.
 また、セグメント管理部113は、イベント処理部120からセグメントを分割した旨の報告があると、セグメント情報記憶部112に記憶されたセグメント情報を更新する。そして、セグメントの更新を示すメッセージを他のサーバ装置に送信するよう、メッセージ処理部114に依頼する。また、セグメント管理部113は、メッセージ処理部114からの依頼に応じて、セグメント情報記憶部112に記憶されたセグメント情報を更新する。なお、セグメント管理部113は、セグメントが配置され得るサーバ装置の識別情報を、設定情報として管理装置200から受信して保持している。 Also, the segment management unit 113 updates the segment information stored in the segment information storage unit 112 when the event processing unit 120 reports that the segment has been divided. Then, the message processing unit 114 is requested to transmit a message indicating the segment update to another server device. Further, the segment management unit 113 updates the segment information stored in the segment information storage unit 112 in response to a request from the message processing unit 114. The segment management unit 113 receives the identification information of the server device in which the segment can be arranged as setting information from the management device 200 and holds it.
 メッセージ処理部114は、他のサーバ装置(サーバ装置100a,100b,100c)との間でメッセージを送受信する。メッセージ処理部114は、他のサーバ装置からリード要求やライト要求のメッセージを受信すると、イベント処理部120にデータ処理を依頼する。また、セグメント管理部113からの依頼に応じて、他のサーバ装置にリード要求やライト要求のメッセージを送信する。また、メッセージ処理部114は、セグメント管理部113からの依頼に応じて、他のサーバ装置にセグメント更新のメッセージを送信する。また、他のサーバ装置からセグメント更新のメッセージを受信すると、セグメント管理部113にセグメント情報の更新を依頼する。 The message processing unit 114 transmits and receives messages to and from other server devices ( server devices 100a, 100b, and 100c). When the message processing unit 114 receives a read request or write request message from another server device, the message processing unit 114 requests the event processing unit 120 to perform data processing. Also, in response to a request from the segment management unit 113, a read request or write request message is transmitted to another server device. Further, the message processing unit 114 transmits a segment update message to another server device in response to a request from the segment management unit 113. When a segment update message is received from another server device, the segment management unit 113 is requested to update the segment information.
 イベント処理部120は、データ処理部121、算出式記憶部122、閾値算出部123および分割判定部124を有する。
 データ処理部121は、セグメント管理部113またはメッセージ処理部114からの依頼に応じて、データ処理を行う。キーまたはキーの範囲を指定したリード要求である場合、データ処理部121は、キーに対応するデータまたはキーの範囲に対応するデータ群をデータ記憶部130から読み出す。キーを指定したライト要求である場合、データ処理部121は、キーに対応付けてデータをデータ記憶部130に書き込む。
The event processing unit 120 includes a data processing unit 121, a calculation formula storage unit 122, a threshold value calculation unit 123, and a division determination unit 124.
The data processing unit 121 performs data processing in response to a request from the segment management unit 113 or the message processing unit 114. If the read request specifies a key or a key range, the data processing unit 121 reads data corresponding to the key or a data group corresponding to the key range from the data storage unit 130. If the write request specifies a key, the data processing unit 121 writes data in the data storage unit 130 in association with the key.
 また、データ処理部121は、データをデータ記憶部130に書き込んだ場合、セグメントの分割の要否を分割判定部124に問い合わせる。分割判定部124で分割を要すると判定された場合、データ処理部121は、分割処理を行う。例えば、データ記憶部130に記憶されたデータの一部を他のサーバ装置に移動させる。また、セグメントを分割した旨をセグメント管理部113に報告する。 In addition, when the data processing unit 121 writes the data to the data storage unit 130, the data processing unit 121 inquires of the division determination unit 124 whether or not the segment is necessary. When the division determination unit 124 determines that division is required, the data processing unit 121 performs division processing. For example, a part of the data stored in the data storage unit 130 is moved to another server device. In addition, the segment management unit 113 is notified that the segment has been divided.
 算出式記憶部122は、セグメントを分割するか判定するための閾値を算出する算出式を記憶する。閾値は、後述するように、分割の要否を判定するセグメントのラベルに基づいて算出される。閾値の算出式は、管理装置200のユーザが記述し、管理装置200が算出式記憶部122に設定する。なお、算出式記憶部122は、RAM102またはHDD103上の記憶領域として実現できる。 The calculation formula storage unit 122 stores a calculation formula for calculating a threshold for determining whether to divide a segment. As will be described later, the threshold value is calculated based on the label of the segment that determines whether or not division is necessary. The calculation formula of the threshold is described by the user of the management apparatus 200 and is set in the calculation formula storage unit 122 by the management apparatus 200. The calculation formula storage unit 122 can be realized as a storage area on the RAM 102 or the HDD 103.
 閾値算出部123は、分割判定部124から指定されたセグメントのラベルと、算出式記憶部122に記憶された閾値の算出式から、指定されたセグメントの閾値を算出する。そして、算出した閾値を分割判定部124に回答する。 The threshold value calculation unit 123 calculates the threshold value of the specified segment from the segment label specified by the division determination unit 124 and the threshold value calculation formula stored in the calculation formula storage unit 122. Then, the calculated threshold value is returned to the division determination unit 124.
 分割判定部124は、データ処理部121からの問い合わせに応じて、データの書き込みが行われたセグメントの分割の要否を判定する。分割判定部124は、書き込みが行われたセグメントのラベルを指定して、閾値算出部123に閾値の算出を依頼する。セグメントのラベルは、例えば、セグメント情報を参照して、ライト要求で指定されたキーから求める。また、分割判定部124は、データ記憶部130を参照して、書き込みが行われたセグメントのデータ量(例えば、当該セグメントに属するキーに対応付けられたデータの総量)を求める。そして、分割判定部124は、データ量が閾値を超える場合、分割を要すると判定し、データ量が閾値以下の場合、分割を要しないと判定する。 In response to the inquiry from the data processing unit 121, the division determination unit 124 determines whether or not it is necessary to divide the segment where the data has been written. The division determination unit 124 designates the label of the segment in which writing has been performed, and requests the threshold value calculation unit 123 to calculate the threshold value. For example, the segment label is obtained from the key specified in the write request with reference to the segment information. Further, the division determination unit 124 refers to the data storage unit 130 to obtain the data amount of the segment in which writing has been performed (for example, the total amount of data associated with the key belonging to the segment). The division determination unit 124 determines that the division is necessary when the data amount exceeds the threshold value, and determines that the division is not required when the data amount is equal to or less than the threshold value.
 データ記憶部130は、キーとデータを対応付けて記憶する。データ記憶部130は、記憶領域をセグメント毎に分割して、キーとデータを記憶してもよい。
 図8は、リクエスト処理を示すフローチャートである。ここでは、サーバ装置100が処理を行う場合を考える。サーバ装置100a,100b,100cも、サーバ装置100と同様の処理を行う。以下、図8に示す処理をステップ番号に沿って説明する。
The data storage unit 130 stores keys and data in association with each other. The data storage unit 130 may divide the storage area into segments and store keys and data.
FIG. 8 is a flowchart showing request processing. Here, a case where the server apparatus 100 performs processing is considered. The server apparatuses 100a, 100b, and 100c perform the same processing as the server apparatus 100. In the following, the process illustrated in FIG. 8 will be described in order of step number.
 (ステップS11)リクエスト受信部111は、クライアント装置300からリクエストを受信する。リクエストの種類には、1つのキーを指定したリード要求、キーの範囲を指定したリード要求、および、1つのキーを指定したライト要求が含まれる。 (Step S11) The request reception unit 111 receives a request from the client device 300. The type of request includes a read request designating one key, a read request designating a key range, and a write request designating one key.
 (ステップS12)セグメント管理部113は、ステップS11受信されたリクエストがキーの範囲を指定したものか判断する。範囲指定のリクエストである場合、処理をステップS14に進める。それ以外の場合、処理をステップS13に進める。 (Step S12) The segment management unit 113 determines whether the request received in step S11 specifies a key range. If it is a range designation request, the process proceeds to step S14. Otherwise, the process proceeds to step S13.
 (ステップS13)セグメント管理部113は、セグメント情報記憶部112に記憶されたセグメント情報を参照して、リクエストで指定されたキーの属するセグメントを検索する。セグメントの検索では、例えば、b進数(bは2以上の整数)で表現したキーのプレフィックスとラベルを、セグメント管理ツリーのルートノードから葉ノードに向かって比較していき、プレフィックスと一致するラベルをもつ葉ノードを特定する。特定した葉ノードに相当するセグメントが、検索されるセグメントである。 (Step S13) The segment management unit 113 refers to the segment information stored in the segment information storage unit 112 and searches for a segment to which the key specified in the request belongs. When searching for a segment, for example, the prefix and label of a key expressed in base b (b is an integer of 2 or more) are compared from the root node of the segment management tree toward the leaf node, and a label that matches the prefix is searched. Identify the leaf node that it has. A segment corresponding to the identified leaf node is a searched segment.
 (ステップS14)セグメント管理部113は、セグメント情報を参照して、リクエストで指定された範囲内のキーを少なくとも1つ含むセグメントを全て検索する。複数のセグメントの検索では、例えば、範囲内のキーの最大値と最小値とに共通する最長のプレフィックスを求め、当該プレフィックスをラベルとしてもつノードを特定する。そして、特定したノード以下の複数の葉ノードを特定する。特定した複数の葉ノードに相当する複数のセグメントが、検索されるセグメントである。 (Step S14) The segment management unit 113 refers to the segment information and searches for all segments including at least one key within the range specified by the request. In the search for a plurality of segments, for example, the longest prefix common to the maximum value and the minimum value of the keys in the range is obtained, and the node having the prefix as a label is specified. Then, a plurality of leaf nodes below the identified node are identified. A plurality of segments corresponding to the specified plurality of leaf nodes are searched segments.
 例えば、キーの範囲が00010~00101の場合、キーの最小値00010と最大値00101とに共通する最長のプレフィックスは、00である。よって、ラベル00のノードより下位にある、ラベル000,001の葉ノードが特定される。そして、ラベル000に相当するセグメントとラベル001に相当するセグメントとが検索される。 For example, when the key range is 00010 to 00101, the longest prefix common to the minimum value 00010 and the maximum value 0101 is 00. Therefore, the leaf node of label 000,001 that is lower than the node of label 00 is specified. Then, a segment corresponding to the label 000 and a segment corresponding to the label 001 are searched.
 (ステップS15)セグメント管理部113は、ステップS13またはステップS14で検索されたセグメントのラベルにハッシュ関数を適用し、ハッシュ値を算出する。そして、ハッシュ値からセグメントが配置されているサーバ装置を特定する。サーバ装置は、例えば、図6に示した方法で特定される。ステップS14で複数のセグメントが検索された場合、複数のサーバ装置が特定されることがある。以下のステップS16~S18の処理が、特定されたサーバ装置毎またはセグメント毎に実行される。 (Step S15) The segment management unit 113 calculates a hash value by applying a hash function to the label of the segment searched in step S13 or step S14. And the server apparatus by which the segment is arrange | positioned from a hash value is specified. The server device is specified by, for example, the method shown in FIG. When a plurality of segments are searched in step S14, a plurality of server devices may be specified. The following steps S16 to S18 are executed for each specified server device or each segment.
 (ステップS16)セグメント管理部113は、データ処理の対象のセグメントが配置されたサーバ装置として、他のサーバ装置がステップS15で特定されたか判断する。他のサーバ装置が特定された場合、処理をステップS17に進める。自装置(サーバ装置100)が特定された場合、処理をステップS18に進める。 (Step S16) The segment management unit 113 determines whether another server device has been identified in step S15 as the server device on which the data processing target segment is arranged. If another server device is specified, the process proceeds to step S17. When the own apparatus (server apparatus 100) is specified, the process proceeds to step S18.
 (ステップS17)メッセージ処理部114は、ステップS15で特定された他のサーバ装置に対して、リード要求またはライト要求を示すメッセージを送信する。メッセージには、クライアント装置300からのリクエストで指定されたキーまたはキーの範囲のうち、宛先のサーバ装置に記憶されているキーまたはキーの範囲が含まれる。その後、メッセージ処理部114は、応答のメッセージを他のサーバ装置から受信する。応答のメッセージには、キーに対応するデータまたは書き込み完了の報告が含まれる。 (Step S17) The message processing unit 114 transmits a message indicating a read request or a write request to the other server device specified in Step S15. The message includes the key or key range stored in the destination server device among the keys or key ranges specified in the request from the client device 300. Thereafter, the message processing unit 114 receives a response message from another server device. The response message includes data corresponding to the key or a write completion report.
 (ステップS18)データ処理部121は、クライアント装置300からのリクエストに応じたデータ処理を行う。リード要求の場合、リクエストで指定されたキーまたはキーの範囲のうち、自装置に記憶されているキーまたはキーの範囲に対応するデータをデータ記憶部130から読み出す。ライト要求の場合、リクエストに含まれるキーとデータとを対応付けて、データ記憶部130に書き込む。 (Step S18) The data processing unit 121 performs data processing in response to a request from the client device 300. In the case of a read request, data corresponding to the key or key range stored in the own device is read from the data storage unit 130 out of the key or key range specified in the request. In the case of a write request, the key and data included in the request are associated with each other and written to the data storage unit 130.
 (ステップS19)リクエスト受信部111は、ステップS11で受信したリクエストに対するレスポンスをクライアント装置300に送信する。リクエストがリード要求である場合、レスポンスとして、ステップS17,S18で自装置または他のサーバ装置から読み出されたデータを送信する。リクエストがライト要求である場合、レスポンスとして、ステップS17,S18で確認された書き込み完了の報告を送信する。 (Step S19) The request reception unit 111 transmits a response to the request received in step S11 to the client device 300. When the request is a read request, the data read from the own device or another server device in steps S17 and S18 is transmitted as a response. If the request is a write request, a report of the completion of writing confirmed in steps S17 and S18 is transmitted as a response.
 図9は、セグメント分割を示すフローチャートである。ここでは、サーバ装置100が処理を行う場合を考える。サーバ装置100a,100b,100cも、サーバ装置100と同様の処理を行う。以下、図9に示す処理をステップ番号に沿って説明する。 FIG. 9 is a flowchart showing segment division. Here, a case where the server apparatus 100 performs processing is considered. The server apparatuses 100a, 100b, and 100c perform the same processing as the server apparatus 100. In the following, the process illustrated in FIG. 9 will be described in order of step number.
 (ステップS21)分割判定部124は、データ処理部121がデータ記憶部130に書き込んだデータのキーを特定する。そして、セグメント情報記憶部112に記憶されたセグメント情報に基づいて、キーに対応するセグメントを検索する。 (Step S21) The division determination unit 124 identifies the key of the data written by the data processing unit 121 in the data storage unit 130. Then, based on the segment information stored in the segment information storage unit 112, the segment corresponding to the key is searched.
 (ステップS22)閾値算出部123は、算出式記憶部122に記憶された算出式に、ステップS21で検索されたセグメントのラベルを代入し、当該セグメントの閾値を算出する。閾値の算出式としては、例えば、以下に示す数式(1)を用いる。数式(1)において、Lはラベル、Rは所定のルート閾値、bはセグメント管理ツリーの分岐数を示す。また、length(L)はラベルのビット数を示し、value(L)はラベルLが表す10進数表現の値を示す。 (Step S22) The threshold value calculation unit 123 substitutes the label of the segment searched in Step S21 for the calculation formula stored in the calculation formula storage unit 122, and calculates the threshold value of the segment. As the threshold calculation formula, for example, the following formula (1) is used. In Equation (1), L is a label, R is a predetermined route threshold, and b is the number of branches in the segment management tree. Further, length (L) indicates the number of bits of the label, and value (L) indicates the value of the decimal number expression represented by the label L.
Figure JPOXMLDOC01-appb-M000001
Figure JPOXMLDOC01-appb-M000001
 (ステップS23)分割判定部124は、データ記憶部130を参照して、ステップS21で検索したセグメントのデータ量(例えば、当該セグメントに属するキーに対応付けられているデータの総量)を算出する。そして、データ量がステップS22で算出された閾値を超えているか判断する。データ量が閾値を超える場合、処理をステップS24に進める。データ量が閾値以下の場合、処理を終了する。 (Step S23) The division determination unit 124 refers to the data storage unit 130 and calculates the data amount of the segment searched in Step S21 (for example, the total amount of data associated with the key belonging to the segment). Then, it is determined whether the data amount exceeds the threshold calculated in step S22. If the data amount exceeds the threshold value, the process proceeds to step S24. If the data amount is less than or equal to the threshold value, the process ends.
 (ステップS24)セグメント管理部113は、ステップS21で検索されたセグメントを分割して得られるb個の子セグメントを定義する。例えば、セグメントのラベルがLでありb=2の場合、ラベルL+0,L+1の子セグメントを定義する。 (Step S24) The segment management unit 113 defines b child segments obtained by dividing the segment searched in Step S21. For example, when the segment label is L and b = 2, child segments of labels L + 0 and L + 1 are defined.
 (ステップS25)データ処理部121は、データ記憶部130から、ステップS21で検索されたセグメントに属するキーを1つ選択する。
 (ステップS26)データ処理部121は、ステップS24で定義された子セグメントの中から、ステップS25で選択したキーのプレフィックスと一致するラベルをもつ子セグメントを特定する。そして、データ処理部121は、ステップS25で選択したキーを特定した子セグメントに割り当てる。
(Step S25) The data processing unit 121 selects one key belonging to the segment searched in step S21 from the data storage unit 130.
(Step S26) The data processing unit 121 specifies a child segment having a label that matches the prefix of the key selected in Step S25 from the child segments defined in Step S24. Then, the data processing unit 121 assigns the key selected in step S25 to the specified child segment.
 (ステップS27)データ処理部121は、ステップS25で全てのキーを選択したか判断する。全てのキーを選択した場合、処理をステップS28に進める。未選択のキーが存在する場合、処理をステップS25に進める。 (Step S27) The data processing unit 121 determines whether all keys have been selected in step S25. If all keys have been selected, the process proceeds to step S28. If there is an unselected key, the process proceeds to step S25.
 (ステップS28)セグメント管理部113は、ステップS24で定義した子セグメントのラベルにハッシュ関数を適用し、子セグメントそれぞれの配置先のサーバ装置を特定する。データ処理部121は、他のサーバ装置に配置される子セグメントのデータ(当該子セグメントに属するキーと対応付けられているデータ)をデータ記憶部130から読み出し、他のサーバ装置に送信する。データ送信が完了すると、他のサーバ装置に配置される子セグメントのデータをデータ記憶部130から削除する。 (Step S28) The segment management unit 113 applies a hash function to the label of the child segment defined in step S24, and specifies the server device of the placement destination of each child segment. The data processing unit 121 reads out data of a child segment arranged in another server device (data associated with a key belonging to the child segment) from the data storage unit 130, and transmits the data to the other server device. When the data transmission is completed, the child segment data arranged in another server device is deleted from the data storage unit 130.
 (ステップS29)セグメント管理部113は、ステップS24のセグメント分割が反映されるように、セグメント情報記憶部112に記憶されているセグメント情報を更新する。メッセージ処理部114は、セグメントの更新を他の全てのサーバ装置に通知する。 (Step S29) The segment management unit 113 updates the segment information stored in the segment information storage unit 112 so that the segment division in step S24 is reflected. The message processing unit 114 notifies all other server devices of the segment update.
 図10は、セグメントの閾値の例を示す図である。図10の閾値の例は、図5のセグメント管理ツリーに数式(1)を適用して算出したものである。
 各階層レベルの左端ノード(ルートノードおよびラベル0,00,000のノード)に対応するセグメントには、所定のルート閾値Rが設定される。Rとして、100[MB(メガバイト)]などのデータ量が予め決められている。左端ノード以外のノードに対応するセグメントには、Rを2f倍した閾値が設定される。fは分数で表現でき、分母の計算にはラベルのビット数が用いられ、分子にはラベルの表す値が用いられる。よって、同一の階層レベルのセグメント間では、fが異なる値となり、閾値が異なる値となる。
FIG. 10 is a diagram illustrating an example of the segment threshold. The threshold value example in FIG. 10 is calculated by applying Equation (1) to the segment management tree in FIG.
A predetermined root threshold value R is set for the segment corresponding to the leftmost node (root node and node with a label of 0.00,000) at each hierarchical level. As R, a data amount such as 100 [MB (megabyte)] is determined in advance. The segment corresponding to the node other than the leftmost node, thresholds 2 f multiplying the R is set. f can be expressed as a fraction, the number of bits of the label is used for the calculation of the denominator, and the value represented by the label is used for the numerator. Therefore, f becomes a different value between segments of the same hierarchical level, and the threshold value becomes different.
 ラベル1のセグメントには、f=1/2であるため、閾値1.41Rが設定される。ラベル01のセグメントには、f=1/4であるため、閾値1.19Rが設定される。ラベル10のセグメントには、f=2/4であるため、閾値1.41Rが設定される。ラベル11のセグメントには、f=3/4であるため、閾値1.68Rが設定される。 Since the segment of label 1 is f = 1/2, a threshold value of 1.41R is set. Since f = 1/4 is set for the segment of label 01, a threshold value of 1.19R is set. Since f = 2/4 is set in the segment of the label 10, the threshold value 1.41R is set. Since f = 3/4 for the segment of label 11, a threshold value of 1.68R is set.
 ここで、サーバ装置100,100a,100b,100cがデータを記憶していない状態(データ集合が空の状態)から、一定の速度でキー空間全体に対して均等にデータが追加される場合を考える。例えば、ルート閾値をR[MB]とし、キー空間全体に対してS[MB/秒](例えば、1[MB/秒])の速度でデータが追加されるとする。 Here, consider a case where data is evenly added to the entire key space at a constant speed from a state in which the server apparatuses 100, 100a, 100b, and 100c do not store data (a data set is empty). . For example, it is assumed that the route threshold is R [MB], and data is added at a rate of S [MB / second] (for example, 1 [MB / second]) with respect to the entire key space.
 この場合、データ追加を開始してからの経過時間として、ルートノードのセグメントでは、R/S[秒]でデータ量が閾値に達する。ラベル0のセグメントでは、2R/S[秒]でデータ量が閾値に達する。ラベル1のセグメントでは、2.82R/S[秒]でデータ量が閾値に達する。ラベル00のセグメントでは、4R/S[秒]でデータ量が閾値に達する。ラベル01のセグメントでは、4.76R/S[秒]でデータ量が閾値に達する。ラベル10のセグメントでは、5.64R/S[秒]でデータ量が閾値に達する。ラベル11のセグメントでは、6.72R/S[秒]でデータ量が閾値に達する。ラベル000のセグメントでは、8R/S[秒]でデータ量が閾値に達する。ラベル001のセグメントでは、8.72R/S[秒]でデータ量が閾値に達する。 In this case, as the elapsed time from the start of the data addition, the data amount reaches the threshold value in R / S [seconds] in the root node segment. In the segment with label 0, the data amount reaches the threshold value at 2R / S [seconds]. In the label 1 segment, the data amount reaches the threshold at 2.82 R / S [seconds]. In the segment of label 00, the data amount reaches the threshold value at 4 R / S [seconds]. In the segment of label 01, the data amount reaches the threshold value at 4.76 R / S [seconds]. In the segment of label 10, the data amount reaches the threshold value at 5.64 R / S [seconds]. In the segment of label 11, the data amount reaches the threshold at 6.72 R / S [seconds]. In the segment with label 000, the data amount reaches the threshold value at 8 R / S [seconds]. In the segment with label 001, the data amount reaches the threshold value at 8.72 R / S [seconds].
 このように、数式(1)に従って各セグメントの閾値を算出すると、データがキー空間に対して均等に追加される場合には、上位の階層レベルのセグメントの分割が完了した後に、下位の階層レベルのセグメントの分割が行われる。例えば、ラベル1のセグメントが分割された後に、ラベル00のセグメントが分割される。ラベル11のセグメントが分割された後に、ラベル000のセグメントが分割される。また、全てのセグメントの分割が異なるタイミングで行われる。セグメントを分割するか否かは、当該セグメントのラベルから判定できるため、セグメント間で独立に判定できる。 As described above, when the threshold value of each segment is calculated according to the equation (1), when the data is added to the key space evenly, the division of the upper hierarchical level segment is completed, and then the lower hierarchical level is calculated. Segmentation is performed. For example, after the segment of label 1 is divided, the segment of label 00 is divided. After the segment of label 11 is divided, the segment of label 000 is divided. Further, all segments are divided at different timings. Whether or not to divide a segment can be determined from the label of the segment, and therefore can be determined independently between segments.
 なお、図10の例では、各階層レベルの左端ノードにルート閾値Rを付与し、左端ノードから右端ノードに向かって閾値を増加させたが、各階層レベルの右端ノードにルート閾値Rを付与し、右端ノードから左端ノードに向かって閾値を増加させてもよい。また、上記の説明では、データ量と閾値とを比較してセグメントを分割するか判定しているが、データ量と閾値とを比較してセグメントを統合するか判定してもよい。例えば、ラベル000,001のセグメントのデータ量の合計が閾値以下のとき、当該2つのセグメントを統合すると判定してもよい。そのとき、分割の判定に用いる閾値と統合の判定に用いる閾値とは、異なる算出式から算出してもよい。 In the example of FIG. 10, the root threshold value R is assigned to the leftmost node at each hierarchical level and the threshold value is increased from the leftmost node toward the rightmost node. However, the root threshold value R is assigned to the rightmost node at each hierarchical level. The threshold value may be increased from the right end node toward the left end node. In the above description, the data amount and the threshold are compared to determine whether to divide the segment. However, the data amount and the threshold may be compared to determine whether to integrate the segments. For example, when the total data amount of the segments with the label 000,001 is equal to or less than the threshold value, it may be determined that the two segments are integrated. At this time, the threshold used for determination of division and the threshold used for determination of integration may be calculated from different calculation formulas.
 図11は、リクエスト処理およびセグメント分割を示すシーケンス図である。クライアント装置300がサーバ装置100に対して、データの書き込みのリクエストを送信し、データの書き込みによってセグメント分割が発生する場合を考える。 FIG. 11 is a sequence diagram showing request processing and segment division. Consider a case where the client apparatus 300 transmits a data write request to the server apparatus 100 and segmentation occurs due to the data write.
 (ステップS31)クライアント装置300は、データの書き込みを示すリクエストをサーバ装置100に送信する。リクエストには、キーとデータが含まれる。
 (ステップS32)サーバ装置100は、自装置が有するセグメント情報からキーの属するセグメントを検索し、ラベルとハッシュ関数を用いて当該セグメントが配置されているサーバ装置(ここでは、サーバ装置100a)を特定する。そして、ライト要求のメッセージをサーバ装置100aに送信する。メッセージには、キーとデータが含まれる。
(Step S <b> 31) The client device 300 transmits a request indicating data writing to the server device 100. The request includes a key and data.
(Step S32) The server device 100 searches for the segment to which the key belongs from the segment information of the device itself, and identifies the server device (here, the server device 100a) where the segment is arranged using the label and the hash function. To do. Then, a write request message is transmitted to the server apparatus 100a. The message includes a key and data.
 (ステップS33)サーバ装置100aは、サーバ装置100から受信したメッセージに含まれるキーとデータとを対応付けて、自装置が有する記憶装置に書き込む。そして、書き込み完了を示すレスポンスをサーバ装置100に送信する。 (Step S33) The server apparatus 100a associates the key and the data included in the message received from the server apparatus 100 and writes them in the storage device of the own apparatus. Then, a response indicating the completion of writing is transmitted to the server apparatus 100.
 (ステップS34)サーバ装置100は、サーバ装置100aで書き込みが完了したことを確認すると、クライアント装置300にレスポンスを送信する。
 (ステップS35)サーバ装置100aは、データの書き込みによって、セグメントのデータ量が閾値を超えたことを検出する。すると、サーバ装置100aは、当該セグメントをb個(例えば、2個)のセグメントに更に分割する。
(Step S <b> 34) When the server apparatus 100 confirms that the writing is completed in the server apparatus 100 a, the server apparatus 100 transmits a response to the client apparatus 300.
(Step S35) The server apparatus 100a detects that the data amount of the segment has exceeded the threshold value by writing data. Then, the server apparatus 100a further divides the segment into b (for example, two) segments.
 (ステップS36)サーバ装置100aは、ラベルとハッシュ関数を用いて、分割後のセグメントが配置されるサーバ装置(ここでは、サーバ装置100a,100b)を特定する。そして、サーバ装置100bに配置されるセグメントのキーとデータをサーバ装置100bに送信する。なお、前述の通り、1つのセグメントを2つの子セグメントに分割したとき、一方の子セグメントが元のセグメントと同じサーバ装置に配置され、他の子セグメントが元のセグメントと異なるサーバ装置に配置されるようにすることもできる。 (Step S36) The server apparatus 100a specifies the server apparatus (here, the server apparatuses 100a and 100b) on which the segment after the division is arranged using the label and the hash function. And the key and data of the segment arrange | positioned at the server apparatus 100b are transmitted to the server apparatus 100b. As described above, when one segment is divided into two child segments, one child segment is placed on the same server device as the original segment, and the other child segment is placed on a server device different from the original segment. You can also make it.
 (ステップS37)サーバ装置100bは、サーバ装置100aから受信したキーとデータを対応付けて、自装置が有する記憶装置に書き込む。そして、書き込み完了を示すレスポンスをサーバ装置100aに送信する。 (Step S37) The server apparatus 100b associates the key and data received from the server apparatus 100a with each other and writes them in the storage device of the own apparatus. Then, a response indicating the completion of writing is transmitted to the server device 100a.
 (ステップS38)サーバ装置100aは、サーバ装置100bへの複製が完了したセグメントのキーとデータを、自装置が有する記憶装置から削除する。また、サーバ装置100aは、セグメントの分割が反映されるように、自装置が有するセグメント情報を更新する。そして、サーバ装置100aは、セグメントの更新を示す通知を、他の全てのサーバ装置(サーバ装置100,100b,100c)に送信する。 (Step S38) The server apparatus 100a deletes the key and data of the segment that has been copied to the server apparatus 100b from the storage device of the own apparatus. Further, the server apparatus 100a updates the segment information that the own apparatus has so that the segment division is reflected. Then, the server apparatus 100a transmits a notification indicating the segment update to all other server apparatuses ( server apparatuses 100, 100b, and 100c).
 (ステップS39)サーバ装置100,100b,100cは、サーバ装置100aからの通知に基づいて、自装置が有するセグメント情報を更新する。そして、セグメント情報の更新完了を示すレスポンスを、サーバ装置100aに送信する。これにより、サーバ装置100aによるセグメント情報の更新が、サーバ装置100,100b,100cが有するセグメント情報に反映され、セグメント情報が同期された状態となる。 (Step S39) The server apparatuses 100, 100b, and 100c update the segment information of the own apparatus based on the notification from the server apparatus 100a. Then, a response indicating that segment information has been updated is transmitted to the server device 100a. Thereby, the update of the segment information by the server apparatus 100a is reflected in the segment information which the server apparatuses 100, 100b, and 100c have, and the segment information is in a synchronized state.
 第2の実施の形態によれば、サーバ装置100,100a,100b,100cはキーとデータを対応付けて記憶し、クライアント装置300から指定されたキーについてデータ処理を行うので、データ処理の複雑性を低減でき負荷が低くなる。また、データが複数のサーバ装置に分散して記憶されると共に、何れのサーバ装置もクライアント装置300からリクエストを受け付けることができるので、ボトルネックとなる装置が生じないように設計可能であり、情報処理システムの可用性が向上する。 According to the second embodiment, the server apparatuses 100, 100a, 100b, and 100c store the keys and data in association with each other, and perform data processing for the key specified by the client apparatus 300. The load can be reduced. Moreover, since data is distributed and stored in a plurality of server devices, and any server device can accept a request from the client device 300, it can be designed so that no device becomes a bottleneck. Increases the availability of the processing system.
 また、キー空間を複数のセグメントに分割し、セグメント単位でデータがサーバ装置に配置されるので、値の近いキーに対応するデータ同士が同一のサーバ装置に記憶される確率が高くなり、キーの範囲を指定したデータ処理を効率的に実行できる。また、セグメント分割の要否は、セグメントのラベルに基づいてセグメント毎に独立に判定できるので、各サーバ装置が他のサーバ装置とネゴシエーションを行わずに判定でき、スケーラビリティを向上できる。また、セグメント分割の要否を判定するための閾値が、セグメント間で異なるように算出されるので、複数のセグメントの分割が同時期に集中する確率を低減することができ、情報処理システムの負荷を軽減できる。 In addition, since the key space is divided into a plurality of segments and the data is arranged in the server device in units of segments, there is a high probability that data corresponding to keys having similar values are stored in the same server device. Data processing with a specified range can be executed efficiently. In addition, since the necessity of segmentation can be determined independently for each segment based on the label of the segment, each server device can determine without negotiating with other server devices, and scalability can be improved. In addition, since the threshold for determining whether segment division is necessary is calculated so that it differs between segments, it is possible to reduce the probability that division of multiple segments concentrates at the same time, and the load on the information processing system Can be reduced.
 なお、前述のように、第2の実施の形態のデータ管理は、コンピュータとしてのサーバ装置100,100a,100b,100cに、それぞれデータ管理プログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体33)に記録しておくことができる。記録媒体として、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVDおよびDVD-R/RWが含まれる。 As described above, the data management of the second embodiment can be realized by causing the server apparatuses 100, 100a, 100b, and 100c as computers to execute data management programs, respectively. The program can be recorded on a computer-readable recording medium (for example, the recording medium 33). As the recording medium, for example, a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, or the like can be used. Magnetic disks include FD and HDD. Optical disks include CD, CD-R (Recordable) / RW (Rewritable), DVD, and DVD-R / RW.
 プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク41経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを記憶装置(例えば、HDD103)に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワーク41を介して受信したプログラムを直接実行してもよい。 When distributing the program, for example, a portable recording medium on which the program is recorded is provided. It is also possible to store the program in a storage device of another computer and distribute the program via the network 41. The computer stores, for example, a program recorded on a portable recording medium or a program received from another computer in a storage device (for example, HDD 103), and reads and executes the program from the storage device. However, a program read from a portable recording medium may be directly executed, or a program received from another computer via the network 41 may be directly executed.
 上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。 The above merely shows the principle of the present invention. In addition, many modifications and variations will be apparent to practitioners skilled in this art and the present invention is not limited to the precise configuration and application shown and described above, and all corresponding modifications and equivalents may be And the equivalents thereof are considered to be within the scope of the invention.
 10 情報処理装置
 11 記憶部
 12 制御部
 21,22 記憶装置
DESCRIPTION OF SYMBOLS 10 Information processing apparatus 11 Storage part 12 Control part 21, 22 Storage apparatus

Claims (6)

  1.  キーの集合を複数のセグメントに分割し、キーと対応付けて記憶装置に記憶されるデータをセグメント単位で管理する情報処理システムに用いられる情報処理装置であって、
     前記複数のセグメントのうち少なくとも第1および第2のセグメントについて、キーとセグメントとの関係を示すセグメント情報を記憶する記憶部と、
     前記セグメント情報を参照し、前記第1のセグメントに属するキーと対応付けて記憶されているデータの量と第1の閾値とに基づいて、前記第1のセグメントを2以上のセグメントに分割するか判定する制御部と、を有し、
     前記第1の閾値は、前記第2のセグメントを分割するか判定するために用いられる第2の閾値とは異なる値をとる、情報処理装置。
    An information processing apparatus used in an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with the keys in units of segments,
    A storage unit that stores segment information indicating a relationship between a key and a segment for at least a first segment and a second segment of the plurality of segments;
    Whether to divide the first segment into two or more segments based on the amount of data stored in association with the key belonging to the first segment and the first threshold with reference to the segment information A control unit for determining,
    The information processing apparatus, wherein the first threshold value is different from a second threshold value used for determining whether to divide the second segment.
  2.  前記セグメント情報は、前記第1および第2のセグメントの識別情報を含み、
     前記第1の閾値は、前記第1のセグメントの識別情報に基づいて算出され、前記第2の閾値は、前記第2のセグメントの識別情報に基づいて算出される、
     請求の範囲第1項記載の情報処理装置。
    The segment information includes identification information of the first and second segments,
    The first threshold value is calculated based on the identification information of the first segment, and the second threshold value is calculated based on the identification information of the second segment.
    The information processing apparatus according to claim 1.
  3.  前記セグメント情報は、前記複数のセグメントを階層構造で表現し、
     前記複数のセグメントそれぞれの閾値は、少なくとも同じ階層レベルのセグメント間では異なる値になるように算出される、
     請求の範囲第1項または第2項記載の情報処理装置。
    The segment information represents the plurality of segments in a hierarchical structure,
    The threshold value of each of the plurality of segments is calculated so as to be different between segments at least at the same hierarchical level.
    The information processing apparatus according to claim 1 or 2.
  4.  前記情報処理システムは、複数の記憶装置を有し、前記複数の記憶装置の中からデータを格納する記憶装置をセグメント単位で選択し、
     前記制御部は、前記第1のセグメントから分割された前記2以上のセグメントの少なくとも1つについて、データを格納する記憶装置が変更されるよう制御する、
     請求の範囲第1項乃至第3項の何れか一項に記載の情報処理装置。
    The information processing system includes a plurality of storage devices, and selects a storage device that stores data from the plurality of storage devices in units of segments.
    The control unit controls the storage device for storing data to be changed for at least one of the two or more segments divided from the first segment.
    The information processing apparatus according to any one of claims 1 to 3.
  5.  キーの集合を複数のセグメントに分割し、キーと対応付けて記憶装置に記憶されるデータをセグメント単位で管理する情報処理システムが行うデータ管理方法であって、
     前記複数のセグメントのうちの第1のセグメントに属するキーと対応付けて前記記憶装置に記憶されているデータの量を算出し、
     算出したデータの量と前記第1のセグメントに応じた第1の閾値とに基づいて、前記第1のセグメントを2以上のセグメントに分割するか判定し、
     前記第1の閾値は、前記複数のセグメントのうちの第2のセグメントを分割するか判定するために用いられる第2の閾値とは異なる値をとる、データ管理方法。
    A data management method performed by an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with keys in units of segments,
    Calculating an amount of data stored in the storage device in association with a key belonging to a first segment of the plurality of segments;
    Determining whether to divide the first segment into two or more segments based on the calculated amount of data and a first threshold according to the first segment;
    The data management method, wherein the first threshold value is different from a second threshold value used for determining whether to divide a second segment of the plurality of segments.
  6.  キーの集合を複数のセグメントに分割し、キーと対応付けて記憶装置に記憶されるデータをセグメント単位で管理する情報処理システムに用いられるコンピュータに実行させるデータ管理プログラムであって、前記コンピュータに、
     前記複数のセグメントのうちの第1のセグメントに属するキーと対応付けて前記記憶装置に記憶されているデータの量を算出し、
     算出したデータの量と前記第1のセグメントに応じた第1の閾値とに基づいて、前記第1のセグメントを2以上のセグメントに分割するか判定する、処理を実行させ、
     前記第1の閾値は、前記複数のセグメントのうちの第2のセグメントを分割するか判定するために用いられる第2の閾値とは異なる値をとる、データ管理プログラム。
    A data management program that is executed by a computer used in an information processing system that divides a set of keys into a plurality of segments and manages data stored in a storage device in association with keys in units of segments,
    Calculating an amount of data stored in the storage device in association with a key belonging to a first segment of the plurality of segments;
    Determining whether to divide the first segment into two or more segments based on the calculated amount of data and a first threshold corresponding to the first segment;
    The data management program, wherein the first threshold value is different from a second threshold value used for determining whether to divide a second segment of the plurality of segments.
PCT/JP2011/062759 2011-06-03 2011-06-03 Information processing device, data management method, and data management program WO2012164735A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2011/062759 WO2012164735A1 (en) 2011-06-03 2011-06-03 Information processing device, data management method, and data management program
JP2013517787A JP5633646B2 (en) 2011-06-03 2011-06-03 Information processing apparatus, data management method, and data management program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/062759 WO2012164735A1 (en) 2011-06-03 2011-06-03 Information processing device, data management method, and data management program

Publications (1)

Publication Number Publication Date
WO2012164735A1 true WO2012164735A1 (en) 2012-12-06

Family

ID=47258620

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/062759 WO2012164735A1 (en) 2011-06-03 2011-06-03 Information processing device, data management method, and data management program

Country Status (2)

Country Link
JP (1) JP5633646B2 (en)
WO (1) WO2012164735A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016507813A (en) * 2012-12-27 2016-03-10 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. Partition expansion method and apparatus
JP2017515215A (en) * 2014-03-31 2017-06-08 アマゾン・テクノロジーズ・インコーポレーテッド Namespace management in distributed storage systems
WO2017221857A1 (en) * 2016-06-21 2017-12-28 日本電気株式会社 Similarity calculation device and method, and recording medium
US10007450B2 (en) 2015-03-02 2018-06-26 Fujitsu Limited Storage controller, method, and storage system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007280304A (en) * 2006-04-11 2007-10-25 Brother Ind Ltd Information communication system, content catalogue information retrieval method and node device
JP2009164940A (en) * 2008-01-08 2009-07-23 Kddi Corp Relay method for relaying data packet based on identifier, repeater and program
JP2010079888A (en) * 2008-09-25 2010-04-08 Nec Lab America Inc Node splitting method and apparatus, and machine-readable medium

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007280304A (en) * 2006-04-11 2007-10-25 Brother Ind Ltd Information communication system, content catalogue information retrieval method and node device
JP2009164940A (en) * 2008-01-08 2009-07-23 Kddi Corp Relay method for relaying data packet based on identifier, repeater and program
JP2010079888A (en) * 2008-09-25 2010-04-08 Nec Lab America Inc Node splitting method and apparatus, and machine-readable medium

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MASATOSHI SEKINE ET AL.: "Adaptive Content Placement for Frequent Data Updates in P2P Network", IEICE TECHNICAL REPORT, vol. 106, no. 578, 1 March 2007 (2007-03-01), pages 197 - 202 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016507813A (en) * 2012-12-27 2016-03-10 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. Partition expansion method and apparatus
US9665284B2 (en) 2012-12-27 2017-05-30 Huawei Technologies Co., Ltd. Partition extension method and apparatus
JP2017515215A (en) * 2014-03-31 2017-06-08 アマゾン・テクノロジーズ・インコーポレーテッド Namespace management in distributed storage systems
US10007450B2 (en) 2015-03-02 2018-06-26 Fujitsu Limited Storage controller, method, and storage system
WO2017221857A1 (en) * 2016-06-21 2017-12-28 日本電気株式会社 Similarity calculation device and method, and recording medium
JPWO2017221857A1 (en) * 2016-06-21 2019-04-11 日本電気株式会社 Similar arithmetic device, method and storage medium
US11113314B2 (en) 2016-06-21 2021-09-07 Nec Corporation Similarity calculating device and method, and recording medium
JP7099316B2 (en) 2016-06-21 2022-07-12 日本電気株式会社 Similarity arithmetic units, methods, and programs

Also Published As

Publication number Publication date
JPWO2012164735A1 (en) 2014-07-31
JP5633646B2 (en) 2014-12-03

Similar Documents

Publication Publication Date Title
KR102240557B1 (en) Method, device and system for storing data
US9952753B2 (en) Predictive caching and fetch priority
US10275177B2 (en) Data layout schemas for seamless data migration
JP4648723B2 (en) Method and apparatus for hierarchical storage management based on data value
EP3637275B1 (en) Directory leasing
US8832113B2 (en) Data management apparatus and system
JP4359448B2 (en) System and method for managing file names for file system filter drivers
US9195666B2 (en) Location independent files
US20130055371A1 (en) Storage control method and information processing apparatus
EP2939145B1 (en) System and method for selectively routing cached objects
JP2012256324A (en) Data management method and hybrid data management system
US9128944B2 (en) File system enabling fast purges and file access
JP2013045378A (en) Storage control method, information processing device and program
JP5765441B2 (en) Information processing apparatus, data management method, and program
JP5633646B2 (en) Information processing apparatus, data management method, and data management program
JP4713257B2 (en) Data storage device and version management program
EP4080377A1 (en) Method to implement multi-tenant/shared redis cluster using envoy
US20170357680A1 (en) System and method for maintaining a multi-level data structure
US7509473B2 (en) Segmented storage system mapping
JP2008046700A (en) Distributed directory storage device and data processing request transfer program
US11314434B1 (en) Real-time localized data access in a distributed data storage system
CN117194439B (en) Method for creating resource storage system, electronic equipment and storage medium
JP2012185611A (en) Information management device, information management method and program

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013517787

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11866917

Country of ref document: EP

Kind code of ref document: A1