WO2015097774A1 - 計算機システム及びデータ管理方法 - Google Patents

計算機システム及びデータ管理方法 Download PDF

Info

Publication number
WO2015097774A1
WO2015097774A1 PCT/JP2013/084631 JP2013084631W WO2015097774A1 WO 2015097774 A1 WO2015097774 A1 WO 2015097774A1 JP 2013084631 W JP2013084631 W JP 2013084631W WO 2015097774 A1 WO2015097774 A1 WO 2015097774A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
information
data
key
type data
Prior art date
Application number
PCT/JP2013/084631
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/JP2013/084631 priority Critical patent/WO2015097774A1/ja
Priority to JP2015554353A priority patent/JP6034512B2/ja
Priority to US14/770,659 priority patent/US9934248B2/en
Publication of WO2015097774A1 publication Critical patent/WO2015097774A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Definitions

  • the present invention relates to a computer system to which distributed KVS is applied.
  • the distributed memory cache technology is a technology for composing a memory space (memory store) for storing a large amount of data by integrating memories of a plurality of servers. It is possible to realize parallel processing by dividing and arranging data on a plurality of servers and speeding up input / output by holding data in a memory.
  • a distributed key-value store (distributed KVS) that handles data in a key-value type data format is adopted in order to distribute a large amount of data to a plurality of servers.
  • Key / value type data has a data structure in which a key, which is a data identifier, is associated with a value (value), which is the main body of the data, and is managed by a combination of [key, value].
  • one key / value type data is generated from one record, and a plurality of key / value type data is generated according to a key range (key range).
  • a key range key range
  • Patent Document 1 states that “a distributed memory storage management unit fragments a file according to definition information, and divides each fragment into distributed memory storage configured by integrating a plurality of physical memory areas. It receives a request for access to a file from the UAP and refers to the file management information to execute access to the fragment arranged in the physical memory area of its own host computer ”.
  • the storage device is used as a storage area for storing a cache of a memory store or a copy of data for redundancy, so that key / value type data is stored in the storage device as it is.
  • each of the plurality of servers is configured to have a key / value type. In order to grasp the arrangement of type data or the arrangement of distributed files, it is necessary to frequently communicate, and there is a problem that the communication load between servers increases.
  • the present invention has been made in view of the above-described problems.
  • a mechanism for reflecting the updated key / value type data on the data source is provided. That is, it provides a mechanism that allows access to data having the same content using either the file I / O API or the key / value type data API.
  • a mechanism for suppressing the communication load between servers when the distributed KVS is adopted for the distributed file is provided.
  • a typical example of the present invention is as follows. That is, a computer system comprising a plurality of computers connected via a network, each of the plurality of computers having a processor, a memory connected to the processor, and a network interface connected to the processor, A data storage area is formed by integrating a storage system that is connected to a storage apparatus that stores one or more files including a plurality of records, and that manages the files stored in the storage apparatus, and a storage area of the plurality of computers.
  • One or more key value type data management units that generate one or more and manage key value type data arranged in the data storage area, and divide the file to associate search keys with values indicating the contents of the records. To generate the key-value type data.
  • a loader that distributes and stores the key value type data distributed in the data storage area, and corresponds to the search key, the size of the value, and the key value type data for each key value type data.
  • the loader receives a persistence instruction that instructs to reflect the updated key-value type data in the file
  • a read request for acquiring the updated key value type data is transmitted to the key value type data management unit of each of the plurality of computers, and the key value type data management unit receives the read request.
  • the key value type data stored in the storage area constituting the data storage area is updated.
  • the updated key value type data is transmitted to the loader that transmitted the read request, and the loader is acquired from the key value type data management unit of each of the plurality of computers.
  • a processing target file that reflects the updated key-value type data is specified, and the computer that is connected to the storage device that stores the processing target file is specified.
  • the file system receives the update request for the file, the file system receives the update request for the file including the updated key-value type data to the specified computer.
  • a file is specified, and the file is updated by writing the updated key-value data at the position of the specified file.
  • the key-value data management unit can manage the file and the key-value data in association with each other based on the key-value data structure information, and the updated key-value data. Can be reflected in the file. Therefore, it is possible to access data having the same content using either the file I / O API or the key / value type data API.
  • Example 1 of this invention It is a block diagram which shows the structural example of the computer system in Example 1 of this invention. It is explanatory drawing which shows the structural example of the file in Example 1 of this invention. It is explanatory drawing which shows the structural example of the KV type data in Example 1 of this invention. It is explanatory drawing which shows an example of the file management information in Example 1 of this invention. It is explanatory drawing which shows the structural example of the record definition information in Example 1 of this invention. It is explanatory drawing which shows an example of the source program of UAP in Example 1 of this invention. It is explanatory drawing which shows an example of the KV type data management information and KV type data of Example 1 of this invention. It is explanatory drawing which shows an example of the file arrangement information of Example 1 of this invention.
  • Example 2 of this invention It is a flowchart explaining an example of the load process in the modification of Example 1 of this invention. It is a block diagram which shows the structural example of the computer system in Example 2 of this invention. It is explanatory drawing which shows an example of the file management information in Example 2 of this invention. It is a sequence diagram explaining the flow of the KV type data perpetuation process of Example 2 of this invention. It is a flowchart explaining an example of the loader determination process in Example 2 of this invention. It is explanatory drawing explaining an example of the temporary list in Example 2 of this invention. It is a flowchart explaining an example of the execution server determination process in Example 2 of this invention. It is a flowchart explaining an example of the record update process of Example 2 of this invention.
  • FIG. 1 is a block diagram illustrating a configuration example of a computer system according to the first embodiment of this invention.
  • the computer system includes a server 101, a plurality of distributed KVS servers 102, and storage devices 104 and 105.
  • the server 101 is connected to each of the plurality of distributed KVS servers 102 via the network 103.
  • the network 103 may be a LAN, a WAN, or the like, but the present invention is not limited to the type of the network 103.
  • the distributed KVS server 102 is a computer that constitutes a key value store (KVS). Each distributed KVS server 102 is connected to a storage apparatus 105 in which a data source (file 181) is stored.
  • the storage device 105 may be, for example, a storage system including a plurality of nonvolatile storage media such as HDDs, a semiconductor disk device using a flash memory as a storage medium, an optical disk device, and the like.
  • the expression “file 181 managed by the distributed KVS server 102” represents the file 181 stored in the storage device 105 connected to the distributed KVS server 102.
  • the expression “distributed KVS server 102 that manages the file 181” represents the distributed KVS server 102 connected to the storage apparatus 105 that stores the file 181.
  • one or more cache areas 161 are generated by integrating storage areas included in each of the plurality of distributed KVS servers 102.
  • the cache area 161 stores key / value type data 171 generated from the file 181.
  • the key / value type data 171 is also referred to as KV type data 171.
  • FIG. 2 is an explanatory diagram showing a configuration example of the file 181 according to the first embodiment of the present invention.
  • FIG. 3 is an explanatory diagram illustrating a configuration example of the KV type data 171 according to the first embodiment of this invention.
  • the file 181 is composed of a plurality of records as basic units of data processed by an application such as the UAP 141.
  • the file 181 includes a record 201, a record 202, a record 203, and a record 204.
  • Each record 201, 202, 203, 204 is composed of a plurality of fields.
  • the field stores various information such as numerical values and characters.
  • each record includes a field 211, a field 212, and a field 213.
  • one file can contain any number of records, and one record can contain any number of fields.
  • a record is composed of transaction information in one transaction, and individual information (data) such as account number, store number, and merchandise code is recorded in the field. .
  • the KV type data 171 includes KV type data header information 301, a key 302, and a value 303.
  • the KV type data header information 301 is information indicating the configuration of the KV type data and the relationship with other KV type data generated from the same file. Details of the KV type data header information 301 will be described with reference to FIG.
  • the key 302 is information serving as a search key.
  • Value 303 is the data body of KV type data.
  • the UAP 141 executes a predetermined process using the file 181 or the KV type data 171.
  • the file 181 is divided into record units, and for each record, KV type data having an arbitrary field as a key and a record body as a value is generated.
  • the cache area 161 can be accessed from the distributed KVS server 102 in the same manner as the shared device. Further, the data of the file 181 divided in units of records, that is, the KV type data 171 is arranged on a plurality of distributed KVS servers 102. Each UAP 141 executes processing using the KV type data 171 arranged on the distributed KVS server 102 on which it operates.
  • the file 181 is described as an example of the data source to be processed.
  • the present invention is not limited to this, and the data storage format is not particularly limited.
  • the server 101 includes a processor 111, a memory 112, and interfaces (I / F) 113-1, 113-2.
  • the server 101 is connected to the storage apparatus 104 via an interface 113-1, and is connected to a plurality of distributed KVS servers 102 via an interface 113-2.
  • the processor 111 executes a program stored in the memory 112.
  • the function of the server 101 is realized by the processor 111 executing a program stored in the memory 112.
  • the memory 112 stores a program executed by the processor 111 and data necessary to execute the program.
  • the memory 112 may be a semiconductor memory such as a DRAM, and can be accessed at a higher speed than the storage device 104.
  • the memory 112 of this embodiment stores a program for realizing the file system 131.
  • the file system 131 manages data in file units.
  • the file system 131 of this embodiment centrally manages the files 181 stored in the storage apparatus 105 connected to each distributed KVS server 102.
  • the storage device 104 stores various types of information.
  • a storage system including a plurality of storage media such as HDDs, a semiconductor disk device using a flash memory as a storage medium, an optical disk device, and the like can be considered.
  • a plurality of file management information 132 and a plurality of record definition information 133 are stored in the storage apparatus 104 of this embodiment.
  • the file management information 132 stores management information such as metadata of the file 181.
  • One file management information 132 exists for one file 181.
  • the record definition information 133 stores management information of records constituting the file 181.
  • the record definition information 133 is managed in association with one file management information 132. Details of the file management information 132 and the record definition information 133 will be described later with reference to FIGS. 4, 5, and 6.
  • the distributed KVS server 102 includes a processor 121, a memory 122, and interfaces (I / F) 123-1 and 123-2.
  • the distributed KVS server 102 is connected to the server 101 and other distributed KVS servers 102 via the interface 123-1.
  • the distributed KVS server 102 is connected to the storage apparatus 105 via the interface 123-2.
  • each distributed KVS server 102 is described as having the same configuration, but may not necessarily have the same configuration as long as the functions and processes described below can be realized.
  • the processor 121 executes a program stored in the memory 122.
  • the processor 121 executes a program stored in the memory 122, thereby realizing a function of the distributed KVS server 102 described later.
  • the memory 122 stores a program executed by the processor 121 and data necessary for executing the program.
  • the memory 122 may be a semiconductor memory such as a DRAM, and can be accessed at a higher speed than the storage device 105.
  • the memory 122 of this embodiment stores a UAP (user application program) 141 and programs for realizing the distributed KVS management unit 142, the loader 143, and the file system 144. Further, the memory 122 stores KV type data management information 151, file arrangement information 152, and KV type data structure information 153.
  • the UAP 141 executes various processes.
  • the file system 144 is the same as the file system 131.
  • the distributed KVS management unit 142 manages the cache area 161 in cooperation with the distributed KVS management unit 142 of another distributed KVS server 102. In addition, the distributed KVS management unit 142 controls access to the cache area 161.
  • the loader 143 generates the KV type data 171 from the file 181 stored in the storage device 105, distributes the KV type data 171 in the cache area 161, and stores the KV type data 171 stored in the cache area 161 as a storage. Store in device 105.
  • the process of distributing and arranging the file 181 stored in the storage device 105 in the cache area 161 is referred to as a load process. Further, the process of storing the KV type data 171 stored in the cache area 161 in the storage device 105 is referred to as an unload process.
  • the KV type data management information 151 is information for managing the KV type data 171 stored in the storage area of the distributed KVS server 102 constituting the cache area 161.
  • the file arrangement information 152 is information for managing the correspondence relationship between the cache area 161 and the file 181.
  • the KV type data structure information 153 is information for managing the correspondence between the record of the file 181 and the KV type data 171.
  • KV type data management information 151 Details of the KV type data management information 151, the file arrangement information 152, and the KV type data structure information 153 will be described later with reference to FIGS. 7, 8, and 9.
  • the programs and data stored in the memory 112 and the memory 122 do not always need to be stored in the memory 112 and the memory 122, and may be stored in a storage device (not shown) or an external storage device (not shown). In this case, a program or data is read from the storage device or the external storage device to the memories 112 and 114 as necessary. Note that when data is read, part or all of the data can be read.
  • the file systems 131 and 144 and the distributed KVS management unit 142 may be provided as part of an operating system (OS) (not shown) or as an input / output library used by a user application program (not shown).
  • OS operating system
  • user application program not shown
  • the distributed KVS server 102 in FIG. 1 does not have to be a physical computer, and may be a logical computer.
  • computer resources such as the processor 121, the memory 122, and the interface 123 are allocated to the logical computer as logical computer resources by a virtualization program (not shown).
  • the server 101 may be a distributed KVS server 102.
  • at least one distributed KVS server 102 may hold the file management information 132 and the record definition information 133.
  • all the distributed KVS servers 102 include the loader 143, but the present invention is not limited to this, and it is sufficient that at least one distributed KVS server 102 includes the loader 143.
  • FIG. 4 is an explanatory diagram showing an example of the file management information 132 according to the first embodiment of the present invention.
  • the file management information 132 includes a file ID 401, a permission 402, an owner 403, a size 404, a time stamp 405, a pointer 406 to record definition information, and storage location information 407.
  • the file ID 401 stores identification information of the file 181 stored in the storage device 105. Any information that can uniquely identify the file 181 may be stored in the file ID 401. For example, a full path file name or a table name in the DB is stored. In this embodiment, it is assumed that a file name is stored in the file ID 401.
  • the permission 402 stores information related to the access authority of the file 181.
  • the owner 403 stores information indicating the owner of the file 181.
  • the size 404 stores information indicating the size of the file 181.
  • the time stamp 405 stores information indicating the update date and time of the file 181.
  • the pointer 406 to the record definition information stores a pointer to the record definition information 133 corresponding to the file 181.
  • the storage location information 407 stores information related to the storage location of the file 181. In this embodiment, since a plurality of files 181 are stored in the storage apparatus 105 connected to each distributed KVS server 102, the storage location information 407 includes, for example, the identifier of the distributed KVS server 102 and the identification information of the storage apparatus 105. Is stored.
  • FIG. 5 is an explanatory diagram illustrating a configuration example of the record definition information 133 according to the first embodiment of this invention.
  • the record definition information 133 includes a record structure 501, a field structure 502, and a key field number 503.
  • the record structure 501 stores information for grasping the record structure in the file 181 and includes a record type 511 and a record length 512. Note that the record configuration 501 may include information other than the record type 511 and the record length 512.
  • the record type 511 stores information indicating whether the record in the file 181 is a fixed-length record or a variable-length record.
  • the file 181 is composed of records having the same and predetermined length.
  • the file 181 is composed of records having different lengths.
  • the record length 512 stores information indicating the length of one record when information indicating a fixed-length record is stored in the record type 511.
  • the record configuration 501 only needs to include information capable of grasping the record structure, and does not need to include all information of the record type 511 and the record length 512.
  • the field configuration 502 stores information for identifying a field included in the record, and includes a field number 521 and field information 522.
  • the field number 521 stores the number of fields included in one record.
  • the field information 522 stores information related to data recorded in each field, and includes a field type 531, a size 532, and a description format 533.
  • the field type 531 stores information indicating whether the field corresponding to the record is a variable length field or a fixed length field when information indicating a variable length record is stored in the record type 511.
  • the size 532 stores information indicating the size of the field.
  • the description format 533 stores the description format of the data recorded in the field, such as ASCII or binary.
  • the field configuration 502 only needs to be able to grasp the fields included in the record, so it is not necessary to include all the information of the field number 521 and the field information 522.
  • each record can be recognized by the value set in the record length 512.
  • a field for recording the size of the record is provided at the top of each record, and the delimiter of the record can be determined based on the field.
  • the record is a variable-length record
  • the first field is identified based on the information stored in the field configuration 502, and the record size can be calculated.
  • the field can be grasped by referring to the field number 521 of the field configuration 502 and the size 532 of the field information 522.
  • FIG. 6 is an explanatory diagram showing an example of the source program of the UAP 141 according to the first embodiment of the present invention.
  • FIG. 6 shows the source code of the UAP 141 described using the COBOL language.
  • UAP 141 described using the COBOL language a record structure of a file as a data source is defined in a program.
  • the file structure is defined in FILE SECTION 602 of DATA DIVISION.
  • Each file used in the program is defined by one file description entry (FD) followed by one or more record description entries.
  • information described in FILE SECTION 602 is stored in the record structure 501 and the field structure 502 of the record definition information 133.
  • FIG. 7 is an explanatory diagram illustrating an example of the KV data management information 151 and the KV data 171 according to the first embodiment of this invention.
  • the KV type data management information 151 is generated when the KV type data 171 is arranged in each distributed KVS server 102. At this time, a KV type data list is also generated.
  • the KV type data list is a list in which KV type data 171 arranged in each distributed KVS server 102 is arranged in the order of keys.
  • the dirty list is generated or updated when the KV data 171 is updated.
  • the distributed KVS management unit 142 or the loader 143 can grasp the KV type data 171 updated based on the dirty list.
  • the KV type data header information 301 includes a flag 711, a next 712, and a dirty list next 713.
  • the flag 711 stores a flag indicating that the KV type data 171 has been updated. In this embodiment, it is assumed that “0” is set in the flag 711 before the update of the KV type data 171 and “1” is set in the flag 711 after the update of the KV type data 171.
  • Next 712 stores a pointer to the next KV type data 171 of the KV type data 171 in the KV type data list. As a result, all the KV type data 171 included in the KV type data list can be traced.
  • the dirty list next 713 stores a pointer to the KV type data 171 next to the KV type data 171 in the dirty list described later.
  • KV type data list and dirty list are generated. Based on the KV type data list, KV type data 171 generated from one file 181 and distributed can be grasped. Also, based on the dirty list, the updated KV type data 171 can be grasped from the KV type data 171 generated from one file 181 and distributed.
  • the KV type data management information 151 includes a cache area ID 701, a file ID 702, a KV type data list pointer 703, and a dirty list pointer 704.
  • the cache area ID 701 stores identification information of the cache area 161.
  • the file ID 702 stores identification information of the file 181 that is the source of the KV type data 171.
  • the KV type data list pointer 703 stores a pointer to the first KV type data 171 in the KV type data list.
  • the dirty list pointer 704 stores a pointer to the first KV type data 171 in the dirty list.
  • FIG. 8 is an explanatory diagram illustrating an example of the file arrangement information 152 according to the first embodiment of this invention.
  • the file arrangement information 152 stores information on the file 181 that is the source of the KV type data 171 stored in the cache area 161 for each cache area 161. Specifically, the file arrangement information 152 includes a cache area ID 801, a file ID 802, and a pointer 803 to KV type data structure information.
  • the cache area ID 801 stores identification information for identifying the cache area 161.
  • the file ID 802 stores identification information of the file 181 stored as the KV type data 171 in the cache area 161 corresponding to the cache area ID 801. In this embodiment, the file name is stored.
  • the KV type data structure information pointer 803 stores a pointer to the KV type data structure information 153 corresponding to the entry of the file arrangement information 152.
  • FIG. 9 is an explanatory diagram illustrating an example of the KV type data structure information 153 according to the first embodiment of this invention.
  • the KV type data structure information 153 stores information regarding the structure of the record corresponding to the KV type data 171 for each KV type data 171. Specifically, the KV data structure information 153 includes an ID 901, a key 902, a value size 903, and an offset 904.
  • ID 901 stores an identification number for uniquely identifying an entry of the KV type data structure information 153.
  • the entry of the KV type data structure information 153 corresponds to one KV type data 171 generated from the file 181 corresponding to the file ID 802.
  • the key 902 stores key information of the KV type data 171 generated from the file 181 corresponding to the file ID 802.
  • the value size 903 stores the size of the KV type data 171.
  • the offset 904 stores information indicating the position of the record corresponding to the KV type data 171 on the file 181 corresponding to the file ID 802.
  • FIG. 10 is a flowchart for explaining the loading process in the first embodiment of the present invention.
  • the load instruction includes identification information (file ID) of the processing target file 181 and field information used as a key of the KV type data 171.
  • the load instruction also includes identification information (cache area ID) of the cache area 161 in which the KV type data 171 is arranged.
  • the loader 143 acquires the file management information 132 and the record definition information 133 of the processing target file 181 (step S1001). Specifically, the following processing is executed.
  • the loader 143 instructs the file system 144 to open the file to be processed.
  • the file system 144 determines whether the file management information 132 and the record definition information 133 of the file to be processed are held.
  • the file system 144 is cached together with the return value for the file open to the loader 143. File management information 132 and record definition information 133 are returned.
  • the file system 144 stores the file management information 132 and the record definition information 133 in the file system 131 of the server 101.
  • the acquisition request includes a file ID.
  • the file system 131 of the server 101 searches for file management information 132 in which the file ID 401 matches the file ID included in the acquisition request.
  • the file system 131 acquires the record definition information 133 corresponding to the file management information 132 based on the pointer 406 to the record definition information of the searched file management information 132.
  • the file system 131 transmits file management information 132 and record definition information 133 to the file system 144 of the distributed KVS server 102.
  • the file system 144 When the file system 144 receives the file management information 132 and the record definition information 133, the file system 144 holds the received file management information 132 and the record definition information 133 in the cache. Further, the file system 144 responds to the loader 143 with the file management information 132 and the record definition information 133 together with the return value for the file open.
  • the return value includes information necessary for accessing the file 181 to be processed.
  • the storage location information 407 of the file management information 132 is stored as a return value. The above is the description of the processing in step S1001.
  • the loader 143 acquires the processing target file 181 based on the storage location information 407 of the acquired file management information 132 (step S1002). Specifically, the following processing is executed.
  • Loader 143 issues a read request including file ID and storage location information 407 to file system 144. At this time, the file system 144 executes the following processing.
  • the file system 144 determines whether or not the distributed KVS server 102 on which the loader 143 that executes the load process operates manages the file 181 to be processed.
  • the distributed KVS server 102 on which the loader 143 that executes the load process operates is also referred to as a self-distributed KVS server 102.
  • the file system 144 can process the file 181 to be processed from the storage device 105 connected to the self-distributed KVS server 102 based on the file ID and the storage location information 407. And responds to the loader 143.
  • the file system 144 specifies the distributed KVS server 102 that manages the processing target file 181 based on the storage location information 407.
  • the file system 144 transmits a read request to the file system 144 of the specified distributed KVS server 102.
  • the read request includes storage location information 407 and a file ID.
  • the file system 144 that has transmitted the read request is described as a request-side file system 144
  • the file system 144 that has received the read request is described as a response-side file system 144.
  • the response-side file system 144 When the response-side file system 144 accepts the read request, the response-side file system 144 reads the file 181 to be processed from the storage device 105 based on the file ID and the storage location information 407 included in the read request. The response side file system 144 transmits the read processing target file 181 to the request side file system 144. The requesting file system 144 responds with the file 181 read to the loader 143. Through the above processing, the loader 143 can acquire the file 181 managed by the distributed KVS server 102 other than the self-distributed KVS server 102. The above is the description of step S1002.
  • the loader 143 transmits a generation request for the cache area 161 to the distributed KVS management unit 142 (step S1003). Thereafter, the loader 143 waits until a response from the distributed KVS management unit 142 is received. In the generation request, the identification information of the cache area 161 included in the load instruction is included in the generation request.
  • the distributed KVS management unit 142 generates a cache area in cooperation with the distributed KVS management unit 142 of another distributed KVS server 102. Since a known technique may be used for the generation process of the cache area 161, a detailed description is omitted. At this time, management information (not shown) of the cache area 161 is also generated.
  • the management information (not shown) of the cache area 161 includes the identification information of the cache area 161, the total capacity of the cache area 161, the identification information of the distributed KVS server 102, and the storage areas constituting the cache area 161 in the distributed KVS server 102 Is stored.
  • the loader 143 determines whether or not the cache area 161 has been normally generated (step S1004). For example, when the loader 143 receives a generation completion notification from the distributed KVS management unit 142, the loader 143 determines that the cache area 161 has been normally generated. On the other hand, the loader 143 determines that the cache area 161 has not been normally generated when receiving a notification of generation failure from the distributed KVS management unit 142 or when there is no response from the distributed KVS management unit 142 for a certain period of time.
  • the loader 143 terminates abnormally (step S1011). For example, the loader 143 notifies the UAP 141 that the load process has failed.
  • the loader 143 registers the entry of the processing target file 181 in the file arrangement information 152 (step S1005). Specifically, the loader 143 adds an entry to the file arrangement information 152. The loader 143 sets identification information of the newly generated cache area 161 in the cache area ID 801 of the added entry, and sets information stored in the file ID 401 of the file management information 132 in the file ID 802.
  • Loader 143 generates KV type data 171 based on the acquired file 181 and field information used as a key (step S1006), and also generates KV type data structure information 153 (step S1007). Specifically, the following processing is executed.
  • the loader 143 grasps the record structure of the file 181 with reference to the record definition information 133.
  • the loader 143 generates a key from the designated field based on the grasped record structure, and also generates KV type data 171.
  • the loader 143 determines the distributed KVS server 102 in which the KV type data 171 is arranged based on the key value. At this time, the distributed KVS management unit 142 generates a map in which the key range and the identifier of the distributed KVS server 102 are associated with each other.
  • the key range may be determined in advance and information regarding the key range may be retained.
  • the loader 143 generates as many entries in the KV-type data structure information 153 as the number of generated KV-type data 171, and sets identification numbers in order from “1” to the ID 901 of the generated entries.
  • Loader 143 selects one generated KV type data 171.
  • the loader 143 refers to the record definition information 133 and specifies the data size of the record corresponding to the selected KV type data 171 and the position of the record in the processing target file 181.
  • the loader 143 sets the key of the selected KV type data 171 to the key 902 of the empty entry, sets the size of the KV type data 171 to the value size 903, and corresponds to the KV type data 171 to the offset 904. Information indicating the position of the record in the file 181 is set. The above is the description of the processing in step S1006 and step S1007.
  • the loader 143 determines the distributed KVS server 102 to which the KV type data 171 generated according to the key range is to be arranged, and transmits the arrangement request for the KV type data 171 to the determined distributed KVS server 102 (step S1008). ). Specifically, the loader 143 transmits an arrangement request to the determined loader 143 of the distributed KVS server 102.
  • the arrangement request includes a map, KV data 171 included in a predetermined key range, file arrangement information 152, and KV data structure information 153.
  • the loader 143 arranges the KV type data 171 in the key range that it is responsible for in the storage area constituting the cache area 161 (step S1009). At this time, the loader 143 generates a KV type data list and KV type data management information 151. Specifically, the loader 143 sorts the KV type data header information 301 according to the order of the keys, and based on the result of the sorting, the next 712 of each KV type data header information 301 has a pointer to another KV type data 171. Set.
  • the distributed KVS management unit 142 generates KV type data management information 151, sets identification information of the file 181 in the file ID 702, and sets the KV type data list pointer 703 to the first KV type data 171 in the KV type data list. Set the pointer.
  • the loader 143 sets the pointer to the KV type data structure information 153 in the pointer 803 to the KV type data structure information of the file arrangement information 152 (step S1010), and ends the process.
  • step S1009 and step S1010 executes the same processing as that in step S1009 and step S1010.
  • FIG. 11 is a flowchart for explaining the update process of the KV type data 171 in the first embodiment of the present invention.
  • the distributed KVS management unit 142 receives an update request for the KV data 171 from the UAP 141 (step S1101).
  • the update request includes the key of the update target KV type data 171 and the update data.
  • the distributed KVS management unit 142 determines whether or not the distributed KVS management unit 142 manages the KV type data 171 to be updated (step S1102). Specifically, the distributed KVS management unit 142 refers to the map based on the key, identifies the distributed KVS server 102 that manages the KV-type data 171 to be updated, and the identified distributed KVS server 102 includes the distributed KVS server 102. It is determined whether the management unit 142 is a distributed KVS server 102 that operates.
  • the distributed KVS management unit 142 executes an update process of the update target KV type data 171 (step S1103). Since the update process of the KV type data 171 is a known process, detailed description thereof is omitted.
  • the distributed KVS management unit 142 sets a flag in the updated KV type data 171 and registers the KV type data 171 in the dirty list (step S1104). Specifically, the following processing is executed.
  • the distributed KVS management unit 142 sets “1” in the flag 711 of the KV type data header information 301 and checks whether a dirty list has been generated.
  • the distributed KVS management unit 142 If no dirty list has been generated, the distributed KVS management unit 142 generates a dirty list. The distributed KVS management unit 142 adds the KV type data 171 updated in step S1103 to the dirty list.
  • the distributed KVS management unit 142 sets a pointer to the updated KV type data 171 in the dirty list next 713 of the last KV type data 171 of the dirty list, and the dirty list Finally, the updated KV type data 171 is added.
  • step S1102 when another distributed KVS server 102 manages the KV type data 171 to be updated, the distributed KVS management unit 142 transmits an update request for the KV type data 171 to the other distributed KVS server 102 (step S1105). ), And then proceeds to step S1106.
  • the update request for the KV type data 171 includes the key of the update target KV type data 171 and the update data.
  • the distributed KVS management unit 142 of the other distributed KVS server 102 When the distributed KVS management unit 142 of the other distributed KVS server 102 receives the update request for the KV data 171, the distributed KVS management unit 142 executes the same processing as in steps S 1103 and S 1104 and executes the same processing as the distributed KVS management unit 142 that transmitted the update request. Send the result.
  • the distributed KVS management unit 142 determines whether the KV type data 171 has been successfully updated (step S1106).
  • the distributed KVS management unit 142 ends the process. If it is determined that the KV type data 171 could not be updated normally, the distributed KVS management unit 142 ends abnormally (step S1107). For example, the distributed KVS management unit 142 notifies the UAP 141 that the update process of the KV type data 171 has failed.
  • the distributed KVS management unit 142 gives a flag indicating that the updated KV type data 171 has been updated, and also updates the updated KV type data 171. Generate a list (dirty list). As a result, the updated KV type data 171 can be specified.
  • FIG. 12 is a sequence diagram illustrating the flow of the KV-type data perpetuation process according to the first embodiment of this invention.
  • the UAP 141 on one distributed KVS server 102 transmits a persistence instruction that instructs the loader 143 to reflect the updated KV type data 171 in the file 181 (step S1201).
  • the permanent instruction includes identification information of the cache area 161 to be processed.
  • the loader 143, the distributed KVS management unit 142, and the file system 144 included in the distributed KVS server 102 that first received the persistence instruction are referred to as the master loader 143, the master distributed KVS management unit 142, and the master file system 144. Describe.
  • the loader 143, the distributed KVS management unit 142, and the file system 144 included in other distributed KVS servers 102 are also referred to as a slave loader 143, a slave distributed KVS management unit 142, and a slave file system 144.
  • the master loader 143 and the slave loader 143 are not distinguished from each other, they are described as a loader 143.
  • the master distributed KVS management unit 142 and the slave distributed KVS management unit 142 are not distinguished from each other, they are described as a distributed KVS management unit 142.
  • the system 144 and the slave file system 144 are not distinguished, they are described as a file system 144.
  • the master loader 143 transmits a read request for the KV type data 171 stored in the processing target cache area 161 to the master distributed KVS management unit 142 (step S1202).
  • the read request includes identification information of the cache area 161 to be processed.
  • the master distributed KVS management unit 142 specifies the distributed KVS server 102 configuring the processing target cache area 161, and transmits a read request to the distributed KVS management unit 142 of the specified distributed KVS server 102 (step S1203).
  • the read request includes identification information of the cache area 161 to be processed.
  • the master distributed KVS management unit 142 can identify the distributed KVS server 102 configuring the processing target cache area 161 based on the management information (not shown) of the cache area 161.
  • the master distributed KVS management unit 142 configures the cache area 161 to be processed, the master distributed KVS management unit 142 transmits a read request to itself.
  • a read request is transmitted to both the master distributed KVS management unit 142 and the slave distributed KVS management unit 142.
  • the distributed KVS management unit 142 specifies the updated KV type data 171 from the KV type data 171 stored in the processing target cache area 161 (step S1204). Specifically, the distributed KVS management unit 142 refers to the KV type data management information 151 and searches for the KV type data management information 151 in which the identification information of the processing target cache area 161 is stored in the cache area ID 701. The distributed KVS management unit 142 specifies the KV type data 171 registered in the dirty list based on the dirty list pointer 704 of the searched KV type data management information 151.
  • the master distributed KVS management unit 142 and the slave distributed KVS management unit 142 transmit the specified KV type data 171 to the master distributed KVS management unit 142 (step S1205).
  • the master distributed KVS management unit 142 responds to the master loader 143 that the reading of the updated KV type data 171 is completed (step S1206).
  • the master loader 143 executes an execution server determination process (step S1207).
  • the execution server determination process is a process for determining an execution server (distributed KVS server 102) that reflects the updated KV type data 171 in the file 181. Details of the execution server determination process will be described later with reference to FIG.
  • the master loader 143 transmits a record update request to the distributed KVS server 102 determined by the execution server determination process (step S1208).
  • the record update request includes the identification information of the processing target file 181 and the updated KV type data 171.
  • the master loader 143 transmits a record update request to the master file system 144.
  • the master loader 143 transmits a record update request to the slave loader 143 of the other distributed KVS server 102.
  • the slave loader 143 transmits the request to the slave file system 144.
  • the file system 144 executes a record update process in order to reflect the updated KV type data 171 in the file 181 (step S1209). Details of the record update processing will be described later with reference to FIG.
  • the file system 144 may notify the master loader 143 that the processing is completed after the record update processing is completed. In this case, the master loader 143 notifies the UAP 141 that the processing has ended normally.
  • FIG. 13 is a flowchart illustrating an example of the execution server determination process according to the first embodiment of the present invention.
  • the master loader 143 When the master loader 143 receives a response indicating that the reading of the KV type data 171 is completed from the master distributed KVS management unit 142, the master loader 143 starts an execution server determination process. First, the master loader 143 specifies the file 181 corresponding to the KV type data 171 stored in the processing target cache area 161 (step S1301). Specifically, the following processing is executed.
  • the master loader 143 refers to the file arrangement information 152 and searches for an entry in which the cache area ID 801 matches the identification information of the cache area 161 to be processed.
  • the master loader 143 specifies the file 181 corresponding to the KV type data 171 based on the file ID 802 of the searched entry.
  • the master loader 143 instructs the master file system 144 to open the file 181 to be processed.
  • the file system 144 returns the cached file management information 132 and record definition information 133 together with a return value for the file open. The above is the description of the processing in step S1301.
  • the master loader 143 refers to the storage location information 407 of the file management information 132, identifies the distributed KVS server 102 that manages the file 181 to be processed, and determines the identified distributed KVS server 102 as an execution server. (Step S1302). Further, the master loader 143 transmits a record update request to the loader 143 of the distributed KVS server 102 determined as the execution server (step S1303), and ends the process.
  • FIG. 14 is a flowchart illustrating an example of a record update process according to the first embodiment of this invention.
  • the file system 144 When the file system 144 receives a record update request from the loader 143, the file system 144 starts a record update process. First, the file system 144 acquires the KV type data structure information 153 corresponding to the processing target file 181 (step S1401). Specifically, the file system 144 refers to the file arrangement information 152 and searches for an entry whose file ID 802 matches the identification information of the file 181 to be processed. The file system 144 refers to the pointer 803 to the KV data structure information 153 of the searched entry, and acquires the KV data structure information 153.
  • the file system 144 starts loop processing of the KV type data 171 (step S1402).
  • the file system 144 selects one KV type data 171 included in the record update request.
  • the file system 144 specifies the position of the record corresponding to the KV type data 171 in the processing target file 181 and writes the KV type data 171 to the specified position (step S1403). Specifically, the following processing is executed.
  • the file system 144 refers to the acquired KV type data structure information 153, and searches for an entry in which the key 902 matches the key 302 of the selected KV type data 171.
  • the file system 144 specifies the position of the record corresponding to the updated KV type data 171 in the processing target file 181 based on the value size 903 and the offset 904 of the searched entry.
  • the file system 144 reflects the updated KV type data 171 in the processing target file 181 by overwriting the updated KV type data 171 at the specified position.
  • the above is the description of the process in step S1403.
  • the file system 144 determines whether or not the processing has been completed for all the KV type data 171 included in the record update request (step S1404).
  • the file system 144 If it is determined that the processing has not been completed for all the KV type data 171, the file system 144 returns to step S1402 and executes the same processing. When it is determined that the processing has been completed for all the KV type data 171, the file system 144 ends the processing.
  • the KV type data adding process is substantially the same as the KV type data updating process shown in FIG. 11, but a part of the process is different.
  • the UAP 141 transmits a request for adding new KV type data 171 to the distributed KVS management unit 142 and the loader 143.
  • step S1101 and step S1102 are the same processing.
  • step S1103 the distributed KVS management unit 142 adds KV type data 171 to the cache area 161.
  • step S1104 the distributed KVS management unit 142 sets “1” in the flag 711 of the KV type data header information 301.
  • the process of adding new KV type data 171 to the KV type data list is the same as the process described in step S1104.
  • Processing after step S1105 is the same processing as shown in FIG.
  • the loader 143 adds an entry to the KV data structure information 153, sets an identification number in the ID 901 of the added entry, and sets the key 902 and the value size 903. Set a value for each.
  • the distributed KVS management unit 142 calculates an offset in the file of the added KV type data 171 based on the value size 903 and the offset 904 of the entry immediately above the added entry.
  • an entry one level above the added entry is also referred to as an upper entry.
  • KV-type data deletion process is almost the same as the process shown in FIG. 11, but a part of the process is different.
  • step S1101 and step S1102 is the same as the processing shown in FIG.
  • step S1103 the distributed KVS management unit 142 deletes the KV type data 171 from the cache area 161. At this time, the distributed KVS management unit 142 deletes only the value 303 and retains the key 302 and the KV data header information 301 as they are. In addition to the process described above, a process of invalidating the value 303 or a process of writing data such as “0” in the value 303 can be considered.
  • step S1104 the distributed KVS management unit 142 sets “ ⁇ 1” indicating deletion of the KV type data in the flag 711 of the KV type data header information 301. Also, the distributed KVS management unit 142 deletes the KV type data 171 from the KV type data list.
  • a method for updating the KV type data list is well known and will not be described in detail. However, a method of changing a pointer to the deleted KV type data 171 to a pointer to another KV type data 171 can be considered.
  • Processing after step S1105 is the same processing as shown in FIG.
  • the KV type data perpetuation process is almost the same as the process shown in FIG. 12, but a part of the process is different.
  • step S1201 to step S1203 is the same as the processing shown in FIG.
  • step S1204 the master distributed KVS management unit 142 and the slave distributed KVS management unit 142 identify the updated KV data 171 and the deleted KV data 171 with reference to the dirty list, respectively, and the cache area 161 The specified KV type data 171 is read out.
  • step S1205 the master distributed KVS management unit 142 and the slave distributed KVS management unit 142 transmit the specified KV type data 171 to the master distributed KVS management unit 142, and then “ ⁇ 1” is set in the flag 711.
  • the KV type data 171 is deleted from the cache area 161.
  • the processing flow after step S1206 is the same as that of the first embodiment, but the execution server determination processing and the record update processing are partly different.
  • the master loader 143 divides the read KV data 171 into updated KV data 171 and deleted KV data 171. Specifically, the master loader 143 refers to the flag 711 of the KV type data header information 301 of the KV type data 171, and the KV type data 171 in which the flag 711 is “1” and the flag 711 is “ ⁇ 1”. It is divided into certain KV type data 171.
  • the master loader 143 executes the processing from step S1301 to step S1303 on the updated KV type data 171 and executes the processing from step S1301 to step S1303 on the deleted KV type data 171. That is, two record update requests are transmitted: a record update request for instructing update of a record in the file 181 and a record update request for instructing deletion of a record from the file 181.
  • the distributed KVS server 102 When the distributed KVS server 102 receives a record update request for instructing update of a record in the file 181, the same processing as in the first embodiment is executed. On the other hand, when the distributed KVS server 102 receives a record update request instructing deletion of a record in the file 181, the following processing is executed.
  • steps S1401 and S1402 are the same as the processes shown in FIG.
  • step S1403 the file system 144 specifies the position in the processing target file 181 of the record corresponding to the deleted KV type data 171, and deletes the data corresponding to the value size 903 from the specified position.
  • the file system 144 specifies the position in the processing target file 181 of the record corresponding to the deleted KV type data 171 based on the value size 903 and the offset 904 of the searched entry.
  • the file system 144 deletes the data for the value size 903 from the specified position (offset). Further, the file system 144 invalidates the entry retrieved from the KV type data structure information 153.
  • the update or deletion result of the KV type data 171 can be reflected in the file (data source).
  • the file data source
  • the file management information 132 and the record definition information 133 are used to grasp the record structure of the file 181, but the record definition information of the file 181 may be set in the distributed KVS server 102 in advance.
  • FIG. 15 is an explanatory diagram showing an example of the file configuration information 1500 according to the modification of the first embodiment of the present invention.
  • the file configuration information 1500 is information for managing the correspondence between the file 181, the record, and the field used as the key of the KV type data 171, and includes a file ID 1501, record definition information 1502, and a key field number 1503. In the modification, the file configuration information 1500 is registered in the distributed KVS server 102 in advance.
  • the file ID 1501 stores identification information of the file 181 stored in the storage device 105.
  • the file ID 1501 is the same as the file ID 401.
  • the record definition information 1502 stores management information of records constituting the file 181.
  • the record definition information 1502 is the same as the record definition information 133.
  • the key / field number 1503 stores the identification number of the field used as the key of the KV type data 171 generated from the file 181. Before the KV type data 171 is generated, the key field number 1503 is blank.
  • FIG. 16 is a flowchart for explaining an example of the registration process of the file configuration information 1500 in the modification of the first embodiment of the present invention.
  • the file system 144 receives the file 181 and the record definition information of the file 181 defined by the user (step S1601).
  • the file system 144 compares the contents of the file 181 with the record definition information, confirms consistency (step S1602), and determines whether the contents of the file 181 and the record definition information are consistent (step S1603). ).
  • the file system 144 If it is determined that the contents of the file 181 do not match the record definition information, the file system 144 notifies that the registration of the file configuration information 1500 has failed (step S1605), and ends the process.
  • the file system 144 registers the file 181 and the record definition information in association with the file configuration information 1500 (step S1604), and ends the process. To do. Specifically, the file system 144 adds an entry to the file configuration information 1500. The file system 144 sets the identification information of the file 181 in the file ID 1501 of the added entry, and sets the received record definition information in the record definition information 1502 of the added entry. At this time, since the KV type data 171 corresponding to the file 181 has not been generated, the key field number 1503 is blank.
  • the file system 144 notifies the information of the entry added to the file system 144 of the other distributed KVS server 102.
  • the file system 144 of the other distributed KVS server 102 updates the file configuration information 1500 according to the notification.
  • FIG. 17 is a flowchart for explaining an example of the load process in the modification of the first embodiment of the present invention. Hereinafter, the difference from the first embodiment will be mainly described.
  • step S1001 since the file configuration information 1500 is used instead of the file management information 132 and the record definition information 133, the process of step S1001 is omitted.
  • the loader 143 After acquiring the file 181, the loader 143 confirms the consistency between the contents of the file 181 and the field information used as a key (step S1701), and whether the contents of the file 181 and the field information are consistent. Is determined (step S1702).
  • step S1011 If it is determined that the contents of the file 181 and the field information do not match, the loader 143 proceeds to step S1011.
  • the loader 143 updates the file configuration information, and further transmits a request to generate the cache area 161 to the distributed KVS management unit 142 (step S1). S1703). Specifically, the loader 143 refers to the file configuration information 1500 and searches for an entry in which the file ID 1501 matches the identification information of the file 181 to be processed. The loader 143 sets the information of the field designated in the key field number 1503 of the retrieved entry.
  • step S1007 KV type data 171 is generated based on the file configuration information 1500. Since other processes are the same as those in the first embodiment, description thereof is omitted.
  • the second embodiment is different in that one file 181 is divided into a plurality of subfiles 1811 and the subfile 1811 is stored in the storage apparatus 105 connected to the plurality of distributed KVS servers 102.
  • the second embodiment will be described focusing on differences from the first embodiment.
  • FIG. 18 is a block diagram illustrating a configuration example of a computer system according to the second embodiment of the present invention.
  • the computer system according to the second embodiment has the same configuration as the computer system according to the first embodiment.
  • the second embodiment is different in that the subfile 1811 is stored in the storage apparatus 105.
  • the sub file 1811 is file data obtained by dividing one file 181 and is composed of data (block data) obtained by dividing the file 181 into blocks.
  • One block data can include a plurality of records. However, since the block size may not match the record size, data of one record may be included in a plurality of block data.
  • the file 181 when the file system 131 stores the file 181 in the storage device 105, the file 181 is divided into block data of a predetermined size, and a predetermined number of block data groups having consecutive addresses are stored in a plurality of storages. It is distributed and stored in the device 105. In this embodiment, general striping is applied. It is assumed that the file 181 is divided in order from the first record.
  • the file 181 is distributed and stored in the four storage apparatuses 105, that is, a case where the number of stripes is “4” will be described as an example.
  • the four storage devices 105 are the storage device A, the storage device B, the storage device C, and the storage device D, the block size is “64 KB”, and the stripe size is “16”. Assume “block”.
  • the file system 131 divides the file 181 into block data of “64 KB” units, block data with block numbers “1” to “16” to the storage device A, and block numbers from “17”.
  • the block data “32” is stored in the storage device B
  • the block data “33” to “48” is stored in the storage device C
  • the block data “49” through “64” is stored in the storage device D.
  • the block data group is stored in the order of the storage device A, the storage device B, the storage device C, and the storage device D according to the same procedure.
  • the storage device 105 that stores the block number and the block data corresponding to the block number can be specified.
  • FIG. 19 is an explanatory diagram showing an example of the file management information 132 according to the second embodiment of the present invention.
  • the storage location information 407 of the file management information 132 stores information related to the storage location of the subfile 1811.
  • the storage location information 407 is information for managing the configuration of the subfile 1811 and includes the number of stripes 1901, the stripe size 1902, and the distributed KVS server ID 1903.
  • the number of stripes 1901 is the number of subfiles 1811 in which one file 181 is distributed and arranged.
  • the stripe size 1902 represents the size (number of blocks) of the block data group.
  • the distributed KVS server ID 1903 stores identification information of the distributed KVS server 102 that manages the subfile 1811. In this embodiment, it is assumed that identification numbers are assigned to the subfile 1811 in order from “1”. In this case, the distributed KVS server ID 1903 stores, for example, the identification number of the subfile 1811 and the identification information of the distributed KVS server 102 that manages the subfile 1811 in association with each other.
  • the difference from the first embodiment is that the identification number of the sub file 1811 is stored in the file ID 802 of the file arrangement information 152 of the second embodiment.
  • the KV type data structure information 153 of the second embodiment is the same as that of the first embodiment.
  • one loader 143 executes a load process.
  • a plurality of subfiles 1811 generated from one file 181 are stored in a plurality of storage apparatuses 105. Therefore, the loader 143 on each distributed KVS server 102 executes load processing in parallel. Therefore, in the second embodiment, when the KV type data 171 is arranged in the cache area 161, the process for determining the distributed KVS server 102 that executes the load process is executed.
  • FIG. 20 is a sequence diagram illustrating the flow of the KV type data perpetuation process according to the second embodiment of the present invention.
  • step S1201 to step S1206 The processing from step S1201 to step S1206 is the same.
  • the master loader 143 executes an execution server determination process (step S2007).
  • a plurality of subfiles 1811 reflecting the updated KV type data 171 are specified, and the distributed KVS server 102 that manages each of the plurality of subfiles 1811 is determined as an execution server. Is done.
  • a plurality of distributed KVS servers 102 are determined as execution servers. Details of the execution server determination process of the second embodiment will be described later with reference to FIG.
  • the master loader 143 transmits a record update request to the plurality of distributed KVS servers 102 determined by the processing result of the execution server determination process (step S2008).
  • the record update request includes the identification information of the subfile 1811 and the extracted KV type data 171.
  • the master loader 143 When transmitting a record update request to the distributed KVS server 102 itself including the master loader 143, the master loader 143 transmits a record update request to the master file system 144. On the other hand, when transmitting a record update request to another distributed KVS server 102, the master loader 143 transmits a record update request to the slave loader 143 of the other distributed KVS server 102. The slave loader 143 transmits the request to the slave file system 144.
  • the file system 144 executes record update processing in order to reflect the updated KV type data 171 in the file 181 (step S2009). Details of the record update processing of the second embodiment will be described later with reference to FIG.
  • the file system 144 may notify the master loader 143 that the processing is completed after the record update processing is completed. In this case, the master loader 143 notifies the UAP 141 that the processing has ended normally.
  • FIG. 21 is a flowchart illustrating an example of loader determination processing according to the second embodiment of the present invention.
  • FIG. 22 is an explanatory diagram illustrating an example of a temporary list according to the second embodiment of this invention.
  • the load instruction includes identification information (file ID) of the processing target file 181 and field information used as a key of the KV type data 171.
  • the load instruction also includes identification information (cache area ID) of the cache area 161 in which the KV type data 171 is arranged.
  • the loader 143 identifies the distributed KVS server 102 that manages the subfile 1811 of the target file 181 (step S2101). Specifically, the following processing is executed.
  • the loader 143 instructs the file system 144 to open the file to be processed.
  • the file system 144 responds with file management information 132 and record definition information 133 along with a return value for the file open. Note that the processing executed by the file system 144 is the same as that in step S1001, and thus the description thereof is omitted.
  • the loader 143 refers to the storage location information 407 of the file management information 132 and identifies the distributed KVS server 102 that manages the subfile 1811.
  • the above-described distributed KVS server 102 can be specified based on the distributed KVS server ID 1903 of the storage location information 407.
  • execution of load processing is instructed to the plurality of specified distributed KVS servers 102.
  • the loader 143 generates a temporary list 2200 as shown in FIG.
  • the temporary list 2200 will be described.
  • the temporary list 2200 includes a sub file ID 2201, a distributed KVS server ID 2202, a record ID 2203, and a charge flag 2204.
  • the sub file ID 2201 stores the identification number of the sub file 1811.
  • the distributed KVS server ID 2202 stores identification information of the distributed KVS server 102 that manages the subfile 1811.
  • a record ID 2203 is identification information of a record included in the subfile 1811.
  • the charge flag 2204 stores information indicating whether or not the distributed KVS server 102 is a record in charge of load processing. For example, if the distributed KVS server 102 is a record in charge of load processing, “1” is stored in the charge flag 2204, and if the distributed KVS server 102 is in charge of load processing, “0” is stored in the charge flag 2204. Is stored.
  • step S2101 the loader 143 generates entries for the number of subfiles 1811 in the temporary list 2200, and sets the identification number of the subfile 1811 in the subfile ID 2201 of the generated entry. Further, the loader 143 sets the identification information of the distributed KVS server 102 specified in the distributed KVS server ID 2202 of the generated entry. At this time, the record ID 2203 and the charge flag 2204 remain blank. The above is the description of the processing in step S2101.
  • step S2103 there is a possibility that data of one record is included in a plurality of block data. Therefore, it is necessary to determine which distributed KVS server 102 is in charge of the load processing of the record. Therefore, the processing from step S2103 to step S2110 is executed.
  • the loader 143 specifies a record included in each subfile 1811 (step S2102). Specifically, the loader 143 refers to the record definition information 133 and the storage location information 407, and calculates the records included in each subfile 1811. For example, the following processing can be considered.
  • Loader 143 selects one subfile 1811. Based on the record structure 501 of the record definition information 133, the record length is grasped. Next, the loader 143 specifies a block data group included in the subfile 1811 based on the number of stripes 1901 and the stripe size 1902 of the storage location information 407. Further, the loader 143 identifies the record included in the subfile 1811 from the record length, the number of stripes, and the stripe size.
  • the loader 143 sets the identification information of the record specified in the record ID 2203 of the entry of the temporary list 2200 corresponding to the selected subfile 1811, and further sets “0” in the charge flag 2204.
  • Loader 143 repeatedly executes the process described above for all subfiles 1811. The above is the description of the processing in step S2102.
  • the loader 143 starts loop processing of the subfile 1811 (step S2103). Specifically, the loader 143 selects one processing target subfile 1811 from the temporary list 2200. Here, it is assumed that the sub files 1811 are selected in the order of the identification numbers.
  • the loader 143 starts loop processing of the records included in the selected subfile 1811 (step S2104). Specifically, the loader 143 selects one record to be processed from the record ID 2203 of the entry of the temporary list 2200 corresponding to the selected subfile 1811.
  • the loader 143 determines whether or not the charge flag 2204 of the selected record is “1” (step S2105). That is, it is determined whether or not it has been determined that the distributed KVS server 102 corresponding to the distributed KVS server ID 2202 of the entry selected in step S2103 is responsible for the load processing of the record.
  • step S2109 If it is determined that the charge flag 2204 of the selected record is “1”, the loader 143 proceeds to step S2109.
  • the loader 143 determines whether or not the data of the record is distributed and arranged in the plurality of distributed KVS servers 102 (step S2106). Specifically, the loader 143 refers to the record ID 2203 of the entry of the other subfile 1811 in the temporary list 2200, and determines whether or not the same identification information as the identification information of the selected record exists. When the same identification information as the identification information of the selected record exists in the record ID 2203 of the entry of the other subfile 1811, the loader 143 distributes the data of the record in a plurality of distributed KVS servers 102. It is determined that
  • step S2108 When it is determined that the data of the selected record is not distributed and arranged in the plurality of distributed KVS servers 102, the loader 143 sets “1” in the charge flag 2204 of the record (step S2108), and step The process proceeds to S2109.
  • the loader 143 determines the distributed KVS server 102 that is responsible for loading the records (step S2107). Thereafter, the loader 143 proceeds to step S2109.
  • the loader 143 may consider a method of determining the distributed KVS server 102 that manages the subfile 1811 including the top data of the record as the distributed KVS server 102 that is responsible for the load processing of the record. Also, a method of determining the distributed KVS server 102 that manages the subfile 1811 that contains the largest amount of record data as the distributed KVS server 102 that is responsible for the load processing of the record with respect to the total data amount of the record is conceivable. Note that the present invention is not limited to the determination method of the distributed KVS server 102 in charge of the record loading process.
  • the loader 143 sets “1” in the responsible flag 2204 of the selected record. . In addition, the loader 143 deletes the identification information of the record from the entry of the other subfile 1811.
  • the loader 143 is managed by another distributed KVS server 102. “1” is set in the charge flag 2204 of the record of the entry corresponding to the subfile 1811 to be processed. In addition, the loader 143 deletes the identification information of the record from the entry of the other subfile 1811. The above is an example of the process of step S2107.
  • the loader 143 determines whether or not the processing has been completed for all the records included in the selected subfile 1811 (step S2109). Specifically, the loader 143 refers to the temporary list 2200 and determines whether there is a record in which the charge flag 2204 of the entry of the selected subfile 1811 is “0”. When there is a record whose charge flag 2204 is “0”, the loader 143 determines that the processing has not been completed for all the records.
  • the loader 143 When it is determined that the processing has not been completed for all the records included in the selected subfile 1811, the loader 143 returns to step S2104 and executes the same processing.
  • the loader 143 displays the records (record range) that the distributed KVS server 102 that manages the selected subfile 1811 is in charge of. Determine (step S2110). Specifically, the loader 143 refers to the entry of the temporary list 2200 corresponding to the selected subfile 1811 and determines the record registered in the record ID 2203 of the entry as a record in charge.
  • the loader 143 determines whether or not the processing has been completed for all the subfiles 1811 (step S2111). If it is determined that the processing has not been completed for all the subfiles 1811, the loader 143 returns to step S2003 and executes the same processing.
  • the loader 143 transmits a load processing execution instruction to the distributed KVS server 102 that manages the subfiles 1811 (step S2112).
  • the load process execution instruction includes the identification number of the subfile 1811 and the identification information (range information) of the record in charge.
  • the loader 143 of the distributed KVS server 102 executes the load process shown in FIG. In step S1002, if the subfile 1811 includes data of a distributed record, the loader 143 sends the record to the distributed KVS server 102 that manages another subfile 1811 including the data of the distributed record. Request to read the data. Since other processes are the same as those in the first embodiment, description thereof is omitted.
  • FIG. 23 is a flowchart illustrating an example of an execution server determination process according to the second embodiment of the present invention.
  • Step S1301 is the same process (step S1301).
  • the master loader 143 refers to the storage location information 407 of the file management information 132, and identifies the distributed KVS server 102 that manages the subfile 1811 generated from the processing target file 181 (step S2302).
  • the master loader 143 starts loop processing of the KV type data 171 (step S2303). Specifically, the master loader 143 selects one KV type data 171 to be processed from the updated KV type data 171.
  • the master loader 143 refers to the storage location information 407 of the KV type data structure information 153 and the file management information 132, and specifies the sub file 1811 including the data of the record corresponding to the selected KV type data 171 (step S2304). . Specifically, the following processing is executed.
  • the master loader 143 acquires the value size 903 and the offset 904 of the entry of the KV type data structure information 153 corresponding to the selected KV type data 171.
  • the master loader 143 Based on the offset 904, the master loader 143 identifies the number of block data including the head data of the record corresponding to the selected KV type data 171. For example, the master loader 143 calculates the number of block data including record data by dividing the value of the offset 904 by the size of the block data.
  • the master loader 143 determines whether or not the block data specified based on the value size 903 includes all data of the record corresponding to the selected KV type data 171.
  • the block data number is output as the processing result.
  • the master loader 143 determines the block data number including the data of the record based on the value size 903. Is identified.
  • the master loader 143 Based on the number of stripes 1901 and the stripe size 1902 of the storage location information 407, the master loader 143 specifies which block data group the number of the specified block data is included in, and the subfile including the block data group 1811 is specified.
  • the master loader 143 generates a list in which the key of the KV type data 171 and the identification information of the distributed KVS server 102 that manages the specified subfile 1811 are associated with each other.
  • the above is the description of the process in step S2304.
  • the master loader 143 determines whether or not the processing has been completed for all the KV type data 171 (step S2305). When it is determined that the processing has not been completed for all the KV type data 171, the master loader 143 returns to Step S2303 and executes the same processing.
  • the master loader 143 transmits a record update request to each identified distributed KVS server 102 (step S2306), and ends the processing. Specifically, the following processing is executed.
  • the master loader 143 selects the subfile 1811 to be processed.
  • the master loader 143 refers to the list generated in step S2304 and extracts the KV type data 171 to be transmitted to the distributed KVS server 102 that manages the selected subfile 1811.
  • the master loader 143 transmits a record update request including the identification information of the processing target subfile 1811 and the extracted KV type data 171 to the distributed KVS server 102 that manages the selected subfile 1811.
  • the above is the description of the process in step S2306.
  • FIG. 24 is a flowchart illustrating an example of a record update process according to the second embodiment of the present invention.
  • the file system 144 starts the record update process when receiving the record update request.
  • the file system 144 acquires the KV type data structure information 153 corresponding to the processing target subfile 1811 (step S2401).
  • the process in step S2401 uses the same process as in step S1401.
  • the file system 144 starts loop processing of the KV type data 171 (step S2402).
  • the file system 144 selects one KV type data 171 included in the record update request.
  • the file system 144 specifies the position of the record corresponding to the KV type data 171 in the processing target subfile 1811 and writes the KV type data 171 to the specified position (step S2403). Specifically, the following processing is executed.
  • the file system 144 refers to the acquired KV type data structure information 153, and searches for an entry in which the key 902 matches the key 302 of the selected KV type data 171.
  • the file system 144 specifies the number of the block data including the head data of the record corresponding to the selected KV type data 171 based on the offset 904 of the searched entry.
  • the file system 144 specifies record data included in the block data specified based on the value size 903. Thereby, the position of the KV type data 171 and the data to be written are specified.
  • the file system 144 reflects the updated KV data 171 in the processing target file 181 by overwriting the specified position with the KV data 171 for the specified data.
  • the above is the description of the processing in step S2403.
  • the file system 144 determines whether or not the processing has been completed for all the KV type data 171 included in the record update request (step S2404).
  • the file system 144 When it is determined that the processing has not been completed for all the KV type data 171, the file system 144 returns to Step S2402 and executes the same processing. When it is determined that the processing has been completed for all the KV type data 171, the file system 144 ends the processing.
  • the update or deletion result of the KV type data 171 can be reflected in the subfile 1811 even when the file data is distributed and arranged as a subfile 1811 on a plurality of servers.
  • the distributed file system and the distributed KVS can be linked, and the same content data can be accessed using either the file I / O API or the KV type data API.
  • the updated KV type data 171 is reflected in the subfile 1811, since the record handled by each distributed KVS server 102 is determined, an increase in the amount of communication between the servers is suppressed, and the distributed KVS and the distributed file are controlled. High-speed data transfer with the system can be realized.
  • this invention is not limited to the above-mentioned Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
  • Information such as programs, tables, and files for realizing each function can be stored in a memory, a storage device such as a hard disk or SSD (Solid State Drive), or a storage medium such as an IC card, SD card, or DVD.
  • control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

Landscapes

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

Abstract

 ネットワークを介して接続される複数の計算機を備える計算機システムであって、複数の計算機の各々は、複数のレコードを含むファイルを一以上格納するストレージ装置と接続し、ファイルシステムと、キーバリュー型データ管理部と、ローダとを有し、検索キー、バリューのサイズ、及びレコードのファイルにおける位置が対応付けられたキーバリュー型データ構造情報を保持し、ローダは、永続化指示を受け付けた場合、更新されたキーバリュー型データを反映させる処理対象のファイルを特定し、処理対象のファイルを格納するストレージ装置と接続する計算機を特定し、計算機に更新されたキーバリュー型データを含むファイルの更新要求を送信し、ファイルシステムは、キーバリュー型データ構造情報に基づいて、更新されたキーバリュー型データに対応するレコードのファイルにおける位置を特定し、更新されたキーバリュー型データを書き込む。

Description

計算機システム及びデータ管理方法
 本発明は、分散KVSが適用された計算機システムに関する。
 近年、計算機システムにおいてアプリケーションプログラムが処理すべきデータ量は爆発的に増えてきている。多数のサーバを使って大量のデータを高速に処理するための技術として、分散メモリキャッシュ技術が知られている(例えば、特許文献1)。分散メモリキャッシュ技術は、複数のサーバのメモリを統合して、大量のデータを格納するメモリ空間(メモリストア)を構成する技術である。複数のサーバへのデータの分割配置による処理の並列化と、メモリにデータを保持することによる入出力の高速化とを実現することができる。
 分散メモリキャッシュ技術では、大量のデータを複数のサーバに分散させるために、キー・バリュー型データ形式のデータを扱う分散キーバリューストア(分散KVS)が採用される。キー・バリュー型データは、データの識別子であるキーと、データの本体であるバリュー(値)とを対応づけたデータ構造であり、[キー、バリュー]の組合わせで管理される。
 例えば、複数のレコードから構成されるファイルに分散KVSを採用する場合、一つのレコードから一つキー・バリュー型データが生成され、キーの範囲(キーレンジ)に応じてキー・バリュー型データが複数のサーバに分割配置される。各サーバ上で稼動するアプリケーションは分割配置されたキー・バリュー型データを並列に処理することによって処理の高速化を実現できる。
 特許文献1には、「分散メモリストレージ管理部が定義情報に従ってファイルを断片化し、各断片を複数の物理メモリ領域を統合して構成される分散メモリストレージに分割配置する。分散メモリストレージアクセス部はUAPからファイルへのアクセス要求を受け付け、ファイル管理情報を参照して自ホスト計算機の物理メモリ領域に断片化して配置された断片へのアクセスを実行する」ことが記載されている。
特開2011-191835号公報
 ファイル(データソース)に対する処理を高速化するために、キー・バリュー型データをキャッシュとして利用することが考えられる。しかし、キー・バリュー型データのソースデータであるファイルを管理するファイルシステム等と、キー・バリュー型データを管理する分散KVS管理部等との連携が希薄であるという問題がある。
 分散KVSでは、キー・バリュー型データの生成時にファイルのレコード構造等の情報が失われるため、キー・バリュー型データをそのままファイルに反映することができない。したがって、分散KVSにおいて、ストレージ装置はメモリストアのキャッシュ又は冗長化のためのデータのコピーを格納する記憶領域として用いられるため、キー・バリュー型データがそのままストレージ装置に格納される。
 すなわち、従来技術では、キー・バリュー型データとデータソースとが対応付けて管理されていないため、キー・バリュー型データの更新をデータソースに反映するような仕組みは提供されていない。
 また、キー・バリュー型データの格納場所とファイルの格納場所とが対応づけられていないため、分散ファイルシステムによって管理される分散ファイルに分散KVSを採用した場合、サーバ間の通信負荷が増大するという問題がある。より具体的には、複数のサーバに配置される分散ファイルからキー・バリュー型データを生成し、又は、キー・バリュー型データを分散ファイルに反映する場合、複数のサーバの各々が、キー・バリュー型データの配置又は分散ファイルの配置を把握するために頻繁に通信を行う必要があり、サーバ間の通信負荷が増大するという問題がある。
 本発明は、前述した課題に鑑みてなされた発明である。データソースとキー・バリュー型データとを対応付けて管理することによって、更新されたキー・バリュー型データをデータソースに反映する仕組みを提供する。すなわち、ファイルI/O API及びキー・バリュー型データAPIのいずれでも同一の内容のデータにアクセス可能な仕組みを提供する。また、データソースとキー・バリュー型データとを対応付けて管理することによって、分散ファイルに分散KVSを採用する場合に、サーバ間の通信負荷を抑える仕組みを提供する。
 本発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して接続される複数の計算機を備える計算機システムであって、前記複数の計算機の各々は、プロセッサ、前記プロセッサに接続されるメモリ及び前記プロセッサに接続されるネットワークインタフェースを有し、複数のレコードを含むファイルを一以上格納するストレージ装置と接続し、前記ストレージ装置に格納される前記ファイルを管理するファイルシステムと、前記複数の計算機が有する記憶領域を統合することによってデータ格納領域を一つ以上生成し、前記データ格納領域に配置されたキーバリュー型データを管理するキーバリュー型データ管理部と、前記ファイルを分割して、検索キーと前記レコードの内容を示すバリューとを対応づけることによって前記キーバリュー型データを生成し、前記生成されたキーバリュー型データを前記データ格納領域に分散して格納するローダと、を有し、前記キーバリュー型データ毎に、前記検索キー、前記バリューのサイズ、及び前記キーバリュー型データに対応する前記レコードのファイルにおける位置が対応付けられたキーバリュー型データ構造情報を保持し、前記ローダは、更新された前記キーバリュー型データの前記ファイルへの反映を指示する永続化指示を受け付けた場合、前記複数の計算機の各々の前記キーバリュー型データ管理部に、前記更新されたキーバリュー型データを取得するための読出要求を送信し、前記キーバリュー型データ管理部は、前記読出要求を受信した場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを検索し、前記読出要求を送信した前記ローダに前記更新されたキーバリュー型データを送信し、前記ローダは、前記複数の計算機の各々のキーバリュー型データ管理部から取得された前記更新されたキーバリュー型データに基づいて、前記更新されたキーバリュー型データを反映させる処理対象のファイルを特定し、前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定し、前記特定された計算機に、前記更新されたキーバリュー型データを含むファイルの更新要求を送信し、前記ファイルシステムは、前記ファイルの更新要求を受信した場合、前記キーバリュー型データ構造情報に基づいて、前記更新されたキーバリュー型データに対応する前記レコードの前記ファイルにおける位置を特定し、前記特定されたファイルの位置に、前記更新されたキーバリュー型データを書き込むことによって前記ファイルを更新することを特徴とする。
 本発明によれば、キーバリュー型データ管理部がキーバリュー型データ構造情報に基づいて、ファイルとキー・バリュー型データとを対応付けて管理することができ、また、更新されたキーバリュー型データをファイルに反映することができる。したがって、ファイルI/O API及びキー・バリュー型データAPIのいずれでも同一の内容のデータにアクセスすることができる。
 上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
本発明の実施例1における計算機システムの構成例を示すブロック図である。 本発明の実施例1におけるファイルの構成例を示す説明図である。 本発明の実施例1におけるKV型データの構成例を示す説明図である。 本発明の実施例1におけるファイル管理情報の一例を示す説明図である。 本発明の実施例1におけるレコード定義情報の構成例を示す説明図である。 本発明の実施例1におけるUAPのソースプログラムの一例を示す説明図である。 本発明の実施例1のKV型データ管理情報及びKV型データの一例を示す説明図である。 本発明の実施例1のファイル配置情報の一例を示す説明図である。 本発明の実施例1のKV型データ構造情報の一例を示す説明図である。 本発明の実施例1におけるロード処理を説明するフローチャートである。 本発明の実施例1におけるKV型データの更新処理を説明するフローチャートである。 本発明の実施例1のKV型データ永続化処理の流れを説明するシーケンス図である。 本発明の実施例1における実行サーバ判定処理の一例を説明するフローチャートである。 本発明の実施例1のレコード更新処理の一例を説明するフローチャートである。 本発明の実施例1の変形例におけるファイル構成情報の一例を示す説明図である。 本発明の実施例1の変形例におけるファイル構成情報の登録処理の一例を説明するフローチャートである。 本発明の実施例1の変形例におけるロード処理の一例を説明するフローチャートである。 本発明の実施例2における計算機システムの構成例を示すブロック図である。 本発明の実施例2におけるファイル管理情報の一例を示す説明図である。 本発明の実施例2のKV型データ永続化処理の流れを説明するシーケンス図である。 本発明の実施例2におけるローダ決定処理の一例を説明するフローチャートである。 本発明の実施例2における一時リストの一例を説明する説明図である。 本発明の実施例2における実行サーバ判定処理の一例を説明するフローチャートである。 本発明の実施例2のレコード更新処理の一例を説明するフローチャートである。
 以下、実施例を図面を参照して詳細に説明する。
 [実施例1]
 図1は、本発明の実施例1における計算機システムの構成例を示すブロック図である。
 実施例1の計算機システムは、サーバ101、複数の分散KVSサーバ102、及びストレージ装置104、105から構成される。
 サーバ101は、ネットワーク103を介して複数の分散KVSサーバ102の各々と接続される。ネットワーク103は、LAN及びWAN等が考えられるが、本発明はネットワーク103の種別に限定されない。
 分散KVSサーバ102は、キー・バリュー・ストア(KVS)を構成する計算機である。各分散KVSサーバ102は、データソース(ファイル181)が格納されるストレージ装置105と接続する。ストレージ装置105は、例えば、HDD等の不揮発性記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置及び光ディスク装置等が考えられる。
 以下の説明では、「分散KVSサーバ102が管理するファイル181」との表現は、分散KVSサーバ102と接続されるストレージ装置105に格納されるファイル181を表すものとする。また、「ファイル181を管理する分散KVSサーバ102」との表現は、ファイル181を格納するストレージ装置105と接続される分散KVSサーバ102を表すものとする。
 本実施例では、複数の分散KVSサーバ102の各々が備える記憶領域を統合することによって、一つ以上のキャッシュ領域161が生成される。キャッシュ領域161には、ファイル181から生成されたキー・バリュー型データ171が格納される。以下の説明では、キー・バリュー型データ171をKV型データ171とも記載する。
 ここで、ファイル181とKV型データ171との関係について説明する。
 図2は、本発明の実施例1におけるファイル181の構成例を示す説明図である。図3は、本発明の実施例1におけるKV型データ171の構成例を示す説明図である。
 ファイル181は、UAP141等のアプリケーションによって処理されるデータの基本単位となる複数のレコードから構成される。図2に示す例では、ファイル181は、レコード201、レコード202、レコード203、及びレコード204を含む。
 各レコード201、202、203、204は複数のフィールドから構成される。フィールドには数値及び文字などの各種情報が格納される。図2に示す例では、各レコードは、フィールド211、フィールド212、及びフィールド213を含む。
 一般に、システムの制約の範囲内において、一つのファイルは任意の数のレコードを含むことができ、また、一つのレコードは任意の数のフィールドを含むことができる。例えば、商品取引業務で用いられるようなデータの場合、1件の取引における取引情報からレコードが構成され、口座番号、店番号、及び商品コード等の個々の情報(データ)がフィールドに記録される。
 一方、KV型データ171は、KV型データヘッダ情報301、キー302、及びバリュー303から構成される。
 KV型データヘッダ情報301は、KV型データの構成、及び同一ファイルから生成された他のKV型データとの関係を示す情報である。KV型データヘッダ情報301の詳細は図9を用いて説明する。キー302は、検索キーとなる情報である。バリュー303は、KV型データのデータ本体である。
 UAP141は、ファイル181又はKV型データ171を用いて所定の処理を実行する。本実施例では、ファイル181は、レコード単位に分割され、一つのレコードについて、任意のフィールドをキーとしてレコード本体をバリューとするKV型データが生成される。図1の説明に戻る。
 キャッシュ領域161は、分散KVSサーバ102から共有デバイスと同様にアクセスすることが可能である。また、レコード単位に分割されたファイル181のデータ、すなわち、KV型データ171は、複数の分散KVSサーバ102上に配置される。各UAP141は、それぞれ、自身が稼働する分散KVSサーバ102上に配置されたKV型データ171を用いて処理を実行する。
 前述したように、複数のUAP141の各々が、複数のKV型データ171を並列に処理することによって、一つのUAP141が処理するデータ量を削減することができる。したがって、処理の高速化を実現できる。
 また、本実施例では処理の対象のデータソースとしてファイル181を例に説明するが、本発明はこれに限定されず、データの格納形式は特に問わない。
 サーバ101は、プロセッサ111、メモリ112、及びインタフェース(I/F)113-1、113-2を備える。サーバ101は、インタフェース113-1を介してストレージ装置104と接続され、また、インタフェース113-2を介して複数の分散KVSサーバ102と接続される。
 プロセッサ111は、メモリ112に格納されるプログラムを実行する。プロセッサ111が、メモリ112に格納されるプログラムを実行することによって、サーバ101の機能が実現される。
 メモリ112は、プロセッサ111が実行するプログラム及び当該プログラムを実行するために必要なデータを格納する。メモリ112は、例えば、DRAMのような半導体メモリが考えられ、ストレージ装置104に比べ高速にアクセスすることができる。
 本実施例のメモリ112は、ファイルシステム131を実現するプログラムを格納する。ファイルシステム131は、ファイル単位のデータを管理する。本実施例のファイルシステム131は、各分散KVSサーバ102に接続されるストレージ装置105に格納されるファイル181を一元管理する。
 ストレージ装置104は、各種情報を格納し、例えば、HDD等の記憶媒体を複数備えるストレージシステム、フラッシュメモリを記憶媒体として用いた半導体ディスク装置及び光ディスク装置等が考えられる。本実施例のストレージ装置104には、複数のファイル管理情報132、及び複数のレコード定義情報133が格納される。
 ファイル管理情報132は、ファイル181のメタデータ等の管理情報を格納する。一つのファイル181に対して一つのファイル管理情報132が存在する。レコード定義情報133は、ファイル181を構成するレコードの管理情報を格納する。レコード定義情報133は、一つのファイル管理情報132と対応付けられて管理される。ファイル管理情報132及びレコード定義情報133の詳細は、図4、図5及び図6を用いて後述する。
 分散KVSサーバ102は、プロセッサ121、メモリ122、及びインタフェース(I/F)123-1、123-2を備える。分散KVSサーバ102は、インタフェース123-1を介してサーバ101及び他の分散KVSサーバ102と接続される。また、分散KVSサーバ102は、インタフェース123-2を介してストレージ装置105と接続される。
 本実施例では、各分散KVSサーバ102は同一の構成であるものとして説明するが、以下に説明する機能及び処理を実現できるものであれば、必ずしも同一の構成でなくてもよい。
 プロセッサ121は、メモリ122に格納されるプログラムを実行する。プロセッサ121が、メモリ122に格納されたプログラムを実行することによって後述する分散KVSサーバ102の機能が実現される。
 メモリ122は、プロセッサ121が実行するプログラム及び当該プログラムを実行するために必要なデータを格納する。メモリ122は、例えば、DRAMのような半導体メモリが考えられ、ストレージ装置105に比べ高速にアクセスすることができる。
 本実施例のメモリ122は、UAP(ユーザアプリケーションプログラム)141、並びに、分散KVS管理部142、ローダ143、及びファイルシステム144を実現するプログラムを格納する。また、メモリ122は、KV型データ管理情報151、ファイル配置情報152、及びKV型データ構造情報153を格納する。
 UAP141は、各種処理を実行する。ファイルシステム144は、ファイルシステム131と同一のものである。分散KVS管理部142は、他の分散KVSサーバ102の分散KVS管理部142と協調して、キャッシュ領域161を管理する。また、分散KVS管理部142は、キャッシュ領域161へのアクセスを制御する。ローダ143は、ストレージ装置105に格納されるファイル181からKV型データ171を生成し、KV型データ171をキャッシュ領域161に分散配置し、また、キャッシュ領域161に格納されるKV型データ171をストレージ装置105に格納する。
 以下の説明では、ストレージ装置105に格納されるファイル181をキャッシュ領域161に分散して配置する処理をロード処理と記載する。また、キャッシュ領域161に格納されるKV型データ171を、ストレージ装置105へ格納する処理をアンロード処理と記載する。
 KV型データ管理情報151は、キャッシュ領域161を構成する分散KVSサーバ102の記憶領域に格納されるKV型データ171を管理するための情報である。ファイル配置情報152は、キャッシュ領域161及びファイル181の対応関係を管理するための情報である。KV型データ構造情報153は、ファイル181のレコード及びKV型データ171の対応関係を管理するための情報である。
 KV型データ管理情報151、ファイル配置情報152、及びKV型データ構造情報153の詳細については、図7、図8、及び図9を用いて後述する。
 なお、メモリ112及びメモリ122に格納されるプログラム及びデータは、常にメモリ112及びメモリ122上に格納される必要はなく、図示しないストレージ装置又は図示しない外部記憶装置等に格納されてもよい。この場合、必要に応じて、プログラム又はデータがストレージ装置又は外部記憶装置からメモリ112、114に読み出される。なお、データを読み出す場合、データの一部又は全部を読み出すことができる。
 なお、ファイルシステム131、144、分散KVS管理部142は、図示しないオペレーティングシステム(OS)の一部、又は、図示しないユーザアプリケーションプログラムによって使用される入出力ライブラリとして提供されてもよい。
 なお、図1の分散KVSサーバ102は、物理的な計算機である必要はなく、論理計算機でもよい。この場合、プロセッサ121、メモリ122、及びインタフェース123等の計算機リソースは、仮想化プログラム(図示省略)等によって論理的な計算機リソースとして論理計算機に割り当てられる。
 なお、サーバ101は分散KVSサーバ102であってもよい。この場合、少なくとも一つの分散KVSサーバ102がファイル管理情報132及びレコード定義情報133を保持すればよい。また、図1では全ての分散KVSサーバ102がローダ143を備えているが、本発明はこれに限定されず、少なくとも一つの分散KVSサーバ102がローダ143を備えていればよい。
 図4は、本発明の実施例1におけるファイル管理情報132の一例を示す説明図である。
 ファイル管理情報132は、ファイルID401、パーミション402、オーナ403、サイズ404、タイムスタンプ405、レコード定義情報へのポインタ406、及び格納場所情報407を含む。
 ファイルID401は、ストレージ装置105に格納されるファイル181の識別情報を格納する。ファイルID401には、ファイル181を一意に識別できる情報であればどのような情報が格納されてもよい。例えば、フルパスのファイル名又はDBにおけるテーブル名などが格納される。本実施例ではファイルID401にはファイル名が格納されるものとする。
 パーミション402は、ファイル181のアクセス権限に関する情報を格納する。オーナ403は、ファイル181の所有者を示す情報を格納する。サイズ404は、ファイル181のサイズを示す情報を格納する。タイムスタンプ405は、ファイル181の更新日時を示す情報を格納する。
 レコード定義情報へのポインタ406は、ファイル181に対応するレコード定義情報133へのポインタを格納する。格納場所情報407は、ファイル181の格納場所に関する情報を格納する。本実施例では、各分散KVSサーバ102に接続されるストレージ装置105に複数のファイル181が格納されるため、格納場所情報407には、例えば、分散KVSサーバ102の識別子及びストレージ装置105の識別情報が格納される。
 図5は、本発明の実施例1におけるレコード定義情報133の構成例を示す説明図である。
 レコード定義情報133は、レコード構成501、フィールド構成502及びキー・フィールド番号503を含む。
 レコード構成501は、ファイル181におけるレコード構造を把握するための情報を格納し、レコード種別511及びレコード長512を含む。なお、レコード構成501には、レコード種別511及びレコード長512以外の情報が含まれてもよい。
 レコード種別511は、ファイル181におけるレコードが固定長レコード又は可変長レコードのいずれであるかを示す情報を格納する。レコード種別511に固定長レコードを示す情報が格納される場合、ファイル181は、同一かつ所定の長さのレコードから構成される。レコード種別511に可変長レコードを示す情報が格納される場合、ファイル181は、長さが異なるレコードから構成される。
 レコード長512は、レコード種別511に固定長レコードを示す情報が格納される場合に、一つのレコードの長さを示す情報を格納する。
 なお、レコード構成501にはレコードの構造を把握することができる情報が含まれていればよく、レコード種別511及びレコード長512の全ての情報を含む必要はない。フィールド構成502は、レコードに含まれるフィールドを識別するための情報を格納するものであり、フィールド数521及びフィールド情報522を含む。
 フィールド数521は、一つのレコードに含まれるフィールドの数を格納する。フィールド情報522は、各フィールドに記録されるデータに関する情報を格納し、フィールド種別531、サイズ532及び記述形式533を含む。
 フィールド種別531は、レコード種別511に可変長レコードを示す情報が格納される場合、当該レコードに対応するフィールドが可変長フィールド又は固定長フィールドのいずれであるかを示す情報を格納する。
 サイズ532は、フィールドの大きさを示す情報を格納する。記述形式533は、ASCII、バイナリ等、フィールドに記録されたデータの記述形式を格納する。
 なお、フィールド構成502は、レコードに含まれるフィールドを把握できればよいため、フィールド数521、及びフィールド情報522のすべての情報を含む必要はない。
 ファイル181が固定長レコードから構成される場合、レコード長512に設定された値によって個々のレコードを認識することができる。一方、ファイル181が可変長レコードから構成される場合、各レコードの先頭には、そのレコードの大きさを記録するフィールドが設けられ、当該フィールドに基づいてレコードの区切れを判定することができる。
 また、レコードが可変長レコードである場合、フィールド構成502に格納される情報に基づいて最初のフィールドが識別され、レコードサイズを算出することができる。レコードが認識された後は、フィールド構成502のフィールド数521、及びフィールド情報522のサイズ532を参照することによってフィールドを把握できる。
 図6は、本発明の実施例1におけるUAP141のソースプログラムの一例を示す説明図である。
 図6は、COBOL言語を用いて記述されたUAP141のソースコードを示す。COBOL言語を用いて記述されたUAP141では、プログラム中にデータソースとしてのファイルのレコード構造が定義される。
 図6に示す例では、DATA DIVISIONのFILE SECTION602においてファイルの構造が定義される。プログラムに用いられる各ファイルは、一つのファイル記述項(FD)と、それに続く一つ以上のレコード記述項とによって定義される。本実施例において、レコード定義情報133のレコード構成501及びフィールド構成502には、FILE SECTION602に記述された情報が格納される。
 図7は、本発明の実施例1のKV型データ管理情報151及びKV型データ171の一例を示す説明図である。
 KV型データ管理情報151は、各分散KVSサーバ102にKV型データ171を配置されるときに生成される。このとき、KV型データリストも生成される。KV型データリストは、各分散KVSサーバ102に配置されたKV型データ171をキーの順番に並べたリストである。また、本実施例では、KV型データ171の更新時にダーティリストが生成又は更新される。分散KVS管理部142又はローダ143等は、ダーティリストに基づいて更新されたKV型データ171を把握することができる。
 まず、KV型データヘッダ情報301について説明する。KV型データヘッダ情報301は、フラグ711、next712、及びダーティリストnext713を含む。
 フラグ711は、KV型データ171が更新されたことを示すフラグを格納する。本実施例では、KV型データ171の更新前のフラグ711には「0」が設定され、KV型データ171の更新後のフラグ711には「1」が設定されるものとする。
 next712は、KV型データリストにおける当該KV型データ171の次のKV型データ171へのポインタを格納する。これによって、KV型データリストに含まれる全てのKV型データ171をたどることができる。ダーティリストnext713は、後述するダーティリストにおける当該KV型データ171の次のKV型データ171へのポインタを格納する。
 本実施例では、KV型データリスト及びダーティリストのそれぞれ独立した二つのリストが生成される。KV型データリストに基づいて、一つのファイル181から生成され、分散配置されたKV型データ171を把握できる。また、ダーティリストに基づいて、一つのファイル181から生成され、分散配置されたKV型データ171のうち、更新されたKV型データ171を把握できる。
 次に、KV型データ管理情報151について説明する。KV型データ管理情報151は、キャッシュ領域ID701、ファイルID702、KV型データリストポインタ703、及びダーティリストポインタ704を含む。
 キャッシュ領域ID701は、キャッシュ領域161の識別情報を格納する。ファイルID702は、KV型データ171のソースであるファイル181の識別情報を格納する。KV型データリストポインタ703は、KV型データリストにおける最初のKV型データ171へのポインタを格納する。ダーティリストポインタ704は、ダーティリストにおける最初のKV型データ171へのポインタを格納する。
 図8は、本発明の実施例1のファイル配置情報152の一例を示す説明図である。
 ファイル配置情報152は、キャッシュ領域161毎に、当該キャッシュ領域161に格納されるKV型データ171のソースであるファイル181の情報を格納する。具体的には、ファイル配置情報152は、キャッシュ領域ID801、ファイルID802、及び、KV型データ構造情報へのポインタ803を含む。
 キャッシュ領域ID801は、キャッシュ領域161を識別するための識別情報を格納する。ファイルID802は、キャッシュ領域ID801に対応するキャッシュ領域161にKV型データ171として格納されるファイル181の識別情報を格納する。本実施例では、ファイル名が格納される。KV型データ構造情報へのポインタ803は、ファイル配置情報152のエントリに対応するKV型データ構造情報153へのポインタを格納する。
 図9は、本発明の実施例1のKV型データ構造情報153の一例を示す説明図である。
 KV型データ構造情報153は、KV型データ171毎に、当該KV型データ171に対応するレコードの構造に関する情報を格納する。具体的には、KV型データ構造情報153は、ID901、キー902、バリューサイズ903、及びオフセット904を含む。
 ID901は、KV型データ構造情報153のエントリを一意に識別するための識別番号を格納する。KV型データ構造情報153のエントリは、ファイルID802に対応するファイル181から生成された一つのKV型データ171に対応する。
 キー902は、ファイルID802に対応するファイル181から生成されたKV型データ171のキーの情報を格納する。バリューサイズ903は、KV型データ171のサイズを格納する。オフセット904は、ファイルID802に対応するファイル181上の、KV型データ171に対応するレコードの位置を示す情報を格納する。
 図10は、本発明の実施例1におけるロード処理を説明するフローチャートである。
 ローダ143は、UAP141から任意のファイル181のキャッシュ領域161へのロード指示を受け付けると処理を開始する。ロード指示には、処理対象のファイル181の識別情報(ファイルID)及びKV型データ171のキーとして用いるフィールドの情報が含まれる。また、ロード指示には、KV型データ171を配置するキャッシュ領域161の識別情報(キャッシュ領域ID)も含まれる。
 なお、以下の説明ではKV型データ171が配置されるキャッシュ領域161が生成されていないものとする。
 ローダ143は、処理対象のファイル181のファイル管理情報132及びレコード定義情報133を取得する(ステップS1001)。具体的には以下のような処理が実行される。
 ローダ143は、ファイルシステム144に処理対象のファイルオープンを指示する。ファイルシステム144は、当該ファイルオープンの指示を受け付けると、処理対象のファイルのファイル管理情報132及びレコード定義情報133のキャッシュを保持しているか否かを判定する。
 処理対象のファイル181のファイル管理情報132及びレコード定義情報133のキャッシュを保持していると判定された場合、ファイルシステム144は、ローダ143に対して、ファイルオープンに対する戻り値とともに、キャッシュされているファイル管理情報132及びレコード定義情報133を応答する。
 一方、処理対象のファイルのファイル管理情報132及びレコード定義情報133のキャッシュを保持していないと判定された場合、ファイルシステム144は、サーバ101のファイルシステム131にファイル管理情報132及びレコード定義情報133の取得要求を送信する。当該取得要求には、ファイルIDが含まれる。
 サーバ101のファイルシステム131は、ファイルID401が取得要求に含まれるファイルIDと一致するファイル管理情報132を検索する。ファイルシステム131は、検索されたファイル管理情報132のレコード定義情報へのポインタ406に基づいて、ファイル管理情報132に対応するレコード定義情報133を取得する。ファイルシステム131は、分散KVSサーバ102のファイルシステム144に、ファイル管理情報132及びレコード定義情報133を送信する。
 ファイルシステム144は、ファイル管理情報132及びレコード定義情報133を受信すると、受信したファイル管理情報132及びレコード定義情報133をキャッシュに保持する。また、ファイルシステム144は、ローダ143に対して、ファイルオープンに対する戻り値とともに、ファイル管理情報132及びレコード定義情報133を応答する。
 なお、戻り値としては処理対象のファイル181へのアクセスに必要な情報が含まれる。例えば、ファイル管理情報132の格納場所情報407が戻り値として格納される。以上がステップS1001の処理の説明である。
 次に、ローダ143は、取得されたファイル管理情報132の格納場所情報407に基づいて処理対象のファイル181を取得する(ステップS1002)。具体的には、以下のような処理が実行される。
 ローダ143は、ファイルシステム144にファイルID及び格納場所情報407を含む読出要求を発行する。このとき、ファイルシステム144は以下のような処理を実行する。
 ファイルシステム144は、ロード処理を実行するローダ143が稼働する分散KVSサーバ102が処理対象のファイル181を管理しているか否かを判定する。以下の説明では、ロード処理を実行するローダ143が稼働する分散KVSサーバ102を自分散KVSサーバ102とも記載する。
 自分散KVSサーバ102が処理対象のファイル181を管理する場合、ファイルシステム144は、ファイルID及び格納場所情報407に基づいて、自分散KVSサーバ102と接続されるストレージ装置105から処理対象のファイル181を読み出し、ローダ143に応答する。
 一方、自分散KVSサーバ102が処理対象のファイル181を管理していない場合、ファイルシステム144は、格納場所情報407に基づいて、処理対象のファイル181を管理する分散KVSサーバ102を特定する。
 さらに、ファイルシステム144は、特定された分散KVSサーバ102のファイルシステム144に読出要求を送信する。読出要求には、格納場所情報407及びファイルIDが含まれる。ここでは、読出要求を送信したファイルシステム144をリクエスト側ファイルシステム144と記載し、読出要求を受信したファイルシステム144をレスポンス側ファイルシステム144と記載する。
 レスポンス側ファイルシステム144は、読出要求を受け付けつけると、当該読出要求に含まれるファイルID及び格納場所情報407に基づいて、ストレージ装置105から処理対象のファイル181を読み出す。レスポンス側ファイルシステム144は、リクエスト側ファイルシステム144に、読み出された処理対象のファイル181を送信する。リクエスト側ファイルシステム144は、ローダ143に読み出されたファイル181を応答する。以上の処理によって、ローダ143は、自分散KVSサーバ102以外の分散KVSサーバ102が管理するファイル181を取得できる。以上がステップS1002の説明である。
 次に、ローダ143は、分散KVS管理部142にキャッシュ領域161の生成要求を送信する(ステップS1003)。その後、ローダ143は、分散KVS管理部142からの応答を受け付けるまで待ち状態となる。生成要求には、ロード指示に含まれるキャッシュ領域161の識別情報を生成要求に含める。
 なお、分散KVS管理部142は、他の分散KVSサーバ102の分散KVS管理部142と連携してキャッシュ領域を生成する。キャッシュ領域161の生成処理は公知の技術を用いればよいため詳細な説明は省略する。このとき、キャッシュ領域161の管理情報(図示省略)もあわせて生成される。キャッシュ領域161の管理情報(図示省略)には、キャッシュ領域161の識別情報、キャッシュ領域161の全容量、分散KVSサーバ102の識別情報、及び当該分散KVSサーバ102におけるキャッシュ領域161を構成する記憶領域の容量等が格納される。
 ローダ143は、キャッシュ領域161が正常に生成されたか否かを判定する(ステップS1004)。例えば、ローダ143は、分散KVS管理部142から生成完了の通知を受けつけた場合、キャッシュ領域161が正常に生成されたと判定する。一方、ローダ143は、分散KVS管理部142から生成失敗の通知を受けつけた場合、又は、分散KVS管理部142から一定時間応答がない場合、キャッシュ領域161が正常に生成されなかったと判定する。
 キャッシュ領域161が正常に生成されなかったと判定された場合、ローダ143は、異常終了する(ステップS1011)。例えば、ローダ143は、ロード処理が失敗した旨をUAP141に通知する。
 キャッシュ領域161が正常に生成されたと判定された場合、ローダ143は、ファイル配置情報152に処理対象のファイル181のエントリを登録する(ステップS1005)。具体的には、ローダ143は、ファイル配置情報152にエントリを追加する。ローダ143は、追加されたエントリのキャッシュ領域ID801に新たに生成されたキャッシュ領域161の識別情報を設定し、ファイルID802にファイル管理情報132のファイルID401に格納される情報を設定する。
 ローダ143は、取得されたファイル181及びキーとして用いられるフィールドの情報に基づいて、KV型データ171を生成し(ステップS1006)、また、KV型データ構造情報153を生成する(ステップS1007)。具体的には、以下のような処理が実行される。
 ローダ143は、レコード定義情報133を参照してファイル181のレコード構造を把握する。ローダ143は、把握したレコードの構造に基づいて、指定されたフィールドからキーを生成し、また、KV型データ171を生成する。
 また、ローダ143は、キーの値に基づいてKV型データ171を配置する分散KVSサーバ102を決定する。このとき、分散KVS管理部142は、キーの範囲及び分散KVSサーバ102の識別子が対応付けられるマップを生成する。
 なお、キーの範囲は、例えば、コンシステント・ハッシュ法を用いて決定する方法が考えられる。また、予め、キーの範囲を決定し、キーの範囲に関する情報を保持してもよい。
 ローダ143は、生成されたKV型データ171の数だけ、KV型データ構造情報153にエントリを生成し、生成されたエントリのID901に「1」から順に識別番号を設定する。
 ローダ143は、生成されたKV型データ171を一つ選択する。ローダ143は、レコード定義情報133を参照して、選択されたKV型データ171に対応するレコードのデータサイズ、及び処理対象のファイル181におけるレコードの位置を特定する。
 ローダ143は、空のエントリのキー902に選択されたKV型データ171のキーを設定し、バリューサイズ903にKV型データ171のサイズを設定し、また、オフセット904にKV型データ171に対応するレコードのファイル181における位置を示す情報を設定する。以上が、ステップS1006及びステップS1007の処理の説明である。
 ローダ143は、キーの範囲にしたがって生成されたKV型データ171の配置先となる分散KVSサーバ102を決定し、決定された分散KVSサーバ102にKV型データ171の配置要求を送信する(ステップS1008)。具体的には、ローダ143は、決定された分散KVSサーバ102のローダ143に配置要求を送信する。なお、配置要求には、マップ、所定のキーの範囲に含まれるKV型データ171、ファイル配置情報152、及びKV型データ構造情報153が含まれるものとする。
 ローダ143は、キャッシュ領域161を構成する記憶領域に自身が担当するキーの範囲のKV型データ171を配置する(ステップS1009)。このとき、ローダ143は、KV型データリスト及びKV型データ管理情報151を生成する。具体的には、ローダ143は、KV型データヘッダ情報301をキーの順番に従ってソートし、当該ソートの結果に基づいて、各KV型データヘッダ情報301のnext712に他のKV型データ171へのポインタを設定する。さらに、分散KVS管理部142は、KV型データ管理情報151を生成し、ファイルID702にファイル181の識別情報を設定し、KV型データリストポインタ703にKV型データリストにおける最初のKV型データ171へのポインタを設定する。
 ローダ143は、ファイル配置情報152のKV型データ構造情報へのポインタ803に、KV型データ構造情報153へのポインタを設定し(ステップS1010)、処理を終了する。
 なお、他の分散KVSサーバ102のローダ143は、配置要求を受信した場合、ステップS1009及びステップS1010と同一の処理を実行する。
 図11は、本発明の実施例1におけるKV型データ171の更新処理を説明するフローチャートである。
 分散KVS管理部142は、UAP141からKV型データ171の更新要求を受け付ける(ステップS1101)。更新要求には、更新対象のKV型データ171のキー及び更新データが含まれる。
 分散KVS管理部142は、当該分散KVS管理部142が更新対象のKV型データ171を管理するか否かを判定する(ステップS1102)。具体的には、分散KVS管理部142は、キーに基づいてマップを参照し、更新対象のKV型データ171を管理する分散KVSサーバ102を特定し、特定された分散KVSサーバ102が当該分散KVS管理部142が稼働する分散KVSサーバ102であるか否かを判定する。
 分散KVS管理部142が更新対象のKV型データ171を管理すると判定された場合、分散KVS管理部142は、更新対象のKV型データ171の更新処理を実行する(ステップS1103)。KV型データ171の更新処理は公知の処理であるため詳細な説明を省略する。
 分散KVS管理部142は、更新されたKV型データ171にフラグを設定し、また、ダーティリストに当該KV型データ171を登録する(ステップS1104)。具体的には、以下のような処理が実行される。
 分散KVS管理部142は、KV型データヘッダ情報301のフラグ711に「1」を設定し、ダーティリストが生成されているか否かを確認する。
 ダーティリストが生成されていない場合、分散KVS管理部142は、ダーティリストを生成する。分散KVS管理部142は、ダーティリストにステップS1103において更新されたKV型データ171を追加する。
 ダーティリストが生成されている場合、分散KVS管理部142は、ダーティリストの最後のKV型データ171のダーティリストnext713に、更新されたKV型データ171へのポインタを設定し、また、ダーティリストの最後に更新されたKV型データ171を追加する。以上がステップS1104の処理の説明である。
 ステップS1102において、他の分散KVSサーバ102が更新対象のKV型データ171を管理する場合、分散KVS管理部142は、他の分散KVSサーバ102にKV型データ171の更新要求を送信し(ステップS1105)、その後ステップS1106に進む。KV型データ171の更新要求には、更新対象のKV型データ171のキー及び更新データが含まれる。
 他の分散KVSサーバ102の分散KVS管理部142は、KV型データ171の更新要求を受信すると、ステップS1103及びステップS1104と同一の処理を実行し、更新要求を送信した分散KVS管理部142に実行結果を送信する。
 分散KVS管理部142は、KV型データ171を正常に更新できたか否かを判定する(ステップS1106)。
 KV型データ171を正常に更新できたと判定された場合、分散KVS管理部142は、処理を終了する。KV型データ171を正常に更新できなかったと判定された場合、分散KVS管理部142は、異常終了する(ステップS1107)。例えば、分散KVS管理部142は、KV型データ171の更新処理が失敗した旨をUAP141に通知する。
 本実施例では、図11を用いて説明したように、分散KVS管理部142は、更新されたKV型データ171に更新されたことを示すフラグを付与し、また、更新されたKV型データ171のリスト(ダーティリスト)を生成する。これによって、更新されたKV型データ171を特定することが可能となる。
 図12は、本発明の実施例1のKV型データ永続化処理の流れを説明するシーケンス図である。
 一つの分散KVSサーバ102上のUAP141が、ローダ143に対して、更新されたKV型データ171のファイル181への反映を指示する永続化指示を送信する(ステップS1201)。永続化指示には処理対象のキャッシュ領域161の識別情報が含まれる。
 以下の説明において、永続化指示を最初に受け付けた分散KVSサーバ102に含まれるローダ143、分散KVS管理部142、及びファイルシステム144をマスタローダ143、マスタ分散KVS管理部142、及びマスタファイルシステム144とも記載する。また、それ以外の分散KVSサーバ102に含まれるローダ143、分散KVS管理部142、及びファイルシステム144をスレーブローダ143、スレーブ分散KVS管理部142、及びスレーブファイルシステム144とも記載する。なお、マスタローダ143及びスレーブローダ143を区別しない場合にはローダ143と記載し、マスタ分散KVS管理部142及びスレーブ分散KVS管理部142を区別しない場合には分散KVS管理部142と記載し、マスタファイルシステム144及びスレーブファイルシステム144を区別しない場合にはファイルシステム144と記載する。
 マスタローダ143は、処理対象のキャッシュ領域161に格納されるKV型データ171の読出要求をマスタ分散KVS管理部142に送信する(ステップS1202)。読出要求には処理対象のキャッシュ領域161の識別情報が含まれる。
 マスタ分散KVS管理部142は、処理対象のキャッシュ領域161を構成する分散KVSサーバ102を特定し、特定された分散KVSサーバ102の分散KVS管理部142に読出要求を送信する(ステップS1203)。読出要求には処理対象のキャッシュ領域161の識別情報が含まれる。
 例えば、マスタ分散KVS管理部142は、キャッシュ領域161の管理情報(図示省略)に基づいて、処理対象のキャッシュ領域161を構成する分散KVSサーバ102を特定できる。なお、マスタ分散KVS管理部142が処理対象のキャッシュ領域161を構成する場合、マスタ分散KVS管理部142は自分自身にも読出要求を送信する。ここでは、マスタ分散KVS管理部142及びスレーブ分散KVS管理部142の両方に読出要求が送信されるものとする。
 分散KVS管理部142は、読出要求を受け付けると、処理対象のキャッシュ領域161に格納されるKV型データ171の中から更新されたKV型データ171を特定する(ステップS1204)。具体的には、分散KVS管理部142は、KV型データ管理情報151を参照して、キャッシュ領域ID701に処理対象のキャッシュ領域161の識別情報が格納されるKV型データ管理情報151を検索する。分散KVS管理部142は、検索されたKV型データ管理情報151のダーティリストポインタ704に基づいて、ダーティリストに登録されるKV型データ171を特定する。
 マスタ分散KVS管理部142及びスレーブ分散KVS管理部142は、特定されたKV型データ171をマスタ分散KVS管理部142に送信する(ステップS1205)。
 マスタ分散KVS管理部142は、更新されたKV型データ171の読み出しが完了した旨をマスタローダ143に応答する(ステップS1206)。
 マスタローダ143は、実行サーバ判定処理を実行する(ステップS1207)。実行サーバ判定処理は、更新されたKV型データ171をファイル181に反映させる実行サーバ(分散KVSサーバ102)を決定するための処理である。実行サーバ判定処理の詳細は、図13を用いて後述する。
 マスタローダ143は、実行サーバ判定処理によって決定された分散KVSサーバ102にレコード更新要求を送信する(ステップS1208)。レコード更新要求には、処理対象のファイル181の識別情報、及び更新されたKV型データ171が含まれる。
 マスタローダ143が含まれる分散KVSサーバ102が実行サーバとして決定された場合、マスタローダ143は、マスタファイルシステムに144にレコード更新要求を送信する。また、他の分散KVSサーバ102が実行サーバとして決定された場合、マスタローダ143は、他の分散KVSサーバ102のスレーブローダ143にレコード更新要求を送信する。スレーブローダ143は、当該要求をスレーブファイルシステム144に送信する。
 ファイルシステム144は、レコード更新要求を受信すると、更新されたKV型データ171をファイル181に反映させためにレコード更新処理を実行する(ステップS1209)。レコード更新処理の詳細については、図14を用いて後述する。
 ファイルシステム144は、レコード更新処理が終了した後、マスタローダ143に処理が完了した旨を通知してもよい。この場合、マスタローダ143は、UAP141に処理が正常に終了した旨を通知する。
 図13は、本発明の実施例1における実行サーバ判定処理の一例を説明するフローチャートである。
 マスタローダ143は、マスタ分散KVS管理部142からKV型データ171の読み出しが完了した旨の応答を受け付けると実行サーバ判定処理を開始する。まず、マスタローダ143は、処理対象のキャッシュ領域161に格納されるKV型データ171に対応するファイル181を特定する(ステップS1301)。具体的には、以下のような処理が実行される。
 マスタローダ143は、ファイル配置情報152を参照し、キャッシュ領域ID801が処理対象のキャッシュ領域161の識別情報と一致するエントリを検索する。マスタローダ143は、検索されたエントリのファイルID802に基づいてKV型データ171に対応するファイル181を特定する。
 マスタローダ143は、マスタファイルシステム144に処理対象のファイル181のオープンを指示する。ファイルシステム144は、ファイルオープンに対する戻り値とともに、キャッシュされているファイル管理情報132及びレコード定義情報133を応答する。以上がステップS1301の処理の説明である。
 次に、マスタローダ143は、ファイル管理情報132の格納場所情報407を参照して、処理対象のファイル181を管理する分散KVSサーバ102を特定し、特定された分散KVSサーバ102を実行サーバとして決定する(ステップS1302)。また、マスタローダ143は、実行サーバとして決定された分散KVSサーバ102のローダ143にレコード更新要求を送信し(ステップS1303)、処理を終了する。
 図14は、本発明の実施例1のレコード更新処理の一例を説明するフローチャートである。
 ファイルシステム144は、ローダ143からレコード更新要求を受信するとレコード更新処理を開始する。まず、ファイルシステム144は、処理対象のファイル181に対応するKV型データ構造情報153を取得する(ステップS1401)。具体的には、ファイルシステム144は、ファイル配置情報152を参照し、ファイルID802が処理対象のファイル181の識別情報と一致するエントリを検索する。ファイルシステム144は、検索されたエントリのKV型データ構造情報153へのポインタ803を参照して、KV型データ構造情報153を取得する。
 ファイルシステム144は、KV型データ171のループ処理を開始する(ステップS1402)。ファイルシステム144は、レコード更新要求に含まれるKV型データ171を一つ選択する。
 ファイルシステム144は、KV型データ171に対応するレコードの処理対象のファイル181における位置を特定し、特定された位置にKV型データ171を書き込む(ステップS1403)。具体的には、以下のような処理が実行される。
 ファイルシステム144は、取得されたKV型データ構造情報153を参照し、キー902が選択されたKV型データ171のキー302と一致するエントリを検索する。ファイルシステム144は、検索されたエントリのバリューサイズ903及びオフセット904に基づいて、更新されたKV型データ171に対応するレコードの処理対象のファイル181における位置を特定する。
 ファイルシステム144は、更新されたKV型データ171を特定された位置に上書きすることによって、更新されたKV型データ171を処理対象のファイル181に反映させる。以上がステップS1403の処理の説明である。
 次に、ファイルシステム144は、レコード更新要求に含まれる全てのKV型データ171について処理が完了した否かを判定する(ステップS1404)。
 全てのKV型データ171について処理が完了していないと判定された場合、ファイルシステム144は、ステップS1402に戻り同様の処理を実行する。全てのKV型データ171について処理が完了したと判定された場合、ファイルシステム144は、処理を終了する。
 ここまで、既存のKV型データ171の更新について説明したが、新たなKV型データ171の追加及びKV型データ171の削除についても同様の処理を適用することができる。
 (KV型データ171の追加)
 KV型データの追加処理は、図11に示すKV型データ更新処理とほぼ同様であるが、一部処理が異なる。
 まず、KV型データの追加処理では、UAP141は分散KVS管理部142及びローダ143に新規KV型データ171の追加要求を送信する。
 ステップS1101、ステップS1102の処理は同一の処理である。
 ステップS1103において、分散KVS管理部142は、キャッシュ領域161にKV型データ171を追加する。
 ステップS1104において、分散KVS管理部142は、KV型データヘッダ情報301のフラグ711に「1」を設定する。KV型データリストへの新規KV型データ171の追加処理はステップS1104において説明した処理と同一である。
 ステップS1105以降の処理は図11に示す処理と同一の処理である。
 一方、ローダ143は、新規KV型データ171の追加要求の受信後、KV型データ構造情報153にエントリを追加し、追加されたエントリのID901に識別番号を設定し、キー902及びバリューサイズ903のそれぞれに値を設定する。分散KVS管理部142は、追加されたエントリの一つ上のエントリのバリューサイズ903及びオフセット904に基づいて、追加されたKV型データ171のファイルにおけるオフセットを算出する。以下の説明では、追加されたエントリの一つ上のエントリを上位エントリとも記載する。
 例えば、上位エントリのオフセット904にバリューサイズ903を加算することによって算出された値を追加されたエントリのオフセット904に設定する方法が考えられる。
 その他の処理は実施例1の処理と同一であるため説明を省略する。
 (KV型データ171の削除)
 KV型データの削除処理は、図11に示す処理とほぼ同様であるが、一部処理が異なる。
 ステップS1101、ステップS1102の処理は図11に示す処理と同一の処理である。
 ステップS1103において、分散KVS管理部142は、キャッシュ領域161からKV型データ171を削除する。このとき、分散KVS管理部142は、バリュー303のみを削除し、キー302及びKV型データヘッダ情報301はそのまま保持する。前述した処理以外に、バリュー303を無効化する処理、又はバリュー303に「0」等のデータを書き込むなどの処理が考えられる。
 ステップS1104において、分散KVS管理部142は、KV型データヘッダ情報301のフラグ711に、KV型データの削除を示す「-1」を設定する。また、分散KVS管理部142は、KV型データリストからKV型データ171を削除する。KV型データリストの更新方法は公知のものであるため詳細な説明を省略するが、削除されたKV型データ171へのポインタを他のKV型データ171へのポインタに変更する方法が考えられる。
 ステップS1105以降の処理は図11に示す処理と同一の処理である。
 KV型データ永続化処理は、図12に示す処理とほぼ同様であるが、一部処理が異なる。
 ステップS1201からステップS1203の処理は図12に示す処理と同一の処理である。
 ステップS1204において、マスタ分散KVS管理部142及びスレーブ分散KVS管理部142は、それぞれ、ダーティリストを参照して、更新されたKV型データ171及び削除されたKV型データ171を特定し、キャッシュ領域161から特定されたKV型データ171を読み出す。
 ステップS1205において、マスタ分散KVS管理部142及びスレーブ分散KVS管理部142は、それぞれ、特定されたKV型データ171をマスタ分散KVS管理部142に送信した後、フラグ711に「-1」が設定されるKV型データ171をキャッシュ領域161から削除する。ステップS1206以降の処理の流れは実施例1と同一であるが、実行サーバ判定処理及びレコード更新処理の一部内容が異なる。
 実行サーバ判定処理では、マスタローダ143は、読み出されたKV型データ171を、更新されたKV型データ171と、削除されたKV型データ171とに分ける。具体的には、マスタローダ143は、KV型データ171のKV型データヘッダ情報301のフラグ711を参照して、フラグ711が「1」であるKV型データ171と、フラグ711が「-1」であるKV型データ171とに分ける。
 マスタローダ143は、更新されたKV型データ171に対してステップS1301からステップS1303の処理を実行し、また、削除されたKV型データ171に対してステップS1301からステップS1303の処理を実行する。すなわち、ファイル181のレコードの更新を指示するレコード更新要求と、ファイル181からのレコードの削除を指示するレコード更新要求との二つのレコード更新要求が送信されることとなる。
 分散KVSサーバ102がファイル181のレコードの更新を指示するレコード更新要求を受信した場合、実施例1と同一の処理が実行される。一方、分散KVSサーバ102がファイル181のレコードの削除を指示するレコード更新要求を受け付けた場合以下のような処理が実行される。
 ステップS1401及びステップS1402の処理は図14に示す処理と同一の処理である。
 ステップS1403において、ファイルシステム144は、削除されたKV型データ171に対応するレコードの処理対象のファイル181における位置を特定し、特定された位置からバリューサイズ903分のデータを削除する。
 具体的には、ファイルシステム144は、検索されたエントリのバリューサイズ903及びオフセット904に基づいて、削除されたKV型データ171に対応するレコードの処理対象のファイル181における位置を特定する。
 ファイルシステム144は特定された位置(オフセット)からバリューサイズ903分のデータを削除する。さらに、ファイルシステム144は、KV型データ構造情報153から検索されたエントリを無効化する。
 その他の処理は実施例1の処理と同一であるため説明を省略する。
 実施例1によれば、KV型データ171の更新又は削除結果をファイル(データソース)に反映することができる。これによって、ファイルシステムと分散KVSとの連携が可能となり、ファイルI/O API及びKV型データAPIのいずれを用いても同一内容のデータにアクセスすることが可能となる。
 (変形例)
 実施例1では、ファイル管理情報132及びレコード定義情報133を用いてファイル181のレコード構造を把握していたが、予め、分散KVSサーバ102にファイル181のレコード定義情報を設定してもよい。
 図15は、本発明の実施例1の変形例におけるファイル構成情報1500の一例を示す説明図である。
 ファイル構成情報1500は、ファイル181、レコード、及びKV型データ171のキーとして用いられたフィールドの対応関係を管理する情報であり、ファイルID1501、レコード定義情報1502、及びキー・フィールド番号1503を含む。変形例では、ファイル構成情報1500が予め分散KVSサーバ102に登録される。
 ファイルID1501は、ストレージ装置105に格納されるファイル181の識別情報を格納する。ファイルID1501は、ファイルID401と同一のものである。レコード定義情報1502は、ファイル181を構成するレコードの管理情報を格納する。レコード定義情報1502は、レコード定義情報133と同一のものである。キー・フィールド番号1503は、ファイル181から生成されたKV型データ171のキーとして用いられたフィールドの識別番号を格納する。KV型データ171が生成される前は、キー・フィールド番号1503は空欄である。
 図16は、本発明の実施例1の変形例におけるファイル構成情報1500の登録処理の一例を説明するフローチャートである。
 ファイル181がストレージ装置105に格納される場合に、ファイル構成情報1500の登録処理が実行される。
 ファイルシステム144は、ファイル181及びユーザによって定義されたファイル181のレコード定義情報を受け付ける(ステップS1601)。
 ファイルシステム144は、ファイル181の内容とレコード定義情報とを比較し、整合性を確認し(ステップS1602)、ファイル181の内容とレコード定義情報とが整合しているか否かを判定する(ステップS1603)。
 ファイル181の内容とレコード定義情報とが整合していないと判定された場合、ファイルシステム144は、ファイル構成情報1500の登録が失敗した旨を通知し(ステップS1605)、処理を終了する。
 ファイル181の内容とレコード定義情報とが整合していると判定された場合、ファイルシステム144は、ファイル構成情報1500にファイル181及びレコード定義情報を対応付けて登録し(ステップS1604)、処理を終了する。具体的には、ファイルシステム144はファイル構成情報1500にエントリを追加する。ファイルシステム144は、追加されたエントリのファイルID1501にファイル181の識別情報を設定し、また、追加されたエントリのレコード定義情報1502に受け付けたレコード定義情報を設定する。この時点では、ファイル181に対応するKV型データ171が生成されていないため、キー・フィールド番号1503は空欄となっている。
 なお、ファイルシステム144は、他の分散KVSサーバ102のファイルシステム144に追加されたエントリの情報を通知する。他の分散KVSサーバ102のファイルシステム144は、当該通知に従って、ファイル構成情報1500を更新する。
 図17は、本発明の実施例1の変形例におけるロード処理の一例を説明するフローチャートである。以下、実施例1との差異を中心に説明する。
 変形例では、ファイル管理情報132及びレコード定義情報133の代わりに、ファイル構成情報1500を用いるため、ステップS1001の処理は省略される。
 ローダ143は、ファイル181を取得した後、ファイル181の内容とキーとして用いられるフィールドの情報との整合性を確認し(ステップS1701)、ファイル181の内容とフィールドの情報とが整合しているか否かを判定する(ステップS1702)。
 ファイル181の内容とフィールドの情報とが整合していないと判定された場合、ローダ143は、ステップS1011に進む。
 ファイル181の内容とフィールドの情報とが整合していると判定された場合、ローダ143は、ファイル構成情報を更新し、さらに、分散KVS管理部142にキャッシュ領域161の生成要求を送信する(ステップS1703)。具体的には、ローダ143は、ファイル構成情報1500を参照し、ファイルID1501が処理対象のファイル181の識別情報と一致するエントリを検索する。ローダ143は、検索されたエントリのキー・フィールド番号1503に指定されたフィールドの情報を設定する。
 ステップS1007では、ファイル構成情報1500に基づいてKV型データ171が生成される。その他の処理は実施例1と同一であるため説明を省略する。
 [実施例2]
 実施例2では、一つのファイル181が複数のサブファイル1811に分割され、複数の分散KVSサーバ102に接続されるストレージ装置105にサブファイル1811が格納される点が異なる。以下、実施例1との差異を中心に実施例2について説明する。
 図18は、本発明の実施例2における計算機システムの構成例を示すブロック図である。実施例2の計算機システムは、実施例1の計算機システムと同一の構成である。実施例2では、ストレージ装置105にサブファイル1811が格納される点が異なる。また、実施例1では少なくとも一つの分散KVSサーバ102がローダ143を備えていればよいが、実施例2では、全ての分散KVSサーバ102がローダ143を備えていることを前提とする。
 サブファイル1811は、一つのファイル181が分割されたファイルデータであり、当該ファイル181をブロック単位に分割したデータ(ブロックデータ)から構成される。一つのブロックデータには、複数のレコードを含むことができる。ただし、ブロックのサイズとレコードのサイズとは一致しない場合があるため、一つのレコードのデータが複数のブロックデータに含まれる場合がある。
 本実施例では、ファイルシステム131が、ファイル181をストレージ装置105に格納する場合、ファイル181を所定の大きさのブロックデータに分割し、アドレスが連続する所定の数のブロックデータ群を複数のストレージ装置105に分散して格納する。本実施例では、一般的なストライピングを適用するものとする。なお、ファイル181の最初のレコードから順に分割されるものとする。
 ここで、四つのストレージ装置105にファイル181を分散して格納する場合、すなわち、ストライプ数が「4」の場合を例に説明する。以下の説明では、四つのストレージ装置105をストレージ装置A、ストレージ装置B、ストレージ装置C及びストレージ装置Dと仮定し、また、ブロックのサイズを「64KB」と仮定し、また、ストライプサイズを「16ブロック」と仮定する。
 この場合、ファイルシステム131は、ファイル181を「64KB」単位のブロックデータに分割し、ブロックの番号が「1」から「16」のブロックデータをストレージ装置Aに、ブロックの番号が「17」から「32」のブロックデータをストレージ装置Bに、ブロックの番号が「33」から「48」のブロックデータをストレージ装置Cに、ブロックの番号が「49」から「64」のブロックデータをストレージ装置Dに格納する。以下同様の手順に従って、ストレージ装置A、ストレージ装置B、ストレージ装置C及びストレージ装置Dの順にブロックデータ群が格納される。
 ファイル181の先頭からのオフセットが分かれば、ブロックの番号及び当該ブロックの番号に対応するブロックデータを格納するストレージ装置105を特定することができる。
 図19は、本発明の実施例2におけるファイル管理情報132の一例を示す説明図である。
 実施例2では、一つのファイル181が複数のサブファイル1811として複数のストレージ装置105に格納されるため、ファイル管理情報132の格納場所情報407には、サブファイル1811の格納場所に関する情報が格納される。
 格納場所情報407は、サブファイル1811の構成を管理するための情報であり、ストライプ数1901、ストライプサイズ1902、及び分散KVSサーバID1903を含む。
 ストライプ数1901は、一つのファイル181が分散して配置されるサブファイル1811の数である。ストライプサイズ1902は、ブロックデータ群のサイズ(ブロック数)を表す。
 分散KVSサーバID1903は、サブファイル1811を管理する分散KVSサーバ102の識別情報を格納する。本実施例では、サブファイル1811には「1」から順に識別番号が付与されているものとする。この場合、分散KVSサーバID1903には、例えば、サブファイル1811の識別番号及びサブファイル1811を管理する分散KVSサーバ102の識別情報が対応付けられて格納される。
 実施例2のファイル配置情報152のファイルID802にはサブファイル1811の識別番号が格納される点が実施例1と異なる。実施例2のKV型データ構造情報153は、実施例1と同一のものである。
 実施例1では、一つのストレージ装置105に一つのファイル181が格納されていたため、一つのローダ143がロード処理を実行していた。しかし、実施例2では、一つのファイル181から生成された複数のサブファイル1811が複数のストレージ装置105に格納される。そのため、各分散KVSサーバ102上のローダ143が並列的にロード処理を実行する。したがって、実施例2では、KV型データ171をキャッシュ領域161に配置する場合に、ロード処理を実行する分散KVSサーバ102を決定するための処理が実行される。
 図20は、本発明の実施例2のKV型データ永続化処理の流れを説明するシーケンス図である。
 ステップS1201からステップS1206の処理は同一である。
 マスタローダ143は、実行サーバ判定処理を実行する(ステップS2007)。実施例2の実行サーバ判定処理は、更新されたKV型データ171を反映させる複数のサブファイル1811が特定され、さらに、複数のサブファイル1811の各々を管理する分散KVSサーバ102が実行サーバとして決定される。実施例2では、複数の分散KVSサーバ102が実行サーバとして決定される。実施例2の実行サーバ判定処理の詳細は、図21を用いて後述する。
 マスタローダ143は、実行サーバ判定処理の処理結果によって決定された複数の分散KVSサーバ102にレコード更新要求を送信する(ステップS2008)。レコード更新要求には、サブファイル1811の識別情報、及び抽出されたKV型データ171が含まれる。
 マスタローダ143が含まれる分散KVSサーバ102自身にレコード更新要求を送信する場合、マスタローダ143は、マスタファイルシステムに144にレコード更新要求を送信する。一方、他の分散KVSサーバ102にレコード更新要求を送信する場合、マスタローダ143は、他の分散KVSサーバ102のスレーブローダ143にレコード更新要求を送信する。スレーブローダ143は、当該要求をスレーブファイルシステム144に送信する。
 ファイルシステム144は、レコード更新要求を受信すると、更新されたKV型データ171をファイル181に反映させるためにレコード更新処理を実行する(ステップS2009)。実施例2のレコード更新処理の詳細については、図24を用いて後述する。
 ファイルシステム144は、レコード更新処理が終了した後、マスタローダ143に処理が完了した旨を通知してもよい。この場合、マスタローダ143は、UAP141に処理が正常に終了した旨を通知する。
 図21は、本発明の実施例2におけるローダ決定処理の一例を説明するフローチャートである。図22は、本発明の実施例2における一時リストの一例を説明する説明図である。
 ローダ143は、UAP141から任意のファイル181のキャッシュ領域161へのロード指示を受け付けると以下で説明するローダ決定処理を開始する。ロード指示には処理対象のファイル181の識別情報(ファイルID)及びKV型データ171のキーとして用いられるフィールドの情報が含まれる。また、ロード指示には、KV型データ171を配置するキャッシュ領域161の識別情報(キャッシュ領域ID)も含まれる。
 ローダ143は、対象ファイル181のサブファイル1811を管理する分散KVSサーバ102を特定する(ステップS2101)。具体的には、以下のような処理が実行される。
 ローダ143は、ファイルシステム144に処理対象のファイルオープンを指示する。ファイルシステム144は、ファイルオープンに対する戻り値とともに、ファイル管理情報132及びレコード定義情報133を応答する。なお、ファイルシステム144が実行する処理は、ステップS1001と同一の処理であるため説明を省略する。
 ローダ143は、ファイル管理情報132の格納場所情報407を参照して、サブファイル1811を管理する分散KVSサーバ102を特定する。本実施例では格納場所情報407の分散KVSサーバID1903に基づいて、前述した分散KVSサーバ102を特定することができる。
 本実施例では、特定された複数の分散KVSサーバ102に対してロード処理の実行が指示される。このとき、ローダ143は、図22に示すような一時リスト2200を生成する。ここで、一時リスト2200について説明する。
 一時リスト2200は、サブファイルID2201、分散KVSサーバID2202、レコードID2203、及び担当フラグ2204を含む。
 サブファイルID2201は、サブファイル1811の識別番号を格納する。分散KVSサーバID2202は、サブファイル1811を管理する分散KVSサーバ102の識別情報を格納する。レコードID2203は、サブファイル1811に含まれるレコードの識別情報である。担当フラグ2204は、分散KVSサーバ102がロード処理を担当するレコードであるか否かを示す情報を格納する。例えば、分散KVSサーバ102がロード処理を担当するレコードの場合、担当フラグ2204には「1」が格納され、分散KVSサーバ102がロード処理を担当するレコードの場合、担当フラグ2204には「0」が格納される。
 ステップS2101において、ローダ143は、一時リスト2200にサブファイル1811の数だけエントリを生成し、生成されたエントリのサブファイルID2201にサブファイル1811の識別番号を設定する。また、ローダ143は、生成されたエントリの分散KVSサーバID2202に特定された分散KVSサーバ102の識別情報を設定する。この時点では、レコードID2203及び担当フラグ2204は空欄のままである。以上がステップS2101の処理の説明である。
 本実施例では、一つのレコードのデータが複数のブロックデータに含まれている可能性がある。そのため、当該レコードのロード処理をどの分散KVSサーバ102が担当するかを決定する必要がある。そこで、ステップS2103からステップS2110までの処理が実行される。
 まず、ローダ143は、各サブファイル1811に含まれるレコードを特定する(ステップS2102)。具体的には、ローダ143は、レコード定義情報133及び格納場所情報407を参照して、各サブファイル1811に含まれるレコードを算出する。例えば、以下のような処理が考えられる。
 ローダ143は、サブファイル1811を一つ選択する。レコード定義情報133のレコード構成501に基づいてレコードの長さ把握する。次に、ローダ143は格納場所情報407のストライプ数1901及びストライプサイズ1902に基づいてサブファイル1811に含まれるブロックデータ群を特定する。さらに、ローダ143は、レコードの長さ、ストライプ数、及びストライプサイズからサブファイル1811に含まれるレコードを特定する。
 ローダ143は、選択されたサブファイル1811に対応する一時リスト2200のエントリのレコードID2203に特定されたレコードの識別情報を設定し、さらに、担当フラグ2204に「0」を設定する。
 ローダ143は、全てのサブファイル1811に対して前述した処理を繰り返し実行する。以上がステップS2102の処理の説明である。
 次に、ローダ143は、サブファイル1811のループ処理を開始する(ステップS2103)。具体的には、ローダ143は、一時リスト2200から処理対象のサブファイル1811を一つ選択する。ここでは、サブファイル1811の識別番号順に選択されるものとする。
 ローダ143は、選択されたサブファイル1811に含まれるレコードのループ処理を開始する(ステップS2104)。具体的には、ローダ143は、選択されたサブファイル1811に対応する一時リスト2200のエントリのレコードID2203の中から処理対象のレコードを一つ選択する。
 ローダ143は、選択されたレコードの担当フラグ2204が「1」であるか否かを判定する(ステップS2105)。すなわち、ステップS2103において選択されたエントリの分散KVSサーバID2202に対応する分散KVSサーバ102が、当該レコードのロード処理を担当することが決定済みであるか否かが判定される。
 選択されたレコードの担当フラグ2204が「1」であると判定された場合、ローダ143は、ステップS2109に進む。
 選択されたレコードの担当フラグ2204が「1」でないと判定された場合、ローダ143は、当該レコードのデータが複数の分散KVSサーバ102に分散して配置されているか否かを判定する(ステップS2106)。具体的には、ローダ143は、一時リスト2200の他のサブファイル1811のエントリのレコードID2203を参照し、選択されたレコードの識別情報と同一の識別情報が存在するか否かを判定する。他のサブファイル1811のエントリのレコードID2203に選択されたレコードの識別情報と同一の識別情報が存在する場合、ローダ143は、当該レコードのデータが複数の分散KVSサーバ102に分散して配置されていると判定する。
 選択されたレコードのデータが複数の分散KVSサーバ102に分散して配置されていないと判定された場合、ローダ143は、当該レコードの担当フラグ2204に「1」を設定し(ステップS2108)、ステップS2109に進む。
 選択されたレコードが複数の分散KVSサーバ102に分散して配置されていると判定された場合、ローダ143は、当該レコードのロード処理を担当する分散KVSサーバ102を決定する(ステップS2107)。その後、ローダ143は、ステップS2109に進む。
 例えば、ローダ143は、レコードの先頭のデータが含まれるサブファイル1811を管理する分散KVSサーバ102を当該レコードのロード処理を担当する分散KVSサーバ102として決定する方法が考えられる。また、レコードの全体のデータ量に対し、レコードのデータを最も多く含むサブファイル1811を管理する分散KVSサーバ102を当該レコードのロード処理を担当する分散KVSサーバ102として決定する方法も考えられる。なお、本発明は、レコードのロード処理を担当する分散KVSサーバ102の決定方法に限定されない。
 選択されたレコードのロード処理を担当する分散KVSサーバ102が選択されたサブファイル1811を管理する分散KVSサーバ102の場合、ローダ143は、選択されたレコードの担当フラグ2204に「1」を設定する。また、ローダ143は、他のサブファイル1811のエントリから当該レコードの識別情報を削除する。
 選択されたレコードのロード処理を担当する分散KVSサーバ102が選択されたサブファイル1811を管理する分散KVSサーバ102とは異なる分散KVSサーバ102の場合、ローダ143は、他の分散KVSサーバ102が管理するサブファイル1811に対応するエントリの当該レコードの担当フラグ2204に「1」を設定する。また、ローダ143は、他のサブファイル1811のエントリから当該レコードの識別情報を削除する。以上がステップS2107の処理の一例である。
 次に、ローダ143は、選択されたサブファイル1811に含まれる全てのレコードについて処理が完了したか否かを判定する(ステップS2109)。具体的には、ローダ143は、一時リスト2200を参照して、選択されたサブファイル1811のエントリの担当フラグ2204が「0」であるレコードが存在するか否かを判定する。担当フラグ2204が「0」であるレコードが存在する場合、ローダ143は、全てのレコードについて処理が完了していないと判定する。
 選択されたサブファイル1811に含まれる全てのレコードについて処理が完了していないと判定された場合、ローダ143は、ステップS2104に戻り同様の処理を実行する。
 選択されたサブファイル1811に含まれる全てのレコードについて処理が完了したと判定された場合、ローダ143は、選択されたサブファイル1811を管理する分散KVSサーバ102が担当するレコード(レコードのレンジ)を決定する(ステップS2110)。具体的には、ローダ143は、選択されたサブファイル1811に対応する一時リスト2200のエントリを参照し、当該エントリのレコードID2203に登録されるレコードを担当するレコードとして決定する。
 ローダ143は、全てのサブファイル1811について処理が完了したか否かを判定する(ステップS2111)。全てのサブファイル1811について処理が完了していないと判定された場合、ローダ143は、ステップS2003に戻り同様の処理を実行する。
 全てのサブファイル1811について処理が完了したと判定された場合、ローダ143は、サブファイル1811を管理する分散KVSサーバ102に対してロード処理の実行指示を送信する(ステップS2112)。
 ロード処理の実行指示には、サブファイル1811の識別番号及び担当するレコードの識別情報(レンジの情報)が含まれる。分散KVSサーバ102のローダ143は、ロード処理の実行指示を受け付けると、図10に示すロード処理を実行する。なお、ステップS1002において、サブファイル1811に分散配置されたレコードのデータが含まれる場合、ローダ143は、分散配置されたレコードのデータを含む他のサブファイル1811を管理する分散KVSサーバ102に当該レコードのデータの読み出しを要求する。その他の処理は実施例1と同一であるため説明を省略する。
 KV型データ更新処理は実施例1と同一であるため説明を省略する。
 図23は、本発明の実施例2における実行サーバ判定処理の一例を説明するフローチャートである。
 ステップS1301は同一の処理である(ステップS1301)。マスタローダ143は、ファイル管理情報132の格納場所情報407を参照して、処理対象のファイル181から生成されるサブファイル1811を管理する分散KVSサーバ102を特定する(ステップS2302)。
 マスタローダ143は、KV型データ171のループ処理を開始する(ステップS2303)。具体的には、マスタローダ143は、更新されたKV型データ171の中から、処理対象のKV型データ171を一つ選択する。
 マスタローダ143は、KV型データ構造情報153及びファイル管理情報132の格納場所情報407を参照して、選択されたKV型データ171に対応するレコードのデータを含むサブファイル1811を特定する(ステップS2304)。具体的には以下のような処理が実行される。
 マスタローダ143は、選択されたKV型データ171に対応するKV型データ構造情報153のエントリのバリューサイズ903及びオフセット904を取得する。
 マスタローダ143は、オフセット904に基づいて、選択されたKV型データ171に対応するレコードの先頭のデータが含まれるブロックデータの番号を特定する。例えば、マスタローダ143は、オフセット904の値をブロックデータのサイズで除算することによって、レコードのデータを含むブロックデータの番号を算出する。
 さらに、マスタローダ143は、バリューサイズ903に基づいて特定されたブロックデータに、選択されたKV型データ171に対応するレコードの全てのデータが含まれるか否かを判定する。
 特定されたブロックデータに選択されたKV型データ171に対応するレコードの全てのデータが含まれる場合、当該ブロックデータの番号を処理結果として出力する。一方、特定されたブロックデータに選択されたKV型データ171に対応するレコードの全てのデータが含まれない場合、マスタローダ143は、バリューサイズ903に基づいて、当該レコードのデータを含むブロックデータの番号を特定する。
 マスタローダ143は、格納場所情報407のストライプ数1901及びストライプサイズ1902に基づいて、特定されたブロックデータの番号がどのブロックデータ群に含まれるかを特定し、また、当該ブロックデータ群を含むサブファイル1811を特定する。
 このとき、マスタローダ143は、KV型データ171のキーと、特定されたサブファイル1811を管理する分散KVSサーバ102の識別情報とを対応付けたリストを生成する。以上がステップS2304の処理の説明である。
 次に、マスタローダ143は、全てのKV型データ171について処理が完了したか否かを判定する(ステップS2305)。全てのKV型データ171について処理が完了していないと判定された場合、マスタローダ143は、ステップS2303に戻り、同様の処理を実行する。
 全てのKV型データ171について処理が完了したと判定された場合、マスタローダ143は、特定された各分散KVSサーバ102にレコード更新要求を送信し(ステップS2306)、処理を終了する。具体的には、以下のような処理が実行される。
 マスタローダ143は、処理対象のサブファイル1811を選択する。マスタローダ143は、ステップS2304において生成されたリストを参照して、選択されたサブファイル1811を管理する分散KVSサーバ102に送信するKV型データ171を抽出する。
 マスタローダ143は、選択されたサブファイル1811を管理する分散KVSサーバ102に、処理対象のサブファイル1811の識別情報、及び抽出されたKV型データ171が含まれるレコード更新要求を送信する。以上がステップS2306の処理の説明である。
 図24は、本発明の実施例2のレコード更新処理の一例を説明するフローチャートである。
 ファイルシステム144は、レコード更新要求を受信するとレコード更新処理を開始する。まず、ファイルシステム144は、処理対象のサブファイル1811に対応するKV型データ構造情報153を取得する(ステップS2401)。ステップS2401の処理は、ステップS1401と同一の処理を用いる。
 ファイルシステム144は、KV型データ171のループ処理を開始する(ステップS2402)。ファイルシステム144は、レコード更新要求に含まれるKV型データ171を一つ選択する。
 ファイルシステム144は、KV型データ171に対応するレコードの処理対象のサブファイル1811における位置を特定し、特定された位置にKV型データ171を書き込む(ステップS2403)。具体的には、以下のような処理が実行される。
 ファイルシステム144は、取得されたKV型データ構造情報153を参照し、キー902が選択されたKV型データ171のキー302と一致するエントリを検索する。ファイルシステム144は、検索されたエントリのオフセット904に基づいて、選択されたKV型データ171に対応するレコードの先頭のデータが含まれるブロックデータの番号を特定する。さらに、ファイルシステム144は、バリューサイズ903に基づいて特定されたブロックデータに含まれるレコードのデータを特定する。これによって、KV型データ171の位置及び書き込むデータが特定される。
 ファイルシステム144は、特定された位置に、特定されたデータ分だけKV型データ171を上書きすることによって、更新されたKV型データ171を処理対象のファイル181に反映させる。以上がステップS2403の処理の説明である。
 次に、ファイルシステム144は、レコード更新要求に含まれる全てのKV型データ171について処理が完了した否かを判定する(ステップS2404)。
 全てのKV型データ171について処理が完了していないと判定された場合、ファイルシステム144は、ステップS2402に戻り同様の処理を実行する。全てのKV型データ171について処理が完了したと判定された場合、ファイルシステム144は、処理を終了する。
 実施例2によれば、ファイルのデータが複数のサーバにサブファイル1811として分散配置される場合でも、KV型データ171の更新又は削除結果をサブファイル1811に反映することができる。これによって、分散ファイルシステムと分散KVSとの連携が可能となり、ファイルI/O API及びKV型データAPIのいずれを用いても同一内容のデータにアクセスすることが可能となる。また、更新されたKV型データ171をサブファイル1811に反映する場合、各分散KVSサーバ102が担当するレコードを決定しているため、サーバ間の通信量の増加を抑制し、分散KVSと分散ファイルシステムとの間の高速なデータ転送を実現することができる。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記憶媒体に置くことができる。
 また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。

Claims (12)

  1.  ネットワークを介して接続される複数の計算機を備える計算機システムであって、
     前記複数の計算機の各々は、
     プロセッサ、前記プロセッサに接続されるメモリ及び前記プロセッサに接続されるネットワークインタフェースを有し、
     複数のレコードを含むファイルを一以上格納するストレージ装置と接続し、
     前記ストレージ装置に格納される前記ファイルを管理するファイルシステムと、
     前記複数の計算機が有する記憶領域を統合することによってデータ格納領域を一つ以上生成し、前記データ格納領域に配置されたキーバリュー型データを管理するキーバリュー型データ管理部と、
     前記ファイルを分割して、検索キーと前記レコードの内容を示すバリューとを対応づけることによって前記キーバリュー型データを生成し、前記生成されたキーバリュー型データを前記データ格納領域に分散して格納するローダと、を有し、
     前記キーバリュー型データ毎に、前記検索キー、前記バリューのサイズ、及び前記キーバリュー型データに対応する前記レコードのファイルにおける位置が対応付けられたキーバリュー型データ構造情報を保持し、
     前記ローダは、更新された前記キーバリュー型データの前記ファイルへの反映を指示する永続化指示を受け付けた場合、前記複数の計算機の各々の前記キーバリュー型データ管理部に、前記更新されたキーバリュー型データを取得するための読出要求を送信し、
     前記キーバリュー型データ管理部は、
     前記読出要求を受信した場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを検索し、
     前記読出要求を送信した前記ローダに前記更新されたキーバリュー型データを送信し、
     前記ローダは、
     前記複数の計算機の各々のキーバリュー型データ管理部から取得された前記更新されたキーバリュー型データに基づいて、前記更新されたキーバリュー型データを反映させる処理対象のファイルを特定し、
     前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定し、
     前記特定された計算機に、前記更新されたキーバリュー型データを含むファイルの更新要求を送信し、
     前記ファイルシステムは、
     前記ファイルの更新要求を受信した場合、前記キーバリュー型データ構造情報に基づいて、前記更新されたキーバリュー型データに対応する前記レコードの前記ファイルにおける位置を特定し、
     前記特定されたファイルの位置に、前記更新されたキーバリュー型データを書き込むことによって前記ファイルを更新することを特徴とする計算機システム。
  2.  請求項1に記載の計算機システムであって、
     前記読出要求は処理対象のデータ格納領域の識別情報を含み、
     前記複数の計算機の各々は、前記データ格納領域の識別情報を含む前記データ格納領域に格納される前記キーバリュー型データを管理するためのキーバリュー型データ管理情報を保持し、
     前記キーバリュー型データ管理部は、
     前記キーバリュー型データの更新要求を受け付けた場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データを更新し、
     前記更新されたキーバリュー型データのリストであるダーティリストが生成されているか否かを判定し、
     前記ダーティリストが生成されていると判定された場合、新たに更新されたキーバリュー型データを前記ダーティリストに追加し、
     前記ダーティリストが生成されていないと判定された場合、前記ダーティリストを生成して、前記生成されたダーティリストへのポインタを前記キーバリュー型データ管理情報に設定し、
     前記読出要求を受信した場合、前記読出要求に含まれる前記データ格納領域の識別情報に一致する前記キーバリュー型データ管理情報を検索し、
     前記検索されたキーバリュー型データ管理情報の前記ダーティリストへのポインタに基づいて前記ダーティリストを参照して、前記処理対象のデータ格納領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを取得することを特徴とする計算機システム。
  3.  請求項2に記載の計算機システムであって、
     少なくとも一つの計算機は、前記ファイルの構成を管理するためのファイル管理情報を保持し、
     前記ファイル管理情報は、前記ファイルの識別情報及び前記ファイルを格納するストレージ装置の情報を含み、
     前記複数の計算機の各々は、前記データ格納領域の識別情報と、前記データ格納領域に格納される前記キーバリュー型データの元データである前記ファイルの識別情報とを対応付けたファイル配置情報を保持し、
     前記永続化指示には処理対象のデータ格納領域の識別情報が含まれ、
     前記ローダは、
     前記更新されたキーバリュー型データを取得した後、前記ファイル管理情報を取得し、
     前記永続化指示に含まれる前記処理対象のデータ格納領域の識別情報に対応する前記ファイル配置情報を参照して、前記処理対象のファイルを特定し、
     前記処理対象のファイルに対応する前記ファイル管理情報を取得し、
     前記処理対象のファイルに対応するファイル管理情報を参照して、前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定することを特徴とする計算機システム。
  4.  請求項3に記載の計算機システムであって、
     前記少なくとも一つの計算機は、
     前記ファイルにおけるレコードの構造を定義するレコード定義情報を保持し、
     前記ファイル管理情報と前記レコード定義情報とを対応付けて管理し、
     前記ローダは、
     前記データ格納領域への新規ファイルの配置を指示するロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得し、
     前記ファイル管理情報を参照して、前記新規ファイルを格納する前記ストレージ装置と接続される前記計算機から当該新規ファイルを取得し、
     前記データ格納領域の識別情報と、前記新規ファイルの識別情報とを対応付けることによって前記ファイル配置情報を生成し、
     前記新規ファイルに含まれる前記複数のレコードの各々から前記複数のキーバリュー型データを生成し、
     前記レコード定義情報に基づいて、前記複数のレコードの各々の前記検索キー、前記バリューのサイズ、及び前記ファイルにおける前記レコードの位置を対応付けることによって、前記キーバリュー型データ構造情報を生成し、
     前記複数のキーバリュー型データ管理部の各々に、前記複数の前記データ格納領域への前記複数のキーバリュー型データの配置要求を送信し、
     前記複数の計算機に、前記ファイル配置情報及び前記キーバリュー型データ構造情報を送信することを特徴とする計算機システム。
  5.  請求項2に記載の計算機システムであって、
     前記ストレージ装置に格納されるファイルは、一つのソースファイルが分割されたサブファイルであって、
     少なくとも一つの計算機は、前記サブファイルの構成を管理するためのファイル管理情報を保持し、
     前記ファイル管理情報は、前記サブファイルの識別情報及び前記サブファイルを格納するストレージ装置の識別情報を含み、
     前記複数の計算機の各々は、前記データ格納領域の識別情報と、前記データ格納領域に格納される前記キーバリュー型データの元データである前記サブファイルの識別情報とを対応付けたファイル配置情報を保持し、
     前記永続化指示には処理対象のデータ格納領域の識別情報が含まれ、
     前記ローダは、
     前記更新されたキーバリュー型データを取得した後、前記ファイル管理情報を取得し、
     前記永続化指示に含まれる前記処理対象のデータ格納領域の識別情報に基づいて前記ファイル配置情報を参照して、前記処理対象のソースファイルを特定し、
     前記処理対象のソースファイルに対応する前記ファイル管理情報を取得し、
     前記処理対象のソースファイルに対応するファイル管理情報を参照して、前記処理対象のソースファイルに対応する前記サブファイルを格納する前記ストレージ装置と接続する前記計算機を特定することを特徴とする計算機システム。
  6.  請求項5に記載の計算機システムであって、
     前記少なくとも一つの計算機は、
     前記ファイルにおけるレコードの構造を定義するレコード定義情報を保持し、
     前記ファイル管理情報と前記レコード定義情報とを対応付けて管理し、
     前記ローダは、
     前記データ格納領域への新規ソースファイルの配置を指示するロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得し、
     前記ファイル管理情報に基づいて、前記新規ソースファイルが分割された前記複数のサブファイルを特定し、
     前記複数のサブファイル毎に、前記サブファイルを格納する前記ストレージ装置と接続する前記計算機を特定し、
     前記複数のサブファイル毎に、前記サブファイルに含まれる前記レコードを特定することによって、当該サブファイルを格納する前記ストレージ装置と接続する前記計算機が担当するレコードを決定し、
     前記決定されたレコードの情報を含む前記サブファイルの配置を指示するロード指示を前記計算機に送信し、
     前記ロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得し、
     前記ファイル管理情報を参照して、前記ストレージ装置から前記決定されたレコードを含む前記サブファイルを取得し、
     前記データ格納領域の識別情報と、前記サブファイルの識別情報とを対応付けることによって前記ファイル配置情報を生成し、
     前記サブファイルに含まれる前記複数のレコードの各々から前記複数のキーバリュー型データを生成し、
     前記レコード定義情報に基づいて、前記複数のレコードの各々の前記検索キー、前記バリューのサイズ、及び前記ファイルにおける前記レコードの位置を対応付けることによって、前記キーバリュー型データ構造情報を生成し、
     前記複数のキーバリュー型データ管理部の各々に、前記複数の前記データ格納領域への前記複数のキーバリュー型データの配置要求を送信し、
     前記複数の計算機に、前記ファイル配置情報及び前記キーバリュー型データ構造情報を送信することを特徴とする計算機システム。
  7.  ネットワークを介して接続される複数の計算機を有する計算機システムにおけるデータ管理方法であって、
     前記複数の計算機の各々は、
     プロセッサ、前記プロセッサに接続されるメモリ及び前記プロセッサに接続されるネットワークインタフェースを有し、
     複数のレコードを含むファイルを一以上格納するストレージ装置と接続し、
     前記ストレージ装置に格納される前記ファイルを管理するファイルシステムと、
     前記複数の計算機が有する記憶領域を統合することによってデータ格納領域を一つ以上生成し、前記データ格納領域に配置されたキーバリュー型データを管理するキーバリュー型データ管理部と、
     前記ファイルを分割して、検索キーと前記レコードの内容を示すバリューとを対応づけることによって前記キーバリュー型データを生成し、前記生成されたキーバリュー型データを前記データ格納領域に分散して格納するローダと、を有し、
     前記キーバリュー型データ毎に、前記検索キー、前記バリューのサイズ、及び前記キーバリュー型データに対応する前記レコードのファイルにおける位置が対応付けられたキーバリュー型データ構造情報を保持し、
     前記データ管理方法は、
     前記ローダが、更新された前記キーバリュー型データの前記ファイルへの反映を指示する永続化指示を受け付けた場合、前記複数の計算機の各々の前記キーバリュー型データ管理部に、前記更新されたキーバリュー型データを取得するための読出要求を送信する第1のステップと、
     前記キーバリュー型データ管理部が、前記読出要求を受信した場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを検索する第2のステップと、
     前記キーバリュー型データ管理部が、前記読出要求を送信した前記ローダに前記更新されたキーバリュー型データを送信する第3のステップと、
     前記ローダが、前記複数の計算機の各々のキーバリュー型データ管理部から取得された前記更新されたキーバリュー型データに基づいて、前記更新されたキーバリュー型データを反映させる処理対象のファイルを特定して、前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定する第4のステップと、
     前記ローダが、前記特定された計算機に、前記更新されたキーバリュー型データを含むファイルの更新要求を送信する第5のステップと、
     前記ファイルシステムが、前記ファイルの更新要求を受信した場合、前記キーバリュー型データ構造情報に基づいて、前記更新されたキーバリュー型データに対応する前記レコードの前記ファイルにおける位置を特定する第6のステップと、
     前記ファイルシステムが、前記特定されたファイルの位置に、前記更新されたキーバリュー型データを書き込むことによって前記ファイルを更新する第7のステップと、を含むことを特徴とするデータ管理方法。
  8.  請求項7に記載のデータ管理方法であって、
     前記読出要求は処理対象のデータ格納領域の識別情報を含み、
     前記複数の計算機の各々は、前記データ格納領域の識別情報を含む前記データ格納領域に格納される前記キーバリュー型データを管理するためのキーバリュー型データ管理情報を保持し、
     前記データ管理方法は、
     前記キーバリュー型データ管理部が、前記キーバリュー型データの更新要求を受け付けた場合、前記データ格納領域を構成する前記記憶領域に格納される前記キーバリュー型データを更新するステップと、
     前記キーバリュー型データ管理部が、前記更新されたキーバリュー型データのリストであるダーティリストが生成されているか否かを判定するステップと、
     前記キーバリュー型データ管理部が、前記ダーティリストが生成されていると判定された場合、新たに更新されたキーバリュー型データを前記ダーティリストに追加するステップと、
     前記キーバリュー型データ管理部が、前記ダーティリストが生成されていないと判定された場合、前記ダーティリストを生成して、前記生成されたダーティリストへのポインタを前記キーバリュー型データ管理情報に設定するステップと、を含み、
     前記第2のステップは、
     前記読出要求に含まれる前記データ格納領域の識別情報に一致する前記キーバリュー型データ管理情報を検索するステップと、
     前記検索されたキーバリュー型データ管理情報の前記ダーティリストへのポインタに基づいて前記ダーティリストを参照して、前記処理対象のデータ格納領域に格納される前記キーバリュー型データの中から前記更新されたキーバリュー型データを取得するステップと、を含むことを特徴とするデータ管理方法。
  9.  請求項8に記載のデータ管理方法であって、
     少なくとも一つの計算機は、前記ファイルの構成を管理するためのファイル管理情報を保持し、
     前記ファイル管理情報は、前記ファイルの識別情報及び前記ファイルを格納するストレージ装置の情報を含み、
     前記複数の計算機の各々は、前記データ格納領域の識別情報と、前記データ格納領域に格納される前記キーバリュー型データの元データである前記ファイルの識別情報とを対応付けたファイル配置情報を保持し、
     前記永続化指示には処理対象のデータ格納領域の識別情報が含まれ、
     前記第4のステップは、
     前記ファイル管理情報を取得するステップと、
     前記永続化指示に含まれる前記処理対象のデータ格納領域の識別情報に対応する前記ファイル配置情報を参照して、前記処理対象のファイルを特定するステップと、
     前記処理対象のファイルに対応する前記ファイル管理情報を取得するステップと、
     前記処理対象のファイルに対応するファイル管理情報を参照して、前記処理対象のファイルを格納する前記ストレージ装置と接続する前記計算機を特定するステップと、を含むことを特徴とするデータ管理方法。
  10.  請求項9に記載のデータ管理方法であって、
     前記少なくとも一つの計算機は、
     前記ファイルにおけるレコードの構造を定義するレコード定義情報を保持し、
     前記ファイル管理情報と前記レコード定義情報とを対応付けて管理し、
     前記データ管理方法は、
     前記ローダが、前記データ格納領域への新規ファイルの配置を指示するロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得するステップと、
     前記ローダが、前記ファイル管理情報を参照して、前記新規ファイルを格納する前記ストレージ装置と接続される前記計算機から当該新規ファイルを取得するステップと、
     前記ローダが、前記データ格納領域の識別情報と、前記新規ファイルの識別情報とを対応付けることによって前記ファイル配置情報を生成するステップと、
     前記ローダが、前記新規ファイルに含まれる前記複数のレコードの各々から前記複数のキーバリュー型データを生成するステップと、
     前記ローダが、前記レコード定義情報に基づいて、前記複数のレコードの各々の前記検索キー、前記バリューのサイズ、及び前記ファイルにおける前記レコードの位置を対応付けることによって、前記キーバリュー型データ構造情報を生成するステップと、
     前記ローダが、前記複数のキーバリュー型データ管理部の各々に、前記複数の前記データ格納領域への前記複数のキーバリュー型データの配置要求を送信するステップと、
     前記ローダが、前記複数の計算機に、前記ファイル配置情報及び前記キーバリュー型データ構造情報を送信するステップと、を含むことを特徴とするデータ管理方法。
  11.  請求項8に記載のデータ管理方法であって、
     前記ストレージ装置に格納されるファイルは、一つのソースファイルが分割されたサブファイルであって、
     少なくとも一つの計算機は、前記サブファイルの構成を管理するためのファイル管理情報を保持し、
     前記ファイル管理情報は、前記サブファイルの識別情報及び前記サブファイルを格納するストレージ装置の識別情報を含み、
     前記複数の計算機の各々は、前記データ格納領域の識別情報と、前記データ格納領域に格納される前記キーバリュー型データの元データである前記サブファイルの識別情報とを対応付けたファイル配置情報を保持し、
     前記永続化指示には処理対象のデータ格納領域の識別情報が含まれ、
     前記第4のステップは、
     前記更新されたキーバリュー型データを取得した後、前記ファイル管理情報を取得するステップと、
     前記永続化指示に含まれる前記処理対象のデータ格納領域の識別情報に基づいて前記ファイル配置情報を参照して、前記処理対象のソースファイルを特定するステップと、
     前記処理対象のソースファイルに対応する前記ファイル管理情報を取得するステップと、
     前記処理対象のソースファイルに対応するファイル管理情報を参照して、前記処理対象のソースファイルに対応する前記サブファイルを格納する前記ストレージ装置と接続する前記計算機を特定するステップと、を含むことを特徴とするデータ管理方法。
  12.  請求項11に記載のデータ管理方法であって、
     前記少なくとも一つの計算機は、
     前記ファイルにおけるレコードの構造を定義するレコード定義情報を保持し、
     前記ファイル管理情報と前記レコード定義情報とを対応付けて管理し、
     前記データ管理方法は、
     前記ローダが、前記データ格納領域への新規ソースファイルの配置を指示するロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得するステップと、
     前記ローダが、前記ファイル管理情報に基づいて、前記新規ソースファイルが分割された前記複数のサブファイルを特定するステップと、
     前記ローダが、前記複数のサブファイル毎に、前記サブファイルを格納する前記ストレージ装置と接続する前記計算機を特定するステップと、
     前記ローダが、前記複数のサブファイル毎に、前記サブファイルに含まれる前記レコードを特定することによって、当該サブファイルを格納する前記ストレージ装置と接続する前記計算機が担当するレコードを決定するステップと、
     前記ローダが、前記決定されたレコードの情報を含む前記サブファイルの配置を指示するロード指示を前記計算機に送信するステップと、
     前記ローダが、前記ロード指示を受け付けた場合、前記ファイル管理情報及び前記レコード定義情報を取得するステップと、
     前記ローダが、前記ファイル管理情報を参照して、前記ストレージ装置から前記決定されたレコードを含む前記サブファイルを取得するステップと、
     前記ローダが、前記データ格納領域の識別情報と、前記サブファイルの識別情報とを対応付けることによって前記ファイル配置情報を生成するステップと、
     前記ローダが、前記サブファイルに含まれる前記複数のレコードの各々から前記複数のキーバリュー型データを生成するステップと、
     前記ローダが、前記レコード定義情報に基づいて、前記複数のレコードの各々の前記検索キー、前記バリューのサイズ、及び前記ファイルにおける前記レコードの位置を対応付けることによって、前記キーバリュー型データ構造情報を生成するステップと、
     前記ローダが、前記複数のキーバリュー型データ管理部の各々に、前記複数の前記データ格納領域への前記複数のキーバリュー型データの配置要求を送信するステップと、
     前記複数の計算機に、前記ファイル配置情報及び前記キーバリュー型データ構造情報を送信するステップと、を含むことを特徴とするデータ管理方法。
PCT/JP2013/084631 2013-12-25 2013-12-25 計算機システム及びデータ管理方法 WO2015097774A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2013/084631 WO2015097774A1 (ja) 2013-12-25 2013-12-25 計算機システム及びデータ管理方法
JP2015554353A JP6034512B2 (ja) 2013-12-25 2013-12-25 計算機システム及びデータ管理方法
US14/770,659 US9934248B2 (en) 2013-12-25 2013-12-25 Computer system and data management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/084631 WO2015097774A1 (ja) 2013-12-25 2013-12-25 計算機システム及びデータ管理方法

Publications (1)

Publication Number Publication Date
WO2015097774A1 true WO2015097774A1 (ja) 2015-07-02

Family

ID=53477716

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/084631 WO2015097774A1 (ja) 2013-12-25 2013-12-25 計算機システム及びデータ管理方法

Country Status (3)

Country Link
US (1) US9934248B2 (ja)
JP (1) JP6034512B2 (ja)
WO (1) WO2015097774A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019030883A1 (ja) * 2017-08-10 2019-02-14 株式会社日立製作所 計算機システムおよびデータ処理方法
CN111552596A (zh) * 2015-07-22 2020-08-18 奥普塔姆软件股份有限公司 紧凑二进制事件日志生成方法及系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016138657A1 (en) * 2015-03-05 2016-09-09 Intel Corporation Techniques for storing or accessing key-value item
US10742491B2 (en) 2017-07-20 2020-08-11 Vmware, Inc. Reducing initial network launch time of container applications
US9934287B1 (en) * 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
US10922096B2 (en) * 2018-02-28 2021-02-16 Vmware, Inc. Reducing subsequent network launch time of container applications

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198258A (ja) * 2009-02-25 2010-09-09 Nippon Telegr & Teleph Corp <Ntt> キャッシュメンテナンス装置、その方法及びそのプログラム
WO2010114006A1 (ja) * 2009-03-31 2010-10-07 日本電気株式会社 ストレージシステムとストレージアクセス方法とプログラム
WO2012114531A1 (ja) * 2011-02-23 2012-08-30 株式会社日立製作所 計算機システム及びデータ管理方法
JP2013004067A (ja) * 2011-06-22 2013-01-07 Nippon Telegr & Teleph Corp <Ntt> ストレージシステム、ストレージ制御方法、プログラム
JP2013088920A (ja) * 2011-10-14 2013-05-13 Hitachi Ltd 計算機システム及びデータ管理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5439236B2 (ja) 2010-03-12 2014-03-12 株式会社日立製作所 計算機システムおよびアプリケーションプログラムの実行方法
US9838242B2 (en) * 2011-04-13 2017-12-05 Jetflow Technologies Flowlet-based processing with key/value store checkpointing
US8676951B2 (en) * 2011-07-27 2014-03-18 Hitachi, Ltd. Traffic reduction method for distributed key-value store
JP5524144B2 (ja) * 2011-08-08 2014-06-18 株式会社東芝 key−valueストア方式を有するメモリシステム
JP5762878B2 (ja) * 2011-08-08 2015-08-12 株式会社東芝 key−valueストアを有するメモリシステム
US20130332608A1 (en) * 2012-06-06 2013-12-12 Hitachi, Ltd. Load balancing for distributed key-value store
JP6025149B2 (ja) * 2013-11-06 2016-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データを管理するシステムおよび方法
US9323457B2 (en) * 2013-12-09 2016-04-26 Xilinx, Inc. Memory arrangement for implementation of high-throughput key-value stores

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198258A (ja) * 2009-02-25 2010-09-09 Nippon Telegr & Teleph Corp <Ntt> キャッシュメンテナンス装置、その方法及びそのプログラム
WO2010114006A1 (ja) * 2009-03-31 2010-10-07 日本電気株式会社 ストレージシステムとストレージアクセス方法とプログラム
WO2012114531A1 (ja) * 2011-02-23 2012-08-30 株式会社日立製作所 計算機システム及びデータ管理方法
JP2013004067A (ja) * 2011-06-22 2013-01-07 Nippon Telegr & Teleph Corp <Ntt> ストレージシステム、ストレージ制御方法、プログラム
JP2013088920A (ja) * 2011-10-14 2013-05-13 Hitachi Ltd 計算機システム及びデータ管理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552596A (zh) * 2015-07-22 2020-08-18 奥普塔姆软件股份有限公司 紧凑二进制事件日志生成方法及系统
WO2019030883A1 (ja) * 2017-08-10 2019-02-14 株式会社日立製作所 計算機システムおよびデータ処理方法
US11030218B2 (en) 2017-08-10 2021-06-08 Hitachi, Ltd. Computer system and data processing method

Also Published As

Publication number Publication date
US20160012075A1 (en) 2016-01-14
US9934248B2 (en) 2018-04-03
JPWO2015097774A1 (ja) 2017-03-23
JP6034512B2 (ja) 2016-11-30

Similar Documents

Publication Publication Date Title
JP6034512B2 (ja) 計算機システム及びデータ管理方法
US7849282B2 (en) Filesystem building method
US7765189B2 (en) Data migration apparatus, method, and program for data stored in a distributed manner
US10242050B2 (en) Database caching in a database system
JP5775177B2 (ja) クローンファイル作成方法と、それを用いたファイルシステム
JP5589205B2 (ja) 計算機システム及びデータ管理方法
CN102169507B (zh) 一种分布式实时搜索引擎的实现方法
CN110321301B (zh) 一种数据处理的方法及装置
CN103154948B (zh) 可丢弃文件的基于卡的管理
CN110062925A (zh) 用于云集成的快照元数据布置
US20110153606A1 (en) Apparatus and method of managing metadata in asymmetric distributed file system
CN110119425A (zh) 固态驱动器、分布式数据存储系统和利用键值存储的方法
US20120005307A1 (en) Storage virtualization
US20160364407A1 (en) Method and Device for Responding to Request, and Distributed File System
KR20170068564A (ko) 데이터 처리 방법, 장치 및 시스템
US10503693B1 (en) Method and system for parallel file operation in distributed data storage system with mixed types of storage media
NO326041B1 (no) Fremgangsmate til administrasjon av datalagring i et system for soking og gjenfinning av informasjon
JP5439236B2 (ja) 計算機システムおよびアプリケーションプログラムの実行方法
US20120005233A1 (en) Computer system and recording medium
KR20080033264A (ko) 공간을 비워두기 위해 저장 볼륨 상의 파일로부터 대안의장소로의 데이터 이동
CN113853778A (zh) 一种文件系统的克隆方法及装置
KR101341412B1 (ko) 비대칭 분산 파일 시스템에서의 메타데이터 관리 장치 및 방법
US10521398B1 (en) Tracking version families in a file system
US9483199B1 (en) Data deduplication using multiple devices
US8868970B2 (en) Object based storage system and method of operating thereof

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015554353

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14770659

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13900075

Country of ref document: EP

Kind code of ref document: A1