WO2018203376A1 - データベースシステム、方法およびプログラム - Google Patents
データベースシステム、方法およびプログラム Download PDFInfo
- Publication number
- WO2018203376A1 WO2018203376A1 PCT/JP2017/017202 JP2017017202W WO2018203376A1 WO 2018203376 A1 WO2018203376 A1 WO 2018203376A1 JP 2017017202 W JP2017017202 W JP 2017017202W WO 2018203376 A1 WO2018203376 A1 WO 2018203376A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- data set
- transaction
- view
- identifier
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
Abstract
データベースの内容を変更する際のシステムのパフォーマンス低下を抑制することを課題とし、セッションマネージャーの夫々は、タプルID及び変更内容を含むデータセットを生成し、データセットをデータストアマネージャーへ送信し、データセットに含まれる削除対象タプルIDおよびデータセットIDをトランザクションマネージャーに送信し、トランザクションマネージャーは、削除対象タプルIDに基づく競合判定において削除対象の競合が無いと判定された場合に、データセットIDが示すデータセットにトランザクションIDを生成し、データセットIDおよびトランザクションIDをデータストアマネージャーに送信し、データストアマネージャーの夫々は、蓄積されているデータセットのうち、受信されたデータセットIDが示すデータセットに対応するトランザクションIDを設定することとした。
Description
本開示は、データベースの内容を管理し、変更(modify)するための技術に関する。
従来、多重化データベースシステムにおける同期化方法として、仲介装置が、クライアントからの処理要求を複数のサーバに転送し、各サーバから受信した応答結果のうち正当なものをクライアントに返す多重化データベースシステムにおいて、仲介装置が処理要求に順序番号を付与し、各サーバが該順序番号に基づき処理要求を並べ替えるとともに、サーバにおいてロック競合等が生じないようDBMSへの投入順序を制御する技術が提案されている(特許文献1を参照)。
また、データ複製機能にモバイルエージェントを使用し、サイトAでデータベースを更新した場合、この更新を検出して更新内容から更新トランザクションデータを生成し、サイトBに移動して更新トランザクションを実行し、データベースを更新する分散データベースシステムが提案されている(特許文献2を参照)。
また、データ操作のログを蓄積し、ログ形式のままデータを管理するデータ管理方法が各種提案されている(非特許文献1および2を参照)。
Hoang Tam Vo, Sheng Wang, Divyakant Agrawal, Gang Chen, Beng Chin Ooi, "LogBase: A Scalable Log-structured Database System in the Cloud"
Philip A. Bernstein, Colin W. Reid, Sudipto Das, "Hyder - A Transactional Record Manager for Shared Flash"
従来、データベース管理システム(DBMS)では、所定の形式を有するテーブル等が書き換えられることによってデータベースの内容が変更されるため、データベースが複数ノードによって管理されるシステムに従来の仕組みをそのまま適用した場合、データベースの内容変更(タプルの更新や削除等)を行う場合、変更によってデータベース内に矛盾が生じないことを保証する競合チェックのためにノード毎にロックが取得され、トランザクションマネージャーが全てのロックの取得に成功したか否かを確認し、ロックの取得が全て成功していれば、テーブルの実体が書き換えられ(タプルの更新や削除)、コミット完了と判定されることとなる(所謂2相コミット)。
このため、上述の2相コミットのような従来の技術では、複数ノードによって管理されるデータベースにおいて、データベース内で矛盾が生じないように各ノードが管理する部分を変更する場合、複雑な処理が必要となり、システムの複雑化ひいてはパフォーマンスの低下を招いていた。
本開示にかかる技術は、上記した問題に鑑み、データベース内で矛盾が生じないようにデータベースの内容を変更する際に、従来に比べてシステムのパフォーマンス低下を抑制することを課題とする。
本開示では、上記した課題を解決するために、以下の手段を採用した。即ち、本開示に係るデータベースシステムは、複数のセッション管理ノードと、夫々がデータストアを管理する複数のデータストア管理ノードと、少なくとも1のトランザクション管理ノードとを備えるデータベースシステムであって、前記複数のセッション管理ノードの夫々は、データベースの内容が変更される場合に、変更の対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報と、該データ単位の変更内容と、を含むデータセットを生成するデータセット生成手段と、前記データセットを、少なくとも何れかの前記データストア管理ノードへ送信し、更に、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報、および前記データセットを識別可能なデータセット識別子を、前記トランザクション管理ノードに送信する、データセット送信手段と、を備え、前記トランザクション管理ノードは、前記セッション管理ノードの前記データセット送信手段によって送信された、前記削除対象識別情報および前記データセット識別子を取得する情報取得手段と、該データベースシステムにおいて変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセット識別子が示すデータセットのための、トランザクションの時系列における該データセットの位置を把握可能なトランザクション識別子を生成する識別子生成手段と、前記データセット識別子と該データセット識別子に対応する前記トランザクション識別子とを含む識別子セットを、前記複数のデータストア管理ノードのうち、少なくとも前記データセット送信手段によって前記データセットが送信されたデータストア管理ノードに送信する識別子送信手段と、を備え、前記複数のデータストア管理ノードの夫々は、前記セッション管理ノードから、前記データセットを受信するデータセット受信手段と、受信された前記データセットを蓄積するデータベース管理手段と、前記トランザクション管理ノードによって送信された前記識別子セットを受信する識別子受信手段と、を備え、前記データベース管理手段は、蓄積されている前記データセットのうち、前記識別子セットに含まれるデータセット識別子によって示されるデータセットに、該データセット識別子に対応する前記トランザクション識別子を設定する、データベースシステムである。
本開示は、情報処理装置、システム、コンピューターによって実行される方法またはコンピューターに実行させるプログラムとして把握することが可能である。また、本開示は、そのようなプログラムをコンピューターその他の装置、機械等が読み取り可能な記録媒体に記録したものとしても把握できる。ここで、コンピューター等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的または化学的作用によって蓄積し、コンピューター等から読み取ることができる記録媒体をいう。
本開示に係る技術によれば、データベース内で矛盾が生じないようにデータベースの内容を変更する際に、従来に比べてシステムのパフォーマンス低下を抑制することが可能となる。
以下、本開示に係るシステム、情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
<システムの構成>
以下、複数のノードを有するデータベースシステムにおいて、データベースの内容の変更命令(INSERT命令、DELETE命令、UPDATE命令等)を含むトランザクションが処理される場合に、当該変更命令に係る変更内容を、当該データベースシステムに属する複数のノードが管理する夫々のデータストアにおいて管理する技術を説明する。ここで、データストアとは、本開示に係るデータベースシステムによって管理されるデータベースの一部または全部の記録、またはデータベースの一部または全部が保持される場所、を示す語である。なお、本開示に係るデータベース管理技術は、本実施形態において例示されたシステムに限らず、複数のノードを有するデータベースシステムに適用可能である。また、本開示に係るデータベース管理技術を採用可能なデータベースシステムは、特定の種類のデータベースシステムに限定されない。
以下、複数のノードを有するデータベースシステムにおいて、データベースの内容の変更命令(INSERT命令、DELETE命令、UPDATE命令等)を含むトランザクションが処理される場合に、当該変更命令に係る変更内容を、当該データベースシステムに属する複数のノードが管理する夫々のデータストアにおいて管理する技術を説明する。ここで、データストアとは、本開示に係るデータベースシステムによって管理されるデータベースの一部または全部の記録、またはデータベースの一部または全部が保持される場所、を示す語である。なお、本開示に係るデータベース管理技術は、本実施形態において例示されたシステムに限らず、複数のノードを有するデータベースシステムに適用可能である。また、本開示に係るデータベース管理技術を採用可能なデータベースシステムは、特定の種類のデータベースシステムに限定されない。
図1は、本実施形態に係るデータベースシステムの構造を例示する図である。本実施形態に係るデータベースシステムでは、複数の情報処理装置(ノード)が、ネットワークを介して互いに通信可能に接続されている。本実施形態に係るデータベースシステムでは、複数のノードのうちの少なくとも1つが、トランザクションマネージャーとしての役割を有するトランザクション管理ノードである。また、その他の複数のノードのうちの一部は、セッションマネージャーとしての役割を有するノードであり、セッション管理ノードとして動作する。また、その他の複数のノードのうちの一部は、データストアマネージャーとしての役割を有するノードであり、データストア管理ノードとして動作する。更に、その他の複数のノードのうちの一部は、ビューマネージャーとしての役割を有するノードであり、ビュー管理ノードとして動作する。
但し、本開示に係るデータベース管理技術を適用可能なデータベースシステムは、本実施形態に例示した構成のデータベースシステムに限定されない。例えば、セッションマネージャーとデータストアマネージャーとは、同一のノードにおいて動作してもよい。また、ビューを参照しないデータベースシステムを構築する場合には、ビューマネージャーは省略されてよい。何れにしても、本実施形態に係るデータベースシステムは、複数のセッション管理ノードと、複数のデータストア管理ノードと、少なくとも1のトランザクション管理ノードとを備える。
本実施形態において、データストア管理ノードは、夫々、自身において動作するデータストアマネージャーによって管理されるデータストアを有しており、これらのデータストアは、本開示に係るデータベースシステムによって管理されるデータベースの一部または全部に係るデータを有している。本開示に係るデータベース管理技術では、データベースに加えられる変更の内容を含む変更用データセットが、何れかのセッションマネージャーによって生成され、システムに属する1または複数のデータストアマネージャーに伝播され、伝播された変更用データセットにトランザクションIDが付されて各データストアで管理されることで、データベース全体の変更が完了する。このため、本実施形態に係るシステムでは、変更用データセットの発生時に、同一の変更用データセットを複数のデータストアマネージャーに対して送信することで、データストア管理を冗長化でき、データベースのレプリケーションを実現できる。データストア管理の冗長化は、例えば、変更用データセットの送信先のノードIDを複数指定することでも実現可能であるし、単一のノードIDに対して複数のデータストア管理ノードを用意することでも実現可能である。データベース管理技術の詳細については、後述する。
また、本実施形態において、ビュー管理ノードは、夫々、自身において動作するビューマネージャーによって管理されるビューを有している。本実施形態において、ビューとは、あるトランザクションIDによって特定される時点におけるデータを、検索条件によって絞り込み、且つ検索に適した形に整理したものである。この検索条件は、当該検索条件に係るビューを識別可能な情報と共に、データストアマネージャーおよびセッションマネージャーに通知される。なお、ビューがデータを保持する形式は限定されない。ビューは、例えば、表(テーブル)やグラフ等の形式でデータを保持することができる。本実施形態では、1のビューマネージャーが1のビューを管理することを前提として説明する。このため、本実施形態では、ビューのIDによってビューマネージャーを識別することが可能であるし、ビューを生成するために用いられる検索条件(ビューの検索条件)は、ビューおよびビューマネージャーを識別するための情報としても用いることができる。但し、1のビューマネージャーによって複数のビューが管理されてもよい。
また、ビューによってカバーされるデータの範囲は任意に設定可能であり、複数のビューによってカバーされるデータは互いに重複してもよいし、何れのビューによってもカバーされないデータがあってもよい。ビューによってカバーされていないデータについても、データストアマネージャーが変更用データセットの形式で管理しているため、全てのデータを検索することが可能である。即ち、本実施形態に係るシステムによれば、変更用データセットによるデータ管理でデータ変更の処理負荷を低減させつつ、検索を高速化したいデータについてはビューでカバーすることが可能である。
本実施形態において、複数のビューまたはビューマネージャー(ビュー管理ノード)は、階層関係を有し、上位ビューは、下位ビューによってカバーされるデータを参照して構築することができる。ビューの階層関係が3層以上に及び、上位層のビューが下位層のビューを参照する場合、これらのビューが属する階層は隣接していなくてもよい(例えば、第3層のビューが第1層のビューを参照することが出来る)。
更に、ネットワークには、ユーザー端末9が接続されている。本実施形態に開示されたデータベースシステムは、何れのセッションマネージャーも、ユーザー端末9等から送信されたクエリを受け付けて実行することが可能なデータベースシステムである。
図2は、本実施形態に係るノードのハードウェア構成の概略を示す図である。ノードは、CPU(Central Processing Unit)11、RAM(Random Access Memory)12およびROM(Read Only Memory)13等からなる制御部10と、ストレージ(補助記憶装置)14と、通信インターフェース15と、を備えるコンピューターである。但し、ノードの具体的なハードウェア構成に関しては、実施の態様に応じて適宜省略や置換、追加が可能である。また、ノードは、単一の装置に限定されない。ノードは、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。なお、各ノードが管理するデータストアは、ストレージ14上に構築されてもよいし、RAM12上に構築されてもよく、データストアの構築場所は限定されない。
ストレージ14には、オペレーティングシステムとともに、各種プログラムが格納されており、当該プログラムをバスおよびRAM12を介してCPU11が読み込んで実行することによって、前述のノードとしての機能が実現される。なお、各マネージャーが動作するノードは、何れも同様のハードウェア構成を有してよい。
図3は、本実施形態に係るノードの機能構成の概略を示す図である。先述の通り、本実施形態において、各ノードは、セッションマネージャー、トランザクションマネージャー、データストアマネージャーおよびビューマネージャーの何れかの役割を有する。
はじめに、セッション管理ノードの機能構成を説明する。本実施形態において、セッションマネージャーとしての役割を有する複数のノードの夫々は、セッションマネージャー用プログラムをバスおよびRAM12を介してCPU11が読み込んで実行することによって、クエリ受付部21、クエリ処理部22、スナップショット特定用情報取得部23、処理用データ取得部24、データセット生成部25およびデータセット送信部26を備えるセッション管理ノードとして機能する。
クエリ受付部21は、ユーザー端末9から送信された、データベースシステムに対するクエリを受け付ける。本実施形態に係るデータベースシステムでは、セッションマネージャーを実行するセッション管理ノードが複数あり、これら複数のセッション管理ノードの何れも、ユーザー端末9からのクエリを受け付けることが出来る。
クエリ処理部22は、クエリ受付部21によって受け付けられたクエリを処理する。
スナップショット特定用情報取得部23は、トランザクションマネージャーから、処理に用いられるスナップショットを特定可能な情報を取得する。ここで、スナップショットとは、トランザクションが順次コミットされることでデータベースの内容が変化していく時系列における、ある時点におけるデータベースの内容を示す語である。なお、本実施形態において、スナップショット特定用情報取得部23によって取得される情報は、トランザクションID(以下、「スナップショット特定用トランザクションID」と称する)である。但し、取得される情報は、トランザクションの処理に用いられるデータの一貫性を保証するためのものであるため、スナップショットを特定可能な情報であればよく、トランザクションIDに限られない。例えば、スナップショットを特定可能な情報は、トランザクションIDではなく、複数のトランザクションが順次処理される時系列における論理上のある時点を特定可能な情報であってもよい。
処理用データ取得部24は、クエリの処理に用いるデータを、複数のデータストアマネージャーおよび複数のビューマネージャーの少なくとも何れかから取得する。この際、処理用データ取得部24は、データストアマネージャーまたはビューマネージャーに対して、スナップショット特定用情報取得部23によって取得された情報(スナップショット特定用トランザクションID)を指定することで、所定のスナップショットにおけるデータを取得する。
データセット生成部25は、取得されたデータに係るトランザクションに、データベースの内容を変更する変更命令が含まれる場合に、当該変更命令に基づく変更をデータベースに加えることなく、変更対象のタプルのタプルIDおよび変更内容を含む変更用データセットを生成する。即ち、本実施形態に係るデータベースシステムでは、セッションマネージャーのデータセット生成部25によって変更用データセットが生成されたことは、データベースに変更内容が反映されたことを意味しない。本実施形態に係るデータベースシステムでは、セッションマネージャーのデータセット生成部25によって生成された変更用データセットがデータストアマネージャーに送信され、データストアマネージャーによって当該変更用データセットにトランザクションIDが付与されることで、データベースに変更内容が反映される。
なお、本実施形態では、データベースにおいて個々のレコードとして扱われるデータ単位をタプルと称して説明しているが、本発明を適用可能なデータ単位は、一般的なデータベースシステムにおいてタプルと称されるものに限定されない。本開示に係るデータベースシステムのデータストアにおいて、データは、リレーショナルデータベースにおいて用いられる表形式等ではなく、変更用データセットの形式のまま管理される。そのため、本発明では、リレーショナルデータベースにおけるタプル以外のデータ単位も統一的に扱うことができる。タプルIDは、複数のデータストアマネージャーによって管理される複数のデータストア間において、変更の対象となるタプル(データ単位)を一意に把握可能な(ユニークな)対象識別情報である。本実施形態において、データセット生成部25は、複数のセッション管理ノード毎に異なる値(例えば、ノードID)をタプルIDに含めることで、ユニークなタプルIDを生成する。但し、変更用データセットは、変更命令に基づく当該データベースの変更内容、および当該データベースシステムにおいて変更の対象となるタプルを一意に把握可能な情報を含んでいればよく、これらの情報は、本実施形態における例示に限定されない。
図4は、本実施形態において生成される変更用データセットの構造を示す図である。但し、変更用データセットの具体的な構成、フォーマットまたは生成方法は、本実施形態における例示に限定されない。本実施形態における変更用データセットは、変更命令に基づく変更の対象となるタプルを含むデータをRAM12上に読み出して、当該データに対して変更命令に基づく操作を行うことで生成される情報であり、DELETEデータセット(DELETE命令対象タプルリスト)およびINSERTデータセット(INSERT命令対象タプルリスト)を含む。
また、変更用データセットには、スナップショット特定用トランザクションID及びデータセットIDが設定されている。データセットIDは、変更用データセットを一意に識別可能な識別情報であり、変更用データセットの生成時に付与される。
DELETEデータセットおよびINSERTデータセットには、変更命令の対象となるタプルを示す情報が含まれる。具体的には、DELETEデータセットには、削除の対象となるタプルのタプルID(図4に示す例では、2)が含まれ、INSERTデータセットには、追加されるタプルのタプルID(図4に示す例では、13)および追加されるデータの内容が含まれる。なお、本実施形態では、UPDATE命令はINSERT命令とDELETE命令の組み合わせとして扱われ、UPDATE命令による更新前のデータを含むタプルのタプルIDはDELETEデータセットに含まれ、UPDATE命令による更新後のデータ及び当該データを含むタプルのタプルIDはINSERTデータセットに含まれる。但し、UPDATE命令による更新前のデータを含むタプルのタプルIDと、更新後のデータ及び当該データを含むタプルのタプルIDとが格納されるデータセットは、本実施形態に開示された例に限定されない。例えば、UPDATE命令にかかるこれらのタプルID及びデータは、まとめてUPDATEデータセットに含まれるように構成されても良い。
データセット送信部26は、変更用データセットを、少なくとも、変更対象のデータを含むデータストアを管理するデータストアマネージャーへ到達するように送信する。更に、データセット送信部26は、当該データセットに含まれるタプルIDのうち少なくとも削除対象のデータ単位を示す削除対象タプルID(DELETEデータセットに記載されたタプルID)およびデータセットIDを、トランザクションマネージャーに送信する。
次に、トランザクション管理ノードの機能構成を説明する。本実施形態において、トランザクションマネージャーとしての役割を有するノードは、トランザクションマネージャー用プログラムをバスおよびRAM12を介してCPU11が読み込んで実行することによって、情報取得部31、競合判定部32、変更データ単位情報蓄積部33、識別子生成部34および識別子送信部35を備えるトランザクション管理ノードとして機能する。
情報取得部31は、セッションマネージャーのデータセット送信部26によって送信された、削除対象タプルID(DELETEデータセットに記載されたタプルID)およびデータセットIDを取得する。
競合判定部32は、情報取得部31によって取得されたDELETEデータセットに記載された削除対象タプルIDと、変更データ単位情報蓄積部33によって蓄積された、変更済のタプルを示す情報(本実施形態では削除されたタプルのタプルID)と、を比較し、一致するタプルIDが存在するか否かを確認することで、削除対象の競合の有無を判定する。競合判定部32によって削除対象の競合が有ると判定された場合、変更用データセットに基づく変更は中止される。
変更データ単位情報蓄積部33は、競合判定部32によって削除対象の競合が無いと判定された場合に、情報取得部31によって取得された削除対象タプルIDを、当該データベースシステムにおいて変更されたタプルを示す情報(何れのタプルが何れの時点で変更されたか、を把握可能な情報)として蓄積する。
識別子生成部34は、競合判定部32によって削除対象の競合が無いと判定された場合に、変更用データセットに対して、当該変更用データセットに係るトランザクションを識別するためのトランザクションIDを生成(採番)する。ここで生成されるトランザクションIDは、トランザクションの処理に係る論理上の時系列における位置を把握可能な識別子である。本実施形態では、トランザクションIDとして、昇順の整数が用いられる。
識別子送信部35は、データセットIDと当該データセットIDに対応するトランザクションIDとを含む識別子セットを、複数のデータストアマネージャーのうち、少なくとも、データセット送信部26によって当該データセットIDに対応するデータセットが送信されたデータストアマネージャーに送信する。識別子セットは、全てのデータストアマネージャーに対して送信されてもよい。
次に、データストア管理ノードの機能構成を説明する。本実施形態において、データストアマネージャーとしての役割を有する複数のノードの夫々は、データストアマネージャー用プログラムをバスおよびRAM12を介してCPU11が読み込んで実行することによって、処理用データ送信部41、データセット/識別子受信部42、データベース管理部43、集合データセット生成部44、データ抽出部45、ビュー用データ生成部46およびビュー用データ送信部47を備えるデータストア管理ノードとして機能する。
処理用データ送信部41は、セッションマネージャーから、スナップショットを特定可能な情報(本実施形態では、スナップショット特定用トランザクションID)を指定したデータ要求を受信した場合に、指定されたスナップショットまでの変更用データセットに基づいて生成された処理用データを、セッションマネージャーに対して送信する。
データセット/識別子受信部42は、セッションマネージャーによって送信された変更用データセット、およびトランザクションマネージャーによって送信された識別子セットを受信する。
データベース管理部43は、本開示に係るデータベース管理技術によって管理されるデータベースの一部または全部を、データストアとして管理する。ここで、本実施形態に係るデータベース管理部43は、受信されたデータセットを、トランザクションIDを設定して蓄積することで、データベースを管理する。より具体的には、データセット/識別子受信部42によって識別子セットが受信されると、データベース管理部43は、識別子セットに含まれるデータセットIDによって示されるデータセットを特定し、当該データセットに、当該データセットIDに対応するトランザクションIDを設定する。
集合データセット生成部44は、所定のトランザクションIDによって指定された時点のデータセット及びより古いデータセットに含まれる変更内容を連結し、DELETEデータセットに示されたデータを除くことで、所定のトランザクションIDによって指定された時点のデータセット及びより古いデータセットを統合し、集合データセットを生成する。集合データセットが生成されると、データベース管理部43は、集合データセットにトランザクションIDを設定することで、当該集合データセットを、蓄積されたデータセットの1つとして管理する。本実施形態では、集合データセットに、始点を示すトランザクションIDと、終点を示すトランザクションIDと、の2つのトランザクションIDが設定されることで、当該集合データセットに含まれるトランザクションの範囲を示す。ここで、始点を示すトランザクションIDとは、集合データセットに連結されたオリジナルのトランザクションのうち最も古いトランザクションのIDであり、終点を示すトランザクションIDとは、集合データセットに連結されたオリジナルのトランザクションのうち最も新しいトランザクションのIDである。また、データベース管理部43は、集合データセットへのトランザクションIDの設定に伴って、当該集合データセットの生成に用いられたデータセットを削除する。
データ抽出部45は、データベース管理部43によって蓄積されているデータセットのうち、所望のトランザクションIDによって指定された時点のデータセット及びより古いトランザクションIDが設定されたデータセットから、所望の検索条件に合致するデータを抽出する。具体的には、データ抽出部45は、INSERTデータセットに含まれるタプルの変更内容を検索することによって索出されたデータから、DELETEデータセットに記載された削除対象タプルIDに示されたデータを除くことで、所望の検索条件に合致するデータを抽出する。ここでデータ抽出部45は、検索対象トランザクションIDが、以後反映されないデータセットの範囲を示す特定トランザクションID(本実施形態では、最新のトランザクションID)よりも新しい場合、検索対象トランザクションIDが、当該特定トランザクションIDと同じか又はより古いトランザクションIDとなるのを待ってから、抽出を行う。
ビュー用データ生成部46は、データベース管理部43によって蓄積されているデータセットに基づいて、予め設定された検索条件に合致するデータを含むビュー用データセットを生成する。なお、ここで生成されるビュー用データセットの構成は、図4を用いて説明した変更用データセットの構成と概略同様であり、生成されたビュー用データセットには、対応するトランザクションIDが設定される。
ビュー用データ送信部47は、データベース管理部43によって蓄積されているデータセットに基づいて生成された、予め設定された検索条件に合致するデータを含むビュー用データセットを、ビューマネージャーに送信する。
次に、ビュー管理ノードの機能構成を説明する。本実施形態において、ビューマネージャーとしての役割を有する複数のノードの夫々は、ビューマネージャー用プログラムをバスおよびRAM12を介してCPU11が読み込んで実行することによって、ビュー用データ取得部51、ビュー管理部52、ビュー用データ生成部53、ビュー用データ送信部54、ビュー用トランザクションID更新部55、ビュー変更部56、ビュー検索部57、ビュー検索結果補正部58および特定トランザクションID決定部59を備えるビュー管理ノードとして機能する。
ビュー用データ取得部51は、予め設定された検索条件に合致するデータを含むビュー用データセットを、データストアマネージャーまたは他のビューマネージャーから取得する。
ビュー管理部52は、ビュー用データ取得部51によって取得されたビュー用データセットに含まれるデータのうち、ビュー用トランザクションIDによって指定された時点のデータ及びより古いデータの集合を、予め設定された検索条件およびビュー用トランザクションIDに対応するビューとして保持する。ここで、ビュー用トランザクションIDとは、ビューに対応するスナップショットを示すトランザクションIDである。また、ビュー管理部52は、ビュー変更部56によってビューが変更された場合も、変更されたビューを、更新されたビュー用トランザクションIDに対応するビューとして保持する。
ビュー用データ生成部53は、他のビューに予め設定された検索条件(本実施形態では、当該ビュー用データ送信部54を備えるビューより上位のビューに予め設定された検索条件)に合致するデータを含む第二のビュー用データセットを生成する。ここで、第二のビュー用データセットは、上位ビューによって管理されるビューの変更のために生成されるものである。
また、ビュー用データ生成部53は、当該ビューマネージャーによって管理されているビューに基づいて第二のビュー用データセットを生成してもよいし、ビュー用データ取得部51によって取得されたビュー用データセットに基づいて第二のビュー用データセットを生成してもよい。ビュー用データセットに基づいて第二のビュー用データセットを生成する場合、ビュー用データ生成部53は、取得されたビュー用データセットのうち、ビュー用トランザクションIDより新しいトランザクションIDが設定されたデータセットに基づいて、第二のビュー用データセットを生成する。
ビュー用データ送信部54は、第二のビュー用データセットを、当該第二のビュー用データセットの生成に用いられた検索条件に係るビューを管理するビューマネージャー(本実施形態では、上位ビューを管理するビューマネージャー)に送信する。
ビュー用トランザクションID更新部55は、ビュー用トランザクションIDを更新する。
ビュー変更部56は、ビュー管理部52によって管理されているビューを、更新されたビュー用トランザクションIDによって指定された時点のビュー用データセット及びより古いビュー用データセットを用いて変更する。
ビュー検索部57は、指定された検索条件に従ってビューを検索する。
ビュー検索結果補正部58は、検索対象のスナップショットを示す検索対象トランザクションIDが、ビュー用トランザクションIDよりも新しい場合に、ビュー検索部57による検索結果を補正する。ビュー検索結果補正部58は、検索結果の補正に、ビュー用データ取得部51によって取得されたがビューに未反映のビュー用データセットのうち、検索対象トランザクションIDまでのビュー用データセットを用いる。但し、ここでビュー検索結果補正部58は、検索対象トランザクションIDが、以後取得されないビュー用データセットの範囲を示す特定トランザクションIDよりも新しい場合、検索対象トランザクションIDが、当該特定トランザクションIDと同じか又はより古いトランザクションIDとなるのを待ってから、補正を行う。
特定トランザクションID決定部59は、ビュー用データセットを生成する夫々のノードから、ノード毎のビュー用データセット生成部46、53によるビュー用データセット生成処理の進行時点を示すトランザクションIDを収集し、最もビュー用データセット生成処理の進行が遅れているノードにおける進行時点を示すトランザクションIDを、特定トランザクションIDとして決定する。即ち、特定トランザクションID決定部59は、各ノードからノード毎の現在の処理進行時点を示すトランザクションIDを収集してこの値をノード毎に管理し、ノード毎の最新の値を比較して、比較の結果決定された最小の値(最も古い処理時点を指す値)を、特定トランザクションIDとして決定する。
<処理の流れ>
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
図5から図10は、本実施形態におけるデータベース管理処理の流れを示すフローチャートである。図5のフローチャートに示された処理は、データベースシステムに属する何れかのセッション管理ノードのクエリ受付部21によって、ユーザー端末9から送信されたクエリが受け付けられ、また、データベースの内容の変更命令を含むトランザクションの開始命令が受信されたことを契機として開始される。
ステップS101からステップS105では、トランザクションが開始され、処理に用いられるスナップショット特定用トランザクションIDが取得される。トランザクションの開始命令が受信されると(ステップS101)、スナップショット特定用情報取得部23は、トランザクションマネージャーに対して、処理に用いられるスナップショット特定用トランザクションIDを問い合わせる(ステップS102およびステップS103)。そして、トランザクションマネージャーは、返信の時点において最後に付与されたトランザクションIDをセッションマネージャーに送信し(ステップS104)、セッションマネージャーのスナップショット特定用情報取得部23は、このトランザクションIDを取得する(ステップS105)。なお、本実施形態において、トランザクションマネージャーは、返信の時点において最後に付与された(即ち、最新の)トランザクションIDを送信することとしているが、この際に送信されるトランザクションIDは、最新のものに限定されない。その後、本フローチャートに示された処理は終了する。
図6のフローチャートに示された処理は、図5に示された処理においてスナップショット特定用トランザクションIDが取得されたことを契機として開始される。
ステップS106では、トランザクションに含まれる命令が読み出される。処理用データ取得部24は、クエリ受信部によって受信されたクエリに含まれる、次に処理されるべき命令を読み出す。その後、処理はステップS107へ進む。
ステップS107では、当該トランザクションに係る変更用データセット生成/更新処理を終了するか否かが判定される。具体的には、クエリ処理部22は、当該トランザクションにおける次の命令がコミット命令である場合、当該トランザクションに係る変更用データセット生成/更新処理を終了する。当該トランザクションにおける次の命令がコミット命令ではない場合、処理はステップS108へ進む。
ステップS108からステップS112では、ステップS106で読み出された命令の処理に必要なデータが取得される。ステップS108からステップS112では、処理用データ取得部24は、データストアマネージャーより高速なデータ取得に適したビューマネージャーに対して、データの要求を行う。処理用データ取得部24は、読み出された命令に基づいて作成された検索条件、およびステップS105で取得されたスナップショット特定用トランザクションIDをビューマネージャーに通知して、データを要求する(ステップS108)。そして、送信されたデータ要求は、ビューマネージャーによって受信される(ステップS109)。
ステップS109でデータ要求を受信したビューマネージャーは、当該ビューマネージャーが管理するビューから、検索条件およびスナップショット特定用トランザクションIDに応じたデータを取得する(ステップS110)。データ要求を受信したビューマネージャーがデータを取得する処理の流れは、図12を用いて後述する。
データ要求を受信したビューマネージャーは、ステップS110で取得された処理用データを、データ要求の送信元セッションマネージャーに対して送信する(ステップS111)。その後、データ要求の送信元セッションマネージャーの処理用データ取得部24は、送信されたデータを受信することで、処理用データを取得する(ステップS112)。その後、処理はステップS113へ進む。
ステップS113では、データストアマネージャーからのデータ取得が必要か否か判定される。セッションマネージャーは、ステップS112までのビューマネージャーからの処理用データの取得処理で、クエリ処理部22による処理に必要なデータが全て揃ったか否かを判定する。これは、ビューによってカバーされていないデータが存在する可能性があり、処理に必要なデータがビューマネージャーから取得できない可能性があるためである。
例えば、ビューによってカバーされるデータの範囲が、データ取得対象のテーブルの一部である場合、当該テーブルに含まれるデータのうち、ビューによってカバーされているデータについては、ビューマネージャーへの問い合わせで取得される。一方、データ取得対象のテーブルのうち、ビューによってカバーされていないデータについては、データストアアネージャーから取得する必要がある。ここで、ステップS113における判定の具体的な方法としては、テーブルにおいてビューによってカバーされる範囲を示すリスト等の情報(例えば、タプルIDや、テーブルの主キー等のタプルの内容を用いてビューによるカバーの有無を示すことが出来る)を設定しておき、このリストを参照することで、ビューマネージャーへの問い合わせのみで必要なデータが全て揃ったか否かを判定する方法が採用されてよい。
また、ビューによってカバーされるデータの範囲が、テーブル単位で設定される場合、より単純化した判定方法を採用することも出来る。例えば、テーブルがビューによってカバーされているか否かを判定可能な情報をテーブル単位で設定し、ビューによってカバーされていないテーブルについては、データストアアネージャーに問い合わせる方法を採用することとしてもよい。
判定の結果、処理に必要なデータが全て揃った(データストアマネージャーからのデータ取得が不要である)と判定された場合、処理はステップS119へ進む。一方、判定の結果、処理に必要なデータが不足している(データストアマネージャーからのデータ取得が必要である)と判定された場合、処理はステップS114へ進む。
ステップS114からステップS118では、ステップS106で読み出された命令の処理に必要なデータが取得される。処理用データ取得部24は、検索条件およびスナップショット特定用トランザクションIDを、データストアマネージャーに通知して、データを要求する(ステップS114)。
データ要求を受信した(ステップS115)データストアマネージャーの処理用データ送信部41は、受信されたスナップショット特定用トランザクションIDによって指定された時点の変更用データセット及びより古い変更用データセットを、受信された検索条件で検索し(ステップS116)、検索の結果得られた処理用データを、セッションマネージャーに対して送信する(ステップS117)。ここで、データ要求を受信したデータストアマネージャーがデータを取得する処理の流れの詳細は、図11を用いて後述する。その後、処理用データ取得部24は、データストアマネージャーから送信されたデータを受信することで、所望の処理用データを取得する(ステップS118)。その後、処理はステップS119へ進む。
ステップS119では、命令処理及び変更用データセット生成/更新処理が実行される。本ステップで実行される処理の詳細については、図7を用いて詳述する。その後、処理はステップS106へ戻る。
図7は、本実施形態においてセッションマネージャーによって実行される、命令処理及び変更用データセット生成/更新処理の流れを示す図である。本フローチャートは、図6に示されたステップS119の処理の内容を詳細に示したものである。
ステップS121では、取得された処理用データから、重複データが削除される。上述の通り、ビューは検索条件に基づいてデータストアマネージャー等から得られたデータを用いて生成されるものであるため、ステップS112でビューマネージャーから取得されたデータと、ステップS118でデータストアマネージャーから取得されたデータには、同一のタプルに関するデータの重複が生じ得る。このため、処理用データ取得部24は、ステップS112及びステップS118で取得されたデータに、同一のタプルに係るデータが重複して含まれている場合、重複するデータの一方を削除することで、データの重複を解消させる。その後、処理はステップS122へ進む。
なお、本実施形態では、データを取得した後に重複を解消する手法を採用しているが、このような手法に代えて、データ要求の時点で重複が発生しないように、ステップS108及びステップS114で送信されるデータ要求の内容を変更する手法が採用されてもよい。
ステップS122及びステップS123では、命令処理のために取得されたデータに対して、当該トランザクションにおいて生成済みの変更用データセットに基づいた調整が加えられる。これは、ステップS124における命令実行を、同一トランザクション内において既に実行された命令の実行結果を正しく反映したものとするための処理である。クエリ処理部22は、当該トランザクションについて既に1回以上変更用データセット生成/変更処理が実行されており、当該トランザクションに係る変更用データセットが生成されている場合、当該変更用データセットの内容を用いて、ステップS118までの処理で取得されたデータを調整する。
より具体的には、クエリ処理部22は、当該変更用データセット内のINSERTセットを検索条件(ステップS108及びステップS114で用いられた検索条件)で検索し、検索の結果抽出されたタプルを、ステップS118までに得られた取得データに追加する(ステップS122)。更に、クエリ処理部22は、当該変更用データセット内のDELETEセットに示されたタプルを、当該取得データから除外する(ステップS123)。その後、処理はステップS124へ進む。
ステップS124では、命令が実行される。クエリ処理部22は、ステップS108からステップS118までの処理で取得され、ステップS122及びステップS123で調整された結果得られた取得データを用いて、ステップS106で読み出された命令を処理する。即ち、クエリ処理部22は、データストアマネージャーおよび/またはビューマネージャーからの取得データ、及び当該トランザクションにおいて生成済みの変更用データセットに基づいて、命令を処理する。その後、処理はステップS125へ進む。
ステップS125からステップS127では、変更用データセットが生成または更新される。データセット生成部25は、ステップS124における命令実行の結果得られた変更をデータベースに反映することなく、変更対象のタプルIDおよび変更内容を含む変更用データセット(図4を参照)を生成または更新する。
ここで、命令実行の結果発生した新たな削除対象タプルには、当該トランザクションのこれまでの処理において新たに追加されたタプルを対象とするものと、そうでないものとが存在する。このため、データセット生成部25は、命令実行の結果発生した新たな削除対象タプルのうち、当該トランザクションに係る変更用データセット内のINSERTセットに存在するタプル(当該トランザクションのこれまでの処理において新たに追加されたタプル)については、当該INSERTセットから削除する(ステップS125)。また、データセット生成部25は、命令実行の結果発生した新たな削除対象タプルのうち、当該トランザクションに係る変更用データセット内のINSERTセットに無い新たな削除対象タプルについては、当該トランザクションに係る変更用データセット内のDELETEセットに追加する(ステップS126)。そして、データセット生成部25は、命令実行の結果発生した新たに追加されるタプル(タプルID及び当該タプルのデータ内容)を、当該トランザクションに係る変更用データセット内のINSERTセットに追加する(ステップS127)。
ここで、変更命令がUPDATE命令またはINSERT命令である場合、INSERTデータセットのタプルIDには、新たに採番された、データベースシステム全体において(より具体的には、複数のデータストアマネージャーによって管理される複数のデータストア間において)ユニークなタプルIDが書き込まれる。また、当該トランザクションに係る変更用データセットが新たに生成される場合、当該変更用データセットには、ステップS105で取得された、スナップショット特定用トランザクションIDが設定される。その後、本フローチャートに示された処理は終了する。
なお、本実施形態では、命令実行の結果発生した新たな削除対象タプルが、当該トランザクションに係る変更用データセット内のINSERTセットに存在するタプルである場合、命令実行の都度、新たな削除対象タプルを変更用データセット内のINSERTセットから削除する方法を採用している(ステップS125を参照)。但し、上述した方法に代えて、他の方法が採用されてもよい。例えば、トランザクション内での命令実行で発生する削除対象タプルを、命令が順次実行されている間はDELETEセットに蓄積しておき、INSERTセットのデータストアマネージャーへの送信(後述するステップS206)前に、INSERTセットとDELETEセットとを比較し、DELETEセットとINSERTセットとの間で重複するタプルを相殺することとしてもよい。
図8のフローチャートに示された処理は、セッションマネージャーによって生成された変更用データセットに係るコミット命令が読み出されたことを契機として実行される。
ステップS201およびステップS202では、変更用データセットに含まれるINSERTデータセット(変更内容)及び当該変更用データセットに設定されたデータセットIDが、データストアマネージャー宛に送信される。ここで、各セッションマネージャーのデータセット送信部26は、複数のデータストアマネージャーのうち、少なくとも、INSERT命令によってデータが追加されるデータストアを管理するデータストアマネージャーを決定し(ステップS201)、データセットIDおよびINSERTデータセットを、決定されたデータストアマネージャーに対して送信する(ステップS202)。ここで、INSERTデータセットは、目的のデータストアマネージャーに対して直接送信されてもよいし、複数のノードを介して間接的に送信されてもよい。そして、データストアマネージャーのデータセット/識別子受信部42は、セッションマネージャーによって送信されたデータセットIDおよびINSERTデータセット(変更内容)を取得する。その後、処理はステップS203へ進む。
ステップS203では、変更用データセットにDELETEデータセットが含まれるか否かが判定される。変更用データセットにDELETEデータセットが含まれず、INSERTデータセットのみが変更用データセットに含まれる場合、当該命令は既存のタプルを変更するものでは無いため、トランザクションマネージャーによる競合判定は不要である。このため、変更用データセットにDELETEデータセットが含まれないと判定された場合、処理はステップS204へ進む。
ステップS204では、データセットIDが送信される。セッションマネージャーのデータセット送信部26は、データセットIDを、トランザクションマネージャーに送信する。トランザクションマネージャーの情報取得部31は、セッションマネージャーによって送信されたデータセットIDを取得する。その後、本フローチャートに示された処理は終了する。
一方、ステップS203で変更用データセットにDELETEデータセットが含まれると判定された場合、処理はステップS205へ進む。
ステップS205およびステップS206では、変更用データセットに設定されたデータセットIDおよびDELETEデータセット(変更内容)が、データストアマネージャー宛に送信される。ここで、各セッションマネージャーのデータセット送信部26は、複数のデータストアマネージャーのうち、少なくとも、DELETE命令による変更対象のデータを含むデータストアを管理するデータストアマネージャーを送信先に決定し(ステップS205)、データセットIDおよびDELETEデータセットを、送信先に決定されたデータストアマネージャーに対して送信する(ステップS206)。ここで、DELETEデータセットは、目的のデータストアマネージャーに対して直接送信されてもよいし、複数のノードを介して間接的に送信されてもよい。そして、データストアマネージャーのデータセット/識別子受信部42は、セッションマネージャーによって送信されたデータセットIDおよびDELETEデータセット(変更内容)を取得する。その後、処理はステップS207へ進む。
ステップS207では、データセットID、スナップショット特定用トランザクションIDおよびDELETEデータセットが、トランザクションマネージャー宛に送信される。セッションマネージャーのデータセット送信部26は、ステップS206で送信されたデータセットIDおよびDELETEデータセット(削除対象タプルID)を、スナップショット特定用トランザクションIDとともに、トランザクションマネージャーに送信する。トランザクションマネージャーの情報取得部31は、セッションマネージャーによって送信されたデータセットID、スナップショット特定用トランザクションIDおよびDELETEデータセット(削除対象タプルID)を取得する。その後、本フローチャートに示された処理は終了する。
図9および図10のフローチャートに示された処理は、セッションマネージャーによって送信されたデータセットIDがトランザクションマネージャーによって受信されたことを契機として実行される。
ステップS301では、データセットIDが受信される。ここで、送信されたデータセットIDがステップS204で送信されたものである場合、トランザクションマネージャーの情報取得部31は、セッションマネージャーによって送信されたデータセットIDを受信する。一方、送信されたデータセットIDがステップS207で送信されたものである場合、トランザクションマネージャーの情報取得部31は、データセットIDに加えて、スナップショット特定用トランザクションIDおよびDELETEデータセットを取得する。その後、処理はステップS302へ進む。
ステップS302では、受信されたデータセットIDが、DELETEデータセットと併せて受信されたものであるか否かが判定される。受信されたデータセットIDにDELETEデータセットが組み合わせられている場合、処理はステップS304の競合判定へ進む。一方、受信されたデータセットIDにDELETEデータセットが組み合わせられていない場合、当該データセットIDが示す変更用データセットは既存のタプルを変更するものでは無いため、トランザクションマネージャーによる競合判定は不要である。このため、受信されたデータセットIDにDELETEデータセットが組み合わせられていない場合、処理はステップS303へ進む。
ステップS303では、トランザクションIDが採番される。削除対象の競合が無い場合、識別子生成部34は、当該データセットIDが示す変更用データセットに係るトランザクションを識別するためのトランザクションIDを採番する。上述の通り、トランザクションIDは、トランザクションの処理に係る論理上の時系列における位置を把握可能な識別子であり、本実施形態では、競合が存在しないことが確認された順に、昇順で整数の数値が採番される。その後、処理はステップS314へ進む。
ステップS304では、競合判定が行われる。競合判定部32は、ステップS301で取得されたDELETEデータセットに記載された削除対象タプルIDと、後述するステップS313が以前に実行された際に蓄積された競合判定用タプルIDと、を比較し、一致するタプルIDが存在するか否かを確認することで、削除対象の競合の有無を判定する。
また、競合判定用タプルIDは、本フローチャートに係るデータベース管理処理が以前に実行された際に、後述するステップS313において蓄積されたタプルIDである。上述の通り、変更用データセットには、ステップS105で取得されたスナップショット特定用トランザクションIDが設定されており、競合判定部32は、当該トランザクションIDによって特定されるトランザクションよりも後に蓄積された競合判定用タプルIDと、削除対象タプルIDとを比較する。
競合判定の結果、削除対象タプルIDと競合判定用タプルIDとが競合する(一致するタプルIDが存在する)と判定された場合、処理はステップS305へ進む。一方、競合判定の結果、削除対象タプルIDと競合判定用タプルIDとが競合しない(一致するタプルIDが存在しない)と判定された場合、処理はステップS312へ進む。
ステップS305からS311では、変更用データセットに係るトランザクションが中断され、当該変更用データセットに基づく変更が中止される。ステップS304の競合判定において削除対象の競合があると判定された場合、トランザクションマネージャー、セッションマネージャーおよびデータストアマネージャーは、該当する削除対象タプルを含む変更用データセットに基づくデータベースの変更を中止する。
具体的には、トランザクションマネージャーは、アボート通知を、データセットIDの送信元セッションマネージャーに送信する(ステップS305)。アボート通知を受信したセッションマネージャーは(ステップS306)、当該変更用データセットに係るトランザクションを中断(アボート)し(ステップS307)、少なくとも当該変更用データセットが送付されたデータストア管理ノードに対して、当該変更用データセットの破棄を指示する(ステップS308)。変更用データセットの破棄の指示を受信したデータストアマネージャーは(ステップS309)、受信済みの変更用データセットを破棄する(ステップS310)。また、セッションマネージャーは、トランザクションの中断をユーザーに通知する(ステップS311)。
なお、本実施形態では、データストアマネージャーへのデータセット破棄の指示はセッションマネージャーから送信されるが、トランザクションマネージャーがデータストアマネージャーに対して直接アボート通知を送信することとしてもよい。この際、トランザクションマネージャーは、アボート通知の送信先(アボート対象のデータセットを受信したデータストアマネージャー)を、セッションマネージャーから取得してもよいし、全てのデータストアマネージャーに対してアボート通知をブロードキャストすることとしてもよい。その後、本フローチャートに示された処理は終了する。
ステップS312では、トランザクションIDが採番される。ステップS304で削除対象の競合が無いと判定された場合、識別子生成部34は、当該データセットIDが示す変更用データセットに係るトランザクションを識別するためのトランザクションIDを採番する。採用される具体的なトランザクションIDの態様は、ステップS303において説明した通りである。その後、処理はステップS313へ進む。
ステップS313では、競合判定用タプルIDが蓄積される。変更データ単位情報蓄積部33は、ステップS301で取得されたDELETEデータセットに記載された削除対象タプルIDを、競合判定用タプルIDとして、ステップS312で採番されたトランザクションIDと紐付けて蓄積する。ここで蓄積された競合判定用タプルIDは、本フローチャートに係るデータベース管理処理が次回以降実行された際に、ステップS304で参照される。その後、処理はステップS314へ進む。
ステップS314およびステップS315では、データセットIDおよびトランザクションIDが記録され、データセットIDおよびトランザクションIDが送信される。トランザクションマネージャーは、採番されたトランザクションIDと、データセットIDとを紐付けて、トランザクション管理ノードのストレージに記録する(ステップS314)。そして、トランザクションマネージャーの識別子送信部35は、互いに紐付けられたデータセットIDおよびトランザクションIDの組である識別子セットを、全てのデータストアマネージャーに対して送信する(ステップS315)。
即ち、本実施形態では、トランザクションマネージャーは、採番されたトランザクションIDを、対応するデータセットを有さないデータストアマネージャーに対しても、最新のトランザクションIDとして通知する。最新のトランザクションIDの通知を受けたデータストアマネージャーは、最新のトランザクションIDを、図11を参照して後述するデータ検索処理において、検索対象トランザクションIDとの比較のために用いる。
但し、ステップS315の処理の時点では、採番されたトランザクションIDは、少なくとも、当該データセットIDが示す変更用データセットの変更対象となるデータストアを管理するデータストアマネージャー宛に送信されていればよい。対応するデータセットを有さないデータストアマネージャーへのトランザクションIDの通知がステップS315の処理の時点で行われない場合、例えば、トランザクションマネージャーは、トランザクションIDが採番されるごとに通知するのではなく、定期的(例えば、1秒ごと)に通知することで、通信量を減らすことができる。
なお、ステップS315において識別子セットを、変更対象のデータストアを管理するデータストアマネージャーのみに送信する構成を採用する場合、トランザクションマネージャーは、対応するINSERTデータセットおよびDELETEデータセットを受信したデータストアマネージャーを、セッションマネージャーからの通知を受けることによって知ることが出来る。但し、識別子セットの送信先となるデータストアマネージャーを決定するための手段は限定されず、種々の手段が採用されてよい。
また、識別子送信部35は、複数の識別子セットをまとめて送信してもよい。複数の識別子セットをまとめて送信することで、データベースシステムにおける通信負荷を軽減することが出来る。その後、処理はステップS316へ進む。
ステップS316からステップS318では、コミット通知が行われる。トランザクションマネージャーは、変更用データセットの送信元セッションマネージャーに対してコミット通知を送信する(ステップS316)。コミット通知を受信した(ステップS317)セッションマネージャーは、クエリの送信元であるユーザー端末9に対して、コミットが完了したことを通知する(ステップS318)。本開示に係るデータベース管理技術では、ユーザーに対するコミット通知は、データストアにおけるデータセットへのトランザクションID付与(後述するステップS321)を待たずに行われてもよいし、待ってから行われてもよい。
ステップS319では、データセットIDおよびトランザクションIDが受信される。データストアマネージャーのデータセット/識別子受信部42は、データセットIDおよびトランザクションIDの組である識別子セットを受信する。その後、処理はステップS320へ進む。
ステップS320およびステップS321では、変更用データセットにトランザクションIDが付される。データストアマネージャーのデータベース管理部43は、図8を参照して説明した処理で予め受信されている変更用データセット(INSERTデータセットおよび/またはDELETEデータセット)に設定されたデータセットIDと、ステップS319で受信したデータセットIDとを比較することで、受信したデータセットIDに対応する変更用データセットを特定する(ステップS320)。当該データストアマネージャーが、データセットIDに対応する変更用データセットを受信している場合、データベース管理部43は、識別子セットに含まれるデータセットIDによって示されるINSERTデータセットおよび/またはDELETEデータセットに、当該データセットIDに対応するトランザクションIDを設定する(S321)。その後、処理はステップS322へ進む。
ステップS322では、特定トランザクションIDが更新される。データストアマネージャーのデータベース管理部43は、ステップS319で受信されたトランザクションIDで、当該データストアマネージャーによって管理される特定トランザクションIDを更新する。ここで更新される特定トランザクションIDは、当該データストアマネージャーによって以後データベースに反映されないデータセットの範囲を示すトランザクションIDであり、後述するデータ検索処理において、検索処理の待機の要否を判定するために用いられる。その後、本フローチャートに示された処理は終了する。
本実施形態に係るデータベースシステムでは、所定の形式を有するテーブル等が書き換えられることによってデータベースの内容が変更されるのではなく、変更の内容を含む変更用データセットをトランザクションIDに関連付けてデータストアに蓄積することで、データベースの内容が変更される。このため、本実施形態に係るデータベースシステムによれば、データベースの内容変更(更新および削除)に伴う処理負荷を低減させることが出来る。また、本実施形態に係るデータベースシステムでは、データベースの基礎部分が整理されたテーブル等に依存しないため、テーブルが壊れる等の問題に対処するための仕組み(チェックポイント等)を省略することが出来る。
図11は、本実施形態に係る、データストアマネージャーにおけるデータ検索処理の流れを示すフローチャートである。図11は、ステップS116やステップS710等において実行されるデータ検索処理を詳細に説明するものである。
ステップS401およびステップS402では、検索に必要なデータセットが当該データストアマネージャーによって未だデータベースに反映されていない可能性、換言すれば、当該データストアマネージャーによって未だトランザクションIDが付されていないデータセットに、検索に必要なデータセットが含まれている可能性が判定される。判定の結果、検索に必要なデータセットが未だ反映されていない可能性がある場合、検索処理が待機される。具体的には、データ抽出部45は、待機の必要性を判定するため、検索対象のスナップショットを示す検索対象トランザクションIDと、当該データベースシステム全体における現在の処理の進行時点を示す特定トランザクションIDと、を比較する(ステップS401)。ここで、検索対象トランザクションIDは、当該データ検索処理がステップS116に係る処理である場合、スナップショット特定用トランザクションIDであり、当該データ検索処理がステップS710に係る処理である場合、ビュー用トランザクションIDである。
また、本実施形態において、検索対象トランザクションIDと比較される特定トランザクションIDは、図10のステップS322で更新された、特定トランザクションIDである。
なお、検索結果の補正に必要なデータセットが未だ反映されていない可能性の有無を判断するために検索対象トランザクションIDと比較される対象は、本実施形態に開示された例に限定されない。検索対象トランザクションIDと比較される特定トランザクションIDは、検索を行うデータストアマネージャーによって以後反映されないデータセットの範囲を示すトランザクションIDであればよい。即ち、本実施形態において、データストアマネージャーにおける特定トランザクションIDとは、検索を行うデータストアマネージャーが、(既に受信したか、または今後受信する全ての)データセットにその値より小さいトランザクションID(即ち、それより古いトランザクションID)を付与することがないことが保証されたトランザクションIDである。また、判断を行うデータストアマネージャーが、判断のための情報(例えば、最新のトランザクションID)を取得する方法も限定されない。本実施形態では、最新のトランザクションIDがトランザクションマネージャーから通知されることによって(ステップS315)、データストアマネージャーは判断のための情報を取得するが、データストアマネージャーは、判断のための情報を、検索処理の際にトランザクションマネージャーや他のデータストアマネージャーに問い合わせることで取得してもよい。
ステップS401における判定の結果、検索対象トランザクションIDが、特定トランザクションIDより後の(新しい)トランザクションIDであると判定された場合、検索に必要なデータセットが当該データストアマネージャーによって未だデータベースに反映されていない可能性がある。このため、データ抽出部45は、特定トランザクションIDが、検索対象トランザクションIDと同じ又は新しいトランザクションIDとなるまで(換言すれば、検索に必要なデータセットが取得される可能性が無くなるまで)待機する(ステップS402)。一方、検索対象トランザクションIDが、特定トランザクションIDと同じか又はより古いトランザクションIDであると判定された場合、処理はステップS403へ進む。
ステップS403からステップS405では、検索条件に応じたデータの抽出が行われる。はじめに、データ抽出部45は、データベース管理部43によって蓄積されているデータセットのうち、検索対象のスナップショットを示す検索対象トランザクションIDと同じか又はより古いトランザクションIDが設定されたデータセットから、所望の検索条件(例えば、他のノードから通知された検索条件)に合致するデータ(具体的には、INSERTデータセットに含まれるタプルの変更内容)を抽出する(ステップS403)。
次に、データ抽出部45は、ステップS403でINSERTデータセットから索出されたタプルのタプルIDで、検索対象のスナップショットを示す検索対象トランザクションIDと同じか又はより古いトランザクションIDが設定されたDELETEデータセットを検索する(ステップS404)。そして、データ抽出部45は、ステップS403の索出結果から、ステップS404でDELETEデータセット内に発見されたタプルIDに係るデータを除く(ステップS405)。このようにすることで、データ抽出部45は、データストアマネージャーに蓄積された変更用データセット(INSERTデータセットおよびDELETEデータセットを含む)から、所望の検索条件および所望のスナップショットに合致するデータを抽出する。その後、本フローチャートに示された処理は終了する。
図12は、本実施形態に係る、ビューマネージャーにおけるデータ検索処理の流れを示すフローチャートである。図12は、ステップS110やステップS703等において実行されるデータ検索処理を詳細に説明するものである。
ステップS501およびステップS502では、検索結果の補正に必要なビュー用データセットが当該ビューマネージャーによって未だ受信されていない可能性が判定され、必要なデータセットが未だ受信されていない可能性がある場合、検索処理が待機される。具体的には、ビュー検索結果補正部58は、待機の必要性を判定するため、検索対象のスナップショットを示す検索対象トランザクションIDと、当該データベースシステム全体における現在のビュー用データセット生成処理の進行時点を示す特定トランザクションIDとを比較する(ステップS501)。
本実施形態において、データベースシステム全体における現在のビュー用データセット生成処理の進行時点を示す特定トランザクションIDは、以下のようにして決定される。即ち、特定トランザクションID決定部59は、ビュー用データセットを生成する各ノード(データストアマネージャーおよびビューマネージャーを含む)から、ノード毎のビュー用データセット生成処理(図15および図16を参照)の進行時点を示すトランザクションIDを収集し、最も処理の進行が遅れているノードにおける進行時点を示すトランザクションIDを、特定トランザクションIDとして決定する。このため、本実施形態では、ビュー用データセットを生成する各ノード(データストアマネージャーおよびビューマネージャーを含む)は、自ノードのビュー用データセット生成処理の進行時点を示すトランザクションIDを、システム内の関連するビューマネージャーに対して通知する(通知処理については、図15および図16を用いて後述する)。
なお、検索結果の補正に必要なデータセットが未だ受信されていない可能性の判断には、その他の手法が採用されてもよい。検索対象トランザクションIDと比較される特定トランザクションIDは、検索の対象となるビューについて以後取得されないビュー用データセットの範囲を示すトランザクションIDであればよい。即ち、本実施形態において、ビューにおける特定トランザクションIDとは、検索を行うビューマネージャーが、以後、検索対象となるビューについてその値より小さいトランザクションID(即ち、それより古いトランザクションID)が付与されたビュー用データセットを取得することがないことが保証されたトランザクションIDである。また、判断を行うビューマネージャーが、判断のための情報(本実施形態では、ノード毎のビュー用データセット生成処理の進行時点を示すトランザクションID)を収集する方法も限定されない。ビューマネージャーは、判断のための情報を、検索処理の際にデータストアマネージャーや他のビューマネージャーに問い合わせることで収集してもよい。
ステップS501における判定の結果、検索対象トランザクションIDが、特定トランザクションIDより後の(新しい)トランザクションIDであると判定された場合、検索結果の補正に必要なデータセットが当該ビューマネージャーによって未だ受信されていない可能性がある。このため、ビュー検索結果補正部58は、特定トランザクションIDが、検索対象トランザクションIDと同じ又は新しいトランザクションIDとなるまで(換言すれば、検索結果の補正に必要なデータセットが取得される可能性が無くなるまで)待機する(ステップS502)。一方、検索対象トランザクションIDが、特定トランザクションIDと同じか又はより古いトランザクションIDであると判定された場合、処理はステップS503へ進む。
なお、本実施形態では、検索対象トランザクションIDと、前記特定トランザクションIDと、を比較することで、検索結果の補正に必要なデータセットが未だ受信されていない可能性の有無を判断しているが、この判断はその他の手法を用いて行われてもよい。
ステップS503では、検索対象のスナップショットを示す検索対象トランザクションIDと、ビュー用トランザクションIDとが比較される。ここで、検索対象トランザクションIDが、ビュー用トランザクションIDより古いトランザクションIDであると判定された場合、当該ビューマネージャーに保持されているビューでは検索対象のスナップショットの検索は困難である。このため、ビューマネージャーは検索リクエストの送信元に対して、検索失敗を通知する(ステップS504)。一方、検索対象トランザクションIDが、ビュー用トランザクションIDと同じかまたはより新しいトランザクションIDであると判定された場合、処理はステップS505へ進む。
ステップS505では、指定された検索条件に従ってビューが検索される。ビュー検索部57は、指定された検索条件を用いて、ビューが保持されているデータ形式(例えば、表形式やグラフ形式等)に応じた方法で、ビューを検索する。前述の通り、本開示を実施する際に採用されるビューのデータ形式は限定されず、その検索方法も限定されない。ビューのデータ形式には、表形式やグラフ形式等の従来のデータベース技術に係るものが採用可能であり、その検索方法も従来と同様のものが採用可能であるため、ビューの検索方法についての詳細な説明は省略する。その後、処理はステップS506へ進む。
ステップS506からステップS508では、ステップS505における検索結果が補正される。ビュー検索結果補正部58は、ビュー用データ取得部51によって取得されたがビューに未反映のビュー用データセットのうち、検索対象トランザクションIDまでのビュー用データセットに含まれる、指定された検索条件に合致する変更内容(具体的には、INSERTデータセットに含まれるタプルの変更内容)を索出する(ステップS506)。そして、ビュー検索結果補正部58は、ステップS505およびステップS506で索出されたタプルのタプルIDで、未反映のビュー用データセットのうち、ビューのトランザクションID以降且つ検索対象トランザクションID以前のDELETEデータセットを検索する(ステップS507)。
なお、ステップS506では、検索によって取得されたデータから、重複データが削除される。ビュー用データセットは複数のノードから通知されているため、ビュー用データセットに含まれるデータには、同一のタプルに関するデータの重複が生じ得る。このため、ビュー検索結果補正部58は、検索の結果INSERTデータセットから取得されたデータに、同一のタプルに係るデータが重複して含まれている場合、重複するデータの一方を削除することで、データの重複を解消させる。
なお、本実施形態では、データを索出した後に重複を解消する手法を採用しているが、このような手法に代えて、データ検索の時点で重複が発生しないように検索条件を調整する手法が採用されてもよい。
その後、ビュー検索結果補正部58は、ステップS505で索出されたデータに、ステップS506で索出されたデータを加え、そこから、ステップS507でDELETEデータセットから索出された削除対象タプルIDに係るデータを除く(ステップS508)。ビュー検索部57は、ステップS508で得られたデータを、検索結果とする。その後、本フローチャートに示された処理は終了する。
図5から図12のフローチャートを用いて説明した処理によって、上述の通りデータベースの変更に伴う負荷を低減させることが出来る。また、データストアマネージャーを複数用意することで、検索負荷は分散させることが可能である。但し、上記説明した処理では、INSERTデータセットおよびDELETEデータセットがデータストアマネージャーに蓄積されるに伴って、図11に示したデータストアマネージャーにおけるデータ検索処理の処理量およびデータセットを保持するために使用される記憶領域が増える。このため、本実施形態に係るデータベースシステムでは、トランケート処理を行い、ストレージを効率的に使用することとした。ここで、トランケート処理は、データセット(INSERTデータセットおよびDELETEデータセット)の変形という方法で行われる。
図13は、本実施形態に係る、データストアマネージャーにおけるトランケート処理の流れを示すフローチャートである。図13のフローチャートに示された処理は、例えば、定期的にバックグラウンド実行される。
ステップS601では、処理の基準となる所定のトランザクションID(Xi)が決定される。集合データセット生成部44は、以降発生しうるクエリ処理やビュー変更処理における、所定の時点より前のスナップショットの必要性に基づいて、処理の基準となる所定のトランザクションID(Xi)を決定する。処理の基準となる所定のトランザクションID(Xi)は、現在スナップショット特定用トランザクションIDまたはビュー用トランザクションIDとして使われている最も古いID、今後トランザクションマネージャーがスナップショット特定用トランザクションIDとして通知する可能性のある最も古いID、および今後ビュー用トランザクションIDとして用いられる可能性のある最も古いID、の何れよりも古いトランザクションIDであることが好ましい。
所定のトランザクションID(Xi)を決定する具体的な手法には、様々な手法が採用されてよい。例えば、参照されているスナップショットのトランザクションIDを集計し、最も古いものに合わせて更新する手法が採用されてよい。また、例えば、後述するビュー用トランザクションIDよりもトランザクションの時系列において所定期間以上古いトランザクションIDが用いられることとしてもよい。その後、処理はステップS602へ進む。
ステップS602およびステップS603では、所定のトランザクションIDによって指定された時点のデータセット及びより古いデータセットに含まれる、タプルの変更内容が連結され、削除対象タプルIDに示されたデータが除かれることで、所定のトランザクションID(Xi)によって指定された時点のデータセット及びより古いデータセットが統合された、集合データセットが生成される。具体的には、集合データセット生成部44は、データストアマネージャーに蓄積されているデータセットのうち、所定のトランザクションID(Xi)によって指定された時点のINSERTデータセット及びより古いINSERTデータセットを特定して連結することで、集合INSERTデータセットを生成する(ステップS602)。
そして、集合データセット生成部44は、連結によって生成された集合INSERTデータセットから、所定のトランザクションID(Xi)によって指定された時点のDELETEデータセット及びより古いDELETEデータセットに指定されているタプルを除外する(ステップS603)。その後、処理はステップS604へ進む。
ステップS604およびステップS605では、生成された集合INSERTデータセットが、データストアの一部として管理開始される。データベース管理部43は、新たに生成された集合INSERTデータセットに、始点を示すトランザクションID(X0)と、終点を示すトランザクションID(Xi)と、の2つのトランザクションID(X0及びXi)を設定する(ステップS604)。このようにして、新たに生成された集合データセットは、蓄積されたデータセットの1つとして管理される。そして、データベース管理部43は、当該集合データセットの生成に用いられたデータセット、即ち、所定のトランザクションID(Xi)によって指定された時点のINSERTデータセットおよびDELETEデータセット、並びにより古いINSERTデータセットおよびDELETEデータセットを削除する(但し、新たに生成された集合INSERTデータセットを除く)(ステップS605)。その後、本フローチャートに示された処理は終了する。
また、本実施形態に係るデータベースシステムでは、データストアマネージャーによる検索負荷を低減させるために、ビューマネージャーによってビューを管理することとしている。以下、図14から図17を参照して、本実施形態におけるビューの作成および変更処理を説明する。
図14は、本実施形態に係る、ビュー作成処理の流れを示すフローチャートである。図14のフローチャートに示された処理は、ビューマネージャーに、ビューの生成および当該ビューを生成するための検索条件が指示されたことを契機として開始される。この指示は、管理者やユーザー等によって行われてもよいし、上位ビューを管理するビューマネージャーやセッションマネージャー等の他のノードによって行われてもよい。上述の通り、本実施形態において、複数のビューは階層関係を有しており、上位ビューは、下位ビューによってカバーされるデータを参照して構築することができる。このため、上位ビューを管理するビューマネージャー(以下、「上位ビューマネージャー」と称する)は、より下位のビューを管理するビューマネージャー(以下、「下位ビューマネージャー」と称する)に対してビューの生成指示や検索条件の指示、データ要求等を行うことができる。
ステップS701からステップS706では、下位ビューマネージャーから、ビューの作成に必要なデータ(ビュー用データセット)が取得される。上位ビューマネージャーのビュー用データ取得部51は、予め設定された検索条件およびビュー用トランザクションID(ビューに対応するスナップショットを示すトランザクションID)を下位ビューマネージャーに通知して、データを要求する(ステップS701)。そして、送信されたデータ要求は、下位ビューマネージャーによって受信される(ステップS702)。
ステップS702でデータ要求を受信した下位ビューマネージャーのビュー検索部57は、指定された検索条件に従ってビューを検索し、検索条件およびビュー用トランザクションIDに応じたデータを取得する(ステップS703)。ここで、データ要求を受信した下位ビューマネージャーがデータを取得する処理の流れは、図12を用いて説明した通りである。そして、下位ビューマネージャーのビュー用データ生成部53は、上位ビューに予め設定された検索条件に合致するデータ(タプル)をINSERTセットとして含むビュー用データセットを生成する。また、下位ビューマネージャーは、ステップS702で受信された検索条件を、送信元の上位ビューマネージャーによって管理されるビューを識別可能な情報に関連付けて保存する(ステップS704)。
データ要求を受信した下位ビューマネージャーのビュー用データ送信部54は、ステップS703で生成されたビュー用データセットを、データ要求の送信元である上位ビューマネージャーに対して送信する(ステップS705)。その後、データ要求の送信元である上位ビューマネージャーのビュー用データ取得部51は、送信されたデータを受信することで、ビュー用データセットを取得する(ステップS706)。その後、処理はステップS707へ進む。
ステップS707では、データストアマネージャーからのデータ取得が必要か否か判定される。ビューマネージャーは、ステップS706までの下位ビューマネージャーからのビュー用データセットの取得処理で、ビューの作成に必要なデータが全て揃ったか否かを判定する。これは、下位ビューによってカバーされていないデータが存在する可能性があり、処理に必要なデータが下位ビューマネージャーから取得できない可能性があるためである。
例えば、下位ビューによってカバーされるデータの範囲が、データ取得対象のテーブルの一部である場合、当該テーブルに含まれるデータのうち、下位ビューによってカバーされているデータについては、下位ビューマネージャーへの問い合わせで取得される。一方、データ取得対象のテーブルのうち、下位ビューによってカバーされていないデータについては、データストアアネージャーから取得する必要がある。ステップS707における判定の具体的な方法については、ステップS113において説明した方法と概略同様であるため、説明を省略する。
判定の結果、ビューの作成に必要なデータが全て揃った(データストアマネージャーからのデータ取得が不要である)と判定された場合、処理はステップS714へ進む。一方、判定の結果、処理に必要なデータが不足している(データストアマネージャーからのデータ取得が必要である)と判定された場合、処理はステップS708へ進む。
ステップS708からステップS713では、データストアマネージャーから、ビューの作成に必要なデータ(ビュー用データセット)が取得される。ビューマネージャーのビュー用データ取得部51は、予め設定された検索条件およびビュー用トランザクションIDを、データストアマネージャーに通知して、データを要求する(ステップS708)。
データ要求を受信した(ステップS709)データストアマネージャーのデータ抽出部45は、データベース管理部43によって蓄積されているデータセットに基づいて、予め設定された検索条件に合致するデータを抽出する。ビュー用データ生成部46は、抽出されたデータ(タプル)をINSERTセットとして含むビュー用データセットを生成する(ステップS710)。ここで、データ要求を受信したデータストアマネージャーがデータを取得する処理の流れの詳細は、図11を用いて説明した通りである(この場合、ビュー用トランザクションIDが、図11の説明における「検索対象トランザクションID」として用いられる)。そして、データストアマネージャーは、ステップS709で受信された検索条件を、送信元のビューマネージャーによって管理されるビューを識別可能な情報に関連付けて保存する(ステップS711)。
ビュー用データ送信部47は、ステップS710で生成されたビュー用データセットを、ビューマネージャーに送信する(ステップS712)。その後、ビュー用データ取得部51は、データストアマネージャーから送信されたデータを受信することで、所望のデータを取得する(ステップS713)。その後、処理はステップS714へ進む。
ステップS714およびステップS715では、ビューの管理が開始される。ビュー管理部52は、ビュー用データ取得部51によって取得されたビュー用データセットに含まれるデータを、所定の形式(例えば、テーブル形式、グラフ形式等)のデータ集合であるビューとして生成する(ステップS714)。なお、ビューが生成される際には、ビュー用データセットに含まれるデータから、重複データが削除される。上述の通り、ビューは検索条件に基づいてデータストアマネージャー等から得られたデータを用いて生成されるものであるため、ステップS706で下位ビューマネージャーから取得されたデータと、ステップS713でデータストアマネージャーから取得されたデータには、同一のタプルに関するデータの重複が生じ得る。このため、ビュー管理部52は、ステップS706及びステップS713で取得されたデータに、同一のタプルに係るデータが重複して含まれている場合、重複するデータの一方を削除することで、データの重複を解消させる。
なお、本実施形態では、データを取得した後に重複を解消する手法を採用しているが、このような手法に代えて、データ要求の時点で重複が発生しないように、ステップS701及びステップS708で送信されるデータ要求の内容を変更する手法が採用されてもよい。
ビューが生成されると、ビュー管理部52は、生成されたビューを、予め設定された検索条件およびビュー用トランザクションIDに対応するビューとして保持する(ステップS715)。その後、本フローチャートに示された処理は終了する。
図15から図17は、本実施形態に係る、ビュー変更処理の流れを示すフローチャートである。図15および図16に示された処理は、データストアマネージャーにおいて新たなデータセットが管理開始されたこと(換言すれば、データセットにトランザクションIDが付与されたこと)を契機として実行される。データセットへのトランザクションIDの付与については、図10のステップS321で説明した通りである。但し、図15および図16に示された処理は、トランザクションIDの付与とは独立したタイミングで、例えば定期的にバッチ処理されてもよい。
ステップS801およびステップS802では、データストアマネージャーにおいてデータセットが検索される。ここで用いられる検索条件は、ビューマネージャーによって管理されているビューに設定されている検索条件であり、図14のステップS711等で保存された検索条件である。データストアマネージャーのビュー用データ生成部46は、予め設定されている検索条件で、新たにトランザクションIDが付されたINSERTデータセットを検索し、検索条件に合致する変更内容を抽出する(ステップS801)。また、ビュー用データ生成部46は、前記検索条件で、新たにトランザクションIDが付されたDELETEデータセットに含まれるタプルIDが示すタプルを検索し、検索条件に合致する内容を有するタプルのタプルIDを特定する(ステップS802)。その後、処理はステップS803へ進む。
なお、本実施形態では、データストアマネージャーがビューマネージャーにDELETEデータセットを送信する場合、データストアマネージャーは、設定された検索条件に対応する削除されたタプルIDのみを送信することとしている(ステップS805およびステップS806を参照)。そして、本実施形態では、設定された検索条件に対応する削除されたタプルIDを索出する方法として、データストアマネージャーのDELETEデータセット内のタプルIDで過去のINSERTデータセットをチェックして、ヒットしたタプルがそのビューの検索条件に合致するか否かを判定することとしている(ステップS802を参照)。但し、設定された検索条件に対応する削除されたタプルIDを索出する方法としては、ビューに送ったタプルIDのリストを保持しておき、これと照合する等の、その他の方法が採用されてもよい。また、ビューの更新のためにデータストアマネージャーがビューマネージャーにDELETEデータセットを送信する場合、すべてのDELETEデータセットを送信してもよい。
ステップS803およびステップS804では、検索結果の有無が判定され、検索結果が得られなかった場合に、トランザクションIDが送信される。ステップS801およびステップS802における検索の結果、検索条件に合致するタプルが索出されなかった場合(ステップS803のNO)、データストアマネージャーは、検索対象となったデータセットに付されていたトランザクションIDを、自ノードのビュー用データセット生成処理の進行時点を示すトランザクションIDとして、ビューマネージャーに送信する(ステップS804)。
ここで、トランザクションIDの送信先となるビューマネージャーは、検索に用いられた検索条件に対応するビューを保持するビューマネージャーであり、ステップS711で検索条件が保存された際に関連付けられた、ビューを識別可能な情報を参照することで特定される。送信されたトランザクションIDを受信したビューマネージャーは、当該トランザクションIDを、送信元ノードのビュー用データセット生成処理の進行時点を示すトランザクションIDとして管理する。即ち、ここで受信されたトランザクションIDは、ステップS501において特定トランザクションIDを決定するために参照される。
一方、ステップS801およびステップS802における検索の結果、検索条件に合致するタプルが索出された場合(ステップS803のYES)、処理はステップS805へ進む。
ステップS805からステップS807では、データストアマネージャーにおいてビュー用データセットが生成される。ビュー用データ生成部46は、ステップS801で抽出された変更内容をINSERTデータセットに含み、ステップS802で特定されたタプルIDをDELETEデータセットに含むビュー用データセットを生成する(ステップS805)。そして、ビュー用データ送信部47は、生成されたビュー用データセットを、トランザクションIDに関連付けて、ビューマネージャーに送信する(ステップS806)。ここで送信先となるビューマネージャーは、検索に用いられた検索条件に対応するビューを保持するビューマネージャーであり、ステップS711で検索条件が保存された際に関連付けられた、ビューを識別可能な情報を参照することで特定される。ビューマネージャーのビュー用データ取得部51は、送信されたビュー用データセットを受信する(ステップS807)。送信されたビュー用データセットを受信したビューマネージャーは、当該ビュー用データセットと共に受信されたトランザクションIDを、送信元ノードのビュー用データセット生成処理の進行時点を示すトランザクションIDとして管理し、ステップS501において特定トランザクションIDを決定するために参照する。その後、処理はステップS808へ進む。
ステップS808およびステップS809では、ビューマネージャーにおいてデータセットが検索される。ここで用いられる検索条件は、当該ビューマネージャーが管理するビューより上位のビューに設定されている検索条件であり、図14のステップS704等で保存された検索条件である。このため、ステップS808からステップS813の処理は、当該ビューマネージャーが上位ビューの検索条件を保持していない場合、実行されない。ビューマネージャーのビュー用データ生成部53は、予め設定されている検索条件で、ステップS807で受信されたビュー用データセットに含まれるINSERTデータセットを検索し、検索条件に合致する変更内容を抽出する(ステップS808)。また、ビュー用データ生成部53は、前記検索条件で、ステップS807で受信されたビュー用データセットに含まれるDELETEデータセットに含まれるタプルIDが示すタプルを検索し、検索条件に合致する内容を有するタプルのタプルIDを特定する(ステップS809)。その後、処理はステップS810へ進む。
ステップS810およびステップS811では、検索結果の有無が判定され、検索結果が得られなかった場合に、トランザクションIDが送信される。ステップS808およびステップS809における検索の結果、検索条件に合致するタプルが索出されなかった場合(ステップS810のNO)、ビューマネージャーは、検索対象となったビュー用データセットに付されていたトランザクションIDを、自ノードのビュー用データセット生成処理の進行時点を示すトランザクションIDとして、上位ビューマネージャーに送信する(ステップS811)。
ここで、トランザクションIDの送信先となる上位ビューマネージャーは、検索に用いられた検索条件に対応するビューを保持する上位ビューマネージャーであり、ステップS704で検索条件が保存された際に関連付けられた、ビューを識別可能な情報を参照することで特定される。送信されたトランザクションIDを受信した上位ビューマネージャーは、当該トランザクションIDを、送信元ノードのビュー用データセット生成処理の進行時点を示すトランザクションIDとして管理し、ステップS501において特定トランザクションIDを決定するために参照する。
一方、ステップS808およびステップS809における検索の結果、検索条件に合致するタプルが索出された場合(ステップS810のYES)、処理はステップS812へ進む。
ステップS812およびステップS813では、ビューマネージャーにおいて第二のビュー用データセットが生成される。ビュー用データ生成部53は、ステップS808で抽出された変更内容をINSERTデータセットに含み、ステップS809で特定されたタプルIDをDELETEデータセットに含む第二のビュー用データセットを生成する(ステップS812)。そして、ビュー用データ送信部54は、生成された第二のビュー用データセットを、トランザクションIDに関連付けて、上位ビューマネージャーに送信する(ステップS813)。ここで送信先となる上位ビューマネージャーは、検索に用いられた検索条件に対応するビューを保持する上位ビューマネージャーであり、ステップS704で検索条件が保存された際に関連付けられた、ビューを識別可能な情報を参照することで特定される。上位ビューマネージャーのビュー用データ取得部51は、送信された第二のビュー用データセットを受信する(図示は省略する)。なお、受信された第二のビュー用データセットは、データストアマネージャーから送信されたその他のビュー用データセットと同様、ビューの変更に用いられる(図17を参照)。また、送信された第二のビュー用データセットを受信したビューマネージャーは、当該ビュー用データセットと共に受信されたトランザクションIDを、送信元ノードのビュー用データセット生成処理の進行時点を示すトランザクションIDとして管理し、ステップS501において特定トランザクションIDを決定するために参照する。その後、本フローチャートに示された処理は終了する。
なお、ステップS813で送信されたビュー用データセットを受信したビューマネージャーが、更に上位のビューマネージャーを有する場合、ビュー用データセットを受信したビューマネージャーは、ステップS807からステップS813に示された処理を実行することで、当該ビューマネージャーから見て上位のビューマネージャーのためのビュー用データセットを生成し、送信する。即ち、ステップS807からステップS813に示された処理は、ビューマネージャー間の階層における下位から上位に向けて、生成されたビュー用データセットを受け渡しながら、それぞれのビューマネージャーにおいて実行される。
図17に示された処理は、所定のタイミングで(例えば、定期的に)実行される。
ステップS901では、新たなビュー用トランザクションIDが決定される。ビュー用トランザクションID更新部55は、ビュー用トランザクションIDを更新する。新たなビュー用トランザクションIDを決定する具体的な手法には様々なものが採用されうるが、例えば、複数のセッションマネージャーにおいて参照されているスナップショットのトランザクションIDを集計し、最も古いものに合わせて更新する等の手法が採用されてよい。この際、まれに極端に古いスナップショットが参照されている可能性があるが、そのようなスナップショットについては、トランザクションIDに閾値を設定する等して集計から除外することとしてもよい。新たなビュー用トランザクションIDが決定すると、処理はステップS902へ進む。
ステップS902では、ビューが変更される。ビュー変更部56は、ビュー管理部52によって管理されているビューを、更新された新たなビュー用トランザクションIDによって指定された時点のビュー用データセット及びより古いビュー用データセットを用いて変更する。この際、ビュー変更部56は、更新後のビュー用トランザクションIDまでのすべてのビュー用データセットを反映する。その後、本フローチャートに示された処理は終了する。
本実施形態に係るデータベースシステムによれば、リレーショナルデータベースのようなテーブル等に依拠してビューが作成および変更されるのではなく、変更履歴(例えば、データセット)を参照してビューが作成および変更されるため、ビューの作成および変更に係る処理負荷を低減させることができる。また、ビューの作成および変更に係る処理負荷を低減させるために、メモリや記憶装置上にビューの実体を持たない論理上のビューを用いる技術も従来提案されているが、このようなビューでは、ビューの検索の度にビューのリンク先(実体)へのアクセスが発生するため、検索時の処理負荷が低減されない。これに対して、本実施形態に係るデータベースシステムによれば、ビューはメモリや記憶装置上に実体として存在するため、検索時の処理負荷を低減させることが出来る。
また、本実施形態に係るデータベースシステムによれば、蓄積された変更履歴(例えば、データセット)をデータベースの基礎部分として用いるデータベースシステムにおいて検索を行う場合の処理負荷を、上記説明したようなビューマネージャーを備えることによって低減させることが出来る。このため、図5から図11および図13を用いて説明した、蓄積されたデータセットに依拠するデータベース管理と、図12および図14から図17を用いて説明した、データセットに基づくビューの作成および変更と、を組み合わせることにより、データベースの内容変更(更新および削除)に伴う処理負荷の低減と、検索時の処理負荷の低減とを両立させることが出来る。但し、蓄積されたデータセットに依拠するデータベース管理と、データセットに基づくビューの作成および変更とは、必ずしも組み合わせて用いられなくても良く、他のデータベースシステムにおいて、個別に採用することとしてもよい。
<バリエーション>
次に、本開示に係るシステム、情報処理装置、方法およびプログラムを実施する場合のバリエーションを説明する。
次に、本開示に係るシステム、情報処理装置、方法およびプログラムを実施する場合のバリエーションを説明する。
本実施形態に係るデータベースシステムにおいて、更に、データベースの内容変更の際にINSERTデータセットおよびDELETEデータセットが送信される宛先データストアマネージャーを決定するためのルール(ハッシュ関数等)を予め決めておいてもよい。このようにすることで、データベースシステムを、データの配置が管理された分散データベースシステムとすることが出来る。
また、上記実施形態では、ビューの更新が所定のタイミングで(例えば、定期的に)実行される例について説明したが、ビューの更新のタイミングは、意図的に遅延されてもよい。例えば、ビュー管理部52によって管理されているビューの一部または全部が、ビューマネージャーのメモリに読み込まれている場合に、当該ビューのうちメモリに読み込まれている部分を変更してもよい。この際、ビュー変更部56は、メモリに読み込まれているブロックに、更新されたビュー用トランザクションIDまでの関連する全てのビュー用データセットを反映する。
また、例えば、ビュー変更部56は、ビュー管理部52によって管理されているビューが、更新されたビュー用トランザクションIDと同じかまたはより新しいスナップショットが指定された処理の対象となったことを契機として、当該ビューを変更してもよい。これらの手法が採用された場合、ビューが変更されるタイミングは散発的なものとなる。
<効果>
本実施形態に係るデータベースシステムでは、変更用データセットをトランザクションIDに関連付けてデータストアに蓄積することで、データベースの内容が変更されるため、データベースの内容変更に伴う処理負荷を低減させることが出来る。また、本実施形態に係るデータベースシステムでは、データベースの基礎部分をリレーショナルデータベースのようなテーブル等に依拠しないため、テーブルが壊れる等の問題に対処するための仕組みを省略することが出来る。
本実施形態に係るデータベースシステムでは、変更用データセットをトランザクションIDに関連付けてデータストアに蓄積することで、データベースの内容が変更されるため、データベースの内容変更に伴う処理負荷を低減させることが出来る。また、本実施形態に係るデータベースシステムでは、データベースの基礎部分をリレーショナルデータベースのようなテーブル等に依拠しないため、テーブルが壊れる等の問題に対処するための仕組みを省略することが出来る。
また、本実施形態に係るデータベースシステムによれば、変更履歴に基づいてビューが作成および変更されるため、ビューの作成および変更に係る処理負荷を低減させることができる。また、本実施形態に係るデータベースシステムによれば、ビューはメモリや記憶装置上に実体として存在するため、検索時の処理負荷を低減させることが出来る。
更に、本実施形態に係るデータベースシステムによれば、ビューマネージャーを備えることによって、検索の処理負荷を低減させることが出来、データセットを用いたデータベース管理と、データセットに基づくビューの作成および変更と、を組み合わせることにより、データベースの内容変更(更新および削除)に伴う処理負荷の低減と、検索時の処理負荷の低減とを両立させることが出来る。但し、データセットを用いたデータベース管理と、データセットに基づくビューの作成および変更とは、必ずしも組み合わせて用いられなくても良く、他のデータベースシステムにおいて、個別に採用することとしてもよい。
Claims (23)
- 複数のセッション管理ノードと、夫々がデータストアを管理する複数のデータストア管理ノードと、少なくとも1のトランザクション管理ノードとを備えるデータベースシステムであって、
前記複数のセッション管理ノードの夫々は、
データベースの内容が変更される場合に、変更の対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報と、該データ単位の変更内容と、を含むデータセットを生成するデータセット生成手段と、
前記データセットを、少なくとも何れかの前記データストア管理ノードへ送信し、更に、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報、および前記データセットを識別可能なデータセット識別子を、前記トランザクション管理ノードに送信する、データセット送信手段と、を備え、
前記トランザクション管理ノードは、
前記セッション管理ノードの前記データセット送信手段によって送信された、前記削除対象識別情報および前記データセット識別子を取得する情報取得手段と、
該データベースシステムにおいて変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、
前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセット識別子が示すデータセットのための、トランザクションの時系列における該データセットの位置を把握可能なトランザクション識別子を生成する識別子生成手段と、
前記データセット識別子と該データセット識別子に対応する前記トランザクション識別子とを含む識別子セットを、前記複数のデータストア管理ノードのうち、少なくとも前記データセット送信手段によって前記データセットが送信されたデータストア管理ノードに送信する識別子送信手段と、を備え、
前記複数のデータストア管理ノードの夫々は、
前記セッション管理ノードから、前記データセットを受信するデータセット受信手段と、
受信された前記データセットを蓄積するデータベース管理手段と、
前記トランザクション管理ノードによって送信された前記識別子セットを受信する識別子受信手段と、を備え、
前記データベース管理手段は、蓄積されている前記データセットのうち、前記識別子セットに含まれるデータセット識別子によって示されるデータセットに、該データセット識別子に対応する前記トランザクション識別子を設定する、
データベースシステム。 - 前記複数のデータストア管理ノードの夫々は、前記データベース管理手段によって蓄積されている前記データセットのうち、所望のトランザクション識別子及びより古いトランザクション識別子が設定されたデータセットから、所望の検索条件に合致するデータを抽出するデータ抽出手段を更に備える、
請求項1に記載のデータベースシステム。 - 前記データ抽出手段は、前記データベース管理手段によって蓄積されている前記データセットに含まれる前記データ単位の変更内容を検索することによって索出されたデータから、前記削除対象識別情報に示されたデータを除くことで、所望の検索条件に合致するデータを抽出する、
請求項2に記載のデータベースシステム。 - 前記データ抽出手段は、前記データセット受信手段によって以後受信されないデータセットの範囲を示す特定トランザクション識別子が、検索対象のスナップショットを示す検索対象トランザクション識別子よりも古い場合、前記特定トランザクション識別子が、前記検索対象トランザクション識別子と同じ又は新しい識別子となるのを待ってから、前記抽出を行う、
請求項2または3に記載のデータベースシステム。 - 前記識別子送信手段は、前記識別子生成手段によって生成された最新のトランザクション識別子を、前記データセット送信手段によって前記データセットが送信されたデータストア管理ノード以外のデータストア管理ノードに対しても送信し、
前記データ抽出手段は、前記識別子送信手段によって送信されて前記データストア管理ノードによって受信された前記最新のトランザクション識別子が、前記検索対象トランザクション識別子よりも古い場合、受信された前記最新のトランザクション識別子が、前記検索対象トランザクション識別子と同じ又は新しい識別子となるのを待ってから、前記抽出を行う、
請求項4に記載のデータベースシステム。 - 前記データストア管理ノードは、所定のトランザクション識別子によって指定された時点のデータセット及びより古いデータセットを統合することで集合データセットを生成する集合データセット生成手段を更に備え、
前記データベース管理手段は、前記集合データセットにトランザクション識別子を設定することで、該集合データセットを、蓄積されたデータセットの1つとして管理する、
請求項2から5の何れか一項に記載のデータベースシステム。 - 前記集合データセット生成手段は、所定のトランザクション識別子によって指定された時点のデータセット及びより古いデータセットに含まれる、前記データ単位の変更内容を連結し、前記削除対象識別情報に示されたデータを除くことで、前記集合データセットを生成する、
請求項6に記載のデータベースシステム。 - 前記データベース管理手段は、前記集合データセットへのトランザクション識別子の設定に伴って、該集合データセットの生成に用いられたデータセットを削除する、
請求項6または7に記載のデータベースシステム。 - 前記トランザクション管理ノードは、該データベースシステムにおいて変更されたデータ単位を示す情報を蓄積する変更データ単位情報蓄積手段を更に備え、
前記競合判定手段は、前記変更データ単位情報蓄積手段によって蓄積された、前記変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定し、
前記変更データ単位情報蓄積手段は、前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記削除対象識別情報を、該データベースシステムにおいて変更されたデータ単位を示す情報として蓄積する、
請求項1から8の何れか一項に記載のデータベースシステム。 - 前記複数のデータストア管理ノードの夫々は、
処理用データを、前記セッション管理ノードに対して送信する処理用データ送信手段を更に備え、
前記複数のセッション管理ノードの夫々は、
前記処理用データを、前記複数のデータストア管理ノードの少なくとも何れかから取得する処理用データ取得手段を更に備え、
前記データセット生成手段は、取得された前記処理用データに対する処理においてデータベースの内容が変更される場合に、前記データセットを生成する、
請求項1から9の何れか一項に記載のデータベースシステム。 - 前記セッション管理ノードは、処理に用いられるスナップショットを特定可能な情報を取得するスナップショット特定用情報取得手段を更に備え、
前記処理用データ取得手段は、前記スナップショット特定用情報取得手段によって取得された情報を指定することで、前記スナップショットにおけるデータを取得する、
請求項10に記載のデータベースシステム。 - 前記スナップショット特定用情報取得手段によって取得された情報は、トランザクション識別子であり、
前記処理用データ送信手段は、前記セッション管理ノードから、前記スナップショットにおけるトランザクション識別子を指定したデータ要求を受信した場合に、指定されたトランザクション識別子が示すトランザクションまでのトランザクションに対応するデータセットに基づいて生成された処理用データを、前記セッション管理ノードに対して送信する、
請求項11に記載のデータベースシステム。 - 前記セッション管理ノードの夫々は、
クエリを受け付けるクエリ受付手段と、
前記クエリを処理するクエリ処理手段と、
を更に備え、
前記処理用データ取得手段は、前記クエリの処理に用いるデータを、前記複数のデータストア管理ノードの少なくとも何れかから取得する、
請求項10から12の何れか一項に記載のデータベースシステム。 - 前記クエリ処理手段は、前記クエリが属するトランザクションにおいて該クエリの処理前に生成された前記データセットに基づいて、前記処理用データ取得手段によって取得された前記データを調整してから、該クエリを処理する、
請求項13に記載のデータベースシステム。 - 前記調整は、
前記クエリの処理前に生成された前記データセットから所望の検索条件に合致するデータを抽出して、抽出されたデータを前記処理用データ取得手段によって取得された前記データに追加する処理と、
前記クエリの処理前に生成された前記データセットに含まれる前記削除対象識別情報に示されたデータを、前記処理用データ取得手段によって取得された前記データから除く処理と、を含む、
請求項14に記載のデータベースシステム。 - 少なくとも1のビュー管理ノードを更に備え、
前記データストア管理ノードの夫々は、前記データベース管理手段によって蓄積されている前記データセットに基づいて生成された、予め設定された検索条件に合致するデータを含むビュー用データセットを、前記ビュー管理ノードに送信するビュー用データ送信手段を更に備え、
前記ビュー管理ノードは、
前記ビュー用データセットを、前記データストア管理ノードから取得するビュー用データ取得手段と、
前記ビュー用データ取得手段によって取得されたビュー用データセットに含まれるデータのうち、ビュー用トランザクション識別子によって指定された時点のデータ及びより古いデータの集合を、前記予め設定された検索条件および前記ビュー用トランザクション識別子に対応するビューとして保持するビュー管理手段と、
指定された検索条件に従って前記ビューを検索するビュー検索手段と、を備える、
請求項10から15の何れか一項に記載のデータベースシステム。 - 前記ビュー管理ノードは、
処理用データを、前記セッション管理ノードに対して送信する処理用データ送信手段を更に備え、
前記複数のセッション管理ノードの処理用データ取得手段は、前記処理用データを、前記ビュー管理ノードおよび前記複数のデータストア管理ノードの少なくとも何れかから取得する、
請求項16に記載のデータベースシステム。 - 前記複数のセッション管理ノードの処理用データ取得手段は、前記処理用データのうち、前記ビューに含まれるデータについては、該ビューを管理する前記ビュー管理ノードから取得し、該ビューに含まれないデータについては、前記複数のデータストア管理ノードの少なくとも何れかから取得する、
請求項17に記載のデータベースシステム。 - 前記複数のセッション管理ノードの処理用データ取得手段は、前記ビュー管理ノードおよび前記複数のデータストア管理ノードのうち少なくとも2以上のノードから前記処理用データが取得されたために同一のタプルに係るデータが重複して取得された場合、重複するデータの一方を削除する、
請求項17または18に記載のデータベースシステム。 - 前記競合判定手段によって削除対象の競合が有ると判定された場合に、前記データセットに基づく変更が中止される、
請求項1から19の何れか一項に記載のデータベースシステム。 - 前記データセット生成手段は、前記対象識別情報に、前記複数のセッション管理ノード毎に異なる値を含めることで、対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報を生成する、
請求項1から20の何れか一項に記載のデータベースシステム。 - 複数のセッション管理ノードと、夫々がデータストアを管理する複数のデータストア管理ノードと、少なくとも1のトランザクション管理ノードとを備えるデータベースシステムにおいて、
前記複数のセッション管理ノードの夫々が、
データベースの内容が変更される場合に、変更の対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報と、該データ単位の変更内容と、を含むデータセットを生成するデータセット生成ステップと、
前記データセットを、少なくとも何れかの前記データストア管理ノードへ送信し、更に、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報、および前記データセットを識別可能なデータセット識別子を、前記トランザクション管理ノードに送信する、データセット送信ステップと、を実行し、
前記トランザクション管理ノードが、
前記セッション管理ノードの前記データセット送信ステップで送信された、前記削除対象識別情報および前記データセット識別子を取得する情報取得ステップと、
該データベースシステムにおいて変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定ステップと、
前記競合判定ステップで削除対象の競合が無いと判定された場合に、前記データセット識別子が示すデータセットのための、トランザクションの時系列における該データセットの位置を把握可能なトランザクション識別子を生成する識別子生成ステップと、
前記データセット識別子と該データセット識別子に対応する前記トランザクション識別子とを含む識別子セットを、前記複数のデータストア管理ノードのうち、少なくとも前記データセット送信ステップで前記データセットが送信されたデータストア管理ノードに送信する識別子送信ステップと、を実行し、
前記複数のデータストア管理ノードの夫々が、
前記セッション管理ノードから、前記データセットを受信するデータセット受信ステップと、
受信された前記データセットを蓄積するデータベース管理ステップと、
前記トランザクション管理ノードによって送信された前記識別子セットを受信する識別子受信ステップと、を実行し、
前記データベース管理ステップでは、蓄積されている前記データセットのうち、前記識別子セットに含まれるデータセット識別子によって示されるデータセットに、該データセット識別子に対応する前記トランザクション識別子が設定される、
方法。 - 複数のセッション管理ノードと、夫々がデータストアを管理する複数のデータストア管理ノードと、少なくとも1のトランザクション管理ノードとを備えるデータベースシステムにおいて、
前記複数のセッション管理ノードの夫々を、
データベースの内容が変更される場合に、変更の対象となるデータ単位を複数の前記データストア間で一意に把握可能な対象識別情報と、該データ単位の変更内容と、を含むデータセットを生成するデータセット生成手段と、
前記データセットを、少なくとも何れかの前記データストア管理ノードへ送信し、更に、該データセットに含まれる前記対象識別情報のうち少なくとも削除対象のデータ単位を示す削除対象識別情報、および前記データセットを識別可能なデータセット識別子を、前記トランザクション管理ノードに送信する、データセット送信手段と、として機能させ、
前記トランザクション管理ノードを、
前記セッション管理ノードの前記データセット送信手段によって送信された、前記削除対象識別情報および前記データセット識別子を取得する情報取得手段と、
該データベースシステムにおいて変更されたデータ単位を示す情報と、前記削除対象識別情報とを比較することで、削除対象の競合の有無を判定する競合判定手段と、
前記競合判定手段によって削除対象の競合が無いと判定された場合に、前記データセット識別子が示すデータセットのための、トランザクションの時系列における該データセットの位置を把握可能なトランザクション識別子を生成する識別子生成手段と、
前記データセット識別子と該データセット識別子に対応する前記トランザクション識別子とを含む識別子セットを、前記複数のデータストア管理ノードのうち、少なくとも前記データセット送信手段によって前記データセットが送信されたデータストア管理ノードに送信する識別子送信手段と、として機能させ、
前記複数のデータストア管理ノードの夫々を、
前記セッション管理ノードから、前記データセットを受信するデータセット受信手段と、
受信された前記データセットを蓄積するデータベース管理手段と、
前記トランザクション管理ノードによって送信された前記識別子セットを受信する識別子受信手段と、として機能させ、
前記データベース管理手段は、蓄積されている前記データセットのうち、前記識別子セットに含まれるデータセット識別子によって示されるデータセットに、該データセット識別子に対応する前記トランザクション識別子を設定する、
プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/017202 WO2018203376A1 (ja) | 2017-05-01 | 2017-05-01 | データベースシステム、方法およびプログラム |
JP2019516316A JP6889253B2 (ja) | 2017-05-01 | 2017-05-01 | データベースシステム、方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2017/017202 WO2018203376A1 (ja) | 2017-05-01 | 2017-05-01 | データベースシステム、方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018203376A1 true WO2018203376A1 (ja) | 2018-11-08 |
Family
ID=64016048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2017/017202 WO2018203376A1 (ja) | 2017-05-01 | 2017-05-01 | データベースシステム、方法およびプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6889253B2 (ja) |
WO (1) | WO2018203376A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05225239A (ja) * | 1991-11-26 | 1993-09-03 | Internatl Business Mach Corp <Ibm> | 同時発生制御方法とトランザクシヨン及び問合せ処理システム |
JP2007219598A (ja) * | 2006-02-14 | 2007-08-30 | Nippon Telegr & Teleph Corp <Ntt> | 多重化データベースシステム及びその同期化方法、データベースサーバ、並びに、データベースサーバプログラム |
JP2012155498A (ja) * | 2011-01-25 | 2012-08-16 | Fujitsu Ltd | データベースサーバ装置、データベース更新方法及びデータベース更新プログラム |
WO2017077616A1 (ja) * | 2015-11-05 | 2017-05-11 | 株式会社Murakumo | データベースシステム、トランザクション管理ノード、方法およびプログラム |
-
2017
- 2017-05-01 JP JP2019516316A patent/JP6889253B2/ja active Active
- 2017-05-01 WO PCT/JP2017/017202 patent/WO2018203376A1/ja active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05225239A (ja) * | 1991-11-26 | 1993-09-03 | Internatl Business Mach Corp <Ibm> | 同時発生制御方法とトランザクシヨン及び問合せ処理システム |
JP2007219598A (ja) * | 2006-02-14 | 2007-08-30 | Nippon Telegr & Teleph Corp <Ntt> | 多重化データベースシステム及びその同期化方法、データベースサーバ、並びに、データベースサーバプログラム |
JP2012155498A (ja) * | 2011-01-25 | 2012-08-16 | Fujitsu Ltd | データベースサーバ装置、データベース更新方法及びデータベース更新プログラム |
WO2017077616A1 (ja) * | 2015-11-05 | 2017-05-11 | 株式会社Murakumo | データベースシステム、トランザクション管理ノード、方法およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP6889253B2 (ja) | 2021-06-18 |
JPWO2018203376A1 (ja) | 2020-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983868B2 (en) | Epoch based snapshot summary | |
US9747320B2 (en) | Efficient reference counting in content addressable storage | |
JP7038710B2 (ja) | データ管理方法及びシステム | |
US10496618B2 (en) | Managing data replication in a data grid | |
JP5952960B2 (ja) | 計算機システム、計算機システム管理方法及びプログラム | |
US20140032496A1 (en) | Information storage system and data replication method thereof | |
US11734229B2 (en) | Reducing database fragmentation | |
US20200065306A1 (en) | Bloom filter partitioning | |
JP2011242949A (ja) | ファイル管理プログラム、ファイル管理方法、及び情報処理装置 | |
JP6586174B2 (ja) | データベースシステム、トランザクション管理ノード、方法およびプログラム | |
US11860739B2 (en) | Methods for managing snapshots in a distributed de-duplication system and devices thereof | |
EP3039568B1 (en) | Distributed disaster recovery file sync server system | |
JP5331050B2 (ja) | データ同期システム、データ同期方法、情報処理装置、情報処理方法、およびプログラム | |
Deftu et al. | A scalable conflict-free replicated set data type | |
WO2018203376A1 (ja) | データベースシステム、方法およびプログラム | |
JP6889254B2 (ja) | データベースシステム、方法およびプログラム | |
US10540328B1 (en) | Web-scale distributed deduplication | |
JP5685213B2 (ja) | 差分レプリケーションシステム、マスターデータベース装置、及びスレーブデータベース装置 | |
US10324750B2 (en) | Computer system, computer system management method and program | |
WO2018013541A1 (en) | Improved data deduplication for eventual consistency system and method | |
US10795891B2 (en) | Data deduplication for eventual consistency system and method | |
JP2012064089A (ja) | 情報同期システム、情報同期プログラムおよび情報同期方法 | |
JP2015064804A (ja) | 無効リンクの発生を抑止するデータ管理システムおよび記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17908323 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2019516316 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 17908323 Country of ref document: EP Kind code of ref document: A1 |