(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-06
(45)【発行日】2023-12-14
(54)【発明の名称】情報処理システム
(51)【国際特許分類】
G06F 16/23 20190101AFI20231207BHJP
G06F 16/27 20190101ALI20231207BHJP
【FI】
G06F16/23
G06F16/27
(21)【出願番号】P 2019099392
(22)【出願日】2019-05-28
【審査請求日】2022-04-14
(73)【特許権者】
【識別番号】301014269
【氏名又は名称】株式会社Murakumo
(74)【代理人】
【識別番号】100145838
【氏名又は名称】畑添 隆人
(74)【代理人】
【識別番号】100103137
【氏名又は名称】稲葉 滋
(72)【発明者】
【氏名】近藤 健一
【審査官】吉田 誠
(56)【参考文献】
【文献】特開2016-103115(JP,A)
【文献】特開2001-101053(JP,A)
【文献】特開2011-086241(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 - 16/958
(57)【特許請求の範囲】
【請求項1】
管理対象のデータを所定単位毎に管理し、管理対象のデータを、該データが削除されていない場合は挿入論理時刻以降、該データが削除されている場合は挿入論理時刻から削除論理時刻までの間、有効なものとして取り扱う第1情報処理システムであって、2以上のストレージ管理系ノードからなる第1情報処理システム
と、
前記第1情報処理システムにより
前記管理対象のデータが所定単位毎に管理されている場合における、当該管理対象のデータの更新を管理する
、トランザクション管理のための第2情報処理システムと
、
を備え、検索要求又は更新要求の発行元となるクライアント系ノードと相互に接続された情報処理システムであって、
前記第2情報処理システムは、
前記管理対象のデータの更新の内容を特定可能な情報を、更新要求情報として取得する取得手段と、
前記更新要求情報に基づき、前記管理対象のデータが管理される前記第1情報処理システムに対して当該更新要求情報を送信する
更新要求管理手段と、
を備え、
前記第1情報処理システムは、
前記第2情報処理システムから送信されてくる前記更新要求情報に基づき、更新をされた前記管理対象のデータを更新後管理対象のデータとして生成し、当該更新後管理対象のデータを有効化し、
前記更新後管理対象のデータが有効になった時間帯の少なくとも一部を特定可能な有効時間帯情報を取得
する第1取得手段と、
前記更新後管理対象のデータが属する前記所定単位を特定可能な所定単位特定情報を取得
する第2取得手段と、
前記有効時間帯情報と、前記所定単位特定情報と、前記更新後管理対象のデータとを対応付けて管理する
データ管理手段と、
前記クライアント系ノードから送信された検索要求情報を、トランザクション管理のための前記第2情報処理システムを介することなく受信し、当該検索要求情報から、どのような内容の検索を行うかを示す検索内容情報を取得する検索内容情報取得手段と、
前記管理対象のデータが有効であった前記時間帯のうち、所定の時刻を特定可能な時刻特定情報を取得する第3取得手段と、
前記データ管理手段により管理される前記有効時間帯情報、及び前記時刻特定情報に基づき、前記時刻特定情報により特定される時刻に有効であった前記管理対象のデータを、前記検索内容情報に係る検索対象の候補のデータとして特定する特定手段と、
前記検索内容情報から認識された検索の条件を満たすデータを、前記特定手段により特定された前記検索対象の候補のデータから検索する検索手段と、
前記検索手段による検索結果を、前記クライアント系ノードに対して提示する検索結果提示手段と、
を備える、
情報処理システム。
【請求項2】
前記第1情報処理システムは、2以上に分割された前記管理対象のデータの、分割された夫々の部分を記憶する前記2以上のストレージ管理系ノードからなる、
請求項1に記載の情報処理システム。
【請求項3】
前記第2情報処理システムの前記
更新要求管理手段は、
後の時点に取得された他の更新要求情報が、先の時点に取得された更新要求情報により更新される
こととなる管理対象のデータ
を更新
しようとするものであるか否か
を判定し、後の時点に取得された他の更新要求情報が、先の時点に取得された更新要求情報により更新されることとなる管理対象のデータを更新しようとするものであると判定された場合、前記管理対象のデータが管理される前記第1情報処理システムに対して当該他の更新要求情報を送信
しない、
請求項1又は2に記載の情報処理システム。
【請求項4】
前記
データ管理手段は、
前記管理対象のデータが有効になった時点を特定可能な第1の1情報と、
前記管理対象のデータが無効になった時点を特定可能な第1の2情報と、
を含む情報を前記
有効時間帯情報として、
前記
所定単位特定情報と、前記管理対象のデータとに対応付けて管理する、
請求項1から3のいずれか一項に記載の情報処理システム。
【請求項5】
前記第1の2情報は、前記管理対象のデータが未だ無効になっていない旨を示す情報を含む、
請求項4に記載の情報処理システム。
【請求項6】
前記
データ管理手段は、
管理対象の1以上の前記データのうち、有効な1以上のデータを第1データ群として、無効な1以上のデータを第2データ群として夫々管理し、
前記第1データ群に含まれる管理対象のデータついては、
前記管理対象のデータが有効になった時点を特定可能な第1の1情報を前記
有効時間帯情報として、
前記
所定単位特定情報と、前記管理対象のデータとを対応付けて管理し、
前記第2データ群に含まれる管理対象のデータついては、
前記第1の1情報と、
前記管理対象のデータが無効になった時点を特定可能な第1の2情報と、
を含む情報を前記
有効時間帯情報として、
前記
所定単位特定情報と、前記管理対象のデータとを対応付けて管理する、
請求項1から3のいずれか一項に記載の情報処理システム。
【請求項7】
前記
データ管理手段は、
前記
所定単位特定情報と、前記管理対象のデータ及び前記
有効時間帯情報を含む情報とを対応付けて管理する、
請求項1から3のいずれか一項に記載の情報処理システム。
【請求項8】
前記管理対象のデータは、前記
有効時間帯情報及び前記
所定単位特定情報を含むファイル名のファイルとして所定の媒体に記憶されており、
前記
データ管理手段は、前記ファイル名を管理することで、前記
有効時間帯情報と、前記
所定単位特定情報と、前記管理対象のデータとを対応付けて管理する、
請求項1から3のいずれか一項に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システムに関する。
【背景技術】
【0002】
従来、情報処理装置において、大量のデータの蓄積、検索、又は更新等を行う場合、データベース(以下、「DB」と呼ぶことある)が用いられる。
ここで、データベースに対して同時に複数の処理を行うため、複数データベース間のデータの整合性がとれている状態で、過去のデータを取得可能とする技術が提案されている(例えば、特許文献1参照)。
【0003】
特許文献1に記載の技術を含む従来技術では、データベースに付随するジャーナルと呼ばれる履歴に更新の情報を記録し、管理することが行われていた。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に記載の技術を含む従来技術では、利用者が所定の過去の時刻のデータベースを取得する場合、所定の過去の時刻より更に前の時刻のデータベースに対し、ジャーナルに記録された過去の更新の情報を適用することが必要であった。このような方法は、利用者が所定の過去の時刻のデータベースを取得する度に、多くの処理が必要となることがあった。
【0006】
また、複数の情報処理システムからなるデータベース管理システムを構築して処理能力を向上させる場合、所定の過去の時刻のデータベースを取得することがある。しかしながら、上述のように、特許文献1に記載の技術を含む従来技術では、所定の過去の時刻のデータベースを取得する際に多くの処理が必要となる。このため、複数の情報処理システムを活用してデータベースに対する処理能力を向上させることが十分に達成されないことがあった。
【0007】
本発明は、所定の過去の時刻のデータを取得する際の処理コストを低減し、且つ、複数の情報処理システムを活用してデータベースに対する処理能力を向上させることを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明の一態様の情報処理システムは、
データを所定単位毎に管理する情報処理システムであって、
管理対象のデータが有効になった時間帯の少なくとも一部を特定可能な第1情報を取得する第1取得手段と、
前記管理対象のデータが属する前記所定単位を特定可能な第2情報を取得する第2取得手段と、
前記第1情報と、前記第2情報と、前記管理対象のデータとを対応付けて管理する管理手段と、
を備える。
【発明の効果】
【0009】
本発明によれば、所定の過去の時刻のデータを取得する際の処理コストを低減し、且つ、複数の情報処理システムを活用してデータベースに対する処理能力を向上させることができる。
【図面の簡単な説明】
【0010】
【
図1】本発明の情報処理システムの第1実施形態に係るデータベース管理システムの構成を示すブロック図である。
【
図2】
図1のデータベース管理システムにおける情報処理の流れの例を示す図である。
【
図3】
図1のデータベース管理システムのうちストレージ管理系ノードのハードウェア構成の一例を示すブロック図である。
【
図4】
図1のデータベース管理システムのうちストレージ管理系ノード、トランザクション管理系ノード、及びクライアント系ノードの機能的構成例の一例を示す機能ブロック図である。
【
図5】
図1のストレージ管理系ノードで管理されるデータベースに含まれる、論理時刻の夫々における検索対象の候補のデータの夫々の例を示す図である。
【
図6】第1実施形態における
図1のストレージ管理系ノードで管理されるデータベースに含まれる、管理対象のデータの例を示す図である。
【
図7】第1実施形態における
図4の機能的構成を有するストレージ管理系ノードにより実行される、管理対象のデータの管理の流れの一例を説明するフローチャートである。
【
図8】第2実施形態における
図1のストレージ管理系ノードで管理されるデータベースに含まれる、管理対象のデータの例を示す図である。
【
図9】第2実施形態における
図4の機能的構成を有するストレージ管理系ノードにより実行される、管理対象のデータの管理の流れの例を説明するフローチャートである。
【
図10】第3実施形態における
図1のストレージ管理系ノードで管理されるデータベースに含まれる、検索対象の候補のデータの例を示す図である。
【
図11】第3実施形態における
図1のストレージ管理系ノードで管理されるデータベースに含まれる、管理対象のデータの例を示す図である。
【
図12】第3実施形態における
図4の機能的構成を有するストレージ管理系ノードにより実行される、管理対象のデータの管理の流れの例を説明するフローチャートである。
【
図13】第4実施形態における
図1のストレージ管理系ノードで管理されるファイルにおける、ファイル名と内容の例を示す図である。
【
図14】第4実施形態における
図1のストレージ管理系ノードで管理されるデータベースのファイルのファイル名を、論理時刻と対応づけたファイル名として管理する例を示す図である。
【
図15】第4実施形態における
図4の機能的構成を有するストレージ管理系ノードにより実行される、管理対象データの管理の流れの一例を説明するフローチャートである。
【発明を実施するための形態】
【0011】
以下、図面を参照して、本発明の実施形態として、第1実施形態乃至第4実施形態の夫々についてその順番に説明する。
【0012】
[第1実施形態]
まず、本発明が適用される情報処理システムの第1実施形態として、大量のデータの蓄積、検索、及び更新等を行うことができる、データベース管理システムについて説明する。
【0013】
ここで、「データベース」とは、蓄積、検索、更新等に便利なように整理された情報(データ)の集まりをいう。
【0014】
説明の簡単のため、第1実施形態(及び後述の第2実施形態)では、データベースとして、例えば、RDBMS(Relational DataBase Management System)により管理されるリレーショナル形式のデータベースが採用されているものとする。
ここで、RDBMSは、リレーショナル形式のデータベースを管理するデータベース管理システムである。また、リレーショナル形式のデータベースは、簡単に言うならば、列と行からなる2次元の表の形式としてとらえることが可能なデータベースである。
即ち、第1実施形態(及び後述の第2実施形態)のデータベースは、例えば、人物の情報をデータとして管理するデータベースにおいて、列の夫々が「名前」、「性別」、「年齢」等の項目に対応し、複数の行の夫々は、複数の人物の夫々に対応する。即ち、この例のデータベースは、管理対象のデータとして人物の各属性を示す各データ(各項目)を含むデータ群を採用しており、その管理対象のデータを行の単位(人物単位)毎に管理する。なお、データベースの列の夫々が示す「名前」、「性別」、「年齢」といった項目(データの属性)のことを「スキーマ」と呼ぶ。
【0015】
また、第1実施形態(及び後述の第2実施形態乃至第4実施形態)のデータベースにおける「蓄積」とは、利用者の希望に応じて検索や更新等を行える状態にするため、又は単に保管するため、管理対象のデータをデータベースの少なくとも一部として記憶することを言う。
また、第1実施形態(及び後述の第2実施形態乃至第4実施形態)のデータベースにおける「検索」とは、データベースから、所定のデータを抽出することを言う。ここで、所定のデータには、データベースの一部の生データの他、1以上の生データを加工等したデータも含まれる。なお、以下、データベースの検索に係る処理を、「検索処理」と呼ぶ。
また、第1実施形態(及び後述の第2実施形態乃至第4実施形態)のデータベースにおける「更新」とは、データベースの少なくとも一部として、新たなデータを追加すること、既にデータベースの少なくとも一部として記憶されているデータを書き換えること、既にデータベースの少なくとも一部として記憶されているデータを削除することをいう。即ち、データベースに蓄積されたデータを変更することを更新という。なお、データベースの更新に係る処理を、以下、「トランザクション処理」又は「更新処理」と呼ぶ。
【0016】
例えば、人物に関するデータベースであって、スキーマとして「名前」、「性別」、「年齢」を持つデータベースにおける、蓄積と検索と更新との例について説明する。
この例のデータベースは、複数の人物の夫々に対応する行(所定の単位)毎に、各スキーマのデータの組が蓄積されて、構成される。
また、データベースの利用者は、以下のようなデータを検索することができる。具体的には例えば、特定の人物の「名前」、「性別」、「年齢」の夫々のデータの組を検索(抽出)することができる。また例えば、データベースの利用者は、複数の人物のうち、性別が男性である人物のリストを検索(抽出)することができる。また例えば、データベースの利用者は、複数の人物のデータのうち、性別が男性である人物の年齢の平均値を検索(抽出)することができる。
また、データベースの利用者は、新たな人物のデータを追加する更新を行ったり、人物のデータのうち年齢を変更する更新を行ったり、人物のデータを削除する更新を行ったりすることができる。
【0017】
第1実施形態(及び後述の第2実施形態乃至第4実施形態)のデータベース管理システムは、複数種類の機能(例えば、蓄積、検索、更新等)毎に、複数のノードにより構成される。データベース管理システムを構成する複数のノードが連携することにより、データベースの処理の能力を向上することができる。更に言えば、複数のノードの数に対して、効率的に処理の能力を向上することができる。
【0018】
ここで、「ノード」とは、CPU(Central Processing Unit)や、RAM(Random Access Memory)といったハードウェアと、OS(Operating System)といったソフトウェアが協働する1組の情報処理システムである。即ち例えば、ノードは、1つの情報処理装置である。上述したように、複数のノードは、連携することができる。換言すれば、複数の情報処理装置が連携する場合に、当該複数の情報処理装置の夫々を、「ノード」の夫々と呼ぶ。ノードの夫々の具体的な構成の例は、後述する。
【0019】
また、「スケーラビリティ」とは、ハードウェア資源を所定倍にしたときに、ソフトウェアも含めてシステムの全体の性能が何倍になるかという概念である。即ち、ハードウェア資源を5倍にした際に、性能が5倍になった場合スケーラビリティが高く、性能が2倍になった場合スケーラビリティが低いと言える。
なお、ハードウェア資源を所定倍にする方法は、スケールアップとスケールアウトの2つが存在する。
【0020】
「スケールアップ」とは、データベース管理システムを構成する複数のノードの夫々を、より高性能なノードの夫々で置き換えることをいう。具体的には例えば、ノードのCPUとして、より性能の高いCPUを採用することが、スケールアップの一例である。通常、スケールアップがなされた場合、スケーラビリティは高い。しかしながら、CPUの開発技術によって、CPUの性能の向上は、頭打ちとなる。更に言えば、高性能なCPUは、性能に対するコストが高い。即ち、スケールアップは、全体的な性能の向上に対するコストパフォーマンスを悪化させることがある。
【0021】
「スケールアウト」とは、データベース管理システムを構成するノードの数を増やすことをいう。具体的には例えば、データベース管理システムを構成するノードの数を所定倍の数とすることがスケールアウトの一例である。スケールアウトがなされた場合、スケーラビリティは低下することがある。具体的には例えば、スケールアウトにより数が増加したノードの連携に係る処理により、増加したノードの数に対して、性能が向上しないことがある。
【0022】
第1実施形態(及び後述の第2実施形態乃至第4実施形態)のデータベース管理システムは、当該データベース管理システムを構成する複数のノードの夫々の連携に係る処理を効率的に行うことで、整合性を保ったまま、スケーラビリティを向上させることができる。即ち、第1実施形態(及び後述の第2実施形態乃至第4実施形態)のデータベース管理システムは、スケールアウトにおいてもスケーラビリティの高い、分散されたデータベース管理システムである。
【0023】
ここで、「分散されたデータベース管理システム」とは、複数のノードの夫々にデータが蓄積されたり、複数のノードにより同時に検索処理がされたり、複数のノードにより同時に更新処理がされる、データベース管理システムである。
即ち例えば、分割されたデータベースの夫々が複数のノードの夫々に記憶された場合、当該データベースは、分散されたデータベースといえる。なお、データベースが複数のノードに記憶される場合、複数のノードの夫々は、分割されたデータベースのみならず、全部、又は一部が共通なデータベースを記憶してもよい。
【0024】
なお、「分散されたデータベース管理システム」は、データの蓄積のみならず、検索処理や更新処理を管理するノードも複数存在し、検索処理の要望や更新処理の要望が分散されていてもよい。即ち、後述するように、複数のノードに分散されたデータベースに対し、複数のノードの要望に基づき、更新処理や検索処理を実行することができる。なお、データベース管理システムを構成する他のノードに対して、検索処理を要求することを「検索要求」、更新処理を要求することを「更新要求」と呼ぶ。
【0025】
上述のように、分散されたデータベース管理システムにおいてスケールアウトされた場合、更新処理における複数のノードの連携に係る処理により、スケーラビリティが低下することがある。また、分散されたデータベース管理システムにおいて検索処理が行われる場合、複数回の検索処理が行われたとき、複数回の検索処理の間で同一のデータベースに基づかず、例え同一の検索内容で検索された場合であっても同じ結果とならないといった不都合が生じることがある。
【0026】
詳細は後述するが、第1実施形態(及び後述の第2実施形態乃至第4実施形態)のデータベース管理システムは、論理時刻を管理することにより、スケールアウトした場合における、トランザクション処理や検索処理に係る、整合性の実現や、処理コストの削減、利便性の向上ができる。
【0027】
図1は、本発明の情報処理システムの第1実施形態に係るデータベース管理システムの構成を示すブロック図である。
【0028】
図1に示すデータベース管理システムは、ストレージ管理系ノード群G1と、クライアント系ノード群G2と、トランザクション管理系ノード群G3とが、インターネット等の所定のネットワークNWを介して相互に接続されることで構成されている。
ストレージ管理系ノード群G1は、N台(Nは1以上の任意の整数値)のストレージ管理系ノード1-1乃至1-Nにより構成される。同様に、クライアント系ノード群G2は、M台(Mは1以上の任意の整数値)のクライアント系ノード2-1乃至2-Mにより構成される。また、トランザクション管理系ノード群G3は、L台(Lは1以上の任意の整数値)のトランザクション管理系ノード3-1乃至3-Lにより構成される。
【0029】
なお、ストレージ管理系ノード1-1乃至1-Nの夫々を個々に区別する必要が無い場合、これらをまとめて「ストレージ管理系ノード1」と呼ぶ。また、クライアント系ノード2-1乃至2-Mの夫々を個々に区別する必要が無い場合、これらをまとめて「クライアント系ノード2」と呼ぶ。また、トランザクション管理系ノード3-1乃至3-Lの夫々を個々に区別する必要が無い場合、これらをまとめて「トランザクション管理系ノード3」と呼ぶ。
【0030】
図2は、
図1のデータベース管理システムにおける情報処理の流れの例を示す図である。
【0031】
ストレージ管理系ノード1は、データベースを記憶し、外部からの要求に基づいて検索処理や更新処理を行う。
【0032】
ストレージ管理系ノード1は、クライアント系ノード2から検索要求を受信すると、その検索要求から検索の条件を認識し、その条件を満たすデータを検索して、返信する。例えば、検索要求の中身は、一致検索のような単純な場合や、SQLで表現されるような複雑な場合がある。
なお、「SQL」とは、データベース管理システムにおいて、データの操作や定義を行うための言語である。
【0033】
また、ストレージ管理系ノード1は、トランザクション管理系ノード3から更新要求を受信すると、その更新要求の内容に従って保持しているデータの更新を行う。
【0034】
クライアント系ノード2は、検索要求や更新要求の発行元となるノードである。即ち、「クライアント系」とは、検索要求や更新要求の発行元を抽象的に指し示す言葉である。具体的には例えば、クライアント系とは、アプリケーションプログラムや、SQL解釈系があげられる。
ここで、「SQL解釈系」とは、更に別の系(アプリケーションプログラムや人間)からSQLを受け付け、それを解釈し、ストレージ管理系ノード群G1やトランザクション管理系ノード群G3を構成するノードの夫々が理解できる形に変換するプログラム等をいう。
【0035】
即ち、クライアント系ノード2は、例えば、
図2の「検索要求」の矢印に示すように、ストレージ管理系ノード1に検索要求を送信する。また、クライアント系ノード2は、例えば、
図2の「更新要求」の矢印に示すように、トランザクション管理系ノード3に更新要求を送信する。
【0036】
トランザクション管理系ノード3は、クライアント系ノード2から、更新要求を受信すると、以下のように処理を行う。即ち、トランザクション管理系ノード3は、仮にその更新要求に従ってデータベースの更新を行ったとして、整合性が崩れるかどうかを判定する。整合性が崩れる場合、又はその可能性が十分に高い場合、トランザクション管理系ノード3は、その更新要求を破棄する。整合性が崩れないことが確実である場合、トランザクション管理系ノード3は、ストレージ管理系ノード1に更新要求を送信する。
【0037】
ここでいう「整合性」とは、トランザクション処理の信頼性を保つために満たすべき性質の1つである。更に言えば、「整合性」は、データベースが満たすべきACID特性(Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性))を含む広義の概念であってよい。
具体的には例えば、整合性として、以下のことが求められる。ACID特性のAである、「『一部の操作は実行され、残りの操作は実行されない』ということが起こらない」ことが求められる。また例えば、強い整合性として、「完了したトランザクションの内容はすぐに検索できる」こと等が求められる。即ち、トランザクションが完了した場合、トランザクションの内容が反映されたデータベースから検索できること等が求められる。また例えば、ACID特性のIとして、「トランザクション中に行われる操作の過程が他の操作から隠蔽される」こと等が求められる。即ち、トランザクション中において、整合性がない時点(過程)は、検索が不可能であることが求められる。
【0038】
即ち、トランザクション管理系ノード3は、例えば、
図2の「更新要求」の矢印に示すように、クライアント系ノード2から送信されてきた更新要求を受信する。上述のように、整合性が崩れないと判定された場合、トランザクション管理系ノード3は、例えば、
図2の「更新要求(整合性を崩さないもののみ)」の矢印に示すように、ストレージ管理系ノード1に更新要求を送信する。なお、詳細は後述するが、トランザクション管理系ノード3は、整合性が崩れるか否かを判定する場合や、SI(Snapshot Isolation)の方式による更新要求の管理をする場合、検索要求を送信することができる。
【0039】
図3は、
図1のデータベース管理システムのうちストレージ管理系ノードのハードウェア構成の一例を示すブロック図である。
【0040】
ストレージ管理系ノード1は、CPU11と、ROM(Read Only Memory)12と、RAM13と、バス14と、入出力インターフェース15と、出力部16と、入力部17と、記憶部18と、通信部19と、ドライブ20と、を備えている。
【0041】
CPU11は、ROM12に記録されているプログラム、又は、記憶部18からRAM13にロードされたプログラムに従って各種の処理を実行する。
RAM13には、CPU11が各種の処理を実行する上において必要なデータ等も適宜記憶される。
【0042】
CPU11、ROM12及びRAM13は、バス14を介して相互に接続されている。このバス14にはまた、入出力インターフェース15も接続されている。入出力インターフェース15には、出力部16、入力部17、記憶部18、通信部19及びドライブ20が接続されている。
【0043】
出力部16は、ディスプレイやスピーカ等で構成され、各種情報を画像や音声として出力する。
入力部17は、キーボードやマウス等で構成され、各種情報を入力する。
【0044】
記憶部18は、ハードディスクやDRAM(Dynamic Random Access Memory)等で構成され、各種データを記憶する。
通信部19は、インターネットを含むネットワークNWを介して他の装置(
図1の例ではクライアント系ノード2やトランザクション管理系ノード3)との間で通信を行う。
【0045】
ドライブ20には、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等よりなる、リムーバブルメディア31が適宜装着される。ドライブ20によってリムーバブルメディア31から読み出されたプログラムは、必要に応じて記憶部18にインストールされる。
また、リムーバブルメディア31は、記憶部18に記憶されている各種データも、記憶部18と同様に記憶することができる。
【0046】
なお、図示はしないが、
図1のデータベース管理システムのクライアント系ノード2、及びトランザクション管理系ノード3は、
図3に示すハードウェア構成と基本的に同様の構成を有している。
【0047】
図4は、
図1のデータベース管理システムのうちストレージ管理系ノード、トランザクション管理系ノード、及びクライアント系ノードの機能的構成例の一例を示す機能ブロック図である。
【0048】
図4以降の説明において、説明を簡単にするため、ストレージ管理系ノード1、クライアント系ノード2、及びトランザクション管理系ノード3の夫々は、1台ずつであるものとして説明する。
【0049】
なお、第1実施形態(及び後述の第2実施形態乃至第4実施形態)において、ストレージ管理系ノード1がデータベースを「蓄積」や「検索」や「更新」等に便利なように整理して記憶することを、まとめて、ストレージ管理系ノード1がデータベースを「管理」すると呼ぶ。即ち、ストレージ管理系ノード1は、管理対象のデータをデータベースとして管理する。
また、データベースは、上述のように、リレーション(表)の形式で管理されるものとして説明する。即ち、管理対象のデータは、リレーションにおける行毎に、管理される。
【0050】
まず、
図4を用いて、ストレージ管理系ノード1、クライアント系ノード2、及びトランザクション管理系ノード3により、更新処理が行われる場合機能する機能ブロックについて説明する。
【0051】
なお、
図4の説明において、ストレージ管理系ノード1は、人物に関するデータベースを管理しており、当該データベースは、スキーマとして「名前」、「性別」、「年齢」を持つものとする。また、更新処理を行う要求、即ち更新要求として、データベースの2行目に蓄積されている、名前が「ABCD」、性別が「男性」、年齢が「25歳」といった人物のデータを、名前と性別とは変更がなく、年齢が「26歳」であるといった人物のデータに更新させるという内容(以下、「更新内容」と呼ぶ)の要求が採用されたものとして説明する。また、更新処理は、後述する「論理時刻=5」の時刻に行われたものとして説明する。
【0052】
更新処理が実行される場合には、ストレージ管理系ノード1のCPU11において、更新要求情報取得部111と、論理時刻情報取得部112と、行番号情報取得部113と、対象データ管理部114と、が機能する。また、クライアント系ノード2のCPU212において、更新要求管理部221が機能する。また、トランザクション管理系ノード3のCPU312において、更新要求情報取得部321と、更新要求整合性管理部322と、が機能する。
【0053】
まず、クライアント系ノード2の更新要求管理部221は、データベースの更新を要求する情報であって、その更新の内容を含む情報(以下、「更新要求情報」と呼ぶ)をトランザクション管理系ノード3に送信することで、更新要求を管理する。ここで、「更新要求」とは、上述したように、データベース管理システムを構成するストレージ管理系ノード1により管理されるデータベースに対する、更新処理の要求である。
具体的には例えば、更新要求管理部221は、図示せぬアプリケーションプログラム等の要求に基づき、更新要求情報として、データベースに要求する更新内容を含む情報を取得又は生成し、更新要求情報をトランザクション管理系ノード3に通信部211を介して送信する。即ち、ここでいう更新要求情報は、例えば「データベースの2行目に蓄積されている、名前が「ABCD」、性別が「男性」、年齢が「25歳」といった人物のデータを、名前と性別とは変更がなく、年齢が「26歳」であるといった人物のデータに更新する」という要求の情報である。
【0054】
トランザクション管理系ノード3の更新要求情報取得部321は、クライアント系ノード2から送信されてきた更新要求情報を取得する。
【0055】
更新要求整合性管理部322は、更新要求情報取得部321で取得された更新要求情報に基づき、管理対象のデータが管理されるストレージ管理系ノード1に対して更新要求情報を送信することで、当該更新要求を管理する。
即ち、更新要求整合性管理部322は、更新要求情報に基づき、ストレージ管理系ノード1に対して更新要求情報を送信するか否かを管理することで、更新の要求を管理する。
【0056】
具体的には例えば、更新要求整合性管理部322は、当該更新要求情報をストレージ管理系ノード1に対して送信することで、管理対象のデータが含まれるデータベースの更新を行った場合に、当該データベースの整合性が崩れるか否かを判定する。
また例えば、まず、更新要求整合性管理部322は、過去の更新要求情報等の全部又は一部を保持して管理する。次に、更新要求整合性管理部322は、新たな更新要求情報を、過去の更新要求情報等と照合する。このとき、更新要求整合性管理部322は、新たな更新要求情報により更新される管理対象のデータが、過去の更新要求情報等により更新されたか否かに基づいて、ストレージ管理系ノード1に格納されたデータベースの整合性が崩れるか否かを判定する。
もし、当該更新要求情報に基づいてデータベースの更新を行った場合に、整合性が維持されない、又はその可能性が十分に高いと判定された場合、更新要求整合性管理部322は、その更新の要求を破棄する。整合性が維持されることが確実である場合、トランザクション管理系ノード3は、ストレージ管理系ノード1に更新要求を送信する。
【0057】
つまり、更新要求整合性管理部322は、データベースの整合性が崩れるか否かを判定して、整合性が維持されることが確実である場合にのみ、ストレージ管理系ノード1に更新要求情報を送信する。これにより、ストレージ管理系ノード1により管理されるデータベースは、更新処理に係る整合性が維持される。
【0058】
なお、図示はしないが、更新要求整合性管理部322は、データベースの整合性が崩れるか否かを判定する際に、後述する検索処理を行うことができる。
なお、更新要求整合性管理部322は、更新の要求を破棄する旨やストレージ管理系ノード1に送信する旨を、クライアント系ノード2の更新要求管理部221に通知することができる。更新要求整合性管理部322により更新の要求を破棄された場合、クライアント系ノード2の更新要求管理部221は、更新の要求を再度発行することができる。
【0059】
ストレージ管理系ノード1の更新要求情報取得部111は、トランザクション管理系ノード3から送信されてきた更新要求情報を取得する。
【0060】
論理時刻情報取得部112は、管理対象のデータが有効になった時間帯の少なくとも一部を特定可能な情報を、論理時刻情報として取得する。
ここで、論理時刻とは、管理対象のデータを管理する際における、更新履歴を記録するための時刻である。論理時刻は、データベースの更新毎に一意に付与された、整数であってよい。具体的には例えば、1回目の更新は「論理時刻=1」、2回目の更新は「論理時刻=2」といった数の形態とすることができる。また例えば、論理時刻は、通常の時刻と同様に、「年」「月」「日」「時」「分」「秒」等の組み合わせで示される、いわゆる通常の時刻の形態とすることができる。
即ち、論理時刻は、データベースの管理に使われ、一方向に変化する識別子である。
図4の第1実施形態の説明では、論理時刻は、データベースの更新毎に付与された整数値として説明する。また、「論理時刻=5」において、更新処理が行われるものとして説明する。
【0061】
論理時刻情報取得部112は、管理対象のデータが更新処理により有効になった時点を示す挿入論理時刻xt_insと、管理対象のデータが無効になった時点を示す削除論理時刻xt_delとを含む情報を論理時刻情報として取得する。
【0062】
具体的には例えば、更新処理として、名前が「ABCD」、性別が「男性」、年齢が「25歳」といった人物のデータを、名前と性別とは変更がなく、年齢が「26歳」であると更新する処理が採用されている場合を例として説明する。即ち、この例の更新処理において、「ABCD」、「男性」、「26歳」のデータの組がデータベースに挿入される。また、「ABCD」、「男性」、「25歳」のデータの組がデータベースから削除される。
この場合、論理時刻情報取得部112は、この更新処理が行われる「論理時刻=5」を、「ABCD」、「男性」、「26歳」のデータの組の挿入論理時刻xt_insとして、取得する。また、「ABCD」、「男性」、「26歳」のデータの組の削除論理時刻xt_delは、未定である。そこで、例えば、論理時刻情報取得部112は、削除論理時刻xt_delが未定である旨を、∞という削除論理時刻xt_delとして取得することができる。
また、論理時刻情報取得部112は、この更新処理が行われる「論理時刻=5」を、「ABCD」、「男性」、「25歳」のデータの組の削除論理時刻xt_delとして、取得する。「ABCD」、「男性」、「25歳」のデータの組の挿入論理時刻xt_insは、すでにデータベースに蓄積されているデータから取得することができる。
【0063】
行番号情報取得部113は、管理対象のデータが属する行を特定可能な行番号情報を取得する。即ち、行番号情報取得部113は、更新処理を行うデータの組が、データベースにおけるいずれの行のデータであるのかを特定可能な行番号情報を取得する。具体的には例えば、行番号情報取得部113は、更新要求情報から、「ABCD」、「男性」、「26歳」のデータの組が、2行目である旨を行番号情報として取得する。
【0064】
対象データ管理部114は、論理時刻情報と、行番号情報と、管理対象のデータとを対応付けてデータベース150に蓄積して管理する。
【0065】
ここで、
図4を見ると、データベース150の一領域には、論理時刻t1乃至tnの夫々に対応するデータベース150-1乃至150-nの夫々が設定されている。このデータベース150-1乃至150-nの夫々には、1乃至nの論理時刻の夫々に対応するデータの内容が格納されている。
【0066】
即ち、データベース150は、論理時刻情報と、行番号情報と、管理対象のデータとを対応付けてデータベース150に格納するため、データベース150-1乃至150-nに対応する管理対象のデータを全て含んでいる。論理時刻情報を含む情報を格納されているデータベース150は、所定の処理を施されることで、論理時刻t1におけるデータベース150-1に含まれる情報が抽出されることが可能なデータベースである。
なお、挿入論理時刻xt_ins及び削除論理時刻xt_delが、具体的にどのようにデータベース150に蓄積されるのかの詳細は
図5及び
図6を用いて後述する。
【0067】
以上、ストレージ管理系ノード1、クライアント系ノード2、及びトランザクション管理系ノード3により、更新処理が行われる場合に機能する機能ブロックについて説明した。
次に、ストレージ管理系ノード1、及びクライアント系ノード2により、検索処理が行われる場合に機能する機能ブロックについて説明する。
【0068】
ここで、以下の説明を容易なものとすべく、検索処理は、その前提として上述の更新処理がなされた後のデータベース150に対して行われる例を用いるものとする。この例では、検索対象とする論理時刻は、上述の更新処理が行われる以前の論理時刻である「論理時刻=4」であるものとする。つまり、これから説明する検索処理の例は、図示せぬユーザからの「論理時刻=4」におけるデータベース150-4の内容に対して検索処理が実行されるものとする。
まとめると、検索処理を行う要求、即ち検索要求として、「「論理時刻=4」におけるデータベースの2行目に蓄積されている、人物のデータを抽出する」という内容(以下、「検索内容」と呼ぶ)の要求がなされる例を用いて説明する。
【0069】
検索処理が実行される場合には、ストレージ管理系ノード1のCPU11において、検索対象論理時刻情報取得部121と、検索内容情報取得部122と、検索管理部123と、検索結果提示部124と、が機能する。また、クライアント系ノード2のCPU212において、検索要求管理部222が機能する。
【0070】
クライアント系ノード2の検索要求管理部222は、データベースからデータの検索を要求する情報であって、その検索の内容を含む情報(以下、「検索要求情報」と呼ぶ)をストレージ管理系ノード1に送信することで、検索要求を管理する。
具体的には例えば、検索要求管理部222は、図示せぬアプリケーションプログラム等の要求に基づき、検索要求情報として、データベースに要求する検索内容を含む情報を取得又は生成し、検索要求情報をストレージ管理系ノード1に送信する。即ち、ここでいう検索要求情報は、例えば「「論理時刻=4」におけるデータベースの2行目に蓄積されている、人物のデータを抽出する」という要求の情報である。
【0071】
ストレージ管理系ノード1の検索対象論理時刻情報取得部121は、クライアント系ノード2から送信されてきた検索要求情報に含まれる論理時刻を、検索対象論理時刻st(stは1乃至nのうちの任意の整数値であり、本例では「4」)として取得する。
【0072】
検索内容情報取得部122は、検索要求情報から、どのような内容の検索を行うかを示す情報(以下、「検索内容情報」と呼ぶ)を取得する。
本例では、検索内容情報取得部122は、検索要求情報のうち、「データベースの2行目に蓄積されている、人物のデータを抽出する」という情報を、検索内容情報として取得する。
【0073】
検索管理部123は、検索対象特定部131と、検索部132とを有する。
【0074】
検索対象特定部131は、検索対象論理時刻情報取得部121により取得された検索対象論理時刻st(本例では「4」)に基づいて、データベースの中から検索対象の候補のデータを特定する。
【0075】
具体的には例えば、データベースには、上述の更新処理が行われた結果として、次の第1データと第2データとが蓄積されているものとする。即ち、行番号が「2行目」、挿入論理時刻xt_insが「1」、削除論理時刻xt_delが「5」、名前が「ABCD」、性別が「男性」、年齢が「25」のデータが第1データであるものとする。また、行番号が「2行目」、挿入論理時刻xt_insが「5」、削除論理時刻xt_delが「∞」、名前が「ABCD」、性別が「男性」、年齢が「26」のデータが第2データであるものとする。
この場合、検索対象特定部131は、データベースのうち、検索対象の候補のデータを特定するための条件を、次のようにして決定する。即ち、本例では、上述のように、検索対象論理時刻stは「4」である。従って、検索対象の候補のデータは、「挿入論理時刻xt_insが4より小さく、且つ、削除論理時刻xt_delが4以上」という条件を満たす必要がある。そこで、検索対象特定部131は、かかる条件を、検索対象の候補のデータを特定するための条件として決定する。
即ち、この場合、上述の例では、検索対象特定部131は、第1データを、検索対象の候補のデータとして特定する。
【0076】
検索部132は、検索内容情報取得部122により取得された検索内容情報から検索内容を認識し、検索対象特定部131により特定された検索対象の候補のデータから当該検索内容に合致するデータを検索する。
具体的には例えば、上述の例では、検索部132は、第1データから、「データベースの2行目に蓄積されている、人物のデータを抽出する」という検索内容に合致するデータを検索する。
このように、複数のデータを含む検索対象の候補のデータから、検索結果として、「名前が「ABCD」、性別が「男性」、年齢が「25」」のデータが抽出される。
【0077】
検索結果提示部124は、検索部132の検索結果を、クライアント系ノード2に提示する。
具体的には例えば、検索結果提示部124は、検索部132で抽出された、検索結果である「名前が「ABCD」、性別が「男性」、年齢が「25」」のデータを、クライアント系ノード2に送信する。
【0078】
クライアント系ノード2の検索要求管理部222は、ストレージ管理系ノード1から送信されてきた検索結果を取得して管理する。具体的には例えば、検索要求管理部222は、ストレージ管理系ノード1から送信されてきた「名前が「ABCD」、性別が「男性」、年齢が「25」」という人物のデータを取得して管理する。このように、検索要求管理部222は、発行した検索要求に対する結果を取得することができる。
【0079】
以上、
図4を用いて、ストレージ管理系ノード1、及びクライアント系ノード2により、検索処理が行われる場合に機能する機能ブロックについて説明した。
【0080】
以上をまとめると、第1実施形態のストレージ管理系ノード1は、論理時刻に基づいた更新処理及び検索処理を実行することができる。
【0081】
具体的には、対象データ管理部114は、論理時刻情報(挿入論理時刻xt_ins、及び削除論理時刻xt_delの情報)と、行番号情報と、管理対象のデータとを対応付けてデータベース150に蓄積して管理する。これにより、ストレージ管理系ノード1が有するデータベース150は、論理時刻の夫々に対応するデータベース150-1乃至150-nの夫々のデータを含んだデータベースとなる。
また、検索対象特定部131は、対象データ管理部114により管理される論理時刻情報、及び検索対象論理時刻情報に基づき、検索対象論理時刻情報により特定される時刻に有効であった管理対象のデータを、検索対象の候補のデータとして特定する。即ち、検索対象特定部131は、データベース150から、検索対象論理時刻stに対応するデータベース150-stを検索対象の候補のデータとして特定する。
これにより、検索部132は、検索対象論理時刻stにおけるデータベース150から、検索することができる。
【0082】
特許文献1に記載の技術を含む従来技術では、スナップショットとジャーナルにより、データベースとその更新処理の内容を管理していた。この場合、データベースのスナップショットに対して、ジャーナルから取得した検索対象の時刻までの更新の情報を適用することで、検索対象の候補のデータとすることができる。しかしながら、この方法は、データ処理に係る時間等のコストが大きく、安易に利用することができなかった。
【0083】
一方、第1実施形態は、管理対象のデータの挿入論理時刻xt_insや削除論理時刻xt_delを、データベースに蓄積して管理することができる。これにより、論理時刻に対する検索を、データベースに対する検索と同様に行うことができる。具体的には例えば、データベースに蓄積されている挿入論理時刻xt_insや削除論理時刻xt_delと検索対象論理時刻stとの大小関係を比較する形式で与えることで、検索対象の候補のデータを特定することができる。
これにより、第1実施形態は、分散されたデータベース管理システムでありながら、スケーラビリティを向上させることができる。
【0084】
以上、
図4を用いて、ストレージ管理系ノード1、及びクライアント系ノード2により、検索処理が行われる場合に機能する機能ブロックについて説明した。
【0085】
次に、
図5、及び
図6を用いて、第1実施形態に係る対象データ管理部114により、挿入論理時刻xt_ins、削除論理時刻xt_del、及び管理対象のデータが、対応付けられてデータベース150Aに蓄積される例を説明する。
【0086】
図5は、
図1のストレージ管理系ノードで管理されるデータベースに含まれる、論理時刻の夫々における検索対象の候補のデータの夫々の例を示す図である。
図6は、第1実施形態における
図1のストレージ管理系ノードで管理されるデータベースに含まれる、管理対象のデータの例を示す図である。
【0087】
図5(A)乃至
図5(D)の夫々に示すデータベースの夫々の検索対象論理時刻stは、相互に異なっている。
図6に示すデータベース150Aは、
図5(A)乃至
図5(D)の夫々に示すデータベースの夫々を包含するデータベースである。
【0088】
図5(A)乃至
図5(D)に示すデータベースの夫々は、スキーマとして、「tid」、「A」、「B」、「C」を有する。「tid」は、
図4の説明における、行番号に対応する。「A」、「B」、及び「C」の夫々は、
図4の説明における、「名前」、「性別」、「年齢」の夫々に対応する。ただし、
図5以降の説明におけるデータベースに蓄積された管理対象のデータは、
図4の説明で用いた人物のデータではなく、一般的な管理対象のデータであり数値や文字列であるものとして説明する。
また、詳細は後述するが、
図6のデータベース150Aは、以下の第1の更新処理乃至第4の更新処理が行われたデータである。
【0089】
なお、データベース150Aの符号が含む「A」の文字は、
図5(A)乃至
図5(D)に示すデータベース150-8、150-11、150-13、150-16等を含むデータベースのうち、ある1つの実施形態であることを示している。
図5(A)乃至
図5(D)に示すデータベース150-8、150-11、150-13、150-16を含むデータベースのうち、他の実施形態は、
図8以降を用いて、データベース150B等を用いて後述する。
【0090】
第1の更新処理は、論理時刻が「7」において、「tid」について「1001」のデータが追加される更新処理である。
第2の更新処理は、論理時刻が「10」において、「tid」について「1002」、「1003」のデータが追加される更新処理である。
第3の更新処理は、論理時刻が「12」において、「tid」について「1002」のデータが変更される更新処理である。
第4の更新処理は、論理時刻が「15」において、「tid」について「1003」のデータが削除される更新処理である。
【0091】
図5(A)には、データベース150-8、即ち、検索対象論理時刻stが「8」におけるデータベースが図示されている。即ち、データベース150-8は、第1の更新処理の結果として得られるデータベースである。データベース150-8は、スキーマの夫々に対応するデータとして、「1001」、「a1」、「b1」、「c1」のデータの組を含む。即ち、データベース150-8は、「tid」が「1001」のデータのみを含む。
検索処理において、検索対象論理時刻stとして「8」が指定された場合、検索対象特定部131は、
図6のデータベース150Aから、
図5(A)に示すデータベース150-8のデータを、検索対象の候補のデータとして特定する。
【0092】
図5(B)には、データベース150-11、即ち、検索対象論理時刻stが「11」である場合におけるデータベースが図示されている。即ち、データベース150-11は、第1の更新処理及び第2の更新処理の結果として得られるデータベースである。データベース150-11は、「tid」が「1001」、「1002」、「1003」のデータを含む。
検索処理において、検索対象論理時刻stとして「11」が指定された場合、検索対象特定部131は、データベース150Aから、
図5(B)に示すデータベース150-11のデータを、検索対象の候補のデータとして特定する。
【0093】
図5(C)には、データベース150-13、即ち、検索対象論理時刻stが「13」である場合におけるデータベースが図示されている。即ち、データベース150-13は、第1の更新処理乃至第3の更新処理の結果として得られるデータベースである。データベース150-13は、「tid」が「1001」、「1002」、「1003」のデータを含む。また、
図5(C)のデータベース150-13における「tid」が「1002」のデータは、
図5(B)のデータベース150-11における「tid」が「1002」のデータと異なる。即ち、
図5(C)のデータベース150-13における「tid」が「1002」のデータは、第3の更新処理により変更されている。
検索処理において、検索対象論理時刻stとして「13」が指定された場合、検索対象特定部131は、
図6のデータベース150Aから、
図5(C)に示すデータベース150-13のデータを、検索対象の候補のデータとして特定する。
【0094】
図5(D)には、データベース150-16、即ち、検索対象論理時刻stが「16」である場合におけるデータベースが図示されている。即ち、データベース150-16は、第1の更新処理乃至第4の更新処理の結果として得られるデータベースである。データベース150-16は、「tid」が「1001」、「1002」のデータを含む。
検索処理において、検索対象論理時刻stとして「16」が指定された場合、検索対象特定部131は、
図6のデータベース150Aから、
図5(D)に示すデータベース150-16のデータを、検索対象の候補のデータとして特定する。
【0095】
図6のデータベース150Aは、スキーマとして、「tid」、「xt_ins」、「xt_del」、「A」、「B」、「C」を有する。「tid」は、
図4の説明における、行番号に対応する。「xt_ins」は、
図4の説明における、「挿入論理時刻xt_ins」に対応する。「xt_del」は、
図4の説明における、「削除論理時刻xt_del」に対応する。即ち、データベース150Aは、挿入論理時刻xt_ins、及び削除論理時刻xt_delを、データベースのスキーマとして蓄積している。
【0096】
図6を用いて、検索対象論理時刻stとして「13」が指定された検索処理において、検索対象特定部131が、データベース150Aから、
図5(C)に示すデータベース150-13を、検索対象の候補のデータとして特定するまでの一連の流れを説明する。
検索対象特定部131は、データベース150Aの4つの行の夫々が、検索対象論理時刻stが「13」の時刻において有効であったかを特定する。具体的には、検索対象特定部131は、データベース150Aの行の夫々について、以下の式(1)及び式(2)を満たすか否かを確認することで、その行の管理対象のデータが有効であったか否かを判定することができる。
【0097】
st > xt_ins ・・・ (1)
st ≦ xt_del ・・・ (2)
【0098】
即ち、式(1)を満たす場合、その行の管理対象のデータは、検索対象論理時刻stより前に有効となったデータである。換言すれば、式(1)が満たされない場合、その行の管理対象のデータは、未だ有効でなかったデータである。
【0099】
また、式(2)を満たす場合、その行の管理対象のデータは、検索対象論理時刻stの時点では無効となっていないデータである。換言すれば、式(2)が満たされない場合、その行の管理対象のデータは、既に無効になったデータである。
【0100】
検索対象論理時刻stとして「13」が指定された場合、検索対象特定部131は、
図6のデータベース150Aの行の夫々の有効又は無効の判定を、以下の通り行う。
【0101】
図6のデータベース150Aの1行目の行(「tid」が「1001」の行)は、式(1)及び式(2)を満たすので有効である。
図6のデータベース150Aの2行目の行(「tid」が「1001」の行のうち上の行)は、式(2)を満たさないので無効である。
図6のデータベース150Aの3行目の行(「tid」が「1001」の行のうち下の行)は、式(1)及び式(2)を満たすので有効である。
図6のデータベース150Aの4行目の行(「tid」が「1001」の行)は、式(1)及び式(2)を満たすので有効である。
【0102】
これにより、上述のように
図6のデータベース150Aのうち、有効である1行目、3行目、4行目が、
図5(C)のデータベース150-13として検索対象の候補のデータとして特定される。
【0103】
図7は、第1実施形態における
図4の機能的構成を有するストレージ管理系ノードにより実行される、管理対象データの管理の流れの一例を説明するフローチャートである。
ここで、第1実施形態(及び後述の第2実施形態乃至第4実施形態)の「格納処理」とは、更新処理によりデータベースに蓄積されたデータが変更される際、変更されたデータが
図4のストレージ管理系ノード1の記憶部18に格納される処理である。
更新処理が行われることにより、データベース150Aに蓄積して管理すべきデータ(管理対象のデータ)が発生すると、格納処理が開始されて、次のようなステップS11乃至S15の処理が実行される。
【0104】
即ち、ステップS11において、論理時刻情報取得部112は、管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delを、論理時刻情報として取得する。
【0105】
ステップS12において、行番号情報取得部113は、管理対象のデータがデータベースにおけるいずれの行であるかを特定可能な情報を、行番号情報として取得する。
【0106】
ステップS13において、対象データ管理部114は、ステップS12の処理で取得された行番号情報に基づき、データベース150Aの中に、無効になった管理対象のデータがあるか否かを判定する。
無効になった管理対象のデータがある場合、ステップS13の処理においてYESであると判定されて、処理はステップS14に進む。
【0107】
ステップS14において、対象データ管理部114は、ステップS11の処理で取得された、無効になった管理対象のデータの削除論理時刻xt_delと、無効になった管理対象のデータとを対応づけてデータベース150Aに蓄積して管理する。
【0108】
ステップS15において、対象データ管理部114は、ステップS11の処理で取得された有効になったデータの挿入論理時刻xt_insと、有効になった管理対象のデータとを対応づけてデータベース150Aに蓄積して管理する。
これにより、格納処理は終了する。
【0109】
以上、管理対象のデータの中に無効になったデータがある場合のステップS13以降の処理について説明した。
【0110】
これに対して、管理対象のデータの中に無効になったデータが存在する場合のステップS13以降の処理は次のようになる。
即ち、無効になったデータがない場合、ステップS13の処理においてNOであると判定されて、処理はステップS15に進む。即ち、無効になったデータがある場合に実行されたステップS14の処理は、無効になった管理対象のデータがない場合には実行されない。
【0111】
ステップS15において、対象データ管理部114は、ステップS11の処理で取得された論理時刻情報を、有効になったデータの挿入論理時刻xt_insとして、有効になった管理対象のデータとを対応づけてデータベース150Aに蓄積して管理する。
これにより、格納処理は終了する。
【0112】
ここで、格納処理の理解を容易なものとすべく、データベース150Aの中に無効になった管理対象のデータがある場合の第1の例と、データベース150Aの中に無効になった管理対象のデータがない場合の第2の例との夫々における格納処理について説明する。
【0113】
第1の例は、管理対象のデータとして、「A」、「B」、及び「C」のスキーマを持つデータ群のうち、「tid」が「1002」の管理対象のデータに対する更新処理が実行された場合の例である。
なお、以下の説明において、「A」というスキーマが「a1」、「B」というスキーマが「b1」、「C」というスキーマが「c1」であることを、「(A,B,C)=(a1,b1,c1)」と記載する。
第1の例では、更新処理前には、論理時刻10乃至12において、管理対象のデータ(A,B,C)=(a2,b2,c2)であったものが、論理時刻12における更新処理により、管理対象のデータ(A,B,C)=(a2,b2’,c2’)に更新されたものとする。
【0114】
ステップS11において、管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delを、論理時刻情報として取得する。具体的には、ステップS11の処理は、無効になった管理対象のデータ(A,B,C)=(a2,b2,c2)の挿入論理時刻xt_ins=「10」及び削除論理時刻xt_del=「12」の情報を論理時刻情報として取得する。また、具体的には、ステップS11の処理は、有効になった管理対象のデータ(A,B,C)=(a2,b2’,c2’)の挿入論理時刻xt_ins=「12」を論理時刻情報として取得する。
【0115】
ステップS12において、行番号情報として「1002」が取得される。
第1の例では無効になった管理対象のデータ(A,B,C)=(a2,b2,c2)があるため、ステップS13の処理においてYESであると判定されて、処理はステップS14に進む。
【0116】
ステップS14において、無効になった管理対象のデータの削除論理時刻xt_delは、無効になった管理対象のデータ(A,B,C)=(a2,b2,c2)と対応づけられてデータベース150Aに蓄積されて管理される。
【0117】
ステップS15において、有効になった管理対象のデータの挿入論理時刻xt_insは、有効になった管理対象のデータ(A,B,C)=(a2,b2’,c2’)と対応づけられて、データベース150Aに蓄積されて管理される。
これにより格納処理は終了となる。
【0118】
以上、データベース150Aの中に無効になった管理対象のデータがある場合の第1の例を用いて格納処理の説明をした。
次に、データベース150Aの中に無効になった管理対象のデータがない場合の第2の例を用いて格納処理の説明をする。
【0119】
第2の例は、管理対象のデータとして、「A」、「B」、及び「C」のスキーマを持つデータ群のうち、「tid」が「1003」の管理対象のデータに対する更新処理が実行された場合の例である。
第2の例では、更新処理前には、論理時刻10までにおいて、「tid」が「1003」の管理対象のデータは存在しなかったが、論理時刻10における更新処理により、管理対象のデータ(A,B,C)=(a3,b3,c3)が更新(追加)されたものとする。
【0120】
ステップS11において、管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delを、論理時刻情報として取得する。具体的には、ステップS11の処理は、有効になった管理対象のデータ(A,B,C)=(a3,b3,c3)の挿入論理時刻xt_ins=「10」を論理時刻情報として取得する。また、ステップS11の処理は、有効になった管理対象のデータ(A,B,C)=(a3,b3,c3)の削除論理時刻xt_del=「∞」を論理時刻情報として取得する。なお、上述で説明した通り、削除論理時刻xt_del=「∞」という論理時刻情報は、削除論理時刻xt_delが未定である旨を示す論理時刻情報である。
【0121】
ステップS12において、行番号情報として「1002」が取得される。
第2の例では無効になったデータがないため、ステップS13の処理においてNOであると判定されて、処理はステップS15に進む。
【0122】
ステップS15において、有効になった管理対象のデータの挿入論理時刻xt_insと、有効になった管理対象のデータ(A,B,C)=(a3,b3,c3)とが対応づけて、データベース150Aに蓄積されて管理される。
これにより格納処理は終了となる。
以上、データベース150Aの中に無効になった管理対象のデータがない場合の第2の例を用いて格納処理の説明をした。
【0123】
以上をまとめると、第1の例のように、管理対象のデータを書き換える様な更新処理の場合、更新処理により無効となる管理対象のデータ(A,B,C)=(a2,b2,c2)が、ステップS14の処理によりデータベース150Aに蓄積されて管理される。また、更新処理により、有効となる管理対象のデータ(A,B,C)=(a2,b2’,c2’)が、ステップS15の処理によりデータベース150Aに蓄積されて管理される。
また、第2の例のように、管理対象のデータを追加する様な更新処理の場合、更新処理により無効となる管理対象のデータは存在せず、ステップS14の処理は実行されない。また、更新処理により、有効となる管理対象のデータ(A,B,C)=(a3,b3,c3)が、ステップS15の処理によりデータベース150Aに蓄積されて管理される。
【0124】
以上、格納処理の理解を容易なものとすべく、データベース150Aの中に無効になった管理対象のデータがある場合の第1の例と、データベース150Aの中に無効になった管理対象のデータがない場合の第2の例との夫々における格納処理について説明した。
【0125】
以上、本発明の第1実施形態に係るデータベース管理システムについて説明した。
次に、本発明の第2実施形態に係るデータベース管理システムについて説明する。
【0126】
[第2実施形態]
第2実施形態に係るデータベース管理システムの構成は、第1実施形態と同様である。即ち、
図1はそのまま、本発明の第2実施形態に係るデータベース管理システムの構成を示している。よって、本発明の第2実施形態に係るデータベース管理システムの構成の説明は省略する。
【0127】
また、第2実施形態に係るストレージ管理系ノード1のハードウェア構成は、第1実施形態と同様である。即ち、
図3はそのまま、本発明の第2実施形態に係るストレージ管理系ノード1のハードウェア構成を示している。
また、図示はしないが、第2実施形態に係るデータベース管理システムのクライアント系ノード2及びトランザクション管理系ノード3の夫々は、
図3に示すハードウェア構成と基本的に同様の構成を有している。
よって、本発明の第2実施形態に係る、ストレージ管理系ノード1、クライアント系ノード2、及びトランザクション管理系ノード3の夫々のハードウェア構成の説明は省略する。
【0128】
また、第2実施形態に係るデータベース管理システムの機能的構成は、第1実施形態と同様である。即ち、
図4はそのまま、本発明の第2実施形態に係るデータベース管理システムの機能的構成を示している。よって、本発明の第2実施形態に係るデータベース管理システムの機能的構成の説明は省略する。
【0129】
第2実施形態と第1実施形態の差異点は、対象データ管理部114が、論理時刻情報と、行番号情報と、管理対象のデータとを対応付けてデータベース150に蓄積して管理する対応付けの仕組みである。
即ち、第1実施形態で採用された仕組みは、管理対象のデータ、当該管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delが、データベース150Aのスキーマとして蓄積される仕組みであった。
ここで、「最新の論理時刻」とは、現時点(例えば検索処理の開始時点)からみて直前の更新処理が行われた論理時刻に1を加えたものである。また、最新の論理時刻におけるデータベース、即ち最新の論理時刻より小さい論理時刻における更新処理が完了したデータベースを、「最新のデータベース」と呼ぶ。
このような第1実施形態で採用される仕組みに対して、第2実施形態で採用される仕組みは、最新の論理時刻において有効な管理対象のデータの挿入論理時刻xt_insが、第1のデータベース(例えば後述する
図8のデータベース150B-1)のスキーマとして蓄積される仕組みである。また、第2実施形態で採用される仕組みは、最新の論理時刻において無効な管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delが、第2のデータベース(例えば後述するデータベース150B-2)のスキーマとして蓄積される仕組みである。
【0130】
さらに、以下、第2実施形態で採用される仕組みの詳細について、
図8及び
図9を用いて説明する。
【0131】
図8は、第2実施形態における
図1のストレージ管理系ノードで管理されるデータベースに含まれる、管理対象のデータの例を示す図である。
【0132】
図8(A)には、最新のデータベースにおいて有効であるデータを蓄積するデータベース150B-1の例が示されている。
図8(B)には、最新のデータベースにおいて無効であるデータを蓄積するデータベース150B-2の例が示されている。
第2実施形態に係る対象データ管理部114は、挿入論理時刻xt_ins、削除論理時刻xt_del、及び管理対象のデータ(有効と無効とを夫々区別したデータ)を対応付けて、データベース150B-1及びデータベース150B-2に蓄積する。
【0133】
具体的には例えば、
図8(A)のデータベース150B-1には、
図5(D)に示すデータベース150-16に含まれる管理対象のデータと、挿入論理時刻xt_insとが対応づけられて蓄積されている。
図8(B)のデータベース150B-2には、
図6に示すデータベース150Aのうち
図8に示すデータベース150B-1に含まれない管理対象のデータと、挿入論理時刻xt_insと、削除論理時刻xt_delとが対応づけられて蓄積されている。換言すれば、データベース150B-2は、最新の論理時刻において無効である管理対象のデータの更新の履歴である。
即ち、
図8(A)に示すデータベース150B-1及び
図8(B)に示すデータベース150B-2には、最新の論理時刻において有効である管理対象のデータと無効である管理対象のデータとが、別のデータベースとして蓄積されている。
【0134】
即ち、対象データ管理部114は、最新の論理時刻において、有効である管理対象のデータを、データベース150B-1に蓄積する。また、対象データ管理部114は、最新の論理時刻において無効である管理対象のデータを、データベース150B-2に蓄積する。
【0135】
第2実施形態において、検索対象特定部131は、検索処理を行うとき、第1実施形態と同様に、検索対象論理時刻stにおいて有効であった管理対象のデータを、検索対象の候補のデータとして特定する。ここで、検索対象論理時刻stとは、上述したように、クライアント系ノード2から送信されてきた検索要求情報に含まれる論理時刻である。
しかしながら、第2実施形態に係る検索対象特定部131は、以下のように検索する点で第1実施形態と異なる。
【0136】
まず、検索対象特定部131は、検索処理において指定された検索対象論理時刻stのデータを用いて、
図8(A)に示すデータベース150B-1から検索対象の候補のデータを特定する。
具体的には例えば、検索対象特定部131は、データベース150B-1の行のデータの夫々のうち、第1実施形態で示した式(1)の条件を満たすデータを、検索対象の候補のデータとして特定する。これにより、検索対象特定部131は、最新の論理時刻において、有効なデータのうち、検索対象論理時刻stにおいて有効である管理対象のデータを、検索対象の候補のデータとして特定することができる。
【0137】
次に、検索対象特定部131は、
図8(B)に示すデータベース150B-2から、検索対象の候補を特定する。即ち、検索対象特定部131は、検索処理において指定された検索対象論理時刻stのデータを用いて、
図8(B)に示すデータベース150B-2から検索対象の候補のデータを特定する。
具体的には例えば、検索対象特定部131は、データベース150B-2の行のデータの夫々のうち、第1実施形態で示した式(1)及び式(2)の条件を満たすデータを、検索対象の候補のデータとして特定する。例えば、管理対象のデータが削除される様な更新処理がされた後において、削除された管理対象のデータは、最新の論理時刻において無効な管理対象のデータである。検索対象特定部131は、第1実施形態で上述したのと同様に、検索対象論理時刻stにおいて有効であった管理対象のデータを、データベース150B-2から、検索対象の候補のデータとして特定する。
【0138】
更に、検索対象特定部131は、データベース150B-1から特定した検索対象の候補のデータと、データベース150B-2から特定した検索対象の候補のデータとの和集合を、総合的な検索対象の候補のデータとして特定する。
ここで、総合的な検索対象の候補のデータが、検索部132おける検索対象特定部131により特定された検索対象の候補のデータとして採用され、検索に用いられる。
【0139】
なお、検索対象の候補として、最新の論理時刻において有効でない行のデータ(例えば、「tid」が「1003」のデータ)は検索対象の候補とする必要がない場合、データベース150B-2から検索対象の候補を特定する必要はない。
【0140】
第2実施形態に係るデータベース管理システムは、上述のような一連の処理を行うことにより、以下のような効果を奏することができる。
【0141】
例えば、検索処理において、検索対象特定部131は、まず、最新の論理時刻において有効なデータが蓄積されたデータベース150B-1から、検索対象の候補のデータを特定する。検索処理において、多くの場合、検索対象論理時刻stとして最新の論理時刻が指定されて検索される。
【0142】
検索対象論理時刻stが最新の論理時刻である場合、検索対象特定部131は、データベース150B-2から検索対象の候補のデータを特定する必要はない。つまり、検索対象特定部131は、データベース150B-2の夫々の行のデータが、第1実施形態で示した式(1)及び式(2)の条件を満たすか否かを判定する処理を行わないようにすることができる。
即ち、第2実施形態において、検索処理に係る処理のうち、第1実施形態で示した式(1)及び式(2)の条件を満たすか否かを判定する処理を削減できるため、検索処理に係る計算資源を節約することができる。
【0143】
図9は、第2実施形態における
図4の機能的構成を有するストレージ管理系ノードにより実行される、格納処理の一例を説明するフローチャートである。
更新処理が行われることにより、データベース150B-1又はデータベース150B-2に蓄積して管理すべきデータ(管理対象のデータ)が発生すると、格納処理が開始されて、次のようなステップS21乃至S25の処理が実行される。
【0144】
即ち、ステップS21において、論理時刻情報取得部112は、管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delを、論理時刻情報として取得する。
【0145】
ステップS22において、行番号情報取得部113は、管理対象のデータがデータベースにおけるいずれの行であるかを特定可能な情報を、行番号情報として取得する。
【0146】
ステップS23において、対象データ管理部114は、ステップS22の処理で取得された行番号情報に基づき、最新の論理時刻において有効なデータが蓄積されたデータベース150B-1の中に、無効になった管理対象のデータがあるか否かを判定する。
無効になった管理対象のデータがある場合、ステップS23の処理においてYESであると判定されて、処理はステップS24に進む。
【0147】
ステップS24において、対象データ管理部114は、ステップS21の処理で取得された、無効になった管理対象のデータの削除論理時刻xt_delと、無効になった管理対象のデータとを対応づけてデータベース150B-2に蓄積して管理する。
【0148】
ステップS25において、対象データ管理部114は、ステップS21の処理で取得された有効になったデータの挿入論理時刻xt_insと、有効になった管理対象のデータとを対応づけてデータベース150B-1に蓄積して管理する。
これにより、格納処理は終了する。
【0149】
以上、管理対象のデータの中に無効になったデータがある場合のステップS23以降の処理について説明した。
【0150】
これに対して、管理対象のデータの中に無効になったデータが存在しない場合のステップS23以降の処理は次のようになる。
即ち、無効になったデータがない場合、ステップS23の処理においてNOであると判定されて、処理はステップS25に進む。即ち、無効になったデータがある場合に実行されたステップS24の処理は、無効になった管理対象のデータがない場合には実行されない。
【0151】
ステップS25において、対象データ管理部114は、ステップS21の処理で取得された論理時刻情報を、有効になったデータの挿入論理時刻xt_insとして、有効になった管理対象のデータとを対応づけてデータベース150B-1に蓄積して管理する。
これにより、格納処理は終了する。
【0152】
ここで、格納処理の理解を容易なものとすべく、データベース150B-1の中に無効になった管理対象のデータがある場合の第1の例と、データベース150B-1の中に無効になった管理対象のデータがない場合の第2の例との夫々における格納処理について説明する。
【0153】
第1の例は、管理対象のデータとして、「A」、「B」、及び「C」のスキーマを持つデータ群のうち、「tid」が「1002」の管理対象のデータに対する更新処理が実行された場合の例である。
なお、以下の説明において、上述の第1実施形態の説明と同様に、「A」というスキーマが「a1」、「B」というスキーマが「b1」、「C」というスキーマが「c1」であることを、「(A,B,C)=(a1,b1,c1)」と記載する。
第1の例では、更新処理前には、論理時刻10乃至12において、管理対象のデータが(A,B,C)=(a2,b2,c2)であったものが、論理時刻=「12」における更新処理により、管理対象のデータ(A,B,C)=(a2,b2’,c2’)に更新されたものとする。
【0154】
ステップS21において、格納処理が実行される論理時刻を、論理時刻情報として取得する。具体的には、ステップS21の処理は、無効になった管理対象のデータ(A,B,C)=(a2,b2,c2)の挿入論理時刻xt_ins=「10」及び削除論理時刻xt_del=「12」を論理時刻情報として取得する。また、具体的には、ステップS21の処理は、有効になった管理対象のデータ(A,B,C)=(a2,b2’,c2’)の挿入論理時刻xt_ins=「12」を論理時刻情報として取得する。
【0155】
ステップS22において、行番号情報として「1002」が取得される。
第1の例では無効になった管理対象のデータ(A,B,C)=(a2,b2,c2)があるため、ステップS23の処理においてYESであると判定されて、処理はステップS24に進む。
【0156】
ステップS24において、無効になった管理対象のデータの削除論理時刻xt_delは、無効になった管理対象のデータ(A,B,C)=(a2,b2,c2)と対応づけられ、データベース150B-2に蓄積されて管理される。
【0157】
ステップS25において、有効になった管理対象のデータの挿入論理時刻xt_insは、有効になった管理対象のデータ(A,B,C)=(a2,b2’,c2’)と対応づけられて、データベース150B-1に蓄積されて管理される。
これにより格納処理は終了となる。
【0158】
以上、データベース150B-1の中に無効になった管理対象のデータがある場合の第1の例を用いて格納処理の説明をした。
次に、データベース150B-1の中に無効になった管理対象のデータがない場合の第2の例を用いて格納処理の説明をする。
【0159】
第2の例は、管理対象のデータとして、「A」、「B」、及び「C」のスキーマを持つデータ群のうち、「tid」が「1003」の管理対象のデータに対する更新処理が実行された場合の例である。
第2の例では、更新処理前には、論理時刻10までにおいて、「tid」が「1003」の管理対象のデータは存在しなかったが、論理時刻10における更新処理により、管理対象のデータ(A,B,C)=(a3,b3,c3)が更新(追加)されたものとする。
【0160】
ステップS21において、格納処理が実行される論理時刻を、論理時刻情報として取得する。具体的には、ステップS21の処理は、有効になった管理対象のデータ(A,B,C)=(a3,b3,c3)の挿入論理時刻xt_ins=「10」を論理時刻情報として取得する。
【0161】
ステップS22において、行番号情報として「1003」が取得される。
第2の例では無効になったデータがないため、ステップS23の処理においてNOであると判定されて、処理はステップS25に進む。
【0162】
ステップS25において、有効になった管理対象のデータの挿入論理時刻xt_insと、有効になった管理対象のデータ(A,B,C)=(a3,b3,c3)とを対応づけて、データベース150B-1に蓄積されて管理される。
これにより格納処理は終了となる。
以上、データベース150B-1の中に無効になった管理対象のデータがない場合の第2の例を用いて格納処理の説明をした。
【0163】
以上をまとめると、第1の例のように、管理対象のデータを書き換える様な更新処理の場合、更新処理により無効となる管理対象のデータ(A,B,C)=(a2,b2,c2)が、ステップS24の処理によりデータベース150B-2に蓄積されて管理される。また、更新処理により、有効となる管理対象のデータ(A,B,C)=(a2,b2’,c2’)が、ステップS25の処理によりデータベース150B-1に蓄積されて管理される。
また、第2の例のように、管理対象のデータを追加する様な更新処理の場合、更新処理により無効となる管理対象のデータは存在せず、ステップS24の処理は実行されない。また、更新処理により、有効となる管理対象のデータ(A,B,C)=(a3,b3,c3)が、ステップS25の処理によりデータベース150B-1に蓄積されて管理される。
【0164】
以上、格納処理の理解を容易なものとすべく、データベース150B-1の中に無効になった管理対象のデータがある場合の第1の例と、データベース150B-1の中に無効になった管理対象のデータがない場合の第2の例との夫々における格納処理について説明した。
【0165】
以上、本発明の第2実施形態に係るデータベース管理システムについて説明した。
次に、本発明の第3実施形態に係るデータベース管理システムについて説明する。
【0166】
[第3実施形態]
第3実施形態に係るデータベース管理システムの構成は、第1実施形態と同様である。即ち、
図1はそのまま、本発明の第3実施形態に係るデータベース管理システムの構成を示している。よって、本発明の第3実施形態に係るデータベース管理システムの構成の説明は省略する。
【0167】
また、第3実施形態に係るストレージ管理系ノード1のハードウェア構成は、第1実施形態と同様である。即ち、
図3はそのまま、本発明の第3実施形態に係るストレージ管理系ノード1のハードウェア構成を示している。
また、図示はしないが、第3実施形態に係るデータベース管理システムのクライアント系ノード2及びトランザクション管理系ノード3の夫々は、
図3に示すハードウェア構成と基本的に同様の構成を有している。
よって、本発明の第3実施形態に係る、ストレージ管理系ノード1、クライアント系ノード2、及びトランザクション管理系ノード3の夫々のハードウェア構成の説明は省略する。
【0168】
また、第3実施形態に係るデータベース管理システムの機能的構成は、第1実施形態と同様である。即ち、
図4はそのまま、本発明の第3実施形態に係るデータベース管理システムの機能的構成を示している。よって、本発明の第2実施形態に係るデータベース管理システムの機能的構成の説明は省略する。
【0169】
第3実施形態と第1実施形態の差異点は、対象データ管理部114が、論理時刻情報と、行番号情報と、管理対象のデータとを対応付けてデータベース150に蓄積して管理する対応付けの仕組みである。
即ち、第1実施形態で採用された仕組みは、RDBMSにより管理されるリレーショナル形式のデータベースが採用されている仕組みであった。これにより、管理対象のデータ、当該管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delが、データベース150Aのスキーマとして蓄積された。
このような第1実施形態で採用される仕組みに対して、第3実施形態で採用される仕組みは、後述するKVSにより管理されるデータベースが採用される仕組みである。詳細は後述するが、これにより、最新の論理時刻における有効な管理対象のデータ、無効な管理対象のデータの挿入論理時刻xt_ins、及び削除論理時刻xt_delが、データベース150CのValueとして蓄積される。また、管理対象のデータの行番号情報が、データベース150CのKeyとして蓄積される。即ち、第3実施形態で採用される仕組みは、KVSにより管理されるデータベース150Cを利用した仕組みである。
【0170】
そこで、以下、第3実施形態で採用される仕組みの詳細について、
図10乃至
図12を用いて説明する。
【0171】
第3実施形態において、データベースとして、KVS(Key-Value Store)により管理されるデータベースが採用されているものとする。
KVSとは、キーと値(Value)の組を大量に蓄積し、キーを指定して検索を高速に実行可能なデータベース管理システムのことである。KVSにより管理されるデータベースは、RDBMSにより管理されるリレーショナル形式のデータベースと比較して、機能が極めて限定されている代わりに、性能が高いという特徴がある。
【0172】
図10は、第3実施形態における
図1のストレージ管理系ノードで管理されるデータベースに含まれる、検索対象の候補のデータの例を示す図である。
具体的には、
図10は、第3実施形態におけるストレージ管理系ノード1で管理されるデータベース150に含まれる、検索対象論理時刻stが「11」の場合の検索対象の候補のデータのリレーションRCを示す図である。
【0173】
第3実施形態に係る対象データ管理部114は、挿入論理時刻xt_ins、削除論理時刻xt_del、及び管理対象のデータを対応付けて、データベース150Cに蓄積する。
【0174】
具体的には例えば、
図10に示すリレーションRCは、KVSにより管理されており、スキーマとしてKeyとValueとを持つ。ここで、
図10に示すリレーションRCに示すように、第1実施形態や第2実施形態における行番号「tid」に対応する行番号が、「Key」として管理される。また、第1実施形態や第2実施形態における管理対象のデータは、「Value」として管理される。
【0175】
図11は、第3実施形態における
図1のストレージ管理系ノードで管理されるデータベースに含まれる、管理対象のデータの例を示す図である。
【0176】
図11には、KVSにより管理されるデータベース150Cの例が示されている。
【0177】
図11のデータベース150Cには、
図6に示すデータベース150Aに含まれる管理対象のデータと、挿入論理時刻xt_insと、削除論理時刻xt_delとが対応づけられたデータが、KVSにより管理されるデータベースとして蓄積されている。
具体的には、
図11に示すデータベース150Cは、
図10に示すリレーションRCと同様に、KVSにより管理されており、スキーマとしてKeyとValueとを持つ。ここで、
図11に示すデータベース150Cに示すように、第1実施形態や第2実施形態における行番号「tid」は、「Key」として管理される。また、第1実施形態や第2実施形態における管理対象のデータは、「Value」として管理される。
【0178】
第3実施形態において、検索対象特定部131は、検索処理を行うとき、第1実施形態と同様に、検索対象論理時刻stに有効であった管理対象のデータを、検索対象の候補のデータとして特定する。ここで、検索対象論理時刻stとは、上述したように、クライアント系ノード2から送信されてきた検索要求情報に含まれる論理時刻である。
しかしながら、第3実施形態に係る検索対象特定部131は、以下のように検索する点で第1実施形態と異なる。
【0179】
まず、検索対象特定部131は、検索処理において指定された行番号情報を用いて、
図11に示すデータベース150Cから、検索対象の候補のデータを特定する。
具体的には例えば、検索対象特定部131は、データベース150Cの行のデータの夫々のうち、検索内容に関する行番号の情報を、行番号情報として指定する。即ち、検索対象特定部131は、行番号情報に基づき、KVSで管理されるデータベース150Cにおける「Key」と一致する行を、検索対象の候補のデータとして特定する。これにより、検索対象特定部131は、行番号情報により特定された検索対象の候補のデータの夫々のValueの夫々が取得できる。
【0180】
次に、検索対象特定部131は、検索対象の候補のデータのValueのデータの夫々のうち、第1実施形態で示した式(1)及び式(2)の条件を満たすデータを検索対象の候補のデータとして特定する。これにより、検索対象の候補のデータのうち、検索対象論理時刻stにおける管理対象のデータを、総合的な検索対象の候補のデータとして特定することができる。
【0181】
上述のような第3実施形態の処理を行うことにより、以下のような効果を奏することができる。
【0182】
例えば、第1実施形態において、説明の簡単のため、データベースとして、RDBMSにより管理されるリレーショナル形式のデータベースが採用されているものとした。しかし、第3実施形態に示したように、KVSにより管理されるデータベース150Cにおいても、論理時刻情報と、行番号情報と、管理対象のデータとを対応付けて蓄積することができる。
【0183】
また、KVSにより管理されるデータベース150Cは、RDBMSにより管理されるリレーショナル形式のデータベースと比較して、機能が極めて限定されている代わりに、性能が高い。即ち、データの様式や更新の有無によっては、KVSにより管理されるデータベース150Cを採用したデータベース管理システムは、RDBMSにより管理されるリレーショナル形式のデータベースと比較して性能が高いシステムとなる可能性がある。
【0184】
図12は、第3実施形態における
図4の機能的構成を有するストレージ管理系ノードにより実行される、管理対象のデータの管理の流れの例を説明するフローチャートである。
更新処理が行われることにより、データベース150Cに蓄積して管理すべきデータ(管理対象のデータ)が発生すると、格納処理が開始されて、次のようなステップS31乃至S35の処理が実行される。
【0185】
即ち、ステップS31において、論理時刻情報取得部112は、管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delを、論理時刻情報として取得する。
【0186】
ステップS32において、行番号情報取得部113は、管理対象のデータがデータベースにおけるいずれの行であるかを特定可能な情報を、行番号情報として取得する。
【0187】
ステップS33において、対象データ管理部114は、ステップS32の処理で取得された行番号情報に基づき、最新の論理時刻において有効なデータが蓄積されたデータベース150Cの中に、無効になった管理対象のデータがあるか否かを判定する。
無効になった管理対象のデータがある場合、ステップS33の処理においてYESであると判定されて、処理はステップS34に進む。
【0188】
ステップS34において、対象データ管理部114は、ステップS31の処理で取得された、無効になった管理対象のデータの削除論理時刻xt_delと、無効になった管理対象のデータとを対応づけてデータベース150Cに蓄積して管理する。
【0189】
ステップS35において、対象データ管理部114は、ステップS31の処理で取得された有効になったデータの挿入論理時刻xt_insと、有効になった管理対象のデータとを対応づけてデータベース150Cに蓄積して管理する。
これにより、格納処理は終了する。
【0190】
以上、管理対象のデータの中に無効になったデータがある場合のステップS33以降の処理について説明した。
【0191】
これに対して、管理対象のデータの中に無効になったデータが存在しない場合のステップS33以降の処理は次のようになる。
即ち、無効になったデータがない場合、ステップS33の処理においてNOであると判定されて、処理はステップS35に進む。即ち、無効になったデータがある場合に実行されたステップS34の処理は、無効になった管理対象のデータがない場合には実行されない。
【0192】
ステップS35において、対象データ管理部114は、ステップS31の処理で取得された論理時刻情報を、有効になったデータの挿入論理時刻xt_insとして、有効になった管理対象のデータとを対応づけてデータベース150Cに蓄積して管理する。
これにより、格納処理は終了する。
【0193】
ここで、格納処理の理解を容易なものとすべく、データベース150Cの中に無効になった管理対象のデータがある場合の第1の例と、データベース150Cの中に無効になった管理対象のデータがない場合の第2の例との夫々における格納処理について説明する。
【0194】
第1の例は、管理対象のデータとして、KVSにより管理されるデータベースに含まれるデータ群のうち、「Key」が「1002」の管理対象のデータに対する更新処理が実行された場合の例である。
なお、以下の説明において、「挿入論理時刻xt_ins」が「7」であることを、「xt_ins=7」と記載する。同様に、「削除論理時刻xt_del」が「∞」であることを「xt_del=∞」、「Value」が「ABCDEFG」であることを「value=ABCDEFG」と夫々記載する。また、この様な挿入論理時刻xt_insと、削除論理時刻xt_delと、Valueとが対応付けられたものを、「{xt_ins=7,xt_del=∞,value=ABCDEFG}」と記載する。
第1の例では、更新処理前には、論理時刻10乃至12において、管理対象のデータが「value=hijklmnop」であったものが、論理時刻12における更新処理により、管理対象のデータが「value=HIJKLMNOP」に更新されたものとする。
【0195】
ステップS31において、格納処理が実行される論理時刻を、論理時刻情報として取得する。具体的には、ステップS31の処理は、無効になった管理対象のデータ「value=hijklmnop」の挿入論理時刻xt_ins=「10」及び削除論理時刻xt_del=「12」を論理時刻情報として取得する。また、具体的には、ステップS31の処理は、有効になった管理対象のデータ「value=HIJKLMNOP」の挿入論理時刻xt_ins=「12」を論理時刻情報として取得する。
【0196】
ステップS32において、行番号情報として「1002」が取得される。
第1の例では無効になった管理対象のデータ「value=hijklmnop」があるため、ステップS33の処理においてYESであると判定されて、処理はステップS34に進む。
【0197】
ステップS34において、無効になった管理対象のデータの削除論理時刻xt_delは、無効になった管理対象のデータ「value=hijklmnop」と対応づけられ、データベース150Cに蓄積されて管理される。
【0198】
ステップS35において、有効になった管理対象のデータの挿入論理時刻xt_insは、有効になった管理対象のデータ「value=HIJKLMNOP」と対応づけられて、データベース150Cに蓄積されて管理される。
これにより格納処理は終了となる。
【0199】
以上、データベース150Cの中に無効になった管理対象のデータがある場合の第1の例を用いて格納処理の説明をした。
次に、データベース150Cの中に無効になった管理対象のデータがない場合の第2の例を用いて格納処理の説明をする。
【0200】
第2の例は、管理対象のデータとして、KVSにより管理されるデータベースに含まれるデータ群のうち、「Key」が「1003」の管理対象のデータに対する更新処理が実行された場合の例である。
第2の例では、更新処理前には、論理時刻10までにおいて、「Key」が「1003」の管理対象のデータは存在しなかったが、論理時刻10における更新処理により、管理対象のデータ「value=1234567890」が更新(追加)されたものとする。
【0201】
ステップS31において、格納処理が実行される論理時刻を、論理時刻情報として取得する。具体的には、ステップS31の処理は、有効になった管理対象のデータ「value=1234567890」の挿入論理時刻xt_ins=「10」を論理時刻情報として取得する。
【0202】
ステップS32において、行番号情報として「1003」が取得される。
第2の例では無効になったデータがないため、ステップS23の処理においてNOであると判定されて、処理はステップS35に進む。
【0203】
ステップS35において、有効になった管理対象のデータの挿入論理時刻xt_insと、有効になった管理対象のデータ「value=1234567890」とを対応づけて、データベース150Cに蓄積されて管理される。
これにより格納処理は終了となる。
以上、データベース150Cの中に無効になった管理対象のデータがない場合の第2の例を用いて格納処理の説明をした。
【0204】
以上をまとめると、第1の例のように、管理対象のデータを書き換える様な更新処理の場合、更新処理により無効となる管理対象のデータ「value=hijklmnop」が、ステップS34の処理によりデータベース150Cに蓄積されて管理される。また、更新処理により、有効となる管理対象のデータ「value=HIJKLMNOP」が、ステップS35の処理によりデータベース150Cに蓄積されて管理される。
また、第2の例のように、管理対象のデータを追加する様な更新処理の場合、更新処理により無効となる管理対象のデータは存在せず、ステップS34の処理は実行されない。また、更新処理により、有効となる管理対象のデータ「value=1234567890」が、ステップS35の処理によりデータベース150Cに蓄積されて管理される。
【0205】
以上、格納処理の理解を容易なものとすべく、データベース150Cの中に無効になった管理対象のデータがある場合の第1の例と、データベース150Cの中に無効になった管理対象のデータがない場合の第2の例との夫々における格納処理について説明した。
【0206】
以上、本発明の第3実施形態に係るデータベース管理システムについて説明した。
次に、本発明の第4実施形態に係るデータベース管理システムについて説明する。
【0207】
[第4実施形態]
第4実施形態に係るデータベース管理システムの構成は、第1実施形態と同様である。即ち、
図1はそのまま、本発明の第4実施形態に係るデータベース管理システムの構成を示している。よって、本発明の第4実施形態に係るデータベース管理システムの構成の説明は省略する。
【0208】
また、第4実施形態に係るストレージ管理系ノード1のハードウェア構成は、第1実施形態と同様である。即ち、
図3はそのまま、本発明の第4実施形態に係るストレージ管理系ノード1のハードウェア構成を示している。
また、図示はしないが、第4実施形態に係るデータベース管理システムのクライアント系ノード2及びトランザクション管理系ノード3の夫々は、
図3に示すハードウェア構成と基本的に同様の構成を有している。
よって、本発明の第4実施形態に係る、ストレージ管理系ノード1、クライアント系ノード2、及びトランザクション管理系ノード3の夫々のハードウェア構成の説明は省略する。
【0209】
また、第4実施形態に係るデータベース管理システムの機能的構成は、第1実施形態と同様である。即ち、
図4はそのまま、本発明の第4実施形態に係るデータベース管理システムの機能的構成を示している。よって、本発明の第4実施形態に係るデータベース管理システムの機能的構成の説明は省略する。
【0210】
第4実施形態と第1実施形態の差異点は、対象データ管理部114が、論理時刻情報と、行番号情報と、管理対象のデータとを対応付けてデータベース150を蓄積して管理する対応付けの仕組みである。
即ち、第1実施形態で採用された仕組みは、データベースにより、挿入論理時刻xt_ins等が対応づけられて管理される仕組みであった。具体的には、管理対象のデータ、当該管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delの夫々が、データベース150Aのスキーマの夫々として蓄積された。
このような第1実施形態で採用される仕組みに対して、第4実施形態で採用される仕組みは、後述するファイル名として、管理対象のデータの挿入論理時刻xt_ins等が対応づけられて管理される仕組みである。詳細は後述するが、これにより、管理対象のデータが、ファイルの内容として管理される。また、管理対象のデータの行番号情報、挿入論理時刻xt_ins、及び削除論理時刻xt_delが、ファイル名として管理される。即ち、第4実施形態で採用される仕組みは、ファイル名により管理対象のデータが管理される仕組みである。
【0211】
そこで、以下、第4実施形態で採用される仕組みの詳細について、
図13乃至
図15を用いて説明する。
第4実施形態に係る対象データ管理部114は、挿入論理時刻xt_ins、削除論理時刻xt_del、及び行番号情報をファイル名として、管理対象のデータをファイルの内容として、ファイルとそのファイルのファイル名とを対応付けて、記憶部18に格納する。つまり、第4実施形態におけるデータベースは、記憶部18に、複数のファイルとして格納されたファイル群である。
【0212】
ここで、説明を簡単にするため、第4実施形態における管理対象のデータは1行のテキストデータであり、当該テキストデータはテキストファイルとして管理されるものとする。即ち、1つのテキストファイルは第1実施形態乃至第3実施形態における1行の管理対象のデータに対応する。
【0213】
図13は、第4実施形態における
図1のストレージ管理系ノード1で管理されるファイルにおける、ファイル名と内容の例を示す図である。以下、ファイル名と内容の対応を示す表を、「ファイル名内容対応表」と呼ぶ。
【0214】
具体的には、
図13は、第4実施形態におけるストレージ管理系ノード1で管理されるファイルにおける、検索対象論理時刻stが「11」の場合のファイル名内容対応表RDを示す図である。換言すれば、
図13に示すファイル名内容対応表RDは、検索対象論理時刻stが「11」の場合の検索対象の候補のデータである。
また、第4実施形態におけるストレージ管理系ノードで管理されるファイルのファイル名は、
図13に示すファイル名内容対応表RDに示すように付与されている。即ち、
図13に示すファイル名内容対応表RDは、第1実施形態乃至第3実施形態の行番号情報「tid」の代わりに、行を特定する情報として
図13に示すファイル名内容対応表RDの「ファイル名」を採用している。
【0215】
図14は、第4実施形態における
図1のストレージ管理系ノードで管理されるデータベースのファイルのファイル名を、論理時刻と対応づけたファイル名として管理する例を示す図である。
【0216】
図14には、ストレージ管理系ノード1の記憶部18に格納されるファイルのファイル名と、ファイルの内容の例が示されている。
【0217】
図14の記憶部18には、ファイル名が「bar(10,12)」のファイルの内容として、「hijklmnop」が、格納されている。「bar(10,12)」というファイル名は、行を特定する情報が「bar」、挿入論理時刻xt_insが「10」、削除論理時刻xt_delが「12」、であることを示している。
【0218】
即ち、第4実施形態の対象データ管理部114は、行を特定する情報と、挿入論理時刻xt_insと、削除論理時刻xt_delとをファイル名として記憶部18に記憶する。
【0219】
第4実施形態において、検索処理を行うとき、検索対象特定部131は、第1実施形態と同様に、検索対象論理時刻stに有効であった管理対象のデータを、検索対象の候補のデータとして特定する。しかしながら、第4実施形態に係る検索対象特定部131は、以下のように検索する点で第1実施形態と異なる。
【0220】
まず、検索対象特定部131は、検索処理において指定された行番号情報、挿入論理時刻xt_ins、及び削除論理時刻xt_delを用いて、
図14に示す記憶部18に格納されたファイルから、検索対象の候補のデータが含まれるファイルを特定する。
【0221】
具体的には例えば、検索対象特定部131は、
図14に示す記憶部18に格納されたファイルのファイル名、行を特定する情報、挿入論理時刻xt_ins、及び削除論理時刻xt_delに基づき、条件に一致するファイル名のファイルを特定する。つまり、検索対象特定部131は、ファイル名から特定された行を特定する情報、挿入論理時刻xt_ins、及び、削除論理時刻xt_delの夫々に基づき、条件に一致するファイル名のファイルを検索対象の候補のデータとして特定する。
【0222】
「bar(10,12)」というファイル名のファイルがある場合、行を特定する情報が「bar」、挿入論理時刻xt_insが「10」、削除論理時刻xt_delが「12」であると識別する。検索対象特定部131は、検索対象論理時刻stに基づき、ファイル名から識別した挿入論理時刻xt_ins及び削除論理時刻xt_delに対して、第1実施形態で示した式(1)及び式(2)の条件を満たすか否かを判定する。これにより、「bar(10,12)」というファイル名のファイルが、検索対象論理時刻stにおいて有効であったかを判定することができる。
検索対象特定部131は、上述の判定を、複数のファイルの夫々に対して行うことで、総合的な検索対象論理時刻とする。
ここで、総合的な検索対象の候補のデータが、検索部132おける検索対象特定部131により特定された検索対象の候補のデータとして採用され、検索に用いられる。
【0223】
即ち、検索対象特定部131は、ファイル名から識別された挿入論理時刻xt_ins及び削除論理時刻xt_delの夫々が、第1実施形態で示した式(1)及び式(2)の条件を満たすファイル名であるかを判定する。これにより、検索対象の候補のデータのうち、検索対象論理時刻stにおける管理対象のデータを、検索対象の候補のデータとして特定することができる。
【0224】
第4実施形態に係るデータベース管理システムは、上述のような一連の処理を行うことにより、以下のような効果を奏することができる。
【0225】
例えば、第4実施形態において、記憶部18に格納されるファイルは、データベースに限らず、例えば、テキストファイル等、任意のファイル形式のファイルで良い。この場合、第4実施形態における検索対象特定部131は、特定された検索対象の候補のデータとして、ファイルをクライアントに提供することができる。即ち、第4実施形態に係るデータベース管理システムは、管理対象のファイル(データ)を、挿入論理時刻xt_ins及び削除論理時刻xt_delと対応づけて格納することができる。
これにより、挿入論理時刻xt_ins及び削除論理時刻xt_delを、データベース管理システムにおけるスキーマとして管理せず、ファイル名とすることで管理することができる。即ち、通常データベースにおいて処理するSQL等による処理が不要となり、検索処理における計算資源の消費が削減される。
【0226】
図15は、第4実施形態における
図4の機能的構成を有するストレージ管理系ノードにより実行される、管理対象データの管理の流れの一例を説明するフローチャートである。即ち、第4実施形態におけるストレージ管理系ノードにより実行される、格納処理の一例を説明するフローチャートである。
更新処理が行われることにより、記憶部18に格納して管理すべきデータ(管理対象のデータ)が発生すると、格納処理が開始されて、次のようなステップS41乃至S45の処理が実行される。
【0227】
即ち、ステップS41において、論理時刻情報取得部112は、管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delを、論理時刻情報として取得する。
【0228】
ステップS42において、行番号情報取得部113は、管理対象のデータがデータベースにおけるいずれの行であるかを特定可能な情報を、行番号情報として取得する。
【0229】
ステップS43において、対象データ管理部114は、ステップS42の処理で取得された行番号情報に基づき、記憶部18の中に、無効になった管理対象のデータがあるか否かを判定する。
無効になった管理対象のデータがある場合、ステップS43の処理においてYESであると判定されて、処理はステップS44に進む。
【0230】
ステップS44において、対象データ管理部114は、ステップS41の処理で取得された、無効になった管理対象のデータの削除論理時刻xt_delと、無効になった管理対象のデータ(ファイル)とを対応づけて記憶部18に格納して管理する。
【0231】
ステップS45において、対象データ管理部114は、ステップS41の処理で取得された有効になったデータの挿入論理時刻xt_insと、有効になった管理対象のデータ(ファイル)とを対応づけて記憶部18に格納して管理する。
これにより、格納処理は終了する。
【0232】
以上、管理対象のデータの中に無効になったデータがある場合のステップS43以降の処理について説明した。
【0233】
これに対して、管理対象のデータの中に無効になったデータが存在しない場合のステップS43以降の処理は次のようになる。
即ち、無効になったデータがない場合、ステップS43の処理においてNOであると判定されて、処理はステップS45に進む。即ち、無効になったデータがある場合に実行されたステップS44の処理は、無効になった管理対象のデータがない場合には実行されない。
【0234】
ステップS45において、対象データ管理部114は、ステップS41の処理で取得された論理時刻情報を、有効になったデータの挿入論理時刻xt_insとして、有効になった管理対象のデータとを対応づけて記憶部18に格納して管理する。
これにより、格納処理は終了する。
【0235】
ここで、格納処理の理解を容易なものとすべく、記憶部18の中に無効になった管理対象のデータがある場合の第1の例と、記憶部18の中に無効になった管理対象のデータがない場合の第2の例との夫々における格納処理について説明する。
【0236】
第1の例は、管理対象のデータとして、ファイルが管理されるファイル群のうち、行を特定する情報が「bar」の管理対象のデータに対する更新処理が実行された場合の例である。
第1の例では、更新処理前には、論理時刻10乃至12において、管理対象のデータが「hijklmnop」であったものが、論理時刻12における更新処理により、管理対象のデータ「HIJKLMNOP」に更新されたものとする。
【0237】
ステップS41において、管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delを、論理時刻情報として取得する。具体的には、ステップS41の処理は、無効になった管理対象のデータ「hijklmnop」の挿入論理時刻xt_ins=「10」及び削除論理時刻xt_del=「12」を論理時刻情報として取得する。また、具体的には、ステップS41の処理は、有効になった管理対象のデータ「HIJKLMNOP」の挿入論理時刻xt_ins=「12」を論理時刻情報として取得する。
【0238】
ステップS42において、行を特定するとして「bar」が取得される。
第1の例では無効になった管理対象のデータ「hijklmnop」があるため、ステップS43の処理においてYESであると判定されて、処理はステップS44に進む。
【0239】
ステップS44において、無効になった管理対象のデータの削除論理時刻xt_delは、無効になった管理対象のデータ「hijklmnop」と対応づけられて記憶部18に格納されて管理される。
【0240】
ステップS45において、有効になった管理対象のデータの挿入論理時刻xt_insは、有効になった管理対象のデータ「HIJKLMNOP」と対応づけられて、記憶部18に格納されて管理される。
これにより格納処理は終了となる。
【0241】
以上、記憶部18の中に無効になった管理対象のデータがある場合の第1の例を用いて格納処理の説明をした。
次に、記憶部18の中に無効になった管理対象のデータがない場合の第2の例を用いて格納処理の説明をする。
【0242】
第2の例は、管理対象のデータとして、ファイルが管理されるファイル群のうち、行を特定する情報が「baz」の管理対象のデータに対する更新処理が実行された場合の例である。
第2の例では、更新処理前には、論理時刻が「10」である時刻までにおいて、行を特定する情報が「baz」の管理対象のデータは存在しなかったが、論理時刻10における更新処理により、管理対象のデータ「1234567890」が更新(追加)されたものとする。
【0243】
ステップS41において、管理対象のデータの挿入論理時刻xt_ins及び削除論理時刻xt_delを、論理時刻情報として取得する。具体的には、ステップS41の処理は、有効になった管理対象のデータ「1234567890」の挿入論理時刻xt_ins=「10」を論理時刻情報として取得する。また、ステップS41の処理は、有効になった管理対象のデータ「1234567890」の削除論理時刻xt_del=「∞」を論理時刻情報として取得する。なお、上述で説明した通り、削除論理時刻xt_del=「∞」という論理時刻情報は、削除論理時刻xt_delが未定である旨を示す論理時刻情報である。なお、
図14に示す記憶部18のファイル名は、論理時刻が「15」において、行を特定する情報が「baz」の管理対象のデータが削除される更新処理が行われた場合におけるファイル名である。
【0244】
ステップS42において、行を特定する情報として「baz」が取得される。
第2の例では無効になったデータがないため、ステップS43の処理においてNOであると判定されて、処理はステップS45に進む。
【0245】
ステップS45において、有効になった管理対象のデータの挿入論理時刻xt_insと、有効になった管理対象のデータ「1234567890」とを対応づけて、記憶部18に格納されて管理される。
これにより格納処理は終了となる。
以上、記憶部18の中に無効になった管理対象のデータがない場合の第2の例を用いて格納処理の説明をした。
【0246】
以上をまとめると、第1の例のように、管理対象のデータを書き換える様な更新処理の場合、更新処理により無効となる管理対象のデータ「hijklmnop」が、ステップS44の処理により記憶部18に格納されて管理される。また、更新処理により、有効となる管理対象のデータ「HIJKLMNOP」が、ステップS45の処理により記憶部18に格納されて管理される。
また、第2の例のように、管理対象のデータを追加する様な更新処理の場合、更新処理により無効となる管理対象のデータは存在せず、ステップS44の処理は実行されない。また、更新処理により、有効となる管理対象のデータ「1234567890」が、ステップS45の処理により記憶部18に格納されて管理される。
【0247】
以上、格納処理の理解を容易なものとすべく、記憶部18の中に無効になった管理対象のデータがある場合の第1の例と、記憶部18の中に無効になった管理対象のデータがない場合の第2の例との夫々における格納処理について説明した。
【0248】
以上、本発明の実施形態の夫々について説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【0249】
例えば、第1実施形態の説明において、更新要求整合性管理部322は、データベースの整合性が崩れるか否かを判定して、整合性が維持されることが確実である場合にのみ、ストレージ管理系ノード1に更新要求情報を送信するとした。更新要求整合性管理部322は、具体的に以下のような処理を行うことで、整合性の管理を行ってもよい。
【0250】
具体的には例えば、まず、トランザクション管理系ノード3は、更新要求整合性管理部322は、ストレージ管理系ノード1に更新要求情報を送信する。次に、トランザクション管理系ノード3は、更新の内容を処理した場合にデータベースの整合性が崩れるか否かを、ストレージ管理系ノード1に判定させることができる。ここで、整合性が維持されることが確実である場合にのみ、トランザクション管理系ノード3は、ストレージ管理系ノード1に更新の内容を確定(トランザクションをコミット)させることができる。また、整合性が維持されることが確実でない場合に、トランザクション管理系ノード3は、ストレージ管理系ノード1に更新の内容を破棄させることができる。
【0251】
更に言えば、更新要求整合性管理部322は、整合性の管理にSIの方式を採用して管理してよい。以下、整合性の管理にSIの方式を採用した場合について説明する。ここで、トランザクション管理系ノード3は、トランザクション管理系ノード3-1,3-2の2台が存在し、同時に更新処理を行っているものとして説明する。また、トランザクション管理系ノード3-1,3-2は、1つのストレージ管理系ノード1に更新要求を送信するものとする。また、トランザクション管理系ノード3-1,3-2は、更新の内容を処理した場合にデータベースの整合性が崩れるか否かを、ストレージ管理系ノード1に判定させる。なお、トランザクション管理系ノード3-1が更新要求整合性管理部322-1を有し、トランザクション管理系ノード3-2が更新要求整合性管理部322-2を有するものとして説明する。
【0252】
まず、トランザクション管理系ノード3-1の更新要求整合性管理部322-1は、対象データ管理部114により管理される、論理時刻情報と、行番号情報と、管理対象のデータとが対応付けられたデータベース150を、ストレージ管理系ノード1に複製させる。例えば、更新要求整合性管理部322-1は、最新のデータベースの複製であるスナップショットのデータベース150-1Sを、ストレージ管理系ノード1に生成させる。即ち、スナップショットのデータベース150-1Sは、最新のデータベースが複製されたデータベースの1つである。ここで、スナップショットのデータベース150-1Sは、ストレージ管理系ノード1のRAM13や記憶部18の一領域に記憶されていてよい。即ち、スナップショットのデータベース150-1Sは、記憶部18に記憶されたデータベース150と異なる領域に記憶されてよい。
【0253】
次に、更新要求整合性管理部322-1は、スナップショットのデータベース150-1Sに対して更新処理を行い、更新されたスナップショットのデータベース150-1Mを生成する。このとき、更新されたスナップショットのデータベース150-1Mは、スナップショットのデータベース150-1に含まれる管理対象のデータのうち、一部(いくつかの行のデータ)が更新(変更)されたデータベースとなっている。ここで、更新されたスナップショットのデータベース150-1Mは、ストレージ管理系ノード1のRAM13や記憶部18の一領域に記憶されていてよい。即ち、更新されたスナップショットのデータベース150-1Mは、記憶部18に記憶されたデータベース150と異なる領域に記憶されてよい。
【0254】
ここで、上述した更新要求整合性管理部322-1が管理する更新処理がなされている間に、トランザクション管理系ノード3-2の更新要求整合性管理部322-2は、他の更新処理を管理(処理)している。即ち、更新要求整合性管理部322-2は、ストレージ管理系ノード1に、スナップショットのデータベース150-2Sや更新されたスナップショットのデータベース150-2Mを生成や管理させている。
【0255】
更に言えば、トランザクション管理系ノード3-1の更新要求整合性管理部322-1が上述の更新処理を行っている間に、トランザクション管理系ノード3-2の更新要求整合性管理部322-2が、更新処理を行い、完了している可能性がある。そこで、トランザクション管理系ノード3-1の更新要求整合性管理部322-1は、データベース150のうち、更新処理により書き換えるべき管理対象のデータが、他の更新処理により更新されていないかを、ストレージ管理系ノード1に管理させることができる。
【0256】
この時、データベース150に含まれるデータのうち、上述の更新処理により更新された一部のデータが、既に更新されていない場合、当該一部のデータのみを、データベース150に書き戻す。これにより、更新要求整合性管理部322-1は、スナップショットのデータベース150-1Sと更新されたスナップショットのデータベース150-1Mとの間で差異のある管理対象のデータを、ストレージ管理系ノード1のデータベース150に反映させる。
【0257】
また、データベース150に含まれるデータのうち、上述の更新処理により更新された一部のデータが、既に更新されている場合、更新処理の結果やスナップショットのデータベース150-1M等は破棄される。これにより、更新処理の内容は、データベース150に反映されない。この場合、更新要求整合性管理部322-1は、更新処理をスナップショットの生成からやり直してもよいし、クライアント系ノード2に更新処理が失敗した旨を通知してもよい。
【0258】
これにより、更新要求整合性管理部322は、ストレージ管理系ノード1に格納されたデータベース150の整合性が維持されるか否かを検証し、整合性が維持される場合のみ、実際にデータベース150に更新処理を反映することができる。即ち、データベース150の整合性が維持される。
このように同時並行的に更新処理が管理される場合、先に反映(コミット)された更新処理の内容は、後に反映(コミット)されようとする更新処理の内容に優先する。更には、先に反映された更新処理の内容により変更されていない場合にのみ、後に反映されようとする更新処理の内容が反映される。このように、「先に反映(コミット)された更新処理の内容は、後に反映(コミット)されようとする更新処理の内容に優先する」といったルールを、「First-Committer-Wins Rule」と呼ぶ。
【0259】
なお、ストレージ管理系ノード1やトランザクション管理系ノード3は、上述の「First-Committer-Wins Rule」に則って、更新処理を管理すれば足りる。即ち、ストレージ管理系ノード1は、必ずしも、上述のようにスナップショットのデータベース150-1Sや、更新されたスナップショットのデータベース150-1Mを生成や管理をする必要はない。つまり、ストレージ管理系ノード1は、スナップショットのデータベース150-1Sや、更新されたスナップショットのデータベース150-1Mを生成しなくてもよい。
例えば、ストレージ管理系ノード1は、スナップショットのデータベース150-1Sと更新されたスナップショットのデータベース150-1Mを生成しない。この場合、ストレージ管理系ノード1は、更新処理によって差異が生じる管理対象のデータについて、当該差異等を管理する。
【0260】
更に言えば、上述の差異等は、ストレージ管理系ノード1ではなく、トランザクション管理系ノード3-1,3-2により管理されてよい。この場合、トランザクション管理系ノード3-1,3-2は、協働して、更新処理による差異を管理する。また、上述の例における、更新要求整合性管理部322-1により管理される更新処理と、更新要求整合性管理部322-2により管理される更新処理とが存在する場合、当該差異について先に処理された更新処理を優先する。
即ち、トランザクション管理系ノード群G3は、複数の更新処理を、更新処理に係る差異として管理したうえで、「First-Committer-Wins Rule」に則って、ストレージ管理系ノード1のデータベース150に反映(コミット)する。
【0261】
上述のように、整合性の管理にSIの方式を採用する場合、更新要求情報は、以下の情報を含んでいてよい。具体的には、更新要求情報は、「トランザクション開始時刻」、「行毎の更新情報」を含んでいてよい。
【0262】
ここで、「トランザクション開始時刻」は、例えば、クライアント系ノード2から更新要求が送信されてきた時刻であってよい。また例えば、クライアント系ノード2が更新要求の管理に係る検索処理をストレージ管理系ノード1に実行させた場合、「トランザクション管理時刻」は、当該検索処理における検索対象論理時刻であってよい。更新要求整合性管理部322は、先に送信されてきた更新要求を優先する「First-Committer-Wins Rule」を適用して、更新処理を管理する。
【0263】
また、「行毎の更新情報」は、例えば、以下の内容を含んでよい。更新の内容として、新規行(管理対象のデータ)の挿入の場合、「行毎の更新情報」は、「行番号情報と、具体的な管理対象のデータの内容(例えば
図5や
図6におけるA,B,Cの具体的な値)」を含む。また、既存行(既にデータベース150に蓄積された管理対象のデータ)を削除する場合、「削除を行う管理対象のデータの行番号情報」を含む。
【0264】
例えば、第1実施形態の説明において、管理対象のデータは、「行」毎に管理されるものとしたが、特にこれに限定されない。即ち、管理対象のデータは、所定単位毎に管理されれば足りる。
具体的には例えば、管理対象のデータは、「複数行」毎に管理されてもよく、第4実施形態の説明のように「ファイル」毎に管理されてもよい。
【0265】
また例えば、第1実施形態の説明において、データベース管理システムは、管理対象のデータが有効になった時間帯の少なくとも一部を特定可能な情報を、論理時刻情報として取得するものとしたが、特にこれに限定されない。即ち、例えば、論理時刻は、データベースの管理に使われ、一方向に変化する識別子であれば足りる。
具体的には例えば、データベースの更新毎に付与された整数値でもよく、「年」「月」「日」「時」「分」「秒」等の組み合わせで示される、日時の形態の情報でもよい。
【0266】
また例えば、第1実施形態の説明において、論理時刻情報取得部112は、管理対象のデータが有効になった論理時刻を挿入論理時刻xt_ins、管理対象のデータが無効になった論理時刻を削除論理時刻xt_delとして取得したが、特にこれに限定されない。即ち、管理対象のデータが有効になった時間帯の少なくとも一部を特定可能な情報であれば足りる。
具体的には例えば、挿入論理時刻xt_ins、及び削除論理時刻xt_delに挟まれた論理時刻の時間帯を示しうる情報を取得すれば足りる。
【0267】
また例えば、第1実施形態乃至第4実施形態の説明において、管理対象のデータが有効であったか否かを判定する式は、式(1)及び式(2)であるとしたが、特にこれに限定されない。
具体的には例えば、式(1)及び式(2)に代えて、以下の式(3)及び式(4)を満たすか否かを確認することで、その行の管理対象のデータが有効であったか否かを判定することができる。
【0268】
st ≧ xt_ins ・・・ (3)
st < xt_del ・・・ (4)
【0269】
なお、式(2)を採用し、式(1)に代えて式(3)を採用してもよい。また、式(1)を採用し、式(2)に代えて式(4)を採用してもよい。即ち、式(1)及び式(3)のうちいずれか一方を採用し、式(2)及び式(4)のいずれか一方を採用すれば足りる。
【0270】
また例えば、論理時刻として「年」「月」「日」「時」「分」「秒」等の組み合わせで示される日時の形態を採用する場合、ノード間の時刻計測の誤差を考慮した管理対象のデータが有効であったか否かを判定する式を採用することができる。具体的には例えば、所定の正の時間幅を表す定数εを用いて、以下の式(5)及び式(6)を満たすか否かを確認することで、その行の管理対象のデータが有効であったか否かを判定することができる。
【0271】
st > xt_ins+ε ・・・ (5)
st ≦ xt_del+ε ・・・ (6)
【0272】
ただし、上述の式(5)及び式(6)は、あくまで例示である。即ち、式(5)及び式(6)に限定されない。検索対象特定部131は、ノード間の時刻計測の誤差を考慮して、管理対象のデータが有効であったか否かを判定することができれば足りる。
【0273】
また例えば、第1実施形態の説明において、行番号情報取得部113は、管理対象のデータが属する行番号を取得するものとしたが、特にこれに限定されない。即ち、管理対象のデータが属する前記所定単位を特定可能な情報であれば足りる。
具体的には例えば、管理対象のデータが複数行毎に管理されている場合、複数行の何番目であるかの情報であればよく、管理対象のデータがファイル毎に管理されている場合、ファイル名であってよい。
【0274】
また例えば、第1実施形態の説明において、対象データ管理部114は、データベース150Aのスキーマとして、挿入論理時刻xt_ins、及び削除論理時刻xt_delを管理するものとしたが、特にこれに限定されない。即ち、管理対象のデータが有効になった時間帯の少なくとも一部を特定可能な情報と、管理対象のデータが属する前記所定単位を特定可能な情報と、管理対象のデータとを対応づけて管理できれば足る。
具体的には例えば、第2実施形態乃至第4実施形態に示したように、対応づけて管理してよい。
【0275】
また例えば、第1実施形態の説明において、対象データ管理部114は、管理対象のデータが未だ無効になっていない旨を示す情報として、削除論理時刻xt_delが「∞」の値を採用したが、特にこれに限定されない。
具体的には例えば、対象データ管理部114は、任意に設定した整数値を未だ無効になっていない旨を示す情報として採用してよい。更に言えば、未だ無効になっていない旨を示す情報を示す値を数値として管理する場合、未だ無効になっていない旨を示す情報は、大きな値が望ましい。これにより、検索対象論理時刻stと削除論理時刻xt_delとの大小関係を用いて、検索対象の候補のデータを特定することができる。
【0276】
また例えば、第2実施形態の説明において、対象データ管理部144は、管理対象のデータが最新の論理時刻において有効か否かに基づいて、管理対象のデータを第1のデータベースに蓄積するか、第2のデータベースに蓄積するかを異ならせるものとしたが、特にこれに限定されない。
具体的には例えば、対象データ管理部114は、任意の数のデータベースに管理対象のデータを蓄積して管理してよい。例えば、対象データ管理部114は、最新の論理時刻において無効な管理対象のデータを、論理時刻の区分毎に複数のデータベースに蓄積してもよい。即ち例えば、所定の論理時刻よりも前の論理時刻において無効となった管理対象のデータは、第3のデータベースに蓄積して管理されてもよい。この場合、検索処理において、検索対象の候補のデータが第1のデータベース及び第2のデータベースにも含まれない場合に、第3のデータベースから検索対象の候補のデータが特定されてよい。これにより、検索処理の対象となりづらい管理対象のデータを別のデータベースとして管理し、検索処理等の処理に係るコストを削減することができる。
【0277】
第1実施形態及び第2実施形態の説明における対象データ管理部114を採用することで、以下のようなデータを管理する効率が向上する可能性がある。
具体的には例えば、オンラインバンキングシステムや、航空券の予約システム等、大量の検索と更新が入り混じっており、整合性が必要とされる(絶対に間違いが許されない)システムを管理する効率が向上する可能性がある。
【0278】
第3実施形態の説明における対象データ管理部114を採用することで、以下のようなデータを管理する効率が向上する可能性がある。
具体的には例えば、更新の大部分はデータの新規追加がほとんどであるが、稀に変更や削除が行われるようなシステムを管理する効率が向上する可能性がある。即ち例えば、IoTシステムにおける大量のセンサーから送られてくるデータの蓄積を行うシステムや、SNS(Social Networking System)のデータの蓄積を行うシステムにおいて、効率が向上する可能性がある。即ち例えば、大量のセンサーから送られてくるデータやSNSのデータは、大量の文字情報、画像、動画等であって、稀に変更や削除が行われる。
【0279】
第4実施形態の説明における対象データ管理部114を採用することで、以下のようなデータを管理する効率が向上する可能性がある。
例えば、データベース管理システムを介さずより高速に処理を行いたい場合や、各種リソースの量の制限によりデータベース管理システムを動かしにくいシステム(例えば、組込みシステム)をストレージ管理系に利用したい場合等に、データを管理する効率が向上する可能性がある。
【0280】
また、上述したように、データベース管理システムは、ストレージ管理系ノード群G1と、クライアント系ノード群G2と、トランザクション管理系ノード群G3から構成され、論理時刻を用いてデータベースを管理することで、以下のような効果を奏する。
具体的には例えば、トランザクション管理(更新処理の管理)や、当該管理にSIの方式を採用することで、整合性を保ったままデータの複製を複数持つことできるため、可用性を高めることができる。即ち、複数のノードのうち何れかのノードの一部が壊れた場合において、データが失われない。換言すれば、データベース管理システムは、複数のノードのうち何れかのノードの一部が壊れた場合においても、正常に稼働を続けることができる。即ち、データベース管理システムは、論理時刻を用いてデータベースを管理することでトランザクション管理を行う。これにより、複数のストレージ管理系ノード1の間でのデータベースの整合性を保つことができる。
【0281】
また例えば、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
換言すると、
図4の機能的構成は例示に過ぎず、特に限定されない。
即ち、上述した一連の処理を全体として実行できる機能が情報処理システムに備えられていれば足り、この機能を実現するためにどのような機能ブロックを用いるのかは特に
図4の例に限定されない。また、機能ブロックの存在場所も、
図4に特に限定されず、任意でよい。例えば、ストレージ管理系ノード1の機能ブロックをクライアント系ノード2等に移譲させてもよい。逆にクライアント系ノード2の機能ブロックをストレージ管理系ノード1等に移譲させてもよい。
また、1つの機能ブロックは、ハードウェア単体で構成してもよいし、ソフトウェア単体で構成してもよいし、それらの組み合わせで構成してもよい。
【0282】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータ等にネットワークや記録媒体からインストールされる。
コンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。
また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータ、例えばサーバの他汎用のスマートフォンやパーソナルコンピュータであってもよい。
【0283】
このようなプログラムを含む記録媒体は、ユーザ等にプログラムを提供するために装置本体とは別に配布される図示せぬリムーバブルメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザ等に提供される記録媒体等で構成される。
【0284】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段等より構成される全体的な装置を意味するものとする。
【0285】
以上まとめると、本発明が適用される情報処理システムは、次のような構成を取れば足り、各種各様な実施形態を取ることができる。
即ち、本発明が適用される情報処理システム(例えば、
図4のストレージ管理系ノード1)は、
データを所定単位(例えば、
図5(B)の「行」)毎に管理する情報処理システムであって、
管理対象のデータ(例えば、
図5(B)の「a3」、「b3」、「c3」)が有効になった時間帯の少なくとも一部を特定可能な第1情報(例えば、「論理時刻xt」や「その幅」であって、
図6の「xt_ins」や「xt_del」であり、管理対象のデータが
図6の「a3」、「b3」、「c3」ならば「10」や「15」)を取得する第1取得手段(例えば、
図4の論理時刻情報取得部112)と、
前記管理対象のデータが属する前記所定単位を特定可能な第2情報(例えば、
図5や
図6の「tid」)を取得する第2取得手段(例えば、
図4の行番号情報取得部113)と、
前記第1情報と、前記第2情報と、前記管理対象のデータとを対応付けて管理する(例えば
図6のデータベース150Aのように管理する)管理手段(例えば、
図4の対象データ管理部114)と、
を備える。
【0286】
これにより、情報処理システムは、第1情報や第2情報に基づいて、管理対象のデータを検索することが可能となる。また、情報処理システムは、第1情報に基づいて管理対象のデータを検索ができることで、分散されたデータベース管理システムにおけるスケーラビリティを向上させることができる。即ち、このような情報処理システムは、所定の過去の時刻のデータを取得する際の処理コストを低減し、且つ、整合性を保ったまま、複数の情報処理システムを活用してデータベースに対する処理能力を向上させることができる。
【0287】
また、前記管理手段は、
前記管理対象のデータが有効になった時点を特定可能な第1の1情報(例えば、
図6の「xt_ins」の値)と、
前記管理対象のデータが無効になった時点を特定可能な第1の2情報(例えば、
図6の「xt_del」の値)と、
を含む情報を前記第1情報として、
前記第2情報と、前記管理対象のデータとに対応付けて管理することができる。
【0288】
これにより、このような情報処理システムは、第1情報により示される範囲が、管理対象のデータが有効になった時点と無効になった時点とに対応付けられて管理されることができる。
【0289】
また、前記第1の2情報は、前記管理対象のデータが未だ無効になっていない旨を示す情報(例えば、管理対象のデータが
図6の「a1」ならば「xt_del=∞」の値)を含む。
【0290】
これにより、第1の2情報に基づき、管理対象のデータが未だ無効になっていないことを特定することができる。
【0291】
また、前記管理手段は、
管理対象の1以上の前記データのうち、有効な1以上のデータを第1データ群(例えば
図8(A)のデータベース150B―1で管理されるデータ群)として、無効な1以上のデータを第2データ群(例えば
図8(B)のデータベース150B―2で管理されるデータ群)として夫々管理し、
前記第1データ群に含まれる管理対象のデータついては、
前記管理対象のデータが有効になった時点を特定可能な第1の1情報(例えば、
図8(A)の「xt_ins」の値)を前記第1情報として、
前記第2情報と、前記管理対象のデータとを対応付けて管理し、
前記第2データ群に含まれる管理対象のデータついては、
前記第1の1情報(例えば、
図8(B)の「xt_ins」の値)と、
前記管理対象のデータが無効になった時点を特定可能な第1の2情報(例えば、
図8(B)の「xt_del」の値)と、
を含む情報を前記第1情報として、
前記第2情報と、前記管理対象のデータとを対応付けて管理することができる。
【0292】
これにより、情報処理システムは、検索処理において、まず、第1データ群から検索対象の候補のデータを特定することができる。次に、情報処理システムは、必要に応じて、第2データ群から更に検索対象の候補のデータを特定することができる。そして、第1データ群から特定した検索対象の候補のデータと、第2データ群から特定した検索対象の候補のデータとの和集合を、総合的な検索対象の候補のデータとして特定する。第2データ群から検索対象の候補を特定する必要がない場合、情報処理システムは、第2データ群から検索対象の候補のデータを特定する処理を行う必要がない。即ち、このような情報処理システムは、検索処理に係る計算資源を節約することができる。
【0293】
また、前記管理手段は、
前記第2情報(例えば、
図11の「tid=1001」のような「Key」)と、前記管理対象のデータ(例えば、
図11の「value=ABCDEFG」)及び前記第1情報(例えば、
図11の「xt_ins=7」や「xt_del=∞」)を含む情報(例えば、管理対象のデータと論理時刻のデータを含む「Value」)とを対応付けて(例えば、
図11のKVS形式のデータベース150Cのように)管理することができる。
【0294】
これにより、情報処理システムは、1つの情報(例えば、第2情報)と対応付けられた他の情報(例えば、管理対象のデータ及び前記第1情報を含む情報)を管理するデータベース管理システムを用いて、第1情報、第2情報、及び管理対象のデータを管理することができる。
ここで、1つの情報(例えば、第2情報)と対応付けられた他の情報を管理するデータベース管理システムは、通常、他のデータベース管理システム(例えば、RDBMSにより管理されるリレーショナル形式のデータベース)と比較して性能が高い。即ち、情報処理システムは、検索処理の性能を向上させることができる。
【0295】
また、前記管理対象のデータは、前記第1情報(例えば、
図6の「xt_ins」や「xt_del」に相当するものであって、管理対象のデータが
図14の「1234567890」ならば「10」や「15」)及び前記第2情報(例えば、
図6の「tid」に相当するものであって、管理対象のデータが
図14の「1234567890」ならば「baz」)を含むファイル名(例えば、管理対象のデータが
図14の「1234567890」ならば「baz(10,15)」)のファイルとして所定の媒体(例えば、
図4の記憶部18)に記憶されており、
前記管理手段は、前記ファイル名を管理することで、前記第1情報と、前記第2情報と、前記管理対象のデータとを対応付けて管理(例えば、記憶部18に記憶された、
図14に示すファイルの一覧のように管理)することができる。
【0296】
これにより、情報処理システムは、任意のファイル形式のファイルを、管理対象のデータとして、第1情報、及び第2情報と対応付けて管理することができる。これにより例えば、情報処理システムは、特定された検索対象の候補のデータとして、ファイルをクライアントに提供することができる。
また例えば、第1情報を、データベース管理システムにおけるスキーマとして管理せず、単にファイルのファイル名として管理することができる。即ち、通常データベースにおいて処理するSQL等による処理が不要となり、検索処理における計算資源の消費を削減することができる。
【0297】
また、前記管理対象のデータが有効であった前記時間帯のうち、所定の時刻を特定可能な第3情報(例えば、明細書で言う「検索対象論理時刻st」)を取得する第3取得手段と、
前記管理手段により管理される前記第1情報(
図6のデータベース150Aの「xt_ins」、「xt_del」)、及び前記第3情報に基づき、前記第3情報により特定される時刻に有効であった前記管理対象のデータ(例えば、「検索対象論理時刻st」が「13」であった場合、
図6のデータベース150Aの「tid」が「1001」の行、「1002」であって上の行、及び「1003」の行のデータ)を、検索対象の候補のデータとして特定する特定手段と、
前記特定手段により特定された前記検索対象の候補のデータ(例えば、
図6のデータベース150Aの「tid」が「1001」の行、「1002」であって上の行、及び「1003」の行のデータを抽出した
図5(C)のデータベース150-13)から検索する検索手段と、を備える。
【0298】
これにより、管理対象のデータを、単に第1情報、及び第2情報と対応付けて管理するのみならず、任意の時点における管理対象のデータから検索対象の候補のデータを特定して、検索することができる。
【0299】
また、第1情報処理システム(例えば、
図4のストレージ管理系ノード1)により管理対象のデータが所定単位毎に管理されている場合における、当該管理対象のデータの更新を管理する第2情報処理システム(例えば、
図4のトランザクション管理系ノード3)として機能する情報処理システムであって、
前記管理対象のデータの更新の内容(例えば、
図5(B)の「tid=1002」のB列を「b2’」とする更新の内容)を特定可能な情報を、更新要求情報として取得する取得手段(例えば、
図4の更新要求情報取得部321)と、
前記更新要求情報に基づき、前記管理対象のデータが管理される前記第1情報処理システムに対して当該更新要求情報を送信することで、当該更新の要求(送信すべきか、送信した結果が処理されたか)を管理する管理手段(例えば、
図4の更新要求整合性管理部322)と、
を備え、
前記第1情報処理システムは、
前記第2情報処理システムから送信されてくる前記更新要求情報に基づき、更新をされた前記管理対象のデータを更新後管理対象のデータとして生成し、当該更新後管理対象のデータを有効化し、
前記更新後管理対象のデータが有効になった時間帯の少なくとも一部を特定可能な有効時間帯情報を取得し、
前記更新後管理対象のデータが属する前記所定単位を特定可能な所定単位特定情報を取得し、
前記有効時間帯情報と、前記所定単位特定情報と、前記更新後管理対象のデータとを対応付けて管理することができる。
【0300】
これにより、第2情報処理システムは、データベースの整合性が崩れるか否かを判定して、整合性が維持されることが確実である場合にのみ、第1情報処理装置に更新の要求を送信する。これにより、第1情報処理装置により管理されるデータベースは、更新処理に係る整合性が維持される。
【0301】
また、前記第2情報処理システムの前記管理手段は、
先の時点に取得された更新要求情報により更新される管理対象のデータ(例えば、「更新要求整合性管理部322-2により管理される更新処理により更新される管理対象のデータ」)が後の時点に取得された他の更新要求情報により更新されるか否か(例えば、「更新要求整合性管理部322-1により管理される更新処理により更新されるか否か」)に基づき、前記管理対象のデータが管理される前記第1情報処理システムに対して当該他の更新要求情報(例えば、「更新要求整合性管理部322-1により管理される更新処理」)を送信するか否かを管理することができる。
【0302】
これにより、複数の第2情報処理システムの夫々により、同時に複数の更新の要求の夫々を処理した場合であっても、整合性が維持されることが確実である場合にのみ、第1情報処理装置に書き戻すことができる。即ち、第1情報処理装置により管理されるデータベースは、更新処理に係る整合性が維持される。
また、第1情報処理装置により管理されるデータベースの整合性が維持されるからこそ、複数の第2情報処理システムの夫々により、同時に複数の更新の夫々の要求を処理することができる。
即ち、第1情報処理システムと、複数の第2情報処理システムを含む様に、情報処理システムを構成すると、スケールアウトがされた環境において、第1情報処理装置により管理されるデータベースは、更新処理に係る整合性が維持される。即ち例えば、第1情報処理システム及び第2情報処理システムを含む情報処理システムは、複数の情報処理システムを活用することで、整合性を維持したまま、データベースに対する処理能力を向上させることができる。
【符号の説明】
【0303】
1・・・ストレージ管理系ノード、2・・・クライアント系ノード、3・・・トランザクション管理系ノード、11・・・CPU、18・・・記憶部、19・・・通信部、111・・・更新要求情報取得部、112・・・論理時刻情報取得部、113・・・行番号情報取得部、114・・・対象データ管理部、121・・・索対象論理情報取得部、122・・・検索内容情報取得部、123・・・検索管理部、124・・・検索結果提示部、131・・・検索対象特定部、132・・・検索部、150・・・データベース、212・・・CPU、221・・・更新要求管理部、222・・・検索要求管理部、312・・・CPU、321・・・更新要求情報取得部、322・・・更新要求整合性管理部