WO2012121316A1 - 分散ストレージシステムおよび方法 - Google Patents

分散ストレージシステムおよび方法 Download PDF

Info

Publication number
WO2012121316A1
WO2012121316A1 PCT/JP2012/055917 JP2012055917W WO2012121316A1 WO 2012121316 A1 WO2012121316 A1 WO 2012121316A1 JP 2012055917 W JP2012055917 W JP 2012055917W WO 2012121316 A1 WO2012121316 A1 WO 2012121316A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
information
unit
node
access
Prior art date
Application number
PCT/JP2012/055917
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 US14/003,658 priority Critical patent/US9342574B2/en
Priority to JP2013503590A priority patent/JP5765416B2/ja
Publication of WO2012121316A1 publication Critical patent/WO2012121316A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Definitions

  • the present invention relates to distributed storage, and more particularly to a distributed storage system, method and apparatus capable of controlling a data structure.
  • ⁇ Distributed storage system Distributed to realize a system in which a plurality of computers (data nodes, or simply “nodes”) are connected to a network, and data is stored and used in a data storage unit (HDD (Hard Disk Drive) or memory) of each computer.
  • a storage system (Distributed Storage System) is used.
  • a file management In a distributed storage system, generally, as a file management, a method of separately storing a file body and metadata of the file (file storage location, file size, owner, etc.) is used.
  • a meta server method is known as one of techniques for a client to know a node holding data.
  • a meta server configured by one or a plurality of (however, a small number) computers for managing data location information is provided.
  • ⁇ Dispersed KVS> As another technique (technique) for knowing the position of the node holding the data, there is a technique for obtaining the position of the data using a dispersion function (for example, a hash function). This type of technique is called, for example, a distributed KVS (Key Value Store).
  • a dispersion function for example, a hash function
  • node list In distributed KVS, all clients share a distributed function and a list of nodes participating in the system (node list).
  • the stored data is divided into fixed-length or arbitrary-length data fragments (Value).
  • a uniquely identifiable identifier (Key) is assigned to each data fragment (Value) and stored as a pair of (Key, Value).
  • Key For example, data can be distributed and stored in a plurality of nodes by changing the storage destination node (server) according to the key value.
  • the key is used as the input value of the distribution function, and the position of the node storing the data is obtained arithmetically based on the output value of the distribution function and the node list.
  • the distribution function basically does not change over time (time invariant).
  • the contents of the node list are changed as needed due to the failure or addition of nodes. For this reason, the client needs to be able to access such information by an arbitrary method.
  • ⁇ Replication> In a distributed storage system, in order to ensure availability (availability: the ability of the system to operate continuously), data replication is generally held in multiple nodes, and data replication is used for load balancing. It has been broken.
  • Patent Document 1 discloses a technique for realizing load distribution using a copy of data to be created.
  • Patent Document 2 searched as a result of the prior document search performed in this case, the server defines an information structure definition body in the information structure definition section, the registration client constructs a database with the information structure definition body, and database access A configuration in which a tool is generated and information is registered in a database using this tool is disclosed.
  • Patent Document 3 discloses a storage node that stores a copy of an object that can be accessed through a unique locator value in a distributed storage system, and a key map that stores a key map entry for each object. There is disclosed a configuration in which each key map entry includes a copy of an object, a corresponding key value, and each locator for a predetermined object.
  • JP 2006-12005 A Patent No. 4528039
  • JP-A-11-195044 Patent No. 3911810
  • duplicate data is held in a plurality of nodes with the same physical structure. This realizes access response performance and availability guarantee.
  • the replicated data is held in the same physical structure, for applications with different data usage characteristics, conversion to another data structure and storage for holding another data structure Must be prepared.
  • an object of the present invention is to provide a distributed storage system and method that ensure availability in data replication in a distributed storage, and at least one of avoiding a decrease in storage use efficiency and avoiding a decrease in response performance. Is to provide.
  • the configuration is roughly as follows, although not particularly limited.
  • each of the data nodes includes a data storage unit and is connected to the network, and the data nodes of the data duplication destination are logically the same among the data nodes, but physically Provides a distributed storage system including at least two data nodes that hold different data structures in their respective data storages.
  • a data node device constituting a distributed storage system is network-coupled to another data node and the update target data is replicated to a plurality of data nodes, at least one other data is related to the data.
  • a data node device that holds data structures that are logically the same between nodes but physically different in the data storage unit.
  • a distributed storage method in a system including a plurality of data nodes each having a data storage unit and network-connected, wherein at least two data nodes of the plurality of data nodes are the data
  • a distributed storage method in which a plurality of types of data structures which are logically the same among nodes but physically different are held in the respective data storage units.
  • the plurality of data nodes may perform conversion to a target data structure asynchronously with a data update request.
  • the received data is held in an intermediate data holding structure, a response to the update request is returned, and the data structure held in the intermediate data holding structure is changed to a target data structure.
  • the data arrangement destination, the data structure of the arrangement destination, and the data division are variably controlled in a predetermined table unit.
  • At the time of data replication in distributed storage at least one of ensuring availability, avoiding a decrease in storage use efficiency, and avoiding a decrease in response performance is possible.
  • FIG. 6B is a diagram (2) illustrating an operation sequence of Write processing in the first exemplary embodiment of the present invention. It is a figure explaining the operation
  • FIG. 10 illustrates a column-based consistent hashing split arrangement in the fourth exemplary embodiment of the present invention. It is a figure explaining the consistent hashing division
  • the present invention has a plurality of types of data structures and is logically the same among data arrangement nodes (referred to as “data nodes”), but physically different. Keep a replica of the structure.
  • data nodes data arrangement nodes
  • the application timing of data structure conversion performed asynchronously with the write (update) request can be controlled.
  • a structure giving priority to the response characteristic of Write is provided with an intermediate structure (intermediate data holding structure), and the data structure held in the intermediate structure is asynchronously converted into a target data structure.
  • an interface for changing control parameters is provided. Change the control parameters according to the access load. Alternatively, when the processing load increases, control such as reducing the partitioning granularity is performed.
  • a key value store that can have a plurality of types of data structures.
  • the logically the same contents but physically different data structures are replicated (replicas).
  • It is possible to handle different types of access loads at high speed, ⁇ Multiples (replicas) for maintaining availability can be used for other purposes, enabling efficient use of data capacity.
  • the data node that receives the data from the data transmission source holds the received data in an intermediate structure format instead of immediately converting the received data to the target structure in synchronization with replication, and converting the received data to the target structure. May be performed asynchronously.
  • an intermediate structure that prioritizes response characteristics for access requests such as holding data in a buffer and immediately returning a response to a write request, and converting the data structure held in the intermediate structure to the target structure asynchronously Therefore, it is possible to maintain the required high availability while avoiding the bottleneck in access performance caused by the data structure conversion processing. Updating and converting to multiple types of data structures simultaneously on multiple data nodes in a distributed storage system tends to be a bottleneck in performance.
  • a write-specific structure (intermediate data holding structure that prioritizes the write response performance) is prepared, and at the time of replication execution for guaranteeing availability, the replication is performed in an intermediate structure in a synchronous manner (Sync). Then, the data held in the intermediate structure is converted into a formal target structure asynchronously (Async).
  • partitioning can be controlled in units of tables.
  • -Row-store -Write-once type (add records to the data storage area), ⁇ Renewal type, -Column-store: ⁇ With or without compression
  • -Write log for example, a structure for adding update information to prioritize write performance: -Existence of index (index data for search): -Is the data storage order sorted? -With / without partitioning, number of partitions: -Partitioning unit, algorithm: A combination is selected for items such as.
  • data node data is placed is a control target, and which data structure is a control target.
  • a write log write log
  • a write-once row table row-table
  • a row-table is selected for the combination of Read and Write.
  • a column store (or column oriented database) is selected.
  • the column store method increases the efficiency of storage read access to a query.
  • the granularity of partitioning may be relatively reduced for distributed processing, and control such as increasing partitioning for centralized processing or stopping partitioning may be performed. .
  • a trigger for triggering the conversion of data held in the intermediate structure to the target structure asynchronously may be set as the control target.
  • the timing of data conversion may be adjusted according to the data freshness (a measure of data freshness) required by the analysis application.
  • a data update request from a client in a distributed storage system each having a data storage unit (12 in FIG. 1) and having a plurality of data placement nodes (data nodes) coupled to the network.
  • data nodes data placement nodes
  • replication data is stored in the data storage unit (one or more types of data structures different from the data structure in the database that received the update request). It is stored in 12) of FIG.
  • the data node temporarily holds the intermediate structure and returns a response to the update request to the client, and stores the converted data asynchronously with the target data structure.
  • an apparatus (9 in FIG. 1) for holding and managing data structure information for example, data structure management information and data arrangement specifying information
  • data structure information for example, data structure management information and data arrangement specifying information
  • data access means (611 in FIG. 1).
  • the means for accessing the data node (112 in FIG. 4) determines the data structure (physical structure) for the replication target data using the data structure information. Therefore, the replicated data can be held with different data structures for each distributed storage node.
  • a replication destination data node has an intermediate structure that prioritizes update processing performance in response to an update request from a client (both the intermediate data holding structure and the intermediate buffer structure).
  • the data is temporarily held and responded to the update request, and the conversion to the data structure specified by the data structure management information is executed asynchronously. For this reason, the response performance of the update process can be maintained while holding a plurality of types of data structures in the intermediate data holding structure.
  • the client side has a plurality of types of data structures, and the client side distributes the processing to an appropriate data structure according to the access contents (to access a data node holding the appropriate data structure) Distribution) may be performed. For this reason, access processing performance can be improved.
  • ⁇ Data location For example, ⁇ Data location, ⁇ Data arrangement (internal) structure, -A storage method that stores data in a distributed or centralized manner. It is not possible to variably control the storage format of duplicate data such as.
  • the data migration source storage / database and the migration destination storage / database represent the same data in different data structures.
  • the data migration source storage / database and the migration destination storage / database represent the same data in different data structures.
  • the storage capacity required for replication is data capacity x number of replicas x number of types of data structures). For this reason, by preparing and using a lot of hardware such as computers and disks, operation costs such as purchase cost and power consumption increase (a large amount of data copy and a large amount of data structure conversion processing are required. )
  • a bottle of data structure conversion is ensured by maintaining the required high availability and performance such as high-speed response by holding duplicate data in a plurality of types of data structures (physical structures).
  • the bottleneck can be eliminated and the storage usage efficiency can be improved.
  • FIG. 1 is a diagram illustrating an example of a system configuration according to the first embodiment of this invention.
  • Data nodes 1 to 4 a network 5, a client node 6, and structure information management means (structure information management apparatus) 9 are provided.
  • Data nodes 1 to 4 are data storage nodes constituting the distributed storage, and are configured by one or more arbitrary numbers.
  • the network 5 realizes communication between network nodes including the data nodes 1 to 4.
  • the client node 6 is a computer node that accesses the distributed storage.
  • the client node 6 does not necessarily exist independently. An example in which the data nodes 1 to 4 also serve as client computers will be described later with reference to FIG.
  • the data nodes 1 to 4 include data management / processing means (data management / processing units) 11, 21, 31, 41, and data storage units 12, 22, 32, 42, respectively.
  • the client node 6 includes client function realization means (client function realization unit) 61.
  • the client function realization means 61 accesses the distributed storage composed of the data nodes 1 to 4.
  • the client function realizing unit 61 includes a data access unit (data access unit) 611.
  • the data access means (data access unit) 611 acquires structure information (data structure management information and data arrangement specifying information) from the structure information management means 9, and uses the structure information to specify an access destination data node.
  • the structure information stored in the structure information holding unit 92 of the structure information management means 9 is stored in the own device in each data node 1 to 4 or an arbitrary device (switch, intermediate node) in the network 5. Or you may make it hold
  • the access to the structure information stored in the structure information holding unit 92 is made to access the cache provided in the device itself or at a predetermined location. It may be.
  • the synchronization of the structure information stored in the cache can be applied with a well-known distributed system technique, and the details are omitted here. As is well known, storage performance can be increased by using a cache.
  • the structure information management means (structure information management apparatus) 9 includes a structure information change means 91 for changing structure information, and a structure information holding unit 92 for holding structure information.
  • the structure information holding unit 92 includes data structure management information 921 (see FIG. 4) and data arrangement specifying information 922 (see FIG. 4).
  • the data structure management information 921 will be described later with reference to FIG. 5, a replica identifier that identifies a replica with respect to a table identifier, and data structure information that identifies the type of data structure corresponding to the replica identifier; , It has entries for the number of times of data replication, each of which is an update trigger that is time information until the data structure is stored.
  • the data arrangement specifying information 922 will be described later with reference to FIG. 8, but the replica identifier and one or a plurality of data arrangement destination data node information corresponding to the replica identifier are associated with the table identifier. Have.
  • the client node 6 it is not always necessary to provide the client node 6 independently (separately) from the data nodes 1 to 4. That is, as will be described below as a modification, a configuration in which the client function realizing unit 61 is provided in any one or more of the data nodes 1 to 4 may be employed.
  • FIG. 2 is a diagram showing a configuration of a modification of the first embodiment of the present invention. As shown in FIG. 2, a client function realization means 61 is disposed in each of the data nodes 1, 2, 3, 4.
  • the client function realization means 61 arranged in the data nodes 1, 2, 3, 4 includes a structure information cache holding unit 612 in addition to the data access means 611 in FIG.
  • the structure information cache holding unit 612 is a cache memory that stores part or all of the structure information stored in the structure information holding unit 92.
  • Structure information synchronization means (structure information synchronization device) 93 controls the synchronization of the structure information cache. Data in the structure information holding unit 92 is acquired, and information in the structure information cache holding unit 612 of the client function realizing unit 61 of the data node is updated.
  • Structure information synchronization means 93 may be provided in any number of devices constituting the system. For example, it may be operated as software on a computer that realizes at least one of the data nodes 1 to 4.
  • FIG. 3 shows an example in which the data nodes 1 to 4 are realized as individual computers in FIG.
  • the network node 105 includes one or more arbitrary number of data node computers 101 to 104 and a network 105.
  • the data node computers 101 to 104 include a CPU 101a, a data storage device 101b, and a data transfer device 101c, respectively.
  • the CPU 101a realizes all or part of the functions of the data management / processing unit 21 and the client function realizing unit 61.
  • the data storage device 101b is, for example, a hard disk drive, a flash memory, a DRAM (Dynamic Random Access Memory), an MRAM (Magnetic Responsive Random Access Memory), a FeRAM (Ferroelectric Random Access Memory RAM), a FeRAM (Ferroelectric Random Access Memory RAM).
  • a storage device a physical medium capable of recording data such as a magnetic tape, or a control device that records data on a medium installed outside the storage node.
  • the network 105 and the data transfer apparatus 101c include, for example, Ethernet (registered trademark), Fiber Channel, FCoE (Fibre Channel over Ethernet (registered trademark)), InfiniBand (high-speed IO bus architecture promoted by organizations such as Intel Corporation), QsNet (Quadrics).
  • the implementation method of the network 105 is not limited to these.
  • the data transfer apparatus 101c is configured by a network card connected to a computer, and the network 105 is configured by an Ethernet (registered trademark) cable and a switch.
  • the realization of the data nodes 1 to 4 may be a virtual machine (Virtual Machine).
  • Representative examples include VMWare (product of VMWare), Xen (trademark of Citrix) and the like.
  • FIG. 4 is a diagram for explaining the configuration example of the first embodiment of the present invention in more detail.
  • FIG. 4 shows a configuration centered on the data nodes 1 to 4 of FIG.
  • the structure information stored in the structure information holding unit 92 may be referred to by the reference numeral 92 for simplification.
  • the data management / processing unit 11 of the data node includes an access receiving unit (access receiving unit) 111, an access processing unit (access processing unit) 112, and a data structure converting unit (data structure converting unit) 113.
  • the access receiving unit 111 receives an access request from the data access unit 611 and returns a response to the data access unit 611 after the processing is completed.
  • the data storage unit 12 includes a plurality of types of structure-specific data storage units.
  • a structure-specific data storage unit 121 data structure A
  • a structure-specific data storage unit 122 data structure B
  • a structure-specific data storage unit 123 data structure C
  • the structure-specific data storage unit 121 (for example, the data structure A) has a structure specialized in response performance to a process (data addition or update) involving data writing. Specifically, the data change contents are queued (for example, FIFO (First In First Out)) and the software that holds the high-speed memory (dual port RAM, etc.) and the access request processing contents are added as a log to an arbitrary storage medium. Software etc. are implemented.
  • the data structure B and the data structure C are data structures different from the data structure A and have different data access characteristics.
  • the data storage unit 12 is not necessarily a single storage medium.
  • the data storage unit 12 of FIG. 4 may be realized as a distributed storage system including a plurality of data placement nodes, and the structure-specific data storage units 12X may be distributed and stored.
  • the data arrangement specifying information 922 is information (and means for storing and acquiring information) for specifying the storage location of data or data fragments stored in the distributed storage. As described above, for example, a meta server method or a distributed KVS method is generally used as the data distribution method.
  • information for managing data location information (for example, a block address and a corresponding data node address) is the data arrangement specifying information 922.
  • the meta server can know where to place the necessary data.
  • a list of nodes participating in the system corresponds to this data arrangement specifying information.
  • the data node of the data storage destination can be determined.
  • the data access means 611 uses the data arrangement specifying information 922 in the structure information managing means 9 or the cache information of the data arrangement specifying information 922 stored in a predetermined location to be accessed from the data nodes 1 to 4 is specified, and an access request is issued to the access receiving means 111 of the data node.
  • the data structure management information 921 is parameter information for specifying a data storage method for each data set.
  • FIG. 5 is a diagram showing an example of the data structure management information 921 of FIG.
  • the unit for controlling the data storage method is a table. Then, for each table (for each table identifier), a replica identifier, a data structure type, and an update trigger information are prepared for the number of data replications.
  • each table holds three replicas to ensure (hold) availability.
  • the replica identifier is information for identifying each replica, and is assigned as 0, 1, and 2 in FIG.
  • the data structure is information indicating a data storage method.
  • different types of data structures (A, B, C) are designated for each replica identifier.
  • FIG. 5B shows examples of data structures A, B, and C.
  • the replica identifier 0 of the table identifier “Stocks” is stored as the data structure B (row store).
  • Each data structure is a method for storing data
  • the queue (QUEUE) is a linked list.
  • the row store (ROW STORE) stores the records of the table in the order of rows (ROW).
  • Fig. 6 shows an example of the data holding structure of the table.
  • the table in FIG. 6A includes a Key column and three Value columns, and each row includes a set of Key and three Value.
  • the column store and the row store indicate a format in which the storage order on the storage medium is stored in a row (row) base and a column (column) base.
  • FIG. 6 as a table (see FIG. 6A) storage method,
  • the data of the replica identifiers 0 and 1 is held in the data structure B (row store) (see (B) and (C) of FIG. 6),
  • the data of the replica identifier 2 is held as a data structure C (column store) (see (D) of FIG. 6).
  • the update trigger in the data structure management information 921 is a time trigger until the data is stored as the designated data structure.
  • the replica identifier 0 of Stocks 30 sec is specified. Therefore, in the data node storing the data structure B (row store) of the replica identifier 0 of Stocks, it is indicated that the update of data is reflected in the data storage unit 122 by structure of the row store method for 30 sec. . Until the data update is reflected, the data is held as an intermediate structure such as a queue. In the data node, a response from the client is also stored in the intermediate structure. In the present embodiment, the conversion to the designated data structure is performed asynchronously with the update request.
  • FIG. 7 is a diagram schematically illustrating an example of table data retention and asynchronous update.
  • each data node has a structure excellent in response speed of Write (update request) as an intermediate structure and accepts update contents.
  • a process completion response is returned to the update request source client.
  • Update data written to the intermediate structure of each data node (also referred to as an intermediate structure for write, a write-priority intermediate structure, or “intermediate data holding structure”) is stored in data structures B and C, respectively, in each data node. Updated asynchronously (Async).
  • data structure A is stored and held in the intermediate structure for Write in the data node having the replica identifier of 0 by Write, and the synchronization method (Synchronous) for the data nodes of replica identifiers 1 and 2 is performed.
  • the data of the data structure A held in the intermediate structure for Write is replicated, and the data of the data structure A is temporarily stored and held in the intermediate structure for Write in each of the data nodes of the replica identifiers 1 and 2.
  • the replication between the data nodes of the update data (data structure A) written in the intermediate structure for Write of one data node is performed in synchronization with the write (update).
  • the response speed of the write can be increased for the data that is not immediately read (read) access to the write (write) data.
  • the number of types of data structures is set to three, A, B, and C, for the sake of simplification of explanation, but it goes without saying that the number of types of data structures is not limited to three. There may be any plural types having different characteristics.
  • three types of queue, column store, and row store are illustrated as examples of the data structure, it is needless to say that the data structure is not limited to this example. For example, -Whether there is an index in the row store structure, ⁇ Difference in the type of column that created the index, -Row store format for storing updates in an appending structure, Etc.
  • a data storage program may be specified instead of the data structure type.
  • different database software is designated as the program A for storing data in the queue as the data structure A and the data structures B and C in FIG.
  • the data node storing the replica identifier of the table in which the data structure A is designated processes the received data by executing the program A.
  • FIG. 8 shows an example of the data arrangement specifying information 922 of FIG. An arrangement node is designated for each of the replica identifiers 0, 1, and 2 of each table identifier. This corresponds to the metaserver method described above.
  • the data arrangement specifying information 922 corresponds to node list information (not shown) participating in the distributed storage.
  • the placement node can be specified by the consistent hashing method using “table identifier” + “replica identifier” as key information. Further, it can be stored in an adjacent node in the consistent hashing method as a replica placement destination.
  • the consistent hashing method will be described in the fourth embodiment.
  • the arrangement node must be specified so that the same table is not held in the same node in order to guarantee availability.
  • the replica nodes 0, 1 and 2 in the Stocks table in FIG. 5A must not overlap each other. Note that this restriction does not apply if availability considerations are ignored. That is, a plurality of types of replicas may be held in the same node.
  • FIG. 9 is a diagram showing a sequence of a write process (a process accompanied by an update) in the first embodiment of the present invention described with reference to FIGS.
  • the client function realization means 61 acquires the information of the data arrangement specifying information 922 (see FIGS. 4 and 8) held in the structure information holding unit 92 of the structure information management means 9 (or information from the cache memory at an arbitrary location) To get).
  • the client function realization means 61 uses the acquired information to issue a write access command to the data node (data node 1 with replica identifier 0 in FIG. 9) where data to be written is placed.
  • the access receiving means 111 of the data node 1 receives a write access request (write processing request), and transfers the write access to the data nodes 2 and 3 designated by the replica identifiers 1 and 2.
  • a write access request write processing request
  • the data node 1 may access the structure information holding unit 92 (or an appropriate cache), or data in a Write access command issued by the client implementation unit 61. All or a part of the structure management information 921 may be delivered together.
  • the access processing means 112 of each data node processes the received write access request.
  • the access processing means 112 refers to the information of the data structure management information 921 and executes the write process.
  • the write processing content is stored in the data storage unit 121 by structure of the data structure A.
  • the data is stored in the structure-specific data storage unit 12X having the data structure specified in the data structure management information 921.
  • the access processing unit 112 issues a completion notification to the access receiving unit 111 after the write processing is completed.
  • the replica data node (2, 3) returns a write completion response to the access receiving unit 111 of the replica data node 1.
  • the access receiving unit 111 waits for the completion notification from the access processing unit 112 of the data node 1 and the completion notification of the data nodes 2 and 3 of the replica destinations, and after receiving all of them, responds to the client function realizing unit 61 .
  • the data structure conversion means 113 (see FIG. 4) periodically stores the data of the structure-specific data storage unit 121 (data structure A) as the final data storage unit 12X (data structure management information 921). Convert to (destination data structure) and store.
  • the data node 1 transfers the write access to the replica destination data nodes 2 and 3.
  • write access may be issued to all of the data nodes.
  • FIG. 10 is different from FIG. 9 in that the client function realization means 61 waits for a write access request.
  • FIG. 11 is a diagram showing a sequence of reference system processing (READ processing) in the first embodiment of the present invention.
  • the client computer (client node) 6 acquires the information of the data structure management information 921 and specifies the instruction execution destination node. Any of the replica identifiers may be used as the node where the replica data is arranged, but it is desirable to select an appropriate node according to the processing to be performed.
  • Reference system processing refers to processing involving data reading, and corresponds to, for example, a command by a Select statement in a SQL (Structured Query Language) statement.
  • SQL Structured Query Language
  • Reading data from a table A corresponds to the reference processing.
  • a process for updating the table A after referring to the table A it may be handled collectively as a write process (described in FIGS. 9 and 10).
  • the reference process of the table A may be handled as a reference process, and the update of the table A may be handled as an update process.
  • FIG. 12 is a flowchart for explaining the operation of access processing from the viewpoint of the client function realization means 61. The client access flow will be described with reference to FIG.
  • the client function realization means 61 acquires the information in the structure information holding unit 92 by accessing the master or a cache at an arbitrary location (step S101 in FIG. 12).
  • step S102 it is identified whether the command issued by the client is a write process or a reference process (Read) (step S102).
  • the client function realization means 61 may be used to explicitly specify when calling an instruction (preparing such an API (Application Program Interface)).
  • step S102 If the result of step S102 is a write process, the process proceeds to step S103 and subsequent steps.
  • the client function realization means 61 specifies a node that needs to be updated using information in the data arrangement specifying information 922. This process is as described with reference to FIG.
  • the client function realization means 61 issues a command execution request (update request) to the identified data node (step S103).
  • the client function realization means 61 waits for a response notification from the data node to which the update request is issued, and confirms that the update request is held in each data node (step S104).
  • FIG. 12 is a flowchart for explaining the operation of the client function realization means 61 corresponding to the sequence of FIG. 10 in which the client function realization means 61 issues a command to the update destination data node and waits.
  • step S102 If the result of step S102 is a reference process, the process proceeds to step S105.
  • step S105 first, the client function realization means 61 specifies (recognizes) the characteristics of the processing content (step S105).
  • the client function realization means 61 performs a process of selecting an access target data node and issuing a command request based on the specified processing characteristics and other system conditions (step S106).
  • the client function realization means 61 then receives the access processing result from the data node (step S107).
  • step S105 the description of the processing of step S105 and step S106 will be supplemented.
  • the client function realization means 61 can know the type of the data structure in which the data to be accessed is held from the information stored in the data structure management information 921. For example, in the case of the example of FIG. 5A, when accessing the WORKERS table, the replica identifiers 0 and 1 are the data structure B, and the replica identifier 2 is the data structure C.
  • the client function realization means 61 determines which data structure is suitable for data access performed on the data node, and selects a suitable one.
  • the client function realization means 61 analyzes an SQL statement that is an access request, and in the case of an instruction that takes the sum of a certain column in a table whose table identifier is “WORKERS”, the data structure C (column In the case of an instruction to select (store) and retrieve a specific record, it is determined that the data structure B (row store) is suitable.
  • replica identifier 0 or 1 may be selected.
  • the update opportunity is 30 sec
  • the command passed to the client function implementing means 61 may be in a format that explicitly specifies the data structure to be used and the information specifying the required data freshness (data freshness).
  • the data node to be accessed is calculated.
  • the selection of the access node may be changed according to the situation of the distributed storage system. For example, if a table is stored in the data nodes 1 and 2 as the same data structure B, and the access load of the data node 1 is large, the operation may be changed to select the data node 2 Good.
  • the access load of the data node 3 is smaller than that of the data nodes 1 and 2, the access contents to be processed are those of the data structure B.
  • the access request may be issued to the data node 3 (data structure C).
  • the client function realization means 61 issues an access request to the data node calculated and selected in this way (step S106), and receives an access processing result from the data node (step S107).
  • FIG. 13 is a flowchart for explaining access processing in the data node of FIG. The operation of the data node will be described in detail with reference to FIGS.
  • the access receiving unit 111 of the data management / processing unit 11 of the data node receives an access processing request (step S201 in FIG. 13).
  • the access receiving unit 111 of the data management / processing unit 11 of the data node determines whether the content of the received processing request is a write process or a reference process (step S202).
  • step S203 the access processing means 112 of the data management / processing means 11 of the data node acquires information on the data structure management information 921 in the structure information holding unit 92 (step S203).
  • the information acquisition of the data structure management information 921 may be performed by accessing the master data, accessing the cache data at an arbitrary location, or the client function realizing unit 61 of FIG. 1 or FIG.
  • information access to master data or cache data
  • the access processing unit 112 may access the information using the information.
  • the access processing means 112 determines from the information of the data structure management information 921 whether or not the process update trigger for the data node is “0” (zero) (step S204).
  • the access processing unit 112 stores the update data in the intermediate structure for write (structure-specific data storage unit 121) (step S206).
  • steps S205 and S206 after the processing is completed, the access receiving unit 111 returns a processing completion notification to the requesting client realizing unit 61 (step S207).
  • step S208 If the result of step S202 is a data reference process, the reference process is executed (step S208).
  • processing is performed using data in the data storage unit having the data structure specified in the data structure management information 921.
  • This has the best performance, but if the update opportunity is large, there is a possibility that the intermediate structure data for Write is not reflected in the reference process. For this reason, data inconsistency may occur.
  • the application developer recognizes and uses it in advance, or if it is known that data reading does not occur within the update timing after Write, or if new data access is required, the update trigger is There is no particular problem if it is decided to access the replica identifier data of “0”.
  • the second method is a method of performing processing after waiting for the application of conversion processing performed separately. This is easy to implement, but the response performance deteriorates. For applications that do not require response performance, there is no problem.
  • the third method reads and processes both the data structure specified in the data structure management information 921 and the data held in the intermediate structure for Write. In this case, the latest data can always be responded, but the performance is deteriorated as compared with the first method.
  • Any of the first to third methods may be used. Also, a method to be executed may be specified in a processing command issued from the client function realizing unit 61 that realizes a plurality of types and is described as a system setting file.
  • FIG. 14 is a flowchart showing the operation of the data conversion process in the data structure conversion means 113 of FIG. The data conversion process will be described with reference to FIGS.
  • the data structure conversion means 113 waits for a call due to the occurrence of a timeout at a timer (not shown in FIG. 4) in the data node in order to periodically determine whether or not conversion processing is necessary (step S301 in FIG. 14).
  • This timer may be provided in the data structure conversion means 113 as a dedicated timer.
  • the timeout time of the timer corresponds to the update process (sec) in FIG.
  • the structure information (data information) of the structure information holding unit 92 is acquired (step S302), and it is determined whether there is a data structure that needs to be converted (step S303). For example, when the determination is performed every 10 seconds by the timer, the data structure whose update opportunity is 20 seconds executes the conversion process every 20 seconds, so the conversion process does not have to be performed at the 10 second time point.
  • step S301 If the conversion process is not necessary, the process returns to the timer call waiting (wait until it is called due to the occurrence of a timeout in the timer) (step S301).
  • FIG. 1 A second embodiment of the present invention will be described.
  • data is divided into a plurality of predetermined units and stored in a plurality of data nodes.
  • the basic configuration of the system of the present embodiment is the configuration shown in FIGS. 1, 2, 4, and the like, but as described with reference to FIGS. 15, 16, in this embodiment, data
  • the contents of the structure management information 921 and the data arrangement specifying information 922 are expanded.
  • FIG. 1 A second embodiment of the present invention.
  • the access accepting unit of the data node issues an access request to the access processing unit
  • the access processing unit of another data node Even in the first embodiment, the access request is issued, and the data structure conversion unit issues a change request to the data structure conversion unit of another data node. It is different.
  • the configuration of the data node in the present embodiment basically follows FIG. 4, but the details will be described later with reference to FIG.
  • the data to be stored (table identifier) is partitioned (divided) for each copy storage unit (replica identifier), and the divided storage unit is stored in each data node. it can.
  • FIG. 15 is a diagram showing an example of the data structure management information 921 (see FIG. 4).
  • the data structure management information 921 includes a replica identifier corresponding to the number of replicas and the number of partitions corresponding to the replica identifier for the table identifier.
  • the replica identifier whose partition number is “1” stores a replica (replica) in one data node.
  • the operation in that case is the same as that of the first embodiment.
  • FIG. 16 is a diagram illustrating an example of the data arrangement specifying information 922 in that case.
  • the number of partitions of the replica identifier 2 of the table identifier “WORKERS” is “4”.
  • node numbers 2, 3, 5, and 6 are designated as “arrangement nodes” of the replica identifier 2 of the table identifier “WORKERS”.
  • the placement node is determined so as to maintain the required availability level assumed for the entire system for each table identifier. It may be performed manually (manually), or the contents of the data structure management information 921 in FIG. 15 and the data arrangement specifying information 922 in FIG. 16 may be automatically generated by a program.
  • the availability level is determined according to the number of replicas (number of replicas). If the required availability level is three replicas, three replica identifiers are prepared and determined so that the respective placement nodes do not overlap each other.
  • the placement nodes of the replica identifier of the table identifier “WORKERS” are specified not to overlap each other.
  • four or more replica identifiers may be prepared. For example, when there are four replica identifiers and the availability level to be calculated remains “3”, up to one replica identifier can be selected as the replica identifier placement node of the same table identifier (for example, four replica identifiers). Among them, there may be two replica identifiers with overlapping placement nodes).
  • placement nodes at the time of partitioning can be stored redundantly.
  • two 12-part replicas are stored in the data node of node number 1-18 in the row store format (data structure B), they cannot be stored unless duplication is allowed.
  • the placement nodes can be allocated in an overlapping manner while satisfying the availability of the two replica levels as follows.
  • the replica identifier 0 is a node number 1-12
  • Replica identifier 1 has node numbers 7-18, It shall be divided and stored.
  • the availability level can be satisfied.
  • the node number 1-6 of replica identifier 0 has the first half of the column value
  • the node number 7-12 has the second half of the column value
  • the same record is stored in the same node. Is avoided. By doing so, it is possible to satisfy the availability while overlapping the allocation of the placement nodes.
  • the placement node destination is determined so as to satisfy the availability level specified for each system or table identifier.
  • the access destination at the time of updating a replica identifier having a partition number greater than “1” may be any of the placement node groups.
  • the first node in the list may always be selected (for example, in the case of the replica identifier “2” of the table identifier “WORKERS”, the data node having the node number 2).
  • the conversion process from the structure-specific data storage unit 121 to the structure-specific data storage units 122 and 123 in the data structure conversion unit 113 is somewhat simplified.
  • the storage destination may be determined based on the value of a column with a table as described above, a unique key range, or the like.
  • the conversion process (step S305 in FIG. 14) in the data structure conversion unit 113 (see FIG. 17) and the update opportunity are compared with those in the first embodiment.
  • the data structure update process (step S205 in FIG. 13) is different, and the data storage unit of the designated placement node destination is updated.
  • the access receiving unit 111 accesses the access processing unit 112 ( It is necessary to issue an access request to (see FIG. 17).
  • a request is issued to all access processing means 112 of the data node in which the record to be processed is stored.
  • the selection of the necessary data nodes depends on the distributed placement strategy.
  • FIG. 17 is a diagram showing the configuration of the second exemplary embodiment of the present invention, and shows the configuration of the data nodes 1 to X.
  • the access receiving unit 111 sends another request to the access processing unit 112 in its own node when issuing an access request. May also be issued to the access processing means 112.
  • the data structure conversion unit 113 periodically determines whether or not conversion processing is necessary. When the data structure is converted, the data structure conversion unit 113 stores the data structure conversion unit 113 of another data node that stores the partitioned data. In response, a data conversion request is issued.
  • data can be divided and stored in a plurality of data nodes.
  • the data structure management information 921 is changed according to the access load.
  • correction of inappropriateness of the data structure setting contents (assignment of data structure for each replica identifier as shown in FIG. 5) and access after system operation It is possible to cope with pattern changes.
  • the operation of autonomously changing the control parameters for realizing this will be described.
  • FIG. 18 is a diagram showing a configuration of a data node according to the third exemplary embodiment of the present invention.
  • a history recording unit 71 and a change determination unit (change determination unit) 72 are added.
  • the access receiving unit 111 (or other arbitrary unit) of each data node according to the present embodiment operates to record the received access request in the history recording unit 71.
  • the history recording unit 71 records an access request (or access processing content) for each replica identifier of each table identifier.
  • the history recording unit 71 may have a single configuration for the entire system.
  • each data node includes a history recording unit 71, and each data node individually records an access request for each replica identifier of each table identifier.
  • a mechanism for aggregation may be provided by a method.
  • the change determination means (change determination unit) 72 uses the history information stored in the history recording unit 71 to determine whether to convert the data structure.
  • One change determination unit 72 may be provided for the entire system, or the change determination unit 72 may be operated in a distributed manner at each data node.
  • the change determining means 72 issues a data structure conversion processing request to the structure information changing means 91 when structure conversion is required.
  • the structure information changing unit 91 changes the information in the structure information holding unit 92 in response to the conversion processing request from the change determining unit 72, and further, the data structure converting unit in the data management / processing unit 11 of the target data node. 113 is requested to perform conversion processing.
  • FIG. 19 is a flowchart for explaining the control operation in the present embodiment shown in FIG.
  • the execution cycle is arbitrary, for example, when the cycle is lengthened, it is necessary to match the change process being executed.
  • change processing may be performed in response to detection of a predetermined event.
  • An event is, for example, a case where a change in load is detected by any one of the components of the system (for example, a large change in the hardware usage rate of some data nodes such as CPUs and disks). .
  • FIG. 19 shows the determination of the necessity of structure conversion processing for each table identifier and the conversion processing. It is necessary to perform the flow of FIG. 19 for all table identifiers held and managed by the system.
  • the conversion determination unit 72 acquires access history information of the history recording unit 71 (step S401).
  • the conversion determination unit 72 uses all the access contents received within a recent fixed period (for example, within the last day or within the last week) as the corresponding table identifier. It is determined whether or not any replica has a suitable data structure (step S402).
  • step S402 If the access content accepted in step S402 has a data structure suitable for one of the replica identifiers, the process proceeds to step S403.
  • the case of having a data structure suitable for one of the replica identifiers means that, for example, when an access request that requires column (column) access is accepted, the data structure of any replica identifier is a column. This is the case with a store structure.
  • step S403 the conversion determination unit 72 determines whether each replica identifier has an unnecessary data structure. For example, when there are no access requests that require column access as a history, but there are many column store structures, this is an unnecessary data structure.
  • the conversion determination means 72 ends the flow because there is no need to perform a conversion process. On the other hand, if there is an unnecessary data structure, the process proceeds to step S404.
  • step S404 the conversion determination unit 72 determines whether or not the data structure can be changed from the data structure of each replica identifier and the access request amount / content.
  • the determination as to whether or not the data structure can be changed is made based on, for example, a predefined rule.
  • the rules include the following. Although not particularly limited, the rule is ⁇ Condition> then ⁇ Action> (execute an action when the condition is satisfied).
  • R4 Increase the number of partitions when the number of read processing requests exceeds a certain number for the table identifier (or vice versa).
  • step S404 If it is necessary to change the data structure or the number of replicas in step S404, the process proceeds to step S405. If it is not necessary, the conversion determination unit 72 ends the flow.
  • step S405 the data structure is actually converted by the conversion determining means 72, the structure information changing means 91, the data structure converting means 113, and the like.
  • the table identifier for increasing the number of replicas is increased by one in the data structure management information 921 of the structure information management unit 9, a unique replica identifier is assigned, and the placement node destination is determined.
  • the placement node is determined in the same manner as in the first embodiment, but may be duplicated with other placement nodes as long as the number of replicas equal to or higher than the availability level is maintained.
  • the replica replicates data from the same replica as the new replica identifier to the placement node destination.
  • step S405 The operation of converting the data structure in step S405 will be described in more detail with reference to FIGS. For simplicity, in FIG. 20 and FIG. 21, the replica identifier is not partitioned. In the following, the conversion process of the data structure conversion unit 113 in FIG. 18 will be described along with an example of converting the data structure from B to C.
  • FIG. 20 is a flowchart for explaining the data structure conversion operation in this embodiment.
  • the conversion determination means 72 issues a change request to the data structure management information 921 (FIG. 4) of the structure information holding unit 92 (FIG. 16) (step S501, ie, step S405 of FIG. 19).
  • the structure information changing unit 91 makes a conversion processing request to the data structure converting unit 113 of the data node X that is the change destination.
  • step S502 the data node X having the replica identifier data to be changed creates a local replica (local replica) of the corresponding replica identifier.
  • This local replication may use a snapshot technique based on storage instead of a physical copy.
  • the replica identifier data of other nodes may be used as the conversion source data without copying. This duplication processing is not necessarily required depending on the conversion processing implementation method.
  • step S503 as the structure conversion process, the data structure conversion unit 113 performs a process of reading the conversion source data from the data storage unit and writing the conversion destination data as a different data structure.
  • the update data stored in the data structure of the data structure A is stored in the data storage section of the data structure A accumulated during the conversion process (or at the start of the conversion process). And applied to the data structure of the conversion destination (step S504).
  • the conversion source data is deleted. Note that the conversion source data does not necessarily have to be deleted, but the memory utilization efficiency is improved by deleting the data.
  • FIG. 21 is a diagram for explaining processing in the data node during conversion processing in the present embodiment shown in FIG.
  • the access processing unit 112 responds to the access request using the data structure A and the data structure B.
  • the update process is held in the data structure A (intermediate structure for Write), and is not applied to the data structure B (Row-Store) while the data structure conversion unit 113 performs the conversion process.
  • the access processing unit 112 uses the data structure A, which is an intermediate structure for Write, and the data structure C (Column Store) of the conversion destination. Process access requests.
  • the data node in the data structure conversion process is not accessed, and data of another replica identifier is used.
  • part of the exclusive processing of the access processing means 112 during the data structure conversion processing becomes unnecessary, and the system configuration is simplified.
  • Partition number change operation> 22 and 23 are flowcharts for explaining the operation of changing the number of partitions in this embodiment.
  • the partition number changing process can be expressed as the same flowchart as in FIG. In the following, FIG. 22 will be described focusing on differences from FIG.
  • the distribution strategy may be changed.
  • the change of the distribution strategy for example, the change from the distribution by round robin to the distribution by the value range of an arbitrary column, or vice versa.
  • step S602 the conversion determination unit 72 determines whether or not the number of distributions sufficient for the required performance is maintained with respect to the number of access request processes (for example, scanning all data). In many cases, it is advantageous in terms of performance to perform data parallel processing such as processing that is performed). If it is a necessary and sufficient number of distributions, the process proceeds to step S603. If it is not the necessary and sufficient number of distributions, the process proceeds to step S604.
  • step S603 the conversion determination unit 72 determines whether unnecessary division is performed for each replica identifier. For example, although there are few requests for data parallel access processing, replica identifiers that are excessively distributed are applicable.
  • step S604 If unnecessary division has been made, the process proceeds to step S604, and if not, the flow ends.
  • step S604 the conversion determination unit 72 determines whether the number of partitions needs to be changed. As described above, the change contents of the number of partitions are determined based on arbitrarily specified rules. If no change is necessary, the conversion determination unit 72 ends the flow. If a change is necessary, the conversion determination unit 72 changes the number of partitions (step S605). Step S605 is processing for actually changing the number of partitions.
  • FIG. 23 shows a flow of step S605 of FIG. 22 (partitioning number changing process by the conversion determining means 72). In the following, FIG. 23 will be described with a focus on differences from FIG.
  • step S702 The local replication in step S702 is prepared for use in response to an access request during conversion processing as shown in FIG.
  • Step S703 is a process of copying data to the data node of the change destination for the record whose placement node is changed by changing the number of partitions.
  • Step S704 is substantially the same as S504 in FIG. 20, except that the application destination of the update processing content during the data structure conversion stored in the data structure A may be another data node.
  • Step S705 is substantially the same as S505 in FIG.
  • the capacity efficiency and storage cost of the system can be reduced by changing the placement destination node, writing a part of the data to a disk, or storing it in a separately prepared archive storage.
  • a distributed arrangement strategy is determined in time series, and old data (B1, B2) is written on the disc (C1, C2).
  • old data B1, B2
  • C1, C2 old data
  • the data may be written in another archive, and only new data (B3: latest partitioning table) may be held in the memory (C3).
  • the data arrangement specifying information 922 of the structure information holding unit 92 is, for example, as shown in FIG.
  • the data arrangement specifying information 922 includes information on an arrangement node, a distributed arrangement strategy, and an arrangement physical medium corresponding to each replica identifier with respect to the table identifier.
  • the history record type table (A) in FIG. 24 is stored in the order of table identifiers.
  • the information on the allocation strategy (round robin, column 1 value distribution, time series, etc.) is specified as the distributed allocation strategy.
  • the replica identifier 2 of the table identifier “orders” is distributed and arranged in the arrangement node 2-10 in time series, and the physical medium (memory, disk, etc.) of the arrangement destination is specified.
  • a hash function is used with a character string combining the key value, the column identifier, and the table identifier as an argument.
  • a hash value is obtained, and a data node of a data arrangement destination is determined by a consistent hash from the hash value and storage destination node list information.
  • hashing is performed using the key value of the record to determine the data placement node.
  • a data placement node is determined using a key value or a unique (unique) record ID.
  • an argument to the hash function in the consistent hashing method is A character string (table identifier: tableA + column identifier Value2 + Key value: acc) combined with table identifier + column name + Key value is passed, and a hash value is calculated.
  • the data node can be determined by the consistent hashing method from the output (hash value) of the hash function for the argument and the information of the storage destination node list (for example, data nodes 1 to 4).
  • FIGS. 27A and 27B are diagrams for explaining the recording method of the data arrangement node in the present embodiment. Since it is a column store format, data is recorded for each column.
  • the outer rectangle is a management unit of the recording area of the data arrangement node, and corresponds to, for example, a page of a memory or HDD (hard disk drive).
  • the page size may be arbitrary.
  • Management information for designating a table identifier (tableA) and a column name (value1) is recorded at an arbitrary location in the page (at the end in the figure). When one column row does not fit on one page, it is necessary to record in another unit. However, pointer information to other units may be recorded in this place (storage area).
  • the cell value is stored at an arbitrary address in the page. In FIG. 27A, cell values (each value of column name value1) are recorded in order from the top of the page.
  • FIG. 27A it is recorded immediately before the management information in the same unit. There, the key information (or unique record ID) and the address (pointer) where it is stored are recorded.
  • the information (Key: cc # 8) has a key: cc cell value of address # 8, (Key: ab # 4) has a key: ab cell value of address # 4, (Key: aa # 0) Records that the cell value of Key: aa is stored at address # 0.
  • information of another column (value 2) of the same table may be recorded in another recording management unit (memory or HDD).
  • another recording management unit memory or HDD
  • it may be divided and arranged by a simpler method.
  • a set having a key value and one or a plurality of data records for each column corresponding to the key value is used as a unit in the row direction, and row identification is performed using the key value.
  • partitioning column store
  • a hash value is obtained with a hash function using a character string obtained by combining the table identifier and the column identifier as an argument, and the hash value and
  • data placement destination data nodes may be determined from the storage destination node list information by a consistent hash, and distributed to different data nodes in units of columns. Different data nodes may be stored in different data structures in the partitioning unit.
  • FIG. 28 is a diagram schematically showing a case where the data arrangement nodes are distributed and arranged for each column of the table as the partitioning of the table. It is only necessary to pass a table identifier and a column name (for example, (tableA: value2) or (tableA: value3)) as a value to be given to the hash function. Output of the hash function for the argument (a storage node is calculated from the hash value.
  • a key value and a set having one or a plurality of data records for each column corresponding to the key value is used as a unit in the row direction, and row identification is performed as a key.
  • a hash function is used with a hash function using a character string that is a combination of the table identifier, the column identifier, and a unique suffix. It is also possible to obtain a value, determine the data placement destination data node from the hash value and the storage destination node list information by a consistent hash, and distribute one column to a plurality of data nodes. Different data structures may be stored in partitioning units among a plurality of data nodes at the arrangement destination.
  • FIG. 29 is a diagram schematically showing a case where one column of the table is partitioned into two in FIG.
  • a unique suffix such as a number is given in addition to the table identifier and the column name as a value to be given as an argument of the hash function, so that a plurality of types of data placement nodes (stores) Node).
  • the key value is aa or acc
  • the key is placed in the data placement node (storage node) 1
  • the key value is dd or ee
  • the key is placed in the data placement node (storage node) 2.
  • the combination of the key value and the suffix (or a value that can be calculated) is stored in the structure information holding unit 92 in FIG.
  • a suffix may be specified for each numerical range. For example, 1-100 sets the identifier to 0 (as a result, it is stored in the storage node 1). By doing so, it is possible to reduce the data capacity to be held and managed in the structure information holding unit 92.
  • the column store method partitioning has been described, but the same applies to the row store method.
  • a key value or the like is used instead of the column identifier.
  • a plurality of data placement nodes that participate in the distributed storage system are divided into groups corresponding to the system operating state, and the data placement node that receives the data write request participates in the distributed storage system.
  • data replications may be created for the number of data replications defined for each group. In this case, the number of data copies created for each group is determined, a hash ring in which a plurality of data placement nodes are logically placed is traced, and the number of data copies is reached until the specified number of data copies for each group is achieved.
  • a destination may be searched and a list of replication destination data arrangement nodes may be created.
  • a list of replication destination data arrangement nodes may be received and a replication command may be issued to each data arrangement node in the list.
  • a company's information system is realized using a distributed storage system or database system.
  • the system that provides services that are central to the company's business content is called “core system” or “core business system” Sales and inventory management systems, cash register POS systems (Point of sale system), etc. are included.
  • a data warehouse is known as a system that performs data analysis in order to use (sometimes aggregate) information of these core systems for decision making of a company. Since these systems (core system, data warehouse) generally have different access characteristics for data, a database system is prepared and data structure is prepared so as to be suitable for each access characteristic (to perform high-speed processing). It has been done to specialize.
  • the data warehouse system includes, for example, a large-scale database for extracting and reconstructing data (for example, transaction data, etc.) from a plurality of backbone systems and analyzing information and making decisions. It is necessary to perform data migration from the database of the backbone system to the data warehouse database, and this process is called ETL (Extract / Transform / Load). ETL is known to become a heavy load as the amount of data in both the backbone system and the data warehouse system increases, but by applying the present invention, the bottleneck of data structure conversion is eliminated, Storage usage efficiency can be increased.
  • ETL Extract / Transform / Load
  • the data storage system according to the present invention can be applied to parallel databases, parallel data processing systems, distributed storage, parallel file systems, distributed databases, data grids, and cluster computers.
  • Each has a data storage unit and a plurality of data nodes that are network-coupled, and the data nodes to which data is replicated are logically the same among the data nodes, but physically different data structures.
  • a distributed storage system including at least two data nodes held in each of the data storage units.
  • Appendix 2 The distributed storage system according to appendix 1, wherein conversion to a target data structure is performed asynchronously with reception of replicated data in the replication target data node.
  • the data node of the copy destination holds the duplicate data in an intermediate data holding structure and returns a response, and asynchronously converts the data structure held in the intermediate data holding structure to a target data structure Distributed storage system.
  • the distributed storage system comprising means for variably controlling data nodes of data arrangement destinations, data structures at the arrangement destinations, and data divisions in predetermined table units.
  • Appendix 5 The distributed storage system according to any one of appendices 1 to 4, further comprising means for obtaining a data node in which data is arranged by consistent hashing.
  • a structural information management device having a structural information holding unit for storing and managing A client function realization unit including a data access unit that identifies an access destination of the update process and the reference process with reference to the data structure management information and the data arrangement identification information; A plurality of the data nodes each including the data storage unit and connected to the structural information management device and the client function realization unit; With The data node is A data management / processing unit that holds data in an intermediate data holding structure and returns
  • Appendix 8 The distributed storage system according to appendix 7, wherein the intermediate data holding structure holds the data until the data is stored in the data storage unit as a designated target data structure.
  • Appendix 9 The distributed storage system according to appendix 7, wherein the client function realization unit selects an access destination data node from the data structure management information and the data arrangement specifying information according to the contents of the update process or the reference process.
  • the client function realization unit may be a structure information cache holding unit that caches the data arrangement specifying information held in the structure information holding unit of the structure information management device or information held in the structure information holding unit.
  • the data node includes an access reception unit, an access processing unit, and a data structure conversion unit
  • the data storage unit of the data node includes a structure-specific data storage unit
  • the access receiving unit receives an update request from the client function realization unit, and transfers the update request to the data node specified corresponding to the replica identifier in the data arrangement specifying information
  • the access processing unit of the data node processes the received update request, executes update processing with reference to the information of the data structure management information, and at this time, from the information of the data structure management information, the data
  • the update trigger for the node is zero, update the update data to the data structure specified in the data structure management information and update the data storage unit by structure
  • the update opportunity is not zero, the update data is once written in the intermediate data holding structure, and the process completion is responded.
  • the access reception unit When the access reception unit receives the completion notification from the access processing unit and the completion notification of the replica data node, it responds to the client function realization unit,
  • the data structure conversion unit converts the data of the intermediate data holding structure into a data structure specified in the data structure management information, and stores the data structure in the data storage unit classified by structure of the conversion destination. Distributed storage system.
  • the client function implementation unit selects a data structure suitable for data access performed on a data node, specifies a replica identifier, calculates a data node to be accessed, and is selected.
  • the distributed storage system according to appendix 7, wherein an access request is issued to the data node and an access processing result is received from the data node.
  • Appendix 13 The distributed storage system according to appendix 7, wherein the client function realization unit is arranged in the data node.
  • Appendix 14 14. The distributed storage system according to appendix 13, wherein the client function implementation unit includes a structure information cache holding unit that caches information held in the structure information holding unit.
  • appendix 15 15.
  • the data structure management information includes a partition number corresponding to a replica identifier, which is a division number for dividing and storing data into a plurality of data nodes
  • the data placement specifying information includes a plurality of data nodes as placement nodes corresponding to replica identifiers corresponding to a partition number of 2 or more in the data structure management information
  • the access receiving unit of the data node that has received the access request when an arrangement destination of the partitioned data extends over a plurality of data nodes, to an access processing unit of another data node that constitutes the plurality of data nodes.
  • the distributed storage system according to appendix 7, which issues an access request.
  • Appendix 18 A history recording unit for recording a history of access requests; A change determining unit that determines whether to convert the data structure using the history information of the history recording unit;
  • the change determination unit When it is determined that the data structure needs to be converted, the change determination unit outputs a conversion request to the structure information change unit of the structure information management device, The structure information change unit of the structure information management device changes the information of the structure information holding unit, and outputs a conversion request to the data structure conversion unit of the data node,
  • the distributed storage system according to appendix 18, wherein the data structure conversion unit of the data node converts a data structure held in the data storage unit of the data node.
  • Appendix 20 A distributed storage method in a system comprising a plurality of data nodes each having a data storage unit and network-coupled, A distributed storage method in which at least two data nodes of data nodes to which data is replicated are logically the same among the data nodes but physically different data structures are held in the respective data storage units. .
  • appendix 22 The appendix 21 according to appendix 21, wherein the data node at the duplication destination holds the duplicate data in the intermediate data holding structure and returns a response, and asynchronously converts the data structure held in the intermediate data holding structure to the target data structure.
  • Distributed storage method The appendix 21 according to appendix 21, wherein the data node at the duplication destination holds the duplicate data in the intermediate data holding structure and returns a response, and asynchronously converts the data structure held in the intermediate data holding structure to the target data structure.
  • Appendix 23 The distributed storage method according to appendix 21, wherein the data node of the data placement destination, the data structure at the placement destination, and the data division are variably controlled in predetermined table units.
  • Appendix 24 24.
  • the data node at the replication destination converts the data requested for update into a data structure different from the data structure in the specified target database, and converts the data to the data
  • the data node temporarily stores the data to be updated, holds an intermediate structure and returns a response to the update, and converts the data to the target data structure asynchronously with the update request.
  • the distributed storage method according to any one of appendices 20 to 24, wherein the distributed storage method is stored.
  • Appendix 26 Corresponding to a table identifier that is an identifier for identifying data to be stored, a replica identifier that identifies a replica, data structure information that identifies a type of data structure corresponding to the replica identifier, and conversion to a specified data structure Update timing information that is time information until it is stored, and data structure management information provided corresponding to the number of types of the data structure, Corresponding to the table identifier, data placement specifying information comprising the replica identifier and one or more data placement destination data node information corresponding to the replica identifier, Is stored and managed in the structure information management unit, On the client side, referring to the data structure management information and the data arrangement specifying information, the access destination of the update process and the reference process is specified, The data node is When performing an update process based on an access request from the client side, the data is held in an intermediate data holding structure and a response is returned to the client. 26.
  • the data structure management information is provided with a partition number corresponding to a replica identifier, which is a division number for dividing and storing data into a plurality of data nodes
  • the data placement specifying information includes a plurality of data nodes as placement nodes corresponding to replica identifiers corresponding to a partition number of 2 or more in the data structure management information
  • the data node that has received the access request issues an access request to another data node that constitutes the plurality of data nodes when the arrangement destination of the partitioned data extends over the plurality of data nodes.
  • Appendix 28 The history information in the history recording unit that records the history in the access request is used to determine whether or not to convert the data structure. If conversion is necessary, the structure information is converted, and the data of the data node is further converted. 27. The distributed storage method according to appendix 26, wherein the structure is converted.
  • a hash value is obtained by a hash function using a character string obtained by combining the column identifier and the table identifier as an argument, and a data node of a data placement destination is determined by a consistent hash from the hash value and storage destination node list information.
  • the distributed storage system according to appendix 5.
  • Appendix 30 A table having a key value and a set having one or a plurality of data records corresponding to the key value in one or a plurality of columns as a unit in the row direction, and a table having a column identifier assigned to each column.
  • a hash value is obtained by a hash function using a character string combined with a column identifier as an argument, and a data node of a data arrangement destination is determined by a consistent hash from the hash value and storage destination node list information, and is separately for each column.
  • the distributed storage system according to appendix 5, wherein the distributed storage system is distributed to the data nodes.
  • Appendix 31 A table having a key value and a set having one or a plurality of data records corresponding to the key value in one or a plurality of columns as a unit in the row direction, and a table having a column identifier assigned to each column.
  • a hash value is obtained by a hash function using a character string combining a column identifier and a unique suffix as an argument, and a data node of a data arrangement destination is determined by a consistent hash from the hash value and storage destination node list information.
  • the distributed storage system according to appendix 5, wherein one column is distributed to a plurality of data nodes.
  • Appendix 32 A table having one or a plurality of data records in one or a plurality of columns as a unit in the row direction, a column identifier assigned to each column, and a table with a unique record identifier for each record.
  • a hash value is obtained with a hash function using a character string obtained by combining the column identifier and the record identifier as an argument, and a data node of a data arrangement destination is determined by a consistent hash from the hash value and storage destination node list information.
  • the distributed storage system according to appendix 5.
  • a hash value is obtained by a hash function using a character string combined with a column identifier as an argument, and a data node of a data arrangement destination is determined by a consistent hash from the hash value and storage destination node list information, and is separately for each column.
  • 25. The distributed storage method according to appendix 24, wherein the distributed storage method is distributed to the data nodes.
  • a hash value is obtained by a hash function using a character string combining a column identifier and a unique suffix as an argument, and a data node of a data arrangement destination is determined by a consistent hash from the hash value and storage destination node list information.
  • 25 The distributed storage method according to appendix 24, wherein one column is distributed to a plurality of data nodes.
  • a hash value is obtained with a hash function using a character string obtained by combining the column identifier and the record identifier as an argument, and a data node of a data arrangement destination is determined by a consistent hash from the hash value and storage destination node list information.

Abstract

 本発明は、分散ストレージにおけるデータ複製において、可用性を確保するとともに、ストレージの利用効率の低下の回避、応答性能の低下を回避の少なくとも1つを可能とする。それぞれがデータ格納部を備え、ネットワーク結合される複数のデータノードを備え、複数のデータノードは、前記データノード間で、論理的には同一であるが、物理的には異なる複数種のデータ構造の複製をそれぞれの前記データ格納部に保持する少なくとも二つのデータノードを含む。

Description

分散ストレージシステムおよび方法
(関連出願についての記載)
 本発明は、日本国特許出願:特願2011-050151号(2011年3月8日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
 本発明は、分散ストレージに関し、特に、データ構造の制御が可能な分散ストレージシステム、および方法と装置に関する。
<分散ストレージシステム>
 複数の計算機(データノード、あるいは単に「ノード」ともいう)をネットワーク結合し、各計算機のデータ格納部(HDD(Hard Disk Drive)やメモリ等)にデータを格納して利用するシステムを実現する分散ストレージシステム(Distributed Storage System)が利用されている。
 一般的な分散ストレージ技術では、
 ・データをどの計算機(ノード)に配置するか、
 ・処理をどの計算機(ノード)で行うか、
といった判断をソフトウェアや特別な専用ハードウェアにより実現し、システムの状態に対してその動作を動的に変更することでシステム内のリソース使用量を調整し、システム利用者(クライアント計算機)に対する性能を向上している。
 分散ストレージシステムにおいては、データが複数のノードに分散しているため、データにアクセスしようとするクライアントは、まず、データを持っているノードがどれであるかを知る必要がある。また当該データを持つノードが複数ある場合、どのノード(一つ以上)にアクセスするかを知る必要がある。
 分散ストレージシステムでは、一般に、ファイル管理として、ファイル本体と、当該ファイルのメタデータ(ファイルの格納場所、ファイルサイズ、オウナー等)を別々に保存する方式が用いられている。
<メタサーバ方式>
 分散ストレージシステムにおいて、クライアントがデータを保持しているノードを知るための技術の一つとしてメタサーバ方式が知られている。メタサーバ方式では、データの位置情報を管理する、一つ又は複数(ただし、少ない数)の計算機により構成されたメタサーバを設ける。
 しかしながら、メタサーバ方式では、分散ストレージシステムの構成の大規模化に伴って、データを格納しているノードの位置を検出する処理を行うメタサーバの処理性能が足りず(メタサーバ1台当りで管理するノード数が膨大となり、該メタサーバの処理性能が追いつかない)、導入したメタサーバが、かえってアクセス性能上のボトルネックになる、という問題がある。
<分散KVS>
 データを保持しているノードの位置を知るための別の手法(技術)として、分散関数(例えばハッシュ関数)を用いてデータの位置を求めるものがある。この種の手法は、例えば分散KVS(Key Value Store:キー・バリュー・ストア)と呼ばれている。
 分散KVSでは、全てのクライアントで、分散関数と、システムに参加しているノードのリスト(ノードリスト)とを共有する。
 また、格納データは、固定長あるいは任意長のデータ断片(Value)に分かれている。各データ断片(Value)毎に一意に特定可能な識別子(Key)が付与され、(Key、Value)のペアで保存される。例えばキーの値に応じて保存先のノード(サーバ)を変えることで、複数のノードにデータを分散保存することが可能となる。
 各クライアントは、データにアクセスする際、キーを分散関数の入力値とし、分散関数の出力値とノードリストとを基に、データを格納しているノードの位置を算術的に求める。
 クライアント間で共有する情報のうち、分散関数は、基本的に、時間が経過しても変化しない(時不変)。一方、ノードリストの内容は、ノードの故障や追加に伴い、随時、変更される。このため、クライアントは、それらの情報に対して任意の方法でアクセス出来る必要がある。
<レプリケーション>
 分散ストレージシステムにおいては、可用性(Availability:システムが連続して動作できる能力)確保のために、データの複製を複数ノードで保持し、データの複製を、負荷分散に活用することが一般的に行われている。
 なお、作成するデータの複製を用いて負荷分散を実現する技術が特許文献1に記載されている。
 本件に関して行われた先行文献サーチの結果サーチされた特許文献2には、サーバが情報構造定義部で情報構造定義体を定義し、登録用クライアントは情報構造定義体によりデータベースを構築し、データベースアクセスツールを生成し、このツールを用いてデータベースに情報を登録する構成が開示されている。また特許文献3には、分散型ストレージシステムにおいて、各複製がそれぞれ固有のロケータ値を介してアクセス可能なオブジェクトの複製を保存するストレージノードと、各オブジェクトに対するそれぞれのキーマップエントリを保存するキーマップインスタンスを含み、所定のオブジェクトについてはそれぞれのキーマップエントリは、オブジェクトの複製と、対応するキー値、各ロケータを含む構成が開示されている。
特開2006-12005号公報(特許第4528039号) 特開平11-195044号公報(特許第3911810号) 特表2009-522659号公報
 以下に関連技術の分析を与える。
 関連技術の分散ストレージシステムでは、可用性保持のため、複製データを複数のノードで同一の物理構造で保持している。これにより、アクセス応答性能と可用性保証を実現している。しかしながら、複製データを同一の物理構造で保持しているため、データの利用形態の特性が異なるアプリケーション等に対しては、別のデータ構造への変換、及び別のデータ構造を保持するためのストレージを用意しなければならない。
 したがって、本発明の目的は、分散ストレージにおけるデータ複製において、可用性を確保するとともに、ストレージの利用効率の低下の回避、応答性能の低下の回避の少なくとも1つを可能とする、分散ストレージシステムと方法を提供することにある。
 本発明によれば、上記課題の少なくとも1つの解決を図るため、特に制限されるものでないが、概略以下の構成とされる。
 本発明によれば、それぞれがデータ格納部を備え、ネットワーク結合される複数のデータノードを備え、データ複製先のデータノードが、前記データノード間で、論理的には同一であるが、物理的には異なるデータ構造をそれぞれの前記データ格納部に保持する、少なくとも二つのデータノードを含む分散ストレージシステムが提供される。本発明によれば、分散ストレージシステムを構成するデータノード装置として、他のデータノードとネットワーク結合され、更新対象のデータを複数のデータノードに複製する場合、前記データに関して、少なくとも一つの他のデータノードとの間で、論理的には同一であるが、物理的には異なるデータ構造を前記データ格納部に保持するデータノード装置が提供される。
 本発明によれば、それぞれがデータ格納部を備え、ネットワーク結合される複数のデータノードを備えたシステムでの分散ストレージ方法であって、前記複数のデータノードの少なくとも二つのデータノードは、前記データノード間で論理的には同一であるが、物理的には異なる複数種のデータ構造の複製をそれぞれの前記データ格納部に保持する、分散ストレージ方法が提供される。
 いくつかの実施形態によれば、前記複数のデータノードにおいて、ダーゲットのデータ構造への変換をデータ更新要求とは非同期で行うようにしてもよい。あるいは、いくつかの実施形態によれば、前記データノードにおいて中間データ保持構造に受信データを保持し、前記更新要求の応答を返し、前記中間データ保持構造に保持されるデータ構造をターゲットのデータ構造に非同期で変換する。あるいは、いくつかの実施形態によれば、予め定められたテーブル単位でデータ配置先、配置先のデータ構造、データ分割を可変に制御する。
 本発明によれば、分散ストレージにおけるデータ複製において、可用性を確保するとともに、ストレージの利用効率の低下の回避、応答性能の低下を回避の少なくとも1つ可能としている。
本発明の第1の例示的な実施の形態のシステム構成を示す図である。 本発明の第1の例示的な実施の形態を説明する図である。 本発明の第1の例示的な実施形態を説明する図である。 本発明の第1の例示的な実施形態のデータノードの構成例を示す図である。 本発明の第1の例示的な実施形態におけるデータ構造管理情報921を模式的に示す図である。 本発明の第1の例示的な実施形態におけるテーブルのデータ保持構造を説明する図である。 本発明の第1の例示的な実施形態におけるテーブルのデータ保持、非同期更新を模式的に説明する図である。 本発明の第1の例示的な実施形態におけるデータ配置特定情報922の例を示す図である。 本発明の第1の例示的な実施形態におけるWrite処理の動作シーケンスを説明する図(1)である。 本発明の第1の例示的な実施形態におけるWrite処理の動作シーケンスを説明する図(2)である。 本発明の第1の例示的な実施形態におけるREAD系処理の動作シーケンスを説明する図である。 本発明の第1の例示的な実施形態におけるクライアント実現手段61におけるアクセス処理の動作を説明するフローチャートである。 本発明の第1の例示的な実施形態におけるデータノードにおけるアクセス処理の動作を説明するフローチャートである。 本発明の第1の例示的な実施形態におけるデータ変換処理を説明するフローチャートである。 本発明の第2の例示的な実施形態のデータ構造管理情報921を模式的に示す図である。 本発明の第2の例示的な実施形態におけるデータ配置特定情報922の例を示す図である。 本発明の第2の例示的な実施形態のデータノードの構成例を示す図である。 本発明の第3の例示的な実施形態のデータノードの構成例を示す図である。 本発明の第3の例示的な実施形態の全体の制御フローを説明するフローチャートである。 本発明の第3の例示的な実施形態のデータ構造変換処理を説明するフローチャートである。 本発明の第3の例示的な実施形態の変換処理を説明する図である。 本発明の第3の例示的な実施形態のパーティショニング数の変更処理を説明するフローチャートである。 本発明の第3の例示的な実施形態のパーティショニング数変更時の動作を説明するフローチャートである。 本発明の第3の例示的な実施形態における分散テーブルのデータ配置を説明する図である。 本発明の第3の例示的な実施形態における構造情報保持部92を説明する図である。 本発明の第4の例示的な実施形態のコンシステント・ハッシング分割配置を説明する図である。 本発明の第4の例示的な実施形態の情報記録形態を説明する図である。 本発明の第4の例示的な実施形態におけるカラムベースのコンシステント・ハッシング分割配置を説明する図である。 本発明の第4の例示的な実施形態において1カラムをパーティショニングした場合のコンシステント・ハッシング分割配置を説明する図である。
 本発明の好ましい態様(Preferred Modes)の一つによれば、複数種類のデータ構造を持ち、データ配置ノード(「データノード」という)間で論理的には同一であるが、物理的には異なる構造の複製(レプリカ)を保持する。本発明においては、書き込み(更新)要求とは非同期に行われるデータ構造変換の適用契機を制御可能としている。本発明においては、Writeの応答特性を優先した構造を中間構造(中間データ保持構造)を備え、該中間構造に保持されるデータ構造をターゲットとなるデータ構造に非同期に変換する。
 本発明の好ましい態様においては、制御パラメータを変更するインタフェースを持つ。アクセス負荷に応じて制御パラメータを変更する。あるいは、処理負荷が増えたら、パーティショニング粒度を小さくする等の制御が行われる。
 本発明の好ましい態様によれば、複数種類のデータ構造を持つことが可能となるキー・バリュー・ストア(Key Value Store)を実現可能としている。本発明の好ましい態様によれば、論理的には同一内容であるが、物理的には異なるデータ構造の複製(レプリカ)を持つ。この結果、
 ・異なる種類のアクセス負荷に対して高速に対応可能とし、
 ・可用性保持のための複数(レプリカ)を他の用途に利用可能とし、データ容量の効率利用を可能としている。
 本発明の好ましい態様において、データ送信元から該データを受け取る側のデータノードでは、受信データを複製に同期して直ちにターゲット構造に変換する代りに、中間構造形式で保持し、ターゲット構造への変換を非同期で行うようにしてもよい。例えばWrite要求に対してデータをバッファに保持して直ちに応答を返す等、アクセス要求に対する応答特性を優先した中間構造を備え、中間構造に保持されたデータ構造を、非同期でターゲット構造を変換することにより、データ構造の変換処理によって生じる、アクセス性能上のボトルネックを回避しながら、要求される高可用性の維持を可能としている。分散ストレージシステムの複数のデータノード上で複数種類のデータ構造への更新、変換を同時に行うことは、性能上、ボトルネックとなりやすい。本発明の好ましい態様においては、Writeに特化した構造(Writeの応答性能を優先した中間データ保持構造)を用意し、可用性保証のための複製実行時には、同期式(Sync)で中間構造で複製し、該中間構造で保持されるデータを非同期(Async)で正式のターゲット構造に変換する。
 さらに、本発明の好ましい態様によれば、データノードやデータ構造、非同期に構造変換を実行するための契機(トリガー)を制御可能にすることで、様々なアプリケーションや負荷変動に対応可能としている。
 本発明の好ましい態様によれば、特に制限されるものではないが、例えば、テーブル単位で、データ配置、データ構造、パーティショニング(分割)をコントロール可能としている。
 データ構造として、例えば、
 ‐ロウストア(Row-store):
  ・追記型(データの格納領域に記録を追加)、
  ・更新型、
 ‐カラムストア(Column-store):
  ・圧縮の有無、
 ‐ライトログ(例えばライト性能を優先するために更新情報を追記するための構造):
 ‐インデックス(検索用の索引データ)の有無:
 ‐データの格納順をソート(Sorting)しているか:
 ‐分割(Partitioning)の有/無、分割数:
 ‐分割(Partitioning)単位、アルゴリズム:
等の項目について組み合わせが選択される。
 本発明の好ましい態様によれば、例えばデータをどのデータノードに置くかが制御の対象となるほか、どのデータ構造とするかも制御対象となる。
 ・例えばWrite要求のみが行われる場合、ライトログ(WriteLog)や、追記型ロウテーブル(Row-table)とする。
 ・あるいは、ReadとWriteの組み合せに対して、ロウテーブル(Row-table)が選択される。
 ・さらに、分析アプリケーションに対して、例えばカラムストア(あるいはカラム指向データベース)を選択する。カラムストア方式は、クエリ(Query)に対してストレージのリードアクセスを効率化する。
 ・あるいは、分散処理に対して、パーティショニング(データ分割)の粒度を相対的に小さくし、集中処理に対してパーティショニングを大きくするか、パーティショニングを止める等の制御を行うようにしてもよい。
 ・さらに、中間構造で保持されるデータを非同期(Async)でターゲット構造へ変換するためのトリガー(契機)を制御対象としてもよい。
 ・あるいは、分析アプリケーションが必要とするデータ鮮度(データの新しさの尺度)によって、データ変換の契機を調整するようにしてもよい。
 本発明の好ましい態様によれば、それぞれがデータ格納部(図1の12)を備え、ネットワーク結合される複数のデータ配置ノード(データノード)を備えた分散ストレージシステムにおいて、クライアントからのデータ更新要求時等に行われる複製において、複製先の1つ又は複数のデータノードでは、更新要求を受けたデータベースにおけるデータ構造とは、異なる1つ又は複数種のデータ構造で複製データを前記データ格納部(図1の12)に格納する。その際、前記データノードは、複製データを一旦中間構造を保持して更新要求に対する応答をクライアントに返し、前記更新要求とは、非同期で目的のデータ構造に変換して格納する。
 本発明の態様の1つによれば、データ構造情報(例えばデータ構造の管理情報やデータ配置特定情報)を保持管理する装置(図1の9)を備え、データアクセス手段(図1の611)およびデータノードをアクセスする手段(図4の112)は、データ構造情報を用いて、複製対象のデータに対するデータ構造(物理構造)を決定する。このため、分散ストレージノード毎に、複製データを異なるデータ構造で保持することができる。
 本発明の態様の1つによれば、分散ストレージシステムにおいて、複製先のデータノードは、クライアントからの更新要求に対して、更新処理性能を優先する中間構造(中間データ保持構造、中間バッファ構造ともいう)に、データを一旦保持して、該更新要求に対して応答し、データ構造管理情報で指定されるデータ構造への変換を非同期で実行する。このため、複数種のデータ構造をそれぞれ中間データ保持構造に保持しつつ、更新処理の応答性能を維持できる。
 本発明の態様の1つによれば、複数種のデータ構造を持ち、クライアント側が、アクセス内容に応じて適切なデータ構造に処理の振分け(適切なデータ構造を保持するデータノードをアクセスするように振り分ける)を行うようにしてもよい。このため、アクセス処理性能を向上することができる。
 前記した関連技術を、上記本発明の態様の観点から分析する。
 前述したとおり、関連技術の分散ストレージシステムにおいては、可用性保持のため、複製データを複数のノードで同一の物理構造で保持している。このため、可用性保持のための複製データの保持格納形式を制御することができない。
 例えば、
 ・データの配置場所、
 ・データ配置(内部)構造、
 ・データを分散して格納するか、集中的に格納するかという格納方式、
等の複製データの保持格納形式について、可変に制御することができない。
 データ移行等において、データ移行元のストレージ/データベースと、移行先のストレージ/データベースとは、同一データを異なるデータ構造で表現したものである、ということができる。例えば複製データを同一のデータ構造(物理構造)にて複数ノードで保持する構成において、互いに異なるデータ構造の各々について、各ノードで複製を保持する場合、ストレージ容量が過剰に必要とされる(この場合の複製に必要なストレージ容量は、データ容量×複製数×データ構造の種類の数)。そのため、計算機やディスク等のハードウェアを多く用意して利用することによって、購入コストや消費電力等の運用コストが増大してする(大量のデータコピー、大量のデータ構造の変換処理が必要とされる)。
 また、関連技術において、分散ストレージシステムを利用するユーザ(例えばアプリケーション開発者)が、実現したいアプリケーション・ロジックを踏まえた上で、
 ・適切なデータ構造の選択、
 ・適切なスキーマの設計、
 ・適切なデータベースソフトウェア、設定の使い分け
を行う必要がある、ということである。いずれも、データベースシステムおよびストレージシステムに対して高い知見がユーザに要求されることから、これらをユーザ側で行うことは、実際上、困難である。
 また、複製にあたり、適切なデータ構造を選択した場合であっても、複数のデータベースシステムを用意し、データの移行を行う必要がある、ということである。これらの処理は、計算機(サーバ)等において、データの入出力等の負荷が大きい。このため、移行先のデータベースのデータは、移行元のデータベースより古いデータとならざるを得ない。また、前述したように、同一内容のデータを互いに異なる複数のデータ構造として保持する場合、ストレージ利用効率が悪化してしまう。
 本発明の態様の1つによれば、複製データを複数種のデータ構造(物理構造)で保持することで、要求される高可用性と、高速応答等性能を確保しつつ、データ構造変換のボトルネックを解消し、ストレージの利用効率を高めることが出来る。
 以下、添付図面を参照して、いくつかの例示的な実施形態について説明する。
<実施形態1>
 本発明の第1の例示的な実施形態について図面を参照して説明する。図1は、本発明の第1の実施形態のシステム構成の一例を示す図である。データノード1~4、ネットワーク5、クライアントノード6、構造情報管理手段(構造情報管理装置)9を備える。
 データノード1~4は、分散ストレージを構成するデータ格納ノードであり、1つ以上の任意の数によって構成される。ネットワーク5は、データノード1~4を含むネットワークノード間の通信を実現する。クライアントノード6は、分散ストレージにアクセスする計算機ノードである。クライアントノード6は必ずしも独立して存在しなくてもよい。なお、データノード1~4がクライアント計算機を兼ねる例は、図2を参照して後述される。
 データノード1~4は、それぞれ、データ管理・処理手段(データ管理・処理部)11、21、31、41、データ格納部12、22、32、42を備える。
 データ管理・処理手段X1(X=1、2、3、4)は、分散ストレージに対するアクセス要求を受け付け、処理を実行する。
 データ格納部X2(X=1、2、3、4)はデータノードの担当するデータの保持、記録を行う。
 クライアントノード6は、クライアント機能実現手段(クライアント機能実現部)61を備える。
 クライアント機能実現手段61は、データノード1~4によって構成される分散ストレージにアクセスする。
 クライアント機能実現手段61はデータアクセス手段(データアクセス部)611を備える。
 データアクセス手段(データアクセス部)611は、構造情報管理手段9から構造情報(データ構造管理情報とデータ配置特定情報)を取得し、その構造情報を用いて、アクセス先のデータノードを特定する。
 なお、各データノード1~4やネットワーク5内の任意の装置(スイッチ、中間ノード)において、構造情報管理手段9の構造情報保持部92に格納される構造情報の一部又は全てを自装置内又は他の装置内のキャッシュ(不図示)に保持するようにしてもよい。
 すなわち、以下の実施形態の動作の説明において、構造情報保持部92に格納される構造情報に対するアクセスは、自装置内又は予め定められた所定の場所に配設されたキャッシュに対してアクセスするようにしてもよい。キャッシュに格納された構造情報の同期については、公知の分散システムの技術が適用できるため、ここでは詳細は省略する。よく知られているように、キャッシュを利用することでストレージ性能を高速化することが出来る。
 構造情報管理手段(構造情報管理装置)9は、構造情報を変更する構造情報変更手段91と、構造情報を保持する構造情報保持部92を備える。構造情報保持部92は、データ構造管理情報921(図4参照)とデータ配置特定情報922を含む(図4参照)。データ構造管理情報921は、後に図5を参照して説明されるが、テーブル識別子に対して、複製を特定するレプリカ識別子と、前記レプリカ識別子に対応したデータ構造の種類を特定するデータ構造情報と、指定されたデータ構造として格納されるまでの時間情報である更新契機からなるエントリをデータの複製数分有する。データ配置特定情報922は、後に図8を参照して説明されるが、テーブル識別子に対応して、前記レプリカ識別子と、前記レプリカ識別子に対応した1つ又は複数のデータ配置先のデータノード情報を有する。
 本実施形態において、クライアントノード6は、データノード1~4とは独立に(別々に)設けることは必ずしも必要とされない。つまり、以下、変形例として説明するように、データノード1~4のうち、任意の1つ以上のノードに、クライアント機能実現手段61を備えた構成としてもよい。
<実施形態1の変形例>
 図2は、本発明の第1の実施形態の変形例の構成を示す図である。図2に示す通り、データノード1、2、3、4の各々に、クライアント機能実現手段61が配設されている。
 図2を参照すると、データノード1、2、3、4に配設されるクライアント機能実現手段61は、図1のデータアクセス手段611の他に、構造情報キャッシュ保持部612を備える。
 構造情報キャッシュ保持部612は、構造情報保持部92に格納される構造情報の一部又は全てを格納するキャッシュメモリである。
 構造情報同期手段(構造情報同期装置)93は、構造情報のキャッシュの同期を制御する。構造情報保持部92のデータを取得し、データノードのクライアント機能実現手段61の構造情報キャッシュ保持部612の情報を更新する。
 構造情報同期手段93は、システムを構成する任意の機器に、任意の数、具備するようにしてもよい。例えば、各データノード1~4の少なくとも1つを実現する計算機上でソフトウェアとして動作させるようにしてもよい。
 図2において、データノード1~4をそれぞれ個別の計算機として実現した場合の例を図3に示す。図3の例では、1つ以上の任意の数のデータノード計算機101~104と、ネットワーク105から構成される。
 データノード計算機101~104は、それぞれCPU101a、データ記憶装置101b、データ転送装置101cを備える。CPU101aにより、データ管理・処理手段21、クライアント機能実現手段61の機能の全て又は一部を実現する。
 データ記憶装置101bは、例えば、ハードディスクドライブ、フラッシュメモリ、DRAM(Dynamic Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、PRAM(Phase change RAM)、RAIDコントローラに結合された記憶装置、磁気テープのようにデータを記録可能な物理媒体、又は、ストレージノードの外部に設置された媒体にデータを記録する制御装置である。ネットワーク105及びデータ転送装置101cは、例えばEthernet(登録商標)、Fibre ChannelやFCoE(Fibre Channel over Ethernet(登録商標))、InfiniBand(Intel社その他による団体が推進する高速IOバスアーキテクチャ)、QsNet(Quadrics社製品)、Myrinet(Myricom社製品)、Ethernet(登録商標)、あるいはこれらを利用するTCP/IP(Transmission/Control Protocol/Internet Protocol)やRDMA(Remote Direct Memory Access)のような上位プロトコルによって実現しうる。ただし、ネットワーク105の実現方法は、これらに限られない。Ethernet(登録商標)で実現する場合の例としては、データ転送装置101cは計算機に接続されるネットワークカード、ネットワーク105はEthernet(登録商標)ケーブルおよびスイッチ等から構成される。
 データノード1~4の実現は、仮想化された計算機(Virtual Machine)であってもよい。代表的な例としてVMWare(VMWare社製品)、Xen(Citrix社商標)等がある。
<データノードの詳細の一例>
 図4は、本発明の第1の実施形態の構成例をより詳細に説明する図である。図4には、図1のデータノード1~4を中心に示した構成が示されている。なお、図4等の図面において、簡単化のため、構造情報保持部92に格納される構造情報は参照符号92で参照される場合がある。
 データノードのデータ管理・処理手段11は、アクセス受付手段(アクセス受付部)111、アクセス処理手段(アクセス処理部)112、データ構造変換手段(データ構造変換部)113を備えている。
 アクセス受付手段111は、データアクセス手段611からアクセス要求を受け付け、処理完了後にデータアクセス手段611に応答を返す。
 アクセス処理手段112は、構造情報保持部92の構造情報(あるいはその任意の場所に保持されるキャッシュ情報)を用い、アクセス処理を、該当するデータ格納部12X(X=1、2、3)に対して処理を行う。
 データ構造変換手段113は、一定契機毎に構造別データ格納部121のデータを用いて、構造別データ格納部12X(X=1、2、3)に変換する。
 データ格納部12は、複数種の構造別データ格納部を備えている。図4では、構造別データ格納部121(データ構造A)、構造別データ格納部122(データ構造B)、構造別データ格納部123(データ構造C)を備える。
 どのようなデータ構造を選択するかは、構造別データ格納部12X(X=1、2、3)単位で任意である。
 本実施形態では、構造別データ格納部121(例えばデータ構造A)は、データの書き込みを伴う処理(データの追加や更新)に対する応答性能に特化した構造をとる。具体的には、データ変更内容をキュー(例えばFIFO(First In First Out))として高速なメモリ(デュアルポートRAM等)上に保持するソフトウェア、アクセス要求処理内容を任意の記憶媒体にログとして追記するソフトウェア等が実装される。データ構造B、データ構造Cは、データ構造Aとは異なるデータ構造であり、互いに異なるデータアクセス特性を持つ。
 データ格納部12は、必ずしも単一の記憶媒体でなくてもよい。図4のデータ格納部12を複数のデータ配置ノードからなる分散ストレージシステムとして実現し、各構造別データ格納部12Xを分散して格納する方式であってもよい。
 データ配置特定情報922は、分散ストレージに格納するデータ、あるいはデータ断片の格納先を特定するための情報(および情報を格納、取得する手段)である。データの分散配置方式は、前述した通り、例えばメタサーバ方式や分散KVS方式が一般的に利用される。
 メタサーバ方式の場合、データの位置情報を管理する情報(例えばブロックアドレスとその対応するデータノードアドレス)がデータ配置特定情報922である。メタサーバは、この情報(メタデータ)を参照することで、必要なデータの配置先を知ることが出来る。
 分散KVS方式の場合、システムに参加するノードのリストが、このデータ配置特定情報に該当する。データを格納する識別子と、ノードリスト情報を用いることによって、データ格納先のデータノードを決定することが出来る。
 データアクセス手段611は、構造情報管理手段9におけるデータ配置特定情報922、あるいは、予め定められた所定の場所に記憶されるデータ配置特定情報922のキャッシュ情報を用いて、アクセスすべきデータノード1~4を特定し、データノードのアクセス受付手段111に対してアクセス要求を発行する。
<データ構造管理情報>
 データ構造管理情報921は、データの集合毎にデータの格納方式を特定するためのパラメータ情報である。図5は、図4のデータ構造管理情報921の一例を示す図である。特に制限されるものではないが、本実施形態では、データの格納方式を制御する単位を、テーブルとする。そして、テーブル毎(テーブル識別子毎)に、レプリカ識別子、データ構造の種別、更新契機の各情報を、データ複製の複製数分、用意する。
 図5(A)では、各テーブルは、可用性確保(保持)のために、3つの複製を保持する。レプリカ識別子は、それぞれの複製を特定する情報であり、図5(A)では、0、1、2として付与されている。
 データ構造は、データの格納方式を示す情報である。図5(A)では、3種類のデータ構造(A、B、C)をレプリカ識別子毎に異なる方式を指定している。
 図5(B)に、データ構造A、B、Cの例を示す。データの格納方式の種類として、
A:キュー、
B:ロウストア、
C:カラムストア
が指定されている。
 この場合、テーブル識別子「Stocks」のレプリカ識別子0は、データ構造B(ロウストア)として格納される。
 データ構造は、それぞれデータを格納するための方式であり、
 A:キュー(QUEUE)は、リンクトリスト(Linked List)である。
 B:ロウストア(ROW STORE)は、テーブルのレコードを行(ROW)順に格納する。
 C:カラムストア(COLUMN STORE)は、列(COLUMN)順に格納する。
 図6に、テーブルのデータ保持構造の一例を示す。図6の(A)のテーブルは、Keyカラムと、3つのValueカラムを備え、各ローは、Keyと3つのValueのセットからなる。
 カラムストア、ロウストアは、それぞれ図6に示すように、記憶媒体上の格納順序を行(ロー)ベース、列(カラム)ベースに格納されている形式のことを指す。
 図6では、テーブル(図6の(A)参照)の格納方式として、
 レプリカ識別子0と1のデータとして、データ構造B(ロウストア)で保持し(図6の(B)、(C)参照)、
 レプリカ識別子2のデータとして、データ構造C(カラムストア)として保持する(図6の(D)参照)。
 再び図5(A)を参照すると、データ構造管理情報921(図4参照)における更新契機は、データを指定されたデータ構造として格納されるまでの時間契機である。Stocksのレプリカ識別子0の例では30secと指定されている。したがって、Stocksのレプリカ識別子0のデータ構造B(ロウストア)を格納するデータノードにおいて、ロウストア方式の構造別データ格納部122に対して、データの更新が反映されるのが30sec契機であることを示す。データ更新が反映されるまでの間は、キュー等の中間構造としてデータが保持される。また、データノードでは、クライアントからの要求に対しても、中間構造に格納して応答が行われる。本実施形態では、指定されたデータ構造への変換は、更新要求とは、非同期(Asynchronous)で行われる。
 図7は、テーブルのデータ保持、非同期更新の例を模式的に説明する図である。更新契機が「0」より大きい場合には、各データノードは、Write(更新要求)の応答速度に優れた構造を中間構造として持ち、更新内容を受け付ける。中間構造に書き込みを行った時点で、更新要求元のクライアントに対して処理完了の応答を返す。
 各データノードの中間構造(Write向け中間構造、Write優先中間構造、あるいは「中間データ保持構造」ともいう)に書き込まれた更新データは、各データノードにおいて、それぞれ、データ構造B、Cに、それぞれ非同期(Async)に更新される。
図7に示す例では、Writeにより、レプリカ識別子が0のデータノードにおいて、Write向け中間構造には、データ構造Aが格納保持され、レプリカ識別子1、2のデータノードに対して同期方式(Synchronous)で、Write向け中間構造に保持されたデータ構造Aのデータがレプリケート(複製)され、レプリカ識別子1、2のデータノードの各々において、Write向け中間構造にはデータ構造Aのデータが一旦格納保持される。レプリカ識別子0、1、2に対応するデータ構造にそれぞれ対応するデータノードにおいて、ターゲットのデータ構造B、B、Cへの変換は、図5(A)に示すようなデータ構造管理情報921の更新契機情報により指定される。
 図7に示すように、一つのデータノードのWrite向け中間構造に書き込まれた更新データ(データ構造A)のデータノード間での複製は、書き込み(更新)と同期(Sync)して行われる。このような構成をとることによって、Write(書き込み)データに対して、すぐにREAD(読み出し)系のアクセスがないデータに対しては、Writeの応答速度を高めることが出来る。
 また、(後の)READ系アクセス時には、当該READアクセスに必要なデータ構造に既に変換されているため、変換されたデータ構造を用いて、READ系アクセスを処理することで、処理の高速化を実現することができる。さらに、READ系アクセスの種類によって、適切なデータ構造を選んでアクセス先ノードを使い分けることも出来る。
 本実施形態では、単に説明の簡易化のため、データ構造の種類の数をA、B、Cの3つとしたが、データ構造の種類の数は3つに制限されるものでないことは勿論であり、特性の異なる任意の複数種類であってもよい。また、データ構造の例として、キュー、カラムストア、ロウストアの3種を例示したが、かかる例に制限されるものでないことは勿論である。例えば、
・ロウストア構造におけるインデックスの有無、
・インデックスを作成したカラムの種類の違い、
・更新を追記構造で格納するロウストア形式、
等であってもよい。
 図5に示した例とは異なる方式として、データ構造管理情報921において、データ構造の種類の代わりに、データ格納プログラムを指定するようにしても良い。例えば、図5(A)のデータ構造Aとしてデータをキューに格納するプログラムA、データ構造B、Cとして異なるデータベース・ソフトウェアを指定する。この場合、データ構造Aが指定されているテーブルのレプリカ識別子を格納するデータノードでは、受け付けたデータをプログラムAを実行することで処理する。
<データ配置特定情報>
 図8は、図4のデータ配置特定情報922の例を示す。各テーブル識別子のレプリカ識別子0、1、2毎に、配置ノードが指定されている。これは、前述したメタサーバ方式に対応している。
<分散KVS>
 分散KVS方式の場合、データ配置特定情報922は、分散ストレージに参加しているノードリスト情報(不図示)が該当する。このノードリスト情報をデータノード間で共有することによって、「テーブル識別子」+「レプリカ識別子」をキー情報として、コンシステント・ハッシング方式により、配置ノードを特定することが出来る。また、レプリカの配置先として、コンシステント・ハッシング方式における隣接ノードに格納することができる。コンシステント・ハッシング方式は第4の実施形態で説明する。
 再び図8を参照すると、データ配置特定情報922において、配置ノードは、可用性を保証するためには、同一のテーブルが同一ノードに保持されることがないように指定されなければならない。
 例えば、図5(A)のStocksテーブルのレプリカ識別子0と1と2の配置ノードは互いに重複してはならない。なお、可用性の考慮を無視するのであれば、この制限はこの限りではない。つまり、複数種類のレプリカを同一ノードに保持してもよい。
<Write処理のシーケンス>
 本発明の第1の実施形態の動作について説明する。図9は、図1乃至図8を参照して説明した本発明の第1の実施形態におけるWrite処理(更新を伴う処理)のシーケンスを示す図である。
 クライアント機能実現手段61は、構造情報管理手段9の構造情報保持部92に保持されているデータ配置特定情報922(図4、図8参照)の情報を取得する(あるいは任意場所のキャッシュメモリから情報を取得する)。
 クライアント機能実現手段61は、取得した情報を用いて、Write処理を行うデータの配置先のデータノード(図9では、レプリカ識別子0のデータノード1)に対して、Writeアクセス命令を発行する。
 データノード1のアクセス受付手段111は、Writeアクセス要求(Wite処理要求)を受け付け、レプリカ識別子1、2に指定されているデータノード2、3に対してWriteアクセスを転送する。レプリカ識別子1、2のデータノードを特定する方法としては、データノード1が構造情報保持部92(あるいは適切なキャッシュ)にアクセスしても良いし、クライアント実現手段61が発行するWriteアクセス命令にデータ構造管理情報921の全部あるいは一部の情報をともに渡すようにしてもよい。
 各データノードのアクセス処理手段112は、受け取ったWriteアクセス要求の処理を行う。
 アクセス処理手段112は、データ構造管理情報921の情報を参照して、Write処理を実行する。
 更新契機が「0」より大きい場合には、Write処理内容をデータ構造Aの構造別データ格納部121に格納する。
 更新契機が「0」の場合には、データ構造管理情報921に指定されているデータ構造の構造別データ格納部12Xに対して格納する。
 アクセス処理手段112は、Write処理完了後、アクセス受付手段111に、完了通知を発行する。
 レプリカ先のデータノード(2、3)は、レプリカ元のデータノード1のアクセス受付手段111にWrite完了応答を返答する。
 アクセス受付手段111は、データノード1のアクセス処理手段112からの完了通知と、各レプリカ先のデータノード2、3の完了通知を待ち合わせ、全て受け取った後に、クライアント機能実現手段61に対して応答する。
 データ構造変換手段113(図4参照)は、定期的に構造別データ格納部121(データ構造A)のデータを、構造別データ格納部12X(データ構造管理情報921に指定されている、最終格納先データ構造)に変換して格納する。
 なお、図9の例では、データノード1が、レプリカ先のデータノード2、3に対して、Writeアクセスを転送しているが、図10に示すように、クライアント機能実現手段61が、格納先のデータノードの全てに対して、Writeアクセスを発行するようにしても良い。
 図10の例では、図9と比較して、Writeアクセス要求の待ち合わせをクライアント機能実現手段61が行うことが異なる。
<参照系処理のシーケンス>
 図11は、本発明の第1の実施形態における参照系処理(READ処理)のシーケンスを示す図である。
 クライアント計算機(クライアントノード)6は、データ構造管理情報921の情報を取得して、命令の実行先ノードを特定する。レプリカデータを配置するノードは、レプリカ識別子のいずれを用いてもよいが、行う処理によって適切なノードを選択することが望ましい。
 参照系処理とは、データの読み込みを伴う処理をいい、例えばSQL(Structured Query Language)文におけるSelect文による命令等に対応する。
 また、
  あるテーブルAからデータを読み出し、
  当該データを用いた演算結果をテーブルBに更新する場合、
テーブルAからのデータ読み出しは参照系処理に該当する。
 あるいは、テーブルAを参照した後、テーブルAを更新するような処理の場合、一括してWrite処理(図9、図10記載)として扱っても良い。あるいは、テーブルAの参照処理は参照系処理として扱い、テーブルAの更新を、更新処理として扱ってもよい。
<クライアント機能実現手段の動作>
 図12は、クライアント機能実現手段61の視点によるアクセス処理の動作を説明するフローチャートである。図12を参照して、クライアントのアクセスフローについて説明する。
 まず、クライアント機能実現手段61が、構造情報保持部92の情報をマスタ、あるいは任意の箇所のキャッシュにアクセスすることで取得する(図12のステップS101)。
 次に、クライアントが発行する命令内容がWrite処理であるか参照処理(Read)であるかを識別する(ステップS102)。
 これは、発行命令のコマンドにより指定したり、命令の実行コードを解析したりすることで特定することが出来る。例えば、SQLを処理するストレージシステムの場合、
 ・INSERT命令(テーブルへレコードを追加するSQL命令)であれば、Write処理、
 ・SELECT命令(テーブルからレコードを削除するSQL命令)であれば、参照系処理、
 である。
 あるいは、クライアント機能実現手段61を用いて、命令を呼び出す際に、明示的に指定するようにしても良い(そのようなAPI(Application Program Interface)を準備する)。
 ステップS102の結果、Write処理であれば、ステップS103以降に進む。
 Write処理の場合、クライアント機能実現手段61は、更新が必要なノードをデータ配置特定情報922の情報を用いて特定する。この処理は、図9を参照して説明した通りである。
 クライアント機能実現手段61は、特定したデータノードに対して、命令実行要求(更新要求)を発行する(ステップS103)。
 クライアント機能実現手段61は、更新要求発行先のデータノードからの応答通知を待ち合わせ、更新要求が、各データノードに保持されたことを確認する(ステップS104)。
 図12は、クライアント機能実現手段61が、更新先のデータノードに対して命令を発行し、待ち合わせるという図10のシーケンスに対応するクライアント機能実現手段61の動作を説明するためのフローチャートである。
 ステップS102の結果、参照処理である場合には、ステップS105へ進む。
 ステップS105では、まず、クライアント機能実現手段61は、処理内容の特性を特定(認識)する(ステップS105)。
 クライアント機能実現手段61は、特定した処理特性と、その他のシステム状況を踏まえて、アクセス対象のデータノードを選択し、命令要求を発行する処理を行う(ステップS106)。
 クライアント機能実現手段61は、その後、データノードからアクセス処理結果を受け取る(ステップS107)。
 以下、ステップS105、ステップS106の処理について説明を補充する。
 まず、クライアント機能実現手段61は、データ構造管理情報921に格納されている情報から、アクセス対象のデータが保持されているデータ構造の種類を知ることが出来る。例えば、図5(A)の例の場合、WORKERSテーブルにアクセスする場合、レプリカ識別子0、1は、データ構造B、レプリカ識別子2は、データ構造Cである。
 そして、クライアント機能実現手段61では、データノードに対して行われるデータアクセスが、どちらのデータ構造に適しているかを判断し、適している方を選択する。
 より詳しくは、例えば、クライアント機能実現手段61では、アクセス要求であるSQL文を解析し、テーブル識別子が「WORKERS」のテーブル内のあるカラムの総和をとる命令の場合には、データ構造C(カラムストア)を選択し、ある特定のレコードを取り出す命令の場合には、データ構造B(ロウストア)が向いていると判断する。
 ある特定のレコードを取り出す命令であった場合、レプリカ識別子0、1では、どちらを選択しても良い。なお、必ずしも「最新のデータで処理を行う必要が無い場合」、レプリカ識別子1(更新契機は30sec)を用いることが望ましい。
 この「最新のデータで処理を行う必要が無い場合」であることの特定は、アプリケーション・コンテキストに依存する。このため、クライアント機能実現手段61に受け渡される命令に、利用するデータ構造や、必要なデータの鮮度(データの新しさ)を特定する情報を、明示的に指定する形式としても良い。
 アクセスすべきレプリカ識別子(データ構造)を特定した後、アクセスすべきデータノードを算出する。このとき、分散ストレージシステムの状況に応じて、アクセスノードの選択を変更できるようにしても良い。例えば、あるテーブルが同一のデータ構造Bとして、データノード1、2に格納されている際に、データノード1のアクセス負荷が大きい場合に、データノード2を選択するような動作に変更してもよい。
 また、別のデータ構造Cとして、データノード3に格納されている場合に、データノード3のアクセス負荷が、データノード1、2と比較して小さければ、処理するアクセス内容がデータ構造Bの方が向いていたとしても、データノード3(データ構造C)に対して、アクセス要求を発行するようにしても良い。
 クライアント機能実現手段61では、このようにして算出・選択されたデータノードに対して、アクセス要求を発行し(ステップS106)、該データノードから、アクセス処理結果を受け取る(ステップS107)。
<データノードの動作>
 図13は、図4のデータノードにおけるアクセス処理を説明するフローチャートである。図13、図4を参照して、データノードの動作について詳細に説明する。
 まず、データノードのデータ管理・処理手段11のアクセス受付手段111がアクセス処理要求を受け付ける(図13のステップS201)。
 次に、データノードのデータ管理・処理手段11のアクセス受付手段111は、受け付けた処理要求の内容がWrite処理であるか、参照処理であるか判定する(ステップS202)。
 ステップS202の結果、Write処理であった場合、データノードのデータ管理・処理手段11のアクセス処理手段112は、構造情報保持部92におけるデータ構造管理情報921の情報を取得する(ステップS203)。データ構造管理情報921の情報取得は、マスタデータにアクセスしてもよいし、任意の箇所にあるキャッシュデータにアクセスするようにしてもよいし、あるいは、図1又は図2のクライアント機能実現手段61が、データノードに対して発行する要求に情報(マスタデータ又はキャッシュデータへのアクセス)を付与し、アクセス処理手段112では、その情報を用いてアクセスするようにしてもよい。
 次に、アクセス処理手段112は、データ構造管理情報921の情報から、該データノードに対する処理の更新契機が「0」(零)であるかどうかを判定する(ステップS204)。
 ステップS204の結果、更新契機が「0」の場合、アクセス処理手段112は、構造情報保持部92の構造情報に指定されたデータ構造を、直接、更新する(ステップS205)。すなわち、更新データを指定されたデータ構造に変換し対応する構造別データ格納部12X(X=1、2、3)に格納する。
 更新契機が「0」でない場合、アクセス処理手段112は、Write向け中間構造(構造別データ格納部121)に、更新データを格納する(ステップS206)。
 ステップS205、206の場合、いずれも、処理完了後、アクセス受付手段111は、要求元のクライアント実現手段61に対して、処理完了通知を応答する(ステップS207)。
 ステップS202の結果、データの参照処理であった場合、参照処理の実行を行う(ステップS208)。
 参照処理の実行方式として、特に制限されるものでないが、代表的には、以下の3種類の方法を挙げることができる。
(1)第1の方法は、データ構造管理情報921に指定されているデータ構造のデータ格納部のデータを利用して処理する。これは最も性能が優れるが、更新契機が大きい場合には、Write向け中間構造のデータが参照処理に反映されていない可能性がある。このため、データの不整合が生じる可能性がある。ただし、アプリケーション開発者が事前に認識していて利用する場合や、Write後に、データの読み出しが更新契機内に起きないことがわかっているか、もし新しいデータアクセスが必要な場合には、更新契機が「0」のレプリカ識別子データにアクセスすると決めている場合には、特に、問題はない。
(2)第2の方法は、別途行われる変換処理の適用を待ってから処理する方法である。これは、実装が容易であるが、応答性能が劣化する。応答性能を求めないアプリケーションの場合、問題はない。
(3)第3の方法は、データ構造管理情報921に指定されているデータ構造と、Write向け中間構造に保持されているデータの両方を読んで処理する。この場合、常に、最新のデータを応答できるが、第1の方法より性能が劣化する。
 上記第1乃至第3のいずれの方法をとってもよい。また、複数の種類を実現し、システムの設定ファイルとして記述する、クライアント機能実現手段61から発行される処理命令の中に、どの方法で実行するかを指定するようにしてもよい。
<データ構造変換手段の変換動作>
 図14は、図4のデータ構造変換手段113におけるデータ変換処理の動作を示すフローチャートである。図14、図4を参照して、データ変換処理を説明する。
 データ構造変換手段113は、定期的に変換処理の必要の有無を判定するため、データノード内のタイマ(図4では不図示)でのタイムアウト発生による呼び出しを待つ(図14のステップS301)。なお、このタイマは、専用タイマとしてデータ構造変換手段113内に備えるようにしてもよい。タイマのタイムアウト時間は、図5(A)の更新処理(sec)に対応する。
 次に、構造情報保持部92の構造情報(データ情報)を取得し(ステップS302)、変換が必要なデータ構造があるか否かを判定する(ステップS303)。例えば、タイマで判定が10秒毎に行われるときに、更新契機が20秒のデータ構造は、20秒毎に変換処理を実行するため、10秒時点では、変換処理を行わなくても良い。
 変換処理が必要でない場合には、タイマ呼び出し待ち(タイマでのタイムアウト発生により呼び出されるまでウエイト)に戻る(ステップS301)。
 一方、変換処理が必要な際には、更新向け中間データ構造から、変換対象のデータに対する更新処理内容を読み出し(ステップS304)、変換先の構造別データ格納部12X(X=1~3)へ更新情報を反映する処理を行う(ステップS305)。
<実施形態2>
 本発明の第2の実施の形態について説明する。本発明の第2の実施の形態では、データを、所定単位で複数に分割して、複数のデータノードに格納できるようにしている。本実施形態のシステムの基本構成は、図1、図2、図4等に示した構成とされるが、図15、図16を参照して説明されるように、本実施形態においては、データ構造管理情報921、データ配置特定情報922の内容が拡張されている。また、図17を参照して説明されるように、本実施形態においては、データノードのアクセス受付手段が、アクセス処理手段にアクセス要求を発行するときに、他のデータノードのアクセス処理手段に対しても、アクセス要求を発行し、さらに、データ構造変換手段が、他のデータノードのデータ構造変換手段に対して、変更要求を発行する構成とされていることが、前記第1の実施形態と相違している。なお、本実施形態におけるデータノードの構成も、基本的には、図4に従うが、その詳細は図17を参照して後述される。
 本実施形態では、格納対象とするデータ(テーブル識別子)を、複製の格納単位(レプリカ識別子)毎に、パーティショニング(分割)して、分割した格納単位を、各データノードでそれぞれ格納することができる。
 図15は、データ構造管理情報921(図4参照)の例を示す図である。データ構造管理情報921は、テーブル識別子に対して、複製数分、レプリカ識別子と、該レプリカ識別子に対応したパーティション数を備える。
 パーティション数が「1」であるレプリカ識別子は、複製(レプリカ)を1つのデータノードに格納する。その場合の動作は、前記第1の実施形態と同一である。
 パーティション数が「1」よりも大きい場合、そのレプリカ識別子のデータを、複数のデータノードに分割して格納する。図16は、その場合のデータ配置特定情報922の例を示す図である。
 データ構造管理情報921において、あるレプリカ識別子のパーティション数が「1」よりも大きい場合、データ配置特定情報922(図4参照)において、当該レプリカ識別子に対して、図16に示すように、配置ノードのリスト(分割して格納する複数のデータノードのリスト)を記録する。
 図15のデータ構造管理情報921の例では、テーブル識別子「WORKERS」のレプリカ識別子2のパーティション数が「4」である。図16のデータ配置特定情報922では、テーブル識別子「WORKERS」のレプリカ識別子2の「配置ノード」として、ノード番号2、3、5、6が指定されている。
 配置ノードの決定は、テーブル識別子毎に、システム全体として想定される要求可用性レベルを保つように決める。マニュアル(人手)で行ってもよいし、図15のデータ構造管理情報921、図16のデータ配置特定情報922の内容をプログラムで自動生成するようにしてもよい。
 例えば、一般的に、可用性レベルは、複製数(レプリカ数)に応じて決定される。求める可用性レベルが3レプリカであれば、レプリカ識別子を3つ用意し、それぞれの配置ノードが互いに重複しないように決定する。
 図16の例では、テーブル識別子「WORKERS」のレプリカ識別子の各配置ノードは、互いに重複しないよう指定されている。なお、レプリカ識別子を4つ以上用意してもよいことは勿論である。例えばレプリカ識別子が4つの場合、求める可用性レベルが「3」のままであれば、同一のテーブル識別子のレプリカ識別子の配置ノードとして、1つまで重複して選ぶことが出来る(例えば、4つのレプリカ識別子のうち、配置ノードが重複するレプリカ識別子が2つあってもよい)。
 各レプリカ識別子のデータ格納構造と、分割配置戦略(パーティショニング・ストラテジ)により、パーティションニング時の配置ノードの重複を許すか否かが異なる。
 例えば、次のような場合には、パーティションニング時の配置ノードを重複して格納することが出来る。ノード番号1-18のデータノードに、ロウストア形式(データ構造B)で、12分割のレプリカを、2つ格納する場合、互いに重複を許さない場合には格納が不可能である。しかし、この場合、次のようにすれば、2レプリカ・レベルの可用性を満たしつつ、配置ノードを重複させて割り当てることが出来る。
 レプリカ識別子0は、ノード番号1-12、
 レプリカ識別子1は、ノード番号7-18、
に分割して格納するものとする。
 このとき、レプリカ識別子0と1の同一レコードのデータが、同一ノードに格納されないように、分割配置戦略が決定されていれば、可用性レベルを満たすことが出来る。具体的には、下記のように、テーブルをパーティショニングする際に、ある任意のカラムの値によって、分散配置する場合(カラムの値の前半、後半で分割)、
 ・レプリカ識別子0のノード番号1-6には、カラムの値の前半、ノード番号7-12にはカラムの値の後半、
 ・レプリカ識別子1のノード番号7-12には、カラムの値の前半、ノード番号13-18には、カラムの値の後半
というように格納することで、同一のレコードが、同一のノードに格納されることは回避される。このようにすることで、配置ノードの割り当てを重複させながら、可用性を満たすことが出来る。
 配置ノード先の決定は、システムあるいはテーブル識別子毎に指定される可用性レベルを満たすように行う。
 パーティション数が「1」よりも大きいレプリカ識別子に対する更新時のアクセス先は、配置ノード群のいずれを選んでも良い。あるいは、常に、リストの最初のノードを選ぶようにしてもよい(例えばテーブル識別子「WORKERS」のレプリカ識別子「2」の場合、ノード番号2のデータノード)。後者の方が、データ構造変換手段113における、構造別データ格納部121から構造別データ格納部122、123への変換処理がやや簡略化される。
 パーティション時には、コンシステント・ハッシング法等を用いて分散配置してもよいし、前述したようなテーブルのあるカラムの値や、ユニークなKeyの範囲などで格納先を決定してもよい。
 分散配置戦略を複数用意する場合には、データ配置特定情報922(図4参照)に、レプリカ識別子毎に選択された分散配置戦略の情報を記録する必要がある。
 本実施形態において、パーティショニングを行う際には、前記第1の実施の形態と比較して、データ構造変換手段113(図17参照)における変換処理(図14ステップS305)や、更新契機が「0」の場合のデータ構造の更新処理(図13ステップS205)が異なり、指定された配置ノード先のデータ格納部を更新する点が相違している。
 また、データノードのアクセス処理時において、アクセス先が、パーティショニングにより、複数ノードにまたがる場合には、アクセス受付手段111(図17参照)は、配置先の他のデータノードのアクセス処理手段112(図17参照)に対してアクセス要求を発行する必要がある。
 更新処理時に、更新契機(図5(A)参照)が「0」の場合、更新処理対象のレコードが格納されるデータノード全てのアクセス処理手段112に対してアクセス要求を発行する必要がある。
 参照処理についても、処理対象のレコードが格納されるデータノードの全てのアクセス処理手段112に要求を発行する。必要なデータノードの選択については、分散配置戦略に依存する。
 図17は、本発明の第2の実施形態の構成を示す図であり、データノード1~Xの構成が示されている。本実施形態においては、前記第1の実施形態のアクセス受付手段111と相違して、アクセス受付手段111は、自ノード内のアクセス処理手段112に対して、アクセス要求を発行する際に、他ノードのアクセス処理手段112にも発行する場合がある。同様に、データ構造変換手段113は、定期的に変換処理の必要の有無を判定し、データ構造の変換を行う場合、パーティショニングされたデータを格納する他のデータノードのデータ構造変換手段113に対してデータ変換要求を発行する。本発明の第2の実施形態によれば、データを分割して複数のデータノードに格納することができる。
<実施形態3>
 次に、本発明の第3の実施形態について説明する。本実施形態では、データ構造管理情報921をアクセス負荷に応じて変更するようにしている。変更された値をシステムのデータ構造に反映することで、データ構造の設定内容(図5に示したようなレプリカ識別子毎のデータ構造の割り当て)の不適切さの修正や、システム運用後のアクセスパターンの変化などに対応可能とする。これを実現する制御パラメータの自律変更の動作について説明する。
 図18は、本発明の第3の実施形態のデータノードの構成を示す図である。図1、図2、図4を参照して説明した前記第1の実施形態と比較して、本実施形態においては、履歴記録部71と変更判定手段(変更判定部)72が追加されている。本実施形態の各データノードのアクセス受付手段111(あるいは他の任意の手段において)は受け付けたアクセス要求を履歴記録部71に記録するよう動作する。履歴記録部71は、各テーブル識別子のレプリカ識別子毎のアクセス要求(あるいはアクセス処理内容)を記録する。
 履歴記録部71は、システム全体で1つ備えた構成としてもよい。あるいは、各データノードに履歴記録部71を備え、各データノードで個別に各テーブル識別子のレプリカ識別子毎のアクセス要求を記録していき、各データノードで個別に集められたアクセス履歴を、任意の方法で、集約する仕組みを設けてもよい。
 変更判定手段(変更判定部)72は、履歴記録部71に格納された履歴情報を用いて、データ構造を変換するか否かについて判定する。変更判定手段72は、システム全体で1つ備えた構成としてもよいし、あるいは、各データノードで変更判定手段72を分散して動作させ、変更判定を行うような構成としてもよい。
 変更判定手段72は、構造変換が必要な際に、構造情報変更手段91に対して、データ構造の変換処理要求を発行する。
 構造情報変更手段91は、変更判定手段72からの変換処理要求に応答して、構造情報保持部92の情報を変更し、さらに、対象データノードのデータ管理・処理手段11内のデータ構造変換手段113に対して変換処理を要求する。
 本発明の第3の実施形態における制御パラメータの自律変更およびデータ構造の自律変換動作の流れについて、図19、図20、図21を用いて説明する。
<制御動作>
 図19は、図18に示した本実施形態における制御動作を説明するフローチャートである。図19の動作を、例えば定期的に行うことによって、システムのデータ構造を自律的に変更・反映することが出来る。実行周期は、任意であるが、例えば周期を長くした場合、実行中の変更処理と、整合を取る必要がある。また、周期的な実行以外にも、所定のイベント検出に応答して変更処理を行うようにしてもよい。イベントとしては、例えばシステムの任意のいずれかの構成要素により、負荷の変更を検出(例として、一部のデータノードのCPU、ディスクなどのハードウェア利用率の大きな変化など)した場合等である。
 図19の動作フローは、テーブル識別子毎の構造変換処理の必要の有無の判定と、変換処理を示すものである。システムが保持管理する全てのテーブル識別子について、図19のフローを行う必要がある。
 変換判定手段72は、履歴記録部71のアクセス履歴情報の取得を行う(ステップS401)。
 次に、変換判定手段72は、取得したアクセス履歴情報を利用して、最近の一定期間(例えば最近1日以内、あるいは最近1週間以内等)に受け付けた全てのアクセス内容が、該当テーブル識別子のいずれかのレプリカとして適したデータ構造を持っているか否かを判定する(ステップS402)
 ステップS402において受け付けたアクセス内容に対して、レプリカ識別子のいずれかに適したデータ構造を持っている場合には、ステップS403に進む。ここで、レプリカ識別子のいずれかに適したデータ構造を持っている場合とは、例えば、列(カラム)アクセスが必要なアクセス要求を受け付けている際に、任意のレプリカ識別子のデータ構造として、カラムストア構造を持っている場合等である。
 ステップS403では、変換判定手段72は、各レプリカ識別子が不要なデータ構造を持っているかどうか判定する。例えば、列アクセスが必要なアクセス要求が履歴として全く無いのに、カラムストア構造を多数持つ場合、不要なデータ構造といえる。
 不要なデータ構造が無い場合には、特に変換処理をする必要が無いため、変換判定手段72は、フローを終了する。一方、不要なデータ構造がある場合、ステップS404に進む。
 ステップS404において、変換判定手段72は、各レプリカ識別子のデータ構造と、アクセス要求量・内容から、データ構造の変更の可否の判断を行う。データ構造の変更の可否の判断は、例えば予め定義したルール等に基づいて行われる。
 ルールとしては、以下が挙げられる。特に制限されるものでないが、ルールは、if
 <条件> then <アクション>(条件成立時アクションを実行)のif-then構造とされる。
 (R1)列アクセスのアクセス要求数が一定以下、且つ、行アクセスの総アクセス要求が一定数以上の場合、カラムストア構造をロウストア構造に変換する(またはその逆)。
 (R2)テーブル識別子に対するアクセス要求総数が一定以上の場合、レプリカ数を増やす。
 (R3)テーブル識別子に対し、あるカラムの値による検索クエリーが一定数以上ある場合、いずれかのレプリカ識別子にインデックスを付与する。逆にアクセスが無い場合に、インデックスを削除する。
 (R4)テーブル識別子に対し、リード処理要求が一定数以上ある場合に、パーティショニング数を増加する(あるいは、この逆)。
 (R5)テーブル識別子に対し、複数レコードにまたがる更新処理要求が一定数以上ある場合に、パーティショニング数を削減する。あるいは、パーティショニング数を「1」にする。
 なお、ルールは上記に制限されず、任意のものを動作させてよい。
 ステップS404によってデータ構造やレプリカ数を変更する必要がある場合、ステップS405へ進む。その必要が無い場合、変換判定手段72は、フローを終了する。
 ステップS405において、変換判定手段72、構造情報変更手段91、データ構造変換手段113等により、データ構造を実際に変換する。レプリカを増やす場合、構造情報管理手段9のデータ構造管理情報921に、レプリカを増やすテーブル識別子のレコードを1つ増やし、ユニークなレプリカ識別子を付与し、その配置ノード先を決定する。配置ノードの決定は、前記第1の実施形態と同様にして行われるが、可用性レベル以上のレプリカ数を保持していれば、他の配置ノードと重複しても良い。
 また、レプリカは、新しいレプリカ識別子と同一のレプリカから配置ノード先へデータを複製する。
 ステップS405のデータ構造を変換する動作について、図20、図21を参照して、より詳細に説明する。簡単化のため、図20、図21については、レプリカ識別子は、パーティションニングされていない。以下では、図18のデータ構造変換手段113の変換処理は、データ構造をBからCに変換する例に即して説明する。
<データ構造変換の動作>
 図20は、本実施形態における、データ構造変換の動作を説明するフローチャートである。
 まず、構造情報保持部92(図16)のデータ構造管理情報921(図4)に対して、変換判定手段72(図16)が変更要求を発行する(ステップS501、すなわち図19のステップS405)。これにより、構造情報変更手段91は、変更先のデータノードXのデータ構造変換手段113に対して、変換処理要求を行う。
 ステップS502において、変更先のレプリカ識別子のデータをもつデータノードXでは、該当レプリカ識別子のローカル複製(局所的複製)を作成する。このローカル複製は、物理コピーではなく、ストレージによるスナップショット技術を用いてもよい。また、複製を取らず、変換元のデータとして、他ノードのレプリカ識別子のデータを用いても良い。この複製処理は、変換処理の実装方式によっては、必ずしも必要が無い。
 さらに、ステップS503において、構造変換処理として、データ構造変換手段113は、変換元のデータをデータ格納部から読み出し、変換先のデータとして異なるデータ構造として書き込む処理を行う。
 データ構造変換手段113による構造変換の完了後に、変換処理中(あるいは変換処理開始の時点で)蓄積されているデータ構造Aのデータ格納部にデータ構造Aのデータ構造で格納されている更新データを、変換先のデータ構造に適用する(ステップS504)。
 最後に、データ構造管理情報921(図4参照)の内容を変更し、クライアントノード6のデータアクセス手段611(図1参照)がアクセス要求の応答後に変換先のデータを用いるようにする(ステップS505)。
 データ構造管理情報921(図4)の変更後、変換元のデータを削除する。なお、変換元のデータは必ずしも削除しなくてもよいが、削除することで、メモリ利用効率が向上する。
<データ構造変換処理時のデータノードの処理>
 図21は、図18に示した本実施形態における変換処理中のデータノード内の処理を説明する図である。図18のデータ構造変換手段113でデータ構造の変換処理中(ステップS502-504)において、アクセス処理手段112は、アクセス要求を、データ構造Aとデータ構造Bを用いて、アクセス要求を応答する。このとき、更新処理は、データ構造A(Write向け中間構造)に保持しておき、データ構造変換手段113で変換処理中は、データ構造B(Row-Store)への適用を行わない。
 データ構造変換手段113でのデータ構造変換処理が完了後(ステップS505)に、アクセス処理手段112は、Write向け中間構造であるデータ構造Aと、変換先のデータ構造C(Column Store)を用いて、アクセス要求を処理する。
 なお、クライアント機能実現手段61(図1参照)から、アクセス先のデータノードを決定する際に、データ構造変換処理中のデータノードにはアクセスせず、他のレプリカ識別子のデータを用いるようにした場合、図21に示すように、データ構造変換処理中におけるアクセス処理手段112の排他処理の一部は不要になり、システム構成が簡略化される。逆に、図21のような制御機構を具備することで、データ構造変換処理中のレプリカ識別子データでも処理を行うことが出来る。
<パーティション数の変更動作>
 図22、図23は、本実施形態において、パーティション数を変更する動作を説明するフローチャートである。パーティション数の変更処理は、図19と同一のフローチャートとして表現できる。以下では、図22について、図19との相違点に着目して説明する。また、パーティション数だけでなく、分散戦略を変更してもよい。分散戦略の変更の一例として、例えばラウンドロビンによる分散から、任意のカラムの値範囲による分散への変更、あるいはその逆等があげられる。
 ステップS602(図19のステップS402に相当)は、変換判定手段72は、アクセス要求処理数に対し、必要性能に十分な分散数を保持しているか否かを判定する(例えば、全データをスキャンするような処理のような、データ並列の処理に対しては分散されている方が性能として有利なことが多い)。必要十分な分散数であれば、ステップS603に進む。必要十分な分散数でなければ、ステップS604に進む。
 ステップS603において、変換判定手段72は、レプリカ識別子毎に不要な分割がされていないか判定する。例えば、データ並列のアクセス処理要求が少ないのに、過剰に分散配置されているレプリカ識別子が該当する。
 不要な分割がされていれば、ステップS604へ進み、無ければフローを終了する。
 ステップS604において、変換判定手段72は、パーティション数の変更の要否判断を行う。前述したように、任意に指定されたルールに基づき、パーティション数の変更内容を決定する。変更が不要の場合には、変換判定手段72は、フローを終了する。変更が必要な場合には、変換判定手段72は、パーティション数を変更する(ステップS605)。ステップS605は、パーティション数を実際に変更する処理である。
<パーティション数の変更処理>
 図23に、図22のステップS605(変換判定手段72によるパーティショニング数変更処理)のフローを示す。以下では、図23について、図20と異なる点に着目して説明する。
 ステップS702のローカル複製は、図21に示したような変換処理中のアクセス要求の応答に利用するために準備する。
 ステップS703では、パーティション数の変更により、配置ノードが変更されるレコードについて、データを変更先のデータノードにコピーする処理である。
 ステップS704は、図20のS504とほぼ同等であるが、データ構造Aに格納されているデータ構造変換中の更新処理内容の適用先が、別のデータノードになることがある点が異なる。
 ステップS705は、図20のS505とほぼ同等である。
 パーティショニングされたデータについて、配置先ノードを変更したり、一部のデータをディスクに書き出したり、別途用意したアーカイブストレージに格納することにより、システムの容量効率やストレージコストを低減することが出来る。
 例えば、図24に示すように、注文履歴のような追記的にレコードを記録するような履歴記録型テーブル(A)に対して、分散配置戦略を、時系列に決定し、古いデータ(B1、B2)を、ディスクに書き出すか(C1、C2)。あるいは別のアーカイブに書き出し、新しいデータ(B3:最も新しいパーティショニング・テーブル)のみをメモリ(C3)上に保持するようにしてもよい。
 本実施形態において、構造情報保持部92のデータ配置特定情報922は、例えば図25に示すようなものとなる。データ配置特定情報922は、テーブル識別子に関して各レプリカ識別子に対応して、配置ノード、分散配置戦略、配置物理媒体の各情報を有する。なお、図24の履歴記録型テーブル(A)は、テーブル識別子の順番で格納される。
 分散配置戦略として、配置戦略の情報(ラウンドロビン、カラム1の値分散、時系列等)が指定されている。
 データ配置特定情報922では、テーブル識別子“orders”のレプリカ識別子2が、時系列に配置ノード2-10に分散配置され、配置先の物理媒体(memory、disk等)が指定されている。
<実施形態4>
 本発明の第4の実施形態としてコンシステント・ハッシングへの適用例を説明する。以下では、テーブルAをカラムストア形式でコンシステント・ハッシング分割配置する場合の例について、図26を用いて説明する。なお、本実施形態において、コンシステント・ハッシングで、データが配置されるデータノード(データ配置ノード)を決める処理は、図18の変更判定手段72で行うようにしてもよい。ノード情報は、変更判定手段72により、構造情報保持部92に記録される。特に制限されないが、本実施形態においては、キー値(Key)と、前記キー値に対応してカラム毎に1又は複数のデータレコードを有するセットをロウ方向の単位とし、ロウの識別はキー値(Key)で行われ、各カラムにカラム識別子(Value1、Value2、・・・)が付与されたテーブルに関して、前記キー値と、カラム識別子と、テーブル識別子を組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定する。
 なお、ロウストア形式において、コンシステント・ハッシング分割する場合には、レコードのKey値でハッシングして、データ配置ノードを決めればよい。Key値あるいはユニーク(一義的)なレコードIDを用いてデータ配置ノードを決定する。
 図26に模式的に示すように、コンシステント・ハッシング法においてハッシュ関数へ引数を、
 テーブル識別子+カラム名+Key値
を組み合わせた文字列(テーブル識別子:tableA+カラム識別子Value2+Key値:acc)を渡し、ハッシュ値が算出される。
 該引数に対するハッシュ関数の出力(ハッシュ値)と、格納先ノードリスト(例えばデータノード1~4)の情報から、コンシステント・ハッシング法により、データノードを決定することが出来る。
 また、レコード毎にユニークなレコードIDを付与しておき、
 テーブル識別子+カラム名+レコードID
をハッシュ関数に渡す引数としてもよい。
 図27(A)、(B)は、本実施形態におけるデータ配置ノードの記録方式について説明するための図である。カラムストア形式であるため、カラム毎にデータを記録する。外側の四角形は、データ配置ノードの記録領域の管理単位であり、例えばメモリやHDD(ハードディスクドライブ)のページに対応する。ページのサイズは任意としてよい。ページ内の任意の場所(図では末尾)に、テーブル識別子(tableA)とカラム名(value1)を指定するための管理情報を記録する。1つのカラム列全てが1つのページに収まらない場合には、他のユニットに記録する必要があるが、その他のユニットへのポインタ情報等を、この場所(記憶領域)に記録してもよい。セルの値は、ページ内の任意のアドレスに格納する。図27(A)では、ページの先頭側から順にセルの値(カラム名value1の各値)を記録している。
 また、セルの値が、どのKeyに相当する情報であるかを示す情報を、別途、任意の場所に記録しておく必要がある。図27(A)では、同一ユニット内の管理情報の直前に記録しておく。そこには、Keyの情報(あるいはユニークなレコードID)とそれがどのアドレスに格納されているかの情報(ポインタ)を記録する。情報(Key:cc #8)は、Key:ccのセルの値がアドレス#8、(Key:ab #4)は、Key:abのセルの値がアドレス#4、(Key:aa #0)は、Key:aaのセルの値がアドレス#0に格納されていることを記録するものである。
 また、図27(B)のように、同一テーブルの別のカラム(value2)の情報を別の記録管理ユニット(メモリ又はHDD)に記録するようにしてもよい。あるいは、さらに簡単な方法で分割配置としてもよい。
 本実施形態におけるパーティショニングの第1の例として、キー値と、前記キー値に対応してカラム毎に1又は複数のデータレコードを有するセットをロウ方向の単位とし、ロウの識別はキー値で行われ、各カラムにカラム識別子が付与されたテーブルのパーティショニング(カラムストア)を行う場合、テーブル識別子とカラム識別子とを組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定し、カラム単位で別々のデータノードに分散配置するようにしてもよい。別々のデータノード間でパーティショニング単位に異なるデータ構造で格納してもよい。
 図28は、テーブルのパーティショニングとして、テーブルのカラム毎に、データ配置ノードを分散して配置する場合を模式的に示す図である。ハッシュ関数へ与える値として、テーブル識別子とカラム名称(例えば、(tableA:value2)あるいは、(tableA:value3))を渡すだけでよい。該引数に対するハッシュ関数の出力(ハッシュ値から格納ノードが算出される。
 あるいは、本実施形態におけるパーティショニングの第2の例として、キー値と、前記キー値に対応してカラム毎に1又は複数のデータレコードを有するセットをロウ方向の単位とし、ロウの識別はキー値で行われ、各カラムにカラム識別子が付与されたテーブルに関して1つのカラムを、パーティショニングする場合、テーブル識別子とカラム識別子と一義的な接尾子とを組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定し、1つのカラムを、複数のデータノードに分散配置するようにしてもよい。配置先の複数のデータノード間でパーティショニング単位に異なるデータ構造で格納してもよい。
 図29は、図28において、テーブルの1つのカラムを二つにパーティショニングする場合を模式的に示す図である。この場合、カラムをパーティショニングするために、ハッシュ関数の引数として与える値として、テーブル識別子とカラム名称に加えて、数字等のユニークな接尾子を付与することで、複数種類のデータ配置ノード(格納ノード)を取得する。
 この結果、Key値がaa、accの場合、データ配置ノード(格納ノード)1に配置し、Key値がdd、eeの場合、データ配置ノード(格納ノード)2に配置する。
 このKey値と接尾子の組み合わせ(あるいはそれを計算できる値)を、図18の構造情報保持部92に格納する。また、Key値が数字の場合、数値範囲毎に接尾子を指定するようにしてもよい。例えば、1-100は識別子を0とする(結果として、格納ノード1に格納される)。このようにすることで、構造情報保持部92への保持管理するデータ容量を削減することが出来る。
 なお、上記実施形態の第1、第2の例のテーブル・パーティショニングでは、カラムストア方式のパーティショニングを説明したが、ロウストア方式についても同様に適用可能である。この場合、カラム識別子の代わりにキー値等が用いられる。
 コンシステント・ハッシング方式において、例えば、分散ストレージシステムへ参加する複数のデータ配置ノードを、システムの動作状態に対応したグループに分け、データの書き込み要求を受けたデータ配置ノードでは、分散ストレージシステムへ参加する複数のデータ配置ノードに対して、グループごとに規定されるデータ複製数分、データの複製を作成するようにしてよい。この場合、各グループに対応して、データの複製作成数を決定し、複数のデータ配置ノードを論理的に配置したハッシュリングを辿り、グループごとの規定されるデータ複製数に達成するまで、複製先を探索し、複製先データ配置ノードのリストを作成するようにしてもよい。あるいは、複製先データ配置ノードのリストを受け、前記リストの各データ配置ノードに対して、複製命令を発行するようにしてもよい。クライアントからのデータの書き込み要求に対して複製先データ配置ノードのリストを作成し、ハッシュリング上に配置される複数のデータ配置ノードが属する所属グループに対応して、各所属グループに対応するデータ複製数のデータを複製するようにしてもよい。
 分散ストレージシステムやデータベースシステムを利用して企業の情報システムが実現されており、企業の業務内容の中心となるサービスを提供するシステムは「基幹系システム」あるいは「基幹系業務システム」と呼ばれ、販売や在庫管理システム、レジのPOSシステム(Point of sale system)等が含まれる。これら基幹系システムの情報を(時には集約して)、企業の意思決定に用いるためにデータ分析を行うシステムが、データウェアハウスとして知られている。これらのシステム(基幹系システム、データウェアハウス)では、一般的にデータに対するアクセス特性が異なるため、それぞれのアクセス特性に向くように(高速処理を行うために)、データベースシステムを用意し、データ構造を特化させることが行われている。データウェアハウス・システムにおいては、例えば複数の基幹系システムからデータ(例えばトランザクション・データ等)を抽出し再構成し情報分析、意思決定のための大規模データベースを含む。基幹系システムのデータベースからデータウェアハウス・データベースへ、データの移行を行う必要があり、この工程は、ETL(Extract/Transform/Load)と呼ばれている。ETLは、基幹系システムとデータウェアハウス・システム双方のデータ量の増大に伴い、高負荷になることが知られているが、本発明を適用することでデータ構造変換のボトルネックを解消し、ストレージの利用効率を高めることができる。
 本発明に係るデータ記憶システムは、並列データベースや並列データ処理システム、分散ストレージ、並列ファイルシステム、分散データベース、データグリッド、クラスタコンピュータに適用することができる。
 前記開示された実施形態の全部又は一部は、特に制限されないが、以下に記載される。
(付記1)
 それぞれがデータ格納部を備え、ネットワーク結合される複数のデータノードを備え、データ複製先のデータノードが、前記データノード間で、論理的には同一であるが、物理的には異なるデータ構造をそれぞれの前記データ格納部に保持する、少なくとも二つのデータノードを含む、分散ストレージシステム。
(付記2)
 複製先の前記データノードにおいて、目的のデータ構造への変換を複製データの受付とは非同期で行う、付記1記載の分散ストレージシステム。
(付記3)
 複製先の前記データノードにおいて、中間データ保持構造に前記複製データを保持して応答を返し、前記中間データ保持構造に保持されるデータ構造を、目的のデータ構造に非同期で変換する、付記2記載の分散ストレージシステム。
(付記4)
 予め定められたテーブル単位でデータの配置先のデータノード、配置先でのデータ構造、データ分割を可変に制御する手段を備えた付記2記載の分散ストレージシステム。
(付記5)
 データが配置されるデータノードを、コンシステント・ハッシングで求める手段を備えた、付記1乃至4のいずれか1に記載の分散ストレージシステム。
(付記6)
 データ更新時に行われるデータの複製において、前記複製先のデータノードでは、更新要求対象のデータを、それぞれ、指定されたデータベースでのデータ構造とは異なるデータ構造に変換してデータを前記データ格納部に格納し、その際、前記データノードは、更新対象のデータを、一旦、中間データ保持構造を保持して前記更新に対する応答を返し、前記更新要求とは非同期で目的のデータ構造に変換して格納する、付記1乃至5のいずれか1に記載の分散ストレージシステム。
(付記7)
 格納対象のデータを識別する識別子であるテーブル識別子に対応させて、複製を特定するレプリカ識別子と、前記レプリカ識別子に対応したデータ構造の種類を特定するデータ構造情報と、指定されたデータ構造に変換して格納されるまでの時間情報である更新契機情報と、を、前記データ構造の種類の数に対応させて備えたデータ構造管理情報と、
 前記テーブル識別子に対応して、前記レプリカ識別子と、前記レプリカ識別子に対応した1つ又は複数のデータ配置先のデータノード情報と、を備えたデータ配置特定情報と、
 を記憶管理する構造情報保持部を有する構造情報管理装置と、
 前記データ構造管理情報と前記データ配置特定情報とを参照して、更新処理及び参照処理のアクセス先を特定するデータアクセス部を備えたクライアント機能実現部と、
 それぞれが前記データ格納部を備え、前記構造情報管理装置と前記クライアント機能実現部とに接続される複数の前記データノードと、
 を備え、
 前記データノードは、
 前記クライアント機能実現部からのアクセス要求に基づき、更新処理を行う場合に、中間データ保持構造にデータを保持して前記クライアント機能実現部に応答を返すデータ管理・処理部と、
 前記データ構造管理情報を参照し、指定された更新契機に応答して、前記中間データ保持構造に保持されるデータを、前記データ構造管理情報で指定されたデータ構造に変換する処理を行うデータ構造変換部と、
 を備えることを特徴とする、付記1乃至6のいずれか1に記載の分散ストレージシステム。
(付記8)
 前記中間データ保持構造は、指定された目的のデータ構造としてデータが前記データ格納部に格納されるまでの間、前記データを保持する、付記7記載の分散ストレージシステム。
(付記9)
 前記クライアント機能実現部が、前記更新処理又は前記参照処理の内容に応じてアクセス先のデータノードを、前記データ構造管理情報と前記データ配置特定情報より選択する、付記7記載の分散ストレージシステム。
(付記10)
 前記クライアント機能実現部は、前記構造情報管理装置の前記構造情報保持部に保持されている前記データ配置特定情報、又は、前記構造情報保持部に保持される情報をキャッシュする構造情報キャッシュ保持部に保持されているデータ配置特定情報を取得し、データ配置先のデータノードに対して、アクセス命令を発行する、付記7記載の分散ストレージシステム。
(付記11)
 前記データノードは、アクセス受付部、アクセス処理部、データ構造変換部を備え、
 前記データノードの前記データ格納部は、構造別データ格納部を備え、
 前記アクセス受付部は、前記クライアント機能実現部からの更新要求を受け付け、前記データ配置特定情報においてレプリカ識別子に対応して指定されているデータノードに対して更新要求を転送し、
 前記データノードの前記アクセス処理部は、受け取った更新要求の処理を行い、前記データ構造管理情報の情報を参照して更新処理を実行し、その際、前記データ構造管理情報の情報から、前記データノードに対する前記更新契機が零の場合、更新データを、前記データ構造管理情報に指定されるデータ構造に変換して前記構造別データ格納部を更新し、
 前記更新契機が零でない場合、前記中間データ保持構造に、一旦、更新データを書き込み、処理完了を応答し、
 前記アクセス受付部は、前記アクセス処理部からの完了通知と、レプリカ先のデータノードの完了通知を受けると、前記クライアント機能実現部に対して応答し、
 前記データ構造変換部は、前記中間データ保持構造のデータを、前記データ構造管理情報に指定されているデータ構造に変換し変換先の前記構造別データ格納部に格納する、付記7又は10記載の分散ストレージシステム。
(付記12)
 前記クライアント機能実現部は、参照系アクセスの場合、データノードに対して行われるデータアクセスに適しているデータ構造を選択し、レプリカ識別子を特定した後、アクセスすべきデータノードを算出し、選択されたデータノードに対してアクセス要求を発行し前記データノードからアクセス処理結果を受け取る、付記7記載の分散ストレージシステム。
(付記13)
 前記クライアント機能実現部が、前記データノード内に配設されている、付記7記載の分散ストレージシステム。
(付記14)
 前記クライアント機能実現部が、前記構造情報保持部に保持される情報をキャッシュする構造情報キャッシュ保持部を備えた付記13記載の分散ストレージシステム。
(付記15)
 前記クライアント機能実現部の前記構造情報キャッシュ保持部の構造情報と、前記構造情報管理装置の前記構造情報保持部に保持される構造情報を同期させる構造情報同期部を備えた付記14記載の分散ストレージシステム。
(付記16)
 前記データ構造管理情報が、データを複数のデータノードに分割して格納する分割数であるパーティション数をレプリカ識別子に対応して備え、
 前記データ配置特定情報は、前記データ構造管理情報においてパーティション数が2以上に対応するレプリカ識別子に対応した配置ノードとして、複数のデータノードを含み、
 アクセス要求を受けた前記データノードの前記アクセス受付部は、パーティショニングされたデータの配置先が複数のデータノードにまたがる場合に、前記複数のデータノードを構成する他のデータノードのアクセス処理部にアクセス要求を発行する、付記7記載の分散ストレージシステム。
(付記17)
 アクセス要求を受けた前記データノードの前記データ構造変換部は、前記更新契機が零のとき、他のデータノードの前記データ構造変換部に対してアクセス要求を発行する、付記7又は11記載の分散ストレージシステム。
(付記18)
 アクセス要求の履歴を記録する履歴記録部と、
 前記履歴記録部の履歴情報を用いてデータ構造の変換を行うか否かを判定する変更判定部と、
 を備えた付記7記載の分散ストレージシステム。
(付記19)
 前記変更判定部は、データ構造の変換が必要と判定した場合、前記構造情報管理装置の前記構造情報変更部に変換要求を出力し、
 前記構造情報管理装置の前記構造情報変更部は、前記構造情報保持部の情報を変更し、前記データノードの前記データ構造変換部に変換要求を出力し、
 前記データノードの前記データ構造変換部は前記データノードの前記データ格納部に保持されるデータ構造の変換を行う、付記18記載の分散ストレージシステム。
(付記20)
 それぞれがデータ格納部を備え、ネットワーク結合される複数のデータノードを備えたシステムでの分散ストレージ方法であって、
 データ複製先のデータノードの少なくとも二つのデータノードが、前記データノード間で、論理的には同一であるが、物理的には異なるデータ構造をそれぞれの前記データ格納部に保持する、分散ストレージ方法。
(付記21)
 複製先の前記データノードにおいて、目的のデータ構造への変換を複製データの受付とは非同期で行う、付記20記載の分散ストレージ方法。
(付記22)
 複製先の前記データノードにおいて、中間データ保持構造に複製データを保持して応答を返し、前記中間データ保持構造に保持されるデータ構造を、目的のデータ構造に非同期で変換する、付記21記載の分散ストレージ方法。
(付記23)
 予め定められたテーブル単位でデータの配置先のデータノード、配置先でのデータ構造、データ分割を可変に制御する、付記21記載の分散ストレージ方法。
(付記24)
 データが配置されるデータノードをコンシステント・ハッシングで求める、付記20乃至23のいずれか1に記載の分散ストレージ方法。
(付記25)
 データ更新時に行われるデータの複製において、前記複製先のデータノードでは、更新要求対象のデータを、それぞれ、指定された目的のデータベースでのデータ構造とは異なるデータ構造に変換してデータを前記データ格納部に格納し、その際、前記データノードは、更新対象のデータを一旦、中間構造を保持して前記更新に対する応答を返し、前記更新要求とは非同期で、目的のデータ構造に変換して格納する、付記20乃至24のいずれか1に記載の分散ストレージ方法。
(付記26)
 格納対象のデータを識別する識別子であるテーブル識別子に対応させて、複製を特定するレプリカ識別子と、前記レプリカ識別子に対応したデータ構造の種類を特定するデータ構造情報と、指定されたデータ構造に変換して格納されるまでの時間情報である更新契機情報と、を前記データ構造の種類の数に対応させて備えたデータ構造管理情報と、
 前記テーブル識別子に対応して、前記レプリカ識別子と、前記レプリカ識別子に対応した1つ又は複数のデータ配置先のデータノード情報と、を備えたデータ配置特定情報と、
 を含む構造情報を構造情報管理部で記憶管理し、
 クライアント側では、前記データ構造管理情報と前記データ配置特定情報を参照して、更新処理及び参照処理のアクセス先を特定し、
 前記データノードは、
 前記クライアント側からのアクセス要求に基き、更新処理を行う場合に、中間データ保持構造にデータを保持して前記クライアントに応答を返し、
 前記データ構造管理情報を参照し、指定された更新契機に応じて、前記中間データ保持構造から指定されたデータ構造に変換する、ことを特徴とする、付記25記載の分散ストレージ方法。
(付記27)
 前記データ構造管理情報が、データを複数のデータノードに分割して格納する分割数であるパーティション数を、レプリカ識別子に対応して備え、
 前記データ配置特定情報は、前記データ構造管理情報においてパーティション数が2以上に対応するレプリカ識別子に対応した配置ノードとして、複数のデータノードを含み、
 アクセス要求を受けた前記データノードでは、パーティショニングされたデータの配置先が複数のデータノードにまたがる場合に、前記複数のデータノードを構成する他のデータノードに対してアクセス要求を発行する、付記26記載の分散ストレージ方法。
(付記28)
 アクセス要求に履歴を記録する履歴記録部での履歴情報を用いて、データ構造の変換を行うか否かを判定し、変換が必要な場合、前記構造情報を変換し、さらに前記データノードのデータ構造を変換する、付記26記載の分散ストレージ方法。
(付記29)
 キー値と、前記キー値に対応して1又は複数のデータレコードを1又は複数のカラムに有するセットをロウ方向の単位とし、各カラムにカラム識別子が付与されたテーブルに関して、前記キー値と、前記カラム識別子と、前記テーブル識別子を組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定する、付記5記載の分散ストレージシステム。
(付記30)
 キー値と、前記キー値に対応して1又は複数のデータレコードを1又は複数のカラムに有するセットをロウ方向の単位とし、各カラムにカラム識別子が付与されたテーブルに関して、前記テーブル識別子と前記カラム識別子とを組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定し、カラム単位で別々のデータノードに分散配置する、付記5記載の分散ストレージシステム。
(付記31)
 キー値と、前記キー値に対応して1又は複数のデータレコードを1又は複数のカラムに有するセットをロウ方向の単位とし、各カラムにカラム識別子が付与されたテーブルに関して、前記テーブル識別子と前記カラム識別子と一義的な接尾子とを組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定し、1つのカラムを、複数のデータノードに分散配置する、付記5記載の分散ストレージシステム。
(付記32)
 1又は複数のデータレコードを1又は複数のカラムに有するセットをロウ方向の単位とし、各カラムにカラム識別子が付与され、レコード毎に一義的なレコード識別子が付与されたテーブルに関して、前記テーブル識別子と前記カラム識別子と前記レコード識別子を組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定する、付記5記載の分散ストレージシステム。
(付記33)
 キー値と、前記キー値に対応して1又は複数のデータレコードを1又は複数のカラムに有するセットをロウ方向の単位とし、各カラムにカラム識別子が付与されたテーブルに関して、前記キー値と、前記カラム識別子と、前記テーブル識別子を組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定する、付記24記載の分散ストレージ方法。
(付記34)
 キー値と、前記キー値に対応して1又は複数のデータレコードを1又は複数のカラムに有するセットをロウ方向の単位とし、各カラムにカラム識別子が付与されたテーブルに関して、前記テーブル識別子と前記カラム識別子とを組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定し、カラム単位で別々のデータノードに分散配置する、付記24記載の分散ストレージ方法。
(付記35)
 キー値と、前記キー値に対応して1又は複数のデータレコードを1又は複数のカラムに有するセットをロウ方向の単位とし、各カラムにカラム識別子が付与されたテーブルに関して、前記テーブル識別子と前記カラム識別子と一義的な接尾子とを組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定し、1つのカラムを、複数のデータノードに分散配置する、付記24記載の分散ストレージ方法。
(付記36)
 1又は複数のデータレコードを1又は複数のカラムに有するセットをロウ方向の単位とし、各カラムにカラム識別子が付与され、レコード毎に一義的なレコード識別子が付与されたテーブルに関して、前記テーブル識別子と前記カラム識別子と前記レコード識別子を組み合せた文字列を引数としてハッシュ関数でハッシュ値を求め、前記ハッシュ値と、格納先ノードリスト情報から、コンシステントハッシュにより、データ配置先のデータノードを決定する、付記24記載の分散ストレージ方法。
 なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
1~4 データノード 
5 ネットワーク 
6 クライアントノード 
9 構造情報管理手段(構造情報管理装置) 
11、21、31、41 データ管理・処理手段(データ管理・処理部) 
12、22、32、42 データ格納部 
61 クライアント機能実現手段(クライアント機能実現部) 
71 履歴記録部
72 変更判定手段(変更判定部)
91 構造情報変更手段(構造情報変更部) 
92 構造情報保持部 
93 構造情報同期手段(構造情報同期部)
101~104 データノード計算機 
101a CPU 
101b データ記憶装置 
101c データ転送装置 
105 ネットワーク 
111 アクセス受付手段(アクセス受付部) 
112 アクセス処理手段(アクセス処理部) 
113 データ構造変換手段(データ構造変換部) 
121、122、123、12X 構造別データ格納部 
611 データアクセス手段(データアクセス部)
612 構造情報キャッシュ保持部 
921 データ構造管理情報 
922 データ配置特定情報 

Claims (30)

  1.  それぞれがデータ格納部を備え、ネットワーク結合される複数のデータノードを備え、
     データ複製先のデータノードが、前記データノード間で、論理的には同一であるが、物理的には異なるデータ構造をそれぞれの前記データ格納部に保持する、少なくとも二つのデータノードを含む、分散ストレージシステム。
  2.  複製先の前記データノードにおいて、目的のデータ構造への変換を複製データの受付とは非同期で行う、請求項1記載の分散ストレージシステム。
  3.  複製先の前記データノードにおいて、中間データ保持構造に前記複製データを保持して応答を返し、前記中間データ保持構造に保持されるデータ構造を、目的のデータ構造に非同期で変換する、請求項2記載の分散ストレージシステム。
  4.  予め定められたテーブル単位でデータの配置先のデータノード、配置先でのデータ構造、データ分割を可変に制御する手段を備えた請求項2記載の分散ストレージシステム。
  5.  データが配置されるデータノードを、コンシステント・ハッシングで求める手段を備えた、請求項1乃至4のいずれか1項に記載の分散ストレージシステム。
  6.  データ更新時に行われるデータの複製において、前記複製先のデータノードでは、更新対象のデータを、それぞれ、指定されたデータ構造に変換して前記データ格納部に格納し、その際、前記データノードは、更新対象のデータを、一旦、中間データ保持構造を保持して前記更新に対する応答を返し、更新要求とは非同期で目的のデータ構造に変換して格納する、請求項1乃至5のいずれか1項に記載の分散ストレージシステム。
  7.  格納対象のデータを識別する識別子であるテーブル識別子に対応させて、複製を特定するレプリカ識別子と、前記レプリカ識別子に対応したデータ構造の種類を特定するデータ構造情報と、指定されたデータ構造に変換して格納されるまでの時間情報である更新契機情報と、を、前記データ構造の種類の数に対応させて備えたデータ構造管理情報と、
     前記テーブル識別子に対応して、前記レプリカ識別子と、前記レプリカ識別子に対応した1つ又は複数のデータ配置先のデータノード情報と、を備えたデータ配置特定情報と、
     を記憶管理する構造情報保持部を有する構造情報管理装置と、
     前記データ構造管理情報と前記データ配置特定情報とを参照して、更新処理及び参照処理のアクセス先を特定するデータアクセス部を備えたクライアント機能実現部と、
     それぞれが前記データ格納部を備え、前記構造情報管理装置と前記クライアント機能実現部とに接続される複数の前記データノードと、
     を備え、
     前記データノードは、
     前記クライアント機能実現部からのアクセス要求に基づき、更新処理を行う場合に、中間データ保持構造にデータを保持して前記クライアント機能実現部に応答を返すデータ管理・処理部と、
     前記データ構造管理情報を参照し、指定された更新契機に応答して、前記中間データ保持構造に保持されるデータを、前記データ構造管理情報で指定されたデータ構造に変換する処理を行うデータ構造変換部と、
     を備えることを特徴とする、請求項1乃至6のいずれか1項に記載の分散ストレージシステム。
  8.  前記中間データ保持構造は、指定された目的のデータ構造としてデータが前記データ格納部に格納されるまでの間、前記データを保持する、請求項7記載の分散ストレージシステム。
  9.  前記クライアント機能実現部が、前記更新処理又は前記参照処理の内容に応じてアクセス先のデータノードを、前記データ構造管理情報と前記データ配置特定情報より選択する、請求項7記載の分散ストレージシステム。
  10.  前記クライアント機能実現部は、前記構造情報管理装置の前記構造情報保持部に保持されている前記データ配置特定情報、又は、前記構造情報保持部に保持される情報をキャッシュする構造情報キャッシュ保持部に保持されているデータ配置特定情報を取得し、データ配置先のデータノードに対して、アクセス命令を発行する、請求項7記載の分散ストレージシステム。
  11.  前記データノードは、アクセス受付部、アクセス処理部、データ構造変換部を備え、
     前記データノードの前記データ格納部は、構造別データ格納部を備え、
     前記アクセス受付部は、前記クライアント機能実現部からの更新要求を受け付け、前記データ配置特定情報においてレプリカ識別子に対応して指定されているデータノードに対して更新要求を転送し、
     前記データノードの前記アクセス処理部は、受け取った更新要求の処理を行い、前記データ構造管理情報の情報を参照して更新処理を実行し、その際、前記データ構造管理情報の情報から、前記データノードに対する前記更新契機が零の場合、更新データを、前記データ構造管理情報に指定されるデータ構造に変換して前記構造別データ格納部を更新し、
     前記更新契機が零でない場合、前記中間データ保持構造に、一旦、更新データを書き込み、処理完了を応答し、
     前記アクセス受付部は、前記アクセス処理部からの完了通知と、レプリカ先のデータノードの完了通知を受けると、前記クライアント機能実現部に対して応答し、
     前記データ構造変換部は、前記中間データ保持構造のデータを、前記データ構造管理情報に指定されているデータ構造に変換し変換先の前記構造別データ格納部に格納する、請求項7又は10記載の分散ストレージシステム。
  12.  前記クライアント機能実現部は、参照系アクセスの場合、データノードに対して行われるデータアクセスに適しているデータ構造を選択し、レプリカ識別子を特定した後、アクセスすべきデータノードを算出し、選択されたデータノードに対してアクセス要求を発行し前記データノードからアクセス処理結果を受け取る、請求項7記載の分散ストレージシステム。
  13.  前記クライアント機能実現部が、前記データノード内に配設されている、請求項7記載の分散ストレージシステム。
  14.  前記クライアント機能実現部が、前記構造情報保持部に保持される情報をキャッシュする構造情報キャッシュ保持部を備えた請求項13記載の分散ストレージシステム。
  15.  前記クライアント機能実現部の前記構造情報キャッシュ保持部の構造情報と、前記構造情報管理装置の前記構造情報保持部に保持される構造情報を同期させる構造情報同期部を備えた請求項14記載の分散ストレージシステム。
  16.  前記データ構造管理情報が、データを複数のデータノードに分割して格納する分割数であるパーティション数をレプリカ識別子に対応して備え、
     前記データ配置特定情報は、前記データ構造管理情報においてパーティション数が2以上に対応するレプリカ識別子に対応した配置ノードとして、複数のデータノードを含み、
     アクセス要求を受けた前記データノードの前記アクセス受付部は、パーティショニングされたデータの配置先が複数のデータノードにまたがる場合に、前記複数のデータノードを構成する他のデータノードのアクセス処理部にアクセス要求を発行する、請求項7記載の分散ストレージシステム。
  17.  アクセス要求を受けた前記データノードの前記データ構造変換部は、前記更新契機が零のとき、他のデータノードの前記データ構造変換部に対してアクセス要求を発行する、請求項7又は11記載の分散ストレージシステム。
  18.  アクセス要求の履歴を記録する履歴記録部と、
     前記履歴記録部の履歴情報を用いてデータ構造の変換を行うか否かを判定する変更判定部と、
     を備えた請求項7記載の分散ストレージシステム。
  19.  前記変更判定部は、データ構造の変換が必要と判定した場合、前記構造情報管理装置の前記構造情報変更部に変換要求を出力し、
     前記構造情報管理装置の前記構造情報変更部は、前記構造情報保持部の情報を変更し、前記データノードの前記データ構造変換部に変換要求を出力し、
     前記データノードの前記データ構造変換部は前記データノードの前記データ格納部に保持されるデータ構造の変換を行う、請求項18記載の分散ストレージシステム。
  20.  それぞれがデータ格納部を備え、ネットワーク結合される複数のデータノードを備えたシステムでの分散ストレージ方法であって、
     データ複製先のデータノードの少なくとも二つのデータノードが、前記データノード間で、論理的には同一であるが、物理的には異なるデータ構造をそれぞれの前記データ格納部に保持する、分散ストレージ方法。
  21.  複製先の前記データノードにおいて、目的のデータ構造への変換を複製データの受付とは非同期で行う、請求項20記載の分散ストレージ方法。
  22.  複製先の前記データノードにおいて、中間データ保持構造に複製データを保持して応答を返し、前記中間データ保持構造に保持されるデータ構造を、目的のデータ構造に非同期で変換する、請求項21記載の分散ストレージ方法。
  23.  予め定められたテーブル単位でデータの配置先のデータノード、配置先でのデータ構造、データ分割を可変に制御する、請求項21記載の分散ストレージ方法。
  24.  データが配置されるデータノードをコンシステント・ハッシングで求める、請求項20乃至23のいずれか1項に記載の分散ストレージ方法。
  25.  データ更新時に行われるデータの複製において、前記複製先のデータノードでは、更新対象のデータを、それぞれ、指定された目的のデータ構造に変換して前記データ格納部に格納し、その際、前記データノードは、更新対象のデータを一旦、中間構造を保持して前記更新に対する応答を返し、更新要求とは非同期で、目的のデータ構造に変換して格納する、請求項20乃至24のいずれか1項に記載の分散ストレージ方法。
  26.  格納対象のデータを識別する識別子であるテーブル識別子に対応させて、複製を特定するレプリカ識別子と、前記レプリカ識別子に対応したデータ構造の種類を特定するデータ構造情報と、指定されたデータ構造に変換して格納されるまでの時間情報である更新契機情報と、を前記データ構造の種類の数に対応させて備えたデータ構造管理情報と、
     前記テーブル識別子に対応して、前記レプリカ識別子と、前記レプリカ識別子に対応した1つ又は複数のデータ配置先のデータノード情報と、を備えたデータ配置特定情報と、
     を含む構造情報を構造情報管理部で記憶管理し、
     クライアント側では、前記データ構造管理情報と前記データ配置特定情報を参照して、更新処理及び参照処理のアクセス先を特定し、
     前記データノードは、
     前記クライアント側からのアクセス要求に基き、更新処理を行う場合に、中間データ保持構造にデータを保持して前記クライアントに応答を返し、
     前記データ構造管理情報を参照し、指定された更新契機に応じて、前記中間データ保持構造から指定されたデータ構造に変換する、
     を備えることを特徴とする、請求項25記載の分散ストレージ方法。
  27.  前記データ構造管理情報が、データを複数のデータノードに分割して格納する分割数であるパーティション数を、レプリカ識別子に対応して備え、
     前記データ配置特定情報は、前記データ構造管理情報においてパーティション数が2以上に対応するレプリカ識別子に対応した配置ノードとして、複数のデータノードを含み、
     アクセス要求を受けた前記データノードでは、パーティショニングされたデータの配置先が複数のデータノードにまたがる場合に、前記複数のデータノードを構成する他のデータノードに対してアクセス要求を発行する、請求項26記載の分散ストレージ方法。
  28.  アクセス要求に履歴を記録する履歴記録部での履歴情報を用いて、データ構造の変換を行うか否かを判定し、変換が必要な場合、前記構造情報を変換し、さらに前記データノードのデータ構造を変換する、請求項26記載の分散ストレージ方法。
  29.  データ格納部を備え、他のデータノードとネットワーク結合され、複数のデータノードが分散ストレージシステムを構成し、
     更新対象のデータを複数のデータノードに複製する場合、前記データに関して、少なくとも一つの他のデータノードとの間で、論理的には同一であるが、物理的には異なるデータ構造を前記データ格納部に保持するデータノード装置。
  30.  前記更新対象のデータを、一旦、中間データ保持構造に保持して更新要求に対する応答を返し、前記更新要求とは非同期で、指定されたデータ構造に変換し前記データ格納部に格納する請求項29記載のデータノード装置。
PCT/JP2012/055917 2011-03-08 2012-03-08 分散ストレージシステムおよび方法 WO2012121316A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/003,658 US9342574B2 (en) 2011-03-08 2012-03-08 Distributed storage system and distributed storage method
JP2013503590A JP5765416B2 (ja) 2011-03-08 2012-03-08 分散ストレージシステムおよび方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011050151 2011-03-08
JP2011-050151 2011-03-08

Publications (1)

Publication Number Publication Date
WO2012121316A1 true WO2012121316A1 (ja) 2012-09-13

Family

ID=46798271

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/055917 WO2012121316A1 (ja) 2011-03-08 2012-03-08 分散ストレージシステムおよび方法

Country Status (3)

Country Link
US (1) US9342574B2 (ja)
JP (1) JP5765416B2 (ja)
WO (1) WO2012121316A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5342055B1 (ja) * 2012-10-30 2013-11-13 株式会社東芝 記憶装置およびデータバックアップ方法
JP2015095246A (ja) * 2013-11-14 2015-05-18 日本電信電話株式会社 情報処理システム、管理装置、サーバ装置及びキー割当プログラム
WO2015118865A1 (ja) * 2014-02-05 2015-08-13 日本電気株式会社 情報処理装置、情報処理システム及びデータアクセス方法
JP2015184685A (ja) * 2014-03-20 2015-10-22 日本電気株式会社 情報記憶システム
US10318506B2 (en) 2015-03-18 2019-06-11 Nec Corporation Database system
CN111988359A (zh) * 2020-07-15 2020-11-24 中科物缘科技(杭州)有限公司 基于消息队列的数据分片同步方法及系统

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9609060B2 (en) * 2011-08-02 2017-03-28 Nec Corporation Distributed storage system and method
US9069835B2 (en) * 2012-05-21 2015-06-30 Google Inc. Organizing data in a distributed storage system
US9774676B2 (en) 2012-05-21 2017-09-26 Google Inc. Storing and moving data in a distributed storage system
US9230000B1 (en) 2012-06-04 2016-01-05 Google Inc. Pipelining Paxos state machines
US9747310B2 (en) 2012-06-04 2017-08-29 Google Inc. Systems and methods of increasing database access concurrency using granular timestamps
US9449006B2 (en) 2012-06-04 2016-09-20 Google Inc. Method and system for deleting obsolete files from a file system
US9298576B2 (en) 2012-06-04 2016-03-29 Google Inc. Collecting processor usage statistics
US9195611B2 (en) 2012-06-04 2015-11-24 Google Inc. Efficiently updating and deleting data in a data storage system
US9659038B2 (en) 2012-06-04 2017-05-23 Google Inc. Efficient snapshot read of a database in a distributed storage system
CN103514229A (zh) 2012-06-29 2014-01-15 国际商业机器公司 用于在分布式数据库系统中处理数据库数据的方法和装置
KR102044023B1 (ko) * 2013-03-14 2019-12-02 삼성전자주식회사 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
US9430545B2 (en) 2013-10-21 2016-08-30 International Business Machines Corporation Mechanism for communication in a distributed database
EP3048775B1 (en) * 2014-05-29 2018-03-14 Huawei Technologies Co. Ltd. Service processing method, related device and system
US10157214B1 (en) * 2014-11-19 2018-12-18 Amazon Technologies, Inc. Process for data migration between document stores
US9727742B2 (en) * 2015-03-30 2017-08-08 Airbnb, Inc. Database encryption to provide write protection
US20180075122A1 (en) * 2015-04-06 2018-03-15 Richard Banister Method to Federate Data Replication over a Communications Network
US9619210B2 (en) 2015-05-14 2017-04-11 Walleye Software, LLC Parsing and compiling data system queries
US10078562B2 (en) 2015-08-18 2018-09-18 Microsoft Technology Licensing, Llc Transactional distributed lifecycle management of diverse application data structures
US10838827B2 (en) 2015-09-16 2020-11-17 Richard Banister System and method for time parameter based database restoration
US10990586B2 (en) 2015-09-16 2021-04-27 Richard Banister System and method for revising record keys to coordinate record key changes within at least two databases
US20170270149A1 (en) * 2016-03-15 2017-09-21 Huawei Technologies Co., Ltd. Database systems with re-ordered replicas and methods of accessing and backing up databases
US10691723B2 (en) * 2016-05-04 2020-06-23 Huawei Technologies Co., Ltd. Distributed database systems and methods of distributing and accessing data
US10453076B2 (en) * 2016-06-02 2019-10-22 Facebook, Inc. Cold storage for legal hold data
JP6235082B1 (ja) * 2016-07-13 2017-11-22 ヤフー株式会社 データ分類装置、データ分類方法、およびプログラム
US10209901B2 (en) * 2017-01-04 2019-02-19 Walmart Apollo, Llc Systems and methods for distributive data storage
CN106855892A (zh) * 2017-01-13 2017-06-16 贵州白山云科技有限公司 一种数据处理方法以及装置
CN107169075A (zh) * 2017-05-10 2017-09-15 深圳大普微电子科技有限公司 基于特征分析的数据存取方法、存储设备及存储系统
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
US10671482B2 (en) * 2017-09-12 2020-06-02 Cohesity, Inc. Providing consistency in a distributed data store
WO2020091181A1 (ko) * 2018-11-01 2020-05-07 엘지전자 주식회사 무선 통신 시스템에서 신호를 송수신하는 방법 및 장치
US10796276B1 (en) * 2019-04-11 2020-10-06 Caastle, Inc. Systems and methods for electronic platform for transactions of wearable items
US11194769B2 (en) 2020-04-27 2021-12-07 Richard Banister System and method for re-synchronizing a portion of or an entire source database and a target database
US11847100B2 (en) 2020-11-19 2023-12-19 Alibaba Group Holding Limited Distributed file system servicing random-access operations
US11681664B2 (en) * 2021-07-16 2023-06-20 EMC IP Holding Company LLC Journal parsing for object event generation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010146067A (ja) * 2008-12-16 2010-07-01 Fujitsu Ltd データ処理プログラム、サーバ装置およびデータ処理方法
JP2011008711A (ja) * 2009-06-29 2011-01-13 Brother Industries Ltd ノード装置、処理プログラム及び分散保存方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3911810B2 (ja) 1998-01-07 2007-05-09 富士ゼロックス株式会社 情報流通システム及び可搬型記憶媒体
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
JP4704659B2 (ja) * 2002-04-26 2011-06-15 株式会社日立製作所 記憶装置システムの制御方法および記憶制御装置
US7284010B2 (en) * 2003-10-23 2007-10-16 Microsoft Corporation System and method for storing and retrieving a field of a user defined type outside of a database store in which the type is defined
US7500020B1 (en) * 2003-12-31 2009-03-03 Symantec Operating Corporation Coherency of replicas for a distributed file sharing system
US20050278385A1 (en) * 2004-06-10 2005-12-15 Hewlett-Packard Development Company, L.P. Systems and methods for staggered data replication and recovery
JP4528039B2 (ja) 2004-06-29 2010-08-18 国立大学法人東京工業大学 自律ストレージ装置、自律ストレージシステム、ネットワーク負荷分散プログラム及びネットワーク負荷分散方法
US7457835B2 (en) * 2005-03-08 2008-11-25 Cisco Technology, Inc. Movement of data in a distributed database system to a storage location closest to a center of activity for the data
JP4668763B2 (ja) * 2005-10-20 2011-04-13 株式会社日立製作所 ストレージ装置のリストア方法及びストレージ装置
US7325111B1 (en) * 2005-11-01 2008-01-29 Network Appliance, Inc. Method and system for single pass volume scanning for multiple destination mirroring
US7653668B1 (en) * 2005-11-23 2010-01-26 Symantec Operating Corporation Fault tolerant multi-stage data replication with relaxed coherency guarantees
US7716180B2 (en) * 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US7885923B1 (en) * 2006-06-30 2011-02-08 Symantec Operating Corporation On demand consistency checkpoints for temporal volumes within consistency interval marker based replication
US8019727B2 (en) * 2007-09-26 2011-09-13 Symantec Corporation Pull model for file replication at multiple data centers
US8620861B1 (en) * 2008-09-30 2013-12-31 Google Inc. Preserving file metadata during atomic save operations
US8055615B2 (en) * 2009-08-25 2011-11-08 Yahoo! Inc. Method for efficient storage node replacement
US8886602B2 (en) * 2010-02-09 2014-11-11 Google Inc. Location assignment daemon (LAD) for a distributed storage system
US8805783B2 (en) * 2010-05-27 2014-08-12 Microsoft Corporation Synchronization of subsets of data including support for varying set membership

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010146067A (ja) * 2008-12-16 2010-07-01 Fujitsu Ltd データ処理プログラム、サーバ装置およびデータ処理方法
JP2011008711A (ja) * 2009-06-29 2011-01-13 Brother Industries Ltd ノード装置、処理プログラム及び分散保存方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AVINASH LAKSHMAN ET AL.: "Cassandra - A Decentralized Structured Storage System", ACM SIGOPS OPERATING SYSTEMS REVIEW, vol. 44, no. 2, April 2010 (2010-04-01), pages 35 - 40 *
SHUNSUKE NAKAMURA ET AL.: "A Cloud Storage Adaptable to Read-Intensive and Write-Intensive Workload", IPSJ SIG NOTES, vol. 2011-116, no. 9, 15 February 2011 (2011-02-15), pages 1 - 7 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5342055B1 (ja) * 2012-10-30 2013-11-13 株式会社東芝 記憶装置およびデータバックアップ方法
WO2014069007A1 (ja) * 2012-10-30 2014-05-08 株式会社 東芝 記憶装置およびデータバックアップ方法
JP2015095246A (ja) * 2013-11-14 2015-05-18 日本電信電話株式会社 情報処理システム、管理装置、サーバ装置及びキー割当プログラム
WO2015118865A1 (ja) * 2014-02-05 2015-08-13 日本電気株式会社 情報処理装置、情報処理システム及びデータアクセス方法
JP2015184685A (ja) * 2014-03-20 2015-10-22 日本電気株式会社 情報記憶システム
US10095737B2 (en) 2014-03-20 2018-10-09 Nec Corporation Information storage system
US10318506B2 (en) 2015-03-18 2019-06-11 Nec Corporation Database system
CN111988359A (zh) * 2020-07-15 2020-11-24 中科物缘科技(杭州)有限公司 基于消息队列的数据分片同步方法及系统
CN111988359B (zh) * 2020-07-15 2023-08-15 中国科学院计算技术研究所数字经济产业研究院 基于消息队列的数据分片同步方法及系统

Also Published As

Publication number Publication date
JPWO2012121316A1 (ja) 2014-07-17
US20130346365A1 (en) 2013-12-26
JP5765416B2 (ja) 2015-08-19
US9342574B2 (en) 2016-05-17

Similar Documents

Publication Publication Date Title
JP5765416B2 (ja) 分散ストレージシステムおよび方法
JP6044539B2 (ja) 分散ストレージシステムおよび方法
US10997163B2 (en) Data ingestion using file queues
US8335769B2 (en) Executing replication requests for objects in a distributed storage system
CN106233275B (zh) 数据管理系统及方法
US10853242B2 (en) Deduplication and garbage collection across logical databases
CN102831120B (zh) 一种数据处理方法及系统
US10866970B1 (en) Range query capacity allocation
US20060271653A1 (en) Computer system
US10394782B2 (en) Chord distributed hash table-based map-reduce system and method
US9330158B1 (en) Range query capacity allocation
Davoudian et al. A workload-adaptive streaming partitioner for distributed graph stores
Sundarakumar et al. A comprehensive study and review of tuning the performance on database scalability in big data analytics
Cao et al. Polardb-x: An elastic distributed relational database for cloud-native applications
US11449521B2 (en) Database management system
CN109716280A (zh) 灵活的内存列存储布置
JP2013088920A (ja) 計算機システム及びデータ管理方法
JP2008186141A (ja) データ管理方法、データ管理プログラム、データ管理システム、および、構成管理装置
KR101792189B1 (ko) 빅 데이터 처리 장치 및 방법
US11550793B1 (en) Systems and methods for spilling data for hash joins
Nurul IMPROVED TIME COMPLEXITY AND LOAD BALANCE FOR HDFS IN MULTIPLE NAMENODE
CN116975053A (zh) 一种数据处理方法、装置、设备、介质及程序产品
JP2022070669A (ja) データベースシステム、及びクエリ実行方法
Dash et al. Review on fragment allocation by using clustering technique in distributed database system

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013503590

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14003658

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

Country of ref document: EP

Kind code of ref document: A1