JP2019520627A - データベース中にグラフ情報を記憶するためのb木使用 - Google Patents

データベース中にグラフ情報を記憶するためのb木使用 Download PDF

Info

Publication number
JP2019520627A
JP2019520627A JP2018556975A JP2018556975A JP2019520627A JP 2019520627 A JP2019520627 A JP 2019520627A JP 2018556975 A JP2018556975 A JP 2018556975A JP 2018556975 A JP2018556975 A JP 2018556975A JP 2019520627 A JP2019520627 A JP 2019520627A
Authority
JP
Japan
Prior art keywords
data
slot
node
page
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018556975A
Other languages
English (en)
Other versions
JP2019520627A5 (ja
JP7153420B2 (ja
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 ティブコ ソフトウェア インク
Publication of JP2019520627A publication Critical patent/JP2019520627A/ja
Publication of JP2019520627A5 publication Critical patent/JP2019520627A5/ja
Application granted granted Critical
Publication of JP7153420B2 publication Critical patent/JP7153420B2/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/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • 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
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; 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/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

グラフ情報をデータベースに格納する技術が開示される。様々な実施形態では、グラフの各ノードは、マイクロB木としてモデル化することができる。ノード識別、属性、エッジ、およびエッジ属性データは、関係データベース索引の索引データを格納するために通常使用されるページフォーマットでモデル化された1つまたは複数のページに格納される。複数のノードおよびエッジに関連するデータであって、前記エッジの各々が前記ノードの2つ以上の間の関係を表すデータが受信可能である。各ノードについて、1以上のページのデータが生成可能であり、各ページは前記1以上のページが格納される記憶装置に関連付けられた所定のページサイズに対応し、各ページは固定長データスロットの可変サイズのセットと可変サイズの可変長データ領域を含むデータ構造を有するものである。【選択図】 図4

Description

(関連特許出願)
本出願は、2016年5月13日付で出願された米国仮特許出願第62/336,473号、発明の名称「データベースにグラフ情報を記憶するためのB木の使用」に対する優先権を主張するもので、ここに参照することによりすべての目的のために本明細書に組み込まれるものである。
グラフは、頂点(「ノード」と呼ばれることもある)およびエッジの集合である。グラフのノードは、任意のエンティティを表すことができ、エッジは、エッジによって接続されたノード間の関係を表すことができる。
グラフデータベースは、例えば、ランダムアクセス能力を有するブロック記憶媒体(磁気または固体状態)上に永続的にグラフを格納するために使用することが可能である。各ノードは、それに関連する多くのエッジを有することができる。各エッジは、1つまたは複数の属性を有することができる。
グラフのノードによって表されるエンティティ間の関係が変化するときに、エッジは追加、削除、または変更されてもよい(新しいエッジ属性または更新されたエッジ属性等)。エッジは一方向(1つのノードから別のノードへ)または双方向(各ノードから別のノードへ)であってもよい。
マトリックスの要素は、グラフ内で頂点の組が隣接しているかどうか、すなわち、それらの間にエッジまたは他の関係があるかどうかを示す。
関係データベースは、それぞれがデータの行および列を含む1つまたは複数のテーブルとしてデータを格納する。各行はエンティティに関連付けられてもよく、その行の列はそのエンティティの属性のデータ値を格納してもよい。行はしばしば「レコード」または「タプル」と呼ばれる。一般に、各テーブル/リレーションは、1つの「エンティティタイプ」(顧客または製品など)を表します。行は、そのタイプのエンティティ(「Lee」または「iPhone(登録商標)6」など)の事例と、その事例に起因する値(住所や価格など)を表す列を表します。
関係データベースは、データセットJoin(Intersection及びUnion)理論を使用して、エンティティ間の関係を推定する。関係は、異なるテーブル間の論理的な接続である。関係は、これらのテーブル間の相互作用に基づいて確立される。任意の複雑性の関係は、単純な集合原理を使用して「推定」され、標準のクエリ言語を使用して検索される。
本発明の様々な実施形態が下記の詳細な説明と添付の図面によって開示される。
図1は、グラフデータベースを格納及びアクセスするためのシステム及び環境の実施形態を示すブロック図である。 図2は、グラフデータベースシステムの一実施形態を示すブロック図である。 図3は、グラフデータベースシステムの一実施形態に格納されるような、データの単純化されたセットのグラフ表現の例を示す図である。 図4は、グラフデータベースにデータを表し格納するプロセスの実施形態を示すフローチャートである。 図5は、グラフデータベースシステムの一実施形態で使用されるノードデータページ構造の一例を示す図である。 図6は、グラフデータベースシステムの一実施形態で使用されるスロットデータ構造の一例を示す図である。 図7Aは、グラフデータベースシステムの実施形態におけるノードまたはエッジ属性データを格納するために使用されるスロットデータ構造の非ヘッダ部分のフォーマットおよび構造の例を示す図である。 図7Bは、グラフデータベースシステムの一実施形態におけるスロットデータ構造エッジデータの非ヘッダ部分のフォーマット及び構造の一例を示す図である。 図8は、グラフデータベースにデータを格納するプロセスの一実施形態を示すフローチャートである。 図9は、グラフデータベースにデータを格納するプロセスの一実施形態を示すフローチャートである。 図10は、グラフデータベースに格納されたデータをソートするプロセスの実施形態を示すフローチャートである。
本発明は、さまざまな形式で実施可能であるが、プロセス、装置、システム、組成物、コンピュータ可読記憶媒体上に具現化されたコンピュータプログラム製品、および/またはプロセッサ(プロセッサに結合されたメモリに記憶された指令を実行するように構成されたプロセッサ等)が含まれる。本明細書では、これらの実装形態、または本発明がとり得る他の形態は、技術と呼ぶことができる。
一般に、開示されたプロセスのステップの順序は、本発明の範囲内で変更されてもよい。別段の記載がない限り、プロセッサまたはメモリなどのタスクを実行するように構成されたものとして記載されているコンポーネントは、所与の時間にタスクを実行するように一時的に構成された一般的なコンポーネント、またはそのタスクを行うために製造された特定のコンポーネントによって実行される。本明細書で使用する「プロセッサ」という用語は、コンピュータプログラム指令などのデータを処理するように構成された1つ以上のデバイス、回路、および/または処理コアを指す。
本発明の1つ以上の実施形態の詳細を、以下に本発明の原理を説明する添付の図面と共に説明する。本発明はそのような実施形態に関連して説明されるが、本発明はいずれの実施形態にも限定されるものではない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は、多数の代替、変形および等価物を含むものである。本発明の完全な理解を提供するために、多くの具体的な詳細が以下の説明に記載されている。これらの詳細は、例示のために提供されており、本発明は、これらの特定の詳細の一部または全部を伴わずに、請求項に従って実施することができる。明瞭化のために、本発明に関連する技術分野において周知の技術内容は、本発明が不必要に不明瞭にならないように詳細には記載していない。
グラフデータベースを効率的に格納する技術が開示される。様々な実施形態において、グラフの各ノードは、マイクロB木としてモデル化される。ノードデータは、関係データベースの索引データを格納するために使用されるページフォーマットでモデル化された1つ以上のページに格納され、通常はB木として編成される。各ノードに関連付けられたデータ、これにはそのノード識別子および他のノード属性、そのノードによって「所有されている」エッジおよび関連するエッジ属性が含まれるが、これらのデータが関連するページに格納される。
いくつかの実施形態では、各ノードデータページは、関係データベースの索引の「index page」と同様に構成することができる。様々な実施形態では、本明細書に開示されているノードまたはルートページでは、所定のサイズを超えない固定長データ値は、関連付けられたページの「スロット」に格納され、可変長値および/または所定のサイズより大きい可変長値は、前記ページのデータ値領域に格納される。
図1は、グラフデータベースを格納しアクセスするシステムおよび環境の実施形態を示すブロック図である。図示の例では、コンピューティング環境100は、図1においてデータソース102および104によって表される複数のデータソース1〜n、および図1においてデータユーザ106及び108によって表される複数のデータユーザ(コンシューマ)1〜mを含む。
データソースおよびデータユーザの例には、これらに限定するものではないが、デスクトップコンピュータ、ラップトップコンピュータおよび他のモバイルコンピュータなどのクライアントコンピュータシステム;携帯電話、タブレット、スマートウォッチ、インターネットデバイス、およびデータを生成または消費する他のデバイス等のモバイルデバイス;携帯アップ及び関連サービス、オンラインショッピングサービス、会社、銀行、学校、その他の企業やオンラインサービスなどのサーバーやクラウドベースのサービス等を含む。別のデータソース(102,104)およびデータユーザ(106,108)が図1に示されているが、様々な実施形態において、単一のノード/デバイスは、データソースおよびデータユーザの両方であってもよい。
図示の例では、データソース(102,104)からのデータは、インターネット110を介してグラフデータベースシステム112に伝達される。データエンティティ(ノード)、関連する属性、および関係(エッジ)は、キャプチャーされ、グラフデータベース114に格納されるデータで表される。図1では、グラフデータベース114は、グラフデータベースシステム112の外部に示されているが、様々な実施形態において、グラフデータベースシステム112は、グラフデータベース114を含むことができる。様々な実施形態において、グラフデータベースシステム112およびグラフデータベース114は、同じサーバまたは他のコンピュータのような同じ物理的および/または論理的コンピュータシステム上に存在することができる。
様々な実施形態において、データソース(102,104)によって生成されたデータはグラフデータベース112によって総計及び処理される。例えば、データソース(102、104)に関連付けられたユーザは、データソース(102,104)を使って、取引、ソーシャルネットワークインタラクション、ブラウジング、検索、ウエブページダウンロード、電子メールおよび他のメッセージの送受信などに参加することができる。グラフデータベース112において、そのような使用を反映するデータを受信及び照合し、グラフデータベース114に格納することができる。例えば、ユーザー及び他のエンティティ(取引、イベント、会社、会員ベースのグループ、製品、トピック、メールメッセージ、ソーシャルネットワークポストなど)は、グラフデータベース114内の「ノード」として表されてもよく、そのようなノード間の関係は、関連する「ノード」間の「エッジ」として表されて決定されてもよい。
様々な実施形態では、本明細書で開示された技術を使用して、そのようなノードおよびエッジデータ、および/またはそれぞれの属性を効率的な方法で表すことができる。特に、様々な実施形態では、グラフ・データベース114は、ページ・フォーマットおよび本明細書に開示されているようなコンテンツを使用して格納され、データのページを記憶媒体から効率的に読み書きできるようにする。
様々な実施形態において、データユーザ(106、108)は、例えば、インターネット110を介してデータベースシステム112に送信される要求を介して、グラフデータベース114にアクセスしてもよい。そのような要求は、記憶媒体(例えば、フラッシュ記憶装置、ハードディスクドライブ、および/または他の媒体)からのデータの1以上のページを読み込んで、少なくとも部分的に対応し、その要求に応じたデータをロケート及び取り出すことができる。例えば、ソーシャルメディア上のページまたは他のエンティティに(好き)を表示、または親和性を示したユーザに関するデータを検索する要求は、前記のソーシャルメディアページに対応するグラフデータベースノードに関連付けられた格納済みのページ(すなわち、ウェブページまたはソーシャルネットワークページとは対照的である、基礎となる物理的格納媒体等のページベースの組織という意味での「ページ」)をアクセスすることにより情報を提供することが可能であり、前記ページを有するまたは前記ページへリンクされたエッジ(関係)データは、前記ソーシャルメディアページに対して「liked_by」の関係を持つユーザー(ノード)に関連付けられたレコードを識別及び検索するために使用される。例えば、そのようなユーザの属性は、集約され、および/または他の方法で処理されて、要求に応答される。
図2は、グラフデータベースシステムの一実施形態を示すブロック図である。図示の例では、図1のグラフデータベースシステム112は、プロセッサ204に結合された通信インタフェース202(例えば、ネットワークインタフェースカードまたは他のネットワーク通信インタフェース)を含む。プロセッサ204は、プロセッサ204で実行されるプロセスが動作するデータ値と共に、プロセッサ204によって実行されるコンピュータ指令が格納される、メモリ206に結合される。プロセッサ204は、データベースストレージシステムインターフェース208に結合されており、様々な実施形態において、グラフデータベース(例えば、グラフデータベース114)がその上に格納される、ローカルまたは外部物理記憶媒体(例えば、ディスクドライブ、フラッシュドライブなど)にアクセスできるように構成される。そのような媒体から、一度に1つまたは複数のデータ記憶ページのデータが読み取り可能である。
物理的または論理的データ記憶装置は、記憶装置および/または記憶装置が構成されるかに依存して、典型的には512バイトまたは4キロバイトのサイズのような、「ページ」に対応する単位で読み書きされるように編成されてもよい。ページは、データベース記憶システムインターフェース208を使用してプロセッサ204によって読み取られ、操作されるメモリ206に格納されてもよい。いくつかの実施形態では、索引(図示せず)を使用して、どのデータを取り出すべきかを最初に決定し、グラフデータベースから読み取ったデータ(例えば、エッジデータとして格納された関係)を使用して、検索する更なるグラフデータベースレコード(例えば、前記グラフデータベースによって表されるグラフの対応するノードに関連付けられた格納ページ)が識別される。
図3は、グラフデータベースシステムの実施形態に格納されるようなデータの単純化されたセットのグラフ表現の例を示す図である。様々な実施形態では、図3に示すグラフ300などのグラフを、本明細書で開示するように、例えば図1のグラフデータベース114などのグラフデータベースなどのように表現して格納することができる。例示したものでは、グラフ300は、三つのノード(302、304、306)を含み、最初の二つのノード(302、304)は、それぞれ関連した人を表し、第3のノード(306)は会社を表す。エッジ308は、ノード304によって表される人がノード302によって表される人を管理する関係を表し、エッジ310は、前記ノード302によって表される人がノード304によって表される人によって管理される対応関係を表す。
エッジ312は、ノード302によって表される人がノード306によって表される会社によって雇用される関係、およびエッジ314は、ノード306がノード302によって表される人の雇用者として識別される対応関係を表している。同様に、エッジ316は、ノード304によって表される人はノード306によって表される会社によって雇用され、エッジ318は、ノード306がノード304によって表される人の雇用者として識別される対応関係を表している。
図3に示す例は、非常に単純化された例であり、単一の会社の2人の従業員とそれらの間の単一の関係を含むものである。ソーシャルネットワークグラフや単一の企業やその従業員などの典型的な使用ケースでは、グラフには何千ものノードと数千の関係を含むことができる。
図3に示された例では、各関係/エッジは、逆方向の対応する関係を有するが、一部のグラフでは、一方のノードから他方のノードへ戻ることはできないといった、一方向のエッジであってもよい。
複雑なデータセットのグラフ表現の潜在的なパワーは、図3に示される非常に単純化された例から明らかである。例えば、図示の例では、「Acme」会社の従業員の平均年齢を決定するクエリは、その会社に対応するノードを検索し、「従業員」関係(エッジ)データを使用してすべての従業員を迅速に検索し、前記グラフ中の各従業員のノードから従業員の各年齢属性をを取り出し、前記取り出された年齢データを使用して、中央値を計算することにより、比較的迅速に処理される。それとは対照して、関係データベースを使用して同じクエリに応答する場合、中央値を計算する年齢データの全セットを取り出すだけで、実行時に1つ以上の「join」操作を使用して、雇用者と従業員の関係を判断する必要がある。
様々な実施形態では、本明細書に開示された技術は、図3のグラフ300のようなグラフを有する物理的記憶媒体上に表現および格納するために使用されるが、その際、エッジおよび関連する属性、またそのようなエッジ宛先ノードが判定され、関連するデータが効率的にアクセス(例、作成、読み込み、更新及びまたは削除)できるような方法で行われる。
図4は、グラフデータベース内にデータを表現し格納するプロセスの実施形態を示すフローチャートである。様々な実施形態では、図4のプロセスは、図1のグラフデータベース114などのグラフデータベースを提供するために、図1のグラフデータベースシステム112などのグラフデータベースシステムによって実行されてもよい。例では、ノード、エッジ、関連した属性データ(すなわち、ノード属性および/またはエッジ属性)が受信される(402)。例えば、新しく作成されたノードおよび/またはエッジに関連するデータ、および/またはそのようなノードおよび/またはエッジの属性への更新を受信することができる。各ノードは、マイクロB木(404)としてモデル化される。
様々な実施形態では、各ノードをマイクロB木としてモデル化することは、ノードデータ(例えば、ノード識別子、ノード属性、ノードが所有するエッジ、およびそのようなエッジの属性の1つまたは複数)を表現し格納することを含むが、前記ノードデータは、関係データベース索引の索引データを格納するために通常使用される索引ページと同じ方法でフォーマットおよび/またはモデル化されるページに表現及び格納される。いくつかの実施形態で使用されるこのようなページの例が、以下に説明される図5に示される。
さらに図4を参照すると、受信されたノードデータ(例えば、ノード識別子、ノード属性、ノードが所有するエッジ、およびそのようなエッジの属性の1つまたは複数)は、B木索引タイプページ(406)を使って格納される。例えば、メモリ内に構築されたページは、単一のページ書き込み操作で物理記憶装置および/または論理記憶装置に書き込まれてもよい。
図5は、グラフデータベースシステムの一実施形態で使用されるノードデータページ構造の一例を示す図である。様々な実施形態では、図5に示すページ500を使用して、例えば図4のステップ406のように、ノードデータを表現し記憶することができる。図示の例では、ページ500はノード識別子領域502を含み、そのページが関連付けられているノードを一意的に識別するノード識別子が格納される。示されている例では、ノード識別子は、ページ500の8バイト(または他の)ページ識別子と同じである。ページ500はさらに、可変数の固定幅「スロット」504を含む。スロットは図6、図7A、および図7Bに示されるようにフォーマットされ、ノードデータ、エッジデータ、および/または関連する属性を格納するために使用される。例えば、単一のスロットに収まるサイズの値をスロット504に格納することができる。様々な実施形態では、図6、7A、および7Bに示すデータ構造をスロット504に格納することができる。ページ500はまた、可変長データ領域506を含み、スロット504のうちの単一のスロットに収まらないデータが格納されてもよい。例えば、任意の長さの属性データを可変長データ領域506に格納することができる。そのようなデータの識別および/またはそのポインタ(例えば、可変長データ領域506内のオフセット)は、スロット504の対応する1つに書き込むことができる。様々な実施形態では、フォーマットされたおよび/または固定された(または比較的短い)長さのデータがスロット504に書き込まれ、必要に応じてスロットが追加され、ページ500に未使用のスペース508が残っている限り可変長データが可変長データ領域506に追加可能である。ページ500が満杯になる(又は所定の閾値に近づく)と、ページ500は、以下により詳細に説明するように、分割されてもよい。
図6は、グラフデータベースシステムの一実施形態で使用されるスロットデータ構造の一例を示す図である。様々な実施形態において、図6のデータ構造600は、図5のスロット504などの固定幅スロットにグラフデータ(ノード、エッジ、属性)を格納するために使用される。図示の例では、スロットデータ構造600は、各16バイト幅のスロットに、1バイト幅のスロットヘッダ602、および15バイト幅のスロットデータ値セクション604を含む。図示の例では、スロットヘッダは、キー606によって示されるようにデータを格納する。他の実施形態では、特定のフォーマット及びスロットヘッダ602中のコンテンツは図6に示されるものと詳細が異なる可能性がある。図示された例では、各スロットヘッダー602は、スロットタイプを示す2ビット値、すなわち、スロット内にまたはスロットによってノード属性が格納されていることを示す00、スロット内にまたはスロットによってエッジが格納されていることを示す01、エッジ属性が格納されていることを示す02が含まれる。この例の次の2ビットは、スロットステータス(00−アクティブ、01−削除済み、02−フェンス:そのページの最後のスロット値を示す)、続いてエッジ方向を示す2ビット(スロットがエッジを可能する場合、00−外方向、01−内方向)、続いてエッジ(エッジスロットの場合)が属性を有するかを示す1ビットがあり、最終ビットはエッジがノードが所有するものであることを示す。15バイト幅のスロットデータ値セクション604は、図7A(属性)および7B(エッジ)に示されるようにいくつかの実施形態でフォーマットされたエッジスロットデータ値または(エッジ/ノード)属性スロットデータ値のいずれかを、スロットヘッダ602の最初の2ビットで示されたスロットタイプに応じて格納する。
図7Aは、グラフデータベースシステムの実施形態におけるノードまたはエッジ属性データを格納するために使用されるスロットデータ構造の非ヘッダ部分のフォーマットおよび構造の例を示す図である。いくつかの実施形態では、図7Aのデータ構造700は、ノード属性またはエッジ属性タイプのスロットの場合((図6に示す例のスロットタイプ00または02))には、図6に示されるように、スロットの非ヘッダ(すなわち、スロットデータ値)セクション604を埋めるために使用される。図7Aに示す例では、データ構造700は、図7Aに示されたスキームに従ってデータを格納するように構成された1バイト幅属性ヘッダセクション702を含む。例えば、最初のビットは、属性のヌル値を示すために使用され、第2のビットは、属性が配列値であることを示すために使用され。次の2ビットは、属性値がどこに格納されているかを示すために使用されてもよい(00−スロット自体に、例えばプリミティブ値として、01−ページの可変長領域において、その場合、オフセットがスロットに格納される。または02−拡張ページを示す。その場合、対応するデータが存在するページの対応するページ識別子がプリミティブ値としてスロットに格納される)。スロットデータ値セクションデータ構造700の次の2バイトは、該当する属性値のページ内にオフセットを格納するための使用に適用されるとして(例えば、その値がスロット自体に格納されていない場合に)指定される。4バイト幅の属性識別子セクション706は、32ビットの属性IDを格納する。最後に、8バイト幅のペイロード部分708は、ノードではなくエッジ属性の場合には属性が関連付けられたエッジを示すエッジIDを格納するか、またはノード属性の場合には8バイト幅のペイロードセクション708に収まる値のプリミティブ値を格納する。
特定のデータ構造、スキームおよびキーが図7Aに示されているが、他の実施形態では、ノード属性および/またはエッジ属性タイプスロットにおいて属性データを表すために他のフォーマットを使用してもよい。
図7Bは、グラフデータベースシステムの一実施形態におけるスロットデータ構造エッジデータの非ヘッダ部分のフォーマット及び構造の一例を示す図である。いくつかの実施形態では、図7Bのデータ構造720は、エッジタイプのスロットの場合(すなわち、図6の例ではスロットタイプ01)には、図6に示すように、スロットの非ヘッダ(すなわち、スロットデータ値)セクション604にデータを入れるために使用される。図7Bに示す例では、データ構造720は、エッジ識別子値が格納される7バイト幅のエッジ識別子セクション722と、エッジに関連する宛先ノードのノード識別子が格納される8バイト幅の宛先ノード識別子セクション724とを含む。様々な実施形態では、エッジの起点/所有者を格納する必要はないのは、その関係が、エッジスロットが原点であるノードに関連付けられたページに含まれ、したがって(様々な実施形態において)ノードを所有すると考えられという事実によって暗示されるからである。
図8は、グラフデータベースにデータを格納するプロセスの一実施形態を示すフローチャートである。様々な実施形態では、図8のプロセスは、図1のグラフデータベースシステム112などのグラフデータベースシステムによって実行される。図示の例では、データを格納するための指示が受け取られる(802)。データが関連するグラフ(804)の新しいノード、例えば関連付けられたグラフデータベースで以前には見られないか、または表されていないエンティティに関連付けられている場合、前記新しいノードは、本明細書に開示されるようなマイクロB木としてモデル化され、さらに、グラフデータベース内でノードを表すルートページが初期化され(806)、受信されたデータを格納するために使用される。受信したデータが既存のノードに関連付けられ(804)、既存のノードによって所有されているエッジに関連付けられている場合(例えば、エッジを追加、変更、または削除する場合)、前記エッジを所有する既存のノードと関連付けられたページで対応するエッジスロットデータが追加または修正される(810)。
データが新しいノードに関連しておらず(804)、新規または変更されたエッジでない場合(808)、新しいデータは、既存ノードのノードまたはエッジ属性データ(812)のいずれかに対する更新として処理されるが、ノード属性スロット内および/またはそのようなスロットによって示されるデータ領域および/またはページ内のノード属性データを追加または変更することによって(814)、またはエッジ属性スロット内および/またはそのようなスロットによって示されるデータ領域及び/またはページ内にエッジ属性データを追加または修正することによって(816)適宜処理される。
図9は、グラフデータベースにデータを格納するプロセスの一実施形態を示すフローチャートである。様々な実施形態では、図9のプロセスは、図1のグラフデータベースシステム112などのグラフデータベースシステムによって実行可能である。図示の例では、ノードに関連する追加データを格納するための指示が受信される(902)。例えば、追加属性、属性の付加的または異なる値、追加のエッジおよび/またはエッジ属性などを受け取ることができる。ノードに関連する既存のページに空きがある場合(904)、データは既存のページに書き込まれる(906)。例えば、図5の利用可能なスペース508に対応する、ルートページまたはノードに関連付けられた追加のページなど、ノードに関連付けられたページの利用可能な部分が、新しいデータを格納するのに十分なサイズであるかどうかの判定をしてもよい。前記ノードに関連付けられた既存のページ上で利用可能なスペースが十分でない場合(904)、ページ分割操作が実行され、前記ノードに関連するデータを2つ(またはそれ以上)のページにわたって分割し(908)、それにより生成されたページの1つの空き領域に新しいデータが書き込まれる。
様々な実施形態では、B木および/または関連技術を使用して、所与のノードのマイクロB木モデル内のバランスを維持する方法でページを分割することができる。例えば、ページは、ページが分割されるそれぞれのページに格納されるデータ量をバランスさせるように分割されてもよい。
図10は、グラフデータベースに格納されたデータをソートするプロセスの実施形態を示すフローチャートである。種々の実施形態において、図10のプロセスは、図1のグラフデータベースシステム112のようなグラフデータベースシステムによって実行されてもよい。様々な実施形態において、図10のプロセスは、関心のあるデータを見つけるためにグラフをすばやくトラバースするなど、データの検索を促進させるソートされた順序でグラフデータを格納するように実装可能である。図示された例では、ノード(ページ)スロットデータが更新されると(1002)、記憶装置にページを書き込む前に、スロットはスロットタイプ(例えば、ノード属性スロットを最初に、次にエッジスロット、最後にエッジ属性スロット)によってソートされる(1004)。ノード属性スロット内では、スロットは属性記述子識別子(1006)によってソートされる。エッジはエッジIDでソートされ(1008)、エッジ属性はエッジID、次に属性記述子IDでソートされます(1010)。
様々な実施形態においてグラフデータを表現し格納する本明細書に開示された技法は、グラフとして少なくともある特定のデータセットを表現し、関連するデータをグラフデータベースにソートする利点を可能にし、最小限の入出力操作及び効率内で実現する。様々な実施形態では、ソーシャルネットワークおよび類似のデータセットの特徴であるような多数のエッジ(例えば、関係)を含むグラフデータベースは、本明細書で開示される技術を使用して効率的に格納およびアクセスされる。
前述の実施形態は、理解を明確にするために詳細に記載されているが、本発明は、提供される詳細に限定されない。本発明を実施する多くの代替方法がある。開示された実施形態は例示であり、限定的ではない。

Claims (20)

  1. システムであって、
    所定のページサイズの複数のページとして構成された記憶装置と、
    前記記憶装置に結合されたプロセッサであって、
    複数のノードおよびエッジに関連付けられたデータを受信する工程であって、前記エッジの各々は前記ノードの2つ以上の間の関係を表す、受信する工程と、
    各ノードに対して1以上のページのデータを生成する工程であって、各ページは前記所定のページサイズに対応するものであり、各ページは固定長データスロットの可変サイズのセットと、可変サイズの可変長データ領域とを含むデータ構造を有する、生成する工程と、
    を行う、プロセッサと、
    を有するものである、システム。
  2. 請求項1記載のシステムにおいて、前記固定長データスロットは、前記ノードに関連付けられたノード属性データ、エッジデータ、およびエッジ属性データのうちの1つまたは複数を格納するために使用されるように構成された、システム。
  3. 請求項1記載のシステムにおいて、前記固定長データスロットに格納するには大きすぎるデータ値が格納される、システム。
  4. 請求項1記載のシステムにおいて、前記固定長データスロットの各々は、スロットヘッダ及びスロットデータ値セクションを含むものである、システム。
  5. 請求項4記載のシステムにおいて、前記スロットヘッダは、データにスロットタイプを格納するための1つ以上のフィールドを含むものである、システム。
  6. 請求項5記載のシステムにおいて、前記スロットタイプは、格納されたデータのタイプ、またはそのスロットの対応するスロットデータ値セクションに格納されたデータによって識別される位置に格納されたデータのタイプを示すものである、システム。
  7. 請求項6記載のシステムにおいて、前記スロットデータ値セクションは、前記スロットデータ値セクションの固定幅以下のサイズのプリミティブ値を格納するように構成されているものである、システム。
  8. 請求項4記載のシステムにおいて、前記スロットヘッダは、対応する値が前記可変長データ領域内に位置する位置を示すオフセットを格納するフィールドを含むものである、システム。
  9. 請求項1記載のシステムにおいて、前記プロセッサは、前記所定ページサイズの前記ページにさらなる空きスペースがなくなるまで、前記ページにスロットを追加及び前記可変長データ領域のサイズを必要に応じ増加して、特定のノードに関連する追加データを格納するように構成されたものである、システム。
  10. 請求項9記載のシステムにおいて、前記プロセッサは、追加のデータをノード用に格納すると前記所定のページサイズを超えるページが生成される場合は、そのページを分割するように構成されるものである、システム。
  11. 請求項1記載のシステムにおいて、前記プロセッサは、前記ページを前記記憶装置に書き込む前に前記データスロットをソートするようにさらに構成されるものである、システム。
  12. 請求項11記載のシステムにおいて、前記プロセッサは、各スロットのそれぞれのスロットタイプに少なくとも部分的に基づいて前記スロットをソートするように構成されるものである、システム。
  13. 請求項11記載のシステムにおいて、前記プロセッサは、ソートされる順でノード属性が最初で、次に前記ノードによって所有されるエッジ、続いてエッジ属性が含まれるように、前記スロットをソートするように構成されるものである、システム。
  14. 方法であって、
    複数のノードおよびエッジに関連付けられたデータを受信する工程であって、前記エッジの各々は、前記ノードの2つ以上の間の関係を表す、受信する工程と、
    各ノードに対して1以上のページのデータを生成する工程であって、各ページは前記1以上のページが格納される記憶装置と関連付けられた所定のページサイズに対応するものであり、各ページは固定長データスロットの可変サイズのセットと、可変サイズの可変長データ領域とを含むデータ構造を有する、生成する工程と、を有する方法。
  15. 請求項14記載の方法において、前記固定長データスロットは、前記ノードに関連付けられたノード属性データ、エッジデータ、およびエッジ属性データの1つまたは複数を格納するために使用されるように構成されるものである、方法。
  16. 請求項14記載の方法において、前記固定長データスロットに格納するには大きすぎるデータ値が格納されるものである、方法。
  17. 請求項14記載の方法において、前記固定長データスロットの各々は、スロットヘッダとスロットデータ値セクションとを含むものである、方法。
  18. 請求項17記載の方法において、前記スロットヘッダは、データにスロットタイプを格納するための1つ以上のフィールドを含む、方法。
  19. 請求項18記載の方法において、前記スロットタイプは、格納されたデータのタイプ、またはそのスロットの対応するスロットデータ値セクションに格納されたデータによって識別される位置に格納されたデータのタイプを示すものである、方法。
  20. 非一時的なコンピュータ可読媒体に組み込まれたコンピュータプログラム製品であって、
    複数のノードおよびエッジに関連するデータを受信する工程であって、前記エッジの各々は、前記ノードの2つ以上の間の関係を表す、受信する工程と、
    各ノードに対して、1以上のページのデータを生成する工程であって、前記1以上のページが格納される記憶装置に関連付けられた所定のページサイズにそれぞれ対応し、各ページは、固定長データスロットの可変サイズのセットと可変サイズの可変長データ領域を含むものである、生成する工程と
    を行うための指令を有する、コンピュータプログラム製品。
JP2018556975A 2016-05-13 2017-03-08 データベース中にグラフ情報を記憶するためのb木使用 Active JP7153420B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662336473P 2016-05-13 2016-05-13
US62/336,473 2016-05-13
US15/357,924 US10579680B2 (en) 2016-05-13 2016-11-21 Using a B-tree to store graph information in a database
US15/357,924 2016-11-21
PCT/US2017/021451 WO2017196444A1 (en) 2016-05-13 2017-03-08 Using a b-tree to store graph information in a database

Publications (3)

Publication Number Publication Date
JP2019520627A true JP2019520627A (ja) 2019-07-18
JP2019520627A5 JP2019520627A5 (ja) 2020-04-09
JP7153420B2 JP7153420B2 (ja) 2022-10-14

Family

ID=60267344

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018556975A Active JP7153420B2 (ja) 2016-05-13 2017-03-08 データベース中にグラフ情報を記憶するためのb木使用

Country Status (5)

Country Link
US (2) US10579680B2 (ja)
JP (1) JP7153420B2 (ja)
KR (1) KR20190008228A (ja)
DE (1) DE112017002460T5 (ja)
WO (1) WO2017196444A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698865B2 (en) * 2017-06-26 2020-06-30 Vmware, Inc. Management of B-tree leaf nodes with variable size values
CN111523000B (zh) * 2020-04-23 2023-06-23 北京百度网讯科技有限公司 用于导入数据的方法、装置、设备以及存储介质
CN114996297B (zh) * 2022-04-14 2023-09-26 建信金融科技有限责任公司 数据处理方法、装置、设备及介质
CN115374299B (zh) * 2022-10-24 2023-02-03 杭州悦数科技有限公司 分布式图数据库中可达性索引的分层构建方法和系统
CN117763207B (zh) * 2024-02-22 2024-04-30 四川大学华西医院 一种皮肤专业二分类专病数据库建立的方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0581101A (ja) * 1991-09-18 1993-04-02 Hitachi Software Eng Co Ltd キーの記憶割り当て方法
JPH06314171A (ja) * 1993-04-28 1994-11-08 Nippon Telegr & Teleph Corp <Ntt> レコード格納方式
JP2002014776A (ja) * 2000-06-29 2002-01-18 Toshiba Corp ディスク制御システムおよびデータ再配置方法
JP2004145766A (ja) * 2002-10-25 2004-05-20 Kyocera Corp 情報処理システム
US20120317339A1 (en) * 2011-06-13 2012-12-13 International Business Machines Corporation System and method for caching data in memory and on disk
JP2014010812A (ja) * 2012-07-03 2014-01-20 Toshiba Corp 情報処理装置、情報提供装置、情報システム及び情報処理プログラム

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613105A (en) 1993-06-30 1997-03-18 Microsoft Corporation Efficient storage of objects in a file system
US6084877A (en) * 1997-12-18 2000-07-04 Advanced Micro Devices, Inc. Network switch port configured for generating an index key for a network switch routing table using a programmable hash function
US6757742B1 (en) * 2000-05-25 2004-06-29 Advanced Micro Devices, Inc. Computer-based system for validating hash-based table lookup schemes in a network switch
US7668845B1 (en) * 2004-02-18 2010-02-23 Microsoft Corporation C-tree for multi-attribute indexing
US7653938B1 (en) * 2005-02-03 2010-01-26 Cisco Technology, Inc. Efficient cookie generator
US20060282455A1 (en) 2005-06-13 2006-12-14 It Interactive Services Inc. System and method for ranking web content
US7821925B2 (en) * 2007-01-29 2010-10-26 Fulcrum Microsystems, Inc. Traffic distribution techniques utilizing initial and scrambled hash values
US7856437B2 (en) * 2007-07-31 2010-12-21 Hewlett-Packard Development Company, L.P. Storing nodes representing respective chunks of files in a data store
US8180763B2 (en) * 2009-05-29 2012-05-15 Microsoft Corporation Cache-friendly B-tree accelerator
US8665879B2 (en) * 2009-07-14 2014-03-04 Broadcom Corporation Flow based path selection randomization using parallel hash functions
US8782080B2 (en) 2010-04-19 2014-07-15 Facebook, Inc. Detecting social graph elements for structured search queries
JP5707787B2 (ja) * 2010-06-10 2015-04-30 株式会社リコー 転写装置及びそれを用いた画像形成装置
US8954688B2 (en) 2010-10-06 2015-02-10 International Business Machines Corporation Handling storage pages in a database system
US8612688B2 (en) * 2010-12-30 2013-12-17 Facebook, Inc. Distributed cache for graph data
US8775476B2 (en) * 2010-12-30 2014-07-08 Skai, Inc. System and method for creating, deploying, integrating, and distributing nodes in a grid of distributed graph databases
JP5647938B2 (ja) * 2011-04-20 2015-01-07 パナソニック株式会社 送信端末、受信端末、およびid発番装置
US8880871B2 (en) * 2012-01-03 2014-11-04 Broadcom Corporation Hash table organization
US10318583B2 (en) * 2013-03-15 2019-06-11 The Board Of Trustees Of The Leland Stanford Junior University Systems and methods for recommending relationships within a graph database
US9953054B2 (en) * 2013-04-22 2018-04-24 Salesforce.Com, Inc. Systems and methods for implementing and maintaining sampled tables in a database system
US10019536B2 (en) * 2014-07-15 2018-07-10 Oracle International Corporation Snapshot-consistent, in-memory graph instances in a multi-user database
US9805079B2 (en) 2014-08-22 2017-10-31 Xcalar, Inc. Executing constant time relational queries against structured and semi-structured data
US10067966B2 (en) * 2015-09-29 2018-09-04 Vmware, Inc. Leveraging hierarchy in a tree data structure to dynamically allocate keys
BR102015030984A2 (pt) 2015-12-10 2016-03-15 Edson Luiz De Oliveira aparato, sistema e método de geração de nano bolhas a partir de gases e soluções líquidas

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0581101A (ja) * 1991-09-18 1993-04-02 Hitachi Software Eng Co Ltd キーの記憶割り当て方法
JPH06314171A (ja) * 1993-04-28 1994-11-08 Nippon Telegr & Teleph Corp <Ntt> レコード格納方式
JP2002014776A (ja) * 2000-06-29 2002-01-18 Toshiba Corp ディスク制御システムおよびデータ再配置方法
JP2004145766A (ja) * 2002-10-25 2004-05-20 Kyocera Corp 情報処理システム
US20120317339A1 (en) * 2011-06-13 2012-12-13 International Business Machines Corporation System and method for caching data in memory and on disk
JP2014010812A (ja) * 2012-07-03 2014-01-20 Toshiba Corp 情報処理装置、情報提供装置、情報システム及び情報処理プログラム

Also Published As

Publication number Publication date
WO2017196444A1 (en) 2017-11-16
US10579680B2 (en) 2020-03-03
KR20190008228A (ko) 2019-01-23
JP7153420B2 (ja) 2022-10-14
US20200089707A1 (en) 2020-03-19
US11567999B2 (en) 2023-01-31
US20170329871A1 (en) 2017-11-16
DE112017002460T5 (de) 2019-01-31

Similar Documents

Publication Publication Date Title
US11567999B2 (en) Using a B-tree to store graph information in a database
US10180992B2 (en) Atomic updating of graph database index structures
US9558251B2 (en) Transformation functions for compression and decompression of data in computing environments and systems
CN112269792B (zh) 数据查询方法、装置、设备及计算机可读存储介质
CN108228817A (zh) 数据处理方法、装置和系统
CN109952569A (zh) 用于基于字典的连接和聚合的技术
US20180144061A1 (en) Edge store designs for graph databases
US20170255708A1 (en) Index structures for graph databases
US10445370B2 (en) Compound indexes for graph databases
CN114579584B (zh) 数据表处理方法、装置、计算机设备和存储介质
CN112528067A (zh) 图数据库的存储方法、读取方法、装置及设备
James et al. Hybrid database system for big data storage and management
CN110720097A (zh) 图数据库中元组和边的功能性等价
Suri et al. A comparative study between the performance of relational & object oriented database in Data Warehousing
US20180144060A1 (en) Processing deleted edges in graph databases
CN106326295B (zh) 语义数据的存储方法及装置
CN115080684B (zh) 网盘文档索引方法、装置、网盘及存储介质
WO2016119508A1 (zh) 基于Spark系统的大规模对象识别方法
CN114579617A (zh) 数据查询方法、装置、计算机设备和存储介质
Lian et al. Sql or nosql? which is the best choice for storing big spatio-temporal climate data?
CN110309367B (zh) 信息分类的方法、信息处理的方法和装置
CN110609926A (zh) 数据标签存储管理方法及装置
CN113449003B (zh) 信息查询的方法、装置、电子设备及介质
Engle et al. The Case for NoSQL on a Single Desktop
US11675751B2 (en) Systems and methods for capturing data schema for databases during data insertion

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200302

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210518

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210812

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220719

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221001

R150 Certificate of patent or registration of utility model

Ref document number: 7153420

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150