WO2014188477A1 - 計算機システム、記録媒体及びデータ検索方法 - Google Patents

計算機システム、記録媒体及びデータ検索方法 Download PDF

Info

Publication number
WO2014188477A1
WO2014188477A1 PCT/JP2013/063887 JP2013063887W WO2014188477A1 WO 2014188477 A1 WO2014188477 A1 WO 2014188477A1 JP 2013063887 W JP2013063887 W JP 2013063887W WO 2014188477 A1 WO2014188477 A1 WO 2014188477A1
Authority
WO
WIPO (PCT)
Prior art keywords
search
range
computer
worker
graph
Prior art date
Application number
PCT/JP2013/063887
Other languages
English (en)
French (fr)
Inventor
千代 英一郎
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2013/063887 priority Critical patent/WO2014188477A1/ja
Publication of WO2014188477A1 publication Critical patent/WO2014188477A1/ja

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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Definitions

  • the present invention relates to a computer system, a recording medium, and a data search method, and more particularly to distributed processing of graph structure data search.
  • RDF Resource Description Framework
  • W3C World Wide Web Consortium
  • FIG. 11A shows an example of a graph represented by RDF data. This example shows information about a university organization. Of the nodes, u1 and u2 represent universities, d1 to d4 represent faculties, and p1 to p5 represent faculty members. Also, the labeled edge connecting the nodes represents the relationship between the start node and the end node. For example, an edge labeled “partOf” from the node d2 to the node u1 indicates that the department d2 belongs to the university u1.
  • the “graduate” labeled edge (indicated by an arrow) from node p3 to u1 is that the faculty p3's home university is u1
  • the “work” labeled edge from node p3 to d2 is This indicates that the teacher p3 works in the department d2.
  • a database system that stores RDF graphs is sometimes called an RDF store.
  • a standard RDF store has a function of searching for a graph pattern using a query language called SPARQL (Non-Patent Document 1).
  • SPARQL is a query language corresponding to SQL in the relational database system.
  • a user can perform a search by describing a condition of data to be obtained as a SPARQL query and inputting it into the RDF store.
  • the search for the graph pattern as shown in FIG. 11B can be described as follows in SPARQL. select? d? u? p where ⁇ ? d partOf? u ? p work? d ? p graduate? u ⁇ “? D partOf? U”, “? P work? D”, and “? P graduate? U” are called triple patterns and represent conditions regarding one edge constituting the graph pattern. Words beginning with “?” Such as “? D” and “? U” are variables. For example, “? D partOf? U” matches an arbitrary subgraph consisting of an edge labeled “part of” and its start and end nodes. The result of the graph pattern search is a set of all matches.
  • FIG. 11C shows the result of the above SPARQL query for the RDF graph of FIG. 11A. In this example, three combinations of “? P”, “? U”, and “? D” are obtained.
  • the stored data has a correspondence relationship between the key and the value
  • the search function provided also has a relatively simple configuration in which a value corresponding to the key is acquired. For this reason, the search processing can be easily distributed by dividing the data by the hash value of the key and placing the data on a plurality of servers.
  • graph data is handled like an RDF store, if the graph is simply divided, it becomes impossible to search for a pattern that crosses the boundary of the division, so that it cannot be realized as easily as KVS.
  • Non-Patent Document 2 discloses a technique for distributed processing of graph pattern search. That is, a search system is constituted by one master server and a plurality of worker servers. The master server receives a search request from the client, performs distributed processing of the search using the worker server, and returns the result to the client. In order to realize distributed processing, this system decomposes the graph for each edge when storing the graph data in the database (hereinafter sometimes referred to as “loading”), and distributes the graph to each worker server. . Further, at the time of search, the search pattern is divided for each edge in the master server, and the search for data matching the pattern of each edge is executed by all the worker servers, and the results are integrated by the master server.
  • loading the database
  • the search pattern is divided for each edge in the master server, and the search for data matching the pattern of each edge is executed by all the worker servers, and the results are integrated by the master server.
  • the search is divided into three parts, “? D partOf? U”, “? P work? D”, and “? P graduate? U”, and the search is performed on each worker server one by one. And repeat returning results to the master server. These results are combined at the master server to produce the final result.
  • Non-Patent Document 2 the method for realizing distributed processing by dividing a search pattern for each edge has the following efficiency problems.
  • a storage device that stores graph structure data
  • a master computer that receives a search request for the graph structure data
  • a plurality of worker computers that receive the search request from the master computer and respond to the search result to the master computer
  • a computer system connected via a line wherein the master computer performs a range graph in which nodes having the same connection edge label in the graph structure data are grouped and a search process for each node included in the group.
  • a worker computer that executes search processing for each node in the group A range dividing unit to be determined, and a result integrating unit that transmits the search pattern and the assigned search range to the plurality of worker computers, integrates the search results from each worker computer, and responds to the client with a final search result. It is a computer system that has.
  • communication / synchronization required for distributed processing of graph pattern search can be performed only once. Further, the data sent from the worker server to the master server is only a part of the final search result, and the data transfer amount, transfer time, and the memory amount necessary for integration at the master server are reduced. These improve the search efficiency of the search system. Other problems and effects of the present invention will become apparent from the following description.
  • FIG. 1 schematically shows a configuration of a computer system 1 that is an embodiment to which the present invention is applied.
  • the computer system 1 receives a search pattern 20 from a client 10 that is communicably connected via a wired and / or wireless network, and returns a search request from the master server 100 that responds with a search result 30.
  • a plurality of worker server groups 200 (200a to 200d) that receive and respond to search results and graph data 301 are stored, and the shared storage device 300 is connected to each of the servers via a wired and / or network so as to be communicable. Composed. It is assumed that each worker server 200 is assigned an identification number in order from 200a to 200d.
  • the master server 100 performs overall control of the entire computer system 1, and a general-purpose server computer having a CPU 101, a memory 102, an auxiliary storage device 103, and the like is applied. Various functions are realized in the memory 102 by the cooperation of the CPU 101 and the program, and various data are held. As the function unit, the advance preparation unit 110 and the search unit 140 are realized, and as the data, the range graph 120 and the contribution table 130 are held.
  • a range graph 120 and a charge table 130 are generated. This process is executed when the master server 100 stores the graph data 301 in the system.
  • the range graph 120 is information in which nodes having the same edge label connected from the graph data 301 stored in the shared storage 300 are grouped as one node.
  • grouping is executed by the labels of the edges connected to each node by sequentially tracing all the nodes of the graph data 301. Thereafter, by sequentially tracing the elements of the edge set of the graph data, the edge of the range graph 120 corresponding to each edge is generated, and the range graph 120 is generated by generating a label between the groups to which each edge belongs. It has become.
  • the assignment table 130 is information in which a worker server that handles each node is determined.
  • the assigned ranges of the worker servers that process the nodes of each group of the generated range graph 120 are assigned to be equal. For example, when a group includes four nodes and the number of worker servers is four, one processing node is assigned to each worker server 200. When the number of nodes is not divisible by the number of worker servers 200, the remaining nodes are assigned to any one of the worker servers.
  • the search unit 140 further includes a range dividing unit 140 and a result integrating unit 142. Is realized. In the range dividing unit 140, the search pattern 20 received from the client is executed on the range graph 120 to obtain the range of the variable appearing in the search pattern, and the worker server responsible for each node in the range according to the assigned table 130 Is to be decided.
  • the result integration unit 142 transmits the search pattern 20 and the assigned range to each worker server, and generates a complete (final) search result and responds to the client based on the search result returned from each worker server. It has come to be.
  • each of the servers 200a to 200b of the worker server group 200 It is assumed that a server computer having the same configuration is applied to each of the servers 200a to 200b of the worker server group 200. It is possible to configure a part or all of them as virtual servers, or computers with different performance. In this embodiment, it is assumed that an example in which each is configured with an independent physical computer is used. Hereinafter, the configuration will be described in detail using the worker server 200a.
  • a search for a responsible range is executed based on a request from the master server 100.
  • a search execution unit 210a that executes search processing is realized in the memory 201a by the cooperation of the CPU 201a and the program.
  • the memory 201 includes a search execution unit 210a and a cache 220a for holding data read from the shared storage device 300 at the time of search in preparation for the next search process. Note that a cache-dedicated memory device different from the memory 201a may be provided for the cache memory 220a.
  • the shared storage device 300 applies a nonvolatile storage device such as an HDD and / or an SSD. Further, a file interface is used for accessing the graph data 301 stored in the shared storage device 300. Note that the shared storage device 300 may be physically or logically configured from a plurality of file servers. In the present embodiment, description will be made assuming that a single physical storage computer is used. The above is the configuration of the computer system 1.
  • the processing of the computer system 1 can be broadly divided into “preliminary processing” that is performed in advance before receiving a search request from a client and “distributed search processing” that is performed when a search request is received.
  • preliminary processing that is performed in advance before receiving a search request from a client
  • distributed search processing that is performed when a search request is received.
  • FIG. 2 shows a flow of “preliminary processing” executed by the preliminary preparation unit 110. This process is performed only once in the master server when the graph data 301 is stored in the system.
  • the preparation unit 110 generates a range graph necessary for obtaining a range of variables from the search pattern 20 transmitted from the client 10.
  • the pre-preparation unit 110 generates the assignment table 130 necessary for dividing the range and assigning it to each worker server 200a and the like. Details of each step will be described later with reference to FIGS.
  • FIG. 3 shows a flow of “distributed search processing” executed by the master server 100 and the worker server group 200.
  • the master server 100 receives a search request including the search pattern 20 from the client 10.
  • the master server 100 divides the search range of the received search pattern 20 using the range graph 120 and the charge table 130 generated in the above-mentioned “pre-processing”, and transmits the charge range to each worker server. .
  • step S ⁇ b> 203 the worker server group 200 searches the search pattern 20 within the range indicated by the received assigned range, and transmits the result to the master server 100.
  • step S204 the master server 100 integrates the results of each worker server and returns the search result 30 to the client. Details of each step will be described later with reference to FIGS.
  • the computer system 1 can solve the problem of the shared storage apparatus 300 that may become a bottleneck for access of each worker server in a distributed environment.
  • FIG. 4 is a diagram showing a detailed flow of the range graph 120 generation process (S101 in FIG. 2).
  • the value range of the variable in the search pattern 20 is obtained from the pattern structure.
  • the pre-preparation unit 110 sequentially processes all the nodes of the graph data 301 and executes a process of grouping with the labels of edges connected to the nodes.
  • the preparation unit 110 initializes an array G that represents a group to which the node belongs.
  • the elements of the node set N of the graph data are sequentially traced to determine the group to which each node belongs.
  • one unprocessed node is extracted (referred to as “n”).
  • the group name to which “n” belongs is registered as “G [n]”.
  • the group name is a set (In, Out) of an edge label set “In” of “n” and an edge label set “Out” of “n”.
  • the range graph 120 is generated. Specifically, if there is an edge between elements of the group, an edge with the same label is added between the groups.
  • the range graph 120 is represented as a set of edges that is a set of a start point node, an edge label, and an end point node.
  • the preparation unit 110 initializes the edge set DG of the range graph 120 to be empty.
  • the preliminary preparation unit 110 sequentially follows the elements of the edge set “E” of the graph data, and generates an edge of the range graph 120 corresponding to each edge.
  • the pre-preparation unit 110 extracts one unprocessed edge (assuming (n1, el, n2)).
  • the groups “Group [n1]” and “Group [n2]” to which “n1” and “n2” belong are obtained, and an edge of the label “el” is generated between them and added to “DG”.
  • Group [Group” is set as follows.
  • Group [d1] ( ⁇ member ⁇ , ⁇ partof ⁇ )
  • Group [d2] ( ⁇ member ⁇ , ⁇ partof ⁇ )
  • Group [d3] ( ⁇ member ⁇ , ⁇ partof ⁇ )
  • Group [d4] ( ⁇ member ⁇ , ⁇ partof ⁇ )
  • Group [u1] ( ⁇ graduate, partof ⁇ , ⁇ )
  • Group [u2] ( ⁇ graduate, partof ⁇ , ⁇ )
  • Group [p1] ( ⁇ , ⁇ graduate, work ⁇ )
  • Group [p2] ( ⁇ , ⁇ graduate, work ⁇ )
  • Group [p3] ( ⁇ , ⁇ graduate, work ⁇ )
  • Group [p4] ( ⁇ , ⁇ graduate, work ⁇ )
  • Group [p5] ( ⁇ , ⁇ graduate, work ⁇ )
  • Group [p6] ( ⁇ , ⁇ graduate, work ⁇ )
  • the following three groups are generated.
  • FIG. 5 shows a flow of processing for generating the charge table 130 (S102 in FIG. 2).
  • This process is a process for determining the worker servers in charge of the nodes so that the assigned ranges of the worker servers are as even as possible when dividing the search range. Since the search range is divided by selecting one node of the range graph 120 and dividing the node group represented by the node, the object can be achieved by equally allocating the nodes to each node group.
  • the preparation unit 110 initializes “DT” in the assignment table 130 to be empty. In a loop starting from S402, the preparation unit 110 follows each node of “DG” in the range graph 120 and assigns a worker server. In S403, one unprocessed “DG” node is extracted (referred to as “g”). In S404, the preparation unit 110 initializes a variable “i” representing the current worker server number to 1.
  • the preparation unit 110 sequentially follows the nodes belonging to “g”.
  • the pre-preparation unit 110 extracts one node in “g” that has not been processed (referred to as “n”).
  • the pre-preparation unit 110 records in “DT” that the worker server number in charge of “n” is “i”.
  • the preparation unit 110 increments the value of “i” by one. However, when “i” exceeds the number of worker servers, it is reset to 1.
  • FIG. 5 when there are four worker server groups 200 will be described using the range graph 120 shown in FIG. 9A.
  • S401 initialization is performed so that “DT” in the charge table 130 is emptied.
  • each node group in FIG. 9A is traced, and in the loop starting from S405, worker servers are assigned in order from 1 to each node belonging to the group. However, if the number of workers exceeds 4, it will return to 1 and repeat. In this way, by processing all the nodes in the range graph 120, a charge table 130 as shown in FIG. 9B is generated.
  • FIG. 6 shows a flow of processing (S202 in FIG. 3) in which the master server 100 divides the search range of the search pattern 20 and assigns it to each worker server.
  • S501 “DG” in the range graph 120 is searched with the search pattern “q” to obtain a portion matching “q”.
  • “DG” in the range graph 120 is a normal RDF graph, and this processing can be realized by using the RDF graph search method described in Non-Patent Document 1.
  • variable x and its value range Dx used for the search range division are selected. Selection of variables used for division is performed based on the following criteria. (1) Select the smallest variable range that is greater than or equal to the number of worker servers. (2) If there is no variable that satisfies (1), select the one with the largest size. Thereby, it is possible to perform the search process using as many worker servers as possible. The reason for selecting the smallest value range size in (1) is to minimize the size of the search range.
  • step S503 the array “D” holding the node set in charge of each worker server is initialized to be empty.
  • the value “D” is set in a loop starting from 4.
  • one unprocessed “Dx” element is extracted (referred to as “n”).
  • the “n” assigned worker server is obtained using “DT” in the assigned table 130 (referred to as “i”).
  • S507 “n” is added to the assigned range of the worker server “i”.
  • step S509 the search pattern q, the variable x used for dividing the search range, and the assigned range “D [i]” are sent to the worker server “i”.
  • “q” is the search pattern 20 of FIG. 11A
  • “DG” is the range graph 120 of FIG. 9A
  • “DT” is the charge table 130 of FIG. 9B
  • the processing of FIG. To do When the process of S501 is performed, the search result shown in FIG. 10A is obtained.
  • the selection process of S502 is performed, the size of the value range of “? D” is 4, the size of the value range of “? U” is 2, and the size of the value range of “? P” is 6, so the size of the value range is the number of worker servers.
  • the smallest “? D” is selected as the variable X.
  • ⁇ d1, d2, d3, d4 ⁇ that is a range of “? D” is set in “Dx”.
  • FIG. 7 shows a flow of processing in which the worker server receives the search pattern q, the search range dividing variable x, and the node set D representing the assigned range from the master server, and returns the search result R when the value of x is included in D. (S203 in FIG. 3).
  • This can be easily realized by generating a search pattern in which the appearance of the variable x in q is fixed to each element of D and obtaining the union of the search results.
  • step S601 the variable RW holding the search result is initialized to be empty.
  • the elements in D are sequentially processed in a loop starting from S602.
  • one unprocessed element is extracted (referred to as “n”).
  • n one unprocessed element is extracted (referred to as “n”).
  • S604 a search pattern q1 in which the value of the variable x in q is fixed to n is generated. This processing can be realized by replacing all x appearing in q with n. Also, it can be realized by adding “bind (n as x)” to the end of the where clause of q using the bind syntax which is a language function of SPARQL.
  • the graph data 301 stored in the shared storage device 300 is searched for “q1”, and the search result is obtained (referred to as “r1”).
  • This processing can be realized using the RDF graph search method described in Non-Patent Document 1.
  • the data referenced at the time of the search is held in the cache 220a or the like, so that the reference to the shared storage device 300 can be omitted the next time the same search is performed.
  • step S606 all elements of “r1” are added to “RW”.
  • the process advances to step S ⁇ b> 607, and the search result RW for the assigned range is transmitted to the master server 100.
  • FIG. 7 shows a case where “G” is the graph data 301 in FIG. 11A, “q” is the search pattern 20 in FIG. 11B, “x” is “? D”, and the assigned range “D” is “ ⁇ d2 ⁇ ”.
  • RW is initialized to an empty set.
  • the process proceeds to a loop starting from S602.
  • S603 one unprocessed element is extracted. Since the element “D” is only “d2”, “d2” is extracted.
  • FIG. 8 shows a flow of processing in which the master server 100 receives search results from the worker server group 200 and returns search results obtained by integrating them to the client 10 (S204 in FIG. 3).
  • step S701 the variable R that holds the search result is initialized to be empty.
  • the results from all worker server groups 200 are received and integrated in a loop starting from S702.
  • S703 one unprocessed worker server is extracted (referred to as “i”).
  • S704 a search result from the worker server “i” is received (referred to as “RW”).
  • RW search result from the worker server “i”
  • all elements of “RW” are added to “R”, and the process returns to the top of the loop.
  • step S706 transmit the search result “RW” to the client 10.
  • FIG. 10B the processing of FIG. 8 will be described using the results of each worker server shown in FIG. 10B.
  • S701 "R” is initialized to empty.
  • the results of the worker servers 200a to 200d are sequentially received and added to “RW”. There is only one result other than the worker server 200d, and this is added to “RW”. “RW” at the end of the loop is as shown in FIG. 10C.
  • step S706 transmit the search result “RW” to the client 10.
  • the memory resources necessary for the data transfer amount / transfer time / master server result integration processing are reduced. be able to.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 グラフ構造パターン検索の分散処理を行うシステムで、マスタとワーカ間の同期・通信オーバヘッドを削減する。グラフデータ301を格納するストレージ300と、グラフデータに対する検索要求を受信するマスタ100と、マスタから検索要求を受け取り、検索結果をマスタに応答する複数のワーカ200a~dとを有する計算機システムで、マスタは、グラフデータにおける接続エッジのラベルが同一のノード群をグループ化した値域グラフ120及びグループ含まれる各ノードの検索処理を担当するワーカを定めた担当情報130を格納する記憶部102と、検索要求に含まれる検索パターン20を値域グラフ上で実行することで検索パターンに現われる変数の値域を求め、担当情報に従って値域内のグループにおける各ノードの検索処理を実行するワーカを決定する範囲分割部141と、検索パターン及び担当検索範囲をワーカに送信し、各ワーカからの検索結果が統合された最終検索結果をクライアントに応答する結果統合部と、を有する。

Description

計算機システム、記録媒体及びデータ検索方法
 本発明は、計算機システム、記録媒体及びデータ検索方法に係り、特にグラフ構造データ検索の分散処理に関する。
 近年、画像・音声・文書等、多種多様なデータを種類横断的に検索したり、分析したりするための統一データ形式として、RDF(Resource Description Framework)とよばれる形式がW3C(World Wide Web Consortium)で標準化され、その利用が広まりつつある。
 RDFはグラフデータモデルに基づくもので、一意に識別される実体及びそれらの関連をラベル付きの有向グラフ構造で表現するようになっている。
  図11AにRDFデータが表すグラフの例を示す。この例は大学組織に関する情報を表したものである。ノードのうち、u1及びu2は大学、d1~d4は学部、p1~p5は教員を表している。
  また、ノード間を結ぶラベル付きのエッジは、始点ノードと終点ノードの関連を表している。例えば、ノードd2からノードu1への“partOf”ラベル付きエッジは学部d2が大学u1に所属していることを表している。同様に、ノードp3からu1への“graduate”ラベル付きエッジ(矢印で示している。)は、教員p3の出身大学がu1であること、ノードp3からd2への“work”ラベル付きエッジは、教員p3が学部d2で勤務していることを表している。
 RDFグラフを格納するデータベースシステムは、RDFストアとよばれることがある。標準的なRDFストアは、SPARQLとよばれる問い合わせ言語を用いてグラフパターンの検索を行う機能を有している(非特許文献1)。
  SPARQLは、関係データベースシステムにおけるSQLに相当する問い合わせ言語である。利用者は、求めるデータの条件をSPARQLクエリとして記述し、RDFストアに入力することで、検索行うことができる。
 例えば、図11Bのようなグラフパターンの検索は、SPARQLでは以下のように記述できる。
select ?d ?u ?p where {
  ?d partOf ?u
  ?p work ?d
  ?p graduate ?u
}
 “?d partOf ?u”、“?p work ?d”及び“?p graduate ?u”は、トリプルパターンと呼ばれ、グラフパターンを構成するひとつのエッジに関する条件を表す。“?d”や“?u”など“?”ではじまる単語は変数である。
  例えば、“?d partOf ?u”は、“part of”というラベルのエッジ及びその始点ノードと終点ノードからなる任意の部分グラフにマッチする。グラフパターン検索の結果は、全てのマッチの集合になる。
  図11AのRDFグラフに対する上記のSPARQLクエリの結果を図11Cに示す。この例では、“?p”、“?u”、“?d”の組合せが3通り得られている。
 RDFの普及につれてRDFストアに格納されるグラフデータの規模は年々増加している。グラフパターン検索の計算量はグラフデータの大きさの指数オーダーであることが知られており、大規模なグラフデータに対して効率的に検索を実現する技術が求められている。
  大規模データに対する検索の効率を高める方法として一般的なのは複数のサーバを用いて検索処理を分散化することである。
 例えば、キーバリューストア(KVS)では、格納されているデータはキーと値の対応関係であり、提供する検索機能もキーに対応する値を取得するという比較的構成が平易なものである。このためデータをキーのハッシュ値で分割して複数のサーバに配置することで容易に検索処理を分散化することができる。
  他方、RDFストアの様にグラフデータを扱う場合、単にグラフを分割したのでは分割の境界をまたぐパターンが検索できなくなってしまうため、その実現はKVSのように容易に行うことができない。
 非特許文献2には、グラフパターン検索を分散処理する技術が開示される。即ち1台のマスタサーバ及び複数のワーカサーバによって検索システムを構成する。マスタサーバは、クライアントからの検索要求を受け付け、ワーカサーバを利用して検索を分散処理し、結果をクライアントに返す。分散処理を実現するために、このシステムはグラフデータをデータベースに格納する時(以降では、「ロード時」という場合がある。)に、グラフをエッジごとに分解し、各ワーカサーバに分散配置する。更に、検索時にはマスタサーバにおいて検索パターンをエッジごとに分割した上で、各エッジのパターンにマッチするデータの検索を全ワーカサーバで実行し、結果をマスタサーバで統合する。
 例えば、図11Bのパターンの場合、“?d partOf ?u”、“?p work ?d”及び“?p graduate ?u”の3つに分割した上で、1つずつ各ワーカサーバで検索を行い、結果をマスタサーバに返すことを繰り返す。これらの結果はマスタサーバで結合され、最終的な結果が生成される。
"SPARQL Query Language for RDF"、[online]、2008年1月15日、W3C、[2013年3月1日検索]、インターネット(URL:http://www.w3.org/TR/rdf-sparql-query/) S. Harris、外2名、"4store: the Design and Implementation of a Clustered RDF Store"、[online]、2009年10月26日、SSWS2009、[2013年3月1日検索]、インターネット(URL:http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-517/ssws09-paper7.pdf)
 しかしながら、非特許文献2に開示されるように、検索パターンをエッジごとに分割することで分散処理を実現する方法には以下の効率上の課題が存在する。
 1つ目に、分散処理の粒度が小さい(エッジ単位)の為、マスタサーバとワーカサーバ間の通信・同期が何度も生じるという問題がある。このことは検索パターンが大きくなるにつれて検索効率の低下を招来する。
 2つ目に、全ワーカサーバが返す検索の中間結果をマスタサーバで統合処理する為、中間結果の大きいパターンではマスタサーバへのデータ転送時間及び結合処理の時間が増加し、検索効率の低下を招来する。特に、中間結果がマスタサーバのメモリに収まりきらない場合、他のデバイス(例えば、低速なディスクへのスワップ等)が必要となり検索効率が大きく低下する。
 上述のような課題を解決するために、例えば、請求の範囲に記載の構成を適用する。即ちグラフ構造データを格納するストレージ装置と、前記グラフ構造データに対する検索要求を受信するマスタ計算機と、前記マスタ計算機から検索要求を受け取り、検索結果を前記マスタ計算機に応答する複数のワーカ計算機とが通信線を介して接続されてなる計算機システムであって、前記マスタ計算機は、前記グラフ構造データにおける接続エッジのラベルが同一のノード群をグループ化した値域グラフ及び前記グループ含まれる各ノードの検索処理を担当するワーカ計算機を定めた担当情報を格納する記憶部と、前記検索要求に含まれる検索パターンを前記値域グラフ上で実行することで検索パターンに現われる変数の値域を求め、前記担当情報に従って値域内の前記グループにおける各ノードの検索処理を実行するワーカ計算機を決定する範囲分割部と、前記検索パターン及び担当検索範囲を前記複数のワーカ計算機に送信し、各ワーカ計算機からの検索結果を統合して最終検索結果を前記クライアントに応答する結果統合部と、を有する計算機システムである。
 本発明の一側面によれば、グラフパターン検索の分散処理に必要となる通信・同期が一度ですむようになる。また、ワーカサーバからマスタサーバに送られるデータは最終的な検索結果の一部分のみであり、データ転送量・転送時間・マスタサーバで統合に必要なメモリ量が削減される。これらにより、検索システムの検索効率が向上する。
  本発明の他の課題や効果は、以下の記載から明らかになる。
本発明を適用した一実施の形態である計算機システムの構成を示した模式図である。 本実施形態の計算機システムにおける処理の流れを示したフロー図である。 本実施形態の計算機システムにおける値域グラフ生成処理の流れを示したフロー図である。 本実施形態の計算機システムにおける担当表処理の流れを示したフロー図である。 本実施形態の計算機システムにおける検索範囲分割処理の流れを示したフロー図である。 本実施形態の計算機システムにおける検索実行処理の流れを示したフロー図である。 本実施形態の計算機システムにおける結果統合処理の流れを示したフロー図である。 本実施形態の計算機システムにおける事前処理の流れ示したフロー図である。 本実施形態の計算機システムにおける分散検索の例を示した模式図である。 本実施形態の計算機システムにおける分散検索の例を示した模式図である。 本実施形態の計算機システムにおけるグラフパターン検索の例を示した模式図である。 本実施形態の計算機システムにおけるグラフパターン検索の例を示した模式図である。 本実施形態の計算機システムにおけるグラフパターン検索の例を示した模式図である。 RDFグラフの例を示した模式図である。 RDFグラフのグラフパターン検索の例を示した模式図である。 RDFグラフのグラフパターン検索の例を示した模式図である。
 以下、図面を用いて発明を実施するための一形態例を説明する。
  図1に、本発明を適用した一実施形態である計算機システム1の構成を模式的に示す。計算機システム1は、有線及び/又は無線のネットワークを介して通信可能に接続されたクライアント10から検索パターン20を受け取り、検索結果30を応答するマスタサーバ100と、前記マスタサーバ100からの検索要求を受け取り、検索結果を応答する複数のワーカサーバ群200(200a~200d)と、グラフデータ301を格納し、前記サーバ各々から有線及び/又はネットワークを介して通信可能に接続された共有ストレージ装置300で構成される。なお、各ワーカサーバ200は、200a~200dから順に、夫々識別番号が付加されているものとする。
 マスタサーバ100は、計算機システム1全体を統括制御するものであり、CPU101、メモリ102、補助記憶装置103等を有する汎用のサーバ計算機を適用するものとする。メモリ102には、CPU101とプログラムとの協働によって種々の機能部が実現されると共に各種のデータが保持されるようになっている。
  機能部としては、事前準備部110及び検索部140が実現され、データとしては、値域グラフ120及び担投表130が保持される様になっている。
 事前処理部110では、値域グラフ120と、担当表130とが生成される。本処理はマスタサーバ100において、グラフデータ301をシステムに格納する際に実行される。
  値域グラフ120は、共有ストレージ300に格納されたグラフデータ301から接続されたエッジのラベルが同一のノード群が、1つのノードとしてグループ化された情報である。事前処理部110では、グラフデータ301の全てのノードを順にたどることにより、各ノードに接続されているエッジのラベルでグループ化が実行される。その後、グラフデータのエッジ集合の要素を順にたどることで、各エッジに対応する値域グラフ120のエッジが生成され、各エッジが属するグループ間にラベルを生成することで値域グラフ120を生成するようになっている。
 担当表130は、各ノードを担当するワーカサーバが定められた情報である。事前処理部110では、生成された値域グラフ120の各グループのノードを処理する各ワーカサーバの担当範囲が均等になるように割り当てられる。例えば、あるグループに4つのノードが含まれ、ワーカサーバの数が4台であるとき、それぞれのワーカサーバ200に1つずつ処理ノードが割り当てられる。なお、ノード数がワーカサーバ200の数で割り切れない場合、残りノードが夫々何れかのワーカサーバに割り当てられる様になっている
 検索部140には、更に、範囲分割部140と、結果統合部142とが実現される。
  範囲分割部140では、クライアントから受信した検索パターン20が値域グラフ120上で実行されることによって、検索パターンに現れる変数の値域が求められ、担当表130に従って値域内の各ノードを担当するワーカサーバが決定されるようになっている。
 結果統合部142では、各ワーカサーバに検索パターン20及び担当範囲が送信され、各ワーカサーバから返される検索結果を基に、完全な(最終的な)検索結果の生成及びクライアントへの応答が実行されるようになっている。
 ワーカサーバ群200の各サーバ200a~200bには、同一の構成を有するサーバ計算機を適用するものとする。なお、一部又は全部を仮想サーバとして構成することも、性能の異なる計算機で構成することも可能である。本実施形態では、夫々独立した物理計算機で構成する例を用いるものとする。以下、ワーカサーバ200aを用いて、構成を詳述する。
 ワーカサーバ200aでは、マスタサーバ100からの要求に基づき、担当範囲の検索が実行される。CPU201aとプログラムとの協働によってメモリ201aに、検索処理を実効する検索実行部210aが実現される。更に、メモリ201には、検索実行部210a及び検索時に共有ストレージ装置300から読み取ったデータを、次の検索処理に備えて保持するためのキャッシュ220aを有する。なお、キャッシュメモリ220a用に、メモリ201aと異なるキャッシュ専用のメモリ装置を設ける構成としてもよい。
 共有ストレージ装置300は、HDD及び/又はSSD等の不揮発性のストレージデバイスを適用するものとする。また、共有ストレージ装置300に格納されたグラフデータ301のアクセスには、ファイルインタフェースを用いるものとする。なお、共有ストレージ装置300は、物理的又は論理的に複数のファイルサーバから構成されていてもよい。本実施の形態では、物理的に単数のストレージ計算機を用いるものとして説明する。
  以上が、計算機システム1の構成である。
 次いで、図2~図8のフロー図を用いて、計算機システム1の処理の流れを説明する。
  計算機システム1の処理は大別すると、クライアントからの検索要求を受け付ける前に予め行っておく「事前処理」と、検索要求を受け取ったときに行う「分散検索処理」の2つに分けられる。先ず、図2及び図3を用いて、「事前処理」及び「分散検索処理」の概要を説明する。
 図2に、事前準備部110が実行する「事前処理」の流れを示す。本処理はマスタサーバにおいて、グラフデータ301をシステムに格納する際に一度だけ行われる。
  S101で、事前準備部110は、クライアント10から送信された検索パターン20から、変数の値域を求めるために必要な値域グラフを生成する。
  S102で、事前準備部110は、値域を分割し各ワーカサーバ200a等に割り当てるために必要な担当表130を生成する。なお各ステップの詳細は図4及び図5を用いて後述する。
 図3に、マスタサーバ100及びワーカサーバ郡200が実行する「分散検索処理」の流れを示す。
  S201で、マスタサーバ100は、クライアント10から検索パターン20が含まれた検索要求を受信する。
  S202で、マスタサーバ100は、上述の「事前処理」で生成された値域グラフ120及び担当表130を用いて、受信した検索パターン20の検索範囲を分割し、各ワーカサーバに担当範囲を送信する。
 S203で、ワーカサーバ群200は、受信した担当範囲が示す範囲で検索パターン20の検索を行い、マスタサーバ100に結果を送信する。
  S204で、マスタサーバ100は、各ワーカサーバの結果を統合しクライアントに検索結果30を応答する。
  各ステップの詳細は図6、図7及び図8を用いて後述する。
 このように、「分散検索処理」はマスタサーバ100及びワーカサーバ群200間の通信が2度しか発生しない。また、ワーカサーバ群200からマスタサーバ100に送られるデータは最終的な検索結果の一部分のみである。以上から、計算機システム1は、分散環境において、各ワーカサーバのアクセスに対するボトルネックとなる虞のある共有ストレージ装置300の問題を解消することができる。
 以下に、各処理の詳細な流れを説明する。
  図4に、値域グラフ120の生成処理(図2のS101)の詳細な流れを示す図である。本処理では、検索パターン20内の変数の値の範囲をパターンの構造から求めるようになっている。
 先ず、S301~S304で、事前準備部110は、グラフデータ301の全てのノードを順にたどり、各ノードに接続されているエッジのラベルでグループ化する処理を実行する。
  S301で、事前準備部110は、ノードが属するグループを表す配列Gを初期化する。
  次いで、S302から始るループで、グラフデータのノード集合Nの要素を順にたどり、各ノードの属するグループを決定する。
  S303で、未処理のノードを1つ取り出す(“n”とする)。
  S304で、“n”の属するグループ名を“G[n]”と登録する。ここでグループ名とは“n”に入るエッジのラベル集合“In”及び“n”から出るエッジのラベル集合“Out”の組(In,Out)である。
 次に、S305~S308で、値域グラフ120を生成する。具体的には、グループの要素間にエッジがあれば、グループ間にも同じラベルのエッジを追加する。値域グラフ120は、始点ノード、エッジラベル及び終点ノードの組であるエッジの集合として表される。
  S305で、事前準備部110は、値域グラフ120のエッジ集合DGを空とするように初期化する。
 S306で、事前準備部110は、グラフデータのエッジ集合“E”の要素を順にたどり、各エッジに対応する値域グラフ120のエッジを生成する。
  S307で、事前準備部110は、未処理のエッジを1つ取り出す((n1,el,n2)とする)。
  S308で、“n1”、“n2”の属するグループ“Group[n1]”、“Group[n2]”を求め、これらの間にラベル“el”のエッジを生成し、“DG”に追加する。
 例として、図11Aに示すグラフデータを用いて、図4の処理を説明する。
  最初にS301~S304の処理を行うと、以下のようにグループ“Group”が設定される。
  Group[d1] = ({member},{partof})
  Group[d2] = ({member},{partof})
  Group[d3] = ({member},{partof})
  Group[d4] = ({member},{partof})
  Group[u1] = ({graduate,partof},{})
  Group[u2] = ({graduate,partof},{})
  Group[p1] = ({},{graduate,work})
  Group[p2] = ({},{graduate,work})
  Group[p3] = ({},{graduate,work})
  Group[p4] = ({},{graduate,work})
  Group[p5] = ({},{graduate,work})
  Group[p6] = ({},{graduate,work})
 このように、生成されたグループは以下の3つである。
  ({member},{partof})
  ({graduate,partof},{})
  ({},{graduate,work})
 次に、S304~S308でグループ間のエッジを生成する場合を示す。例えば、“d1”から“u1”へのエッジ(d1,partof,u1)をS307で処理すると、“d1”のグループ“Group[d1]”から“u1”のグループ“Group[u1]”へのエッジとして、以下が生成される。
  (Group[d1],partof,Group[u1])
  すべてのエッジを同様に処理することで図9Aに示すような値域グラフ120が生成される。
 図5に、担当表130の生成処理(図2のS102)の流れを示す。本処理は、検索範囲を分割する際に、可能な限り各ワーカサーバの担当範囲が均等になるようにノードの担当ワーカサーバを決める処理である。検索範囲の分割は値域グラフ120の1つのノードを選択し、そのノードが表すノードグループを分割することで行うため、各ノードグループにノードを均等に各ワーカサーバに割り当てることで目的を達成できる。
 S401で、事前準備部110は、担当表130の“DT”を空にするように初期化する。
  S402からはじまるループで、事前準備部110は、値域グラフ120の“DG”の各ノードをたどり、ワーカサーバを割り当てる。
  S403で、未処理の“DG”のノードを1つ取り出す(“g”とする)。
  S404で、事前準備部110は、現在の担当ワーカサーバ番号を表す変数“i”を1に初期化する。
 次に、S405からはじまるループで、事前準備部110は、“g”に属するノードを順にたどる。
  S406で、事前準備部110は、未処理の“g”内のノードを1つ取り出す(“n”とする)。
  S407で、事前準備部110は、“DT”に“n”の担当ワーカサーバ番号が“i”であることを記録する。
  S408で、事前準備部110は、“i”の値を1増加させる。但し、“i”がワーカサーバ数を超えたときは1に戻す。
 例として、図9Aに示す値域グラフ120を用いて、ワーカサーバ群200が4台の場合の図5の処理を説明する。
  S401で、担当表130の“DT”を空にするように初期化する。
  S402から始るループで、図9Aの各ノードグループをたどり、S405から始るループでグループに属する各ノードにワーカサーバを1から順に割り当てていく。但し、ワーカ台数である4を超えた場合1に戻ってくりかえす。
  このようにして、値域グラフ120の全てのノードを処理することで、図9Bに示すような担当表130が生成される。
 続いて、「分散検索処理」の詳細な処理を説明する。

  図6に、マスタサーバ100が検索パターン20の検索範囲を分割し、各ワーカサーバに割り当てる処理(図3のS202)の流れを示す。
  S501で、値域グラフ120の“DG”に対し、検索パターン“q”で検索を行い、“q”にマッチする部分を求める。値域グラフ120の“DG”は、通常のRDFグラフであり、この処理は非特許文献1に記載されているRDFグラフの検索方法を用いて実現できる。
 S502で、検索範囲分割に用いる変数x及びその値域Dxを選択する。分割に用いる変数の選択は以下の基準にもとづいて行う。
  (1) 変数の値域のサイズがワーカサーバの数以上で最小のものを選択。
  (2) (1)を満たす変数が存在しない場合、値域のサイズが最大のものを選択。
  これにより、可能な限り多くのワーカサーバを用いて検索処理を行うことができる。なお、(1)で値域のサイズが最小のものを選択するのは、検索範囲の大きさを最小にするためである。
 次に、S503~S507で各ワーカサーバの担当範囲を計算する。
  S503で、各ワーカサーバの担当するノード集合を保持する配列“D”を空にするように初期化する。
  S504で、4から始るループで“D”の値を設定する。
  S505で、未処理の“Dx”の要素を1つ取り出す(“n”とする)。
  S506で、担当表130の“DT”を用いて“n”の担当ワーカサーバを求める(“i”とする)。
  S507で、“n”をワーカサーバ“i”の担当範囲に追加する。全ての“Dx”の要素を処理したらS508に進む。
 S508からはじまるループでは、全てのワーカサーバを順に処理する(現在処理中のワーカサーバを“i”とする)。“i”は、ループの繰り返し毎に1ずつ増加していき、全てのワーカサーバ数“NumWorker”を超えた時点で終了する。
  S509で、ワーカサーバ“i”に検索パターンq、検索範囲の分割に用いた変数x及び担当範囲“D[i]”を送る。
 例として、“q”が図11Aの検索パターン20、“DG”が図9Aの値域グラフ120、“DT”が図9Bの担当表130、ワーカサーバが4台の場合の図6の処理を説明する。
  S501の処理を行うと、図10Aに示す検索結果が得られる。
  S502の選択処理を行うと、“?d”の値域のサイズは4、“?u”の値域のサイズは2、“?p”の値域のサイズは6のため、値域のサイズがワーカサーバ台数以上で最小の“?d”が、変数Xとして選択される。又“Dx”には“?d”の値域である{d1,d2,d3,d4}が設定される。
 次に、S503~S507のループを行うことで、“Dx”の各要素の担当ワーカサーバが、担当表130の“DT”にもとづき決定され、“D”に設定される。ループ終了時の“D”は、以下のようになる。
  D[1]={d1}
  D[2]={d2}
  D[3]={d3}
  D[4]={d4}
  最後にS508~S509のループで、ワーカサーバ200a~200dにq、x及びD[1]~D[4]がそれぞれ送信される。
 図7に、ワーカサーバがマスタサーバから検索パターンq、検索範囲分割変数x及び担当範囲を表すノード集合Dを受け取り、xの値がDに含まれる場合の検索結果Rを返す処理の流れを示す(図3のS203)。これはq内の変数xの出現をDの各要素に固定した検索パターンを生成し、その検索結果の和集合を求めることで容易に実現できる。
 S601で、検索結果を保持する変数RWを空にするように初期化する。
  S602から始るループでD内の要素を順に処理する。
  S603で、未処理の要素を1つ取り出す(“n”とする)。
  S604で、q内の変数xの値をnに固定した検索パターンq1を生成する。この処理はq内に現れるxを全てnに置き換えることで実現可能である。また、SPARQLの言語機能であるbind構文を用いてqのwhere節の末尾に“bind (n as x)”を追加することで実現することもできる。
 S605で、共有ストレージ装置300に格納されたグラフデータ301に対し、“q1”の検索を行い、検索結果を求める(“r1”とする)。この処理は非特許文献1に記載されているRDFグラフの検索方法を用いて実現できる。また、S605において、検索時に参照したデータをキャッシュ220a等に保持しておくことで、次に同じ検索が行われたときに、共有ストレージ装置300への参照を省略することが可能である。
 S606で、“r1”の全要素を“RW”に加える。全ての“D”の要素を処理し終えたら、S607に進み、担当範囲の検索結果RWをマスタサーバ100に送信する。
 例として、“G”が図11Aのグラフデータ301、“q”が図11Bの検索パターン20、“x”が“?d”、担当範囲“D”が“{d2}”の場合の図7の処理を説明する。
  S601で、RWを空集合に初期化する。次に、S602から始るループに進み、S603で、未処理の要素を1つ取り出す。“D”の要素は“d2”のみのため、“d2”が取り出される。
 S604で、“?d”の値を“d2”に固定したパターンを“q1”として生成する。
  S605で、“q1”の検索を図11Aのグラフデータに対して行うと、図10Bのワーカサーバ200bの検索結果カラムに示す結果が得られる。
  S606で、上記の検索結果をRWに加えてループ先頭に戻る。“D”に未処理の要素は存在しないため、ループは終了しS607に進み、RWをマスタサーバに送信する。
 図8に、マスタサーバ100が、ワーカサーバ群200からの検索結果を受け取り、それらを統合した検索結果をクライアント10に返す処理の流れを示す(図3のS204)。
  S701で、検索結果を保持する変数Rを空にするように初期化する。
  次に、S702から始まるループで全てのワーカサーバ群200から結果を受け取り、統合する。
  最初に、S703で、未処理のワーカサーバを1つ取り出す(“i”とする)。
  次に、S704で、ワーカサーバ“i”からの検索結果を受信する(“RW”とする)。
  S705で、“RW”の全要素を“R”に加え、ループ先頭に戻る。全てのワーカサーバを処理し終えたらS706に進み、クライアント10に検索結果“RW”を送信する。
 例として、図10Bに示す各ワーカサーバの結果を用いて図8の処理を説明する。
  S701で、“R”を空に初期化する。S702~S705のループで、ワーカサーバ200a~200dの結果を順に受信し、“RW”に加える。ワーカサーバ200d以外は結果が1つであり、これが“RW”に加えられる。
  ループ終了時の“RW”は、図10Cのようになる。全てのワーカサーバを処理し終えたら、S706に進み、クライアント10に検索結果“RW”を送信する。
 このように、計算機システム1によれば、グラフパターン検索の分散処理に伴うマスタサーバ100と、ワーカサーバ200a~200dとの通信・同期が一度ですむことから、システム負荷が軽減された高速処理を実現することができる。
 特に、ワーカサーバ200a等からマスタサーバ100に送信される検索結果は、最終検索結果の一部であることから、データ転送量・転送時間・マスタサーバの結果統合処理に必要なメモリ資源を削減することができる。
 以上、本発明を実施するための形態について説明したが、本発明は上記種々の構成等に限定されるものではなく、その趣旨を逸脱しない範囲で、種々の変更が可能であることはいうまでもない。
  また、計算機システム1では、プログラムとCPUとの協働により実現される種々の機能部によって処理を行う構成例を示したが、その一部をハードウェア的に構成することも可能である。
  更に、計算機システム1で、機能部を実現するプログラムは、可搬性の非一時的な磁気・電子式の記録媒体に格納可能であり、インターネット等のネットワークを介して計算機システム1にダウンロードすることも可能である。

Claims (8)

  1.  グラフ構造データを格納するストレージ装置と、前記グラフ構造データに対する検索要求を受信するマスタ計算機と、前記マスタ計算機から検索要求を受け取り、検索結果を前記マスタ計算機に応答する複数のワーカ計算機とが通信線を介して接続されてなる計算機システムであって、
     前記マスタ計算機は、
     前記グラフ構造データにおける接続エッジのラベルが同一のノード群をグループ化した値域グラフ及び前記グループ含まれる各ノードの検索処理を担当するワーカ計算機を定めた担当情報を格納する記憶部と、
     前記検索要求に含まれる検索パターンを前記値域グラフ上で実行することで検索パターンに現われる変数の値域を求め、前記担当情報に従って値域内の前記グループにおける各ノードの検索処理を実行するワーカ計算機を決定する範囲分割部と、
     前記検索パターン及び担当検索範囲を前記複数のワーカ計算機に送信し、各ワーカ計算機からの検索結果を統合して最終検索結果を前記クライアントに応答する結果統合部と、
    を有する計算機システム。
  2.  請求項1に記載の計算機システムであって、
     前記マスタ計算機は、
     前記ストレージ装置に格納されたグラフ構造データを読み出し、該グラフ構造データにおけるノードの接続エッジのラベルが同一のものを同一グループとし、各グループ間を前記ラベルが付加されたエッジで接続することで前記値域グラフを生成し、
     前記グループ内の各ノードを、前記複数のワーカ計算機の数に基づいて分散して割り当てることで前記担当情報を生成し、これらを前記記憶部に格納するものである計算機システム。
  3.  請求項2に記載の計算機システムであって、
     前記マスタ計算機は、前記グループ内の各ノードを、前記複数のワーカ計算機の数に基づいて均等に分散して割り当てるものである計算機システム。
  4.  請求項1に記載の計算機システムであって、
     前記ストレージ装置は、複数のファイルサーバで構成されるものであり、前記グラフ構造データを分散格納するものである計算機システム。
  5.  請求項1に記載の計算機システムであって、
     前記複数のワーカ計算機は、前記ストレージ装置から読み出したデータを保持するキャッシュメモリを有し、前記マスタ計算機から前記検索要求を受信した際、前記キャッシュメモリに保持したデータを読み出すものである計算機システム。
  6.  グラフ構造データを格納するストレージ装置と、前記グラフ構造データに対する検索要求を受信するマスタ計算機と、前記マスタ計算機から検索要求を受け取り、検索結果を前記マスタ計算機に応答する複数のワーカ計算機とが通信線を介して接続されてなる計算機システムの前記マスタ計算機に、
     前記ストレージ装置からグラフ構造データを読み出し、該グラフ構造データにおける接続エッジのラベルが同一のノード群をグループ化した値域グラフ及び前記グループ含まれる各ノードの検索処理を担当するワーカ計算機を定めた担当情報を格納する手順と、
     クライアントからの検索要求に含まれる検索パターンを前記値域グラフ上で実行することで検索パターンに現われる変数の値域を求め、前記担当情報に従って値域内の前記グループにおける各ノードの検索処理を実行するワーカ計算機を決定する手順と、
     前記検索パターン及び担当検索範囲を複数のワーカ計算機に送信し、各ワーカ計算機からの検索結果を統合して最終検索結果を生成する手順と、
    を実行させるコンピュータ読み取り可能なプログラムを格納する非一時的な記録媒体。
  7.  請求項6に記載の記録媒体であって、
     前記プログラムが、
     前記マスタ計算機に、前記ストレージ装置に格納されたグラフ構造データを読み出し、該グラフ構造データにおけるノードの接続エッジのラベルが同一のものを同一グループとし、各グループ間を前記ラベルが付加されたエッジで接続することで前記値域グラフを生成する手順と、
     前記グループ内の各ノードを、前記複数のワーカ計算機の数に基づいて分散して割り当てることで前記担当情報を生成し、これらを前記記憶部に格納する手順と、を実行させるものである記録媒体。
  8.  グラフ構造データを格納するストレージ装置と、前記グラフ構造データに対する検索要求を受信するマスタ計算機と、前記マスタ計算機から検索要求を受け取り、検索結果を前記マスタ計算機に応答する複数のワーカ計算機とが通信線を介して接続されてなる計算機システムのデータ検索方法であって、
     前記マスタ計算機が、
     前記ストレージ装置からグラフ構造データを読み出し、該グラフ構造データにおける接続エッジのラベルが同一のノード群をグループ化した値域グラフ及び前記グループ含まれる各ノードの検索処理を担当するワーカ計算機を定めた担当情報を記憶部に格納するステップと、
     クライアントからの検索要求に含まれる検索パターンを前記値域グラフ上で実行することで検索パターンに現われる変数の値域を求め、前記担当情報に従って値域内の前記グループにおける各ノードの検索処理を実行するワーカ計算機を決定するステップと、
     前記検索パターン及び担当検索範囲を複数のワーカ計算機に送信するステップと、
     前記複数のワーカ計算機が、
     前記マスタ計算機からの送信された前記検索パターン及び担当検索範囲に応じて、前記グラフ構造データに対する検索処理を実行し、検索結果を前記マスタ計算機に送信するステップと、
     前記マスタ計算機が、前記複数のワーカ計算機から送信される検索結果を統合して最終検索結果を前記クライアントに応答するステップと、
    を含むデータ検索方法。
PCT/JP2013/063887 2013-05-20 2013-05-20 計算機システム、記録媒体及びデータ検索方法 WO2014188477A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/063887 WO2014188477A1 (ja) 2013-05-20 2013-05-20 計算機システム、記録媒体及びデータ検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/063887 WO2014188477A1 (ja) 2013-05-20 2013-05-20 計算機システム、記録媒体及びデータ検索方法

Publications (1)

Publication Number Publication Date
WO2014188477A1 true WO2014188477A1 (ja) 2014-11-27

Family

ID=51933071

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/063887 WO2014188477A1 (ja) 2013-05-20 2013-05-20 計算機システム、記録媒体及びデータ検索方法

Country Status (1)

Country Link
WO (1) WO2014188477A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672710A (zh) * 2021-08-06 2021-11-19 朱遵剑 一种基于分布式检索专利数据的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
EIICHIRO CHISHIRO ET AL.: "Design and Preliminary Evaluation of SPARQL Query Parallelization Method Based On Graph Contraction", IPSJ JOURNAL, vol. 53, no. 12, 15 December 2012 (2012-12-15), pages 2815 - 2828 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672710A (zh) * 2021-08-06 2021-11-19 朱遵剑 一种基于分布式检索专利数据的方法和系统

Similar Documents

Publication Publication Date Title
US11120022B2 (en) Processing a database query using a shared metadata store
US10628449B2 (en) Method and apparatus for processing database data in distributed database system
JP6338817B2 (ja) データベースミドルウェアを用いたデータ管理システム及びその方法
US9081837B2 (en) Scoped database connections
Xu et al. Efficient $ k $-Means++ approximation with MapReduce
CN107515878B (zh) 一种数据索引的管理方法及装置
CN103823846A (zh) 一种基于图论的大数据存储及查询方法
US20170060977A1 (en) Data preparation for data mining
CN106471501A (zh) 数据查询的方法、数据对象的存储方法和数据系统
US11226986B2 (en) Data table partitioning management method and apparatus
CN105550332A (zh) 一种基于双层索引结构的起源图查询方法
Penteado et al. Exploring controlled RDF distribution
WO2014188477A1 (ja) 計算機システム、記録媒体及びデータ検索方法
US10019472B2 (en) System and method for querying a distributed dwarf cube
Li et al. MR‐tree: an efficient index for MapReduce
KR101629395B1 (ko) 데이터 분석 장치, 데이터 분석 방법 및 데이터를 분석하는 프로그램을 저장하는 저장매체
CN114297260A (zh) 分布式rdf数据查询方法、装置和计算机设备
US10963426B1 (en) Method of providing access controls and permissions over relational data stored in a hadoop file system
CN104391928A (zh) 动态构建多维模型定义的装置和方法
JP2016009425A (ja) データ仮想化サーバ、データ仮想化サーバにおけるクエリ処理方法及びクエリ処理プログラム
JP6328078B2 (ja) データベースシステムおよびデータベースシステム用プログラム
Merticariu et al. Array Processing in the Cloud: the rasdaman Approach
Xiao et al. Design and implementation of massive data retrieving based on cloud computing platform
Wang et al. Fast multi-fields query processing in bigtable based cloud systems

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13885185

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13885185

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP