JP6119421B2 - エンコードされたトリプルを格納するデータベース、制御部、方法及びシステム - Google Patents

エンコードされたトリプルを格納するデータベース、制御部、方法及びシステム Download PDF

Info

Publication number
JP6119421B2
JP6119421B2 JP2013109192A JP2013109192A JP6119421B2 JP 6119421 B2 JP6119421 B2 JP 6119421B2 JP 2013109192 A JP2013109192 A JP 2013109192A JP 2013109192 A JP2013109192 A JP 2013109192A JP 6119421 B2 JP6119421 B2 JP 6119421B2
Authority
JP
Japan
Prior art keywords
triple
data
data item
version
database
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.)
Active
Application number
JP2013109192A
Other languages
English (en)
Other versions
JP2013246828A (ja
Inventor
カルヴァーリョ・ヌノ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2013246828A publication Critical patent/JP2013246828A/ja
Application granted granted Critical
Publication of JP6119421B2 publication Critical patent/JP6119421B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/22Indexing; Data structures therefor; Storage structures
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Description

本発明は、データ記憶の分野に関する。特に、本発明の実施形態は、分散記憶環境でグラフデータを記述するトリプルの記憶に関連する。
関係型データベースは、データを行と列で格納する。行及び列は、データを格納する前に定める必要のあるテーブルを構成する。テーブルの定義及びこれらのテーブルに含まれるデータ間の関係は、スキーマと称される。関係型データベースは、固定スキーマを用いる。グラフデータベースは、データをノード及びアークの形式で格納することにより、関係型データベースの重要な拡張を表す。ここで、ノードはエンティティ又はインスタンスを表し、アークは任意の2個のノード間の特定種類の関係を表す。無向グラフでは、ノードAからノードBへのアークは、ノードBからノードAへのアークと同じであると考えられる。有向グラフでは、2つの方向は別のアークとして扱われる。
グラフデータベースは、概して2つの主な種類に分類できる広範な種類の異なるアプリケーションで用いられる。第1の種類は、知的意思決定支援及び自己学習のようなクラス記述子の大規模な集合体(「知識ベースアプリケーション」と称される)を有する複雑な知識ベースシステムを有する。第2の種類は、社会的データ及びビジネスインテリジェンスのようなトランザクションデータに対するグラフ検索の実行を含むアプリケーション(「トランザクションデータアプリケーション」と称される)を有する。多くのアプリケーションは、両方の種類を表し得る。しかしながら、大部分のアプリケーションは、主に知識ベース又はトランザクションデータアプリケーションのいずれかで特徴付けられ得る。グラフデータベースは、種々の分野の膨大な構造化又は非構造化データを格納できる大規模な「意味ネットワーク」を維持するために用いることができる。意味ネットワークは、知識表現の形式として用いられ、コンセプトを表すノード及びコンセプト間の意味関係を表すアークを有する有向グラフである。
幾つかの種類のグラフ表現がある。グラフデータは、多次元アレイとして又は他のシンボルにリンク付けされたシンボルとしてメモリに格納されても良い。別の形式のグラフ表現は、各々指定された種類のオブジェクトの有限シーケンス又は順序付きリストである「タプル」の使用である。n個のオブジェクトを含むタプルは、「nタプル」として知られる。ここで、nは零より大きい任意の非負整数である。長さ2のタプル(2タプル)は、通常、ペアと呼ばれる。3タプルはトリプルと呼ばれ、4タプルはクワドラプルと呼ばれ、以降同様である。
RDF(Resource Description Framework)は、概念記述又は意味ネットワークの標準である情報のモデル化のための一般的方法である。今日利用可能なRDFデータの量は、増大しており、既に単一のサーバに格納することが不可能である。膨大な量のデータを格納し検索可能にするために、データは複数のサーバに保持されなければならない。データの追加、削除及び検索は、分散システムのために特注されたアルゴリズム及びデータ構造を用いて協調的方法で行われなければならない。コンピュータ的に効率的にデータの検索、保守及び操作を可能にするような方法でグラフデータを格納することが望ましい。
全てのコンピューティングハードウェアと同様に、データが格納される(サーバのような)記憶ノードが故障する幾らかの危険は常に存在する。したがって、従来、記憶ノードの故障の場合に、データのコピーを格納する「冗長」記憶ノードを設けることが知られている。しかしながら、このような冗長ノードを設けることは、インフラ提供、保守及び運用コストの観点から費用が掛かり得る。記憶ノードの信頼性が向上するにつれて、別のノードの障害の場合のデータ復旧を単に可能にするために冗長記憶ノードを設けることは、稼働率当たりのコストの値を減少させる。
エンコードされたトリプルを格納するデータベース、制御部、方法及びシステムを提供することを目的とする。
本発明の実施形態は、トリプルとしてエンコードされたグラフデータを格納するデータベースのデータベース制御部であって、各トリプルは、主語、述語及び目的語を有し、各トリプルは格納されたトリプルに従って順序付けられたデータアイテムのセットの中のデータアイテム内に格納され、各データアイテムは、ネットワーク内に分散する複数の記憶ノードの中の記憶ノードに格納され、前記データベース制御部は、前記データベースにトリプルを格納する要求を受信するよう構成される記憶要求受信部、データアイテム生成モジュールであって、前記データアイテム内で前記主語が前記述語及び前記目的語より先行する第1のバージョン、前記データアイテム内で前記述語が前記主語及び前記目的語より先行する第2のバージョン、前記データアイテム内で前記目的語が前記主語及び前記述語より先行する第3のバージョン、のうちのそれぞれ前記トリプルの異なるバージョンを有する2以上のデータアイテムを生成するよう構成される、データアイテム生成モジュール、を有するデータベース制御部を提供する。
前記データベース制御部は、命令分配部であって、前記2以上のデータアイテムの各々について、前記複数の記憶ノードの中から前記データアイテムを格納するよう指示する記憶ノードを選択するよう構成され、前記選択は、順序付けられたセット内の前記データアイテムの位置に依存して行われ、前記命令分配部は、前記複数の記憶ノードの中から少なくとも2個の異なる記憶ノードが前記トリプルの1個のバージョンを有するデータアイテムを格納するよう指示されることを保証するよう構成される冗長モジュールを有する、命令分配部、を更に有する。
有利なことに、本発明の実施形態は、トリプルとして格納されるグラフデータを格納し及びクエリする順序付けを有するフォールトトレラントな分散型記憶システムを提供する。実施形態は、格納されたデータに対する範囲クエリの実行及び記憶ノードの障害の場合に格納されたデータの復旧の両方で高い効率を可能にする、データを格納する技術を提供し又は実施する。
効率的な範囲クエリを実行するために、トリプルは、少なくとも2つの(例えば3つの)異なる順序で格納される。例えば、SPO、POS、OSPの中から2つ(又は3つ)である(ここで、本明細書を通じて、Pは述語を表すため、Sは主語を表すため、Oは目的語を表すために用いられる)。これは、最重要であるトリプルの2以上の変形のうちの先行する要素の変形であり、残りの2要素の位置の変化は、本質的でないことが望ましい。冗長モジュール又は等価な機能は、効率的な範囲クエリを目的として提供されるトリプルの少なくとも2個のバージョンが、記憶ノードの障害の場合にフォールトトレランスを提供するための複製として機能できることを保証する。
纏めると、本発明の実施形態は、効率的な範囲クエリを提供するために、グラフデータを2以上のバージョンに複製されたエンコードされたトリプルとして格納するデータベースを提供するが、失われたデータの再生成のためにデータの冗長性を提供するためにもこれらの複製されたバージョンを用いる。2以上のバージョンの各々は、トリプルの(格納された形式の)先行する要素と異なる要素を有する。
本発明の実施形態では、(RDFトリプルのような)各トリプルは、データアイテム又はその一部として、例えば単純なストリングオブジェクトとして格納され、グラフG内で一意である。よって、Gに関する全ての情報は、データアイテム内に保持される。トリプルは、(ピアツーピアネットワーク環境のような)分散型ネットワーク環境のネットワーク記憶ノード内のプロセスを通じて分散された順序付けられたデータセット内のデータアイテムとして格納される(データアイテムにエンコードされる)。各記憶ノードで動作するプロセスは、データアイテムの順序付けられたサブセットの記憶を実現する。プロセス及びプロセスを動作させるネットワーク記憶ノードは、本願明細書では事実上同義的に表され、前者又は後者が排他的に意図されるときは文脈から明らかである。本発明の実施形態は、データに対して効率的な問い合わせプロシジャを行うことを可能にする。例えば、(発行されると)dminとdmaxとの間のデータアイテムの範囲を検索するプロシジャは、以下のステップを実行する。クライアントアプリケーションがプロセスのうちの1つAに要求を送信する。Aはマッピング関数を実行し、要求されたデータ範囲の1つのサブセットを含むプロセスの記憶ノードID(又はラベル)を得る(例示的な場合には、データアイテムは均等に分散され、各プロセスは多数のデータアイテムの格納を担う)。例として、クライアントアプリケーションにより要求されたキーがプロセスA及びBで格納される場合を検討する。Aは、要求されたデータアイテムの各サブセットを検索するサブ範囲要求を自身へ及びBへブロードキャストする。各プロセスは、要求されたデータアイテムと共にAに応答する。Aは、(結果の順序を維持しながら)結果を集め、クライアントアプリケーションに応答する。
上述の例から、本発明の実施形態が更に効率的なデータの問い合わせを可能にすることが分かる。さらに、ステップは、従来技術の場合のように要求内のデータアイテム毎に繰り返される必要はない。
本発明の実施形態におけるグラフデータは有向グラフデータなので、第1のグラフノードから第2のグラフノードへのアークは、第2のグラフノードから第1のグラフノードへのアークと同じであるとは考えられない。意味ネットワークは、知識又は情報の表現として形成され、エンティティ又はインスタンスのようなコンセプトを表すグラフノード、及びコンセプト間の意味関係を表すアークを有する。
本発明の実施形態では、グラフデータは、トリプルとしてエンコードされる。トリプルは、それぞれ特定の種類である3つのオブジェクトの無限シーケンス又は順序付きリストである。
任意で、トリプルは、RDF(Resource Description Framework)トリプルであっても良い。本願明細書を通じて、「RDFトリプル」への特定の参照が行われるとき、それはRDF標準に準拠するトリプルの例示的形式であることが理解されるべきである。さらに、「トリプル」への参照は、問題のトリプルがRDFトリプルである可能性を有する。同様に、本願明細書のいずれかの箇所で議論されるRDFプロセッサは、APIラッパと格納されたデータアイテムとの間の相互作用のために用いられるプロセッサの例である。
RDF(Resource Description Framework)は、概念記述又は意味ネットワークの標準である情報のモデル化のための一般的方法である。意味ネットワークにおける情報のモデル化の標準化は、共通の意味ネットワークで動作するアプリケーション間の相互接続性を可能にする。RDFは、RDFスキーマ(RDFS)をRDF内の語彙を記述するための言語として提供することにより、一義的な形式意味論と共に語彙を保持する。
任意で、トリプルの1又は複数の要素のうちの各々は(要素は、述語、目的語又は主語である)、URI(Uniform Resource Identifier)である。RDF及び他のトリプルの形式は、識別するものの概念(つまり、オブジェクト、リソース又はインスタンス)を前提として、URIのようなウェブ識別子を用い、それら識別される「もの」を簡易な特性及び特性値の観点で記述する。トリプルの観点では、そのトリプルのウェブリソースの具体化において、主語はエンティティを記述するウェブリソースを特定するURIであっても良く、述語は特性の種類(例えば、色)を特定するURIであっても良く、目的語は問題のエンティティに起因する特性の種類の特定のインスタンスを指定するURIであっても良い。URIの使用は、トリプルに、個々の特性及び値と同様に、リソースを表すノード及びアークのグラフのようなリソースに関する簡易なステートメントを表すことを可能にする。RDFグラフは、SPARQLプロトコル及びRDFクエリ言語(SPARQL)を用いて問い合わせることができる。SPARQLは、World Wide Web ConsortiumのRDF Data Access Working Group (DAWG)により標準化され、主要なセマンティックウェブ技術と考えられている。SPARQLは、クエリがトリプルのパターン、連結、分離、任意のパターンを有することを許容する。
トリプルは、グラフデータを複数の主語−述語−目的語の表現として特徴付けることにより、グラフデータのエンコードを提供する。この文脈では、主語及び述語は、グラフデータのグラフノードであり、オブジェクト、インスタンス又はコンセプトのようなエンティティであり、述語は、主語と目的語の間の関係の表現である。述語は、目的語への特定の種類のリンクを提供することにより、主語に関する何かを断言する。例えば、主語は、(例えば、URIを介して)ウェブリソースを示しても良く、述語はリソースの個々の特性、特徴又は状況を示し、目的語は、該特性、特徴又は状況のインスタンスを示す。言い換えると、トリプルステートメントの集合は、元来、方向性グラフデータを表す。RDF標準は、このようなトリプルの形式化された構造を提供する。
記憶ノードの分散型ノードネットワークは、互いに通信する1より多い異なる記憶ユニットのシステムを有しても良い。例示的な通信パラダイムはピアツーピア(P2P)である。したがって、記憶ノードの分散型ネットワークは記憶ノードのピアツーピアネットワークであっても良い。P2Pは、タスク又は負荷をピア間に区分する分散アーキテクチャである。ピア(個々の記憶ノード又はプロセス)は、等価な特権を有し、アプリケーション内で等しい力を有する参加者である。各ピアは、処理能力、ディスクストレージ又はネットワーク帯域幅のようなそれ自体のリソースの一部を、サーバ又は安定したホストによる集中的強調の必要無しに、他のネットワーク参加者に直接利用可能にするよう構成される。ピアは、リソースの供給者及び消費者の両方であると考えられ、サーバが供給しクライアントが消費するという従来のクライアント−サーバモデルとは対照的である。有利なことに、P2Pは、対数的な通信コストでメッセージを交換する記憶ノードの大規模なグループを維持できる。
実施形態では、トリプルの目的語が複雑な例では、順序付けられたデータに格納される目的語は、該目的語のために生成されるUUID(universal unique ID)であっても良い。この選択肢は、オブジェクトが大きく、そのサイズが範囲クエリプロシジャの効率を低下させてしまう実装シナリオで用いられる実施形態で有用である。
本発明の実施形態では、トリプルは、順序付けられたデータアイテムに格納されるので、データアイテムを返すクエリは、トリプルの表現が検索されるのを可能にする。
効率的な範囲クエリを目的とした同一トリプルの異なるバージョンの記憶は、異なるバージョンが1より多い異なる記憶ノードに格納される場合、データ復旧の目的でも有利であり得る。したがって、本発明の実施形態で冗長モジュールを設けることは、記憶ノードの障害の場合に復旧を可能にするためにデータの冗長性を提供するために、各データアイテムを複製する必要を取り除く。
任意的に、前記データアイテム生成モジュールは、前記第1のバージョン、前記第2のバージョン及び前記第3のバージョンのうちのそれぞれ前記トリプルの異なるバージョンを有する3個のデータアイテムを生成するよう構成される。
有利なことに、トリプルの3個の異なるバージョンのデータアイテムを有することは、トリプルの3個の要素のうちのいずれかによる効率的な範囲クエリを可能にする。つまり、主語、目的語又は述語の範囲が指定され、範囲に含まれるトリプルを格納するデータアイテムが効率的に返される。
前記冗長モジュールは、前記少なくとも2個の異なる記憶ノードがそれぞれ前記トリプルの異なるバージョンを有するデータアイテムを格納するよう指示されることを保証するよう構成されても良い。例えば、前記複数の記憶ノードの中に3個以上の記憶ノードがある実施形態では、前記冗長モジュールは、前記複数の記憶ノードの中から3個の異なる記憶ノードがそれぞれ前記トリプルの異なるバージョンを有するデータアイテムを格納するよう指示されることを保証するよう構成されても良い。
この特定の実装では、トリプルの3個の異なるバージョンを格納するデータアイテムは、それら自体がネットワーク内の3個の異なる記憶ノードに分散される(記憶ノード当たり1個)。これは、3個の異なるバージョンを有するという利点があるので、さらに、これらのバージョンのうちのいずれかを格納する記憶ノードが故障した場合に、トリプルの1個のバージョンを格納する2個の他の記憶ノードが存在し、したがって故障した記憶ノードに格納されたバージョンが効率的に再生成できるので、有利である。
代替として、冗長モジュールは、3個の異なる記憶ノードが、必ずしも異なるバージョンではないが、それぞれトリプルの1個のバージョンを格納することを保証するよう構成されても良い。例えば、命令分配部により実行されるマッピングプロシジャが1個の記憶ノードに同一のトリプルの2個の異なるバージョンを、別のノードに別の異なるバージョンを生じる場合、冗長モジュールは、トリプルの既存のバージョンのうちのどれが前記1個の記憶ノード及び前記別の記憶ノードに格納されているかに拘わらず、第3の記憶ノードに格納するためにトリプルの特定のバージョンの複製(例えば、SPO)を単に生成しても良い。
本発明の実施形態では、データアイテムは、トリプルの要素を表すストリングオブジェクトの辞書順により順序付けられても良い。ストリングオブジェクトは、データアイテムであるか又はデータアイテムに含まれている。例えば、辞書順はアルファベット順であっても良い。本発明の実施形態の実装では、データアイテムの主語、述語又は目的語(又は目的語のUUID)のいずれかを固定することによりデータアイテムのセットをクエリすることが望ましい。このようなくえりの結果を効率的に返すために、トリプルの2以上の要素がデータアイテム内の最初の要素として格納されることが有利である。
順序付けられているデータアイテムは、データアイテム間の比較を行うこと及び範囲クエリを実行することを可能にする。D1とD2(D1<D2)の間の範囲クエリは、データアイテムの特定の所定の順序メトリックに従って、D1より大きくD2より小さいデータアイテムの順序付けされたセットに含まれるデータアイテムを返す。勿論、データアイテムのセットは、分散型ノードネットワークのノードに渡って分割される(ここで、ノードは、サーバのようなリソース、又は該サーバで動作するプロセスである)。例示的な実施形態では、範囲クエリは、クエリをノードのうちの1つに送信することにより、アプリケーションの代わりにRDFプロセッサのようなプロセッサにより開始される。ノードは、どの他のノードがクエリにより探し出されたデータアイテムを有するかを、データアイテムの論理表現をD1及びD2に適用し、サブ範囲クエリをこれらのノードに対して実行することにより計算するよう構成される。ノードは、次に、(データアイテムの順序を維持したまま)結果を集め、それらをクエリを行使したプロセッサに返すよう構成される。
トリプルがデータアイテム内に格納される形式の観点から、データアイテムの各々は、対応するトリプルの主語、述語及び目的語を有するストリングオブジェクトを含んでも良い。
有利なことに、ストリングオブジェクトは、一般に読み取り可能であり、その比較及び存在する他の処理要求では確立されたルーチンである。データベース自体及びデータベースにアクセスするアプリケーションは、ストリングオブジェクトを処理する確立したルーチンを有しても良い。さらに、ストリングオブジェクトは、検索及び比較(オーダ)するのが速い。
このような実施形態では、データアイテムは、ストリングオブジェクトのアルファベット順の比較に従って順序付けられても良い。
有利なことに、検索、範囲、他の比較関数のようなデータベース関数が利用可能である。データベース関数は、ストリングデータオブジェクトのアルファベットの内容を比較するために、コンピュータ的に効率的な観点で最適化される。したがって、このようにデータアイテムを順序付けする実施形態は、コンピュータ的効率の観点で特に有効である。上述の実施形態では、前記データアイテムは、該データアイテムのストリングオブジェクトのアルファベット順に従って順序付けられても良い。データアイテムは、単にストリングオブジェクトであっても良く、又は他のオブジェクト若しくはデータを有しても良い。ストリングは、英数字シンボルのシーケンスである。
任意的に、前記命令分配部は、順序付きハッシュテーブルを用いることにより、前記複数の記憶ノードの中からデータアイテムを格納するよう指示する記憶ノードを選択するよう構成されても良い。有利なことに、ハッシュテーブルは、データアイテムをノードにマッピングするコンピュータ的に効率的な方法を提供する(ここで、マッピングは、前記複数の記憶ノードの中からデータアイテムを格納するよう指示する記憶ノードを選択することと意味において等価である)。順序付きハッシュテーブルは、ハッシュ関数を用いて、データアイテムの内容に基づきデータアイテムをノードに割り当てる。
キー値体系では、ハッシュテーブル又はハッシュマップは、ハッシュ関数を用いてキーとして知られる特定する値をそれらの関連付けられた値にマッピングするデータ構造である。したがって、ハッシュテーブルは、連想配列を実施すると言われている。ハッシュ関数は、対応する値が検索されるアレイ要素(記憶場所、スロット又はバケットとも称される)のインデックス(ハッシュ)にキーを変換するために用いられる。
任意的に、前記順序付きハッシュテーブルは、コンシステントハッシング関数を用いても良い。
コンシステントハッシングは、データアイテムが格納される記憶ノードの数の変化に応答して再マッピングされる必要のある順序付けられたデータアイテムの数を調整する。例えば、D個のデータアイテムがピアツーピアシステム内のn−1個の「ピア」の間に分散されているシステムを考える。新しいピアがシステムに参加した場合、D/n個のキーのみが再マッピングされる必要がある。コンシステントハッシングでは、新しいピアがシステムに追加されるとき、他のピアから格納されたデータアイテムのほぼ等しい分担を取り、ピアが削除されるとき、そのデータアイテムは残りのピアの間で分担される。
ハッシング関数又はその他かに拘わらず、特定のデータアイテムを格納するよう指示する記憶ノードを選択するために命令分配部により用いられる技術は、決定論的であるべきである。つまり、複数の記憶ノードの中からデータアイテムを格納するよう指示する記憶ノードを選択することは、決定論的選択である。したがって、選択の結果は、ネットワーク内の別のデータベース制御部により、又は後続の動作において同じデータベース制御部により決定できる。1より多いデータベース制御部を有する実施形態では、同じ決定論的選択プロシジャが各データベース制御部により用いられ、同じ入力変数が与えられた場合に同じ結果が生成されるようにする。
KVS構成の値の中の追加情報として、又はその他の場合にはトリプルを有するデータアイテムに格納されたデータとして、本発明の実施形態では、同一のトリプルの異なるバージョンを格納する2以上のデータアイテムの各々は、該トリプルの異なるバージョンを格納する他のデータアイテムの各々が格納されている記憶ノードを識別するデータも有する。
有利なことに、同一のトリプルの異なるバージョンを格納する他のデータアイテムの各々が格納される記憶ノードを識別するデータを有することは、故障したノードに格納された、したがって復旧又は再生成される必要のあるデータアイテムを識別するために、故障していないノードに格納されたデータアイテムを用いることを可能にする。
記憶ノードは、IDにより識別可能である。IDは、記憶ノードのネットワークの中で分散され格納されるとき、データアイテムの順序付けられたセットの順序が維持されるように順序付けられる。例えば、IDは、ネットワーク内の記憶ノードのアドレスにハッシング関数を適用することにより得られても良い。
本発明を実現する前記データベース制御部は、記憶ノードの分散型ネットワーク内の記憶ノードが障害になるときを検出し、該障害になった記憶ノードに格納されたデータアイテム内に格納されたトリプルを識別するよう構成される障害検出部、を更に有しても良く、前記データベース制御部は、識別されたトリプルの各々について前記データアイテム生成モジュールにおける生成及び前記命令分配部における選択を実行するよう構成され、前記障害になった記憶ノードは、記憶ノードが選択される前記複数の記憶ノードから除外され、前記命令分配部は、選択した記憶ノードに、識別されたトリプルの1個のバージョンを有するデータアイテムを格納するよう指示し、及び現在選択されていない障害の前の記憶ノードにより格納されていた識別されたトリプルのバージョンを有するデータアイテムの削除を指示するよう構成される。
有利なことに、障害検出部及びデータベース制御部の関連する機能は、記憶ノードの故障の場合に、効率的なデータ復旧プロセスを提供し、一方で、単にデータ復旧目的のためにデータのコピーを格納することに関するシステムコストを最小化する。
任意的に、本発明を具現化する命令分配部では、前記冗長モジュールは、2以上のデータアイテムについての記憶ノードの選択の後に、前記2以上のデータアイテムを格納するために選択された記憶ノードの中から異なる記憶ノードの数の総数を得て、前記トリプルの1個のバージョンを有するデータアイテムを格納するよう指示されるよう前記冗長モジュールが保証するよう構成された異なる記憶ノードの数より前記総数が少ない場合、前記冗長モジュールは、前記複数の記憶ノードの中から前記トリプルを有する更なるデータアイテムを格納する追加記憶ノードの数を指示するよう構成されても良く、該数は、前記総数と前記トリプルの1個のバージョンを有するデータアイテムを格納するよう指示されるよう前記冗長モジュールが保証するよう構成された異なる記憶ノードの数との間の差に等しい。
このような冗長モジュールは、命令分配部により用いられる選択プロシジャが決定論的であるとき、データアイテムとそれらが格納される記憶ノードとの間の関係の決定論的特性を阻害することなく、データアイテムの複製をデータ復旧目的のために格納させるので、特に有利である。冗長モジュールがトリプルの1個のバージョンを有するデータアイテムを格納するよう指示されることを保証するよう構成された異なる記憶ノードの数は、実装固有であるが、好適な実施形態では3である。したがって、トリプルの1個のバージョンを有するデータアイテムを格納するよう指示される異なる記憶ノードの数は、3から総数を減じたものである。トリプルの特定のバージョン(例えば、SPO)を有するデータアイテムの複製が作成され、追加記憶ノードに格納されても良い。
さらに、前記追加記憶ノードにより格納される前記更なるデータアイテムは、データアイテムの前記順序付けられたセットの外部に格納される。
有利なことに、これは、データアイテムの順序付けられたセットの順序が維持され、データアイテムとそれらが格納されるノードとの間の関係の決定論的特性も維持されることを保証する。
代替の実施形態では、冗長モジュールは、データアイテムが格納される複数の記憶ノードの中から記憶ノードを選択するために命令分配部により用いられるハッシングアルゴリズムに組み込まれる。
本発明の実施形態は、サーバのような、本発明を具現化するデータベース制御部として機能するよう構成されるコンピューティング装置も含む。例えば、前記コンピューティング装置は、分散型ネットワーク内の記憶ノードのうちの1つであっても良い。さらに、前記コンピューティング装置は、複数の前記コンピューティング装置の中の1つであっても良い。したがって、記憶ノードの分散型ネットワークでは、複数の記憶ノードのうちの1より多いノード(例えば全部)は、本発明を具現化するデータベース制御部の機能を有する。
本発明の実施形態は、コンピュータプログラム又はコンピュータプログラムを格納する非一時的記憶媒体を含む。該コンピュータプログラムは、コンピューティング装置により実行されると、該コンピューティング装置に本発明を具現化するデータベース制御部として機能させる。
また、本発明は、トリプルとしてエンコードされたグラフデータをデータベースに格納する方法により具現化される。各トリプルは、主語、述語及び目的語を有し、各トリプルは格納されたトリプルに従って順序付けられたデータアイテムのセットの中のデータアイテム内に格納され、各データアイテムは、ネットワーク内に分散する複数の記憶ノードの中の記憶ノードに格納され、前記方法は、前記データベースにトリプルを格納する要求を受信するステップ、2以上のデータアイテムを生成するステップであって、前記2以上のデータアイテムの各々は、前記データアイテム内で前記主語が前記述語及び前記目的語より先行する第1のバージョン、前記データアイテム内で前記述語が前記主語及び前記目的語より先行する第2のバージョン、前記データアイテム内で前記目的語が前記主語及び前記述語より先行する第3のバージョン、のうちの前記トリプルの異なるバージョンを有する、ステップ、を有する。前記方法は、前記2以上のデータアイテムの各々について、前記複数の記憶ノードの中から前記データアイテムを格納するよう指示する記憶ノードを選択するステップであって、前記選択は、順序付けられたセット内の前記データアイテムの位置に依存して行われる、ステップ、前記複数の記憶ノードの中から少なくとも2個の異なる記憶ノードが前記トリプルの1個のバージョンを有するデータアイテムを格納するよう指示されることを保証するステップ、を更に有する。
本願明細書で議論するデータアイテムは、テーブルに行又はエントリとして格納される独立した情報片であっても良い。しかしながら、本発明の実施形態は、各前記データアイテムがキー値体系(KVS)内のキー値ペアのキーである実施形態を含む。
有利なことに、キー値体系のキーに完全なトリプルを含むキーの格納は、関数が、トリプルが見付かるかも知れない場所への単なるリンク又は識別子ではなく、完全なトリプルを返すキーのセットに対して実行されるのを可能にする。
キー値ペアのキ―に格納されることは、キー値ペアのキ―であるストリングオブジェクトとしてトリプルの要素を表すことを含む。
キー値システム(KVS)又はキー値ストアは、複数の格納されたキー及び値である。各キーは、関連付けられた値を有し、論理関数又は論理木、例えばハッシュテーブル又はハッシュマップを介して該関連付けられた値にマッピングされる。ハッシュテーブル又はハッシュマップは、ハッシュ関数を用いて(値を特定する)キーをそれらの関連付けられた値にマッピングするデータ構造である。本発明の実施形態では、ハッシュ関数は、キーを、記憶ノードの分散型ネットワークを形成する複数の記憶ノードのうちの記憶ノード(記憶リソース)の識別表示に変換するために用いられても良い。
実施形態は、複数の前記キー値ペアの各々の値は、キーに格納されたトリプルに関連する追加情報を有しても良い。一例として、トリプルに関するメタデータは、値に格納される。この文脈におけるメタデータは、トリプルの中の情報アイテムに関する説明データである。キーはトリプルを格納し、値は該トリプルに関する情報を格納する。
任意で、上述の実施形態では、前記追加情報は、アプリケーションのアイデンティティに依存して前記データベースにアクセスする前記アプリケーションに利用可能にされるデータである。
有利なことに、このような実施形態は、データベース内のデータを読み出し及び/又は書き込むアプリケーションに依存する特徴を有効にすることにより、データベースの機能を拡張する。データは、アプリケーション依存データであり、KVSにおいて不可解オブジェクトとして見なされ取り扱われても良い。値コンテナは、アプリケーション依存データを設定及び読み出すAPIを有しても良い
任意的に、上述のKVS実装では、前記追加情報は、リード及び/又はライトアクセスが前記キー値ペアに格納されたRDFトリプルに対して行われるとき通知を受信するために登録されるアプリケーションのリストを含む。さらに、追加情報は、コンテナを格納するノードによる実行のためにソフトウェアコードを有しても良い。例えば、ソフトウェアコードは、特定のイベントに応答して格納され呼び出されても良い。また、ソフトウェアコードの引数もコンテナに格納される。例えば、値は、ソフトウェアコードのブロックを更新関数として格納しても良い。関連付けられたトリプルが更新されるとき、更新関数が呼び出され、他のトリプルのリスト及びそれらの場所が引数である。他のトリプルのリストは、クライアントアプリケーションがトリプルを、特定のイベントと関連付けられたコンテナ内のリストに追加することにより、生成されても良い。
有利なことに、トリプルデータへの読み出し又は書き込みアクセスが行われるときを通知するアプリケーションは、格納されたデータを用いてデータベースとアプリケーションとの間の相互作用のレベルを向上させる。通知を受信するために登録されたアプリケーションのリストは、通知が管理され得るメカニズムを提供する。
本発明の好適な特徴は、単なる例として添付の図面を参照して以下に説明される。
本発明を具現化するデータベース制御部の概略図である。 本発明を具現化するシステムの概略図である。 図1のデータベース制御部のどの構成要素が図2のどのソフトウェアレイヤに対応するかの例を示す。
図1は、本発明を具現化するデータベース制御部を概略的に示す。データベース制御部10は、複数の構成要素、つまり、記憶要求受信部12、データアイテム生成モジュール14、命令分配部16を有する。命令分配部16自体は、冗長モジュール18を有する。構成要素自体は、専用ハードウェア、例えばプロセッサ、メモリ、記憶装置、及びネットワークインタフェースにより実現されても良い。これらの全ては、適切な場合には、以下に記載する方法で機能するよう構成される。代替として、データベース制御部は、サーバのようなそれ自体がノードの分散型ネットワーク20内の記憶ノードであり得るコンピューティング装置で実行するコンピュータプログラム(又は1より多いコンピューティング装置で協調的に実行するコンピュータプログラムスーツ)により提供される機能であっても良い。このような実施形態では、構成要素は、それぞれコンピューティング装置自体の一部として設けられるハードウェアを用いてそれらの専用機能を実現する機能ユニット又はモジュールである。
データベース制御部10は、単一の記憶ノードにある中央制御部として、協力する複数の記憶ノードによる中央制御部として、又はそれぞれ個々の記憶ノードにある複数の等価な制御部の中の制御部として実現され得る。例えば、データベース制御部10は、ノードの分散型ノードネットワーク内の記憶ノードで実行するプログラムにより提供されても良く、1又は複数の他の記憶ノードも等価なプログラムを実行し、データベースが複数のデータベース制御部10を介してアクセス可能になるようにしても良い。
データベース制御部10は、記憶ノードの分散型ノードネットワーク20に接続されるように示される。命令分配部16から始まり記憶ノードで終わる矢印は、発行されているデータアイテムを格納する命令を表す方向を示す。しかしながら、データベース制御部と分散型記憶ノードのネットワークとの間のデータコネクションは双方向であっても良い。実際に、本発明の実施形態では、各記憶ノード及びデ―タベース制御部は、有線、無線又は両者の特定の組合せかに拘わらずネットワークを介して互いに通信可能であっても良い。ノードの分散型ネットワーク20内の記憶ノードの各々は、データベース制御部10のようなデータベース制御部を有しても良い。
記憶要求受信部12は、データベースにトリプルを格納する要求を受信するよう構成される。要求は、例えば、データベースに新しいトリプルを追加したいアプリケーションを実行するクライアント装置から生じても良い。記憶要求受信部12は、例えば、RDFレイヤ又はRDFレイヤの一部であっても良く、データベースにトリプルを追加する、場合によってはデータベースからトリプルを削除し、データベースをリード若しくはそれに問い合わせる要求を処理する。データベースにアクセスしたいアプリケーションとデータベース自体との間の相互作用は、記憶要求受信部12を介して生じ、データベース制御部10及び/又はノードの分散型ネットワーク20内の1又は複数の記憶ノードによりエクスポートされるAPI(application programming interface)により指定される形式であっても良い。記憶要求受信部12は、アプリケーションからの要求を解釈し該要求に基づきデータベース制御部10の他の構成要素のために命令を生成する処理を実行するよう構成されても良い。例えば、記憶要求受信部12は、トリプル記憶要求の基礎を形成するトリプルを表すストリングを抽出し、抽出したストリング(又はトリプルの他のデータ表現)をデータアイテム生成モジュール14に渡しても良い。
データアイテム生成モジュール14は、それぞれ以下のトリプルの異なるバージョンを有する2以上のデータアイテムを生成するよう構成される。
第1のバージョンでは、データアイテム内で、主語が述語及び目的語より先行する。
第2のバージョンでは、データアイテム内で、述語が主語及び目的語より先行する。
第3のバージョンでは、データアイテム内で、目的語が主語及び述語より先行する。
各バージョンでトリプルの残りの要素が現れる順序も予め定められても良い。データアイテム生成モジュール14は、それぞれ上述の3個のバージョンのうちの異なる1個を有する3個のデータアイテムを生成するよう構成される。データアイテム生成モジュール14は、RDFレイヤ、RDFレイヤの一部、又はRDFレイヤの部分と記憶レイヤの部分との組合せであっても良い。データアイテム生成モジュール14は、トリプル又はトリプルを表現するデータを記憶要求受信部12から受け付けるために、及び要求されたトリプルの異なるバージョンを生成するために、及び場合によってはトリプルのこれらの異なるバージョンを追加データを有する又は有しない特定フォーマットのデータアイテムにパッケージ化するために必要な処理を実行するよう構成される。データアイテム生成モジュール14は、生成したデータアイテムを命令分配部16に渡すよう構成される。
命令分配部16は、2以上のデータアイテムの各々について、複数の記憶ノード20の中からデータアイテムを格納するよう指示する記憶ノードを選択するよう構成される。この選択は、順序付きセット内のデータアイテムの位置に基づき行われる。命令分配部16は、冗長モジュール18を含み、複数の記憶ノード20の中の少なくとも2個の異なる記憶ノードがトリプルの1個のバージョンを含むデータアイテムを格納するよう命令されるように構成される。命令分配部16は、記憶レイヤの一部であっても良く、例えば、データアイテムを含む要求を記憶ノードへネットワークを介して送信することにより、又はそのような命令を送信させることにより、記憶ノードに特定のデータアイテムを格納するよう命令するために必要な処理を実行するよう構成される。例えば、(冗長モジュール18を介して)命令分配部16は、データアイテムを記憶ノードに決定論的方法で及び同一トリプルの2個のバージョンが同一の記憶ノードに格納されないことを保証するようにマッピングするよう構成されても良い。代替として、命令分配部は(例えば、決定論的ハッシング関数を用いて)データアイテムの記憶ノードへのマッピングを担い、冗長モジュールは、特定のトリプルの2個以上の異なるバージョンを有するデータアイテムのマッピングを再検討し、マッピングの結果が1個より多い記憶ノードがトリプルの1個のバージョンを格納していない場合、トリプルを有するデータアイテムの追加の複製を生成し、再検討されたデータアイテムを格納するよう指示された以外の記憶ノードに追加の複製を格納するよう指示するよう構成される。
ノードの分散型ネットワーク20は、例えば、分散型ピアツーピアネットワークであり得る。このようなネットワークは、拡張可能であり、多数のサーバを有しても良い。実際、データアイテムの順序付きセットの分散レベルが高いほど、冗長モジュールにとって、必要数の記憶ノードがトリプルの1個のバージョンを含むデータアイテムを格納するよう指示されるよう保証することは容易である。
図2は、本発明を具現化するシステムを示す。図2では、各サーバ1〜N及びアプリケーション30は、コンピュータで実行される。全てのコンピュータは、ネットワークを介して通信可能に接続される。異なるモジュール間の矢印は、ネットワーク通信を表す。しかしながら、これらは、以下に議論する通信を強調するためであり、可能なモジュール間通信をこのようなシステムアーキテクチャに限定しない。アプリケーション30は、全てのサーバ1〜Nによりエクスポートされる特定のAPIを用いて複数のサーバのうちの1個と相互作用する。各サーバは、以下の3個のソフトウェアコンポーネントにより構成されるデータベース制御部を有する。
・RDFレイヤ11:RDFレイヤ11は、アプリケーションからの要求を処理しデータを追加及び削除する、又は既存データに対して高レベルクエリを実行する。アプリケーション要求は、低レベル要求に変換され、記憶レイヤに転送される。RDFレイヤ11は、RDFデータを単純且つ同型のトリプル表現に変換する。高レベルクエリも、範囲クエリのセットに変換されなければならない。RDFレイヤ11は、記憶要求受信部12の例である。
・記憶レイヤ15:記憶レイヤ15は、データアイテムの生成及び分配、並びに範囲クエリの実行を担う。記憶レイヤ15は、データアイテム生成モジュール14、命令分配部16、冗長モジュール18の例である。
・障害検出部19:障害検出部19は、サーバ障害を検出し、残りの(障害のない)サーバを記憶レイヤ15に通知するウォッチドックの実行を担う。記憶レイヤ15及び障害検出部19は、通信ネットワークを用いて異なるサーバの同様のコンポーネントと通信する。
本実施形態のデータベースは、ネットワークを通じて通信する分散型のサーバ(記憶ノード)セット20を有する記憶システムにより設けられる。システムを構成するサーバセット20は、分散型順序付きハッシュマップも実装する。アプリケーション30、例えばネットワークを介して1又は複数のサーバ20に接続可能なクライアントマシンで実行するアプリケーションは、複数のサーバのうち1個に接続することにより、システムと相互作用する。クライアントアプリケーション30は、例えば新しいトリプルを追加することにより、トリプルを削除することにより、及び範囲クエリを実行することにより、RDFデータを追加し、削除し、及び問い合わせるためにインタフェースを提供される。
サーバ20は、ネットワークを通じて互いに通信し、ぞれぞれ、それらの個々のデータベース制御部10のコンポーネントとして障害検出モジュール19を実行することにより、分散型障害検出部19を実行する。処理Pが失敗すると(処理Pは、分散型サーバセット20のサーバにより実現される記憶処理を示す)、最終的に、他の処理は、障害検出部からPが失敗したことを示す通知を受信する。本実施形態のデータベース内のデータは、トリプル、例えばRDFトリプルとして格納される。RFDトリプルは、[主語(Subject),述語(Predicate),目的語(Object)]又は単にSPOの形式のRDFデータである。データは、同一のトリプルをPOS若しくはOSPのような異なる順序で格納する複製を用いて範囲クエリが効率的に実行できるような方法で格納される。本発明の実施形態では、複製は、データ復旧処理でも用いられる。
データベースに格納されるデータセットは、各データアイテム内のトリプルデータに従って順序付けられる。データセットの範囲は、N個のセグメントに分けられる。ここで、Nは、記憶装置として用いられるサーバの数である。各サーバは、データのセグメントに対して責任がある。データがシステムに追加されるとき、各トリプルの少なくとも2個の(望ましくは3個の)バージョンが生成され、これらのバージョンは、少なくとも2個の(望ましくは3個の)異なるサーバに格納される。セグメント(及びその対応するサーバアドレス又はID)は、コンシステントハッシングのような決定論的技術を用いて、記憶レイヤ15(命令分配部16)により各トリプルバージョンについて計算される。各トリプルバージョンは、当然に異なるサーバに格納されるが、コンシステントハッシングは、常にこの特性を保証できない。各トリプルバージョンが異なるサーバに格納されない(又は複数のバージョンが少なくとも2個の異なるサーバに散在しない)場合、トリプルの余分の複製が異なるサーバのデータアイテムに格納される。特定のトリプルを有するデータアイテムが格納される全てのサーバは、決定論的プロシジャを用いて局所的に(例えば、各データベース制御部10において)計算され得る。範囲クエリは既に順序付きセット内に格納されたデータに対して実行されるので、範囲クエリを開始するサーバは、局所的に問い合わせられる必要のないサーバのリストも計算できる。
トリプルの少なくとも2個の(望ましくは3個の)コピーは、以下の2つの目的を果たす。範囲クエリで指定されたプレフィックスに拘わらず範囲クエリを効率的に実行すること(つまり、範囲は主語、述語又は目的語により指定でき、依然として効率的に処理できる)、及び障害からデータを復旧させることである。SPOの形式でトリプルを含むサーバに障害が生じるとき、1又は複数の追加コピー、つまりPOS及びOSPがシステムに存在する。これらのトリプルは、正確に同一のデータを含むが、異なる順序で表現されている。この情報を用い、本発明を実現するシステムは、トリプルの異なる表現から失われたデータを取り戻すメカニズムを提供する。失われたデータは復旧され、各トリプルの新しい位置が再計算される。あるサーバ(又は処理)が障害になるとき、生き残ったサーバは、どのトリプルが復旧され入れ替えられる必要があるかを理解するのに十分な情報を有する。復旧処理は、障害に対する耐性を保証するために必要な複製の数を維持するだけでなく、システム内の全てのサーバにより決定論的に到達可能なサーバ内にデータが置かれることを保証することが望ましい。
概要を前述したように、コンシステントハッシングは、データのセグメントをサーバにマッピングする非常に効率的な方法であり、本発明の実施形態において、トリプルのバージョンを含むデータアイテムを格納するよう指示すべき記憶ノード(サーバ)を選択するために記憶レイヤ15(命令分配部16)により用いられても良い。このようなハッシング方法は、同一のトリプルを格納する各データアイテムに対して異なるサーバを選択しても良いが、データアイテム、サーバの相対数及び(例えば、データアイテム間の相対的順序が維持されることを要求する)ハッシングアルゴリズムに依存して、必ずしも該当しない。したがって、本発明の実施形態は、同一トリプルの異なるバージョンを格納するデータアイテムが少なくとも2個の(望ましくは3個の)異なるサーバに格納されることを保証するメカニズムを備える。
より具体的には、記憶レイヤ15(命令分配部16)は、システムが例えば常に3個の異なるサーバ内にトリプルの少なくとも2個のコピーを有することを保証するために、3個の異なるシナリオを処理する機能(冗長モジュール18)を備える。
・第2のシナリオでは、トリプルの3個のバージョン(SPO、POS、OSP)は、当然に異なるサーバに格納される。例えば、SPOはサーバ1に格納され、POSはサーバ2に格納され、OSPはサーバ3に格納される。この例では、更なる動作を行う必要はない。
・第2のシナリオでは、トリプルの2個のバージョンは同一のサーバに格納され、1個のバージョンは別のサーバに格納される。例えば、SPO及びPOSはサーバ1に格納され、OSPはサーバ2に格納される。この例では、2個のサーバのみがトリプルの1個のバージョンを有し、システムは、この特定のデータアイテムについての障害に対する耐性が低い。これを回避するため、(例えば、冗長モジュール18を介して)データベース制御部10は、追加コピーが第3のサーバに格納されるために必要な処理を実行する。
・第3のシナリオでは、トリプルの3個のバージョン全て、つまりSPO、POS及びOSPは、同一のサーバ(例えば、サーバ1)に格納される。この例では、システムは、サーバ1が障害となった場合、このデータアイテムを失ってしまう。同レベルの耐障害性を保証するため、(例えば、冗長モジュール18を介して)データベース制御部10は、追加コピーが(既に既存の3個のバージョンを格納しているサーバと異なる且つ互いに異なる)2個の異なるサーバに格納されるために必要な処理を実行する。
以上の3つのシナリオを上述の方法で処理することにより、システムは、データベース内の各トリプルについて、該格納されたトリプルの1個のバージョンを含む少なくとも3個のデータアイテムが存在することを保証する。トリプルの異なるバージョンを格納するデータアイテムが3個の異なるサーバにマッピングされない場合(シナリオ2及び3)、データアイテムのうちの1個の更なる複製が追加され、又はトリプルの1個のバージョンを有する新しいデータアイテムが追加される。シナリオ2では、システムは、トリプルのあるバージョンを有する4個のデータアイテムを格納する必要があるだろう。シナリオ3では、システムは、トリプルの1個のバージョンを有する5個のデータアイテムを格納する必要があるだろう。これは、この特定の実装では、元のデータアイテム(又はトリプル)が、データアイテムの順序付きセット内のそれらの場所から移動できないためである。シナリオ2及び3の発生頻度は、シナリオ1に比べて相対的に低いが、格納すべきデータ量及び利用可能なサーバの量に依存する。トリプルを格納する本方法は、任意のネットワーク構成において用いることができるが、多くのサーバを有する格納可能なピアツーピアネットワークを用いることは、シナリオ1の発生確率を上昇させ、したがってシステム内のトリプルのバージョンの複製の数を低減する。
さらに、この特定のシステムは、障害検出部19を有する。障害検出部の単純なバージョンは、タイムアウト及び「ping」メッセージを用いるよう構成されるものである。各サーバの障害検出部19は、「ping」メッセージを他の各サーバへ周期的に送信するよう構成される。例えば、サーバ1が、指定された時間量の後にサーバ2から「ping」メッセージ(又は他の種類の所定の応答)を受信しない場合、サーバ1は、サーバ2に障害が生じたと疑い、サーバ2を利用可能なサーバのリストから除外するために残りのサーバとの合意プロシジャを実行し、データ復旧処理を実行する。障害検出部を実施するこの特定の方法は、「最終的な完全な障害検出部」として知られ、ネットワークメッセージが失われない且つメッセージ遅延の(未知の)上限が存在するシステムにおいて特に有用である。任意的に、「ping」メッセージは、ネットワーク帯域幅を節約するために、定期的なサーバメッセージに抱き合わせることができる(piggyback)。更なる詳細事項及び障害検出部を実施する方法は、文献「Unreliable failure detectors for reliable distributed systems」、Tushar Deepak Chandra及びSamToueg、1996、J.ACM 43, 2 (March 1996), 225-267、DOI=10.1145/226643.226647から得られる。
図2に示したシステムでは、各サーバは、等価な役割を実行するそれ自身のデータベース制御部を有する。各サーバは、以下のデータ構造を有する処理を実行する。
・記憶テーブル。各処理は、以下のフィールドを有するテーブルを格納する。
−triple_data:トリプル
−triple_order:Enum{SPO,POS,OSP}
−spo_node_ID:整数
−pos_node_ID:整数
−osp_node_ID:整数
記憶テーブル内で、エントリは、第1のフィールド(triple_data)により順序付けられ、各処理に対するローカルな範囲クエリを可能にする(例えば、トリプルを表現するストリングに基づくアルファベット順)。triple_orderは、トリプルがエンコードされる順序を表す数である。したがって、例えばtriple_orderに格納された数に基づき、トリプルのどの要素が例えば第2の要素により表現されるかを引き出せる。この特定の実装では、同一のトリプルの3個のバージョンの各々が格納されるノードのIDは、記憶テーブル内にトリプルと共に格納される。代替の実装では、記憶テーブル及び以下に議論する複製テーブルは、順序付きトリプルと検索可能なインデックスの両方をデータベース制御部に利用可能にするように、順序付きTrieと統合できる。
処理/サーバが格納し得る追加データ構造は、以下を含む。
・node_IDを記憶テーブルの行へのポインタにマッピングするインデックス。例えば、特定のサーバの障害の場合に、該サーバのnode_IDが決定され、インデックスは障害の起きたサーバにあるデータの復旧のために必要な行を効率的に識別可能にする。
・複製テーブル。これは、例えば3個の異なるサーバの各々が同一のトリプルの1個のバージョンを格納するという要件を満たすために生成されるトリプルのバージョンの複製を格納するために用いられる。トリプルの既存のバージョンの順序を維持するために、これらのトリプルは、主記憶テーブルの外部に格納される。したがって、この複製テーブルは、トリプルをSPO形式でのみ格納しても良く、以下のフィールドを有しても良い(ここで、replica1_IDはトリプルのSPOバージョンの第1の複製が見付かるノードのIDを示す整数であり、第2の複製が存在する場合にはreplica2_IDはトリプルのSPOバージョンの第2の複製が見付かるノードのIDを示す整数である)。
−triple_data:トリプル
−spo_node_ID:整数
−pos_node_ID:整数
−osp_node_ID:整数
−replica1_ID:整数
−replica2_ID:整数
・node_IDを複製テーブルの行へのポインタにマッピングするインデックス。再び、このようなインデックスは、データ復旧の目的のために都合が良い。
本実施形態では、各トリプルは、分散型記憶システムに3回、つまりSPOの順序で、OSPの順序で、及びPOSの順序で格納される。これは、データアイテムに格納された各トリプルの3個のバージョンが存在することを保証し、検索種類(主語による、述語による又は目的語による)に拘わらず範囲クエリが効率的に実行できることを保証する。以下の段落で、どのようにトリプルが格納され、処理が失敗したときにどのように情報が復旧されるかを説明する。
データは、線形データ空間を通じて順序付けられるトリプルのセットを有する。このデータ空間は、セグメントに分けられる。特定のデータアイテムが置かれたセグメントを効率的に検索するために、Trie(ソート木)のようなメカニズムを用いることができる。ここで、Trieの各々の葉はセグメントに対応する。このようなデータ構造は、システムの各記憶ノードの間で複製され、データアイテムをセグメントIDにマッピングする。データアイテムは常に順序付けられるので、範囲クエリを実行するために必要なセグメントIDを検索することが可能である。範囲クエリは、t1とt2との間の全てのデータを検索する。ここで、t1及びt2は、データアイテム(又はトリプル)である。したがって、問い合わせられる必要のあるセグメント(セグメントは、特定の記憶ノード/サーバ/機械に格納される全データセットの一部であると理解される)は、次の通りである。t1が置かれたセグメント、t2が置かれたセグメント、及びこれらの2つの間の全てのセグメント(それぞれが格納するデータアイテムの順序付きセットのセグメントの順序に従って順序付けられるとき、記憶ノードの順序の観点からそれらの間)である。セグメントIDを検索した後、コンシステントハッシングのようなメカニズムは、セグメントを機械にマッピングするツールとして用いられる。この機能では、データアイテム(トリプル)を特定の機械ID(machine ID)に局所的にマッピングする機能/方法が提供される。
MachineID getMachineID(Objecttriple)
このメソッドは、Trie構造(又は他の順序付きデータアイテムのセグメントID(segment ID)へのマッピング)を用いてデータアイテムをセグメントIDにマッピングし、次に、コンシステントハッシングを用いてセグメントIDは機械IDにマッピングされる(しかし、この第2のステップでは、セグメントIDを機械IDにマッピングする任意のメカニズムが目的に合う)。本メソッドは、引数として提供されるトリプルの表現を有する命令「getMachineID」を介して呼び出される。例えば整数であっても良いMachineIDが返される。このメソッドは、トリプルの各バージョンを格納する記憶ノードを選択するために、記憶レイヤ15(命令分配部16)により用いられる。
機械IDは、特定の記憶ノードを識別する。記憶ノードのIDは、例えばそのアドレスをハッシングすることによる、及びデータの線形空間におけるその相対位置に依存すると考えられても良い。これらのIDは、循環法で互いの間で順序を定めても良い。これは、例えばシステム内に3個の機械を有する場合、順序関係「A<B」(AはBより小さい)は次のように定められる。
機械1<機械2<機械3<機械1
データ挿入方法の記載では、演算「機械ID+1」は、線形空間の次の機械に対応する。一例として、
機械1+1は、機械3と同じである。
機械3+1は、機械1と同じである。
最後に、2つの追加の方法がある。
store(Object triple, MachineID spoID, machineID posID, MachineID ospID)
storeReplica(Object triple, MachineID spoID, machineID posID, MachineID ospID, MachineID replica1, MachineID replica2)
全ての記憶サーバは、これらのメソッドをそれらのデータベース制御部を介して提供する。これらのメソッドは、例えば、命令を記憶ノードに発行する際に、命令分配部により呼び出されても良い。store()メソッドは、特定のサーバの記憶テーブルにトリプルを記憶することを指示する。以上から分かることは、本実施形態では、メソッドを呼び出すときに含まれる引数は、トリプル自体、それが格納されるべき記憶ノードのID、及びトリプルの各バージョンが格納されるべき記憶ノードのIDであることである。
storeReplica()メソッドは、必要な数の記憶ノードが特定のトリプルのあるバージョンを有することを保証するために、トリプルのあるバージョンが例えば冗長モジュール18により複製されるとき、特定のサーバの複製テーブルにトリプルを格納する。本発明の実施形態の中核となる機能の任意的な拡張として、これらのメソッドは、トリプルの他のバージョンのIDを格納し、前述のインデックスを更新する。
トリプルの3個のバージョン(及び必要な場合には複製)を格納するメカニズム(方法addTriple)は、次のように動作する。該メカニズムは、トリプルの表現を引数として有し、トリプルをデータベースに格納する要求を受信したデータベース制御部10により実行されるメソッドの一例である。
Figure 0006119421
これらのプロシジャは、プレフィックスとしてトリプルデータのサブセットの任意の組合せを用いた範囲クエリを可能にするように、トリプルの各バージョン、つまりSPO、POS及びOSPがシステムに格納されることを保証する。SPO、POS及びOSPのようなトリプルに対して「getmachineID」で用いられるハッシング関数が、トリプルの3個全てのバージョンに対して異なる機械IDを返し、したがってそれらは全て異なるサーバに格納されることが保証されても良い。これが生じたか否かを調べると、必要な複製の数が決定され、複製が生成され、それらの記憶装置が指示される。これが生じない場合にのみ、1又は2個の余分な複製が格納される。これらの複製は、復旧処理でのみ用いられ、範囲クエリを実行するために用いられない。余分な複製は、システムが常に各プロシジャの少なくとも3個のコピーを有することを保証するために、単なるフォールバックプロシジャである。幾つかの場合には、システムは、同じデータの4又は5個のバージョンを格納しても良いが、コンシステントハッシングアルゴリズムは、これが最小限の数しか生じないこと、及び必要なときデータ冗長目的のためにしか生じないことを保証する。本発明の運用上の実装では、複製は、非常に小さい割合の場合でしか必要ない可能性が高い。
最後に、削除演算は、正確に同じ方法で発行されるが、しかし、それぞれstore()及びstoreReplica()の代わりに、サーバでdelete()及びdeleteReplica()メソッドを実行することによる。これらのメソッドは、削除されるべきトリプルに対応する各テーブルの行を削除する。delete()及びdeleteReplica()メソッドは、必要な場合には個々のインデックスも更新する。
サーバが障害になると、障害検出部は、最終的にこの事象を検出する。例えば、特定のサーバの障害検出部は、障害検出部又はネットワーク内の他のデータベース制御部の障害検出モジュールと協調することにより、この事象を検出しても良い。したがって、障害検出部は、ネットワーク内のサーバ(データベース制御部)の各々の間で分散されると考えられても良い。サーバ障害が検出されると、応答がトリガされる。例えば、障害になったサーバの検出は、生き残ったサーバ(例えば、それらのデータベース制御部)の「onFailed」イベントをトリガしても良い。サーバが、例えば「onFailed」イベント通知の受信により、別のサーバが障害になっていることを通知されると、サーバは、自身のデータベース制御部を介して回復動作を実行する。FIDが障害になった処理のIDであるとすると、データ復旧動作は、障害になっていない記憶ノードの各々のデータベース制御部において以下のステップを有しても良い。
(1)FIDから(障害のない記憶ノードの)テーブルの行へのマッピングがあるかどうか、記憶インデックスを調べる。
(2)インデックスにより識別される各トリプルについて、
a)該トリプルについて(つまり、該トリプルのあるバージョンを格納している各データアイテムについて)、新しいメンバ構成を用いて新しい機械IDを再計算する。例えば、このような演算は、(命令分配部16内の)記憶レイヤ15で、場合によっては、3個の構成SPO、POS、OSPの各々の中のトリプルを引数としてgetMachineIDメソッドを用いることにより、実行され得る。
b)トリプルのあるバージョンを格納したが、新しい構成では格納しないサーバがある場合、該トリプルをその機械から削除する。例えば、このような削除は、(命令分配部16内の)記憶レイヤ15によりdelete()メソッドを用いて指示され得る。
c)そのトリプルを格納するが、前の構成では格納していなかったサーバがある場合、該トリプルをサーバに追加する。例えば、このような追加は、(命令分配部16内の)記憶レイヤ15により、特定の実装の必要に応じて引数を有するが少なくとも格納されるべきトリプルのバージョンを有するstore()メソッドを用いて指示され得る。
d)前の構成でそのトリプルを格納し、新しい構成でも格納し続けるサーバがある場合、該サーバのテーブルのトリプルのIDを単に更新する。このような更新は、適切なサーバに更新命令を発行することにより実行され得る。
(3)FIDからテーブルの行へのマッピングがあるかどうか、記憶インデックスを調べ、これらのトリプルについてステップ2を繰り返す。
最後に、このプロシジャが同一のトリプルに対して複数回実行されるのを回避するために、本発明の実施形態は、トリプルの複製(又はバージョン)を含むサーバのうちの1個のみがデータ復旧動作を実行することを保証するメカニズムを有しても良い。これは、例えば、複製か否かに拘わらず、トリプルのあるバージョンを格納する(障害でない)サーバの最も小さい機械IDを計算することにより達成されても良い。この値は、トリプルが同一のトリプルのバージョン又は複製を格納している他のノードの機械IDと共に格納されているかどうか、記憶及び複製テーブルを調べることにより達成される。その他の場合、同一のトリプルのバージョン又は複製を格納している他の記憶ノードのIDは、命令分配部によりどのノードがトリプルのバージョンを指示するかを選択する際に用いられるマッピング関数に従って決定され得る。復旧プロシジャを実行しているサーバがそのトリプルについて最も小さいIDである場合、該サーバは、該トリプルについて復旧プロシジャを実行する。その他の場合、別のサーバが該トリプルを処理するので、これは単に無視される。
図3は、図2の「レイヤ」が図1の構成要素とどのように関連するかの一例を示す。つまり、RDFレイヤ11は記憶要求受信部12を有し、記憶レイヤ15はデータアイテム生成モジュール14、命令分配部16、冗長モジュール18を有する。障害検出部19は、どちらのレイヤにも属さないが、必要に応じてレイヤ/構成要素の一方又は両方とデータを交換し及びそれに命令を発行するよう動作可能な構成要素である。
上述の態様の何れにおいても、種々の特徴は、ハードウェアで、又は1若しくは複数のプロセッサで動作するソフトウェアモジュールとして実施されても良い。ある態様の特徴は、他の態様の特徴に適用されても良い。
本発明は、上述の任意の方法を実行するコンピュータプログラム又はコンピュータプログラムプロダクト、及び上述の任意の方法を実行するプログラムを格納しているコンピュータ可読媒体も提供する。本発明を実施するコンピュータプログラムは、コンピュータ可読媒体に格納されてもよい。或いは、例えば、インターネット・ウェブサイトから提供されるダウンロード可能なデータ信号のような信号形式又は任意の他の形式であってもよい。
11 RDFレイヤ
12 記憶要求受信部
14 データアイテム生成部
15 記憶レイヤ
16 命令分配部
18 冗長モジュール
19 障害検出部
20 記憶ノード
30 アプリケーション

Claims (14)

  1. トリプルとしてエンコードされたグラフデータを格納するデータベースのデータベース制御部であって、各トリプルは、主語、述語及び目的語である3個のトリプル要素を有し、各トリプルは格納されたトリプルに従って順序付けられたデータアイテムのセットの中のデータアイテム内に格納され、各データアイテムは、ネットワーク内に分散する複数の記憶ノードの中の記憶ノードに格納され、
    前記データベース制御部は、
    前記データベースにトリプルを格納する要求を受信するよう構成される記憶要求受信部、
    データアイテム生成モジュールであって、
    前記データアイテム内で前記主語が前記述語及び前記目的語より先行する第1のバージョン、
    前記データアイテム内で前記述語が前記主語及び前記目的語より先行する第2のバージョン、
    前記データアイテム内で前記目的語が前記主語及び前記述語より先行する第3のバージョン、のうちのそれぞれ前記トリプルの異なるバージョンを有する2以上のデータアイテムを生成するよう構成される、データアイテム生成モジュール、
    命令分配部であって、前記2以上のデータアイテムの各々について、前記複数の記憶ノードの中から前記データアイテムを格納するよう指示する記憶ノードを選択するよう構成され、前記選択は、前記データアイテム内で最初に現れるトリプル要素に依存して行われ、前記命令分配部は、前記複数の記憶ノードの中少なくとも2個の異なる記憶ノードが前記トリプルの異なるバージョンを有するデータアイテムを格納るよう指示されることを保証するよう構成される冗長モジュールを有する、命令分配部、
    を有するデータベース制御部。
  2. 前記データアイテム生成モジュールは、前記第1のバージョン、前記第2のバージョン及び前記第3のバージョンのうちのそれぞれ前記トリプルの異なるバージョンを有する3個のデータアイテムを生成するよう構成される、請求項1に記載のデータベース制御部。
  3. 前記複数の記憶ノードの中に3個以上の記憶ノードがあり、前記冗長モジュールは、前記複数の記憶ノードの中から3個の異なる記憶ノードがそれぞれ前記トリプルの1個のバージョンを有するデータアイテムを格納するよう指示されることを保証するよう構成される、請求項1又は2に記載のデータベース制御部。
  4. 各データアイテムは、前記トリプルの主語、述語及び目的語を有するストリングオブジェクトを含み、前記データアイテムは、前記ストリングオブジェクトのアルファベット順の比較に従って順序付けられる、請求項1に記載のデータベース制御部
  5. 前記命令分配部は、順序付きハッシュテーブルを用いて前記複数の記憶ノードの中から前記データアイテムを格納するよう指示する記憶ノードを選択するよう構成され、前記順序付きハッシュテーブルは、コンシステントハッシング関数を用いる、請求項1乃至のいずれか一項に記載のデータベース制御部。
  6. 同一のトリプルの異なるバージョンを格納する前記2以上のデータアイテムの各々は、該トリプルの異なるバージョンを格納する他のデータアイテムの各々が格納される記憶ノードを識別するデータを有する、請求項1乃至のいずれか一項に記載のデータベース制御部。
  7. 前記データベース制御部は、
    記憶ノードの分散型ネットワーク内の記憶ノードが障害になるときを検出し、該障害になった記憶ノードに格納されたデータアイテム内に格納されたトリプルを識別するよう構成される障害検出部、
    を更に有し、
    前記データベース制御部は、識別されたトリプルの各々について前記データアイテム生成モジュールにおける生成及び前記命令分配部における選択を実行するよう構成され、前記障害になった記憶ノードは、記憶ノードが選択される前記複数の記憶ノードから除外され、前記命令分配部は、選択した記憶ノードに、識別されたトリプルの1個のバージョンを有するデータアイテムを格納するよう指示し、及び現在選択されていない障害の前の記憶ノードにより格納されていた識別されたトリプルのバージョンを有するデータアイテムの削除を指示するよう構成される、請求項1乃至のいずれか一項に記載のデータベース制御部
  8. 前記命令分配部は、前記複数の記憶ノードの中から決定論的方法で前記データアイテムを格納するよう指示する記憶ノードを選択するよう構成され、前記冗長モジュールは、2以上のデータアイテムについての記憶ノードの選択の後に、前記2以上のデータアイテムを格納するために選択された記憶ノードの中から異なる記憶ノードの数の総数を得て、前記トリプルの1個のバージョンを有するデータアイテムを格納するよう指示されるよう前記冗長モジュールが保証するよう構成された異なる記憶ノードの数より前記総数が少ない場合、前記冗長モジュールは、前記複数の記憶ノードの中から前記トリプルを有する更なるデータアイテムを格納する追加記憶ノードの数を指示するよう構成され、該数は、前記総数と前記トリプルの1個のバージョンを有するデータアイテムを格納するよう指示されるよう前記冗長モジュールが保証するよう構成された異なる記憶ノードの数との間の差に等しい、請求項1乃至のいずれか一項に記載のデータベース制御部。
  9. 前記追加記憶ノードにより格納される前記更なるデータアイテムは、データアイテムの前記順序付けられたセットの外部に格納される、請求項に記載のデータベース制御部。
  10. 請求項1乃至のいずれか一項に記載のデータベース制御部として機能するよう構成されるコンピューティング装置。
  11. 前記コンピューティング装置は、ネットワーク内に分散された前記複数の記憶ノードの中の記憶ノードの1個である、請求項10に記載のコンピューティング装置。
  12. 複数の請求項11に記載のコンピューティング装置を有するシステム。
  13. コンピューティング装置により実行されると、前記コンピューティング装置に請求項1乃至のいずれか一項に記載のデータベース制御部として動作させる、コンピュータプログラム。
  14. データベース内にトリプルとしてエンコードされたグラフデータを格納するデータベース制御部の作動方法であって、各トリプルは、主語、述語及び目的語を有し、各トリプルは格納されたトリプルに従って順序付けられたデータアイテムのセットの中のデータアイテム内に格納され、各データアイテムは、ネットワーク内に分散する複数の記憶ノードの中の記憶ノードに格納され、
    前記作動方法は、
    前記データベース制御部が、前記データベースにトリプルを格納する要求を受信するステップ、
    前記データベース制御部が、2個以上のデータアイテムを生成するステップであって、前記データアイテムの各々は、
    前記データアイテム内で前記主語が前記述語及び前記目的語より先行する第1のバージョン、
    前記データアイテム内で前記述語が前記主語及び前記目的語より先行する第2のバージョン、
    前記データアイテム内で前記目的語が前記主語及び前記述語より先行する第3のバージョン、のうちの前記トリプルの異なるバージョンを有する、ステップ、
    前記データベース制御部が、前記2個以上のデータアイテムの各々について、前記複数の記憶ノードの中から前記データアイテムを格納するよう指示する記憶ノードを選択するステップであって、前記選択は、前記データアイテム内で最初に現れるトリプル要素に依存して行われ、前記複数の記憶ノードの中少なくとも2つの異なる記憶ノードが前記トリプルの異なるバージョンを有するデータアイテムを格納するよう指示されることを保証する、ステップ、
    を有する方法。
JP2013109192A 2012-02-23 2013-05-23 エンコードされたトリプルを格納するデータベース、制御部、方法及びシステム Active JP6119421B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP20120156707 EP2631817A1 (en) 2012-02-23 2012-02-23 Database, apparatus, and method for storing encoded triples
EP12169354.3 2012-05-24
EP20120169354 EP2631819A1 (en) 2012-02-23 2012-05-24 Database controller, method, and system for storing encoded triples

Publications (2)

Publication Number Publication Date
JP2013246828A JP2013246828A (ja) 2013-12-09
JP6119421B2 true JP6119421B2 (ja) 2017-04-26

Family

ID=46210095

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013029535A Expired - Fee Related JP6123339B2 (ja) 2012-02-23 2013-02-18 エンコードされたトリプルを格納するデータベース、装置及び方法
JP2013109192A Active JP6119421B2 (ja) 2012-02-23 2013-05-23 エンコードされたトリプルを格納するデータベース、制御部、方法及びシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013029535A Expired - Fee Related JP6123339B2 (ja) 2012-02-23 2013-02-18 エンコードされたトリプルを格納するデータベース、装置及び方法

Country Status (4)

Country Link
US (2) US9442994B2 (ja)
EP (2) EP2631817A1 (ja)
JP (2) JP6123339B2 (ja)
CN (1) CN103425734B (ja)

Families Citing this family (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9396283B2 (en) 2010-10-22 2016-07-19 Daniel Paul Miranker System for accessing a relational database using semantic queries
US8799269B2 (en) 2012-01-03 2014-08-05 International Business Machines Corporation Optimizing map/reduce searches by using synthetic events
EP2631817A1 (en) * 2012-02-23 2013-08-28 Fujitsu Limited Database, apparatus, and method for storing encoded triples
JP5914186B2 (ja) * 2012-06-06 2016-05-11 キヤノン株式会社 情報処理装置および情報処理方法
US8903813B2 (en) 2012-07-02 2014-12-02 International Business Machines Corporation Context-based electronic document search using a synthetic event
US9460200B2 (en) 2012-07-02 2016-10-04 International Business Machines Corporation Activity recommendation based on a context-based electronic files search
US8898165B2 (en) 2012-07-02 2014-11-25 International Business Machines Corporation Identification of null sets in a context-based electronic document search
US10552406B2 (en) * 2012-07-17 2020-02-04 International Business Machines Corporation Maintaining object and query result consistency in a triplestore database
US9262499B2 (en) 2012-08-08 2016-02-16 International Business Machines Corporation Context-based graphical database
US8959119B2 (en) * 2012-08-27 2015-02-17 International Business Machines Corporation Context-based graph-relational intersect derived database
US10169446B1 (en) 2012-09-10 2019-01-01 Amazon Technologies, Inc. Relational modeler and renderer for non-relational data
US9251237B2 (en) 2012-09-11 2016-02-02 International Business Machines Corporation User-specific synthetic context object matching
US8620958B1 (en) 2012-09-11 2013-12-31 International Business Machines Corporation Dimensionally constrained synthetic context objects database
US9619580B2 (en) 2012-09-11 2017-04-11 International Business Machines Corporation Generation of synthetic context objects
US9223846B2 (en) 2012-09-18 2015-12-29 International Business Machines Corporation Context-based navigation through a database
US8782777B2 (en) 2012-09-27 2014-07-15 International Business Machines Corporation Use of synthetic context-based objects to secure data stores
US9741138B2 (en) 2012-10-10 2017-08-22 International Business Machines Corporation Node cluster relationships in a graph database
US8931109B2 (en) 2012-11-19 2015-01-06 International Business Machines Corporation Context-based security screening for accessing data
US8983981B2 (en) 2013-01-02 2015-03-17 International Business Machines Corporation Conformed dimensional and context-based data gravity wells
US8914413B2 (en) 2013-01-02 2014-12-16 International Business Machines Corporation Context-based data gravity wells
US9229932B2 (en) 2013-01-02 2016-01-05 International Business Machines Corporation Conformed dimensional data gravity wells
US9053102B2 (en) 2013-01-31 2015-06-09 International Business Machines Corporation Generation of synthetic context frameworks for dimensionally constrained hierarchical synthetic context-based objects
US9069752B2 (en) 2013-01-31 2015-06-30 International Business Machines Corporation Measuring and displaying facets in context-based conformed dimensional data gravity wells
US8856946B2 (en) 2013-01-31 2014-10-07 International Business Machines Corporation Security filter for context-based data gravity wells
US9292506B2 (en) 2013-02-28 2016-03-22 International Business Machines Corporation Dynamic generation of demonstrative aids for a meeting
US10152526B2 (en) 2013-04-11 2018-12-11 International Business Machines Corporation Generation of synthetic context objects using bounded context objects
US9798772B2 (en) 2013-04-12 2017-10-24 Oracle International Corporation Using persistent data samples and query-time statistics for query optimization
EP2804114A1 (en) * 2013-05-16 2014-11-19 Fujitsu Limited Database controller, method, and program for managing a distributed data store
US9195608B2 (en) 2013-05-17 2015-11-24 International Business Machines Corporation Stored data analysis
US9348794B2 (en) 2013-05-17 2016-05-24 International Business Machines Corporation Population of context-based data gravity wells
KR101416261B1 (ko) * 2013-05-22 2014-07-09 연세대학교 산학협력단 플래시 ssd의 역 인덱스 업데이트 방법
EP2808804A1 (en) * 2013-05-29 2014-12-03 Fujitsu Ltd. Database controller, method, and program for handling range queries
US9218438B2 (en) * 2013-08-28 2015-12-22 Bank Of America Corporation Computing architecture for storing a graph database based on temporal aspects of its edges
WO2015085485A1 (zh) * 2013-12-10 2015-06-18 华为终端有限公司 一种同步方法及终端、服务器
US10523619B2 (en) * 2013-12-20 2019-12-31 Rovio Entertainment Ltd. Stateless message routing
CN104735107B (zh) * 2013-12-20 2018-12-18 中国移动通信集团公司 分布式存储系统中数据副本恢复方法及装置
US10089377B2 (en) * 2014-09-26 2018-10-02 Oracle International Corporation System and method for data transfer from JDBC to a data warehouse layer in a massively parallel or distributed database environment
US10387421B2 (en) 2014-09-26 2019-08-20 Oracle International Corporation System and method for generating size-based splits in a massively parallel or distributed database environment
US10078684B2 (en) 2014-09-26 2018-09-18 Oracle International Corporation System and method for query processing with table-level predicate pushdown in a massively parallel or distributed database environment
US10380114B2 (en) 2014-09-26 2019-08-13 Oracle International Corporation System and method for generating rowid range-based splits in a massively parallel or distributed database environment
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment
US10394818B2 (en) 2014-09-26 2019-08-27 Oracle International Corporation System and method for dynamic database split generation in a massively parallel or distributed database environment
US10528596B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation System and method for consistent reads between tasks in a massively parallel or distributed database environment
US10089357B2 (en) 2014-09-26 2018-10-02 Oracle International Corporation System and method for generating partition-based splits in a massively parallel or distributed database environment
US20160224645A1 (en) * 2015-02-03 2016-08-04 Siemens Aktiengesellschaft System and method for ontology-based data integration
KR101685439B1 (ko) * 2015-03-30 2016-12-13 김동우 데이터베이스 분산처리 자동 가공 시스템
CN106326295B (zh) * 2015-07-01 2021-12-14 中兴通讯股份有限公司 语义数据的存储方法及装置
GB2541231A (en) * 2015-08-13 2017-02-15 Fujitsu Ltd Hybrid data storage system and method and program for storing hybrid data
KR102048648B1 (ko) * 2015-10-30 2019-11-25 콘비다 와이어리스, 엘엘씨 시맨틱 IoT에 대한 Restful 오퍼레이션들
CN105447156A (zh) * 2015-11-30 2016-03-30 北京航空航天大学 资源描述框架分布式引擎及增量式更新方法
US10341181B2 (en) * 2016-03-07 2019-07-02 International Business Machines Corporation Method and apparatus to allow dynamic changes of a replica network configuration in distributed systems
US11256746B2 (en) 2016-04-25 2022-02-22 Oracle International Corporation Hash-based efficient secondary indexing for graph data stored in non-relational data stores
US11334625B2 (en) 2016-06-19 2022-05-17 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US11086896B2 (en) 2016-06-19 2021-08-10 Data.World, Inc. Dynamic composite data dictionary to facilitate data operations via computerized tools configured to access collaborative datasets in a networked computing platform
US11468049B2 (en) 2016-06-19 2022-10-11 Data.World, Inc. Data ingestion to generate layered dataset interrelations to form a system of networked collaborative datasets
US11042537B2 (en) 2016-06-19 2021-06-22 Data.World, Inc. Link-formative auxiliary queries applied at data ingestion to facilitate data operations in a system of networked collaborative datasets
US10452975B2 (en) 2016-06-19 2019-10-22 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11042556B2 (en) 2016-06-19 2021-06-22 Data.World, Inc. Localized link formation to perform implicitly federated queries using extended computerized query language syntax
WO2017222927A1 (en) * 2016-06-19 2017-12-28 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US10438013B2 (en) 2016-06-19 2019-10-08 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11036716B2 (en) 2016-06-19 2021-06-15 Data World, Inc. Layered data generation and data remediation to facilitate formation of interrelated data in a system of networked collaborative datasets
US11023104B2 (en) 2016-06-19 2021-06-01 data.world,Inc. Interactive interfaces as computerized tools to present summarization data of dataset attributes for collaborative datasets
US11016931B2 (en) 2016-06-19 2021-05-25 Data.World, Inc. Data ingestion to generate layered dataset interrelations to form a system of networked collaborative datasets
US11042548B2 (en) 2016-06-19 2021-06-22 Data World, Inc. Aggregation of ancillary data associated with source data in a system of networked collaborative datasets
US11941140B2 (en) 2016-06-19 2024-03-26 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US10346429B2 (en) 2016-06-19 2019-07-09 Data.World, Inc. Management of collaborative datasets via distributed computer networks
US10353911B2 (en) 2016-06-19 2019-07-16 Data.World, Inc. Computerized tools to discover, form, and analyze dataset interrelations among a system of networked collaborative datasets
US11947554B2 (en) 2016-06-19 2024-04-02 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US10984008B2 (en) 2016-06-19 2021-04-20 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US10747774B2 (en) 2016-06-19 2020-08-18 Data.World, Inc. Interactive interfaces to present data arrangement overviews and summarized dataset attributes for collaborative datasets
US11068475B2 (en) 2016-06-19 2021-07-20 Data.World, Inc. Computerized tools to develop and manage data-driven projects collaboratively via a networked computing platform and collaborative datasets
US10824637B2 (en) 2017-03-09 2020-11-03 Data.World, Inc. Matching subsets of tabular data arrangements to subsets of graphical data arrangements at ingestion into data driven collaborative datasets
US11036697B2 (en) 2016-06-19 2021-06-15 Data.World, Inc. Transmuting data associations among data arrangements to facilitate data operations in a system of networked collaborative datasets
US11675808B2 (en) 2016-06-19 2023-06-13 Data.World, Inc. Dataset analysis and dataset attribute inferencing to form collaborative datasets
US10645548B2 (en) 2016-06-19 2020-05-05 Data.World, Inc. Computerized tool implementation of layered data files to discover, form, or analyze dataset interrelations of networked collaborative datasets
US11755602B2 (en) 2016-06-19 2023-09-12 Data.World, Inc. Correlating parallelized data from disparate data sources to aggregate graph data portions to predictively identify entity data
US11042560B2 (en) 2016-06-19 2021-06-22 data. world, Inc. Extended computerized query language syntax for analyzing multiple tabular data arrangements in data-driven collaborative projects
US11068847B2 (en) 2016-06-19 2021-07-20 Data.World, Inc. Computerized tools to facilitate data project development via data access layering logic in a networked computing platform including collaborative datasets
US10853376B2 (en) 2016-06-19 2020-12-01 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US10452677B2 (en) 2016-06-19 2019-10-22 Data.World, Inc. Dataset analysis and dataset attribute inferencing to form collaborative datasets
US10324925B2 (en) 2016-06-19 2019-06-18 Data.World, Inc. Query generation for collaborative datasets
CN106156319A (zh) * 2016-07-05 2016-11-23 北京航空航天大学 可伸缩的分布式的资源描述框架数据存储方法及装置
US20180032552A1 (en) * 2016-08-01 2018-02-01 Georgia Tech Research Corporation Configurable Hyper-Referenced Associative Object Schema
US20180089252A1 (en) * 2016-09-28 2018-03-29 Linkedin Corporation Verifying correctness in graph databases
US10789295B2 (en) 2016-09-28 2020-09-29 Microsoft Technology Licensing, Llc Pattern-based searching of log-based representations of graph databases
US20180089281A1 (en) * 2016-09-29 2018-03-29 Convida Wireless, Llc Semantic query over distributed semantic descriptors
US10437810B2 (en) 2016-09-30 2019-10-08 Microsoft Technology Licensing, Llc Systems and methods for maintaining cardinality schema to prevent corruption in databases indifferent to cardinality
US10481960B2 (en) * 2016-11-04 2019-11-19 Microsoft Technology Licensing, Llc Ingress and egress of data using callback notifications
US11475320B2 (en) 2016-11-04 2022-10-18 Microsoft Technology Licensing, Llc Contextual analysis of isolated collections based on differential ontologies
US10885114B2 (en) 2016-11-04 2021-01-05 Microsoft Technology Licensing, Llc Dynamic entity model generation from graph data
US10402408B2 (en) 2016-11-04 2019-09-03 Microsoft Technology Licensing, Llc Versioning of inferred data in an enriched isolated collection of resources and relationships
US10452672B2 (en) 2016-11-04 2019-10-22 Microsoft Technology Licensing, Llc Enriching data in an isolated collection of resources and relationships
US10614057B2 (en) 2016-11-04 2020-04-07 Microsoft Technology Licensing, Llc Shared processing of rulesets for isolated collections of resources and relationships
US20180137667A1 (en) * 2016-11-14 2018-05-17 Oracle International Corporation Graph Visualization Tools With Summary Visualization For Very Large Labeled Graphs
JP6310532B1 (ja) 2016-11-24 2018-04-11 ヤフー株式会社 生成装置、生成方法、及び生成プログラム
JP6311000B1 (ja) 2016-12-19 2018-04-11 ヤフー株式会社 生成装置、生成方法、及び生成プログラム
JP6790905B2 (ja) * 2017-02-20 2020-11-25 富士通株式会社 検出方法、検出装置および検出プログラム
US11068453B2 (en) 2017-03-09 2021-07-20 data.world, Inc Determining a degree of similarity of a subset of tabular data arrangements to subsets of graph data arrangements at ingestion into a data-driven collaborative dataset platform
US11238109B2 (en) 2017-03-09 2022-02-01 Data.World, Inc. Computerized tools configured to determine subsets of graph data arrangements for linking relevant data to enrich datasets associated with a data-driven collaborative dataset platform
CN106845462A (zh) * 2017-03-20 2017-06-13 大连理工大学 基于三元组诱导的同时选择特征及聚类的人脸识别方法
US10585575B2 (en) 2017-05-31 2020-03-10 Oracle International Corporation Visualizing UI tool for graph construction and exploration with alternative action timelines
US10671582B2 (en) * 2017-08-18 2020-06-02 Ca Technologies, Inc. Two phase save using named graphs
US10621199B2 (en) * 2017-08-18 2020-04-14 Ca Technologies, Inc. Two phase retrieval using named graphs
JP6855401B2 (ja) * 2018-02-08 2021-04-07 ヤフー株式会社 生成装置、生成方法、及び生成プログラム
US11243960B2 (en) 2018-03-20 2022-02-08 Data.World, Inc. Content addressable caching and federation in linked data projects in a data-driven collaborative dataset platform using disparate database architectures
US10922308B2 (en) 2018-03-20 2021-02-16 Data.World, Inc. Predictive determination of constraint data for application with linked data in graph-based datasets associated with a data-driven collaborative dataset platform
US11120082B2 (en) 2018-04-18 2021-09-14 Oracle International Corporation Efficient, in-memory, relational representation for heterogeneous graphs
USD940169S1 (en) 2018-05-22 2022-01-04 Data.World, Inc. Display screen or portion thereof with a graphical user interface
USD920353S1 (en) 2018-05-22 2021-05-25 Data.World, Inc. Display screen or portion thereof with graphical user interface
USD940732S1 (en) 2018-05-22 2022-01-11 Data.World, Inc. Display screen or portion thereof with a graphical user interface
US11327991B2 (en) 2018-05-22 2022-05-10 Data.World, Inc. Auxiliary query commands to deploy predictive data models for queries in a networked computing platform
US11947529B2 (en) 2018-05-22 2024-04-02 Data.World, Inc. Generating and analyzing a data model to identify relevant data catalog data derived from graph-based data arrangements to perform an action
US11537990B2 (en) 2018-05-22 2022-12-27 Data.World, Inc. Computerized tools to collaboratively generate queries to access in-situ predictive data models in a networked computing platform
US11442988B2 (en) 2018-06-07 2022-09-13 Data.World, Inc. Method and system for editing and maintaining a graph schema
CN109582799B (zh) * 2018-06-29 2020-09-22 北京百度网讯科技有限公司 知识样本数据集的确定方法、装置及电子设备
US11100688B2 (en) * 2018-07-26 2021-08-24 Google Llc Methods and systems for encoding graphs
CN111274348B (zh) * 2018-12-04 2023-05-12 北京嘀嘀无限科技发展有限公司 服务特征数据提取方法、装置及电子设备
CN109726254B (zh) * 2018-12-24 2020-12-18 科大讯飞股份有限公司 一种三元组知识库的构建方法及装置
EP3736710A1 (en) * 2019-05-10 2020-11-11 Siemens Aktiengesellschaft Method and device to control a technical device with data
CN110096515A (zh) * 2019-05-10 2019-08-06 天津大学深圳研究院 一种基于三元组的rdf数据管理方法、装置及存储介质
CN110609766A (zh) * 2019-09-04 2019-12-24 深圳前海微众银行股份有限公司 一种基于Redis协议的KV数据存储方法及装置
US10853150B1 (en) * 2019-12-31 2020-12-01 Fujitsu Limited Generating application programming interface knowledge graphs
CN111859858B (zh) * 2020-07-22 2024-03-01 智者四海(北京)技术有限公司 从文本中提取关系的方法及装置
US11321285B2 (en) 2020-10-01 2022-05-03 Bank Of America Corporation Automatic database script generation for copying data between relational databases
US11785077B2 (en) 2021-04-29 2023-10-10 Zoom Video Communications, Inc. Active-active standby for real-time telephony traffic
CN115470377A (zh) * 2021-06-11 2022-12-13 清华大学 流式图数据处理方法及系统
US20230030168A1 (en) * 2021-07-27 2023-02-02 Dell Products L.P. Protection of i/o paths against network partitioning and component failures in nvme-of environments
US11947600B2 (en) 2021-11-30 2024-04-02 Data.World, Inc. Content addressable caching and federation in linked data projects in a data-driven collaborative dataset platform using disparate database architectures
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management
US20230281178A1 (en) * 2022-03-04 2023-09-07 The Boeing Company Discovering contexts and structured data structures from hazy data
US20240012803A1 (en) * 2022-07-08 2024-01-11 Salesforce, Inc. Mechanisms for deleting triples of a database store

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2631819B2 (ja) * 1994-07-21 1997-07-16 株式会社ソーケン 組立自在型ラック及びその部材
US7908520B2 (en) * 2000-06-23 2011-03-15 A. Avizienis And Associates, Inc. Self-testing and -repairing fault-tolerance infrastructure for computer systems
US7058637B2 (en) * 2001-05-15 2006-06-06 Metatomix, Inc. Methods and apparatus for enterprise application integration
US7836031B2 (en) * 2003-03-28 2010-11-16 Microsoft Corporation Systems and methods for employing a trigger-based mechanism to detect a database table change and registering to receive notification of the change
US20060085412A1 (en) * 2003-04-15 2006-04-20 Johnson Sean A System for managing multiple disparate content repositories and workflow systems
US7702645B2 (en) 2006-06-30 2010-04-20 Nokia Corporation Method, apparatus and computer program product for making semantic annotations for easy file organization and search
EP1973053A1 (en) * 2007-03-19 2008-09-24 British Telecommunications Public Limited Company Multiple user access to data triples
US7890518B2 (en) 2007-03-29 2011-02-15 Franz Inc. Method for creating a scalable graph database
CN101398831B (zh) * 2007-09-27 2013-08-21 日电(中国)有限公司 本体数据导入/导出方法及装置
CN101436192B (zh) * 2007-11-16 2011-03-16 国际商业机器公司 用于优化针对垂直存储式数据库的查询的方法和设备
US8209577B2 (en) * 2007-12-20 2012-06-26 Microsoft Corporation Optimizing XOR-based codes
EP2107474A1 (en) * 2008-03-31 2009-10-07 British Telecommunications Public Limited Company Data access
US8108360B2 (en) * 2008-04-17 2012-01-31 Microsoft Corporation Database object update order determination
US8078646B2 (en) * 2008-08-08 2011-12-13 Oracle International Corporation Representing and manipulating RDF data in a relational database management system
US8447786B2 (en) * 2008-10-01 2013-05-21 International Business Machines Corporation Language extensions for creating, accessing, querying and updating RDF data
US8938456B2 (en) * 2009-10-23 2015-01-20 Intellidimension, Inc. Data recovery system and method in a resource description framework environment
US8423501B2 (en) 2009-11-20 2013-04-16 Oracle International Corporation Data source for parallel inference using a source table that is partitioned on triple predicate
US8522125B1 (en) * 2010-04-09 2013-08-27 The Research Foundation Of State University Of New York System and method for efficient horizontal maximum distance separable raid
US20110320431A1 (en) * 2010-06-25 2011-12-29 Microsoft Corporation Strong typing for querying information graphs
US8595606B1 (en) * 2010-07-16 2013-11-26 The Research Foundation Of State University Of New York Extended row diagonal parity with optimal decoding procedure
US8433685B2 (en) * 2010-08-18 2013-04-30 Hewlett-Packard Development Company, L.P. Method and system for parity-page distribution among nodes of a multi-node data-storage system
US8478766B1 (en) * 2011-02-02 2013-07-02 Comindware Ltd. Unified data architecture for business process management
US8756246B2 (en) * 2011-05-26 2014-06-17 Oracle International Corporation Method and system for caching lexical mappings for RDF data
US8793273B1 (en) * 2011-06-29 2014-07-29 Google Inc. Parsing framework method and device
WO2013009503A2 (en) * 2011-07-08 2013-01-17 Yale University Query execution systems and methods
EP2631817A1 (en) * 2012-02-23 2013-08-28 Fujitsu Limited Database, apparatus, and method for storing encoded triples
KR101380605B1 (ko) * 2012-03-30 2014-04-04 서울대학교산학협력단 하이퍼 그래프 기반 rdf 버전 관리 방법
US9798772B2 (en) * 2013-04-12 2017-10-24 Oracle International Corporation Using persistent data samples and query-time statistics for query optimization

Also Published As

Publication number Publication date
JP2013246828A (ja) 2013-12-09
US9251232B2 (en) 2016-02-02
US20130238667A1 (en) 2013-09-12
CN103425734A (zh) 2013-12-04
JP2013175181A (ja) 2013-09-05
US9442994B2 (en) 2016-09-13
US20140067762A1 (en) 2014-03-06
CN103425734B (zh) 2017-06-27
JP6123339B2 (ja) 2017-05-10
EP2631819A1 (en) 2013-08-28
EP2631817A1 (en) 2013-08-28

Similar Documents

Publication Publication Date Title
JP6119421B2 (ja) エンコードされたトリプルを格納するデータベース、制御部、方法及びシステム
Davoudian et al. A survey on NoSQL stores
US10769148B1 (en) Relocating data sharing operations for query processing
JP6160277B2 (ja) リコンシリエーション処理を実行する方法、制御部、プログラム及びデータ記憶システム
WO2018156551A1 (en) Platform management of integrated access datasets utilizing federated query generation and schema rewriting optimization
US11308106B1 (en) Caching results for sub-queries to different data store locations
WO2017078929A1 (en) Virtual edge of a graph database
Siddiqui et al. Pseudo-cache-based IoT small files management framework in HDFS cluster
US20160012097A1 (en) Checking freshness of data for a data integration system, dis
Özsu et al. Distributed and Parallel Database Systems.
US20180060341A1 (en) Querying Data Records Stored On A Distributed File System
Fan et al. Storing and querying fuzzy RDF (S) in HBase databases
Hu et al. ScalaRDF: a distributed, elastic and scalable in-memory RDF triple store
Mittal et al. Efficient random data accessing in MapReduce
Vijaykumar et al. Future robotics database management system along with cloud tps
Ahamed Benchmarking top nosql databases
Asaad et al. NoSQL databases: yearning for disambiguation
Karras et al. SQL query optimization in distributed nosql databases for cloud-based applications
Amato et al. Big data management systems for the exploitation of pervasive environments
Alaoui et al. Evaluation Criteria for RDF Triplestores with an Application to Allegrograph
Papanikolaou Distributed algorithms for skyline computation using apache spark
US10963426B1 (en) Method of providing access controls and permissions over relational data stored in a hadoop file system
Ranichandra Dharmaraj et al. Adaptive mechanism for distributed query processing and data loading using the RDF data in the cloud
Arteta et al. Data Transfer Methods and Strategies: Unified Replication Model Using Trees
Giménez García Scalable RDF compression with MapReduce and HDT

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170216

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170313

R150 Certificate of patent or registration of utility model

Ref document number: 6119421

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150