WO2016067370A1 - 情報処理装置、方法およびプログラム - Google Patents

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

Info

Publication number
WO2016067370A1
WO2016067370A1 PCT/JP2014/078647 JP2014078647W WO2016067370A1 WO 2016067370 A1 WO2016067370 A1 WO 2016067370A1 JP 2014078647 W JP2014078647 W JP 2014078647W WO 2016067370 A1 WO2016067370 A1 WO 2016067370A1
Authority
WO
WIPO (PCT)
Prior art keywords
information processing
execution
instruction
node
processing apparatus
Prior art date
Application number
PCT/JP2014/078647
Other languages
English (en)
French (fr)
Inventor
山田 浩之
洋平 堤
Original Assignee
株式会社Murakumo
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 株式会社Murakumo filed Critical 株式会社Murakumo
Priority to JP2016556087A priority Critical patent/JP6506773B2/ja
Priority to EP14905231.8A priority patent/EP3214549A1/en
Priority to PCT/JP2014/078647 priority patent/WO2016067370A1/ja
Publication of WO2016067370A1 publication Critical patent/WO2016067370A1/ja
Priority to US15/499,218 priority patent/US10860580B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Definitions

  • This disclosure relates to a technology for load distribution.
  • a distributed search apparatus that shares a search range of information, wherein a search is requested by a first reception unit that receives a search request for searching for information and a search request received by the first reception unit.
  • Information search means for searching for information within the search range that he is in charge of and a search requested by the search request received by the first reception means is requested to another distributed search device on the network.
  • 1 search request means device information storage means for storing other distributed search devices for requesting search by the first search request means, and device information stored in the device information storage means
  • Update means for updating the device information, and when the first search request means requests other distributed search devices to perform a search, the device information stored in the device information storage means is used.
  • Distributed search apparatus characterized by requesting a search to other distributed search apparatus specified Te has been proposed (see Patent Document 1).
  • Patent Document 2 a technique for sharing search targets among a plurality of devices and processing them in parallel (see Patent Document 2), and the management computer that receives the search query instructs the melody search means of each guest room system to specify an appropriate search range.
  • Patent Document 3 a technique for creating a search report showing search results in the entire search range by integrating the search results reported from the melody search means of the guest room system.
  • a system including a plurality of information processing apparatuses capable of receiving and executing a query is used. According to such a system, even when a large number of queries are processed in parallel, if the query has a relatively small processing load, the processing load is distributed by distributing the queries to a plurality of information processing apparatuses. I can do it.
  • each query processing must be executed by one information processing apparatus even if the query has a relatively large processing load, and the processing load cannot be distributed.
  • the technology according to the present disclosure has an object to distribute the processing load related to one query to a plurality of information processing apparatuses.
  • an information processing apparatus includes a database management unit that manages a database, and a plurality of parts included in a table used for a process related to a query for the database.
  • Allocating means to be assigned as a responsible part by each of the plurality of other information processing apparatuses, referring to another database synchronized with the database managed by the other information processing apparatus, and By instructing the responsible portion to perform the processing, the processing unit performs the processing on the responsible portion from the instruction means that causes the plurality of other information processing devices to execute the processing in a distributed manner.
  • Synthesizing means for obtaining an execution result of the processing for Le, an information processing apparatus including a.
  • the information processing apparatus further includes a version determination unit that determines a version used for the process with respect to the table, and the instruction unit uses the version determined by the version determination unit as a version used for the process.
  • the plurality of other information processing apparatuses may be instructed to perform the process.
  • the information processing apparatus includes an update history creating unit that creates an update history when the table is updated based on the update command when the transaction including the query includes an update command related to the table. And an update history notifying unit for notifying the update history to the other information processing apparatus to which the assigned portion related to the update command is assigned.
  • the information processing apparatus is configured to provide information that can identify the update command and other information to which the responsible portion related to the update command is assigned.
  • Update command identification information notifying means for notifying the information processing apparatus may be further provided.
  • the information processing apparatus is configured to provide information that can identify the update command and other information to which the responsible portion related to the update command is assigned.
  • Update command identification information notifying means for notifying the information processing apparatus, and when the transaction including the query includes an update command related to the table, the version updated by the update command is displayed on the table.
  • Version determining means for determining a version to be used for processing, and the instruction means performs the processing using the version determined by the version determining means as the version to be used for the processing. Another information processing apparatus may be instructed.
  • the information processing apparatus responds to the query based on a query reception unit that receives the query from a user terminal, and an execution result of the process for the entire table, which is obtained by combining by the combining unit. Response means for returning to the user terminal.
  • the information processing apparatus includes a plan tree creating unit that creates a plan tree in which nodes representing each of the processes included in the query are arranged in a tree form according to an order to be processed, and an analysis result of the plan tree In accordance with the object determination means for determining the processing to be distributed execution, May be further provided.
  • the information processing apparatus further includes a possibility determination unit that determines the possibility of the distributed execution for the process represented by each node included in the plan tree, and the target determination unit includes the possibility determination A process that is determined to be distributed by the means may be determined as a target for the distributed execution.
  • the information processing apparatus is configured to exclude, from the distributed execution target, processing that is determined to be impossible to be distributed by the possibility determination unit and processing that is connected to a higher rank in the plan tree. Exclusion means may be further provided.
  • the possibility determination means may perform the determination in order from the lower node to the upper node in the plan tree.
  • the information processing apparatus is a process that is not suitable for the distributed execution by the aptitude determination unit that determines the aptitude of the distributed execution and the aptitude determination unit for the process represented by each node included in the plan tree.
  • inappropriate processing exclusion means for excluding, from the distributed execution target, processing determined to be and processing connected to a lower level than the processing in the plan tree.
  • the aptitude determination unit may sequentially determine from the upper node to the lower node in the plan tree.
  • the information processing apparatus includes a database management unit that manages a database synchronized with another database managed by another information processing apparatus, and a process related to a query received by the other information processing apparatus.
  • a database management unit that manages a database synchronized with another database managed by another information processing apparatus, and a process related to a query received by the other information processing apparatus.
  • an instruction receiving unit that receives an instruction to execute the process for the portion in charge of the information processing device in the table used, from the other information processing device,
  • An information processing apparatus comprising: a process execution unit that executes the process for a responsible part; and a result transmission unit that transmits a result of execution of the process for the responsible part to the other information processing apparatus.
  • the information processing apparatus further includes a version acquisition unit that acquires a version used for the process from the other information processing apparatus with respect to the table, and the process execution unit performs the process based on the version table. May be executed.
  • the information processing device displays an update history when the table is updated based on the update command.
  • Update history acquisition means for acquiring the update history, and the process execution means may perform the process with reference to information reflecting the update history in a version table acquired by the version acquisition means.
  • the information processing device acquires information that can identify the update command from the other information processing device.
  • the information processing device transmits a version updated by the update command from the other information processing device to the table.
  • the image processing apparatus may further include a version acquisition unit that acquires a version used for the process, and the process execution unit may execute the process based on the version table.
  • a computer-readable recording medium refers to a recording medium that accumulates information such as data and programs by electrical, magnetic, optical, mechanical, or chemical action and can be read from a computer or the like.
  • 5 is a flowchart illustrating a flow of distributed execution instruction processing executed by a node in the embodiment.
  • 5 is a flowchart illustrating a flow of distributed execution processing executed by a node in the embodiment.
  • 4 is a flowchart illustrating a flow of query analysis processing executed by a node in the embodiment.
  • It is a figure which illustrates the plan tree created in an embodiment.
  • It is a figure B which shows the outline of the function structure of the node which concerns on embodiment.
  • 6 is a flowchart B illustrating a flow of distributed execution instruction processing executed by a node in the embodiment. 6 is a flowchart B illustrating a flow of distributed execution processing executed by a node in the embodiment.
  • a plurality of information processing devices are connected so as to communicate with each other. These multiple nodes are all nodes that can accept and execute a query.
  • Each of the plurality of nodes has a database managed by itself, and these databases are synchronized by a replication technique.
  • a replication technique for database synchronization for example, a log-based replication technique that sequentially reflects transaction logs may be employed.
  • the process related to the large table is a relatively heavy process. Therefore, in the present disclosure, a plurality of parts included in a large table (the plurality of parts may be obtained by equally dividing the table or may be divided into different sizes). For each, a node in charge of processing is determined, and processing is distributedly executed by the determined nodes.
  • the node that has received the query operates as a distributed execution instruction node that issues a distributed execution instruction, thereby determining a table division method and a charge, etc. Notification of the responsibility of each node is given, and the execution of processing for the responsible portion is instructed.
  • the node that has received the instruction executes processing for the assigned portion as an instruction execution node, and transmits the execution result to the node that issued the instruction.
  • the distributed execution instruction node receives and aggregates the execution results transmitted from the instruction execution nodes that have performed the distributed execution.
  • FIG. 1 is a diagram illustrating an outline of a hardware configuration of a system according to the present embodiment.
  • the system according to the present embodiment includes a plurality of nodes (information processing devices) 1 for responding to a search request (query) from the user terminal 9.
  • the plurality of nodes 1 are communicably connected to each other via a network.
  • Each node 1 includes a control unit 10 including a CPU (Central Processing Unit) 11, a RAM (Random Access Memory) 12, a ROM (Read Only Memory) 13, an auxiliary storage device 14, and a communication interface 15. It is. However, the specific hardware configuration of the node 1 can be appropriately omitted, replaced, or added according to the embodiment. Further, the node 1 is not limited to a single device. The node 1 may be realized by a plurality of devices using a so-called cloud or distributed computing technology.
  • a configuration is such that a node belonging to the system can be either a distributed execution instruction node (a node that instructs distributed execution) or an instruction execution node (a node that receives a distributed execution instruction and executes processing in a distributed manner).
  • each node has a distributed execution instruction function for instructing distributed execution, a query analysis function for determining the target range of distributed processing, and an instruction for executing processing upon receiving the distributed execution instruction.
  • An execution function for instructing distributed execution, a query analysis function for determining the target range of distributed processing, and an instruction for executing processing upon receiving the distributed execution instruction.
  • the distributed execution instruction node and the instruction execution node may be determined in advance.
  • a node that can only be a distributed execution instruction node need not have an instruction execution function for distributed execution, and a node that can only be an instruction execution node has a distributed execution instruction function for instruction. It does not have to be.
  • node 1 is used to describe a node in general without distinguishing the nodes, and “distributed execution instruction node 1” and “instruction execution node 1” are used to distinguish between nodes. It describes as follows.
  • the system according to the present disclosure is applicable to a database system having a hierarchical structure and a multi-master database system. At this time, a distributed execution instruction can be given to any of a master node and a slave node in the database system. Node 1 or instruction execution node 1 can be used.
  • FIG. 2 is a diagram showing an outline of a functional configuration of the node 1 according to the present embodiment.
  • the CPU 11 interprets and executes various programs expanded in the RAM 12 and controls various hardware provided in the node 1, whereby the database management unit 21 and the query reception unit 22. , Allocation unit 23, version determination unit 24, update history creation unit 25, update history notification unit 26, instruction unit 27, result reception unit 28, synthesis unit 29, response unit 30, plan tree creation unit 31, aptitude determination unit 32, An inappropriate process exclusion unit 33, a possibility determination unit 34, an impossible process exclusion unit 35, a target determination unit 36, an instruction reception unit 37, a version acquisition unit 38, an update history acquisition unit 39, a process execution unit 40, and a result transmission unit 41 are provided. Functions as a computer.
  • the database management unit 21 manages the database.
  • the database is synchronized with another database managed by another node by the database management unit 21. That is, the database management unit 21 synchronizes the database managed by another node and the database managed by the database management unit 21 connected via the network by the replication technique.
  • the process execution unit 40 refers to the database managed by the database management unit 21 and executes the process for the portion in charge.
  • the process execution unit 40 of the instruction execution node updates the update history in the version table acquired by the version acquisition unit 38 described later. Refer to the information that reflects and process.
  • the distributed execution instruction function includes a query receiving unit 22, an assigning unit 23, a version determining unit 24, an update history creating unit 25, an update history notifying unit 26, an instruction unit 27, a result receiving unit 28, a combining unit 29, and a response described below. This is realized by the unit 30.
  • the query receiving unit 22 receives a query transmitted from the user terminal.
  • the assigning unit 23 assigns each of a plurality of parts included in a table used for processing related to a query to the database as a part in charge by each of a plurality of instruction execution nodes. Specifically, the allocating unit 23 selects a plurality of nodes that give instructions for distributed execution from the nodes belonging to the system. Then, the allocating unit 23 determines which part of the table that the selected node is subject to divided reading. However, it is also possible to determine the number of tables to be divided first and select as many nodes as the number of tables to be divided.
  • the version determination unit 24 determines the version to be used for processing for the table so that the data to be processed does not differ between instruction execution nodes.
  • the version is information for specifying the contents and state of the database at a certain point in time.
  • the update history creation unit 25 creates an update history when the table is updated based on the update command when the transaction including the query includes an update command related to the table.
  • the update history creating unit 25 creates, as an update history, information in which information that can identify an updated record in the table is associated with specific update contents.
  • the update history notification unit 26 notifies the update history to the instruction execution node to which the part in charge related to the update command is assigned.
  • the update history creating unit 25 creates an update history
  • the update history notifying unit 26 transmits the update history to the instruction execution node to perform distributed processing.
  • the instruction execution node is caused to perform processing by combining the table managed by the other node and the update history.
  • the mechanism according to the present disclosure also applies to the database system in which the substance of the database is changed before the transaction is committed in accordance with the update contents related to the update command issued during the transaction execution. It can also be applied to database systems in which the database entity changes after the transaction is committed.
  • the transaction being executed in the distributed execution instruction node includes an update instruction for table B (INSERT, DELETE, etc.) and further includes a JOIN syntax for table A and table B.
  • update instruction for table B INSERT, DELETE, etc.
  • the distributed execution instruction node when a distributed execution instruction is transmitted, the update history related to the update command is transmitted together with the version information of the table.
  • the distributed execution instruction node preferentially transmits an update history related to the query that is the target of distributed processing to the instruction execution node that performs the distributed processing.
  • the instruction execution node executes a query for the assigned charge based on data obtained by combining the table body indicated in the version information and the update history. The processing on the instruction execution node side will be described later as processing by the update history acquisition unit 39 and the processing execution unit 40.
  • the transaction update information is already reflected in the instruction execution node when the instruction execution node executes the process.
  • Such processing is not essential.
  • the processing according to the present embodiment may be employed.
  • the processing according to the present embodiment is adopted, even if a situation occurs in which the actual change of the database is not in time before the processing execution time by the instruction execution node, the query can be processed without any problem.
  • the instructing unit 27 instructs each of the plurality of instruction execution nodes to perform processing on the assigned portion, thereby causing the plurality of instruction execution nodes to execute the processing in a distributed manner. At this time, the instruction unit 27 instructs to perform processing with reference to the database managed by each instruction execution node.
  • the database managed by each instruction execution node is synchronized with the database of the distributed execution instruction node.
  • the instruction unit 27 instructs a plurality of instruction execution nodes to perform processing using the version determined by the version determination unit 24 as the version used for processing.
  • the result receiving unit 28 receives the result of executing the process for the assigned part from a plurality of instruction execution nodes.
  • the synthesizing unit 29 synthesizes the results received by the result receiving unit 28, thereby acquiring the execution result of the process for the table.
  • the response unit 30 returns a response to the query to the user terminal based on the execution result of the process for the entire table obtained by the synthesis by the synthesis unit 29.
  • the query analysis function is realized by the plan tree creation unit 31, the suitability determination unit 32, the inappropriate process exclusion unit 33, the possibility determination unit 34, the impossible process exclusion unit 35, and the target determination unit 36 described below.
  • the plan tree creation unit 31 creates a plan tree.
  • the plan tree is a tree according to the order in which plan nodes (denoted as “plan nodes” in order to avoid confusion with nodes indicating information processing devices) representing each of the processes included in the query are processed. Are arranged in a shape.
  • the suitability determination unit 32 determines the suitability of distributed execution based on the load generated by the processing for the processing represented by each plan node included in the plan tree. That is, the aptitude determination unit 32 predicts a load that occurs when the process indicated by the plan node is distributedly executed, and when the load is predicted to be greater than or equal to a predetermined value, the plan node related to the process Are determined to be unsuitable plan nodes for distributed execution. At this time, the suitability determination unit 32 sequentially determines from the upper plan node to the lower plan node in the plan tree.
  • the unsuitable process exclusion unit 33 excludes the process determined by the aptitude determination unit 32 as being unsuitable for distributed execution and the process connected to the lower level of the process in the plan tree from the target of distributed execution.
  • the possibility determination unit 34 determines the possibility of distributed execution for the process represented by each plan node included in the plan tree based on the contents of the process. In other words, the possibility determination unit 34 determines the possibility of distributed execution by determining whether or not the content of the process indicated by the plan node is a process that can be distributed and executed in the system.
  • the “possibility of distributed execution” is a possibility of indicating whether or not distributed execution is possible by the system based on functions and setting contents of the system. For this reason, even if the contents of the process indicated by the plan node are the same (for example, AVERAGE syntax), the process that can be distributed and executed cannot be distributed depending on the system.
  • the possibility determination unit 34 sequentially determines from the lower plan node to the higher plan node in the plan tree.
  • the impossible process exclusion unit 35 excludes the process determined by the possibility determination unit 34 as being incapable of distributed execution and the process connected to a higher rank in the plan tree from the target of distributed execution.
  • the target determination unit 36 determines a process to be distributed execution according to the analysis result of the plan tree. In the present embodiment, the target determining unit 36 determines a process determined by the possibility determining unit 34 as being executable for distributed execution as a target for distributed execution.
  • the instruction execution function is realized by an instruction receiving unit 37, a version acquisition unit 38, an update history acquisition unit 39, and a result transmission unit 41 described below.
  • the instruction accepting unit 37 accepts, from the distributed execution instruction node, an instruction to execute the process for the portion in charge of the information processing apparatus in the table used for the process related to the query received by the distributed execution instruction node.
  • the version acquisition unit 38 acquires the version used for processing from the distributed execution instruction node for the table to be distributed.
  • the update history acquisition unit 39 acquires, from a distributed execution instruction node, an update history when the table is updated based on the update command when the transaction including the query includes an update command related to the table.
  • the result transmission unit 41 transmits the result of executing the process for the assigned part to the distributed execution instruction node.
  • the first embodiment describes an embodiment that considers updating during transaction execution that includes a query that is subject to distributed execution.
  • an embodiment that does not consider updating the database during the execution of the transaction related to the query in other words, updating by a transaction that includes the query in distributed execution
  • the update history creation unit 25, the update history notification unit 26, and the update history acquisition unit 39 may be omitted.
  • FIG. 3 is a flowchart showing the flow of distributed execution instruction processing executed by the node 1 in this embodiment. The processing shown in this flowchart is started when the query is accepted in the node 1.
  • steps S101 to S103 a query is received, and it is determined whether or not the query is to be distributed.
  • the query receiving unit 22 receives a query transmitted from the user terminal 9 (step S101).
  • the received query is analyzed by a query analysis function (plan tree creation unit 31, aptitude determination unit 32, improper processing exclusion unit 33, possibility determination unit 34, improper processing exclusion unit 35, and target determination unit 36) provided in the receiving node. (Step S102).
  • the query analysis function In the query analysis process (step S102) by the query analysis function, the contents of the process related to the query are analyzed, and the range to be distributedly executed is determined. Specifically, the query analysis function creates a plan tree, analyzes the plan tree, and determines processing to be distributed according to the analysis result of the plan tree. A specific example of the query analysis process will be described later with reference to the flowchart shown in FIG.
  • the node that has received the query determines whether to process the received query by itself or to distribute it to other nodes according to the result of the query analysis process (step S103). As a result of the query analysis, if even part of the processing related to the query is subject to distributed execution, the processing proceeds to step S105, and thereafter, the node receiving the query operates as a distributed execution instruction node. On the other hand, as a result of the query analysis, if there is no portion to be subjected to distributed execution in the process related to the query, the process proceeds to step S104.
  • step S104 processing relating to the query is executed by the node itself that has received the query from the user terminal 9.
  • the process execution unit 40 refers to the database managed by the database management unit 21 of the node that accepted the query according to the plan tree created in step S102, and executes a process related to the query for the database. That is, in this case, distributed execution is not performed. Thereafter, the process proceeds to step S113.
  • step S105 the version used for the process is determined.
  • the version determination unit 24 determines a version used for processing for the table. Thereafter, the process proceeds to step S106.
  • step S106 a table division method used for processing and a node in charge of each divided part are determined.
  • the assigning unit 23 assigns each of a plurality of parts included in the table used for the process related to the query as a responsible part by each of the plurality of instruction execution nodes. For example, the assigning unit 23 selects a plurality (for example, five) of nodes as instruction execution nodes from the nodes belonging to the system. Upon selection, the current operating state of each node is referred to, and a node with a smaller load may be selected. When a node is selected, the allocation unit 23 determines which node of the selected plurality of nodes is responsible for which part of the table.
  • the table may be equally divided by the number of nodes (for example, equally divided into five), or may be divided according to the processing capability of the nodes. Thereafter, the process proceeds to step S107.
  • step S106 it is determined which of the plurality of tables is to be divided, and the determined table is divided. For example, when there is one relatively large table and the other tables are relatively small, the largest table is usually the division target.
  • the table to be divided does not have to be limited to one.
  • a plurality of tables can be divided, and a combination of parts of different divided tables can be assigned to each instruction execution node.
  • a plurality of tables related to the JOIN instruction can be divided and read. Specifically, for example, when the table X is divided into x pieces and the table Y is divided into y pieces, x * y combinations of the divided table X portions and table Y portions can be formed. For this reason, by determining the instruction execution node in charge of each of the x * y combinations, it is possible to make the two tables subject to divided reading in the distributed processing of the JOIN instruction. In a similar manner, it is possible to make three or more tables subject to divided reading.
  • step S107 and step S108 when a transaction related to the received query includes an update command for a database managed by the node, an update history when this update is applied is created.
  • the update history creating unit 25 determines whether or not the transaction including the query includes an update command related to the table (step S107), and when the update command is included, the update history creating unit 25 updates the table based on the update command.
  • An update history for the case is created (step S108).
  • a specific update history creation method is as described above in the description of the update history creation unit 25. Thereafter, the process proceeds to step S109.
  • step S109 an instruction for the instruction execution node is transmitted.
  • the instruction unit 27 refers to a database managed by each instruction execution node (these databases are synchronized with each other) for each of the plurality of instruction execution nodes selected in step S106. By instructing the responsible portion to perform processing, the processing is distributedly executed by a plurality of instruction execution nodes. At this time, the instruction unit 27 notifies each instruction execution node of the contents of the query that is the target of distributed processing, and further uses the version determined by the version determining unit 24 as the version used for processing. The instruction execution node is instructed to perform processing.
  • the instruction unit 27 supports the determined version so that the transaction log corresponding to the specified version can be specified.
  • the transaction sequence number (LSN) to be notified is notified.
  • step S108 If the update history is created in step S108, the update history notifying unit 26 notifies the update history to the instruction execution node to which the assigned part related to the update command is assigned. Thereafter, the process proceeds to step S110.
  • step S109 When the instruction in step S109 is performed, the plurality of nodes that have received the instruction operate as instruction execution nodes, and according to the instruction from the distributed execution instruction node, execute a process related to the query for the portion that each is in charge of.
  • FIG. 4 is a flowchart showing the flow of distributed execution processing executed by the node 1 in this embodiment.
  • the process shown in this flowchart is started when the node 1 receives a distributed execution instruction transmitted from the distributed execution instruction node (see step S109 in FIG. 3). That is, this flowchart is a flowchart when the node operates as an instruction execution node.
  • step S201 the distributed execution instruction transmitted from the distributed execution instruction node is accepted.
  • the instruction receiving unit 37 receives the execution instruction of the process for the assigned part of the node (the assigned part in the table used for the process related to the query received by the distributed execution instruction node). Accept from.
  • the version acquisition unit 38 acquires a version used for processing from the distributed execution instruction node for the table.
  • step S108 when a transaction including a query includes an update command related to the table, an update history when this update is applied is created, and the created update history is assigned to the part in charge related to the update command.
  • the assigned instruction execution node is notified (see step S108 and step S109).
  • the update history acquisition unit 39 acquires an update history when the table is updated based on the update command from the distributed execution instruction node. Thereafter, the process proceeds to step S202.
  • step S202 standby processing is performed until the specified version of the table is prepared.
  • the instruction execution node waits until it is confirmed that the version table acquired by the version acquisition unit 38 in step S201 exists in the instruction execution node.
  • the log-based replication technology is adopted in the system according to the embodiment, it is only necessary to wait until the transaction log corresponding to the specified version is reflected.
  • whether or not the transaction log is reflected can be known, for example, by referring to the transaction sequence number (LSN) notified from the distributed execution instruction node. Thereafter, the process proceeds to step S203.
  • LSN transaction sequence number
  • step S203 and step S204 when the update history is acquired, information reflecting the update history is created.
  • Each of the instruction execution nodes determines whether or not an update history has been acquired by the update history acquisition unit 39 in step S201 (step S203). If the update history has been acquired, the update acquired from the distributed execution instruction node is determined. Information reflecting the history in the version table acquired by the version acquisition unit 38 is created (step S204). More specifically, the instruction execution node reads the records in the database line by line, and for the lines that do not have an update history among the read lines, the record in the database is the search target, and the update is performed among the read lines. For a row having a history, the update history row is used as a search target instead of the record in the database.
  • step S204 the process shown in step S204 is omitted. Thereafter, the process proceeds to step S205.
  • a distributed execution query to be executed is created according to the range in charge.
  • the instruction execution node that has received the distributed execution instruction creates a distributed execution query that is customized so that it can execute the processing for the portion that it is responsible for based on the received query. Specifically, when the original query searches the entire table, but the range handled by the instruction execution node is a part of the table, the instruction execution node is based on the original query. Create a query for distributed execution specifying the block of the table that is responsible for.
  • each instruction execution node creates a distributed execution query to be executed by itself. However, the distributed execution instruction node previously creates a distributed execution query to be executed by each instruction execution node. The instruction execution node may be notified in the instruction. Thereafter, the process proceeds to step S206.
  • step S206 a plan tree for distributed execution is created.
  • the plan tree creation unit 31 creates a plan tree for distributed execution in which plan nodes representing each of the instructions included in the distributed execution query are arranged in a tree shape according to the order to be executed.
  • step S207 the created distributed execution query is executed.
  • the process execution unit 40 executes the distributed execution query in accordance with the distributed execution plan tree created in step S206.
  • the process for the assigned portion is executed.
  • the process execution unit 40 performs the process by referring to the information reflecting the update history in the version table acquired by the version acquisition unit 38 created in step S204. Thereafter, the process proceeds to step S208.
  • step S208 the execution result of the distributed execution query is transmitted.
  • the result transmission unit 41 transmits the result of executing the process for the assigned part to the distributed execution instruction node that is the transmission source of the instruction received in step S201. Thereafter, the processing shown in the flowchart of FIG. 3 ends.
  • an instruction execution node creates a distributed execution query for executing processing for a part that the instruction execution node is in charge of, and executes the query.
  • the distributed execution by each instruction execution node may not depend on the distributed execution query as described in the present embodiment.
  • the instruction execution node receives all or a part of the plan tree created in step S102 by the distributed execution instruction node, so that the instruction execution node is based on the received plan tree without creating a distributed execution query. It is possible to create a plan tree for distributed execution in which the blocks in the table in charge are specified.
  • the syntax of the node for which the node is responsible can be directly executed on the portion for which the node is responsible.
  • step S110 and step S111 the execution results of the processing transmitted from the instruction execution node that received the distributed execution instruction are received and aggregated.
  • the result receiving unit 28 receives the result of executing the process for the assigned part from the plurality of instruction execution nodes (step S110).
  • the combining unit 29 combines the results received from the plurality of instruction execution nodes by the result receiving unit 28 and the execution result by itself in step S110, thereby acquiring the execution result of the process for the table (step S111). ). Thereafter, the process proceeds to step S112.
  • step S112 a process in charge of the node itself that receives the query from the user terminal 9 is executed.
  • the process execution unit 40 refers to the database managed by the database management unit 21 of the node that accepted the query in accordance with the plan tree created in step S102, and is out of the scope of distributed execution among the processes related to the query for the database. Execute the process. At this time, the process execution unit 40 uses the result of the distributed execution obtained in step S111 as necessary. Thereafter, the process proceeds to step S113.
  • step S113 the query execution result obtained by the processing from step S110 to step S112, or the query execution result obtained by being executed in the local node in step S104 is transmitted to the user terminal.
  • the response unit 30 executes the query based on the execution result of the process for the entire table obtained by the synthesis by the synthesis unit 29. A response to is returned to the user terminal.
  • the response unit 30 returns the execution result to the user terminal. Thereafter, the processing shown in the flowchart of FIG. 4 ends.
  • the distributed execution instruction process and the distributed execution process described above with reference to FIGS. 3 and 4 have received the query (distributed execution instruction) from the plurality of nodes belonging to the system.
  • Node and a node (instruction execution node) that has received a distributed execution instruction, distributed query execution is realized, and the processing load related to one query can be distributed to a plurality of information processing apparatuses.
  • each of the plurality of nodes manages a database synchronized with each other, so that it is possible to freely determine whether or not to execute distributed processing and the charge in the case of distributed processing. is there. Furthermore, according to the technique of the present disclosure, for example, processing when executing a syntax such as the above-described JOIN syntax can be distributed. In addition, the mode of division (the number of divisions, the size of the divided portions, etc.) can be appropriately changed according to the load of each node.
  • the query analysis process described in the present embodiment is an example of a process for determining a distributed execution range.
  • Other algorithms may be employed for the process for determining the range of distributed execution.
  • FIG. 5 is a flowchart showing the flow of query analysis processing executed by the node 1 in this embodiment. The process shown in this flowchart corresponds to the process of step S102 in the distributed execution instruction process shown in FIG.
  • a plan tree is created.
  • the plan tree creation unit 31 creates a plan tree in which plan nodes representing each of the instructions included in the query are arranged in a tree shape according to the order to be executed.
  • FIG. 6 is a diagram illustrating a plan tree created in the present embodiment.
  • a plan tree is created and analyzed to determine which instructions included in the query are to be distributed.
  • the range to be distributed execution is determined while determining the suitability or availability of distributed execution from the root to the end of the tree and from the end to the root.
  • Each plan node in the generated plan tree indicates each instruction (syntax) included in the query.
  • the execution result is passed to the upper plan node (parent plan node) when the execution of the instruction is completed.
  • the flow in which the query is processed by repeating the execution of the instruction shown in the plan node that has received the execution result is shown.
  • step S305 it is determined whether or not the plan node on the plan tree is suitable for distributed execution.
  • the aptitude determination unit 32 determines the aptitude of distributed execution for the instruction represented by each plan node included in the plan tree (step S303). Then, the inappropriate process exclusion unit 33 excludes the instruction determined by the aptitude determination unit 32 as being unsuitable for distributed execution and the instruction connected to the lower level in the plan tree from the target of distributed execution (step S304). ).
  • the suitability determination unit 32 determines the instruction of the plan node related to the REPEAT syntax as an instruction not suitable for distributed execution, and the inappropriate process exclusion unit 33 determines the instruction related to the plan node and its lower plan node as follows. Exclude from distributed execution.
  • step S302 the determination by the aptitude determination unit 32 is performed in order from the upper plan node to the lower plan node in the plan tree.
  • step S305 the process proceeds to step S306. Even if the instruction is not suitable for distributed execution, it does not mean that distributed execution is impossible. For this reason, the processing shown from step S302 to step S305 may be omitted.
  • the possibility determination unit 34 determines the possibility of distributed execution for the instructions represented by the plan nodes not excluded in step S304 among the plan nodes included in the plan tree (step S307). In the present embodiment, the possibility determination unit 34 determines the distributed execution possibility of instructions related to the plan node by the method described below. Specifically, the possibility determination unit 34 (1) The instruction shown in the plan node is in a list prepared in advance, and (2) the instruction execution node has information such as a table necessary for executing the instruction at the time of execution of the instruction. In this case, it is determined that the instruction indicated in the plan node is an instruction that can be distributedly executed.
  • the condition of (1) is for confirming that the instruction relating to the plan node itself is a kind of instruction that can be distributedly executed. Syntax). In this embodiment, for example, a READ instruction and a JOIN instruction are held in the list as instructions of a type that can be distributedly executed. However, the types of instructions that enable / disable distributed execution are not limited to the examples in the present embodiment, and are determined based on the distributed execution function and setting contents provided in the system according to the embodiment.
  • the condition (2) is a plan node that satisfies the condition (1), but the instruction execution node that executes the plan node does not have information such as a table necessary for executing the instruction. In this case, distributed execution is impossible, and this is a condition for determining this.
  • the instruction indicated by the plan node to be determined is “a part obtained as a processing result by the instruction execution node when processing a lower plan node of the plan node” and / or “an instruction to execute the plan node” If the instruction can be executed by referring only to the “table managed by the execution node”, the information required for the instructed distributed execution by the instructed node to satisfy the condition (2) is satisfied. It can be said that all can be grasped.
  • the instruction execution node indicates that the instruction execution node is The table portion read by the processing of the lower READ instruction plan node, the processing result obtained by the processing of the lower JOIN instruction plan node by the instruction execution node, and the like.
  • instructions of plan nodes that require information that the instruction execution node does not have such as information obtained from the execution results of instructions by other nodes, cannot be distributedly executed.
  • the plan node that is higher than the plan node that cannot be distributedly executed cannot be executed in the same manner.
  • the instruction indicated by the plan node to be determined is a READ instruction
  • the READ instruction is held in the list as described above, and the table in the data is replicated to all nodes.
  • the node satisfies the above conditions (1) and (2) and is determined to be capable of distributed execution. That is, all the lowest READ instruction plan nodes can be distributedly executed.
  • plan node indicating the READ processing of the tables D and E is subordinate to the plan node determined to be unsuitable for distributed execution in the processing from step S302 to step S305, and the possibility of distributed execution by the possibility determination unit 34 is determined. Has already been removed from the target.
  • each instruction execution node may have only the information of the portion read by itself in charge of divided reading. This is because a lower-level READ instruction plan node capable of distributed execution may read the table in a divided manner.
  • the condition (2) can be satisfied.
  • step S106 it is determined that the plan nodes indicating the READ processing of the tables A, B, and C can be executed in a distributed manner.
  • the READ process can be distributed and executed for a plurality of tables, only the largest table (the table with the highest load of the READ process) is subjected to the divided reading.
  • the embodiment that does not have the function for executing the AVERAGE syntax in a distributed manner has been described.
  • the AVERAGE instruction is held in the list. Good.
  • the plan node of the AVERAGE instruction can be distributedly executed if the condition (2) is satisfied because the lower plan node is a simple READ instruction.
  • plan nodes and “JOIN ABC” plan nodes can be distributedly executed.
  • step S309 If it is determined that the instruction shown in the plan node is an instruction that can be distributedly executed, the process proceeds to step S309. On the other hand, if it is determined that the instruction indicated in the plan node is not an instruction that can be distributedly executed, the process proceeds to step S308.
  • the impossibility process exclusion unit 35 excludes the instruction determined by the possibility determination unit 34 as being incapable of distributed execution and the instruction connected higher in the plan tree from the target of distributed execution (step S308).
  • step S306 the determination by the possibility determination unit 34 is performed in order from the lower plan node to the higher plan node in the plan tree.
  • an instruction to be distributed is determined.
  • the object determining unit 36 determines an instruction to be distributed execution according to the analysis result of the plan tree.
  • the target determining unit 36 determines an instruction determined by the possibility determining unit 34 as being executable for distributed execution as a target for distributed execution.
  • the plan node of “READ A”, the plan node of “READ B”, the plan node of “JOIN AB”, the plan node of “READ C”, and the plan node of “JOIN ABC” Are determined as targets for distributed execution. Thereafter, the processing shown in this flowchart ends.
  • FIG. 7 is a diagram showing an outline of a functional configuration of the node 1 according to the present embodiment.
  • the CPU 11 interprets and executes various programs expanded in the RAM 12 and controls various hardware provided in the node 1, whereby the database management unit 21 and the query reception unit 22. , Allocation unit 23, version determination unit 24, update command identification information notification unit 26 b, instruction unit 27, result reception unit 28, synthesis unit 29, response unit 30, plan tree creation unit 31, aptitude determination unit 32, inappropriate process exclusion unit 33, possibility determination unit 34, impossible process exclusion unit 35, target determination unit 36, instruction reception unit 37, version acquisition unit 38, update command identification information acquisition unit 39b, update content identification unit 39c, process execution unit 40, and result transmission It functions as a computer including the unit 41.
  • the node 1 employs the update command identification information notification unit 26b instead of the update history creation unit 25 and the update history notification unit 26, and updates command identification information acquisition unit instead of the update history acquisition unit 39. It differs from the node 1 which concerns on 1st embodiment by the point by which 39b and the update content specific
  • the update command identification information notifying unit 26b executes, when a transaction including a query includes an update command related to the table, information for identifying the update command as a command execution to which a responsible part related to the update command is assigned Notify the node.
  • the instruction execution node that has received the notification of the transaction ID is notified by notifying the transaction ID of the transaction including the update instruction.
  • the transaction related to the update command can be specified and the update contents can be referred to.
  • the transaction ID is used as information for identifying the update command.
  • the information used is not limited to the transaction ID. Any information that can identify the update command may be used.
  • the update command identification information acquisition unit 39b acquires the transaction ID (information that can identify the update command) notified by the update command identification information notification unit 26b of the distributed execution instruction node.
  • the update content identification unit 39c identifies the content updated based on the update command based on the transaction ID acquired by the update command identification information acquisition unit 39b.
  • the transmission / reception of information that can identify the update command is adopted, so It is possible to perform distributed execution considering the update during the transaction that contains the query.
  • FIG. 8 is a flowchart showing the flow of the distributed execution instruction process executed by the node 1 in this embodiment. The processing shown in this flowchart is started when the query is accepted in the node 1.
  • step S401 to step S404 Since the processing from step S401 to step S404 is substantially the same as the processing from step S101 to step S104 described with reference to FIG. 3 in the first embodiment, description thereof is omitted.
  • step S405 the version used for the process is determined.
  • the version determination unit 24 determines a version used for processing for the table. Note that, in this embodiment, a database in which the database entity is changed in replication is employed, and when an update command is included in a transaction including the query, the version determined here is determined by the update command. It is a version in which the entity is changed (different from the first embodiment). Thereafter, the process proceeds to step S406.
  • step S406 a table division method used for processing and a node in charge of each divided part are determined. Since the process of step S406 is substantially the same as the process of step S106 in the first embodiment, a description thereof will be omitted.
  • step S407 and step S408 when the transaction related to the received query includes a database update command managed by the node, a transaction ID for identifying the update command is specified.
  • the update command identification information notifying unit 26b determines whether or not the transaction including the query includes an update command related to the table (step S407). If the update command is included, the update command identification information notifying unit 26b determines the transaction including the update command. A transaction ID is specified (step S408). Thereafter, the process proceeds to step S409.
  • step S409 an instruction for the instruction execution node is transmitted.
  • the instruction unit 27 refers to a database managed by each instruction execution node (these databases are synchronized with each other) for each of the plurality of instruction execution nodes selected in step S406. By instructing the responsible portion to perform processing, the processing is distributedly executed by a plurality of instruction execution nodes. At this time, the instruction unit 27 notifies each instruction execution node of the contents of the query that is the target of distributed processing, and further uses the version determined by the version determining unit 24 as the version used for processing. The instruction execution node is instructed to perform processing.
  • the instruction unit 27 supports the determined version so that the transaction log corresponding to the specified version can be specified.
  • the transaction sequence number (LSN) to be notified is notified.
  • step S408 the update command identification information notification unit 26b notifies the specified transaction ID to the command execution node to which the part in charge related to the update command is assigned. Thereafter, the process proceeds to step S410.
  • the plurality of nodes that have received the instruction operate as instruction execution nodes, and execute a process related to the query for a portion that each is in charge of according to the instruction from the distributed execution instruction node.
  • FIG. 9 is a flowchart showing the flow of distributed execution processing executed by the node 1 in this embodiment.
  • the processing shown in this flowchart is started when the node 1 receives a distributed execution instruction transmitted from the distributed execution instruction node (see step S409 in FIG. 8). That is, this flowchart is a flowchart when the node operates as an instruction execution node.
  • step S501 to step S502 is substantially the same as the processing from step S201 to step S202 described with reference to FIG. 4 in the first embodiment, description thereof is omitted.
  • the transaction including the query includes an update instruction related to the table
  • the transaction ID corresponding to the update instruction is specified, and the instruction execution node to which the part in charge related to the update instruction is assigned is specified. Notification is made (see step S408 and step S409).
  • the update instruction identification information acquisition part 39b acquires transaction ID corresponding to the said update instruction from a distributed execution instruction
  • step S503 and step S504 when the transaction ID is acquired, the update content corresponding to the transaction ID is specified.
  • Each of the instruction execution nodes determines whether or not a transaction ID has been acquired by the update instruction identification information acquisition unit 39b in step S501 (step S503). If the transaction ID is acquired, the update content specifying unit 39c specifies the content changed based on the update command based on the transaction ID acquired from the distributed execution instruction node (step S504). In the present embodiment, a database in which the substance of the database is changed in the replication is adopted, so that the change content corresponding to the update command can be specified based on the transaction ID. On the other hand, if the transaction ID has not been acquired, the process shown in step S504 is omitted. Thereafter, the process proceeds to step S505.
  • step S505 to step S506 is substantially the same as the processing from step S205 to step S206 described with reference to FIG. 4 in the first embodiment, description thereof will be omitted.
  • step S507 the created distributed execution query is executed.
  • the process execution unit 40 executes the distributed execution query according to the distributed execution plan tree created in step S506.
  • the process for the assigned portion is executed.
  • the process execution unit 40 refers to the version table acquired by the version acquisition unit 38 and performs the process.
  • this version is a version in which the substance of the database is changed by the update instruction when the transaction including the original query includes the update instruction.
  • the instruction execution node refers to the changed entity of the database based on the transaction ID notified from the distributed execution instruction node, so that the update contents related to the transaction being executed (uncommitted) Refer to For this reason, according to the system according to the present embodiment, it is possible to perform distributed execution in consideration of an update during a transaction including a query that is a target of distributed execution. Thereafter, the process proceeds to step S508.
  • step S508 the execution result of the distributed execution query is transmitted. Since the process of step S508 is substantially the same as the process of step S208 in the first embodiment, a description thereof will be omitted. Similarly to the first embodiment, the creation of a distributed execution query may be omitted in distributed execution by each instruction execution node.
  • step S410 to step S413 Since the processing from step S410 to step S413 is substantially the same as the processing from step S110 to step S113 described with reference to FIG. 3 in the first embodiment, the description thereof is omitted.
  • the update during the transaction including the query subject to the distributed execution is performed.
  • Distributed execution can be performed.
  • the update content is specified using the transaction ID, it is not necessary to transmit / receive an update history between the distributed execution instruction node and the instruction execution node.
  • ⁇ Third embodiment> a description will be given of an embodiment that can be adopted in a database system in which the update result during transaction execution is completely synchronized.
  • the processing related to version determination and standby described in the second embodiment is not necessary.
  • the version determination unit 24 and the version acquisition unit 38 may be omitted from the functional configuration of the node 1 described with reference to FIG. 7 (illustration is omitted). Further, in the processing flow described with reference to FIGS. 8 and 9, steps S405 and S502 related to version determination and standby are not necessary. Also, in step S409 and step S501, information related to the version is also displayed. There is no need to send and receive (not shown).
  • the process execution unit 40 may execute the distributed execution query according to the distributed execution plan tree without being aware of the table version.
  • the instruction execution node refers to the update content related to the transaction being executed based on the transaction ID notified from the distributed execution instruction node, and performs distributed execution considering the update during the transaction.
  • the node that receives the query determines the processing distribution method and the person in charge and distributes it to other nodes.
  • the node that receives the distributed execution instruction further distributes the part assigned to itself. Then, it may be possible to instruct distributed execution to other nodes. For example, when nodes on the system are connected with a parent-child relationship on the tree, a child node that has received an instruction execution instruction from the parent node issues a distributed execution instruction to a lower-level node (grandchild node). Can be done.
  • the child node is an instruction execution node when viewed from the parent node, but is a distributed execution instruction node for the grandchild node.
  • the nodes on the system may operate as proxy nodes that relay distributed execution instructions and execution results.
  • the proxy node receives the distributed execution instruction
  • the proxy node transfers the instruction to another node.
  • the node that has received the transfer operates as an instruction execution node, and transmits the execution result to the proxy node.
  • the proxy node that has received the execution result transfers it to the node that is the instruction transmission source of the distributed execution.
  • the database system is described in which the database contents are synchronized among a plurality of nodes by the replication technique.
  • the contents synchronized between the nodes by the replication technique are not the entire database, but the database. It may be a part of In other words, the present disclosure may be applied to a database system related to partial replication in which each node synchronizes only a part of a database that the node is responsible for using the replication technology.
  • each instruction execution node When performing distributed execution according to the present disclosure in such a database system, each instruction execution node notifies the distributed execution instruction node of a part of the database that is partially replicated to the instruction execution node. By receiving such notification, the distributed execution instruction node can grasp the part that is partially replicated in each instruction execution node.
  • the method for the distributed execution instruction node to grasp the part that is partially replicated to each instruction execution node includes a method in which the distributed execution instruction node refers to the partial replication setting information, Other methods such as a method of inquiring the instruction execution node may be adopted.
  • the allocating unit 23 replicates the corresponding part among the plurality of parts included in the table used for the process related to the query. This part is preferentially assigned to the instruction execution node that manages the database as a responsible part. In this way, the instruction unit 27 instructs the distributed execution so that the part that is partially replicated in each instruction execution node becomes a part in charge of distributed execution by the instruction execution node.
  • the technology according to the present disclosure allows each node to access the entire database.
  • a database system that is relatively slow that is, a database whose access speed is different depending on each part in the database.
  • a database is, for example, a database system in which the entire database is held in a relatively low-speed storage, and each node holds only a part of the database in a relatively high-speed storage.
  • each instruction execution node When performing distributed execution according to the present disclosure in such a database system, each instruction execution node notifies the distributed execution instruction node of a part of the database that can be accessed at high speed. By receiving such a notification, the distributed execution instruction node can grasp a portion that each instruction execution node can access at high speed.
  • a method for the distributed execution instruction node to grasp a portion that each instruction execution node can access at high speed includes a method in which the distributed execution instruction node refers to setting information of each instruction execution node, Other methods such as a method of inquiring each instruction execution node may be adopted.
  • the allocating unit 23 can execute the instruction that can access the corresponding part at high speed among a plurality of parts included in the table used for the processing related to the query
  • the part is preferentially assigned to the execution node as a responsible part.
  • the instruction unit 27 instructs the distributed execution so that a portion that can be accessed at high speed by each instruction execution node becomes a portion in charge of distributed execution by the instruction execution node.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

情報処理装置が、管理下のデータベースに対するクエリ処理に用いるテーブルの部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当て、複数の他の情報処理装置に対して、複数の他の情報処理装置の夫々によって管理されている同期された他のデータベースを参照して、担当部分について処理を行うよう指示することとした。

Description

情報処理装置、方法およびプログラム
 本開示は、負荷分散のための技術に関する。
 従来、情報の検索範囲を分担する分散検索装置であって、情報の検索を求める検索依頼を受け付ける第1の受付手段と、前記第1の受付手段によって受け付けられた検索依頼によって検索が求められている情報を、自分が担当する検索範囲内で検索する情報検索手段と、前記第1の受付手段によって受け付けられた検索依頼が求めている検索を、ネットワーク上の他の分散検索装置に依頼する第1の検索依頼手段と、前記第1の検索依頼手段が検索を依頼する他の分散検索装置を特定する装置情報を記憶する装置情報記憶手段と、前記装置情報記憶手段に記憶されている装置情報を更新する更新手段とを備え、前記第1の検索依頼手段が、他の分散検索装置に検索を依頼するに当たり、前記装置情報記憶手段に記憶されている装置情報によって特定される他の分散検索装置に検索を依頼することを特徴とする分散検索装置が提案されている(特許文献1を参照)。
 また、探索対象を複数の装置で分担し、並行して処理する技術や(特許文献2を参照)、検索クエリを受け取った管理コンピューターが、各客室システムの旋律検索手段に適宜な検索範囲を指示して検索処理を分担させ、前記客室システムの前記旋律検索手段から報告された検索結果を統合して全検索範囲における検索結果を示す検索レポートを作成する技術(特許文献3を参照)、等が提案されている。
特開2001-005827号公報 特開2000-259672号公報 特開2003-108165号公報
 従来、システム全体の負荷を分散するために、クエリを受け付けて実行することが可能な情報処理装置を複数備えるシステムが用いられている。このようなシステムによれば、多数のクエリを並行して処理する場合にも、比較的処理負荷の小さいクエリであれば、複数の情報処理装置にクエリを振り分けることで、処理負荷を分散することが出来る。
 しかし、従来のシステムでは、夫々のクエリの処理については、比較的処理負荷の大きいクエリであっても、1の情報処理装置で実行せざるを得ず、処理負荷を分散することができない。
 本開示にかかる技術は、上記した問題に鑑み、1のクエリに係る処理負荷を複数の情報処理装置に分散させることを課題とする。
 本開示では、上記した課題を解決するために、以下の手段を採用した。即ち、本開示に係る情報処理装置は、データベースを管理するデータベース管理手段と、前記データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当てる割当手段と、前記複数の他の情報処理装置の夫々に対して、前記他の情報処理装置によって管理されている、前記データベースに同期された他のデータベースを参照して、前記担当部分について前記処理を行うよう指示することで、前記処理を複数の他の情報処理装置に分散実行させる、指示手段と、前記複数の他の情報処理装置から、前記担当部分についての前記処理の実行の結果を受信する結果受信手段と、前記結果受信手段によって受信された前記結果を合成することで、前記テーブルについての前記処理の実行結果を取得する合成手段と、を備える情報処理装置である。
 また、前記情報処理装置は、前記テーブルについて、前記処理に用いるバージョンを決定するバージョン決定手段を更に備え、前記指示手段は、前記処理に用いるバージョンとして、前記バージョン決定手段によって決定されたバージョンを用いて前記処理を行うように、前記複数の他の情報処理装置に指示してもよい。
 また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令に基づいて前記テーブルを更新した場合の更新履歴を作成する更新履歴作成手段と、前記更新履歴を、前記更新命令に係る担当部分が割り当てられた前記他の情報処理装置に通知する更新履歴通知手段と、を更に備えてもよい。
 また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、該更新命令に係る担当部分が割り当てられた他の情報処理装置に通知する更新命令識別情報通知手段を更に備えてもよい。
 また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、該更新命令に係る担当部分が割り当てられた他の情報処理装置に通知する更新命令識別情報通知手段と、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令による更新が行われたバージョンを、前記テーブルについての前記処理に用いるバージョンとして決定するバージョン決定手段と、を更に備え、前記指示手段は、前記処理に用いるバージョンとして、前記バージョン決定手段によって決定されたバージョンを用いて前記処理を行うように、前記複数の他の情報処理装置に指示してもよい。
 また、前記情報処理装置は、前記クエリを、ユーザー端末から受け付けるクエリ受付手段と、前記合成手段による合成によって得られた、前記テーブル全体についての前記処理の実行結果に基づいて、前記クエリへの応答を前記ユーザー端末に対して返す応答手段と、を更に備えてもよい。
 また、前記情報処理装置は、前記クエリに含まれる処理の夫々を表すノードが、処理されるべき順序に従ってツリー状に配置されたプランツリーを作成するプランツリー作成手段と、前記プランツリーの解析結果に従って、前記分散実行の対象となる処理を決定する対象決定手段と、
 を更に備えてもよい。
 また、前記情報処理装置は、前記プランツリーに含まれる各ノードによって表される処理について、前記分散実行の可能性を判定する可能性判定手段を更に備え、前記対象決定手段は、前記可能性判定手段によって分散実行可能と判定された処理を、前記分散実行の対象として決定してもよい。
 また、前記情報処理装置は、前記可能性判定手段によって分散実行不可能と判定された処理と前記プランツリーにおいて該処理より上位に接続された処理とを、前記分散実行の対象から除外する不可処理除外手段を更に備えてもよい。
 また、前記可能性判定手段は、前記プランツリーにおける下位ノードから上位ノードに向けて順に判定を行ってもよい。
 また、前記情報処理装置は、前記プランツリーに含まれる各ノードによって表される処理について、前記分散実行の適性を判定する適性判定手段と、前記適性判定手段によって前記分散実行に適さない処理であると判定された処理と前記プランツリーにおいて該処理より下位に接続された処理とを、前記分散実行の対象から除外する不適処理除外手段と、を更に備えてもよい。
 また、前記適性判定手段は、前記プランツリーにおける上位ノードから下位ノードに向けて順に判定を行ってもよい。
 また、本開示は、次のように把握することも可能である。即ち、本開示に係る情報処理装置は、他の情報処理装置によって管理される他のデータベースに同期されたデータベースを管理するデータベース管理手段と、前記他の情報処理装置が受け付けたクエリに係る処理に用いられるテーブルにおける、該情報処理装置の担当部分についての、該処理の実行指示を、前記他の情報処理装置から受け付ける指示受付手段と、前記データベース管理手段によって管理されるデータベースを参照して、前記担当部分について前記処理を実行する処理実行手段と、前記担当部分についての前記処理の実行の結果を、前記他の情報処理装置に対して送信する結果送信手段と、を備える情報処理装置である。
 また、前記情報処理装置は、前記テーブルについて、前記処理に用いるバージョンを前記他の情報処理装置から取得するバージョン取得手段を更に備え、前記処理実行手段は、前記バージョンのテーブルに基づいて、前記処理を実行してもよい。
 また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令に基づいて前記テーブルを更新した場合の更新履歴を、前記他の情報処理装置から取得する更新履歴取得手段を更に備え、前記処理実行手段は、前記バージョン取得手段によって取得されたバージョンのテーブルに前記更新履歴を反映した情報を参照して、前記処理を行ってもよい。
 また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、前記他の情報処理装置から取得する更新命令識別情報取得手段と、前記更新命令を識別可能な情報に基づいて、該更新命令に基づいて更新された内容を特定する更新内容特定手段と、を更に備え、前記処理実行手段は、前記更新内容特定手段によって特定された更新内容を更に参照して、前記処理を実行してもよい。
 また、前記情報処理装置は、前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令による更新が行われたバージョンを、前記他の情報処理装置から、前記テーブルについて前記処理に用いるバージョンとして取得するバージョン取得手段を更に備え、前記処理実行手段は、前記バージョンのテーブルに基づいて、前記処理を実行してもよい。
 なお、本開示は、コンピューターシステム、情報処理装置、コンピューターによって実行される方法、またはコンピューターに実行させるプログラムとして把握することが可能である。また、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
 本開示に係る技術によれば、1のクエリに係る処理負荷を複数の情報処理装置に分散させることが可能となる。
実施形態に係るシステムのハードウェア構成の概略を示す図である。 実施形態に係るノードの機能構成の概略を示す図である。 実施形態において、ノードによって実行される分散実行指示処理の流れを示すフローチャートである。 実施形態において、ノードによって実行される分散実行処理の流れを示すフローチャートである。 実施形態において、ノードによって実行されるクエリ解析処理の流れを示すフローチャートである。 実施形態において作成されるプランツリーを例示する図である。 実施形態に係るノードの機能構成の概略を示す図Bである。 実施形態において、ノードによって実行される分散実行指示処理の流れを示すフローチャートBである。 実施形態において、ノードによって実行される分散実行処理の流れを示すフローチャートBである。
 以下、本開示に係るシステム、情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施形態に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
 本開示に係るシステムでは、複数の情報処理装置(ノード)が互いに通信可能に接続されている。これら複数のノードは、何れも、クエリを受け付けて実行することが可能なノードである。また、これら複数のノードは、夫々、自身が管理するデータベースを有しており、これらのデータベースは、レプリケーション技術によって同期されている。データベース同期のためのレプリケーション技術としては、例えば、トランザクションログを順次反映していくようなログベースのレプリケーション技術が採用されてよい。
 ここで、例えば、大きなテーブルおよび複数の小さなテーブルを用いるJOIN構文の実行では、大きなテーブルに係る処理が比較的重い処理となる。このため、本開示では、大きなテーブルに含まれる複数の部分(これら複数の部分は、テーブルが等分されたものであってもよいし、異なるサイズに分割されたものであってもよい)の夫々について、処理を担当するノードを決定し、決定された複数のノードに処理を分散実行させる。
 より具体的には、クエリを受け付けたノードは、分散実行の指示を行う分散実行指示ノードとして動作することで、テーブルの分割方法および担当等を決定し、他のノードに、クエリの内容、および各ノードの担当等を通知し、担当部分についての処理実行を指示する。指示を受けたノードは、命令実行ノードとして、担当部分についての処理を実行し、実行結果を、指示を発したノードに対して送信する。分散実行指示ノードは、分散実行を行った各命令実行ノードから送信された実行結果を受信して集計する。
 <第一の実施形態>
 はじめに、第一の実施形態について説明する。第一の実施形態では、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を行う場合について説明する。
 <<システムの構成>>
 図1は、本実施形態に係るシステムのハードウェア構成の概略を示す図である。本実施形態に係るシステムは、ユーザー端末9からの検索要求(クエリ)に応答するための複数のノード(情報処理装置)1を備える。複数のノード1は、ネットワークを介して互いに通信可能に接続される。
 各ノード1は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12およびROM(Read Only Memory)13等からなる制御部10と、補助記憶装置14と、通信インターフェース15と、を備えるコンピューターである。但し、ノード1の具体的なハードウェア構成に関しては、実施の形態に応じて適宜省略や置換、追加が可能である。また、ノード1は、単一の装置に限定されない。ノード1は、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。
 本実施形態では、システムに属するノードが、分散実行指示ノード(分散実行を指示するノード)および命令実行ノード(分散実行の指示を受けて処理を分散実行するノード)の何れにも成り得る構成について説明する。このため、何れのノードも、分散実行の指示のための分散実行指示機能と、分散処理の対象範囲を決定するためのクエリ解析機能と、分散実行の指示を受けて処理を実行するための命令実行機能と、を備える。
 但し、分散実行指示ノードと命令実行ノードは予め決定されていてもよい。この場合、分散実行指示ノードにしかならないノードは、分散実行のための命令実行機能を有さなくてもよいし、命令実行ノードにしかならないノードは、指示のための分散実行指示機能を有さなくてもよい。
 なお、本実施形態では、ノードを区別することなくノード一般について述べる場合には「ノード1」と記載し、ノードを区別して述べる場合には「分散実行指示ノード1」、「命令実行ノード1」のように記載する。また、本開示に係るシステムは、階層構造を有するデータベースシステムや、マルチマスターのデータベースシステムに適用可能であるが、この際、データベースシステムにおけるマスターノードおよびスレーブノードの何れであっても、分散実行指示ノード1または命令実行ノード1とすることが出来る。
 図2は、本実施形態に係るノード1の機能構成の概略を示す図である。本実施形態に係るノード1は、CPU11が、RAM12に展開された各種プログラムを解釈および実行して、ノード1に備えられた各種ハードウェアを制御することで、データベース管理部21、クエリ受付部22、割当部23、バージョン決定部24、更新履歴作成部25、更新履歴通知部26、指示部27、結果受信部28、合成部29、応答部30、プランツリー作成部31、適性判定部32、不適処理除外部33、可能性判定部34、不可処理除外部35、対象決定部36、指示受付部37、バージョン取得部38、更新履歴取得部39、処理実行部40および結果送信部41を備えるコンピューターとして機能する。
 本実施形態では、ノード1の機能が汎用のCPU11によって実行される例について説明しているが、これらの機能は、その一部または全部が、1または複数の専用のプロセッサによって実現されてもよい。
 データベース管理部21は、データベースを管理する。当該データベースは、データベース管理部21によって、他のノードによって管理される他のデータベースに同期されている。即ち、データベース管理部21は、レプリケーション技術によって、ネットワークを介して接続された、他のノードが管理するデータベースと、当該データベース管理部21が管理するデータベースとを同期する。
 処理実行部40は、データベース管理部21によって管理されるデータベースを参照して、担当部分について処理を実行する。なお、命令実行ノードが分散実行指示ノードによる命令を受けて処理を実行する場合には、当該命令実行ノードの処理実行部40は、後述するバージョン取得部38によって取得されたバージョンのテーブルに更新履歴を反映した情報を参照して、処理を行う。
 分散実行指示機能は、以下に説明するクエリ受付部22、割当部23、バージョン決定部24、更新履歴作成部25、更新履歴通知部26、指示部27、結果受信部28、合成部29および応答部30によって実現される。
 クエリ受付部22は、ユーザー端末から送信されたクエリを受け付ける。
 割当部23は、データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の命令実行ノードの夫々による担当部分として割り当てる。具体的には、割当部23は、システムに属するノードから、分散実行の指示を行う複数のノードを選定する。そして、割当部23は、選定されたノードが分割読み出しの対象となるテーブルの何れの部分を担当するかを決定する。但し、先にテーブルを分割する数を決定し、テーブルが分割される数だけのノードを選定することとしてもよい。
 バージョン決定部24は、命令実行ノード間で処理の対象となるデータに相違が生じないようにするため、テーブルについて、処理に用いるバージョンを決定する。ここで、バージョンとは、ある時点におけるデータベースの内容および状態を特定するための情報である。
 更新履歴作成部25は、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合に、当該更新命令に基づいてテーブルを更新した場合の更新履歴を作成する。更新履歴作成部25は、テーブル中の更新されたレコードを識別可能な情報と、具体的な更新の内容と、が関連づけられた情報を、更新履歴として作成する。
 更新履歴通知部26は、更新履歴を、更新命令に係る担当部分が割り当てられた命令実行ノードに通知する。
 本実施形態では、分散実行中のノードが更新された場合、更新履歴作成部25が更新履歴を作成し、更新履歴通知部26が更新履歴を命令実行ノードに送信することで、分散処理を行う命令実行ノードに、当該他のノードが管理するテーブルと更新履歴とを組み合わせて処理を行わせることとしている。このため、本開示に係る仕組みは、トランザクション実行中に発行された更新命令に係る更新内容に従って、当該トランザクションがコミットされる前にデータベースの実体が変更されるようなデータベースシステムに対しても、当該トランザクションがコミットされた後にデータベースの実体が変更されるようなデータベースシステムに対しても、適用することが出来る。
 例えば、分散実行指示ノードにおいて実行中のトランザクションにテーブルBの更新命令(INSERTやDELETE等)が含まれており、更にテーブルAとテーブルBとのJOIN構文が含まれている場合を想定する。
 このとき、トランザクションがコミットされた後にデータベースの実体が変更されるようなデータベースシステムでは、例えば「テーブルBを分散実行指示ノードがどのように更新したかという情報」は、分散実行指示ノードのメモリ上のみに存在しており、分散実行を行う命令実行ノードは、この情報を有していない。そこで、本実施形態では、分散実行の指示を送信する際に、テーブルのバージョン情報と併せて当該更新命令に係る更新履歴を送信することとしている。即ち、本実施形態において、分散実行指示ノードは、分散処理の対象となっているクエリに関連する更新履歴を、分散処理を行わせる命令実行ノードに対して優先的に送信する。命令実行ノードは、バージョン情報に示されたテーブル本体と更新履歴とを組み合わせることで得られたデータに基づいて、担当分のクエリを実行する。命令実行ノード側の処理については、更新履歴取得部39および処理実行部40による処理として改めて後述する。
 一方、トランザクションがコミットされる前にデータベースの実体が変更されるようなデータベースシステムでは、命令実行ノードが処理を実行する時点において、トランザクションの更新情報は命令実行ノードに既に反映されているため、上記のような処理は必須ではない。但し、このようなデータベースシステムにおいても、本実施形態に係る処理が採用されてよい。本実施形態に係る処理を採用した場合には、仮に命令実行ノードによる処理実行時点までにデータベースの実体変更が間に合わないような状況が発生しても、問題なくクエリを処理することが出来る。
 指示部27は、複数の命令実行ノードの夫々に対して、担当部分について処理を行うよう指示することで、処理を複数の命令実行ノードに分散実行させる。この際、指示部27は、各命令実行ノードによって管理されているデータベースを参照して、処理を行うよう指示する。ここで、上述の通り、各命令実行ノードによって管理されているデータベースは、分散実行指示ノードのデータベースに同期されている。また、指示部27は、処理に用いるバージョンとして、バージョン決定部24によって決定されたバージョンを用いて処理を行うように、複数の命令実行ノードに指示する。
 結果受信部28は、複数の命令実行ノードから、担当部分についての処理の実行の結果を受信する。
 合成部29は、結果受信部28によって受信された結果を合成することで、テーブルについての処理の実行結果を取得する。
 応答部30は、合成部29による合成によって得られた、テーブル全体についての処理の実行結果に基づいて、クエリへの応答をユーザー端末に対して返す。
 クエリ解析機能は、以下に説明するプランツリー作成部31、適性判定部32、不適処理除外部33、可能性判定部34、不可処理除外部35および対象決定部36によって実現される。
 プランツリー作成部31は、プランツリーを作成する。ここで、プランツリーとは、クエリに含まれる処理の夫々を表すプランノード(情報処理装置を示すノードとの混同を避けるため、「プランノード」と記載する)が、処理されるべき順序に従ってツリー状に配置されたものである。
 適性判定部32は、プランツリーに含まれる各プランノードによって表される処理について、処理によって発生する負荷に基づいて、分散実行の適性を判定する。即ち、適性判定部32は、プランノードに示された処理を分散実行した場合に発生する負荷を予測し、この負荷が所定以上であると予測されるような場合に、当該処理に係るプランノードを分散実行に不適なプランノードであると判定する。この際、適性判定部32は、プランツリーにおける上位プランノードから下位プランノードに向けて順に判定を行う。
 不適処理除外部33は、適性判定部32によって分散実行に適さない処理であると判定された処理と、プランツリーにおいて当該処理より下位に接続された処理とを、分散実行の対象から除外する。
 可能性判定部34は、プランツリーに含まれる各プランノードによって表される処理について、処理の内容に基づいて、分散実行の可能性を判定する。即ち、可能性判定部34は、プランノードに示された処理の内容が、当該システムにおいて分散実行可能な内容の処理であるか否かを判定することで、分散実行の可能性を判定する。ここで、「分散実行の可能性」は、当該システムの持つ機能や設定内容に基づいて、当該システムによって分散実行が可能か否かを示す可能性である。このため、プランノードが示す処理の内容が同一(例えば、AVERAGE構文)であっても、システムによって分散実行可能な処理と分散実行不可能な処理とが異なることがある。この際、可能性判定部34は、プランツリーにおける下位プランノードから上位プランノードに向けて順に判定を行う。
 不可処理除外部35は、可能性判定部34によって分散実行不可能と判定された処理と、プランツリーにおいて当該処理より上位に接続された処理とを、分散実行の対象から除外する。
 対象決定部36は、プランツリーの解析結果に従って、分散実行の対象となる処理を決定する。本実施形態では、対象決定部36は、可能性判定部34によって分散実行可能と判定された処理を、分散実行の対象として決定する。
 命令実行機能は、以下に説明する指示受付部37、バージョン取得部38、更新履歴取得部39および結果送信部41によって実現される。
 指示受付部37は、分散実行指示ノードが受け付けたクエリに係る処理に用いられるテーブルにおける、当該情報処理装置の担当部分についての、当該処理の実行指示を、分散実行指示ノードから受け付ける。
 バージョン取得部38は、分散処理の対象となっているテーブルについて、処理に用いるバージョンを分散実行指示ノードから取得する。
 更新履歴取得部39は、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合に、当該更新命令に基づいてテーブルを更新した場合の更新履歴を、分散実行指示ノードから取得する。
 結果送信部41は、担当部分についての処理の実行の結果を、分散実行指示ノードに対して送信する。
 なお、上述の通り、第一の実施形態では、分散実行の対象となっているクエリが含まれるトランザクション実行中の更新を考慮する実施形態を説明している。しかし、分散実行の対象となっているクエリを実行するにあたって、当該クエリに係るトランザクション実行中のデータベースの更新を考慮しないような実施形態、換言すれば、分散実行において、当該クエリを含むトランザクションによる更新内容を無視するような実施形態では、更新履歴作成部25、更新履歴通知部26および更新履歴取得部39は省略されてよい。
 <<処理の流れ>>
 次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、本開示を実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
 図3は、本実施形態において、ノード1によって実行される分散実行指示処理の流れを示すフローチャートである。本フローチャートに示された処理は、ノード1において、クエリが受け付けられたことを契機として開始される。
 ステップS101からステップS103では、クエリが受信され、当該クエリを分散実行の対象とするか否かが決定される。クエリ受付部22は、ユーザー端末9から送信されたクエリを受け付ける(ステップS101)。受け付けられたクエリは、受信ノードが備えるクエリ解析機能(プランツリー作成部31、適性判定部32、不適処理除外部33、可能性判定部34、不可処理除外部35および対象決定部36)によって解析される(ステップS102)。
 なお、クエリ解析機能によるクエリ解析処理(ステップS102)では、クエリに係る処理の内容が解析され、分散実行される範囲が決定される。具体的には、クエリ解析機能は、プランツリーを作成してこれを解析し、プランツリーの解析結果に従って、分散実行の対象となる処理を決定する。クエリ解析処理の具体例については、図5に示すフローチャートを用いて後述する。
 クエリを受信したノードは、クエリ解析処理の結果に従って、受け付けたクエリを、自身で処理するか、または他のノードに分散実行させるかを決定する(ステップS103)。クエリ解析の結果、クエリに係る処理の一部でも分散実行の対象となった場合、処理はステップS105へ進み、以降、クエリを受信したノードは、分散実行指示ノードとして動作する。一方、クエリ解析の結果、クエリに係る処理に分散実行の対象となる部分が無かった場合、処理はステップS104へ進む。
 ステップS104では、ユーザー端末9からクエリを受け付けたノード自身によって、クエリに係る処理が実行される。処理実行部40は、ステップS102で作成されたプランツリーに従って、クエリを受け付けたノードのデータベース管理部21によって管理されるデータベースを参照して、データベースに対するクエリに係る処理を実行する。即ち、この場合には分散実行は行われない。その後、処理はステップS113へ進む。
 ステップS105では、処理に用いられるバージョンが決定される。バージョン決定部24は、テーブルについて、処理に用いるバージョンを決定する。その後、処理はステップS106へ進む。
 ステップS106では、処理に用いられるテーブルの分割方法、および分割された各部分を担当するノードが決定される。割当部23は、クエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の命令実行ノードの夫々による担当部分として割り当てる。例えば、割当部23は、システムに属するノードから、命令実行ノードとして、複数(例えば、5つ)のノードを選定する。選定に際しては、各ノードの現在の稼働状態等が参照され、負荷がより少ないノードが選定されてよい。ノードが選定されると、割当部23は、選定された複数のノードの何れのノードがテーブルの何れの部分を担当するかを決定する。ここで、テーブルは、ノード数で等分(例えば、5等分)されてもよいし、ノードの処理能力に応じて分割されてもよい。その後、処理はステップS107へ進む。
 なお、分散処理の対象となる処理が複数テーブルのJOINである場合、ステップS106では、複数のテーブルのうち何れのテーブルを分割の対象とするか決定し、決定されたテーブルが分割される。例えば、比較的大きなテーブルが1つで他のテーブルが比較的小さい場合には、通常、最も大きなテーブルを分割対象とする。
 但し、分割の対象とするテーブルは1つに限定されなくてもよい。例えば、大きなテーブルが複数有り、且つ十分な数の命令実行ノードが確保できるような場合には、複数テーブルを分割対象とし、分割された異なるテーブルの部分の組み合わせを各命令実行ノードに割り当てることで、JOIN命令に係る複数のテーブルを分割読み出しの対象とすることが出来る。具体的には、例えばテーブルXをx個に分割し、テーブルYをy個に分割した場合、分割されたテーブルXの部分とテーブルYの部分との組み合わせがx*y個出来る。このため、x*y個の組み合わせの夫々について担当する命令実行ノードを決定することで、JOIN命令の分散処理において2つのテーブルを分割読み出しの対象とすることが出来る。同様の方法で、3以上のテーブルについても分割読み出しの対象とすることが可能である。
 ステップS107およびステップS108では、受信クエリに係るトランザクションに当該ノードが管理するデータベースの更新命令が含まれている場合に、この更新が適用された場合の更新履歴を作成する。更新履歴作成部25は、クエリを含むトランザクションに、テーブルに係る更新命令が含まれるか否かを判定し(ステップS107)、更新命令が含まれる場合に、当該更新命令に基づいてテーブルを更新した場合の更新履歴を作成する(ステップS108)。具体的な更新履歴の作成方法は、更新履歴作成部25の説明において上述した通りである。その後、処理はステップS109へ進む。
 ステップS109では、命令実行ノードに対する指示が送信される。指示部27は、ステップS106で選定された複数の命令実行ノードの夫々に対して、各々の命令実行ノードによって管理されているデータベース(これらのデータベースは、互いに同期されている)を参照して、担当部分について処理を行うよう指示することで、処理を複数の命令実行ノードに分散実行させる。この際、指示部27は、各命令実行ノードに対して、分散処理の対象となっているクエリの内容を通知し、更に、処理に用いるバージョンとして、バージョン決定部24によって決定されたバージョンを用いて処理を行うように、命令実行ノードに指示する。ここで、実施形態に係るシステムにおいてログベースのレプリケーション技術が採用されている場合には、指定されたバージョンに対応するトランザクションログを特定可能なように、指示部27は、決定されたバージョンに対応するトランザクションシーケンス番号(LSN)を通知する。
 また、上記ステップS108において更新履歴が作成されている場合、更新履歴通知部26は、更新履歴を、更新命令に係る担当部分が割り当てられた命令実行ノードに通知する。その後、処理はステップS110へ進む。
 ステップS109における指示が行われると、指示を受けた複数のノードは、命令実行ノードとして動作し、分散実行指示ノードからの指示に従って、各々が担当する部分について、クエリに係る処理を実行する。
 図4は、本実施形態において、ノード1によって実行される分散実行処理の流れを示すフローチャートである。本フローチャートに示された処理は、ノード1において、分散実行指示ノードより送信された(図3のステップS109を参照)分散実行の指示が受け付けられたことを契機として開始される。即ち、本フローチャートは、ノードが命令実行ノードとして動作する場合のフローチャートである。
 ステップS201では、分散実行指示ノードより送信された分散実行の指示が受け付けられる。具体的には、指示受付部37は、当該ノードの担当部分(分散実行指示ノードが受け付けたクエリに係る処理に用いられるテーブルにおける担当部分)についての、当該処理の実行指示を、分散実行指示ノードから受け付ける。また、バージョン取得部38は、テーブルについて、処理に用いるバージョンを分散実行指示ノードから取得する。
 上述の通り、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合には、この更新が適用された場合の更新履歴が作成され、作成された更新履歴が、更新命令に係る担当部分が割り当てられた命令実行ノードに通知される(ステップS108およびステップS109を参照)。このため、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合、更新履歴取得部39は、当該更新命令に基づいてテーブルを更新した場合の更新履歴を、分散実行指示ノードから取得する。その後、処理はステップS202へ進む。
 ステップS202では、指定されたバージョンのテーブルが揃うまでの待機処理が行われる。具体的には、命令実行ノードは、ステップS201でバージョン取得部38によって取得されたバージョンのテーブルが当該命令実行ノードに存在することが確認されるまで、待機する。例えば、実施形態に係るシステムにおいてログベースのレプリケーション技術が採用されている場合には、指定されたバージョンに対応するトランザクションログが反映されるまで待機すればよい。ここで、トランザクションログの反映有無は、例えば、分散実行指示ノードより通知されたトランザクションシーケンス番号(LSN)を参照することで知ることが可能である。その後、処理はステップS203へ進む。
 ステップS203およびステップS204では、更新履歴が取得されている場合に、更新履歴を反映した情報が作成される。命令実行ノードの夫々は、ステップS201において更新履歴取得部39によって更新履歴が取得されたか否かを判定し(ステップS203)、更新履歴が取得されている場合、分散実行指示ノードから取得された更新履歴を、バージョン取得部38によって取得されたバージョンのテーブルに反映した情報を作成する(ステップS204)。より具体的には、命令実行ノードは、データベース内のレコードを1行ずつ読み出し、読み出した行のうち更新履歴が存在しない行については、データベース内のレコードを検索対象とし、読み出した行のうち更新履歴が存在する行については、データベース内のレコードに代えて、更新履歴の行を検索対象とする。但し、ここで得られたデータは検索に用いられるのみであり、当該レコードについて実際に更新が行われるのは、当該データベースが備えるレプリケーション機能によって決定されるタイミング(例えば、同期されたコミットのタイミング)である。即ち、命令実行ノードは、分散処理においては自身のデータベースを更新しなくてもよい。一方、更新履歴が取得されてない場合、ステップS204に示された処理は省略される。その後、処理はステップS205へ進む。
 ステップS205では、担当する範囲に応じて実行すべき分散実行用クエリが作成される。はじめに、分散実行の指示を受けた命令実行ノードは、受信したクエリに基づいて、自身が担当する部分についての処理が実行出来るようにカスタマイズされた、分散実行用クエリを作成する。具体的には、オリジナルのクエリがテーブル全体を検索の対象としているが、当該命令実行ノードが担当する範囲が当該テーブルの一部であるような場合、オリジナルのクエリに基づいて、当該命令実行ノードが担当するテーブルのブロックを指定した分散実行用クエリを作成する。なお、本実施形態では、各命令実行ノードが、自身が実行する分散実行用クエリを作成することとしているが、各命令実行ノードが実行する分散実行用クエリを、分散実行指示ノードが予め作成して、指示に含めて命令実行ノードに通知することとしてもよい。その後、処理はステップS206へ進む。
 ステップS206では、分散実行用のプランツリーが作成される。プランツリー作成部31は、分散実行用クエリに含まれる命令の夫々を表すプランノードが、実行されるべき順序に従ってツリー状に配置された、分散実行用のプランツリーを作成する。
 ステップS207では、作成された分散実行用クエリが実行される。処理実行部40は、ステップS206で作成された分散実行用のプランツリーに従って、分散実行用クエリを実行する。これによって、データベース管理部21によって管理されるデータベースを参照して、担当部分についての処理が実行される。この際、処理実行部40は、ステップS204で作成された、バージョン取得部38によって取得されたバージョンのテーブルに更新履歴を反映した情報を参照して、処理を行う。その後、処理はステップS208へ進む。
 ステップS208では、分散実行用クエリの実行結果が送信される。結果送信部41は、担当部分についての処理の実行の結果を、ステップS201で受信した指示の送信元である分散実行指示ノードに対して送信する。その後、図3のフローチャートに示された処理は終了する。
 なお、本実施形態では、本開示の理解を容易にするために、命令実行ノードが、自身が担当する部分についての処理を実行するための分散実行用クエリを作成し、これを実行する実施例を説明しているが、各命令実行ノードによる分散実行は、本実施形態に説明するような分散実行用クエリに拠らなくてもよい。例えば、命令実行ノードは、分散実行指示ノードがステップS102で作成したプランツリーの全部または一部を受け取ることで、分散実行用クエリを作成すること無く、受け取ったプランツリーに基づいて当該命令実行ノードが担当するテーブル内のブロック等が指定された分散実行用のプランツリーを作成することが出来る。後述するプランツリー上のノードのうち、自身が担当するノードの構文を、直接、テーブルのうち自身が担当する部分に対して実行することが出来る。
 次に、図3に戻り、分散実行指示ノードによる処理の続きを説明する。
 ステップS110およびステップS111では、分散実行の指示を受けた命令実行ノードから送信された処理の実行結果が受信され、集計される。結果受信部28は、複数の命令実行ノードから、担当部分についての処理の実行の結果を受信する(ステップS110)。そして、合成部29は、結果受信部28によって複数の命令実行ノードから受信された結果、およびステップS110における自身による実行結果を合成することで、テーブルについての処理の実行結果を取得する(ステップS111)。その後、処理はステップS112へ進む。
 ステップS112では、ユーザー端末9からクエリを受け付けたノード自身が担当する処理が実行される。処理実行部40は、ステップS102で作成されたプランツリーに従って、クエリを受け付けたノードのデータベース管理部21によって管理されるデータベースを参照して、データベースに対するクエリに係る処理のうち、分散実行の範囲外となった処理を実行する。この際、処理実行部40は、必要に応じて、ステップS111において得られた分散実行の結果を利用する。その後、処理はステップS113へ進む。
 ステップS113では、ステップS110からステップS112までの処理で得られたクエリの実行結果、またはステップS104において自ノードで実行されることで得られたクエリの実行結果が、ユーザー端末に対して送信される。応答部30は、クエリの実行結果がステップS110からステップS112までの処理によって得られている場合には、合成部29による合成によって得られた、テーブル全体についての処理の実行結果に基づいて、クエリへの応答をユーザー端末に対して返す。一方、応答部30は、クエリの実行結果がステップS104において得られている場合には、この実行結果をユーザー端末に対して返す。その後、図4のフローチャートに示された処理は終了する。
 本実施形態に係るシステムによれば、図3および図4を用いて上記説明した分散実行指示処理および分散実行処理が、システムに所属する複数のノードのうち、クエリを受信したノード(分散実行指示ノード)および分散実行指示を受けたノード(命令実行ノード)によって処理されることによって、クエリの分散実行が実現され、1のクエリに係る処理負荷を複数の情報処理装置に分散させることが出来る。
 また、本開示の技術によれば、複数のノードの各々が互いに同期されたデータベースを管理しているため、分散実行するか否か、および分散する場合の担当を自由に決定することが可能である。更に、本開示の技術によれば、例えば、先述したJOIN構文のような構文を実行する際の処理も分散することが可能である。加えて、分割の態様(分割される数や分割される部分のサイズ等)も、各ノードの負荷に応じて適宜変更することが可能である。
 次に、分散実行の範囲を決定するためのクエリ解析処理の流れについて説明する。但し、本実施形態において説明するクエリ解析処理は、分散実行される範囲を決定するための処理の一例である。分散実行される範囲を決定するための処理には、他のアルゴリズムが採用されてもよい。
 図5は、本実施形態において、ノード1によって実行されるクエリ解析処理の流れを示すフローチャートである。本フローチャートに示された処理は、図3に示した分散実行指示処理における、ステップS102の処理に相当する。
 ステップS301では、プランツリーが作成される。プランツリー作成部31は、クエリに含まれる命令の夫々を表すプランノードが、実行されるべき順序に従ってツリー状に配置されたプランツリーを作成する。
 図6は、本実施形態において作成されるプランツリーを例示する図である。本開示に係る分散実行を行う場合、プランツリーを作成してこれを解析し、クエリに含まれる何れの命令を分散実行の対象とするか決定する。解析では、ツリーの根から末端、そして末端から根に向けて分散実行の適否や可否を判定しながら、分散実行の対象とする範囲を決定していく。
 生成されたプランツリーの各プランノードは、クエリに含まれる各命令(構文)を示す。プランツリーには、ツリーの葉(即ち、最下位のプランノード)に示された命令から実行が開始された後、命令の実行が終わると実行結果が上位のプランノード(親プランノード)に渡され、実行結果を受けたプランノードに示された命令が実行されることが繰り返されることでクエリが処理される流れが示されている。プランツリーが作成されると、処理はステップS302へ進む。
 ステップS302からステップS305では、プランツリー上のプランノードについて、分散実行に適しているか否かが判定される。適性判定部32は、プランツリーに含まれる各プランノードによって表される命令について、分散実行の適性を判定する(ステップS303)。そして、不適処理除外部33は、適性判定部32によって分散実行に適さないと判定された命令とプランツリーにおいて当該命令より下位に接続された命令とを、分散実行の対象から除外する(ステップS304)。
 図6に示されたプランツリーでは、クエリ中にREPEAT構文等が存在する。ここで、REPEAT構文を実行するための分散実行の指示と実行結果の取得とがネットワークを介して複数回に亘って行われた場合、命令実行ノードから分散実行指示ノードへの通信におけるネットワークが飽和してしまう可能性がある。また、REPEAT構文が先の命令の結果を再帰的に利用するものであった場合、実行結果を得た分散実行指示ノードが命令実行ノードに対して繰り返し処理の都度実行結果に基づく値を指示する必要がある等、処理が煩雑になる可能性がある。このため、適性判定部32は、REPEAT構文に係るプランノードの命令を、分散実行に適さない命令として判定し、不適処理除外部33は、当該プランノードおよびその下位のプランノードに係る命令を、分散実行の対象から除外する。
 上記処理では、分散実行に適さないと判定された命令およびその下位の命令が分散実行の対象から除外されるため、プランツリーにおける上位プランノードから順に判定していくことが効率的である。このため、適性判定部32による判定は、プランツリーにおける上位プランノードから下位プランノードに向けて順に行われる(ステップS302)。全てのプランノードについて判定または除外が完了すると(ステップS305)、処理はステップS306へ進む。なお、分散実行に適していない命令であっても、分散実行が不可能ということではない。このため、ステップS302からステップS305に示した処理は、省略されてもよい。
 ステップS306からステップS309では、プランツリー上のプランノードについて、分散実行が可能であるか否かが判定される。可能性判定部34は、プランツリーに含まれる各プランノードのうち、ステップS304で除外されなかったプランノードによって表される命令について、分散実行の可能性を判定する(ステップS307)。本実施形態において、可能性判定部34は、以下に説明する方法で、プランノードに係る命令の分散実行可能性を判定する。具体的には、可能性判定部34は、
(1)プランノードに示された命令が予め用意されたリストにあり、且つ
(2)当該命令の実行時点において、命令実行ノードが当該命令の実行のために必要なテーブル等の情報を有することとなる
場合、当該プランノードに示された命令を、分散実行可能な命令であると判定する。
 (1)の条件は、プランノードに係る命令自体が、分散実行が出来る種類の命令であることを確認するためのものであり、分散実行指示ノードは、予め分散実行が可能な種類の命令(構文)を列挙したリストを有している。本実施形態では、例えば、READ命令やJOIN命令が、分散実行が可能な種類の命令としてリストに保持されている。但し、分散実行が可能/不可能な命令の種類は、本実施形態における例示に限定されず、実施形態に係るシステムが備える分散実行機能や設定内容に基づいて決定される。
 (2)の条件は、上記(1)の条件を満たすプランノードであっても、当該プランノードを実行する命令実行ノードが、命令の実行のために必要なテーブル等の情報を有していない場合には分散実行が不可能となるため、これを判定するための条件である。例えば、判定対象のプランノードが示す命令が、「当該プランノードの下位プランノードを処理する際に、当該命令実行ノードが処理結果として得た部分」、および/または「当該プランノードを実行する命令実行ノードが管理しているテーブル」のみを参照して実行可能な命令であれば、上記(2)の条件を満たすため、分散実行を指示されたノードが、指示された分散実行に必要な情報を全て把握可能であるといえる。「当該プランノードの下位プランノードを処理する際に、当該命令実行ノードが処理結果として得た部分」としては、例えば、当該プランノードがJOIN命令のプランノードである場合に、当該命令実行ノードが、下位のREAD命令プランノードの処理で読み出したテーブルの部分や、当該命令実行ノードが、下位のJOIN命令プランノードの処理で得た処理結果、等が挙げられる。一方、他のノードによる命令の実行結果から得られる情報のような、命令実行ノードが有していない情報が必要となるプランノードの命令は、分散実行出来ない。そして、分散実行出来ないプランノードの実行結果も、当該命令実行ノードは有することが出来ないため、分散実行出来ないプランノードより上位のプランノードも、同様に分散実行出来ない。
 図6に示されたREAD命令について検討する。判定対象のプランノードが示す命令がREAD命令である場合、上述の通りREAD命令は前記リストに保持されており、またデータ中のテーブルは全てのノードにレプリケーションされているため、当該READ命令のプランノードは上記(1)および(2)の条件を満たし、分散実行可能であると判定される。即ち、最も下位のREAD命令プランノードは、何れも分散実行可能である。図6に示した例では、テーブルA、BおよびCのREAD処理を示すプランノードが、分散実行可能と判定される。なお、テーブルDおよびEのREAD処理を示すプランノードは、ステップS302からステップS305の処理で分散実行に適さないと判定されたプランノードに従属しており、可能性判定部34による分散実行可能性の判定対象から既に除かれている。
 次に、図6に示されたJOIN命令について検討する。上述の通り、JOIN命令は分散実行が可能な種類の命令としてリストに保持されているため、(1)の条件は満たされる。ここで、上位のプランノードでは、各命令実行ノードが、自身が分割読み出しを担当して読み出した部分の情報しか有していない可能性がある。これは、分散実行可能な、より下位のREAD命令プランノードが、テーブルを分割して読み出す可能性があるためである。但し、より下位のREAD命令プランノードにおいてテーブルの分割読み出しが行われた場合でも、各命令実行ノードに処理させるJOIN処理の対象部分を、分割読み出しにおいて当該命令実行ノードが読み出した部分とすれば、上記(2)の条件を満たすことが出来る。
 なお、図6に示した例では、テーブルA、BおよびCのREAD処理を示すプランノードが、分散実行可能と判定されるが、JOIN命令プランノードの下位プランノードにおいて複数テーブルを分割読み出しの対象とすることも可能であるのは、ステップS106の説明において上述した通りである。但し、本実施形態では、複数のテーブルについてREAD処理が分散実行可能であると判定された場合、最も大きいテーブル(READ処理の負荷が最も高いテーブル)のみを分割読み出しの対象とする。
 一方、プランツリーの途中に、例えばJOIN構文の実行によって結合されたテーブルの平均値を計算するプランノード(AVERAGE構文)がある場合、分散実行指示ノード以外のノード(命令実行ノード)は、JOIN構文の実行によって得られた結果の全体を有していないため、(2)の条件を満たさず、本実施形態に係るシステムでは、当該プランノードを分散実行可能ではないと判定される(ステップS307を参照)。このため、本実施形態において、このプランノードは分散実行指示ノードが自身によって実行される。なお、本実施形態では、上記リストにAVERAGE命令は保持されておらず、当該プランノードは、(1)の条件も満たさない。但し、分散実行の可能/不可能は、上述の通り、実施形態に係るシステムが備える分散実行機能や設定内容に基づいて判定される。例えば、本実施形態では、AVERAGE構文を分散実行するための機能を備えない実施形態について説明したが、AVERAGE構文を分散実行するための機能を備えるシステムにおいては、AVERAGE命令が前記リストに保持されてよい。AVERAGE命令が前記リストに保持される実施形態では、下位プランノードが単純なREAD命令である等の理由で(2)の条件を満たせば、AVERAGE命令のプランノードは分散実行可能である。
 図6に示されたプランツリーでは、最下位のプランノードから順に見ていくと、「READ A」のプランノード、「READ B」のプランノード、「JOIN AB」のプランノード、「READ C」のプランノード、および「JOIN ABC」のプランノードが分散実行可能である。
 プランノードに示された命令が分散実行可能な命令であると判定された場合、処理はステップS309へ進む。一方、プランノードに示された命令が分散実行可能な命令でないと判定された場合、処理はステップS308へ進む。不可処理除外部35は、可能性判定部34によって分散実行不可能と判定された命令とプランツリーにおいて当該命令より上位に接続された命令とを、分散実行の対象から除外する(ステップS308)。
 上記処理では、分散実行が不可能であると判定された命令およびその上位の命令が分散実行の対象から除外されるため、プランツリーにおける下位プランノードから順に判定していくことが効率的である。このため、可能性判定部34による判定は、プランツリーにおける下位プランノードから上位プランノードに向けて順に行われる(ステップS306)。全てのプランノードについて判定または除外が完了すると(ステップS309)、処理はステップS310へ進む。
 ステップS310では、分散実行の対象となる命令が決定される。対象決定部36は、プランツリーの解析結果に従って、分散実行の対象となる命令を決定する。本実施形態では、対象決定部36は、可能性判定部34によって分散実行可能と判定された命令を、分散実行の対象として決定する。図6に示されたプランツリーでは、「READ A」のプランノード、「READ B」のプランノード、「JOIN AB」のプランノード、「READ C」のプランノード、および「JOIN ABC」のプランノードが分散実行の対象として決定される。その後、本フローチャートに示された処理は終了する。
 本実施形態では、このようなクエリ解析処理が実行されることで、本実施形態に係る環境において分散実行に適した命令を適切に判定し、分散実行の対象とすることが出来る。
 <第二の実施形態>
 次に、第二の実施形態について説明する。第二の実施形態においても、第一の実施形態と同様、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を行う場合について説明する。なお、以下の説明および図7以降の図面において、第一の実施形態と共通する構成については、同一の符号をもって示し、説明を省略する。
 <<システムの構成>>
 第二の実施形態に係るシステムのハードウェア構成は、第一の実施形態に係るシステムのハードウェア構成と概略同様であるため、説明を省略する(図1を参照)。
 図7は、本実施形態に係るノード1の機能構成の概略を示す図である。本実施形態に係るノード1は、CPU11が、RAM12に展開された各種プログラムを解釈および実行して、ノード1に備えられた各種ハードウェアを制御することで、データベース管理部21、クエリ受付部22、割当部23、バージョン決定部24、更新命令識別情報通知部26b、指示部27、結果受信部28、合成部29、応答部30、プランツリー作成部31、適性判定部32、不適処理除外部33、可能性判定部34、不可処理除外部35、対象決定部36、指示受付部37、バージョン取得部38、更新命令識別情報取得部39b、更新内容特定部39c、処理実行部40および結果送信部41を備えるコンピューターとして機能する。
 即ち、本実施形態に係るノード1は、更新履歴作成部25および更新履歴通知部26に代えて更新命令識別情報通知部26bが採用され、更新履歴取得部39に代えて更新命令識別情報取得部39bおよび更新内容特定部39cが採用されている点で、第一の実施形態に係るノード1と異なる。また、本実施形態においても、ノード1の機能が汎用のCPU11によって実行される例について説明しているが、これらの機能は、その一部または全部が、1または複数の専用のプロセッサによって実現されてよい。
 更新命令識別情報通知部26bは、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合に、当該更新命令を識別するための情報を、当該更新命令に係る担当部分が割り当てられた命令実行ノードに通知する。同期されている複数のデータベース間で同一のトランザクションIDが用いられるシステムである場合には、当該更新命令が含まれるトランザクションのトランザクションIDを通知することで、トランザクションIDの通知を受けた命令実行ノードは、更新命令に係るトランザクションを特定し、更新内容を参照することが出来る。なお、本実施形態に係るシステムでは、複数のデータベース間で同一のトランザクションIDが用いられるため、更新命令を識別するための情報としてトランザクションIDが用いられるが、用いられる情報はトランザクションIDに限定されず、更新命令を識別可能な情報であればよい。
 更新命令識別情報取得部39bは、分散実行指示ノードの更新命令識別情報通知部26bによって通知されるトランザクションID(更新命令を識別可能な情報)を取得する。
 更新内容特定部39cは、更新命令識別情報取得部39bによって取得されたトランザクションIDに基づいて、当該更新命令に基づいて更新された内容を特定する。
 即ち、第二の実施形態では、第一の実施形態で採用された更新履歴の送受信に代えて、更新命令を識別可能な情報(トランザクションID)の送受信を採用することで、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を可能としている。
 <<処理の流れ>>
 次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、本開示を実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
 図8は、本実施形態において、ノード1によって実行される分散実行指示処理の流れを示すフローチャートである。本フローチャートに示された処理は、ノード1において、クエリが受け付けられたことを契機として開始される。
 ステップS401からステップS404の処理は、第一の実施形態において図3を用いて説明したステップS101からステップS104の処理と概略同様であるため、説明を省略する。
 ステップS405では、処理に用いられるバージョンが決定される。バージョン決定部24は、テーブルについて、処理に用いるバージョンを決定する。なお、本実施形態では、レプリケーションにおいてデータベースの実体が変更されるデータベースが採用されており、当該クエリを含むトランザクションに更新命令が含まれる場合、ここで決定されるバージョンは、当該更新命令によってデータベースの実体が変更されたバージョンである(第一の実施形態と異なる)。その後、処理はステップS406へ進む。
 ステップS406では、処理に用いられるテーブルの分割方法、および分割された各部分を担当するノードが決定される。ステップS406の処理は、第一の実施形態におけるステップS106の処理と概略同様であるため、説明を省略する。
 ステップS407およびステップS408では、受信クエリに係るトランザクションに当該ノードが管理するデータベースの更新命令が含まれている場合に、この更新命令を識別するためのトランザクションIDが特定される。更新命令識別情報通知部26bは、クエリを含むトランザクションに、テーブルに係る更新命令が含まれるか否かを判定し(ステップS407)、更新命令が含まれる場合に、当該更新命令が含まれるトランザクションのトランザクションIDを特定する(ステップS408)。その後、処理はステップS409へ進む。
 ステップS409では、命令実行ノードに対する指示が送信される。指示部27は、ステップS406で選定された複数の命令実行ノードの夫々に対して、各々の命令実行ノードによって管理されているデータベース(これらのデータベースは、互いに同期されている)を参照して、担当部分について処理を行うよう指示することで、処理を複数の命令実行ノードに分散実行させる。この際、指示部27は、各命令実行ノードに対して、分散処理の対象となっているクエリの内容を通知し、更に、処理に用いるバージョンとして、バージョン決定部24によって決定されたバージョンを用いて処理を行うように、命令実行ノードに指示する。ここで、実施形態に係るシステムにおいてログベースのレプリケーション技術が採用されている場合には、指定されたバージョンに対応するトランザクションログを特定可能なように、指示部27は、決定されたバージョンに対応するトランザクションシーケンス番号(LSN)を通知する。
 また、上記ステップS408においてトランザクションIDが特定されている場合、更新命令識別情報通知部26bは、特定されたトランザクションIDを、更新命令に係る担当部分が割り当てられた命令実行ノードに通知する。その後、処理はステップS410へ進む。
 ステップS409における指示が行われると、指示を受けた複数のノードは、命令実行ノードとして動作し、分散実行指示ノードからの指示に従って、各々が担当する部分について、クエリに係る処理を実行する。
 図9は、本実施形態において、ノード1によって実行される分散実行処理の流れを示すフローチャートである。本フローチャートに示された処理は、ノード1において、分散実行指示ノードより送信された(図8のステップS409を参照)分散実行の指示が受け付けられたことを契機として開始される。即ち、本フローチャートは、ノードが命令実行ノードとして動作する場合のフローチャートである。
 ステップS501からステップS502の処理は、第一の実施形態において図4を用いて説明したステップS201からステップS202の処理と概略同様であるため、説明を省略する。但し、上述の通り、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合には、この更新命令に対応するトランザクションIDが特定され、更新命令に係る担当部分が割り当てられた命令実行ノードに通知される(ステップS408およびステップS409を参照)。このため、クエリを含むトランザクションに、テーブルに係る更新命令が含まれる場合、更新命令識別情報取得部39bは、当該更新命令に対応するトランザクションIDを、分散実行指示ノードから取得する。
 ステップS503およびステップS504では、トランザクションIDが取得されている場合に、トランザクションIDに対応する更新内容が特定される。命令実行ノードの夫々は、ステップS501において更新命令識別情報取得部39bによってトランザクションIDが取得されたか否かを判定する(ステップS503)。そして、トランザクションIDが取得されている場合、更新内容特定部39cは、分散実行指示ノードから取得されたトランザクションIDに基づいて、当該更新命令に基づいて変更された内容を特定する(ステップS504)。本実施形態では、レプリケーションにおいてデータベースの実体が変更されるデータベースが採用されているため、トランザクションIDに基づいて、更新命令に対応する変更内容が特定出来る。一方、トランザクションIDが取得されてない場合、ステップS504に示された処理は省略される。その後、処理はステップS505へ進む。
 ステップS505からステップS506の処理は、第一の実施形態において図4を用いて説明したステップS205からステップS206の処理と概略同様であるため、説明を省略する。
 ステップS507では、作成された分散実行用クエリが実行される。処理実行部40は、ステップS506で作成された分散実行用のプランツリーに従って、分散実行用クエリを実行する。これによって、データベース管理部21によって管理されるデータベースを参照して、担当部分についての処理が実行される。この際、処理実行部40は、バージョン取得部38によって取得されたバージョンのテーブルを参照して、処理を行う。このバージョンは、ステップS405において説明した通り、オリジナルのクエリを含むトランザクションに更新命令が含まれる場合、当該更新命令によってデータベースの実体が変更されたバージョンである。
 また、この際、データベース間のレプリケーションが行われてデータが同期されていても、一般的には、当該トランザクションの実行中には、命令実行ノードにおいて当該トランザクションに係る(コミットされていない)更新内容を参照することが出来ない。本実施形態では、命令実行ノードは、分散実行指示ノードから通知されたトランザクションIDに基づいて、データベースの変更済みの実体を参照することで、実行中のトランザクションに係る(コミットされていない)更新内容を参照する。このため、本実施形態に係るシステムによれば、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を行うことが出来る。その後、処理はステップS508へ進む。
 ステップS508では、分散実行用クエリの実行結果が送信される。ステップS508の処理は、第一の実施形態におけるステップS208の処理と概略同様であるため、説明を省略する。また、各命令実行ノードによる分散実行において分散実行用クエリの作成を省略してもよいことは、第一の実施形態と同様である。
 次に、図8に戻り、分散実行指示ノードによる処理の続きを説明する。
 ステップS410からステップS413の処理は、第一の実施形態において図3を用いて説明したステップS110からステップS113の処理と概略同様であるため、説明を省略する。
 また、分散実行の範囲を決定するためのクエリ解析処理の流れについては、第一の実施形態において図5を用いて説明した処理の流れと同様であるため、説明を省略する。
 上記説明した第二の実施形態によれば、トランザクション実行中の更新結果が同期されている保証がないデータベースシステムであっても、分散実行の対象となっているクエリが含まれるトランザクション中の更新を考慮した分散実行を行うことが出来る。また、第二の実施形態によれば、トランザクションIDを用いて更新内容が特定されるため、分散実行指示ノードと命令実行ノードとの間で更新履歴を送受信する必要がない。
 <第三の実施形態>
 第三の実施形態では、トランザクション実行中の更新結果まで完全に同期されるようなデータベースシステムにおいて採用可能な実施形態について説明する。このようなデータベースシステムが用いられている場合には、上記第二の実施形態において説明した、バージョンの決定および待機に係る処理が不要となる。
 より具体的には、第三の実施形態では、図7を用いて説明したノード1の機能構成のうち、バージョン決定部24およびバージョン取得部38が省略されてよい(図示は省略する)。また、図8および図9を用いて説明した処理の流れのうち、バージョンの決定および待機に関連するステップS405、ステップS502が不要となり、また、ステップS409およびステップS501においても、バージョンに係る情報を送受信しなくてよい(図示は省略する)。
 また、ステップS507における分散実行用クエリの実行においては、処理実行部40は、テーブルのバージョンを意識することなく、分散実行用のプランツリーに従って、分散実行用クエリを実行すればよい。この際、命令実行ノードは、分散実行指示ノードから通知されたトランザクションIDに基づいて、実行中のトランザクションに係る更新内容を参照し、トランザクション中の更新を考慮した分散実行を行う。
 <バリエーション>
 なお、本開示では、処理の分散方法および担当はクエリを受けたノードが決定し、他のノードに分散するが、分散実行の指示を受けたノードが、自身に割り当てられた担当部分を更に分散させて、その他のノードに分散実行指示可能であってもよい。例えば、システム上のノードがツリー上の親子関係をもって接続されている場合、親ノードから命令実行の指示を受けた子ノードは、更に下位のノード(孫ノード)に対して、分散実行の指示を行うことが出来る。この場合、当該子ノードは、前記親ノードから見て命令実行ノードとなるが、前記孫ノードに対しては分散実行指示ノードとなる。
 また、システム上のノードは、分散実行指示や実行結果を中継するプロキシノードとして動作してもよい。この場合、プロキシノードは、分散実行の指示を受信すると、この指示を他のノードに転送する。転送を受けたノードは、命令実行ノードとして動作し、実行結果をプロキシノードに送信する。実行結果を受信したプロキシノードは、これを分散実行の指示送信元のノードに転送する。
 また、本実施形態では、レプリケーション技術によって複数のノード間でデータベースの内容が同期されるデータベースシステムに基づいて説明したが、レプリケーション技術によってノード間で同期される内容は、データベースの全体ではなく、データベースの一部であってもよい。即ち、本開示は、各ノードが自身の担当するデータベースの一部のみをレプリケーション技術によって同期するような、部分レプリケーションに係るデータベースシステムに適用されてもよい。
 このようなデータベースシステムにおいて本開示に係る分散実行を行う場合、各命令実行ノードは、データベースのうち当該命令実行ノードに部分レプリケーションされている部分を、分散実行指示ノードに通知する。分散実行指示ノードは、このような通知を受けることで、各命令実行ノードに部分レプリケーションされている部分を把握することが出来る。但し、分散実行指示ノードが、各命令実行ノードに部分レプリケーションされている部分を把握するための方法には、分散実行指示ノードが部分レプリケーションの設定情報を参照する方法や、分散実行指示ノードが各命令実行ノードに問い合わせる方法等、その他の方法が採用されてもよい。
 各命令実行ノードに部分レプリケーションされている部分を把握した分散実行指示ノードにおいて、割当部23は、クエリに係る処理に用いられるテーブルに含まれる複数の部分のうち、該当する部分がレプリケーションされているデータベースを管理する命令実行ノードに対して、当該部分を担当部分として優先的に割り当てる。このようにすることで、指示部27は、各命令実行ノードに部分レプリケーションされている部分が、当該命令実行ノードによる分散実行の担当部分となるように、分散実行の指示を行う。
 上記説明したバリエーションでは、本開示に係る分散実行技術と、部分レプリケーション技術とを組み合わせることで、データベース全体を全てのノードにレプリケーションすることなく、全てのノードがデータベース全体を保持しているかのようにクエリを処理することが出来る。即ち、このようなバリエーションによれば、ストレージやネットワーク、プロセッサ等のリソースを節約しつつ、負荷を分散することが出来る。
 また、本開示に係る技術は、各ノードがデータベースの全体にアクセス出来るが、各ノードが比較的高速にアクセスできる部分がデータベースの一部に限られているために、当該部分以外へのアクセスが比較的低速になってしまうようなデータベースシステム(即ち、データベース中の各部分によってアクセス速度が異なるデータベース)に適用されても良い。このようなデータベースは、例えば、データベースの全体は比較的低速のストレージに保持され、各ノードがデータベースの一部のみを比較的高速のストレージに保持するようなデータベースシステムである。
 このようなデータベースシステムにおいて本開示に係る分散実行を行う場合、各命令実行ノードは、データベースのうち自身が高速にアクセス出来る部分を、分散実行指示ノードに通知する。分散実行指示ノードは、このような通知を受けることで、各命令実行ノードが高速にアクセス出来る部分を把握することが出来る。但し、分散実行指示ノードが、各命令実行ノードが高速にアクセス出来る部分を把握するための方法には、分散実行指示ノードが各命令実行ノードの設定情報を参照する方法や、分散実行指示ノードが各命令実行ノードに問い合わせる方法等、その他の方法が採用されてもよい。
 各命令実行ノードが高速にアクセス出来る部分を把握した分散実行指示ノードにおいて、割当部23は、クエリに係る処理に用いられるテーブルに含まれる複数の部分のうち、該当する部分に高速にアクセス出来る命令実行ノードに対して、当該部分を担当部分として優先的に割り当てる。このようにすることで、指示部27は、各命令実行ノードが高速にアクセス出来る部分が、当該命令実行ノードによる分散実行の担当部分となるように、分散実行の指示を行う。
 上記説明したバリエーションによれば、本開示に係る分散実行技術を用いて、各ノードが高速にアクセス出来る部分を組み合わせることで、データベース全体に対して高速なアクセスを実現することが出来る。
 
 

Claims (23)

  1.  データベースを管理するデータベース管理手段と、
     前記データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当てる割当手段と、
     前記複数の他の情報処理装置の夫々に対して、前記他の情報処理装置によって管理されている、前記データベースに同期された他のデータベースを参照して、前記担当部分について前記処理を行うよう指示することで、前記処理を複数の他の情報処理装置に分散実行させる、指示手段と、
     前記複数の他の情報処理装置から、前記担当部分についての前記処理の実行の結果を受信する結果受信手段と、
     前記結果受信手段によって受信された前記結果を合成することで、前記テーブルについての前記処理の実行結果を取得する合成手段と、
     を備える情報処理装置。
  2.  前記テーブルについて、前記処理に用いるバージョンを決定するバージョン決定手段を更に備え、
     前記指示手段は、前記処理に用いるバージョンとして、前記バージョン決定手段によって決定されたバージョンを用いて前記処理を行うように、前記複数の他の情報処理装置に指示する、
     請求項1に記載の情報処理装置。
  3.  前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令に基づいて前記テーブルを更新した場合の更新履歴を作成する更新履歴作成手段と、
     前記更新履歴を、前記更新命令に係る担当部分が割り当てられた前記他の情報処理装置に通知する更新履歴通知手段と、
     を更に備える、請求項2に記載の情報処理装置。
  4.  前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、該更新命令に係る担当部分が割り当てられた他の情報処理装置に通知する更新命令識別情報通知手段を更に備える、
     請求項1に記載の情報処理装置。
  5.  前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、該更新命令に係る担当部分が割り当てられた他の情報処理装置に通知する更新命令識別情報通知手段と、
     前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令による更新が行われたバージョンを、前記テーブルについての前記処理に用いるバージョンとして決定するバージョン決定手段と、を更に備え、
     前記指示手段は、前記処理に用いるバージョンとして、前記バージョン決定手段によって決定されたバージョンを用いて前記処理を行うように、前記複数の他の情報処理装置に指示する、
     請求項4に記載の情報処理装置。
  6.  前記クエリを、ユーザー端末から受け付けるクエリ受付手段と、
     前記合成手段による合成によって得られた、前記テーブル全体についての前記処理の実行結果に基づいて、前記クエリへの応答を前記ユーザー端末に対して返す応答手段と、
     を更に備える、請求項1から5の何れか一項に記載の情報処理装置。
  7.  前記他の情報処理装置が管理する前記他のデータベースには、前記データベース管理手段によって管理される前記データベースの少なくとも一部が同期され、
     前記割当手段は、前記クエリに係る処理に用いられるテーブルに含まれる複数の部分のうち、該当する部分が同期されている前記他のデータベースを管理する前記他の情報処理装置に対して、該部分を担当部分として優先的に割り当てる、
     請求項1から6の何れか一項に記載の情報処理装置。
  8.  前記他の情報処理装置が管理する前記他のデータベースは、該他の情報処理装置からのアクセス速度が、部分によって異なるデータベースであり、
     前記割当手段は、前記クエリに係る処理に用いられるテーブルに含まれる複数の部分のうち、該当する部分が他の部分に比べて高速にアクセス可能な前記他の情報処理装置に対して、該部分を担当部分として優先的に割り当てる、
     請求項1から6の何れか一項に記載の情報処理装置。
  9.  前記クエリに含まれる処理の夫々を表すノードが、処理されるべき順序に従ってツリー状に配置されたプランツリーを作成するプランツリー作成手段と、
     前記プランツリーの解析結果に従って、前記分散実行の対象となる処理を決定する対象決定手段と、
     を更に備える、請求項1から8の何れか一項に記載の情報処理装置。
  10.  前記プランツリーに含まれる各ノードによって表される処理について、前記分散実行の可能性を判定する可能性判定手段を更に備え、
     前記対象決定手段は、前記可能性判定手段によって分散実行可能と判定された処理を、前記分散実行の対象として決定する、
     請求項9に記載の情報処理装置。
  11.  前記可能性判定手段によって分散実行不可能と判定された処理と前記プランツリーにおいて該処理より上位に接続された処理とを、前記分散実行の対象から除外する不可処理除外手段を更に備える、
     請求項10に記載の情報処理装置。
  12.  前記可能性判定手段は、前記プランツリーにおける下位ノードから上位ノードに向けて順に判定を行う、
     請求項10または11に記載の情報処理装置。
  13.  前記プランツリーに含まれる各ノードによって表される処理について、前記分散実行の適性を判定する適性判定手段と、
     前記適性判定手段によって前記分散実行に適さない処理であると判定された処理と前記プランツリーにおいて該処理より下位に接続された処理とを、前記分散実行の対象から除外する不適処理除外手段と、
     を更に備える、請求項9から12の何れか一項に記載の情報処理装置。
  14.  前記適性判定手段は、前記プランツリーにおける上位ノードから下位ノードに向けて順に判定を行う、
     請求項13に記載の情報処理装置。
  15.  他の情報処理装置によって管理される他のデータベースに同期されたデータベースを管理するデータベース管理手段と、
     前記他の情報処理装置が受け付けたクエリに係る処理に用いられるテーブルにおける、該情報処理装置の担当部分についての、該処理の実行指示を、前記他の情報処理装置から受け付ける指示受付手段と、
     前記データベース管理手段によって管理されるデータベースを参照して、前記担当部分について前記処理を実行する処理実行手段と、
     前記担当部分についての前記処理の実行の結果を、前記他の情報処理装置に対して送信する結果送信手段と、
     を備える情報処理装置。
  16.  前記テーブルについて、前記処理に用いるバージョンを前記他の情報処理装置から取得するバージョン取得手段を更に備え、
     前記処理実行手段は、前記バージョンのテーブルに基づいて、前記処理を実行する、
     請求項15に記載の情報処理装置。
  17.  前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令に基づいて前記テーブルを更新した場合の更新履歴を、前記他の情報処理装置から取得する更新履歴取得手段を更に備え、
     前記処理実行手段は、前記バージョン取得手段によって取得されたバージョンのテーブルに前記更新履歴を反映した情報を参照して、前記処理を行う、
     請求項16に記載の情報処理装置。
  18.  前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令を識別可能な情報を、前記他の情報処理装置から取得する更新命令識別情報取得手段と、
     前記更新命令を識別可能な情報に基づいて、該更新命令に基づいて更新された内容を特定する更新内容特定手段と、を更に備え、
     前記処理実行手段は、前記更新内容特定手段によって特定された更新内容を更に参照して、前記処理を実行する、
     請求項15に記載の情報処理装置。
  19.  前記クエリを含むトランザクションに、前記テーブルに係る更新命令が含まれる場合に、該更新命令による更新が行われたバージョンを、前記他の情報処理装置から、前記テーブルについて前記処理に用いるバージョンとして取得するバージョン取得手段を更に備え、
     前記処理実行手段は、前記バージョンのテーブルに基づいて、前記処理を実行する、
     請求項18に記載の情報処理装置。
  20.  コンピューターが、
     データベースを管理するデータベース管理ステップと、
     前記データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当てる割当ステップと、
     前記複数の他の情報処理装置の夫々に対して、前記他の情報処理装置によって管理されている、前記データベースに同期された他のデータベースを参照して、前記担当部分について前記処理を行うよう指示することで、前記処理を複数の他の情報処理装置に分散実行させる、指示ステップと、
     前記複数の他の情報処理装置から、前記担当部分についての前記処理の実行の結果を受信する結果受信ステップと、
     前記結果受信ステップにおいて受信された前記結果を合成することで、前記テーブルについての前記処理の実行結果を取得する合成ステップと、
     を実行する方法。
  21.  コンピューターが、
     他の情報処理装置によって管理される他のデータベースに同期されたデータベースを管理するデータベース管理ステップと、
     前記他の情報処理装置が受け付けたクエリに係る処理に用いられるテーブルにおける、該情報処理装置の担当部分についての、該処理の実行指示を、前記他の情報処理装置から受け付ける指示受付ステップと、
     前記データベース管理ステップにおいて管理されるデータベースを参照して、前記担当部分について前記処理を実行する処理実行ステップと、
     前記担当部分についての前記処理の実行の結果を、前記他の情報処理装置に対して送信する結果送信ステップと、
     を実行する方法。
  22.  コンピューターに、
     データベースを管理するデータベース管理ステップと、
     前記データベースに対するクエリに係る処理に用いられるテーブルに含まれる複数の部分の夫々を、複数の他の情報処理装置の夫々による担当部分として割り当てる割当ステップと、
     前記複数の他の情報処理装置の夫々に対して、前記他の情報処理装置によって管理されている、前記データベースに同期された他のデータベースを参照して、前記担当部分について前記処理を行うよう指示することで、前記処理を複数の他の情報処理装置に分散実行させる、指示ステップと、
     前記複数の他の情報処理装置から、前記担当部分についての前記処理の実行の結果を受信する結果受信ステップと、
     前記結果受信ステップにおいて受信された前記結果を合成することで、前記テーブルについての前記処理の実行結果を取得する合成ステップと、
     を実行させるためのプログラム。
  23.  コンピューターに、
     他の情報処理装置によって管理される他のデータベースに同期されたデータベースを管理するデータベース管理ステップと、
     前記他の情報処理装置が受け付けたクエリに係る処理に用いられるテーブルにおける、該情報処理装置の担当部分についての、該処理の実行指示を、前記他の情報処理装置から受け付ける指示受付ステップと、
     前記データベース管理ステップにおいて管理されるデータベースを参照して、前記担当部分について前記処理を実行する処理実行ステップと、
     前記担当部分についての前記処理の実行の結果を、前記他の情報処理装置に対して送信する結果送信ステップと、
     を実行させるためのプログラム。
     
PCT/JP2014/078647 2014-10-28 2014-10-28 情報処理装置、方法およびプログラム WO2016067370A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2016556087A JP6506773B2 (ja) 2014-10-28 2014-10-28 情報処理装置、方法およびプログラム
EP14905231.8A EP3214549A1 (en) 2014-10-28 2014-10-28 Information processing device, method, and program
PCT/JP2014/078647 WO2016067370A1 (ja) 2014-10-28 2014-10-28 情報処理装置、方法およびプログラム
US15/499,218 US10860580B2 (en) 2014-10-28 2017-04-27 Information processing device, method, and medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/078647 WO2016067370A1 (ja) 2014-10-28 2014-10-28 情報処理装置、方法およびプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/499,218 Continuation US10860580B2 (en) 2014-10-28 2017-04-27 Information processing device, method, and medium

Publications (1)

Publication Number Publication Date
WO2016067370A1 true WO2016067370A1 (ja) 2016-05-06

Family

ID=55856760

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/078647 WO2016067370A1 (ja) 2014-10-28 2014-10-28 情報処理装置、方法およびプログラム

Country Status (4)

Country Link
US (1) US10860580B2 (ja)
EP (1) EP3214549A1 (ja)
JP (1) JP6506773B2 (ja)
WO (1) WO2016067370A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020135717A (ja) * 2019-02-25 2020-08-31 Kddi株式会社 分析装置及び分析方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107769949B (zh) * 2016-08-19 2021-02-12 华为技术有限公司 一种应用组件部署方法及部署节点

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505059A (ja) * 2002-11-01 2006-02-09 タイム インダストリアル,インコーポレイテッド バージョン化されたデータベースについてのレポートを作成するためのシステムおよび方法
JP2009211154A (ja) * 2008-02-29 2009-09-17 Toshiba Corp データベース処理装置、情報処理方法及びプログラム
WO2010098034A1 (ja) * 2009-02-24 2010-09-02 日本電気株式会社 分散データベース管理システムおよび分散データベース管理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259672A (ja) 1999-03-08 2000-09-22 Tadamitsu Ryu ネットワーク上の情報検索システム
JP3710961B2 (ja) 1999-06-22 2005-10-26 富士通株式会社 分散検索装置および分散検索プログラム記憶媒体
JP3602085B2 (ja) 2001-09-28 2004-12-15 株式会社第一興商 旋律検索の分散処理に特徴を有するカラオケ集合システム
US10983998B2 (en) * 2008-06-25 2021-04-20 Microsoft Technology Licensing, Llc Query execution plans by compilation-time execution
US8713046B2 (en) * 2011-11-08 2014-04-29 Sybase, Inc. Snapshot isolation support for distributed query processing in a shared disk database cluster
US9639575B2 (en) * 2012-03-30 2017-05-02 Khalifa University Of Science, Technology And Research Method and system for processing data queries
US20140136545A1 (en) * 2012-10-05 2014-05-15 International Business Machines Corporation Multi-tier Indexing Methodology for Scalable Mobile Device Data Collection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006505059A (ja) * 2002-11-01 2006-02-09 タイム インダストリアル,インコーポレイテッド バージョン化されたデータベースについてのレポートを作成するためのシステムおよび方法
JP2009211154A (ja) * 2008-02-29 2009-09-17 Toshiba Corp データベース処理装置、情報処理方法及びプログラム
WO2010098034A1 (ja) * 2009-02-24 2010-09-02 日本電気株式会社 分散データベース管理システムおよび分散データベース管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020135717A (ja) * 2019-02-25 2020-08-31 Kddi株式会社 分析装置及び分析方法
JP7242343B2 (ja) 2019-02-25 2023-03-20 Kddi株式会社 分析装置及び分析方法

Also Published As

Publication number Publication date
JPWO2016067370A1 (ja) 2017-09-14
JP6506773B2 (ja) 2019-04-24
US10860580B2 (en) 2020-12-08
US20170228427A1 (en) 2017-08-10
EP3214549A1 (en) 2017-09-06

Similar Documents

Publication Publication Date Title
US10915528B2 (en) Pluggable storage system for parallel query engines
EP2176783B1 (en) Efficient updates for distributed file systems
CN113626525B (zh) 用于实施可扩展数据存储服务的系统和方法
US9659038B2 (en) Efficient snapshot read of a database in a distributed storage system
US9639590B2 (en) Database system and method for searching database
EP1465072A2 (en) Computer system with distributed file system for managing distributed files
CN111475506B (zh) 数据存储、查询的方法、装置、系统、设备、存储介质
CN112789606A (zh) 数据重分布方法、装置及系统
JP5375972B2 (ja) 分散ファイルシステム、そのデータ選択方法およびプログラム
CN111324606B (zh) 数据分片的方法及装置
CN111858760A (zh) 一种异构数据库的数据处理方法及装置
US11226986B2 (en) Data table partitioning management method and apparatus
US10831709B2 (en) Pluggable storage system for parallel query engines across non-native file systems
US10095737B2 (en) Information storage system
WO2016067370A1 (ja) 情報処理装置、方法およびプログラム
CN101483668A (zh) 热点数据的网络存储和访问方法、设备及系统
JP2008225686A (ja) 分散型データ処理プラットフォームにおけるデータ配置管理装置と方法、システム及びプログラム
Dobos et al. A comparative evaluation of NoSQL database systems
JP2022014633A (ja) 分散処理システム、分散処理装置、データベース管理装置及び方法
US11977487B2 (en) Data control device, storage system, and data control method
JP2020134961A (ja) データベース管理システム、端末装置及び方法
KR20200069977A (ko) 분산 파일 시스템의 동작 방법
US11734301B1 (en) Selective table replication to enable stream replication
US10754839B2 (en) Apparatus for data loading and data loading method
KR102024846B1 (ko) 파일 시스템 프로그램 및 이를 이용한 데이터 센터 제어 방법

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016556087

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2014905231

Country of ref document: EP