JP2005234945A - 同時実行制御方法及び装置 - Google Patents

同時実行制御方法及び装置 Download PDF

Info

Publication number
JP2005234945A
JP2005234945A JP2004044210A JP2004044210A JP2005234945A JP 2005234945 A JP2005234945 A JP 2005234945A JP 2004044210 A JP2004044210 A JP 2004044210A JP 2004044210 A JP2004044210 A JP 2004044210A JP 2005234945 A JP2005234945 A JP 2005234945A
Authority
JP
Japan
Prior art keywords
update
data
time
data group
group
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.)
Granted
Application number
JP2004044210A
Other languages
English (en)
Other versions
JP4314126B2 (ja
Inventor
Masakazu Hattori
雅一 服部
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004044210A priority Critical patent/JP4314126B2/ja
Publication of JP2005234945A publication Critical patent/JP2005234945A/ja
Application granted granted Critical
Publication of JP4314126B2 publication Critical patent/JP4314126B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】格納すべきデータ量を最小限に抑えて更新と参照(検索)の同時実行制御を容易に行うことのできる同時実行制御方法及び装置を提供する。
【解決手段】更新前後の第1データ群をそれぞれ別の記憶エリアに記憶し、複数の索引語のうちの1つにそれぞれ対応し当該索引語を含むデータ群の識別子がそれぞれ登録された複数のテーブルのなかから、検索要求で指定された索引語に対応するテーブル群を選択し、第1データ群の更新が終了した後にテーブル群が選択された場合検索要求の受付時刻が更新の開始時刻より前であるとき、更新前後の第1データ群のうちの更新前にのみ含まれる第1索引語に対応する第1テーブルと更新後にのみ含まれる第2索引語に対応する第2テーブルのうち第1テーブルがテーブル群に含まれているときに更新前の第1データ群を出力し、受付時刻が開始時刻より後のときテーブル群に第2テーブルが含まれているときに更新後の第1データ群を出力する。
【選択図】 図1

Description

本発明は、更新処理と参照処理(検索処理)の同時実行制御を行うデータベースシステムに関する。
従来からデータベースシステムにおいて同時実行制御によるデータベーストランザクション(更新、参照(検索)、などから成る処理単位)の管理が行われている。この同時実行制御とは、複数のユーザがデータベースシステムにおいて同じデータに対して同時にトランザクション、つまり更新、参照などのアクセスを行おうとするとき、排他制御を行ってデータの整合を保証しようとするものである。
通常データベースでは、トランザクションがデータにアクセスしようとするとき、専有ロックや共有ロックなどのロックをかけて他のトランザクションのアクセスに対して制限を加える方法がとられる。通常、2相ロックにより、トランザクション開始で順次、データ操作を行う前にロックをかけて、トランザクション終了時までロックを解放しない。このようなロック方式では、他のトランザクションのアクセスが制限されてしまうため、更新トランザクションにより検索トランザクションが待たされてしまう問題が発生してしまう。
マルチバージョン方式では、更新トランザクションは更新するデータの複製をとってから更新するので、複製データを他の検索トランザクションが同時にアクセスすることができるようになる(例えば、特許文献1、特許文献2参照)。
特開平6−28315号公報 特開2003−140951公報
従来、マルチバージョン方式により更新と参照(検索)の同時実行制御を行う場合、更新処理の前後に発生する検索処理のために更新前と更新後のデータベースの状態をそれぞれ保持する必要があり、そのために要する記憶容量が膨大になるという問題点があった。
そこで、本発明は、上記問題点に鑑み、格納すべきデータ量を最小限に抑えて更新と参照(検索)の同時実行制御を容易に行うことのできる同時実行制御方法及び装置を提供することを目的とする。
本発明は、識別子の与えられた複数のデータ群のうちの1つである第1のデータ群について、更新前のデータを含む更新前の第1のデータ群と更新後のデータを含む更新後の第1のデータ群とをそれぞれ別の記憶エリアに記憶し、複数の索引語と、当該複数の索引語のうちの1つにそれぞれ対応し、当該索引語を含むデータをもつデータ群の識別子がそれぞれ登録された複数のテーブルのなかから、検索要求で指定された索引語に対応するテーブル群を選択し、(a)前記第1のデータ群の更新が終了する前にテーブル群が選択された場合、更新前後の第1のデータ群のうちの更新前の第1のデータ群にのみ含まれる第1の索引語に対応する第1のテーブルと、更新前後の第1のデータ群のうちの更新後の第1のデータ群にのみ含まれる第2の索引語に対応する第2のテーブルとのうち少なくとも前記第1のテーブルが前記テーブル群に含まれているときに、更新前の第1のデータ群を検索結果として出力し、(b)前記第1のデータ群の更新が終了した後にテーブル群が選択された場合、前記検索要求を受け付けた時刻である第1の時刻が前記更新の開始時刻である第2の時刻より前であるときには、前記テーブル群に第1及び第2のテーブルのうち少なくとも第1のテーブルが含まれているときに更新前の第1のデータ群を出力し、前記第1の時刻が前記第2の時刻より後であるときには、前記テーブル群に第1及び第2のテーブルのうち少なくとも第2のテーブルが含まれているときに更新後の第1のデータ群を検索結果として出力する。
格納すべきデータ量を最小限に抑えて更新と参照(検索)の同時実行制御を容易に行うことができる。
図1は、本実施形態に係る同時実行制御装置を適用した情報管理装置の構成例を示したものである。図1に示すように、情報管理装置1は、更新処理部2、コミット処理部3、参照処理部4、バージョンデータ管理部5、時刻管理部6、テーブル記憶部10を有し、さらに、索引データ記憶部21とマップテーブル記憶部22とオブジェクトデータ記憶部23を有するデータベース20が接続して構成されている。
情報管理装置1には、複数の(ここでは、例えば2台の)端末TE1〜TE2が所定のネットワーク等を介して接続され、当該端末からデータ更新やデータ参照やデータコミットなどの要求を受ける。
更新処理部2は、端末からのデータ更新要求を受けてデータベース20にアクセスして、オブジェクトデータや索引データの更新を行う。
コミット処理部3は、端末からのコミット要求を受けて、更新処理部2を介して行った更新内容を確定するための処理を行う。コミットとは、ここでは、更新確定と同義である。
参照処理部4は、端末からの(オブジェクトデータを検索するためのキーワードを含む)データ参照要求を受けて、オブジェクトデータ記憶部23から当該キーワードを含むオブジェクトデータを検索して要求元の端末へ送信する。
時刻管理部6は、更新処理終了の度に(コミット処理終了の度に)、「1」だけインクリメントされる時刻を記憶、更新する。
テーブル記憶部10には、更新ログテーブル11、バージョンデータテーブル12、参照ログテーブル13が記憶されている。
オブジェクトデータ記憶部23には、更新・参照(検索)対象の複数のオブジェクトデータが記憶されている。オブジェクトデータは、論理オブジェクトIDと物理オブジェクトIDにて指定される。論理オブジェクトIDとは、物理的なオブジェクト配置場所を考慮しないオブジェクトIDである。論理オブジェクトIDとは、物理的なオブジェクト配置場所(オブジェクトデータ記憶部23に対応する記憶領域内の当該オブジェクトデータが記憶されている位置)から算出されるオブジェクトIDである。通常、索引データでの発生位置は論理オブジェクトIDにて表現される。論理オブジェクトIDから物理オブジェクトIDへの変換は、マップテーブル記憶部22に記憶されているマップテーブルを使って行われる。
図2は、オブジェクトデータ記憶部23におけるオブジェクトデータの記憶例を模式的に示したものである。1つのオブジェクトデータは、複数のデータ(要素データ)をそれらの順序関係(あるいは上下関係)に従ってリンクして構成されている。
オブジェクトデータ記憶部23内のオブジェクトデータの格納エリアは、当該オブジェクトデータを構成する要素データを格納する記憶領域である複数のスロットから構成されている。各スロットは、スロットIDで特定するものとする。従って、各要素データは、当該要素データを含むオブジェクトデータの論理オブジェクトID(あるいは当該論理オブジェクトIDに対応する物理オブジェクトID)、当該要素データの格納されているスロットのスロットIDとで特定する。
例えば、オブジェクトデータ記憶部23の物理オブジェクトID「POID5」に格納されているオブジェクトデータは、“メモリ”と“データベース”という2つの要素データをこの順序で繋げて構成されたものである。“メモリ”と“データベース”という各要素データは、スロットID「SLOT0」と「SLOT1」というスロットにそれぞれ格納されている。また、オブジェクトデータ記憶部23の物理オブジェクトID「POID6」に格納されているオブジェクトデータは、“XML”と“データ”という2つの要素データをこの順序で繋げて構成されたものである。“XML”と“データ”という各要素データは、スロットID「SLOT0」と「SLOT1」というスロットにそれぞれ格納されている。このように、各オブジェクトデータは、リスト形式のデータ構造を有している。
また、各オブジェクトデータの格納領域の先頭スロットは、リストの先頭要素データのスロットへのポインタ情報(例えば先頭要素データのスロットID)が格納され、各スロットには、次の要素データの格納されているスロットへのポインタ情報(スロットID)が要素データとともに格納されている。従ってポインタ情報によるチェーンをたどることでリストの各要素データをたどれる。
図3は、索引データ記憶部21に記憶される索引データの記憶例を模式的に示したものである。ここでは索引データとは、少なくとも数値(日付や時刻などを含む),単語,語彙からなる索引語と、当該索引語を含む要素データをもつオブジェクトデータの論理オブジェクトIDと、当該要素データのスロットIDとを対応付けたものである。すなわち、索引語から当該索引語をもつ(当該索引語の発生している)要素データおよびオブジェクトデータを探し出すためのデータである。
図3において、索引データは、「語彙」欄と「発生位置テーブル」欄から構成されている。「語彙」欄には、複数の索引語が登録されている。各語彙に対して、論理オブジェクトIDとスロットIDと、さらに、当該論理オブジェクトIDとスロットIDとで特定される要素データが更新により削除されるものなのかあるいは挿入されるものなのかを示す情報と、当該要素データが実際にオブジェクトデータ記憶部23に記憶されているか否かを確認する必要があるか否かを示す情報と、更新時刻とを組とした発生位置テーブルが登録されている。
例えば「語彙」欄中の索引語“メモリ”、“データベース”に対して、それぞれ1つの発生位置テーブルが対応付けられており、当該発生位置テーブルには、当該索引語を含む要素データと、この要素データのオブジェクトデータにおける発生位置等を示した発生位置データが登録されている。
発生位置テーブルは、図3に示すように、「発生位置」欄と「削除挿入」欄と「確認要否」欄と「更新時刻」欄とからなる。「発生位置」欄には、索引語が発生する要素データと当該要素データをもつオブジェクトデータを特定するための論理オブジェクトIDとスロットIDとを1組とするデータが登録されている。「削除挿入」欄には、当該要素データが削除予定なのか挿入予定なのか判別するための情報が登録されている。ここでは、例えば削除予定であれば「削」挿入予定であれば「挿」が登録される。「確認要否」欄には、データ参照(データ検索)時、当該要素データがオブジェクトデータ記憶部23に実際に記憶されているか否か(有効なのか無効なのか)チェックの必要の有無を表すための情報(フラグ情報)が登録されている。ここでは、例えばチェックの必要があれば「要」、必要でなければ「否」が登録される。「更新時刻」欄には、当該要素データが更新された時刻(更新確認(コミット)された時刻)が登録される。
図3では、索引データの「語彙」欄の“メモリ”に対応付けられている発生位置テーブルに、「LOID5、SLOT0、挿、否、Time6」というレコード(発生位置データ)が登録されている。これは「論理オブジェクトID「LOID5」を持つオブジェクトデータのスロットID「SLOT0」のスロット(「0」番目のスロット)に“メモリ”という語彙が発生している。更新時刻は「Time6」でコミットされている。データ参照を行う場合にスロットチェックが不要である」という意味である。
図4は、マップテーブル記憶部22に記憶されているマップテーブルの一例を示したものである。マップテーブルは、論理オブジェクトID(LOID)と当該論理オブジェクトIDをもつオブジェクトデータの物理オブジェクトID(POID)であってコミットされたときの物理オブジェクトIDとを1組とする複数のデータが登録されたものである。例えば、論理オブジェクトID「LOID5」は物理オブジェクトID「POID5」に変換されるということを意味している。
データ更新の要求が入力したとき、更新処理部2にて、索引データの更新、オブジェクトデータの更新が行われる。データ更新はコミットされる(更新が確定する)まで、更新開始から更新が確定するまでに受け付けた参照処理に対しては更新前の結果のみ見えて、更新後の結果が見えないように制御しなければならない。このため、情報管理装置1は、バージョンデータテーブル12を用いて、データ参照処理に対する更新内容の見え方を制御している。
バージョンデータ管理部5は、オブジェクトデータ記憶部23の更新前の状態しか見せられない参照処理が終了した時点で、バージョンデータテーブル12や索引データ記憶部21内の索引データを更新するとともに、オブジェクトデータ記憶部23の不要となった記憶領域を開放する。
コミット要求が入力したとき、コミット処理部3はデータ更新が確定されたものとみなして、マップテーブル記憶部22に記憶されているマップテーブルや索引データ記憶部21に記憶されている索引データの更新を行う。また、コミット前後にわたって参照処理部4で実行されている参照処理のために、更新前の結果を見せる必要がある。このためにバージョンデータテーブル12の更新を行う。
データ参照の要求が入力したとき、参照処理部4は、索引データのアクセスからオブジェクトデータへのアクセス、あるいは直接的にオブジェクトデータへのアクセスが行われる。データ参照のルールとして、データ参照要求を受け付けたときの状態のオブジェクトデータ記憶部23に対する参照でなければならない。すなわち、コミットされたオブジェクトデータ記憶部23のスナップショットがあったとして、これに対する参照が行われなければ、データ一貫性が失われてしまうからである。
参照処理部4における、索引データのアクセスから開始する場合の基本的な動作は、索引データから条件を満足する(条件として指定された数値、記号、語彙などを含む)要素データの発生位置データの集合を取り出し、マップテーブル記憶部22に記憶されているマップテーブルにて論理オブジェクトIDから物理オブジェクトIDへの変換を行って、オブジェクトデータ記憶部23内のオブジェクトデータにアクセスする。直接的にオブジェクトデータへのアクセスする場合の基本的な動作は、マップテーブルにて論理オブジェクトIDから物理オブジェクトIDへの変換を行って、オブジェクトデータ記憶部23内のオブジェクトデータにアクセスする。
ここで、図5を参照して、オブジェクトデータの更新(更新処理TXN2)開始前に開始され、当該更新がコミットされた後も継続している検索処理(参照処理Query3、Query4)と、当該更新がコミットされた後に開始される検索処理(参照処理Query2)とが混在する場合について説明する。すなわち、このような場合、参照処理Query3、Query4には当該更新前のオブジェクトデータを参照対象とし、参照処理Query2には当該更新後の(更新結果の)オブジェクトデータを参照対象とする切替を行う。
図5は、2つの更新処理と4つの参照処理のそれぞれの発生時と終了時を時系列に示したものである。図5には、以下の更新処理と参照処理を示している。なお、図5において、時刻「Time6」から「Time7」、「Time7」から「Time8」等の時刻の更新は、図5では表されていない更新処理がコミットされたために、時刻が更新されている。
時刻「Time6」に更新処理TXN1が発生し、論理オブジェクトID「LOID5」のオブジェクトデータ(“メモリ”,“データベース”)を格納した。
時刻「Time7」に参照処理Query1が発生し、語彙“メモリ”を含むオブジェクトデータの検索(参照)処理が開始され、時刻「Time7」の間に当該検索処理は終了した。
時刻「Time7」に参照処理Query3が発生し、語彙“メモリ”と“半導体”を含むオブジェクトデータの検索(参照)処理が開始され、当該検索処理は時刻「Time9」に終了した。
時刻「Time7」に参照処理Query4が発生し、語彙“ディスク”を含むオブジェクトデータの検索(参照)処理が開始され、当該検索処置は時刻「Time9」に終了した。
時刻「Time8」に更新処理TXN2が発生し、論理オブジェクトID「LOID5」のオブジェクトデータの“メモリ”を“ディスク”に更新した。
時刻「Time9」に参照処理Query2が発生し、語彙“メモリ”を含むオブジェクトデータの検索(参照)処理が開始され、時刻「Time9」の間に当該検索処理は終了した。
図5に示した状態の場合、各参照処理の参照対象は、当該参照処理の参照要求の発生した時点において既にコミットされているオブジェクトデータのみである。例えば、参照処理Query1では、更新処理TXN1の更新結果までが参照対象となり、論理オブジェクトID「LOID5」のオブジェクトデータ(“メモリ”,“データベース”)を参照することができる。参照処理Query2では、更新処理TXN2での更新結果までが参照対象となり、当該オブジェクトデータ(“メモリ”,“データベース”)は参照できない。代わって、更新処理TXN2での更新結果(“ディスク”,“データベース”)が参照対象となる。
参照処理Query3やQuery4では、これらの参照要求の発生時前に既にコミットされている更新処理TXN1の更新結果までが参照対象となる。しかし、これら参照処理中に更新処理TXN2が発生し、更新がコミットされているので、更新処理TXN2の終了後(コミット後)に、この更新結果を参照処理Query3やQuery4の参照対象とならないように制御する必要がある。すなわち、参照処理Query3やQuery4は、更新処理TXN2が発生する以前のオブジェクトデータを参照対象とするべきなので、更新処理TXN2が終了後も更新処理TXN2の更新前のオブジェクトデータを保持しておく。そして、少なくとも参照処理Query3やQuery4が終了するまで、これら参照処理Query3やQuery4に対しては、更新処理TXN2の更新前のオブジェクトデータをみせ、更新処理TXN2終了後に参照要求を行った検索処理(例えば、図5では参照処理Query2)に対しては、更新処理TXN2の更新後のオブジェクトデータをみせるという切替を行う。
次に、図6に示すフローチャートを参照して、図1の情報管理装置1の更新処理動作について説明する。
なお、ここでは、図5の更新処理TXN2の更新処理動作を例にとり説明し、当該更新前のオブジェクトデータ記憶部23、索引データ記憶部21、マップテーブル記憶部22の状態は、それぞれ図2〜図4に示すような状態であるとする。
例えば、端末TE1から、論理オブジェクトID「LOID5」のオブジェクトデータ(“メモリ”,“データベース”)に対する更新要求であって、当該オブジェクトデータの先頭の要素データ“メモリ”を“ディスク”に変更する更新要求メッセージが送られてきたとする。この更新は、図5の更新処理TXN2に対応する。
当該更新要求メッセージは、更新処理部2で受け取られる。更新処理部2は、まず、時刻管理部6から、現在の時刻(更新時刻)を得る(ステップS1)。ここで時刻とは、情報管理装置1が起動してからシリアルにふられていく番号であり、コミット処理により「1」だけ増加する。すなわち、時刻を見れば、更新が確定した時点(更新がコミットされた時点)と参照要求の発生した時点との時間的な前後関係がわかるものとする。
なお、更新処理部2で当該更新要求を受け取った時点(時刻「Time8」)では、図5からも明らかなように、時刻「Time7」に発生した参照要求が2件あり(Query3、Query4)、これらの参照処理は今だ継続中である。時刻「Time8」における参照ログテーブル13を図7に示す。図7に示すように、参照ログテーブル13には、現時点において参照処理が継続中である参照処理の数が、当該参照処理の発生時刻別に登録されている。例えば、図7には、時刻「Time7」に発生した参照処理(Query3、Query4)の数として「2」が登録されている。
次に、更新処理部2は、更新対象のオブジェクトデータの複製を、オブジェクトデータ記憶部23内の未使用の記憶エリアに格納する。そして、更新された新たな要素データは、未使用スロットに格納する(ステップS2)。
例えば、図9に示すように、更新対象の物理オブジェクトID「POID5」のオブジェクトデータの複製は、オブジェクトデータ記憶部23内の空きエリアである、物理オブジェクトID「POID21」に格納し、先頭スロットの要素データに代わる新たな要素データである“ディスク”が空きのスロット(スロットID「SLOT2」)に格納される。
このように、更新前のオブジェクトデータをそのまま残しておき、当該更新前のオブジェクトデータの複製に更新を行ったものを新たなオブジェクトデータとして更新前のオブジェクトデータとは別の格納エリアに格納する。そして、更新前の先頭スロット「SLOT0」を使わずに、未使用のスロット「SLOT2」を新たな先頭の要素データ“ディスク”用に割当てることにより、次のようにして、発生位置データの有効性、無効性をコントロールすることができる。
(A)発生位置テーブルの「確認要否」欄が「要」であり、実際にオブジェクトデータ記憶部23に当該発生位置データで表されたスロットが存在しなければ、当該発生位置データは無効である。
(B)発生位置テーブルの「確認要否」欄が「要」であり、実際にオブジェクトデータ記憶部23に当該発生位置データで表されたスロットが存在すれば、当該発生位置データは有効である。
(C)発生位置テーブルの「確認要否」欄が「否」であれば、当該発生位置データは有効である。
と判断することができる。このような判断は後述する参照処理において行われる。
更新処理部2は、オブジェクトデータ記憶部23内のオブジェクトデータの更新に伴い、当該更新により追加された新たな要素データに対応する索引データの更新、当該更新により削除された要素データに対応する索引データの更新を行う(ステップS3)。具体的には、追加された新たな要素データに対応する索引語と発生位置データの発生位置テーブルへの追加(図3の索引データへのデータの追加)を行う。このとき発生位置テーブルへ追加された新たな発生位置データの「削除挿入」欄は「挿」、「確認要否」欄は「要」となり、「更新時刻」欄には更新時刻は登録されていない。また、削除される要素データに対応する発生位置データ内の「確認要否」欄の「否」を「要」とする。
例えば、ここでは、“メモリ”という要素データが“ディスク”に書き換える更新であるから、まず、図10に示すように、索引データの「語彙」欄の“ディスク”という語彙に対応付けて、発生位置が論理オブジェクトID「LOID5」とスロットID「SLOT0」である新たな発生位置データを発生位置テーブルへ追加する。また、“メモリ”という要素データは削除予定であるから、図10に示すように、当該要素データに対応する発生位置データ内の「確認要否」欄の「否」を「要」とする。
次に、図11に示すフローチャートを参照して、図1の情報管理装置1のコミット処理動作について説明する。コミット処理とは、更新処理により更新内容を確定するための処理であり、コミット処理が終了することで、当該更新処理が終了する。ここでは、更新処理TXN2を終了するためのコミット処理を例にとり説明する。
端末TE1から、前述したように、“メモリ”という要素データが“ディスク”に書き換える更新に対しコミットするためのコミット要求メッセージが情報管理装置1へ送信される。当該コミット要求メッセージは、コミット処理部3で受け取られる(ステップS11)。
コミット処理部3では、当該コミット要求を受け付けると、図12に示すように、バージョンデータテーブル12に、当該更新の更新時刻(ここでは例えば「Time8」)、更新対象のオブジェクトデータの論理オブジェクトID(ここでは例えば「LOID5」)、更新後のオブジェクトデータの格納されている新たな物理オブジェクトID(ここでは例えば「POID21」)、当該更新前のオブジェクトデータの格納されている物理オブジェクトID(ここでは例えば「POID5」)を登録する(ステップS12)。
バージョンデータテーブル12には、図12に示すように、更新のコミット時に、当該更新の開始時刻である更新時刻と、当該更新の更新対象のオブジェクトデータの論理オブジェクトID(LOID)と、更新後のオブジェクトデータの格納されている新たな物理オブジェクトID(NewPOID)と、更新前のオブジェクトデータの格納されている物理オブジェクトID(OldPOID)とが登録される。
例えば、図12に示したバージョンデータテーブル12には、時刻「Time8」にて、論理オブジェクトID「LOID5」のオブジェクトデータの物理オブジェクトIDが「POID5」から「POID21」に変更されたことを示している。時刻「Time8」よりも前の時点で開始された参照処理において、論理オブジェクトID「LOID5」のオブジェクトIDを参照しようとすれば、オブジェクトデータ記憶部23内の物理オブジェクトID「POID5」にアクセスすれば良いことになる。
バージョンデータテーブル12は「更新時刻」欄の時刻にて降順にソートされている。
コミット処理部3は、次に、索引データ記憶部21に記憶されている、更新前の要素データに対応する発生位置データの「削除挿入」欄と「更新時刻」欄を更新するとともに、更新後の要素データに対応する発生位置データの「更新時刻」欄を更新する(ステップS13)。具体的には、更新により、削除予定の要素データに対応する発生位置データの「削除挿入」欄に「削」を登録し、「更新時刻」欄に、当該更新処理で取得した時刻を登録する。また、更新により追加(挿入)予定の要素データに対応する発生位置データの「更新時刻」欄に、当該更新処理で取得した時刻を登録する。
例えば、図13に示すように、論理オブジェクトID「LOID5」のオブジェクトデータの“メモリ”という要素データが“ディスク”という要素データに書き換えられた場合には、更新前の要素データ“メモリ”に対応する発生位置データ101は削除予定であるので、「削除挿入」欄の「挿」を「削」に書換え、「更新時刻」欄に、当該更新処理で取得した時刻「Time8」を登録する。また、更新後の要素データ“ディスク”に対応する発生位置データ102の「更新時刻」欄に、当該更新処理で取得した時刻「Time8」を登録する。
コミット処理部3は、次に、マップテーブル記憶部22に記憶されているマップテーブルを更新する(ステップS14)。すなわち、コミットされた更新結果をマップテーブルに反映させるべく、図14に示すように、更新対象のオブジェクトデータの論理オブジェクトIDに対応付ける物理オブジェクトIDを、更新前の更新後のオブジェクトデータの格納されている物理オブジェクトIDに書き換える。
図14では、論理オブジェクトID「LOID5」に対応する物理オブジェクトIDが「POID5」から、更新後のオブジェクトデータの格納されている物理オブジェクトID「POID21」に書き換えられている。
コミット処理部3は、さらに、更新ログテーブル11に、更新処理の最初に取得した時刻(ここでは「Time8」)と、更新対象のオブジェクトデータの物理オブジェクトID(ここでは、「POID5」)を、図8に示すように更新ログテーブル11に登録する(ステップS15)。更新ログテーブル11には、図8に示すように、更新処理の発生した時刻(更新時刻)と、当該更新処理により更新対象となったオブジェクトデータの物理オブジェクトIDとを1組とした更新ログが登録される。
最後に、時刻を1つインクリメントする(ステップS16)。ここでは、「Time8」から「Time9」に更新される。
次に、図15〜図17に示すフローチャートを参照して、図1の情報管理装置1の参照処理動作について説明する。ここでは、図5の参照処理QUERY3の参照処理動作を例にとり説明する。この場合、図5からも明らかなように、当該参照処理QUERY3の参照要求を受けた時点では、継続中の更新処理は存在しない。オブジェクトデータ記憶部23内のオブジェクトデータは全てコミットされた状態である。従って、更新ログテーブル11にはレコードが存在しない。また、参照ログテーブル13には、図18に示すように、時刻「Time7」に開始された参照処理QUERY1に対応する参照ログのレコードが記録されている。
この状態で、端末TE1から「“メモリ”と“半導体”のうちのいずれか一方を含むオブジェクトデータを取り出す」旨の参照要求メッセージが情報管理装置1へ送信される。当該参照要求メッセージは参照処理部4で受け取られる。
参照処理部4では、当該参照要求メッセージを受け付けると、まず、時刻管理部6から現在の時刻(参照時刻)Tqを得る。ここでは、「Time7」が得られる。この結果、参照ログテーブル13の「Time7」に対応する参照数は1つ増加されて「2」に更新される(ステップS21)。
次に、参照処理部4は、索引データ記憶部21にアクセスして、索引データ中の「語彙」欄の“メモリ”、“半導体”に対応付けて記憶されている位置発生テーブルから発生位置データの集合を得る(ステップS22)。なお、ここで発生位置データを収集する際には、「更新時刻」欄に更新時刻が記載されずに空欄(あるいは「NULL」)となっている発生位置データは除くようにしてもよい。「更新時刻」欄が空欄(あるいは「NULL」)となっている発生位置データは、前述したように、更新中であるがコミットされていない要素データの発生位置データであるからである。また、「削除挿入」欄が「挿」のときには「更新時刻」欄の時刻が当該参照処理の参照処理時刻Tq以前のもの、「削除挿入」欄が「削」のときには「更新時刻」欄の時刻が当該参照処理の参照処理時刻Tq以前以後にかかわりなく時刻が登録されていれば収集するようにしてもよい。
以下、(ケースX1)他の全てのトランザクション(例えば、この例では更新処理TXN2)が開始する前に、参照処理部4がデータベース20にアクセスする場合と、(ケースX2)他の少なくとも1つのトランザクション(例えば、この例では更新処理TXN2)が開始しているが、コミットはされていないときに、参照処理部4がデータベース20にアクセスする場合と、(ケースX3)全てのトランザクション(この例では更新処理TXN2)が終了後に参照処理部4がデータベース20にアクセスする場合とに分けて説明する。
(ケースX1)他の全てのトランザクション(例えば、この例では更新処理TXN2)が開始する前に、参照処理部4がデータベース20にアクセスする場合。
オブジェクトデータ記憶部23と索引データ記憶部21とマップテーブル記憶部22の状態は、図2〜図3に示した状態である。従って、ステップS22では、図3に示した索引データから、発生位置データ101を含む発生位置データの集合を得る。
得られた発生位置データのそれぞれについて、ステップS24〜ステップS33の処理を繰り返す(ステップS23〜ステップS34)。すなわち、ステップS24では、発生位置データ内の「確認要否」欄をチェックする。(ケースX1)の場合、得られた全ての発生位置データの「確認要否」欄は「否」となっていることが期待できるので、ここでは、ステップS31へ進む。ステップS31では、現在処理対象の発生位置データから論理オブジェクトID(LOID)を取り出し、マップテーブルから当該LOIDに対応する物理オブジェクトID(POID)を得る。例えば、現在処理対象の発生位置データが発生位置データ101である場合、論理オブジェクトIDは「LOID5」であるので、図4に示したマップテーブルから物理オブジェクトID「POID5」が得られる。そして、ステップS33へ進み、オブジェクトデータ記憶部23の物理オブジェクトID「POID5」に対応する記憶エリアからオブジェクトデータを読み出す。
以上のステップS24〜ステップS34の処理をステップS22で得られた全ての発生位置データについて行う。
その後、図17のステップS51へ進む。
(ケースX2)他の少なくとも1つのトランザクション(例えば、この例では更新処理TXN2)が開始しているがコミットはされていないときに、参照処理部4がデータベース20にアクセスする場合。
オブジェクトデータ記憶部23は、図9に示した状態であり、索引データ記憶部21は、図10に示した状態であり、マップテーブル記憶部22は図4に示した状態である。この場合も、ステップS22では、図10に示した索引データから、発生位置データ101を含む発生位置データの集合を得る。なお、例えば“メモリ”に対応付けて記憶されている発生位置データであっても、「更新時刻」欄が空欄(あるいは「NULL」)となっている発生位置データは、前述したように、更新中であるがコミットされていない要素データの発生位置データであり、そのような発生位置データは除くようにしてもよい。 得られた発生位置データのそれぞれについて、ステップS24〜ステップS33の処理を繰り返す(ステップS23〜ステップS34)。すなわち、ステップS24では、発生位置データ内の「確認要否」欄をチェックする。(ケースX2)の場合、更新処理TXN2が開始されているが、まだ、コミットはされていない。従って、「確認要否」欄は「要」となっている発生位置データも存在する。例えば、発生位置データ101は、図10からも明らかなように、現在更新中であるので、「確認要否」欄は「要」となっている。この場合には、図16のステップS61へ進む。
ステップS61では、現在処理対象の発生位置データの「削除挿入」欄をチェックする。「削除挿入」欄が「削」となっているときには、ステップS62へ進み、参照ログテーブル13内で現在最も古い参照時刻を取得し、当該参照時刻と処理対象の発生位置データの「更新時刻」欄の更新時刻と比較する。処理対象の発生位置データの更新時刻が、取得した参照時刻より以前のものであるときには、ステップS64へ進み、発生位置データの集合から当該処理対象の発生位置データを削除し、図15のステップS34へ進む。一方、処理対象の発生位置データの更新時刻が、取得した参照時刻以降のものであるときには、ステップS65へ進む。
ステップS61で、現在処理対象の発生位置データの「削除挿入」欄が「挿」となっているときには、ステップS63へ進み、参照ログテーブル13内で現在最も古い参照時刻を取得し、当該参照時刻と処理対象の発生位置データの「更新時刻」欄の更新時刻と比較する。処理対象の発生位置データの更新時刻が、取得した参照時刻より前であるときには、ステップS66へ進み、当該処理対象の発生位置データ内の「確認要否」欄を「要」から「否」へ書き換える。その後、ステップS66´へ進み、当該発生位置データのLOIDに対応するPOIDをマップデータから取得し、ステップS72へ進み、オブジェクトデータ記憶部23内の当該得られたPOIDに対応する記憶エリアからオブジェクトデータを読み出す。
一方、ステップS63において、処理対象の発生位置データの更新時刻が、取得した参照時刻以降であるときには、ステップS65へ進む。
ステップS65では、バージョンデータテーブル12を参照し、現在処理対象となっている発生位置データ内の論理オブジェクトIDに対するコミットされた更新があるか否かチェックする。そして、そのようなレコード(バージョンデータ)が存在すれば、ステップS67へ進み、存在しなければステップS68へ進む。
ステップS67では、当該バージョンデータに含まれる更新時刻と現在の参照処理の開始時に取得した時刻(参照時刻)とを比較する。バージョンデータの更新時刻が参照時刻より以前であれば、当該更新結果の参照は可能であるので、ステップS69へ進む。バージョンデータの更新時刻が参照時刻より後であれば、当該更新結果の参照は不可能であるので、ステップS70へ進む。
ステップS69では、当該バージョンデータから「NewPOID」を取出し、ステップS70では、当該バージョンデータから「OldPOID」を取出す。その後、(「確認要否」欄が「要」であったので)、ステップS71へ進み、得られたPOIDに対応するオブジェクトデータ記憶部23内の記憶エリアに、処理対象の発生位置データで指定されているスロットIDをもつスロットが存在するかを確認する。当該スロットIDのスロットが存在するときには、ステップS72へ進み、オブジェクトデータ記憶部23内の当該得られたPOIDに対応する記憶エリアからオブジェクトデータを読み出す。ステップS71において、当該スロットIDをもつスロットが存在しないときには、当該POIDからのオブジェクトデータの読出は行わず、図15のステップS34へ進み、次の処理対象とすべき発生位置データがあるか否かを調べる。
ステップS68では、処理対象の発生位置データ内のLOIDに対応するPOIDをマップデータから得、ステップS71へ進む。
現在行っている参照処理QUERY3の開始時刻(参照時刻Time7)以降に開始され、現在処理対象となっている発生位置データ内の論理オブジェクトIDに対するコミットされた更新があり、当該更新処理に対応するバージョンデータが存在すれば、ステップS70へ進む。現在行っている参照処理QUERY3の開始時刻(参照時刻Time7)より前に、現在処理対象となっている発生位置データ内の論理オブジェクトIDに対するコミットされた更新があり、当該更新処理に対応するバージョンデータが存在すれば、ステップS69へ進む。
上記以外の処理は、(ケースX1)の場合と同様である。
(ケースX3)全てのトランザクション(この例では更新処理TXN2)が終了後に参照処理部4がデータベース20にアクセスする場合。
オブジェクトデータ記憶部23は図9に示した状態であり、索引データ記憶部21は図13に示した状態であり、マップテーブル記憶部22の状態は図14に示した状態である。また、バージョンデータテーブル12には、図12に示したように、更新処理TXN2による更新(更新時刻「Time8」)に関するレコード201が記録されている。この場合、ステップS22では、図13に示した索引データから、発生位置データ101を含む発生位置データの集合を得る。
得られた発生位置データのそれぞれについて、ステップS24〜ステップS33の処理を繰り返す(ステップS23〜ステップS34)。すなわち、ステップS24では、発生位置データ内の「確認要否」欄をチェックする。(ケースX3)の場合、更新処理TXN2がコミットされているので、「確認要否」欄は「要」となっている発生位置データが存在する。例えば、発生位置データ101は、図13からも明らかなように、「確認要否」欄は「要」となっている。この場合には、図16のステップS61へ進む。
ステップS61では、発生位置データ101の「削除挿入」欄が「削」となっているので、ステップS62へ進む。発生位置データ101の更新時刻「Time8」より前に開始された参照処理QUERY3やQUERY4が存在するため、ステップS62からステップS65へ進む。バージョンデータテーブル12を参照すると、バージョンデータテーブル12には、現在行っている参照処理QUERY3の開始時刻(参照時刻Time7)以降に開始されて既にコミットされた更新処理TXN2の更新時刻「Time8」のバージョンデータ201が存在する。当該更新処理の更新対象は論理オブジェクトID「LOID5」のオブジェクトデータである。
現在処理対象の発生位置データ101に含まれる論理オブジェクトIDは「LOID5」、スロットID「SLOT0」である。バージョンデータテーブル12内に、バージョンデータ201が存在し、バージョンデータ内の更新時刻「Time8」が現在行っている参照処理QUERY3の開始時刻(参照時刻Time7)より後であることから、ステップS67からステップS70へ進む。ステップS70では、バージョンデータテーブル12のレコード201からOldPOID「POID5」を取り出す。そして、そして、ステップS71へ進み、オブジェクトデータ記憶部23の物理オブジェクトID「POID5」に対応する記憶エリアに、スロットID「SLOT0」のスロットが存在するかチェックする。この場合、当該スロットは存在するので、ステップS72へ進み、当該記憶エリアから当該オブジェクトデータを読み出す。その後、図15のステップS34へ進む。
上記以外の処理は(ケースX1)の場合と同様である。
(ケースX1)〜(ケースX3)のそれぞれの場合において、以上のステップS24〜ステップS34の処理を実行することにより、ステップS22で得られた発生位置データの集合から、参照結果としてのオブジェクトデータが得られたので、図17のステップS51へ進み、参照処理部4は参照ログテーブル13の参照時刻「Time7」の参照数の数を1つ減ずる。
このとき参照時刻「Time7」の参照数が「0」になったときにはステップS53へ進み、参照数が「1」以上のときには処理は終了する。ステップS53以降の処理は、バージョンデータ管理部5で行われる。
ステップS53では、参照ログテーブル13から参照数が「0」となったレコードを削除する。その後、参照ログテーブル13中で現在最も古い参照時刻を取得し、当該参照時刻と、更新ログテーブル11内の更新時刻とを比較する。更新ログテーブル11内に、当該参照時刻より以前の更新時刻のレコードが存在する場合には、ステップS55へ進み、存在しない場合には処理を終了する。
例えば、図5から、参照時刻「Time7」の参照数が「0」となったとき(時刻「Time9」)、すなわち、参照処理QUERY3,QUERY4が終了したとき、参照ログテーブル11内で最も古い参照時刻は「Time9」である。このとき、更新ログテーブル11は、図8に示す状態である。この場合、ステップS54において、更新時刻「Time8」の更新ログが検知される。そして、ステップS55では、図12のバージョンデータテーブル12から更新時刻「Time8」のバージョンデータ201を削除するとともに、更新ログテーブル11から更新時刻「Time8」の更新ログを削除する。
次に、ステップS56では、バージョンデータ管理部5は、ステップS55で削除したバージョンデータ中の「OldPOID」に対応する、オブジェクトデータ記憶部23内の記憶エリアを解放する(空きの記憶エリアとする)。 例えば、ステップS55において、図12の更新時刻「Time8」のバージョンデータ201が削除された場合、「OldPOID」は「POID5」であるから、ステップS56において、オブジェクトデータ記憶部23内の「POID5」に対応する記憶エリアが解放されて、「POID5」に対応する記憶エリアは空き記憶エリアとなる。 なお、図17では、不要となった更新ログデータとバージョンデータを削除してから(ステップS55)、オブジェクトデータ記憶部23の記憶エリアの開放(ステップS56)をおこなっているが、先に、ステップS56を行った後に、ステップS55の処理を行うようにしてもよい。
次に、図5の参照処理QUERY4の参照処理動作を例にとり、図15〜図17に示すフローチャートを参照して、図1の情報管理装置1の参照処理動作について説明する。なお、ここでは、前述の図5の参照処理QUERY3の参照処理動作と異なる部分について説明する。参照処理QUERY4は、“ディスク”を含むオブジェクトデータを取り出す参照処理である。参照処理QUERY4は、図5に示すように、参照処理QUERY3と同じ時刻に開始され、同じ時刻にコミットされて終了するものとする。
図5からも明らかなように、前述の参照処理QUERY3の場合と同様、参照処理QUERY4の参照要求を受けた時点では、継続中の更新処理は存在しない。オブジェクトデータ記憶部23内のオブジェクトデータは全てコミットされた状態である。また、更新ログテーブル11にはレコードが存在しない。参照ログテーブル13には、図18に示すように、時刻「Time7」に開始された参照処理QUERY1に対応する参照ログのレコードが記録されている。
図15のステップS21で、端末TE1から送信された「“ディスク”を含むオブジェクトデータを取り出す」旨の参照要求メッセージが情報管理装置1の参照処理部4で受け取られると、参照処理部4は、索引データ記憶部21にアクセスして、索引データ中の「語彙」欄の“ディスク”に対応付けて記憶されている発生位置テーブルから発生位置データの集合を得る(ステップS22)。
更新処理TXN2開始前に、参照処理部4がデータベース20にアクセスする場合(ケースX1)は、前述の参照処理QUERY3の場合と同様である。更新処理TXN2が開始されているが、コミットはされていないときに、参照処理部4がデータベース20にアクセスする場合(ケースX2)、ステップS22では、図10に示した索引データ中の発生位置データ102は無視される。「更新時刻」欄が空欄(あるいは「NULL」)となっているからである。
更新処理TXN2による更新がコミットされた後に参照処理部4がデータベース20にアクセスする場合(ケースX3)には、ステップS22では、図13に示した索引データ中の発生位置データ102が得られる。発生位置データ102の「確認要否」欄は「要」、「削除挿入」欄は「挿」であるから、図16のステップS61、ステップS63へ進む。発生位置データ102の「更新時刻」は「Time8」であり、これより前に開始された更新処理QUERY3やQUERY4が存在するから、ステップS65へ進み、発生位置データ102内の論理オブジェクトID「LOID5」に対するバージョンデータ201を取得し、ステップS67へ進む。ステップS67では、当該バージョンデータに含まれる更新時刻「Time8」が、現在の参照処理の開始時に取得した時刻(参照時刻「Time7」)よりも後であるから、ステップS70へ進み、当該バージョンデータ201から「OldPOID」を取出す。その後の処理は、前述同様である。
次に、図5の参照処理QUERY2の参照処理動作を例にとり、図15〜図17に示すフローチャートを参照して、図1の情報管理装置1の参照処理動作について説明する。なお、ここでは、前述の図5の参照処理QUERY3の参照処理動作と異なる部分について説明する。参照処理QUERY2は、“メモリ”を含むオブジェクトデータを取り出す参照処理である。参照処理QUERY2は、図5に示すように、更新処理TXN2終了後(コミット後)の時刻「Time9」に開始する。また、参照処理QUERY2開始時には、参照処理QUERY3、4も処理継続中である。
更新処理TXN2による更新がコミットされた後は、オブジェクトデータ記憶部23は図9に示した状態であり、索引データ記憶部21は図13に示した状態であり、マップテーブル記憶部22の状態は図14に示した状態である。また、バージョンデータテーブル12には、図12に示したように、更新処理TXN2による更新(更新時刻「Time8」)に関するレコード201が記録されている。この場合、ステップS22では、図13に示した索引データから、発生位置データ101を含む発生位置データの集合を得る。
得られた発生位置データのそれぞれについて、ステップS24〜ステップS33の処理を繰り返す(ステップS23〜ステップS34)。すなわち、ステップS24では、発生位置データ内の「確認要否」欄をチェックする。発生位置データ101は、図13からも明らかなように、「確認要否」欄は「要」となっている。この場合には、図16のステップS61へ進む。
ステップS25では、発生位置データ101の「削除挿入」欄が「削」となっているので、ステップS62へ進む。処理対象の発生位置データ101の「更新時刻」欄の更新時刻より前に開始された参照処理がまだ継続中であるから、ステップS65へ進む。
現在処理対象の発生位置データ101に含まれる論理オブジェクトID「LOID5」に対応するバージョンデータ201がバージョンデータテーブル12内に存在し、当該バージョンデータ201の更新時刻「Time8」が参照時刻「Time9」より以前であることからステップS67、S69へと進む。ステップS69では、バージョンデータテーブル12のレコード201からNewPOID「POID21」を取り出す。そして、ステップS71へ進み、得られたPOIDに対応するオブジェクトデータ記憶部23内の記憶エリアに、処理対象の発生位置データ101で指定されているスロットID「SLOT0」をもつスロットが存在するかを確認する。この場合、「POID21」の記憶エリアは図9に示すように、スロットID「SLOT0」のスロットは存在しないので(“メモリ”を削除する更新がコミットされているので)、図15のステップS34へ進む。
以上の更新、参照処理をまとめると、次のようになる。
オブジェクトデータの更新処理では、まず、更新開始時の時刻(更新時刻)を取得する。更新対象のオブジェクトデータの記憶エリアとは別の記憶エリアに当該更新対象のオブジェクトデータの複製を格納し、当該複製の記憶エリア上で更新する。そして、更新確定後(コミット後)には、更新時刻と、更新対象のオブジェクトデータのLOID(論理オブジェクトID)と更新前のオブジェクトデータの記憶エリアのアドレスを表すPOID(物理オブジェクトID)と更新後のオブジェクトデータの記憶エリアのアドレスを表すPOIDとを1組とするバージョンデータを格納しておく。
更新対象のオブジェクトデータが、更新処理開始前に開始され、更新処理終了後(コミット後)も継続している参照処理(第1の参照処理)の参照対象となったときには、当該第1の参照処理には更新前の状態をみせ、更新処理終了後に開始された参照処理(第2の参照処理)の参照対象となったときには更新後の状態をみせるよう、更新対象であったオブジェクトデータを切り替えるために、バージョンデータが参照される。
索引データは、語彙、数値、記号などの索引語と、当該索引語を含む要素データおよび当該要素データをもつオブジェクトデータを特定するための発生位置データ(当該索引語の発生位置をLOIDとスロットIDとで表している)とを対応付けるものである。オブジェクトデータの更新処理により追加(新規追加も含む)あるいは削除される要素データの発生位置データには、当該更新処理の更新時刻も含まれている。また、発生位置データが上記第1の参照処理と上記第2の参照処理とにアクセスされたときには、第1の参照処理には更新前のオブジェクトデータのPOIDを提供し、第2の参照処理には更新後のオブジェクトデータのPOIDを提供するための上記バージョンデータへの参照することとなるが、その結果、所望の語彙を含むスロットが更新前のオブジェクトデータには含まれ、更新後のオブジェクトデータには含まれていない、あるいは、その逆の場合もありえる。そこで、必ず所望の語彙を含むオブジェクトデータが得られるように、得られたPOIDに対応する記憶エリア内に当該発生位置データにて指定されたスロットIDのスロットがあるかの確認を指示するフラグ情報(「確認要否」欄の情報)が当該発生位置データに含まれている。
参照処理の際にはまず、参照処理開始時の時刻(参照時刻)を取得する。索引データを参照して、所望の語彙を含む要素データの発生位置データの集合を求める。 得られた各発生位置データについて、当該発生位置データに含まれる更新時刻が参照時刻より後あるいは「NUll」であるときには更新前のオブジェクトデータが格納されているPOIDが提供され、該発生位置データに含まれる更新時刻が参照時刻より前であるときには更新後のオブジェクトデータが格納されているPOIDが提供される。
得られた発生位置データの「確認要否」欄に「要」が記録された発生位置データについては、得られたPOIDに対応する記憶エリアに当該発生位置データで指定されているスロットIDのスロットが実際に存在するか否かを確認し、存在するときには、当該POIDの記憶エリアからオブジェクトデータを読み出す。
その結果、図5の参照処理Query2は、更新処理TXN2での更新がコミットされた後に開始された参照処理であるから、論理オブジェクトID「LOID5」の更新前の物理オブジェクトID「POID5」のオブジェクトデータ(“メモリ”,“データベース”)は参照できない。また、参照処理Query3やQuery4では、これらの参照要求の発生時前に既にコミットされている更新処理TXN1の更新結果までが参照対象となり、これら参照処理中に発生しコミットされた更新処理TXN2の更新結果は参照対象とならない。
このように、上記実施形態では、更新処理開始前に開始された参照処理はもちろんのこと、その中でも特に、更新処理終了後(コミット後)も継続している参照処理(第1の参照処理)に対しては更新前の状態を提供し、更新処理終了後に開始された参照処理(第2の参照処理)に対しては更新後の状態を提供するといった、更新対象であったオブジェクトデータの切り替えを容易に行うことができる。すなわち、参照処理中にデータベース内の更新がなされたとしても、当該参照処理に対しては、参照要求時のデータベース内の状態を維持することができるのである。
本発明の実施形態に係る情報管理装置の構成例を示した図。 オブジェクトデータ記憶部におけるオブジェクトデータの記憶例を模式的に示した図。 索引データ記憶部に記憶される索引データの記憶例を模式的に示した図。 マップテーブル記憶部に記憶されているマップテーブルの一例を示した図。 更新処理と参照処理の同時実行制御を説明するための図。 更新処理動作を説明するためのフローチャート。 参照ログテーブルの一例を示した図。 更新ログテーブルの一例を示した図。 更新後のオブジェクトデータ記憶部の様子を示した図。 更新後の索引データ記憶部の様子を示した図。 コミット処理動作を説明するためのフローチャート。 バージョンデータテーブルの一例を示した図。 コミット後の索引データ記憶部の様子を示した図。 コミット後のマップテーブルを示した図。 参照処理動作を説明するためのフローチャート。 参照処理動作を説明するためのフローチャート。 参照処理動作を説明するためのフローチャート。 参照処理QUERY3の参照要求を受けた時点における参照ログテーブルを示した図。
符号の説明
1…情報管理装置、2…更新処理部、3…コミット処理部、4…参照処理部、5…バージョンデータ管理部、6…時刻管理部、10…テーブル記憶部、11…更新ログテーブル、12…バージョンデータテーブル、13…参照ログテーブル、20…データベース、21…索引データ記憶部、22…マップテーブル記憶部、23…オブジェクトデータ記憶部、TE1、TE2…端末。

Claims (7)

  1. 識別子の与えられた複数のデータ群のうちの1つである第1のデータ群について、更新前のデータを含む更新前の第1のデータ群と更新後のデータを含む更新後の第1のデータ群とをそれぞれ別の記憶エリアに記憶する第1のステップと、
    複数の索引語と、当該複数の索引語のうちの1つにそれぞれ対応し、当該索引語を含むデータをもつデータ群の識別子がそれぞれ登録された複数のテーブルを記憶手段に記憶する第2のステップと、
    検索要求を受け付ける第3のステップと、
    前記複数のテーブルのうち前記検索要求で指定された索引語に対応するテーブル群を選択する第4のステップと、
    (a)前記第1のデータ群の更新が終了する前に前記第5のステップでテーブル群が選択された場合、更新前後の第1のデータ群のうちの更新前の第1のデータ群にのみ含まれる第1の索引語に対応する第1のテーブルと、更新前後の第1のデータ群のうちの更新後の第1のデータ群にのみ含まれる第2の索引語に対応する第2のテーブルとのうち少なくとも前記第1のテーブルが前記テーブル群に含まれているときに、更新前の第1のデータ群を検索結果として出力し、(b)前記第1のデータ群の更新が終了した後に前記選択ステップでテーブル群が選択された場合、前記検索要求を受け付けた時刻である第1の時刻が前記更新の開始時刻である第2の時刻より前であるときには、前記テーブル群に第1及び第2のテーブルのうち少なくとも第1のテーブルが含まれているときに更新前の第1のデータ群を出力し、前記第1の時刻が前記第2の時刻より後であるときには、前記テーブル群に第1及び第2のテーブルのうち少なくとも第2のテーブルが含まれているときに更新後の第1のデータ群を検索結果として出力する第5のステップと、
    を有することを特徴とする同時実行制御方法。
  2. 識別子の与えられた複数のデータ群のうちの1つである第1のデータ群について、更新前のデータを含む更新前の第1のデータ群と更新後のデータを含む更新後の第1のデータ群とをそれぞれ別の記憶エリアに記憶する第1の記憶手段と、
    複数の索引語と、当該複数の索引語のうちの1つにそれぞれ対応し、当該索引語を含むデータをもつデータ群の識別子がそれぞれ登録された複数のテーブルを記憶する第2の記憶手段と、
    検索要求を受け付ける手段と、
    前記複数のテーブルのうち前記検索要求で指定された索引語に対応するテーブル群を選択する選択手段と、
    (a)前記第1のデータ群の更新が終了する前に前記選択手段でテーブル群が選択された場合、更新前後の第1のデータ群のうちの更新前の第1のデータ群にのみ含まれる第1の索引語に対応する第1のテーブルと、更新前後の第1のデータ群のうちの更新後の第1のデータ群にのみ含まれる第2の索引語に対応する第2のテーブルとのうち少なくとも第1のテーブルが前記テーブル群に含まれているときに、更新前の第1のデータ群を検索結果として出力し、(b)前記第1のデータ群の更新が終了した後に前記選択手段でテーブル群が選択された場合、前記検索要求を受け付けた時刻である第1の時刻が前記更新の開始時刻である第2の時刻より前であるときには、前記テーブル群に第1及び第2のテーブルのうち少なくとも第1のテーブルが含まれているときに更新前の第1のデータ群を出力し、前記第1の時刻が前記第2の時刻より後であるときには、前記テーブル群に第1及び第2のテーブルのうち少なくとも第2のテーブルが含まれているときに更新後の第1のデータ群を検索結果として出力する出力手段と、
    を具備したことを特徴とする同時実行制御装置。
  3. 前記第1のテーブルと前記第2のテーブルには、前記第1のデータ群の更新が終了した後に、前記第2の時刻が前記第1のデータ群に対応する第1の識別子に対応付けて登録されることを特徴とする請求項2記載の同時制御装置。
  4. 前記第1のデータ群の更新が終了した後に、更新前の第1のデータ群が記憶されている記憶エリアに対応する第1の位置情報と、更新後の第1のデータ群が記憶されている記憶エリアに対応する第2の位置情報とを含むバージョンデータを記憶する第3の記憶手段をさらに具備し、
    前記出力手段は、前記第1のデータ群の更新が終了した後に前記選択手段でテーブル群が選択された場合、前記第1の時刻が前記第2の時刻より前であるときには、前記バージョンデータから前記第1の位置情報を取得し、前記第1の時刻が前記第2の時刻より後であるときには前記バージョンデータから前記第2の位置情報を取得することを特徴とする請求項2記載の同時実行制御装置。
  5. 前記第1のデータ群の更新が終了した後、前記第2の時刻より前に受け付けられた各検索要求の検索処理終了の検知時に、前記第1の位置情報に対応する記憶エリアから更新前の第1のデータ群を削除する削除手段をさらに具備し、
    前記第1のテーブルと前記第2のテーブルには、前記第1の識別子とともに、前記第1のデータ群の更新開始時から前記検知時までは、前記記憶手段に記憶された更新後及び更新前の第1のデータ群を確認する必要がある旨を表し、前記検知時後は確認不要を表すフラグ情報がそれぞれ登録されていることを特徴とする請求項4記載の同時実行制御装置。
  6. 前記出力手段は、前記第1のデータ群の更新が終了する前に、前記選択手段で第1及び第2のテーブルのうちの少なくとも1つを含むテーブル群が選択された場合、前記フラグ情報が確認要を表すときには、前記記憶手段に記憶された更新前の第1のデータ群を確認することにより当該更新前の第1のデータ群の出力可否を判断し、
    前記第1のデータ群の更新が終了した後に、前記選択手段で前記第1及び第2のテーブルのうちの少なくとも1つを含むテーブル群が選択された場合、前記フラグ情報が確認要を表すとき、前記第1の時刻が前記第2の時刻より前であるときには前記記憶手段に記憶された更新前の第1のデータ群を確認することにより当該更新前の第1のデータ群の出力可否を判断し、前記第1の時刻が前記第2の時刻より後であるときには前記記憶手段に記憶された更新後の第1のデータ群を確認することにより当該更新後の第1のデータ群の出力可否を判断することを特徴とする請求項5記載の同時実行制御装置。
  7. 前記時刻は、更新が終了する度に「1」だけインクリメントされることを特徴とする請求項2記載の同時実行制御装置。
JP2004044210A 2004-02-20 2004-02-20 同時実行制御方法及び装置 Expired - Fee Related JP4314126B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004044210A JP4314126B2 (ja) 2004-02-20 2004-02-20 同時実行制御方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004044210A JP4314126B2 (ja) 2004-02-20 2004-02-20 同時実行制御方法及び装置

Publications (2)

Publication Number Publication Date
JP2005234945A true JP2005234945A (ja) 2005-09-02
JP4314126B2 JP4314126B2 (ja) 2009-08-12

Family

ID=35017837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004044210A Expired - Fee Related JP4314126B2 (ja) 2004-02-20 2004-02-20 同時実行制御方法及び装置

Country Status (1)

Country Link
JP (1) JP4314126B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009265898A (ja) * 2008-04-24 2009-11-12 Hitachi Ltd データ管理方法、データ管理プログラム、及び、データ管理装置
JP2009282746A (ja) * 2008-05-22 2009-12-03 Fujitsu Ltd データ管理プログラム、データ管理方法、及びデータ管理装置
US8001098B2 (en) 2006-12-26 2011-08-16 International Business Machines Corporation Database update management
WO2011099082A1 (ja) * 2010-02-15 2011-08-18 株式会社 東芝 データベース管理システム
JP2011204161A (ja) * 2010-03-26 2011-10-13 Fujitsu Ltd データベース管理装置およびデータベース管理プログラム
JP2016526218A (ja) * 2013-05-21 2016-09-01 フェイスブック,インク. 更新レイヤを伴うデータベース・シャーディング
US11372883B2 (en) 2016-10-12 2022-06-28 Fujitsu Limited Apparatus for calculating size of processing unit, method for calculating size of processing unit, and non-transitory computer-readable storage medium for storing program

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001098B2 (en) 2006-12-26 2011-08-16 International Business Machines Corporation Database update management
JP2009265898A (ja) * 2008-04-24 2009-11-12 Hitachi Ltd データ管理方法、データ管理プログラム、及び、データ管理装置
JP4585579B2 (ja) * 2008-04-24 2010-11-24 株式会社日立製作所 データ管理方法、データ管理プログラム、及び、データ管理装置
JP2009282746A (ja) * 2008-05-22 2009-12-03 Fujitsu Ltd データ管理プログラム、データ管理方法、及びデータ管理装置
WO2011099082A1 (ja) * 2010-02-15 2011-08-18 株式会社 東芝 データベース管理システム
CN102754083A (zh) * 2010-02-15 2012-10-24 东芝解决方案株式会社 数据库管理系统
JP2011204161A (ja) * 2010-03-26 2011-10-13 Fujitsu Ltd データベース管理装置およびデータベース管理プログラム
JP2016526218A (ja) * 2013-05-21 2016-09-01 フェイスブック,インク. 更新レイヤを伴うデータベース・シャーディング
US10977229B2 (en) 2013-05-21 2021-04-13 Facebook, Inc. Database sharding with update layer
US11372883B2 (en) 2016-10-12 2022-06-28 Fujitsu Limited Apparatus for calculating size of processing unit, method for calculating size of processing unit, and non-transitory computer-readable storage medium for storing program

Also Published As

Publication number Publication date
JP4314126B2 (ja) 2009-08-12

Similar Documents

Publication Publication Date Title
US7716182B2 (en) Version-controlled cached data store
EP0303231B1 (en) Method and device for enabling concurrent access of indexed sequential data files
US4914569A (en) Method for concurrent record access, insertion, deletion and alteration using an index tree
US20160314161A1 (en) Multi-Version Concurrency Control Method in Database and Database System
US20070118547A1 (en) Efficient index versioning in multi-version databases
US20110302195A1 (en) Multi-Versioning Mechanism for Update of Hierarchically Structured Documents Based on Record Storage
US6675180B2 (en) Data updating apparatus that performs quick restoration processing
US7769719B2 (en) File system dump/restore by node numbering
JP4101410B2 (ja) タイムバージョンデータ記憶装置
US7020659B2 (en) System and method for managing bi-directional relationships between objects
KR100289331B1 (ko) 고차원 색인 구조의 동시성 제어 방법
JP4314126B2 (ja) 同時実行制御方法及び装置
US7269589B2 (en) Database managing method and system having data backup function and associated programs
CN117194739B (zh) 基于命中状态查找层次树节点的方法、电子设备和介质
CN111737331B (zh) 一种数据库与对象存储的事务一致性处理方法及系统
US8818990B2 (en) Method, apparatus and computer program for retrieving data
CN110413617B (zh) 一种根据数据量的大小动态调节哈希表组的方法
JP2675958B2 (ja) 情報検索用計算機システム及びその記憶装置の動作方法
JPH096653A (ja) データベースのチェックを行う情報処理装置
JP2980610B2 (ja) トランザクション管理装置
CN114385584A (zh) 一种数据写入方法及一种数据读取方法
CN118069648A (zh) 执行计划的处理方法、装置、设备和介质
JPH05120343A (ja) 索引更新方式
CN117112583A (zh) 实现数据库和缓存数据同步的方法、查询数据的方法
JPS6058492B2 (ja) デ−タベ−ス検索方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090306

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090518

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4314126

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120522

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130522

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130522

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140522

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees