WO2013103012A1 - 情報処理装置、データ管理方法およびプログラム - Google Patents

情報処理装置、データ管理方法およびプログラム Download PDF

Info

Publication number
WO2013103012A1
WO2013103012A1 PCT/JP2012/050158 JP2012050158W WO2013103012A1 WO 2013103012 A1 WO2013103012 A1 WO 2013103012A1 JP 2012050158 W JP2012050158 W JP 2012050158W WO 2013103012 A1 WO2013103012 A1 WO 2013103012A1
Authority
WO
WIPO (PCT)
Prior art keywords
segment
data
segments
label
data belonging
Prior art date
Application number
PCT/JP2012/050158
Other languages
English (en)
French (fr)
Inventor
美穂 村田
裕一 槌本
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2012/050158 priority Critical patent/WO2013103012A1/ja
Priority to JP2013552374A priority patent/JP5765441B2/ja
Priority to EP12864659.3A priority patent/EP2801911A4/en
Publication of WO2013103012A1 publication Critical patent/WO2013103012A1/ja
Priority to US14/315,377 priority patent/US20140310321A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/2312Data placement on disk arrays

Definitions

  • the present invention relates to an information processing apparatus, a data management method, and a program.
  • a key and data are associated with each other and stored in one or more storage devices.
  • 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 of managing data in segment units by dividing a set of keys into a plurality of segments so that the data can be managed efficiently For example, a method for determining a storage device for storing data on a segment basis has been proposed. 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 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 program that can reduce a communication amount for data management in an information processing system including a plurality of storage devices.
  • an information processing device is provided that is used in an information processing system that divides a set of keys associated with stored data into a plurality of segments and manages the arrangement of data in the plurality of storage devices in units of segments. Is done.
  • the information processing apparatus includes a storage unit and a control unit.
  • the storage unit stores segment information indicating a correspondence relationship between segments and keys.
  • the control unit divides the one segment into a plurality of segments and updates the segment information according to an increase in data belonging to the one segment.
  • a data management method provided by an information processing system that divides a set of keys associated with stored data into a plurality of segments and manages the arrangement of data in a plurality of storage devices in units of segments. Is done.
  • the data management method according to an increase in data belonging to one segment, the one segment is divided into a plurality of segments, and segment information indicating the correspondence between the segment and the key is updated.
  • N N> 1
  • N satisfies a predetermined condition
  • a plurality of second segments The data belonging to at least one of the segments is allowed to move from the first storage device storing the data belonging to the first segment to the second storage device.
  • N does not satisfy the predetermined condition, movement of data belonging to the plurality of second segments is restricted.
  • a set of keys associated with stored data is divided into a plurality of segments, and is executed by a computer used in an information processing system that manages the arrangement of data in a plurality of storage devices in units of segments.
  • a program is provided. This program causes a computer to execute the following processing. As the data belonging to one segment increases, the one segment is divided into a plurality of segments, and the segment information indicating the correspondence between the segment and the key is updated.
  • a plurality of second segments are obtained by dividing N (N> 1) times once or hierarchically from the first segment, if N satisfies a predetermined condition, a plurality of second segments
  • the data belonging to at least one of the segments is allowed to move from the first storage device storing the data belonging to the first segment to the second storage device.
  • N does not satisfy the predetermined condition, movement of data belonging to the plurality of second segments is restricted.
  • FIG. 1 is a diagram illustrating the information processing apparatus according to the first embodiment.
  • the information processing apparatus 10 divides a set of keys associated with stored data into a plurality of segments, and arranges data in the storage apparatuses 20-1 to 20-n (n is a natural number of 2 or more) in units of segments. Used for information processing system to manage. Some of the storage devices 20-1 to 20-n may be storage devices 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. As shown in FIG. 1, the segments are expressed in a hierarchical structure. As the hierarchical structure, for example, a trie tree or a prefix tree is applicable.
  • the storage unit 11 may be a storage device such as a RAM (Random Access Memory) or an HDD (Hard Disk Drive).
  • the control unit 12 updates the segment information by dividing the segment into a plurality of segments in accordance with an increase in data belonging to the segment (for example, an increase in the amount of data or an increase in the number of keys in which data exists). For example, the control unit 12 refers to the segment information in the storage unit 11 and divides the segment into two or more segments based on the amount of data belonging to a certain segment or the number of keys in which data exists and a threshold value. The amount of data or the number of keys can be confirmed, for example, by accessing a storage device in which segments are arranged.
  • FIG. 1 shows an example in which one segment is hierarchically divided into two segments.
  • a circle indicates a segment, and an arrow indicates that data belonging to the segment is transferred from one storage device to another storage device.
  • N indicates a hierarchy.
  • the control unit 12 determines whether each division satisfies a predetermined division depth condition when a plurality of segments are generated by hierarchical division based on a certain segment. When the division satisfies a predetermined division depth condition, the control unit 12 transfers the data belonging to at least one of the plurality of generated segments from the storage device storing the data belonging to the original segment. It is allowed to move (transfer) to another storage device. When the division does not satisfy the predetermined division depth condition, the control unit 12 restricts movement of data belonging to the generated plurality of segments.
  • the condition of the division depth is, for example, whether or not the layer interval between the layer to which the original segment belongs and the layer to which the plurality of generated segments belong is a multiple of two or more predetermined layer intervals.
  • the division depth condition is satisfied when the hierarchical interval is a multiple of the predetermined hierarchical interval, and the division depth condition is not satisfied when the hierarchical interval is not a multiple of the predetermined hierarchical interval.
  • Information indicating the predetermined hierarchy interval is stored in the storage unit 11 in advance, for example.
  • the predetermined hierarchy interval is 2
  • the interval is 1.
  • data belonging to at least one of the plurality of segments sg5a, sg5b, sg5c, and sg5d that are grandchild segments of the segment sg3d can be transferred from the storage device storing the data belonging to the segment sg3d to another storage device.
  • Permissible. As shown in FIG. 1, for example, data belonging to segments sg5b, sg5c, and sg5d is transferred from a storage device storing data belonging to segment sg3d of n 3 to another storage device.
  • the control unit 12 may be realized as a program executed using a CPU (Central Processing Unit) and a RAM. As described above, when the control unit 12 divides a segment hierarchically and generates a plurality of segments that are descendants of the segment, when the division does not satisfy a predetermined division depth condition, The movement of the data belonging to the generated segment to another storage device is restricted.
  • a CPU Central Processing Unit
  • 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 apparatus.
  • 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.
  • server device 100 processing for determining which server device stores data corresponding to the key from the key included in the request received from the client device 300 will be described later.
  • 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 illustrating an example of a 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.
  • the PHT described in Non-Patent Document 1 (Yatin Chawathe, 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, the label “0” is assigned to the left child node of the root node, and the label “1” is assigned to the right child node.
  • a label L is given to a certain node
  • a label L + 0 is given to the left child node
  • 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. Also, as shown in FIG. 5, consider a segment management tree including five leaf nodes assigned labels “000”, “001”, “01”, “10”, and “11”. 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”. The keys 01000 to 01111 are associated with the node with the label “01”. Keys 10000 to 10111 are associated with the node with label “10”. Keys 11000 to 11111 are associated with the node with label “11”.
  • Data belonging to a segment corresponding to a leaf node of the segment management tree is stored in a storage device (for example, HDD 103 as shown in FIG. 3) in the server devices 100, 100a, 100b, and 100c.
  • a server device having a storage device that stores data belonging to a segment can make a determination 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 (hierarchy) of the segment management tree 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 having a large data amount is further dynamically 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
  • FIG. 6 is a diagram illustrating an example of a method for arranging data belonging to a segment in a server apparatus. As described above, data belonging to the segment corresponding to the leaf node of the segment management tree is arranged in any of the server devices 100, 100a, 100b, and 100c according to the label of the segment.
  • the server apparatuses 100, 100a, 100b, and 100c apply a hash function to each identification information (for example, an address) to calculate a hash value corresponding to each server apparatus.
  • the server devices 100, 100a, 100b, and 100c calculate a hash value corresponding to the segment by applying a hash function to the label of the segment or a label obtained by converting the label by a conversion method described later.
  • the server devices 100, 100a, 100b, and 100c determine the server device in which the data belonging to the segment is arranged based on the positional relationship on the loop between the hash value of each server device and the hash value of the segment. For example, the server device having the smallest hash value before the segment hash value is selected on the loop.
  • the hash value of the server device 100 is h (s1)
  • the hash value of the server device 100a is h (s2)
  • the hash value of the label “0” is h (0).
  • the segment with the label “0” is associated with the server device 100a.
  • the hash value of the server apparatus 100b is h (s3)
  • the hash value of the server apparatus 100c is h (s4)
  • the hash value of the label “001” is h (001). If h (s4)> h (001)> h (s3), the segment with the label “001” is associated with the server device 100c.
  • 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 apparatus.
  • the server device 100 includes a communication processing unit 110, a storage destination determination unit 120, an event processing unit 130, and a data storage unit 140.
  • the communication processing unit 110, the storage destination determining unit 120, and the event processing unit 130 can be realized as a program executed using the CPU 101 and the RAM 102 as shown in FIG.
  • the data storage unit 140 can be realized, for example, as a storage area on the RAM 102 or the HDD 103 as shown in FIG.
  • the server apparatuses 100a, 100b, and 100c illustrated in FIG. 2 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 transfer condition storage unit 112, a data transmission unit 113, and a message processing unit 114.
  • the request receiving unit 111 When receiving a request from the client apparatus 300 as illustrated in FIG. 2, the request receiving unit 111 notifies the message processing unit 114 of the request. Further, the request reception unit 111 acquires the data read from the data storage unit 140 or the write result to the data storage unit 140 from the message processing unit 114 and transmits it to the client device 300 as a response.
  • the transfer condition storage unit 112 is a transfer condition that determines whether or not to transfer data belonging to the divided segment from the server apparatus storing the data to another server apparatus in the segment dividing process described later.
  • the transfer conditions include, for example, how many layer intervals are allowed to transfer data belonging to a segment generated by dividing a segment hierarchically in a segment management tree as shown in FIG. It is prescribed. It can also be said that the transfer condition is a condition that defines how many generations of data belonging to a descendant node of a certain node (segment) are allowed to be transferred.
  • the transfer condition storage unit 112 can be realized as a storage area on the RAM 102 or the HDD 103 as shown in FIG.
  • the data transmission unit 113 refers to the transfer conditions stored in the transfer condition storage unit 112 during the segment dividing process. Then, when data belonging to the segment after the division is in the data storage unit 140, the data transmission unit 113 determines whether to transfer the data belonging to at least one segment after the division to another server device based on the transfer condition. To do. Further, when the data transmission unit 113 determines that the data should be transferred, the data transmission unit 113 inquires the storage destination determination unit 120 about the server device that is the storage destination of the data belonging to each segment after division. When the server device specified by the storage destination determination unit 120 is not its own server device 100, the data transmission unit 113 requests the data processing unit 131 for data to be transmitted and receives the data. Then, the data transmission unit 113 transmits the data to the server device determined by the storage destination determination unit 120.
  • 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 130 to perform data processing.
  • the message processing unit 114 transmits a segment update message to another server device in response to a request from the segment management unit 122.
  • the segment management unit 122 is requested to update the segment information.
  • the message processing unit 114 receives the request from the client device 300 received by the request receiving unit 111. If the request is a write request, the message processing unit 114 passes the key included in the request to the storage destination determination unit 120 and inquires about the server device to which the data is to be written. When the storage destination server device is the server device 100, the message processing unit 114 stores data in the data storage unit 140 via the event processing unit 130. If the storage destination is another server device, the message processing unit 114 transfers the request to the server device. If the request is a read request, the message processing unit 114 passes the key included in the request to the storage destination determination unit 120 and inquires about the server device in which the data exists. When the storage destination server device is the server device 100, the message processing unit 114 retrieves data from the data storage unit 140 via the event processing unit 130. If the storage destination is another server device, the message processing unit 114 transfers the request to the server device.
  • the storage location determination unit 120 includes a segment information storage unit 121 and a segment management unit 122.
  • the segment information storage unit 121 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 121 may store information indicating a hash function.
  • the segment information storage unit 121 can be realized as a storage area on the RAM 102 or the HDD 103.
  • the segment management unit 122 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 121. Then, the segment management unit 122 determines one or more server apparatuses in which data belonging to the searched segment is arranged from the segment label or the label converted by the method described later and the hash function. In addition, the segment management unit 122 requests the event processing unit 130 to perform data processing when the data belonging to the searched segment exists in its own server device. When the data belonging to the searched segment exists in another server device, the message processing unit 114 is requested to transmit a message to the other server device.
  • the segment management unit 122 updates the segment information stored in the segment information storage unit 121 when the event processing unit 130 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 122 updates the segment information stored in the segment information storage unit 121 in response to a request from the message processing unit 114. The segment management unit 122 receives the identification information of the server device in which the segment can be arranged from the management device 200 as setting information and holds it.
  • the event processing unit 130 includes a data processing unit 131, a calculation formula storage unit 132, a threshold value calculation unit 133, and a division determination unit 134.
  • the data processing unit 131 performs data processing in response to a request from the segment management unit 122 or the message processing unit 114. If the read request specifies a key or a key range, the data processing unit 131 reads data corresponding to the key or a data group corresponding to the key range from the data storage unit 140. If the write request specifies a key, the data processing unit 131 writes data in the data storage unit 140 in association with the key.
  • the data processing unit 131 inquires of the division determination unit 134 whether or not the segment division is necessary.
  • the division determination unit 134 determines that division is required, the data processing unit 131 performs segment division processing and reports to the segment management unit 122 that the segment has been divided. Further, the data processing unit 131 sends data belonging to one or more of the divided segments to the data transmission unit 113 in response to a request from the data transmission unit 113.
  • the calculation formula storage unit 132 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 threshold calculation formula is described by, for example, the user of the management apparatus 200 and is set in the calculation formula storage unit 132 by the management apparatus 200.
  • the calculation formula storage unit 132 can be realized, for example, as a storage area on the RAM 102 or the HDD 103 as shown in FIG.
  • the threshold calculation unit 133 calculates the threshold of the specified segment from the label of the segment specified by the division determination unit 134 and the threshold calculation formula stored in the calculation formula storage unit 132. Then, the calculated threshold value is returned to the division determination unit 134.
  • the division determination unit 134 determines whether or not it is necessary to divide the segment where the data has been written.
  • the division determination unit 134 specifies the label of the segment in which writing has been performed, and requests the threshold value calculation unit 133 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 134 refers to the data storage unit 140 and obtains the data amount or the number of data of the written segment (for example, the total amount or the total number of data associated with the key belonging to the segment). . Then, the division determination unit 134 determines that the division is necessary when the data amount or the number of data exceeds the threshold value, and determines that the division is not required when the data amount or the data number is equal to or less than the threshold value.
  • the division determination unit 134 periodically checks the amount of data or the number of data belonging to each segment, and determines that a segment whose data amount or number of data exceeds the threshold needs to be divided. Also good.
  • the data storage unit 140 stores keys and data in association with each other.
  • the data storage unit 140 may store keys and data by dividing the storage area into segments.
  • Segment division processing FIG. 8 is a flowchart showing an example of 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. 8 will be described in order of step number.
  • Step S11 The division determination unit 134 specifies the key of the data written in the data storage unit 140 by the data processing unit 131. Then, based on the segment information stored in the segment information storage unit 121, the segment corresponding to the key is searched.
  • Step S12 The threshold value calculation unit 133 substitutes the label of the segment searched in the process of step S11 for the calculation formula stored in the calculation formula storage unit 132, and calculates the threshold value of the segment.
  • the threshold calculation formula can be expressed as follows, for example.
  • th (L) represents a threshold value applied to a segment of a certain label L.
  • R represents a predetermined route threshold value
  • N represents a hierarchical interval that permits the above-described transfer.
  • b indicates 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.
  • the division determination unit 134 refers to the data storage unit 140, the data amount of the segment searched in the process of Step S11 (for example, the total amount of data associated with the key belonging to the segment) or the data Calculate the number. Then, the division determination unit 134 determines whether the data amount or the number of data exceeds the threshold value calculated in the process of step S12. When the data amount or the number of data exceeds the threshold value, the process of step S14 is performed. If the amount of data or the number of data is less than or equal to the threshold, the process ends.
  • Step S15 The data processing unit 131 selects one key belonging to the segment searched in the processing of step S11 from the data storage unit 140.
  • Step S16 The data processing unit 131 identifies a child segment having a label that matches the prefix of the key selected in the process of step S15 from the child segments defined in the process of step S14. Then, the data processing unit 131 assigns the key selected in step S15 to the identified child segment.
  • Step S17 The data processing unit 131 determines whether all keys have been selected in the process of step S15. When all the keys have been selected, the process of step S18 is performed. If there is an unselected key, the processing from step S15 is repeated.
  • Step S18 The data transmission unit 113 performs a process (data transfer determination process) for determining whether to permit data belonging to any of the plurality of child segments to be transferred to another server device. An example of the data transfer determination process will be described later. If the data transmission unit 113 determines that the data transfer is permitted, the process of step S19 is performed. If the data transmission unit 113 determines that the data transfer is not permitted, the process of step S20 is performed.
  • Step S ⁇ b> 19 The data transmission unit 113 transmits data belonging to a child segment arranged in another server device (data associated with a key belonging to the child segment) to the data storage unit via the data processing unit 131. Read from 140 and send to other server devices. When the data transmission is completed, the data transmission unit 113 notifies the data processing unit 131 that the data transmission is completed. When notified from the data transmission unit 113 that the data transmission is completed, the data processing unit 131 deletes the data of the child segment arranged in another server device from the data storage unit 140.
  • Step S20 The segment management unit 122 updates the segment information stored in the segment information storage unit 121 so that the segment division performed in the process of step S14 is reflected.
  • the message processing unit 114 notifies all other server devices of the segment update.
  • a threshold is calculated from the label of the searched write target segment, and the calculated threshold is used in the processing of step S13.
  • the threshold value calculation unit 133 may calculate the threshold value and store it in the storage unit (for example, the segment information storage unit 121) at the stage where each segment is generated.
  • the division determination unit 134 extracts the threshold corresponding to the segment searched in the process of step S11 from the storage unit and uses it in the process of step S13.
  • the threshold value may be the same value for all segments.
  • FIG. 9 is a diagram illustrating an example of a segment threshold.
  • the example of the threshold value in FIG. 9 is calculated by applying Equation (1) to the segment management tree represented by the binary tree shown in FIG.
  • the route threshold R 128 [MB] and the hierarchical interval N that allows transfer is set to 4.
  • a threshold value R 128 is set.
  • a threshold value obtained by multiplying 128 by 2 ((f ⁇ N) fractional part ) is set.
  • f 0.5 from the above-described equation (2).
  • the threshold value calculated based on the formulas (1) and (2) and the value of f are shown for the other segments.
  • the threshold value based on Expression (1) it is possible to shift the division timing in a segment belonging to a hierarchy in which transfer may occur when the division is performed.
  • the threshold value associated with the segment with label “000” is 128 [MB]
  • the threshold value associated with the segment with label “001” is 181. Considering the case where data is added at a constant rate evenly over the entire key space by applying such a threshold, the segment of label “001” is divided from the segment of label “000”. Can be delayed.
  • the threshold value of each segment is calculated according to the equation (1)
  • the segment of the lower layer is divided after the segment of the upper layer is completed. Is done. For example, after the segment with label “1” is divided, the segment with label “00” is divided. After the segment with label “11” is divided, the segment with label “000” is divided. After the segment with label “111” is divided, the segment with label “0000” is divided.
  • step S18 data transfer determination process
  • FIG. 10 is a flowchart showing an example of the data transfer determination process.
  • the server apparatus 100 performs processing is considered.
  • the server apparatuses 100a, 100b, and 100c perform the same processing as the server apparatus 100.
  • the process illustrated in FIG. 10 will be described in order of step number.
  • Step S21 The data transmission unit 113 converts the label of the child segment defined in step S14 of the flowchart shown in FIG. 8 as follows, for example. For example, there are the following two conversion methods.
  • the data transmission unit 113 refers to the hierarchical interval N that allows the transfer stored in the transfer condition storage unit 112. Then, for example, the data transmission unit 113 leaves only the multiple of N bits from the head of the label of the segment represented by a binary number, and deletes the fractional bits.
  • the data transmission unit 113 deletes consecutive 0s corresponding to multiples of N when bits corresponding to multiples of N are consecutively 0 from the LSB (Least Significant Bits) to the MSB (Most Significant Bits) of the label. To do.
  • the data transmission unit 113 applies the expression (2) to the label of the segment represented by a binary number to obtain the value of f.
  • the data transmission unit 113 may acquire and use the value obtained by the process of calculating the threshold (the process of step S12 in FIG. 8).
  • the data transmission unit 113 maintains the label value as it is. If A does not match the integer part of f ⁇ N, the A bit is deleted from the LSB of the label toward the MSB.
  • the data transmission unit 113 deletes consecutive 0s corresponding to multiples of N when bits corresponding to multiples of N are consecutively 0 from the LSB to the MSB of the label.
  • Step S22 After executing one of the above two label conversion methods, the data transmission unit 113 notifies the segment management unit 122 of the label of the child segment or the converted label, and belongs to the child segment. Queries the server device for placing data.
  • Step S23 The segment management unit 122 applies a hash function to the label of the child segment or the converted label, and calculates a hash value corresponding to the child segment. Then, as shown in FIG. 6, the segment management unit 122 determines a server device in which data belonging to the child segment is arranged based on the positional relationship on the loop between the hash value of each server device and the hash value of the segment. To do. In addition, the segment management unit 122 notifies the data transmission unit 113 of the determined server device.
  • Step S24 The data transmission unit 113 determines whether the determined server device is different from the server device that arranges data belonging to the parent segment determined in advance by the same processing as steps S21 and S22. If there is a server device determined for each of the plurality of child segments that is different from the server device that arranges data belonging to the parent segment, the process of step S25 is performed. If all the server devices determined for each of the plurality of child segments are the same as the server device that arranges the data belonging to the parent segment, the process of step S26 is performed.
  • Step S25 For the child segment in which a server device different from the server device associated with the parent segment is designated, the data transmission unit 113 transmits data belonging to the child segment from the server device associated with the parent segment. Permits transfer to the specified server device.
  • Step S26 The data transmission unit 113 does not permit data belonging to the child segment to be transferred from the server device associated with the parent segment to another server device.
  • FIG. 11 is a diagram illustrating an example of segments that are allowed to be transferred when the label conversion method 1 is applied.
  • FIG. 11 shows the same segment management tree as shown in FIG.
  • the transfer destination server device is designated by the segment management unit 122 according to the label value of each segment.
  • the data transmission unit 113 does not transfer the data belonging to the segment from the server device 100 to another server device.
  • the label conversion method 1 when the label conversion method 1 is applied, when the predetermined division depth (hierarchy interval) is not satisfied, the movement of the data belonging to the generated segment to another storage device is restricted. Thereby, it is possible to suppress an increase in the average data transfer amount during load distribution in the information processing system. For this reason, it can suppress that the data movement between the memory
  • FIG. 12 is a diagram illustrating an example of segments that are allowed to be transferred when the label conversion method 2 is applied.
  • FIG. 12 shows the same segment management tree as shown in FIG.
  • the data transmission unit 113 notifies the segment management unit 122 of the label “10”.
  • the segment management unit 122 obtains a hash value corresponding to the label “10”, determines a server device as a transfer destination of data belonging to the segment of the label “10” based on the hash value, and the data transmission unit 113. Notify If the notified server device is different from the server device 100, the data transmission unit 113 transfers the data belonging to the segment with the label “10” to the notified server device.
  • the segment management unit 122 designates the server apparatus 100 as the transfer destination in the data transmission unit 113. Therefore, movement of data belonging to those segments does not occur.
  • the data transmission unit 113 notifies the label management unit 122 of the labels “110” and “111”.
  • the segment management unit 122 obtains a hash value corresponding to the labels “110” and “111”, and based on the hash value, a server device that is a transfer destination of data belonging to the segments with the labels “110” and “111” Is transmitted to the data transmission unit 113. If the notified server device is different from the server device 100, the data transmission unit 113 transfers the data belonging to the segments with the labels “110” and “111” to the notified server device.
  • the segment management unit 122 designates the server apparatus 100 as the transfer destination in the data transmission unit 113. Therefore, movement of data belonging to those segments does not occur.
  • the integer part of f ⁇ 4 matches 0 in the segments with labels “0000” to “0011”.
  • the label “0000” is deleted because 0 continues for a multiple of N (1 times) from the LSB to the MSB.
  • the segment management unit 122 obtains hash values corresponding to the labels “(empty)” to “0111”, and based on the hash values, transfers the data belonging to the segments of the labels “(empty)” to “0111”. Is determined, and the data transmission unit 113 is notified.
  • the data transmitting unit 113 transfers the data belonging to these segments to the notified server device.
  • a segment for which data movement is allowed appears at intervals of four layers in the segment of label “10” and the descendants of labels “110” and “111”. The same applies to the descendants of the segments with labels “0001” to “0111”.
  • the segments that are allowed to transfer data are not concentrated in one hierarchy but are arranged in a plurality of hierarchies.
  • Applying the label conversion method 2 as described above can achieve the same effect as the case of applying the label conversion method 1, and can shift the timing of data transfer between a plurality of segments. It is possible to suppress the occurrence of concentration at the same time. For this reason, the load of the information processing system can be reduced.
  • the data transfer determination process as described above can be similarly performed on the other server apparatuses 100a, 100b, and 100c as shown in FIG. 2 using the segment information of each server apparatus. is there.
  • FIG. 13 is a flowchart illustrating an example of request processing.
  • the server apparatuses 100a, 100b, and 100c perform the same processing as the server apparatus 100. In the following, the process illustrated in FIG. 13 will be described in order of step number.
  • the request receiving 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 S32 The segment management unit 122 determines whether the request received in the process of step S31 specifies a key range. If it is a range designation request, the process of step S34 is performed. Otherwise, step S33 is performed.
  • the segment management unit 122 refers to the segment information stored in the segment information storage unit 121, 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 the key expressed in b base (b is an integer of 2 or more) are compared from the root node of the segment management tree toward the leaf node, and the label that matches the prefix is searched.
  • a leaf node is specified.
  • a segment corresponding to the identified leaf node is a searched segment.
  • the segment management unit 122 refers to the segment information and searches for all segments including at least one key within the range specified in 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, the segment management unit 122 identifies a plurality of leaf nodes below the identified node. A plurality of segments corresponding to the specified plurality of leaf nodes are searched segments.
  • Step S35 The segment management unit 122 converts the label of the segment searched in the process of step S33 or step S34 using any one of the label conversion methods 1 and 2 applied in the data transfer determination process. . Then, the segment management unit 122 applies a hash function to the label or the converted label, and calculates a hash value. And the segment management part 122 specifies 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 the process of step S34, a plurality of server devices may be specified. The following steps S36 to S38 are executed for each identified server device or each segment.
  • Step S36 The segment management unit 122 determines whether another server device has been identified in the process of step S35 as the server device on which the segment to be processed is arranged. When another server device is specified, the process of step S37 is performed. When the own apparatus (server apparatus 100) is specified, the process of step S38 is performed.
  • Step S37 The message processing unit 114 transmits a message indicating a read request or a write request to the other server device specified in the process of Step S35.
  • 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 S38 The data processing unit 131 performs data processing in response to a request from the client device 300.
  • a read request the data corresponding to the key or key range stored in the own device among the key or key range specified in the request is read from the data storage unit 140.
  • the key and data included in the request are associated with each other and written to the data storage unit 140.
  • Step S39 The request reception unit 111 transmits a response to the request received in step S31 to the client device 300.
  • the request is a read request
  • the data read from the own device or another server device in steps S37 and S38 is transmitted as a response.
  • the request is a write request
  • a report of the completion of writing confirmed in steps S37 and S38 is transmitted as a response.
  • FIG. 14 is a sequence diagram illustrating an example of an operation sequence of the information processing system.
  • Step S41 The client apparatus 300 transmits a request indicating data writing to the server apparatus 100.
  • the request includes a key and data.
  • Step S42 The server apparatus 100 searches for the segment to which the key belongs from the segment information of the own apparatus, and converts the label using the applied label conversion method 1 or 2. Then, the server device 100 identifies the server device (here, the server device 100a) on which the data belonging to the segment is arranged using the converted label and hash function. Then, a write request message is transmitted to the server apparatus 100a.
  • the message includes a key and data.
  • Step S43 The server device 100a associates the key and the data included in the message received from the server device 100 and writes them in the storage device of the own device. Then, a response indicating the completion of writing is transmitted to the server apparatus 100.
  • Step S ⁇ b> 44 When the server device 100 confirms that the writing is completed in the server device 100 a, the server device 100 transmits a response to the client device 300.
  • Step S45 The server apparatus 100a detects that the amount of data or the number of data in the segment has exceeded a threshold value by writing data. Then, the server apparatus 100a further divides the segment into b (for example, two) segments.
  • Step S46 The server apparatus 100a performs a data transfer determination process as shown in FIG. In the following, it is assumed that data belonging to the two segments after the division is distributed and stored in the server apparatuses 100a and 100b.
  • Step S47 The server device 100a transmits the key and data stored in the server device 100b to the server device 100b.
  • the server device 100b associates the key and the data received from the server device 100a with each other and writes them in the storage device of the own device. Then, a response indicating the completion of writing is transmitted to the server device 100a.
  • Step S49 The server device 100a deletes the data of the segment that has been copied to the server device 100b from the storage device that the device itself has. 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 S50 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.
  • 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.
  • each server apparatus can determine without negotiating with other server apparatuses, and scalability can be improved.
  • the predetermined division depth (hierarchy interval)
  • the movement of the data belonging to the generated segment to another storage device is restricted.
  • an increase in the average data transfer amount at the time of load distribution in the information processing system can be suppressed.
  • it can suppress that the data movement between the memory
  • the timing at which data transfer occurs among a plurality of segments can be shifted, and the occurrence of data transfer is prevented from concentrating at the same time. Can do. For this reason, the load of 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.
  • Storage unit 12 Control unit 20-1 to 20-n Storage device sg1, sg2a, sg2b, sg3a, sg3b, sg3c, sg3d, sg4a, sg4b, sg5a, sg5b, sg5c, sg5d segment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (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)
  • Information Transfer Between Computers (AREA)

Abstract

 複数の記憶装置を備えた情報処理システムにおけるデータ管理のための通信量を低減する。 記憶部(11)は、セグメントとキーとの対応関係を示すセグメント情報を記憶する。制御部(12)は、一のセグメントに属するデータの増加に応じて、当該一のセグメントを複数に分割し、セグメント情報を更新する。また、制御部(12)は、第1のセグメントから1回または階層的にN(N>1)回の分割によって複数の第2のセグメントが得られたときに、Nが所定の条件を満たす場合には、複数の第2のセグメントの少なくとも1つに属するデータを、第1のセグメントに属するデータを記憶していた記憶装置から他の記憶装置へ移動することを許容する。Nが所定の条件を満たさない場合には、データの移動を制限する。

Description

情報処理装置、データ管理方法およびプログラム
 本発明は情報処理装置、データ管理方法およびプログラムに関する。
 情報処理システムにおけるデータ管理方法の1つとして、キーとデータとを対応付けて1またはそれ以上の記憶装置に保存しておく方法がある。アプリケーションソフトウェアなどのソフトウェアは、例えば、キーを指定して、データの読み出し(リード)や書き込み(ライト)などのデータ操作を行う。データを複数の記憶装置に分散して保存する場合、例えば、キーとハッシュ関数を用いて、データの保存先の記憶装置を決定し、また、所望のデータが保存されている記憶装置を検索する。
 また、データを効率的に管理できるように、キーの集合を複数のセグメントに分割し、セグメント単位でデータを管理する方法がある。例えば、セグメント単位で、データの保存先の記憶装置を決定する方法が提案されている。キーの集合を複数のセグメントに分割してキーをセグメントに割り当てる方法として、例えば、PHT(Prefix Hash Tree)と呼ばれる2分木を用いる方法が提案されている。
 PHTの各ノードには、ルートノードからの深さに応じた長さの2進数がラベルとして付与される。ルートノードは、ノード0とノード1を子ノードとしてもつ。ノード0は、ノード00とノード01を子ノードとしてもつ。キーを2進数で表記したときのプレフィックス(キーの先頭から数ビットの部分)とラベルとを比較することで、各キーが何れか1つの葉ノード(子ノードをもたないノード)に割り当てられる。そして、葉ノードに相当するセグメント単位で、キーおよびデータが管理される。PHTの深さ(セグメントの分割の程度)は、例えば、管理するデータの量に応じて決定される。
Yatin Chawathe, Sriram Ramabhadran, Sylvia Ratnasamy, Anthony LaMarca, Scott Shenker and Joseph Hellerstein, "A Case Study in Building Layered DHT Applications", Proc. of the ACM SIGCOMM 2005 conference on Applications, technologies, architectures and protocols for computer communications, August 22-26, 2005.
 ところで、情報処理システムを運用するに従い、記憶装置にデータが書き込まれて、管理するデータの量が増加することがある。そこで、データをセグメント単位で管理するとき、データ量が大きくなったセグメントを、更に複数のセグメントに動的に分割することが考えられる。情報処理システムの負荷分散のため、分割によって得られた複数のセグメントの少なくとも1つについて、分割前のセグメントが割り当てられていた記憶装置から他の記憶装置にデータが移動され得る。
 しかし、セグメントが分割されるごとに記憶装置間でデータの移動が発生すると、データ管理のための通信量が増大し、本来のデータアクセスの妨げになるおそれがある、という問題がある。例えば、外部からのデータアクセスの多くがデータを追加するアクセスである場合、情報処理システム内のネットワーク上の通信量の半分が、記憶装置間でデータを移動するためのものになってしまう可能性もある。
 一つの側面では、本発明は、複数の記憶装置を備えた情報処理システムにおけるデータ管理のための通信量を低減できる情報処理装置、データ管理方法およびプログラムを提供することを目的とする。
 一実施態様では、記憶するデータに対応付けられるキーの集合を複数のセグメントに分割し、セグメント単位で複数の記憶装置へのデータの配置を管理する情報処理システムに用いられる、情報処理装置が提供される。情報処理装置は、記憶部と制御部を有する。記憶部は、セグメントとキーとの対応関係を示すセグメント情報を記憶する。制御部は、一のセグメントに属するデータの増加に応じて、当該一のセグメントを複数に分割し、セグメント情報を更新する。また、制御部は、第1のセグメントから1回または階層的にN(N>1)回の分割によって複数の第2のセグメントが得られたときに、Nが所定の条件を満たす場合には、複数の第2のセグメントの少なくとも1つに属するデータを、第1のセグメントに属するデータを記憶していた第1の記憶装置から第2の記憶装置へ移動することを許容し、Nが所定の条件を満たさない場合には、複数の第2のセグメントに属するデータの移動を制限する。
 また、一実施態様では、記憶するデータに対応付けられるキーの集合を複数のセグメントに分割し、セグメント単位で複数の記憶装置へのデータの配置を管理する情報処理システムが行うデータ管理方法が提供される。データ管理方法では、一のセグメントに属するデータの増加に応じて、当該一のセグメントを複数に分割し、セグメントとキーとの対応関係を示すセグメント情報を更新する。第1のセグメントから1回または階層的にN(N>1)回の分割によって複数の第2のセグメントが得られたときに、Nが所定の条件を満たす場合には、複数の第2のセグメントの少なくとも1つに属するデータを、第1のセグメントに属するデータを記憶していた第1の記憶装置から第2の記憶装置へ移動することを許容する。Nが所定の条件を満たさない場合には、複数の第2のセグメントに属するデータの移動を制限する。
 また、一実施態様では、記憶するデータに対応付けられるキーの集合を複数のセグメントに分割し、セグメント単位で複数の記憶装置へのデータの配置を管理する情報処理システムに用いられるコンピュータに実行させるプログラムが提供される。このプログラムは、コンピュータに、以下の処理を実行させる。一のセグメントに属するデータの増加に応じて、当該一のセグメントを複数に分割し、セグメントとキーとの対応関係を示すセグメント情報を更新する。第1のセグメントから1回または階層的にN(N>1)回の分割によって複数の第2のセグメントが得られたときに、Nが所定の条件を満たす場合には、複数の第2のセグメントの少なくとも1つに属するデータを、第1のセグメントに属するデータを記憶していた第1の記憶装置から第2の記憶装置へ移動することを許容する。Nが所定の条件を満たさない場合には、複数の第2のセグメントに属するデータの移動を制限する。
 複数の記憶装置を備えた情報処理システムにおけるデータ管理のための通信量が低減される。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の情報処理装置を示す図である。 第2の実施の形態の情報処理システムを示す図である。 サーバ装置のハードウェア例を示すブロック図である。 リクエスト処理の例を示す図である。 セグメント管理ツリーの例を示す図である。 セグメントに属するデータのサーバ装置への配置方法の例を示す図である。 サーバ装置のソフトウェア例を示すブロック図である。 セグメント分割の一例を示すフローチャートである。 セグメントの閾値の例を示す図である。 データ転送判定処理の一例を示すフローチャートである。 ラベル変換方法1を適用した場合に転送が許容されるセグメントの例を示す図である。 ラベル変換方法2を適用した場合に転送が許容されるセグメントの例を示す図である。 リクエスト処理の一例を示すフローチャートである。 情報処理システムの動作シーケンスの一例を示すシーケンス図である。
 以下、本実施の形態を図面を参照して説明する。
 [第1の実施の形態]
 図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置10は、記憶するデータに対応付けられるキーの集合を複数のセグメントに分割し、セグメント単位で記憶装置20-1~20-n(nは2以上の自然数)へのデータの配置を管理する情報処理システムに用いられる。記憶装置20-1~20-nの一部は、情報処理装置10が備える記憶装置であってもよい。情報処理装置10は、記憶部11および制御部12を有する。
 記憶部11は、セグメント情報を記憶する。セグメント情報は、キーとセグメントとの関係を示す。セグメントは、図1に示されるように、階層構造で表現される。階層構造としては、例えば、トライ(Trie)木やプレフィックス木などが適用可能である。記憶部11は、RAM(Random Access Memory)やHDD(Hard Disk Drive)などの記憶装置であってもよい。
 制御部12は、セグメントに属するデータの増加(例えば、データ量の増加あるいはデータが存在するキーの数の増加)に応じて、そのセグメントを複数に分割し、セグメント情報を更新する。例えば、制御部12は、記憶部11のセグメント情報を参照し、あるセグメントに属するデータの量あるいはデータが存在するキーの数と閾値とに基づいて、セグメントを2以上のセグメントに分割する。データ量あるいはキー数は、例えば、セグメントが配置されている記憶装置にアクセスして確認できる。
 図1では、1つのセグメントを2つのセグメントに階層的に分割していく例が示されている。丸印はセグメントを示し、矢印はそのセグメントに属するデータが、ある記憶装置から他の記憶装置に転送されることを示している。また、nは階層を示している。図1の例では、分割により、1つのセグメントから次々に2つのセグメントが生成され、n=5の階層では、16個のセグメントが生成されている。
 制御部12は、あるセグメントを基準として階層的な分割によって複数のセグメントを生成したときに、各分割が所定の分割の深さの条件を満たすか判定する。分割が所定の分割の深さの条件を満たす場合には、制御部12は、生成した複数のセグメントの少なくとも1つに属するデータを、もとのセグメントに属するデータを記憶している記憶装置から別の記憶装置へ移動(転送)することを許容する。また、分割が所定の分割の深さの条件を満たさない場合には、制御部12は、生成した複数のセグメントに属するデータの移動を制限する。
 なお、分割の深さの条件は、例えば、元のセグメントが属する階層と生成された複数のセグメントが属する階層との階層間隔が、2以上の所定階層間隔の倍数であるか否かである。階層間隔が所定階層間隔の倍数の場合には分割の深さの条件が満たされ、階層間隔が所定階層間隔の倍数ではない場合には分割の深さの条件が満たされない。所定階層間隔を示す情報は、例えば、予め記憶部11に記憶されている。
 例えば、所定階層間隔が2である場合、図1に示されるように、n=1の階層のセグメントsg1を分割していったとき、n=2の階層では、n=1の階層との階層間隔が1である。そのため、第2階層のセグメントsg2a,sg2bに属するデータの移動は制限される。
 一方、n=3の階層では、n=1の階層との階層間隔が2である。そのため、制御部12は、n=3の階層の複数のセグメントsg3a,sg3b,sg3c,sg3dの少なくとも1つに属するデータを、n=1の階層のセグメントsg1に属するデータを記憶している記憶装置から別の記憶装置へ転送することを許容する。図1に示すように、例えば、n=3の階層の3つのセグメントsg3b,sg3c,sg3dに属するデータが、n=1の階層のセグメントsg1に属するデータを記憶している記憶装置から別の記憶装置へ転送される。
 また、図1において、制御部12が、例えば、n=3の階層の一番右側に表記されているセグメントsg3dを更に分割していったとき、n=4の階層では、n=1の階層との階層間隔が3である。そのため、セグメントsg3dの子セグメントであるn=4の階層のセグメントsg4a,sg4bに属するデータの移動は制限される。一方、n=5の階層では、n=1の階層との階層間隔が4である。そのため、セグメントsg3dの孫セグメントである複数のセグメントsg5a,sg5b,sg5c,sg5dの少なくとも1つに属するデータは、セグメントsg3dに属するデータを記憶している記憶装置から別の記憶装置へ転送することが許容される。図1のように、例えば、セグメントsg5b,sg5c,sg5dに属するデータが、n=3のセグメントsg3dに属するデータを記憶している記憶装置から別の記憶装置へ転送される。
 ところで、図1に示される例では、セグメントsg3dの孫セグメントであるセグメントsg5aに属するデータは転送されないが、これは、セグメントsg3dに属するデータを記憶している記憶装置に留まることを示している。このように、あるセグメントに対する分割深さが同じ複数セグメント間で、転送を許容するものと許容しないものを区別する手法については後述する。
 なお、制御部12は、CPU(Central Processing Unit)およびRAMを用いて実行されるプログラムとして実現してもよい。
 以上のように、制御部12は、セグメントを階層的に分割して、そのセグメントの子孫である複数のセグメントを生成していく際、分割が所定の分割の深さの条件を満たさない場合は、生成されたセグメントに属するデータの他の記憶装置への移動を制限する。
 これにより、セグメントの分割のたびにデータ転送が発生することがなくなるため、情報処理システムにおける負荷分散の際のデータ転送量の増加を抑制できる。このため、負荷分散時の記憶装置間でのデータ移動によって、ユーザによる情報処理システムへのデータアクセスなどの妨げになることを抑制できる。
 [第2の実施の形態]
 図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、サーバ装置100,100a,100b,100c、管理装置200およびクライアント装置300を含む。サーバ装置100,100a,100b,100cおよび管理装置200は、ネットワーク41に接続されている。クライアント装置300は、ネットワーク42に接続されている。第2の実施の形態の情報処理システムは、いわゆるクラウドシステムとして実現してもよい。
 サーバ装置100,100a,100b,100cは、データを分散管理するサーバコンピュータである。サーバ装置100,100a,100b,100cは、データを識別するためのキーとデータとを対応付けて記憶し、また、キーからデータが記憶されているサーバ装置を検索するためのセグメント情報を保持している。何れのサーバ装置も、クライアント装置300からデータ処理のリクエストを受け付けることができる。キーを含むリクエストを受け付けたサーバ装置は、処理対象のデータが記憶されているサーバ装置をセグメント情報に基づいて検索し、検索されたサーバ装置にデータ処理を依頼する。
 管理装置200は、ユーザ(例えば、情報処理システムの管理者)が使用するコンピュータである。管理装置200は、ユーザ操作に基づいて、サーバ装置100,100a,100b,100cを管理する。例えば、管理装置200は、データを記憶するサーバ装置が情報処理システムに追加されるとき、追加されるサーバ装置の情報をサーバ装置100,100a,100b,100cに送信する。また、データの分散配置を調整するための設定情報を、サーバ装置100,100a,100b,100cに送信する。
 クライアント装置300は、ユーザ(例えば、クラウドサービスの利用者)が使用するコンピュータである。クライアント装置300では、例えば、サーバ装置100,100a,100b,100cに記憶されるデータを扱うアプリケーションソフトウェアが実行される。クライアント装置300は、ネットワーク41,42を介して、サーバ装置100,100a,100b,100cのうちの任意のサーバ装置に、データ処理のリクエストを送信する。リクエストでは、1つのキーまたはキーの範囲が指定される。データ処理には、データの読み出し(リード)や書き込み(ライト)が含まれる。
 何れのサーバ装置がクライアント装置300からリクエストを受信しても、サーバ装置100,100a,100b,100cの間でメッセージを伝送することで、要求されたデータ処理が実行される。このように、第2の実施の形態の情報処理システムは、できる限りデータ処理のボトルネックとなる装置が生じないように設計することが可能であり、可用性や応答性能などを向上させることができる。
 (サーバ装置のハードウェア例)
 図3は、サーバ装置のハードウェア例を示すブロック図である。サーバ装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信部107を有する。上記ユニットは、サーバ装置100内でバスに接続されている。なお、サーバ装置100a,100b,100c、管理装置200およびクライアント装置300も、サーバ装置100と同様のハードウェアによって実現できる。
 CPU101は、サーバ装置100における情報処理を制御する演算装置である。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部を読み出してRAM102に展開し、プログラムを実行する。なお、サーバ装置100は、複数の演算装置を備えて、情報処理を分散して実行してもよい。
 RAM102は、CPU101が扱うプログラムやデータを一時的に記憶しておく揮発性メモリである。なお、サーバ装置100は、RAM以外の種類のメモリを備えていてもよく、複数個のメモリを備えてもよい。
 HDD103は、OS(Operating System)プログラムやアプリケーションプログラムなどのプログラム、および、情報処理に用いられるデータを記憶する不揮発性の記憶装置である。HDD103は、CPU101の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、サーバ装置100は、HDD以外の不揮発性の記憶装置(例えば、SSD(Solid State Drive))を備えていてもよく、複数の記憶装置を備えてもよい。
 画像信号処理部104は、CPU101の命令に従って、サーバ装置100に接続されたディスプレイ31に画像を出力する。ディスプレイ31として、例えば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
 入力信号処理部105は、サーバ装置100に接続された入力デバイス32から入力信号を取得し、CPU101に出力する。入力デバイス32として、例えば、マウスやタッチパネルなどのポインティングデバイスや、キーボードなどを用いることができる。
 ディスクドライブ106は、記録媒体33に記録されたプログラムやデータを読み取る駆動装置である。記録媒体33として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体33から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
 通信部107は、ネットワーク41に接続して通信を行う通信インタフェースである。ネットワーク41への接続方法は、有線でも無線でもよい。すなわち、通信部107は、有線通信インタフェースでも無線通信インタフェースでもよい。
 (情報処理システムへのリクエスト例)
 図4は、リクエスト処理の例を示す図である。図4では、リクエストとして、(A)単一のキーを指定したリード要求、(B)キーの範囲を指定したリード要求、(C)ライト要求の例を挙げている。サーバ装置100aは、キーとデータの組(key,value)として、(2,data2),(3,data3)を記憶し、サーバ装置100cは、(4,data4),(5,data5)を記憶しているとする。
 (A)サーバ装置100は、キー2を指定したリード要求get(2)をクライアント装置300から受信すると、キー2に対応するデータがサーバ装置100aに記憶されていると判定する。そして、キー2に対するリード要求を示すメッセージをサーバ装置100aに送信する。サーバ装置100aは、data2をサーバ装置100に送信する。サーバ装置100は、data2をクライアント装置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に送信する。
 (C)サーバ装置100は、キー1を指定したライト要求set(1,data1)をクライアント装置300から受信すると、キー1に対応するデータはサーバ装置100aに記憶されるものであると判定する。そして、キー1に対するライト要求を示すメッセージをサーバ装置100aに送信する。サーバ装置100aは、data1を自身の記憶装置に書き込み、サーバ装置100に書き込み完了を報告する。サーバ装置100は、書き込み完了をクライアント装置300に報告する。
 なお、サーバ装置100において、クライアント装置300から受信したリクエストに含まれるキーから、そのキーに対応するデータがどのサーバ装置に格納されているかなどを判定する処理については後述する。
 このように、サーバ装置100,100a,100b,100cは、キーとデータとを対応付けて保持し、キー単位で記憶装置からのデータの読み出しや記憶装置へのデータの書き込みを行う。処理対象のキーは、例えば、クライアント装置300で実行されるアプリケーションソフトウェアによって指定される。よって、サーバ装置100,100a,100b,100cのデータ処理の複雑性が抑えられ、負荷が軽減される。
 ライト要求で指定されたキーに対応するデータがまだ存在しない場合、当該ライト要求はデータの追加を意味する。一方、ライト要求で指定されたキーに対応するデータが既に存在する場合、当該ライト要求はデータの上書きを意味する。キーに対応するデータが存在するか否かの確認や上書き可否の判断は、例えば、クライアント装置300で実行されるアプリケーションソフトウェアの責任で行われる。第2の実施の形態の情報処理システムは、例えば、時刻をキーとするデータ(例えば、ログデータ)の管理に利用できる。
 (セグメント管理ツリーの例)
 図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を用いてもよい。
 セグメント管理ツリーでは、キー空間が、セグメントと呼ばれる区間に階層的に分割される。セグメント管理ツリーの各ノードがセグメントに相当する。各ノードには、当該ノードの深さに応じた長さのラベルが付与される。例えば、ルートノードの左の子ノードにラベル“0”が付与され、右の子ノードにラベル“1”が付与される。また、あるノードにラベルLが付与されているとき、左の子ノードにラベルL+0、右の子ノードにラベルをL+1が付与される。キー空間に含まれる各キーは、当該キーのプレフィックスに一致するラベルが付与された何れか1つの葉ノード(子ノードをもたないノード)に対応付けられる。
 一例として、キーが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”のノードに対応付けられる。
 セグメント管理ツリーの葉ノードに相当するセグメントに属するデータは、サーバ装置100,100a,100b,100c内の記憶装置(例えば、図3に示したようなHDD103)に記憶される。セグメントに属するデータを記憶する記憶装置を有するサーバ装置は、例えば、当該セグメントのラベルにハッシュ関数を適用して算出されるハッシュ値に基づいて決定することができる。
 このように、セグメント単位でデータを配置するサーバ装置を決定することで、キーのローカリティを維持することができ、値の近いキーに対応付けられるデータ同士ができる限り同じサーバ装置に配置されるようになる。このため、範囲指定のリード要求など、範囲指定のデータ処理を効率的に実行できるようになる。セグメント管理ツリーの深さ(階層)は、サーバ装置100,100a,100b,100cに記憶されたデータの量に応じて動的に調整される。後述するように、データ量の大きくなったセグメントは、更に複数のセグメントに動的に分割される。
 なお、以上の説明では、セグメント管理ツリーの例として2分木を用いたが、任意の分岐数のツリーを用いてもよい。葉ノード以外の各ノードがそれぞれb個(bは2以上の整数)の子ノードを有する場合、各ノードにはb進数のラベルを付与すればよい。例えば、b=3の場合、ルートノードはラベル“0”,“1”,“2”の子ノードを有する。また、ラベル“0”のノードは、ラベル“00”,“01”,“02”の子ノードを有する。キーをセグメントに対応付けるときは、キーをb進数に変換して、キーのプレフィックスとラベルを比較すればよい。
 (複数のサーバ装置へのデータの配置方法の例)
 図6は、セグメントに属するデータのサーバ装置への配置方法の例を示す図である。前述の通り、セグメント管理ツリーの葉ノードに対応するセグメントに属するデータは、当該セグメントのラベルに応じてサーバ装置100,100a,100b,100cの何れかに配置される。
 ここでは、ハッシュ関数の値域(ハッシュ値が取り得る値)を0~2n-1(nは自然数)とし、値域をループ状にしたハッシュ値の空間を考える。サーバ装置100,100a,100b,100cは、それぞれの識別情報(例えば、アドレス)にハッシュ関数を適用して、各サーバ装置に対応するハッシュ値を算出する。また、サーバ装置100,100a,100b,100cは、セグメントのラベルまたは、そのラベルを後述の変換方法で変換したラベルにハッシュ関数を適用して、当該セグメントに対応するハッシュ値を算出する。そして、サーバ装置100,100a,100b,100cは、各サーバ装置のハッシュ値とセグメントのハッシュ値のループ上での位置関係に基づいて、当該セグメントに属するデータを配置するサーバ装置を決定する。例えば、ループ上で、セグメントのハッシュ値より先にある最小のハッシュ値をもつサーバ装置が選択される。
 例えば、サーバ装置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に対応付ける。
 ただし、サーバ装置100,100a,100b,100cへのセグメントの配置方法は、上記方法に限定されない。例えば、セグメントのラベルから算出されたハッシュ値をサーバ装置の数で割って余り(剰余)を求め、剰余に応じてセグメントを配置するサーバ装置を選択する方法が考えられる。例えば、ハッシュ値を4で割り、剰余=0のときはサーバ装置100、剰余=1のときはサーバ装置100a、剰余=2のときはサーバ装置100b、剰余=3のときはサーバ装置100cが選択される。
 (サーバ装置のソフトウェア例)
 図7は、サーバ装置のソフトウェア例を示すブロック図である。
 サーバ装置100は、通信処理部110、格納先決定部120、イベント処理部130およびデータ記憶部140を有する。通信処理部110、格納先決定部120、イベント処理部130は、例えば、図3に示したようなCPU101およびRAM102を用いて実行されるプログラムとして実現できる。データ記憶部140は、例えば、図3に示したようなRAM102やHDD103上の記憶領域として実現できる。図2に示したサーバ装置100a,100b,100cも、サーバ装置100と同様のブロック構成によって実現できる。
 通信処理部110は、リクエスト受信部111、転送条件記憶部112、データ送信部113、メッセージ処理部114を有する。
 リクエスト受信部111は、図2に示したようなクライアント装置300からリクエストを受信すると、そのリクエストをメッセージ処理部114に通知する。また、リクエスト受信部111は、データ記憶部140から読み出されたデータまたはデータ記憶部140への書き込み結果をメッセージ処理部114から取得し、レスポンスとしてクライアント装置300に送信する。
 転送条件記憶部112は、後述するセグメントの分割処理の際に、分割したセグメントに属するデータを、そのデータを記憶しているサーバ装置から他のサーバ装置に転送するか否かを決める転送条件の情報を記憶する。転送条件には、例えば、図5に示したようなセグメント管理ツリーにおいて、あるセグメントから階層的に分割されて生成されるセグメントに属するデータに対して、何階層間隔ごとに転送を許容するかが規定されている。転送条件は、あるノード(セグメント)の子孫ノードに属するデータを、何世代間隔ごとに転送を許容するか規定する条件である、ということもできる。なお、転送条件記憶部112は、例えば、図3に示したような、RAM102またはHDD103上の記憶領域として実現できる。
 データ送信部113は、セグメントの分割処理の際に、転送条件記憶部112に記憶されている転送条件を参照する。そして、データ送信部113は、分割後のセグメントに属するデータがデータ記憶部140にある場合、転送条件に基づいて、分割後の少なくとも1つのセグメントに属するデータを他のサーバ装置に転送すべきか判定する。さらにデータ送信部113は、転送すべきと判定したとき、格納先決定部120に分割後の各セグメントに属するデータの格納先となるサーバ装置を問い合わせる。格納先決定部120で指定されたサーバ装置が自身のサーバ装置100ではない場合には、データ送信部113は、送信すべきデータをデータ処理部131に要求して、そのデータを受信する。そして、データ送信部113は、そのデータを格納先決定部120で決定されたサーバ装置に送信する。
 メッセージ処理部114は、他のサーバ装置(サーバ装置100a,100b,100c)との間でメッセージを送受信する。メッセージ処理部114は、他のサーバ装置からリード要求やライト要求のメッセージを受信すると、イベント処理部130にデータ処理を依頼する。また、メッセージ処理部114は、例えば、セグメントの分割処理が発生した際に、セグメント管理部122からの依頼に応じて、他のサーバ装置にセグメント更新のメッセージを送信する。また、他のサーバ装置からセグメント更新のメッセージを受信すると、セグメント管理部122にセグメント情報の更新を依頼する。
 また、メッセージ処理部114は、リクエスト受信部111で受信されたクライアント装置300からのリクエストを受け取る。リクエストがライト要求の場合、メッセージ処理部114は、リクエストに含まれるキーを格納先決定部120に渡し、データを書き込むサーバ装置を問い合わせる。格納先のサーバ装置がサーバ装置100である場合には、メッセージ処理部114は、データを、イベント処理部130を介してデータ記憶部140に格納する。格納先が他のサーバ装置である場合には、メッセージ処理部114は、そのサーバ装置にリクエストを転送する。リクエストがリード要求の場合、メッセージ処理部114は、リクエストに含まれるキーを格納先決定部120に渡し、データが存在するサーバ装置を問い合わせる。格納先のサーバ装置がサーバ装置100である場合には、メッセージ処理部114は、イベント処理部130を介してデータ記憶部140からデータを取り出す。格納先が他のサーバ装置である場合には、メッセージ処理部114は、そのサーバ装置にリクエストを転送する。
 格納先決定部120は、セグメント情報記憶部121とセグメント管理部122を有する。
 セグメント情報記憶部121は、図5のようなセグメント管理ツリーを記載したセグメント情報を記憶する。セグメント情報は、セグメントの分割に伴って更新される。セグメント情報記憶部121は、ハッシュ関数を示す情報を記憶してもよい。なお、セグメント情報記憶部121は、RAM102またはHDD103上の記憶領域として実現できる。
 セグメント管理部122は、セグメント情報記憶部121に記憶されたセグメント情報に基づいて、リクエストで指定されたキーまたはキーの範囲に対応する1またはそれ以上のセグメントを検索する。そして、セグメント管理部122は、セグメントのラベルまたは後述の方法で変換したラベルとハッシュ関数から、検索されたセグメントに属するデータが配置されている1またはそれ以上のサーバ装置を判定する。また、セグメント管理部122は、検索されたセグメントに属するデータが自サーバ装置にある場合、イベント処理部130にデータ処理を依頼する。検索されたセグメントに属するデータが他のサーバ装置にある場合、メッセージ処理部114に当該他のサーバ装置へのメッセージの送信を依頼する。
 さらに、セグメント管理部122は、イベント処理部130からセグメントを分割した旨の報告があると、セグメント情報記憶部121に記憶されたセグメント情報を更新する。そして、セグメントの更新を示すメッセージを他のサーバ装置に送信するよう、メッセージ処理部114に依頼する。また、セグメント管理部122は、メッセージ処理部114からの依頼に応じて、セグメント情報記憶部121に記憶されたセグメント情報を更新する。なお、セグメント管理部122は、セグメントが配置され得るサーバ装置の識別情報を、設定情報として管理装置200から受信して保持している。
 イベント処理部130は、データ処理部131、算出式記憶部132、閾値算出部133および分割判定部134を有する。
 データ処理部131は、セグメント管理部122またはメッセージ処理部114からの依頼に応じて、データ処理を行う。キーまたはキーの範囲を指定したリード要求である場合、データ処理部131は、キーに対応するデータまたはキーの範囲に対応するデータ群をデータ記憶部140から読み出す。キーを指定したライト要求である場合、データ処理部131は、キーに対応付けてデータをデータ記憶部140に書き込む。
 また、データ処理部131は、データをデータ記憶部140に書き込んだ場合、セグメントの分割の要否を分割判定部134に問い合わせる。分割判定部134で分割を要すると判定された場合、データ処理部131は、セグメントの分割処理を行い、セグメントを分割した旨をセグメント管理部122に報告する。さらに、データ処理部131は、データ送信部113の要求に応じて、分割されたセグメントの1つまたは複数に属するデータを、データ送信部113に送る。
 算出式記憶部132は、セグメントを分割するか判定するための閾値を算出する算出式を記憶する。閾値は、後述するように、分割の要否を判定するセグメントのラベルに基づいて算出される。閾値の算出式は、例えば、管理装置200のユーザが記述し、管理装置200が算出式記憶部132に設定する。なお、算出式記憶部132は、例えば、図3に示したような、RAM102またはHDD103上の記憶領域として実現できる。
 閾値算出部133は、分割判定部134から指定されたセグメントのラベルと、算出式記憶部132に記憶された閾値の算出式から、指定されたセグメントの閾値を算出する。そして、算出した閾値を分割判定部134に回答する。
 分割判定部134は、データ処理部131からの問い合わせに応じて、データの書き込みが行われたセグメントの分割の要否を判定する。分割判定部134は、書き込みが行われたセグメントのラベルを指定して、閾値算出部133に閾値の算出を依頼する。セグメントのラベルは、例えば、セグメント情報を参照して、ライト要求で指定されたキーから求める。また、分割判定部134は、データ記憶部140を参照して、書き込みが行われたセグメントのデータ量あるいはデータ数(例えば、当該セグメントに属するキーに対応付けられたデータの総量または総数)を求める。そして、分割判定部134は、データ量あるいはデータ数が閾値を超える場合、分割を要すると判定し、データ量あるいはデータ数が閾値以下の場合、分割を要しないと判定する。
 なお、分割判定部134は、定期的に、各セグメントに属するデータ量あるいはデータ数をチェックし、データ量あるいはデータ数が閾値を超えているセグメントに対して、分割を要すると判定するようにしてもよい。
 データ記憶部140は、キーとデータを対応付けて記憶する。データ記憶部140は、記憶領域をセグメント毎に分割して、キーとデータを記憶してもよい。
 (セグメント分割処理)
 図8は、セグメント分割の一例を示すフローチャートである。ここでは、サーバ装置100が処理を行う場合を考える。サーバ装置100a,100b,100cも、サーバ装置100と同様の処理を行う。以下、図8に示す処理をステップ番号に沿って説明する。
 (ステップS11)分割判定部134は、データ処理部131がデータ記憶部140に書き込んだデータのキーを特定する。そして、セグメント情報記憶部121に記憶されたセグメント情報に基づいて、キーに対応するセグメントを検索する。
 (ステップS12)閾値算出部133は、算出式記憶部132に記憶された算出式に、ステップS11の処理で検索されたセグメントのラベルを代入し、当該セグメントの閾値を算出する。閾値の算出式は、例えば、以下のように表せる。
 閾値th(L)=R×2((f×N)ノ小数部)     (1)
 f=value(L)/blength(L)     (2)
 式(1)において、th(L)は、あるラベルLのセグメントに適用する閾値を示している。また、Rは所定のルート閾値、Nは前述した転送を許容する階層間隔を示している。式(2)において、bはセグメント管理ツリーの分岐数を示す。また、length(L)はラベルのビット数を示し、value(L)はラベルLが表す10進数表現の値を示す。
 (ステップS13)分割判定部134は、データ記憶部140を参照して、ステップS11の処理で検索したセグメントのデータ量(例えば、当該セグメントに属するキーに対応付けられているデータの総量)あるいはデータ数を算出する。そして、分割判定部134は、データ量あるいはデータ数がステップS12の処理で算出された閾値を超えているか判断する。データ量あるいはデータ数が閾値を超える場合、ステップS14の処理が行われる。データ量あるいはデータ数が閾値以下の場合、処理が終了する。
 (ステップS14)セグメント管理部122は、ステップS11の処理で検索されたセグメントを分割して得られるb個の子セグメントを定義する。例えば、セグメントのラベルがLでありb=2の場合、セグメント管理部122は、ラベルL+0,L+1の子セグメントを定義する。
 (ステップS15)データ処理部131は、データ記憶部140から、ステップS11の処理で検索されたセグメントに属するキーを1つ選択する。
 (ステップS16)データ処理部131は、ステップS14の処理で定義された子セグメントの中から、ステップS15の処理で選択したキーのプレフィックスと一致するラベルをもつ子セグメントを特定する。そして、データ処理部131は、ステップS15の処理で選択したキーを、特定した子セグメントに割り当てる。
 (ステップS17)データ処理部131は、ステップS15の処理で全てのキーを選択したか判断する。全てのキーが選択された場合、ステップS18の処理が行われる。未選択のキーが存在する場合、ステップS15からの処理が繰り返される。
 (ステップS18)データ送信部113は、複数の子セグメントの何れかに属するデータを他のサーバ装置に転送することを許可するか判定する処理(データ転送判定処理)を行う。データ転送判定処理の一例については後述する。データ送信部113が、データ転送を許可すると判定した場合にはステップS19の処理が行われ、データ転送を許可しないと判定した場合にはステップS20の処理が行われる。
 (ステップS19)データ送信部113は、他のサーバ装置に配置される子セグメントに属するデータ(当該子セグメントに属するキーと対応付けられているデータ)を、データ処理部131を介してデータ記憶部140から読み出し、他のサーバ装置に送信する。データの送信が完了すると、データ送信部113は、データ処理部131に対してデータの送信が完了した旨を通知する。データ処理部131は、データ送信部113からデータの送信が完了したことを通知されると、他のサーバ装置に配置される子セグメントのデータをデータ記憶部140から削除する。
 (ステップS20)セグメント管理部122は、ステップS14の処理で実施されたセグメント分割が反映されるように、セグメント情報記憶部121に記憶されているセグメント情報を更新する。メッセージ処理部114は、セグメントの更新を他の全てのサーバ装置に通知する。
 なお、上記の分割処理では、ライト対象のセグメントを分割する例を示したが、定期的に現在のセグメント管理ツリーの最下層の各セグメントに属するデータ量またはデータ数と閾値との比較結果に応じて分割処理を実施するようにしてもよい。
 また、上記の分割処理では、検索されたライト対象のセグメントのラベルから閾値を算出し、算出した閾値をステップS13の処理で使用していたが、これに限定されない。例えば、各セグメントが生成された段階で、閾値算出部133が閾値を算出し、記憶部(例えば、セグメント情報記憶部121)に記憶しておくようにしてもよい。その場合、分割判定部134は、ステップS11の処理で検索されたセグメントに対応する閾値を記憶部から取り出して、ステップS13の処理で使用する。また、閾値は、全セグメントで同一の値としてもよい。
 図9は、セグメントの閾値の例を示す図である。図9の閾値の例は、図5に示した2分木で表現されたセグメント管理ツリーに式(1)を適用して算出したものである。
 ただし、図9の例では、ルート閾値R=128[MB]、転送を許容する階層間隔N=4としている。
 各階層レベル(n=1~5)の左端ノード(ルートノード(ラベル“Φ”)およびラベル“0”,“00”,“000”,“0000”のノード)に対応するセグメントには、ルート閾値R=128が設定される。左端ノード以外のノードに対応するセグメントには、128を2((f×N)ノ小数部)倍した閾値が設定される。
 例えば、ラベル“1”のセグメントでは、前述した式(2)からf=0.5となる。式(1)では、f×N=0.5×4=2.0であり、小数部は0であるから、閾値th(“1”)=128×20=128[MB]となる。
 また、ラベル“111”のセグメントでは、前述した式(2)からf=7/23=0.875となる。式(1)では、f×N=0.875×4=3.5であり、小数部は0.5であるから、閾値th(“111”)=128×20.5≒181[MB]となる。
 図9には、他のセグメントについても式(1),(2)に基づいて算出された閾値とfの値が表記されている。
 式(1)に基づいて閾値を算出することで、分割したときに転送が生じる可能性がある階層に属するセグメントにおいて、分割されるタイミングをずらすことができる。図9に示したようなセグメント管理ツリーにおいて、転送を許容する階層間隔N=4としているので、例えば、n=4の階層のラベル“000”,“001”のセグメントは、分割されたときに転送が生じる可能性がある(詳細は後述する)。ラベル“000”のセグメントに対応づけられた閾値が128[MB]で、ラベル“001”のセグメントに対応づけられた閾値が181である。このような閾値を適用することで、キー空間全体に対して均等に一定の速度でデータが追加される場合を考えると、ラベル“000”のセグメントに対して、ラベル“001”のセグメントの分割されるタイミングを遅らせることができる。
 また、式(1)に従って各セグメントの閾値を算出すると、データがキー空間に対して均等に追加される場合には、上位の階層のセグメントの分割が完了した後に、下位の階層のセグメントの分割が行われる。例えば、ラベル“1”のセグメントが分割された後に、ラベル“00”のセグメントが分割される。ラベル“11”のセグメントが分割された後に、ラベル“000”のセグメントが分割される。ラベル“111”のセグメントが分割された後に、ラベル“0000”のセグメントが分割される。
 (データ転送判定処理)
 図8のフローチャートにおけるステップS18の処理(データ転送判定処理)の例を説明する。
 図10は、データ転送判定処理の一例を示すフローチャートである。ここでも、サーバ装置100が処理を行う場合を考える。サーバ装置100a,100b,100cも、サーバ装置100と同様の処理を行う。以下、図10に示す処理をステップ番号に沿って説明する。
 (ステップS21)データ送信部113は、図8に示したフローチャートのステップS14の処理で定義された子セグメントのラベルを、例えば、以下のようにして変換する。変換手法としては、例えば、以下の2通りがある。
 (ラベル変換方法1)
 データ送信部113は、転送条件記憶部112に格納されている転送を許容する階層間隔Nを参照する。そして、データ送信部113は、例えば、2進数で表されるセグメントのラベルの先頭から、Nの倍数のビットだけ残し、端数のビットを削除する。
 例えば、N=4とした場合、上記変換方法によれば、図9に示したようなセグメント管理ツリーでは、n=1~4の階層のセグメントにおけるラベルの値は削除され、n=5の階層のセグメントのラベルは全てのビットが残る。
 さらに、データ送信部113は、ラベルのLSB(Least Significant Bit)からMSB(Most Significant Bit)に向かってNの倍数分のビットが連続して0の場合、Nの倍数分の連続する0を削除する。
 例えば、N=4とした場合、ラベル“11110000”はラベル“1111”に変換され、ラベル“10100000000”はラベル“101”に変換される。
 (ラベル変換方法2)
 データ送信部113は、例えば、2進数で表されるセグメントのラベルに対して、式(2)を適用してfの値を求める。なお、fの値は、閾値を算出する処理(図8のステップS12の処理)で求められたものを、データ送信部113が取得して用いるようにしてもよい。
 データ送信部113は、ラベルのビット数をNで割った余り(A)がf×Nの整数部に一致する場合は、ラベルの値をそのまま維持する。Aがf×Nの整数部に一致しない場合には、そのラベルのLSBからMSBに向かってAビットを削除する。
 また、ラベル変換方法1と同様に、データ送信部113は、ラベルのLSBからMSBに向かってNの倍数分のビットが連続して0の場合、Nの倍数分の連続する0を削除する。
 (ステップS22)データ送信部113は、上記の2つのラベル変換方法の何れかを実行した後、セグメント管理部122に対して、子セグメントのラベルまたは変換されたラベルを通知し、子セグメントに属するデータを配置するサーバ装置を問い合わせる。
 (ステップS23)セグメント管理部122は、子セグメントのラベルまたは変換されたラベルにハッシュ関数を適用して、その子セグメントに対応するハッシュ値を算出する。そして、セグメント管理部122は、図6に示したように、各サーバ装置のハッシュ値とセグメントのハッシュ値のループ上での位置関係に基づいて、その子セグメントに属するデータを配置するサーバ装置を決定する。また、セグメント管理部122は、決定したサーバ装置をデータ送信部113に通知する。
 (ステップS24)データ送信部113は、決定されたサーバ装置が、予め、ステップS21,S22と同様の処理により決定されている親セグメントに属するデータを配置するサーバ装置と異なっているか判定する。複数の子セグメントのそれぞれについて決定されたサーバ装置の中に、親セグメントに属するデータを配置するサーバ装置と異なっているものがある場合には、ステップS25の処理が行われる。複数の子セグメントのそれぞれについて決定されたサーバ装置が全て、親セグメントに属するデータを配置するサーバ装置と同じであれば、ステップS26の処理が行われる。
 (ステップS25)データ送信部113は、親セグメントに対応付けられたサーバ装置と異なるサーバ装置が指定された子セグメントに対して、その子セグメントに属するデータを親セグメントに対応付けられたサーバ装置から、指定されたサーバ装置に転送することを許可する。
 (ステップS26)データ送信部113は、子セグメントに属するデータを、親セグメントに対応付けられたサーバ装置から他のサーバ装置へ転送することを許可しない。
 (ラベル変換方法1の適用例)
 図11は、ラベル変換方法1を適用した場合に転送が許容されるセグメントの例を示す図である。図11では、図9に示したセグメント管理ツリーと同様のものが示されている。
 なお、以下では、n=1のセグメントに属するデータがサーバ装置100のデータ記憶部150に格納されるものとして説明する。矢印が付加されているセグメントは、そのセグメントに属するデータが、サーバ装置100から、他のサーバ装置へ転送が許容されるセグメントであることを示している。
 転送を許容する階層間隔N=4として、上記のラベル変換方法1を適用した場合、前述のようにn=1~n=4の階層のセグメントのラベルを一部削除した値でハッシュ値を算出するため、ハッシュ値は同じ値となる。そのため、セグメント管理部122は、転送先として同じサーバ装置100をデータ送信部113に指定する。そのため、n=1~n=4の階層のセグメントに属するデータの移動は発生しない。
 n=5の階層では、ラベル“0000”のセグメントについては、上記のラベル変換方法1により全ての“0”が削除されるため、同じサーバ装置100が指定される。n=5の階層のその他のセグメントについては、各セグメントのラベルの値に応じてセグメント管理部122で転送先のサーバ装置が指定される。ただし、サーバ装置の数などによっては、セグメント管理部122で同じサーバ装置100が指定されるセグメントが生じる場合もある。その場合には、データ送信部113は、そのセグメントに属するデータを、サーバ装置100から他のサーバ装置に転送しない。
 図11に示すようなセグメント管理ツリーにおいて、更にセグメントの分割を進めていったとき、N=4として、ラベル変換方法1を適用すると、4階層間隔ごとに、転送が許可されるセグメントが現れる。
 このように、ラベル変換方法1を適用すると、所定の分割深さ(階層間隔)が満たされない場合は、生成されたセグメントに属するデータの他の記憶装置への移動が制限される。これにより、情報処理システムにおける負荷分散の際の平均データ転送量の増加を抑制できる。このため、負荷分散時の記憶装置間でのデータ移動によって、ユーザによる情報処理システムへのデータアクセスなどの妨げになることを抑制できる。
 (ラベル変換方法2の適用例)
 図12は、ラベル変換方法2を適用した場合に転送が許容されるセグメントの例を示す図である。図12では、図9に示したセグメント管理ツリーと同様のものが示されている。
 なお、以下でも、n=1のセグメントに属するデータがサーバ装置100のデータ記憶部150に格納されるものとして説明する。また、矢印が付加されているセグメントは、そのセグメントに属するデータが、サーバ装置100から、他のサーバ装置へ転送が許容されるセグメントであることを示している。
 転送を許容する階層間隔N=4として、上記のラベル変換方法2を適用した場合、n=2の階層のラベル“0”のセグメントは、ラベルのビット数が1であり、N=4で割った余り(A)が1であり、f×N=0.0である。この場合、A=1がf×N=0.0の整数部に一致しないため、ラベルのLSBからMSBに向かって1ビット削除される。その結果、ラベルのビットは全て削除される。従って、ハッシュ値は、n=1の階層のセグメントと同じとなり、セグメント管理部122は、転送先としてサーバ装置100をデータ送信部113に指定する。そのため、ラベル“0”のセグメントに属するデータの移動は発生しない。ラベル“1”のセグメントについても同様に、ハッシュ値は、n=1の階層のセグメントと同じとなり、セグメント管理部122は、転送先としてサーバ装置100をデータ送信部113に指定する。そのため、ラベル“1”のセグメントに属するデータの移動は発生しない。
 n=3の階層では、各セグメントのラベルのビット数が2であり、N=4で割った余り(A)が2である。f×4の整数部が2に一致するのは、ラベル“10”のセグメントである。そのため、データ送信部113は、ラベル“10”をセグメント管理部122に通知する。セグメント管理部122は、ラベル“10”に対応したハッシュ値を求め、そのハッシュ値をもとに、ラベル“10”のセグメントに属するデータの転送先となるサーバ装置を決定し、データ送信部113に通知する。データ送信部113は、通知されたサーバ装置がサーバ装置100と異なる場合には、ラベル“10”のセグメントに属するデータを通知されたサーバ装置に転送する。
 n=3の階層のその他のセグメントは、ラベル変換方法2によってビット数分のデータが削除されるため、ハッシュ値は、n=1の階層のセグメントと同じとなる。そのため、セグメント管理部122は、転送先としてサーバ装置100をデータ送信部113に指定する。そのため、それらのセグメントに属するデータの移動は発生しない。
 n=4の階層では、各セグメントのラベルのビット数が3であり、N=4で割った余り(A)が3である。f×4の整数部が3に一致するのは、ラベル“110”,“111”のセグメントである。そのため、データ送信部113は、ラベル“110”,“111”をセグメント管理部122に通知する。セグメント管理部122は、ラベル“110”,“111”に対応したハッシュ値を求め、そのハッシュ値をもとに、ラベル“110”,“111”のセグメントに属するデータの転送先となるサーバ装置を決定し、データ送信部113に通知する。データ送信部113は、通知されたサーバ装置がサーバ装置100と異なる場合には、ラベル“110”,“111”のセグメントに属するデータを通知されたサーバ装置に転送する。
 n=4の階層のその他のセグメントは、ラベル変換方法2によってビット数分のデータが削除されるため、ハッシュ値は、n=1の階層のセグメントと同じとなる。そのため、セグメント管理部122は、転送先としてサーバ装置100をデータ送信部113に指定する。そのため、それらのセグメントに属するデータの移動は発生しない。
 n=5の階層では、各セグメントのラベルのビット数が4であり、N=4で割った余り(A)が0である。f×4の整数部が0に一致するのは、ラベル“0000”~“0011”のセグメントある。ただし、ラベル“0000”は、LSBからMSBに向かってNの倍数(1倍)だけ0が連続しているため、削除される。ラベル“0100”~“0111”については、A=0であるため、削除されない。そのため、データ送信部113は、ラベル“(空)”~“0111”をセグメント管理部122に通知する。セグメント管理部122は、ラベル“(空)”~“0111”に対応したハッシュ値を求め、そのハッシュ値をもとに、ラベル“(空)”~“0111”のセグメントに属するデータの転送先となるサーバ装置を決定し、データ送信部113に通知する。ラベル“(空)”については、ハッシュ値はn=1の階層のセグメントと同じになるので、サーバ装置100が指定される。ラベル“0001”~“0111”のセグメントに関しては、データ送信部113は、通知されたサーバ装置がサーバ装置100と異なる場合には、それらのセグメントに属するデータを通知されたサーバ装置に転送する。
 なお、ラベル“1000”~“1111”についても、A=0であるためラベルの値は削除されない。しかし、ラベル“10”またはラベル“110”,“111”のセグメントで転送が発生した場合、ラベル“1000”~“1111”のセグメントは、分割の深さの条件を満たさない。すなわち、ラベル“10”またはラベル“110”,“111”のセグメントが属する階層と、ラベル“1000”~“1111”のセグメントが属する階層との階層間隔はN=4未満である。そのため、データ送信部113は、それらのセグメントに属するデータの移動を許容しない。なお、更にセグメントの分割が進むと、ラベル“10”のセグメントや、ラベル“110”,“111”の子孫では、4階層間隔ごとにデータの移動が許容されるセグメントが現れることになる。ラベル“0001”~“0111”のセグメントの子孫についても同様である。
 このように、図12の例では、セグメント管理ツリーにおいて、データの転送が許容されるセグメントが1つの階層に集中せず、複数階層にわたって配置されている。
 以上のようにラベル変換方法2を適用すると、ラベル変換方法1を適用した場合と同様の効果が得られるとともに、複数のセグメントの間でデータ転送が発生するタイミングをずらすことができ、データ転送の発生が同時期に集中することを抑制することができる。このため、情報処理システムの負荷を軽減できる。
 上記のようなデータ転送判定処理は、図2に示したような他のサーバ装置100a,100b,100cについても、各サーバ装置が有しているセグメントの情報を用いて同様に行うことが可能である。
 (リクエスト処理)
 図13は、リクエスト処理の一例を示すフローチャートである。ここでは、サーバ装置100が処理を行う場合を考える。サーバ装置100a,100b,100cも、サーバ装置100と同様の処理を行う。以下、図13に示す処理をステップ番号に沿って説明する。
 (ステップS31)リクエスト受信部111は、クライアント装置300からリクエストを受信する。リクエストの種類には、1つのキーを指定したリード要求、キーの範囲を指定したリード要求、および、1つのキーを指定したライト要求が含まれる。
 (ステップS32)セグメント管理部122は、ステップS31の処理で受信されたリクエストがキーの範囲を指定したものか判断する。範囲指定のリクエストである場合、ステップS34の処理が行われる。それ以外の場合、ステップS33が行われる。
 (ステップS33)セグメント管理部122は、セグメント情報記憶部121に記憶されたセグメント情報を参照して、リクエストで指定されたキーの属するセグメントを検索する。セグメントの検索では、例えば、b進数(bは2以上の整数)で表現したキーのプレフィックスとラベルを、セグメント管理ツリーのルートノードから葉ノードに向かって比較していき、プレフィックスと一致するラベルをもつ葉ノードが特定される。特定した葉ノードに相当するセグメントが、検索されるセグメントである。
 (ステップS34)セグメント管理部122は、セグメント情報を参照して、リクエストで指定された範囲内のキーを少なくとも1つ含むセグメントを全て検索する。複数のセグメントの検索では、例えば、範囲内のキーの最大値と最小値とに共通する最長のプレフィックスを求め、当該プレフィックスをラベルとしてもつノードが特定される。そして、セグメント管理部122は、特定したノード以下の複数の葉ノードを特定する。特定した複数の葉ノードに相当する複数のセグメントが、検索されるセグメントである。
 例えば、キーの範囲が00010~00101の場合、キーの最小値00010と最大値00101とに共通する最長のプレフィックスは、00である。よって、ラベル“00”のノードより下位にある、ラベル“000”,“001”の葉ノードが特定される。そして、ラベル“000”に相当するセグメントとラベル“001”に相当するセグメントとが検索される。
 (ステップS35)セグメント管理部122は、ステップS33またはステップS34の処理で検索されたセグメントのラベルを、上記のデータ転送判定処理で適用されたラベル変換方法1,2の何れかを用いて変換する。そしてセグメント管理部122は、ラベルまたは変換されたラベルに対してハッシュ関数を適用し、ハッシュ値を算出する。そして、セグメント管理部122は、ハッシュ値からセグメントが配置されているサーバ装置を特定する。サーバ装置は、例えば、図6に示した方法で特定される。ステップS34の処理で複数のセグメントが検索された場合、複数のサーバ装置が特定されることがある。以下のステップS36~S38の処理が、特定されたサーバ装置毎またはセグメント毎に実行される。
 (ステップS36)セグメント管理部122は、データ処理の対象のセグメントが配置されたサーバ装置として、他のサーバ装置がステップS35の処理で特定されたか判断する。他のサーバ装置が特定された場合、ステップS37の処理が行われる。自装置(サーバ装置100)が特定された場合、ステップS38の処理が行われる。
 (ステップS37)メッセージ処理部114は、ステップS35の処理で特定された他のサーバ装置に対して、リード要求またはライト要求を示すメッセージを送信する。メッセージには、クライアント装置300からのリクエストで指定されたキーまたはキーの範囲のうち、宛先のサーバ装置に記憶されているキーまたはキーの範囲が含まれる。その後、メッセージ処理部114は、応答のメッセージを他のサーバ装置から受信する。応答のメッセージには、キーに対応するデータまたは書き込み完了の報告が含まれる。
 (ステップS38)データ処理部131は、クライアント装置300からのリクエストに応じたデータ処理を行う。リード要求の場合、リクエストで指定されたキーまたはキーの範囲のうち、自装置に記憶されているキーまたはキーの範囲に対応するデータをデータ記憶部140から読み出す。ライト要求の場合、リクエストに含まれるキーとデータとを対応付けて、データ記憶部140に書き込む。
 (ステップS39)リクエスト受信部111は、ステップS31で受信したリクエストに対するレスポンスをクライアント装置300に送信する。リクエストがリード要求である場合、レスポンスとして、ステップS37,S38で自装置または他のサーバ装置から読み出されたデータを送信する。リクエストがライト要求である場合、レスポンスとして、ステップS37,S38で確認された書き込み完了の報告を送信する。
 (情報処理システムの動作シーケンス例)
 図14は、情報処理システムの動作シーケンスの一例を示すシーケンス図である。クライアント装置300がサーバ装置100に対して、データの書き込みのリクエストを送信し、データの書き込みによってセグメント分割が発生する場合を考える。
 (ステップS41)クライアント装置300は、データの書き込みを示すリクエストをサーバ装置100に送信する。リクエストには、キーとデータが含まれる。
 (ステップS42)サーバ装置100は、自装置が有するセグメント情報からキーの属するセグメントを検索し、ラベルを、適用されたラベル変換方法1または2を用いて変換する。そして、サーバ装置100は、変換されたラベルとハッシュ関数を用いて当該セグメントに属するデータが配置されているサーバ装置(ここでは、サーバ装置100a)を特定する。そして、ライト要求のメッセージをサーバ装置100aに送信する。メッセージには、キーとデータが含まれる。
 (ステップS43)サーバ装置100aは、サーバ装置100から受信したメッセージに含まれるキーとデータとを対応付けて、自装置が有する記憶装置に書き込む。そして、書き込み完了を示すレスポンスをサーバ装置100に送信する。
 (ステップS44)サーバ装置100は、サーバ装置100aで書き込みが完了したことを確認すると、クライアント装置300にレスポンスを送信する。
 (ステップS45)サーバ装置100aは、データの書き込みによって、セグメントのデータの量またはデータ数が閾値を超えたことを検出する。すると、サーバ装置100aは、当該セグメントをb個(例えば、2個)のセグメントに更に分割する。
 (ステップS46)サーバ装置100aは、図10に示したようなデータ転送判定処理を行う。以下では、分割後の2つのセグメントに属するデータが、サーバ装置100a,100bに分散して記憶されるものとする。
 (ステップS47)サーバ装置100aは、サーバ装置100bに記憶されるキーとデータをサーバ装置100bに送信する。
 (ステップS48)サーバ装置100bは、サーバ装置100aから受信したキーとデータを対応付けて、自装置が有する記憶装置に書き込む。そして、書き込み完了を示すレスポンスをサーバ装置100aに送信する。
 (ステップS49)サーバ装置100aは、サーバ装置100bへの複製が完了したセグメントのデータを、自装置が有する記憶装置から削除する。また、サーバ装置100aは、セグメントの分割が反映されるように、自装置が有するセグメント情報を更新する。そして、サーバ装置100aは、セグメントの更新を示す通知を、他の全てのサーバ装置(サーバ装置100,100b,100c)に送信する。
 (ステップS50)サーバ装置100,100b,100cは、サーバ装置100aからの通知に基づいて、自装置が有するセグメント情報を更新する。そして、セグメント情報の更新完了を示すレスポンスを、サーバ装置100aに送信する。これにより、サーバ装置100aによるセグメント情報の更新が、サーバ装置100,100b,100cが有するセグメント情報に反映される。
 第2の実施の形態によれば、サーバ装置100,100a,100b,100cはキーとデータを対応付けて記憶し、クライアント装置300から指定されたキーについてデータ処理を行うので、データ処理の複雑性を低減でき負荷が低くなる。また、データが複数のサーバ装置に分散して記憶されると共に、何れのサーバ装置もクライアント装置300からリクエストを受け付けることができるので、ボトルネックとなる装置が生じないように設計可能であり、情報処理システムの可用性が向上する。
 また、キー空間を複数のセグメントに分割し、セグメント単位でデータがサーバ装置に配置されるので、値の近いキーに対応するデータ同士が同一のサーバ装置に記憶される確率が高くなり、キーの範囲を指定したデータ処理を効率的に実行できる。また、セグメント分割やデータ転送の要否は、セグメントのラベルに基づいてセグメント毎に独立に判定できるので、各サーバ装置が他のサーバ装置とネゴシエーションを行わずに判定でき、スケーラビリティを向上できる。
 また、所定の分割深さ(階層間隔)を満たさない場合は、生成されたセグメントに属するデータの他の記憶装置への移動が制限される。これにより、情報処理システムにおける負荷分散の際の平均データ転送量の増加を抑制できる。このため、負荷分散時の記憶装置間でのデータ移動によって、ユーザによる情報処理システムへのデータアクセスなどの妨げになることを抑制できる。
 また、データ転送判定処理において、ラベル変換方法2を適用すると、複数のセグメントの間で、データ転送が発生するタイミングをずらすことができ、データ転送の発生が同時期に集中することを抑制することができる。このため、情報処理システムの負荷を軽減できる。
 なお、前述のように、第2の実施の形態のデータ管理は、コンピュータとしてのサーバ装置100,100a,100b,100cに、それぞれデータ管理プログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体33)に記録しておくことができる。記録媒体として、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVDおよびDVD-R/RWが含まれる。
 プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク41経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを記憶装置(例えば、HDD103)に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワーク41を介して受信したプログラムを直接実行してもよい。
 上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
 10 情報処理装置
 11 記憶部
 12 制御部
 20-1~20-n 記憶装置
 sg1,sg2a,sg2b,sg3a,sg3b,sg3c,sg3d,sg4a,sg4b,sg5a,sg5b,sg5c,sg5d セグメント

Claims (7)

  1.  記憶するデータに対応付けられるキーの集合を複数のセグメントに分割し、セグメント単位で複数の記憶装置へのデータの配置を管理する情報処理システムに用いられる、情報処理装置であって、
     セグメントとキーとの対応関係を示すセグメント情報を記憶する記憶部と、
     一のセグメントに属するデータの増加に応じて、当該一のセグメントを複数に分割し、前記セグメント情報を更新する制御部と、を有し、
     前記制御部は、第1のセグメントから1回または階層的にN(N>1)回の分割によって複数の第2のセグメントが得られたときに、前記Nが所定の条件を満たす場合には、前記複数の第2のセグメントの少なくとも1つに属するデータを、前記第1のセグメントに属するデータを記憶していた第1の記憶装置から第2の記憶装置へ移動することを許容し、前記Nが前記所定の条件を満たさない場合には、前記複数の第2のセグメントに属するデータの移動を制限する、情報処理装置。
  2.  前記所定の条件は、前記第1のセグメントの階層と前記複数の第2のセグメントの階層との間の間隔が、2以上の所定の階層間隔の倍数であるという条件である、請求の範囲第1項記載の情報処理装置。
  3.  各セグメントには、分割の深さに応じた長さのラベルが付与されており、前記制御部は、前記複数の第2のセグメントに付与されたラベルに基づいて、前記所定の条件を満たすか否か判定する、請求の範囲第1項または第2項記載の情報処理装置。
  4.  前記所定の条件を満たすか否かは、同じ階層のセグメント間では判定結果が同じになる方法を用いて判定する、請求の範囲第1項乃至第3項の何れか一項に記載の情報処理装置。
  5.  前記所定の条件を満たすか否かは、同じ階層のセグメント間でもセグメントによって判定結果が異なる方法を用いて判定する、請求の範囲第1項乃至第3項の何れか一項に記載の情報処理装置。
  6.  記憶するデータに対応付けられるキーの集合を複数のセグメントに分割し、セグメント単位で複数の記憶装置へのデータの配置を管理する情報処理システムが行うデータ管理方法であって、
     一のセグメントに属するデータの増加に応じて、当該一のセグメントを複数に分割し、セグメントとキーとの対応関係を示すセグメント情報を更新し、
     第1のセグメントから1回または階層的にN(N>1)回の分割によって複数の第2のセグメントが得られたときに、前記Nが所定の条件を満たす場合には、前記複数の第2のセグメントの少なくとも1つに属するデータを、前記第1のセグメントに属するデータを記憶していた第1の記憶装置から第2の記憶装置へ移動することを許容し、
     前記Nが前記所定の条件を満たさない場合には、前記複数の第2のセグメントに属するデータの移動を制限する、データ管理方法。
  7.  記憶するデータに対応付けられるキーの集合を複数のセグメントに分割し、セグメント単位で複数の記憶装置へのデータの配置を管理する情報処理システムに用いられるコンピュータに実行させるプログラムであって、前記コンピュータに、
     一のセグメントに属するデータの増加に応じて、当該一のセグメントを複数に分割し、セグメントとキーとの対応関係を示すセグメント情報を更新し、
     第1のセグメントから1回または階層的にN(N>1)回の分割によって複数の第2のセグメントが得られたときに、前記Nが所定の条件を満たす場合には、前記複数の第2のセグメントの少なくとも1つに属するデータを、前記第1のセグメントに属するデータを記憶していた第1の記憶装置から第2の記憶装置へ移動することを許容し、
     前記Nが前記所定の条件を満たさない場合には、前記複数の第2のセグメントに属するデータの移動を制限する、処理を実行させるプログラム。
PCT/JP2012/050158 2012-01-06 2012-01-06 情報処理装置、データ管理方法およびプログラム WO2013103012A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2012/050158 WO2013103012A1 (ja) 2012-01-06 2012-01-06 情報処理装置、データ管理方法およびプログラム
JP2013552374A JP5765441B2 (ja) 2012-01-06 2012-01-06 情報処理装置、データ管理方法およびプログラム
EP12864659.3A EP2801911A4 (en) 2012-01-06 2012-01-06 INFORMATION PROCESSING DEVICE, DATA MANAGEMENT METHOD, AND PROGRAM
US14/315,377 US20140310321A1 (en) 2012-01-06 2014-06-26 Information processing apparatus, data management method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/050158 WO2013103012A1 (ja) 2012-01-06 2012-01-06 情報処理装置、データ管理方法およびプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/315,377 Continuation US20140310321A1 (en) 2012-01-06 2014-06-26 Information processing apparatus, data management method, and program

Publications (1)

Publication Number Publication Date
WO2013103012A1 true WO2013103012A1 (ja) 2013-07-11

Family

ID=48745082

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/050158 WO2013103012A1 (ja) 2012-01-06 2012-01-06 情報処理装置、データ管理方法およびプログラム

Country Status (4)

Country Link
US (1) US20140310321A1 (ja)
EP (1) EP2801911A4 (ja)
JP (1) JP5765441B2 (ja)
WO (1) WO2013103012A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015211356A (ja) * 2014-04-25 2015-11-24 Kddi株式会社 構成情報管理サーバ、ネットワーク構成情報管理システムおよび構成情報管理方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103327084B (zh) * 2013-06-08 2017-01-04 北京古盘创世科技发展有限公司 一种公私混合分布式的云存储系统及云存储方法
US10572509B2 (en) * 2015-07-27 2020-02-25 Cisco Technology, Inc. Scalable spine nodes with partial replication of routing information in a network environment
US11256696B2 (en) * 2018-10-15 2022-02-22 Ocient Holdings LLC Data set compression within a database system
CN110430042B (zh) * 2019-06-28 2022-11-22 中国人民解放军战略支援部队信息工程大学 一种在异构冗余系统中存储秘钥的装置及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007060862A1 (ja) * 2005-11-24 2007-05-31 Brother Kogyo Kabushiki Kaisha 情報配信システム、情報配信方法、ノード装置、及び記録媒体
WO2007083531A1 (ja) * 2006-01-20 2007-07-26 Brother Kogyo Kabushiki Kaisha コンテンツ配信システム、ノード装置及びその情報処理方法並びにそのプログラムを記録した記録媒体

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193425A1 (en) * 2000-07-24 2005-09-01 Sanghoon Sull Delivery and presentation of content-relevant information associated with frames of audio-visual programs
GB2366014B (en) * 2000-08-19 2004-10-13 Ibm Free space collection in information storage systems
US7546319B1 (en) * 2003-04-28 2009-06-09 Ibrix, Inc. File system consistency checking in a distributed segmented file system
CN101505262B (zh) * 2008-02-05 2011-07-20 华为技术有限公司 一种构造节点Id的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007060862A1 (ja) * 2005-11-24 2007-05-31 Brother Kogyo Kabushiki Kaisha 情報配信システム、情報配信方法、ノード装置、及び記録媒体
WO2007083531A1 (ja) * 2006-01-20 2007-07-26 Brother Kogyo Kabushiki Kaisha コンテンツ配信システム、ノード装置及びその情報処理方法並びにそのプログラムを記録した記録媒体

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DAISUKE TAKEMOTO: "Load Balancing Schemes for Dynamic System Configuration in Content- Addressable Network", IEICE TECHNICAL REPORT, vol. 103, no. 248, 29 July 2003 (2003-07-29), pages 13 - 18, XP008171517 *
See also references of EP2801911A4
SRIRAM RAMABHADRAN ET AL.: "Prefix Hash Tree: An Indexing Data Structure over Distributed Hash Tables", 2004, XP003031517 *
YATIN CHAWATHE; SRIRAM RAMABHADRAN; SILVIA RATNASAMY; ANTHONY LAMARCA; SCOTT SHENKER; JOSEPH HELLERSTEIN: "A Case Study in Building Layered DHT Applications", PROCEEDING OF THE ACM SIGCOMM 2005 CONFERENCE ON APPLICATIONS, TECHNOLOGIES, ARCHITECTURES AND PROTOCOLS FOR COMPUTER COMMUNICATIONS, 22 August 2005 (2005-08-22)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015211356A (ja) * 2014-04-25 2015-11-24 Kddi株式会社 構成情報管理サーバ、ネットワーク構成情報管理システムおよび構成情報管理方法

Also Published As

Publication number Publication date
JPWO2013103012A1 (ja) 2015-05-11
JP5765441B2 (ja) 2015-08-19
EP2801911A1 (en) 2014-11-12
EP2801911A4 (en) 2014-12-10
US20140310321A1 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
KR102240557B1 (ko) 데이터 저장 방법, 장치 및 시스템
US10209893B2 (en) Massively scalable object storage for storing object replicas
US8832113B2 (en) Data management apparatus and system
JP5411250B2 (ja) 冗長データ記憶システムへの指示に従ってのデータ配置
CN103150394B (zh) 面向高性能计算的分布式文件系统元数据管理方法
US7934211B2 (en) Multi-level patching operation
CN103067433B (zh) 一种分布式存储系统的数据迁移方法、设备和系统
US20130061084A1 (en) Massively Scalable Object Storage
JP6222227B2 (ja) ストレージノード、ストレージノード管理装置、ストレージノード論理容量設定方法、プログラム、記録媒体および分散データストレージシステム
JP5765441B2 (ja) 情報処理装置、データ管理方法およびプログラム
JP2013045379A (ja) ストレージ制御方法、情報処理装置およびプログラム
JP2013045378A (ja) ストレージ制御方法、情報処理装置およびプログラム
US20170220586A1 (en) Assign placement policy to segment set
US20140244794A1 (en) Information System, Method and Program for Managing the Same, Method and Program for Processing Data, and Data Structure
US20210318994A1 (en) Extensible streams for operations on external systems
JPWO2013172405A1 (ja) ストレージシステムおよびデータアクセス方法
JP5633646B2 (ja) 情報処理装置、データ管理方法およびデータ管理プログラム
JP6011786B2 (ja) 分散ストレージシステム、分散ストレージデータ配置制御方法及び分散ストレージデータ配置制御用プログラム
US9942324B2 (en) Rebalancing and elastic storage scheme with elastic named distributed circular buffers
JP5463899B2 (ja) ファイル管理情報記憶装置、ファイル管理情報記憶装置の制御方法、およびファイル管理情報記憶装置の制御プログラム
US10762050B2 (en) Distribution of global namespace to achieve performance and capacity linear scaling in cluster filesystems
JP2017107300A (ja) データ管理プログラム及びデータ管理方法
JP2021124952A (ja) 情報処理装置、情報処理システムおよびアクセス制御方法
US12026177B2 (en) Dynamic adaptive partition splitting
CN117194439B (zh) 一种资源存储系统的创建方法、电子设备及存储介质

Legal Events

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

Ref document number: 12864659

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013552374

Country of ref document: JP

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2012864659

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2012864659

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE