JP2015170076A - データベースシステム - Google Patents

データベースシステム Download PDF

Info

Publication number
JP2015170076A
JP2015170076A JP2014043636A JP2014043636A JP2015170076A JP 2015170076 A JP2015170076 A JP 2015170076A JP 2014043636 A JP2014043636 A JP 2014043636A JP 2014043636 A JP2014043636 A JP 2014043636A JP 2015170076 A JP2015170076 A JP 2015170076A
Authority
JP
Japan
Prior art keywords
update
data
value
key
database system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014043636A
Other languages
English (en)
Other versions
JP6239407B2 (ja
Inventor
圭 山地
Kei Yamaji
圭 山地
基孝 金松
Mototaka Kanematsu
基孝 金松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014043636A priority Critical patent/JP6239407B2/ja
Publication of JP2015170076A publication Critical patent/JP2015170076A/ja
Application granted granted Critical
Publication of JP6239407B2 publication Critical patent/JP6239407B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

【課題】キャッシュテーブルを効率的に更新するデータベースシステムを提供することにある。
【解決手段】実施形態によれば、第1テーブルおよび当該第1テーブルを事前に参照要求に適するように変形をした第2テーブルを用いてデータの参照要求に応答するデータベースシステムは、第1テーブルを管理する第1管理手段と、第2テーブルを管理する第2管理手段とを具備する。第1管理手段は、第1テーブルのデータが更新された場合、その更新内容を示す更新通知を第2管理手段に送信する通知手段を具備する。第2管理手段は、更新通知で示される更新内容に該当する第2テーブルのデータを無効化する無効化手段と、データの参照要求に応答するために必要な第2テーブルのデータが無効化されている場合、そのデータを第1テーブルから取得して第2テーブルに格納する更新手段とを具備する。
【選択図】図16

Description

本発明の実施形態は、データベースシステムに関する。
リレーショナル型データベースは、表形式で管理されるデータ(テーブル)を、SQL(Structured query language)を使って操作するデータベースである。リレーショナル型データベースは、SQLで結合条件を指定することにより、複数のテーブルを動的に関連付けることができる。
複数のテーブルを関連付ける処理(結合:JOIN)は、条件によっては、その負荷が非常に大きくなるため、このような条件に備えて、複数のテーブルを結合したキャッシュテーブルを予め用意しておくといったことも行われている。
特開2006−343798号公報
キャッシュテーブルの基となるテーブルが更新された場合の対処法には、同期型と、非同期型とが存在する。同期型では、テーブルの更新時に、キャッシュテーブルを即応的に更新する。一方、非同期型では、一定期間毎に、各期間の更新分を一括して更新する。
しかしながら、同期型は、更新時間の増大を招くおそれがあり、一方、非同期型は、更新前の古いデータが参照されるおそれがある。
本発明が解決しようとする課題は、キャッシュテーブルを効率的に更新するデータベースシステムを提供することにある。
実施形態によれば、データベースシステムは、第1テーブルおよび当該第1テーブルを事前に参照要求に適するように変形をした第2テーブルを用いて、データの参照要求に応答する。データベースシステムは、第1管理手段と、第2管理手段とを具備する。前記第1管理手段は、前記第1テーブルを管理する。前記第2管理手段は、前記第2テーブルを管理する。前記第1管理手段は、通知手段を具備する。前記通知手段は、前記第1テーブルのデータが更新された場合、その更新内容を示す更新通知を前記第2管理手段に送信する。前記第2管理手段は、無効化手段と、更新手段とを具備する。前記無効化手段は、前記更新通知を受信した場合、前記更新通知で示される更新内容に該当する前記第2テーブルのデータを無効化する。前記更新手段は、前記第1テーブルのデータの参照要求を受けた場合であって、そのデータの参照要求に応答するために必要な前記第2テーブルのデータが無効化されている場合、そのデータを前記第1テーブルから取得して前記第2テーブルに格納する。
第1実施形態のデータベースシステムのシステム構成を示す図。 更新用テーブルから参照用テーブルを生成する一例を示す図。 更新用テーブルが更新された場合に同期的に参照用テーブルを更新する一般的な例を示す図。 更新用テーブルが更新された場合に非同期的に参照用テーブルを更新する一般的な例を示す図。 更新用テーブルが更新された場合の参照用テーブルの更新についての一般的な考え方を説明するための図。 第1実施形態のデータベースシステムにおける更新用テーブルが更新された場合の参照用テーブルの更新についての基本的な考え方を説明するための図。 更新用テーブルが局所的に頻繁に更新された場合の一例を示す図。 「更新側主導」における更新用テーブルの更新に伴う参照用テーブルの更新に関する処理の流れを示す図。 「更新側主導」の場合に更新用テーブルの更新時に必要となる計算を説明するための第1の図。 「更新側主導」の場合に更新用テーブルの更新時に必要となる計算を説明するための第2の図。 「参照側主導」における更新用テーブルの更新に伴う参照用テーブルの更新に関する処理の流れを示す図。 更新用テーブルが局所的に更新された場合の参照用テーブルの更新に関する処理の流れを「更新側主導」と「参照側主導」とで比較する図。 第1実施形態のデータベースシステムにおける参照用テーブルの一構成例を示す図。 「更新側主導」における典型的な参照用テーブルの一構成例を示す図。 「更新側主導」おいて図14の参照用テーブルを更新用テーブルの更新に伴って更新する手順を説明するための図。 第1実施形態のデータベースシステムの参照用テーブルの更新に関する機能ブロック図。 第1実施形態のデータベースシステムで実行される参照用テーブルの生成を要求するクエリの解析を説明するための図。 第1実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第1の図。 第1実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第2の図。 第1実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第3の図。 第1実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第4の図。 第1実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第5の図。 第1実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第6の図。 第1実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第7の図。 第1実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第8の図。 第1実施形態のデータベースシステムにおける更新側データベースエンジンの参照用テーブルの生成時の動作手順を示す図。 第1実施形態のデータベースシステムにおける参照側データベースエンジンの参照用テーブルの生成時の動作手順を示す図。 第1実施形態のデータベースシステムにおける更新側データベースエンジンの更新用テーブルの更新時の動作手順を示す図。 第1実施形態のデータベースシステムにおける参照側データベースエンジンの更新用テーブルの更新時および参照要求の受け付け時の動作手順を示す図。 更新用テーブルの更新に伴う参照用テーブルの更新を「更新側主導」で行った場合と「参照側主導」で行った場合との処理量を比較する図。 更新用テーブルの更新に伴う参照用テーブルの更新を「更新側主導」で行った場合と「参照側主導」で行った場合との所要時間を比較する図。 第2実施形態のデータベースシステムにおける参照用テーブルの一構成例を示す図。 第2実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第1の図。 第2実施形態のデータベースシステムによる参照用テーブルの「参照側主導」での更新手順を説明するための第2の図。 第3実施形態のデータベースシステムにおける参照用テーブルの一構成例を示す図。
以下、実施の形態について図面を参照して説明する。
(第1実施形態)
図1は、本実施形態に係るデータベースシステム1のシステム構成を示す図である。
図1に示すように、本データベースシステム1は、各々がアプリケーションプログラム2からのデータ処理要求を受け付ける1以上のデータベース10によって構成される。ここでは、2つのデータベース10を示しているが、単なる例示であって、これに限定されるものではない。つまり、本データベースシステム1は、1つのデータベース10によっても構成され得るし、3つ以上のデータベース10によっても構成され得る。
データベース10は、複数のテーブルを結合させることが可能なリレーショナル型データベースであり、コントローラ11およびファイルシステム12を有している。アプリケーションプログラム2は、GUI(Graphical user interface)部21および論理・算術演算部22を有し、例えば、GUI部21により受け付けたユーザからの指示に応じて、論理・算術演算部22が、SQLで記述したデータ処理要求をデータベース10に発行し、返却されたデータ処理結果をGUI部21によりユーザに提示する。アプリケーションプログラム2により発行されるデータ処理要求には、大きく分けて、データの参照要求と、データの更新要求とが存在し、データの更新要求には、データの追加要求および削除要求が含まれる。また、SQLで記述されるデータ処理要求は、SQL文やクエリなどと称される。
データベース10のコントローラ11は、アプリケーションプログラム2からのデータ処理要求の受付窓口の役割を担うモジュールである。コントローラ11は、要求されたデータ処理を実行するデータベースエンジン100を有している。また、コントローラ11は、他のデータベース10のコントローラ11との間で通信する機能を有している。したがって、アプリケーションプログラム2は、データ処理要求の発行先であるデータベース10で管理されるテーブルと、このデータベース10とは異なるデータベース10で管理されるテーブルとの結合を伴うデータ処理要求を発行することもできる。換言すれば、アプリケーションプログラム2は、本データベースシステム1を構成する1以上のデータベース10内に存在するテーブルのすべてをデータ処理の対象とすることができる。データベース10のファイルシステム12は、データベース10内に存在する、テーブルのデータを含む各種データの記憶媒体上における配置場所を管理するモジュールである。
本データベースシステム1は、データベース10の各々が、テーブルを事前に参照要求に適するように変形をしたキャッシュテーブルを予め用意しておき、テーブルおよびキャッシュテーブルを使って、データの参照要求に応答する機能を有している。変形とは、典型的には、2以上のテーブルを結合することである。そして、本データベースシステム1は、キャッシュテーブルの基となるテーブルが更新された場合のキャッシュテーブルの更新を効率的に行う仕組みを実装するものであり、以下、この仕組みについて詳述する。
まず、本データベースシステム1が実装する、キャッシュテーブルを効率的に更新する仕組みの理解を助けるために、図2乃至図4を参照して、キャッシュテーブルの基となるテーブルが更新された場合の一般的な対処法について説明する。
図2は、2つのテーブル(テーブルA,B)を結合してキャッシュテーブルを生成する一例を示している。以下、キャッシュテーブルを参照用テーブル201(マテリアライズドビュー:MATERIALIZED VIEW [MVIEW])、キャッシュテーブルの基となるテーブルを更新用テーブル202と称する。
図2中、「CREATE MATERIALIZED VIEW READABLE AS SELECT 名前、場所 FROM A,B WHERE a2=1 and a3=b0 and b2=’今’」は、更新用テーブル202から参照用テーブル201を生成するためのクエリである。本クエリ中、”WHERE”部に条件文が記述され、条件文は、結合条件と絞り込み条件とを含み得る。”a3=b0”が、結合条件であり、テーブルAの3つ目のフィールドに格納される値とテーブルBの行番号とが一致する行を結合する旨を指定するものである。”a2=1”および”b2=’今’”は、絞り込み条件であり、テーブルAの2つ目のフィールドに格納される値が「1」、テーブルBの2つ目のフィールドに格納される値が「今」の行に絞り込む旨を指定するものである。なお、”SELECT”部には、抽出すべき項目名(フィールド名)が記述され、また、”FROM”部には、対象とすべきファイル名(テーブル名)が記述される。ここでは、テーブルAの1つ目のフィールドの項目名が「名前」であり、また、テーブルBの1つ目のフィールドの項目名が「場所」であるものとする。
図2に示す参照用テーブル201を予め生成しておくことにより、以降、「SELECT 名前、場所 FROM A,B WHERE a2=1 and a3=b0 and b2=’今’」を含むデータの参照要求であるクエリが発行された場合、テーブルAとテーブルBとの結合を行わなくとも、要求されたデータを速やかに返却することが可能となる。
ところで、前述したように、アプリケーションプログラム2により発行されるクエリには、データの参照要求のみならず、データの更新要求も存在する。したがって、参照用テーブル201を生成した後に、更新用テーブル202が更新されることも考えられる。この場合、その更新内容を参照用テーブル201に反映させる必要が生じる。ここで、参照用テーブル201の基となる更新用テーブル202であるテーブルAの行番号「2」の行の1つ目のフィールドが「田中」から「里中」に更新された場合を想定する。なお、以下では、行番号を主キー値と称することがある。
図3は、更新用テーブル202の更新内容を参照用テーブル201に同期的に反映させる場合の例を示している。
図3に示すように、更新用テーブル202が更新された場合に、参照用テーブル201を即応的に更新すれば、データの参照要求に対して返却されるデータは、常に最新のデータとなる。一方で、参照用テーブル201の更新を頻繁に行うことになりかねず、更新時間の増大を招くおそれがある。
また、図4は、更新用テーブル202の更新内容を参照用テーブル201に非同期的に反映させる場合の例を示している。
更新用テーブル202が更新されても、参照用テーブル201を即応的に更新するのではなく、図4に示すように、一定期間毎に、各期間の更新分を一括して更新すれば、更新時間は想定範囲内に収めることができる。一方で、データの参照要求に対して返却されるデータが、更新前の古いデータとなるおそれがある。
このような、参照用テーブル201の基となる更新用テーブル202が更新された場合の一般的な対処法である同期型および非同期型の双方の特長を踏まえた上で、続いて、図5および図6を参照して、本データベースシステム1における更新用テーブル202が更新された場合の参照用テーブル201の更新についての基本的な考え方を説明する。
まず、図5に、更新用テーブル202が更新された場合の参照用テーブル201の更新についての一般的な考え方を示す。
前述した、更新用テーブル202の更新内容を同期的に参照用テーブル201に反映させる対処法(同期型)および更新用テーブル202の更新内容を非同期的に参照用テーブル201に反映させる対処法(非同期型)のいずれも、更新用テーブル202の更新というイベントの発生を契機として、参照用テーブル201の更新を実行するという、言うなれば「更新側主導」の考え方である。
次に、図6に、本データベースシステム1における更新用テーブル202が更新された場合の参照用テーブル201の更新についての基本的な考え方を示す。
本データベースシステム1では、更新用テーブル202の更新時、旧データを無効化するだけで、参照用テーブル201の更新は実行しない。図6では、旧データを含むデータセットの配置場所を示すポインタの値を「0」に更新している。ここで、「0」は、無効を示す値として定義されているものとする。
そして、本データベースシステム1では、参照用テーブル201の参照時、該当データが無効化されていた場合に、新データを更新用テーブル202から取得し、参照用テーブル201を更新する。このように、本データベースシステム1では、言うなれば「参照側主導」の考え方を採用する。
図7に、参照用テーブル201の基となる更新用テーブル202が局所的に頻繁に更新された場合の一例を示す。
いま、ある時点(図7のa1)で参照されたデータの同一箇所が頻繁に更新された場合を考える(図7のa2〜a6)。ここでは、参照時の「3」が、「3」→「8」→「9」→「5」→「9」→「6」と更新されている。この間、このデータが参照されることはなく、その後、このデータが2度参照されたとする(図7のa7,a8)。
このような場合、「更新側主導」では、特に「同期型」においては、更新回数分、このデータに関する参照用テーブル201の更新が実行される。「非同期型」においても、各更新が互いに異なる期間内に行われたならば、「同期型」と同様、更新回数分、このデータに関する参照用テーブル201の更新が実行される。この間、このデータは参照されていないので、「3」→「8」→「9」→「5」→「9」の更新は無駄となる。
一方、「参照側主導」では、更新後の最初の参照時(図7のa7)に新データを取得して参照用テーブル201を更新するので、上記のような参照用テーブル201の無駄な更新の実行を排除できる。また、以降の参照時(図7のa8)には、参照用テーブル201に格納された新データを速やかに参照することができる。
このように、「参照側主導」は、データの参照要求に対して常に最新のデータを返却することを保証しつつ、データの更新に関するオーバヘッドを最小化する。
図8は、「更新側主導」における更新用テーブル202の更新に伴う参照用テーブル201の更新に関する処理の流れを示す図である。なお、ここでは、データの参照要求に対応するモジュールと、データの更新要求に対応するモジュールとが各々設けられているものとする。データの参照要求に対応するモジュールとは、即ち参照用テーブル201の管理を司るモジュールであり、データの更新要求に対応するモジュールとは、即ち更新用テーブル202の管理を司るモジュールである。
図8に示すように、「更新側主導」では、更新用テーブル202の更新が要求された場合(図8のb1)、更新用テーブル202の更新に加え、概ねその都度(「同期型」であれば毎回)、新データが参照用テーブル201の条件に合うか(参照用テーブル201の条件から外れたか)を確認するための計算が行われ(図8のb2)、必要であれば、参照用テーブル201を更新するためのデータの転送が行われる(図8のb3)。この更新データの参照用テーブル201への反映(図8のb4)も、更新用テーブル202の更新を契機として実行される。そして、これらの処理は、参照用テーブル201の参照(図8のb5)の有無に関係なく実行される。
ここで、まず、図9および図10を参照して、「更新側主導」の場合に必要となる、更新用テーブル202の更新時に新データが参照用テーブル201の条件に合うか(参照用テーブル201の条件から外れたか)を確認するための計算について説明する。
図9では、テーブルAの行番号「2」の行の3つめのフィールド(a3)が「1」から「3」に変更された例を示している。このフィールドは、結合条件に関わるフィールドであり、また、結合先のテーブルBの2つ目のフィールド(b2)が、絞り込み条件に関わるフィールトであるので、新データに基づき改めて結合を行い、結合先のテーブルBの2つ目のフィールドの値を確認する。その値は「昔」であり、絞り込み条件を満たさない。
この時、更新前の旧データ「1」により結合されるテーブルBの2つ目のフィールドの値を確認すると、その値は「今」であり、絞り込み条件を満たしている。これにより、参照用テーブル201から1つの行を削除する必要があることが分かる。
一方、図10では、テーブルAの行番号「3」の行の3つ目のフィールド(a3)が、「3」から「1」に変更された例を示している。このフィールドは、結合条件に関わるフィールドであり、また、結合先のテーブルBの2つ目のフィールド(b2)が、絞り込み条件に関わるフィールトであるので、新データに基づき改めて結合を行い、結合先のテーブルBの2つ目のフィールドの値を確認する。その値は「今」であり、絞り込み条件を満たしている。
この時、更新前の旧データ「3」により結合されるテーブルBの2つ目のフィールドの値を確認すると、その値は「昔」であり、絞り込み条件を満たさない。これにより、参照用テーブル201に1つの行を追加する必要があることが分かる。なお、絞り込み条件を満たしている場合には、参照用テーブル201側に存在するデータセットを更新する必要があることが分かる。例えば更新前の旧データが「2」であった場合、参照用テーブル201側の該当データセット内の「横浜」を「川崎」に更新しなければならない。
このように、「更新側主導」の場合には、更新用テーブル202の更新時、負荷の大きい結合を伴う計算が必須となる。
図11は、「参照側主導」における更新用テーブル202の更新に伴う参照用テーブル201の更新に関する処理の流れを示す図である。
図11に示すように、「参照側主導」では、更新用テーブル202の更新が要求された場合(図11のc1)、更新用テーブル202の更新(図11のc2)と、その更新の通知(図11のc3)とが行われる。また、参照用テーブル201については、更新が通知されたデータに関わる行の削除(図11のc4)、つまり無効化のみが行われ、参照用テーブル201の更新は実行されない。
また、更新用テーブル202の更新(図11のc2)が、同一テーブルの同一レコードに対する2箇所目以降の更新である場合や、そもそも参照用テーブル201と関係のないデータを対象とするものである場合、その更新の通知(図11のc3)は行われず、参照用テーブル201の該当行の削除(図11のc4)も行われない。
そして、参照用テーブル201の参照時(図11のc5)、該当のデータが存在しない場合に限り、そのデータを更新用テーブル202から取得して、参照用テーブル201を更新する(図11のc6)。
図12は、更新用テーブル202が局所的に更新された場合の参照用テーブル201の更新に関する処理の流れを「更新側主導」と「参照側主導」とで比較する図である。
参照用テーブル201を更新した後、そのデータが参照されなかった場合、その更新は無駄に終わる。したがって、図12に示すように、「更新側主導」では、例えば更新用テーブル202が局所的に更新された場合、無駄な参照用テーブル201の更新が多く発生する。これに対して、「参照側主導」では、参照用テーブル201の更新が、参照される必要分に止まる。このことから、「参照側主導」は、バースト処理に対して効果的であるといえる。
次に、本データベースシステム1が、この「参照側主導」を実現する基本原理について説明する。
図13は、「参照側主導」である本データベースシステム1における参照用テーブル201の一構成例を示す図である。
ここで、図13に示す参照用テーブル201の一構成例と比較するために、一旦、図14および図15を参照して、「更新側主導」における典型的な参照用テーブル201の一構成例および更新用テーブル202の更新に伴う当該参照用テーブル201の更新手順を説明する。
図14に示すように、「更新側主導」の場合、参照用テーブル201は、通常、結合した各テーブルの行番号(主キー値)の組み合わせである行番号(rowid)と、データセットの配置場所を示すポインタ(ptr)とを備える。
いま、更新用テーブル202のデータであって、参照用テーブル201側にキャッシュされているデータが「田中」から「里中」に更新されたものとする。
この場合、図15に示すように、更新されたデータを含む行について結合を実行し、参照用テーブル201における行番号を計算して、参照用テーブル201用の更新データとして転送する。そして、この更新データに付される行番号に基づき、参照用テーブル201を更新する。
再び、図13を参照する。
この参照用テーブル201について、「参照側主導」である本データベースシステム1では、行番号(rowid)とは別に、主キー値を格納するキーフィールドをテーブル(更新用テーブル202)毎に持つ(rA,rB)。そして、本データベースシステム1では、第1に、キャッシュが有効か否かのフラグを行毎に持つ(cache)。第2に、主キー値による行番号のダイレクトサーチを可能とするためのインデックスをテーブル(更新用テーブル202)毎に持つ(index_rA,index_rB)。第3に、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグをテーブル(更新用テーブル202)毎に持つ。
以下、図13に示したように参照用テーブル201を構成することで、本データベースシステム1が、当該参照用テーブル201を「参照側主導」でどのように更新するのかについて説明する。
図16は、本データベースシステム1の参照用テーブル201の更新に関する機能ブロック図である。
本データベースシステム1における参照用テーブル201および更新用テーブル202の管理は、データベースエンジン100が司る。図16中、(A)は、データの参照要求に対応するモジュール、つまり参照用テーブル201の管理を司るモジュールとして動作するデータベースエンジン100の機能ブロックを示し、(B)は、データの更新要求に対応するモジュール、つまり更新用テーブル202の管理を司るモジュールとして動作するデータベースエンジン100の機能ブロックを示している。1つのデータベースエンジン100を、データの参照要求に対応するモジュールおよびデータの更新要求に対応するモジュールの双方として動作させてもよいし、2つのデータベースエンジン100を、一方をデータの参照要求に対応するモジュールとして、他方をデータの更新要求に対応するモジュールとして動作させてもよい。以下、データの参照要求に対応するモジュールとして動作するデータベースエンジン100を参照側データベースエンジン100と称し、データの更新要求に対応するモジュールとして動作するデータベースエンジン100を更新側データベースエンジン100と称する。
図16(A)に示すように、参照側データベースエンジン100は、SQL文解析部111、データ制御部112、データ変更部113、データ要求部114およびメモリ115を有している。
SQL文解析部111は、SQLで記載されるデータの参照要求、つまりクエリを解析するモジュールである。SQL文解析部111は、その参照要求が参照用テーブル201を適用可能なものであるか否かを判定する。参照用テーブル201を適用可能なデータの参照要求は、参照用テーブル201からデータが取得されて返却され、参照用テーブル201を適用不可なデータの参照要求は、更新用テーブル202からデータが取得されて返却されることとなる。
データ制御部112は、参照が要求されたデータを返却するモジュールであり、当該参照が要求されたデータが参照用テーブル201に存在するか否か(参照用テーブル201のデータは有効か否か)を判定する機能を有している。データ変更部113は、更新側データベースエンジン100から更新用テーブル202の更新通知を受け取った場合に、参照用テーブル201の該当データを無効化する等の参照用テーブル201の更新を実行するモジュールである。また、データ変更部113は、更新通知として送られてくるスキーマに基づき、参照用テーブル201を作成する機能を有している。
データ要求部114は、データ制御部112により、参照が要求されたデータが参照用テーブル201に存在しないと判定された場合、該当データを更新用テーブル202から取得して、参照用テーブル201に格納するモジュールである。メモリ115は、参照用テーブル201を格納する記憶領域である。
また、更新側データベースエンジン100は、図16(B)に示すように、SQL文解析部121、データ制御部122、更新通知部123およびメモリ124を有している。
SQL文解析部121も、参照側データベースエンジン100のSQL文解析部111と同様、クエリを解析するモジュールである。データの更新要求の中には、キャッシュテーブルの生成要求、つまり参照用テーブル201の生成要求も含まれ、SQL文解析部121は、クエリが参照用テーブル201の生成を要求するものか否かを判定する機能を有している。また、SQL文解析部121は、参照用テーブル201の生成を要求するクエリから、絞り込み条件と結合条件とを含む条件文を抽出する機能を有している。この条件文の抽出は、更新用テーブル202の更新に伴う参照用テーブル201の更新を「参照側主導」で行うための事前準備として行うものであり、この点については後述する。
データ制御部122は、更新が要求された更新用テーブル202のデータを更新するモジュールである。この更新時、データ制御部122は、データを更新した行の行番号を示す更新行情報210をメモリ124に格納する。データ制御部122は、参照用テーブル201の生成が要求された際、当該参照用テーブル201のスキーマを作成する。
更新通知部123は、データ制御部122により作成されたスキーマと、メモリ124に格納された更新行情報210とを、更新通知として参照側データベースエンジン100に送信するモジュールである。メモリ124は、更新行情報210を格納する記憶領域である。
ここで、図17を参照して、更新側データベースエンジン100のSQL文解析部121による参照用テーブル201の生成を要求するクエリの解析について説明する。
いま、「CREATE MATERIALIZED VIEW READABLE AS SELECT 名前、場所 FROM A,B WHERE a2=1 and a3=b0 and b2=’今’」といったクエリが発行されたものと想定する。SQL文解析部121は、このクエリから、条件文、つまり「WHERE a2=1 and a3=b0 and b2=’今’」のみを抽出する。また、SQL文解析部121は、抽出した条件文に含まれる結合条件(a3=b0)で指定される各テーブルのキー(a3,b0)と、結合対象の各テーブルの主キー(a0,b0)とを、結合に関わるキーとして取得する。
次に、図18乃至図26を参照して、事前準備として取得したキーを使った参照用テーブル201の「参照側主導」での更新手順について説明する。このうち、図18乃至図22は、更新用テーブル202の更新時に関する図であり、図23乃至図26は、参照用テーブル201の参照時に関する図である。
図18は、事前準備として取得したキー以外の変更となる更新用テーブル202の更新の一例を示している。
図18に示すように、ここでは、テーブルAの行番号(a0)「2」の行の1つ目のフィールド(a1)が、「田中」から「里中」に更新されている。”a1”は、事前準備として取得したキー以外、つまり結合に関わるキーではないので、更新側データベースエンジン100の更新通知部123は、この行のデータを含むデータセットを無効とするための更新通知(Clear)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」を示す情報(A2)が含まれる。
一方、参照側データベースエンジン100は、この更新通知を受けると、データ変更部113が、テーブルA用のインデックスで参照用テーブル201の行番号を取得し、その行のフラグ(cache)を無効に更新する。ここで、各フラグは、「1」が有効、「0」が無効を示すものとする。
事前準備として取得したキー以外の変更となる更新用テーブル202の更新時には、以上の処理を行うのみで終了する。
図19は、事前準備として取得したキーの変更となる更新用テーブル202の更新であって、更新された行の主キー値がそのテーブル用のインデックスに存在する場合の一例を示している。インデックスに存在する場合とは、その行のデータを含むデータセットが参照用テーブル201側に存在する場合または過去に存在した場合である。
図19に示すように、ここでは、テーブルAの行番号(a0)「2」の行の3つ目のフィールド(a3)が、何らかの値から「3」に更新されている。”a3”は、事前準備として取得したキー、つまり結合に関わるキーであるので、更新側データベースエンジン100の更新通知部123は、この行との結合を無効とするための更新通知(Key)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」を示す情報(A2)が含まれる。
一方、参照側データベースエンジン100は、この更新通知を受けると、データ変更部113が、テーブルA用のインデックスで参照用テーブル201の行番号を取得し、その行のテーブルA以外のすべてのキーフィールド(rB)、フラグ(cache)およびポインタ(ptr)を無効に更新する。また、データ変更部113は、キーフィールドを無効に更新した場合、そのキーフィールドに対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを無効に更新する。
また、図20は、事前準備として取得したキーの変更となる更新用テーブル202の更新であって、更新された行の主キー値がそのテーブル用のインデックスに存在しない場合の一例を示している。インデックスに存在しない場合とは、更新前のデータによる結合では絞り込み条件を満たさず、その行のデータを含むデータセットが参照用テーブル201側において作成されなかった場合、または、その主キー値を格納していたキーフィールドすべてが無効に更新された場合である。
図20に示すように、ここでは、テーブルAの行番号(a0)「2」の行の3つ目のフィールド(a3)が、何らかの値から「1」に更新されている。”a3”は、事前準備として取得したキー、つまり結合に関わるキーであるので、更新側データベースエンジン100の更新通知部123は、この行との結合を無効とするための更新通知(Key)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」の行を示す情報(A2)が含まれる。
一方、参照側データベースエンジン100は、この更新通知を受けると、データ変更部113が、テーブルA用のインデックスで参照用テーブル201の行番号を取得しようと試みる。更新された行の主キー値がテーブルA用のインデックスに存在しない場合、データ変更部113は、参照用テーブル201に行を追加するとともに、更新された行の主キー値で当該追加した行の行番号を得られるようにインデックスも追加する。追加した行のテーブルAのキーフィールド(rA)には更新された行の行番号である主キー値「2」が格納され、それ以外のすべてのキーフィールド(rB)、フラグ(cache)およびポインタ(ptr)には無効を示す値「0」が格納される。また、無効を示す値「0」を格納するキーフィールドが発生したことにより、データ変更部113は、そのキーフィールドに対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを無効に更新する。
図21は、事前準備として取得したキーの変更となる、更新用テーブル202に行が追加された場合の一例を示している。
図21に示すように、ここでは、行番号(a0)「5」の行がテーブルAに追加されている。結合に関わるキーである”a0”および”a3”のデータの追加を伴うので、更新側データベースエンジン100の更新通知部123は、この行との結合を無効とするための更新通知(Key)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「5」を示す情報(A5)が含まれる。
この場合、この更新通知を受けた参照側データベースエンジン100のデータ変更部113が行う処理は、図20を参照して説明した、事前準備として取得したキーの変更となる更新用テーブル202の更新であって、更新された行の主キー値がそのテーブル用のインデックスに存在しない場合の処理と同様となる。つまり、データ変更部113は、参照用テーブル201に行を追加するとともに、更新された行の主キー値で当該追加した行の行番号を得られるようにインデックスも追加する。追加した行のテーブルAのキーフィールド(rA)には更新された行の行番号である主キー値「5」が格納され、それ以外のすべてのキーフィールド(rB)、フラグ(cache)およびポインタ(ptr)には無効を示す値「0」が格納される。また、無効を示す値「0」を格納するキーフィールドが発生したことにより、データ変更部113は、そのキーフィールドに対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを無効に更新する。
逆に、図22は、事前準備として取得したキーの変更となる、更新用テーブル202から行が削除された場合の一例を示している。
図22に示すように、ここでは、行番号(a0)「2」の行がテーブルAから削除されている。結合に関わるキーである”a0”および”a3”のデータの削除を伴うので、更新側データベースエンジン100の更新通知部123は、この行との結合を無効とするための更新通知(Key)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」を示す情報(A2)が含まれる。
この場合、この更新通知を受けた参照側データベースエンジン100のデータ変更部113が行う処理は、図19を参照して説明した、事前準備として取得したキーの変更となる更新用テーブル202の更新であって、更新された行の主キー値がそのテーブル用のインデックスに存在する場合の処理と同様となる。つまり、データ変更部113は、テーブルA用のインデックスで参照用テーブル201の行番号を取得し、その行のテーブルA以外のすべてのキーフィールド(rB)、フラグ(cache)およびポインタ(ptr)を無効に更新する。また、データ変更部113は、キーフィールドを無効に更新した場合、そのキーフィールドに対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを無効に更新する。
以上が、本データベースシステム1の更新用テーブル202の更新時における参照用テーブル201の更新手順である。なお、更新側データベースエンジン100は、更新用テーブル202が更新された場合であっても、それが参照用テーブルの生成時にSQL文解析部121により抽出された条件文に含まれる絞り込み条件を満たさないデータに対する更新であった場合には、更新通知部123による更新通知の参照側データベースエンジン100への送信は行わない。
図23は、更新用テーブル202上で更新されている行の主キー値を絞り込み条件として指定する参照であって、その更新が、事前準備として取得したキー以外の変更である場合の一例を示している。
図23に示すように、ここでは、テーブルAの主キー(a0)値「2」が絞り込み条件として指定されている。このテーブルAの行番号(a0)「2」の行は、1つ目のフィールド(a1)が「田中」から「里中」に更新されている。”a1”は、事前準備として取得したキー以外、つまり結合に関わるキーではないので、参照用テーブル201上では、その行のフラグ(cache)が無効に更新されていることになる。
参照側データベースエンジン100は、データ制御部112により、参照が要求されたデータを返却する。データ制御部112は、参照対象の行のフラグ(cache)が有効を示す場合には、その行のポインタ(ptr)で示される配置場所に存在するデータセットを使って、参照が要求されたデータを返却することができる。
一方、参照対象の行のフラグ(cache)が無効を示す場合、データ制御部112は、参照が要求されたデータは参照用テーブル201に存在しない(参照用テーブル201のデータは有効ではない)と判定する。この場合、データ要求部114が、その行のキーフィールド(rA,rB)に格納される主キー値(「2」,「1」)を絞り込み条件として指定したクエリを作成し、更新後のデータを含むデータセットを更新用テーブル202から取得する。データ要求部114は、参照対象の行のポインタ(ptr)を、取得したデータセットの配置場所を示す値に更新して、当該参照対象の行のフラグ(cache)を有効に更新する。そして、データ制御部112は、このデータセットを使って、参照が要求されたデータを返却する。
参照対象の行のキーフィールドに格納される主キー値を絞り込み条件として指定したクエリを作成することにより、参照時における、更新用テーブル202からの最新のデータセットの取得を迅速に行うことができる。
図24は、更新用テーブル202上で更新されている行と結合された(更新されていない)行の主キー値を絞り込み条件として指定する参照であって、その更新が、事前準備として取得したキー以外の変更である場合の一例を示している。
図24に示すように、ここでは、テーブルBの主キー(b0)値「1」が絞り込み条件として指定されている。このテーブルBの行番号(b0)「1」の行は、更新されていないが、この行が結合されるテーブルAの行番号(a0)「2」の行と行番号(a0)「3」の行とのうち、行番号(a0)「2」の行は、1つ目のフィールド(a1)が、「田中」から「里中」に更新されている。”a1”は、事前準備として取得したキー以外、つまり結合に関わるキーではないので、参照用テーブル201上では、その行のフラグ(cache)が無効に更新されていることになる。
参照対象の行のフラグ(cache)が無効を示すので、参照側データベースエンジン100は、図23を参照して説明した、更新用テーブル202上で更新されている行の主キー値を絞り込み条件として指定する参照であって、その更新が、事前準備として取得したキー以外の変更である場合と同様の処理を行うことになる。つまり、データ制御部112により、参照が要求されたデータは参照用テーブル201に存在しない(参照用テーブル201のデータは有効ではない)と判定され、データ要求部114が、その行のキーフィールド(rA,rB)に格納される主キー値(「2」,「1」)を絞り込み条件として指定したクエリを作成し、更新後のデータを含むデータセットを更新用テーブル202から取得する。
この場合も、参照対象の行のキーフィールドに格納される主キー値を絞り込み条件として指定したクエリを作成するので、参照時における、更新用テーブル202からの最新のデータセットの取得を迅速に行うことができる。
また、図25は、主キー値を絞り込み条件として指定する参照であって、参照用テーブル201が、当該主キー値の指定が有効な状態にない場合の一例を示している。絞り込み条件としての主キー値の指定が有効な状態に無い場合とは、その主キー値のキーフィールドに無効を示す値を格納する行が存在する場合であり、例えば、事前準備として取得したキーの変更となる更新用テーブル202の更新に伴って、行が追加された場合や、ある行の当該主キー値のキーフィールドが無効に更新された場合などが該当する。
図25に示すように、ここでは、テーブルBの主キー(b0)値「1」が絞り込み条件として指定されている。また、参照用テーブル201の行番号(rowid)「3」の行のテーブルB用のキーフィールド(rB)が無効を示していることから、そのキーフィールド(rB)に対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグが無効を示している。この行番号(rowid)「3」の行のテーブルB用のキーフィールド(rB)には、「1」が格納されているべきである可能性があり、このようなテーブルB用のキーフィールド(rB)が不定である行の有無を、当該テーブルB用のキーフィールド(rB)に対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグで即時に判定することができる。
この場合、参照側データベースエンジン100は、まず、データ制御部112が、参照が要求されたデータは参照用テーブル201に存在しない(参照用テーブル201のデータは有効ではない)と判定する。そして、データ要求部114が、参照要求で絞り込み条件として指定されたテーブルBの主キー(b0)値「1」を用いてクエリを作成し、当該参照要求で絞り込み条件として指定されたテーブルBの主キー(b0)値「1」に関わるデータセットを更新用テーブル202から取得する。参照要求で絞り込み条件として指定された主キー値を用いてクエリを作成することにより、参照時における、更新用テーブル202からのデータセットの取得を最小限に抑えることができる。
データ要求部114は、キーフィールド(rB)に主キー値「1」が格納され、フラグ(cache)が無効を示していた行については、ポインタ(ptr)を、取得したデータセットの配置場所を示す値に更新して、フラグ(cache)を有効に更新する。また、キーフィールド(rB)に無効を示す値が格納されており、かつ、そのキーフィールド(rB)には主キー値「1」が格納されているべきであった行については、さらに、当該キーフィールド(rB)に主キー値「1」を格納する。この際、キーフィールド(rB)に無効を示す値を格納する行が無くなった場合、データ要求部114は、そのキーフィールド(rB)に対応する、絞り込み条件としての主キー値の指定が有効な状態か否かのフラグを有効に更新する。
以上が、本データベースシステム1の参照用テーブル201の参照時における参照用テーブル201の更新手順である。
このように、本データベースシステム1は、更新用テーブル202の更新に伴う参照用テーブル201の更新を「参照側主導」で行うことを実現する。
図26は、更新側データベースエンジン100の参照用テーブル201の生成時の動作手順を示す図である。
更新側データベースエンジン100は、クエリを受け取ると(ブロックA1)、SQL文解析部121が、そのクエリが参照用テーブル201の生成を要求するものであるか否かを判定する(ブロックA2)。SQL文解析部121により、参照用テーブル201の生成を要求するクエリであると判定されると(ブロックA2のYES)、データ制御部122が、その参照用テーブル201のスキーマを作成する(ブロックA3)。更新通知部123は、データ制御部122により作成されたスキーマを、更新通知として参照側データベースエンジン100に送信する(ブロックA4)。
図27は、参照側データベースエンジン100の参照用テーブル201の生成時の動作手順を示す図である。
参照側データベースエンジン100は、更新通知としてスキーマを受信すると(ブロックB1)、データ変更部113が、このスキーマに基づき、図13に示した構成を持つ参照用テーブル201をメモリ115に作成する(ブロックB2)。
図28は、更新側データベースエンジン100の更新用テーブル202の更新時の動作手順を示す図である。
更新側データベースエンジン100は、クエリを受け取ると(ブロックC1)、SQL文解析部121が、そのクエリが更新用テーブル202の更新を要求するものであるか否かを判定する(ブロックC3)。SQL文解析部121により、更新用テーブル202の更新を要求するクエリであると判定されると(ブロックC3のYES)、更新対象の行の情報(更新行情報210)がメモリ124に格納される(ブロックC4)。
この更新に対するコミットを要求するクエリを受けると(ブロックC2のYES)、データ制御部122は、コミット処理を実行する(ブロックC6)。また、更新通知部123は、メモリ124に格納された更新行情報210に基づき、更新通知を参照側データベースエンジン100に送信する(ブロックC7)。
図29は、参照側データベースエンジン100の更新用テーブル202の更新時および参照要求の受け付け時の動作手順を示す図である。
参照側データベースエンジン100は、更新用テーブル202の更新通知を更新側データベースエンジン100から受けると(ブロックD1)、データ変更部113が、その通知内容に応じて、参照用テーブル201を変更する(ブロックD2)。この時の参照用テーブル201の変更とは、更新データの反映ではなく、参照時に更新データの反映が必要であることを記録するためのものである。
また、参照側データベースエンジン100は、データの参照を要求するクエリを受けた場合(ブロックD3)、SQL文解析部121が、その要求が参照用テーブル201を適用可能なものであるか否かを判定する(ブロックD4)。参照用テーブル201を適用可能なものであった場合(ブロックD4のYES)、データ制御部112は、参照対象のデータが参照用テーブル201に存在すれば(ブロックC5のNO)、そのデータを返却する(ブロックD8)。
一方、参照対象のデータが参照用テーブル201に存在しなかった場合(ブロックC5のYES)、データ要求部114が、参照用テーブル201の情報を使って、参照対象のデータを更新用テーブル202から取得する(ブロックC6)。データ変更部113は、データ要求部114により取得されたデータを参照用テーブル201に格納し(ブロックD7)、また、データ制御部112は、同データを返却する(ブロックD8)。
図30は、更新用テーブル202の更新に伴う参照用テーブル201の更新を「更新側主導」で行った場合と「参照側主導」で行った場合との処理量を比較する図であり、図31は、更新用テーブル202の更新に伴う参照用テーブル201の更新を「更新側主導」で行った場合と「参照側主導」で行った場合との所要時間を比較する図である。
図30および図31から明らかなように、更新用テーブル202の更新に伴う参照用テーブル201の更新に関する処理量および所要時間は、いずれも、「参照側主導」の方が「更新側主導」よりも格段に少ない。
このように、本データベースシステム1によれば、キャッシュテーブルを効率的に更新することが実現される。
(第2実施形態)
次に、第2の実施の形態について説明する。
図32は、本実施形態のデータベースシステム1における参照用テーブルの一構成例を示す図である。
図32に示すように、本データベースシステム1では、参照用テーブル201の各行のキャッシュが有効か否かのフラグを、さらにテーブル毎に持つ(cacheA,cacheB)。図32では、参照用テーブル201の行番号(rowid)「B」の行のテーブルAに関するフラグ(cacheA)が無効を示している。一方、この行のテーブルBに関するフラグ(cacheB)は有効を示している。つまり、テーブルAのデータとテーブルBのデータとが結合されたデータセット単位ではなく、更新用テーブル202のテーブル単位に有効か否かを管理する。まず、図33を参照して、本データベースシステム1の参照用テーブル201が図32に示す状態となる更新用テーブル202の更新時の動作手順を説明する。
図33に示すように、ここでは、テーブルAの行番号(a0)「2」の行の1つ目のフィールド(a1)が、「田中」から「里中」に更新されている。”a1”は、事前準備として取得したキー以外、つまり結合に関わるキーではない。この場合、更新側データベースエンジン100の更新通知部123は、この行のデータを無効とするための更新通知(Clear)を参照側データベースエンジン100に送信する。この更新通知には、テーブルAの行番号「2」を示す情報(A2)が含まれる。
一方、参照側データベースエンジン100は、この更新通知を受けると、データ変更部113が、テーブルA用のインデックスで参照用テーブル201の行番号を取得し、その行のテーブルA用のフラグ(cacheA)を無効に更新する。これにより、参照用テーブル201は、図32に示す状態となる。
次に、図34を参照して、参照用テーブル201が図32に示す状態、つまり参照用テーブル201の行番号(rowid)「B」の行のテーブルAに関するフラグ(cacheA)が無効を示している状態にある状況下において、この行のデータを参照する時の動作手順を説明する。
参照対象の行のいずれかのフラグ(cacheA,cacheB)が無効を示す場合、データ要求部114は、参照用テーブル201の生成要求に含まれるクエリの条件であって、参照要求のクエリに含まれる条件である「SELECT 名前、場所 FROM A,B WHERE a2=1 and a3=b0 and b2=’今’」のうち、フラグが無効のテーブル(ここでは、テーブルA)に関する絞り込み条件(a2=1)のみを適用し、また、そのテーブル用のキーフィールドに格納される主キー値を絞り込み条件として指定したクエリを作成する。これにより、フラグが無効を示すデータを迅速に取得することができる。データ変更部113は、その行のデータセットの中の当該データ部分のみを、取得されたデータで更新する。
このように、本データベースシステム1によれば、事前準備として取得した、結合に関わるキー以外の変更となる更新用テーブル202の更新に伴う参照用テーブル201の更新について、より一層の効率化を図ることが実現される。
(第3実施形態)
次に、第3の実施の形態について説明する。
図35は、本実施形態のデータベースシステム1における参照用テーブルの一構成例を示す図である。
図35に示すように、本データベースシステム1では、参照用テーブル201の各行について、データセットの配置場所を示すポインタを持つのではなく、更新用テーブル202のテーブル毎に、データセットを構成するデータ(同一テーブルの同一行から複数のフィールドのデータが抽出される場合は、当該複数のデータからなるデータセット)の配置場所を示すポインタを持つ(Aptr,Bptr)。このポインタ(Aptr,Bptr)は、キャッシュが有効か否かのフラグの役割を兼ねる。
テーブル形式でデータを格納する場合、異なる行のフィールドに同一のデータが格納されることが発生し得る。そこで、ポインタを更新用テーブル202のテーブル毎に持つことにより、このような場合であっても、その行数分、当該同一のデータを格納するための記憶領域を確保することを不要とし、重複の圧縮を実現する。
各実施形態の動作手順は、ソフトウェア(プログラム)によって実現することができるので、このソフトウェアを格納したコンピュータ読み取り可能な記憶媒体を通じてこのソフトウェアを通常のコンピュータにインストールして実行することにより、各実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…データベースシステム、10…データベース、11…コントローラ、12…ファイルシステム、100…データベースエンジン、111…SQL文解析部、112…データ制御部、113…データ変更部、114…データ要求部、121…SQL文解析部、122…データ制御部、123…更新通知部、201…参照用テーブル、202…更新用テーブル

Claims (10)

  1. 第1テーブルおよび当該第1テーブルを事前に参照要求に適するように変形をした第2テーブルを用いて、データの参照要求に応答するデータベースシステムであって、
    前記第1テーブルを管理する第1管理手段と、
    前記第2テーブルを管理する第2管理手段と、
    を具備し、
    前記第1管理手段は、前記第1テーブルのデータが更新された場合、その更新内容を示す更新通知を前記第2管理手段に送信する通知手段を具備し、
    前記第2管理手段は、
    前記更新通知を受信した場合、前記更新通知で示される更新内容に該当する前記第2テーブルのデータを無効化する無効化手段と、
    前記第1テーブルのデータの参照要求を受けた場合であって、そのデータの参照要求に応答するために必要な前記第2テーブルのデータが無効化されている場合、そのデータを前記第1テーブルから取得して前記第2テーブルに格納する更新手段と、
    を具備するデータベースシステム。
  2. 前記第1テーブルが2以上の第1テーブルを有し、
    前記第2テーブルが、前記参照要求に適するように、前記2以上の第1テーブルを結合して生成されるものである、
    請求項1に記載のデータベースシステム。
  3. 前記第2テーブルは、前記2以上の第1テーブルのデータが結合されたデータセット毎に、前記2以上の第1テーブルの主キー値を格納する2以上のキーフィールドと、データセットが有効か否かを示す値を格納する第1フラグとを有し、
    前記無効化手段は、
    前記更新通知で示される更新内容が前記2以上の第1テーブルの結合に関わるキー値以外かつ前記2以上の第1テーブルの主キー値以外の更新である場合、該当するデータセットに対応する前記第1フラグの値を無効を示す値に更新し、
    前記更新通知で示される更新内容が前記2以上の第1テーブルの結合に関わるキー値または前記2以上の第1テーブルの主キー値の更新である場合、該当するデータセットに対応する前記2以上のキーフィールドの中の更新対象となった第1テーブルの主キー値を格納するキーフィールド以外のキーフィールドの値と、前記第1フラグの値とを無効を示す値に更新する、
    請求項2に記載のデータベースシステム。
  4. 前記第2テーブルは、前記2以上の第1テーブル毎に、主キー値による当該主キー値を格納するキーフィールドの直接検索を行うためのインデックスをさらに有し、
    前記無効化手段は、前記インデックスを用いて、前記更新通知で示される更新内容に該当するデータセットを検索する、
    請求項3に記載のデータベースシステム。
  5. 前記第2テーブルは、前記2以上のキーフィールド毎に、無効を示す値を格納するキーフィールドが存在するか否かを示す値を格納する第2フラグをさらに有し、
    前記無効化手段は、前記2以上のキーフィールドの値を無効を示す値に更新した場合、そのキーフィールドに対応する前記第2フラグの値を、無効を示す値を格納するキーフィールドが存在することを示す値に更新する、
    請求項4に記載のデータベースシステム。
  6. 前記更新手段は、前記2以上の第1テーブルの結合を伴うデータの参照要求に応答するために必要な前記第2テーブルのデータセットに対応する前記第1フラグの値が無効を示す値であった場合、そのデータセットに対応する前記2以上のキーフィールドの主キー値を用いた絞り込み条件を含むデータの取得要求を発行して、更新データを前記2以上の第1テーブルから取得する請求項5に記載のデータベースシステム。
  7. 前記更新手段は、前記2以上の第1テーブルの結合を伴うデータの参照要求に前記第1テーブルの主キー値を用いた絞り込み条件が含まれ、かつ、その第1テーブルの主キー値を格納するキーフィールドに対応する第2フラグの値が、無効を示す値を格納するキーフィールドが存在することを示す場合、前記データの参照要求に含まれる絞り込み条件に用いられる前記第1テーブルの主キー値を用いた絞り込み条件を含むデータの取得要求を発行して、更新データを前記2以上の第1テーブルから取得する請求項6に記載のデータベースシステム。
  8. 前記更新手段は、前記取得した更新データを反映させたデータセットに対応する前記2以上のキーフィールドに主キー値を格納するとともに、前記第1フラグの値を有効を示す値に更新し、この主キー値の格納により無効を示す値を格納するキーフィールドが無くなった場合、そのキーフィールドに対応する前記第2フラグの値を、無効を示す値を格納するキーフィールドが存在しないことを示す値に更新する請求項7に記載のデータベースシステム。
  9. 前記通知手段は、前記2以上の第1テーブルから前記第2テーブルを生成する際の絞り込み条件を満たすデータの更新が前記2以上の第1テーブル上で行われた場合、前記更新通知を前記第2管理手段に送信する請求項2に記載のデータベースシステム。
  10. 前記通知手段は、同一テーブルの同一行上での複数のデータの更新が行われた場合、当該複数のデータの更新に対して1つの更新通知を前記第2管理手段に送信する請求項2に記載のデータベースシステム。
JP2014043636A 2014-03-06 2014-03-06 データベースシステム Active JP6239407B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014043636A JP6239407B2 (ja) 2014-03-06 2014-03-06 データベースシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014043636A JP6239407B2 (ja) 2014-03-06 2014-03-06 データベースシステム

Publications (2)

Publication Number Publication Date
JP2015170076A true JP2015170076A (ja) 2015-09-28
JP6239407B2 JP6239407B2 (ja) 2017-11-29

Family

ID=54202778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014043636A Active JP6239407B2 (ja) 2014-03-06 2014-03-06 データベースシステム

Country Status (1)

Country Link
JP (1) JP6239407B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020044935A1 (ja) * 2018-08-28 2020-03-05 株式会社Screenホールディングス 検索装置、検索方法及び検索プログラム
CN111162995A (zh) * 2019-12-26 2020-05-15 苏州浪潮智能科技有限公司 一种数据变更通知方法、装置、设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193843A (ja) * 1987-10-05 1989-04-12 Hitachi Ltd テーブル結合方式
JPH1165909A (ja) * 1997-08-15 1999-03-09 Oki Electric Ind Co Ltd 分散処理システム
JP2004303211A (ja) * 2003-03-28 2004-10-28 Microsoft Corp データベース結果および導出オブジェクトをキャッシュし、無効にするためのシステムおよび方法
US20100161555A1 (en) * 2008-12-19 2010-06-24 Ianywhere Solutions, Inc. Immediate Maintenance of Materialized Views
JP2013117873A (ja) * 2011-12-02 2013-06-13 Hitachi Systems Ltd データベース処理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193843A (ja) * 1987-10-05 1989-04-12 Hitachi Ltd テーブル結合方式
JPH1165909A (ja) * 1997-08-15 1999-03-09 Oki Electric Ind Co Ltd 分散処理システム
JP2004303211A (ja) * 2003-03-28 2004-10-28 Microsoft Corp データベース結果および導出オブジェクトをキャッシュし、無効にするためのシステムおよび方法
US20100161555A1 (en) * 2008-12-19 2010-06-24 Ianywhere Solutions, Inc. Immediate Maintenance of Materialized Views
JP2013117873A (ja) * 2011-12-02 2013-06-13 Hitachi Systems Ltd データベース処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020044935A1 (ja) * 2018-08-28 2020-03-05 株式会社Screenホールディングス 検索装置、検索方法及び検索プログラム
JP2020035050A (ja) * 2018-08-28 2020-03-05 株式会社Screenホールディングス 検索装置、検索方法及び検索プログラム
TWI728405B (zh) * 2018-08-28 2021-05-21 日商斯庫林集團股份有限公司 檢索裝置、檢索方法及記錄有檢索程式之電腦可讀取的記錄媒體
JP7171312B2 (ja) 2018-08-28 2022-11-15 株式会社Screenホールディングス 検索装置、検索方法及び検索プログラム
CN111162995A (zh) * 2019-12-26 2020-05-15 苏州浪潮智能科技有限公司 一种数据变更通知方法、装置、设备及可读存储介质

Also Published As

Publication number Publication date
JP6239407B2 (ja) 2017-11-29

Similar Documents

Publication Publication Date Title
EP2987096B1 (en) Caching external data sources for sql processing
CN106547811B (zh) 数据集的分布式合并
CN108287886B (zh) 同步数据变更信息的方法及装置
KR101719399B1 (ko) 하둡에서의 개선된 sql-형 질의를 위한 백그라운드 포맷 최적화
TWI262406B (en) System, method and program storage device for dynamic caching of data based on queries performed by a local application
US10204135B2 (en) Materializing expressions within in-memory virtual column units to accelerate analytic queries
AU2011345318B2 (en) Methods and systems for performing cross store joins in a multi-tenant store
EP3340079A1 (en) Data promotion
EP2653986B1 (en) Client-side caching of a database transaction token.
CN102999522B (zh) 一种数据存储方法和装置
KR20080104288A (ko) 데이터 캐싱 방법, 캐싱 데이터 제공 방법, 및 컴퓨터 판독가능 매체
US20130013587A1 (en) Incremental computing for web search
EP1738290A1 (en) Partial query caching
JP2009134689A (ja) ストリームデータのランキングクエリ処理方法およびランキングクエリ処理機構を有するストリームデータ処理システム
US11074267B2 (en) Staged approach to automatic data discovery and performance
CN106777343A (zh) 增量分布式索引系统和方法
CN109597829B (zh) 一种实现可搜索加密关系型数据库缓存的中间件方法
US20140019454A1 (en) Systems and Methods for Caching Data Object Identifiers
JP6239407B2 (ja) データベースシステム
US20220067108A1 (en) Microservices data aggregation search engine updating
US9110933B1 (en) Processing data triggers in an untrusted environment based on information stored in a trusted environment
US11755568B1 (en) Execution and consistency model for materialized tables
KR102415155B1 (ko) 데이터 검색 장치 및 방법
US20160171372A1 (en) Method And Device for Real-Time Knowledge Processing Based on an Ontology With Temporal Extensions
US20180336194A1 (en) Method, apparatus, and computer program product for improved tracking of state data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160923

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170711

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170718

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170829

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171101

R151 Written notification of patent or utility model registration

Ref document number: 6239407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151