JP5967628B2 - クエリを処理する装置及び方法 - Google Patents
クエリを処理する装置及び方法 Download PDFInfo
- Publication number
- JP5967628B2 JP5967628B2 JP2014224424A JP2014224424A JP5967628B2 JP 5967628 B2 JP5967628 B2 JP 5967628B2 JP 2014224424 A JP2014224424 A JP 2014224424A JP 2014224424 A JP2014224424 A JP 2014224424A JP 5967628 B2 JP5967628 B2 JP 5967628B2
- Authority
- JP
- Japan
- Prior art keywords
- query
- data element
- transaction
- stored
- execution unit
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
1つのエントリに対する原子的な更新のみを保障するNoSQLデータベースにおいても、複数のエントリに対する原子的な更新を行うトランザクションは実現可能である。「実行中」、「コミット済み」、「アボート」等のトランザクション状態と、コミットされていない又はコミットされているがコミット済みデータとして保存されていないデータ(以下、「インフライトデータ」という)とを、NoSQLデータベース内に保存することにより、既存のNoSQLデータベースを変更せずに、トランザクションは実現できる。
そこで、本実施の形態では、クエリを実行した時刻で最新のデータ、又は、その時刻以降に最新となったデータを、クエリ結果として返す。そのために、原子的な更新が可能なエントリごとにコミット済みデータ(Committed Data)とインフライトデータ(In-Flight Data)とを保持し、インフライトデータ、コミット済みデータ、クエリ実行中にコミットされ保存されたデータをこの順に対象としてクエリを実行する。以下、これらの各データを対象としたクエリの実行を、第1フェーズ、第2フェーズ、第3フェーズとし、図1(a)〜(f)と略同様の例を用いて説明する。
図5は、本実施の形態におけるデータベース装置10の機能構成例を示した図である。図示するように、このデータベース装置10は、クエリ処理部20と、データベース部30とを含む。そして、クエリ処理部20は、クエリ受付部21と、第1クエリ実行部22と、第2クエリ実行部23と、第3クエリ実行部24と、キー記憶部25と、クエリ結果記憶部26と、クエリ結果出力部27とを含む。また、データベース部30は、データ記憶部31と、トランザクション状態記憶部32とを含む。
図6は、本実施の形態におけるクエリ処理部20の第1フェーズの動作例を示したフローチャートである。クエリ処理部20では、上述したように、第1クエリ実行部22が第1フェーズの動作を行う。尚、この動作に先立ち、クエリ受付部21が、例えばクライアントが発行したクエリを受け付けるものとする。図2(a)〜(f)の例で言えば、クエリ{value1:{$gt:0}}を受け付ける。そして、クエリ受付部21が、受け付けたクエリを第1クエリ実行部22に受け渡すことにより、この動作は開始する。
このように、本実施の形態では、インフライトデータ、コミット済みデータ、クエリ実行中にコミット済みデータとして保存されたデータをこの順に対象としてクエリを実行するようにした。これにより、例えばMongoDBにトランザクション機能を追加した場合でも、提供されるクエリ機能をトランザクショナルに実現することが可能になる。
図9は、本実施の形態におけるデータベース装置10のハードウェア構成例を示した図である。図示するように、データベース装置10は、演算手段であるCPU(Central Processing Unit)10aと、M/B(マザーボード)チップセット10bを介してCPU10aに接続されたメインメモリ10cと、同じくM/Bチップセット10bを介してCPU10aに接続された表示機構10dとを備える。また、M/Bチップセット10bには、ブリッジ回路10eを介して、ネットワークインターフェイス10fと、磁気ディスク装置(HDD)10gと、音声機構10hと、キーボード/マウス10iと、光学ドライブ10jとが接続されている。
Claims (13)
- NoSQL型のデータベースに対するクエリを処理する装置であって、
前記データベースにおけるコミットされて保存された複数の保存データ要素と、当該複数の保存データ要素の更新のための、コミットされていない又はコミットされたが保存されていない複数の未保存データ要素とを記憶する記憶部と、
前記複数の未保存データ要素に対して、前記クエリを実行する第1のクエリ実行部と、
前記第1のクエリ実行部により前記クエリが実行された後に、前記複数の保存データ要素に対して、前記クエリを実行する第2のクエリ実行部と、
前記第2のクエリ実行部により前記クエリが実行された後に、前記第2のクエリ実行部による前記クエリの実行中に保存された少なくとも1つの保存データ要素に対して、前記クエリを実行する第3のクエリ実行部と
を含み、
前記第1のクエリ実行部は、前記複数の未保存データ要素のうちの前記クエリにより抽出された特定の未保存データ要素を前記クエリの結果に含めるかどうかを、当該特定の未保存データ要素による更新に関するトランザクションの状態に基づいて判定し、
前記第2のクエリ実行部は、前記複数の保存データ要素のうちの前記クエリにより抽出された特定の保存データ要素を前記クエリの結果に含めるかどうかを、当該特定の保存データ要素の更新に関するトランザクションの状態に基づいて判定する、装置。 - 前記第1のクエリ実行部は、
前記トランザクションが前記クエリを実行している場合は、前記特定の未保存データ要素を前記クエリの結果に含め、
前記トランザクションが前記クエリを実行しておらず、当該トランザクションの状態がコミット済みである場合は、前記特定の未保存データ要素で、前記複数の保存データ要素のうちの当該特定の未保存データ要素による更新の対象である保存データ要素を置き換える、請求項1の装置。 - 前記第2のクエリ実行部は、
前記特定の保存データ要素の更新のための未保存データ要素が記憶されていない場合、前記特定の保存データ要素の更新のための特定の未保存データ要素が記憶されており、前記トランザクションの状態がアボートである場合、及び、前記特定の保存データ要素の更新のための特定の未保存データ要素が記憶されており、前記トランザクションの状態が実行中であり、前記トランザクションが前記クエリを実行していない場合は、当該特定の保存データ要素を前記クエリの結果に含め、
前記特定の保存データ要素の更新のための特定の未保存データ要素が記憶されており、前記トランザクションの状態がコミット済みである場合は、当該特定の未保存データ要素で当該特定の保存データ要素を置き換える、請求項1の装置。 - 前記第3のクエリ実行部は、前記少なくとも1つの保存データ要素のうちの前記クエリにより抽出された特定の保存データ要素を前記クエリの結果に含めるかどうかを、当該特定の保存データ要素の更新に関するトランザクションの状態に基づいて判定する、請求項1の装置。
- 前記第3のクエリ実行部は、
前記特定の保存データ要素の更新のための未保存データ要素が記憶されていない場合、前記特定の保存データ要素の更新のための特定の未保存データ要素が記憶されており、前記トランザクションの状態がアボートである場合、及び、前記特定の保存データ要素の更新のための特定の未保存データ要素が記憶されており、前記トランザクションの状態が実行中である場合は、当該特定の保存データ要素を前記クエリの結果に含め、
前記特定の保存データ要素の更新のための特定の未保存データ要素が記憶されており、前記トランザクションの状態がコミット済みである場合は、当該特定の未保存データ要素で当該特定の保存データ要素を置き換えた後、前記第3のクエリ実行部の処理を再実行する、請求項4の装置。 - 前記記憶部は、前記複数の未保存データ要素の各未保存データ要素に関連付けて、当該各未保存データ要素による更新を実行したトランザクションを識別するトランザクションIDを記憶する、請求項1乃至請求項5の何れかの装置。
- 前記記憶部は、前記複数の保存データ要素の各保存データ要素、前記各未保存データ要素、及び前記トランザクションIDを1つのエントリとして記憶する、請求項6の装置。
- 前記記憶部は、前記トランザクションの状態を示すトランザクション状態情報を前記トランザクションIDに関連付けて記憶する、請求項7の装置。
- 前記第1のクエリ実行部、前記第2のクエリ実行部、及び前記第3のクエリ実行部は、それぞれ、前記クエリにより抽出されたデータ要素を含む前記エントリ中の前記トランザクションIDにより前記トランザクション状態情報を参照しながら処理を実行する、請求項8の装置。
- 前記第2のクエリ実行部は、前記クエリにより抽出された保存データ要素に前記エントリ中で付随する未保存データ要素がコミット済みのトランザクションにより更新されていた場合は、当該未保存データ要素で当該保存データ要素を置き換えて、当該エントリに関連するキーを保存し、
前記第3のクエリ実行部は、前記キーを用いて前記クエリを実行する、請求項9の装置。 - NoSQL型のデータベースに対するクエリを処理する装置であって、
前記データベースにおけるコミットされて保存された複数の保存データ要素と、当該複数の保存データ要素の更新のための、コミットされていない又はコミットされたが保存されていない複数の未保存データ要素と、当該複数の保存データ要素の当該複数の未保存データ要素による更新に関する複数のトランザクションを識別する複数の識別情報とを対応付けて記憶する記憶部と、
前記複数の未保存データ要素に対して、前記クエリを実行し、当該複数の未保存データ要素のうちの前記クエリにより抽出された特定の未保存データ要素を、前記複数の識別情報のうちの当該特定の未保存データ要素と対応付けて記憶された識別情報により識別されるトランザクションの状態が所定の条件を満たす場合に、前記クエリの結果に含める第1のクエリ実行部と、
前記第1のクエリ実行部により前記クエリが実行された後に、前記複数の保存データ要素に対して、前記クエリを実行し、当該複数の保存データ要素のうちの前記クエリにより抽出された特定の保存データ要素を、前記複数の識別情報のうちの当該特定の保存データ要素と対応付けて記憶された識別情報により識別されるトランザクションの状態が所定の条件を満たす場合に、前記クエリの結果に含める第2のクエリ実行部と、
前記第2のクエリ実行部により前記クエリが実行された後に、前記第2のクエリ実行部による前記クエリの実行中に保存された少なくとも1つの保存データ要素に対して、前記クエリを実行し、当該少なくとも1つの保存データ要素のうちの前記クエリにより抽出された特定の保存データ要素を、前記複数の識別情報のうちの当該特定の保存データ要素と対応付けて記憶された識別情報により識別されるトランザクションの状態が所定の条件を満たす場合に、前記クエリの結果に含める第3のクエリ実行部と
を含む、装置。 - NoSQL型のデータベースに対するクエリを処理する方法であって、
前記データベースにおけるコミットされて保存された複数の保存データ要素と、当該複数の保存データ要素の更新のための、コミットされていない又はコミットされたが保存されていない複数の未保存データ要素とを記憶する記憶部を含み、
前記複数の未保存データ要素に対して、前記クエリを実行する第1のステップと、
前記第1のステップで前記クエリが実行された後に、前記複数の保存データ要素に対して、前記クエリを実行する第2のステップと、
前記第2のステップで前記クエリが実行された後に、前記第2のステップでの前記クエリの実行中に保存された少なくとも1つの保存データ要素に対して、前記クエリを実行する第3のステップと
を含み、
前記第1のステップでは、前記複数の未保存データ要素のうちの前記クエリにより抽出された特定の未保存データ要素を前記クエリの結果に含めるかどうかを、当該特定の未保存データ要素による更新に関するトランザクションの状態に基づいて判定し、
前記第2のステップでは、前記複数の保存データ要素のうちの前記クエリにより抽出された特定の保存データ要素を前記クエリの結果に含めるかどうかを、当該特定の保存データ要素の更新に関するトランザクションの状態に基づいて判定する、方法。 - NoSQL型のデータベースに対するクエリを処理する装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
前記データベースにおけるコミットされて保存された複数の保存データ要素と、当該複数の保存データ要素の更新のための、コミットされていない又はコミットされたが保存されていない複数の未保存データ要素とを記憶する記憶部と、
前記複数の未保存データ要素に対して、前記クエリを実行する第1のクエリ実行部と、
前記第1のクエリ実行部により前記クエリが実行された後に、前記複数の保存データ要素に対して、前記クエリを実行する第2のクエリ実行部と、
前記第2のクエリ実行部により前記クエリが実行された後に、前記第2のクエリ実行部による前記クエリの実行中に保存された少なくとも1つの保存データ要素に対して、前記クエリを実行する第3のクエリ実行部と
して機能させ、
前記第1のクエリ実行部は、前記複数の未保存データ要素のうちの前記クエリにより抽出された特定の未保存データ要素を前記クエリの結果に含めるかどうかを、当該特定の未保存データ要素による更新に関するトランザクションの状態に基づいて判定し、
前記第2のクエリ実行部は、前記複数の保存データ要素のうちの前記クエリにより抽出された特定の保存データ要素を前記クエリの結果に含めるかどうかを、当該特定の保存データ要素の更新に関するトランザクションの状態に基づいて判定する、プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014224424A JP5967628B2 (ja) | 2014-11-04 | 2014-11-04 | クエリを処理する装置及び方法 |
US14/931,760 US10120894B2 (en) | 2014-11-04 | 2015-11-03 | Apparatus and method for processing a query |
US15/377,546 US10002158B2 (en) | 2014-11-04 | 2016-12-13 | Apparatus and method for processing a query |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014224424A JP5967628B2 (ja) | 2014-11-04 | 2014-11-04 | クエリを処理する装置及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016091264A JP2016091264A (ja) | 2016-05-23 |
JP5967628B2 true JP5967628B2 (ja) | 2016-08-10 |
Family
ID=55852884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014224424A Expired - Fee Related JP5967628B2 (ja) | 2014-11-04 | 2014-11-04 | クエリを処理する装置及び方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10120894B2 (ja) |
JP (1) | JP5967628B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10002158B2 (en) | 2014-11-04 | 2018-06-19 | International Business Machines Corporation | Apparatus and method for processing a query |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6536472B2 (ja) | 2016-04-28 | 2019-07-03 | 株式会社デンソー | ソレノイド |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05289921A (ja) * | 1992-04-14 | 1993-11-05 | Hitachi Ltd | データベース管理方法および装置 |
JP4287900B2 (ja) | 2001-03-19 | 2009-07-01 | 株式会社リコー | 書き込み遅延データベース管理システム、及びプログラム |
US7689612B2 (en) * | 2007-04-19 | 2010-03-30 | Sap Ag | Handling of queries of transient and persistent data |
CN102754083B (zh) | 2010-02-15 | 2015-08-05 | 东芝解决方案株式会社 | 数据库管理系统 |
JP2013033345A (ja) | 2011-08-01 | 2013-02-14 | Internatl Business Mach Corp <Ibm> | トランザクション処理システム、方法及びプログラム |
JP5967628B2 (ja) | 2014-11-04 | 2016-08-10 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | クエリを処理する装置及び方法 |
-
2014
- 2014-11-04 JP JP2014224424A patent/JP5967628B2/ja not_active Expired - Fee Related
-
2015
- 2015-11-03 US US14/931,760 patent/US10120894B2/en not_active Expired - Fee Related
-
2016
- 2016-12-13 US US15/377,546 patent/US10002158B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10002158B2 (en) | 2014-11-04 | 2018-06-19 | International Business Machines Corporation | Apparatus and method for processing a query |
US10120894B2 (en) | 2014-11-04 | 2018-11-06 | International Business Machines Corporation | Apparatus and method for processing a query |
Also Published As
Publication number | Publication date |
---|---|
JP2016091264A (ja) | 2016-05-23 |
US10002158B2 (en) | 2018-06-19 |
US20170091261A1 (en) | 2017-03-30 |
US20160125019A1 (en) | 2016-05-05 |
US10120894B2 (en) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9720992B2 (en) | DML replication with logical log shipping | |
US9336262B2 (en) | Accelerated transactions with precommit-time early lock release | |
US9952940B2 (en) | Method of operating a shared nothing cluster system | |
US9652492B2 (en) | Out-of-order execution of strictly-ordered transactional workloads | |
CN104598459A (zh) | 数据库处理、数据访问方法及系统 | |
US9998544B2 (en) | Synchronization testing of active clustered servers | |
US11132376B2 (en) | System and method for management of a database system | |
JP5772458B2 (ja) | データ管理プログラム、ノード、および分散データベースシステム | |
US9916360B2 (en) | Joining operations in document oriented databases | |
CN109213691B (zh) | 用于缓存管理的方法和设备 | |
JP5967628B2 (ja) | クエリを処理する装置及び方法 | |
CN110955719B (zh) | 一种数据存取处理设备、系统和方法 | |
US9390131B1 (en) | Executing queries subject to different consistency requirements | |
US11144574B2 (en) | System and method for managing database | |
JP2008146264A (ja) | サマリーテーブルをリフレッシュするための装置、方法、及びプログラム | |
CN108959548B (zh) | 业务请求的处理方法及装置 | |
JP2010152435A (ja) | 情報処理装置及び情報処理方法及びプログラム | |
US20200249876A1 (en) | System and method for data storage management | |
JPWO2014097475A1 (ja) | 情報処理方法、情報処理装置、及び、プログラム | |
US20150134676A1 (en) | Amorphous data query formulation | |
JP6398786B2 (ja) | データベースシステム、データベースサーバ、データベースサーバプログラム、データベースクライアント及びデータベースクライアントプログラム | |
US11741097B2 (en) | Tree structure data processing system, tree structure data processing method, tree structure data processing device, and tree structure data processing program | |
JP2017054207A (ja) | データベース制御プログラム、データベース制御方法及びデータベース制御装置 | |
JP2006302136A (ja) | 情報検索依頼装置 | |
JP2011043865A (ja) | データ処理装置及びデータ処理方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20160406 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160426 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160511 |
|
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: 20160607 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20160607 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160628 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5967628 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |