JP4612715B2 - 情報処理システム、データ更新方法およびデータ更新プログラム - Google Patents

情報処理システム、データ更新方法およびデータ更新プログラム Download PDF

Info

Publication number
JP4612715B2
JP4612715B2 JP2008228769A JP2008228769A JP4612715B2 JP 4612715 B2 JP4612715 B2 JP 4612715B2 JP 2008228769 A JP2008228769 A JP 2008228769A JP 2008228769 A JP2008228769 A JP 2008228769A JP 4612715 B2 JP4612715 B2 JP 4612715B2
Authority
JP
Japan
Prior art keywords
update
database
data
computer
log
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.)
Expired - Fee Related
Application number
JP2008228769A
Other languages
English (en)
Other versions
JP2010061559A (ja
Inventor
将志 岩城
毅 安西
裕紀 杉本
克志 八高
真一 川本
菅谷  奈津子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008228769A priority Critical patent/JP4612715B2/ja
Priority to US12/542,153 priority patent/US8645319B2/en
Publication of JP2010061559A publication Critical patent/JP2010061559A/ja
Application granted granted Critical
Publication of JP4612715B2 publication Critical patent/JP4612715B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification

Landscapes

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

Description

本発明は、マスターDB(Data Base)計算機(以下、単に「マスター」ともいう。)の保持する原本データベースの複製をスレーブDB計算機(以下、単に「スレーブ」ともいう。)において保持するマスター・スレーブ構成のデータベースシステムにおけるデータの整合性確保の技術に関する。
データの参照や更新を行う大規模なシステムでは、データベースが性能のボトルネックとなることが多い。これは、多数のアプリケーションから発生する大量の要求が1台のDB計算機に集中し、全ての要求を処理しきれなくなる(パンクする)ためである。そのため、このような場合には、DB計算機を追加して元のDB計算機と同一のデータを保持するようにしておき、アプリケーションからの要求を振り分けることで負荷を分散するのが一般的である。
DB計算機が複数台になると、更新要求を受信したときに全てのDB計算機に更新を反映する方法が必要になる。このような目的のために、一般的なDBMS(Data Base Management System:データベース管理システム)はレプリケーションと呼ばれる機能を備えている。レプリケーションとは、あるDBMSで発生した更新を、更新情報を格納した更新ログなどを送信することによって、他のDBMSに反映する機能である。
このようなレプリケーションを利用したデータベースシステムのデータ更新方法としては、以下の2つが考えられる。1つ目は、どのDB計算機でも更新要求を受け付けるようにし、DB計算機同士で更新ログを送信し、更新を反映しあう方法である。2つ目は、更新要求はあらかじめ決められた1台のDB計算機(マスター)のみで受け付け、他のDB計算機(スレーブ)のデータはマスターから送信される更新ログによってのみ更新する方法である。
前記した1つ目の方法は、更新処理の負荷が分散できるため、処理性能の点では優れている。しかし、この方法では、データベースに不整合が発生することがある。
この不整合が発生する状況を、図25を用いて説明する。2つのDB計算機2500,2510があり、初めは同じ値のデータ「300」を保持している(符号2501,2511)。このとき、データに「100」を加算する更新要求2502がDB計算機2500に送信されると、DB計算機2500の保持するデータの値は「400」になる(符号2504)。その直後に、データに「150」を加算する更新処理2512がDB計算機2510に送信されると、DB計算機2510の保持するデータの値は「450」になる(符号2514)。
その後、DB計算機2500は、データの値を「400」にする更新ログをDB計算機2510に送信し(符号2505)、DB計算機2510は、データの値を「450」にする更新ログをDB計算機2500に送信する(符号2515)。その結果、DB計算機2500は受け付けた更新ログを反映してデータの値が「450」になり(符号2506)、DB計算機2510は受け付けた更新ログを反映してデータの値が「400」になる(符号2516)。このように、2つのDB計算機2500,2510の保持するデータの値が異なってしまう不整合が発生する。
特許文献1には、更新ログにつけたヘッダ情報を利用してどちらの更新を優先するかを決定し、全てのDB計算機が最終的に同じ内容のデータを保持することを保証する技術が開示されている。前述の図25の例では、2つのDB計算機の保持するデータの値は「400」もしくは「450」のどちらか一方となり、上記の不整合は発生しない。しかし、2つのDB計算機2500,2510で構成されるデータベースシステムの利用者から見た場合、最初「300」であったデータに2つの更新要求「+100」と「+150」を送信したので、その結果は「550」となっていなければならない。結果が「400」もしくは「450」の場合、2つの更新要求のうちどちらか一方が失われてしまっている。この問題はロストアップデートと呼ばれ、特許文献1による方法では回避できない。
これに対し、前記した2つ目の方法は、常にマスターで更新を処理するためロストアップデートの問題を回避することができる。この方法は、非特許文献1等で開示されている。しかし、この方法では、スレーブはマスターから更新ログを受信することによって更新を反映するため、更新処理が完了してから全てのスレーブに更新が反映されるまでに時間がかかることがある。また、更新処理の負荷は分散できないため、DB計算機の台数を増やしても更新処理性能は向上しない。
以上に述べた2つの方法は、データ整合性と処理性能の点でそれぞれ長所と短所があり、条件に応じて適切な方法を選択する必要がある。SNS(Social Network Service)やネットショッピングのようなWebサービスを提供するシステムでは、利用者が増加するとデータベースへ大量の参照要求が発生するため、複数台のDB計算機でデータベースシステムを構築する必要性が高まる。このようなシステムの多くでは、更新競合が発生した場合にロストアップデートが発生することは許されないため、マスターでのみ更新を受け付け、非同期で更新を反映する方法がとられることが多い。
特開平11−7403号公報 Cal Henderson著、「Building Scalable Web Sites」、O’Reilly Media、 Inc.出版、2006年5月、p232−234
しかしながら、前述したように、マスターでのみ更新を受け付け、更新ログをスレーブに送信して非同期で更新反映を行うマスター・スレーブ構成のデータベースシステムでは、更新要求を出してからスレーブへ更新が反映されるまでに時間がかかる。そのため、更新要求が正常に完了したにも関わらず、その直後のスレーブへの参照要求で更新前の古いデータが参照されてしまう問題があった。これは、例えばネットオークションのようなサービスの場合、入札が成功したにも関わらず、直後の表示では入札前のデータが表示される等の不具合が発生することを意味する。
また、マスターへ参照要求を送信するようにすれば、最新の更新結果が参照できるが、このようにすると、更新要求に加えて一部の参照要求もマスターで集中処理することになり、要求を振り分けて処理することによる負荷分散の効果が低くなってしまうという問題が発生する。
そこで、本発明は、前記問題点に鑑みてなされたものであり、マスター・スレーブ構成のデータベースシステムにおいて、スレーブ側でも更新結果をその更新の直後の参照要求で参照できるようにする(つまり、更新前のデータが参照されないようにする)ことを課題とする。
本発明は、データの集合である原本データベースを管理する第1の情報処理装置と、原本データベースの複製である複製データベースを管理する1つ以上の第2の情報処理装置と、を備えて構成され、第1の情報処理装置の原本データベースで発生した更新情報を格納する更新ログを第2の情報処理装置に送信して複製データベースに反映する情報処理システムである。第2の情報処理装置は、外部の計算機から更新要求を受け付けると、該更新要求を第1の情報処理装置に送信して原本データベースを更新させるとともに、該第2の情報処理装置の複製データベースを更新する要求処理部と、受け付けた更新要求と対応する更新ログを第1の情報処理装置から受信したか否かを、複製データベース内のデータごとに管理する更新情報管理部と、第1の情報処理装置から新規な更新ログを受け付けると、該更新ログに格納されている情報と更新情報管理部の管理する情報から、該更新ログを複製データベースに反映するか否かを判断し、反映すると判断した場合は該更新ログの更新内容を複製データベースに反映する更新反映判定部と、を備える。その他の手段については後記する。
本発明によれば、マスター・スレーブ構成のデータベースシステムにおいて、スレーブ側でも更新結果をその更新の直後の参照要求で参照できるようにすることができる。
以下、本発明を実施するための最良の形態(以下、「実施形態」という。)に関し、比較例、第1実施形態〜第4実施形態について、図面を参照(言及図以外も適宜参照)しながら説明する。
<比較例>
本発明の第1実施形態〜第4実施形態の理解を容易にするため、まず、比較例について説明する。なお、本発明のデータベースシステムでは、更新要求をマスターで集中処理しつつ、同時にスレーブでも処理するようにする。このとき、全てのスレーブを同時に更新すると更新処理性能が著しく低下するので、更新要求をスレーブに振り分けるようにして、更新要求を受け付けたスレーブだけをマスターと同時に更新するようにする。他のスレーブへの更新の反映は、従来どおり、マスターから更新ログをスレーブに送信することで行う。このようにすることで、更新要求と参照要求を同一のスレーブに送信すれば、更新要求の結果が直後の参照要求で参照できるようになる。
このとき、スレーブにおいて、更新を処理して最新の値になったデータが、遅延して到着した更新ログを反映することによって古い値に戻ってしまう問題がある。この問題について図26を用いて説明する。図26に示すように、マスターDB計算機2610と2台のスレーブDB計算機2600,2620で構成されるデータベースシステムを考える。
初めは全てのDB計算機で同じ値のデータ「300」を保持している(符号2601,2611および2621)。このとき、データに「100」を加算する更新要求2602がスレーブDB計算機2600に送信され(符号2603)、さらにそれがマスターDB計算機2610に送信される(符号2604)。その結果、マスターDB計算機2610の保持するデータの値が「400」に更新され(符号2612)、スレーブDB計算機2600の保持するデータの値も「400」に更新される(符号2605,2606)。
次に、データに「150」を加算する更新要求2622がスレーブDB計算機2620に送信され(符号2623)、さらにそれがマスターDB計算機2610に送信される(符号2624)。その結果、マスターDB計算機2610の保持するデータの値が「550」に更新され(符号2615)、スレーブDB計算機2620の保持するデータの値も「550」に更新される(符号2625,2626)。これらの更新処理の後で、データの値を「400」に更新する更新ログが遅延して到達すると(符号2613および2614)、スレーブDB計算機2620のデータの値は最新の値「550」であるにも関わらず、古い値「400」に戻ってしまう(符号2627)。
この問題を解決するため、本発明のデータベースシステムでは、更新カウンタ表等によって、該スレーブで受信した更新要求と対応する更新ログをすでにマスターから受信したか否かを管理する。スレーブがある更新ログ(更新ログAという。)をマスターから受け付けると、更新ログ反映判定部235(更新反映判定部:図2参照)は、該スレーブで受信した更新要求と対応する更新ログをすでにマスターから受信したか否かを更新カウンタ表を参照して確認し、もし受信していなければ受け付けた更新ログAを破棄し、もし受信していれば受け付けた更新ログAを反映する。これにより、遅延してやってきた古い更新ログを反映することなく破棄し、データが古い値に戻ることを回避することができる(詳細は後記)。
<第1実施形態>
まず、図1を用いて本発明の第1実施形態におけるハードウェアの構成を説明する。
本発明の第1実施形態におけるデータベースシステムDBS(情報処理システム)は、マスターDB計算機120(サーバ:第1の情報処理装置:第1のデータベース計算機:データベース計算機)と、1つ以上のスレーブDB計算機130(サーバ:第2の情報処理装置:第2のデータベース計算機)とを備えて構成される。1つ以上のクライアント計算機100(外部の計算機)はデータベースシステムDBSを利用するアプリケーションが動作する計算機である。クライアント計算機100、マスターDB計算機120、スレーブDB計算機130は、通信ネットワーク110を介して相互に接続されている。
クライアント計算機100は、バス101によって接続されたネットワークインターフェース102、CPU(Central Processing Unit)103、主記憶装置104を有し、ネットワークインターフェース102によって通信ネットワーク110と接続している。主記憶装置104は各種プログラムとプログラムが使用するデータを保持するもので、例えばメモリである。CPU103は主記憶装置104に保持された各種プログラムを実行する。
マスターDB計算機120は、バス121によって接続されたネットワークインターフェース122、CPU123、主記憶装置124、ディスクインターフェース125を有し、ネットワークインターフェース122によって通信ネットワーク110と接続し、ディスクインターフェース125によって外部記憶装置126と接続している。主記憶装置124は各種プログラムとプログラムが使用するデータを保持するもので、例えばメモリである。外部記憶装置126はプログラムが使用するデータを保持する。CPU123は主記憶装置124に保持された各種プログラムを実行する。
スレーブDB計算機130は、バス131によって接続されたネットワークインターフェース132、CPU133、主記憶装置134、ディスクインターフェース135を有し、ネットワークインターフェース132によって通信ネットワーク110と接続し、ディスクインターフェース135によって外部記憶装置136と接続している。主記憶装置134は各種プログラムとプログラムが使用するデータを保持するもので、例えばメモリである。外部記憶装置136はプログラムが使用するデータを保持する。CPU133は主記憶装置134に保持された各種プログラムを実行する。
次に、図2を用いて本発明の第1実施形態におけるモジュール(ソフトウェアの機能単位)の構成を説明する。
クライアント計算機100は、データベースシステムDBSを利用するアプリケーションが動作する計算機であり、要求送信部200を備える。要求送信部200は1つ以上のスレーブDB計算機130から1台を選択し、そのスレーブDB計算機130に対して要求を送信する。要求は、典型的にはSQL(Structured Query Language)クエリである。
マスターDB計算機120は、レプリケーション機能を持つ一般的なDBMSであり、マスター要求処理部220と更新ログ送信部221を備え、その外部記憶装置126に更新ログバッファ222と原本データベース223とを保持する。マスター要求処理部220はスレーブDB計算機130から送信された要求を受け付け、解析し、処理する。更新ログ送信部221は更新ログバッファ222を監視し、更新ログが追加されたらそれを全てのスレーブDB計算機130へ送信する。更新ログバッファ222はマスターDB計算機120で行われた更新内容を記した更新ログを格納する。原本データベース223は利用者がデータベースシステムDBSを利用して参照および更新するデータ(例えば後記する入札金額テーブル300、商品情報テーブル310)を格納する。原本データベース223は、典型的には関連データベースであり、1つ以上のデータの組で行データを構成し、行データを並べたテーブルを1つ以上格納する。サーバ情報テーブル224は原本データベース223に格納されるテーブルの一つであり、スレーブDB計算機130に関する情報を格納する。
スレーブDB計算機130は、クライアント計算機100からの要求を処理するDB計算機であり、要求処理部230、サーバ情報付与部231、更新カウンタ増加部232(更新情報管理部2320)、更新カウンタ減少部234(更新情報管理部2320)、更新ログ反映判定部235、更新ログ受信部236、サーバ情報判定部237を備え、主記憶装置134に更新カウンタ表233(更新情報管理部2320)を保持し、外部記憶装置136に更新ログバッファ222a(222)と複製データベース238とを保持する。
要求処理部230はクライアント計算機100からの要求を受け付け、解析し、処理する。要求処理部230は処理の中でマスターDB計算機120へ要求を送信することがある。サーバ情報付与部231はサーバ情報テーブル224のデータを更新する更新要求をマスターDB計算機120へ送信する。更新カウンタ増加部232は更新カウンタ表233の更新カウンタ(単に「カウンタ」ともいう。)を「1」増加する。更新カウンタ表233は複製データベース238の行データに対応するカウンタを格納する。
更新カウンタ減少部234は更新カウンタ表233のカウンタを「1」減少する。更新ログ反映判定部235は更新ログを反映するか否かを判定し、反映する場合(カウンタが「0」のとき)は複製データベース238を更新する。つまり、スレーブDB計算機130において、自身の複製データベース238を更新してその更新データ(「更新データA」という。)をマスターDB計算機120に送信すると更新カウンタ表233における該当カウンタを「1」にし、マスターDB計算機120からその更新に関する更新ログを受け付けると更新カウンタ表233における該当カウンタを「0」にする。マスターDB計算機120は各スレーブDB計算機130から受け取った更新データをその受け取った順番で反映する。したがって、スレーブDB計算機130は、自身の更新カウンタ表233における該当カウンタが「1」のときに、マスターDB計算機120から受け取ったそのデータに関する更新ログを反映すべきでない。なぜなら、その更新ログは、更新データAよりも古いデータであり、反映するとデータの不整合が起きえるからである。この詳細については、図9、図13、図24等で後記する。
更新ログ受信部236は更新ログ送信部221から送信された更新ログを受信し、更新ログバッファ222aに追加する。サーバ情報判定部237は更新ログバッファ222aを監視し、更新ログが追加されたらそれを取り出して解析し、該更新ログのサーバ情報を管理する(詳細は図12で後記)。複製データベース238は原本データベース223のサーバ情報テーブル224を除くデータの複製に加えて、各行データごとにカウンタID(IDentification)を格納する(例えば後記する入札金額テーブル600、商品情報テーブル610)。
以下では、図2のモジュール図で示されたデータ構造について、具体的な例を示した図面を用いて説明する。
原本データベース223には、図3に示されるようなアプリケーションが利用するデータを格納したテーブルと、図4に示されるようなサーバ情報テーブルとが格納される。
図3は原本データベース223に格納されるテーブルの例の一部を示している。原本データベース223には、各テーブル300,310が格納される。各テーブル300,310には、各テーブル名301,311がつけられ、ヘッダ情報302,312を有し、行データ303,304,313,314などを0個以上格納している。行データはヘッダ情報で指定された形式でデータがならんだものである。図3の例では、入札金額テーブル300はヘッダ情報302に示すように「商品ID」「値段」がこの順番で並んだ行データを格納するテーブルである。したがって、行データ303の「208」は商品ID、「300」は値段を示すデータである。
図4はサーバ情報テーブル224(401)の一例を示している。ヘッダ情報402に示すようにサーバ情報テーブル224は「サーバID」と「ダミーデータ」を格納するテーブルである。サーバIDは各スレーブDB計算機130に一意に割り振られた識別子である。ダミーデータは更新処理を発生させるために使用されるデータであり、数値そのものに意味はない。
図5は更新ログバッファ222に更新ログが格納された状態の一例を示している。更新ログには、符号501,505に示すトランザクション開始ログ、符号504,508に示すコミットログ、符号502,503,506,507に示すデータ更新ログがある。トランザクション開始ログとコミットログはそれぞれトランザクションの開始と終了を示す更新ログである。なお、トランザクション開始ログとコミットログはどちらか一方のみを使用してもよい。データ更新ログには、更新されたテーブルのテーブル名、更新前と更新後の行データが格納されている。符号501〜504や符号505〜508に示すように、一つのトランザクションにより発生する一連の更新ログを更新トランザクションログと呼ぶ。
図6は複製データベース238に格納されるデータの例の一部を示している。複製データベース238には、原本データベース223に格納されているテーブル300,310(図3参照)の複製として、テーブル600,610が格納されている。ただし、サーバ情報テーブル224の複製は格納されない。また、テーブル600,610の各行データには、該スレーブDB計算機130の複製データベース238内で一意なカウンタIDが付加される。なお、カウンタIDは、該スレーブDB計算機130内でのみ取り扱われる情報である。
図7は更新カウンタ表233の一例を示している。更新カウンタ表233にはカウンタIDと更新カウンタの組のデータが格納される。
以下、図2のモジュール図で示された各モジュールの動作を説明する。図8はマスター要求処理部220の動作を示すフローチャートである。
マスター要求処理部220は、まずスレーブDB計算機130の要求処理部230から要求を受信し(ステップ801)、その要求を解析し(ステップ802)、要求の種類を判別する(ステップ803)。
参照要求の場合は(ステップ803で「参照」)、さらに、更新のための参照か否(通常の参照)かを判別する(ステップ804)。更新のための参照は、参照結果を同じトランザクション内の更新要求で使用する参照であり、データベースの利用者が明示的に指定することができる。更新のための参照の場合は(ステップ804で「Yes」)、要求されたデータを原本データベース223から検索してそのデータに共有ロックをかけて値を読み取る(ステップ805)。通常の参照の場合は(ステップ804で「No」)、要求されたデータを原本データベース223から検索してその値を読み取る(ステップ806)。ステップ805とステップ806のいずれ場合の後も、読み取ったデータを要求元(スレーブDB計算機130の要求処理部230)に返す(ステップ807)。
更新要求の場合は(ステップ803で「更新」)、要求されたデータを原本データベース223から検索してそのデータに排他ロックをかけて値を変更(更新)する(ステップ808)。
トランザクション開始要求の場合は(ステップ803で「トランザクション開始」)、トランザクションを開始する(ステップ809)。
コミット要求の場合は(ステップ803で「コミット」)、該トランザクションで更新した内容をトランザクションの開始、コミットを含めて更新ログバッファ222に追加し(更新ログに書き出し)(ステップ810)、トランザクション内でかけた共有ロックおよび排他ロックを解除し(ステップ811)、トランザクションを終了する(ステップ812)。
図9は要求処理部230の動作を示すフローチャートである。要求処理部230は、まずクライアント計算機100の要求送信部200から要求を受信し(ステップ901)、その要求を解析し(ステップ902)、要求の種類を判別する(ステップ903)。
参照要求の場合は(ステップ903で「参照」)、さらに更新のための参照か否(通常の参照)かを判別する(ステップ904)。更新のための参照の場合は(ステップ904で「Yes」)、マスターDB計算機120に同じ要求を送信して(ステップ905)その参照結果を受信し、自スレーブDB計算機130(自サーバ)の複製データベース238でその結果と対応するデータを検索して、その値が前記参照結果と異なっていたら該データを前記参照結果に変更(更新)し(ステップ906)、前記参照結果を要求元(クライアント計算機100の要求送信部200)に返す(ステップ907)。通常の参照の場合は(ステップ904で「No」)、要求されたデータを自スレーブDB計算機130(自サーバ)の複製データベース238から検索してその値を要求元(クライアント計算機100の要求送信部200)に返す(ステップ908)。
更新要求の場合は(ステップ903で「更新」)、その直前にステップ905〜907の処理を行ったか否かを判断し(ステップ9081)、Noの場合はステップ909に進み、Yesの場合はステップ910に進む。ステップ909において、その要求をもとにして更新対象のデータを参照する更新のための参照要求を作成し、その参照要求をマスターDB計算機120に送信して更新対象のデータを取得する。ステップ910において、該更新要求をマスターDB計算機120に送信し、自スレーブDB計算機130(自サーバ)の複製データベース238のデータを更新する。その後、更新カウンタ増加部232の処理を行う。
トランザクション開始要求の場合は(ステップ903で「トランザクション開始」)、マスターDB計算機120に同じ要求(トランザクション開始要求)を送信し、自スレーブDB計算機130(自サーバ)でもトランザクションを開始し(ステップ911)、サーバ情報付与部231の処理を行う。
コミット要求の場合は(ステップ903で「コミット」)、マスターDB計算機120に同じ要求(コミット要求)を送信し、自スレーブDB計算機130(自サーバ)でも該トランザクションを終了する(ステップ912)。
図10は更新カウンタ増加部232の動作(図9のステップ910の処理の後)を示すフローチャートである。
更新カウンタ増加部232は更新要求を処理するときに要求処理部230から呼び出され、各表(入札金額テーブル600、商品情報テーブル610)を参照してカウンタIDを特定し(ステップ1001)、更新カウンタ表233の更新対象データが含まれる行データのカウンタIDと対応する更新カウンタを「1」増加する(ステップ1002)。
図11はサーバ情報付与部231の動作(図9のステップ911の処理の後)を示すフローチャートである。
サーバ情報付与部231はトランザクション開始要求を処理するときに要求処理部230から呼び出され、サーバ情報テーブル224の自スレーブDB計算機130(自サーバ)のサーバIDが含まれる行データのダミーデータを「1」増加する更新要求をマスターDB計算機120に送信する(ステップ1101)。これにより、この後コミット要求でトランザクションが終了したときに、自スレーブDB計算機130(自サーバ)のサーバIDが含まれる行データを更新するデータ更新ログが更新ログバッファ222aに追加される。なお、ダミーデータに対する更新要求は、自スレーブDB計算機130(自サーバ)のサーバIDを得るために行うものなので、「1」増加でなくても更新要求であればなんでもよい。
図12はサーバ情報判定部237の動作を示すフローチャートである。
サーバ情報判定部237はまず更新ログサーバIDという変数を用意し、値をNULLに初期化する(ステップ1201)。次に、更新ログバッファ222aから更新ログを1行取り出し(読み込み)(ステップ1202)、その1行を解析し(ステップ1203)、ログの種類を判別する(ステップ1204)。
トランザクション開始ログの場合は(ステップ1204で「トランザクション開始」)、トランザクションを開始する(ステップ1205)。コミットログの場合は(ステップ1204で「コミット」)、トランザクションを終了し(ステップ1206)、更新ログサーバIDにNULLを設定する(ステップ1207)。サーバ情報テーブルの行データを更新するデータ更新ログの場合は(ステップ1204で「サーバ情報テーブルの更新」)、そのデータ更新ログからサーバIDを読み出して(例えば図5のデータ更新ログ502からサーバID「4」を読み出して)その値を更新ログサーバIDに設定する(ステップ1208)。それ以外のデータ更新ログの場合は(ステップ1204で「その他の更新」)、更新ログ反映判定部235の処理を行う。
図13は更新ログ反映判定部235の動作を示すフローチャートである。
更新ログ反映判定部235は、各表(入札金額テーブル600、商品情報テーブル610)を参照してカウンタIDを特定する(ステップ1300)。次に、更新ログの更新内容を反映するか否かを決定するために、更新ログサーバIDの値が自スレーブDB計算機130(自サーバ)のサーバIDと一致するか否かを調べる(ステップ1301)。一致する場合は(ステップ1301で「Yes」)、更新カウンタ減少部234の処理を行う。
一致しない場合は(ステップ1301で「No」)、更新カウンタ表233から更新対象の行データのカウンタIDと対応する更新カウンタを読み出し(参照し)(ステップ1302)、その値が「0」より大きいか否かを調べる(ステップ1303)。「0」より大きいときは(ステップ1303で「Yes」)更新を反映せずに終了する。「0」のときは(ステップ1303で「No」)更新を自スレーブDB計算機130(自サーバ)の複製データベース238に反映する(ステップ1304)。
図14は更新カウンタ減少部234の動作を示すフローチャートである。
更新カウンタ減少部234は更新ログ反映判定部235から呼び出され、更新対象の行データのカウンタIDと対応する更新カウンタを「1」減少する(ステップ1401)。
以下では、スレーブDB計算機130がクライアント計算機100から更新要求を受け付けてから、他のスレーブDB計算機130に更新が反映されるまでの処理の流れを具体的な例をもとに説明する。ここでは、図15に示すようにマスターDB計算機120と2台のスレーブDB計算機130A(130)および130B(130)から構成されるデータベースシステムDBSを考える。なお、図2と同一の構成には、同一の符号で、あるいは、同一の符号に「A」または「B」の添字を付して、表記している。
図15は、更新要求がクライアント計算機100A(100)からスレーブDB計算機130Aに送信され、その要求による更新が反映されるまでのサーバ間のデータの流れを示したものである。クライアント計算機100AからスレーブDB計算機130Aに要求1501が送信されると、それに応じてスレーブDB計算機130AからマスターDB計算機120に要求1502が送信される。要求1502が参照要求の場合は結果1503がマスターDB計算機120からスレーブDB計算機130Aに返される。その後、更新要求により発生した更新ログ1504がマスターDB計算機120からスレーブDB計算機130Aおよび130Bに送信される。
ここでは、図16に示すようなトランザクション1600(要求1501に対応)が、クライアント計算機100AからスレーブDB計算機130Aに送信された場合を考える。
このとき、スレーブDB計算機130AからマスターDB計算機120に送信されるトランザクション1700(要求1502に対応)は図17のようになる。また、マスターDB計算機120からスレーブDB計算機130Aおよび130Bに送信される更新トランザクションログ1800(更新ログ1504に対応)は図18のようになる。
このときの各DB計算機の保持するデータの値の変遷を、図19を用いて説明する(データの変更箇所は太枠で表記)。図19で、符号1901は原本データベース223、符号1902はサーバ情報テーブル224、符号1911はスレーブDB計算機130Aの複製データベース238、符号1912はスレーブDB計算機130Aの更新カウンタ表233、符号1921はスレーブDB計算機130Bの複製データベース238、符号1922はスレーブDB計算機130Bの更新カウンタ表233の、それぞれ一部を表している(最上段以外は符号を省略)。
トランザクション1600がクライアント計算機100AからスレーブDB計算機130Aに送信されると(ステップ1930)、まず、スレーブDB計算機130Aはトランザクション開始要求1701と、サーバ情報テーブル224の自サーバID(=3)と対応するダミーデータを更新する更新要求1702をマスターDB計算機120に送信し、その結果、サーバ情報テーブル1902の該当データが更新(「25」→「26」)される(ステップ1931)。
次に、スレーブDB計算機130Aは更新要求1602から、更新対象を参照する更新のための参照要求1703を作成し、マスターDB計算機120に送信する(ステップ1932)。その結果、原本データベース1901の該当行データには共有ロックがかけられ、マスターDB計算機120からスレーブDB計算機130Aに該当行データ「208,300」が返されるが、これは複製データベース1911のデータと等しいので無視される(ステップ1933)。
次に、スレーブDB計算機130Aは更新要求1602と同一の更新要求1704をマスターDB計算機120に送信し、さらに自サーバでも更新を処理し、更新カウンタ表1912の該当カウンタを「1」増加する。その結果、原本データベース1901と複製データベース1911と更新カウンタ表1912の該当データが更新される(「300」→「400」,「0」→「1」)(ステップ1934)。このとき、スレーブDB計算機130Aは更新要求1602と同一の更新要求1704を送るのではなく、更新のための参照要求1703で取得した行データを、自サーバで更新要求を処理した更新結果で上書きする更新要求を作成し、マスターDB計算機120に送ってもよい。このようにすると、マスターDB計算機120で更新結果を計算する必要がなくなり、マスターDB計算機120の負荷が軽減できる。
次に、スレーブDB計算機130Aはコミット要求1705をマスターDB計算機120に送り、その結果、トランザクションが終了し、マスターDB計算機120の更新ログバッファ222に更新トランザクションログ1800が追加される。その後、更新トランザクションログ1800がマスターDB計算機120からスレーブDB計算機130Aおよび130Bに送信される。
スレーブDB計算機130Aは更新トランザクションログ1800を受け付けると、更新ログ1802に格納されているサーバIDが自サーバのサーバID(=3)と一致しているため、更新ログ1803で更新対象となっているデータと対応する更新カウンタを「1」減少する(「1」→「0」)。また、スレーブDB計算機130Bは更新トランザクションログ1800を受け付けると、更新ログ1802に格納されているサーバIDが自サーバのサーバID(=4)と異なり、更新ログ1803で更新対象のデータと対応する更新カウンタの値が「0」なので、更新ログ1803を自サーバの複製データベース1921に反映する(「300」→「400」)(ステップ1935)。以上のようにして、スレーブDB計算機130Aに送信された更新要求による更新がスレーブDB計算機130Bに正しく反映される。
次に、第1実施形態のデータベースシステムDBSにおいて、更新要求が競合して更新ログが遅延して到着しても、最新のデータが古い更新ログの更新反映によって古いデータに戻ることを回避できることを示す。
図20は、図15と同様のデータベースシステムDBSに関し、更新要求がクライアント計算機100AからスレーブDB計算機130Aに送信された直後に、同一のデータに対する更新要求がクライアント計算機100BからスレーブDB計算機130Bに送信されたときのサーバ間のデータの流れを示した図である。
クライアント計算機100AからスレーブDB計算機130Aに要求1501が送信されると、それに応じてスレーブDB計算機130AからマスターDB計算機120に要求1502が送信される。要求1502が参照要求の場合は結果1503がマスターDB計算機120からスレーブDB計算機130Aに返される。同様に、クライアント計算機100BからスレーブDB計算機130Bに要求2001が送信されると、それに応じてスレーブDB計算機130BからマスターDB計算機120に要求2002が送信される。要求2002が参照要求の場合は結果2003がマスターDB計算機120からスレーブDB計算機130Bに返される。その後、更新要求により発生した更新ログ1504がマスターDB計算機120からスレーブDB計算機130Aおよび130Bに送信される。
ここでは、トランザクション1600(要求1501に対応)がクライアント計算機100AからスレーブDB計算機130Aに送信された直後に、図21に示すトランザクション2100(要求2001に対応)がクライアント計算機100BからスレーブDB計算機130Bに送信された場合を考える。
このとき、スレーブDB計算機130AからマスターDB計算機120に送信されるトランザクションは図17のトランザクション1700(要求1502に対応)のようになり、スレーブDB計算機130BからマスターDB計算機120に送信されるトランザクションは図22のトランザクション2200(要求2002に対応)のようになる。また、マスターDB計算機120からスレーブDB計算機130Aおよび130Bに送信される更新トランザクションログは、図18の更新トランザクションログ1800(更新ログ1504に対応)と、図23の更新トランザクションログ2300(更新ログ1504に対応)のようになる。
このときの各DB計算機の保持するデータの値の変遷を、図24を用いて説明する(データの変更箇所は太枠で表記)。図24で、符号2401は原本データベース223、符号2402はサーバ情報テーブル224、符号2411はスレーブDB計算機130Aの複製データベース238、符号2412はスレーブDB計算機130Aの更新カウンタ表233、符号2421はスレーブDB計算機130Bの複製データベース238、符号2422はスレーブDB計算機130Bの更新カウンタ表233の、それぞれ一部を表している(最上段以外は符号を省略)。
トランザクション1600がクライアント計算機100AからスレーブDB計算機130Aに送信されて(ステップ2430)から、コミット要求1705がマスターDB計算機120に送信されるまで(ステップ2434)は、前述した図19のステップ1930〜1934と同じであるので説明を省略する。
次に、トランザクション2100がクライアント計算機100BからスレーブDB計算機130Bに送信されると(ステップ2440)、まず、スレーブDB計算機130Bはトランザクション開始要求2201と、サーバ情報テーブル224の自サーバID(=4)と対応するダミーデータを更新する更新要求2202をマスターDB計算機120に送信し、その結果、サーバ情報テーブル2402の該当データが更新される(「12」→「13」)(ステップ2441)。
次に、スレーブDB計算機130Bは更新要求2102から、更新対象を参照する更新のための参照要求2203を作成し、マスターDB計算機120に送信する(ステップ2442)。その結果、原本データベース2401の該当行データには共有ロックがかけられ、マスターDB計算機120からスレーブDB計算機130Bに該当行データ「208,400」)が返されるが、これは複製データベース2421のデータと異なるので、複製データベース2421の該当データを更新する(「300」→「400」)(ステップ2443)。
次に、スレーブDB計算機130Bは更新要求2102と同一の更新要求2204をマスターDB計算機120に送信し、さらに自サーバでも更新を処理し、更新カウンタ表2422の該当カウンタを「1」増加する(「0」→「1」)。その結果、原本データベース2401と複製データベース2421と更新カウンタ表2422の該当データが更新される(「400」→「550」,「0」→「1」)(ステップ2444)。次に、スレーブDB計算機130Bはコミット要求2205をマスターDB計算機120に送り、その結果、トランザクションが終了し、マスターDB計算機120の更新ログバッファ222に更新トランザクションログ2300が追加される。
その後、更新トランザクションログ1800がマスターDB計算機120からスレーブDB計算機130Aおよび130Bに送信される(ステップ2435)。スレーブDB計算機130Aは更新トランザクションログ1800を受け付けると、更新ログ1802に格納されているサーバID(=3)が自サーバのサーバID(=3)と一致しているため、更新ログ1803で更新対象となっているデータと対応する更新カウンタを「1」減少する(「1」→「0」)。また、スレーブDB計算機130Bは更新トランザクションログ1800を受け付けると、更新ログ1802に格納されているサーバID(=3)が自サーバのサーバID(=4)と異なり、更新ログ1803で更新対象のデータと対応する更新カウンタの値が「1」なので、更新ログ1803を反映せずに破棄する。
次に、更新トランザクションログ2300がマスターDB計算機120からスレーブDB計算機130Aおよび130Bに送信される(ステップ2445)。スレーブDB計算機130Aは更新トランザクションログ2300を受け付けると、更新ログ2302に格納されているサーバID(=4)が自サーバのサーバID(=3)と異なり、更新ログ2303で更新対象のデータと対応する更新カウンタの値が「0」なので、更新ログ2303を複製データベース2411に反映する(「400」→「550」)。また、スレーブDB計算機130Bは更新トランザクションログ2300を受け付けると、更新ログ2302に格納されているサーバID(=4)が自サーバのサーバID(=4)と一致しているため、更新ログ2303で更新対象となっているデータと対応する更新カウンタを「1」減少する(「1」→「0」)。
このように、第1実施形態のデータベースシステムDBSによれば、更新要求の競合が発生した場合も、更新(データ)が失われたり、図26で示したように古い更新ログの反映によって最新の値が古い値で上書きされたりすることなく、正しく更新反映が完了する。
つまり、マスターから送信される更新ログによってスレーブに更新を反映するマスター・スレーブ構成のデータベースシステムにおいて、更新結果を直後の参照要求で参照できるようになる。これにより、ロストアップデートの発生を回避しつつ更新結果をすぐに参照できる必要のある、ネットオークションなどのアプリケーションに対して、複数台のDB計算機で負荷分散をするデータベースシステムが構成できるようになる。
また、マスターDB計算機120およびスレーブDB計算機130を構成するコンピュータに実行させるデータ更新プログラム(データ更新方法を実現するためのプログラム)を作成し、各コンピュータにインストールすることにより、コンピュータは、そのデータ更新プログラムに基づいた各機能を実現することができる。
<第2実施形態>
以下、本発明の第2実施形態について説明する。その際、第1実施形態との相違点を主に説明し、第1実施形態との共通点については説明を省略あるいは簡略化する。
第1実施形態では更新カウンタを更新カウンタ表233というデータ構造で保持していた。これに対し、第2実施形態では更新カウンタを複製データベース238の中に直接格納する。
第2実施形態におけるハードウェア構成は第1実施形態と同一(図1参照)である。
また、第2実施形態におけるモジュール構成は、第1実施形態の場合(図2参照)と比べ、更新カウンタ表233がなくなり、更新カウンタの更新や参照がすべて外部記憶装置136内の複製データベース238への更新や参照になる以外は同一であるので図示を省略する。
図27は、第2実施形態における複製データベース238の例の一部を示している。図27に示すように、テーブル2700,2710において、行データが更新カウンタを保持し、カウンタID(図6、図7参照)は不要となる。
第2実施形態における各モジュールの動作は、更新カウンタ表233への更新や参照が、複製データベース238への更新や参照となる以外は第1実施形態と同一である(図10と図13のフローチャートにおいては、カウンタIDを特定する代わりに更新カウンタを直接特定すればよい)。
複製データベース238内に更新カウンタを保持すると、更新カウンタ増加部232や更新カウンタ減少部234が更新カウンタを増減するたびに外部記憶装置136内のデータへの書き込みが発生する。これにより、データベースシステムDBS全体の処理性能が低下する可能性がある。
しかし、アプリケーション(クライアント計算機100)からの更新要求の頻度が少ない場合や、外部記憶装置136への書き込み速度が十分に速い場合は、この第2実施形態のように更新カウンタを複製データベース238内に直接格納してもよい。更新カウンタを複製データベース238内に直接格納することで、更新カウンタ表233やカウンタIDが必要なくなるので、主記憶装置134の容量が少なく済むようになり、更新カウンタの増減処理も単純になるという効果がある。
<第3実施形態>
以下、本発明の第3実施形態について説明する。その際、第1実施形態および第2実施形態との相違点を主に説明し、第1実施形態および第2実施形態との共通点については説明を省略あるいは簡略化する。
データベースシステムDBS内のデータの管理方法としてMVCC(Multi-Version Concurrency Control)と呼ばれる方法がある。MVCCではデータをバージョン管理することで、データにロックをかけずに更新・参照処理を行ってもデータの整合性を保持することができる。これにより、ロックをかけてデータの整合性を保持する方法よりも、多くのトランザクションを同時に実行できるため、データベースシステムDBSのスループットが向上する。第3実施形態ではバージョン管理されたデータを利用することによって、第1実施形態および第2実施形態における更新カウンタと同等の情報を管理する。
第3実施形態のハードウェア構成は第1実施形態と同一である(図1参照)。
第3実施形態のモジュール構成を、図28を用いて説明する。なお、図2と同一の構成には同一の符号を付し、説明を省略する。要求処理部2801はMVCCの方法で複製データベース2804のデータ(例えば後記する入札金額テーブル2900、更新ログ反映済みポインタ2910)を参照および更新する。更新情報管理部2802は更新ログ反映判定部2803から呼び出され、複製データベース2804の更新対象の行データと対応する更新ログ反映済みポインタを、次のバージョンを指すように変更する。更新ログ反映判定部2803はサーバ情報と更新ログ反映済みポインタの情報から、更新ログを反映するか否かを判断し、反映する場合は複製データベース2804を更新する。
図29は複製データベース2804の例の一部を示したものである。入札金額テーブル2900に示すように、「商品ID」、「値段」のほかに、各テーブルの行データに対してMVCCを実現するためのデータである「行データID」、バージョン番号(「バージョン」)、次のバージョンへのポインタ(「次」)を追加する。また、各行データIDに対して更新ログ反映済みのバージョンを指す、更新ログ反映済みポインタ2910を保持する。なお、更新ログ反映済みポインタ2910は、複製データベース2804内ではなく、自スレーブDB計算機130の主記憶装置134内に保持しておいてもよい。
図30は要求処理部2801の動作を示したフローチャートである。なお、図9のフローチャートと同一の処理には同一の符号を付し、説明を省略する。要求処理部2801はトランザクション開始要求を受け付けると(ステップ903で「トランザクション開始」)、マスターDB計算機120にその要求を送信し、トランザクションを開始し、そのトランザクションにバージョン番号を割り振る(ステップ3004)。バージョン番号は各トランザクションで一意であり、開始した時刻が遅いトランザクションほど大きい番号とする。
参照要求の処理で(ステップ903で「参照」)、ステップ904でNoの場合、要求処理部2801は、現在のトランザクションのバージョン番号以下で最も大きいバージョン番号をもったデータ(現バージョンのデータと呼ぶ。)のみを参照し、要求元に返す(ステップ3002)。
一方、更新要求の処理では(ステップ903で「更新」)、その直前にステップ905,3001,907の処理を行ったか否かを判断し(ステップ30011)、Noの場合はステップ909に進み、Yesの場合はステップ3003に進む。ステップ3003において、行データを上書きするのではなく、元の行データを複製して新しい行データを作成し、そのデータを更新してバージョン番号に現在のトランザクションのバージョン番号を格納する。
更新のための参照要求の処理で(ステップ904で「Yes」)、ステップ905の後、マスターDB計算機120から取得したデータと自サーバの複製データベース2804の現バージョンのデータが異なっていたときも、要求処理部2801は、自サーバの複製データベース2804に対してステップ3003の更新処理と同様の更新処理を行う(ステップ3001)。
図31は更新ログ反映判定部2803の動作を示したフローチャートである。なお、図13のフローチャートと同一の処理には同一の符号を付し、説明を省略あるいは簡略化する。更新ログ反映判定部2803は、更新ログのサーバIDと自サーバのIDが等しいときは(ステップ1301で「Yes」)、更新情報管理部2802を呼び出して更新対象データの行データIDと対応する更新ログ反映済みポインタを次のバージョンを指すように変更する(更新情報管理部2802の処理:図32のステップ3201)。
更新ログのサーバIDと自サーバのIDが等しくないときは(ステップ1301で「No」)、更新対象データの行データIDと対応する更新ログ反映済みポインタが、その行データIDを持つ行データの中で最も大きいバージョン(最新のバージョン)を指しているか否かを調べる(ステップ3101)。最新のバージョンでなければ(ステップ3102で「No」)、更新ログを反映せずに破棄し、最新のバージョンであれば(ステップ3102で「Yes」)、更新ログを自サーバの複製データベース2804に反映し、更新された行データの行データIDと対応する更新ログ反映済みポインタを最新のバージョンを指すように変更する(ステップ3103)。
以下では、具体的な例を使って、参照および更新時の処理の概要を説明する。
複製データベース2804の保持するデータが図29で示した状態のときに、参照のSQLクエリ「SELECT * FROM 入札金額 WHERE 商品ID=208」を受信したとする。このとき要求処理部2801は、その要求を含むトランザクションのバージョン番号が「14563」〜「15632」であれば、行データ2901を結果として返し、バージョン番号が「15633」以上であれば行データ2903を結果として返す。
また、複製データベース2804の保持するデータが図29で示した状態のときに、更新のSQLクエリ「UPDATE 入札金額 SET 値段=値段+100 WHERE 商品ID=208」を受信したとする。このときのトランザクションのバージョン番号が「15846」であったとすると、要求処理部2801は、行データ2903を複製し、そのデータに対して更新処理をし、バージョン番号に「15846」を格納して新しい行データ3300を作成する。これを示したのが図33である。このとき、更新ログ反映済みポインタ2911は元の行データ2903を指しており、まだ自サーバの受信した最新の更新要求と対応する更新ログを受信していないことを示している(第1実施形態における更新カウンタが「1」の場合に対応)。また、この要求を含むトランザクションのバージョン番号が「15632」以下の場合は、更新処理は失敗してエラーが返る。
この後、前記更新SQLクエリと対応する更新ログを受け付けると、更新ログ反映判定部2803は、更新ログのサーバIDが自サーバのサーバIDと一致するので、更新情報管理部2802を呼び出し、更新対象と対応する行データIDの更新ログ反映済みポインタを次のバージョンを指すように変更する。これを示したのが図34である(第1実施形態における更新カウンタが「0」の場合に対応)。図34では、更新ログ反映済みポインタ2911は最新の行データ3300を指している。
以上のように、MVCCで使用するデータを利用して、第1実施形態および第2実施形態で示した更新カウンタと同等の情報を管理することができる。
<第4実施形態>
以下、本発明の第4実施形態について説明する。その際、第1実施形態〜第3実施形態との相違点を主に説明し、第1実施形態〜第3実施形態との共通点については説明を省略あるいは簡略化する。
第1実施形態〜第3実施形態ではマスターDB計算機120と1つ以上のスレーブDB計算機130とでシステムを構成した。第4実施形態では、スレーブDB計算機130に代わって、クライアント計算機100の主記憶装置104内に格納され、クライアント計算機100のCPU103を使って動作するデータキャッシュ(キャッシュメモリシステム)が構成される。
第4実施形態のハードウェア構成を図35に示す。なお、図1と同一の構成には同一の符号を付し、説明を省略する。図35に示すように、マスターDB計算機120と1つ以上のクライアント計算機100が通信ネットワーク110で接続されている。データキャッシュは、クライアント計算機100の主記憶装置104に格納され、CPU103を使用して動作する。データベースシステムを利用するアプリケーションはクライアント計算機100の主記憶装置104に格納され、CPU103を使用して動作し、同じクライアント計算機100内のデータキャッシュに対して要求を送信する。
第4実施形態のモジュール構成を図36に示す。なお、図28と同一の構成には、同一の符号で(所在が同じ場合)、あるいは、同一の符号に「a」または「b」の添字を付して(所在が違う場合)、表記している。図36は第3実施形態を、データキャッシュを使った構成に変更したものである。第3実施形態において通信ネットワーク110を通じて外部の計算機(スレーブDB計算機130)とデータのやりとりをしていた要求送信部200は、第4実施形態においては同一計算機内のデータキャッシュ3600とデータのやりとりをする。データキャッシュ3600内のモジュールは第3実施形態のスレーブDB計算機130内のモジュールとほぼ同一である。
第3実施形態では外部記憶装置136内に存在した更新ログバッファ222aと複製データベース2804が第4実施形態では主記憶装置104内に存在する。なお、データキャッシュ3600はアプリケーションと独立したプロセスであってもよいし、アプリケーションと同一プロセスであってもよい。データキャッシュ3600がアプリケーションと独立したプロセスである場合は、要求送信部200と要求処理部2801aのデータのやりとりはプロセス間通信で行われる。一方、データキャッシュ3600がアプリケーションと同一プロセスである場合は、要求送信部200と要求処理部2801aのデータのやりとりは手続き呼び出しで行われる。
また、第1実施形態および第2実施形態においてデータキャッシュを使う場合の構成も、上記と同様にして実現できる。
以上のようにして、マスターDB計算機120と1つ以上のクライアント計算機100内で動作するデータキャッシュでシステムが構成できる。
一般的に、主記憶装置(主記憶装置104等)は外部記憶装置(外部記憶装置136等)に比べて記憶容量が少なく、大きな容量を必要とすることが多い複製データベース(複製データベース2804a等)を主記憶装置に格納するのは困難なことがある。しかし、近年は主記憶装置の容量が増加しており(例えば数ギガバイト程度)、大容量のデータを主記憶装置に格納することも可能となってきている。そのような場合には、第4実施形態のシステムの適用も現実的に考えられる。
そして、主記憶装置は外部記憶装置に比べて動作速度が速いので、主記憶装置に複製データベースを格納するデータキャッシュとすることで、データベースのスループットの向上が期待できる。
第4実施形態によれば、スレーブDB計算機130を使用する代わりに、複製データベースをクライアント計算機100の主記憶装置104内に保持するデータキャッシュを使用した構成のシステムを実現できる。これにより、要求送信部200と要求処理部2801aが同一のクライアント計算機100内に存在するので、それらの間での通信が、通信ネットワーク110を経由せずに行われるので、高速化できる。つまり、例えば、Webサービスのようなシステムで同じ利用者による一連の作業(セッションと呼ばれる)が行われる場合などにおいて、特に、処理の高速化を図ることができる。
以上、本発明の実施形態について説明したが、本発明は、これに限定されるものではなく、その趣旨を変えない範囲で実施することができる。ハードウェア、ソフトウェアの具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
本発明の第1実施形態におけるハードウェア構成図を示す。 本発明の第1実施形態におけるモジュール構成図を示す。 本発明の第1実施形態における原本データベースの例の一部を示す。 本発明の第1実施形態におけるサーバ情報テーブルの例の一部を示す。 本発明の第1実施形態における更新ログバッファの例の一部を示す。 本発明の第1実施形態における複製データベースの例の一部を示す。 本発明の第1実施形態における更新カウンタ表の例の一部を示す。 本発明の第1実施形態におけるマスター要求処理部の動作のフローチャートを示す。 本発明の第1実施形態における要求処理部の動作のフローチャートを示す。 本発明の第1実施形態における更新カウンタ増加部の動作のフローチャートを示す。 本発明の第1実施形態におけるサーバ情報付与部の動作のフローチャートを示す。 本発明の第1実施形態におけるサーバ情報判定部の動作のフローチャートを示す。 本発明の第1実施形態における更新ログ反映判定部の動作のフローチャートを示す。 本発明の第1実施形態における更新カウンタ減少部の動作のフローチャートを示す。 本発明の第1実施形態における更新要求発生時のデータの流れの例を示す。 本発明の第1実施形態におけるクライアント計算機からスレーブDB計算機へ送信されるトランザクションの例を示す。 本発明の第1実施形態におけるスレーブDB計算機からマスターDB計算機へ送信されるトランザクションの例を示す。 本発明の第1実施形態におけるマスターDB計算機からスレーブDB計算機へ送信される更新トランザクションログの例を示す。 本発明の第1実施形態における更新要求発生時の例での各DB計算機のデータ変遷を示す。 本発明の第1実施形態における更新要求競合発生時のデータの流れの例を示す。 本発明の第1実施形態におけるクライアント計算機からスレーブDB計算機へ送信されるトランザクションの例を示す。 本発明の第1実施形態におけるスレーブDB計算機からマスターDB計算機へ送信されるトランザクションの例を示す。 本発明の第1実施形態におけるマスターDB計算機からスレーブDB計算機へ送信される更新トランザクションログの例を示す。 本発明の第1実施形態における更新要求競合発生時の例での各DB計算機のデータ変遷を示す。 2つのDB計算機に続けて更新要求が発生し、お互いに更新ログを送信しあった場合のデータの変遷の例を示す。 2つのスレーブDB計算機に続けて更新要求が発生し、マスターから送信される更新ログを全て反映した場合のデータの変遷の例を示す。 本発明の第2実施形態における複製データベースの例の一部を示す。 本発明の第3実施形態におけるモジュール構成図を示す。 本発明の第3実施形態における複製データベースの例の一部を示す。 本発明の第3実施形態における要求処理部の動作のフローチャートを示す。 本発明の第3実施形態における更新ログ反映判定部の動作のフローチャートを示す。 本発明の第3実施形態における更新情報管理部の動作のフローチャートを示す。 本発明の第3実施形態における更新要求を処理した直後の複製データベースの例の一部を示す。 本発明の第3実施形態における更新ログを処理した直後の複製データベースの例の一部を示す。 本発明の第4実施形態におけるハードウェア構成図を示す。 本発明の第4実施形態におけるモジュール構成図を示す。
符号の説明
100 クライアント計算機(外部の計算機)
120 マスターDB計算機(第1の情報処理装置)
130 スレーブDB計算機(第2の情報処理装置)
223 原本データベース
224 サーバ情報テーブル
230 要求処理部
231 サーバ情報付与部
232 更新カウンタ増加部(更新情報管理部)
233 更新カウンタ表(更新情報管理部)
234 更新カウンタ減少部(更新情報管理部)
235,2803 更新ログ反映判定部(更新反映判定部)
237 サーバ情報判定部
238,2804 複製データベース
2802 更新情報管理部
2910 更新ログ反映済みポインタ
DBS データベースシステム(情報処理システム)

Claims (12)

  1. データの集合である原本データベースを管理する第1の情報処理装置と、前記原本データベースの複製である複製データベースを管理する1つ以上の第2の情報処理装置と、を備えて構成され、前記第1の情報処理装置の原本データベースで発生した更新情報を格納する更新ログを前記第2の情報処理装置に送信して前記複製データベースに反映する情報処理システムにおいて、
    前記第2の情報処理装置は、
    外部の計算機から更新要求を受け付けると、該更新要求を前記第1の情報処理装置に送信して前記原本データベースを更新させるとともに、該第2の情報処理装置の複製データベースを更新する要求処理部と、
    前記受け付けた更新要求と対応する更新ログを前記第1の情報処理装置から受信したか否かを、前記複製データベース内のデータごとに管理する更新情報管理部と、
    前記第1の情報処理装置から新規な更新ログを受け付けると、該更新ログに格納されている情報と前記更新情報管理部の管理する情報から、該更新ログが、前記受け付けた更新要求と対応する更新ログよりも新しいか否かを判断し、新しいと判断した場合は該更新ログの更新内容を前記複製データベースに反映する更新反映判定部と、
    を備えることを特徴とする情報処理システム。
  2. 前記第1の情報処理装置は第1のデータベース計算機であり、前記第2の情報処理装置は第2のデータベース計算機であることを特徴とする請求項1に記載の情報処理システム。
  3. 前記更新情報管理部は、
    前記複製データベース内のデータごとに対応するカウンタを保持する更新カウンタ表と、
    該第2のデータベース計算機が更新要求の処理時に複製データベースを更新するときに、前記更新カウンタ表の更新対象となるデータと対応する前記カウンタをあらかじめ定められた数だけ増加する更新カウンタ増加部と、
    該第2のデータベース計算機で受信した外部の計算機からの更新要求と対応する更新ログを前記第1のデータベース計算機から受信したときに、前記更新カウンタ表の更新対象となるデータと対応する前記カウンタをあらかじめ定められた数だけ減少する更新カウンタ減少部と、を備え、
    前記更新反映判定部は、
    前記第1のデータベース計算機から新規な更新ログを受け付けた場合、前記更新カウンタ表を参照して、前記更新対象となるデータと対応する前記カウンタの値があらかじめ定められた数値以下であったとき、該更新ログの更新内容を該第2のデータベース計算機の複製データベースに反映する
    ことを特徴とする請求項2に記載の情報処理システム。
  4. 前記第2のデータベース計算機の複製データベース内に、前記原本データベースの複製に加えて、データごとに対応するカウンタが保持され、
    前記更新情報管理部は、
    該第2のデータベース計算機が更新要求の処理時に複製データベースを更新するときに、前記複製データベース内の更新対象となるデータと対応する前記カウンタをあらかじめ定められた数だけ増加する更新カウンタ増加部と、
    該第2のデータベース計算機で受信した外部の計算機からの更新要求と対応する更新ログを前記第1のデータベース計算機から受信したときに、該複製データベースの更新対象となるデータと対応する前記カウンタをあらかじめ定められた数だけ減少する更新カウンタ減少部と、を備え、
    前記更新反映判定部は、
    前記第1のデータベース計算機から新規な更新ログを受け付けた場合、前記更新カウンタ表を参照して、前記更新対象となるデータと対応する前記カウンタの値があらかじめ定められた数値以下であったとき、該更新ログの更新内容を該第2のデータベース計算機の複製データベースに反映する
    ことを特徴とする請求項2に記載の情報処理システム。
  5. 前記第2のデータベース計算機は、
    前記複製データベース内において、格納するデータの更新をバージョン管理し、
    前記バージョン管理されたデータに対し、更新ログ反映済みのバージョンを示す更新ログ反映済みポインタを前記複製データベース内に保持し、
    前記要求処理部は、
    前記複製データベースを更新する際に、更新対象のデータを複製し、該データの値を更新して次のバージョンのデータを作成し、
    前記更新情報管理部は、
    該第2のデータベース計算機で受信した外部の計算機からの更新要求と対応する更新ログを前記第1のデータベース計算機から受信したときに、該複製データベース内の更新対象となるデータと対応する前記更新ログ反映済みポインタを次のバージョンに変更し、
    前記更新反映判定部は、
    前記第1のデータベース計算機から新規な更新ログを受け付けた場合、前記複製データベースを参照して、前記更新対象となるデータと対応する更新ログ反映済みポインタが最新のバージョンになっていたとき、該更新ログの更新内容を該第2のデータベース計算機の複製データベースに反映する
    ことを特徴とする請求項2に記載の情報処理システム。
  6. 前記第1のデータベース計算機の原本データベース内に、前記第2のデータベース計算機の情報を格納するサーバ情報テーブルが保持され、
    前記第2のデータベース計算機は、
    前記サーバ情報テーブルの該第2のデータベース計算機を格納したデータを更新する更新要求を前記第1のデータベース計算機に送信するサーバ情報付与部と、
    前記第1のデータベース計算機から受信した更新ログ中の前記サーバ情報テーブルを更新する更新ログデータから前記第2のデータベース計算機の情報を取得し、更新ログが該第2のデータベース計算機で受信した更新要求と対応する更新ログか否かを判断するサーバ情報判定部と、を備える
    ことを特徴とする請求項2に記載の情報処理システム。
  7. データの集合である原本データベースを管理するデータベース計算機と、前記原本データベースの複製である複製データベースを主記憶装置内に保持するデータキャッシュを有する1つ以上のクライアント計算機と、を備えて構成され、前記データベース計算機の原本データベースで発生した更新情報を格納する更新ログを前記クライアント計算機のデータキャッシュに送信して前記複製データベースに反映する情報処理システムにおけるデータ更新方法であって、
    前記データキャッシュは、要求処理部と、更新情報管理部と、更新反映判定部と、を備えており、
    前記要求処理部は、
    データの更新要求を受け付けると、該更新要求を前記データベース計算機に送信して前記原本データベースを更新させるとともに、前記複製データベースを更新し、
    前記更新情報管理部は、
    前記更新要求と対応する更新ログを前記データベース計算機から受信したか否かを、前記複製データベース内のデータごとに管理し、
    前記更新反映判定部は、
    前記データベース計算機から新規な更新ログを受け付けると、該更新ログに格納されている情報と前記更新情報管理部の管理する情報から、該更新ログが、前記受け付けた更新要求と対応する更新ログよりも新しいか否かを判断し、新しいと判断した場合は該更新ログの更新内容を前記複製データベースに反映する
    ことを特徴とするデータ更新方法。
  8. 前記更新情報管理部は、
    前記複製データベース内のデータごとに対応するカウンタを保持する更新カウンタ表と、更新カウンタ増加部と、更新カウンタ減少部と、を備えており、
    前記更新カウンタ増加部は、
    前記更新要求の処理時に前記複製データベースを更新するときに、前記更新カウンタ表の更新対象となるデータと対応する前記カウンタをあらかじめ定められた数だけ増加し、
    前記更新カウンタ減少部は、
    前記更新要求と対応する更新ログを前記データベース計算機から受信したときに、前記更新カウンタ表の更新対象となるデータと対応する前記カウンタをあらかじめ定められた数だけ減少し、
    前記更新反映判定部は、
    前記データベース計算機から新規な更新ログを受け付けた場合、前記更新カウンタ表を参照して、前記更新対象となるデータと対応する前記カウンタの値があらかじめ定められた数値以下であったとき、該更新ログの更新内容を前記複製データベースに反映する
    ことを特徴とする請求項7に記載のデータ更新方法。
  9. 前記データキャッシュの複製データベース内に、前記原本データベースの複製に加えて、データごとに対応するカウンタが保持され、
    前記更新情報管理部は、更新カウンタ増加部と、更新カウンタ減少部と、を備えており、
    前記更新カウンタ増加部は、
    前記更新要求の処理時に前記複製データベースを更新するときに、前記複製データベース内の更新対象となるデータと対応する前記カウンタをあらかじめ定められた数だけ増加し、
    前記更新カウンタ減少部は、
    前記更新要求と対応する更新ログを前記データベース計算機から受信したときに、該複製データベースの更新対象となるデータと対応する前記カウンタをあらかじめ定められた数だけ減少し、
    前記更新反映判定部は、
    前記データベース計算機から新規な更新ログを受け付けた場合、前記更新カウンタ表を参照して、前記更新対象となるデータと対応する前記カウンタの値があらかじめ定められた数値以下であったとき、該更新ログの更新内容を前記複製データベースに反映する
    ことを特徴とする請求項7に記載のデータ更新方法。
  10. 前記複製データベース内において、格納するデータの更新がバージョン管理され、
    前記バージョン管理されたデータに対し、更新ログ反映済みのバージョンを示す更新ログ反映済みポインタが前記複製データベース内に保持され、
    前記要求処理部は、
    前記複製データベースを更新する際に、更新対象のデータを複製し、該データの値を更新して次のバージョンのデータを作成し、
    前記更新情報管理部は、
    更新要求と対応する更新ログを前記データベース計算機から受信したときに、該複製データベース内の更新対象となるデータと対応する前記更新ログ反映済みポインタを次のバージョンに変更し、
    前記更新反映判定部は、
    前記データベース計算機から新規な更新ログを受け付けた場合、前記複製データベースを参照して、前記更新対象となるデータと対応する更新ログ反映済みポインタが最新のバージョンになっていたとき、該更新ログの更新内容を前記複製データベースに反映する
    ことを特徴とする請求項7に記載のデータ更新方法。
  11. 前記原本データベース内に、前記データキャッシュの情報を格納するサーバ情報テーブルが保持されており、
    前記データキャッシュは、サーバ情報付与部と、サーバ情報判定部と、を備えており、
    前記サーバ情報付与部は、
    前記サーバ情報テーブルの該データキャッシュを格納したデータを更新する更新要求を前記データベース計算機に送信し、
    前記サーバ情報判定部は、
    前記データベース計算機から受信した更新ログ中の前記サーバ情報テーブルを更新する更新ログデータから前記データキャッシュの情報を取得し、更新ログが該データキャッシュで受信した更新要求と対応する更新ログか否かを判断する
    ことを特徴とする請求項7に記載のデータ更新方法。
  12. 請求項7ないし請求項11のいずれか1項に記載のデータ更新方法をコンピュータに実行させるためのデータ更新プログラム。
JP2008228769A 2008-09-05 2008-09-05 情報処理システム、データ更新方法およびデータ更新プログラム Expired - Fee Related JP4612715B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008228769A JP4612715B2 (ja) 2008-09-05 2008-09-05 情報処理システム、データ更新方法およびデータ更新プログラム
US12/542,153 US8645319B2 (en) 2008-09-05 2009-08-17 Information processing system, data update method and data update program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008228769A JP4612715B2 (ja) 2008-09-05 2008-09-05 情報処理システム、データ更新方法およびデータ更新プログラム

Publications (2)

Publication Number Publication Date
JP2010061559A JP2010061559A (ja) 2010-03-18
JP4612715B2 true JP4612715B2 (ja) 2011-01-12

Family

ID=42038664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008228769A Expired - Fee Related JP4612715B2 (ja) 2008-09-05 2008-09-05 情報処理システム、データ更新方法およびデータ更新プログラム

Country Status (2)

Country Link
US (1) US8645319B2 (ja)
JP (1) JP4612715B2 (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930331B2 (en) 2007-02-21 2015-01-06 Palantir Technologies Providing unique views of data based on changes or rules
US8984390B2 (en) 2008-09-15 2015-03-17 Palantir Technologies, Inc. One-click sharing for screenshots and related documents
KR101662173B1 (ko) * 2010-07-21 2016-10-04 에스케이텔레콤 주식회사 분산 파일 관리 장치 및 방법
US9092482B2 (en) 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
US8799240B2 (en) 2011-06-23 2014-08-05 Palantir Technologies, Inc. System and method for investigating large amounts of data
US9547693B1 (en) 2011-06-23 2017-01-17 Palantir Technologies Inc. Periodic database search manager for multiple data sources
US9280532B2 (en) 2011-08-02 2016-03-08 Palantir Technologies, Inc. System and method for accessing rich objects via spreadsheets
US8504542B2 (en) 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
JP6035719B2 (ja) * 2011-09-09 2016-11-30 セイコーエプソン株式会社 印刷装置および印刷装置の物品リスト生成方法
US8856070B2 (en) * 2012-12-21 2014-10-07 International Business Machines Corporation Consistent replication of transactional updates
AU2013381504B2 (en) * 2013-03-12 2016-06-23 Kabushiki Kaisha Toshiba Database system, program, and data processing method
US9230280B1 (en) 2013-03-15 2016-01-05 Palantir Technologies Inc. Clustering data based on indications of financial malfeasance
US10275778B1 (en) 2013-03-15 2019-04-30 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive investigation based on automatic malfeasance clustering of related data in various data structures
US8855999B1 (en) 2013-03-15 2014-10-07 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US8903717B2 (en) 2013-03-15 2014-12-02 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US8930897B2 (en) 2013-03-15 2015-01-06 Palantir Technologies Inc. Data integration tool
JP6382819B2 (ja) 2013-08-21 2018-08-29 株式会社東芝 データベースシステム、ノード、管理装置、プログラムおよびデータ処理方法
JP6122126B2 (ja) 2013-08-27 2017-04-26 株式会社東芝 データベースシステム、プログラムおよびデータ処理方法
US9116975B2 (en) 2013-10-18 2015-08-25 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive simultaneous querying of multiple data stores
US9043696B1 (en) 2014-01-03 2015-05-26 Palantir Technologies Inc. Systems and methods for visual definition of data associations
WO2015155824A1 (ja) * 2014-04-07 2015-10-15 株式会社日立製作所 ストレージシステム
JP6200376B2 (ja) * 2014-05-27 2017-09-20 クラリオン株式会社 車載情報システム及びその情報処理方法
US9535974B1 (en) 2014-06-30 2017-01-03 Palantir Technologies Inc. Systems and methods for identifying key phrase clusters within documents
US9619557B2 (en) 2014-06-30 2017-04-11 Palantir Technologies, Inc. Systems and methods for key phrase characterization of documents
US9419992B2 (en) 2014-08-13 2016-08-16 Palantir Technologies Inc. Unwanted tunneling alert system
US9454281B2 (en) 2014-09-03 2016-09-27 Palantir Technologies Inc. System for providing dynamic linked panels in user interface
US9348920B1 (en) 2014-12-22 2016-05-24 Palantir Technologies Inc. Concept indexing among database of documents using machine learning techniques
US10552994B2 (en) 2014-12-22 2020-02-04 Palantir Technologies Inc. Systems and interactive user interfaces for dynamic retrieval, analysis, and triage of data items
US10362133B1 (en) 2014-12-22 2019-07-23 Palantir Technologies Inc. Communication data processing architecture
US10452651B1 (en) 2014-12-23 2019-10-22 Palantir Technologies Inc. Searching charts
US9817563B1 (en) 2014-12-29 2017-11-14 Palantir Technologies Inc. System and method of generating data points from one or more data stores of data items for chart creation and manipulation
TWI566229B (zh) * 2015-06-03 2017-01-11 友達光電股份有限公司 顯示裝置之時序控制器及其操作方法
US9672257B2 (en) 2015-06-05 2017-06-06 Palantir Technologies Inc. Time-series data storage and processing database system
US9384203B1 (en) 2015-06-09 2016-07-05 Palantir Technologies Inc. Systems and methods for indexing and aggregating data records
US9407652B1 (en) 2015-06-26 2016-08-02 Palantir Technologies Inc. Network anomaly detection
US9537880B1 (en) 2015-08-19 2017-01-03 Palantir Technologies Inc. Anomalous network monitoring, user behavior detection and database system
US10402385B1 (en) 2015-08-27 2019-09-03 Palantir Technologies Inc. Database live reindex
US9454564B1 (en) 2015-09-09 2016-09-27 Palantir Technologies Inc. Data integrity checks
US10044745B1 (en) 2015-10-12 2018-08-07 Palantir Technologies, Inc. Systems for computer network security risk assessment including user compromise analysis associated with a network of devices
US20170154066A1 (en) * 2015-11-30 2017-06-01 International Business Machines Corporation Subscription service for monitoring changes in remote content
US9542446B1 (en) 2015-12-17 2017-01-10 Palantir Technologies, Inc. Automatic generation of composite datasets based on hierarchical fields
KR101694392B1 (ko) 2016-06-02 2017-01-10 단국대학교 천안캠퍼스 산학협력단 통증 제어를 위한 전류 제어 기반 전기기계적 연골 성형 장치
US9753935B1 (en) 2016-08-02 2017-09-05 Palantir Technologies Inc. Time-series data storage and processing database system
US10133588B1 (en) 2016-10-20 2018-11-20 Palantir Technologies Inc. Transforming instructions for collaborative updates
US10318630B1 (en) 2016-11-21 2019-06-11 Palantir Technologies Inc. Analysis of large bodies of textual data
US10884875B2 (en) 2016-12-15 2021-01-05 Palantir Technologies Inc. Incremental backup of computer data files
US10223099B2 (en) 2016-12-21 2019-03-05 Palantir Technologies Inc. Systems and methods for peer-to-peer build sharing
CN108228678B (zh) * 2016-12-22 2020-10-16 华为技术有限公司 一种多副本数据恢复方法及装置
US10896097B1 (en) 2017-05-25 2021-01-19 Palantir Technologies Inc. Approaches for backup and restoration of integrated databases
GB201708818D0 (en) 2017-06-02 2017-07-19 Palantir Technologies Inc Systems and methods for retrieving and processing data
US11334552B2 (en) 2017-07-31 2022-05-17 Palantir Technologies Inc. Lightweight redundancy tool for performing transactions
US10417224B2 (en) 2017-08-14 2019-09-17 Palantir Technologies Inc. Time series database processing system
US10216695B1 (en) 2017-09-21 2019-02-26 Palantir Technologies Inc. Database system for time series data storage, processing, and analysis
US11281726B2 (en) 2017-12-01 2022-03-22 Palantir Technologies Inc. System and methods for faster processor comparisons of visual graph features
US10614069B2 (en) 2017-12-01 2020-04-07 Palantir Technologies Inc. Workflow driven database partitioning
US11016986B2 (en) 2017-12-04 2021-05-25 Palantir Technologies Inc. Query-based time-series data display and processing system
US10885018B2 (en) 2018-05-07 2021-01-05 Microsoft Technology Licensing, Llc Containerization for elastic and scalable databases
GB201807534D0 (en) 2018-05-09 2018-06-20 Palantir Technologies Inc Systems and methods for indexing and searching
CN109710690B (zh) * 2018-11-30 2020-09-01 北京大数元科技发展有限公司 一种业务驱动计算方法及系统
CN110209734B (zh) * 2019-05-05 2022-11-18 深圳市腾讯计算机系统有限公司 数据复制方法、装置、计算机设备及存储介质
CN111625543B (zh) * 2020-05-27 2023-08-25 贵州易鲸捷信息技术有限公司 一种基于HBase表实现全局单调递增的序列的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000003300A (ja) * 1998-06-12 2000-01-07 Canon Inc データベースの自動複製装置、自動複製方法、自動複製システム、及び記憶媒体
JP2003242016A (ja) * 2002-02-14 2003-08-29 Nippon Telegr & Teleph Corp <Ntt> 情報処理システムおよびその情報システムで使用されるサーバ装置ならびにクライアント装置と、プログラムおよび情報処理方法
JP2005284824A (ja) * 2004-03-30 2005-10-13 Nec Software Chubu Ltd ネットワークシステムの通信方法及びネットワークシステム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143373A (ja) * 1991-11-18 1993-06-11 Nec Corp 共有データ制御方式
US6446092B1 (en) * 1996-11-01 2002-09-03 Peerdirect Company Independent distributed database system
JP3487732B2 (ja) 1997-06-16 2004-01-19 Necソフト株式会社 複製データベースデータ不整合回避装置及び回避方法
US6516314B1 (en) * 1998-11-17 2003-02-04 Telefonaktiebolaget L M Ericsson (Publ) Optimization of change log handling
US7346616B2 (en) * 2002-03-20 2008-03-18 Extended System, Inc. Synchronizing data shared between two devices independent of any other devices that may also share the data
US7158998B2 (en) * 2002-07-31 2007-01-02 Cingular Wireless Ii, Llc Efficient synchronous and asynchronous database replication
US8311980B2 (en) * 2002-12-09 2012-11-13 Hewlett-Packard Development Company, L.P. Namespace consistency for a wide-area file system
US7383264B2 (en) * 2003-03-27 2008-06-03 Hitachi, Ltd. Data control method for duplicating data between computer systems
US8688634B2 (en) * 2004-02-27 2014-04-01 International Business Machines Corporation Asynchronous peer-to-peer data replication
CN101151841A (zh) * 2004-12-23 2008-03-26 捷讯研究有限公司 主机和客户手持设备之间连续pim同步的系统和方法
US7461230B1 (en) * 2005-03-31 2008-12-02 Symantec Operating Corporation Maintaining spatial locality of write operations
US7636741B2 (en) * 2005-08-15 2009-12-22 Microsoft Corporation Online page restore from a database mirror
US9268659B2 (en) * 2006-01-05 2016-02-23 Emc Corporation Detecting failover in a database mirroring environment
JP2008186294A (ja) * 2007-01-30 2008-08-14 Toshiba Corp ソフトウェア更新装置及びソフトウェア更新システム
US20080189340A1 (en) * 2007-02-01 2008-08-07 David Randall Blea Apparatus, system, and method for synchronizing a remote database

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000003300A (ja) * 1998-06-12 2000-01-07 Canon Inc データベースの自動複製装置、自動複製方法、自動複製システム、及び記憶媒体
JP2003242016A (ja) * 2002-02-14 2003-08-29 Nippon Telegr & Teleph Corp <Ntt> 情報処理システムおよびその情報システムで使用されるサーバ装置ならびにクライアント装置と、プログラムおよび情報処理方法
JP2005284824A (ja) * 2004-03-30 2005-10-13 Nec Software Chubu Ltd ネットワークシステムの通信方法及びネットワークシステム

Also Published As

Publication number Publication date
JP2010061559A (ja) 2010-03-18
US8645319B2 (en) 2014-02-04
US20100076939A1 (en) 2010-03-25

Similar Documents

Publication Publication Date Title
JP4612715B2 (ja) 情報処理システム、データ更新方法およびデータ更新プログラム
JP7012158B2 (ja) リモートサーバからの異種データベースレプリケーションのためのシステムおよび方法
US7275074B2 (en) Propagating commit times
US6243702B1 (en) Method and apparatus for propagating commit times between a plurality of database servers
US11556518B2 (en) System and method for providing high availability data
US7693882B2 (en) Replicating data across the nodes in a cluster environment
US7366738B2 (en) Method and system for object cache synchronization
JP5536568B2 (ja) トランザクションを集約して処理する方法、システム、およびプログラム
AU2011282969B2 (en) Application instance and query stores
CN113535656B (zh) 数据访问方法、装置、设备及存储介质
US8671151B2 (en) Maintaining item-to-node mapping information in a distributed system
US11093484B2 (en) Data management method and data management system
US8494888B2 (en) Offline modification of business data
JP2011076487A (ja) 計算機、及びデータベース管理プログラム
US20200104404A1 (en) Seamless migration of distributed systems
JP2023541298A (ja) トランザクション処理方法、システム、装置、機器、及びプログラム
CN113094430A (zh) 一种数据处理方法、装置、设备以及存储介质
JP5251446B2 (ja) データ共有プログラム,データ共有方法及びデータ共有装置
US20200364241A1 (en) Method for data synchronization between a source database system and target database system
US10284649B2 (en) Distributed processing system
US20160034191A1 (en) Grid oriented distributed parallel computing platform
WO2023134614A1 (zh) 事务的处理
US20190065327A1 (en) Efficient versioned object management
CN112860746B (zh) 一种基于缓存削减的方法、设备及系统
CN112328637B (zh) 高速分布式数据缓存方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100906

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101015

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees