CN112789608A - 数据处理系统、数据处理装置、数据处理方法及程序 - Google Patents
数据处理系统、数据处理装置、数据处理方法及程序 Download PDFInfo
- Publication number
- CN112789608A CN112789608A CN201980064372.1A CN201980064372A CN112789608A CN 112789608 A CN112789608 A CN 112789608A CN 201980064372 A CN201980064372 A CN 201980064372A CN 112789608 A CN112789608 A CN 112789608A
- Authority
- CN
- China
- Prior art keywords
- data processing
- node
- right structure
- keys
- key
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 379
- 238000003672 processing method Methods 0.000 title claims description 5
- 238000002910 structure generation Methods 0.000 claims abstract description 21
- 230000005540 biological transmission Effects 0.000 claims abstract description 6
- 238000004364 calculation method Methods 0.000 claims description 86
- 230000001174 ascending effect Effects 0.000 claims description 37
- 230000002776 aggregation Effects 0.000 claims description 6
- 238000004220 aggregation Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 64
- 238000004891 communication Methods 0.000 description 17
- 238000000034 method Methods 0.000 description 17
- 238000007796 conventional method Methods 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
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)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据处理系统,包括多个节点,所述多个节点的每个节点中保持有表格,所述表格内保存有一个以上的记录,所述数据处理系统的特征在于,所述多个节点的每个节点具有:右结构体生成单元,从本节点保持的所述表格生成右结构体,该右结构体表示在预定的L运算中作为被参照侧的结构体;左结构体生成单元,从所述右结构体生成左结构体,该左结构体表示在所述L运算中作为被操作侧的结构体;发送单元,将由所述右结构体生成单元生成的右结构体发送给其它节点;接收单元,接收由所述其它节点生成的右结构体;运算单元,使用所述左结构体以及由所述右结构体生成单元生成的右结构体和由所述接收单元接收的右结构体中的每个右结构体进行所述L运算;及顺序赋予单元,使用所述运算单元的运算结果,向本节点保持的所述表格中保存的一个以上的记录赋予所述多个节点的每个节点保持的表格中保存的所有的记录之间的顺序。
Description
技术领域
本发明涉及数据处理系统、数据处理装置、数据处理方法及程序。
背景技术
各要素之间定义了某种顺序的有序集合可通过记录(record)和保存该记录的表格来表示。此时,在对有序集合的各要素(记录)进行排序(sort)的情况下,现有技术中已知有各种各样的方法。关于这些方法,下面以对由数据项目「Age」、「Gender」及「Address」构成的多个(plural)记录按照「Age」的升序来排序的情况为例进行说明。
作为第一种方法,可列举出对表格内的记录的保存位置进行改变的方法。此情况下,如图1A所示,在排序的前后可对记录的保存位置进行变更。例如,就排序前被保存在保存位置「0」处的记录(Age「8」的记录)而言,排序后被保存在保存位置「2」处。
作为第二种方法,可列举出使用对表示记录之间的顺序的记录编号(下面也称「RecNo」)进行保存的记录编号链表(1ist)的方法。这里,记录编号链表中保存有同一保存位置的记录的记录编号。即,在记录编号链表的保存位置「n」处对表格的保存位置「n」的记录的记录编号进行保存。此情况下,如图1B所示,在排序的前后可对记录编号的保存位置进行改变。例如,就记录编号「0」而言,在排序前被保存在记录编号链表的保存位置「0」处,但排序后却被保存在记录编号链表的保存位置「2」处。就该第二种方法而言,即使在记录的大小(size)很大的情况下,与第一种方相较,存储器的复制量也较少,可实现高速化。此外,还可在保持原来的表格的前提下对真子集(例如,仅由Gender为「F」的记录构成的有序集合)进行表示。
此外,作为第三种方法,熟知有如下一种方法,即,在多个表格中分散保存了记录的情况下,通过使用表示这些表格之间的记录的统一的顺序的GOrd(其为「Global Order」的简称)来对记录进行排序(参照专利文件1)。例如,如图2所示,假设存在表1和表2,在按照「Age」的升序对表1和表2中分别保存的记录进行排序的情况下,GOrd被确定为在1个表格内按升序排列,并表示表1和表2之间的统一的顺序。例如,GOrd「0」的记录为表1中的记录编号「3」的记录。同样,例如GOrd「1」的记录为表1中的记录编号「1」的记录。同样,例如GOrd「2」的记录为表2的记录编号「3」的记录。之后的GOrd「3」~「7」也同样。就该第三种方法而言,与第二种方法相同,可实现高速化,并可在保持原来的表格的前提下对真子集进行表示。此外,由于GOrd在同一表格内为升序排列,所以也可实现记录检索的高速化。
[引证文件]
[专利文件]
[专利文件](日本)专利第4620593号公报
发明内容
[要解决的技术问题]
然而,尽管在对单节点(计算机)内的数据(记录)进行排序的情况下,上述的第一种方法~第三种方法都是有效的方法,但在对分散保持在多个节点内的数据进行排序的情况下,却需要花费很多时间。其原因在于,一般而言,与单节点内的数据参照相比,节点之间的数据参照需要花费数百倍以上的时间。这在对分散保持在多个节点内的数据进行检索和汇总的情况下也同样。
本发明是鉴于上述问题而提出的,其目的在于实现分散保持在多个节点内的数据的高速排序、检索及汇总。
[技术方案]
为了实现上述目的,本发明的数据处理系统包含多个节点,所述多个节点的每个节点中保持有表格,该表格内保存有一个以上的记录,所述数据处理系统的特征在于,所述每个节点具有:右结构体生成单元,从本节点保持的所述表格生成右结构体,该右结构体表示在预定的L运算中作为被参照侧的结构体;左结构体生成单元,从所述右结构体生成左结构体,该左结构体表示在所述L运算中作为被操作侧的结构体;发送单元,将由所述右结构体生成单元生成的右结构体发送至其它节点;接收单元,接收在所述其它节点中所生成的右结构体;运算单元,使用所述左结构体以及由所述右结构体生成单元生成的右结构体和由所述接收单元接收的右结构体中的每个右结构体进行所述L运算;及顺序赋予单元,使用所述运算单元的运算结果,向本节点保持的所述表格中保存的一个以上的记录赋予所述多个节点的每个节点保持的表格中保存的所有的记录之间的顺序。
[有益效果]
能够实现分散保持在多个节点内的数据的高速排序、检索及汇总。
附图说明
[图1A]用于对现有技术的一例进行说明的图(其一)。
[图1B]用于对现有技术的一例进行说明的图(其一)。
[图2]用于对现有技术的一例进行说明的图(其二)。
[图3]左结构体和右结构体的一例的示意图。
[图4]对L运算(键(key)比较条件为“>”)的一例进行说明的图。
[图5]对L运算(键比较条件为“=”)的一例进行说明的图。
[图6]对整表(即,整张表)和各节点保持的子表(即,整表的一部分)之间的关系的一例进行说明的图。
[图7]本发明的实施方式中的数据处理系统的整体构成的一例的示意图。
[图8]本发明的实施方式中的数据处理装置的硬件构成的一例的示意图。
[图9]本发明的实施方式中的数据处理装置的功能构成的一例的示意图。
[图10]整表和各节点保持的子表的具体示例的示意图。
[图11A]用于对检索的一例进行说明的图(其一)。
[图11B]用于对检索的一例进行说明的图(其一)。
[图12]用于对检索的一例进行说明的图(其二)。
[图13]用于对检索的一例进行说明的图(其三)。
[图14]用于对检索的一例进行说明的图(其四)。
[图15]用于对汇总的一例进行说明的图(其一)。
[图16]用于对汇总的一例进行说明的图(其二)。
[图17A]用于对单项目排序的一例进行说明的图(其一)。
[图17B]用于对单项目排序的一例进行说明的图(其一)。
[图18A]用于对单项目排序的一例进行说明的图(其二)。
[图18B]用于对单项目排序的一例进行说明的图(其二)。
[图18C]用于对单项目排序的一例进行说明的图(其二)。
[图19A]用于对单项目排序的一例进行说明的图(其三)。
[图19B]用于对单项目排序的一例进行说明的图(其三)。
[图19C]用于对单项目排序的一例进行说明的图(其三)。
[图20A]用于对单项目排序的一例进行说明的图(其四)。
[图20B]用于对单项目排序的一例进行说明的图(其四)。
[图20C]用于对单项目排序的一例进行说明的图(其四)。
[图21A]用于对多项目排序的一例进行说明的图。
[图21B]用于对多项目排序的一例进行说明的图。
[图22]用于对子集的一例进行说明的图。
[图23A]用于对子集中的排序的一例进行说明的图(其一)。
[图23B]用于对子集中的排序的一例进行说明的图(其一)。
[图24A]用于对子集中的排序的一例进行说明的图(其二)。
[图24B]用于对子集中的排序的一例进行说明的图(其二)。
[图24C]用于对子集中的排序的一例进行说明的图(其二)。
[图25A]用于对子集中的排序的一例进行说明的图(其三)。
[图25B]用于对子集中的排序的一例进行说明的图(其三)。
[图25C]用于对子集中的排序的一例进行说明的图(其三)。
[图26A]用于对子集中的排序的一例进行说明的图(其四)。
[图26B]用于对子集中的排序的一例进行说明的图(其四)。
[图26C]用于对子集中的排序的一例进行说明的图(其四)。
[图27]用于对右结构体的分割的一例进行说明的图。
[图28A]对左结构体和分割后的右结构体之间的比较操作的效率得到了提高的一例进行说明的图。
[图28B]对左结构体和分割后的右结构体之间的比较操作的效率得到了提高的一例进行说明的图。
具体实施方式
下面参照附图对本发明的实施方式进行详细说明。在下面的本发明的实施方式中,对藉由将上述第三种方法扩展至多个节点之间的排序操作而实现多个节点的每个节点保持的表格中保存的记录的高速排序的情况进行说明。据此,能够实现分散保持在多个节点内的数据的高速排序。需要说明的是,只要能够实现排序,也就能够进行汇总、检索、JOIN等。下面也将排序、汇总、检索、JOIN等统称为「数据处理」。
<L运算>
首先,对用于实现排序等的各种数据处理的L运算(Ladder Operation)进行定义。L运算是在具有能够进行相互比较的升序键序列的两个结构体之间被定义的。这两个结构体中,一个是被操作侧的结构体(下面也称「左结构体」),另一个是被参照侧的结构体(下面也称「右结构体」)。
L运算是指,对左结构体的升序键序列中的键和右结构体的升序键序列中的键藉由键比较条件(“>”或“=”中的任一个)进行比较,确定出左结构体中的操作位置后,再对针对该操作位置的各种操作(例如,标志(flag)的设置或重置、加算(加法计算)、其它各种计算等)的结果进行保存的运算或处理。
需要说明的是,升序键序列可为对多个值进行连结的键的序列、由一个组对多个值进行表示的键的序列等。此外,在字符串等的处理需要花费时间的值作为键而使用的情况下,通过将该值(例如,字符串等)转换为整数(即,整数化),可实现L运算的高速化和处理的简化。此外,藉由这样的整数化,例如通过对符号进行反转,与L运算所实现的升序排序同样地,还可通过L运算实现降序排序。需要说明的是,降序排序也可不进行这样的整数化。更一般的方法是,对右结构体和左结构体的键进行降序排序后,作为键比较条使用“<”而取代“>”,藉此也可实现降序排序。需要说明的是,下文中,当简称为「排序」时,表示升序排序。
下面,作为一例使用图3所示的左结构体和右结构体对L运算的具体示例进行说明。图3所示的左结构体是4行的结构体,作为升序键序列包含「10」、「20」、「30」及「40」,这些键与被初始化为「0」的结果保存区域(即,对各种操作的操作结果进行保存的领域)相关联。此外,图3所示的右结构体为3行的结构体,作为升序键序列包含「10」、「15」及「20」,这些键与加算值(即,用于加法计算的值)「2」、「1」及「3」相关联。
(L运算(键比较条件为“>”))
首先,参照图4对键比较条件为“>”的L运算进行说明。图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运算(键比较条件为“=”))
接下来,参照图5对键比较条件为“=”的L运算进行说明。图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运算具有如下三个特征。
(特征1)运算处理的非有序性
就各节点内的K次L运算而言,无论按哪个顺序进行运算处理,最终的运算结果都相同。
藉由该特征1,例如即使是诸如超级计算机等由很多节点构成的系统,也可容易地实现任务的切换(task swith)。即,藉由Global L运算的运算处理的非有序性,即使节点之间执行了不同的任务,任务结束后进行L运算也可使各节点获得正确的运算结果,所以容易进行任务的切换。
(特征2)运算处理的并行性
可并行执行各节点内的K次L运算。因为各L运算之间是相互独立的。
(特征3)可支持各种分布式架构
各节点被赋予了顺序(即,是有序的),并且各节点仅对与本节点的节点编号对应的子表进行了保持,这是前提条件,所以无论将每个节点彼此连接的网络拓扑如何,都可以执行运算处理。
<数据处理系统1的整体构成>
下面对藉由上述Global L运算可实现包括排序在内的数据处理(例如,排序、汇总、检索、JOIN等)的数据处理系统1进行说明。
首先,参照图7对本发明的实施方式中的数据处理系统1的整体构成进行说明。图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的硬件构成>
接着,参照图8对本发明的实施方式中的数据处理装置10的硬件构成进行说明。图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的功能构成>
接下来,参照图9对本发明的实施方式中的数据处理装置10的功能构成进行说明。图9是本发明的实施方式中的数据处理装置10的功能构成的一例的示意图。
如图9所示,本发明的实施方式中的数据处理装置10中,作为功能部,具有通信部101和运算部102。这些功能部可通过数据处理装置10中安装的一个以上的程序使处理器11执行的处理来实现。
此外,本发明的实施方式中的数据处理装置10还具有存储部103。该存储部103例如可通过使用存储器12等而实现。
存储部103中保存有与本节点的节点编号对应的子表。通信部101可进行与其它节点之间的数据的发送和接收(即,本节点的右结构体的发送和其它节点的右结构体的接收)。运算部102可进行包括左结构体和右结构体的生成和L运算在内的各种运算。藉由运算部102所进行的各种运算,可实现排序、汇总、检索、JOIN等的数据处理。
<整表和各节点保持的表格的具体示例>
接着,参照图10对整表和节点1~节点3的各节点保持的子表的具体示例进行说明。图10是整表和各节点保持的子表的具体示例的示意图。
如图10所示,假设整表中保存有由数据项目「Gender」和「Age」构成的12个记录。
此时,将该整表中保存的记录中的、由保存位置「0」~「3」处保存的记录构成的表作为节点0保持的子表。同样,将由保存位置「4」~「7」处保存的记录构成的子表作为节点1保持的子表。此外,同样地将由保存位置「8」~「11」处保存的记录构成的子表作为节点2保持的子表。
此外,这些节点保持的子表中,GOrd链表和记录编号链表进行了关联,GOrd链表中保存有表示子表之间的统一的顺序的GOrd,记录编号链表中保存有表示同一子表内的记录的顺序的记录编号(RecNo)。这里,假设从整表进行了子表的分割之后立刻按照节点编号的升序对子表进行了排列,此情况下,GOrd在子表之间为升序排列,RecNo在同一子表内也为升序排列。
在下面的检索、汇总、单项目排序及多项目排序中,假设节点1~节点3分别对图10所示的子表进行了保持(即,满足稳定性前提的子表被保存在了存储部103中),并在此基础上对各数据处理进行说明。
<检索>
首先,参照图11至图14来说明作为数据处理的一例的对Gender=“F”的记录进行检索的情况。图11至图14是用于对检索的一例进行说明的图。
S31)首先,各数据处理装置10的运算部102在本节点内对Gender=“F”的记录进行检索。即,各数据处理装置10的运算部102在本身的存储部103中存储的子表内进行Gender=“F”的记录的检索。
之后,各数据处理装置10的运算部102生成记录编号链表和GOrd链表,记录编号链表中保存检索到的记录的记录编号,而GOrd链表中则保存空值(NULL值)。
据此,数据处理装置10-0(节点0)中可生成其中保存有记录编号「0」和「3」的记录编号链表和其中保存有与这些记录编号对应的空值的GOrd链表。同样,数据处理装置10-1(节点1)中可生成其中保存有记录编号「2」的记录编号链表和其中保存有与该记录编号对应的空值的GOrd链表。同样,数据处理装置10-2(节点2)中可生成其中存储有记录编号「0」、「1」及「2」的记录编号链表和其中存储有与这些记录编号对应的空值的GOrd链表。
S32)接下来,各数据处理装置10的运算部102生成右结构体。即,各数据处理装置10的运算部102可藉由将本节点的节点编号作为「键序列」并将上述S31中检索到的记录件数作为「命中(hit)件数」的方式生成右结构体。据此,数据处理装置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」和对方出现个数「0」进行了关联的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从开始编号开始,从上依次将加算后的值逐一保存于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从开始编号开始,从上依次将加算后的值逐一保存于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从开始编号开始,从上依次将加算后的值逐一保存至GOrd链表。据此,节点2的GOrd链表中,保存位置「0」处可保存GOrd「3」,保存位置「1」处可保存GOrd「4」,保存位置「2」处可保存GOrd「5」。
如上所述,可针对上述S31中生成的各GOrd链表进行GOrd的保存。据此,可获得向各数据处理装置10中检索到的记录赋予了GOrd的检索结果。
<汇总>
接着,参照图15至图16说明作为数据处理的一例的、按照每个Gender(下面也称「性别」)对Age(下面也称「年龄」)的合计进行汇总的情况。图15至图16是用于对汇总的一例进行说明的图。
S41)首先,各数据处理装置10的运算部102在本节点内进行每个性别的年龄的合计的汇总,由此生成右结构体。即,各数据处理装置10的运算部102在本身的存储部103中存储的子表内按照每个性别(Gender)计算年龄(Age)的合计。之后,各数据处理装置10的运算部102藉由将性别作为「键序列」并将该性别的年龄的合计作为「年龄合计」的方式生成右结构体。
据此,数据处理装置10-0(节点0)中可生成由两行构成的右结构体,其中,一行为键「F」和年龄合计「16」进行了关联的行,另一行为键「M」和年龄合计「12」进行了关联的行。同样,数据处理装置10-1(节点1)中可生成由两行构成的右结构体,其中,一行为键「F」和年龄合计「7」进行了关联的行,另一行为键「M」和年龄合计「21」进行了关联的行。同样,数据处理装置10-2(节点2)中可生成由两行构成的右结构体,其中,一行为键「F」和年龄合计「22」进行了关联的行,另一行为键「M」和年龄合计「8」进行了关联的行。
S42)接着,各数据处理装置10的运算部102生成左结构体。即,各数据处理装置10的运算部102藉由将性别作为「键序列」并将该性别的年龄的合计的初期值「0」作为「年龄合计」的方式生成左结构体。
据此,数据处理装置10-0(节点0)中可生成由两行构成的右结构,其中,一行为键「F」和年龄合计「0」进行了关联的行,另一行为键「M」和年龄合计「0」进行了关联的行。同样,数据处理装置10-1(节点1)和数据处理装置10-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)处可获得相同的汇总结果(基于性别的年龄合计)。
<单项目排序>
接着,参照图17至图20对作为数据处理的一例的、按照性别(Gender)的单个项目进行排序的情况进行说明。图17至图20是用于对单项目排序的一例进行说明的图。需要说明的是,下面对性别「F」和「M」的大小关系为F<M的、按照性别的单个项目进行升序排序的情况进行说明。但是,也可为性别「F」和「M」的大小关系是F>M的、按照性别的单个项目进行降序排序的情况。
S51)首先,各数据处理装置10的运算部102在本节点内按照性别进行排序。即,各数据处理装置10的运算部102按照性别对本身的存储部103中存储的子表的记录编号链表进行排序。
之后,各数据处理装置10的运算部102生成记录编号链表和GOrd链表,记录编号链表中保存排序后的记录编号,则GOrd链表中则保存空值(NULL值)。
据此,数据处理装置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」进行了关联的行。同样,数据处理装置10-1(节点1)中可生成由两行构成的右结构体,其中,一行为键「F」和「1」与出现个数「1」进行了关联的行,另一行为键「M」和「1」与出现个数「3」进行了关联的行。同样,数据处理装置10-2(节点2)中可生成由两行构成的右结构体,其中,一行是键「F」和「2」与出现个数「3」进行了关联的行,另一行是键「M」和「2」与出现个数「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按照每个性别从前方存在个数开始,并按照出现个数的次数,从上依次将加算后的值逐一保存于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按照每个性别从前方存在个数开始,并按照出现个数的次数,从上依次将加算后的值逐一保存至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的右结构体进行比较的左结构体中的前方存在个数。需要说明的是,由于GlobalL运算具有上述特征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按照每个性别从前方存在个数开始,并按照出现个数的次数,从上依次将加算后的值逐一保存于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」进行了关联的行。同样,数据处理装置10-1(节点1)内可生成由四行构成右结构体,其中,一行是键「F」、「7」及「1」与出现个数「1」进行了关联的行,一行是键「M」、「6」及「1」与出现个数「1」进行了关联的行,一行是键「M」、「7」及「1」与出现个数「1」进行了关联的行,另一行是键「M」、「8」及「1」与出现个数「1」进行了关联的行。同样,数据处理装置10-2(节点2)内可生成由三行构成的右结构体,其中,一行是键「F」、「7」及「2」与出现个数「2」进行了关联的行,一行是「F」、「8」及「2」与出现个数「1」进行了关联的行,另一行是键「M」、「8」及「2」与出现个数「1」进行了关联的行。
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所示,本发明的实施方式中,尽管要素数量与全集相同,但是按照性别进行了排序后,要素之间的顺序被改变了,这种情况下,也将其视为子集。
就表示这样的子集的子表而言,稳定性前提并不总是成立。所以,下面对稳定性前提并不总是成立的子表被各节点保持了的情况下的排序进行说明。作为一例,参照图23至图26对假定各节点保持了图22所示的子表的、按照年龄来排序的情况进行说明。图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为连续(即,编号为连续,也即“连号”)的范围(也将该范围称为「连号范围」(图中标记为“连续范围”))汇总为一个,并由该连续范围的先头的(第一个)oldGOrd代表该连续范围。之后,各数据处理装置10的运算部102藉由使年龄和oldGOrd或代表连续范围的oldGOrd作为「键序列」并使1或该连续范围内包含的oldGOrd的个数作为「出现个数」的方式生成右结构体。需要说明的是,出现个数为「1」与不代表连续范围的oldGOrd相关联。即,就出现个数而言,在对应的oldGOrd代表连续范围的情况下,为该连续范围内包含的oldGOrd个数,在对应的oldGOrd不代表连续范围的情况下,为1(换言之,为对应的oldGOrd个数)。
据此,数据处理装置10-0(节点0)中可生成由两行构成的右结构体,其中,一行为键「6」和「6」与出现个数「2」相关联了的行,另一行为键「8」和「0」与出现个数「2」相关联了的行。同样,数据处理装置10-1(节点1)中可生成由四行构成的右结构体,其中,一行为键「6」和「9」与出现个数「1」相关联了的行,一行为键「7」和「2」与出现个数「1」相关联了的行,一行为键「7」和「8」与出现个数「1」相关联了的行,最后一行为键「8」和「10」与出现个数「1」相关联了的行。同样,数据处理装置10-2(节点2)中可生成由三行构成的右结构体,其中,一行为键「7」和「4」与出现个数「2」相关联了的行,一行为键「8」和「3」与出现个数「1」相关联了的行,另一行为键「8」和「11」与出现个数「1」关联了的行。
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从前方存在个数开始,并按照出现个数的次数,从上依次将加算后的值逐一保存至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的右结构体进行比较的左结构体中的前方存在个数。需要说明的是,由于GlobalL运算具有上述特征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从前方存在个数开始,并按照出现个数的次数,从上依次将加算后的值逐一保存于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」对应的出现个数加至左结构体的与键「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从前方存在个数开始,并按照出现个数的次数,从上依次将加算后的值逐一保存于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行的键为ri(0≤i≤n-1)的情况下,右结构体藉由将连续的行作为1个右结构体的方式可被分割为任意个数(但需为n个以下)的右结构体。下面也将被分割了的各右结构体称为「分割后右结构体」。在将右结构体从上依次分割为N个的情况下,这些被分割了的分割后右结构体从上依次可被表示为「分割后右结构体1」、「分割后右结构体2」、···、「分割后右结构体N」。图27中,作为一例,示出了N=3的情况,即示出了被分割为分割后右结构体1、分割后右结构体2及分割后右结构体3的三个分割后右结构体的情况。
需要说明的是,藉由L运算的定义可知,就各分割后右结构体和左结构体的L运算而言,均可获得与(没有被分割的)右结构体和左结构体的L运算相同的运算结果。
这里,例如在进行各分割后右结构体和左结构体的L运算的情况下,尽管运算部102每次接收到分割后右结构体时只要从操作位置「0」开始进行该分割后右结构体和左结构体的L运算即可,但这种情况的效率并不高。
因此,在可保证对各分割后右结构体按照「分割后右结构体1」、「分割后右结构体2」、···、「分割后右结构体N」的顺序依次进行接收的情况下,也可不降低效率地进行L运算。参照图28对假定左结构体的行数为m、第j行的键为lj(0≤j≤m-1)且N=2的情况进行说明。图28是对左结构体和分割后的右结构体的比较操作的效率得到了提高的一例进行说明的图。
如图28A所示,在左结构体和分割后右结构体1的L运算中,如果11≤r1且l2>r1,则使操作位置为「2」。之后,如图28B所示,在左结构体和分割后右结构体2的L运算中,从操作位置「2」开始执行L运算。据此,在左结构体和分割后右结构体2的L运算中,由于可不需要进行操作位置「0」~「1」的键的比较操作,所以即使在对结构体进行了分割的情况下,也可不降低效率地执行L运算。
本发明并不限定于具体公开的上述实施方式,只要不脱离权利要求书记载的技术范围,还可对其进行各种各样的变形和变更。
本申请主张基于2018年10月4日申请的日本国基础申请第2018-188966号的优先权,并以引用的方式将其内容全部援引于此。
[附图标记说明]
1 数据处理系统
10 数据处理装置
101 通信部
102 运算部
103 存储部
Claims (10)
1.一种数据处理系统,包括多个节点,所述多个节点的每个节点中保持有表格,所述表格内保存有一个以上的记录,所述数据处理系统的特征在于,
所述多个节点的每个节点具有:
右结构体生成单元,从本节点保持的所述表格生成右结构体,该右结构体表示在预定的L运算中作为被参照侧的结构体;
左结构体生成单元,从所述右结构体生成左结构体,该左结构体表示在所述L运算中作为被操作侧的结构体;
发送单元,将由所述右结构体生成单元生成的右结构体发送给其它节点;
接收单元,接收由所述其它节点生成的右结构体;
运算单元,使用所述左结构体以及由所述右结构体生成单元生成的右结构体和由所述接收单元接收的右结构体中的每个右结构体进行所述L运算;及
顺序赋予单元,使用所述运算单元的运算结果,向本节点保持的所述表格中保存的一个以上的记录赋予所述多个节点的每个节点保持的表格中保存的所有的记录之间的顺序。
2.如权利要求1所述的数据处理系统,其特征在于,
通过由所述顺序赋予单元向本节点保持的所述表格中保存的一个以上的记录赋予所述顺序而实现数据处理,该数据处理至少包括所述多个节点的每个节点保持的表格中保存的所有的记录之间的检索、汇总及排序。
3.如权利要求1或2所述的数据处理系统,其特征在于,
所述左结构体为各行包含键和结果保存区域并且按照所述键的升序或降序对一个以上的所述行进行了排列的结构体,
所述右结构体为各行包含键和预定的值并且按照所述键的升序或降序对一个以上的所述行进行了排列的结构体,
所述L运算为如下运算,即:
按照升序或降序对所述左结构体的键和所述右结构体的键进行比较,在比较条件成立的情况下,将使用了所述右结构体的与键对应的值的操作结果保存至所述左结构体的与键对应的结果保存区域。
4.如权利要求3所述的数据处理系统,其特征在于,
所述比较条件为:
表示所述左结构体的键大于或小于所述右结构体的键的条件;或
表示所述左结构体的键与所述右结构体的键相等的条件。
5.如权利要求3或4所述的数据处理系统,其特征在于,
所述左结构体的键和所述右结构体的键包含多个值的组。
6.如权利要求1至5中的任一项所述的数据处理系统,其特征在于,
所述多个节点被赋予了节点编号,
所述多个节点的每个节点保持的表格为对预定的表格进行分割后得到的表格中的与所述节点编号对应的表格。
7.如权利要求1至6中的任一项所述的数据处理系统,其特征在于,还具有:
分割单元,对所述右结构体和所述左结构体中的至少一个结构体进行分割,
在右结构体被所述分割单元进行了分割的情况下,所述发送单元将分割后的右结构体发送给所述其它节点。
8.一种数据处理装置,连接于一个以上的其它数据处理装置,并且能与所述一个以上的其它数据处理装置进行通信,所述一个以上的其它数据处理装置的每个其它数据处理装置中保持有表格,所述表格内保存有一个以上的记录,所述数据处理装置的特征在于,具有:
右结构体生成单元,从所述数据处理装置保持的表格生成右结构体,该右结构体表示在预定的L运算中作为被参照侧的结构体;
左结构体生成单元,从所述右结构体生成左结构体,该左结构体表示在所述L运算中作为被操作侧的结构体;
发送单元,将由所述右结构体生成单元生成的右结构体发送给所述一个以上的其它数据处理装置;
接收单元,接收由所述一个以上的其它数据处理装置生成的右结构体;
运算单元,使用所述左结构体以及由所述右结构体生成单元生成的右结构体和由所述接收单元接收的右结构体中的每个右结构体进行所述L运算;及
顺序赋予单元,使用所述运算单元的运算结果,向所述数据处理装置保持的所述表格中保存的一个以上的记录赋予所述一个以上的其它数据处理装置的每个其它数据处理装置保持的表格中保存的所有的记录之间的顺序。
9.一种由数据处理装置执行的数据处理方法,其中,所述数据处理装置连接于一个以上的其它数据处理装置,并且能与所述一个以上的其它数据处理装置进行通信,所述一个以上的其它数据处理装置的每个其它数据处理装置中保持有表格,所述表格内保存有一个以上的记录,所述数据处理方法的特征在于,具有:
右结构体生成步骤,从所述数据处理装置保持的表格生成右结构体,该右结构体表示在预定的L运算中作为被参照侧的结构体;
左结构体生成步骤,从所述右结构体生成左结构体,该左结构体表示在所述L运算中作为被操作侧的结构体;
发送步骤,将由所述右结构体生成步骤生成的右结构体发送给所述一个以上的其它数据处理装置;
接收步骤,接收由所述一个以上的其它数据处理装置生成的右结构体;
运算步骤,使用所述左结构体以及由所述右结构体生成步骤生成的右结构体和由所述接收步骤接收的右结构体中的每个右结构体进行所述L运算;及
顺序赋予步骤,使用所述运算步骤的运算结果,向所述数据处理装置保持的所述表格中保存的一个以上的记录赋予所述一个以上的其它数据处理装置的每个其它数据处理装置保持的表格中保存的所有的记录之间的顺序。
10.一种使数据处理装置执行数据处理的程序,其中,所述数据处理装置连接于一个以上的其它数据处理装置,并且能与所述一个以上的其它数据处理装置进行通信,所述一个以上的其它数据处理装置的每个其它数据处理装置中保持有表格,所述表格内保存有一个以上的记录,所述程序的特征在于,使所述数据处理装置执行的数据处理包括:
右结构体生成步骤,从所述数据处理装置保持的表格生成右结构体,该右结构体表示在预定的L运算中作为被参照侧的结构体;
左结构体生成步骤,从所述右结构体生成左结构体,该左结构体表示在所述L运算中作为被操作侧的结构体;
发送步骤,将由所述右结构体生成步骤生成的右结构体发送给所述一个以上的其它数据处理装置;
接收步骤,接收由所述一个以上的其它数据处理装置生成的右结构体;
运算步骤,使用所述左结构体以及由所述右结构体生成步骤生成的右结构体和由所述接收步骤接收的右结构体中的每个右结构体进行所述L运算;及
顺序赋予步骤,使用所述运算步骤的运算结果,向所述数据处理装置保持的所述表格中保存的一个以上的记录赋予所述一个以上的其它数据处理装置的每个其它数据处理装置保持的表格中保存的所有的记录之间的顺序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018-188966 | 2018-10-04 | ||
JP2018188966 | 2018-10-04 | ||
PCT/JP2019/038757 WO2020071368A1 (ja) | 2018-10-04 | 2019-10-01 | データ処理システム、データ処理装置、データ処理方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112789608A true CN112789608A (zh) | 2021-05-11 |
Family
ID=70054822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980064372.1A Pending CN112789608A (zh) | 2018-10-04 | 2019-10-01 | 数据处理系统、数据处理装置、数据处理方法及程序 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210216279A1 (zh) |
JP (1) | JPWO2020071368A1 (zh) |
CN (1) | CN112789608A (zh) |
WO (1) | WO2020071368A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030204513A1 (en) * | 2002-04-25 | 2003-10-30 | Sybase, Inc. | System and methodology for providing compact B-Tree |
US20040049630A1 (en) * | 2002-08-28 | 2004-03-11 | Hywire Ltd. | Implementation of a content addressable memory using a ram-cell structure |
WO2009044486A1 (ja) * | 2007-10-05 | 2009-04-09 | Turbo Data Laboratories, Inc. | 表形式データをソートする方法、マルチコア型装置、及び、プログラム |
US20130117504A1 (en) * | 2011-11-08 | 2013-05-09 | Xilinx, Inc. | Embedded memory and dedicated processor structure within an integrated circuit |
US20180070110A1 (en) * | 2016-09-07 | 2018-03-08 | Qualcomm Incorporated | Tree-type coding for video coding |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3709894A4 (en) * | 2017-11-15 | 2021-08-04 | Butterfly Network, Inc. | ULTRASONIC DEVICES AND METHODS FOR MANUFACTURING ULTRASONIC DEVICES |
US11080262B1 (en) * | 2019-09-27 | 2021-08-03 | Amazon Technologies, Inc. | Optimistic atomic multi-page write operations in decoupled multi-writer databases |
-
2019
- 2019-10-01 WO PCT/JP2019/038757 patent/WO2020071368A1/ja active Application Filing
- 2019-10-01 JP JP2020550453A patent/JPWO2020071368A1/ja not_active Revoked
- 2019-10-01 CN CN201980064372.1A patent/CN112789608A/zh active Pending
-
2021
- 2021-03-30 US US17/216,847 patent/US20210216279A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030204513A1 (en) * | 2002-04-25 | 2003-10-30 | Sybase, Inc. | System and methodology for providing compact B-Tree |
US20040049630A1 (en) * | 2002-08-28 | 2004-03-11 | Hywire Ltd. | Implementation of a content addressable memory using a ram-cell structure |
WO2009044486A1 (ja) * | 2007-10-05 | 2009-04-09 | Turbo Data Laboratories, Inc. | 表形式データをソートする方法、マルチコア型装置、及び、プログラム |
US20130117504A1 (en) * | 2011-11-08 | 2013-05-09 | Xilinx, Inc. | Embedded memory and dedicated processor structure within an integrated circuit |
CN103959652A (zh) * | 2011-11-08 | 2014-07-30 | 吉林克斯公司 | 集成电路内的嵌入式存储器和专用处理器结构 |
US20180070110A1 (en) * | 2016-09-07 | 2018-03-08 | Qualcomm Incorporated | Tree-type coding for video coding |
Also Published As
Publication number | Publication date |
---|---|
US20210216279A1 (en) | 2021-07-15 |
WO2020071368A1 (ja) | 2020-04-09 |
JPWO2020071368A1 (ja) | 2021-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Smith et al. | A medium-grained algorithm for sparse tensor factorization | |
Adolphson et al. | Optimal linear ordering | |
Gao et al. | Relational approach for shortest path discovery over large graphs | |
CN109325032B (zh) | 一种索引数据存储及检索方法、装置及存储介质 | |
Guha et al. | Distributed partial clustering | |
WO1999017231A1 (en) | Method of optimizing an n-gram memory structure | |
US20100114970A1 (en) | Distributed index data structure | |
US9147168B1 (en) | Decision tree representation for big data | |
CN104731925A (zh) | 基于MapReduce的FP-Growth的负载均衡并行计算方法 | |
JP4758429B2 (ja) | 共有メモリ型マルチプロセッサシステム及びその情報処理方法 | |
Hong et al. | Efficient R-tree based indexing scheme for server-centric cloud storage system | |
Singh et al. | Performance Measure of Similis and FPGrowth Algo rithm | |
Alwidian et al. | Enhanced CBA algorithm based on apriori optimization and statistical ranking measure | |
CN112789608A (zh) | 数据处理系统、数据处理装置、数据处理方法及程序 | |
US20150012563A1 (en) | Data mining using associative matrices | |
CN109254962A (zh) | 一种基于t-树的索引优化方法及装置 | |
Zhang et al. | An efficient and balanced graph partition algorithm for the subgraph-centric programming model on large-scale power-law graphs | |
Kanaev et al. | Increasing the efficiency of the functioning of transport communication networks by using a modified method for determining a set of independent routes | |
US9122997B1 (en) | Generating attribute-class-statistics for decision trees | |
Abubaker et al. | Minimizing staleness and communication overhead in distributed SGD for collaborative filtering | |
Hamedanian et al. | An efficient prefix tree for incremental frequent pattern mining | |
JP6867929B2 (ja) | 行列分解装置及び行列分解方法 | |
Choenni et al. | Query optimization to support data mining | |
Zhong et al. | Uncoded Storage Coded Transmission Elastic Computing with Straggler Tolerance in Heterogeneous Systems | |
Krizanc | Integer sorting on a mesh-connected array of processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230413 Address after: ESS Building, 61 Fandi, Qianpingjing, Ryushan City, Chiba Prefecture, Japan Applicant after: ESS Holdings Co.,Ltd. Address before: Qianpingjing 61 Fandi, Liushan City, Chiba Prefecture, Japan Applicant before: Esperant systems, Inc. |
|
TA01 | Transfer of patent application right | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210511 |
|
WD01 | Invention patent application deemed withdrawn after publication |