WO2020071368A1 - データ処理システム、データ処理装置、データ処理方法及びプログラム - Google Patents

データ処理システム、データ処理装置、データ処理方法及びプログラム

Info

Publication number
WO2020071368A1
WO2020071368A1 PCT/JP2019/038757 JP2019038757W WO2020071368A1 WO 2020071368 A1 WO2020071368 A1 WO 2020071368A1 JP 2019038757 W JP2019038757 W JP 2019038757W WO 2020071368 A1 WO2020071368 A1 WO 2020071368A1
Authority
WO
WIPO (PCT)
Prior art keywords
data processing
node
key
right structure
processing device
Prior art date
Application number
PCT/JP2019/038757
Other languages
English (en)
French (fr)
Inventor
古庄 晋二
Original Assignee
株式会社エスペラントシステム
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社エスペラントシステム filed Critical 株式会社エスペラントシステム
Priority to CN201980064372.1A priority Critical patent/CN112789608A/zh
Priority to JP2020550453A priority patent/JPWO2020071368A1/ja
Publication of WO2020071368A1 publication Critical patent/WO2020071368A1/ja
Priority to US17/216,847 priority patent/US20210216279A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/08Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Definitions

  • the present invention relates to a data processing system, a data processing device, a data processing method, and a program.
  • An ordered set in which some order is defined between each element is represented by a record and a table that stores this record.
  • various methods are conventionally known. These methods will be described as an example in which a plurality of records including the data items “Age”, “Gender”, and “Address” are sorted in ascending order of “Age”.
  • the first method is to change the storage position of the record in the table.
  • the storage position of the record may be changed before and after sorting.
  • a record stored at the storage location “0” before sorting (the record at Age “8”) is stored at the storage location “2” after sorting.
  • the record number list stores the record numbers of the records at the same storage position. That is, the record number of the record at the storage position “n” of the table is stored in the storage position “n” of the record number list.
  • the storage position of the record number may be changed before and after sorting. For example, the record number “0” is stored at the storage position “0” of the record number list before sorting, but is stored at the storage position “2” of the record number list after sorting.
  • GOrd which is an abbreviation of “Global @ Order” indicating a unified order of records among these tables.
  • FIG. 2 when there are a table 1 and a table 2 and the records stored in the tables 1 and 2 are sorted in ascending order of “Age”, GOrd is one table. Are determined to be in ascending order, and represent a unified order between Table 1 and Table 2.
  • the record of GOrd “0” is the record of record number “3” in Table 1.
  • the record of GOrd “1” is the record of record number “1” in Table 1.
  • the record of GOrd “2” is the record of record number “3” in Table 2.
  • This third method like the second method, is fast and can express the true subset while retaining the original table. Further, since the GOrd is in the ascending order in the same table, a record search can be performed at high speed.
  • the above-described first to third methods are effective methods for sorting data (records) in a single node (computer), and are distributed and held in a plurality of nodes. It takes a lot of time to sort data. This is because data reference between nodes generally takes several hundred times or more time as compared with data reference within a single node. The same applies to the case of searching and totaling data distributed and held in a plurality of nodes.
  • the present invention has been made in view of the above points, and has as its object to realize high-speed sorting, searching, and counting of data distributed and held in a plurality of nodes.
  • a data processing system of the present invention is a data processing system including a plurality of nodes each holding a table in which one or more records are stored, wherein each of the nodes Right structure creating means for creating a right structure indicating a structure to be referred to in the L operation from the table held by the own node; and a left structure indicating a structure to be operated in the L operation From the right structure, a transmitting unit for transmitting the right structure generated by the right structure generating unit to another node, and a right unit generated by the other node.
  • FIG. 10 is a diagram (No. 1) for explaining an example of the related art.
  • FIG. 10 is a diagram (No. 1) for explaining an example of the related art.
  • FIG. 11 is a diagram (part 2) for describing an example of the related art. It is a figure showing an example of a left structure and a right structure.
  • FIG. 11 is a diagram for describing an example of an L operation (key comparison condition “>”).
  • FIG. 7 is a diagram for explaining an example of a relationship between an entire table and a partial table held by each node.
  • FIG. 1 is a diagram illustrating an example of an overall configuration of a data processing system according to an embodiment of the present invention.
  • FIG. 1 is a diagram illustrating an example of an overall configuration of a data processing system according to an embodiment of the present invention.
  • FIG. 1 is a diagram illustrating an example of an overall configuration of a data processing system according to
  • FIG. 2 is a diagram illustrating an example of a hardware configuration of a data processing device according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating an example of a functional configuration of the data processing device according to the embodiment of the present invention.
  • FIG. 3 is a diagram illustrating a specific example of an entire table and a partial table held by each node.
  • FIG. 8 is a diagram (part 1) for describing an example of a search.
  • FIG. 8 is a diagram (part 1) for describing an example of a search.
  • FIG. 10 is a diagram (part 2) for explaining an example of a search;
  • FIG. 11 is a diagram (part 3) for explaining an example of a search;
  • FIG. 9 is a diagram (part 4) for describing an example of a search.
  • FIG. 8 is a diagram (part 1) for explaining an example of tallying
  • FIG. 9 is a diagram (part 2) for explaining an example of tallying
  • FIG. 11 is a diagram (part 1) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 1) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 2) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 2) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 2) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 3) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 3) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 3) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 3) for describing an example of single item sorting.
  • FIG. 11 is
  • FIG. 11 is a diagram (part 3) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 4) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 4) for describing an example of single item sorting.
  • FIG. 11 is a diagram (part 4) for describing an example of single item sorting. It is a figure for explaining an example of a multiple item sort. It is a figure for explaining an example of a multiple item sort. It is a figure for explaining an example of a subset.
  • FIG. 11 is a diagram (part 1) for describing an example of sorting by a subset;
  • FIG. 11 is a diagram (part 1) for describing an example of sorting by a subset;
  • FIG. 11 is a diagram (part 1) for describing an example of sorting by a subset;
  • FIG. 11 is a diagram (part 1) for describing an example of sorting by a subset;
  • FIG. 11 is a diagram
  • FIG. 11 is a diagram (part 2) for describing an example of sorting by a subset;
  • FIG. 11 is a diagram (part 2) for describing an example of sorting by a subset;
  • FIG. 11 is a diagram (part 2) for describing an example of sorting by a subset;
  • FIG. 10 is a diagram (part 3) for describing an example of sorting by a subset;
  • FIG. 10 is a diagram (part 3) for describing an example of sorting by a subset;
  • FIG. 10 is a diagram (part 3) for describing an example of sorting by a subset;
  • FIG. 14 is a diagram (part 4) for describing an example of sorting by a subset;
  • FIG. 14 is a diagram (part 4) for describing an example of sorting by a subset
  • FIG. 14 is a diagram (part 4) for describing an example of sorting by a subset
  • It is a figure for explaining an example of division of a right structure.
  • It is a figure for explaining an example of efficiency improvement of the comparison operation of a left structure and a right structure after division.
  • It is a figure for explaining an example of efficiency improvement of the comparison operation of a left structure and a right structure after division.
  • the third method described above is extended to sorting between a plurality of nodes, so that the records stored in the tables held by each of the plurality of nodes are A case where high-speed sorting is realized will be described.
  • high-speed sorting of data distributed and held in a plurality of nodes can be realized. If sorting can be realized, tallying, searching, JOIN, and the like can be performed.
  • sorting, counting, search, JOIN, and the like are also referred to as “data processing”.
  • L operation Layer Operation
  • the L operation is defined between two structures having mutually comparable ascending key sequences.
  • One of these two structures is a structure on the operated side (hereinafter, referred to as a “left structure”), and the other is a structure on the reference side (hereinafter, referred to as a “right structure”). ).
  • the ascending key sequence may be a key sequence in which a plurality of values are linked or a key sequence in which a plurality of values are represented by one set.
  • the value for example, a character string or the like
  • the descending sort can be realized by the L operation.
  • the left structure shown in FIG. 3 is a structure of four rows and includes “10”, “20”, “30”, and “40” as ascending key columns, and these keys are initially set to “0”.
  • the converted result storage area (that is, an area in which operation results of various operations are stored) is associated with the result storage area.
  • the right structure shown in FIG. 3 is a structure of three rows, and includes "10", "15", and "20" as ascending key columns, and these keys have added values "2" and "20". "1" and "3" are associated with each other.
  • FIG. 4 is a diagram for explaining an example of the L operation (key comparison condition “>”).
  • the key “30” in the ascending key sequence of the left structure is compared with the key “20” in the ascending key sequence of the right structure.
  • the addition value “3” corresponding to the key “20” in the right structure is added to the result storage area corresponding to the key “30” in the left structure.
  • the current reference position of the right structure is “2”, and the reference position cannot be lowered any more, so that the L operation is completed.
  • the value stored in the result storage area of the operation position “2” of the left structure is updated from “0” to “3”, and then the L calculation ends.
  • the key "20" in the ascending key sequence of the left structure is compared with the key "15" in the ascending key sequence of the right structure.
  • the reference position of the right structure is lowered by one. As a result, the reference position of the right structure is updated from “1” to “2”.
  • the key "20" in the ascending key sequence of the left structure is compared with the key "20" in the ascending key sequence of the right structure.
  • the addition value “3” corresponding to the key “20” of the right structure is added to the result storage area corresponding to the key “20” of the left structure.
  • the current reference position of the right structure is “2”, and the reference position cannot be lowered any more, so that the L operation is completed.
  • the value stored in the result storage area of the operation position “2” of the left structure is updated from “0” to “3”, and then the L calculation ends.
  • the number of comparisons based on the key comparison condition is m + n or less
  • the number of times of storing various operation results for the operation position is n or less.
  • the ascending key string is also simply referred to as “key string”.
  • a table which is also referred to as an “entire table”
  • this entire table is divided into K pieces in order from the top, and each node is a node number (hereinafter, also referred to as a “node number”).
  • node number hereinafter, also referred to as a “node number”.
  • this is also referred to as a "partial table”). That is, as shown in FIG. 6, there is an entire table composed of N records, and this entire table is divided into a partial table 0, a partial table 1,...
  • the k-th (0 ⁇ k ⁇ K ⁇ 1) node is “node k”
  • the partial table 0 is the node
  • the partial table 1 is the node 1
  • the partial table K ⁇ 1 is the node K -1 is held (that is, the partial table k is held by the node k).
  • each node holds a partial table k corresponding to its own node number k, which is referred to as “stability premise”.
  • the ⁇ Global ⁇ L operation has the following three features.
  • a task switch can be easily realized even in a system including a large number of nodes such as a supercomputer.
  • each node can obtain a correct operation result by performing the L operation after the completion of the task. Switch becomes easy.
  • FIG. 7 is a diagram illustrating an example of an overall configuration of the data processing system 1 according to the embodiment of the present invention.
  • the data processing system 1 includes K data processing devices 10. Further, these K data processing apparatuses 10 are communicably connected to each other via an arbitrary network.
  • Each data processing device 10 is a computer serving as the above-described node. That is, each data processing device 10 holds a partial table that is ordered and corresponds to the node number of its own node.
  • the data processing apparatus 10 included in the data processing system 1 is referred to as “data processing apparatus 10-0”, “data processing apparatus 10-1”, and “data processing apparatus 10-
  • the node number of the data processing device 10-0 is "0”
  • the node number of the data processing device 10-1 is “1”
  • the node number of the data processing device 10-2 is "2”.
  • the node with node number 0 is also referred to as “node 0”, the node with node number 1 as “node 1”, and the node with node number 2 as “node 2”.
  • the configuration of the data processing system 1 shown in FIG. 7 is an example, and another configuration may be used.
  • the data processing system 1 may include any K data processing devices 10.
  • K may be about tens of thousands.
  • FIG. 8 is a diagram illustrating an example of a hardware configuration of the data processing device 10 according to the embodiment of the present invention.
  • the data processing device 10 has a processor 11, a memory 12, and a communication I / F 13 as hardware. Each of these pieces of hardware is communicably connected via a bus 14.
  • the processor 11 is, for example, a CPU (Central Processing Unit) or the like, and is an arithmetic device that executes various processes.
  • the memory 12 is, for example, a random access memory (RAM), a read only memory (ROM), or an auxiliary storage device, and stores various programs and data.
  • the communication I / F 13 is an interface for connecting the data processing device 10 to a network.
  • the data processing device 10 can realize data processing such as sorting by having the hardware shown in FIG.
  • the data processing device 10 according to the embodiment of the present invention may include, for example, an input device such as a keyboard and a mouse, and a display device such as a display, in addition to the hardware illustrated in FIG.
  • FIG. 9 is a diagram illustrating an example of a functional configuration of the data processing device 10 according to the embodiment of the present invention.
  • the data processing device 10 includes a communication unit 101 and a calculation unit 102 as functional units. Each of these functional units is realized by a process that causes the processor 11 to execute one or more programs installed in the data processing device 10.
  • the data processing device 10 includes the storage unit 103.
  • the storage unit 103 can be realized using, for example, the memory 12 or the like.
  • the storage unit 103 stores a partial table corresponding to the node number of the own node.
  • the communication unit 101 transmits and receives data to and from another node (that is, transmits the right structure of the own node and receives the right structure of another node).
  • the operation unit 102 performs creation of a left structure and a right structure, and various operations including an L operation. By performing various calculations by the calculation unit 102, data processing such as sorting, counting, searching, and JOIN are realized.
  • FIG. 10 is a diagram illustrating a specific example of an entire table and a partial table held by each node.
  • a partial table composed of records stored in storage positions “0” to “3” is a partial table held by the node 0.
  • a partial table composed of records stored in storage positions “4” to “7” is a partial table held by node 1.
  • a partial table composed of records stored in the storage positions “8” to “11” is defined as a partial table held by the node 2.
  • a GOrd list in which GOrd indicating a unified order among the partial tables is stored, and a record number (RecNo) indicating the order of records in the same partial table are stored.
  • a record number list Associated with the record number list to be executed.
  • GOrd is in ascending order among partial tables
  • RecNo is in ascending order in the same partial table.
  • the nodes 1 to 3 respectively hold the partial tables shown in FIG. 10 (that is, store the partial tables satisfying the stability premise in the storage unit 103). Each data processing will be described.
  • FIGS. 11 to 14 are diagrams for explaining an example of the search.
  • the arithmetic unit 102 of each data processing device 10 creates a record number list in which the record numbers of the searched records are stored, and a GOrd list in which null values (NULL values) are stored.
  • the record number list storing the record numbers “0” and “3” and the GOrd list storing the null values corresponding to these record numbers Is created.
  • the data processing device 10-1 node 1
  • a record number list in which the record number “2” is stored and a GOrd list in which a null value corresponding to the record number is stored are created.
  • the data processing device 10-2 node 2 stores a record number list in which record numbers “0”, “1”, and “2” are stored, and null values corresponding to these record numbers.
  • the created GOrd list is created.
  • the arithmetic unit 102 of each data processing device 10 creates a right structure. That is, the arithmetic unit 102 of each data processing apparatus 10 creates the right structure with the node number of the own node as a “key string” and the number of records searched in S31 as the “number of hits”. As a result, in the data processing device 10-0 (node 0), a one-row right structure in which the key “0” is associated with the number of hits “2” is created. Similarly, in the data processing device 10-1 (node 1), a one-row right structure in which the key “1” is associated with the number of hits “1” is created. Similarly, in the data processing device 10-2 (node 2), a one-row right structure in which the key “2” is associated with the number of hits “3” is created.
  • the arithmetic unit 102 of each data processing device 10 creates a left structure. That is, the arithmetic unit 102 of each data processing apparatus 10 creates the left structure with the node number of the own node as a “key string” and the initial value “0” as the “number of occurrences on the front side”. Note that the number of occurrences of the destination is a result storage area for storing the number of records searched by a node having a node number earlier than the own node.
  • a one-line left structure in which the key “0” is associated with the number of occurrences “2” on the front side is created.
  • a one-row left structure in which the key “1” is associated with the number of occurrences “0” of the destination is created.
  • a one-line left structure in which the key “2” is associated with the number of occurrences “0” of the destination is created.
  • S35-0 to S37-0 are executed at the node 0
  • S35-1 to S37-1 are executed at the node 1
  • S35-2 to S37-2 are executed at the node 2. These can be performed independently. This is because the Global @ L operation has the feature 2 described above.
  • the operation unit 102 of the data processing device 10-0 executes the L operation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-0 executes the following S35-0-0 to S35-0-2.
  • the arithmetic unit 102 of the data processing device 10-0 may include a left structure developed on a different storage area for each of the following processing for parallel processing of S35-0-0 to S35-0-2. Use the number of occurrences in the middle.
  • the number of forward occurrences in the left structure for comparison with the right structure of node 0 and the number of forward occurrences in the left structure for comparison with the right structure of node 1 are used. Since the Global @ L operation has the above-described feature 1, the following S35-0-0 to S35-0-2 are in no particular order.
  • the arithmetic unit 102 of the data processing device 10-0 determines whether the key “0” in the key sequence of the left structure of the own node and the key “0” in the right structure of the own node (node 0) are Compare with key "0". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-0 has the key "0" in the key sequence of the left structure of the own node and the key "1" in the key sequence of the right structure of the node 1. Compare with In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-0 has the key “0” in the key sequence of the left structure of the own node and the key “2” in the key sequence of the right structure of the node 2 Compare with In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-0 calculates the total number of forward appearances of the left structure. That is, the arithmetic unit 102 of the data processing device 10-0 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2 Calculate the sum of the number of occurrences on the front side with the left structure for comparison with the structure. This sum is the start number of GOrd of node 0. In this case, since the total number of occurrences of the other party is “0”, the start number of GOrd of node 0 is “0”.
  • the arithmetic unit 102 of the data processing device 10-0 updates the GOrd list of the own node created in S31 using the start number of the GOrd of the own node. That is, the arithmetic unit 102 of the data processing device 10-0 stores, in the GOrd list, values added one by one from the top, starting from the start number.
  • GOrd list of the node GOrd "0" is stored at the storage position "0" and GOrd "1" is stored at the storage position "1".
  • the operation unit 102 of the data processing device 10-1 executes the L operation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-1 executes the following S35-1-0 to S35-1-2. Here, the arithmetic unit 102 of the data processing device 10-1 may perform the left processing of the left structure expanded on a different storage area for each of the following parallel processing of S35-1-0 to S35-1-2. Use the number of occurrences in the middle.
  • the number of forward occurrences in the left structure for comparison with the right structure of node 0 and the number of forward occurrences in the left structure for comparison with the right structure of node 1 are used. Since the Global @ L operation has the above-described feature 1, the following S35-1-0 to S35-1-2 are in no particular order.
  • the operation unit 102 of the data processing device 10-1 has the key “1” in the key sequence of the left structure of the own node and the key “0” in the key sequence of the right structure of the node 0. Compare with In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of hits “2” corresponding to the key “0” of the right structure by the occurrence of the preceding one corresponding to the key “1” of the left structure. Add to the number. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of occurrences of the left side of the left structure is updated from “0” to “2”.
  • the arithmetic unit 102 of the data processing device 10-1 compares the key “1” in the key sequence of the left structure of the own node with the key “1” in the right structure of the own node (node 1). Compare with key "1". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the operation unit 102 of the data processing device 10-1 has the key “1” in the key sequence of the left structure of the own node and the key “2” in the key sequence of the right structure of the node 2. Compare with In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-1 calculates the total number of forward appearances of the left structure. That is, the arithmetic unit 102 of the data processing device 10-1 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2 Calculate the sum of the number of occurrences on the front side with the left structure for comparison with the structure. This sum is the start number of GOrd of node 1. In this case, since the total number of occurrences of the other party is “2”, the start number of GOrd of the node 1 is “2”.
  • the arithmetic unit 102 of the data processing device 10-1 updates the GOrd list of the own node created in S31 using the start number of the GOrd of the own node. That is, the arithmetic unit 102 of the data processing device 10-1 stores, in the GOrd list, values added one by one from the top, starting from the start number. As a result, GOrd “2” is stored at the storage position “0” in the GOrd list of the node 1.
  • the calculation unit 102 of the data processing device 10-2 performs the L calculation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-2 executes the following S35-2-0 to S35-2-2. Here, the arithmetic unit 102 of the data processing device 10-2 may perform the following parallel processing of S35-2-0 to S35-2-2. Use the number of occurrences in the middle.
  • the number of forward occurrences in the left structure for comparison with the right structure of node 0 and the number of forward occurrences in the left structure for comparison with the right structure of node 1 are used. Since the Global @ L operation has the above-described feature 1, the following S35-2-0 to S35-2-2 are in no particular order.
  • the arithmetic unit 102 of the data processing device 10-2 has the key “2” in the key sequence of the left structure of the own node and the key “0” in the key sequence of the right structure of the node 0. Compare with In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of hits “2” corresponding to the key “0” of the right structure by the occurrence of the hit corresponding to the key “2” of the left structure. Add to the number. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of occurrences of the left side of the left structure is updated from “0” to “2”.
  • the arithmetic unit 102 of the data processing device 10-2 determines that the key “2” in the key sequence of the left structure of the own node and the key “1” in the key sequence of the right structure of the node 1 Compare with In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of hits “1” corresponding to the key “1” of the right structure by the occurrence of the hit corresponding to the key “2” of the left structure. Add to the number. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of occurrences of the left side of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 compares the key “2” in the key string of the left structure of the own node with the key “2” in the right structure of the own node (node 2). Compare with key "2". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-2 calculates the total number of forward appearances of the left structure. That is, the arithmetic unit 102 of the data processing device 10-2 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2. Calculate the sum of the number of occurrences on the front side with the left structure for comparison with the structure. This sum is the starting number of GOrd of node 2. In this case, the total number of occurrences of the other party is “3”, and thus the start number of GOrd of the node 2 is “3”.
  • the arithmetic unit 102 of the data processing device 10-2 updates the GOrd list of the own node created in S31 using the start number of the GOrd of the own node. That is, the arithmetic unit 102 of the data processing device 10-2 stores, in the GOrd list, values added one by one from the top, starting from the start number.
  • GOrd list of the node 2 GOrd "3" is stored at the storage position "0”
  • GOrd "4" is stored at the storage position "1”
  • GOrd "5" is stored at the storage position "2".
  • GOrd is stored in each GOrd list created in S31. Thereby, a search result in which GOrd is added to the record searched by each data processing device 10 is obtained.
  • FIGS. 15 and 16 are diagrams for explaining an example of tallying.
  • the arithmetic unit 102 of each data processing device 10 totals the total age for each gender in its own node, and creates a right structure. That is, the arithmetic unit 102 of each data processing apparatus 10 calculates the total age (Age) for each gender (ender) in the partial table stored in its own storage unit 103. Then, the calculation unit 102 of each data processing device 10 creates a right structure with the gender as a “key sequence” and the sum of the ages of the genders as “age total”.
  • the row in which the key “F” is associated with the total age “16” and the row in which the key “M” is associated with the total age “12” And a two-line right structure is created.
  • data processing device 10-1 node 1
  • a row in which key “F” is associated with total age “7” and a row in which key “M” is associated with total age "21” And a two-line right structure is created.
  • the data processing device 10-2 (node 2) includes a row in which the key “F” is associated with the total age "22” and a row in which the key "M” is associated with the total age "8".
  • a two-line right structure is created.
  • the arithmetic unit 102 of each data processing device 10 creates a left structure. That is, the arithmetic unit 102 of each data processing device 10 creates a left structure by setting the gender as a “key string” and setting the initial value “0” of the total age of the gender to “age total”.
  • step S43 the communication unit 101 of each data processing device 10 exchanges the right structure created in S41. That is, the communication unit 101 of each data processing device 10 transmits the right structure of the own node to all other nodes and receives the right structure transmitted from all other nodes.
  • This step S43 may be executed immediately after the above step S41.
  • the arithmetic unit 102 of the data processing device 10-k may include a left structure developed on different storage areas for each of the following parallel processing of S44-k-0 to S44-k-2. Use the median age sum.
  • the total age of the operation position “0” of the left structure (the total age of gender “F”) is updated to “16”, and the reference position of the right structure is changed from “0” to “1”.
  • the operation position of the left structure is updated from “0” to “1”.
  • the calculation unit 102 of the data processing device 10-k calculates the total age sum for each gender. That is, the arithmetic unit 102 of the data processing device 10-k includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2 With the left structure for comparison with the structure, the total age sum is calculated for each gender. As a result, a left structure including a row in which gender "F” is associated with the total age "45” and a row in which gender "M” is associated with the total age "41” are obtained. .
  • FIGS. 17 to 20 are diagrams for explaining an example of single item sorting.
  • the magnitude relation between the genders “F” and “M” is F ⁇ M, and sorting is performed in ascending order by a single gender item.
  • the magnitude relation between the genders “F” and “M” may be such that F> M, and the case may be such that the genders are sorted in a single item in descending order.
  • the arithmetic unit 102 of each data processing device 10 sorts by gender within its own node. That is, the arithmetic unit 102 of each data processing apparatus 10 sorts the record number list of the partial table stored in its own storage unit 103 by gender.
  • the arithmetic unit 102 of each data processing device 10 creates a record number list in which the record numbers after sorting are stored, and a GOrd list in which null values (NULL values) are stored.
  • the record numbers are sorted in the order of “0”, “3”, “1”, and “2”, and the record numbers correspond to these record numbers.
  • a GOrd list in which null values are stored is created.
  • the data processing device 10-1 node 1
  • a GOrd list in which null values are stored is created.
  • the data processing device 10-2 node 2
  • the record numbers are sorted in the order of "0", “1", “2”, and “3”, and the record numbers correspond to these record numbers.
  • a GOrd list in which null values are stored is created.
  • the arithmetic unit 102 of each data processing device 10 creates a right structure. That is, the arithmetic unit 102 of each data processing device 10 creates a right structure with the gender and the node number of its own node as the “key string” and the number of records of the gender as the “number of appearances”. Accordingly, in the data processing device 10-0 (node 0), the row in which the keys “F” and “0” are associated with the number of appearances “2”, the keys “M” and “0” and the number of appearances “ A right structure of two rows composed of a row associated with “2” is created.
  • the row in which the keys “F” and “1” are associated with the number of appearances “1”, the key “M” and “1” and the number of appearances “ A two-row right structure composed of a row associated with “3” is created.
  • the row in which the keys “F” and “2” are associated with the number of appearances “3”, the key “M” and “2” and the number of appearances “ A two-row right structure composed of a row associated with “1” is created.
  • node numbers are all the same in one left structure or right structure, it is not necessary to repeatedly store the same number of records as the number of records in the left structure and the right structure. , The left structure and the right structure.
  • the arithmetic unit 102 of each data processing device 10 creates a left structure. That is, the arithmetic unit 102 of each data processing device 10 creates a left structure in which the number of appearances of all the right structures created in S52 is set to 0 and the “number of appearances” is “the number of existing fronts”.
  • the communication unit 101 of each data processing device 10 exchanges the right structure created in S52 with each other. That is, the communication unit 101 of each data processing device 10 transmits the right structure of the own node to all other nodes and receives the right structure transmitted from all other nodes.
  • This S54 may be executed immediately after the above S52.
  • S55-0 to S58-0 are executed at the node 0
  • S55-1 to S58-1 are executed at the node 1
  • S55-2 to S58-2 are executed at the node 2. These can be performed independently. This is because the Global @ L operation has the feature 2 described above.
  • the operation unit 102 of the data processing device 10-0 executes the L operation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-0 executes the following S55-0-0 to S55-0-2.
  • the arithmetic unit 102 of the data processing device 10-0 may include a left structure developed on a different storage area for each of the following S55-0-0 to S55-0-2 for parallel processing. Uses the number of forward occurrences in.
  • the number of forward entities in the left structure for comparison with the right structure of node 0 and the number of forward entities in the left structure for comparison with the right structure of node 1 Use the number and the number of forward occurrences in the left structure for comparison with the right structure of node 2. Since the Global @ L operation has the above-described feature 1, the following S55-0-0 to S55-0-2 are in no particular order.
  • the operation unit 102 of the data processing device 10-0 determines the keys "F” and "0" in the key sequence of the left structure of the own node and the right structure of the own node (node 0). The keys "F” and "0" in the key sequence are compared. In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-0 outputs the keys “M” and “0” in the key string of the left structure of the own node and the keys “M” and “0” in the right structure of the own node (node 0). Key “F” and “0".
  • the arithmetic unit 102 determines the number of occurrences “2” corresponding to the keys “F” and “0” of the right structure and the keys “M” and “M” of the left structure.
  • the reference position of the right structure is lowered by one.
  • the number of front positions at the operation position "1" of the left structure is updated from “0" to "2”
  • the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-0 outputs the keys “M” and “0” in the key string of the left structure of the own node and the keys “M” and “0” in the right structure of the own node (node 0). Key “M” and "0".
  • the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the operation unit 102 of the data processing device 10-0 determines the keys “F” and “0” in the key sequence of the left structure of the own node and the keys “F” and “0” in the key structure of the right structure of the node 1. Compare keys “F” and "1". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-0 transmits the keys “M” and “0” in the key sequence of the left structure of the own node and the key “F” in the key sequence of the right structure of the node 1. "And” 1 ".
  • the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “F” and “1” of the right structure by the keys “M” and “M” of the left structure.
  • the reference position of the right structure is lowered by one.
  • the number of front positions at the operation position "1" of the left structure is updated from “0" to "1”
  • the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-0 transmits the keys “M” and “0” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 1 "And” 1 ".
  • the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the operation unit 102 of the data processing device 10-0 determines the keys “F” and “0” in the key sequence of the left structure of the own node and the keys “F” and “0” in the right structure of the node 2 Compare keys "F” and "2". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-0 transmits the keys “M” and “0” in the key sequence of the left structure of the own node and the key “F” in the key sequence of the right structure of the node 2 "And” 2 ".
  • the arithmetic unit 102 determines the number of occurrences “3” corresponding to the keys “F” and “2” of the right structure by the keys “M” and “M” of the left structure.
  • the reference position of the right structure is lowered by one.
  • the number of front positions at the operation position "1" of the left structure is updated from “0" to "3”
  • the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-0 transmits the keys “M” and “0” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 2 "And” 2 ".
  • the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-0 calculates the total number of the front structures existing in the left structure. That is, the arithmetic unit 102 of the data processing device 10-0 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2 The sum of the number of existing objects is calculated with the left structure for comparison with the structure. As a result, the total number of front existences corresponding to gender "F" is "0", and the total number of front existences corresponding to gender "M" is "6".
  • the arithmetic unit 102 of the data processing device 10-0 accumulates (total) the number of forward entities calculated in S56-0. That is, while the arithmetic unit 102 of the data processing device 10-0 keeps the number of front existences corresponding to the sex “F” as it is, the number of front existences corresponding to the sex “M” corresponds to the sex “F”. The number of front existences + the number of front existences corresponding to gender “M”.
  • the number of front entities corresponding to gender “F” is “0”, and the number of front entities corresponding to gender “M” is “6”.
  • This forward existence number becomes the start number of GOrd for each gender in node 0.
  • the start number of the GOrd of the sex “F” of the node 0 is “0”
  • the start number of the GOrd of the sex “M” is “6”.
  • the calculation unit 102 of the data processing device 10-0 uses the number of forward existences accumulated in S57-0 and the number of appearances obtained in S52 to calculate the above S51.
  • the GOrd list of the own node created in the step is updated. That is, the arithmetic unit 102 of the data processing device 10-0 stores, in the GOrd list, a value obtained by adding one by one from the top to the number of appearances and starting from the number of occurrences for each gender.
  • the GOrd list of the node 0 includes GOrd “0” at the storage position “0”, GOrd “1” at the storage position “1”, GOrd “6” at the storage position “2”, and GOrd “6” at the storage position “3”.
  • GOrd “7” is stored.
  • the calculation unit 102 of the data processing device 10-1 performs the L calculation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-1 executes the following S55-1-0 to S55-1-2. In this case, the arithmetic unit 102 of the data processing device 10-1 may perform the following parallel processing of S55-1-0 to S55-1-2. Uses the number of forward occurrences in. In other words, for parallel processing, in some cases, the number of forward entities in the left structure for comparison with the right structure of node 0 and the number of forward entities in the left structure for comparison with the right structure of node 1 Use the number and the number of forward occurrences in the left structure for comparison with the right structure of node 2. Note that, since the Global ⁇ L operation has the above-described feature 1, the following S55-1-0 to S55-1-2 are in no particular order.
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys "F” and “1” in the key sequence of the left structure of the own node and the keys “F” and “1” in the right structure of the node 0. Compare keys "F” and "0". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of appearances “2” corresponding to the keys “F” and “0” of the right structure and the keys “F” and “F” of the left structure. After adding to the number of forward existences corresponding to “1”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "0" of the left structure is updated from “0" to "2", and the reference position of the right structure is updated from “0" to "1".
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “F” and “1” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “M” and “1” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “2” corresponding to the keys “M” and “0” of the right structure and the keys “M” and “M” of the left structure. It is added to the number of forward entities corresponding to “1”. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of front positions at the operation position “1” of the left structure is updated from “0” to “2”.
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys "F” and "1" in the key string of the left structure of the own node with the right structure of the own node (node 1). The keys "F” and “1” in the key sequence are compared. In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “M” and “1” in the key sequence of the left structure of the own node with the keys in the key sequence of the right structure of the own node (node 1). Key “F” and “1". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “F” and “1” of the right structure by the keys “M” and “M” of the left structure. After adding to the number of forward existences corresponding to “1”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "1" of the left structure is updated from “0" to "1", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “M” and “1” in the key sequence of the left structure of the own node with the keys in the key sequence of the right structure of the own node (node 1). Key "M” and "1". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “F” and “1” in the key sequence of the left structure of the own node and the keys “F” and “1” in the right structure of the node 2 Compare keys "F” and "2". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-1 determines that the keys “M” and “1” in the key sequence of the left structure of the own node and the key “F” in the key sequence of the right structure of the node 2 "And” 2 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “3” corresponding to the keys “F” and “2” of the right structure by the keys “M” and “M” of the left structure. After adding to the number of forward existences corresponding to “1”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "1" of the left structure is updated from “0" to "3", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “M” and “1” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 2 "And” 2 ". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-1 calculates the total number of the front structures existing in the left structure. That is, the arithmetic unit 102 of the data processing device 10-1 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2 The sum of the number of existing objects is calculated with the left structure for comparison with the structure.
  • the number (total) of the front presences corresponding to gender “F” is “2”
  • the number (total) of the front presences corresponding to gender “M” is “6”.
  • the arithmetic unit 102 of the data processing device 10-1 accumulates (total) the number of forward entities calculated in S56-1. In other words, the arithmetic unit 102 of the data processing device 10-1 keeps the number of front existences corresponding to the sex “F” as it is, and changes the number of front existences corresponding to the sex “M” to the sex “F”. The number of front existences + the number of front existences corresponding to gender “M”.
  • the number of front existences corresponding to gender “F” is “2”, and the number of front existences corresponding to gender “M” is “8”.
  • This forward existence number becomes the start number of GOrd for each gender in node 1.
  • the start number of the GOrd of gender “F” of node 1 is “2”
  • the start number of the GOrd of gender “M” is “8”.
  • the arithmetic unit 102 of the data processing device 10-1 uses the number of forward existences accumulated in S57-1 and the number of appearances obtained in S52 to perform the above-mentioned S51.
  • the GOrd list of the own node created in the step is updated. That is, the arithmetic unit 102 of the data processing device 10-1 stores, in the GOrd list, a value obtained by adding the number of appearances one by one from the top, starting from the number of occurrences in front, for each gender.
  • the GOrd list of the node 1 includes GOrd “2” at the storage position “0”, GOrd “8” at the storage position “1”, GOrd “9” at the storage position “2”, and GOrd “9” at the storage position “3”.
  • GOrd “10” is stored.
  • the calculation unit 102 of the data processing device 10-2 executes the L calculation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-2 executes the following S55-2-0 to S55-2-2. In this case, the arithmetic unit 102 of the data processing device 10-2 may perform the left-hand structure expansion on different storage areas depending on the case in order to perform the following parallel processing of S55-2-0 to S55-2-2. Uses the number of forward occurrences in.
  • the number of forward entities in the left structure for comparison with the right structure of node 0 and the number of forward entities in the left structure for comparison with the right structure of node 1 Use the number and the number of forward occurrences in the left structure for comparison with the right structure of node 2. Since the Global @ L operation has the above-described feature 1, the following S55-2-0 to S55-2-2 are in no particular order.
  • the operation unit 102 of the data processing device 10-2 determines the keys “F” and “2” in the key sequence of the left structure of the own node and the keys “F” and “2” in the right structure of the node 0. Compare keys “F” and "0". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of appearances “2” corresponding to the keys “F” and “0” of the right structure and the keys “F” and “F” of the left structure. After adding to the forward existence number corresponding to “2”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "0" of the left structure is updated from “0" to "2", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “F” and “2” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “M” and “2” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of appearances “2” corresponding to the keys “M” and “2” of the right structure by the keys “M” and “M” of the left structure. The number is added to the number of forward entities corresponding to “2”. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of front positions at the operation position “1” of the left structure is updated from “0” to “2”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “F” and “2” in the key sequence of the left structure of the own node and the keys “F” and “2” in the right structure of the node 1. Compare keys “F” and "1". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “F” and “1” of the right structure and the keys “F” and “F” of the left structure. After adding to the forward existence number corresponding to “2”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position “0” of the left structure is updated from “0” to “1”, and the reference position of the right structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 determines that the keys “F” and “2” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 1 "And” 1 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “M” and “2” in the key sequence of the left structure of the own node and the key “M” in the key sequence of the right structure of the node 1. "And" 1 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “3” corresponding to the keys “M” and “1” of the right structure by the keys “M” and “M” of the left structure. The number is added to the number of forward entities corresponding to “2”. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of presences in front of the operation position “1” of the left structure is updated from “0” to “3”.
  • the operation unit 102 of the data processing device 10-2 determines the keys “F” and “2” in the key string of the left structure of the own node and the right structure of the own node (node 2).
  • the keys "F” and “2” in the key sequence are compared. In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 compares the keys “M” and “2” in the key string of the left structure of the own node with the keys of the right structure of the own node (node 2). Key “F” and “2". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “3” corresponding to the keys “F” and “2” of the right structure by the keys “M” and “M” of the left structure. After adding to the forward existence number corresponding to “2”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "1" of the left structure is updated from “0" to "3", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-2 compares the keys “M” and “2” in the key string of the left structure of the own node with the keys of the right structure of the own node (node 2). Key “M” and "2". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-2 calculates the total number of the front structures of the left structure. That is, the arithmetic unit 102 of the data processing device 10-2 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2. The sum of the number of existing objects is calculated with the left structure for comparison with the structure. As a result, the total number of front existences corresponding to gender "F" is "3", and the total number of front existences corresponding to gender "M" is "8".
  • the arithmetic unit 102 of the data processing device 10-2 accumulates the (total) number of forward entities calculated in S56-2. That is, while the arithmetic unit 102 of the data processing device 10-2 keeps the number of front existences corresponding to the sex “F” as it is, the number of front existences corresponding to the sex “M” corresponds to the sex “F”. The number of front existences + the number of front existences corresponding to gender “M”.
  • the number of front entities corresponding to gender “F” is “3”, and the number of front entities corresponding to gender “M” is “11”.
  • This forward existence number becomes the start number of GOrd for each gender in node 2.
  • the start number of the GOrd of the sex “F” of the node 2 is “3”
  • the start number of the GOrd of the sex “M” is “11”.
  • the arithmetic unit 102 of the data processing device 10-2 uses the number of forward existences accumulated in the above S57-2 and the number of appearances obtained in the above S52 to perform the above-mentioned S51.
  • the GOrd list of the own node created in the step is updated.
  • the arithmetic unit 102 of the data processing device 10-2 stores, in the GOrd list, a value obtained by adding one by one from the top to the number of appearances, starting from the number of forward occurrences, for each gender.
  • the GOrd list of the node 2 includes GOrd “3” at the storage location “0”, GOrd “4” at the storage location “1”, GOrd “5” at the storage location “2”, and the storage location “3”. GOrd “11” is stored.
  • GOrd is stored in each GOrd list created in S51.
  • a partial table to which GOrd (and a record number) is assigned is obtained in each data processing apparatus 10, and a sorting result (a single-item sorting result) in the entire data processing apparatus 10 is obtained from the GOrd.
  • FIG. 21 is a diagram for describing an example of a multiple item sort.
  • the arithmetic unit 102 of each data processing device 10 sorts by gender and age in its own node. That is, the arithmetic unit 102 of each data processing apparatus 10 sorts the record number list of the partial table stored in its own storage unit 103 by gender and age.
  • the arithmetic unit 102 of each data processing device 10 creates a record number list in which the sorted record numbers are stored, and a GOrd list in which null values (NULL values) are stored.
  • the record numbers are sorted in the order of “0”, “3”, “1”, and “2”, and the record numbers correspond to these record numbers.
  • a GOrd list in which null values are stored is created.
  • the record number list in which the record numbers are sorted in the order of “2”, “1”, “0”, “3”, and the record numbers corresponding to these record numbers A GOrd list in which null values are stored is created.
  • the data processing device 10-2 node 2
  • the record numbers are sorted in the order of “1,” “2,” “0,” and “3,” and the record numbers correspond to these record numbers.
  • a GOrd list in which null values are stored is created.
  • the arithmetic unit 102 of each data processing device 10 creates a right structure. That is, the arithmetic unit 102 of each data processing device 10 creates a right structure using the gender, the age, and the node number of the own node as a “key sequence” and the number of records of the gender and the age as an “appearance number”. Accordingly, in the data processing device 10-0 (node 0), the rows in which the keys “F”, “8”, and “0” are associated with the number of appearances “2” are associated with the keys “M” and “6”. Then, a two-row right structure composed of a row in which "0" is associated with the number of appearances "2" is created.
  • the rows in which the keys “F”, “7” and “2” are associated with the number of appearances “2”, and the keys “F” and “8” And a line in which key “M”, “8” and “2” are associated with the number of appearances "1”, and a line in which the number of appearances is associated with "2" and 3 The right structure for the row is created.
  • the arithmetic unit 102 of each data processing device 10 creates a left structure. That is, the arithmetic unit 102 of each data processing apparatus 10 creates a left structure in which the number of appearances of all the right structures created in S62 is set to 0 and the “number of appearances” is “the number of existing fronts”.
  • the communication unit 101 of each data processing device 10 exchanges the right structure created in S62 with each other. That is, the communication unit 101 of each data processing device 10 transmits the right structure of the own node to all other nodes and receives the right structure transmitted from all other nodes. Note that S64 may be executed immediately after S62.
  • GOrd is stored in each GOrd list created in S61.
  • a partial table to which GOrd (and a record number) is assigned is obtained in each data processing device 10, and a sorting result (a sorting result in a plurality of items) in the entire data processing device 10 is obtained by this GOrd.
  • a subset refers to a true subset of a set (entire set) represented by the partial tables as a result of performing some kind of data processing on each partial table, a set in which the order between elements is updated, and the like. That is. That is, the subset in the embodiment of the present invention is not only a set (true subset) that is a part of the whole set, but also has the same number of elements as the whole set, but the order between the elements is the set. Includes cases where it has been changed from
  • FIG. 22 shows a subset when genders are sorted. As shown in FIG. 22, in the embodiment of the present invention, the total set and the number of elements are the same, but if the order between elements is changed as a result of sorting by gender, it is also treated as a subset.
  • FIGS. 23 to 26 are diagrams for explaining an example of sorting by subsets.
  • the arithmetic unit 102 of each data processing device 10 sorts by age within its own node. That is, the arithmetic unit 102 of each data processing apparatus 10 sorts the record number list of the partial table stored in its own storage unit 103 by age.
  • the arithmetic unit 102 of each data processing apparatus 10 stores the record number list in which the record numbers after sorting are stored, and the current (pre-sort) GOrd (hereinafter also referred to as “oldGOrd”) of the record numbers. Create a stored oldGOrd list and a GOrd list storing null values (NULL values).
  • the record numbers correspond to the record number list in which the record numbers are sorted in the order of “1,” “2,” “0,” and “3”.
  • An oldGOrd list in which oldGord is stored in the order of "6", “7", “0”, “1” and a GOrd list in which null values corresponding to these record numbers are stored are created.
  • the record numbers are sorted in the order of "1," "2,” “0,” and “3,” and the record numbers correspond to these record numbers.
  • An oldGOrd list in which the oldGOrd is stored in the order of "9”, “2”, “8”, and “10” and a GOrd list in which null values corresponding to these record numbers are stored are created.
  • the record numbers are sorted in the order of “1,” “2,” “0,” and “3,” and the record numbers correspond to these record numbers.
  • An oldGOrd list in which oldGOrds are stored in the order of "4", "5", "3”, and "11” and a GOrd list in which null values corresponding to these record numbers are stored are created.
  • the arithmetic unit 102 of each data processing device 10 creates a right structure. That is, the calculation unit 102 of each data processing apparatus 10 firstly determines the range in which the same age is associated with the oldGOrd list created in S72 and the oldGOrd is a serial number (this range). Is also referred to as a “sequential number range.”), And the old GOrd of the serial number range represents the serial number range. Then, the arithmetic unit 102 of each data processing device 10 sets the age and the oldGOrd or the oldGOrd representing the serial number range as a “key sequence”, and sets the number of oldGOrds included in the one or the serial number range as the “number of appearances”.
  • the rows in which the keys “7” and “4” are associated with the number of appearances “2”, the keys “8” and “3” and the number of appearances “ A three-line right structure composed of a row associated with “1” and a row associated with keys “8” and “11” and the number of occurrences “1” is created.
  • the arithmetic unit 102 of each data processing device 10 creates a left structure. That is, the arithmetic unit 102 of each data processing apparatus 10 creates a left structure in which the number of occurrences of the right structure created in S72 is set to 0 and the “number of occurrences” is set to “the number of existing entities”.
  • the communication unit 101 of each data processing device 10 exchanges the right structure created in S72 with each other. That is, the communication unit 101 of each data processing device 10 transmits the right structure of the own node to all other nodes and receives the right structure transmitted from all other nodes.
  • This S74 may be executed immediately after the above S72.
  • S75-0 to S78-0 are executed at the node 0
  • S75-1 to S78-1 are executed at the node 1
  • S75-2 to S78-2 are executed at the node 2. These can be performed independently. This is because the Global @ L operation has the feature 2 described above.
  • the operation unit 102 of the data processing device 10-0 executes the L operation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-0 executes the following S75-0-0 to S75-0-2.
  • the arithmetic unit 102 of the data processing device 10-0 may include a left structure developed on different storage areas for each of the following parallel processing of S75-0-0 to S75-0-2, as the case may be. Uses the number of forward occurrences in.
  • the number of forward entities in the left structure for comparison with the right structure of node 0 and the number of forward entities in the left structure for comparison with the right structure of node 1 Use the number and the number of forward occurrences in the left structure for comparison with the right structure of node 2.
  • the Global @ L operation has the above-described feature 1, the following S75-0-0 to S75-0-2 are in no particular order.
  • the operation unit 102 of the data processing device 10-0 determines the keys "6" and “6” in the key sequence of the left structure of the own node and the right structure of the own node (node 0). The keys “6” and “6” in the key sequence are compared. In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-0 converts the keys “8” and “0” in the key sequence of the left structure of the own node and the keys “8” and “0” in the right structure of the own node (node 0). Key “6" and “6".
  • the arithmetic unit 102 determines the number of occurrences “2” corresponding to the keys “6” and “6” in the right structure and the keys “8” and “8” in the left structure.
  • the reference position of the right structure is lowered by one.
  • the number of front positions at the operation position "1" of the left structure is updated from “0" to "2”
  • the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-0 converts the keys “8” and “0” in the key sequence of the left structure of the own node and the keys “8” and “0” in the right structure of the own node (node 0). Key “8" and "0". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-0 determines that the keys “6” and “6” in the key sequence of the left structure of the own node and the keys “6” and “6” in the key structure of the right structure of the node 1 Compare keys "6" and "9". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-0 transmits the keys “8” and “0” in the key sequence of the left structure of the own node and the key “6” in the key sequence of the right structure of the node 1.
  • “And” 9 ".
  • the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “6” and “9” of the right structure by the key “8” and the key “8” of the left structure.
  • the reference position of the right structure is lowered by one.
  • the number of front positions at the operation position "1" of the left structure is updated from “0" to "1”
  • the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-0 transmits the keys “8” and “0” in the key sequence of the left structure of the own node and the key “7” in the key sequence of the right structure of the node 1. "And" 2 ".
  • the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “7” and “2” in the right structure by the key “8” and the key “8” in the left structure.
  • the reference position of the right structure is lowered by one.
  • the number of front positions at the operation position "1" of the left structure is updated from “1" to "2”
  • the reference position of the right structure is updated from "1" to "2".
  • the arithmetic unit 102 of the data processing device 10-0 transmits the keys “8” and “0” in the key sequence of the left structure of the own node and the key “7” in the key sequence of the right structure of the node 1. "And” 8 ".
  • the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “7” and “8” of the right structure by the key “8” and the key “8” of the left structure.
  • the reference position of the right structure is lowered by one.
  • the number of front positions at the operation position "1" of the left structure is updated from “2" to "3”
  • the reference position of the right structure is updated from "2" to "3".
  • the arithmetic unit 102 of the data processing device 10-0 transmits the keys “8” and “0” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 1. "And" 10 ". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the operation unit 102 of the data processing device 10-0 transmits the keys “6” and “6” in the key sequence of the left structure of the own node and the keys “6” and “6” in the key sequence of the right structure of the node 2. Compare keys "7” and "4". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-0 determines that the keys “8” and “0” in the key sequence of the left structure of the own node and the key “7” in the key sequence of the right structure of the node 2 "And” 4 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “2” corresponding to the keys “7” and “4” of the right structure by the key “8” and the key “8” of the left structure. After adding to the number of forward entities corresponding to “0”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "1" of the left structure is updated from “0" to "2", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-0 determines that the keys “8” and “0” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 2 "And” 3 ". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-0 calculates the total number of the front structures existing in the left structure. That is, the arithmetic unit 102 of the data processing device 10-0 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2 The sum of the number of existing objects is calculated with the left structure for comparison with the structure.
  • the forward number (total) corresponding to the age “6” and the oldGOrd “6” is “0”
  • the forward number (total) corresponding to the age “8” and the oldGOrd “0” is “7”. Becomes
  • the arithmetic unit 102 of the data processing device 10-0 accumulates the (total) number of forward entities calculated in S76-0.
  • the calculation unit 102 of the data processing device 10-0 keeps the number of forward entities corresponding to the age “6” and the old GOrd “6” as it is, while maintaining the number of the forward entities corresponding to the age “8” and the old GOrd “0”.
  • the number is defined as the number of front existences corresponding to the age “6” and the old GOrd “6” + the number of front existences corresponding to the age “8” and the old GOrd “0”.
  • the number of front existences corresponding to the age “6” and the old GOrd “6” is “0”, and the number of front existences corresponding to the age “8” and the old GOrd “0” is “7”.
  • This forward existence number becomes the start number of GOrd for each oldGOrd in node 0.
  • the start number of the GOrd of the age “6” and the old GOrd “6” of the node 0 is “0”
  • the start number of the GOrd of the age “8” and the old GOrd “0” is “6”.
  • the arithmetic unit 102 of the data processing device 10-0 uses the number of forward existences accumulated in S77-0 and the number of appearances obtained in S72 to calculate the above-mentioned S71.
  • the GOrd list of the own node created in the step is updated. That is, the arithmetic unit 102 of the data processing device 10-0 stores, in the GOrd list, a value obtained by adding the number of appearances one by one from the top, starting from the number of occurrences in front, for each age and oldGOrd.
  • the GOrd list of the node 0 includes GOrd “0” at the storage position “0”, GOrd “1” at the storage position “1”, GOrd “7” at the storage position “2”, and “GOrd” at the storage position “3”.
  • GOrd “8” is stored.
  • the operation unit 102 of the data processing device 10-1 executes the L operation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-1 executes the following S75-1-0 to S75-1-2. Here, the arithmetic unit 102 of the data processing device 10-1 may perform the following parallel processing of S75-1-0 to S75-1-2. Uses the number of forward occurrences in. In other words, for parallel processing, in some cases, the number of forward entities in the left structure for comparison with the right structure of node 0 and the number of forward entities in the left structure for comparison with the right structure of node 1 Use the number and the number of forward occurrences in the left structure for comparison with the right structure of node 2. Since the Global @ L operation has the above-described feature 1, the following S75-1-0 to S75-1-2 are in no particular order.
  • the arithmetic unit 102 of the data processing device 10-1 determines that the keys "6" and “9” in the key sequence of the left structure of the own node and the key sequence of the right structure of the node 0 Compare keys "6" and "6". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “2” corresponding to the keys “6” and “6” in the right structure and the keys “6” and “6” in the left structure. After adding to the number of forward entities corresponding to “9”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "0" of the left structure is updated from “0" to "2", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “6” and “9” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “7” and “2” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “1” to “2”.
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “7” and “8” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “2” to “3”.
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “8” and “10” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “2” corresponding to the keys “8” and “0” of the right structure and the keys “8” and “8” of the left structure. The number is added to the number of forward entities corresponding to “10”. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of presences in front of the operation position “3” of the left structure is updated from “0” to “2”.
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “6” and “9” in the key sequence of the left structure of the own node with the right structure of the own node (node 1). The keys "6" and “9” in the key sequence are compared. In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “7” and “2” in the key string of the left structure of the own node with the keys in the right string of the own node (node 1). Key “6” and “9". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “6” and “9” of the right structure by the key “7” and the key “7” of the left structure. After adding to the forward existence number corresponding to “2”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "1" of the left structure is updated from “0" to "1", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “7” and “2” in the key string of the left structure of the own node with the keys in the right string of the own node (node 1). Key “7” and “2". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “1” to “2”.
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “7” and “8” in the key string of the left structure of the own node with the keys in the right string of the own node (node 1). Key “7” and “2". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “7” and “2” of the right structure by the keys “7” and “7” of the left structure. After adding to the number of forward entities corresponding to "8", the reference position of the right structure is lowered by one. As a result, the number of front entities at the operation position "2" of the left structure is updated from “0" to "1", and the reference position of the right structure is updated from "1" to "2".
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “7” and “8” in the key string of the left structure of the own node with the keys in the right string of the own node (node 1). Key “7” and “8". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “2” to “3”.
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “8” and “10” in the key string of the left structure of the own node with the keys of the right structure of the own node (node 1). Key “7” and “8". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “7” and “8” of the right structure by the key “8” and the key “8” of the left structure. After adding to the number of forward entities corresponding to “10”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "3" of the left structure is updated from “0" to "1", and the reference position of the right structure is updated from "2" to "3".
  • the arithmetic unit 102 of the data processing device 10-1 compares the keys “8” and “10” in the key string of the left structure of the own node with the keys of the right structure of the own node (node 1). Key "8” and "10". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “6” and “9” in the key sequence of the left structure of the own node and the keys “6” and “9” in the key structure of the right structure of the node 2. Compare keys "7" and "4". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-1 determines the keys “7” and “2” in the key sequence of the left structure of the own node and the key “7” in the key sequence of the right structure of the node 2 "And” 4 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “1” to “2”.
  • the arithmetic unit 102 of the data processing device 10-1 determines that the keys “7” and “8” in the key sequence of the left structure of the own node and the key “7” in the key sequence of the right structure of the node 2 "And” 4 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of appearances “2” corresponding to the keys “7” and “4” of the right structure by the keys “7” and “7” of the left structure. After adding to the number of forward entities corresponding to "8", the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "2" of the left structure is updated from “0" to "2", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-1 determines that the keys “7” and “8” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 2 "And” 3 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “2” to “3”.
  • the arithmetic unit 102 of the data processing device 10-1 determines that the keys “8” and “10” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 2 "And” 3 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “8” and “3” of the right structure by the key “8” and the key “8” of the left structure. After adding to the number of forward entities corresponding to “10”, the reference position of the right structure is lowered by one. As a result, the number of front entities at the operation position "3" of the left structure is updated from “0" to "1", and the reference position of the right structure is updated from "1" to "2".
  • the arithmetic unit 102 of the data processing device 10-1 determines that the keys “8” and “10” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 2 "And” 11 ". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-1 calculates the total number of the front structures of the left structure. That is, the arithmetic unit 102 of the data processing device 10-1 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2 The sum of the number of existing objects is calculated with the left structure for comparison with the structure. As a result, the forward number (total) corresponding to age “6” and oldGOrd “9” is “2”, and the forward number (total) corresponding to age “7” and oldGOrd “2” is “1”.
  • the number of forward existences (total) corresponding to the age “7” and the old GOrd “8” is “3”
  • the number of forward existences (total) corresponding to the age “8” and the old GOrd “10” is “4”.
  • the arithmetic unit 102 of the data processing device 10-1 accumulates the (total) number of forward entities calculated in S76-1. That is, the arithmetic unit 102 of the data processing device 10-1 sets the number of front keys of each key to the sum of the numbers of all key keys below the key.
  • the number of front existences corresponding to the age “6” and the old GOrd “9” is “2”
  • the number of front existences corresponding to the age “7” and the old GOrd “2” is “3”
  • the number of front existences corresponding to “8” is “6”
  • the number of front existences corresponding to age “8” and oldGOrd “10” is “10”.
  • This forward existence number becomes the age and the start number of GOrd for each oldGOrd in the node 1.
  • the start number of the GOrd of the age “6” and the old GOrd “9” of the node 1 is “2”
  • the start number of the GOrd of the age “7” and the old GOrd “2” is “3”
  • the start number of GOrd of “8” is “6”
  • the start number of GOrd of age “8” and oldGOrd “10” is “10”.
  • the arithmetic unit 102 of the data processing device 10-1 uses the forward presence number accumulated in S77-1 and the number of appearances obtained in S72 to calculate the S71.
  • the GOrd list of the own node created in the step is updated. That is, the arithmetic unit 102 of the data processing device 10-1 stores, in the GOrd list, a value obtained by adding one by one from the top to the number of appearances and sequentially from the top for each age and oldGOrd.
  • the GOrd list of the node 1 includes GOrd “2” at the storage position “0”, GOrd “3” at the storage position “1”, GOrd “6” at the storage position “2”, and GOrd “6” at the storage position “3”.
  • GOrd “10” is stored.
  • the calculation unit 102 of the data processing device 10-2 executes the L calculation according to the key comparison condition ">". Specifically, the arithmetic unit 102 of the data processing device 10-2 executes the following S75-2-0 to S75-2-2. Here, the arithmetic unit 102 of the data processing device 10-2 may perform the following parallel processing of S75-2-0 to S75-2-2. Uses the number of forward occurrences in. In other words, for parallel processing, in some cases, the number of forward entities in the left structure for comparison with the right structure of node 0 and the number of forward entities in the left structure for comparison with the right structure of node 1 Use the number and the number of forward occurrences in the left structure for comparison with the right structure of node 2. Since the Global @ L operation has the above-described feature 1, the following S75-2-0 to S75-2-2 are in no particular order.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “7” and “4” in the key sequence of the left structure of the own node and the keys “7” and “4” in the right structure of the node 0. Compare keys "6" and "6". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 calculates the number of occurrences “2” corresponding to the keys “6” and “6” of the right structure and the keys “7” and “7” of the left structure. After adding to the number of forward entities corresponding to “4”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "0" of the left structure is updated from “0" to "2", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “7” and “4” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “8” and “3” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 0. "And" 0 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “2” corresponding to the keys “8” and “0” of the right structure and the keys “8” and “8” of the left structure. The number is added to the number of forward entities corresponding to “3”. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of front positions at the operation position “1” of the left structure is updated from “0” to “2”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “7” and “4” in the key string of the left structure of the own node and the keys “7” and “4” in the key structure of the right structure of the node 1. Compare keys "6" and "9". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “6” and “9” of the right structure by the key “7” and the key “7” of the left structure. After adding to the number of forward entities corresponding to “4”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position “0” of the left structure is updated from “0” to “1”, and the reference position of the right structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “7” and “4” in the key sequence of the left structure of the own node and the key “7” in the key sequence of the right structure of the node 1. "And" 2 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “7” and “2” of the right structure by the keys “7” and “7” of the left structure. After adding to the number of forward entities corresponding to “4”, the reference position of the right structure is lowered by one. As a result, the number of front entities at the operation position “0” of the left structure is updated from “1” to “2”, and the reference position of the right structure is updated from “1” to “2”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “7” and “4” in the key sequence of the left structure of the own node and the key “7” in the key sequence of the right structure of the node 1. "And" 9 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “8” and “3” in the key sequence of the left structure of the own node and the key “7” in the key sequence of the right structure of the node 1. "And” 9 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “7” and “9” in the right structure by the key “8” and the key “8” in the left structure. After adding to the number of forward entities corresponding to “3”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "1" of the left structure is updated from “0" to "1", and the reference position of the right structure is updated from "2" to "3".
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “8” and “3” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 1. "And" 10 ". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “1” to “2”.
  • the arithmetic unit 102 of the data processing device 10-2 determines the keys “8” and “11” in the key sequence of the left structure of the own node and the key “8” in the key sequence of the right structure of the node 1. "And" 10 ". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of appearances “1” corresponding to the keys “8” and “10” of the right structure by the key “8” and the key “8” of the left structure. The number is added to the number of forward entities corresponding to “11”. Then, the operation unit 102 lowers the reference position of the right structure by one, but cannot further lower the reference position, and thus terminates the L operation. As a result, the number of presences in front of the operation position “2” of the left structure is updated from “0” to “1”.
  • the operation unit 102 of the data processing device 10-2 determines the keys “7” and “4” in the key sequence of the left structure of the own node and the right structure of the own node (node 2). The keys "7” and “4" in the key sequence are compared. In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “0” to “1”.
  • the arithmetic unit 102 of the data processing device 10-2 compares the keys “8” and “3” in the key string of the left structure of the own node with the keys of the right structure of the own node (node 2). Key “7” and "4". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “2” corresponding to the keys “7” and “4” of the right structure by the key “8” and the key “8” of the left structure. After adding to the number of forward entities corresponding to “3”, the reference position of the right structure is lowered by one. As a result, the number of front positions at the operation position "1" of the left structure is updated from “0" to "2", and the reference position of the right structure is updated from "0" to "1".
  • the arithmetic unit 102 of the data processing device 10-2 compares the keys “8” and “3” in the key string of the left structure of the own node with the keys of the right structure of the own node (node 2). Key “8" and key “3". In this case, since the key comparison condition “>” is not satisfied, the arithmetic unit 102 lowers the operation position of the left structure by one. Thereby, the operation position of the left structure is updated from “1” to “2”.
  • the arithmetic unit 102 of the data processing device 10-2 compares the keys “8” and “11” in the key string of the left structure of the own node with the keys of the right structure of the own node (node 2). Key “8" and key “3". In this case, since the key comparison condition “>” is satisfied, the arithmetic unit 102 determines the number of occurrences “1” corresponding to the keys “8” and “3” of the right structure by the key “8” and the key “8” of the left structure. After adding to the number of forward entities corresponding to “11”, the reference position of the right structure is lowered by one. As a result, the number of front entities at the operation position “2” of the left structure is updated from “0” to “1”, and the reference position of the right structure is updated from “1” to “2”.
  • the arithmetic unit 102 of the data processing device 10-2 compares the keys “8” and “11” in the key string of the left structure of the own node with the keys of the right structure of the own node (node 2). Key "8" and "11". In this case, since the key comparison condition “>” is not satisfied, the operation unit 102 lowers the operation position of the left structure by one, but cannot further lower the operation position. finish.
  • the arithmetic unit 102 of the data processing device 10-2 calculates the total number of the front structures of the left structure. That is, the arithmetic unit 102 of the data processing device 10-2 includes a left structure for comparison with the right structure of the node 0, a left structure for comparison with the right structure of the node 1, and a right structure of the node 2. The sum of the number of existing objects is calculated with the left structure for comparison with the structure. As a result, the number of forward existences (total) corresponding to age “7” and oldGOrd “4” is “4”, and the number of forward existences (total) corresponding to age “8” and oldGOrd “3” is “5”. , The age (8) and the old GOrd (11) (the total number of forwards) are “2”.
  • the arithmetic unit 102 of the data processing device 10-2 accumulates (total of) the number of forward entities calculated in S76-2. That is, the arithmetic unit 102 of the data processing device 10-2 sets the number of front presences of each key to the sum of the number of front presences of all keys below the key.
  • the number of front existences corresponding to the age “7” and the old GOrd “4” is “4”
  • the number of front existences corresponding to the age “8” and the old GOrd “3” is “9”
  • the number of forward entities corresponding to “11” is “11”. This forward existence number becomes the age and the start number of GOrd for each oldGOrd in the node 2.
  • the start number of the GOrd of the age “7” and the old GOrd “4” of the node 2 is “4”
  • the start number of the GOrd of the age “8” and the old GOrd “3” is “9”
  • the age “8” and the old GOrd is “11”.
  • the arithmetic unit 102 of the data processing device 10-2 uses the number of forward existences accumulated in the above S77-2 and the number of appearances obtained in the above S72 to calculate the above S71.
  • the GOrd list of the own node created in the step is updated. That is, the arithmetic unit 102 of the data processing device 10-2 stores, in the GOrd list, a value obtained by adding the number of appearances one by one from the top, starting from the number of occurrences before, for each age and oldGOrd.
  • the GOrd list of the node 2 includes GOrd “4” at the storage location “0”, GOrd “5” at the storage location “1”, GOrd “9” at the storage location “2”, and the storage location “3”. GOrd “11” is stored.
  • GOrd is stored in each GOrd list created in S71.
  • a partial table to which GOrd (and a record number) is assigned is obtained in each data processing device 10, and a sorting result (a sorting result in a subset) in the entire data processing device 10 is obtained from the GOrd.
  • Both the right structure and the left structure may have an enormous number of rows, and there are cases where it is desired to divide the data structure during data processing.
  • the right structure since the right structure is exchanged by communication between nodes, it may be desirable to divide the right structure into a size that facilitates communication.
  • FIG. 27 is a diagram illustrating an example of division of the right structure. Note that the left structure can be divided similarly to the right structure.
  • the right structure is formed by dividing the consecutive rows into one right structure. Can be divided into an arbitrary number (however, n or less) of right structures.
  • each divided right structure is also referred to as a “divided right structure”.
  • N 3 as an example, and shows a case where the structure is divided into three: a divided right structure 1, a divided right structure 2, and a divided right structure 3.
  • the L operation of each divided right structure and the left structure can obtain the same operation result as the L operation of the right (undivided) structure and the left structure.
  • the arithmetic unit 102 when performing the L operation of each divided right structure and the left structure, performs the L operation of the divided right structure and the left structure each time the divided right structure is received. It is sufficient to start from the operation position “0”, but in this case, the efficiency is not good.
  • FIG. 28 is a diagram for explaining an example of the efficiency of the comparison operation between the left structure and the right structure after division.

Landscapes

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

Abstract

1以上のレコードが格納されたテーブルを各々が保持する複数のノードが含まれるデータ処理システムであって、前記ノードの各々は、所定のL演算で被参照側となる構造体を示す右構造体を、自ノードが保持する前記テーブルから作成する右構造体作成手段と、前記L演算で被操作側となる構造体を示す左構造体を前記右構造体から作成する左構造体作成手段と、前記右構造体作成手段により作成した右構造体を、他のノードに対して送信する送信手段と、前記他のノードで作成された右構造体を受信する受信手段と、前記左構造体と、前記右構造体作成手段により作成した右構造体及び前記受信手段により受信した右構造体の各々とで前記L演算を行う演算手段と、前記演算手段による演算結果を用いて、自ノードが保持する前記テーブルに格納されている1以上のレコードに対して、前記複数のノードの各々が保持するテーブルに格納されている全てのレコード間での順序を付与する順序付与手段と、を有することを特徴とする。

Description

データ処理システム、データ処理装置、データ処理方法及びプログラム
 本発明は、データ処理システム、データ処理装置、データ処理方法及びプログラムに関する。
 各要素間に何等かの順序が定義された順序集合は、レコードと、このレコードを格納するテーブルとで表現される。このとき、順序集合の各要素(レコード)をソートする場合、種々の方法が従来から知られている。これらの方法について、データ項目「Age」、「Gender」、「Address」で構成される複数のレコードを「Age」の昇順にソートする場合を例として説明する。
 第一の方法としては、テーブル内におけるレコードの格納位置を変更する方法が挙げられる。この場合、図1Aに示すように、ソートの前後でレコードの格納位置が変更され得る。例えば、ソート前に格納位置「0」に格納されていたレコード(Age「8」のレコード)は、ソート後では格納位置「2」に格納される。
 第二の方法としては、レコード間の順序を示すレコード番号(以降、「RecNo」とも表す。)が格納されたレコード番号リストを用いる方法が挙げられる。ここで、レコード番号リストには、同一格納位置のレコードのレコード番号が格納されている。すなわち、レコード番号リストの格納位置「n」には、テーブルの格納位置「n」のレコードのレコード番号が格納される。この場合、図1Bに示すように、ソートの前後でレコード番号の格納位置が変更され得る。例えば、レコード番号「0」は、ソート前ではレコード番号リストの格納位置「0」に格納されているが、ソート後ではレコード番号リストの格納位置「2」に格納される。この第二の方法は、レコードのサイズが大きい場合であっても、第一の方法と比較して、メモリのコピー量が少なく高速である。また、真部分集合(例えば、Genderが「F」のレコードのみで構成される順序集合)も、元のテーブルを保持したまま表現可能である。
 また、第三の方法として、複数のテーブルにレコードが分散して格納されている場合に、これらのテーブル間におけるレコードの統一的な順序を示すGOrd(これは、「Global Order」の略である。)を用いて、レコードをソートする方法が知られている(特許文献1参照)。例えば、図2に示すように、テーブル1とテーブル2とが存在し、これらテーブル1とテーブル2とにそれぞれ格納されているレコードを「Age」の昇順にソートする場合、GOrdは、1つのテーブル内で昇順になるように決定され、テーブル1とテーブル2との間の統一的な順序を表す。例えば、GOrd「0」のレコードは、テーブル1におけるレコード番号「3」のレコードである。同様に、例えば、GOrd「1」のレコードは、テーブル1におけるレコード番号「1」のレコードである。同様に、例えば、GOrd「2」のレコードは、テーブル2におけるレコード番号「3」のレコードである。以降、GOrd「3」~「7」についても同様である。この第三の方法は、第二の方法と同様に、高速で、かつ、真部分集合も元のテーブルを保持したまま表現可能である。また、GOrdが同一テーブル内で昇順となることからレコードの検索も高速に行うことができる。
特許第4620593号公報
 しかしながら、上記の第一の方法~第三の方法は、単一のノード(コンピュータ)内のデータ(レコード)をソートする場合に有効な手法であり、複数のノードに分散して保持されているデータをソートする場合には多くの時間を要する。これは、ノード間でのデータ参照は、一般に、単一のノード内でのデータ参照に比べて数百倍以上の時間を要するためである。このことは、複数のノードに分散して保持されているデータを検索や集計する場合についても同様である。
 本発明は、上記の点に鑑みてなされたもので、複数のノードに分散して保持されているデータの高速なソート、検索、集計を実現することを目的とする。
 上記目的を達成するため、本発明のデータ処理システムは、1以上のレコードが格納されたテーブルを各々が保持する複数のノードが含まれるデータ処理システムであって、前記ノードの各々は、所定のL演算で被参照側となる構造体を示す右構造体を、自ノードが保持する前記テーブルから作成する右構造体作成手段と、前記L演算で被操作側となる構造体を示す左構造体を前記右構造体から作成する左構造体作成手段と、前記右構造体作成手段により作成した右構造体を、他のノードに対して送信する送信手段と、前記他のノードで作成された右構造体を受信する受信手段と、前記左構造体と、前記右構造体作成手段により作成した右構造体及び前記受信手段により受信した右構造体の各々とで前記L演算を行う演算手段と、前記演算手段による演算結果を用いて、自ノードが保持する前記テーブルに格納されている1以上のレコードに対して、前記複数のノードの各々が保持するテーブルに格納されている全てのレコード間での順序を付与する順序付与手段と、を有することを特徴とする。
 複数のノードに分散して保持されているデータの高速なソート、検索、集計を実現することができる。
従来技術の一例を説明するための図(その1)である。 従来技術の一例を説明するための図(その1)である。 従来技術の一例を説明するための図(その2)である。 左構造体及び右構造体の一例を示す図である。 L演算(キー比較条件">")の一例を説明するための図である。 L演算(キー比較条件"=")の一例を説明するための図である。 全体テーブルと各ノードが保持する部分テーブルとの関係の一例を説明するための図である。 本発明の実施の形態におけるデータ処理システムの全体構成の一例を示す図である。 本発明の実施の形態におけるデータ処理装置のハードウェア構成の一例を示す図である。 本発明の実施の形態におけるデータ処理装置の機能構成の一例を示す図である。 全体テーブルと各ノードが保持する部分テーブルとの具体例を示す図である。 検索の一例を説明するための図(その1)である。 検索の一例を説明するための図(その1)である。 検索の一例を説明するための図(その2)である。 検索の一例を説明するための図(その3)である。 検索の一例を説明するための図(その4)である。 集計の一例を説明するための図(その1)である。 集計の一例を説明するための図(その2)である。 単項目ソートの一例を説明するための図(その1)である。 単項目ソートの一例を説明するための図(その1)である。 単項目ソートの一例を説明するための図(その2)である。 単項目ソートの一例を説明するための図(その2)である。 単項目ソートの一例を説明するための図(その2)である。 単項目ソートの一例を説明するための図(その3)である。 単項目ソートの一例を説明するための図(その3)である。 単項目ソートの一例を説明するための図(その3)である。 単項目ソートの一例を説明するための図(その4)である。 単項目ソートの一例を説明するための図(その4)である。 単項目ソートの一例を説明するための図(その4)である。 複数項目ソートの一例を説明するための図である。 複数項目ソートの一例を説明するための図である。 部分集合の一例を説明するための図である。 部分集合でのソートの一例を説明するための図(その1)である。 部分集合でのソートの一例を説明するための図(その1)である。 部分集合でのソートの一例を説明するための図(その2)である。 部分集合でのソートの一例を説明するための図(その2)である。 部分集合でのソートの一例を説明するための図(その2)である。 部分集合でのソートの一例を説明するための図(その3)である。 部分集合でのソートの一例を説明するための図(その3)である。 部分集合でのソートの一例を説明するための図(その3)である。 部分集合でのソートの一例を説明するための図(その4)である。 部分集合でのソートの一例を説明するための図(その4)である。 部分集合でのソートの一例を説明するための図(その4)である。 右構造体の分割の一例を説明するための図である。 左構造体と分割後の右構造体との比較操作の効率化の一例を説明するための図である。 左構造体と分割後の右構造体との比較操作の効率化の一例を説明するための図である。
 以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。以降の本発明の実施の形態では、上述した第三の方法を複数のノード間でのソートに拡張することで、これらの複数のノードの各々が保持しているテーブルに格納されているレコードの高速なソートを実現する場合について説明する。これにより、複数のノードに分散して保持されているデータの高速なソートを実現することができる。なお、ソートを実現することができれば、集計や検索、JOIN等も可能となる。以降では、ソートや集計、検索、JOIN等を「データ処理」とも表す。
 <L演算>
 まず、ソート等の各種データ処理を実現するためのL演算(Ladder Operation)を定義する。L演算は、相互に比較可能な昇順キー列を持つ二つの構造体間で定義される。これらの二つの構造体のうち、一方は被操作側の構造体(以降、「左構造体」と表す。)であり、他方は被参照側の構造体(以降、「右構造体」と表す。)である。
 L演算とは、左構造体の昇順キー列中のキーと、右構造体の昇順キー列中のキーとをキー比較条件(">"又は"="のいずれか)により比較し、左構造体中の操作位置を定めた上で、その操作位置に対して各種操作(例えば、フラグのセット又はリセット、加算、その他の各種計算)の結果を格納する演算又は処理のことである。
 なお、昇順キー列は、複数の値を連結したキーの列や複数の値を1つの組で表したキーの列等であっても良い。また、キーとして、文字列等の取り扱いに時間の掛かる値を用いる場合は、当該値(例えば文字列等)を整数化することでL演算の高速化や処理の単純化を図ることができる。更に、この整数化により、例えば符号を反転することで、L演算により実現される昇順ソートと同様に、降順ソートもL演算により実現することができる。ただし、降順ソートは、この整数化を行わなくても、より一般的には、右構造体及び左構造体のキーを降順にした上で、キー比較条件として">"の代わりに"<"を用いることでも実現することができる。なお、以降では、単に「ソート」と表した場合は、昇順ソートを意味するものとする。
 以降では、一例として、図3に示す左構造体及び右構造体を用いて、具体的なL演算の例を説明する。図3に示す左構造体は、4行の構造体であり、昇順キー列として「10」、「20」、「30」、「40」が含まれ、これらのキーには「0」に初期化された結果格納領域(すなわち、各種操作の操作結果が格納される領域)が対応付けられている。また、図3に示す右構造体は、3行の構造体であり、昇順キー列として「10」、「15」、「20」が含まれ、これらのキーには加算値「2」、「1」、「3」が対応付けられている。
  (L演算(キー比較条件">"))
 まず、キー比較条件が">"であるL演算について、図4を参照しながら説明する。図4は、L演算(キー比較条件">")の一例を説明するための図である。
 S11)まず、左構造体の操作位置は「0」、右構造体の参照位置は「0」であるため、左構造体の昇順キー列中のキー「10」と、右構造体の昇順キー列中のキー「10」とを比較する。この場合、キー比較条件">"が成り立たないため、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 S12)次に、左構造体の昇順キー列中のキー「20」と、右構造体の昇順キー列中のキー「10」とを比較する。この場合、キー比較条件">"が成り立つため、右構造体のキー「10」に対応する加算値「2」を、左構造体のキー「20」に対応する結果格納領域に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の結果格納領域に格納されている値が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 S13)次に、左構造体の昇順キー列中のキー「20」と、右構造体の昇順キー列中のキー「15」とを比較する。この場合、キー比較条件">"が成り立つため、右構造体のキー「15」に対応する加算値「1」を、左構造体のキー「20」に対応する結果格納領域に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の結果格納領域に格納されている値が「2」から「3」に更新されると共に、右構造体の参照位置が「1」から「2」に更新される。
 S14)次に、左構造体の昇順キー列中のキー「20」と、右構造体の昇順キー列中のキー「20」とを比較する。この場合、キー比較条件">"が成り立たないため、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「1」から「2」に更新される。
 S15)次に、左構造体の昇順キー列中のキー「30」と、右構造体の昇順キー列中のキー「20」とを比較する。この場合、キー比較条件">"が成り立つため、右構造体のキー「20」に対応する加算値「3」を、左構造体のキー「30」に対応する結果格納領域に加算する。一方で、右構造体の現在の参照位置は「2」であり、これ以上、参照位置を下げることはできないため、L演算は終了となる。これにより、左構造体の操作位置「2」の結果格納領域に格納されている値が「0」から「3」に更新された上で、L演算が終了する。
  (L演算(キー比較条件"="))
 次に、キー比較条件が"="であるL演算について、図5を参照しながら説明する。図5は、L演算(キー比較条件"=")の一例を説明するための図である。
 S21)まず、左構造体の操作位置は「0」、右構造体の参照位置は「0」であるため、左構造体の昇順キー列中のキー「10」と、右構造体の昇順キー列中のキー「10」とを比較する。この場合、キー比較条件"="が成り立つため、右構造体のキー「10」に対応する加算値「2」を、左構造体のキー「10」に対応する結果格納領域に加算した上で、右構造体の参照位置と左構造体の操作位置とを一つ下げる。これにより、左構造体の操作位置「0」の結果格納領域に格納されている値が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に、左構造体の操作位置が「0」から「1」に更新される。
 S22)次に、左構造体の昇順キー列中のキー「20」と、右構造体の昇順キー列中のキー「15」とを比較する。この場合、キー比較条件"="が成り立たないため、左構造体のキー「20」及び右構造体のキー「15」のうち、キーの値が小さい方の構造体の位置(操作位置又は参照位置)を一つ下げる。図5に示す例では、右構造体のキー「15」の方が小さいため、右構造体の参照位置を一つ下げる。これにより、右構造体の参照位置が「1」から「2」に更新される。
 S23)次に、左構造体の昇順キー列中のキー「20」と、右構造体の昇順キー列中のキー「20」とを比較する。この場合、キー比較条件"="が成り立つため、右構造体のキー「20」に対応する加算値「3」を、左構造体のキー「20」に対応する結果格納領域に加算する。一方で、右構造体の現在の参照位置は「2」であり、これ以上、参照位置を下げることはできないため、L演算は終了となる。これにより、左構造体の操作位置「2」の結果格納領域に格納されている値が「0」から「3」に更新された上で、L演算が終了する。
  (L演算の性質)
 上述した定義により、L演算の性質として、以下の(1)及び(2)の性質があることがわかる。
 左構造体がm行、右構造体がn行あるとした場合、(1)キー比較条件による比較回数はm+n回以下、(2)操作位置に対する各種操作結果の格納回数はn回以下、である。
 なお、以降では、右構造体及び左構造体のキー列は昇順であることを前提として、昇順キー列を単に「キー列」とも表す。
 <Global L演算>
 K個の順序付けられたノードがあり、これらK個のノードは何等かの経路(ネットワーク)で相互に通信可能に結合されているものとする。
 また、テーブル(これを「全体テーブル」とも表す。)が存在し、この全体テーブルが上から順にK個に分割され、各ノードは、当該ノードの番号(以降、「ノード番号」とも表す。)に対応した分割部分のテーブル(これを「部分テーブル」とも表す。)を保持しているものとする。すなわち、図6に示すように、N個のレコードで構成される全体テーブルが存在し、この全体テーブルを上から順に部分テーブル0、部分テーブル1、・・・、部分テーブルK-1と分割した場合、k(0≦k≦K-1)番目のノードを「ノードk」として、部分テーブル0はノード0が、部分テーブル1はノード1が、・・・、部分テーブルK-1はノードK-1が保持しているものとする(つまり、部分テーブルkはノードkが保持しているものとする。)。以降では、全体テーブルが上から順にK個に分割された場合に、各ノードが、自身のノード番号kに対応する部分テーブルkを保持していることを「安定性前提」と呼ぶ。
 このとき、K個のノード間で相互に右構造体を交換し、各ノード内でK回のL演算(自ノードの右構造体とのL演算も含む)を行う演算を「Global L演算」と表す。
 Global L演算には、以下の3つの特徴がある。
 (特徴1)演算処理の非順序性
 各ノード内のK回のL演算は、どの順番で演算処理を行っても最終的な演算結果が同じになる。
 この特徴1により、例えば、スーパーコンピュータ等のように多数のノードで構成されるシステムであってもタスクスイッチを容易に実現することができるようになる。すなわち、Global L演算の演算処理の非順序性により、ノード間で異なるタスクが実行されていたとしても、タスク終了後にL演算を行うことで各ノードは正しい演算結果を得ることができるため、タスクスイッチが容易になる。
 (特徴2)演算処理の並列性
 各ノード内のK回のL演算は並列に実行することが可能である。各L演算同士は独立しているためである。
 (特徴3)多様な分散アーキテクチャに対応可能
 各ノードが順序付けられ、かつ、各ノードが自ノードのノード番号に対応する部分テーブルを保持していることだけが条件であり、各ノード相互を結合するネットワークのトポロジ等に依らずに、演算処理を実行することができる。
 <データ処理システム1の全体構成>
 以降では、上述したGlobal L演算により、ソートも含めたデータ処理(例えば、ソートや集計、検索、JOIN等)を実現可能なデータ処理システム1について説明する。
 まず、本発明の実施の形態におけるデータ処理システム1の全体構成について、図7を参照しながら説明する。図7は、本発明の実施の形態におけるデータ処理システム1の全体構成の一例を示す図である。
 図7に示すように、本発明の実施の形態におけるデータ処理システム1には、K個のデータ処理装置10が含まれる。また、これらK個のデータ処理装置10は、任意のネットワークを介して相互に通信可能に接続される。
 各データ処理装置10は、上述したノードとなるコンピュータである。すなわち、各データ処理装置10は、順序付けられ、かつ、自ノードのノード番号に対応する部分テーブルを保持している。
 以降では、一例として、K=3であるものとして、データ処理システム1に含まれるデータ処理装置10を「データ処理装置10-0」、「データ処理装置10-1」及び「データ処理装置10-2」とも表し、データ処理装置10-0のノード番号を「0」、データ処理装置10-1のノード番号を「1」、データ処理装置10-2のノード番号を「2」とする。また、ノード番号0のノードを「ノード0」、ノード番号1のノードを「ノード1」、ノード番号2のノードを「ノード2」とも表す。
 なお、図7に示すデータ処理システム1の構成は一例であって他の構成であっても良い。例えば、Kを2以上として、データ処理システム1には、任意のK個のデータ処理装置10が含まれていても良い。例えば、データ処理システム1がスーパーコンピュータ等である場合、一般に、Kは、数万個程度となることがある。
 <データ処理装置10のハードウェア構成>
 次に、本発明の実施の形態におけるデータ処理装置10のハードウェア構成について、図8を参照しながら説明する。図8は、本発明の実施の形態におけるデータ処理装置10のハードウェア構成の一例を示す図である。
 図8に示すように、本発明の実施の形態におけるデータ処理装置10は、ハードウェアとして、プロセッサ11と、メモリ12と、通信I/F13とを有する。これら各ハードウェアは、それぞれがバス14を介して通信可能に接続されている。
 プロセッサ11は、例えばCPU(Central Processing Unit)等であり、各種処理を実行する演算装置である。メモリ12は、例えばRAM(Random Access Memory)やROM(Read Only Memory)、補助記憶装置等であり、各種プログラムやデータを記憶する。通信I/F13は、データ処理装置10をネットワークに接続するためのインタフェースである。
 本発明の実施の形態におけるデータ処理装置10は、図8に示すハードウェアを有することにより、ソート等のデータ処理を実現することができる。なお、本発明の実施の形態におけるデータ処理装置10は、図8に示すハードウェアに加えて、例えば、キーボードやマウス等の入力装置、ディスプレイ等の表示装置等を有していても良い。
 <データ処理装置10の機能構成>
 次に、本発明の実施の形態におけるデータ処理装置10の機能構成について、図9を参照しながら説明する。図9は、本発明の実施の形態におけるデータ処理装置10の機能構成の一例を示す図である。
 図9に示すように、本発明の実施の形態におけるデータ処理装置10は、機能部として、通信部101と、演算部102とを有する。これら各機能部は、データ処理装置10にインストールされた1以上のプログラムがプロセッサ11に実行させる処理により実現される。
 また、本発明の実施の形態におけるデータ処理装置10は、記憶部103を有する。当該記憶部103は、例えばメモリ12等を用いて実現可能である。
 記憶部103は、自ノードのノード番号に対応する部分テーブルを記憶している。通信部101は、他のノードとの間でデータの送受信(すなわち、自ノードの右構造体の送信と他のノードの右構造体の受信)を行う。演算部102は、左構造体及び右構造体の作成と、L演算を含む各種演算とを行う。演算部102により各種演算が行われることで、ソートや集計、検索、JOIN等のデータ処理が実現される。
 <全体テーブルと各ノードが保持するテーブルとの具体例>
 次に、全体テーブルと、ノード1~ノード3の各ノードが保持する部分テーブルとの具体例について、図10を参照しながら説明する。図10は、全体テーブルと各ノードが保持する部分テーブルとの具体例を示す図である。
 図10に示すように、全体テーブルには、データ項目「Gender」及び「Age」で構成される12個のレコードが格納されているものとする。
 このとき、この全体テーブルに格納されているレコードのうち、格納位置「0」~「3」に格納されているレコードで構成される部分テーブルを、ノード0が保持する部分テーブルとする。同様に、格納位置「4」~「7」に格納されているレコードで構成される部分テーブルを、ノード1が保持する部分テーブルとする。また、同様に、格納位置「8」~「11」に格納されているレコードで構成される部分テーブルを、ノード2が保持する部分テーブルとする。
 また、これら各ノードが保持する部分テーブルには、部分テーブル間における統一的な順序を示すGOrdが格納されるGOrdリストと、同一部分テーブル内でのレコードの順序を示すレコード番号(RecNo)が格納されるレコード番号リストとが対応付けられている。ここで、全体テーブルから部分テーブルを分割した直後では、ノード番号の昇順に部分テーブルを並べた場合にGOrdは部分テーブル間で昇順になっており、RecNoは同一部分テーブル内で昇順になっているものとする。
 以降の検索、集計、単項目ソート及び複数項目ソートでは、ノード1~ノード3は、図10に示す部分テーブルをそれぞれ保持している(すなわち、安定性前提を満たす部分テーブルを記憶部103に記憶されている)ものとして、各データ処理について説明する。
 <検索>
 まず、データ処理の一例として、Gender="F"となるレコードを検索する場合について、図11乃至図14を参照しながら説明する。図11乃至図14は、検索の一例を説明するための図である。
 S31)まず、各データ処理装置10の演算部102は、自ノード内でGender="F"となるレコードを検索する。すなわち、各データ処理装置10の演算部102は、自身の記憶部103に記憶されている部分テーブルにおいて、Gender="F"となるレコードを検索する。
 そして、各データ処理装置10の演算部102は、検索されたレコードのレコード番号が格納されるレコード番号リストと、空値(NULL値)が格納されたGOrdリストとを作成する。
 これにより、データ処理装置10-0(ノード0)では、レコード番号「0」と「3」とが格納されたレコード番号リストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。同様に、データ処理装置10-1(ノード1)では、レコード番号「2」が格納されたレコード番号リストと、このレコード番号に対応する空値が格納されたGOrdリストとが作成される。同様に、データ処理装置10-2(ノード2)では、レコード番号「0」と「1」と「2」とが格納されたレコード番号リストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。
 S32)次に、各データ処理装置10の演算部102は、右構造体を作成する。すなわち、各データ処理装置10の演算部102は、自ノードのノード番号を「キー列」、上記のS31で検索されたレコード件数を「ヒット件数」として右構造体を作成する。これにより、データ処理装置10-0(ノード0)では、キー「0」とヒット件数「2」とが対応付けられた1行の右構造体が作成される。同様に、データ処理装置10-1(ノード1)では、キー「1」とヒット件数「1」とが対応付けられた1行の右構造体が作成される。同様に、データ処理装置10-2(ノード2)では、キー「2」とヒット件数「3」とが対応付けられた1行の右構造体が作成される。
 S33)次に、各データ処理装置10の演算部102は、左構造体を作成する。すなわち、各データ処理装置10の演算部102は、自ノードのノード番号を「キー列」、初期値「0」を「先方出現件数」として左構造体を作成する。なお、先方出現件数とは、自ノードよりも前のノード番号のノードで検索されたレコード件数を格納するための結果格納領域である。
 これにより、データ処理装置10-0(ノード0)では、キー「0」と先方出現件数「2」とが対応付けられた1行の左構造体が作成される。同様に、データ処理装置10-1(ノード1)では、キー「1」と先方出現件数「0」とが対応付けられた1行の左構造体が作成される。同様に、データ処理装置10-2(ノード2)では、キー「2」と先方出現件数「0」とが対応付けられた1行の左構造体が作成される。
 S34)次に、各データ処理装置10の通信部101は、上記のS32で作成した右構造体を相互に交換する。すなわち、各データ処理装置10の通信部101は、自ノードの右構造体を他の全てのノードに送信すると共に、他の全てのノードから送信された右構造体を受信する。なお、このS34は、上記のS32の直後に実行されても良い。
 以降のS35-0~S37-0はノード0で実行され、S35-1~S37-1はノード1で実行され、S35-2~S37-2はノード2で実行されるが、各ノードは、これらを独立に実行することができる。これは、Global L演算が上述した特徴2を有するためである。
 S35-0)データ処理装置10-0の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-0の演算部102は、以下のS35-0-0~S35-0-2を実行する。ここで、データ処理装置10-0の演算部102は、以下のS35-0-0~S35-0-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の先方出現件数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の先方出現件数と、ノード1の右構造体との比較用の左構造体中の先方出現件数と、ノード2の右構造体との比較用の左構造体中の先方出現件数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS35-0-0~S35-0-2は順不同である。
 S35-0-0)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「0」と、自ノード(ノード0)の右構造体のキー列中のキー「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S35-0-1)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「0」と、ノード1の右構造体のキー列中のキー「1」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S35-0-2)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「0」と、ノード2の右構造体のキー列中のキー「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S36-0)次に、データ処理装置10-0の演算部102は、左構造体の先方出現件数の合計を算出する。すなわち、データ処理装置10-0の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで先方出現件数の合計を算出する。この合計が、ノード0のGOrdの開始番号となる。この場合、先方出現件数の合計は「0」であるため、ノード0のGOrdの開始番号は「0」となる。
 S37-0)次に、データ処理装置10-0の演算部102は、自ノードのGOrdの開始番号を用いて、上記のS31で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-0の演算部102は、開始番号から開始して、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード0のGOrdリストには、格納位置「0」にGOrd「0」、格納位置「1」にGOrd「1」が格納される。
 S35-1)データ処理装置10-1の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-1の演算部102は、以下のS35-1-0~S35-1-2を実行する。ここで、データ処理装置10-1の演算部102は、以下のS35-1-0~S35-1-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の先方出現件数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の先方出現件数と、ノード1の右構造体との比較用の左構造体中の先方出現件数と、ノード2の右構造体との比較用の左構造体中の先方出現件数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS35-1-0~S35-1-2は順不同である。
 S35-1-0)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「1」と、ノード0の右構造体のキー列中のキー「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「0」に対応するヒット件数「2」を、左構造体のキー「1」に対応する先方出現件数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の先方出現件数が「0」から「2」に更新される。
 S35-1-1)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「1」と、自ノード(ノード1)の右構造体のキー列中のキー「1」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S35-1-2)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「1」と、ノード2の右構造体のキー列中のキー「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S36-1)次に、データ処理装置10-1の演算部102は、左構造体の先方出現件数の合計を算出する。すなわち、データ処理装置10-1の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで先方出現件数の合計を算出する。この合計が、ノード1のGOrdの開始番号となる。この場合、先方出現件数の合計は「2」であるため、ノード1のGOrdの開始番号は「2」となる。
 S37-1)次に、データ処理装置10-1の演算部102は、自ノードのGOrdの開始番号を用いて、上記のS31で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-1の演算部102は、開始番号から開始して、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード1のGOrdリストには、格納位置「0」にGOrd「2」が格納される。
 S35-2)データ処理装置10-2の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-2の演算部102は、以下のS35-2-0~S35-2-2を実行する。ここで、データ処理装置10-2の演算部102は、以下のS35-2-0~S35-2-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の先方出現件数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の先方出現件数と、ノード1の右構造体との比較用の左構造体中の先方出現件数と、ノード2の右構造体との比較用の左構造体中の先方出現件数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS35-2-0~S35-2-2は順不同である。
 S35-2-0)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「2」と、ノード0の右構造体のキー列中のキー「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「0」に対応するヒット件数「2」を、左構造体のキー「2」に対応する先方出現件数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の先方出現件数が「0」から「2」に更新される。
 S35-2-1)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「2」と、ノード1の右構造体のキー列中のキー「1」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「1」に対応するヒット件数「1」を、左構造体のキー「2」に対応する先方出現件数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の先方出現件数が「0」から「1」に更新される。
 S35-2-2)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「2」と、自ノード(ノード2)の右構造体のキー列中のキー「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S36-2)次に、データ処理装置10-2の演算部102は、左構造体の先方出現件数の合計を算出する。すなわち、データ処理装置10-2の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで先方出現件数の合計を算出する。この合計が、ノード2のGOrdの開始番号となる。この場合、先方出現件数の合計は「3」であるため、ノード2のGOrdの開始番号は「3」となる。
 S37-2)次に、データ処理装置10-2の演算部102は、自ノードのGOrdの開始番号を用いて、上記のS31で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-2の演算部102は、開始番号から開始して、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード2のGOrdリストには、格納位置「0」にGOrd「3」、格納位置「1」にGOrd「4」、格納位置「2」にGOrd「5」が格納される。
 以上により、上記のS31で作成された各GOrdリストに対してGOrdが格納される。これにより、各データ処理装置10で検索されたレコードに対してGOrdが付与された検索結果が得られる。
 <集計>
 次に、データ処理の一例として、Gender(以降、「性別」とも表す。)毎のAge(以降、「年齢」とも表す。)の合計を集計する場合について、図15乃至図16を参照しながら説明する。図15乃至図16は、集計の一例を説明するための図である。
 S41)まず、各データ処理装置10の演算部102は、自ノード内で性別毎の年齢の合計を集計して、右構造体を作成する。すなわち、各データ処理装置10の演算部102は、自身の記憶部103に記憶されている部分テーブルにおいて、性別(Gender)毎に、年齢(Age)の合計を算出する。そして、各データ処理装置10の演算部102は、性別を「キー列」、当該性別の年齢の合計を「年齢合計」として右構造体を作成する。
 これにより、データ処理装置10-0(ノード0)では、キー「F」と年齢合計「16」と対応付けられた行と、キー「M」と年齢合計「12」とが対応付けられた行とで構成される2行の右構造体が作成される。同様に、データ処理装置10-1(ノード1)では、キー「F」と年齢合計「7」と対応付けられた行と、キー「M」と年齢合計「21」とが対応付けられた行とで構成される2行の右構造体が作成される。データ処理装置10-2(ノード2)では、キー「F」と年齢合計「22」と対応付けられた行と、キー「M」と年齢合計「8」とが対応付けられた行とで構成される2行の右構造体が作成される。
 S42)次に、各データ処理装置10の演算部102は、左構造体を作成する。すなわち、各データ処理装置10の演算部102は、性別を「キー列」、当該性別の年齢の合計の初期値「0」を「年齢合計」として左構造体を作成する。
 これにより、データ処理装置10-0(ノード0)では、キー「F」と年齢合計「0」と対応付けられた行と、キー「M」と年齢合計「0」とが対応付けられた行とで構成される2行の右構造体が作成される。データ処理装置10-1(ノード1)及びデータ処理装置10-2(ノード2)についても同様に2行の右構造体が作成される。
 S43)次に、各データ処理装置10の通信部101は、上記のS41で作成した右構造体を相互に交換する。すなわち、各データ処理装置10の通信部101は、自ノードの右構造体を他の全てのノードに送信すると共に、他の全てのノードから送信された右構造体を受信する。なお、このS43は、上記のS41の直後に実行されても良い。
 k=0,1,2として、以降のS44-k~S45-kはノードkで実行される。各ノードは、これらを独立に実行することができる。これは、Global L演算が上述した特徴2を有するためである。
 S44-k)データ処理装置10-k(ノードk)の演算部102は、キー比較条件"="によりL演算を実行する。具体的には、データ処理装置10-kの演算部102は、以下のS44-k-0~S44-k-2を実行する。ここで、データ処理装置10-kの演算部102は、以下のS44-k-0~S44-k-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の年齢合計を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の年齢合計と、ノード1の右構造体との比較用の左構造体中の年齢合計と、ノード2の右構造体との比較用の左構造体中の年齢合計とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS44-k-0~S44-k-2は順不同である。
 S44-k-0)データ処理装置10-kの演算部102は、自ノードの左構造体のキー列中のキー「F」と、ノード0の右構造体のキー列中のキー「F」とを比較する。この場合、キー比較条件"="が成り立つため、当該演算部102は、右構造体のキー「F」に対応する年齢合計「16」を、左構造体のキー「F」に対応する年齢合計に加算した上で、右構造体の参照位置と左構造体の操作位置とを一つ下げる。これにより、左構造体の操作位置「0」の年齢合計(性別「F」の年齢合計)が「16」に更新されると共に、右構造体の参照位置が「0」から「1」に、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-kの演算部102は、自ノードの左構造体のキー列中のキー「M」と、ノード0の右構造体のキー列中のキー「M」とを比較する。この場合、キー比較条件"="が成り立つため、当該演算部102は、右構造体のキー「M」に対応する年齢合計「12」を、左構造体のキー「M」に対応する年齢合計に加算した上で、右構造体の参照位置と左構造体の操作位置とを一つ下げることになるが、これ以上、操作位置及び参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の操作位置「0」の年齢合計(性別「M」の年齢合計)が「12」に更新される。
 S44-k-1)データ処理装置10-kの演算部102は、上記のS44-k-0と同様に、キー比較条件"="によりL演算を行う。これにより、左構造体の性別「F」の年齢合計が「7」、性別「M」の年齢合計が「21」に更新される。
 S44-k-2)データ処理装置10-kの演算部102は、上記のS44-k-0と同様に、キー比較条件"="によりL演算を行う。これにより、左構造体の性別「F」の年齢合計が「22」、性別「M」の年齢合計が「8」に更新される。
 S45-k)次に、データ処理装置10-kの演算部102は、性別毎に年齢合計の合計を算出する。すなわち、データ処理装置10-kの演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで、性別毎に年齢合計の合計を算出する。これにより、性別「F」と年齢合計「45」とが対応付けられた行と、性別「M」と年齢合計「41」とが対応付けられた行とで構成される左構造体が得られる。
 以上により、各ノードk(k=0,1,2)で同一の集計結果(性別毎の年齢合計)が得られる。
 <単項目ソート>
 次に、データ処理の一例として、性別(Gender)の単項目でソートする場合について、図17乃至図20を参照しながら説明する。図17乃至図20は、単項目ソートの一例を説明するための図である。なお、以降では、性別「F」及び「M」の大小関係はF<Mであるものとして、性別の単項目で昇順ソートする場合について説明する。ただし、性別「F」及び「M」の大小関係をF>Mであるものとして、性別の単項目で降順ソートする場合としても良い。
 S51)まず、各データ処理装置10の演算部102は、自ノード内で、性別でソートする。すなわち、各データ処理装置10の演算部102は、自身の記憶部103に記憶されている部分テーブルのレコード番号リストを性別でソートする。
 そして、各データ処理装置10の演算部102は、ソート後のレコード番号が格納されるレコード番号リストと、空値(NULL値)が格納されたGOrdリストとを作成する。
 これにより、データ処理装置10-0(ノード0)では、レコード番号が「0」、「3」、「1」、「2」の順にソートされたレコード番号リストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。同様に、データ処理装置10-1(ノード1)では、レコード番号が「2」、「0」、「1」、「3」の順にソートされたレコード番号リストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。同様に、データ処理装置10-2(ノード2)では、レコード番号が「0」、「1」、「2」、「3」の順にソートされたレコード番号リストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。
 S52)次に、各データ処理装置10の演算部102は、右構造体を作成する。すなわち、各データ処理装置10の演算部102は、性別と自ノードのノード番号とを「キー列」、当該性別のレコード件数を「出現数」として右構造体を作成する。これにより、データ処理装置10-0(ノード0)では、キー「F」及び「0」と出現数「2」とが対応付けられた行と、キー「M」及び「0」と出現数「2」とが対応付けられた行とで構成される2行の右構造体が作成される。同様に、データ処理装置10-1(ノード1)では、キー「F」及び「1」と出現数「1」とが対応付けられた行と、キー「M」及び「1」と出現数「3」とが対応付けられた行とで構成される2行の右構造体が作成される。同様に、データ処理装置10-2(ノード2)では、キー「F」及び「2」と出現数「3」とが対応付けられた行と、キー「M」及び「2」と出現数「1」とが対応付けられた行とで構成される2行の右構造体が作成される。
 なお、ノード番号は、1つの左構造体又は右構造体中で全て同一であるため、左構造体及び右構造体のレコード数分繰り返して記憶させる必要は無く、メモリ量及び通信量削減のため、左構造体及び右構造体中の1つの領域に記憶させるだけでも良い。
 S53)次に、各データ処理装置10の演算部102は、左構造体を作成する。すなわち、各データ処理装置10の演算部102は、上記のS52で作成した右構造体の全ての出現数を0として、「出現数」を「前方存在数」とした左構造体を作成する。
 S54)次に、各データ処理装置10の通信部101は、上記のS52で作成した右構造体を相互に交換する。すなわち、各データ処理装置10の通信部101は、自ノードの右構造体を他の全てのノードに送信すると共に、他の全てのノードから送信された右構造体を受信する。なお、このS54は、上記のS52の直後に実行されても良い。
 以降のS55-0~S58-0はノード0で実行され、S55-1~S58-1はノード1で実行され、S55-2~S58-2はノード2で実行されるが、各ノードは、これらを独立に実行することができる。これは、Global L演算が上述した特徴2を有するためである。
 S55-0)データ処理装置10-0の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-0の演算部102は、以下のS55-0-0~S55-0-2を実行する。ここで、データ処理装置10-0の演算部102は、以下のS55-0-0~S55-0-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の前方存在数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の前方存在数と、ノード1の右構造体との比較用の左構造体中の前方存在数と、ノード2の右構造体との比較用の左構造体中の前方存在数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS55-0-0~S55-0-2は順不同である。
 S55-0-0)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「0」と、自ノード(ノード0)の右構造体のキー列中のキー「F」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「0」と、自ノード(ノード0)の右構造体のキー列中のキー「F」及び「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「0」に対応する出現数「2」を、左構造体のキー「M」及び「0」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「0」と、自ノード(ノード0)の右構造体のキー列中のキー「M」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S55-0-1)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「0」と、ノード1の右構造体のキー列中のキー「F」及び「1」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「0」と、ノード1の右構造体のキー列中のキー「F」及び「1」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「1」に対応する出現数「1」を、左構造体のキー「M」及び「0」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「0」と、ノード1の右構造体のキー列中のキー「M」及び「1」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S55-0-2)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「0」と、ノード2の右構造体のキー列中のキー「F」及び「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「0」と、ノード2の右構造体のキー列中のキー「F」及び「2」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「2」に対応する出現数「3」を、左構造体のキー「M」及び「0」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「3」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「0」と、ノード2の右構造体のキー列中のキー「M」及び「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S56-0)次に、データ処理装置10-0の演算部102は、左構造体の前方存在数の合計を算出する。すなわち、データ処理装置10-0の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで前方存在数の合計を算出する。これにより、性別「F」に対応する前方存在数(の合計)は「0」、性別「M」に対応する前方存在数(の合計)は「6」となる。
 S57-0)次に、データ処理装置10-0の演算部102は、上記のS56-0で算出した前方存在数(の合計)を累計化する。すなわち、データ処理装置10-0の演算部102は、性別「F」に対応する前方存在数はそのままとする一方で、性別「M」に対応する前方存在数を、性別「F」に対応する前方存在数+性別「M」に対応する前方存在数とする。
 これにより、性別「F」に対応する前方存在数は「0」、性別「M」に対応する前方存在数は「6」となる。この前方存在数が、ノード0における性別毎のGOrdの開始番号となる。この場合、ノード0の性別「F」のGOrdの開始番号は「0」、性別「M」のGOrdの開始番号は「6」となる。
 S58-0)次に、データ処理装置10-0の演算部102は、上記のS57-0で累計化した前方存在数と、上記のS52で得られた出現数とを用いて、上記のS51で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-0の演算部102は、性別毎に、前方存在数から開始して、出現数回、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード0のGOrdリストには、格納位置「0」にGOrd「0」、格納位置「1」にGOrd「1」、格納位置「2」にGOrd「6」、格納位置「3」にGOrd「7」が格納される。
 S55-1)データ処理装置10-1の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-1の演算部102は、以下のS55-1-0~S55-1-2を実行する。ここで、データ処理装置10-1の演算部102は、以下のS55-1-0~S55-1-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の前方存在数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の前方存在数と、ノード1の右構造体との比較用の左構造体中の前方存在数と、ノード2の右構造体との比較用の左構造体中の前方存在数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS55-1-0~S55-1-2は順不同である。
 S55-1-0)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「1」と、ノード0の右構造体のキー列中のキー「F」及び「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「0」に対応する出現数「2」を、左構造体のキー「F」及び「1」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「0」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「1」と、ノード0の右構造体のキー列中のキー「M」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「1」と、ノード0の右構造体のキー列中のキー「M」及び「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「M」及び「0」に対応する出現数「2」を、左構造体のキー「M」及び「1」に対応する前方存在数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の操作位置「1」の前方存在数が「0」から「2」に更新される。
 S55-1-1)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「1」と、自ノード(ノード1)の右構造体のキー列中のキー「F」及び「1」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「1」と、自ノード(ノード1)の右構造体のキー列中のキー「F」及び「1」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「1」に対応する出現数「1」を、左構造体のキー「M」及び「1」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「1」と、自ノード(ノード1)の右構造体のキー列中のキー「M」及び「1」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S55-1-2)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「1」と、ノード2の右構造体のキー列中のキー「F」及び「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「1」と、ノード2の右構造体のキー列中のキー「F」及び「2」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「2」に対応する出現数「3」を、左構造体のキー「M」及び「1」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「3」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「1」と、ノード2の右構造体のキー列中のキー「M」及び「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S56-1)次に、データ処理装置10-1の演算部102は、左構造体の前方存在数の合計を算出する。すなわち、データ処理装置10-1の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで前方存在数の合計を算出する。これにより、性別「F」に対応する前方存在数(の合計)は「2」、性別「M」に対応する前方存在数(の合計)は「6」となる。
 S57-1)次に、データ処理装置10-1の演算部102は、上記のS56-1で算出した前方存在数(の合計)を累計化する。すなわち、データ処理装置10-1の演算部102は、性別「F」に対応する前方存在数はそのままとする一方で、性別「M」に対応する前方存在数を、性別「F」に対応する前方存在数+性別「M」に対応する前方存在数とする。
 これにより、性別「F」に対応する前方存在数は「2」、性別「M」に対応する前方存在数は「8」となる。この前方存在数が、ノード1における性別毎のGOrdの開始番号となる。この場合、ノード1の性別「F」のGOrdの開始番号は「2」、性別「M」のGOrdの開始番号は「8」となる。
 S58-1)次に、データ処理装置10-1の演算部102は、上記のS57-1で累計化した前方存在数と、上記のS52で得られた出現数とを用いて、上記のS51で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-1の演算部102は、性別毎に、前方存在数から開始して、出現数回、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード1のGOrdリストには、格納位置「0」にGOrd「2」、格納位置「1」にGOrd「8」、格納位置「2」にGOrd「9」、格納位置「3」にGOrd「10」が格納される。
 S55-2)データ処理装置10-2の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-2の演算部102は、以下のS55-2-0~S55-2-2を実行する。ここで、データ処理装置10-2の演算部102は、以下のS55-2-0~S55-2-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の前方存在数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の前方存在数と、ノード1の右構造体との比較用の左構造体中の前方存在数と、ノード2の右構造体との比較用の左構造体中の前方存在数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS55-2-0~S55-2-2は順不同である。
 S55-2-0)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「2」と、ノード0の右構造体のキー列中のキー「F」及び「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「0」に対応する出現数「2」を、左構造体のキー「F」及び「2」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「0」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「2」と、ノード0の右構造体のキー列中のキー「M」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「2」と、ノード0の右構造体のキー列中のキー「M」及び「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「M」及び「2」に対応する出現数「2」を、左構造体のキー「M」及び「2」に対応する前方存在数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の操作位置「1」の前方存在数が「0」から「2」に更新される。
 S55-2-1)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「2」と、ノード1の右構造体のキー列中のキー「F」及び「1」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「1」に対応する出現数「1」を、左構造体のキー「F」及び「2」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「0」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「2」と、ノード1の右構造体のキー列中のキー「M」及び「1」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「2」と、ノード1の右構造体のキー列中のキー「M」及び「1」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「M」及び「1」に対応する出現数「3」を、左構造体のキー「M」及び「2」に対応する前方存在数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の操作位置「1」の前方存在数が「0」から「3」に更新される。
 S55-2-2)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「F」及び「2」と、自ノード(ノード2)の右構造体のキー列中のキー「F」及び「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「2」と、自ノード(ノード2)の右構造体のキー列中のキー「F」及び「2」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「F」及び「2」に対応する出現数「3」を、左構造体のキー「M」及び「2」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「3」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「M」及び「2」と、自ノード(ノード2)の右構造体のキー列中のキー「M」及び「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S56-2)次に、データ処理装置10-2の演算部102は、左構造体の前方存在数の合計を算出する。すなわち、データ処理装置10-2の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで前方存在数の合計を算出する。これにより、性別「F」に対応する前方存在数(の合計)は「3」、性別「M」に対応する前方存在数(の合計)は「8」となる。
 S57-2)次に、データ処理装置10-2の演算部102は、上記のS56-2で算出した前方存在数(の合計)を累計化する。すなわち、データ処理装置10-2の演算部102は、性別「F」に対応する前方存在数はそのままとする一方で、性別「M」に対応する前方存在数を、性別「F」に対応する前方存在数+性別「M」に対応する前方存在数とする。
 これにより、性別「F」に対応する前方存在数は「3」、性別「M」に対応する前方存在数は「11」となる。この前方存在数が、ノード2における性別毎のGOrdの開始番号となる。この場合、ノード2の性別「F」のGOrdの開始番号は「3」、性別「M」のGOrdの開始番号は「11」となる。
 S58-2)次に、データ処理装置10-2の演算部102は、上記のS57-2で累計化した前方存在数と、上記のS52で得られた出現数とを用いて、上記のS51で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-2の演算部102は、性別毎に、前方存在数から開始して、出現数回、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード2のGOrdリストには、格納位置「0」にGOrd「3」、格納位置「1」にGOrd「4」、格納位置「2」にGOrd「5」、格納位置「3」にGOrd「11」が格納される。
 以上により、上記のS51で作成された各GOrdリストに対してGOrdが格納される。これにより、各データ処理装置10でGOrd(及びレコード番号)が付与された部分テーブルが得られ、このGOrdによりデータ処理装置10全体でのソート結果(単項目でのソート結果)が得られる。
 <複数項目ソート>
 次に、データ処理の一例として、性別及び年齢の複数項目でソートする場合について、図21を参照しながら説明する。図21は、複数項目ソートの一例を説明するための図である。
 S61)まず、各データ処理装置10の演算部102は、自ノード内で、性別及び年齢でソートする。すなわち、各データ処理装置10の演算部102は、自身の記憶部103に記憶されている部分テーブルのレコード番号リストを性別及び年齢でソートする。
 そして、各データ処理装置10の演算部102は、ソート後のレコード番号が格納されたレコード番号リストと、空値(NULL値)が格納されたGOrdリストとを作成する。
 これにより、データ処理装置10-0(ノード0)では、レコード番号が「0」、「3」、「1」、「2」の順にソートされたレコード番号リストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。同様に、データ処理装置10-1(ノード1)では、レコード番号が「2」、「1」、「0」、「3」の順にソートされたレコード番号リストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。同様に、データ処理装置10-2(ノード2)では、レコード番号が「1」、「2」、「0」、「3」の順にソートされたレコード番号リストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。
 S62)次に、各データ処理装置10の演算部102は、右構造体を作成する。すなわち、各データ処理装置10の演算部102は、性別と年齢と自ノードのノード番号とを「キー列」、当該性別及び当該年齢のレコード件数を「出現数」として右構造体を作成する。これにより、データ処理装置10-0(ノード0)では、キー「F」、「8」及び「0」と出現数「2」とが対応付けられた行と、キー「M」、「6」及び「0」と出現数「2」とが対応付けられた行とで構成される2行の右構造体が作成される。同様に、データ処理装置10-1(ノード1)では、キー「F」、「7」及び「1」と出現数「1」とが対応付けられた行と、キー「M」、「6」及び「1」と出現数「1」とが対応付けられた行と、キー「M」、「7」及び「1」と出現数「1」とが対応付けられた行と、キー「M」、「8」及び「1」と出現数「1」とが対応付けられた行とで構成される4行の右構造体が作成される。同様に、データ処理装置10-2(ノード2)では、キー「F」、「7」及び「2」と出現数「2」とが対応付けられた行と、キー「F」、「8」及び「2」と出現数「1」とが対応付けられた行と、キー「M」、「8」及び「2」と出現数「1」とが対応付けられた行とで構成される3行の右構造体が作成される。
 S63)次に、各データ処理装置10の演算部102は、左構造体を作成する。すなわち、各データ処理装置10の演算部102は、上記のS62で作成した右構造体の全ての出現数を0として、「出現数」を「前方存在数」とした左構造体を作成する。
 S64)次に、各データ処理装置10の通信部101は、上記のS62で作成した右構造体を相互に交換する。すなわち、各データ処理装置10の通信部101は、自ノードの右構造体を他の全てのノードに送信すると共に、他の全てのノードから送信された右構造体を受信する。なお、このS64は、上記のS62の直後に実行されても良い。
 S65)以降、単項目ソートと同様に、k=0,1,2として、S55-k~S58-kを実行する。
 以上により、上記のS61で作成された各GOrdリストに対してGOrdが格納される。これにより、各データ処理装置10でGOrd(及びレコード番号)が付与された部分テーブルが得られ、このGOrdによりデータ処理装置10全体でのソート結果(複数項目でのソート結果)が得られる。
 <部分集合でのソート>
 次に、部分集合でのソートについて説明する。部分集合とは、各部分テーブルに対して何等かのデータ処理を行った結果、これらの部分テーブル全体が表す集合(全体集合)の真部分集合や要素間の順序が更新されている集合等のことである。すなわち、本発明の実施の形態における部分集合とは、全体集合の一部となっている集合(真部分集合)だけでなく、全体集合と要素数は同じであるが要素間の順序が当該集合から変更された場合も含む。
 ここで、全体集合と要素数は同じであるが要素間の順序が変更された場合とは、全体集合に対してソート等が行われた場合である。性別でソートした場合の部分集合を図22に示す。図22に示すように、本発明の実施の形態では、全体集合と要素数は同じであるが、性別でソートした結果、要素間の順序が変更された場合も部分集合と扱うものとする。
 このような部分集合を表す部分テーブルは、安定性前提が成り立つとは限らない。そこで、以降では、安定性前提が成り立つとは限らない部分テーブルを各ノードが保持している場合でのソートについて説明する。一例として、各ノードが図22に示す部分テーブルを保持しているものとして、年齢でソートする場合について、図23乃至図26を参照しながら説明する。図23乃至図26は、部分集合でのソートの一例を説明するための図である。
 S71)まず、各データ処理装置10の演算部102は、自ノード内で、年齢でソートする。すなわち、各データ処理装置10の演算部102は、自身の記憶部103に記憶されている部分テーブルのレコード番号リストを年齢でソートする。
 そして、各データ処理装置10の演算部102は、ソート後のレコード番号が格納されるレコード番号リストと、当該レコード番号の現在の(ソート前の)GOrd(以降、「oldGOrd」とも表す。)が格納されたoldGOrdリストと、空値(NULL値)が格納されたGOrdリストとを作成する。
 これにより、データ処理装置10-0(ノード0)では、レコード番号が「1」、「2」、「0」、「3」の順にソートされたレコード番号リストと、これのレコード番号に対応するoldGOrdが「6」、「7」、「0」、「1」の順に格納されたoldGOrdリストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。同様に、データ処理装置10-1(ノード1)では、レコード番号が「1」、「2」、「0」、「3」の順にソートされたレコード番号リストと、これらのレコード番号に対応するoldGOrdが「9」、「2」、「8」、「10」の順に格納されたoldGOrdリストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。同様に、データ処理装置10-2(ノード2)では、レコード番号が「1」、「2」、「0」、「3」の順にソートされたレコード番号リストと、これらのレコード番号に対応するoldGOrdが「4」、「5」、「3」、「11」の順に格納井されたoldGOrdリストと、これらのレコード番号に対応する空値が格納されたGOrdリストとが作成される。
 S72)次に、各データ処理装置10の演算部102は、右構造体を作成する。すなわち、各データ処理装置10の演算部102は、まず、上記のS72で作成されたoldGOrdリストにおいて、同一の年齢が対応付けられており、かつ、oldGOrdが連番となっている範囲(この範囲を「連番範囲」とも表す。)を1つにまとめた上で、この連番範囲の先頭のoldGOrdで当該連番範囲を代表させる。そして、各データ処理装置10の演算部102は、年齢と、oldGOrd又は連番範囲を代表するoldGOrdとを「キー列」、1又は当該連番範囲に含まれるoldGOrdの数を「出現数」として右構造体を作成する。なお、出現数が「1」は、連番範囲を代表していないoldGOrdに対応付けられる。すなわち、出現数は、該当のoldGOrdが連番範囲を代表している場合は当該連番範囲に含まれるoldGOrd数、該当のoldGOrdが連番範囲を代表していない場合は1(言い換えれば、該当のoldGOrd数)となる。
 これにより、データ処理装置10-0(ノード0)では、キー「6」及び「6」と出現数「2」とが対応付けられた行と、キー「8」及び「0」と出現数「2」とが対応付けられた行とで構成される2行の右構造体が作成される。同様に、データ処理装置10-1(ノード1)では、キー「6」及び「9」と出現数「1」とが対応付けられた行と、キー「7」及び「2」と出現数「1」とが対応付けられた行と、キー「7」及び「8」と出現数「1」とが対応付けられた行と、キー「8」及び「10」と出現数「1」とが対応付けられた行とで構成される4行の右構造体が作成される。同様に、データ処理装置10-2(ノード2)では、キー「7」及び「4」と出現数「2」とが対応付けられた行と、キー「8」及び「3」と出現数「1」とが対応付けられた行と、キー「8」及び「11」と出現数「1」とが対応付けられた行とで構成される3行の右構造体が作成される。
 S73)次に、各データ処理装置10の演算部102は、左構造体を作成する。すなわち、各データ処理装置10の演算部102は、上記のS72で作成した右構造体の全ての出現数を0として、「出現数」を「前方存在数」とした左構造体を作成する。
 S74)次に、各データ処理装置10の通信部101は、上記のS72で作成した右構造体を相互に交換する。すなわち、各データ処理装置10の通信部101は、自ノードの右構造体を他の全てのノードに送信すると共に、他の全てのノードから送信された右構造体を受信する。なお、このS74は、上記のS72の直後に実行されても良い。
 以降のS75-0~S78-0はノード0で実行され、S75-1~S78-1はノード1で実行され、S75-2~S78-2はノード2で実行されるが、各ノードは、これらを独立に実行することができる。これは、Global L演算が上述した特徴2を有するためである。
 S75-0)データ処理装置10-0の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-0の演算部102は、以下のS75-0-0~S75-0-2を実行する。ここで、データ処理装置10-0の演算部102は、以下のS75-0-0~S75-0-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の前方存在数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の前方存在数と、ノード1の右構造体との比較用の左構造体中の前方存在数と、ノード2の右構造体との比較用の左構造体中の前方存在数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS75-0-0~S75-0-2は順不同である。
 S75-0-0)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「6」及び「6」と、自ノード(ノード0)の右構造体のキー列中のキー「6」及び「6」を比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「0」と、自ノード(ノード0)の右構造体のキー列中のキー「6」及び「6」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「6」及び「6」に対応する出現数「2」を、左構造体のキー「8」及び「0」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「0」と、自ノード(ノード0)の右構造体のキー列中のキー「8」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S75-0-1)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「6」及び「6」と、ノード1の右構造体のキー列中のキー「6」及び「9」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「0」と、ノード1の右構造体のキー列中のキー「6」及び「9」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「6」及び「9」に対応する出現数「1」を、左構造体のキー「8」及び「0」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「0」と、ノード1の右構造体のキー列中のキー「7」及び「2」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「2」に対応する出現数「1」を、左構造体のキー「8」及び「0」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「1」から「2」に更新されると共に、右構造体の参照位置が「1」から「2」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「0」と、ノード1の右構造体のキー列中のキー「7」及び「8」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「8」に対応する出現数「1」を、左構造体のキー「8」及び「0」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「2」から「3」に更新されると共に、右構造体の参照位置が「2」から「3」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「0」と、ノード1の右構造体のキー列中のキー「8」及び「10」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S75-0-2)データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「6」及び「6」と、ノード2の右構造体のキー列中のキー「7」及び「4」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「0」と、ノード2の右構造体のキー列中のキー「7」及び「4」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「4」に対応する出現数「2」を、左構造体のキー「8」及び「0」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-0の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「0」と、ノード2の右構造体のキー列中のキー「8」及び「3」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S76-0)次に、データ処理装置10-0の演算部102は、左構造体の前方存在数の合計を算出する。すなわち、データ処理装置10-0の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで前方存在数の合計を算出する。これにより、年齢「6」及びoldGOrd「6」に対応する前方存在数(の合計)は「0」、年齢「8」及びoldGOrd「0」に対応する前方存在数(の合計)は「7」となる。
 S77-0)次に、データ処理装置10-0の演算部102は、上記のS76-0で算出した前方存在数(の合計)を累計化する。すなわち、データ処理装置10-0の演算部102は、年齢「6」及びoldGOrd「6」に対応する前方存在数はそのままとする一方で、年齢「8」及びoldGOrd「0」に対応する前方存在数を、年齢「6」及びoldGOrd「6」に対応する前方存在数+年齢「8」及びoldGOrd「0」に対応する前方存在数とする。
 これにより、年齢「6」及びoldGOrd「6」に対応する前方存在数は「0」、年齢「8」及びoldGOrd「0」に対応する前方存在数は「7」となる。この前方存在数が、ノード0におけるoldGOrd毎のGOrdの開始番号となる。この場合、ノード0の年齢「6」及びoldGOrd「6」のGOrdの開始番号は「0」、年齢「8」及びoldGOrd「0」のGOrdの開始番号は「6」となる。
 S78-0)次に、データ処理装置10-0の演算部102は、上記のS77-0で累計化した前方存在数と、上記のS72で得られた出現数とを用いて、上記のS71で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-0の演算部102は、年齢及びoldGOrd毎に、前方存在数から開始して、出現数回、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード0のGOrdリストには、格納位置「0」にGOrd「0」、格納位置「1」にGOrd「1」、格納位置「2」にGOrd「7」、格納位置「3」にGOrd「8」が格納される。
 S75-1)データ処理装置10-1の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-1の演算部102は、以下のS75-1-0~S75-1-2を実行する。ここで、データ処理装置10-1の演算部102は、以下のS75-1-0~S75-1-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の前方存在数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の前方存在数と、ノード1の右構造体との比較用の左構造体中の前方存在数と、ノード2の右構造体との比較用の左構造体中の前方存在数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS75-1-0~S75-1-2は順不同である。
 S75-1-0)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「6」及び「9」と、ノード0の右構造体のキー列中のキー「6」及び「6」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「6」及び「6」に対応する出現数「2」を、左構造体のキー「6」及び「9」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「0」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「6」及び「9」と、ノード0の右構造体のキー列中のキー「8」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「2」と、ノード0の右構造体のキー列中のキー「8」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「1」から「2」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「8」と、ノード0の右構造体のキー列中のキー「8」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「2」から「3」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「10」と、ノード0の右構造体のキー列中のキー「8」及び「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「8」及び「0」に対応する出現数「2」を、左構造体のキー「8」及び「10」に対応する前方存在数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の操作位置「3」の前方存在数が「0」から「2」に更新される。
 S75-1-1)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「6」及び「9」と、自ノード(ノード1)の右構造体のキー列中のキー「6」及び「9」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「2」と、自ノード(ノード1)の右構造体のキー列中のキー「6」及び「9」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「6」及び「9」に対応する出現数「1」を、左構造体のキー「7」及び「2」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「2」と、自ノード(ノード1)の右構造体のキー列中のキー「7」及び「2」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「1」から「2」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「8」と、自ノード(ノード1)の右構造体のキー列中のキー「7」及び「2」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「2」に対応する出現数「1」を、左構造体のキー「7」及び「8」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「2」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「1」から「2」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「8」と、自ノード(ノード1)の右構造体のキー列中のキー「7」及び「8」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「2」から「3」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「10」と、自ノード(ノード1)の右構造体のキー列中のキー「7」及び「8」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「8」に対応する出現数「1」を、左構造体のキー「8」及び「10」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「3」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「2」から「3」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「10」と、自ノード(ノード1)の右構造体のキー列中のキー「8」及び「10」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S75-1-2)データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「6」及び「9」と、ノード2の右構造体のキー列中のキー「7」及び「4」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「2」と、ノード2の右構造体のキー列中のキー「7」及び「4」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「1」から「2」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「8」と、ノード2の右構造体のキー列中のキー「7」及び「4」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「4」に対応する出現数「2」を、左構造体のキー「7」及び「8」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「2」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「8」と、ノード2の右構造体のキー列中のキー「8」及び「3」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「2」から「3」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「10」と、ノード2の右構造体のキー列中のキー「8」及び「3」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「8」及び「3」に対応する出現数「1」を、左構造体のキー「8」及び「10」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「3」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「1」から「2」に更新される。
 次に、データ処理装置10-1の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「10」と、ノード2の右構造体のキー列中のキー「8」及び「11」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S76-1)次に、データ処理装置10-1の演算部102は、左構造体の前方存在数の合計を算出する。すなわち、データ処理装置10-1の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで前方存在数の合計を算出する。これにより、年齢「6」及びoldGOrd「9」に対応する前方存在数(の合計)は「2」、年齢「7」及びoldGOrd「2」に対応する前方存在数(の合計)は「1」、年齢「7」及びoldGOrd「8」に対応する前方存在数(の合計)は「3」、年齢「8」及びoldGOrd「10」に対応する前方存在数(の合計)は「4」となる。
 S77-1)次に、データ処理装置10-1の演算部102は、上記のS76-1で算出した前方存在数(の合計)を累計化する。すなわち、データ処理装置10-1の演算部102は、各キーの前方存在数を、当該キー以下の全てのキーの前方存在数の合計とする。
 これにより、年齢「6」及びoldGOrd「9」に対応する前方存在数は「2」、年齢「7」及びoldGOrd「2」に対応する前方存在数は「3」、年齢「7」及びoldGOrd「8」に対応する前方存在数は「6」、年齢「8」及びoldGOrd「10」に対応する前方存在数は「10」となる。この前方存在数が、ノード1における年齢及びoldGOrd毎のGOrdの開始番号となる。この場合、ノード1の年齢「6」及びoldGOrd「9」のGOrdの開始番号は「2」、年齢「7」及びoldGOrd「2」のGOrdの開始番号は「3」、年齢「7」及びoldGOrd「8」のGOrdの開始番号は「6」、年齢「8」及びoldGOrd「10」のGOrdの開始番号は「10」となる。
 S78-1)次に、データ処理装置10-1の演算部102は、上記のS77-1で累計化した前方存在数と、上記のS72で得られた出現数とを用いて、上記のS71で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-1の演算部102は、年齢及びoldGOrd毎に、前方存在数から開始して、出現数回、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード1のGOrdリストには、格納位置「0」にGOrd「2」、格納位置「1」にGOrd「3」、格納位置「2」にGOrd「6」、格納位置「3」にGOrd「10」が格納される。
 S75-2)データ処理装置10-2の演算部102は、キー比較条件">"によりL演算を実行する。具体的には、データ処理装置10-2の演算部102は、以下のS75-2-0~S75-2-2を実行する。ここで、データ処理装置10-2の演算部102は、以下のS75-2-0~S75-2-2の並列処理のため、場合により、それぞれで異なる記憶領域上に展開された左構造体中の前方存在数を使用する。言い換えれば、並列処理のため、場合により、ノード0の右構造体との比較用の左構造体中の前方存在数と、ノード1の右構造体との比較用の左構造体中の前方存在数と、ノード2の右構造体との比較用の左構造体中の前方存在数とを使用する。なお、Global L演算が上述した特徴1を有することにより、以下のS75-2-0~S75-2-2は順不同である。
 S75-2-0)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「4」と、ノード0の右構造体のキー列中のキー「6」及び「6」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「6」及び「6」に対応する出現数「2」を、左構造体のキー「7」及び「4」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「0」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「4」と、ノード0の右構造体のキー列中のキー「8」及び「0」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「3」と、ノード0の右構造体のキー列中のキー「8」及び「0」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「8」及び「0」に対応する出現数「2」を、左構造体のキー「8」及び「3」に対応する前方存在数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の操作位置「1」の前方存在数が「0」から「2」に更新される。
 S75-2-1)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「4」と、ノード1の右構造体のキー列中のキー「6」及び「9」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「6」及び「9」に対応する出現数「1」を、左構造体のキー「7」及び「4」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「0」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「4」と、ノード1の右構造体のキー列中のキー「7」及び「2」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「2」に対応する出現数「1」を、左構造体のキー「7」及び「4」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「0」の前方存在数が「1」から「2」に更新されると共に、右構造体の参照位置が「1」から「2」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「4」と、ノード1の右構造体のキー列中のキー「7」及び「9」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「3」と、ノード1の右構造体のキー列中のキー「7」及び「9」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「9」に対応する出現数「1」を、左構造体のキー「8」及び「3」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「2」から「3」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「3」と、ノード1の右構造体のキー列中のキー「8」及び「10」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「1」から「2」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「11」と、ノード1の右構造体のキー列中のキー「8」及び「10」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「8」及び「10」に対応する出現数「1」を、左構造体のキー「8」及び「11」に対応する前方存在数に加算する。そして、当該演算部102は、右構造体の参照位置を一つ下げることになるが、これ以上、参照位置を下げることはできないため、L演算を終了する。これにより、左構造体の操作位置「2」の前方存在数が「0」から「1」に更新される。
 S75-2-2)データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「7」及び「4」と、自ノード(ノード2)の右構造体のキー列中のキー「7」及び「4」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「3」と、自ノード(ノード2)の右構造体のキー列中のキー「7」及び「4」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「7」及び「4」に対応する出現数「2」を、左構造体のキー「8」及び「3」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「1」の前方存在数が「0」から「2」に更新されると共に、右構造体の参照位置が「0」から「1」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「3」と、自ノード(ノード2)の右構造体のキー列中のキー「8」及び「3」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げる。これにより、左構造体の操作位置が「1」から「2」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「11」と、自ノード(ノード2)の右構造体のキー列中のキー「8」及び「3」とを比較する。この場合、キー比較条件">"が成り立つため、当該演算部102は、右構造体のキー「8」及び「3」に対応する出現数「1」を、左構造体のキー「8」及び「11」に対応する前方存在数に加算した上で、右構造体の参照位置を一つ下げる。これにより、左構造体の操作位置「2」の前方存在数が「0」から「1」に更新されると共に、右構造体の参照位置が「1」から「2」に更新される。
 次に、データ処理装置10-2の演算部102は、自ノードの左構造体のキー列中のキー「8」及び「11」と、自ノード(ノード2)の右構造体のキー列中のキー「8」及び「11」とを比較する。この場合、キー比較条件">"が成り立たないため、当該演算部102は、左構造体の操作位置を一つ下げることになるが、これ以上、操作位置を下げることはできないため、L演算を終了する。
 S76-2)次に、データ処理装置10-2の演算部102は、左構造体の前方存在数の合計を算出する。すなわち、データ処理装置10-2の演算部102は、ノード0の右構造体との比較用の左構造体と、ノード1の右構造体との比較用の左構造体と、ノード2の右構造体との比較用の左構造体とで前方存在数の合計を算出する。これにより、年齢「7」及びoldGOrd「4」に対応する前方存在数(の合計)は「4」、年齢「8」及びoldGOrd「3」に対応する前方存在数(の合計)は「5」、年齢「8」及びoldGOrd「11」に対応する前方存在数(の合計)は「2」となる。
 S77-2)次に、データ処理装置10-2の演算部102は、上記のS76-2で算出した前方存在数(の合計)を累計化する。すなわち、データ処理装置10-2の演算部102は、各キーの前方存在数を、当該キー以下の全てのキーの前方存在数の合計とする。
 これにより、年齢「7」及びoldGOrd「4」に対応する前方存在数は「4」、年齢「8」及びoldGOrd「3」に対応する前方存在数は「9」、年齢「8」及びoldGOrd「11」に対応する前方存在数は「11」となる。この前方存在数が、ノード2における年齢及びoldGOrd毎のGOrdの開始番号となる。この場合、ノード2の年齢「7」及びoldGOrd「4」のGOrdの開始番号は「4」、年齢「8」及びoldGOrd「3」のGOrdの開始番号は「9」、年齢「8」及びoldGOrd「11」のGOrdの開始番号は「11」となる。
 S78-2)次に、データ処理装置10-2の演算部102は、上記のS77-2で累計化した前方存在数と、上記のS72で得られた出現数とを用いて、上記のS71で作成した自ノードのGOrdリストを更新する。すなわち、データ処理装置10-2の演算部102は、年齢及びoldGOrd毎に、前方存在数から開始して、出現数回、上から順に1つずつ加算した値をGOrdリストに格納する。これにより、ノード2のGOrdリストには、格納位置「0」にGOrd「4」、格納位置「1」にGOrd「5」、格納位置「2」にGOrd「9」、格納位置「3」にGOrd「11」が格納される。
 以上により、上記のS71で作成された各GOrdリストに対してGOrdが格納される。これにより、各データ処理装置10でGOrd(及びレコード番号)が付与された部分テーブルが得られ、このGOrdによりデータ処理装置10全体でのソート結果(部分集合でのソート結果)が得られる。
 <構造体の分割>
 右構造体及び左構造体はいずれも行数が膨大になる場合があり、データ処理の際に分割を行いたいケースが発生する。特に、右構造体はノード間の通信で相互に交換されるため、通信し易い大きさに分割したいことがある。
 そこで、以降では、右構造体を分割する場合について、図27を参照しながら説明する。図27は、右構造体の分割の一例を説明するための図である。なお、左構造体も右構造体と同様に分割することができる。
 図27に示すように、右構造体の行数をn、i行目のキーをr(0≦i≦n-1)として場合、右構造体は、連続する行を1つの右構造体として、任意の個数(ただし、n個以下)の右構造体に分割することができる。以降では、分割された各右構造体を「分割右構造体」とも表す。右構造体を上から順にN個に分割した場合、これら分割された分割右構造体を上から順に「分割右構造体1」、「分割右構造体2」、・・・、「分割右構造体N」と表す。図27では、一例としてN=3の場合であり、分割右構造体1、分割右構造体2及び分割右構造体3の3つに分割した場合を示している。
 なお、L演算の定義により、各分割右構造体と左構造体とのL演算は、(分割されていない)右構造体と左構造体とのL演算と同一の演算結果が得られる。
 ここで、例えば、各分割右構造体と左構造体とのL演算を行う場合、演算部102は、分割右構造体を受け取る毎に、当該分割右構造体と左構造体とのL演算を操作位置「0」から開始すれば良いが、この場合は効率が良くない。
 そこで、各分割右構造体を「分割右構造体1」、「分割右構造体2」、・・・、「分割右構造体N」の順に受け取ることが保証されている場合、効率を落とさずに、L演算が可能となる。左構造体の行数をm、j行目のキーをl(0≦j≦m-1)として、N=2である場合について、図28を参照しながら説明する。図28は、左構造体と分割後の右構造体との比較操作の効率化の一例を説明するための図である。
 図28Aに示すように、左構造体と分割右構造体1とのL演算において、l≦rかつl>rであれば、操作位置を「2」とする。そして、図28Bに示すように、左構造体と分割右構造体2とのL演算では、操作位置「2」からL演算を実施する。これにより、左構造体と分割右構造体2とのL演算では、操作位置「0」~「1」までのキーの比較操作を行う必要がなくなるため、構造体を分割した場合であっても効率を落とさずに、L演算が可能となる。
 本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
 本願は、日本国に2018年10月4日に出願された基礎出願2018-188966号に基づくものであり、その全内容はここに参照をもって援用される。
 1    データ処理システム
 10   データ処理装置
 101  通信部
 102  演算部
 103  記憶部

Claims (10)

  1.  1以上のレコードが格納されたテーブルを各々が保持する複数のノードが含まれるデータ処理システムであって、
     前記ノードの各々は、
     所定のL演算で被参照側となる構造体を示す右構造体を、自ノードが保持する前記テーブルから作成する右構造体作成手段と、
     前記L演算で被操作側となる構造体を示す左構造体を前記右構造体から作成する左構造体作成手段と、
     前記右構造体作成手段により作成した右構造体を、他のノードに対して送信する送信手段と、
     前記他のノードで作成された右構造体を受信する受信手段と、
     前記左構造体と、前記右構造体作成手段により作成した右構造体及び前記受信手段により受信した右構造体の各々とで前記L演算を行う演算手段と、
     前記演算手段による演算結果を用いて、自ノードが保持する前記テーブルに格納されている1以上のレコードに対して、前記複数のノードの各々が保持するテーブルに格納されている全てのレコード間での順序を付与する順序付与手段と、
     を有することを特徴とするデータ処理システム。
  2.  前記順序付与手段により自ノードが保持する前記テーブルに格納されている1以上のレコードに対して前記順序が付与されることで、前記複数のノードの各々が保持するテーブルに格納されている全てのレコード間で、検索、集計及びソートが少なくとも含まれるデータ処理が実現される、ことを特徴とする請求項1に記載のデータ処理システム。
  3.  前記左構造体は、各行にキーと結果格納領域とが含まれ、かつ、前記キーの昇順又は降順で前記行が1以上並べられた構造体であり、
     前記右構造体は、各行にキーと所定の値とが含まれ、かつ、前記キーの昇順又は降順で前記行が1以上並べられた構造体であり、
     前記L演算は、
     前記左構造体のキーと前記右構造体のキーとを昇順又は降順に比較し、比較条件が成立した場合、前記右構造体のキーに対応する値を用いた操作結果を、前記左構造体のキーに対応する結果格納領域に格納する演算である、ことを特徴とする請求項1又は2に記載のデータ処理システム。
  4.  前記比較条件は、前記左構造体のキーが前記右構造体のキーよりも大きいこと又は小さいことを示す条件である、又は、前記左構造体のキーと前記右構造体のキーとが等しいことを示す条件である、ことを特徴とする請求項3に記載のデータ処理システム。
  5.  前記左構造体のキー及び前記右構造体のキーには、複数の値の組が含まれる、ことを特徴とする請求項3又は4に記載のデータ処理システム。
  6.  前記複数のノードにはノード番号が付与されており、
     前記複数のノードの各々が保持するテーブルは、所定のテーブルを分割したテーブルのうちの、前記ノード番号に対応するテーブルである、ことを特徴とする請求項1乃至5の何れか一項に記載のデータ処理システム。
  7.  前記右構造体及び前記左構造体の少なくとも一方を分割する分割手段を有し、
     前記送信手段は、
     前記分割手段により右構造体が分割された場合、分割された右構造体を前記他のノードに対して送信する、ことを特徴とする請求項1乃至6の何れか一項に記載のデータ処理システム。
  8.  1以上のレコードが格納されたテーブルを各々が保持する1以上の他のデータ処理装置と通信可能に接続されるデータ処理装置であって、
     所定のL演算で被参照側となる構造体を示す右構造体を、前記データ処理装置が保持するテーブルから作成する右構造体作成手段と、
     前記L演算で被操作側となる構造体を示す左構造体を前記右構造体から作成する左構造体作成手段と、
     前記右構造体作成手段により作成した右構造体を、前記他のデータ処理装置に対して送信する送信手段と、
     前記他のデータ処理装置で作成された右構造体を受信する受信手段と、
     前記左構造体と、前記右構造体作成手段により作成した右構造体及び前記受信手段により受信した右構造体の各々とで前記L演算を行う演算手段と、
     前記演算手段による演算結果を用いて、前記データ処理装置が保持する前記テーブルに格納されている1以上のレコードに対して、前記他のデータ処理装置の各々が保持するテーブルに格納されている全てのレコード間での順序を付与する順序付与手段と、
     を有することを特徴とするデータ処理装置。
  9.  1以上のレコードが格納されたテーブルを各々が保持する1以上の他のデータ処理装置と通信可能に接続されるデータ処理装置が、
     所定のL演算で被参照側となる構造体を示す右構造体を、前記データ処理装置が保持するテーブルから作成する右構造体作成手順と、
     前記L演算で被操作側となる構造体を示す左構造体を前記右構造体から作成する左構造体作成手順と、
     前記右構造体作成手順で作成した右構造体を、前記他のデータ処理装置に対して送信する送信手順と、
     前記他のデータ処理装置で作成された右構造体を受信する受信手順と、
     前記左構造体と、前記右構造体作成手順で作成した右構造体及び前記受信手順で受信した右構造体の各々とで前記L演算を行う演算手順と、
     前記演算手順による演算結果を用いて、前記データ処理装置が保持する前記テーブルに格納されている1以上のレコードに対して、前記他のデータ処理装置の各々が保持するテーブルに格納されている全てのレコード間での順序を付与する順序付与手順と、
     を実行することを特徴とするデータ処理方法。
  10.  1以上のレコードが格納されたテーブルを各々が保持する1以上の他のデータ処理装置と通信可能に接続されるデータ処理装置に、
     所定のL演算で被参照側となる構造体を示す右構造体を、前記データ処理装置が保持するテーブルから作成する右構造体作成手順と、
     前記L演算で被操作側となる構造体を示す左構造体を前記右構造体から作成する左構造体作成手順と、
     前記右構造体作成手順で作成した右構造体を、前記他のデータ処理装置に対して送信する送信手順と、
     前記他のデータ処理装置で作成された右構造体を受信する受信手順と、
     前記左構造体と、前記右構造体作成手順で作成した右構造体及び前記受信手順で受信した右構造体の各々とで前記L演算を行う演算手順と、
     前記演算手順による演算結果を用いて、前記データ処理装置が保持する前記テーブルに格納されている1以上のレコードに対して、前記他のデータ処理装置の各々が保持するテーブルに格納されている全てのレコード間での順序を付与する順序付与手順と、
     を実行させることを特徴とするプログラム。
PCT/JP2019/038757 2018-10-04 2019-10-01 データ処理システム、データ処理装置、データ処理方法及びプログラム WO2020071368A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201980064372.1A CN112789608A (zh) 2018-10-04 2019-10-01 数据处理系统、数据处理装置、数据处理方法及程序
JP2020550453A JPWO2020071368A1 (ja) 2018-10-04 2019-10-01 データ処理システム、データ処理装置、データ処理方法及びプログラム
US17/216,847 US20210216279A1 (en) 2018-10-04 2021-03-30 Data processing system, data processing apparatus, data processing method, and non-transitory recording medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018188966 2018-10-04
JP2018-188966 2018-10-04

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/216,847 Continuation US20210216279A1 (en) 2018-10-04 2021-03-30 Data processing system, data processing apparatus, data processing method, and non-transitory recording medium

Publications (1)

Publication Number Publication Date
WO2020071368A1 true WO2020071368A1 (ja) 2020-04-09

Family

ID=70054822

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/038757 WO2020071368A1 (ja) 2018-10-04 2019-10-01 データ処理システム、データ処理装置、データ処理方法及びプログラム

Country Status (4)

Country Link
US (1) US20210216279A1 (ja)
JP (1) JPWO2020071368A1 (ja)
CN (1) CN112789608A (ja)
WO (1) WO2020071368A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009044486A1 (ja) * 2007-10-05 2009-04-09 Turbo Data Laboratories, Inc. 表形式データをソートする方法、マルチコア型装置、及び、プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694323B2 (en) * 2002-04-25 2004-02-17 Sybase, Inc. System and methodology for providing compact B-Tree
US7017005B2 (en) * 2002-08-28 2006-03-21 Hywire Ltd. Implementation of a content addressable memory using a RAM-cell structure
US8874837B2 (en) * 2011-11-08 2014-10-28 Xilinx, Inc. Embedded memory and dedicated processor structure within an integrated circuit
US10609423B2 (en) * 2016-09-07 2020-03-31 Qualcomm Incorporated Tree-type coding for video coding
KR20200088380A (ko) * 2017-11-15 2020-07-22 버터플라이 네트워크, 인크. 초음파 장치들 및 초음파 디바이스들을 제조하기 위한 방법들
US11080262B1 (en) * 2019-09-27 2021-08-03 Amazon Technologies, Inc. Optimistic atomic multi-page write operations in decoupled multi-writer databases

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009044486A1 (ja) * 2007-10-05 2009-04-09 Turbo Data Laboratories, Inc. 表形式データをソートする方法、マルチコア型装置、及び、プログラム

Also Published As

Publication number Publication date
CN112789608A (zh) 2021-05-11
US20210216279A1 (en) 2021-07-15
JPWO2020071368A1 (ja) 2021-11-25

Similar Documents

Publication Publication Date Title
US10789545B2 (en) Method and system for distributed machine learning
US9002758B2 (en) Ranking for inductive synthesis of string transformations
US20200065067A1 (en) Random number generator in a parallel processing database
CN110134714B (zh) 适用于大数据迭代计算的分布式计算框架缓存索引方法
US20190012144A1 (en) Random number generator in a parallel processing database
US20170242855A1 (en) Fast, scalable dictionary construction and maintenance
JP2020513176A5 (ja)
US20180039693A1 (en) Learned data filtering
US9009147B2 (en) Finding a top-K diversified ranking list on graphs
US8788499B2 (en) System and method for finding top N pairs in a map-reduce setup
WO2016184029A1 (zh) 支持哈希查找和路由查找的存储、查找方法和装置、存储介质
CN107656978B (zh) 一种基于函数依赖的多样性数据修复方法
US20110145261A1 (en) Efficient calculation of node proximity on graphs with side information
CN106716420A (zh) 消息匹配方法、消息匹配装置及计算机程序产品、电子设备
CN113495965A (zh) 一种多媒体内容检索方法、装置、设备及存储介质
CN113177123A (zh) 文本转sql模型的优化方法及系统
CN108628907A (zh) 一种用于基于Aho-Corasick的Trie树多关键词匹配的方法
Lee et al. Ensembles of Lasso screening rules
Bornea et al. Adaptive join operators for result rate optimization on streaming inputs
EP3955256A1 (en) Non-redundant gene clustering method and system, and electronic device
WO2021253938A1 (zh) 一种神经网络的训练方法、视频识别方法及装置
US7937411B2 (en) Finite-state machine augmented for multiple evaluations of text
WO2020071368A1 (ja) データ処理システム、データ処理装置、データ処理方法及びプログラム
Myoupo et al. Parallel dynamic programming for solving the optimal search binary tree problem on CGM
JP5523360B2 (ja) N分木内部ノードの圧縮方法及び装置及びプログラム

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020550453

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19869022

Country of ref document: EP

Kind code of ref document: A1