JP6912724B2 - 情報処理プログラム、情報処理装置及び情報処理方法 - Google Patents

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

Info

Publication number
JP6912724B2
JP6912724B2 JP2017228577A JP2017228577A JP6912724B2 JP 6912724 B2 JP6912724 B2 JP 6912724B2 JP 2017228577 A JP2017228577 A JP 2017228577A JP 2017228577 A JP2017228577 A JP 2017228577A JP 6912724 B2 JP6912724 B2 JP 6912724B2
Authority
JP
Japan
Prior art keywords
node
data
lock
target
information processing
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.)
Active
Application number
JP2017228577A
Other languages
English (en)
Other versions
JP2019101518A (ja
Inventor
拓也 正木
拓也 正木
樹一 山田
樹一 山田
真彦 永田
真彦 永田
義弘 安岡
義弘 安岡
久嗣 菅原
久嗣 菅原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017228577A priority Critical patent/JP6912724B2/ja
Priority to US16/190,884 priority patent/US11003509B2/en
Publication of JP2019101518A publication Critical patent/JP2019101518A/ja
Application granted granted Critical
Publication of JP6912724B2 publication Critical patent/JP6912724B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

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

Description

本発明は、情報処理プログラム、情報処理装置及び情報処理方法に関する。
利用者にサービスを提供する事業者(以下、単に事業者とも呼ぶ)は、例えば、利用者に対するサービスの提供に用いられるデータ(以下、検索対象データとも呼ぶ)を格納するデータベースを用いた情報処理システムを構築する。
上記のような情報処理システムにおいて検索対象データの検索を行う場合、情報処理システムでは、検索対象データの検索を効率的に行うために、例えば、木構造で構成されたデータ構造からなるインデックスの参照することによる検索が行われる。その後、情報処理システムでは、インデックスに含まれるデータ構造を検索対象データの検索結果が反映された形に更新する(例えば、特許文献1乃至3参照)。
特開2010−026689号公報 特開平9−319642号公報 特開2011−248584号公報
ここで、上記のようなインデックスに含まれるデータ構造では、例えば、複数の操作(例えば、データに対する参照や更新)が並行して行われる場合であってもデータ構造の整合性が確保されるように、操作対象のノードに対してロックを行う必要がある。
しかしながら、上記のようなデータ構造には、複数の操作が並行して行われる場合に、上位階層のノードから下位階層のノードに向けて行われる処理(以下、第1の処理とも呼ぶ)と、下位階層のノードから上位階層のノードに向けて行われる処理(以下、第2の処理とも呼ぶ)とがそれぞれ行われるものが含まれる。そのため、このようなデータ構造では、第1の処理と第2の処理とが同時に行われる場合、これらの処理に伴うロックによってデッドロックが発生する可能性がある。
したがって、第1の処理と第2の処理とがそれぞれ行われるデータ構造を含むインデックスが用いられる場合、情報処理システムでは、デッドロックの発生を防ぐ必要性から、データ構造に対する複数の操作を並行して行うことができない。そのため、情報処理システムでは、データ構造に対する各操作を効率的に行うことができない場合がある。
そこで、一つの側面では、本発明は、データ構造を対する複数の操作を並行して行うことを可能とする情報処理プログラム、情報処理装置及び情報処理方法を提供することを目的とする。
実施の形態の一態様では、木構造で構成されたデータ構造においてロック制御を行う情報処理プログラムであって、前記データ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定し、前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、前記対象ノードに対してロックを行う、処理をコンピュータに実行させる。
一つの側面によれば、データ構造を対する複数の操作を並行して行うことを可能とする。
図1は、情報処理システム10の構成を示す図である。 図2は、インデックス131のデータ構造の具体例について説明する図である。 図3は、インデックス131のデータ構造の具体例について説明する図である。 図4は、インデックス131のデータ構造の具体例について説明する図である。 図5は、インデックス131のデータ構造の具体例について説明する図である。 図6は、インデックス131のデータ構造の具体例について説明する図である。 図7は、インデックス131のデータ構造の具体例について説明する図である。 図8は、インデックス131のデータ構造の具体例について説明する図である。 図9は、インデックス131のデータ構造の具体例について説明する図である。 図10は、インデックス131のデータ構造の具体例について説明する図である。 図11は、インデックス131のデータ構造の具体例について説明する図である。 図12は、管理装置1のハードウエア構成を示す図である。 図13は、管理装置1の機能ブロック図である。 図14は、第1の実施の形態におけるロック制御処理の概略を説明するフローチャート図である。 図15は、第1の実施の形態におけるロック制御処理の概略を説明するフローチャート図である。 図16は、第1の実施の形態におけるロック制御処理の詳細を説明するフローチャート図である。 図17は、第1の実施の形態におけるロック制御処理の詳細を説明するフローチャート図である。 図18は、第1の実施の形態におけるロック制御処理の詳細を説明するフローチャート図である。 図19は、図2で説明したデータ構造に対して対象ノードの設定を行った場合を説明する具体例である。 図20は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図21は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図22は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図23は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図24は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図25は、図7で説明したデータ構造に対して対象ノードの設定を行った場合を説明する他の具体例である。 図26は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図27は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図28は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図29は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。 図30は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。
[情報処理システムの構成]
初めに、情報処理システム10の構成について説明を行う。図1は、情報処理システム10の構成を示す図である。
図1に示す情報処理システム10は、例えば、管理装置1と、検索装置2a及び2bと、データベース3a及び3bと、操作端末5a、5b及び5cとを有する。データベース3aは、検索装置2aによって操作が行われるデータDT1を格納するデータベースであり、データベース3bは、検索装置2bによって操作が行われるデータDT2(例えば、データDT1と異なるデータ)を格納するデータベースである。以下、検索装置2a及び2bを総称して検索装置2とも呼び、データベース3a及び3bを総称してデータベース3とも呼び、操作端末5a、5b及び5cを総称して操作端末5とも呼び、データDT1及びDT2を総称してデータDTとも呼ぶ。
管理装置1は、操作端末5からデータDTに対するクエリ(データDTに対する参照クエリや更新クエリ)を受信した場合、検索装置2a及び2bのそれぞれに対して受信したクエリを送信する。
具体的に、管理装置1は、操作端末5からデータDTに対するクエリを受信した場合、記憶部130に記憶されたインデックス131を参照し、受信したクエリに対応する情報が含まれているか否かを判定する。そして、管理装置1は、受信したクエリに対応する情報が含まれていないと判定した場合、受信したクエリをそのまま検索装置2に送信する。一方、管理装置1は、受信したクエリに対応する情報が含まれていると判定した場合、インデックスに含まれている情報(例えば、検索対象データの物理アドレス)を検索装置2に送信する。
これにより、管理装置1は、クエリに対応する処理の実行を効率化させ、クエリに対応する処理の実行に要する時間を短縮させることが可能になる。
検索装置2は、管理装置1から受信したクエリに基づいて、データベース3に記憶されたデータDTに対する操作(データDTに対する参照や更新)を行う。
[インデックスのデータ構造の具体例(1)]
次に、インデックス131のデータ構造の具体例について説明を行う。図2から図11は、インデックス131のデータ構造の具体例について説明する図である。以下、インデックス131のデータ構造が木構造の一種であるFull Blossom Treeによって構成されているものとして説明を行う。
Full Blossom Treeによって構成されるデータ構造では、根ノード以外の各ノードとデータ(ラベル)とが対応付けられている。具体的に、図2に示すデータ構造において、例えば、根ノードに対応する子ノードには、「aab」及び「bbaa」からなるデータがそれぞれ対応付けられている。
また、Full Blossom Treeによって構成されるデータ構造では、各ノード間の枝とデータとが対応付けられている。具体的に、図2に示すデータ構造において、例えば、根ノードと「aab」に対応するノードとの間の枝には、「a」からなるデータが対応付けられている。
また、Full Blossom Treeによって構成されるデータ構造において、各ノードに対応付けられているデータの先頭には、根ノードに近い順に、根ノードと各ノードとの間に存在する枝に対応付けられているデータが含まれている。具体的に、図2に示すデータ構造において、例えば、根ノードと「bbac」に対応するノードとの間には、「bbac」の先頭の文字である「b」に対応する枝と、「bbac」の2番目の文字である「b」に対応する枝と、「bbac」の3番目の文字である「a」に対応する枝とがそれぞれ存在している。
さらに、Full Blossom Treeによって構成されるデータ構造では、深さ優先探索において辞書式順になるように、各データが各ノードに対応付けられている。図2に含まれる他のノード、データ及び枝の説明については省略する。
[データの挿入が行われる際の処理の具体例(1)]
次に、データの挿入が行われる際の処理の具体例について説明を行う。以下、図2で説明したデータ構造に対して、「bba」からなるデータ(以下、挿入データとも呼ぶ)の挿入が行われる場合について説明を行う。
管理装置1は、通過した各枝に対応付けられたデータを根ノードから近い順に連結したデータが、挿入データのうちの少なくとも先頭部分に対応するデータと一致するように、操作対象のノードを、根ノードから末端ノード(子ノードを持たないノード)のいずれかに向けて遷移させる(以下、この処理をphase1−1とも呼ぶ)。
すなわち、phase1−1で操作対象ノードの遷移が行われた各ノードは、いずれも挿入データを対応付けることが可能なノードである。そのため、管理装置1は、phase1−1で操作対象ノードの遷移が行われた各ノードを、挿入データを対応付ける可能性があるノードとして特定する。
具体的に、図3(A)に示す例において、例えば、根ノードと「bbaa」に対応するノードとの間の枝、「bbaa」に対応するノードと「bbab」に対応するノードとの間の枝、及び、「bbab」に対応するノードと「bbac」に対応するノードとの間の枝は、それぞれ「b」、「b」及び「a」である。そして、「bbac」に対応するノードは、末端ノードであり、かつ、先頭部分に対応するデータが「bba」である。そのため、管理装置1は、この場合、操作対象のノードを、根ノードから「bbac」に対応するノードまで遷移させる。
次に、管理装置1は、長男ノード以外のノード、または、挿入データが親ノードに対応付けられたデータよりも辞書式順において大きくなるまで、操作対象のノードを、phase1−1で遷移させた末端ノードから根ノードに向けて遷移させる(以下、この処理をphase1−2とも呼ぶ)。
すなわち、phase1−1で操作対象ノードの遷移が行われた各ノードのうち、挿入データよりも小さいデータが対応付けられたノードは、挿入データを対応付ける可能性がないノードである。また、長男ノード以外のノードの親ノードは、後述するように、挿入データを対応付ける可能性がないノードである。そのため、管理装置1は、phase1−2で操作対象ノードが最終的に遷移したノードを、挿入データを対応付けるノードとして特定する。
具体的に、図3(B)に示す例において、「bbab」に対応するノードは、「bbab」に対応するノード及び「bc」に対応するノードのうちの長男ノードである。そして、図3(B)に示す例において、挿入データである「bba」は、「bbac」に対応するノードの親ノードに対応付けられた「bbaa」よりも小さい。また、図3(B)に示す例において、「bbaa」に対応するノードは、「aab」に対応するノード及び「bbaa」に対応するノードのうちの長男ノード以外のノードである。そのため、管理装置1は、この場合、phase1−1で遷移させた末端ノード(「bbac」に対応するノード)から「bbaa」に対応するノードに向けて、操作対象ノードを遷移させる。
続いて、管理装置1は、phase1−2で遷移したノードに対応付けられたデータと挿入データとを入れ替える。そして、phase1−2で遷移したノードの子孫ノードについても同様の処理を行う(以下、この処理をphase1−3とも呼ぶ)。
具体的に、管理装置1は、図4(A)に示すように、phase1−2で操作対象ノードが最終的に遷移したノードに対応付けられたデータである「bbaa」と、挿入データである「bba」とを入れ替える。そして、管理装置1は、入れ替えられたデータである「bbaa」を新たな挿入データとして特定する。
次に、管理装置1は、図4(A)に示すように、「bba」に対応するノード(挿入ノードと対応付けられたノード)の子ノードであって、phase1−1で操作対象ノードの遷移が行われたノードである「bbab」に対応するデータと、挿入データである「bbaa」とを入れ替える。そして、管理装置1は、入れ替えられたデータである「bbab」を新たな挿入データとする。
さらに、管理装置1は、図4(A)に示すように、「bbaa」に対応するノード(挿入ノードと対応付けられたノード)の子ノードであって、phase1−1で操作対象ノードの遷移が行われたノードである「bbac」に対応するデータと、挿入データである「bbab」とを入れ替える。そして、管理装置1は、入れ替えられたデータである「bbac」を新たな挿入データとする。
その後、管理装置1は、phase1−1で遷移させた末端ノードの先に新たなノードを生成し、生成した新たなノードに挿入データを対応付ける(以下、この処理をphase1−4とも呼ぶ)。
具体的に、管理装置1は、図4(B)に示すように、phase1−1で操作対象ノードの遷移が行われた末端ノードである「bbab」に対応するノードの先に新たなノードを生成し、挿入データである「bbac」を対応付ける。
なお、phase1−1において、末端ノードが根ノードである場合、または、挿入データがphase1−1で操作対象ノードの遷移が行われた末端ノードに対応付けられたデータよりも大きい場合、管理装置1は、phase1−2及びphase1−3を行わずにphase1−4を行う。
[データの削除が行われる際の処理の具体例(1)]
次に、データの削除が行われる際の処理の具体例について説明を行う。以下、図2で説明したデータ構造に含まれるデータのうち、「bbaa」からなるデータ(以下、削除データとも呼ぶ)の削除が行われる場合について説明を行う。
管理装置1は、通過した各枝に対応付けられたデータを根ノードから近い順に連結したデータが、挿入データのうちの少なくとも先頭部分に対応するデータと一致するように、操作対象のノードを、根ノードから末端ノードのいずれかに向けて遷移させる(以下、この処理をphase2−1とも呼ぶ)。
具体的に、図5(A)に示す例において、例えば、根ノードと「bbaa」に対応するノードとの間の枝、「bbaa」に対応するノードと「bbab」に対応するノードとの間の枝、及び、「bbab」に対応するノードと「bbac」に対応するノードとの間の枝は、それぞれ「b」、「b」及び「a」である。そして、「bbac」に対応するノードは、末端ノードであり、かつ、先頭部分に対応するデータが「bba」である。そのため、管理装置1は、この場合、操作対象のノードを、根ノードから「bbac」に対応するノードまで遷移させる。
次に、管理装置1は、削除データが対応付けられたノードに到達するまで、操作対象のノードを、phase2−1で遷移させた末端ノードから根ノードに向けて遷移させる(以下、この処理をphase2−2とも呼ぶ)。
具体的に、図5(B)に示す例において、削除ノードである「bbaa」は、「bbab」に対応するノードの親ノードに対応するデータと一致する。また、図5(B)に示す例において、「bbab」は、「bbac」に対応するノードの親ノードに対応するデータである。そのため、管理装置1は、この場合、phase2−1で遷移させた末端ノード(「bbac」に対応するノード)から「bbaa」に対応するノードまで操作対象ノードを遷移させる。
なお、長男ノード以外のノードに到達しても削除データと一致するデータが存在しなかった場合、管理装置1は、削除データが存在しないものと判定する。
続いて、管理装置1は、phase2−2で操作対象ノードが最終的に遷移したノードの子ノードに対応付けられたデータを、phase2−2で操作対象ノードが最終的に遷移したノードに対応付ける。そして、管理装置1は、phase2−2で操作対象ノードが最終的に遷移したノードの子ノードに対応付けられたデータを削除する。さらに、管理装置1は、phase2−2で操作対象ノードが最終的に遷移したノードの子孫ノードについても同様の処理を行う(以下、この処理をphase2−3とも呼ぶ)。
具体的に、管理装置1は、図6(A)に示すように、「bbab」及び「bbac」が対応付けられるノードを、図5(A)等に示す例において「bbaa」及び「bbab」が対応付けられていたノードに変更する。
その後、管理装置1は、phase2−1で操作対象ノードが最終的に遷移した末端ノードを削除する(以下、この処理をphase2−4とも呼ぶ)。
具体的に、管理装置1は、図6(B)に示すように、図5(A)等に示す例において「bbac」が対応付けられていたノードを削除する。
なお、データの検索が行われる際の処理は、データの削除が行われる際の処理におけるphase2−1及びphase2−2と同じである。そのため、データの検索が行われる際の処理の具体例の説明については省略する。
[インデックスのデータ構造の具体例(2)]
次に、インデックス131のデータ構造の他の具体例について説明を行う。
図7に示す例では、図2で説明したデータ構造に含まれるデータのうち、「bbaa」が「bab」に置き換えられている。また、図7に示す例では、図2で説明したデータ構造に対して、「bab」に対応するノードの子ノード(「bac」に対応するノード)が追加されている。
[データの挿入が行われる際の処理の具体例(2)]
初めに、データの挿入が行われる際の処理の他の具体例について説明を行う。以下、図7で説明したデータ構造に対して、「bba」からなる挿入データの挿入が行われる場合について説明を行う。
管理装置1は、通過した各枝に対応付けられたデータを根ノードから近い順に連結したデータが、挿入データのうちの少なくとも先頭部分に対応するデータと一致するように、操作対象のノードを、根ノードから末端ノードのいずれかに向けて遷移させる(phase1−1)。
具体的に、図8(A)に示す例において、根ノードと「bab」に対応するノードとの間の枝、「bab」に対応するノードと「bbab」に対応するノードとの間の枝、及び、「bbab」に対応するノードと「bbac」に対応するノードとの間の枝は、それぞれ「b」、「b」及び「a」である。そして、「bbac」に対応するノードは、末端ノードであり、かつ、先頭部分に対応するデータが「bba」である。そのため、管理装置1は、この場合、操作対象のノードを、根ノードから「bbac」に対応するノードまで遷移させる。
次に、管理装置1は、長男ノード以外のノード、または、挿入データが親ノードに対応付けられたデータよりも辞書式順において大きくなるまで、操作対象のノードを、phase1−1で遷移させた末端ノードから根ノードに向けて遷移させる(phase1−2)。
具体的に、図8(B)に示す例において、「bbab」に対応するノードは、「bac」に対応するノード、「bbab」に対応するノード及び「bc」に対応するノードのうちの長男ノード以外のノードである。そのため、管理装置1は、この場合、phase1−1で遷移させた末端ノード(「bbac」に対応するノード)から「bbab」に対応するノードに向けて、操作対象ノードを遷移させる。
すなわち、「bbab」に対応するノードが長男ノード以外のノードである場合、「bbab」に対応するノードと親ノードとの間の枝に対応付けられたデータである「b」は、長男ノード(「bac」に対応するノード)と親ノードとの間の枝に対応付けられたデータである「a」と異なる。そして、「bbab」に対応するノードの親ノードに対応付けられたデータである「bab」は、長男ノードに対応付けられたデータである「bac」よりも小さい。そのため、この場合、「bbab」に対応するノードの親ノードに対応付けられたデータである「bab」は、挿入データである「bba」よりも常に小さくなる。
したがって、管理装置1は、この場合、「bbab」に対応するノードの親ノードに対応付けられたデータに対して挿入データを対応付ける可能性はないと判定することが可能である。そのため、管理装置1は、phase1−2で長男ノード以外のノードに到達した場合、操作対象ノードの遷移を終了する。
続いて、管理装置1は、phase1−2で操作対象ノードが最終的に遷移したノードに対応付けられたデータと挿入データとを入れ替える。そして、phase1−2で操作対象ノードが最終的に遷移ノードの子孫ノードについても同様の処理を行う(phase1−3)。
具体的に、管理装置1は、図9(A)に示すように、phase1−2で操作対象ノードが最終的に遷移したノードに対応付けられたデータである「bbab」と、挿入データである「bba」とを入れ替える。そして、管理装置1は、入れ替えられたデータである「bbab」を新たな挿入データとする。
そして、管理装置1は、図9(A)に示すように、「bba」に対応するノードの子ノードであって、phase1−1で操作対象ノードの遷移が行われたノードである「bbac」に対応するデータと、挿入データである「bbab」とを入れ替える。そして、管理装置1は、入れ替えられたデータである「bbac」を新たな挿入データとする。
その後、管理装置1は、phase1−1で操作対象ノードの遷移が行われた末端ノードの先に新たなノードを生成し、挿入データを対応付ける(phase1−4)。
具体的に、管理装置1は、図9(B)に示すように、phase1−1で遷移させた末端ノードである「bbab」に対応するノードの先に新たなノードを生成し、挿入データである「bbac」を対応付ける。
[データの削除が行われる際の処理の具体例(2)]
次に、データの削除が行われる際の処理の他の具体例について説明を行う。以下、図7で説明したデータ構造に含まれるデータのうち、「bbaa」からなるデータ(以下、削除データとも呼ぶ)の削除が行われる場合について説明を行う。
管理装置1は、通過した各枝に対応付けられたデータを根ノードから近い順に連結したデータが、挿入データのうちの少なくとも先頭部分に対応するデータと一致するように、操作対象のノードを、根ノードから末端ノードのいずれかに向けて遷移させる(phase2−1)。
具体的に、図10(A)に示す例において、根ノードと「bab」に対応するノードとの間の枝、「bab」に対応するノードと「bbab」に対応するノードとの間の枝、及び、「bbab」に対応するノードと「bbac」に対応するノードとの間の枝は、それぞれ「b」、「b」及び「a」である。そして、「bbac」に対応するノードは、末端ノードであり、かつ、先頭部分に対応するデータが「bba」である。そのため、管理装置1は、この場合、操作対象のノードを、根ノードから「bbac」に対応するノードまで遷移させる。
次に、管理装置1は、削除データが対応付けられたノードに到達するまで、操作対象のノードを、phase2−1で遷移させた末端ノードから根ノードに向けて遷移させる(phase2−2)。
具体的に、図10(B)に示す例において、削除ノードである「bbab」は、「bbac」に対応するノードの親ノードに対応するデータと一致する。そのため、管理装置1は、この場合、phase2−1で遷移させた末端ノード(「bbac」に対応するノード)から「bbab」に対応するノードまで操作対象ノードを遷移させる。
続いて、管理装置1は、phase2−2で操作対象ノードが最終的に遷移したノードの子ノードに対応付けられたデータを、phase2−2で操作対象ノードが最終的に遷移したノードに対応付ける。そして、管理装置1は、phase2−2で操作対象ノードが最終的に遷移したノードの子ノードに対応付けられたデータを削除する。さらに、管理装置1は、phase2−2で操作対象ノードが最終的に遷移したノードの子孫ノードについても同様の処理を行う(phase2−3)。
具体的に、管理装置1は、図11(A)に示すように、「bbac」が対応付けられるノードを、図10(A)等に示す例において「bbab」が対応付けられていたノードに変更する。
その後、管理装置1は、phase2−1で操作対象ノードが最終的に遷移した末端ノードを削除する(phase2−4)。
具体的に、管理装置1は、図11(B)に示すように、図10(A)等に示す例において「bbac」が対応付けられていたノードを削除する。
ここで、上記のようなインデックス131では、データ構造に含まれる各ノードに対して複数の操作が並行して行われる場合、データ構造の整合性が確保されるように、操作が行われるノードに対してロックを行う必要がある。
しかしながら、上記のようなデータ構造には、例えば、上位階層のノードから下位階層のノードに向けて行われる処理(第1の処理)と、下位階層のノードから上位階層のノードに向けて行われる処理(第2の処理)とがそれぞれ行われるものが含まれる。そして、このようなデータ構造では、第1の処理と第2の処理とが同時に行われる場合、これらの処理に伴うロックによってデッドロックが発生する可能性がある。
そのため、第1の処理と第2の処理とがそれぞれ行われるデータ構造のインデックス131が用いられる場合、情報処理システム10では、デッドロックの発生を防ぐ必要性から、データ構造に対する複数の操作を並行して行うことができない。したがって、情報処理システム10では、データ構造に対する各操作を効率的に行うことができない場合がある。
そこで、本実施の形態における管理装置1は、木構造で構成されたデータ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定する。そして、管理装置1は、データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、対象ノードに対してロックを行う。
すなわち、管理装置1は、上位階層のノードから下位階層のノードに向けて行われる処理(例えば、図3等で説明したphase1−1)が行われる際に、この処理の実行中において必要なノードに対するロックを行う。そして、管理装置1は、この場合、下位階層のノードから上位階層のノードに向けて行われる処理(例えば、図3等で説明したphase1−2)の実行中において必要なノードに対するロックについても併せて行う。一方、管理装置1は、下位階層のノードから上位階層のノードに向けて行われる処理が行われる際においては、この処理の実行中において必要なノードに対するロックを行わない。
これにより、管理装置1は、デッドロックの発生を防止しながら、データに対する複数の操作を並行して行うことが可能になる。そのため、管理装置1は、データに対する各操作を効率的に行うことが可能になる。
[情報処理システムのハードウエア構成]
次に、情報処理システム10のハードウエア構成について説明する。図12は、管理装置1のハードウエア構成を示す図である。
管理装置1は、図12に示すように、プロセッサであるCPU101と、メモリ102と、外部インターフェース(I/Oユニット)103と、記憶媒体104とを有する。各部は、バス105を介して互いに接続される。
記憶媒体104は、例えば、記憶媒体104内のプログラム格納領域(図示しない)に、データ構造に含まれるノードに対してロックを行う処理(以下、ロック制御処理とも呼ぶ)を行うためのプログラム110を記憶する。また、記憶媒体104は、例えば、ロック制御処理を行う際に用いられる情報を記憶する記憶部130(以下、情報格納領域130とも呼ぶ)を有する。
CPU101は、記憶媒体104からロードされたプログラム110と協働してロック制御処理を行う。また、外部インターフェース103は、例えば、検索装置2や操作端末5と通信を行う。
[情報処理システムの機能]
次に、情報処理システム10の機能について説明する。図13は、管理装置1の機能ブロック図である。
管理装置1のCPU101は、図13に示すように、プログラム110と協働することにより、例えば、対象ノード設定部111と、データ操作部112と、ロック実行部113と、データ操作部112と、ロック解除部114として動作する。また、情報格納領域130には、例えば、インデックス131(インデックス131のデータ構造)が記憶されている。
対象ノード設定部111は、インデックス131のデータ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定する。
データ操作部112は、例えば、操作端末5からのクエリの受信に応じて、インデックス131のデータ構造に含まれる各ノード(各ノードに対応付けられているデータ)に対して操作を行う。具体的に、データ操作部112は、例えば、インデックス131のデータ構造に含まれるデータの挿入、削除または検索を行う。
ロック実行部113は、データ操作部112がインデックス131のデータ構造に含まれるデータに対して操作を行う場合において、対象ノード設定部111が設定した対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、その対象ノードに対してロックを行う。
ロック解除部114は、対象ノード設定部111が設定した対象ノード(以下、第1対象ノードとも呼ぶ)に対してロックが行われている場合において、第1対象ノードの子孫ノードである第2対象ノードを親ノードから子ノードに向けて通過する処理が行われた場合、第1対象ノードに対して行われているロックを解除する。
[第1の実施の形態の概略]
次に、第1の実施の形態の概略について説明を行う。図14及び図15は、第1の実施の形態におけるロック制御処理の概略を説明するフローチャート図である。
管理装置1は、図14に示すように、データ操作タイミングまで待機する(S1のNO)。データ操作タイミングは、例えば、操作端末5からのクエリの受信に応じて、インデックス131のデータ構造に含まれるデータに対する操作が行われるタイミングである。
そして、データ操作タイミングになった場合(S1のYES)、管理装置1は、木構造で構成されたデータ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定する(S2)。
その後、管理装置1は、図15に示すように、S2の処理で設定した対象ノードを親ノードから子ノードに向けて通過する処理の実行を検知するまで待機する(S11のNO)。
そして、S2の処理で設定した対象ノードを通過する処理の実行を検知した場合(S11のYES)、管理装置1は、S11の処理において通過する処理が実行された対象ノードに対してロックを行う(S12)。
すなわち、管理装置1は、上位階層のノードから下位階層のノードに向けて行われる処理が行われる際に、この処理の実行中において必要なノードに対するロックを行う。そして、管理装置1は、この場合、下位階層のノードから上位階層のノードに向けて行われる処理の実行中において必要なノードに対するロックを併せて行う。一方、管理装置1は、下位階層のノードから上位階層のノードに向けて行われる処理が行われる際においては、この処理の実行中において必要なノードに対するロックを行わない。
これにより、管理装置1は、デッドロックの発生を防止しながら、データに対する複数の操作を並行して行うことが可能になる。そのため、管理装置1は、データに対する各操作を効率的に行うことが可能になる。
[第1の実施の形態の詳細]
次に、第1の実施の形態の詳細について説明する。図16から図18は、第1の実施の形態におけるロック制御処理の詳細を説明するフローチャート図である。また、図19から図30は、第1の実施の形態におけるロック制御処理の詳細を説明する図である。図19から図30を参照しながら、図16から図18のロック制御処理の詳細について説明する。
管理装置1の対象ノード設定部111は、図16に示すように、データ操作タイミングまで待機する(S31のNO)。
そして、データ操作タイミングになった場合(S31のYES)、対象ノード設定部111は、インデックス131のデータ構造における根ノードを、ロック制御を行う場合の対象ノードとして設定する(S32)。
続いて、対象ノード設定部111は、インデックス131のデータ構造における親ノードそれぞれの子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定する(S33)。
その後、管理装置1のデータ操作部112は、図17に示すように、インデックス131のデータ構造に含まれるいずれかのノードを通過する処理(以下、特定の処理とも呼ぶ)を実行するタイミングになるまで待機する(S41のNO)。すなわち、データ操作部112は、例えば、操作端末5からのクエリの受信に伴って、インデックス131のデータ構造に含まれるデータに対する操作が発生するまで待機する。
そして、インデックス131のデータ構造に含まれるいずれかのノードを通過する処理を実行するタイミングになった場合(S41のYES)、データ操作部112は、特定の処理がいずれかのノードを親ノードから子ノードに向けて通過する処理であるか否かを判定する(S42)。
具体的に、データ操作部112は、例えば、特定の処理がphase1−1やphase1−3であるか否かを判定する。
その結果、特定の処理がいずれかのノードを親ノードから子ノードに向けて通過する処理でないと判定した場合(S42のNO)、データ操作部112は、S41以降の処理を再度行う。
すなわち、データ操作部112は、例えば、特定の処理がphase1−2である場合、特定の処理が実行時においてロックを行う必要がない処理であると判定する。
一方、特定の処理がいずれかのノードを親ノードから子ノードに向けて通過する処理であると判定した場合(S42のYES)、データ操作部112は、特定の処理の後に、いずれかのノードを親ノードから子ノードに向けて通過する処理を実行するか否かを判定する(S43)。
具体的に、データ操作部112は、例えば、特定の処理がphase1−2を後に実行する処理か否かを判定する。
その結果、特定の処理の後に、いずれかのノードを親ノードから子ノードに向けて通過する処理を実行すると判定した場合(S43のYES)、データ操作部112は、特定の処理において通過するノードが、S32またはS33の処理で設定した対象ノードであるか否かを判定する(S44)。
そして、特定の処理において通過するノードが、S32またはS33の処理で設定した対象ノードでないと判定した場合(S44のNO)、S41以降の処理を再度行う。
すなわち、データ操作部112は、例えば、特定の処理がphase1−1であって、特定の処理において通過するノードが対象ノードでない場合、特定の処理が実行時においてロックを行う必要がない処理であると判定する。
一方、特定の処理において通過するノードが、S32またはS33の処理で設定した対象ノードであると判定した場合(S44のYES)、管理装置1のロック実行部113は、図18に示すように、特定の処理において通過するノードに対してロックを行う(S51)。
また、ロック実行部113は、S43の処理において、特定の処理の後に、いずれかのノードを親ノードから子ノードに向けて通過する処理を実行しないと判定した場合についても同様に(S43のNO)、S51の処理を行う。
すなわち、ロック実行部113は、例えば、特定の処理がphase1−1である場合(S43のYES)、特定の処理において通過するノードが対象ノードである場合に限り(S44のYES)、特定の処理においてノードに対してロックを行う。一方、ロック実行部113は、例えば、特定の処理がphase1−3である場合(S43のNO)、特定の処理において通過するノードが対象ノードであるか否かに関わらず、特定の処理においてノードに対してロックを行う。
その後、管理装置1のロック解除部114は、インデックス131のデータ構造に含まれるノードのうち、ロックされているノードが他に存在しているか否かを判定する(S52)。
その結果、ロックされているノードが他に存在すると判定した場合(S52のYES)、ロック解除部114は、S52の処理で存在すると判定したノードに対するロックを解除する(S53)。一方、ロックされているノードが他に存在しないと判定した場合(S52のNO)、ロック解除部114は、S53の処理を行わない。
そして、管理装置1は、ロック制御処理を終了する。以下、第1の実施の形態におけるロック制御処理の具体例について説明を行う。
[第1の実施の形態におけるロック制御処理の具体例]
図19から図30は、第1の実施の形態におけるロック制御処理の具体例を説明する図である。具体的に、図19から図30に示す例は、図2から図11において説明したデータ構造に対してロック制御処理を実行した場合の例である。なお、以下、ロック実行部113によって行われるロックが更新ロックであるものとして説明を行う。
[対象ノードの具体例(1)]
初めに、対象ノードの具体例について説明を行う。
図19は、図2で説明したデータ構造に対して対象ノードの設定を行う場合を説明する具体例である。以下、網掛けのノードが対象ノードであるものとして説明を行う。
対象ノード設定部111は、図19に示すように、根ノードを対象ノードとして設定する(S32)。
そして、対象ノード設定部111は、図19に示すように、各ノードにおける子ノードのうちの長男ノード以外のノードを対象ノードとして設定する(S33)。
具体的に、対象ノード設定部111は、根ノードにおける子ノードである「aab」に対応するノード及び「bbaa」に対応するノードのうち、長男ノード以外のノードである「bbaa」に対応するノードを対象ノードとして設定する。また、対象ノード設定部111は、「bbaa」に対応するノードの子ノードである「bbab」に対応するノード及び「bc」に対応するノードのうち、長男ノード以外のノードである「bc」に対応するノードを対象ノードとして設定する。さらに、対象ノード設定部111は、「bbab」に対応するノードの子ノードである「bbac」に対応するノード及び「bbc」に対応するノードのうち、長男ノード以外のノードである「bbc」に対応するノードを対象ノードとして設定する。
[本実施の形態におけるデータの挿入が行われる際の処理の具体例(1)]
次に、データの挿入が行われる際の処理の具体例について説明を行う。以下、図19で説明したデータ構造に対して、「bba」からなる挿入データの挿入が行われる場合について説明を行う。
ロック実行部113は、phase1−1が行われる場合、図20(A)に示すように、対象ノードである根ノードに対してロックを行う(S43のYES、S44のYES、S51)。
すなわち、例えば、操作端末5からの他のクエリの受信に応じてphase1−1が別途行われる場合、根ノードから順に操作対象ノードの遷移が行われる。そのため、ロック実行部113は、初めに根ノードに対するロックを行うことによって、図20(A)に示すデータ構造に含まれる全てのノードに対する実質的なロックを行う。
そして、phase1−1の実行に伴って、根ノードから「bbaa」に対応するノードに対する操作対象ノードの遷移が行われた場合、ロック実行部113は、図20(B)に示すように、「bbaa」に対応するノードが対象ノードであるため、「bbaa」に対応するノードに対するロックを行う(S43のYES、S44のYES、S51)。また、ロック解除部114は、この場合、根ノードに対して行われていたロックを解除する(S52のYES、S53)。
すなわち、「bbaa」に対応するノードは、根ノードの長男ノード以外のノードである。そのため、phase1−1で根ノードから「bbaa」に対応するノードに対する遷移が行われた場合、phase1−1の後に行われる処理(例えば、phase1−2)では、根ノードに対する遷移が行われることはない。そのため、phase1−1で根ノードから「bbaa」に対応するノードに対する遷移が行われた場合、管理装置1は、根ノードに対するロックを継続する必要がないと判定する。したがって、管理装置1は、この場合、「bbaa」に対応するノードに対してロックを行うとともに、根ノードに対するロックを解除する。
これにより、管理装置1は、デッドロックの発生を防止するために行うノードのロックの範囲を最小限に抑えることが可能になる。そのため、管理装置1は、インデックス131のデータ構造に含まれるデータに対して複数の操作が並行して行われることを可能にするとともに、ノードに対するロックに伴って発生するロックの解除待ち時間を短縮することが可能になる。
続いて、phase1−1の実行に伴って、「bbaa」に対応するノードから「bbab」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図20(B)に示すように、「bbab」に対応するノードが対象ノードでないため、「bbab」に対応するノードに対するロックを行わない(S43のYES、S44のNO)。また、ロック解除部114は、この場合、「bbaa」に対応するノードに対して行われているロックの解除を行わない(S52のNO)。
すなわち、「bbab」に対応するノードは、「bbaa」に対応するノードの長男ノードである。そのため、phase1−1で「bbaa」に対応するノードから「bbab」に対応するノードに対する遷移が行われた場合、phase1−1の後に行われる処理(例えば、phase1−2)では、「bbaa」に対する遷移が行われる可能性がある。そのため、phase1−1で「bbaa」に対応するノードから「bbab」に対応するノードに対する遷移が行われた場合、管理装置1は、「bbaa」に対応するノードに対するロックを継続する必要があると判定する。したがって、管理装置1は、この場合、「bbab」に対応するノードに対するロックや「bbaa」に対応するノードに対するロックの解除を行わない。
次に、phase1−1の実行に伴って「bbab」に対応するノードから「bbac」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図20(B)に示すように、「bbac」に対応するノードが対象ノードでないため、「bbac」に対応するノードに対するロックを行わない(S43のYES、S44のNO)。また、ロック解除部114は、この場合、「bbaa」に対応するノードに対して行われているロックの解除を行わない(S52のNO)。
そして、ロック実行部113は、図21(A)に示すように、phase1−2が実行される場合、新たなノードに対するロックを行わない(S42のNO)。
すなわち、ロック実行部113は、phase1−1の実行に伴って、phase1−2の実行時において操作対象ノードが遷移する可能性があるノードの全てを実質的にロックしている。そのため、ロック実行部113は、phase1−2の実行時においては、新たなノードに対するロックを行う必要がない。
これにより、管理装置1は、各ノードを親ノードから子ノードに向けて通過する処理(phase1−1やphase1−3)の実行に伴うロックと、各ノードを子ノードから親ノードに向けて通過する処理(phase1−2)の実行に伴うロックとが並行して行われることを防止することが可能になる。そのため、管理装置1は、インデックス131のデータ構造に含まれるデータに対して複数の操作が並行して行われることを可能にするとともに、デッドロックの発生を防止することが可能になる。
続いて、図21(B)に示すように、phase1−3の実行に伴って「bba」に対応するノード(挿入データである「bba」が対応付けられたノード)から「bbab」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図21(B)に示すように、「bbab」に対応するノードに対するロックを行う(S43のNO、S51)。また、ロック解除部114は、この場合、「bba」に対応するノードに対して行われていたロックを解除する(S52のYES、S53)。
すなわち、phase1−3の後においては、「bba」に対応するノードに遷移する処理が行われることはない。そのため、phase1−3において、「bba」に対応するノードから「bbab」に対応するノードに対する遷移が行われた場合、管理装置1は、「bbab」に対応するノードが長男ノードであるか否かに依らず、「bba」に対応するノードに対するロックを継続する必要がないと判定する。したがって、ロック解除部114は、この場合、「bbab」に対応するノードに対するロックを行うとともに、「bba」に対応するノードに対するロックを解除する。
これにより、管理装置1は、デッドロックの発生を防止するために行うノードのロックの範囲を最小限に抑えることが可能になる。そのため、管理装置1は、インデックス131のデータ構造に含まれるデータに対して複数の操作が並行して行われることを可能にするとともに、ノードに対するロックに伴って発生するロックの解除待ち時間を短縮することが可能になる。
そして、図22(A)に示すように、phase1−3の実行に伴って、「bbaa」に対応するノード(挿入データである「bbaa」が対応付けられたノード)から「bbac」に対応するノードに対する遷移が行われた場合、ロック実行部113は、「bbac」に対応するノードに対するロックを行う(S43のNO、S51)。また、ロック解除部114は、この場合、「bbaa」に対応するノードに対して行われていたロックを解除する(S52のYES、S53)。
その後、図22(B)に示すように、ロック解除部114は、phase1−4に対応する処理の実行に伴って、「bbаb」に対応するノード(挿入データである「bbab」が対応付けられたノード)に対するロックを解除する。
[本実施の形態におけるデータの削除が行われる際の処理の具体例(1)]
次に、データの削除が行われる際の処理の具体例について説明を行う。以下、図19で説明したデータ構造に含まれるデータのうち、「bbaa」からなる削除データの削除が行われる場合について説明を行う。
ロック実行部113は、phase2−1が行われる場合、図23(A)に示すように、対象ノードである根ノードに対してロックを行う(S43のYES、S44のYES、S51)。
そして、phase2−1の実行に伴って、根ノードから「bbaa」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図23(B)に示すように、「bbaa」に対応するノードが対象ノードであるため、「bbaa」に対応するノードに対するロックを行う(S43のYES、S44のYES、S51)。また、ロック解除部114は、この場合、根ノードに対して行われていたロックを解除する(S52のYES、S53)。
続いて、phase2−1の実行に伴って、「bbaa」に対応するノードから「bbab」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図23(B)に示すように、「bbab」に対応するノードが対象ノードでないため、「bbab」に対応するノードに対するロックを行わない(S43のYES、S44のNO)。また、ロック解除部114は、この場合、「bbaa」に対応するノードに対して行われているロックの解除を行わない(S52のNO)。
次に、phase2−1の実行に伴って、「bbab」に対応するノードから「bbac」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図23(B)に示すように、「bbac」に対応するノードが対象ノードでないため、「bbac」に対応するノードに対するロックを行わない(S43のYES、S44のNO)。また、ロック解除部114は、この場合、「bbaa」に対応するノードに対して行われているロックの解除を行わない(S52のNO)。
続いて、ロック実行部113は、図24(A)に示すように、phase2−2が実行される場合、新たなノードに対するロックを行わない(S42のNO)。
その後、図24(B)に示すように、phase2−3の実行に伴って、「bbab」に対応するノード(「bba」が新たに対応付けられたノード)から「bbac」に対応するノード(「bbac」が新たに対応付けられたノード)に対する遷移が行われた場合、ロック実行部113は、「bbac」に対応するノードに対するロックを行う(S43のNO、S51)。また、ロック解除部114は、この場合、「bbab」に対応するノードに対して行われていたロックを解除する(S52のYES、S53)。
[対象ノードの具体例(2)]
次に、対象ノードの他の具体例について説明を行う。
図25は、図7で説明したデータ構造に対して対象ノードの設定を行う場合を説明する具体例である。
対象ノード設定部111は、図25に示すように、根ノードを対象ノードとして設定する(S32)。
そして、対象ノード設定部111は、図25に示すように、各ノードの子ノードのうちの長男ノード以外のノードを対象ノードとして設定する(S33)。
具体的に、対象ノード設定部111は、根ノードの子ノードである「aab」に対応するノード及び「bab」に対応するノードのうち、長男ノード以外のノードである「bab」に対応するノードを対象ノードとして設定する。また、対象ノード設定部111は、「bab」に対応するノードの子ノードである「bac」に対応するノード、「bbab」に対応するノード及び「bc」に対応するノードのうち、長男ノード以外のノードである「bbab」に対応するノード及び「bc」に対応するノードを対象ノードとして設定する。さらに、対象ノード設定部111は、「bbab」に対応するノードの子ノードである「bbac」に対応するノード及び「bbc」に対応するノードのうち、長男ノード以外のノードである「bbc」に対応するノードを対象ノードとして設定する。
[本実施の形態におけるデータの挿入が行われる際の処理の具体例(2)]
次に、データの挿入が行われる際の処理の具体例について説明を行う。以下、図2で説明したデータ構造に対して、「bba」からなる挿入データの挿入が行われる場合について説明を行う。
ロック実行部113は、phase1−1が行われる場合、図26(A)に示すように、対象ノードである根ノードに対してロックを行う(S43のYES、S44のYES、S51)。
そして、phase1−1の実行に伴って、根ノードから「bab」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図26(B)に示すように、「bab」に対応するノードが対象ノードであるため、「bab」に対応するノードに対するロックを行う(S43のYES、S44のYES、S51)。また、ロック解除部114は、この場合、根ノードに対して行われていたロックを解除する(S52のYES、S53)。
続いて、phase1−1の実行に伴って、「bab」に対応するノードから「bbab」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図27(A)に示すように、「bbab」に対応するノードが対象ノードであるため、「bbab」に対応するノードに対するロックを行う(S43のYES、S44のYES、S51)。そして、ロック解除部114は、この場合、「bab」に対応するノードに対して行われているロックを解除する(S52のYES、S53)。
次に、phase1−1の実行に伴って、「bbab」に対応するノードから「bbac」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図27(A)に示すように、「bbac」に対応するノードが対象ノードでないため、「bbac」に対応するノードに対するロックを行わない(S43のYES、S44のNO)。また、ロック解除部114は、この場合、「bbaa」に対応するノードに対して行われているロックの解除を行わない(S52のNO)。
そして、ロック実行部113は、図27(B)に示すように、phase1−2が実行される場合、新たなノードに対するロックを行わない(S42のNO)。
続いて、図28(A)に示すように、phase1−3の実行に伴って、「bba」に対応するノード(挿入データである「bba」が対応付けられたノード)から「bbac」に対応するノードに対する遷移が行われた場合、ロック実行部113は、「bbac」に対応するノードに対するロックを行う(S43のNO、S51)。また、ロック解除部114は、この場合、「bba」に対応するノードに対して行われていたロックを解除する(S52のYES、S53)。
その後、phase1−4に対応する処理の実行に伴って、ロック解除部114は、図28(B)に示すように、「bbаb」に対応するノード(挿入データである「bbab」が対応付けられたノード)に対して行われているロックを解除する。
[本実施の形態におけるデータの削除が行われる際の処理の具体例(2)]
次に、データの削除が行われる際の処理の具体例について説明を行う。以下、図19で説明したデータ構造に含まれるデータのうち、「bbab」からなる削除データの削除が行われる場合について説明を行う。
ロック実行部113は、phase2−1が行われる場合、図29(A)に示すように、対象ノードである根ノードに対してロックを行う(S43のYES、S44のYES、S51)。
そして、phase2−1の実行に伴って、根ノードから「bab」に対応するノードに対する遷移が行われた場合、ロック実行部113は、「bab」に対応するノードが対象ノードであるため、「bab」に対応するノードに対するロックを行う(S43のYES、S44のYES、S51)。また、ロック解除部114は、この場合、根ノードに対して行われていたロックを解除する(S52のYES、S53)。
次に、phase2−1の実行に伴って、「bab」に対応するノードから「bbab」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図29(B)に示すように、「bbab」に対応するノードが対象ノードであるため、「bbab」に対応するノードに対するロックを行う(S43のYES、S44のYES、S51)。そして、ロック解除部114は、この場合、「bab」に対応するノードに対して行われているロックを解除する(S52のYES、S53)。
さらに、phase2−1の実行に伴って、「bbab」に対応するノードから「bbac」に対応するノードに対する遷移が行われた場合、ロック実行部113は、図29(B)に示すように、「bbac」に対応するノードが対象ノードでないため、「bbac」に対応するノードに対するロックを行わない(S43のYES、S44のNO)。また、ロック解除部114は、この場合、「bbaa」に対応するノードに対して行われているロックの解除を行わない(S52のNO)。
続いて、ロック実行部113は、図30(A)に示すように、phase2−2が実行される場合、新たなノードに対するロックを行わない(S42のNO)。
その後、phase2−3の実行に伴って、ロック解除部114は、図30(B)に示すように、「bbac」に対応するノード(「bbac」が新たに対応付けられたノード)に対して行われていたロックを解除する(S52のYES、S53)。
このように、本実施の形態における管理装置1は、木構造で構成されたデータ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定する。そして、管理装置1は、データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、対象ノードに対してロックを行う。
すなわち、管理装置1は、上位階層のノードに対応するデータから下位階層のノードに対応するデータに向けて行われる処理が行われる際に、この処理の実行中において必要なノードに対するロックを行う。そして、管理装置1は、この場合、下位階層のノードに対応するデータから上位階層のノードに対応するデータに向けて行われる処理の実行中において必要なノードに対するロックを併せて行う。一方、管理装置1は、下位階層のノードに対応するデータから上位階層のノードに対応するデータに向けて行われる処理が行われる際においては、この処理の実行中において必要なノードに対するロックを行わない。
これにより、管理装置1は、デッドロックの発生を防止しながら、データに対する複数の操作を並行して行うことが可能になる。そのため、管理装置1は、データに対する各操作を効率的に行うことが可能になる。
なお、例えば、操作端末5からのクエリの受信に応じて、インデックス131のデータ構造に含まれるデータに対する検索が行われる場合、ロック実行部113は、各ノードに対して参照ロックを行うものであってもよい。これにより、管理装置1は、ノードに対するロックに伴って発生するロックの解除待ち時間をより短縮することが可能になる。
以上の実施の形態をまとめると、以下の付記のとおりである。
(付記1)
木構造で構成されたデータ構造においてロック制御を行う情報処理プログラムであって、
前記データ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定し、
前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、前記対象ノードに対してロックを行う、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
(付記2)
付記1において、
前記データの先頭には、前記データ構造における根ノードから前記データが対応付けられたノードまでの間の枝に対応付けられたデータが、前記根ノードに近い順に含まれており、
前記データは、各データが深さ優先探索において辞書式順になるように各ノードに対応付けられる、
ことを特徴とする情報処理プログラム。
(付記3)
付記2において、
前記木構造は、Full Blossom Treeである、
ことを特徴とする情報処理プログラム。
(付記4)
付記1において、
前記対象ノードとして設定する処理では、前記データ構造における根ノードと、前記根ノード以外の第1対象ノードと、前記第1対象ノードの子孫ノードである第2対象ノードとを前記対象ノードとして設定し、
前記ロックを行う処理では、前記第1対象ノードに対してロックが行われている場合において、前記第2対象ノードを親ノードから子ノードに向けて通過する処理が行われた場合、前記第2対象ノードに対してロックを行うとともに、前記第1対象ノードに対して行われているロックを解除する、
ことを特徴とする情報処理プログラム。
(付記5)
付記1において、
前記ロックを行う処理では、
前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記長男ノードを親ノードから子ノードに向けて通過する処理が行われる場合、前記長男ノードを子ノードから親ノードに向けて通過する処理が、前記長男ノードを親ノードから子ノードに向けて通過する処理の後に行われるか否かを判定し、
前記長男ノードを子ノードから親ノードに向けて通過する処理が、前記長男ノードを親ノードから子ノードに向けて通過する処理の後に行われないと判定した場合、前記長男ノードに対してロックを行う、
ことを特徴とする情報処理プログラム。
(付記6)
付記5において、
前記ロックを行う処理では、前記長男ノードに対してロックを行うとともに、前記長男ノードの親ノードに対して行われているロックを解除する、
ことを特徴とする情報処理プログラム。
(付記7)
付記1において、
前記データの検索、前記データの挿入及び前記データの削除のうちのいずれかの処理である、
ことを特徴とする情報処理プログラム。
(付記8)
木構造で構成されたデータ構造においてロック制御を行う情報処理装置であって、
前記データ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定する対象ノード設定部と、
前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、前記対象ノードに対してロックを行うロック実行部と、を有する、
ことを特徴とする情報処理装置。
(付記9)
付記8において、
前記対象ノード設定部は、前記データ構造における根ノードと、前記根ノード以外の第1対象ノードと、前記第1対象ノードの子孫ノードである第2対象ノードとを前記対象ノードとして設定し、
前記ロック実行部は、前記第1対象ノードに対してロックが行われている場合において、前記第2対象ノードを親ノードから子ノードに向けて通過する処理が行われた場合、前記第2対象ノードに対してロックを行うとともに、前記第1対象ノードに対して行われているロックを解除する、
ことを特徴とする情報処理装置。
(付記10)
木構造で構成されたデータ構造においてロック制御を行う情報処理方法であって、
前記データ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定し、
前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、前記対象ノードに対してロックを行う、
ことを特徴とする情報処理方法。
(付記11)
付記10において、
前記対象ノードとして設定する工程では、前記データ構造における根ノードと、前記根ノード以外の第1対象ノードと、前記第1対象ノードの子孫ノードである第2対象ノードとを前記対象ノードとして設定し、
前記ロックを行う工程では、前記第1対象ノードに対してロックが行われている場合において、前記第2対象ノードを親ノードから子ノードに向けて通過する処理が行われた場合、前記第2対象ノードに対してロックを行うとともに、前記第1対象ノードに対して行われているロックを解除する、
ことを特徴とする情報処理方法。
1:管理装置 2a:検索装置
2b:検索装置 3a:データベース
3b:データベース 5a:操作端末
5b:操作端末 5c:操作端末
130:記憶部 131:インデックス
DT1:データ DT2:データ

Claims (9)

  1. 木構造で構成されたデータ構造においてロック制御を行う情報処理プログラムであって、
    前記データ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定し、
    前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、前記対象ノードに対してロックを行う、
    処理をコンピュータに実行させることを特徴とする情報処理プログラム。
  2. 請求項1において、
    前記データの先頭には、前記データ構造における根ノードから前記データが対応付けられたノードまでの間の枝に対応付けられたデータが、前記根ノードに近い順に含まれており、
    前記データは、各データが深さ優先探索において辞書式順になるように各ノードに対応付けられる、
    ことを特徴とする情報処理プログラム。
  3. 請求項2において、
    前記木構造は、Full Blossom Treeである、
    ことを特徴とする情報処理プログラム。
  4. 請求項1において、
    前記対象ノードとして設定する処理では、前記データ構造における根ノードと、前記根ノード以外の第1対象ノードと、前記第1対象ノードの子孫ノードである第2対象ノードとを前記対象ノードとして設定し、
    前記ロックを行う処理では、前記第1対象ノードに対してロックが行われている場合において、前記第2対象ノードを親ノードから子ノードに向けて通過する処理が行われた場合、前記第2対象ノードに対してロックを行うとともに、前記第1対象ノードに対して行われているロックを解除する、
    ことを特徴とする情報処理プログラム。
  5. 請求項1において、
    前記ロックを行う処理では、
    前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記長男ノードを親ノードから子ノードに向けて通過する処理が行われる場合、前記長男ノードを子ノードから親ノードに向けて通過する処理が、前記長男ノードを親ノードから子ノードに向けて通過する処理の後に行われるか否かを判定し、
    前記長男ノードを子ノードから親ノードに向けて通過する処理が、前記長男ノードを親ノードから子ノードに向けて通過する処理の後に行われないと判定した場合、前記長男ノードに対してロックを行う、
    ことを特徴とする情報処理プログラム。
  6. 請求項5において、
    前記ロックを行う処理では、前記長男ノードに対してロックを行うとともに、前記長男ノードの親ノードに対して行われているロックを解除する、
    ことを特徴とする情報処理プログラム。
  7. 請求項1において、
    前記データの検索、前記データの挿入及び前記データの削除のうちのいずれかの処理である、
    ことを特徴とする情報処理プログラム。
  8. 木構造で構成されたデータ構造においてロック制御を行う情報処理装置であって、
    前記データ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定する対象ノード設定部と、
    前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、前記対象ノードに対してロックを行うロック実行部と、を有する、
    ことを特徴とする情報処理装置。
  9. 木構造で構成されたデータ構造においてロック制御を行う情報処理方法であって、
    前記データ構造の各階層における親ノードそれぞれに対応する子ノードのうちの長男ノード以外を、ロック制御を行う場合の対象ノードとして設定し、
    前記データ構造におけるノードに対応付けられたデータに対して操作を行う場合において、前記対象ノードを親ノードから子ノードに向けて通過する処理を行う場合、前記対象ノードに対してロックを行う、
    ことを特徴とする情報処理方法。
JP2017228577A 2017-11-29 2017-11-29 情報処理プログラム、情報処理装置及び情報処理方法 Active JP6912724B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017228577A JP6912724B2 (ja) 2017-11-29 2017-11-29 情報処理プログラム、情報処理装置及び情報処理方法
US16/190,884 US11003509B2 (en) 2017-11-29 2018-11-14 Lock control apparatus and lock control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017228577A JP6912724B2 (ja) 2017-11-29 2017-11-29 情報処理プログラム、情報処理装置及び情報処理方法

Publications (2)

Publication Number Publication Date
JP2019101518A JP2019101518A (ja) 2019-06-24
JP6912724B2 true JP6912724B2 (ja) 2021-08-04

Family

ID=66632348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017228577A Active JP6912724B2 (ja) 2017-11-29 2017-11-29 情報処理プログラム、情報処理装置及び情報処理方法

Country Status (2)

Country Link
US (1) US11003509B2 (ja)
JP (1) JP6912724B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201905533D0 (en) * 2019-03-20 2019-06-05 Cohesity Inc Determining differences between two versions of a file directory tree structure
CN114328500A (zh) * 2020-09-29 2022-04-12 北京金山云网络技术有限公司 一种数据访问方法、装置、设备及计算机可读存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430869A (en) * 1991-05-29 1995-07-04 Hewlett-Packard Company System and method for restructuring a B-Tree
JP3338752B2 (ja) 1996-05-31 2002-10-28 日本電気株式会社 更新可能表の明示指定によるデッドロック削減方式
US7383276B2 (en) * 2004-01-30 2008-06-03 Microsoft Corporation Concurrency control for B-trees with node deletion
JP5224953B2 (ja) 2008-07-17 2013-07-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理方法およびプログラム
US8996563B2 (en) * 2010-04-06 2015-03-31 Tokutek, Inc. High-performance streaming dictionary
JP5069337B2 (ja) 2010-05-26 2012-11-07 日本電信電話株式会社 分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム
US9275096B2 (en) * 2012-01-17 2016-03-01 Apple Inc. Optimized b-tree
US8868531B2 (en) * 2012-09-10 2014-10-21 Apple Inc. Concurrent access methods for tree data structures
US9535658B2 (en) * 2012-09-28 2017-01-03 Alcatel Lucent Secure private database querying system with content hiding bloom filters
US9208258B2 (en) * 2013-04-11 2015-12-08 Apple Inc. Locking and traversal methods for ordered tree data structures
US9262463B2 (en) * 2013-08-05 2016-02-16 International Business Machines Corporation Managing multiple locks for data set members in a data set index
US9489414B2 (en) * 2014-05-30 2016-11-08 Spiral Genetics, Inc. Prefix burrows-wheeler transformations for creating and searching a merged lexeme set
US10303673B2 (en) * 2015-05-11 2019-05-28 Apple Inc. Hierarchical data storage
US10496283B2 (en) * 2016-01-22 2019-12-03 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system
US10114559B2 (en) * 2016-08-12 2018-10-30 International Business Machines Corporation Generating node access information for a transaction accessing nodes of a data set index
US11031092B2 (en) * 2017-11-01 2021-06-08 International Business Machines Corporation Taxonomic annotation of variable length metagenomic patterns

Also Published As

Publication number Publication date
US11003509B2 (en) 2021-05-11
US20190163542A1 (en) 2019-05-30
JP2019101518A (ja) 2019-06-24

Similar Documents

Publication Publication Date Title
AU2016244128B2 (en) Processing database transactions in a distributed computing system
US6868414B2 (en) Technique for serializing data structure updates and retrievals without requiring searchers to use locks
EP3117348B1 (en) Systems and methods to optimize multi-version support in indexes
US8719226B1 (en) Database version control
US8380702B2 (en) Loading an index with minimal effect on availability of applications using the corresponding table
EP3631651B1 (en) Method for efficient primary key based queries using atomic rdma reads on cache friendly in-memory hash index
US20120084273A1 (en) Accelerated Transactions With Precommit-Time Early Lock Release
CN112052264B (zh) 业务数据查询方法、装置、电子设备及可读存储介质
CN108304251B (zh) 线程同步方法及服务器
WO2011084987A1 (en) Traversal-free rapid data transfer
JP6912724B2 (ja) 情報処理プログラム、情報処理装置及び情報処理方法
CN106250487B (zh) 一种数据库并发控制方法及装置
CN102193991A (zh) 基于oltp的数据修改方法、系统及图形数据库服务器
CN102103642A (zh) 基于oltp的数据删除方法、系统及图形数据库服务器
US10768974B2 (en) Specifying an order of a plurality of resources in a transaction according to distance
CN113361236A (zh) 一种编辑文档的方法和装置
CN115098497A (zh) 一种关键数据结构的动态重构方法
CN110535939A (zh) 一种服务发现与抢占方法、装置、计算机设备及存储介质
JP2010176319A (ja) 構造化文書検索システム、装置、及び方法
CN102193987B (zh) 基于oltp的增加节点数据关系的方法及系统
AU2006224669A1 (en) Method and system for maintaining consistency of a cache memory by multiple independent processes
JP4396988B2 (ja) データベースシステム
JP6477169B2 (ja) データベースの処理制御方法、処理制御プロラム及びデータベースサーバ
JP2012053802A (ja) ソフトウェア導入状況管理装置、ソフトウェア導入状況管理方法およびプログラム
US10417214B2 (en) Non-transitory computer-readable storage medium, database control method and database control device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210608

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210621

R150 Certificate of patent or registration of utility model

Ref document number: 6912724

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150