Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7150902B2 - グラフデータベースのトラバース方法、装置、機器及び記憶媒体 - Google Patents
[go: Go Back, main page]

JP7150902B2 - グラフデータベースのトラバース方法、装置、機器及び記憶媒体 - Google Patents

グラフデータベースのトラバース方法、装置、機器及び記憶媒体 Download PDF

Info

Publication number
JP7150902B2
JP7150902B2 JP2021005299A JP2021005299A JP7150902B2 JP 7150902 B2 JP7150902 B2 JP 7150902B2 JP 2021005299 A JP2021005299 A JP 2021005299A JP 2021005299 A JP2021005299 A JP 2021005299A JP 7150902 B2 JP7150902 B2 JP 7150902B2
Authority
JP
Japan
Prior art keywords
operator
thread
operators
buffer queue
execution
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
JP2021005299A
Other languages
English (en)
Other versions
JP2021111419A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2021111419A publication Critical patent/JP2021111419A/ja
Application granted granted Critical
Publication of JP7150902B2 publication Critical patent/JP7150902B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/903Querying
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

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

Description

本出願は、コンピュータ技術に関し、特にインテリジェント検索技術分野に関する。
グラフデータベースでは、グラフトラバース操作が最も基本的な操作である。従来技術では、ユーザによって入力されたグラフトラバース語句を取得した後、グラフトラバース語句に含まれる複数の演算子間のネストされた呼び出しにより、又は各演算子の実行順序に従って前の演算子の実行結果を順次スクリーニングし、最終的にターゲット要素を取得する。
しかしながら、上記2つの方式では、大規模なデータが同時に送信される場合、ターゲット要素のクエリ効率が低く、システムリソースの利用率が低下する。
本出願の実施例は、グラフデータベース内のターゲット要素のクエリ効率及びシステムリソースの利用率を向上させるために、グラフデータベースのトラバース方法、装置、機器及び記憶媒体を提供する。
第1の態様では、本出願の実施例は、
入力されたグラフトラバース語句を取得し、前記グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するステップと、
隣接する2つの演算子ごとに対して、前記隣接する2つ演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るステップと、を含むグラフデータベースのトラバース方法を提供する。
本出願の実施例は、入力されたグラフトラバース語句を取得し、グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成し、隣接する2つの演算子ごとに対して、隣接する2つの演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを隣接する2つの演算子に対応するバッファキューに書き込み、隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、隣接する2つの演算子の前の演算子の実行結果データをバッファキューから後の演算子への操作の実行用に並列に読み取る。上記技術案では、隣接する2つの演算子ごとにバッファキューを作成することにより、隣接する2つの演算子の前の演算子が実行結果データを生成し、前記実行結果データがバッファキューに書き込まれた後、バッファキュー内のデータを読み取って後の演算子を実行することができ、それによって演算子の並列実行が実現され、トラバース操作の実行効率とシステムリソースの利用率が向上する。
選択可能に、前記方法は、
各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送することによって、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作の実行を開始させ、前記トークンデータを次の演算子に対応するスレッドに伝送するステップをさらに含む。
上記出願の1つの選択可能な実施形態では、各演算子に対応するスレッド間のトークンデータの伝送により、次の演算子に対応するスレッドの起動を関連付けてトリガーすることにより、隣接する演算子に対応するスレッド間の待ち時間を短縮させ、さらに実行効率を向上させる。
選択可能には、各演算子にスレッドをそれぞれ割り当てるステップは、
利用可能なスレッドの数に基づいて、各演算子の実行順序に従って各演算子にスレッドをそれぞれ割り当てるステップを含む。
上記出願の1つの選択可能な実施形態では、利用可能なスレッドのデータ及び各演算子の実行順序に基づいて各演算子にスレッドをそれぞれ割り当てることにより、スレッド割り当てメカニズムが改善され、演算子の並列実行が保証される。
選択可能には、前記利用可能なスレッドの数が演算子の数よりも少ない場合、各演算子の実行順序に従ってトークンデータを各演算子に対応するスレッド間で伝送する時に、前記方法は、
前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っているか否かを判断するステップと、
前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っていないと判断した場合、予め設定された条件を満たしている割り当て済みスレッドが現れる時に、前記割り当て済みスレッドを前記次の演算子に再割り当て、前記トークンデータを前記割り当て済みスレッドに伝送して、前記割り当て済みスレッドに前記次の演算子の操作を実行させるステップと、をさらに含み、
ここで、前記予め設定された条件は、前記割り当て済みスレッドがこのスレッドに対応する演算子の操作を実行し終わったことである。
上記出願の1つの選択可能な実施形態では、利用可能なスレッドの数が演算子の数よりも少ない場合、このスレッドに対応する演算子操作を実行した割り当て済みスレッドに次の演算子を再割り当てることにより、利用可能なスレッドが全ての演算子を一回カバーできない場合のスレッド割り当てメカニズムが改善され、演算子の並列実行が保証される。
選択可能には、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するステップは、
各演算子にローカルコンピュータ機器のスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューを前記ローカルコンピュータ機器にそれぞれ作成するステップ、又は、
各演算子について、前記演算子を実行するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器のスレッドを前記演算子に割り当てるステップと、
バッファキューを作成するためのコンピュータを少なくとも2つのコンピュータ機器から隣接する2つの演算子ごとに決定し、決定されたコンピュータ機器において前記隣接する2つの演算子に対応するバッファキューを作成するステップと、を含む。
上記出願の各選択可能な実施形態では、ローカルコンピュータ機器内でスレッドを各演算子に割り当て、隣接する2つの演算子ごとにバッファキューを作成すること、又は、少なくとも2つのコンピュータ機器内でスレッドを各演算子に割り当て、隣接する2つの演算子ごとにバッファキューを作成することにより、グラフデータベースへのトラバース操作は、単一のコンピュータ機器で実現され、又は複数のコンピュータ機器の組み合わせで実現される。
選択可能には、前記方法は、
1番目の演算子について、前記1番目の演算子の実行結果データを保存するためのバッファキューのアドレス情報を、前記1番目の演算子を実行するためのコンピュータ機器に送信して、前記1番目の演算子を実行するためのコンピュータ機器が受信された前記アドレス情報に基づいて対応するバッファキューを位置決めするステップと、
前記1番目の演算子以外のいずれかのターゲット演算子について、前記いずれかのターゲット演算子の前の演算子の実行結果データを保存するための第1のバッファキューのアドレス情報と、前記いずれかのターゲット演算子の実行結果データを保存するための第2のバッファキューのアドレス情報とを、前記いずれかのターゲット演算子を実行するためのコンピュータ機器に送信して、前記いずれかのターゲット演算子を実行するためのコンピュータ機器が受信されたアドレス情報に基づいて対応する前記第1のバッファキュー及び前記第2のバッファキューを位置決めするステップと、をさらに含む。
上記出願の1つの選択可能な実施形態では、前の演算子の実行結果データを必要とする第1のバッファキューのアドレス情報と、この演算子の実行結果データを記憶するための第2のバッファキューのアドレス情報とを、演算子の操作を実行するためのコンピュータ機器に保存することにより、演算子の操作を実行するためのスレッドは、キューの正確な位置決めを実現し、グラフデータベースへのトラバース操作を保証することができる。
選択可能には、前記バッファキューがキュークラスターに作成されている場合、前記バッファキューのアドレス情報にはキュー識別子が含まれ、
前記バッファキューがコンピュータ機器に作成されている場合、前記バッファキューのアドレス情報には、キューが位置するコンピュータ機器の機器識別子、ポート情報及びキュー識別子のうちの少なくとも1つが含まれる。
上記出願の1つの選択可能な実施形態では、異なる位置に作成されたバッファキューに対応するアドレス情報を細分化することにより、バッファキュー作成位置の多様性が体現され、同時にグラフデータベースへのトラバース操作がサポートされる。
選択可能には、前記方法は、
1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしていると判断した場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するステップをさらに含む。
上記出願の1つの選択可能な実施形態では、後の演算子が終了条件を満たしていると決定する時に、予め設定された操作を実行して、実行を終了するように前の全ての演算子に通知することにより、フィードバックメカニズムを通じて潜在的な多数の無効な計算が削除される。
選択可能には、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するステップは、
前記いずれかのターゲット演算子を現在の演算子とし、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じて、前の演算子に対応するスレッドが、当該バッファキューの読み取り側状態が閉じられていることを検出する時に、当該バッファキューへのデータの書き込みを停止し、当該バッファキューの書き込み側状態を閉じて前の演算子の実行を終了するようにし、前の演算子を新しい現在の演算子とし、前記1番目の演算子の実行が終了されるまで、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じる操作を実行するために戻るステップ、又は、
終了情報を予め設定されたグローバル情報テーブルに登録して、前記いずれかのターゲット演算子の前の各演算子に対応するスレッドが前記終了情報を読み取ると、対応する演算子の操作を終了するステップを含む。
上記出願の1つの選択可能な実施形態では、バッファキューの読み取り及び書き込み側状態の制御により、バッファキューに関連付けられた演算子に対応するスレッドへの関連制御が実現され、それによってバッファキューの関連トリガーが達成され、演算子の実行順序の逆の順序に従って、各演算子に対応するスレッドを順次終了し、それによって無効な計算を回避するという効果を達成する。
上記出願の別の選択可能な実施形態では、終了情報を登録するためのグローバル情報テーブルを予め設定することにより、いずれかのターゲット演算子の前の各演算子に対応するスレッドは、終了情報を読み取ると、対応する演算子の操作を終了し、それによって無効な計算を回避するという効果を達成する。
第2の態様では、本出願の実施例は、
入力されたグラフトラバース語句を取得し、前記グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するように構成されるトラバース語句取得モジュールと、
隣接する2つの演算子ごとに対して、前記隣接する2つ演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るように構成される演算子並列実行モジュールと、を含むグラフデータベースのトラバース装置をさらに提供する。
第3の態様では、本出願の実施例は、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信可能に接続されたメモリとを備える電子機器をさらに提供し、ここで、
前記メモリには前記少なくとも1つのプロセッサで実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサが第1の態様によるグラフデータベースのトラバース方法を実行できるように、前記少なくとも1つのプロセッサに実行される。
第4の態様では、本出願の実施例は、コンピュータ命令を記憶している非一時的コンピュータ読み取り可能な記憶媒体をさらに提供し、前記命令が前記少なくとも1つのプロセッサによって実行される場合、第1の態様の実施例によって提供されるグラフデータベースのトラバース方法が実行される。
第5の態様では、本出願の実施例は、コンピュータプログラムをさらに提供し、前記コンピュータプログラムにおける命令が実行された場合、第1の態様の実施例によって提供されるグラフデータベースのトラバース方法が実行される。
上記選択可能な方式が有している他の効果は、以下に具体的な実施例と併せて説明される。
図面は、本解決策をよりよく理解するために使用され、本出願を限定するものではない。
本出願の実施例1におけるグラフデータベースのトラバース方法のフローチャートである。 本出願の実施例1における隣接する2つの演算子の実行プロセスの概略図である。 本出願の実施例2におけるグラフデータベースのトラバース方法のフローチャートである。 本出願の実施例3におけるグラフデータベースのトラバース方法のフローチャートである。 本出願の実施例3における隣接する2つの演算子が終了情報を伝送する概略図である。 本出願の実施例4におけるグラフデータベースのトラバース装置の構成図である。 本出願の実施例によるグラフデータベースのトラバース方法を実現するための電子機器のブロック図である。
以下に、図面を参照して本出願の例示的な実施例を説明し、理解を容易にするために、その中には本出願の実施例の様々な詳細を含んでおり、それらは単なる例示するものと見なされるべきである。したがって、当業者は、本出願の範囲及び趣旨から逸脱することなく、ここで説明される実施例に対して様々な変更と修正を行うことができることを理解すべきである。同様に、明確及び簡潔にするために、以下の説明では、周知の機能及び構成の説明を省略する。
実施例1
図1Aは本出願の実施例1におけるグラフデータベースのトラバース方法のフローチャートである。本出願の実施例は、グラフデータベースでデータトラバースを行うことに適用する。この方法は、ソフトウェア及び/又はハードウェアで実現され且つ一定のデータコンピューティング機能を備えた電子機器に具体的に配置されるグラフデータベースのトラバース装置によって実行される。
図1Aに示すグラフデータベースのトラバース方法は、次のステップを含む。
S101、入力されたグラフトラバース語句を取得し、前記グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成する。
ここでは、グラフトラバース語句の取得は、ユーザが編集されたグラフトラバース語句を実行することで実現されもよい。ここで、グラフトラバース語句には少なくとも2つの演算子が含まれ、各演算子は、グラフデータベースでウォーク、フィルタリング、変換、検索のうちの少なくとも1つの操作を実行し、さらに対応する機能を実現するために使用される。
ここで、バッファキューは、隣接する2つの演算子の後の演算子が前の演算子の実行結果データに基づいて本演算子に対応する操作を実行するために、隣接する2つの演算子の前の演算子の実行結果データを記憶するために使用される。
本出願の実施例の1つの選択可能な実施形態では、単一のコンピュータ機器によりスレッド割り当て及びバッファキュー作成操作を実現することができる。例示的には、各演算子にローカルコンピュータ機器のスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューを前記ローカルコンピュータ機器にそれぞれ作成する。
本出願の実施例の別の選択可能な実施形態では、グラフデータベースのトラバース方法を分散環境に拡張するように、複数のコンピュータ機器によりスレッド割り当て及びバッファキュー作成操作を共同で実現してもよい。
例示的には、各演算子について、前記演算子を実行するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器のスレッドを前記演算子に割り当て、バッファキューを作成するためのコンピュータ機器を少なくとも2つのコンピュータ機器から隣接する2つの演算子ごとに決定し、決定されたコンピュータ機器に前記隣接する2つの演算子に対応するバッファキューを作成する。
なお、演算子の実行結果データを記憶するためのバッファキューと対応する演算子を実行するためのスレッドとは、同じ又は異なるコンピュータ機器に位置してもよい。当然、データ伝送にかかる時間を短縮させ、さらにグラフデータベースのトラバース効率を向上させるために、好ましくは演算子の実行結果データを記憶するためのバッファキュー及び対応する演算子を実行するためのスレッドが同じコンピュータ機器に設けられる。
グラフデータベースへのトラバース操作を実行する過程で、各演算子の実行結果データが多くてコンピュータ機器の記憶容量が大きくなり、コンピュータ機器の動作性能に影響を与えることを回避するために、隣接する2つの演算子ごとにバッファキューをキュークラスター内に作成することもできることは理解するであろう。例示的には、キュークラスターについては、オープンソース分散型メッセージサブスクリプションシステムカフカ(kafka)を使用することができる。
選択可能には、各演算子にスレッドをそれぞれ割り当てることは、利用可能なスレッドの数に基づいて、各演算子の実行順序に従って各演算子にスレッドをそれぞれ割り当てることであってもよい。又は、選択可能には、各演算子にスレッドを割り当てることは、予め設定されたスレッドと演算子との間の対照関係に応じて、各演算子に対応するスレッドを割り当てることであってもよい。
例示的には、スレッドと演算子との間の対照関係は、スレッドの機能に応じて区分されてもよく、例えば、クエリスレッドは、クエリ操作に対応する演算子を実行するために使用され、変換スレッドは、変換操作に対応する演算子を実行するために使用され、フィルタリングスレッドは、フィルタリング操作に対応する演算子を実行するために使用されることなどがある。例示的には、スレッドと演算子との間の対照関係は、利用可能なスレッドの総数及び演算子の総数に基づいてグループに区分されてもよく、例えば利用可能なスレッドが5つ(番号が1~3に対応する)であり、演算子の総数が3つ(番号が1~3に対応する)である場合、演算子番号を利用可能なスレッドの総数で割って余数を求め、且つ余数の値に基づいてグループ化して実現することができる。例えば、演算子番号が1である場合、3の余数が1であり、それに応じてスレッド1を割り当て、演算子が2である場合、3の余数が2であり、それに応じてスレッド2を割り当て、演算子番号が3である場合、3の余数が3であり、それに応じてスレッド3を割り当てる。
なお、利用可能なスレッドの数が演算子の数以上である場合、各演算子は、異なるスレッドが割り当てられて対応する演算子の操作を実行することができる。しかしながら、利用可能なスレッドの数が演算子の数よりも小さい場合、対応するスレッドを持っていない演算子が存在するため、同時実行スレッドの数が制限され、割り当て済みスレッドを再利用することでスレッドの再割り当てを実現することができる。例示的には、全てのスレッドが割り当てられた後、割り当てられた各スレッドの実行状態を監視し、割り当て済みスレッドが、このスレッドに割り当てられた演算子の操作を実行し終わった後、全ての演算子が割り当てられるまで当該スレッドに割り当て対象の演算子を割り当てることができる。
S102、隣接する2つの演算子ごとに対して、前記隣接する2つ演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取る。
図1Bに示す隣接する2つの演算子の実行プロセスの概略図を参照すると、前の演算子に対応するスレッドは、当該演算子を実行して実行結果データD1、D2、D3及びD4を取得してバッファキューに順次書き込み、後の演算子に対応するスレッドは、実行結果データD1をバッファキューから読み取り、実行結果データD1を自体の入力とし、実行結果データD1に対してこのスレッドに対応する演算子の操作を実行し、同時に、前の演算子に対応するスレッドは、このスレッドに対応する演算子の操作を並列に実行し、実行結果データD5を生成し、実行結果データD5をバッファキューに書き込み、これにより、後の演算子は、一部の実行結果データを取得した後、すぐに自体のスレッドを起動して対応する演算子の操作を実行して、隣接する演算子の処理間のデータ待ち時間を節約する。
従来技術では、グラフデータベースをトラバースする時に、通常、以下の2つの方式を使用する。
方式(1)、各レイヤーの操作を1つの演算子として抽象化し、各演算子が反復可能なオブジェクトとして抽象化される。後のレイヤーの演算子が実行される時に前のレイヤーの演算子を反復して呼び出し、すべての演算子は、ネストされたマルチレイヤー反復を論理的に形成し、全てのレイヤー反復が整然として1ラウンド実行され、1つの最終結果が生成される。例えば、g.V(1).out(“friend”).has(‘age’,eq(25)).properties(‘name’)という語句の場合、その意味は、番号1のエンティティの年齢が25歳である友人の名前を見つけることであり、プロパティ(properties)演算子を1回実行すると、結果を取得するためにhas演算子を1回呼び出す必要があり、has演算子を呼び出すと、out演算子が呼び出され、out演算子を実行すると、V演算子が一回実行される。全ての演算子が1ラウンド実行されと、1つの最終結果が生成され、いかなる同時実行論理が存在せず、大規模なデータ量での実行効率が低いため、システムリソースの利用率が低下する。
方式(2)、各レイヤーの演算子は、厳格な順序で計算され、次のレイヤーの演算子は、その上のレイヤーの演算子の出力を入力とする。例えば、上記例のトラバース語句が実行される場合、まずV(1)を実行し、番号1のエンティティを見つけ、次にout演算子を実行し、当該エンティティの全ての友人エンティティを見つける。次に、これらのエンティティに対してフィルタリング操作を実行して、その中の年齢が25であるエンティティをスクリーニングし、その名前を出力する。各レイヤーの演算子が厳格かつ整然として実行されるため、次のレイヤーは、その上のレイヤーのすべての実行結果を待った後にのみ、起動でき、各レイヤーの演算子の実行により実行フロー全体がブロックされ、同様に大規模なデータ量での実行効率が低い。
本出願は、異なる演算子を異なるスレッドに割り当てることにより、前の演算子の実行結果データの全てではなく一部が生成された後、後の演算子のスレッドによって当該実行結果データを処理できるが、この時の前の演算子について対応する演算子操作が引き続き実行され、他の実行結果データが生成されることが理解できる。前の演算子を実行した後に次の演算子を実行する必要がないため、隣接する演算子の実行の待ち時間が短縮されると同時に、複数の演算子に対応するスレッドの並列実行という効果が達成され、それによってグラフデータベースのトラバース効率が向上する。
グラフトラバース語句に複数の演算子が含まれているため、多数のバッファキューが作成される場合、異なるバッファキューを容易に区別するために、各スレッドに対応するアドレス情報を設定することができ、これにより、各スレッドは、演算子操作を実行する時に、バッファキューの正確な位置決めを実現することができる。
例示的には、単一のコンピュータ機器内でスレッドを各演算子に割り当て、隣接する2つの演算子ごとにバッファキューを作成する場合、アドレス情報は、キュー番号又は占有ポートのポート情報などの各バッファキューのキュー識別子であってもよい。各スレッドがバッファキューのアドレス情報を検索することを容易にするために、コンピュータ機器にスレッドキュー関係テーブルを設定することができ、当該スレッドキュー関係テーブルには、いずれかのスレッドについて、当該スレッドによって実行された演算子の実行結果データを記憶しているバッファキューのキュー識別子、及び当該スレッドによって実行された演算子に対応する前の演算子の実行結果データを記憶しているバッファキューのキュー識別子が登録されている。1番目の演算子について前の演算子がないため、前の演算子の実行結果データを記憶するためのバッファキューのキュー識別子は、空又は他のデフォルト値に設定されてもよい。
例示的には、複数のコンピュータ機器内でスレッドを各演算子に割り当て、隣接する2つの演算子ごとにバッファキューを作成する場合、1番目の演算子について、前記1番目の演算子の実行結果データを保存するためのバッファキューのアドレス情報を前記1番目の演算子を実行するためのコンピュータ機器に送信して、前記1番目の演算子を実行するためのコンピュータ機器が受信された前記アドレス情報に基づいて対応するバッファキューを位置決めするようにし、前記1番目の演算子以外のいずれかのターゲット演算子について、前記いずれかのターゲット演算子の前の演算子の実行結果データを保存するための第1のバッファキューのアドレス情報と、前記いずれかのターゲット演算子の実行結果データを保存するための第2のバッファキューのアドレス情報とを、前記いずれかのターゲット演算子を実行するためのコンピュータ機器に送信して、前記いずれかのターゲット演算子を実行するためのコンピュータ機器が受信されたアドレス情報に基づいて対応する前記第1のバッファキュー及び前記第2のバッファキューを位置決めする。
バッファキューがキュークラスターに作成されている場合、バッファキューのアドレス情報にはキュー識別子が含まれ、バッファキューがコンピュータ機器に作成されている場合、バッファキューのアドレス情報には、キューが位置するコンピュータ機器の機器識別子、ポート情報及びキュー識別子のうちの少なくとも1つが含まれる。例示的には、バッファキューのアドレス情報は、ip:port:idという軽量レベルの実現方式を使用することで決定されてもよい。ここで、ipがコンピュータ機器の機器識別子に対応し、portがコンピュータ機器のポート情報に対応し、idがバッファキューのグローバルキュー識別子に対応する。具体的には、機器識別子(ip)とポート情報(port)によってキューの位置を決め、キュー識別子(id)によって具体的なバッファキューを位置決めすることができる。
本出願の実施例は、入力されたグラフトラバース語句を取得し、グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成し、隣接する2つの演算子ごとに対して、隣接する演算子のうちの前の演算子に対応するスレッドによって前の演算子への操作を実行し、前の演算子の実行結果データを隣接する2つの演算子に対応するバッファキューに書き込み、隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、隣接する2つの演算子の前の演算子の実行結果データをバッファキューから後の演算子への操作の実行用に並列に読み取る。上記技術案では、隣接する2つの演算子ごとにバッファキューを作成することにより、隣接する2つの演算子の前の演算子が実行結果データを生成し、前記実行結果データがバッファキューに書き込まれた後、バッファキュー内のデータを読み取って後の演算子を実行することができ、それによって演算子への並列実行が実現され、トラバース操作の実行効率とシステムリソースの利用率が向上する。
実施例2
図2は本出願の実施例2におけるグラフデータベースのトラバース方法のフローチャートである。本出願の実施例は、上記各実施例の技術案に基づいて最適化及び改善される。
さらに、グラフデータベースのトラバース方法では、「各演算子の実行順序に従ってトークンデータを各演算子に対応するスレッド間で伝送することによって、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作の実行を開始させ、前記トークンデータを次の演算子に対応するスレッドに伝送する」という操作を追加し、次の演算子に対応するスレッドの起動を関連付けてトリガーする。
図2に示すグラフデータベースのトラバース方法は、次のステップを含む:
S201、入力されたグラフトラバース語句を取得し、前記グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成する。
S202、各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送することによって、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作の実行を開始させ、前記トークンデータを次の演算子に対応するスレッドに伝送する。
ここで、トークンデータは、設定された長さの文字列で構成され、電子デバイスに予め記憶され、各演算子に対応するスレッドが演算子の操作を実行する前に、異なるスレッド間で伝送されてもよい。
例示的には、1番目の演算子に対応するスレッドがトークンデータを受信した後、トークンデータを受信した当該スレッドは、このスレッドに対応する演算子の操作を実行し、トークンデータを2番目の演算子に対応するスレッドに伝送し、このスレッドに対応する演算子の操作の実行を起動するように対応するスレッドをトリガーし、これによって類推し、前のスレッドが対応するスレッドに対応する演算子の操作を実行した後、トークンデータを次の演算子に対応するスレッドに伝送し、それによって各スレッドが演算子の操作の実行を自動的に起動するという目的を達成する。
利用可能なスレッドの数が演算子の数以上である場合、各演算子について異なるスレッドを割り当て対応する演算子の操作を実行し、トークンデータの伝送により、対応する演算子の操作を実行するように各演算子に対応するスレッドを順次トリガーすることができることが理解できる。
しかしながら、利用可能なスレッドの数が演算子の数よりも小さい場合、対応するスレッドを持っていない演算子が存在するため、同時実行スレッドの数が制限され、割り当て済みスレッドを再利用することでスレッドの再割り当てを実現することができる。
例示的には、全てのスレッドが割り当てられた後、各割り当て済みスレッドの実行状態を監視することができ、割り当て済みスレッドがこのスレッドに割り当てられた演算子の操作を完了した後、全ての演算子が割り当てられるまで当該スレッドに割り当て対象の演算子を再割り当てる。
それに応じて、各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送する場合、再利用化された割り当て済みスレッドへの起動トリガーを次の方式により行うことができる。トークンデータを受信したスレッドは、次の演算子が対応するスレッドを持っているか否かを判断し、前記トークンデータを受信したスレッドは、次の演算子が対応するスレッドを持っていないと判断した場合、予め設定された条件を満たしている割り当て済みスレッドがある時に、前記割り当て済みスレッドを前記次の演算子に再割り当て、前記トークンデータを前記割り当て済みスレッドに伝送して、前記割り当て済みスレッドに前記次の演算子の操作を実行させ、ここで、前記予め設定された条件は、前記割り当て済みスレッドが既にこのスレッドに対応する演算子の操作を実行したことである。
例えば、利用可能なスレッドの数が4であり、グラフトラバース語句に対応する演算子の数が5である場合、1番目の演算子に対応するスレッドは、このスレッドに対応する演算子の操作を実行し、トークンデータを2番目の演算子に対応するスレッドに伝送し、これにより、2番目の演算子に対応するスレッドは、このスレッドに対応する演算子の操作を実行し、トークンデータを次の演算子に対応するスレッドに伝送し、これによって類推し、4番目の演算子が実行される場合、トークンデータを5番目の演算子に対応するスレッドに伝送する必要があるが、この時に併発リソースが使い果たされるため、割り当てられたスレッドが対応する演算子の操作を実行して併発リソースを解放することを待つ必要がある。この時に1番目の演算子に対応するスレッドの実行が完了され、併発リソースが解放される場合、5番目の演算子に当該アイドルスレッドを割り当て、トークンデータを5番目の演算子に対応するスレッドに割り当て、これにより、2番目の演算子に対応するスレッドは、このスレッドに対応する演算子の操作を実行する。
本出願の実施例の1つの選択可能な実施形態では、トークンデータをグローバル番号の形態で実現することができる。例示的には、各演算子に1つの順序番号を与えるとともに、1つのグローバル番号を電子機器に登録し、各演算子が実行されると、当該グローバル番号を次の演算子に対応する番号に変更し、これによって次の演算子の決定及び対応するスレッドの検索を行い、次の演算子に対応するスレッドを検索した後、グローバル番号の伝送を実現し、当該次の演算子が実行される時に、グローバル番号を変更し、これによって類推し、全ての演算子が実行されるまで続ける。
ステップS203、各スレッドがこのスレッドに対応する演算子の操作を実行する場合、隣接する2つの演算子ごとに対して、前記隣接する2つ演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取る。
本出願の実施例の技術案では、各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送して、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作を実行させ、前記トークンデータを次の演算子に対応するスレッドに伝送し、それによって各演算子に対応するスレッド間のトークンデータ伝送により、次の演算子に対応するスレッドの起動を関連付けてトリガーし、隣接する演算子に対応するスレッド間の待ち時間を短縮し、さらに実行効率を向上させる。
実施例3
図3Aは本出願の実施例3におけるグラフデータベースのトラバース方法のフローチャートである。本出願の実施例は、上記各実施例の技術案に基づいて最適化及び改善される。
さらに、グラフデータベースのトラバース方法では、大量の無効な計算を除去するために、「1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしていると判断した場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知する」という操作が追加される。
図3Aに示すグラフデータベースのトラバース方法は、次のステップを含む。
S301、入力されたグラフトラバース語句を取得し、グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成する。
S302、隣接する2つの演算子ごとに対して、前記2つの隣接する演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取る。
S303、1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしていると判断した場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知する。
各演算子に対応するスレッドが対応する演算子の操作を実行する過程では、1番目の演算子の以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしている場合、予め設定された操作を実行することにより、対応する演算子への実行操作を終了するように当該いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知し、当該いずれかのターゲット演算子の後の各演算子に対応するスレッドは、演算子に対応する操作を実行し続けて、最終的な実行結果を得ることが理解され得る。例示的には、演算子実行終了条件は、必要な全てのデータを取得したことであってもよい。上記解決策では予め設定された操作を実行し、終了情報を生成し、バッファキューチェーン内のデータフローの反対方向に沿って終了情報を伝送することにより、スレッドは、レイヤーごとに閉じられる。
本出願の実施例の1つの選択可能な実施形態では、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知することは、前記いずれかのターゲット演算子を現在の演算子とし、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じて、前の演算子に対応するスレッドが当該バッファキューの読み取り側状態が閉じられていることを検出する時に、当該バッファキューへのデータの書き込みを停止し、当該バッファキューの書き込み側状態を閉じて前の演算子の実行を終了するようにし、前の演算子を新しい現在の演算子とし、前記1番目の演算子の実行が終了されるまで現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じる操作を実行するために戻ることであってもよい。
具体的には、1番目の演算子の以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしている場合、当該いずれかのターゲット演算子を現在の演算子とし、当該現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じて、現在の演算子のスレッドがバッファキューから前の演算子の実行結果データを引き続き読み取ることができないようにする。それに応じて、前の演算子に対応するスレッドが、その実行結果データを記憶するバッファキューの読み取り終了状態が閉じられていることを検出すると、その後の演算子がこのスレッドに対応する演算子の実行結果データの取得を行う必要がなく、したがって、それは、当該バッファキューへのデータの書き込みを能動的に停止し、つまり、このスレッドに対応する演算子の実行を停止し、実行結果データの生成を阻止し、同時に、当該バッファキューの書き込み側状態を閉じ、バッファキューへのデータの書き込みを受動的に停止する。当該前の演算子を新しい現在の演算子とし、前記1番目の演算子への実行が終了されるまで現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じる操作を循環して実行する。
図3Bに示す隣接する2つの演算子ごとに終了情報を伝送する概略図を参照すると、後の演算子が実行結果データD1をバッファキューから取得した場合、演算子実行終了条件を満たしていると決定し、この時にバッファキューの読み取り側状態を閉じて、後の演算子がその後で実行結果データD2、D3及びD4などをバッファキューから読み取ることを禁止する。前の演算子が、当該バッファキューの読み取り側状態が閉じられていることを検出する場合、バッファキューへの実行中の演算子の実行結果データD5の書き込みを停止し、バッファキューの書き込み側状態を閉じて、前の演算子に対応するスレッドがバッファキューにデータを書き込むことを禁止し、それによって当該前の演算子の実行を終了し、終了情報の逆伝送を実現する。当該前の演算子を新しい後の演算子とし、その前の演算子に対応するバッファキューの読み取り側状態を閉じ続け、これによって類推し、1番目の演算子の実行が終了されるまで続ける。
本出願の実施例の別の選択可能な実施形態では、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知することは、終了情報を予め設定されたグローバル情報テーブルに登録して、前記いずれかのターゲット演算子の前の各演算子に対応するスレッドが前記終了情報を読み取ると、対応する演算子の操作を終了することであってもよい。
具体的には、グローバル情報テーブルを予め設定することができ、各演算子は、いずれも当該グローバル情報テーブルに情報を登録又は読み取ることができる。1番目の演算子以外のいずれかの演算子に対応するスレッドが演算子実行終了条件を満たしていると決定された場合、終了情報を予め設定されたグローバル情報テーブルに登録する。グラフトラバース語句に含まれる各演算子に対応するスレッドを実行すると、グローバル情報テーブルから終了情報を読み取ることができるため、グローバル情報テーブルに終了情報が登録されている場合、いずれかのターゲット演算子の前の各演算子に対応するスレッドは、対応する演算子の操作を終了し、これにより、当該いずれかのターゲット演算子の入力として、新しい実行結果データが生成されない。
上記方式は、当該いずれかのターゲット演算子の前の演算子が終了情報を同時に読み取り、実行結果データの生成を終了し、各隣接する演算子の実行が終了されると時間遅延がないため、無効な計算の発生をさらに減少させることができることが理解され得る。また、グラフトラバース語句に含まれる各演算子に対応するスレッド間で情報共有を実現するために、他のグローバル情報をグラフトラバーステーブルに同時に登録することができる。
本出願の実施例は、1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしていると決定された場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知する。上記技術案では、後の演算子が終了条件を満たしていると決定される時に、予め設定された操作を実行して、実行を終了するように前の全ての演算子に通知することにより、フィードバックメカニズムを通じて潜在的な多数の無効な計算が除去される。
実施例4
図4は本出願の実施例4におけるグラフデータベースのトラバース装置の構成図である。本出願の実施例は、グラフデータベースでデータトラバースを行うことに適用する。この装置は、ソフトウェア及び/又はハードウェアで実現され、且つ具体的には、一定のデータコンピューティング機能を備えた電子機器に配置される。
図4に示すグラフデータベースのトラバース装置400は、トラバース語句取得モジュール401と演算子並列実行モジュール402とを含む。
トラバース語句取得モジュール401は、入力されたグラフトラバース語句を取得し、グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するように構成され、
演算子並列実行モジュール402は、隣接する2つの演算子ごとに対して、前記2つの隣接する演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るように構成される。
本出願の実施例は、トラバース語句取得モジュールにより、入力されたグラフトラバース語句を取得し、グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成し、演算子並列実行モジュールにより、隣接する2つの演算子ごとに対して、隣接する2つ演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを隣接する2つの演算子に対応するバッファキューに書き込み、隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、隣接する2つの演算子の前の演算子の実行結果データをバッファキューから後の演算子の操作の実行用に並列に読み取る。上記技術案では、隣接する2つの演算子ごとにバッファキューを作成することにより、隣接する2つの演算子の前の演算子が実行結果データを生成し、前記実行結果データがバッファキューに書き込まれた後、バッファキュー内のデータを読み取って後の演算子を実行することができ、それによって演算子の並列実行が実現され、トラバース操作の実行効率とシステムリソースの利用率が向上する。
さらに、当該装置は、
各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送することによって、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作の実行を開始させ、前記トークンデータを次の演算子に対応するスレッドに伝送するように構成されるトークン伝送モジュールをさらに含む。
さらに、トラバース語句取得モジュール401は、各演算子にスレッドをそれぞれ割り当てるように実行する時に、具体的には、
利用可能なスレッドの数に基づいて、各演算子の実行順序に従って各演算子にスレッドをそれぞれ割り当てるように構成される。
さらに、前記利用可能なスレッドの数が演算子の数よりも少ない場合、トラバース語句取得モジュール401は、各演算子の実行順序に従ってトークンデータを各演算子に対応するスレッド間で伝送する時に、具体的には、
前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っているか否かを判断し、
トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っていないと判断した場合、予め設定された条件を満たしている割り当て済みスレッドがある時に、前記割り当て済みスレッドを前記次の演算子に再割り当て、前記トークンデータを前記割り当て済みスレッドに伝送して、前記割り当て済みスレッドに前記次の演算子の操作を実行させるように構成され、
ここで、前記予め設定された条件は、前記割り当て済みスレッドがこのスレッドに対応する演算子の操作を実行し終わったことである。
さらに、トラバース語句取得モジュール401は、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するように実行する時に、具体的には、
各演算子にローカルコンピュータ機器のスレッドをそれぞれ割り当て、前記ローカルコンピュータ機器において隣接する2つの演算子ごとにバッファキューをそれぞれ作成し、又は、
各演算子について、前記演算子を実行するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器のスレッドを前記演算子に割り当て、
少なくとも2つのコンピュータ機器からバッファキューを作成するためのコンピュータ機器を隣接する2つの演算子ごとに決定し、決定されたコンピュータ機器において前記隣接する2つの演算子に対応するバッファキューを作成するように構成される。
さらに、当該装置は、アドレス情報保存モジュールをさらに含み、前記アドレス情報保存モジュールは、具体的には、
1番目の演算子について、前記1番目の演算子の実行結果データを保存するためのバッファキューのアドレス情報を前記1番目の演算子を実行するためのコンピュータ機器に送信して、前記1番目の演算子を実行するためのコンピュータ機器が受信された前記アドレス情報に基づいて対応するバッファキューを位置決めするようにし、
前記1番目の演算子以外のいずれかのターゲット演算子について、前記いずれかのターゲット演算子の前の演算子の実行結果データを保存するための第1のバッファキューのアドレス情報と前記いずれかのターゲット演算子の実行結果データを保存するための第2のバッファキューのアドレス情報とを、前記いずれかのターゲット演算子を実行するためのコンピュータ機器に送信して、前記いずれかのターゲット演算子を実行するコンピュータ機器が受信されたアドレス情報に基づいて対応する前記第1のバッファキュー及び前記第2のバッファキューを位置決めするように構成される。
さらに、前記バッファキューがキュークラスターに作成されている場合、前記バッファキューのアドレス情報にはキュー識別子が含まれ、
前記バッファキューがコンピュータ機器に作成されている場合、前記バッファキューのアドレス情報には、キューが位置するコンピュータ機器の機器識別子、ポート情報及びキュー識別子のうちの少なくとも1つが含まれる。
さらに、当該装置は、
1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが、演算子実行終了条件を満たしていると決定された場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するように構成されるスレッド終了モジュールをさらに含む。
さらに、スレッド終了モジュールは、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するという操作を実行する時に、具体的には、
前記いずれかのターゲット演算子を現在の演算子とし、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じて、前の演算子に対応するスレッドが当該バッファキューの読み取り側状態が閉じられていることを検出する時に、当該バッファキューへのデータの書き込みを停止し、当該バッファキューの書き込み側状態を閉じて前の演算子の実行を終了するようにし、前の演算子を新しい演算子とし、前記1番目の演算子の実行が終了されるまで現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じる操作を実行するために戻り、又は、
終了情報を予め設定されたグローバル情報テーブルに登録して、前記いずれかのターゲット演算子の前の各演算子に対応するスレッドが前記終了情報を読み取ると、対応する演算子の操作を終了するように構成される。
上記グラフデータベースのトラバース装置は、本出願の任意の実施例によって提供されるグラフデータベースのトラバース方法を実行することができ、グラフデータベースのトラバース方法を実行するための対応する機能モジュールと有益な効果を備える。
実施例5
本出願の実施例によれば、本出願は、電子機器と読み取り可能な記憶媒体とをさらに提供する。
図5は本出願の実施例によるグラフデータベースのトラバース方法を実現するための電子機器のブロック図である。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを図る。電子機器は、さらに携帯情報端末、セルラー電話、スマートフォン、ウェアラブルデバイス及び他の類似するコンピューティングデバイスなどの様々な形態の移動装置を表すこともできる。本明細書に示されているコンポーネント、それらの接続及び関係、並びにそれらの機能は、例だけであり、かつ本明細書での説明及び/又は要求される本出願の実現を制限することを意図するものではない。
図5に示すように、当該電子機器は、1つ又は複数のプロセッサ501と、メモリ502と、高速インターフェース及び低速インターフェースを含む、各コンポーネントを接続するためのインターフェースとを含む。各コンポーネントは、異なるバスで相互に接続され、かつ共通のマザーボードに取り付けられてもよいか、又は必要に応じて他の方式で取り付けられてもよい。プロセッサは、外部入力/出力装置(インタフェースに結合された表示装置など)にGUIのグラフィック情報を表示するためにメモリ内又はメモリ上に記憶される命令を含む、電子機器内に実行される命令を処理することができる。他の実施形態では、必要の場合、複数のプロセッサ及び/又は複数のバスを複数のメモリと複数のメモリとともに使用することができる。同様に、複数の電子機器を接続することができ、各装置は、部分の必要な操作を提供することができる(例えば、サーバアレイ、1つのブレード型サーバ、又はマルチプロセッサシステムとする)。図5では、一つのプロセッサ501は例として挙げられる。
メモリ502は、本出願による非一時的コンピュータ読み取り可能な記憶媒体である。ここで、前記メモリには、前記少なくとも1つのプロセッサが本出願によるグラフデータベースのトラバース方法を実行するように、少なくとも1つのプロセッサで実行可能な命令が記憶される。本出願の非一時的コンピュータ読み取り可能な記憶媒体は、コンピュータに本出願によるグラフデータベースのトラバース方法を実行させるためコンピュータ命令を記憶している。
メモリ502は、非一時的コンピュータ読み取り可能な記憶媒体として、非一時的ソフトウェアプログラム、非一時的コンピュータ実行可能プログラム、及び本出願の実施例におけるグラフデータベースのトラバース方法に対応するプログラム命令/モジュール(例えば、図4に示すトラバース語句取得モジュール401と演算子並列実行モジュール402とを含むグラフデータベースのトラバース装置400)などのモジュールを記憶するように構成されてもよい。プロセッサ501は、メモリ502に記憶されている非一時的ソフトウェアプログラム、命令及びモジュールを実行することにより、サーバの様々な機能アプリケーション及びデータ処理を実行し、即ち上記方法の実施例におけるグラフデータベースのトラバース方法を実現する。
メモリ502は、プログラム記憶領域とデータ記憶領域とを含むことができ、ここで、プログラム記憶領域は、オペレーティングシステムと、少なくとも一つの機能に必要なアプリケーションプログラムとを記憶することができ、データ記憶領域は、グラフデータベースのトラバース方法を実行するための電子機器の使用に応じて作成されたデータなどを記憶することができる。また、メモリ502は、高速ランダムアクセスメモリを含むことができ、非一時的メモリ、例えば少なくとも一つの磁気ディスク記憶デバイス、フラッシュメモリデバイス、又は他の非一時的ソリッドステートストレージデバイスをさらに含むことができる。いくつかの実施例では、メモリ502は、プロセッサ501に対して遠隔に設けられたメモリを選択的に含むことができ、これらの遠隔メモリは、ネットワークを介してグラフデータベースのトラバース方法を実行するための電子機器に接続されてもよい。上記ネットワークの実施例は、インターネット、イントラネット、ローカルエリアネットワーク、移動通信ネットワーク及びそれらの組み合わせを含むがこれらに限定されない。
グラフデータベースのトラバース方法を実行するための電子機器は、入力装置503と出力装置504とをさらに含むことができる。プロセッサ501、メモリ502、入力装置503と出力装置504は、バス又は他の方式で接続されてもよく、図5ではバスによる接続が例として挙げられる。
入力装置503は、入力された数字又は文字情報を受信し、グラフデータベースのトラバース方法を実行するための電子機器のユーザ設定及び機能制御に関するキー信号入力を生成することができ、例えばタッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、インジケータースティック、一つ又は複数のマウスボタン、トラックボール、ジョイスティックなどの入力装置である。出力装置504は、表示装置、補助照明装置(例えば、LED)及び触覚フィードバック装置(例えば、振動モータ)などを含むことができる。当該表示装置は、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイとプラズマディスプレイを含むことができるがこれらに限定されない。いくつかの実施形態では、表示装置は、タッチスクリーンであってもよい。
本出願の実施例によれば、コンピュータプログラムが提供される。当該コンピュータプログラムにおける命令が実行された場合に、本出願の実施例のグラフデータベースのトラバース方法が実行される。
本明細書で説明されるシステム及び技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、特定用途向けASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせで実現されてもよい。これらの様々な実施形態は、一つ又は複数のコンピュータプログラムで実施されることを含むことができ、当該一つ又は複数のコンピュータプログラムは、少なくとも一つのプログラマブルプロセッサを含むプログラマブルシステムで実行及び/又は解釈されてもよく、当該プログラマブルプロセッサは、専用又は汎用プログラマブルプロセッサであってもよく、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、かつデータ及び命令を当該記憶システム、当該少なくとも一つの入力装置及び当該少なくとも一つの出力装置に伝送することができる。
これらのコンピューティングプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも呼ばれる)は、プログラマブルプロセッサの機械命令を含み、かつ高度レベルのプロセス及び/又はオブジェクト向けプログラミング言語、及び/又はアセンブリ/機械言語で実現されてもよい。本明細書で使用されるように、用語「機械読み取り可能な媒体」及び「コンピュータ読み取り可能な媒体」は、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意のコンピュータプログラム製品、機器、及び/又は装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械読み取り可能な信号である機械命令を受信する機械読み取り可能な媒体を含む。用語「機械読み取り可能な信号」は、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意の信号を指す。
ユーザとのインタラクションを提供するために、本明細書で説明されるシステム及び技術をコンピュータで実施することができ、当該コンピュータは、情報をユーザに表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、キーボード及びポインティングデバイス(例えば、マウス又はトラックボール)とを有し、ユーザは、当該キーボード及び当該ポインティングデバイスによって入力をコンピュータに提供することができる。他の種類の装置は、ユーザとのインタラクションを提供するように構成されてもよい。例えば、ユーザに提供されるフィードバックは、任意の形態のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、かつ任意の形態(音響入力と、音声入力と、触覚入力とを含む)でユーザからの入力を受信することができる。
本明細書で説明されるシステム及び技術は、バックエンドコンポーネントを含むコンピューティングシステム(例えば、データサーバとする)、又はミドルウェアコンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンドコンポーネントを含むコンピューティングシステム(例えば、グラフィカルユーザインタフェース又はウェブブラウザを有するユーザコンピュータであり、ユーザは、当該グラフィカルユーザインタフェース又は当該ウェブブラウザによって本明細書で説明されるシステム及び技術の実施形態とのインタラクションを行うことができる)、又はこのようなバックエンドコンポーネント、ミドルウェアコンポーネント、又はフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムで実施されてもよい。任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によってシステムのコンポーネントを相互に接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(LAN)と、ワイドエリアネットワーク(WAN)と、インターネットとを含む。
コンピュータシステムは、クライアントとサーバとを含むことができる。クライアントとサーバは、一般的には、互いに離れており、通常、通信ネットワークを介してインタラクションを行う。クライアントとサーバとの関係は、対応するコンピュータ上で実行されかつ相互にクライアント-サーバ関係を有するコンピュータプログラムによって生成される。
本出願の実施例は、入力されたグラフトラバース語句を取得し、グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成し、隣接する2つの演算子ごとに対して、隣接する2つの演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを隣接する2つの演算子に対応するバッファキューに書き込み、隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、隣接する2つの演算子の前の演算子の実行結果データをバッファキューから後の演算子の操作の実行用に並列に読み取る。上記技術案では、隣接する2つの演算子ごとにバッファキューを作成することにより、隣接する2つの演算子の前の演算子が実行結果データを生成し、前記実行結果データがバッファキューに書き込まれた後、バッファキュー内のデータを読み取って後の演算子を実行することができ、それによって演算子の並列実行が実現され、トラバース操作の実行効率とシステムリソースの利用率が向上する。
上記様々な形態のフローを使用して、ステップを並べ替え、追加、又は削除することができることを理解すべきである。例えば、本出願に記載されている各ステップは、本出願で開示されている技術案の所望の結果さえ達成すれば、並列に実行されてもよいし、順次実行されてもよいし、異なる順序で実行されてもよいが、本明細書では限定されない。
上記具体的な実施形態は、本出願の保護範囲を制限するためのものではない。当業者は、設計要件及び他の要因に従って、様々な修正、組み合わせ、サブコンビネーション及び置換を行うことができることを理解すべきである。本出願の精神及び原則の範囲内で行われたいかなる修正、同等の置換と改良などは、いずれも本出願の保護範囲内に含まれるべきである。

Claims (13)

  1. グラフデータベースのトラバース方法であって、
    入力されたグラフトラバース語句を取得し、前記グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するステップと、
    隣接する2つの演算子ごとに対して、前記隣接する2つの演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るステップと、を含
    各スレッドに対応するアドレス情報を設定することにより、各スレッドは、演算子操作を実行する時に、バッファキューの正確な位置決めを実現する、
    ことを特徴とするグラフデータベースのトラバース方法。
  2. 各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送することによって、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作の実行を開始させ、前記トークンデータを次の演算子に対応するスレッドに伝送するステップをさらに含む、
    ことを特徴とする請求項1に記載の方法。
  3. 各演算子にスレッドをそれぞれ割り当てるステップは、
    利用可能なスレッドの数に基づいて、各演算子の実行順序に従って各演算子にスレッドをそれぞれ割り当てるステップを含む、
    ことを特徴とする請求項2に記載の方法。
  4. 利用可能なスレッドの数が演算子の数よりも少ない場合、各演算子の実行順序に従ってトークンデータを各演算子に対応するスレッド間で伝送する時に、前記方法は、
    前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っているか否かを判断するステップと、
    前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っていないと判断した場合、予め設定された条件を満たしている割り当て済みスレッドが現れる時に、前記割り当て済みスレッドを前記次の演算子に再割り当て、前記トークンデータを前記割り当て済みスレッドに伝送して、前記割り当て済みスレッドに前記次の演算子の操作を実行させるステップと、をさらに含み、
    前記予め設定された条件は、前記割り当て済みスレッドがこのスレッドに対応する演算子の操作を実行し終わったことである、
    ことを特徴とする請求項3に記載の方法。
  5. 各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するステップは、
    各演算子にローカルコンピュータ機器のスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューを前記ローカルコンピュータ機器にそれぞれ作成するステップ、又は、
    各演算子について、前記演算子を実行するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器のスレッドを前記演算子に割り当てるステップと、
    隣接する2つの演算子ごとについて、バッファキューを作成するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器において前記隣接する2つの演算子に対応するバッファキューを作成するステップと、を含む、
    ことを特徴とする請求項1に記載の方法。
  6. 1番目の演算子について、前記1番目の演算子の実行結果データを保存するためのバッファキューのアドレス情報を、前記1番目の演算子を実行するためのコンピュータ機器に送信して、前記1番目の演算子を実行するためのコンピュータ機器が受信された前記アドレス情報に基づいて対応するバッファキューを位置決めするステップと、
    前記1番目の演算子以外のいずれかのターゲット演算子について、前記いずれかのターゲット演算子の前の演算子の実行結果データを保存するための第1のバッファキューのアドレス情報と、前記いずれかのターゲット演算子の実行結果データを保存するための第2のバッファキューのアドレス情報とを、前記いずれかのターゲット演算子を実行するためのコンピュータ機器に送信して、前記いずれかのターゲット演算子を実行するためのコンピュータ機器が受信されたアドレス情報に基づいて対応する前記第1のバッファキュー及び前記第2のバッファキューを位置決めするステップと、をさらに含む、
    ことを特徴とする請求項5に記載の方法。
  7. 前記バッファキューがキュークラスターに作成されている場合、前記バッファキューのアドレス情報にはキュー識別子が含まれ、
    前記バッファキューがコンピュータ機器に作成されている場合、前記バッファキューのアドレス情報には、キューが位置するコンピュータ機器の機器識別子、ポート情報及びキュー識別子のうちの少なくとも1つが含まれる、
    ことを特徴とする請求項6に記載の方法。
  8. 1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしていると判断した場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するステップをさらに含む、
    ことを特徴とする請求項1~7のいずれかに記載の方法。
  9. 予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するステップは、
    前記いずれかのターゲット演算子を現在の演算子とし、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じて、前の演算子に対応するスレッドが、当該バッファキューの読み取り側状態が閉じられていることを検出する時に、当該バッファキューへのデータの書き込みを停止し、当該バッファキューの書き込み側状態を閉じて前の演算子の実行を終了するようにし、前の演算子を新しい現在の演算子とし、前記1番目の演算子の実行が終了されるまで、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じる操作を実行するために戻るステップ、又は、
    終了情報を予め設定されたグローバル情報テーブルに登録して、前記いずれかのターゲット演算子の前の各演算子に対応するスレッドが前記終了情報を読み取ると、対応する演算子の操作の実行を終了するステップを含む、
    ことを特徴とする請求項8に記載の方法。
  10. グラフデータベースのトラバース装置であって、
    入力されたグラフトラバース語句を取得し、グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するように構成されるグラフトラバース語句取得モジュールと、
    隣接する2つの演算子ごとに対して、前記隣接する2つの演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るように構成される演算子並列実行モジュールと、を含
    各スレッドに対応するアドレス情報を設定することにより、各スレッドは、演算子操作を実行する時に、バッファキューの正確な位置決めを実現する、
    ことを特徴とするグラフデータベースのトラバース装置。
  11. 電子機器であって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに通信可能に接続されたメモリと、を含み、
    前記メモリには前記少なくとも1つのプロセッサで実行可能な命令が記憶され、前記命令が前記少なくとも1つのプロセッサによって実行される場合、前記少なくとも1つのプロセッサが請求項1~9のいずれかに記載のグラフデータベースのトラバース方法を実行する、
    ことを特徴とする電子機器。
  12. コンピュータ命令を記憶している非一時的コンピュータ読み取り可能な記憶媒体であって、
    前記コンピュータ命令が実行される場合、請求項1~9のいずれかに記載のグラフデータベースのトラバース方法が実行される、
    ことを特徴とする非一時的コンピュータ読み取り可能な記憶媒体。
  13. コンピュータプログラムであって、
    前記コンピュータプログラムにおける命令が実行された場合、請求項1~9のいずれかに記載のグラフデータベースのトラバース方法が実行される、
    ことを特徴とするコンピュータプログラム。
JP2021005299A 2020-01-15 2021-01-15 グラフデータベースのトラバース方法、装置、機器及び記憶媒体 Active JP7150902B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010043990.2 2020-01-15
CN202010043990.2A CN111259205B (zh) 2020-01-15 2020-01-15 一种图数据库遍历方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
JP2021111419A JP2021111419A (ja) 2021-08-02
JP7150902B2 true JP7150902B2 (ja) 2022-10-11

Family

ID=70952104

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021005299A Active JP7150902B2 (ja) 2020-01-15 2021-01-15 グラフデータベースのトラバース方法、装置、機器及び記憶媒体

Country Status (5)

Country Link
US (1) US11734076B2 (ja)
EP (1) EP3851979B1 (ja)
JP (1) JP7150902B2 (ja)
KR (1) KR102522958B1 (ja)
CN (1) CN111259205B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112149828B (zh) * 2020-09-29 2022-05-13 北京百度网讯科技有限公司 基于深度学习框架的算子精度检测方法和装置
CN114518950B (zh) * 2020-11-18 2025-11-21 华为技术有限公司 一种内存管理的方法、设备及系统
CN114237903B (zh) * 2021-12-22 2024-03-22 上海壁仞智能科技有限公司 内存分配优化方法、装置、电子设备、介质及程序产品
CN114398095B (zh) * 2021-12-29 2025-02-14 浙江大华技术股份有限公司 算子的卸载及注册方法、装置、存储介质及电子装置
CN114741172B (zh) * 2022-04-06 2023-05-02 深圳鲲云信息科技有限公司 人工智能模型的算子调度方法、装置、设备及存储介质
CN115080241B (zh) * 2022-06-30 2024-10-15 支付宝(杭州)信息技术有限公司 数据处理方法以及装置
CN116843913A (zh) * 2023-07-06 2023-10-03 北京有竹居网络技术有限公司 一种商品特征的处理方法、装置、计算机设备及存储介质
CN119690996B (zh) * 2023-09-22 2025-10-24 华为技术有限公司 加载算子的方法、查找算子的方法、装置、设备和介质
CN120234353B (zh) * 2025-05-30 2025-10-10 启元实验室 基于图数据库的多版本数据的缓存装置和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008500627A (ja) 2004-05-27 2008-01-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 信号処理装置
US20140172914A1 (en) 2012-12-14 2014-06-19 Microsoft Corporation Graph query processing using plurality of engines
JP2014194772A (ja) 2013-03-28 2014-10-09 Fujitsu Ltd グラフデータベースクエリ処理方法及び装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182464A1 (en) * 2002-02-15 2003-09-25 Hamilton Thomas E. Management of message queues
KR20070031307A (ko) 2004-05-27 2007-03-19 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품
US20090013397A1 (en) * 2007-07-06 2009-01-08 Xmos Limited Processor communication tokens
US8656396B2 (en) * 2009-08-11 2014-02-18 International Business Machines Corporation Performance optimization based on threshold performance measure by resuming suspended threads if present or by creating threads within elastic and data parallel operators
TW201222287A (en) * 2010-11-19 2012-06-01 Inventec Corp Simultaneous updating method for usage priorities of parts in graphic database
US9563663B2 (en) * 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
CN103150149B (zh) * 2013-03-26 2015-11-25 华为技术有限公司 处理数据库重做数据的方法和装置
US9459876B2 (en) * 2013-07-18 2016-10-04 Nvidia Corporation System, method, and computer program product for managing divergences and synchronization points during thread block execution by using a double sided queue for token storage
CN103559016B (zh) * 2013-10-23 2016-09-07 江西理工大学 一种基于图形处理器并行计算的频繁子图挖掘方法
CN104052811B (zh) * 2014-06-17 2018-01-02 华为技术有限公司 一种业务调度的方法、装置及系统
US9547728B2 (en) * 2014-06-18 2017-01-17 Sap Ag Graph traversal operator and extensible framework inside a column store
CN107193857B (zh) * 2016-03-15 2021-01-01 阿里巴巴集团控股有限公司 一种用于数据库遍历的方法与设备
US10552450B2 (en) * 2016-08-05 2020-02-04 International Business Machines Corporation Distributed graph databases that facilitate streaming data insertion and low latency graph queries
CN106547612B (zh) * 2016-10-18 2020-10-20 深圳怡化电脑股份有限公司 一种多任务处理方法及装置
CN108009005A (zh) * 2016-10-31 2018-05-08 北京优朋普乐科技有限公司 一种线程池管理方法及装置
WO2018120171A1 (zh) * 2016-12-30 2018-07-05 华为技术有限公司 一种用于存储过程的执行方法、设备以及系统
CN108536705B (zh) * 2017-03-02 2021-10-01 华为技术有限公司 数据库系统中对象的编码及运算方法与数据库服务器
CN108694199A (zh) * 2017-04-10 2018-10-23 北京京东尚科信息技术有限公司 数据同步装置、方法、存储介质及电子设备
US10366124B2 (en) * 2017-06-07 2019-07-30 Oracle International Corporation Dynamic grouping of in-memory data processing operations
US11269647B2 (en) * 2017-12-18 2022-03-08 International Business Machines Corporation Finish status reporting for a simultaneous multithreading processor using an instruction completion table
CN112352234B (zh) * 2018-06-15 2024-03-08 华为云计算技术有限公司 用于处理并发属性图查询的系统
US11061896B2 (en) * 2018-06-19 2021-07-13 Salesforce.Com, Inc. Maximizing operator parallelism
US20200265090A1 (en) * 2019-02-20 2020-08-20 Oracle International Corporation Efficient graph query execution engine supporting graphs with multiple vertex and edge types
US11481441B2 (en) * 2019-04-26 2022-10-25 At&T Intellectual Property I, L.P. Graph database query pagination
US11119786B2 (en) * 2019-05-30 2021-09-14 International Business Machines Corporation Automated multidimensional elasticity for streaming application runtimes
CN110554958B (zh) * 2019-08-01 2023-04-04 北京百度网讯科技有限公司 图数据库测试方法、系统、设备和存储介质
US11397732B2 (en) * 2019-12-11 2022-07-26 Oracle International Corporation Hybrid in-memory BFS-DFS approach for computing graph queries involving complex path patterns including trees and cycles inside relational database systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008500627A (ja) 2004-05-27 2008-01-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 信号処理装置
US20140172914A1 (en) 2012-12-14 2014-06-19 Microsoft Corporation Graph query processing using plurality of engines
JP2014194772A (ja) 2013-03-28 2014-10-09 Fujitsu Ltd グラフデータベースクエリ処理方法及び装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Goetz GRAEFE,"Encapsulation of Parallelism in the Volcano Query Processing System",ACM SIGMOD Record ,Volume 19, Issue 2,1990年05月01日,pp.102-111,https://doi.org/10.1145/93605.98720

Also Published As

Publication number Publication date
EP3851979A1 (en) 2021-07-21
KR20210092689A (ko) 2021-07-26
US20210216373A1 (en) 2021-07-15
US11734076B2 (en) 2023-08-22
KR102522958B1 (ko) 2023-04-18
CN111259205B (zh) 2023-10-20
CN111259205A (zh) 2020-06-09
JP2021111419A (ja) 2021-08-02
EP3851979B1 (en) 2024-09-18

Similar Documents

Publication Publication Date Title
JP7150902B2 (ja) グラフデータベースのトラバース方法、装置、機器及び記憶媒体
CN111831450B (zh) 用于分配服务器资源的方法、装置、电子设备及存储介质
JP7282823B2 (ja) メモリアクセスリクエストスケジューリング方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム
US20210209089A1 (en) Data processing method, apparatus, device and storage medium
JP7170768B2 (ja) 開発マシン操作タスクの処理方法、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム
CN111782365B (zh) 定时任务处理方法、装置、设备及存储介质
CN111406250A (zh) 无服务器计算环境中的使用经预取的数据的配设
JP4801761B2 (ja) データベース管理方法およびシステム並びにその処理プログラム
US20170228422A1 (en) Flexible task scheduler for multiple parallel processing of database data
US20200125548A1 (en) Efficient write operations for database management systems
CN111782147B (zh) 用于集群扩缩容的方法和装置
CN114365109A (zh) 启用rdma的键-值存储库
CN111488492A (zh) 用于检索图数据库的方法和装置
WO2022037421A1 (zh) 指令发射方法、装置、电子设备以及存储介质
WO2026017050A1 (zh) Io调度方法、电子设备、存储介质及程序产品
US20100269119A1 (en) Event-based dynamic resource provisioning
CN117827423A (zh) Gpu共享方法、装置、电子设备及存储介质
CN113190555B (zh) 数据导入方法及装置
WO2013175609A1 (ja) データベース管理システム、計算機、データベース管理方法
Wu et al. DualPath: Breaking the Storage Bandwidth Bottleneck in Agentic LLM Inference
JP7174107B2 (ja) スケジューリング方法、装置、設備、記憶設備、及びプログラム
CN111176838A (zh) 为二分图中的节点分配嵌入向量的方法以及装置
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
US9251100B2 (en) Bitmap locking using a nodal lock
CN119166320B (zh) 基于协程的内存管理方法、装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220411

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

R150 Certificate of patent or registration of utility model

Ref document number: 7150902

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250