JP5012628B2 - メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 - Google Patents
メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 Download PDFInfo
- Publication number
- JP5012628B2 JP5012628B2 JP2008097870A JP2008097870A JP5012628B2 JP 5012628 B2 JP5012628 B2 JP 5012628B2 JP 2008097870 A JP2008097870 A JP 2008097870A JP 2008097870 A JP2008097870 A JP 2008097870A JP 5012628 B2 JP5012628 B2 JP 5012628B2
- Authority
- JP
- Japan
- Prior art keywords
- update
- area
- data
- application program
- user application
- 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
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
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
Description
1.メモリ上の破壊されたデータを破棄、
2.ディスク装置からマスタデータを再ロード、
3.メタデータを保持・管理しているジャーナルファイルから更新データをロールフォワード
という手順を踏んでデータを復旧させる必要がある。
この点は、高いトランザクション性能を求められるメモリデータベースでは大きな問題となる。
メモリ間のデータのコピー処理は、コピーするサイズに比例してCPUリソースを消費するため、データ更新を始めるたびに毎回マスタデータをコピーするこれらの方法は、CPUリソースをコピー処理に奪われてトランザクション性能が悪化するという課題がある。
同時に、これらの方法は、データを更新するプロセス数分マスタデータのコピーを持つことになるため、その分システムに必要なメモリリソースも増加するという課題もある。
なお、以下に示す本実施形態のメモリデータベースにおける各処理、動作は、プログラム(ソフトウェア)の命令によりコンピュータで実行される処理,手段,機能によって実現される。プログラムは、コンピュータの各構成要素に指令を送り、以下に示すような所定の処理・機能を行わせる。すなわち、本実施形態のメモリデータベースにおける各処理・手段は、プログラムとコンピュータとが協働した具体的手段によって実現される。
なお、プログラムの全部又は一部は、例えば、磁気ディスク,光ディスク,半導体メモリ,その他任意のコンピュータで読取り可能な記録媒体により提供され、記録媒体から読み出されたプログラムがコンピュータにインストールされて実行される。また、プログラムは、記録媒体を介さず、通信回線を通じて直接にコンピュータにロードし実行することもできる。
同図に示す本実施形態のメモリデータベースシステム1は、パーソナルコンピュータやワークステーションなどの情報処理装置により構成されており、具体的には、データベースのデータを格納する共有メモリ100と、ユーザが独自に作成したユーザアプリケーションプログラム200と、コミット実行デーモン300と、マスタデータを格納しているディスク装置400の各部を備えている。
参照用領域110には、マスタデータ111が格納される。
マスタデータ111は、メモリデータベースシステム1の動作開始時に、ディスク装置400から読み込まれる。
マスタデータ111は、本データとしてのレコード112と、参照用インデックスとしてのインデックスツリー113から構成される。
参照用ポインタ格納領域114は、それぞれ対応するレコード112を指す参照用ポインタ115の値と、更新用領域120に設けられる対応する更新用インデックスとしての更新用ポインタ格納領域124へのリンクを格納する。
参照用領域110は、ユーザアプリケーションプログラム200からは参照のみ可能で、更新はできないようにアクセス制限が設定され、コミット実行デーモン300からは参照および更新が可能なようにアクセス制限が設定される。
ユーザアプリケーションプログラムがマスタデータ111を更新しようとしたタイミングで更新データ121を作成する。
更新データ121は、更新前と更新後の差分データとしての差分レコード122と、更新用インデックスとしての更新用ポインタ格納領域124から構成される。
したがって、初期状態では、更新用ポインタ格納領域124は、それぞれ対応するマスタデータ111上のレコード112を指す更新用ポインタ125の値を格納する。
更新用領域120は、ユーザアプリケーションプログラム200からもコミット実行デーモン300からも参照および更新が可能なようにアクセス制限が設定される。
また、データ更新後、コミット実行デーモン300にコミット要求を送信することで、コミット処理を実行させる機能を有する。
まず準備として、メモリデータベースシステム1の起動時に、図2に示すように、共有メモリ100上に参照用領域110と更新用領域120を作成する。
次に、図3に示すように、ディスク装置400から読み込んだマスタデータ111を参照用領域110上にロードする。マスタデータ111は、本データとしてのレコード112と、参照用インデックスとしてのインデックスツリー113から構成される。インデックスツリー113は、葉の部分に参照用ポインタ格納領域114を持つ。
参照用ポインタ格納領域114は、対応するレコード112を指す参照用ポインタ115の値を格納する共に、更新用領域120に設けられる対応する更新用インデックスとしての更新用ポインタ格納領域124へのリンクを格納する。
更新用ポインタ格納領域124は、差分レコード222を指す更新用ポインタ125の値を格納する。
但し、初期状態として、各更新用ポインタ125は、図4に示すように、マスタデータ111上の参照用ポインタ115と同じレコードを指す。
ユーザアプリケーションプログラム200は、マスタデータ111のレコード112を更新しようとした場合、まず、図5に示すように、更新用領域120を、他のユーザアプリケーションプログラムやコミット実行デーモン300が参照できないように排他する。
次に、更新しようとするレコードを、インデックスツリー113から更新用ポインタをたどることにより特定する。
その後、図6に示すように、先ほど位置を特定した更新前のレコードイメージと、更新後のレコードイメージからなる差分レコードイメージ122を、更新用領域120に格納した上で、更新用ポインタ125が差分レコードイメージ122を指すように更新用ポインタ格納領域124を書き換える。
全ての処理が終わった後、更新用領域120に対する排他を解除する。
コミット実行デーモン300は、コミット要求を受け取ると、まず参照用領域110と更新用領域120を排他する。
差分レコード122でマスタデータ111を書き換えた後、図8に示すように、差分レコード122を削除し、差分レコード122を指していた更新用ポインタ125がマスタデータ111上の対応するレコード112を指すように、更新用ポインタ格納領域124を書き換える。
全ての処理が終わった後、参照用領域110および更新用領域120に対する排他を解除する。
ユーザアプリケーションプログラム200により、マスタデータ111に対して更新が行われ、図6に示したように、差分レコード122が更新用領域120に格納され、更新用ポインタ125が差分レコード122を指すように更新用ポインタ格納領域124が書き換えられ、更新用領域120の排他が解除された状態であるとする。
ユーザアプリケーションプログラム210が、再度レコード112に対して更新しようとした場合、まず、図9に示すように、更新用領域120を、他のユーザアプリケーションプログラムやコミット実行デーモン300が参照できないように排他する。
その後、図10に示すように、この更新後レコード128と、さらに今回更新した後のレコードからなる差分レコードを更新用領域120に格納した上で、更新用ポインタ125が今作成した差分レコードを指すように更新用ポインタ125を張り替える。全ての処理が終わった後、更新用領域120に対する排他を解除する。
すなわち、ユーザアプリケーションプログラム210からコミット要求を受け取ったコミット実行デーモン300は、参照用領域110と更新用領域120を排他し、更新用領域120に蓄積された差分レコード122を、まとめて参照用領域110のマスタデータ111に反映し、差分レコード122でマスタデータ111を書き換えた後、差分レコード122を削除し、更新用ポインタ格納領域124を書き換えた後、参照用領域110および更新用領域120に対する排他を解除する。
ユーザアプリケーションプログラム200がマスタデータ111を更新しようとしている最中は、図11に示すように、更新用領域120は排他されており、他のユーザアプリケーションプログラムやコミット実行デーモン300が参照することはできないが、参照用領域110はデータ更新が一切なく、排他が不要であるため、他のユーザアプリケーションプログラムから常に参照が可能である。
もちろん、どのユーザアプリケーションプログラムもマスタデータ111を更新していないときは、どのユーザアプリケーションプログラムもマスタデータ111を参照可能であることは言うまでもない。
本実施形態のデータベースシステムは、複数のユーザアプリケーションプログラムに「同じ」データを「同時に」「矛盾無く」読み書きできる機能が確保されている。
ユーザアプリケーションプログラム200の不具合によりメモリ破壊が発生した場合の、共有メモリ100上のデータを復旧する方法について説明する。
ユーザアプリケーションプログラム200の不具合によりメモリ破壊が発生した場合、破壊され得るメモリ領域は、ユーザアプリケーションプログラム自身が持つメモリ(ローカルメモリと呼ぶ)と、メモリデータベースシステム1上の共有メモリ100のうち、ユーザアプリケーションプログラム200が更新権限を持つ更新用領域120に限定され、更新権限を持たない参照用領域110が破壊されることはない。
この間、参照用領域110は更新されず、排他されないため、どのユーザアプリケーションプログラムもマスタデータ111を参照することが可能である。
また、破壊の検出を行うプロセスは、ユーザアプリケーションプログラム200でもよいし、コミット実行デーモン300でもよいし、データ破壊検出専用のプロセスを新たに用意してもよい。
その結果、従来の復旧手順である、(1)メモリ上のデータ破棄、(2)ディスク装置からのデータ再ロード、(3)ジャーナルファイルからのロールフォワードに比べ、本発明ではディスクアクセスを要する手順がなくなるため、データリカバリにかかる時間が大幅に短縮される。
また、データ更新毎にメモリにマスタデータをコピーすることはせず、差分データを作成するだけであるので、CPUリソースおよびメモリリソースの余分な消費を防ぐことが可能になる。
これにより、データ参照を行うユーザアプリケーションプログラムが排他待ちにより処理時間を無駄に消費する可能性が低くなり、データの処理効率を向上させることができる。
しかも、ユーザアプリケーションプログラムが共有メモリ領域にアクセスできるので、プロセス間通信のオーバーヘッドによるデータ更新性能の劣化を防ぐことができるとともに、マスタデータ自身のコピー処理によるCPUリソースとメモリリソースの消費を抑えることができる。
100 共有メモリ
110 参照用領域
111 マスタデータ
112 レコード
113 インデックスツリー
114 参照用ポインタ格納領域
115 参照用ポインタ
120 更新用領域
121 更新データ
122 差分レコード
124 更新用ポインタ格納領域
125 更新用ポインタ
200 ユーザアプリケーションプログラム
300 コミット実行デーモン
400 ディスク装置
Claims (4)
- ユーザアプリケーションプログラムと、データを配置する共有メモリ領域と、マスタデータを格納するディスク装置と、を備えたメモリデータベースシステムであって、
前記共有メモリ領域が、ユーザアプリケーションプログラムが参照のみできる参照用領域と、ユーザアプリケーションプログラムが参照及び更新が可能な更新用領域と、を備えるとともに、
前記共有メモリ領域の前記参照用領域及び前記更新用領域の両方を参照及び更新が可能なコミット実行デーモンを備え、
前記参照用領域が、前記ディスク装置からロードした本データ及びその参照用インデックスを有するマスタデータを格納し、
前記更新用領域が、前記ユーザアプリケーションプログラムが前記マスタデータを更新したときの差分データ及びそのインデックスとなる、前記参照用インデックスとリンクした更新用インデックスを格納し、
前記コミット実行デーモンが、前記差分データによって前記マスタデータを更新する
ことを特徴とするメモリデータベースシステム。 - 前記更新用領域が、前記更新用インデックスとして、前記参照用インデックスをコピーして格納する
ことを特徴とする請求項1記載のメモリデータベースシステム。 - 共有メモリ領域に格納されたマスタデータを更新するためのメモリデータベース更新方法であって、
前記共有メモリ領域を、ユーザアプリケーションプログラムが参照のみできる参照用領域と、ユーザアプリケーションプログラムが参照及び更新が可能な更新用領域とに分割するステップと、
前記参照用領域に本データ及びその参照用インデックスを有するマスタデータを格納するステップと、
前記更新用領域に前記ユーザアプリケーションプログラムが前記マスタデータを更新する差分データ及びそのインデックスとなる、前記参照用インデックスとリンクした更新用インデックスを格納するステップと、
前記差分データを前記マスタデータに適用して、当該マスタデータを更新するステップと、
を有することを特徴とするメモリデータベース更新方法。 - 前記更新用領域に、前記更新用インデックスとして、前記参照用インデックスをコピーして格納する
ことを特徴とする請求項3記載のメモリデータベース更新方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008097870A JP5012628B2 (ja) | 2008-04-04 | 2008-04-04 | メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 |
CN200980111727.4A CN101981550B (zh) | 2008-04-04 | 2009-03-31 | 数据库系统、数据库更新方法、数据库以及数据库更新程序 |
US12/922,051 US8380660B2 (en) | 2008-04-04 | 2009-03-31 | Database system, database update method, database, and database update program |
PCT/JP2009/057033 WO2009123342A1 (ja) | 2008-04-04 | 2009-03-31 | データベースシステム、データベース更新方法、データベース、及びデータベース更新プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008097870A JP5012628B2 (ja) | 2008-04-04 | 2008-04-04 | メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009251853A JP2009251853A (ja) | 2009-10-29 |
JP5012628B2 true JP5012628B2 (ja) | 2012-08-29 |
Family
ID=41135691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008097870A Expired - Fee Related JP5012628B2 (ja) | 2008-04-04 | 2008-04-04 | メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8380660B2 (ja) |
JP (1) | JP5012628B2 (ja) |
CN (1) | CN101981550B (ja) |
WO (1) | WO2009123342A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102011052510A1 (de) * | 2011-08-09 | 2013-02-14 | Dspace Digital Signal Processing And Control Engineering Gmbh | Verfahren zur Verarbeitung von Daten eines Steuergeräts in einem Datenkommunikationsgerät |
GB2505185A (en) | 2012-08-21 | 2014-02-26 | Ibm | Creating a backup image of a first memory space in a second memory space. |
CN103020149B (zh) * | 2012-11-22 | 2016-01-20 | 用友网络科技股份有限公司 | 共享数据更新装置和共享数据更新方法 |
ES2627574T3 (es) * | 2014-03-27 | 2017-07-28 | Kapsch Trafficcom Ag | Unidad de a bordo y procedimiento para la actualización de geodatos en su interior |
US11768707B2 (en) | 2018-08-27 | 2023-09-26 | Box, Inc. | Workflow selection |
US11669793B2 (en) * | 2019-10-01 | 2023-06-06 | Box, Inc. | Inter-application workflow performance analytics |
US11681572B2 (en) | 2019-12-23 | 2023-06-20 | Box, Inc. | Extensible workflow access |
US20220083679A1 (en) | 2020-09-14 | 2022-03-17 | Box, Inc. | Broker-assisted workflows |
CN113885804A (zh) * | 2021-10-09 | 2022-01-04 | 湖南国科微电子股份有限公司 | 一种数据更新方法、装置及计算机设备 |
WO2023100289A1 (ja) * | 2021-12-01 | 2023-06-08 | 日本電信電話株式会社 | データベース管理装置、データベース管理方法およびデータベース管理プログラム |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5617537A (en) * | 1993-10-05 | 1997-04-01 | Nippon Telegraph And Telephone Corporation | Message passing system for distributed shared memory multiprocessor system and message passing method using the same |
JP3146276B2 (ja) * | 1994-03-10 | 2001-03-12 | 富士通株式会社 | 共有メモリの更新及び参照管理方式並びに参照タイミング制御方式 |
US5548728A (en) * | 1994-11-04 | 1996-08-20 | Canon Information Systems, Inc. | System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory |
JPH1031604A (ja) * | 1996-07-15 | 1998-02-03 | Meidensha Corp | 共有メモリシステム並びにデータベースシステム |
US5914730A (en) * | 1997-09-09 | 1999-06-22 | Compaq Computer Corp. | System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests |
US6243788B1 (en) * | 1998-06-17 | 2001-06-05 | International Business Machines Corporation | Cache architecture to enable accurate cache sensitivity |
US6463439B1 (en) * | 1999-07-15 | 2002-10-08 | American Management Systems, Incorporated | System for accessing database tables mapped into memory for high performance data retrieval |
US6810464B1 (en) * | 2001-08-09 | 2004-10-26 | Unisys Corporation | Multiprocessor computer system for processing communal locks employing mid-level caches |
US6678799B2 (en) * | 2001-10-18 | 2004-01-13 | Hewlett-Packard Development Company, Lp. | Aggregation of cache-updates in a multi-processor, shared-memory system |
US7222138B2 (en) * | 2002-02-20 | 2007-05-22 | Sun Microsystems, Inc. | Versioning application programming interface and method for using versioning functionality |
JP2006066009A (ja) * | 2004-08-30 | 2006-03-09 | Renesas Technology Corp | 半導体集積回路 |
JP4758666B2 (ja) * | 2005-03-17 | 2011-08-31 | 株式会社日立製作所 | 記憶制御システム及び記憶制御方法 |
JP4757066B2 (ja) * | 2006-03-15 | 2011-08-24 | 株式会社日立ソリューションズ | 利用者端末における二次記憶装置の管理方法及び利用者端末 |
JP2007280323A (ja) * | 2006-04-12 | 2007-10-25 | Hitachi Ltd | 記憶システム及びデータ管理方法 |
JP4945200B2 (ja) * | 2006-08-29 | 2012-06-06 | 株式会社日立製作所 | 計算機システム及びプロセッサの制御方法 |
JP4415071B2 (ja) * | 2007-06-22 | 2010-02-17 | 富士通マイクロエレクトロニクス株式会社 | メモリ共有システム装置 |
-
2008
- 2008-04-04 JP JP2008097870A patent/JP5012628B2/ja not_active Expired - Fee Related
-
2009
- 2009-03-31 CN CN200980111727.4A patent/CN101981550B/zh not_active Expired - Fee Related
- 2009-03-31 US US12/922,051 patent/US8380660B2/en not_active Expired - Fee Related
- 2009-03-31 WO PCT/JP2009/057033 patent/WO2009123342A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US8380660B2 (en) | 2013-02-19 |
WO2009123342A1 (ja) | 2009-10-08 |
JP2009251853A (ja) | 2009-10-29 |
US20110004583A1 (en) | 2011-01-06 |
CN101981550B (zh) | 2014-11-05 |
CN101981550A (zh) | 2011-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5012628B2 (ja) | メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 | |
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
US7472129B2 (en) | Lossless recovery for computer systems with map assisted state transfer | |
US7433898B1 (en) | Methods and apparatus for shared storage journaling | |
US8572039B2 (en) | Focused backup scanning | |
US7360111B2 (en) | Lossless recovery for computer systems with remotely dependent data recovery | |
JP4363676B2 (ja) | コンピュータシステム | |
US7613743B1 (en) | Methods and apparatuses for data protection | |
US8732121B1 (en) | Method and system for backup to a hidden backup storage | |
US9665304B2 (en) | Storage system with fast snapshot tree search | |
JP4620457B2 (ja) | 複数の同時にアクティブなファイルシステム | |
US8510597B2 (en) | Providing restartable file systems within computing devices | |
US6779001B1 (en) | Transactional file system for realizing atomic update of plural files by transactions | |
CN108701048B (zh) | 数据加载方法及装置 | |
US8856467B2 (en) | Management of metadata in a storage subsystem | |
US20130339569A1 (en) | Storage System and Method for Operating Thereof | |
US20070061540A1 (en) | Data storage system using segmentable virtual volumes | |
US20080172423A1 (en) | Hsm control program, hsm control apparatus, and hsm control method | |
US8990159B2 (en) | Systems and methods for durable database operations in a memory-mapped environment | |
US7761424B2 (en) | Recording notations per file of changed blocks coherent with a draining agent | |
US9335941B1 (en) | Crash consistency | |
US7996370B2 (en) | System restoration apparatus and method for management of dependencies, ordering sensitivities, and database index rebuilds | |
US20230244649A1 (en) | Skip-List Checkpoint Creation | |
US20170010834A1 (en) | Integrated Systems and Methods for the Transactional Management of Main Memory and Data Storage | |
JP2004062473A (ja) | データベース管理方法およびシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111004 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120207 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120406 |
|
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: 20120508 |
|
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: 20120521 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150615 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 |