JP7150902B2 - グラフデータベースのトラバース方法、装置、機器及び記憶媒体 - Google Patents
グラフデータベースのトラバース方法、装置、機器及び記憶媒体 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24565—Triggers; Constraints
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message 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つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するステップと、
隣接する2つの演算子ごとに対して、前記隣接する2つ演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るステップと、を含むグラフデータベースのトラバース方法を提供する。
各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送することによって、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作の実行を開始させ、前記トークンデータを次の演算子に対応するスレッドに伝送するステップをさらに含む。
利用可能なスレッドの数に基づいて、各演算子の実行順序に従って各演算子にスレッドをそれぞれ割り当てるステップを含む。
前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っているか否かを判断するステップと、
前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っていないと判断した場合、予め設定された条件を満たしている割り当て済みスレッドが現れる時に、前記割り当て済みスレッドを前記次の演算子に再割り当て、前記トークンデータを前記割り当て済みスレッドに伝送して、前記割り当て済みスレッドに前記次の演算子の操作を実行させるステップと、をさらに含み、
ここで、前記予め設定された条件は、前記割り当て済みスレッドがこのスレッドに対応する演算子の操作を実行し終わったことである。
各演算子にローカルコンピュータ機器のスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューを前記ローカルコンピュータ機器にそれぞれ作成するステップ、又は、
各演算子について、前記演算子を実行するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器のスレッドを前記演算子に割り当てるステップと、
バッファキューを作成するためのコンピュータを少なくとも2つのコンピュータ機器から隣接する2つの演算子ごとに決定し、決定されたコンピュータ機器において前記隣接する2つの演算子に対応するバッファキューを作成するステップと、を含む。
1番目の演算子について、前記1番目の演算子の実行結果データを保存するためのバッファキューのアドレス情報を、前記1番目の演算子を実行するためのコンピュータ機器に送信して、前記1番目の演算子を実行するためのコンピュータ機器が受信された前記アドレス情報に基づいて対応するバッファキューを位置決めするステップと、
前記1番目の演算子以外のいずれかのターゲット演算子について、前記いずれかのターゲット演算子の前の演算子の実行結果データを保存するための第1のバッファキューのアドレス情報と、前記いずれかのターゲット演算子の実行結果データを保存するための第2のバッファキューのアドレス情報とを、前記いずれかのターゲット演算子を実行するためのコンピュータ機器に送信して、前記いずれかのターゲット演算子を実行するためのコンピュータ機器が受信されたアドレス情報に基づいて対応する前記第1のバッファキュー及び前記第2のバッファキューを位置決めするステップと、をさらに含む。
前記バッファキューがコンピュータ機器に作成されている場合、前記バッファキューのアドレス情報には、キューが位置するコンピュータ機器の機器識別子、ポート情報及びキュー識別子のうちの少なくとも1つが含まれる。
1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしていると判断した場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するステップをさらに含む。
前記いずれかのターゲット演算子を現在の演算子とし、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じて、前の演算子に対応するスレッドが、当該バッファキューの読み取り側状態が閉じられていることを検出する時に、当該バッファキューへのデータの書き込みを停止し、当該バッファキューの書き込み側状態を閉じて前の演算子の実行を終了するようにし、前の演算子を新しい現在の演算子とし、前記1番目の演算子の実行が終了されるまで、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じる操作を実行するために戻るステップ、又は、
終了情報を予め設定されたグローバル情報テーブルに登録して、前記いずれかのターゲット演算子の前の各演算子に対応するスレッドが前記終了情報を読み取ると、対応する演算子の操作を終了するステップを含む。
入力されたグラフトラバース語句を取得し、前記グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するように構成されるトラバース語句取得モジュールと、
隣接する2つの演算子ごとに対して、前記隣接する2つ演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るように構成される演算子並列実行モジュールと、を含むグラフデータベースのトラバース装置をさらに提供する。
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信可能に接続されたメモリとを備える電子機器をさらに提供し、ここで、
前記メモリには前記少なくとも1つのプロセッサで実行可能な命令が記憶され、前記命令は、前記少なくとも1つのプロセッサが第1の態様によるグラフデータベースのトラバース方法を実行できるように、前記少なくとも1つのプロセッサに実行される。
第5の態様では、本出願の実施例は、コンピュータプログラムをさらに提供し、前記コンピュータプログラムにおける命令が実行された場合、第1の態様の実施例によって提供されるグラフデータベースのトラバース方法が実行される。
図1Aは本出願の実施例1におけるグラフデータベースのトラバース方法のフローチャートである。本出願の実施例は、グラフデータベースでデータトラバースを行うことに適用する。この方法は、ソフトウェア及び/又はハードウェアで実現され且つ一定のデータコンピューティング機能を備えた電子機器に具体的に配置されるグラフデータベースのトラバース装置によって実行される。
図2は本出願の実施例2におけるグラフデータベースのトラバース方法のフローチャートである。本出願の実施例は、上記各実施例の技術案に基づいて最適化及び改善される。
図3Aは本出願の実施例3におけるグラフデータベースのトラバース方法のフローチャートである。本出願の実施例は、上記各実施例の技術案に基づいて最適化及び改善される。
図4は本出願の実施例4におけるグラフデータベースのトラバース装置の構成図である。本出願の実施例は、グラフデータベースでデータトラバースを行うことに適用する。この装置は、ソフトウェア及び/又はハードウェアで実現され、且つ具体的には、一定のデータコンピューティング機能を備えた電子機器に配置される。
演算子並列実行モジュール402は、隣接する2つの演算子ごとに対して、前記2つの隣接する演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るように構成される。
各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送することによって、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作の実行を開始させ、前記トークンデータを次の演算子に対応するスレッドに伝送するように構成されるトークン伝送モジュールをさらに含む。
利用可能なスレッドの数に基づいて、各演算子の実行順序に従って各演算子にスレッドをそれぞれ割り当てるように構成される。
前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っているか否かを判断し、
トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っていないと判断した場合、予め設定された条件を満たしている割り当て済みスレッドがある時に、前記割り当て済みスレッドを前記次の演算子に再割り当て、前記トークンデータを前記割り当て済みスレッドに伝送して、前記割り当て済みスレッドに前記次の演算子の操作を実行させるように構成され、
ここで、前記予め設定された条件は、前記割り当て済みスレッドがこのスレッドに対応する演算子の操作を実行し終わったことである。
各演算子にローカルコンピュータ機器のスレッドをそれぞれ割り当て、前記ローカルコンピュータ機器において隣接する2つの演算子ごとにバッファキューをそれぞれ作成し、又は、
各演算子について、前記演算子を実行するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器のスレッドを前記演算子に割り当て、
少なくとも2つのコンピュータ機器からバッファキューを作成するためのコンピュータ機器を隣接する2つの演算子ごとに決定し、決定されたコンピュータ機器において前記隣接する2つの演算子に対応するバッファキューを作成するように構成される。
1番目の演算子について、前記1番目の演算子の実行結果データを保存するためのバッファキューのアドレス情報を前記1番目の演算子を実行するためのコンピュータ機器に送信して、前記1番目の演算子を実行するためのコンピュータ機器が受信された前記アドレス情報に基づいて対応するバッファキューを位置決めするようにし、
前記1番目の演算子以外のいずれかのターゲット演算子について、前記いずれかのターゲット演算子の前の演算子の実行結果データを保存するための第1のバッファキューのアドレス情報と前記いずれかのターゲット演算子の実行結果データを保存するための第2のバッファキューのアドレス情報とを、前記いずれかのターゲット演算子を実行するためのコンピュータ機器に送信して、前記いずれかのターゲット演算子を実行するコンピュータ機器が受信されたアドレス情報に基づいて対応する前記第1のバッファキュー及び前記第2のバッファキューを位置決めするように構成される。
前記バッファキューがコンピュータ機器に作成されている場合、前記バッファキューのアドレス情報には、キューが位置するコンピュータ機器の機器識別子、ポート情報及びキュー識別子のうちの少なくとも1つが含まれる。
1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが、演算子実行終了条件を満たしていると決定された場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するように構成されるスレッド終了モジュールをさらに含む。
前記いずれかのターゲット演算子を現在の演算子とし、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じて、前の演算子に対応するスレッドが当該バッファキューの読み取り側状態が閉じられていることを検出する時に、当該バッファキューへのデータの書き込みを停止し、当該バッファキューの書き込み側状態を閉じて前の演算子の実行を終了するようにし、前の演算子を新しい演算子とし、前記1番目の演算子の実行が終了されるまで現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じる操作を実行するために戻り、又は、
終了情報を予め設定されたグローバル情報テーブルに登録して、前記いずれかのターゲット演算子の前の各演算子に対応するスレッドが前記終了情報を読み取ると、対応する演算子の操作を終了するように構成される。
本出願の実施例によれば、本出願は、電子機器と読み取り可能な記憶媒体とをさらに提供する。
本出願の実施例によれば、コンピュータプログラムが提供される。当該コンピュータプログラムにおける命令が実行された場合に、本出願の実施例のグラフデータベースのトラバース方法が実行される。
Claims (13)
- グラフデータベースのトラバース方法であって、
入力されたグラフトラバース語句を取得し、前記グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するステップと、
隣接する2つの演算子ごとに対して、前記隣接する2つの演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るステップと、を含み、
各スレッドに対応するアドレス情報を設定することにより、各スレッドは、演算子操作を実行する時に、バッファキューの正確な位置決めを実現する、
ことを特徴とするグラフデータベースのトラバース方法。 - 各演算子の実行順序に従って、トークンデータを各演算子に対応するスレッド間で伝送することによって、トークンデータを受信したスレッドに、このスレッドに対応する演算子の操作の実行を開始させ、前記トークンデータを次の演算子に対応するスレッドに伝送するステップをさらに含む、
ことを特徴とする請求項1に記載の方法。 - 各演算子にスレッドをそれぞれ割り当てるステップは、
利用可能なスレッドの数に基づいて、各演算子の実行順序に従って各演算子にスレッドをそれぞれ割り当てるステップを含む、
ことを特徴とする請求項2に記載の方法。 - 利用可能なスレッドの数が演算子の数よりも少ない場合、各演算子の実行順序に従ってトークンデータを各演算子に対応するスレッド間で伝送する時に、前記方法は、
前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っているか否かを判断するステップと、
前記トークンデータを受信したスレッドが、次の演算子が対応するスレッドを持っていないと判断した場合、予め設定された条件を満たしている割り当て済みスレッドが現れる時に、前記割り当て済みスレッドを前記次の演算子に再割り当て、前記トークンデータを前記割り当て済みスレッドに伝送して、前記割り当て済みスレッドに前記次の演算子の操作を実行させるステップと、をさらに含み、
前記予め設定された条件は、前記割り当て済みスレッドがこのスレッドに対応する演算子の操作を実行し終わったことである、
ことを特徴とする請求項3に記載の方法。 - 各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するステップは、
各演算子にローカルコンピュータ機器のスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューを前記ローカルコンピュータ機器にそれぞれ作成するステップ、又は、
各演算子について、前記演算子を実行するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器のスレッドを前記演算子に割り当てるステップと、
隣接する2つの演算子ごとについて、バッファキューを作成するためのコンピュータ機器を少なくとも2つのコンピュータ機器から決定し、決定されたコンピュータ機器において前記隣接する2つの演算子に対応するバッファキューを作成するステップと、を含む、
ことを特徴とする請求項1に記載の方法。 - 1番目の演算子について、前記1番目の演算子の実行結果データを保存するためのバッファキューのアドレス情報を、前記1番目の演算子を実行するためのコンピュータ機器に送信して、前記1番目の演算子を実行するためのコンピュータ機器が受信された前記アドレス情報に基づいて対応するバッファキューを位置決めするステップと、
前記1番目の演算子以外のいずれかのターゲット演算子について、前記いずれかのターゲット演算子の前の演算子の実行結果データを保存するための第1のバッファキューのアドレス情報と、前記いずれかのターゲット演算子の実行結果データを保存するための第2のバッファキューのアドレス情報とを、前記いずれかのターゲット演算子を実行するためのコンピュータ機器に送信して、前記いずれかのターゲット演算子を実行するためのコンピュータ機器が受信されたアドレス情報に基づいて対応する前記第1のバッファキュー及び前記第2のバッファキューを位置決めするステップと、をさらに含む、
ことを特徴とする請求項5に記載の方法。 - 前記バッファキューがキュークラスターに作成されている場合、前記バッファキューのアドレス情報にはキュー識別子が含まれ、
前記バッファキューがコンピュータ機器に作成されている場合、前記バッファキューのアドレス情報には、キューが位置するコンピュータ機器の機器識別子、ポート情報及びキュー識別子のうちの少なくとも1つが含まれる、
ことを特徴とする請求項6に記載の方法。 - 1番目の演算子以外のいずれかのターゲット演算子に対応するスレッドが演算子実行終了条件を満たしていると判断した場合、予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するステップをさらに含む、
ことを特徴とする請求項1~7のいずれかに記載の方法。 - 予め設定された操作を実行して、対応する演算子の操作を終了するように前記いずれかのターゲット演算子の前の各演算子に対応するスレッドに通知するステップは、
前記いずれかのターゲット演算子を現在の演算子とし、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じて、前の演算子に対応するスレッドが、当該バッファキューの読み取り側状態が閉じられていることを検出する時に、当該バッファキューへのデータの書き込みを停止し、当該バッファキューの書き込み側状態を閉じて前の演算子の実行を終了するようにし、前の演算子を新しい現在の演算子とし、前記1番目の演算子の実行が終了されるまで、現在の演算子の前の演算子の実行結果データを保存するためのバッファキューの読み取り側状態を閉じる操作を実行するために戻るステップ、又は、
終了情報を予め設定されたグローバル情報テーブルに登録して、前記いずれかのターゲット演算子の前の各演算子に対応するスレッドが前記終了情報を読み取ると、対応する演算子の操作の実行を終了するステップを含む、
ことを特徴とする請求項8に記載の方法。 - グラフデータベースのトラバース装置であって、
入力されたグラフトラバース語句を取得し、グラフトラバース語句に含まれる少なくとも2つの演算子及び各演算子の実行順序を決定し、各演算子にスレッドをそれぞれ割り当て、隣接する2つの演算子ごとにバッファキューをそれぞれ作成するように構成されるグラフトラバース語句取得モジュールと、
隣接する2つの演算子ごとに対して、前記隣接する2つの演算子のうちの前の演算子に対応するスレッドによって前の演算子の操作を実行し、前の演算子の実行結果データを前記隣接する2つの演算子に対応するバッファキューに書き込み、前記隣接する2つの演算子のうちの後の演算子に対応するスレッドによって、前記隣接する2つの演算子の前の演算子の実行結果データを前記バッファキューから後の演算子の操作の実行用に並列に読み取るように構成される演算子並列実行モジュールと、を含み、
各スレッドに対応するアドレス情報を設定することにより、各スレッドは、演算子操作を実行する時に、バッファキューの正確な位置決めを実現する、
ことを特徴とするグラフデータベースのトラバース装置。 - 電子機器であって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信可能に接続されたメモリと、を含み、
前記メモリには前記少なくとも1つのプロセッサで実行可能な命令が記憶され、前記命令が前記少なくとも1つのプロセッサによって実行される場合、前記少なくとも1つのプロセッサが請求項1~9のいずれかに記載のグラフデータベースのトラバース方法を実行する、
ことを特徴とする電子機器。 - コンピュータ命令を記憶している非一時的コンピュータ読み取り可能な記憶媒体であって、
前記コンピュータ命令が実行される場合、請求項1~9のいずれかに記載のグラフデータベースのトラバース方法が実行される、
ことを特徴とする非一時的コンピュータ読み取り可能な記憶媒体。 - コンピュータプログラムであって、
前記コンピュータプログラムにおける命令が実行された場合、請求項1~9のいずれかに記載のグラフデータベースのトラバース方法が実行される、
ことを特徴とするコンピュータプログラム。
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)
| 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)
| 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)
| 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 |
-
2020
- 2020-01-15 CN CN202010043990.2A patent/CN111259205B/zh active Active
- 2020-10-21 EP EP20202934.4A patent/EP3851979B1/en active Active
- 2020-10-21 US US17/076,400 patent/US11734076B2/en active Active
-
2021
- 2021-01-14 KR KR1020210005000A patent/KR102522958B1/ko active Active
- 2021-01-15 JP JP2021005299A patent/JP7150902B2/ja active Active
Patent Citations (3)
| 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)
| 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 |