JP2012069072A - データベース装置 - Google Patents

データベース装置 Download PDF

Info

Publication number
JP2012069072A
JP2012069072A JP2010215618A JP2010215618A JP2012069072A JP 2012069072 A JP2012069072 A JP 2012069072A JP 2010215618 A JP2010215618 A JP 2010215618A JP 2010215618 A JP2010215618 A JP 2010215618A JP 2012069072 A JP2012069072 A JP 2012069072A
Authority
JP
Japan
Prior art keywords
message
processing
processes
graph
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.)
Granted
Application number
JP2010215618A
Other languages
English (en)
Other versions
JP5094938B2 (ja
Inventor
Kiyoshi Nitta
清 新田
Tatsuhiko Himuro
達彦 氷室
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.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan 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 Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2010215618A priority Critical patent/JP5094938B2/ja
Publication of JP2012069072A publication Critical patent/JP2012069072A/ja
Application granted granted Critical
Publication of JP5094938B2 publication Critical patent/JP5094938B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

【課題】構造が頻繁に変化する大規模なグラフにおいて、キャッシュを用いることなく、排他制御を行いつつ効率よく並列処理を行うことができるデータベース装置を提供すること。
【解決手段】データベース装置3は、グラフを構成する要素を示す要素データEの各々に、並列処理を実行可能とする複数の単位プロセスの一を対応させ、当該複数の単位プロセスの一に、それぞれデータベース装置3が備えるメモリ領域22のメモリを割り当て、グラフアプリケーション2からリクエストメッセージを受信したことに応じて、メモリ領域22のメモリを割り当てた複数の単位プロセスとのメッセージ通信のみにより、リクエストメッセージに対応する要素データの書き換えを行うことで排他制御を行い、処理要求メッセージに対応する結果メッセージを取得する。
【選択図】図1

Description

本発明は、逐次内容が変化するグラフを使用するアプリケーションに設けられ、当該グラフを構成する複数の要素の処理を行う並列処理システムにおいて、当該複数の要素をデータベースとし、当該要素をプロセスによって処理するデータベース装置に関する。
近年、アプリケーションやデータの肥大化による処理速度の低下に対して、処理速度の向上が要求されている。これに対し、一般的な処理速度向上の手法として、複数のCPU(Central Processing Unit)による並列処理を行う方法が提案されている。
従来、実行効率を意識したアプリケーションの多くは、C++で作成されていたが、C++では、並列処理の記述が複雑なものとなる。このため、C++により作成されたアプリケーションにおいて、さらなる高速化を目的として並列処理を実現させることは、難易度が高いものであった。更に、C++では、並列化する場合に生成されるプロセスの粒度が大きく、並列処理におけるオーバーヘッドも、高速化を妨げる要因となっていた。
また、並列化を実現させる他の方法として、行列計算を自動的に並列化するFORTRANコンパイラを利用する方法があるが、行列計算を使用する必要があるため、応用範囲が狭いという問題があった。
このような問題に対して、マルチコアを利用して大規模データの並列処理を効率よく行うことができる言語として、例えば、アーラン(Erlang)が開発されている(例えば、特許文献1参照)。アーランでは、細かい粒度のプロセスを多数生成することで、様々な用途に応じて、効率の良いアプリケーションを作成することができる。
特表2003−505758号公報
しかしながら、アーランでは、多数のプロセスの並列処理を行う場合、このプロセスの規模が一定以上になると、大幅な処理の遅延が発生する場合がある。また、アーランでは、構造が頻繁に変化する大規模なグラフに対して、キャッシュを利用してアクセスしようとすると、キャッシュの更新に係るオーバーヘッドが大きくなるといった問題がある。
このような問題は、構造が頻繁に変化する大規模なグラフにおいて、顕著なものとなるので、大規模なグラフを取り扱うアプリケーションにおいてキャッシュを用いることなく効率よく並列処理を行うことができるデータベース装置が求められている。
本発明は、構造が頻繁に変化する大規模なグラフにおいて、キャッシュを用いることなく、排他制御を行いつつ効率よく並列処理を行うことができるデータベース装置を提供することを目的とする。
(1)逐次内容が変化するグラフを取り扱うアプリケーションのために、当該グラフを構成する複数の要素の処理を行う並列処理システムにおいて、データベースを複数のプロセスによって構成するデータベース装置であって、前記グラフを構成する要素を示す要素データの各々に、並列処理を実行可能とする前記複数のプロセスの一を対応させ、当該複数のプロセスの一に、それぞれ前記データベース装置が備えるメモリを割り当てるメモリ割当手段と、前記アプリケーションのプロセスから所定の処理を要求する処理要求メッセージを受信するメッセージ受信手段と、前記処理要求メッセージを受信したことに応じて、前記メモリを割り当てた前記複数のプロセスとのメッセージ通信のみにより、前記処理要求メッセージに対応する前記要素データの書き換えを行うことで排他制御を行い、前記処理要求メッセージに対応する結果メッセージを取得する排他制御手段と、前記アプリケーションのプロセスに、前記結果メッセージを返信するメッセージ返信手段と、を備えるデータベース装置。
(1)のデータベース装置は、メモリ割当手段により、グラフを構成する要素を示す要素データの各々に、並列処理を実行可能とする複数のプロセスの一を対応させ、当該複数のプロセスの一に、それぞれデータベース装置が備えるメモリを割り当て、排他制御手段により、処理要求メッセージを受信したことに応じて、メモリを割り当てた複数のプロセスとのメッセージ通信のみにより、処理要求メッセージに対応する要素データの書き換えを行うことで排他制御を行い、処理要求メッセージに対応する結果メッセージを取得する。
よって、(1)のデータベース装置は、グラフを構成する要素を示す要素データの各々に、並列処理を実行可能とする複数のプロセスの一を対応させ、当該複数のプロセスの一に、それぞれデータベース装置が備えるメモリを割り当てて、メモリを割り当てた複数のプロセスとのメッセージ通信のみにより、グラフに対する排他処理を行うので、アプリケーション側から、排他制御を行うことができる。また、(1)のデータベース装置は、構造が頻繁に変化する大規模なグラフを構成する要素について必要な情報のみ、アプリケーション側から排他制御を行うので、不要な情報に対して排他制御を行うことによる処理の遅延を防止して、全体として並列処理の高速化を実現することができる。
(2)前記排他制御手段は、前記処理要求メッセージを受信したことに応じて、前記複数のプロセスの処理結果を格納するリストを生成し、前記メモリを割り当てた前記複数のプロセスとのメッセージ通信のみにより、前記処理要求メッセージに対応する前記要素データの書き換えを並列に行うことで排他制御を行い、前記複数のプロセスの各々から応答メッセージを取得したことに応じて、前記各々のプロセスの処理結果を前記リストに格納し、前記リストに前記複数のプロセスの処理結果が格納されたことに応じて、前記結果メッセージを生成する(1)に記載のデータベース装置。
(2)のデータベース装置は、排他制御手段により、複数のプロセスの処理結果を格納するリストを生成し、処理要求メッセージに対応する要素データの書き換えを並列に行うことで排他制御を行い、複数のプロセスの各々から応答メッセージを取得したことに応じて、各々のプロセスの処理結果をリストに格納する。よって、(2)のデータベース装置は、不要な情報に対して排他制御を行うとともに、プロセス経由のみで受信した複数のプロセスの処理結果をリストに格納したことに応じて結果メッセージを生成して、当該結果メッセージをアプリケーションのプロセスに提供することができる。
本発明によれば、構造が頻繁に変化する大規模なグラフにおいて、キャッシュを用いることなく、排他制御を行いつつ効率よく並列処理を行うことができるデータベース装置を提供することができる。
本実施形態に係るデータベース装置を備える並列処理システムの概要を示す図である。 本実施形態に係るデータベース装置の構成を示すブロック図である。 本実施形態に係るメモリ割当部の処理を示すコードである。 本実施形態に係る並列メッセージ処理実行部及びメッセージ返信部の処理を示すコード(その1)である。 本実施形態に係る並列メッセージ処理実行部及びメッセージ返信部の処理を示すコード(その2)である。 本実施形態に係るデータベース装置がリクエストメッセージを受信した場合に行う処理の流れを示すフローチャートである。 本実施形態に係るレシーブリストが更新される概念を示す図である。
以下、本実施形態について図を参照しながら説明する。
[機能構成]
図1は、本実施形態に係るデータベース装置3を備える並列処理システム1の概要を示す図である。並列処理システム1は、逐次内容が変化するグラフを取り扱うアプリケーションのために、このグラフを構成する複数の要素の並列処理を行う。この並列処理システム1は、逐次内容が変化するグラフを使用するアプリケーションとして、グラフアプリケーション2と、当該グラフを構成する複数の要素をデータベースとし、当該要素をプロセスによって処理するデータベース装置3とを備える。
ここで、グラフは、要素データEとして、処理内容を示すエッジDと、複数のエッジDの関係を示す処理ノードNとにより構成されており、エッジDとノードNは、逐次内容が変化するものである。
グラフアプリケーション2は、例えば、チャットボット等のリアルタイム対話アプリケーションである。このグラフアプリケーション2は、ユーザから処理要求としてのリクエストを受け付けると、リクエストの実行を制御するリクエストプロセスを生成する。続いて、グラフアプリケーション2は、リクエストプロセスにより、このリクエストに対応する処理要求メッセージとしてのリクエストメッセージをデータベース装置3に送信することで、データベース装置3にリクエストを要求する。
データベース装置3は、グラフの要素データE、すなわち、グラフのエッジD及びノードNに1対1に対応する単位プロセスを割り当て、更にそれぞれの単位プロセスにメモリを割り当てておき、グラフアプリケーション2からリクエストメッセージを受信したことに応じて、管理プロセスと、ワーカープロセス(以下、ワーカープロセスをWPともいう)とを生成する。続いて、データベース装置3は、ワーカープロセスと単位プロセスとのメッセージ通信のみによって要素データEの書き換えを行うことで排他制御を行い、リクエストメッセージに対応する結果メッセージを取得し、この結果メッセージをグラフアプリケーション2に送信する。
このように、並列処理システム1では、予めデータベース装置3がグラフのエッジD及びノードNと1対1に対応する単位プロセスを割り当て、更にそれぞれの単位プロセスにメモリを割り当てて準備しているので、グラフアプリケーション2からリクエストメッセージをデータベース装置3に送信されると、データベース装置3において、この単位プロセスとのメッセージ通信のみによってエッジD及びノードNの書き換えを行うことで排他制御を行い、リクエストメッセージに対応する結果メッセージを生成することができる。そして、並列処理システム1では、データベース装置3から、この結果メッセージをグラフアプリケーション2に送信することで、メッセージ通信のみによってリクエストに対応する処理を行うことができる。
本実施形態は、コンピュータ(データベース装置3)及びその周辺装置に適用される。本実施形態における各部は、コンピュータ及びその周辺装置が備えるハードウェア並びにこのハードウェアを制御するソフトウェアによって構成される。
上記ハードウェアには、制御部10として並列に動作する複数のCPUの他、記憶部20、通信部、表示部及び入力部が含まれる。記憶部20としては、例えば、メモリ(RAM、ROM等)、ハードディスクドライブ(HDD)及び光ディスク(CD、DVD等)ドライブが挙げられる。通信部としては、例えば、各種有線及び無線インターフェース装置が挙げられる。表示部としては、例えば、液晶ディスプレイ、プラズマディスプレイ等の各種ディスプレイが挙げられる。入力部としては、例えば、キーボード及びポインティング・デバイス(マウス、トラッキングボール等)が挙げられる。
上記ソフトウェアには、上記ハードウェアを制御するコンピュータ・プログラムやデータが含まれる。コンピュータ・プログラムやデータは、記憶部20により記憶され、制御部10により適宜実行、参照される。また、コンピュータ・プログラムやデータは、通信ネットワークを介して配布することも可能であり、CD−ROM等のコンピュータ可読媒体に記録して配布することも可能である。
続いて、図1及び図2を参照しながら、データベース装置3の構成について説明する。
図2は、本実施形態に係るデータベース装置3の構成を示すブロック図である。
データベース装置3の制御部10は、メモリ割当部11(メモリ割当手段)と、メッセージ受信部12(メッセージ受信手段)と、メッセージ返信部13(メッセージ返信手段)と、並列メッセージ処理実行部25と、を備える。また、データベース装置3の記憶部20は、グラフデータ記憶部21と、メモリ領域22と、を備える。
メモリ割当部11は、グラフデータ記憶部21に記憶されているグラフデータから、このグラフを構成する要素(エッジD及びノードN)を示す要素データEの各々に、並列処理を実行可能とする複数のプロセスの一を対応させ、この複数のプロセスの一に、それぞれメモリを割り当てる。
具体的には、グラフデータ記憶部21には、グラフアプリケーション2で使用するグラフデータが記憶されており、メモリ割当部11は、予め、このグラフデータを構成する要素(エッジD及びノードN)を示す要素データEの各々に、並列処理を実行可能とする単位プロセスの一を対応させて、単位プロセス群23として、単位プロセス群23の一に、それぞれメモリ領域22のメモリを割り当てる。
メッセージ受信部12は、アプリケーションの実行を制御するプロセス(リクエストプロセス)から所定の処理を要求するリクエストメッセージを受信する。リクエストメッセージには、グラフデータにおいて使用される要素データの情報、すなわち、排他制御範囲の指定情報を含んでいる。
並列メッセージ処理実行部25は、メモリ割当部11によりメモリ領域22のメモリを割り当てられたグラフデータに対応する単位プロセス群23、並びに、更にこれらに対応するワーカープロセス及び管理プロセス(後述)で構成する管理プロセス群24を含んで記憶部20のメモリ領域に実装され、排他処理を実行する。より具体的には、リクエストメッセージを受信したことに応じて、メモリを割り当てた複数のプロセスとのメッセージ通信のみにより、リクエストメッセージに対応する要素データの書き換えを行うことで排他制御を行い、リクエストメッセージに対応する結果メッセージを取得する。
具体的には、並列メッセージ処理実行部25は、メッセージ受信部12によりリクエストメッセージを受信したことに応じて、メモリ領域22に、管理プロセス群24として、管理プロセス及び複数のワーカープロセスを生成するとともに、複数のワーカープロセスの処理結果を格納するためのレシーブリストを生成する。
すなわち、並列メッセージ処理実行部25は、リクエストメッセージに含まれる排他制御範囲の指定情報に基づいて、グラフデータにおいて使用される要素データの個数分のワーカープロセスを生成するとともに、ワーカープロセスそれぞれに対応する格納領域を有するレシーブリストを生成する。続いて、並列メッセージ処理実行部25は、このワーカープロセスそれぞれを、使用される要素データに対応している単位プロセスに関連付ける。続いて、並列メッセージ処理実行部25(管理プロセス)は、ワーカープロセスそれぞれに、処理要求メッセージを単位プロセスに対して並列に送信させる。
すると、単位プロセスそれぞれは、処理要求メッセージを受信したことに応じて、処理要求メッセージに対応する処理を並列に行うとともに、グラフデータを構成する要素データEに基づいて応答メッセージを生成し、この応答メッセージをワーカープロセスに送信する。
続いて、並列メッセージ処理実行部25(ワーカープロセス)が、複数の単位プロセスそれぞれから応答メッセージを受信したことに応じて、並列メッセージ処理実行部25(管理プロセス)は、複数のワーカープロセスからの応答メッセージに基づいて、レシーブリストにその処理結果を格納し、このレシーブリストに基づいて、リクエストプロセスに返信するための結果メッセージを生成して、後述のメッセージ返信部13に受け渡す。
また、並列メッセージ処理実行部25は、結果メッセージをメッセージ返信部13に受け渡した後、管理プロセス及びワーカープロセスを消去する。
メッセージ返信部13は、グラフアプリケーション2のリクエストプロセスに、並列メッセージ処理実行部25により生成された結果メッセージを返信する。
図3及び図4に、並行処理指向のプログラミング言語であるErlangにより記述されたコードを用いて、詳細な処理について説明する。
図3は、本実施形態に係るメモリ割当部11の処理を示すコードである。図3に示されるコードは、グラフを構成する全要素をメモリに展開する処理を行う。図3では、コードの説明を簡潔に行うため、コードの左側に対して、行番号を付している。
図3の1行目に示されるメイン関数としてのmain()は、本実施形態のメモリ割当部11の処理に相当する。
3行目に示される{R,_}=xmerl_scan:file(Filename)では、XML処理のライブラリパッケージであるxmerl_scanを使用するための準備処理を行う。つまり、変数Rに対して、2行目で指定された外部のXMLへのハンドラが格納され、メモリの読み込みが実行される。
5行目に示されるParsedata=parse(R)では、上述のXML処理のライブラリパッケージであるxmerl_scanを用いて、XMLのデータをパーズ(構文解析)し、Erlangのデータ構造上に、DOM(Document Object Model)ツリーを構成する。このようにして、DOM形式のメモリ展開が行われ、変数Parsedataに対して、DOMツリーが格納される。
7行目に示されるコードでは、DOMツリーのroot直下の要素を逐次的に処理し、グラフデータに対応する複数のプロセスを順次起動する。このようにすることで、グラフの要素データEの各々に対応し、並列処理を実行可能とする複数のプロセスの一に、それぞれメモリが割り当てられる。なお、このプロセスの起動は、7行目に示されるコードにおける、relation_element.erlのstart/1という関数により実行される。
図4及び図5は、並列メッセージ処理実行部25及びメッセージ返信部13の処理を示すコードである。図4及び図5では、コードの説明を簡潔に行うため、コードの左側に対して、行番号を付している。
図4の1行目に示される関数fetch_relation()は、本実施形態の管理プロセスに相当する。すなわち、並列メッセージ処理実行部25は、この関数fetch_relation()を実行することで、管理プロセスを生成し、この管理プロセス内でワーカープロセスを生成して並列処理を実行し、結果メッセージを生成する。
2行目に示されるrecivelist:create(EidList)は、並列処理を行う複数のワーカープロセスの処理結果を格納するリストを生成して初期化するものである。この際、当該並列処理を行う複数のワーカープロセスの数に応じたリストサイズを設定する。すなわち、図4に示されるコードでは、予め、応答メッセージを格納するメモリ領域を確保・初期化しておき、このメモリ領域に対して、後述で説明するコードにより、処理結果が格納される。
3行目に示されるlock_global()は、排他制御を行う関数であり、4行目以降に示される処理に係るデータの排他制御を行う。lock_global()は、具体的には、23行目から30行目までの処理を行う。
7行目から14行目に示される関数であるlists:map()は、関数と、リストとを引数とする関数であり、この関数を、リストを構成する複数の要素に適用して得られた結果を返す関数、すなわち、高階関数である。図4では、関数として、spawn()を使用して、リストとして、リクエストメッセージに含まれる排他制御範囲の指定情報を示すEidListを使用している。
spawn()は、関数を引数とし、並行プロセスを生成する関数である。図4では、このspawn()により、リクエストメッセージにおいて指定されたグラフの要素データEに対応する単位プロセスに対してメッセージを送信するワーカープロセスを生成している。
つまり、管理プロセス(fetch_relation()の実行プロセス)は、7行目から14行目に示されるコードにより、単位プロセスと1対1に対応するワーカープロセスを生成し、このワーカープロセスにより、排他制御範囲の指定情報を含むEidListに基づく処理をメッセージとして単位プロセスに送信することで、各要素に対する処理の実行と、処理結果を示す応答メッセージの返信とを実行させる。
また、16行目に示される関数であるwait_fetch_relation()は、ワーカープロセスの結果を一つずつ並列に受信してリストに格納し、リストサイズを一つデクリメントする(図5の1行目から15行目参照)。つまり、図5の4行目に示されるように、wait_fetch_relation()関数の中で、receivelistモジュールの関数change(ResEid,ResEid)が呼び出され、この中で、ワーカープロセスの結果を一つずつ並列に受信してリストに格納し、処理完了の判断に使用されるリストサイズを一つデクリメントする(図5の17行目から21行目)。なお、結果がない(unsatisfy)場合、図5の6行目に示されるように、wait_fetch_relation()関数の中で、receivelistモジュールの関数change(ResEid,unsatisfy)が呼び出され、この中で、当該ワーカープロセスの結果がない旨をリストに格納し、処理完了の判断に使用されるリストサイズを一つデクリメントする(図5の17行目から21行目)。
続いて、receivelistモジュールの関数is_finished()において、リストサイズが0であるか否かを判定する(図5の10行目及び38行目から44行目)。0である場合、wait_fetch_relation()の処理を終了し、0ではない場合には、再びwait_fetch_relation()を実行し、ワーカープロセスの結果を一つずつ並列に受信する。
その後、17行目から19行目に示される処理により、終了処理が行われる。例えば、18行目に示されるRecievelist=get(receivelist)では、レシーブリストの更新が行われ、その後、19行目に示されるrecievelist:clear()において、recievelist、すなわち、応答メッセージを格納しているメモリ領域の消去が行われる。
また、20行目に示されるunlock_global()は、3行目で開始された排他制御の解除を行う関数である。unlock_global()は、具体的には、32行目から39行目までの処理を行う。
[処理フロー]
図6は、本実施形態に係るデータベース装置3がリクエストメッセージを受信した場合に行う処理の流れを示すフローチャートである。
ステップS1では、制御部10(メモリ割当部11)は、グラフデータ記憶部21に記憶されているグラフデータから、このグラフを構成する要素(エッジD及びノードN)を示す要素データEに、並列処理を実行可能とする単位プロセスを対応させ、この複数の単位プロセスにメモリを割り当てる。
ステップS2では、制御部10は、メッセージ受信部12により、グラフアプリケーション2から、リクエストメッセージを受信したか否かを判定する。制御部10は、この判定がYESの場合、ステップS3に処理を移し、この判定がNOの場合、ステップS2を再び実行する。
ステップS3では、制御部10(並列メッセージ処理実行部25)は、メッセージ受信部12によりリクエストメッセージを受信したことに応じて、管理プロセス群24として、管理プロセス及び複数のワーカープロセスを生成するとともに、レシーブリストを生成する。
ステップS4では、制御部10(並列メッセージ処理実行部25)は、管理プロセスにより、ワーカープロセスと単位プロセスとのメッセージの交換を行い、単位プロセスに処理を実行させてエッジD及びノードNの書き換えを行うことにより排他制御を行い、単位プロセスごとに応答メッセージを受信する。
ステップS5では、制御部10(並列メッセージ処理実行部25)は、単位プロセスごとの応答メッセージに基づいて、レシーブリストを更新することにより、グラフアプリケーション2に返信する結果メッセージを生成する。
図7は、本実施形態に係るレシーブリストが更新される概念を示す図である。制御部10は、複数の単位プロセスによる処理を並列で実行し、この単位プロセスに対応するワーカープロセスから応答メッセージ(処理結果)を受信することにより、この応答メッセージを処理結果として、ワーカープロセスの各々に対応するレシーブリストの格納領域に格納する。また、制御部10は、ワーカープロセスから応答メッセージを受信したことに応じて、処理完了の判断に使用されるリストサイズを一つデクリメントし、リストサイズが0になるまで、ワーカープロセスからの応答メッセージの受信を続ける。そして、制御部10は、全てのワーカープロセスにおける、応答メッセージの受信に係る処理と、このレシーブリストを構成する格納領域に対する処理結果の格納に係る処理が終了した後、レシーブリストに基づいて結果メッセージを生成する。
図6に戻り、ステップS6では、制御部10(メッセージ返信部13)は、ステップS5において生成された結果メッセージをグラフアプリケーション(リクエストプロセス)に返信する。
ステップS7では、制御部10(並列メッセージ処理実行部25)は、ステップS3において生成された管理プロセス、複数のワーカープロセス及びレシーブリストを消去する。
ステップS8では、制御部10は、データベース装置3のユーザから入力部を介して終了操作を受け付けたか否かを判定する。制御部10は、この判定がYESの場合、処理を終了し、この判定がNOの場合、処理をステップS2に移す。
以上のように、データベース装置3は、メモリ割当部11により、グラフを構成する要素を示す要素データEの各々に、並列処理を実行可能とする複数の単位プロセスの一を対応させ、当該複数の単位プロセスの一に、それぞれデータベース装置3が備えるメモリを割り当て、並列メッセージ処理実行部25により、グラフアプリケーション2からリクエストメッセージを受信したことに応じて、メモリを割り当てた複数の単位プロセスとのメッセージ通信のみにより、リクエストメッセージに対応する要素データの書き換えを行うことで排他制御を行い、処理要求メッセージに対応する結果メッセージを取得する。
よって、データベース装置3は、グラフを構成する要素を示す要素データEの各々に、並列処理を実行可能とする複数の単位プロセスの一を対応させ、当該複数の単位プロセスの一に、それぞれデータベース装置3が備えるメモリを割り当てて、メモリを割り当てた複数の単位プロセスとのメッセージ通信のみにより、グラフに対する排他処理を行うので、アプリケーション側から、排他制御を行うことができる。また、データベース装置3は、構造が頻繁に変化する大規模なグラフを構成する要素について必要な情報のみ、アプリケーション側から排他制御を行うので、不要な情報に対して排他制御を行うことによる処理の遅延を防止して、全体として並列処理の高速化を実現することができる。
また、データベース装置3は、並列メッセージ処理実行部25により、処理要求メッセージに対応する複数のワーカープロセスの各々の処理結果を格納するリストを生成し、処理要求メッセージに対応する要素データの書き換えを並列に行うことで排他制御を行い、応答メッセージを取得したことに応じて、当該処理結果をリストに格納する。よって、データベース装置3は、不要な情報に対して排他制御を行うとともに、プロセス経由のみで受信した応答メッセージをリストに格納したことに応じて結果メッセージを生成して、当該結果メッセージをアプリケーションのプロセスに提供することができる。
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
1 並列処理システム
2 グラフアプリケーション
3 データベース装置
10 制御部
11 メモリ割当部
12 メッセージ受信部
13 メッセージ返信部
20 記憶部
21 グラフデータ記憶部
22 メモリ領域
23 単位プロセス群
24 管理プロセス群
25 並列メッセージ処理実行部
E 要素データ

Claims (2)

  1. 逐次内容が変化するグラフを取り扱うアプリケーションのために、当該グラフを構成する複数の要素の処理を行う並列処理システムにおいて、データベースを複数のプロセスによって構成するデータベース装置であって、
    前記グラフを構成する要素を示す要素データの各々に、並列処理を実行可能とする前記複数のプロセスの一を対応させ、当該複数のプロセスの一に、それぞれ前記データベース装置が備えるメモリを割り当てるメモリ割当手段と、
    前記アプリケーションのプロセスから所定の処理を要求する処理要求メッセージを受信するメッセージ受信手段と、
    前記処理要求メッセージを受信したことに応じて、前記メモリを割り当てた前記複数のプロセスとのメッセージ通信のみにより、前記処理要求メッセージに対応する前記要素データの書き換えを行うことで排他制御を行い、前記処理要求メッセージに対応する結果メッセージを取得する排他制御手段と、
    前記アプリケーションのプロセスに、前記結果メッセージを返信するメッセージ返信手段と、を備えるデータベース装置。
  2. 前記排他制御手段は、前記処理要求メッセージを受信したことに応じて、前記複数のプロセスの処理結果を格納するリストを生成し、前記メモリを割り当てた前記複数のプロセスとのメッセージ通信のみにより、前記処理要求メッセージに対応する前記要素データの書き換えを並列に行うことで排他制御を行い、前記複数のプロセスの各々から応答メッセージを取得したことに応じて、前記各々のプロセスの処理結果を前記リストに格納し、前記リストに前記複数のプロセスの処理結果が格納されたことに応じて、前記結果メッセージを生成する請求項1に記載のデータベース装置。
JP2010215618A 2010-09-27 2010-09-27 データベース装置 Active JP5094938B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010215618A JP5094938B2 (ja) 2010-09-27 2010-09-27 データベース装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010215618A JP5094938B2 (ja) 2010-09-27 2010-09-27 データベース装置

Publications (2)

Publication Number Publication Date
JP2012069072A true JP2012069072A (ja) 2012-04-05
JP5094938B2 JP5094938B2 (ja) 2012-12-12

Family

ID=46166222

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010215618A Active JP5094938B2 (ja) 2010-09-27 2010-09-27 データベース装置

Country Status (1)

Country Link
JP (1) JP5094938B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002501649A (ja) * 1997-06-30 2002-01-15 サン・マイクロシステムズ・インコーポレーテッド リンク済みリストのデータ構造を管理する方法および装置
JP2010170173A (ja) * 2009-01-20 2010-08-05 Yahoo Japan Corp コンテンツ提示装置、コンテンツ提示方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002501649A (ja) * 1997-06-30 2002-01-15 サン・マイクロシステムズ・インコーポレーテッド リンク済みリストのデータ構造を管理する方法および装置
JP2010170173A (ja) * 2009-01-20 2010-08-05 Yahoo Japan Corp コンテンツ提示装置、コンテンツ提示方法及びプログラム

Also Published As

Publication number Publication date
JP5094938B2 (ja) 2012-12-12

Similar Documents

Publication Publication Date Title
EP3332309B1 (en) Method and apparatus for facilitating a software update process over a network
JP2019517043A5 (ja)
US9491238B2 (en) Rapid client-side component processing based on component relationships
CN111782414B (zh) 一种延时消息处理方法及系统
KR101332840B1 (ko) 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법
CN109992407B (zh) 一种yarn集群gpu资源调度方法、装置和介质
CN109614227B (zh) 任务资源调配方法、装置、电子设备及计算机可读介质
CN103718155A (zh) 运行时系统
JP6379654B2 (ja) 処理実行プログラム、処理実行方法、及び情報処理装置
CN107506247A (zh) 一种基于异步回调的任务处理方法与设备
Rodriguez et al. Scientific workflow management system for clouds
CN112631751A (zh) 任务调度方法、装置、计算机设备及存储介质
CN106875262B (zh) 用于订单处理的方法、装置和计算机可读存储介质
US20110276983A1 (en) Automatic return to synchronization context for asynchronous computations
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
CN112235132A (zh) 动态配置服务的方法、装置、介质以及服务器
JP5094938B2 (ja) データベース装置
US11307852B1 (en) Automated generation of dependency graph based on input and output requirements of information
US8572585B2 (en) Using compiler-generated tasks to represent programming elements
CN112241324B (zh) 内存管理方法及装置
CN114675954A (zh) 任务调度方法及装置
JP5045576B2 (ja) マルチプロセッサシステム及びプログラム実行方法
EP1989618B1 (en) Software pipelining
JP5950288B2 (ja) プログラミング言語の処理系を実現する装置及び方法
JP6349837B2 (ja) スケジューラ装置及びそのスケジューリング方法、演算処理システム、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120829

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5094938

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350