Information processing method, information processing device, and program

The NNI method improves JOIN operation efficiency by dividing tables into SVL and NNC arrays, facilitating high-speed operations on tabular data post-JOIN through shared SVLs, enhancing performance in sorting, searching, aggregation, and set extraction.

JP7620785B2Active Publication Date: 2025-01-24ESS HLDG CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2022574916
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2021-01-13
Publication Date
2025-01-24
Estimated Expiration
2041-01-13

AI Technical Summary

Technical Problem

Existing technologies for joining multiple tabular data sets in databases, such as those described in Patent Document 1, while speeding up JOIN operations, do not adequately address the need for faster calculations on tabular data after JOIN operations.

Method used

An information processing method utilizing Natural Number Indexing (NNI) to divide tables into SVL (Sorted Value List) and NNC (Natural Numbered Column) arrays, enabling sharing of SVLs across tables and performing JOIN operations using these arrays to create a JOIN table in a Natural Number Index format, followed by operations like sorting, searching, aggregation, and column transfer.

Benefits of technology

Enables faster calculations on tabular data after JOIN operations by leveraging NNI format tables, allowing high-speed performance of various operations including sorting, searching, aggregation, and extraction of matched/unmatched sets.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007620785000001
    Figure 0007620785000001
  • Figure 0007620785000002
    Figure 0007620785000002
  • Figure 0007620785000003
    Figure 0007620785000003
Patent Text Reader

Abstract

This information processing device that aggregates using a plurality of dimensions included in a virtual table in which two tables that have a natural index format are joined by a prescribed key. Using this information processing method, a computer executes: an aggregation procedure in which the plurality of dimensions included in the two tables are aggregated for each key value; and a sum calculation procedure in which the sum of the aggregation results from the aggregation procedure is calculated.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to an information processing method, an information processing device, and a program. [Background technology]

[0002] Conventionally, various databases, such as relational databases (RDBs), have been known. Databases such as RDBs target tabular data and support various operations such as JOIN, search, sorting, and aggregation. The technology described in Patent Document 1 is known as a conventional technology for quickly JOINing multiple tabular data without using a large amount of memory. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] JP 2003-150633 A Summary of the Invention [Problem to be solved by the invention]

[0004] The technology described in Patent Document 1 above uses arrays and value lists to speed up JOINs of multiple tabular data, but it is also possible to speed up various calculations on the tabular data after the JOIN.

[0005] An embodiment of the present invention has been made in consideration of the above points, and has an object to realize high-speed calculations on tabular data after JOIN. [Means for solving the problem]

[0006] In order to achieve the above object, an information processing method according to an embodiment of the present invention includes: numberAn information processing method for performing aggregation across multiple dimensions contained in a virtual table in which two index-formatted tables are JOIN-combined with a specified key, in which a computer executes an aggregation step for performing aggregation across the multiple dimensions contained in the two tables for each value of the key, and a sum calculation step for calculating the sum of the results of the aggregation by the aggregation step. Effect of the Invention

[0007] It is possible to speed up calculations on tabular data after JOIN. [Brief description of the drawings]

[0008] [Figure 1] FIG. 1 is a diagram illustrating an example of a hardware configuration of a data processing device according to an embodiment of the present invention. [Diagram 2] FIG. 2 is a diagram illustrating an example of a functional configuration of a data processing device according to the present embodiment. [Diagram 3] FIG. 13 is a diagram illustrating an example of a table. [Figure 4] FIG. 13 is a diagram illustrating an example of a table in the NNI format. [Diagram 5] 13 is a diagram for explaining an example of preparation of a conversion array and newSVL. FIG. [Figure 6] FIG. 13 is a diagram for explaining an example of creating a newSVL. [Figure 7] FIG. 13 is a diagram for explaining an example of NNC conversion. [Figure 8] FIG. 13 is a diagram illustrating an example of a common SVL result. [Figure 9] FIG. 13 is a diagram illustrating an example of InnerJOIN and OuterJOIN. [Figure 10] FIG. 13 is a diagram for explaining an example of a change in the representation method of an NNI format table. [Figure 11] FIG. 13 is a diagram illustrating an example of a table to be joined and its NNI format. [Figure 12] 13 is a diagram for explaining an example of a table after SVL standardization processing. FIG. [Figure 13]FIG. 13 is a diagram illustrating an example of an SAcm creation process in InnerJOIN. [Figure 14] FIG. 13 is a diagram illustrating an example of MAcm creation processing in InnerJOIN. [Figure 15] FIG. 13 is a diagram illustrating an example of an InnerJOIN table in the NNI format. [Figure 16] FIG. 13 is a diagram illustrating an example of an InnerJOIN table. [Figure 17] FIG. 13 is a diagram (part 1) for explaining an example of an SAcm creation process in OuterJOIN. [Figure 18] FIG. 2 is a diagram (part 2) for explaining an example of the SAcm creation process in OuterJOIN. [Figure 19] FIG. 3 is a diagram (part 3) for explaining an example of the SAcm creation process in OuterJOIN. [Figure 20] FIG. 13 is a diagram (part 1) for explaining an example of MAcm creation processing in OuterJOIN. [Figure 21] FIG. 2 is a diagram (part 2) for explaining an example of the MAcm creation process in OuterJOIN. [Figure 22] FIG. 13 is a diagram illustrating an example of an Outer JOIN table in the NNI format. [Figure 23] FIG. 13 is a diagram illustrating an example of an Outer JOIN table. [Figure 24] FIG. 13 is a diagram illustrating an example of reading a RightOuterJOIN portion. [Diagram 25] FIG. 13 is a diagram illustrating an example of reading a LeftOuterJOIN portion. [Figure 26] FIG. 13 is a diagram illustrating an example of reading an InnerJOIN portion. [Figure 27] FIG. 13 is a diagram showing an example of tables that are targets of a JOIN using multiple columns as keys and their NNI format. [Figure 28] FIG. 13 is a diagram showing an example of a table to be joined using multiple columns as keys after SVL sharing and its NNI format. [Figure 29] FIG. 2 is a diagram showing an example of a multi-key field. [Diagram 30] FIG. 13 is a diagram for explaining an example of sorting and transposing an EOrdSet. [Diagram 31] FIG. 1 is a diagram (part 1) for explaining an example of creating SVL and Conv arrays. [Diagram 32] FIG. 2 is a diagram (part 2) for explaining an example of creating SVL and Conv arrays. [Diagram 33] FIG. 13 is a diagram illustrating an example of an NNI format table for JOIN using multiple columns as keys. [Diagram 34] FIG. 13 is a diagram illustrating an example of SVL sharing processing in a JOIN using multiple columns as keys. [Diagram 35] FIG. 13 is a diagram illustrating an example of a tabulation target table. [Diagram 36] FIG. 13 is a diagram illustrating an example of decomposition by a JOIN key value. [Figure 37] FIG. 13 is a diagram for explaining an example of a product of a table; [Figure 38] FIG. 11 is a diagram illustrating an example of a counting result table. [Figure 39] FIG. 13 is a diagram for explaining an example of sums and products in the sorting method. [Diagram 40] FIG. 13 is a diagram for explaining an example of sums and products in the cube method. [Diagram 41] FIG. 13 is a diagram for explaining an example of column transfer. [Diagram 42] FIG. 13 is a diagram showing an example of an extraction target table of sets that matched / did not match JOIN. [Diagram 43] FIG. 13 is a diagram showing an example of an NNI format of an extraction target table of sets that matched a JOIN / sets that did not match a JOIN. [Diagram 44] FIG. 1 is a diagram (part 1) for explaining an example of extraction of sets that match / do not match a JOIN. [Diagram 45] FIG. 2 is a diagram (part 2) for explaining an example of extraction of sets that match / do not match a JOIN. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0009] An embodiment of the present invention will be described below. In this embodiment, a data processing device 10 capable of quickly executing various operations on tabular data after a plurality of tabular data are JOINed will be described. Here, in this embodiment, five operations on tabular data after JOIN, including sorting, searching, tabulation, extraction of sets that match JOIN and sets that do not match, and column transfer, will be described as examples of these various operations. Note that hereinafter, tabular data will be referred to as "table data" or simply "table", and each piece of data that constitutes a table (i.e., a row of a table) will be referred to as a "record". Also, a column (data item) of a table will be referred to as a "column".

[0010] <Natural index> First, we will explain a method called Natural Number Index (NNI). Natural Number Index is a method devised by the present inventor, which divides a table into data strings for each column, and divides each data string into the following two types of arrays. Hereinafter, this division is also called "component decomposition".

[0011] · SVL (Sorted Value List) ·NNC(Natural Numbered Column) SVL is an array in which the values ​​that occur in a column are arranged in ascending order without duplication. NNC is an array in which each value in a column is represented by its storage location in SVL. Therefore, the value of each element in NNC will not exceed the array size of SVL at most. In addition, with natural number indexing, the storage location of each element in NNC is referenced as a record number.

[0012] The above SVL is called a "value list" in Patent Document 1, and NNC is called a "pointer array." In other words, the natural number index is the name given to the method in Patent Document 1 of dividing a table into a value list and a pointer array for each column.

[0013] The natural number index uses OrdSet (Ordered Set), which is an array for handling what is called an "ordered set" in mathematics. An OrdSet is created by arranging record numbers (positions within the NNC). Since an OrdSet is a set, no duplicate elements appear. Furthermore, the value of each element does not exceed the size of the NNC. The above OrdSet is referred to as an "ordered set" in Patent Document 1.

[0014] By using OrdSet, it is possible to record the records hit by a search, or the order of the records rearranged by sorting. In addition, a new OrdSet is created each time a search or sort is performed. Therefore, by switching OrdSet, it is possible to read both the table before processing such as a search or sort, and the table after processing such as a search or sort.

[0015] In this embodiment, multiple tables are expressed with natural number indexes, their SVLs are made common, and then JOIN is performed using the common SVL to create a JOIN table expressed with natural number indexes. Then, various operations such as sorting, searching, aggregation, extraction of sets that match the JOIN and sets that do not match the JOIN, and column transfer are performed on the JOIN table. This makes it possible to execute these various operations on the JOIN table at high speed. Note that hereinafter, a table expressed with natural number indexes is also referred to as a "natural number index format table" or an "NNI format table", etc.

[0016] Note that, while arrays are often used in natural number indexes, in this embodiment, the arrays are defined as follows.

[0017] Arrays are 0-based, and their elements are referenced by integers equal to or greater than 0. Therefore, for example, the elements of an array A of size N are A[0], A[1],...,A[N-1].

[0018] ·If A is an array, let A[-1] = 0.

[0019] <Hardware configuration> Next, a hardware configuration of a data processing device 10 according to the present embodiment will be described with reference to Fig. 1. Fig. 1 is a diagram showing an example of a hardware configuration of a data processing device 10 according to the present embodiment.

[0020] 1, a data processing device 10 according to this embodiment is realized by the hardware configuration of a general computer or computer system, and includes an input device 11, a display device 12, an external I / F 13, a communication I / F 14, a processor 15, and a memory device 16. Each of these pieces of hardware is connected to each other via a bus 17 so as to be able to communicate with each other.

[0021] The input device 11 is, for example, a keyboard, a mouse, a touch panel, etc. The display device 12 is, for example, a display, etc. Note that the data processing device 10 does not necessarily have to have at least one of the input device 11 and the display device 12, for example.

[0022] The external I / F 13 is an interface with an external device such as a recording medium 13a. The data processing device 10 can read and write data from and to the recording medium 13a via the external I / F 13. Examples of the recording medium 13a include a CD (Compact Disc), a DVD (Digital Versatile Disk), an SD memory card (Secure Digital memory card), and a USB (Universal Serial Bus) memory card.

[0023] The communication I / F 14 is an interface for connecting the data processing device 10 to a communication network. The processor 15 is, for example, various arithmetic devices such as a CPU (Central Processing Unit) and a GPU (Graphics Processing Unit). The memory device 16 is, for example, various storage devices such as a HDD (Hard Disk Drive), an SSD (Solid State Drive), a RAM (Random Access Memory), a ROM (Read Only Memory), and a flash memory.

[0024] The data processing device 10 according to the present embodiment has the hardware configuration shown in Fig. 1 and can realize various processes described below. Note that the hardware configuration shown in Fig. 1 is an example, and the data processing device 10 may have other hardware configurations. For example, the data processing device 10 may have multiple processors 15 and multiple memory devices 16.

[0025] <Functional configuration> Next, the functional configuration of the data processing device 10 according to the present embodiment will be described with reference to Fig. 2. Fig. 2 is a diagram showing an example of the functional configuration of the data processing device 10 according to the present embodiment.

[0026] 2, the data processing device 10 according to this embodiment includes an SVL standardization processing unit 101, a JOIN creation processing unit 102, a search processing unit 103, a sort processing unit 104, an aggregation processing unit 105, a column transfer processing unit 106, and a set extraction processing unit 107. Each of these units is realized, for example, by processing executed by the processor 15 of one or more programs installed in the data processing device 10.

[0027] Moreover, the data processing device 10 according to the present embodiment has a storage unit 108. The storage unit 108 is realized, for example, by the memory device 16. However, the storage unit 108 may also be realized, for example, by a storage device (such as a database server) connected to the data processing device 10 via a communication network.

[0028] Various tables that are the targets of JOIN and various calculations are stored in the storage unit 108. It is assumed that the tables stored in the storage unit 108 are NNI format tables.

[0029] The SVL sharing processing unit 101 shares the SVL of NNI format tables. The JOIN creation processing unit 102 joins multiple NNI format tables to create an NNI format JOIN table. The search processing unit 103 searches the NNI format JOIN table. The sort processing unit 104 sorts the NNI format JOIN table. The aggregation processing unit 105 aggregates the NNI format JOIN table. The column transfer processing unit 106 performs column transfer for the NNI format JOIN table to transfer a column from one table that is the source of the JOIN to the other table. The set extraction processing unit 107 extracts sets that match the JOIN and sets that do not match the JOIN from the NNI format JOIN table.

[0030] <Example> In the following, we will explain the examples of JOIN of two tables, search, sort, aggregation, column transfer for JOIN table, and extraction of sets that match JOIN and sets that do not match. Also, before explaining JOIN, we will explain the standardization of SVL required when joining two tables in NNI format.

[0031] [SVL commonization] In this embodiment, as an example, SVL standardization will be described for table 1000 (Table-A) and table 2000 (Table-B) shown in FIG.

[0032] Table 1000 consists of records that contain the column "Name", and the Name values ​​of each record are as follows.

[0033] The Name value of the record with record number "0" is "Tom" The Name value of the record with record number "1" is "Bob" The Name value of the record with record number "2" is "Dolly" Table 2000 is also made up of records containing the column "Name", and the Name values ​​of each record are as follows:

[0034] The Name value of the record with record number "0" is "Bob" The Name value of the record with record number "1" is "Cathy" The Name value of the record with record number "2" is "Alice" The Name value of the record with record number "3" is "Jerry" The Name value of the record with record number "4" is "Bob" 3, each record in table 1000 and table 2000 includes only one column, but this is for the sake of simplicity of explanation of this embodiment, and naturally multiple columns may be included. When multiple columns are included in each record, as described above, the natural number indexes NNC and SVL are created for each column in each table.

[0035] FIG. 4 shows table 1000 and table 2000 shown in FIG. 3 expressed using natural number indexes.

[0036] As mentioned above, an OrdSet is created for each table, and a new OrdSet is created each time a search or sort is performed. For this reason, in order to clearly indicate which OrdSet belongs to which table, the table name may be written with "(table name - identification number)" on the right. For example, the 0th OrdSet of Table-A is the OrdSet (A-0) However, if the table name is self-evident, an "(identification number)" is added to the left and the table name is omitted.

[0037] In addition, to clarify which table and column SVL and NNC correspond to, they may be written with "(table name - column name)" added to the right. For example, the SVL corresponding to the column "Name" of Table-A is SVL (A-Name) It may be written as:

[0038] In Figure 4, Table 1000 (Table-A) is (A-0) ) and NNC1200 (NNC (A-Name) ) and SVL1300(SVL (A-Name) 4, the table 2000 (Table-B) is decomposed into OrdSet 2100 (OrdSet (A-0) ) and NNC2200(NNC (B-Name) ) and SVL2300(SVL (B-Name) ) is shown below.

[0039] SVL1300 is an array in which the occurrence values ​​of the column "Name" of table 1000 are arranged in ascending order without duplication. On the other hand, NNC1200 is an array in which each value of the column "Name" of table 1000 is replaced with the storage position of that value in SVL1300. For example, the Name value "Tom" of record number "0" of table 1000 is stored at storage position "2" in SVL1300, so the element at storage position "0" in NNC1200 is "2". Similarly, the Name value "Bob" of record number "1" of table 1000 is stored at storage position "0" in SVL1300, so the element at storage position "1" in NNC1200 is "0". Similarly, the Name value "Dolly" of record number "2" of table 1000 is stored at storage position "1" in SVL1300, so the element at storage position "2" in NNC1200 is "1".

[0040] Also, OrdSet 1100 is created by simply arranging the record numbers (that is, positions within NNC) of table 1000. The values ​​of each element of the arrays of OrdSet 2100, NNC 2200, and SVL 2300 are determined in a similar manner.

[0041] In the following, a case where an SVL is shared will be described using NNC 1200 and SVL 1300 and NNC 2200 and SVL 2300 shown in Fig. 4. Note that OrdSet 1100 and OrdSet 2100 are not particularly used in sharing an SVL.

[0042] First, the SVL sharing processor 101 prepares a conversion array of the same size as the SVL, and a common SVL (newSVL) that stores each value of each SVL. That is, as shown in Fig. 5, the SVL sharing processor 101 prepares a conversion array 1400 (Conv0) of the same size as the SVL1300, a conversion array 2400 (Conv1) of the same size as the SVL2300, and a newSVL3100 that stores each value of the SVL1300 and the SVL2300. Here, the size of the newSVL3100 is the total number of values ​​excluding duplicates in the SVL1300 and the SVL2300 (i.e., the size of the SVL1300 + the size of the SVL2300 - the number of duplicate values ​​in the SVL1300 and the SVL2300).

[0043] Next, the SVL sharing processing unit 101 compares the values ​​of each SVL from the top, stores the smaller value in newSVL, and stores the storage position in the conversion array corresponding to the SVL in which the smaller value was stored. When the storage position is stored in the conversion array, the SVL sharing processing unit 101 decreases the comparison position of the SVL corresponding to that conversion array by one. Note that, if the values ​​at the comparison positions in each SVL are the same, the SVL sharing processing unit 101 stores the storage position of that value in newSVL in both conversion arrays, and decreases the comparison positions of both SVLs by one.

[0044] Specifically, the SVL standardization processor 101 executes Step 1-1 to Step 1-6 as shown in Fig. 6. Note that the initial states of the comparison positions of the SVL 1300 and the SVL 2300 are both at the beginning (that is, position "0").

[0045] Step 1-1: First, the SVL sharing processing unit 101 compares the value "Bob" stored at position "0" in the SVL 1300 with the value "Alice" stored at position "0" in the SVL 2300. In this case, since "Alice" is the smaller value, the SVL sharing processing unit 101 stores "Alice" in newSVL 3100 and stores the storage position "0" in the conversion array 2400 (Conv1). Then, the SVL sharing processing unit 101 lowers the comparison position of the SVL 2300 by one, setting the comparison position to "1."

[0046] Step 1-2: Next, the SVL sharing processing unit 101 compares the value "Bob" stored at position "0" of the SVL 1300 with the value "Bob" stored at position "1" of the SVL 2300. In this case, since they are the same value, the SVL sharing processing unit 101 stores "Bob" in newSVL 3100 and stores its storage position "1" in the conversion array 1400 (Conv0) and conversion array 2400 (Conv1). Then, the SVL sharing processing unit 101 decrements the comparison position of the SVL 1300 by one to "1", and decrements the comparison position of the SVL 2300 by one to "2".

[0047] Step 1-3: Next, the SVL sharing processing unit 101 compares the value "Dolly" stored at position "1" in the SVL 1300 with the value "Cathy" stored at position "2" in the SVL 2300. In this case, since "Cathy" is the smaller value, the SVL sharing processing unit 101 stores "Cathy" in newSVL 3100 and stores its storage position "2" in the conversion array 2400 (Conv1). Then, the SVL sharing processing unit 101 moves the comparison position in the SVL 2300 down by one, making the comparison position "3".

[0048] Step 1-4: Next, the SVL sharing processing unit 101 compares the value "Dolly" stored at position "1" in the SVL 1300 with the value "Jerry" stored at position "3" in the SVL 2300. In this case, since "Dolly" is the smaller value, the SVL sharing processing unit 101 stores "Dolly" in newSVL 3100 and stores its storage position "3" in the conversion array 1400 (Conv0). Then, the SVL sharing processing unit 101 moves the comparison position in the SVL 1300 down by one, making the comparison position "2."

[0049] Step 1-5: Next, the SVL sharing processing unit 101 compares the value "Tom" stored at position "2" of the SVL 1300 with the value "Jerry" stored at position "3" of the SVL 2300. In this case, since "Jerry" is the smaller value, the SVL sharing processing unit 101 stores "Jerry" in newSVL 3100 and stores its storage position, "4," in the conversion array 2400 (Conv1). Then, the SVL sharing processing unit 101 moves the comparison position of the SVL 2300 down by one, making the comparison position "4." Note that if the comparison position of either SVL exceeds the size number of that SVL, the comparison ends.

[0050] Step 1-6: Finally, since no value is stored at position "4" in SVL 2300, the SVL sharing processor 101 stores the value "Tom" stored at position "2" in SVL 1300 in newSVL 3100, and also stores the storage position, "5," in the conversion array 1400 (Conv0). Then, the SVL sharing processor 101 moves the comparison position of SVL 1300 down by one, making the comparison position "3."

[0051] This creates newSVL3100, which is a common implementation of SVL1300 and SVL2300. When this newSVL3100 was created, conversion arrays 1400 and 2400 were also created, which are used to convert NNC1200 and NNC2200, respectively.

[0052] Then, the SVL standardization processor 101 converts the values ​​of each NNC using each conversion array.

[0053] Specifically, as shown in FIG. 7, the SVL standardization processing unit 101 executes Steps 2-1 to 2-3 and Steps 3-1 to 3-5.

[0054] Step 2-1: First, the SVL standardization processing unit 101 updates the value "2" stored in position "0" of the NNC 1200 with the value "5" stored in the position of the conversion array 1400 corresponding to the value "2." This updates the value "2" stored in position "0" of the NNC 1200 to "5."

[0055] Step 2-2: Next, the SVL standardization processing unit 101 updates the value "0" stored in position "1" of NNC 1200 with the value "1" stored in the position of that value "0" in the conversion array 1400. This updates the value "0" stored in position "1" of NNC 1200 to "1".

[0056] Step 2-3: Then, the SVL standardization processing unit 101 updates the value "1" stored in position "2" of the NNC 1200 with the value "3" stored in the position of the same value "1" in the conversion array 1400. As a result, the value "1" stored in position "2" of the NNC 1200 is updated to "3".

[0057] Step 3-1: First, the SVL standardization processing unit 101 updates the value "1" stored in position "0" of the NNC 2200 with the value "1" stored in the position of that value "1" in the conversion array 2400. As a result, the value "1" stored in position "0" of the NNC 1200 is updated to "1".

[0058] Step 3-2: Next, the SVL standardization processing unit 101 updates the value "2" stored in position "1" of NNC 2200 with the value "2" stored in the position of that value "2" in the conversion array 2400. As a result, the value "2" stored in position "1" of NNC 1200 is updated to "2".

[0059] Step 3-3: Next, the SVL standardization processing unit 101 updates the value "0" stored in position "2" of NNC 2200 with the value "0" stored in the position of that value "0" in the conversion array 2400. As a result, the value "0" stored in position "2" of NNC 1200 is updated to "0".

[0060] Step 3-4: Next, the SVL standardization processing unit 101 updates the value "3" stored in position "3" of NNC 2200 with the value "4" stored in the position of that value "3" in the conversion array 2400. As a result, the value "3" stored in position "3" of NNC 1200 is updated to "4".

[0061] Step 3-5: Then, the SVL standardization processing unit 101 updates the value "1" stored in position "4" of NNC 2200 with the value "1" stored in the position of that value "1" in the conversion array 2400. As a result, the value "1" stored in position "4" of NNC 1200 is updated to "1".

[0062] As a result, NNC1200 and NNC2200 are converted by the conversion array 1400 and the conversion array 2400, respectively. 2 10 and newNNC2 2 It is written as 10.

[0063] As a result, the newSVL3100 and newNNC1 shown in Figure 8 2 10 and newNNC2 2 10. These newSVL3100 and newNNC1 2 10 and newNNC2 2 10 is the result of the SVL common processing, and by using this result, it is possible to quickly realize JOIN of two tables and various operations on JOIN tables.

[0064] [JOIN] We will explain JOIN between two tables. JOIN is an operation that virtually joins two tables to create one table, and is broadly divided into two types: InnerJOIN and OuterJOIN. Note that JOIN may be called "virtual JOIN" to explicitly state that two tables are virtually joined.

[0065] In InnerJOIN, for example, as shown in the top part of Figure 9, a record from either the left or right table appears in the JOIN table only if there is a record in the opposite table with a matching JOIN key (JKey). However, the number of occurrences is not limited to once.

[0066] On the other hand, with OuterJOIN, for example, as shown in the bottom of Figure 9, records from both the left and right tables appear in the JOIN table regardless of whether there is a record with a matching JOIN key (JKey) in the opposite table. However, the number of occurrences is not limited to one. Also, "NULL" is set in the columns of the table on the side where there is no matching JOIN key.

[0067] In the following, among the tables to be JOINed, a table in which the order of records is preserved will be referred to as the "Master side table" or "Master side", etc. On the other hand, a table in which the order of records is not necessarily preserved will be referred to as the "Slave side table" or "Slave side", etc. In the example shown in Figure 9, Table-X is the Master side and Table-Y is the Slave side.

[0068] In an Outer JOIN, records with a JOIN key value that exists only on the Slave side cannot be positioned in the JOIN table, so they are usually placed from the top or the bottom. In the example shown in Figure 9, a record with a JOIN key value "D" that exists only on Table-Y is placed at the top of the JOIN table.

[0069] As shown in FIG. 9, in an Outer JOIN, "NULL" is set in the column of the table on the side where no matching JOIN key exists. For this reason, it is convenient to include NULL records in advance in the table to which the JOIN is to be performed. Therefore, in this embodiment, as shown in FIG. 10, the OrdSet of the NNI format table to be joined is started from "1", and "0" is added to the beginning of the NNC and "NULL" is added to position "0" of the SVL. By changing the representation method of the NNI format in this way, "NULL" can be used as necessary in the JOIN table, although "NULL" is hidden and not visible before the JOIN.

[0070] Note that SVL stores each value in ascending order, so NULL must be the smallest value. Therefore, in reality, if the value stored in SVL is an integer, 2 63 For floating point numbers, -∞ can be used as NULL, and for strings, an empty string can be used as NULL.

[0071] Since a JOIN table is a virtual join of two tables, data cannot be processed or edited, but it is possible to perform searches, sorting, aggregation, and other calculations at high speed. This is because even if a large number of records (e.g. billions of records) are difficult to handle in the actual table due to memory shortages, the join is virtual and therefore can be handled with the number of records in the actual table.

[0072] (Inner JOIN) Below, Table 4000 (Table-A) and Table 5000 (Table-B) shown in Figure 11 are B ) using the JOIN key "Name" to create a JOIN table. (A-0) ) and NNC4210(NNC (A-Name) ) and SVL4310(SVL (A-Name) ) and NNC4220(NNC (A-Point) ) and SVL4320(SVL (A-Point)) and OrdSet5100. Similarly, table 5000 is decomposed into OrdSet5100 (OrdSet (B-0) ) and NNC5210(NNC (B-Name) ) and SVL5310(SVL (B-Name) ) and NNC5220(NNC (B-Area) ) and SVL5320(SVL (B-Area) ) and is decomposed into

[0073] At this time, the following Step 4-1 to Step 4-3 are executed to create a JOIN table in which table 4000 and table 5000 are joined with InnerJOIN.

[0074] Step 4-1: First, the SVL sharing processing unit 101 uses the SVL and NNC related to the JOIN key to share the SVL of the NNI format table to be joined. That is, as shown in FIG. 12, the SVL sharing processing unit 101 shares the SVL of the NNI format table to be joined using the NNC 4210 (NNC (A-Name) ) and SVL4310(SVL (A-Name) ) and NNC5210(NNC (B-Name) ) and SVL5310(SVL (B-Name) ) is used to standardize the SVL by the SVL standardization process described above. (A-Name) ) and newNNC5211(newNNC (B-Name) ) and newSVL6100(newSVL (Name) In the following, the word "new" may be omitted for NNCs and SVLs created by the SVL standardization process.

[0075] Step 4-2: Next, the JOIN creation processing unit 102 creates the OrdSet (B-0)Using this, an array called SAcm (Slave-side Accumulation array) is created. SAcm is an array that stores values ​​that specify the next position after the end position of the record group in the Slave-side table corresponding to each JOIN key value when the Slave-side OrdSet is sorted by the JOIN key. This array is also called Aggr, and is called the "slave-side accumulation number array" in the above-mentioned Patent Document 1.

[0076] Specifically, as shown in FIG. 13, the JOIN creation processing unit 102 creates an OrdSet 5100 (OrdSet (B-0) ) in ascending order by the JOIN key "Name" to find OrdSet5110 (OrdSet (B-1) ) is created. This OrdSet5110(OrdSet (B-1) ) represent the JOIN key values ​​"Alice", "Amy", "Bob", "Bob", "Dolly", and "Dolly", respectively.

[0077] Furthermore, the JOIN creation processing unit 102 prepares an Aggr array 5400 with "0" stored at the beginning, and then stores the cumulative totals of JOIN key values ​​in order in the Aggr array 5400. As a result, an SAcm 5400 is created as the Aggr array 5400. The following is stored in each element of this SAcm 5400.

[0078] 0th element: Cumulative count of JOIN key value "NULL" 1st element: Accumulative count of JOIN key value "Alice" Second element: The cumulative number of JOIN key values ​​"Alice" and "Amy" Third element: Accumulative count of JOIN key values ​​"Alice" to "Bob" Fourth element: Accumulative count of JOIN key values ​​"Alice" to "Cathy" 5th element: Accumulative count of JOIN key values ​​"Alice" to "Dolly" Therefore, in the slave table 5000, the number of records (occurrences) with the i-th JOIN key value newSVL[i] can be calculated by SAcm[i]-SAcm[i-1]. Also, the record number of the record with the i-th JOIN key value newSVL[i] is calculated by the OrdSet (B-1) It can be calculated using [x].

[0079] Step 4-3: Next, the JOIN creation processing unit 102 creates the OrdSet (A-0) and N.N.C. (A-Name) Using and SAcm, an array called MAcm (Master-side Accumulation array) is created. MAcm is an array that represents the cumulative number of repetitions of the JOIN key value of the Master-side table in the JOIN table. This array is called the "Master-side accumulation number array" in the above-mentioned Patent Document 1.

[0080] Specifically, the JOIN creation processor 102 calculates Count(Master[i]) as follows:

[0081] Count(Master[i]) = SAcm[NNC (A-Name) [OrdSet (A-0) [i]]]-SAcm[NNC (A-Name) [OrdSet (A-0) [i]]-1] The above Count(Master[i]) represents the number of records in the Slave table that correspond to the i-th record Master[i] in the Master table with respect to the JOIN key. Each Count(Master[i]) for i=0,1,...,5 is as shown in the left diagram of Figure 14. This means, for example, that the 0th record in table 4000 corresponds to two records in table 5000 (the first and third records). Similarly, this means that the 1st record in table 4000 corresponds to two records in table 5000 (the second and fourth records). Similarly, this means that the third record in table 4000 does not have a corresponding record in table 5000. The same is true for the others.

[0082] Then, the JOIN creation processing unit 102 calculates the cumulative number of Count(Master[i]) for i=0, 1, . . . , 5 in order. In this way, the MAcm 4400 is created.

[0083] MAcm[i-1] indicates the start position of appearance of Master[i] in the JOIN table, and MAcm[i]-MAcm[i-1] indicates the number of repetitions of Master[i] in the JOIN table.

[0084] Through the above Step 4-1 to Step 4-3, a JOIN table as shown in Fig. 15 is created. The JOIN table shown in Fig. 15 is composed of MAcm4400, OrdSet4100, NNC4211, SVL6100, NNC4220, SVL4320, SAcm5400, OrdSet51 1 0, NNC5211, NNC5 22 0, and SVL5320. The JOIN table is shown in tabular form in Figure 16.

[0085] Here, we will explain how to read records from a JOIN table that is joined by InnerJOIN. Since the JOIN table is a virtual table, the record number I (JOIN)When specified, the record number I of the Master table (master) and record number I of the slave table (slave) You can identify the record number I from the JOIN table. (JOIN) As an example, the first record in the JOIN table shown in Figure 16 (i.e., I (JOIN) The case of reading out a record of (=1) will be described below in Steps 5-1 to 5-4 with reference to FIG.

[0086] Step 5-1: The JOIN creation processing unit 102 (master) This identifies MAcm[j]>I (JOIN) Find the smallest j that satisfies I (master) =j. Note that MAcm[j]>I (JOIN) The smallest j that satisfies the above condition can be found by using, for example, a bisection method. In the JOIN table shown in FIG. 15, MAcm[0] satisfies the condition MAcm[j]>I (JOIN) Since j=0 is the smallest j that satisfies I (master) =0.

[0087] Step 5-2: The JOIN creation processing unit 102 obtains an offset. The offset is the Master[I (master) ] corresponds to one or more Slave[I (slave) ], and the ranking starts from 0. Note that Slave[I (slave) ] is the I of the Slave table (slave) Represents the th record.

[0088] MAcm[I (master) -1] is the Master[I (master) To represent the start position of ], offset is calculated as follows:

[0089] offset=I (JOIN) -MAcm[I (master) -1] Therefore, in the JOIN table shown in FIG.

[0090] Step 5-3: The JOIN creation processing unit 102 obtains a base. The base is Master[I (master) ] corresponds to one or more Slave[I (slave) ], but OrdSet (B-1) The starting position in is given by:

[0091] base=SAcm[NNC (A-Name) [OrdSet (A-0) [I (master) ]]-1] Therefore, in the JOIN table shown in FIG. 15, base=2 is obtained.

[0092] Step 5-4: The JOIN creation processing unit 102 creates the I (slave) Request.

[0093] I (slave) =base+offset Therefore, in the JOIN table shown in Figure 15, I (slave) =3.

[0094] For the above reasons, (JOIN) For I (master) and I (slave) Since the i-th record of the JOIN table is specified as Join[i], (JOIN) ]=Master[I (master) ]&Slave[I (slave) ] allows you to read records. Note that & indicates record joining. For example, Join[I (JOIN) =1]=Master[I (master) ]&Slave[I (slave) ]=Master[0]&Slave[3]=(Bob,10)&(Bab,East).

[0095] (Outer JOIN) Below, Table 4000 (Table-A) and Table 5000 (Table-B) shown in Figure 11 areB ) and create a JOIN table by performing an Outer JOIN (more accurately, a Full Outer JOIN) using the JOIN key "Name".

[0096] Note that a FullOuterJOIN is equivalent to performing three JOINs: an InnerJOIN, a LeftOuterJOIN, and a RightOuterJOIN. A LeftOuterJOIN is a JOIN where, for Master records that do not have a corresponding record on the Slave side, the order is preserved and NULL is set in the Slave columns. On the other hand, a RightOuterJOIN is a JOIN where, for Slave records that do not have a corresponding record on the Master side, the records are moved to the beginning (or end) and NULL is set in the Master columns.

[0097] At this time, the following Step 6-1 to Step 6-3 are executed to create a JOIN table in which table 4000 and table 5000 are joined with an Outer JOIN.

[0098] Step 6-1: First, the SVL standardization processing unit 101 standardizes the SVL of the NNI format table to be joined, using the SVL and NNC related to the JOIN key, in the same manner as in Step 4-1 above.

[0099] Step 6-2: Next, the JOIN creation processing unit 102 creates the OrdSet (B-0) Specifically, the JOIN creation processing unit 102 creates an SAcm using the following (1-1) to (1-3).

[0100] (1-1) First, as shown in FIG. 17, the JOIN creation processing unit 102 separates the OrdSet 5100 into a set that matches the JOIN and a set that does not match. At this time, the JOIN key on the Slave side that is NULL is also placed in the set that does not match. This is because it is customary not to match NULL. Hereinafter, the matched set will be called the OrdSet 5120 (OrdSet(B-1) ), and the unmatched set is OrdSet5130(OrdSet (B-2) The details of the operation to extract sets that match JOIN and sets that do not match will be described later.

[0101] (1-2) Next, as shown in FIG. 18, the JOIN creation processing unit 102 creates an OrdSet 5120 (OrdSet (B-1) ) to sort OrdSet5121(OrdSet (B-3) At this time, the JOIN creation processing unit 102 also creates an Aggr 5410. As described above, the Aggr 5410 is created by storing "0" at the beginning and then storing the cumulative totals of the JOIN key values ​​in order.

[0102] (1-3) Then, as shown in FIG. 19, the JOIN creation processing unit 102 creates Agg r The number of elements (size) of OrdSet 5130 is added to each element of 5410, and OrdSet 5130 and OrdSet 5121 are combined to create OrdSet 5140 (OrdSet (B-4) ) is created. The Agg after the number of elements in OrdSet5130 is added r 5410 becomes the SAcm 5410. The OrdSet 5140 becomes a sort set of the Slave side table.

[0103] Step 6-3: Next, the JOIN creation processing unit 102 creates the OrdSet (A-0) and N.N.C. (A-Name) The MAcm is created using the SAcm and the MAcm.

[0104] Specifically, the JOIN creation processing unit 102 creates the MAcm according to the following (2-1) to (2-3).

[0105] (2-1) First, the JOIN creation processing unit 102 calculates Count(Master[i]) as follows:

[0106] Count(Master[i]) = SAcm[NNC (A-Name) [OrdSet (A-0) [i]]]-SAcm[NNC (A-Name) [OrdSet (A-0) [i]]-1] (2-2) Next, as shown in FIG. 20, the JOIN creation processing unit 102 performs a calculation using Count(Master[i])= 0 If so, "1" is added. Then, the JOIN creation processing unit 102 calculates the cumulative number of Count(Master[i]) for i=0, 1, . . . , 5 in order. In this way, an intermediate MAcm 4410 is created.

[0107] Note that the reason for adding 1 when Count(Master[i]) = 0 is to implement a LeftOuterJOIN. In the example shown in Fig. 20, by adding 1 to both Count(Master[2]) and Count(Master[5]), the record with the JOIN key value "Cathy" will not disappear but will remain in the JOIN table, thereby implementing a LeftOuterJOIN.

[0108] (2-3) Then, as shown in FIG. 21, the JOIN creation processing unit 102 creates the final MAcm 4420 from the intermediate MAcm 4410, and also creates an OrdSet 4110 (OrdSet (A-1) ) is created. If the size of OrdSet5130, the set that did not match the JOIN, is expressed as "size(B-2)", then MAcm4420 is created by adding "size(B-2)" to the beginning of intermediate stage MAcm4410 and then adding "size(B-2)" to each element. Note that the first element of MAcm4420, "size(B-2)=1", represents the number of times the record set to NULL is repeated.

[0109] On the other hand, OrdSet 4110 is created by adding "0" to the beginning of OrdSet 4100. The first element "0" of OrdSet 4110 indicates that NULL is set in the record on the Master side.

[0110] Through the above Step 6-1 to Step 6-3, a JOIN table as shown in Fig. 22 is created. The JOIN table shown in Fig. 22 is created with MAcm4410, OrdSet4110, NNC4211, SVL6100, NNC4220, SVL4320, SAcm5410, OrdSet5140, NNC5211, NNC5 22 0, and SVL5320. This JOIN table is shown in tabular form in Figure 23.

[0111] Here, we will explain how to read records from a JOIN table joined by an OuterJOIN. A JOIN table joined by an OuterJOIN contains records joined by a RightOuterJOIN, records joined by a LeftOuterJOIN, and records joined by an InnerJOIN. Below, we will explain how to read each record.

[0112] ·Reading the RightOuterJOIN part As an example, the 0th row of the JOIN table shown in Figure 23 (i.e., I (JOIN) The case of reading out a record with a value of 0 (=0) will be described with reference to FIG. 24 in the following Steps 7-1 and 7-2.

[0113] Step 7-1: The JOIN creation processing unit 102 (master) This identifies MAcm[j]>I (JOIN) Find the smallest j that satisfies I (master) =j. Note that MAcm[j]>I (JOIN) The minimum j that satisfies the above can be found by using, for example, a bisection method. As shown in FIG. 24, in the JOIN table shown in FIG. 22, MAcm[0] satisfies MAcm[j]>I (JOIN) Since j=0 is the smallest j that satisfies I (master) =0.

[0114] Step 7-2: The JOIN creation processing unit 102(JOIN) Check whether the record with =0 is RightOuterJOIN. This is the OrdSet (A-1) [I (master) ]=0. (A-1) [I (master) ]=0 then I (JOIN) The records in are joined by RightOuterJOIN, and I (slave) =I (JOIN) It becomes.

[0115] As shown in Figure 24, in the JOIN table shown in Figure 22, OrdSet (A-1) [0]=0, so I (JOIN) =0 records are joined by RightOuterJOIN, and I (slave) =I (JOIN) =0.

[0116] Therefore, Join[I (JOIN) =0]=Master[I (master) ]&Slave[I (slave) ]=Master[0]&Slave[0]=(NULL,NULL)&(Amy,West).

[0117] ·Reading LeftOuterJOIN part As an example, the ninth join table (i.e., I (JOIN) The case of reading out the record (number of records in the table) (number of records in the table) (number of records in the table) will be described with reference to FIG. 25 in the following Steps 8-1 to 8-3.

[0118] Step 8-1: The JOIN creation processing unit 102 (master) As shown in FIG. 25, in the JOIN table shown in FIG. 22, MAcm[6] is identified as MAcm[j]>I (JOIN) j=6 is identified as the smallest j that satisfies I (master) =6.

[0119] Step 8-2: The JOIN creation processing unit 102(JOIN) 25, in the JOIN table shown in FIG. 22, the record OrdSet (A-1) [I (master) ]=6, so I (JOIN) The record with =9 is not a record joined with RightOuterJOIN.

[0120] Step 8-3: The JOIN creation processing unit 102 (JOIN) Check whether the record with =9 is LeftOuterJOIN. This is Count(Master[I (master) ])=0. (master) ])=0 then I (JOIN) The records in are joined by LeftOuterJOIN, in this case, I (slave) does not exist, but the value on the Slave side is NULL (i.e., SVL[0]).

[0121] As shown in FIG. 25, in the JOIN table shown in FIG. 22, Count(Master[6])=SAcm[NNC (A-Name) [OrdSet (A-1) [6]]]-SAcm[NNC (A-Name) [OrdSet (A-1) [6]]-1]=4-4=0. Therefore, I (JOIN) The record with =9 is the record joined with LeftOuterJOIN.

[0122] Therefore, Join[I (JOIN) =9]=Master[I (master) ]&(NULL,NULL)=(Cathy,12)&(NULL,NULL).

[0123] ·Reading the InnerJOIN part As an example, the fourth join table (i.e., I (JOIN)The case of reading out the record of (=4) will be described below in Step 9-1 to Step 9-6 with reference to FIG.

[0124] Step 9-1: The JOIN creation processing unit 102 (master) As shown in FIG. 26, in the JOIN table shown in FIG. 22, MAcm[2] is identified as MAcm[j]>I (JOIN) j=2 is identified as the smallest j that satisfies I (master) =2.

[0125] Step 9-2: The JOIN creation processing unit 102 (JOIN) It is checked whether the record with OrdSet = 4 is RightOuterJOIN. As shown in FIG. 26, in the JOIN table shown in FIG. 22, (A-1) [I (master) ]=2, so I (JOIN) The record with =4 is not a record joined with RightOuterJOIN.

[0126] Step 9-3: The JOIN creation processing unit 102 (JOIN) 26, in the JOIN table shown in FIG. 22, Count(Master[2])=SAcm[NNC (A-Name) [OrdSet (A-1) [2]]]-SAcm[NNC (A-Name) [OrdSet (A-1) [2]]-1]=6-4=2. Therefore, I (JOIN) The record with =4 is not a record joined with LeftOuterJOIN.

[0127] Step 9-4: The JOIN creation processing unit 102 performs the operation (JOIN) -MAcm[I (master) -1] to find offset=1.

[0128] Step 9-5: The JOIN creation processing unit 102 performs the operation (A-Name) [OrdSet(A-1) [I (master) Calculate base=4 by subtracting ]]-1].

[0129] Step 9-6: The JOIN creation processing unit 102 (slave) = base + offset = I (slave) Find =5.

[0130] Therefore, Join[I (JOIN) =4]=Master[I (master) ]&Slave[I (slave) ]=Master[2]&Slave[5]=(Dolly,12)&(Dolly,North).

[0131] (When multiple columns are used as JOIN keys) There are cases where you want to create a JOIN table with multiple columns as JOIN keys. In the following, we will create a JOIN table with two columns, Table 7000 (Table-A) and Table 8000 (Table-B), as shown in Figure 27. B ) and create a JOIN table by joining with the JOIN keys "First" and "Family".

[0132] Here, table 7000 is OrdSet7100 (OrdSet (A-0) ) and NNC7210(NNC (A-First) ) and SVL7310(SVL (A-First) ) and NNC7220(NNC (A-Family) ) and SVL7320(SVL (A-Family) ) for the column "Country". (A-Country) and SVL (A-Country) The components are decomposed as above, but are not shown in the figure.

[0133] Similarly, table 8000 is OrdSet8100 (OrdSet (B-0) ) and NNC8210(NNC (B-First) ) and SVL8310(SVL (B-First) ) and NNC8220(NNC(B-Family) ) and SVL8320(SVL (B-Family) ) and the column "Age" in table 8000 is also decomposed into NNC. (B-Age) and SVL (B-Age) The components are decomposed as above, but are not shown in the figure.

[0134] At this time, first, the following Steps 10-1 to 10-5 are executed to create a JOIN table with multiple columns as JOIN keys.

[0135] Step 10-1: First, the SVL standardization processing unit 101 standardizes the SVL of the NNI format table to be joined for each JOIN key, using the SVL and NNC related to the JOIN key.

[0136] That is, the SVL common processing unit 101 is an NNC 7210 (NNC (A-First) ) and SVL7310(SVL (A-First) ) and NNC8210(NNC (B-First) ) and SVL8310(SVL (B-First) ) to standardize the SVL by the above-mentioned SVL standardization process. As a result, as shown in FIG. (A-First) ) and SVL7311(SVL (A-First) ) and NNC8211(NNC (B-First) ) and SVL8311(SVL (B-First) ) is created. SVL7311 and SVL8311 are SVLs that are shared in the column "First".

[0137] Similarly, the SVL common processing unit 101 is (A-Family) ) and SVL7320(SVL (A-Family) ) and NNC8220(NNC (B-Family) ) and SVL8320(SVL (B-Family) ) is used to standardize the SVL by the above-mentioned SVL standardization process. As a result, as shown in FIG. (A-Family) ) and SVL7321(SVL (A-Family)) and NNC8221(NNC (B-Family) ) and SVL8321(SVL (B-Family) ) is created. SVL7321 and SVL8321 are SVLs that are shared in the column "Family".

[0138] Step 10-2: The JOIN creation processing unit 102 creates an NNI-format table to be used for JOIN. Specifically, the JOIN creation processing unit 102 creates an NNI-format table by the following (3-1) to (3-6).

[0139] 29, the JOIN creation processing unit 102 creates a multi-key field 7250 in which NNC 7211 and NNC 7221 are arranged, and a multi-key field 8250 in which NNC 8211 and NNC 8221 are arranged. Note that the multi-key field 7250 and the multi-key field 8250 are two-dimensional arrays.

[0140] (3-2) Next, as shown in FIG. 30, the JOIN creation processing unit 102 creates an EOrdSet 7110 (EOrdSet (A-0) ) and EOrdSet8110(EOrdSet (B-0) EOrdSet7110 and EOrdSet8110 are called extended universal sets, and OrdSet7100 (OrdSet (A-0) ) and OrdSet8100(OrdSet (B-0) ) with a "0" added to the beginning.

[0141] (3-3) Next, as shown in FIG. 30, the JOIN creation processing unit 102 sorts the EOrdSet 7110 in ascending order by the column "Family" to generate an EOrdSet 7120 (EOrdSet (A-1) ), then sort it in ascending order by column "First" to create EOrdSet7130 (EOrdSet (A-2) Similarly, the JOIN creation processing unit 102 sorts the EOrdSet 8110 in ascending order by the column "Family" to create an EOrdSet 8120 (EOrdSet (B-1)), then sort it in ascending order by column "First" to create EOrdSet8130 (EOrdSet (B-2) )

[0142] (3-4) Next, as shown in FIG. 30, the JOIN creation processing unit 102 performs a transposition operation on the EOrdSet 7130 to generate an EOrdSet 7140 (EOrdSet (A-3) Similarly, the JOIN creation processing unit 102 performs a transposition operation on the EOrdSet 8130 to create an EOrdSet 8140 (EOrdSet (B-3) ) is created. Here, if i,j=0,...,n, and A is an array that satisfies A[i]≠A[j] when i≠j, then the transposition operation for A is -1 Array A that satisfies [j] -1 This refers to the operation of converting

[0143] (3-5) Next, the JOIN creation processing unit 102 VL And create a Conv array.

[0144] Specifically, the JOIN creation processing unit 102 executes steps 1-1 to 1-6 shown in FIG. 31 to generate the SVL 7251 (SVL (A-Comb) ) and Conv7430(Conv A That is, the JOIN creation processing unit 102 creates an SVL 7251 (SVL (A-Comb) ) and change the output position of SVL7251 to Conv7430 (Conv A ) However, if the value to be output is the same as the previous value, it will not be output.

[0145] Step 1-1: The JOIN creation processor 102 uses the value "0" stored in position "0" of the EOrdSet 7130 to output the value "(0,0)" in position "0" of the multi-key field 7250 to position "0" of the SVL 7251. The JOIN creation processor 102 also stores the output position "0" in the Conv 7430.

[0146] Step 1-2: Next, the JOIN creation processor 102 uses the value "3" stored in position "1" of the EOrdSet 7130 to output the value "(2,2)" in position "3" of the multi-key field 7250 to position "1" of the SVL 7251. The JOIN creation processor 102 also stores the output position "1" in the Conv 7430.

[0147] After that, repeat steps 1-3 to 1-6 to install SVL7251 (SVL (A-Comb) ) and Conv7430(Conv A ) is created.

[0148] Similarly, the JOIN creation processing unit 102 executes steps 2-1 to 2-6 shown in FIG. (B-Comb) ) and Conv8430(Conv B That is, the JOIN creation processing unit 102 creates an SVL 8251 (SVL (B-Comb) ) and change the output position of SVL8251 to Conv8430 (Conv B ) However, if the value to be output is the same as the previous value, it will not be output.

[0149] Step 2-1: The JOIN creation processing unit 102 uses the value "0" stored in position "0" of the EOrdSet 8130 to output the value "(0,0)" in position "0" of the multi-key field 8250 to position "0" of the SVL 8251. The JOIN creation processing unit 102 also stores the output position "0" in the Conv 8430.

[0150] Step 2-2: Next, the JOIN creation processing unit 102 uses the value "5" stored in position "1" of the EOrdSet 8130 to output the value "(1,4)" in position "5" of the multi-key field 8250 to position "1" of the SVL 8251. The JOIN creation processing unit 102 also stores the output position "1" in the Conv 8430.

[0151] After that, repeat steps 2-3 to 2-6 to install SVL8251 (SVL (B-Comb) ) and Conv8430(Conv B ) is created.

[0152] (3-6) Then, the JOIN creation processing unit 102 creates an NCC. Specifically, the JOIN creation processing unit 102 creates an NNC 7510 (NNC (A-Comb) ) and NNC8510(NNC (B-Comb) )

[0153] NNC (A-Comb) [i]=Conv A [EOrdSet (A-3) [i] NNC (B-Comb) [i]=Conv B [EOrdSet (B-3) [i] This is EOrdSet (A-3) Conv A By converting it to NNC (A-Comb) Similarly, EOrdSet (B-3) Conv B By converting it to NNC (B-Comb) This means creating a

[0154] As a result of the above, the NNI format table shown in Fig. 33 is obtained. The NNI format table shown in Fig. 33 is an NNI format table for JOIN with multiple columns as keys, and the Master side is SVL7251 (SVL (A-Comb) ) and Conv7430(Conv A ) and NNC7510(NNC (A-Comb) ), and the slave side is SVL8251 (SVL (B-Comb) ) and Conv8430(Conv B ) and NNC8510(NNC (B-Comb) )

[0155] By creating the NNI format table shown in Fig. 33, it is possible to create an NNI format JOIN table with the same processing as when a single column is used as the JOIN key. Therefore, in the following Steps 10-3 to 10-5, the same processing as when a single column is used as the JOIN key is performed.

[0156] Step 10-3: The JOIN creation processing unit 102 uses SVL7251 (SVL (A-Comb) ) and SVL8251(SVL (B-Comb) ) and NNC7510(NNC (A-Comb) ) and NNC8510(NNC (B-Comb) ) is used to standardize the SVL by the above-mentioned SVL standardization process. As a result, as shown in FIG. (A-Comb) ) and NNC8511(NNC (B-Comb) ) is created.

[0157] Step 10-4: Next, the JOIN creation processing unit 102 creates an SAcm. In the case of an Inner JOIN, an SAcm may be created in the same manner as in Step 4-2 above, and in the case of an Outer JOIN, an SAcm may be created in the same manner as in Step 6-2 above.

[0158] Step 10-5: Next, the JOIN creation processing unit 102 creates an MAcm. In the case of an Inner JOIN, an MAcm may be created in the same manner as in Step 4-3 above, and in the case of an Outer JOIN, an MAcm may be created in the same manner as in Step 6-3 above.

[0159] By performing Step 10-1 to Step 10-4 above, a JOIN table with multiple columns as keys is created. Note that the process of reading records from a JOIN table is also the same as that described for InnerJOIN and OuterJOIN.

[0160] [Search for JOIN tables] A search for a JOIN table can be realized by searching the table on the Master side or Slave side by the search processing unit 103, and then performing a JOIN again by the JOIN creation processing unit 102. When performing a JOIN again, it is not necessary to standardize the SVL and perform related processing since it has already been completed.

[0161] There are several types of searches.

[0162] When searching the Master table or the Slave table alone is sufficient For example, when searching for records in which the value of the column "Point" is equal to or greater than "11" in table 4000 shown in Fig. 11, or when searching for records in which the value of the column "Area" is "North" in table 5000 shown in Fig. 11, etc. In such cases, after searching the Master side table or the Slave side table, it is sufficient to perform a JOIN again.

[0163] When searching both the Master table and the Slave table and taking the AND In this case, you can search both the Master table and the Slave table and then perform a JOIN again.

[0164] When searching both the Master table and the Slave table and taking OR In this case, you can search both the Master table and the Slave table and then perform a FullOuterJOIN.

[0165] When NOT is performed If it is NOT(A AND B), just perform a JOIN again as (NOT A) OR (NOT B).

[0166] If it is NOT(A OR B), just perform a JOIN again as (NOT A) AND (NOT B).

[0167] [Sorting on JOIN tables] Sorting of a JOIN table can be achieved in the same way as searching, by sorting the table on the Master side or Slave side by the sort processing unit 104, and then performing a JOIN again by the JOIN creation processing unit 102. However, sorting across tables on both the Master side and the Slave side is not possible. When performing a JOIN again, it is not necessary to standardize the SVL and perform related processing, since this has already been completed.

[0168] [Aggregation on JOIN tables] The following describes aggregation for a JOIN table. As an example, JOIN table 13000 shown in FIG. 35 is the target of the aggregation operation. This JOIN table 13000 is created by joining table 11000 (Sales Log table) and table 12000 (CarMaster) using the JOIN key "Car" (InnerJOIN). The dimensions of the aggregation are columns "Seller" and "Price", and the measures are either "minimum", "maximum", "total", or "count". In the following, the column "Seller" is also referred to as "Dim0", "Price" as "Dim1", and the measure is also referred to as "Msr".

[0169] At this time, the following Steps 11-1 to 11-3 are executed to realize the calculation of a predetermined measure for Dim0 and Dim1.

[0170] Step 11-1: The tabulation processor 105 divides the JOIN source table into separate tables for each JOIN key value.

[0171] Specifically, as shown in FIG. 36, the aggregation processing unit 105 decomposes table 11000 (Sales Log table) into tables 11100, 11200 and 11300 for each JOIN key value "CarA", "CarC" and "CarB", and decomposes table 12000 (CarMaster) into tables 12100, 12200 and 12300.

[0172] Here, table 11100 is obtained by sorting table 11000 (Sales Log table) by JOIN key and extracting only the JOIN key value "CarA" portion. Similarly, table 11200 is obtained by extracting only the JOIN key value "CarC" portion, and table 11300 is obtained by extracting only the JOIN key value "CarB" portion.

[0173] Table 12100 can be obtained by sorting table 12000 (CarMaster) by JOIN key and then extracting only the JOIN key value "CarA" portion. Similarly, table 12200 can be obtained by extracting only the JOIN key value "CarC" portion, and table 12300 can be obtained by extracting only the JOIN key value "CarB" portion.

[0174] Note that table 13100, which is a JOIN of table 11100 and table 12100, is formed by extracting records joined with the JOIN key value "CarA" from JOIN table 13000. Similarly, table 13200, which is a JOIN of table 11200 and table 12200, is formed by extracting records joined with the JOIN key value "CarC" from JOIN table 13000. Similarly, table 13300, which is a JOIN of table 11300 and table 12300, is formed by extracting records joined with the JOIN key value "CarB" from JOIN table 13000.

[0175] Step 11-2: Next, the tabulation processing unit 105 creates a table in which the number of occurrences of the dimension values ​​is counted for each JOIN key value, and then calculates the product of these tables.

[0176] Specifically, as shown in FIG. 37, the aggregation processing unit 105 creates table 11110, which counts the number of occurrences of values ​​of Dim0 for the JOIN key value "CarA", and table 12110, which counts the number of occurrences of values ​​of Dim1, and then creates table 14100, which represents the product of tables 11110 and 12110.

[0177] Similarly, as shown in FIG. 37, the aggregation processing unit 105 creates table 11210, which counts the number of occurrences of values ​​of Dim0 for the JOIN key value “CarC”, and table 12210, which counts the number of occurrences of values ​​of Dim1, and then creates table 14200, which represents the product of tables 11210 and 12210.

[0178] Similarly, as shown in FIG. 37, the aggregation processing unit 105 creates table 11310, which counts the number of occurrences of values ​​of Dim0 for the JOIN key value “CarB”, and table 12310, which counts the number of occurrences of values ​​of Dim1, and then creates table 14300, which represents the product of tables 11310 and 12310.

[0179] There are two methods for calculating the product of two tables: the sort method and the cube method. Details of each calculation method will be described later.

[0180] Step 11-3: Then, the tabulation processing unit 105 calculates the sum of the table obtained by the product in the above Step 11-2. The table obtained by this sum is a table that represents the tabulation result. Specifically, the tabulation processing unit 105 calculates the sum of table 14100, table 14200, and table 14300. An example of the tabulation result table 14400 when the measure is "sum" is shown in FIG. 38.

[0181] There are two methods for calculating the sum of tables: the sort method and the cube method. Details of each calculation method will be described later.

[0182] (Sorting method) Here, a method for calculating the sum and product of tables using the sorting method will be described. As an example, a case where the product of table 11110 and table 12110 shown in Fig. 37 is calculated, and a case where the sum of table 14100 and table 14200 is calculated will be described with reference to Fig. 39.

[0183] ·product First, the tabulation processor 105 repeats the records of table 11110, which is the left table, the same number of times as the number of records of table 12110, which is the right table. That is, since the number of records in table 12110 is "2", each record in table 11110 is repeated twice. As a result, table 11111 shown in FIG. 39 is obtained.

[0184] Next, the tabulation processor 105 joins the dimension (Dim1) and measure (Msr) of the table 12110 to the right of the value of the dimension (Dim0) of the table 11111. This results in the table 11112 shown in FIG.

[0185] Then, when the measure is "total" or "number of items", the tabulation processor 105 multiplies the measure by the Count value and deletes the column "Count". As a result, a table 14100 (product operation result table) expressing the product of the table 11110 and the table 12110 is obtained.

[0186] If the measure is the "minimum value" or "maximum value," the measure is not multiplied by the Count value, and the column "Count" is deleted.

[0187] ·sum The tabulation processing unit 105 sets a comparison position at the beginning of the tables 14100 and 14200, and then creates a sum operation result table that indicates the sum of the tables 14100 and 14200 by comparing the dimensional values ​​of the records at the comparison position.

[0188] Specifically, if Dim0 and Dim1 of records at the comparison positions in table 14100 and table 14200 are the same, one of the following (a) to (c) is performed, and the comparison positions of both table 14100 and table 14200 are lowered by one.

[0189] (a) When the measure is "sum" or "count" A record consisting of the Dim0 and Dim1 values ​​of the record at the comparison position in table 14100 and the sum of the measure value of the record at the comparison position in table 14100 and the measure value of the record at the comparison position in table 14200 is added to the sum operation result table.

[0190] (b) When the measure is the "minimum" A record consisting of the Dim0 and Dim1 values ​​of the record at the comparison position in table 14100 and the smaller of the measure value of the record at the comparison position in table 14100 and the measure value of the record at the comparison position in table 14200 is added to the sum operation result table.

[0191] (c) When the measure is the "maximum value" A record consisting of the Dim0 and Dim1 values ​​of the record at the comparison position in table 14100 and the greater of the measure value of the record at the comparison position in table 14100 and the measure value of the record at the comparison position in table 14200 is added to the sum operation result table.

[0192] On the other hand, if the values ​​of Dim0 and Dim1 of the records at the comparison positions in table 14100 and table 14200 are not the same, the record with the smaller values ​​of Dim0 and Dim1 is added to the sum operation result table, and the comparison position of the table to which the record was added is lowered by one.

[0193] When there are no more records to be compared in one table, the remaining records in the other table are added to the sum operation result table and the process ends.

[0194] This produces a sum operation result table that indicates the sum of the tables 14100 and 14200. Note that the sum operation result table 14350 shown in Fig. 39 is a sum operation result table when the measure is "total" or "number of items".

[0195] (Cube method) Next, a method for calculating the sum and product of tables using the cube method will be described. As an example, a case where the product of table 11110 and table 12110 shown in Fig. 37 is calculated, and a case where the sum of table 14100 and table 14200 is calculated will be described with reference to Fig. 40.

[0196] ·product First, the aggregation processor 105 identifies the number of types of values ​​of the dimension to be aggregated. This can be identified immediately from the SVL. In the tables 11000 and 12000, Dim0 has three types (i.e., Jim, Kate, Tom) and Dim1 has two types (i.e., Body, Opt1).

[0197] Next, the aggregation processor 105 creates a multidimensional cube with the number of types of dimension values ​​as an axis. Specifically, as shown in FIG. 40, a 3×2 multidimensional cube is created. Each cell of the multidimensional cube is filled with "0" when the measure is "total" or "number", with "+∞" when the measure is "minimum value", and with "-∞" when the measure is "maximum value". This is to detect cases where no measure value is stored in a cell of the multidimensional cube. Also, "0" to "5" are addresses of each cell of the multidimensional cube, and represent pairs of the value of Dim0 and the value of Dim1 in ascending order.

[0198] Next, the aggregation processor 105 stores the measure values ​​in the multidimensional cube. Specifically, for each cell of the multidimensional cube, it stores the measure value corresponding to the pair of Dim0 value and Dim1 value represented by the address (or the value multiplied by the Count value corresponding to the Dim0 value). Note that if the measure is "total" or "number", it stores the measure value multiplied by the Count value, and if the measure is "minimum value" or "maximum value", it stores the measure value.

[0199] Specifically, since address "0" represents Jim and Body, the cell at address "0" stores "200 x 1" if the measure is "total" or "number," and stores "200" if the measure is "minimum" or "maximum."

[0200] Similarly, since address "1" represents Jim and Opt1, the cell with address "1" stores "25 x 1" if the measure is "Sum" or "Count", or "25" if the measure is "Minimum" or "Maximum".

[0201] Similarly, since address "2" represents Kate and Body, the cell with address "2" stores "0" if the measure is "Sum" or "Count", and stores "0" if the measure is "Minimum" or "Maximum".

[0202] Similarly, since address "3" represents Kate and Opt1, the cell with address "3" stores "0" if the measure is "Sum" or "Count", and stores "0" if the measure is "Minimum" or "Maximum".

[0203] Similarly, since address "4" represents Tom and Body, the cell with address "4" stores "200 x 2" if the measure is "Sum" or "Count", or "200" if the measure is "Minimum" or "Maximum".

[0204] Similarly, since address “5” represents Tom and Opt1, the cell with address “5” stores “25×2” if the measure is “Sum” or “Count”, or “25” if the measure is “Minimum” or “Maximum”.

[0205] Then, the tabulation processor 105 deletes cells in which no measure value is stored from the multidimensional cube, thereby obtaining a table 14100 (product operation result table) that represents the product of the table 11110 and the table 12110.

[0206] ·sum The aggregation processor 105 calculates the values ​​of measures at the same address according to the measure, using a multidimensional cube in which the measure values ​​of table 14100 are stored and a multidimensional cube in which the measure values ​​of table 14200 are stored. At this time, if the measure is "total" or "number of items", the two measure values ​​are added, if the measure is "minimum value", the smaller value is used, and if the measure is "maximum value", the larger value is used.

[0207] This produces a sum operation result table 14350 which indicates the sum of the table 14100 and the table 14200. Note that the example shown in Fig. 40 shows a case where the measure is "total" or "number of items".

[0208] (Dimensional Swap) In the above, the products and sums of tables are calculated, but if the dimensions to be aggregated are mixed between the left and right tables, the processing becomes complicated. For example, if Dim0, Dim2, and Dim4 exist in the left table and Dim1 and Dim3 exist in the right table, the above-mentioned complication can be avoided by changing the priority of the order of dimensions during aggregation from Dim0, Dim1, Dim2, Dim3, and Dim4 to Dim0, Dim2, Dim4, Dim1, and Dim3. In this case, when aggregation is performed, the aggregation result table can be sorted by the priority of Dim0, Dim1, Dim2, Dim3, and Dim4.

[0209] [Column Transfer] Column transfer for JOIN tables is an operation to copy the column of the Slave table to the Master table via the JOIN key. The SVL of the transferred column only needs to be copied as is, and it is fast because it can be completed by recalculating the NNC.

[0210] Since JOIN is possible between sub-tables (for example, a table created by performing a search on a certain table), column transfer is also possible between sub-tables on the Master and Slave sides.

[0211] As an example, a case will be described in which column transfer is performed on the JOIN table shown in FIG. 15 to copy the "Area" column on the Slave side to the Master side.

[0212] First, the column transfer processing unit 106 is connected to the SVL 5320 (SVL (B-Area) ) to the Master side and copy it to SVL4520(SVL (A-Area) )

[0213] Next, the column transfer processing unit 106 transfers the NNC4510 (NNC (A-Area) ) and fill its elements with 0. (A-Area) ) and the column transfer is completed by updating (recalculating) each element.

[0214] As shown in FIG. 41, the column transfer processing unit 106 determines whether or not the following conditions 1 and 2 are satisfied for i=1, . . . , 6.

[0215] Condition 1: MAcm (A-0) [i]>MAcm (A-0) [i-1] Condition 2: SAcm[NNC (A-Name) [OrdSet (A-0) [i]]]>SAcm[NNC (A-Name) [OrdSet (A-0) [i]]-1] If the above conditions 1 and 2 are met, the column transfer processing unit 106 transfers the NNC 4510 (NNC (A-Area) ) to update each element of

[0216] NNC (A-Area) [OrdSet (A-0) [i]]:=NNC (B-Area) [OrdSet (B-1) [SAcm[-1+NNC (A-Name) [OrdSet (A-0) [i]]]]] In the example shown in Figure 41, NNC (A-Area) This shows the value of [1] being updated from 0 to 2.

[0217] In addition, OrdSet (A-0) Instead of OrdSet (A-x) (where x is an integer equal to or greater than 1), it is possible to perform column transfer for sub-tables in the same way.

[0218] [Extracting sets that match and do not match JOIN] In a JOIN table, it is easy to extract a set of records that match the JOIN and a set of records that do not match. The extracted set is registered as a new OrdSet in the table on the Master or Slave side. Such sets have various uses, for example, they can be used to realize high-speed correlated subqueries. In the following, for simplicity, the set of records that match the JOIN is also called the "matched set" and the set of records that do not match is also called the "unmatched set."

[0219] As an example, a case will be described where a match set and an unmatch set are extracted from a JOIN table 15000 shown in Fig. 42. The JOIN table 15000 shown in Fig. 42 is a table obtained by joining a sub-table obtained by searching table 4000 for "Point ≧ 11" with table 5000 using an Outer JOIN.

[0220] The NNI format of the JOIN table 15000 shown in FIG. 42 is shown in FIG. 43. As shown in FIG. 43, the NNI format of the JOIN table 15000 shown in FIG. 42 is (A-0) ) and OrdSet16120(OrdSet (A-2) ) and NNC16210(NNC (A-Name) ) and SVL16220(SVL (Name) ) and NNC16310(NNC (A-Point) ) and SVL16320(SVL (A-Point) ) and SAcm17400(SAcm (B-0) ) and OrdSet17110 (OrdSet (B-1) ) and NNC17210(NNC (B-Name)) and SVL17220(SVL (Name) ) and NNC17310(NNC (B-Area) ) and SVL17320(SVL (B-Area) ) and SVL16220 (SVL (Name) ) and SVL17220(SVL (Name) ) is a common SVL.

[0221] (Viewed from the Master side) Here, when viewed from the Master side table, each record in the JOIN table 15000 can be divided into the following cases.

[0222] Case 0: The Master side is not involved in the JOIN (for example, records at positions "0" to "2" of the JOIN table 15000) Case-1: Matched case (for example, records at positions "3" to "4" and "6" in JOIN table 15000) Case-2: No match (for example, records at positions "5" and "7" of JOIN table 15000) Therefore, the match set seen from the Master side is the set of records that fall under the above Case-1, and the unmatch set is the set of records that fall under the above Case-2.

[0223] Specifically, the set extraction processing unit 107 executes the following Step 12-1 to Step 12-2 for i=0, 1, . . . , 4, thereby extracting match sets and unmatch sets.

[0224] Step 12-1: First, the set extraction processing unit 107 (A-0) [i]-MAcm (A-0) Determine whether [i-1]>0. (A-0) [i]-MAcm (A-0) If [i-1]=0, Step 12-2 is not executed.

[0225] Step12-2: MAcm(A-0) [i]-MAcm (A-0) If it is determined that [i-1]>0, the set extraction processing unit 107 extracts OrdSet (A-2) The value of [i] is evaluated, and depending on the result of the evaluation, a value is added (or not added) to the match set or the unmatch set.

[0226] ·OrdSet (A-2) When [i]=0 In this case, the record on the Master side is NULL, so it corresponds to Case-0. Therefore, it is not added to either the matched or unmatched set.

[0227] ·OrdSet (A-2) If [i] ≠ 0 In this case, Count(Master[i])=SAcm (A-0) [N.N.C. (A-Name) [OrdSet (A-2) [i]]]-SAcm (A-0) [N.N.C. (A-Name) [OrdSet (A-2) [i]]-1] and determine whether Count(Master[i])>0. If Count(Master[i])>0, it corresponds to Case-1, so OrdSet (A-2) Add the value of [i] to the match set. On the other hand, if Count(Master[i])=0, it corresponds to Case-2, so OrdSet (A-2) Add the value of [i] to the unmatched set.

[0228] This results in OrdSet16120 (OrdSet (A-2) ), a match set 18110 and an unmatch set 18120 are created.

[0229] (From the Slave's perspective) Next, the case seen from the Slave side table will be explained. In this case, Case-0 seen from the Master side corresponds to Case-2, and Case-2 seen from the Master side corresponds to Case-0.

[0230] Specifically, as shown in FIG. 45, the set extraction processing unit 107 can extract a match set and an unmatch set by executing the following Steps 13-1 and 13-2.

[0231] Step 13-1: First, the set extraction processing unit 107 extracts OrdSet 16110 (OrdSet (A-1) ) and NNC16210(NNC (A-Name) ) to create a flag array 19100. Here, OrdSet 16110 (OrdSet (A-1) ) is the OrdSet of the Master table before the JOIN table 15000 was created (or OrdSet16120 (OrdSet (A-2) ) with the leading zero removed.

[0232] The set extraction processor 107 sets the values ​​of the elements of the flag array 19100 (Flags) for i=0, 1, . . . , 5 as follows.

[0233] Flags [NNC (A-Name) [OrdSet (A-1) [i]]]:=1 Step 13-2: Next, the set extraction processing unit 107 extracts OrdSet 17110 (OrdSet (B-1) ) and NNC17210(NNC (B-Name) ) and a flag array 19100 (Flags), (B-1) ) is added to the match or unmatch set.

[0234] The set extraction processing unit 107 extracts OrdSet for i=0, 1, . . . , 5 as follows: (B-1) The value of [i] is added to the match or unmatch set.

[0235] Flags [NNC (B-Name) [OrdSet (B-1) Determine whether [i]]]=1, and if it is 1, set OrdSet (B-1)Add the value of [i] to the match set, and if it is 0, add it to the OrdSet (B-1) Add the value of [i] to the unmatched set. This adds OrdSet17110 (OrdSet (B-1) ), a match set 18130 and an unmatch set 18140 are created. Note that when viewed from the Slave side, elements of the flag array are not referenced for records that fall under Case-0.

[0236] The present invention is not limited to the above-described embodiments specifically disclosed, and various modifications, changes, combinations with known technologies, etc. are possible without departing from the scope of the claims. [Explanation of symbols]

[0237] 10 Data Processing Device 11 Input Devices 12 Display device 13 External I / F 13a Recording media 14 Communication I / F 15 Processors 16 Memory Devices 17 Bus 101 SVL common processing section 102 JOIN creation processing unit 103 Search processing unit 104 Sorting section 105 Counting Processing Unit 106 Column transfer processing unit 107 Set Extraction Processing Unit 108 Storage section

Claims

1. An information processing method for performing aggregation in multiple dimensions included in a virtual table in which two tables in a natural number index format are joined with a predetermined key, comprising: an aggregation step of performing an aggregation for each value of the key on the plurality of dimensions contained in the two tables; a sum calculation step of calculating a sum of the results of the counting step; The computer executes The counting procedure includes: An information processing method comprising: decomposing the two tables into a first sub-table and a second sub-table for each value of the key; and calculating a product between the first sub-table and the second sub-table, thereby performing aggregation in the multiple dimensions.

2. The counting procedure includes:

2. The information processing method according to claim 1, further comprising the steps of: counting the number of occurrences of the dimension included in the first subtable; adding the value of the count to the first subtable; and calculating a product between the first subtable and the second subtable.

3. 3. The information processing method according to claim 1, wherein the products and the sums are calculated by either a sorting method or a cube method.

4. the aggregation measure is one of a minimum, maximum, sum, or count; The counting procedure includes: The method according to claim 1 , further comprising the step of calculating a product between the first sub-table and the second sub-table depending on the aggregation measure.

5. The sum calculation procedure includes: The information processing method according to claim 4 , further comprising the step of calculating a sum of the results of the aggregation in accordance with a measure of the aggregation.

6. An information processing method for performing aggregation on multiple dimensions contained in a virtual table in which two tables in a natural number index format are joined with a predetermined key, comprising: an aggregation step of performing an aggregation for each value of the key on the plurality of dimensions contained in the two tables; a sum calculation step of calculating a sum of the results of the counting step; The computer executes The plurality of dimensions are assigned an aggregation priority; The two tables are one master table and the other slave table, The information processing method includes: a swapping step of swapping priorities when a dimension included in the slave table has a higher priority than a dimension included in the master table, so that the priority of the dimension included in the slave table becomes lower than the priority of the dimension included in the master table; The replacement procedure includes: When the sum is calculated by the sum calculation step, the switched priorities are returned to their original state.

7. An information processing device that performs aggregation in a plurality of dimensions included in a virtual table in which two tables in a natural number index format are JOIN-joined with a predetermined key, an aggregation unit that performs aggregation for each value of the key in the plurality of dimensions included in the two tables; a sum calculation unit that calculates the sum of the results of the counting by the counting unit; having The tallying unit is An information processing device that decomposes the two tables into a first sub-table and a second sub-table for each value of the key, and performs aggregation in the multiple dimensions by calculating the product between the first sub-table and the second sub-table.

8. An information processing device that performs aggregation on multiple dimensions included in a virtual table in which two tables in a natural number index format are JOIN-combined with a predetermined key, an aggregation unit that performs aggregation for each value of the key in the plurality of dimensions included in the two tables; a sum calculation unit that calculates the sum of the results of the counting by the counting unit; having The plurality of dimensions are assigned an aggregation priority; The two tables are one master table and the other slave table, The information processing device includes: a swapping unit that swaps priorities of the dimensions included in the slave table so that the priorities of the dimensions included in the slave table are lower than the priorities of the dimensions included in the master table when the dimensions included in the slave table have a higher priority than the dimensions included in the master table; The replacement unit is When the sum has been calculated by the sum calculation unit, the information processing device restores the switched priorities to their original values.

9. An information processing method for performing aggregation in multiple dimensions included in a virtual table in which two tables in a natural number index format are joined with a predetermined key, comprising: an aggregation step of performing an aggregation for each value of the key on the plurality of dimensions contained in the two tables; a sum calculation step of calculating a sum of the results of the counting step; and making a computer execute an information processing method including the steps of: The counting procedure includes: decomposing the two tables into a first sub-table and a second sub-table for each value of the key, and calculating a product between the first sub-table and the second sub-table, thereby performing aggregation across the multiple dimensions.

10. An information processing method for performing aggregation on multiple dimensions contained in a virtual table in which two tables in a natural number index format are joined with a predetermined key, comprising: an aggregation step of performing an aggregation for each value of the key on the plurality of dimensions contained in the two tables; a sum calculation step of calculating a sum of the results of the counting step; and making a computer execute an information processing method including the steps of: The plurality of dimensions are assigned an aggregation priority; The two tables are one master table and the other slave table, The information processing method includes: a swapping step of swapping priorities when a dimension included in the slave table has a higher priority than a dimension included in the master table, so that the priority of the dimension included in the slave table becomes lower than the priority of the dimension included in the master table; The replacement procedure includes: When the sum is calculated by the sum calculation procedure, the program returns the switched priorities to their original values.

Citation Information

Patent Citations

  • Vacuum vapor deposition furnace

    JP1984016974A

  • Method for random extraction of data in data base processing system, and data base processing system based upon the same

    JP1998269248A

  • Data joining / Presenting method and data joining / presenting program

    JP2003150633A

  • Method for processing data and data processing program

    JP2004145692A

  • Using object models of heterogeneous data to aid in building data visualizations

    JP2020537251A