KR20210092689A - 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체 - Google Patents
그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체 Download PDFInfo
- Publication number
- KR20210092689A KR20210092689A KR1020210005000A KR20210005000A KR20210092689A KR 20210092689 A KR20210092689 A KR 20210092689A KR 1020210005000 A KR1020210005000 A KR 1020210005000A KR 20210005000 A KR20210005000 A KR 20210005000A KR 20210092689 A KR20210092689 A KR 20210092689A
- Authority
- KR
- South Korea
- Prior art keywords
- operator
- thread
- buffer queue
- operators
- execution
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000015654 memory Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000008713 feedback mechanism Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241001123946 Gaga Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체를 개시하며, 지능형 검색 기술 분야에 관한 것이다. 구체적인 구현방안은, 입력된 그래프 순회 어구를 획득하고, 상기 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 단계; 각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 상기 버퍼 대기열로부터 상기 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행하는 단계를 포함한다. 본 발명의 실시예의 기술방안은 연산자의 병렬 실행이 구현되고, 순회 동작의 실행 효율 및 시스템 자원의 이용률이 향상된다.
Description
본 발명은 컴퓨터 기술에 관한 것으로, 특히 지능형 검색 기술 분야에 관한 것이다.
그래프 데이터베이스에서, 순회 동작은 가장 기본적인 동작이다. 종래 기술에서는 사용자에 의해 입력된 그래프 순회 어구가 획득된 후, 그래프 순회 어구에 포함된 복수의 연산자 간의 내포 호출(nested call) 또는 각각의 연산자의 실행 순서에 따라 앞 연산자의 실행 결과를 순차적으로 필터링하여 최종적으로 타겟 요소를 획득할 수 있다.
그러나, 상기 2 가지 방식으로 대규모 데이터 동시성(concurrency)의 경우에, 타겟 요소 질의 효율은 낮아서, 낮은 시스템 자원의 이용률을 초래한다.
본 발명의 실시예는 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체를 개시하며, 그래프 데이터베이스에서 타겟 요소 질의 효율 및 시스템 자원의 이용률을 향상시키기 위한 것이다.
제1 측면에 따르면, 본 발명의 실시예는 그래프 데이터베이스의 순회 방법을 개시하며, 상기 방법은,
입력된 그래프 순회 어구를 획득하고, 상기 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 단계; 및
각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 상기 버퍼 대기열로부터 상기 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행하는 단계; 를 포함한다.
본 발명의 실시예는 입력된 그래프 순회 어구를 획득하고, 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하며; 각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 각각의 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 버퍼 대기열로부터 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행한다. 상기 기술방안에 따르면, 각각의 2 개의 인접한 연산자 사이에 버퍼 대기열이 생성되어 2 개의 인접한 연산자 중 앞 연산자에 대한 실행 결과 데이터를 생성하고 버퍼 대기열에 기록한 후, 버퍼 대기열 내의 데이터를 판독하여 뒷 연산자를 실행함으로써, 연산자의 병렬 실행이 구현되고, 순회 동작의 실행 효율 및 시스템 자원의 이용률이 향상된다.
선택적으로, 상기 방법은,
각각의 연산자의 실행 순서에 따라, 각 연산자에 대응하는 스레드 사이에서 토큰 데이터를 전송하여, 토큰 데이터를 수신한 스레드가 본 스레드에 대응하는 연산자의 동작을 실행하기 시작하고, 상기 토큰 데이터를 다음 연산자에 대응하는 스레드로 전송하는 단계를 더 포함한다.
상기 발명의 하나의 선택적인 실시방식은, 각각의 연산자에 대응하는 스레드 사이에서 토큰 데이터를 전송하여, 다음 연산자에 대응하는 스레드의 작동을 트리거하는 것을 상관함으로써, 인접한 연산자에 대응하는 스레드 사이의 대기시간을 단축하여, 실행효율을 향상시킨다.
선택적으로, 각각의 연산자에 스레드를 각각 할당하는 단계는,
각각의 연산자의 실행 순서대로 이용 가능한 스레드의 개수에 따라 각각의 연산자에 스레드를 각각 할당하는 단계를 포함한다.
상기 발명의 하나의 선택적인 실시방식은, 이용 가능한 스레드의 데이터 및 각각의 연산자의 실행 순서에 따라 각각의 연산자에 스레드를 할당함으로써 스레드의 할당 메커니즘을 보완하고 연산자의 병렬 실행을 위한 보장을 제공한다.
선택적으로, 상기 이용 가능한 스레드의 개수가 연산자의 개수보다 작으면, 각각의 연산자의 실행 순서에 따라 각각의 연산자에 대응하는 스레드 사이에서 토큰 데이터가 전송될 경우, 상기 방법은,
상기 토큰 데이터를 수신한 스레드가 다음 연산자에 대응하는 스레드를 갖는지 여부를 판단하는 단계; 및
상기 토큰 데이터를 수신한 스레드가 다음 연산자에 대응하는 스레드를 갖지 않는다고 판단하면, 미리 설정된 조건을 만족하는 할당된 스레드가 나타날 경우 상기 할당된 스레드를 상기 다음 연산자에 재할당하고, 상기 토큰 데이터를 상기 할당된 스레드에 전송하여 상기 할당된 스레드가 상기 다음 연산자의 동작을 실행하도록 하는 단계; 를 포함하고,
여기서, 상기 미리 설정된 조건은 상기 할당된 스레드가 본 스레드에 대응하는 연산자의 동작을 이미 실행하였다는 것이다.
상기 발명의 하나의 선택적인 실시방식은, 이용 가능한 스레드의 개수가 연산자의 개수보다 작을 경우, 본 스레드에 대응하는 연산자 동작을 실행한 할당된 스레드에 다음 연산자를 재할당하여 이용 가능한 스레드가 한번에 모든 연산자를 커버할 수 없을 때의 스레드 할당 메커니즘을 보완하고 연산자의 병렬 실행을 위한 보장을 제공한다.
선택적으로, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 단계는,
각각의 연산자에 로컬 컴퓨터 디바이스의 스레드를 할당하고, 로컬 컴퓨터 디바이스에서 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 단계; 또는
각각의 연산자에 대하여, 상기 연산자를 실행하기 위한 컴퓨터 디바이스가 적어도 2 개의 컴퓨터 디바이스들로부터 결정되고, 상기 연산자에 대해 결정된 컴퓨터 디바이스의 스레드를 할당하는 단계; 및
각각의 2 개의 인접한 연산자에 대하여, 버퍼 대기열을 생성하기 위한 컴퓨터 디바이스가 적어도 2 개의 컴퓨터 디바이스들로부터 결정되고, 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열을 결정된 컴퓨터 디바이스에서 생성하는 단계; 를 포함한다.
상기 발명의 가가의 선택적인 실시방식은, 로컬 컴퓨터 디바이스에서 각각의 연산자에 스레드를 할당하고 각각의 2 개의 인접한 연산자에 버퍼 대기열을 생성하거나, 또는 적어도 2개의 컴퓨터 디바이스에서 각각의 연산자에 스레드를 할당하고 각각의 2 개의 인접한 연산자에 버퍼 대기열을 생성함으로써, 단일한 컴퓨터 디바이스를 통해 그래프 데이터베이스의 순회 동작을 구현하거나, 복수의 컴퓨터 디바이스를 통해 그래프 데이터베이스의 순회 동작을 연합하여 구현한다.
선택적으로, 상기 방법은,
제 1연산자에 대해, 상기 제 1연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 어드레스 정보를 상기 제 1 연산자를 실행하기 위한 컴퓨터 디바이스로 송신하여, 상기 제 1연산자를 실행하는 컴퓨터 디바이스가 상기 수신된 어드레스 정보에 기초하여 대응하는 버퍼 대기열을 포지셔닝하는 단계; 및
상기 제 1 연산자 이외의 어느 하나의 타겟 연산자에 대하여, 상기 어느 하나의 타겟 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 제 1 버퍼 대기열의 어드레스 정보 및 상기 어느 하나의 타겟 연산자의 실행 결과 데이터를 저장하기 위한 제 2 버퍼 대기열의 어드레스 정보를, 상기 어느 하나의 타겟 연산자를 실행하기 위한 컴퓨터 디바이스로 송신하여, 상기 어느 하나의 타겟 연산자를 실행하는 컴퓨터 디바이스가 수신된 어드레스 정보에 기초하여 대응하는 상기 제 1 버퍼 대기열 및 상기 제 2 버퍼 대기열을 포지셔닝하는 단계; 를 포함한다.
상기 발명의 하나의 선택적인 방식은, 연산자의 동작을 실행하는 컴퓨터 디바이스에서 필요한 앞 연산자의 실행 결과 데이터의 제 1 버퍼 대기열의 어드레스 정보를 저장하고, 당해 연산자의 실행 결과 데이터를 저장하기 위한 제 2 버퍼 대기열의 어드레스 정보를 저장함으로써, 연산자 동작을 실행하는 스레드는 대기열의 정확한 포지셔닝을 달성할 수 있고 그래프 데이터베이스의 순회 동작에 대한 보장을 제공할 수 있다.
선택적으로, 상기 버퍼 대기열이 대기열 클러스터에서 생성되면, 상기 버퍼 대기열의 어드레스 정보는 대기열 식별자를 포함하고;
상기 버퍼 대기열이 컴퓨터 디바이스에서 생성되면, 상기 버퍼 대기열의 어드레스 정보는 대기열이 위치한 컴퓨터 디바이스의 디바이스 식별자, 포트 정보 및 대기열 식별자 중 적어도 하나를 포함한다.
상기 발명의 하나의 선택적인 방식은, 상이한 위치에서 생성된 버퍼 대기열에 대응하는 어드레스 정보를 세분화함으로써 버퍼 대기열 생성 위치의 다양성을 나타내고 그래프 데이터베이스의 순회 동작에 대한 지원을 제공한다.
선택적으로, 상기 방법은,
제 1 연산자 이외의 어느 하나의 타겟 연산자에 대응하는 스레드가 연산자의 실행 종료 조건을 충족한다고 결정될 경우, 미리 설정된 동작을 실행하여, 대응하는 연산자의 동작을 종료하도록 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드에 통지하는 단계를 더 포함한다.
상기 발명의 하나의 선택적인 방식은, 뒷 연산자가 종료 조건이 충족되었다고 결정할 경우, 미리 설정된 동작을 실행하여 전부 선행 연산자에 실행을 종료하도록 통지되어 피드백 메커니즘을 통해 잠재적인 대량 무효 계산을 없앤다.
선택적으로, 미리 설정된 동작을 실행하여, 대응하는 연산자의 동작을 종료하도록 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드에 통지하는 단계는,
상기 어느 하나의 타겟 연산자를 현재 연산자로 하며; 현재 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하여 앞 연산자에 대응하는 스레드가 당해 버퍼 대기열의 판독측 상태를 턴 오프한 것을 검출할 경우, 당해 버퍼 대기열에 데이터를 기록하는 것을 중단하고 당해 버퍼 대기열의 기록측 상태를 턴 오프하여 앞 연산자의 실행을 종료하며; 앞 연산자를 새로운 현재 연산자로 하고, 상기 제 1 연산자의 실행이 종료될 때까지 현재 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하는 동작을 실행하도록 리턴되는 단계; 또는
종료 정보가 미리 설정된 글로벌 정보 테이블에 등록되어 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드가 상기 종료 정보를 판독할 경우, 대응하는 연산자의 동작을 종료하는 단계; 를 포함한다.
상기 발명의 하나의 선택적인 방식은, 버퍼 대기열의 판독 기록 상태를 제어함으로써, 버퍼 대기열과 연관된 연산자에 대응하는 스레드의 연관 제어가 실현되어, 버퍼 대기열의 연관 트리거가 달성되고, 각각의 연산자에 대응하는 스레드가 연산자 실행 순서의 역순에 따라 차례로 종료되어, 무효 계산을 회피하는 효과를 달성한다.
상기 발명의 다른 하나의 선택적인 방식은, 종료 정보를 등록하는 글로벌 정보 테이블을 미리 설정하여 어느 하나의 타겟 연산자의 이전의 각 연산자에 대응하는 스레드가 종료 정보를 판독할 경우, 연산자를 실행하는 동작이 종료되어 무효 계산을 회피하는 효과를 달성한다.
제 2측면에 따르면, 본 발명의 실시예는 그래프 데이터베이스의 순회 장치를 개시하며, 상기 장치는,
입력된 그래프 순회 어구를 획득하고, 상기 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 순회 어구 획득 모듈;
각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 상기 버퍼 대기열로부터 상기 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행하는 연산자 병렬 실행 모듈; 을 포함한다.
제 3측면에 따르면, 본 발명의 실시예는 저자설비를 개시한다. 상기 전자설비는,
적어도 하나의 프로세서; 및
적어도 하나의 프로세서에 통신 가능하게 연결되는 메모리를 포함하고, 여기서,
상기 메모리는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령을 저장하며, 상기 명령이 상기 적어도 하나의 프로세서에 의해 실행될 경우, 상기 적어도 하나의 프로세서가 상기 실시예에 따른 그래프 데이터베이스의 순회 방법을 수행한다.
제 4 측면에 따르면, 본 발명의 실시예는 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독 가능 저장 매체를 개시하며, 상기 컴퓨터 명령이 실행될 경우, 제 1측면의 실시예에 따른 그래프 데이터베이스의 순회 방법이 수행된다.
제 5 측면에 따르면, 컴퓨터 판독 가능 매체에 저장되어 있는 컴퓨터 프로그램을 개시하며, 상기 컴퓨터 프로그램의 명령이 실행될 경우, 제 1측면의 실시예에 따른 그래프 데이터베이스의 순회 방법이 수행된다.
전술한 선택적인 방식의 다른 효과는 이하 특정 실시예를 참조하여 설명될 것이다.
첨부된 도면은 본 발명을 보다 잘 이해하기 위해 사용되며, 본 발명을 제한하려 하지 않는다. 여기서,
도 1A는 본 발명의 제 1 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이다.
도 1B는 본 발명의 제 1 실시예에 따른 2개의 인접 연산자의 실행과정의 개략도이다.
도 2는 본 발명의 제 2 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이다.
도 3A는 본 발명의 제 3 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이다.
도 3B는 본 발명의 제 3 실시예에 따른 2개의 인접 연산자가 정보 전달을 중지하는 개략도이다.
도 4는 본 발명의 제 4 실시예에 따른 그래프 데이터베이스의 순회 장치의 구조도이다.
도 5는 본 발명의 실시예에 따른 그래프 데이터베이스의 순회 방법을 구현하기 위한 전자설비의 블록도이다.
도 1A는 본 발명의 제 1 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이다.
도 1B는 본 발명의 제 1 실시예에 따른 2개의 인접 연산자의 실행과정의 개략도이다.
도 2는 본 발명의 제 2 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이다.
도 3A는 본 발명의 제 3 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이다.
도 3B는 본 발명의 제 3 실시예에 따른 2개의 인접 연산자가 정보 전달을 중지하는 개략도이다.
도 4는 본 발명의 제 4 실시예에 따른 그래프 데이터베이스의 순회 장치의 구조도이다.
도 5는 본 발명의 실시예에 따른 그래프 데이터베이스의 순회 방법을 구현하기 위한 전자설비의 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 예시적인 실시예를 설명하고, 이해를 돕기 위해 본 발명의 실시예의 각종 세부사항을 포함하지만 단지 예시적인 것으로 간주하여야 한다. 따라서, 당업자는 본 발명의 범위 및 사상으로부터 벗어나지 않고 본 명세서에 기술된 실시예들에 대한 다양한 변경 및 수정이 이루어질 수 있다는 것을 이해할 것이다. 또한, 잘 알려진 기능 및 구조에 대한 설명은 명확성과 간결성을 위해 다음 설명에서 생략된다.
제 1실시예
도 1A는 본 발명의 제 1 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이고, 본 발명의 실시예는 그래프 데이터베이스에서 데이터 순회를 실행할 경우에 적용될 수 있고, 당해 방법은 그래프 데이터베이스의 순회 장치에 의해 수행될 수 있으며, 당해 장치는 소프트웨어 및/또는 하드웨어로 구현될 수 있고, 일정한 데이터 연산 능력을 갖춘 전자설비에 배치된다.
도 1A에 도시된 그래프 데이터베이스의 순회 방법은 단계S101 내지 단계S102를 포함한다.
단계S101, 입력된 그래프 순회 어구를 획득하고, 상기 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성한다.
여기서, 그래프 순회 어구의 획득은 사용자가 프로그래밍된 그래프 순회 어구를 실행하여 구현될 수 있다. 여기서, 그래프 순회 어구는 적어도 2 개의 연산자를 포함하고, 각 연산자는 그래프 데이터베이스에서 워킹, 필터링, 변환, 검색과 같은 동작 중 적어도 하나를 실행하는데 사용되어 대응하는 기능을 구현한다.
여기서, 버퍼 대기열은 2 개의 인접한 연산자 중 뒷 연산자가 앞 연산자의 실행 결과 데이터에 기초하여 본 연산자에 대응하는 동작을 실행하도록 2개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 저장한다.
본 발명의 실시예의 하나의 선택작인 실시방식에서, 스레드 할당 및 버퍼 대기열의 생성 동작이 단일한 컴퓨터 디바이스에 의해 구현될 수 있다. 예시적으로, 각각의 연산자에 로컬 컴퓨터 디바이스의 스레드를 할당하고, 로컬 컴퓨터 디바이스에서 각각의 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 개의 인접한 연산자의 실행과정의 개략도이고, 앞 연산자에 대응하는 스레드가 당해 연산자를 실행하여 실행 결과 데이터 ①, ②, ③ 및 ④를 획득하여 버퍼 대기열에 순차적으로 기록하며; 뒷 연산자에 대응하는 스레드가 버퍼 대기열로부터 실행 결과 데이터①를 판독하고 실행 결과 데이터①를 자신의 입력으로 하며 실행 결과 데이터①에 대해 당해 스레드에 대응하는 연산자 동작을 실행하며, 동시에, 앞 연산자에 대응하는 스레드가 당해 스레드에 대응하는 연산자 동작을 병렬로 실행하여 실행 결과 데이터 ⑤를 생성하고, 실행 결과 데이터 ⑤를 버퍼 대기열에 기록하여, 뒷 연산자가 부분 실행 결과 데이터를 획득한 후에, 대응하는 연산자 동작을 실행하도록 바로 자신의 스레드를 시작하여, 인접한 연산자 처리 사이의 데이터 대기시간을 절약한다.
종래 기술에서, 그래프 데이터베이스 순회 시 다음과 같은 2 가지 방식이 일반적으로 사용된다.
제 1 방식으로, 각 계층의 동작이 하나의 연산자로 추상화되는데, 각각의 연산자가 반복적인 객체(iterative object)로 추상화된다. 뒷 계층의 연산자가 실행될 경우, 앞 계층의 연산자를 반복적으로 호출하며, 모든 연산자가 논리적으로 내포된 다층 반복을 형성하며, 모든 계층 반복이 차례대로 한 바퀴를 실행되고 최종 결과를 생성한다. 예를 들어, g.V(1).out("friend").has('age',eq(25)).properties('name')인 어구에 대해, 그의 의미는 번호가 1 이고 엔티티 나이가 25인 친구의 이름을 찾는 것이고, properties 연산자가 한번 실행되면, 결과를 얻기 위해 has연산자가 호출될 필요가 있으며, has연산자의 호출은 한번에 out연산자에 대한 호출을 초래할 것이고, out 연산자의 실행은 한번에 V연산자에 대한 실행을 초래할 것이다. 모든 연산자는 한 바퀴를 실행되고, 최종 결과를 생성하며, 임의의 동시성 로직이 존재하지 않고, 대규모 데이터 볼륨에 대해 더 낮은 실행 효율을 갖고, 낮은 시스템 자원의 이용률을 초래한다.
제 2 방식으로, 각 계층의 연산자가 엄격하게 순서대로 계산되고, 아랫 계층의 연산자가 윗 계층의 연산자의 출력을 그의 입력으로 한다. 예를 들어, 앞에 예시된 순회 어구가 실행될 경우, V (1) 가 먼저 실행되고, 번호가 1인 엔티티를 찾아내고, 그 후 out 연산자를 실행하여 당해 엔티티의 모든 친구 엔티티를 찾아낸다. 그 후, 이들 엔티티를 필터링하고, 나이가 25인 엔티티를 필터링하여 그의 이름을 출력한다. 각 계층의 연산자가 엄격하게 순서대로 실행되며 아랫 계층의 연산자가 윗 계층의 연산자의 모든 실행 결과를 기다려야 계층을 시작하며, 각 계층의 연산자의 실행은 전체 실행 흐름을 막고 마찬가지로 대규모 데이터 볼륨에 대해 더 낮은 실행 효율을 갖는다.
본 발명은 상이한 스레드에 상이한 연산자를 할당함으로써 실행 결과 데이터 모두가 아니라 앞 연산자의 부분이 생성된 후, 뒷 연산자의 스레드를 통해 당해 실행 결과 데이터를 처리하고, 이 때, 앞 연산자는 대응하는 연산자 동작을 계속해서 실행하여 다른 실행 결과 데이터를 생성한다. 앞 연산자의 실행을 전부 끝난 후 뒷 연산자의 실행을 할 필요가 없기 때문에, 인접한 연산자의 실행 대기시간을 줄이고, 복수의 연산자에 대응하는 스레드의 병렬 동작의 효과가 달성되어 그래프 데이터베이스의 순회 효율이 향상된다.
복수의 연산자가 그래프 순회 어구에 포함되어 버퍼 대기열이 많이 생성될 경우, 상이한 버퍼 대기열의 구별을 용이하게 하기 위해 각각의 대기열에 대해 대응하는 어드레스 정보가 설정될 수 있고, 따라서 각각의 스레드는 연산자의 동작을 실행할 경우 버퍼 대기열의 정확한 포지셔닝을 구현할 수 있다.
예시적으로 단일한 컴퓨터 디바이스에서 각각의 연산자에 스레드가 할당되고, 각각의 2 개의 인접한 연산자에 버퍼 대기열이 생성될 경우, 어드레스 정보는 각각의 버퍼 대기열의 대기열 식별자일 수 있으며, 예를 들어, 대기열 번호 또는 점유된 포트의 포트 정보이다. 각각의 스레드가 버퍼 대기열에 대한 어드레스 정보의 룩업을 용이하게 하기 위해, 스레드 대기열 관계 테이블이 컴퓨터 디바이스 내에 설정될 수 있으며, 당해 스레드 대기열 관계 테이블에서, 당해 스레드에 의해 실행된 연산자의 실행 결과 데이터를 저장하는 버퍼 대기열의 대기열 식별자는 어느 하나의 스레드에 대해 등록되고, 당해 스레드에 의해 실행된 연산자에 대응하는 앞 연산자의 실행 결과 데이터의 버퍼 대기열의 대기열 식별자가 저장된다. 제 1연산자가 앞 연산자를 갖지 않기때문에, 앞 연산자의 실행 결과 데이터를 저장하는 버퍼 대기열의 대기열 식별이 비어 있거나 다른 디폴트 값으로 설정될 수 있다.
예시적으로, 복수의 컴퓨터 디바이스에서 각각의 연산자에 스레드가 할당되고, 각각의 2 개의 인접한 연산자에 버퍼 대기열이 생성될 경우, 제 1연산자에 대해, 상기 제 1연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 어드레스 정보를 상기 제 1 연산자를 실행하기 위한 컴퓨터 디바이스로 송신하여, 상기 제 1연산자를 실행하는 컴퓨터 디바이스가 상기 수신된 어드레스 정보에 기초하여 대응하는 버퍼 대기열을 포지셔닝하며; 상기 제 1 연산자 이외의 어느 하나의 타겟 연산자에 대하여, 상기 어느 하나의 타겟 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 제 1 버퍼 대기열의 어드레스 정보 및 상기 어느 하나의 타겟 연산자의 실행 결과 데이터를 저장하기 위한 제 2 버퍼 대기열의 어드레스 정보를 상기 어느 하나의 타겟 연산자를 실행하기 위한 컴퓨터 디바이스로 송신하여 상기 어느 하나의 타겟 연산자를 실행하는 컴퓨터 디바이스가 수신된 어드레스 정보에 기초하여 대응하는 상기 제 1 버퍼 대기열 및 상기 제 2 버퍼 대기열을 포지셔닝한다.
버퍼 대기열이 대기열 클러스터에서 생성되면, 버퍼 대기열의 어드레스 정보는 대기열 식별자를 포함하고; 버퍼 대기열이 컴퓨터 디바이스에서 생성되면, 버퍼 대기열의 어드레스 정보는 대기열이 위치한 컴퓨터 디바이스의 디바이스 식별자, 포트 정보 및 대기열 식별자 중 적어도 하나를 포함한다. 예시적으로, 버퍼 대기열에 대한 어드레스 정보는 ip: port: id라는 경량급을 사용하여 버퍼 대기열의 결정될 수 있다. 여기서, ip는 컴퓨터 디바이스의 디바이스 식별에 대응하고, port는 컴퓨터 디바이스의 포트 정보에 대응하고, id는 버퍼 대기열의 글로벌 대기열 식별자에 대응한다. 구체적으로, 디바이스 식별자 ip및 포트 정보 port를 통해 대기열 위치를 포지셔닝하고 대기열 식별자 id를 통해 구체적인 버퍼 대기열을 포지셔닝할 수 있다.
본 발명의 실시예는, 입력된 그래프 순회 어구를 획득하고, 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하며; 각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 각각의 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 버퍼 대기열로부터 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행한다. 상기 기술방안에 따르면, 각각의 2 개의 인접한 연산자 사이에 버퍼 대기열이 생성되어 2 개의 인접한 연산자 중 앞 연산자에 대한 실행 결과 데이터를 생성하고 버퍼 대기열에 기록한 후, 버퍼 대기열 내의 데이터를 판독하여 뒷 연산자를 실행함으로써, 연산자의 병렬 실행이 구현되고, 순회 동작의 실행 효율 및 시스템 자원의 이용률이 향상된다.
제 2 실시예
도 2는 본 발명의 제 2 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이며, 본 발명의 실시예는 상기 실시예의 기술방안에 기초하여 최적화 개선을 수행한다.
또한, 그래프 데이터베이스의 순회 방법에서, "각각의 연산자의 실행 순서에 따라 각 연산자에 대응하는 스레드 사이에서 토큰 데이터를 전송하여, 토큰 데이터를 수신한 스레드가 당해 스레드에 대응하는 연산자의 동작을 실행하기 시작하고, 상기 토큰 데이터를 다음 연산자에 대응하는 스레드로 전송한다"란 동작을 추가하여 다음 연산자에 대응하는 스레드의 작동을 트리거하는 것을 상관하게 한다.
도 2에 도시된 그래프 데이터베이스의 순회 방법은 단계S201 내지 단계S203을 포함한다.
단계S201, 입력된 그래프 순회 어구를 획득하고, 상기 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성한다.
단계S202, 각각의 연산자의 실행 순서에 따라, 각각의 연산자에 대응하는 스레드 사이에서 토큰 데이터를 전송하여, 토큰 데이터를 수신한 스레드가 당해 스레드에 대응하는 연산자의 동작을 실행하기 시작하고, 상기 토큰 데이터를 다음 연산자에 대응하는 스레드로 전송한다.
여기서, 토큰 데이터는 설정된 길이의 문자열로 구성될 수 있고, 전자설비에 미리 저장되고 각각의 연산자에 대응하는 스레드가 연산자 동작을 실행하기 전에 상이한 스레드 사이에서 전송된다.
예시적으로, 상기 제 1 연산자에 대응하는 스레드가 토큰 데이터가 수신된 스레드는 당해 스레드에 대응하는 연산자의 동작을 실행하기 시작하고, 제 2연산자에 대응하는 스레드로 토큰 데이터를 전송하고, 해당 스레드에서 당해 스레드에 대응하는 연산자의 동작에 대한 작동 트리거를 실행하며, 앞 스레드가 해당 스레드에 대응하는 연산자의 동작을 실행하기 시작한 후에, 토큰 데이터를 뒷 연산자에 대응하는 스레드로 전송되어, 각각의 스레드에 의한 연산자 동작을 자동으로 시작하는 목적이 달성된다.
이용 가능한 스레드의 개수가 연산자의 개수보다 크거나 같을 경우, 각각의 연산자는 대응하는 연산자 동작을 실행하기 위해 상이한 스레드에 할당될 수 있고, 토큰 데이터의 전송을 통해 각각의 연산자에 대응하는 스레드를 순차적으로 트리거하여 대응하는 연산자의 동작을 실행한다.
그러나, 이용 가능한 스레드의 개수가 연산자의 개수보다 작을 경우, 대응하는 스레드를 갖지 않는 연산자가 존재하여 동시성 스레드의 개수가 제한되면, 할당된 스레드의 멀티플렉싱 방식으로 스레드의 재할당을 구현할 수 있다.
예시적으로, 모든 스레드 할당이 완료된 후에, 각각 할당된 스레드의 실행 상태가 모니터링될 수 있고, 해당 스레드의 할당된 연산자의 동작을 전부 실행한 할당된 스레드가 존재하면, 모든 연산자가 할당될 때까지 당해 스레드에 대한 할당될 연산자를 할당한다.
따라서, 각각의 연산자의 실행 순서에 따라 각각의 연산자에 대응하는 스레드 사이에서 토큰 데이터가 전송될 경우, 멀티플렉싱되고 할당된 스레드는 다음과 같이 트리거될 수 있다. 상기 토큰 데이터가 수신된 스레드는 다음 연산자에 대응하는 스레드를 갖는지 여부를 결정하며; 상기 토큰 데이터가 수신된 스레드는 다음 연산자에 대응하는 스레드를 갖지 않는다고 결정하면, 미리 설정된 조건을 만족하는 할당된 스레드가 나타날 경우 상기 할당된 스레드를 상기 다음 연산자에 재할당하고, 상기 토큰 데이터를 상기 할당된 스레드에 전송하여 상기 할당된 스레드가 상기 다음 연산자의 동작을 실행하도록 하며; 여기서, 상기 미리 설정된 조건은 상기 할당된 스레드가 당해 스레드에 대응하는 연산자의 동작을 이미 실행하였다는 것이다.
예를 들어, 이용 가능한 스레드의 개수가 4개이고, 그래프 순회 어구에 대응하는 연산자의 개수가 5개인 경우, 제 1 연산자에 대응하는 스레드가 당해 스레드에 대응하는 연산자 동작을 실행하기 시작하고, 제 2 연산자에 대응하는 스레드로 토큰 데이터를 전송하여, 제 2 연산자에 대응하는 스레드가 당해 스레드에 대응하는 연산자 동작을 실행하기 시작하고 다음 연산자에 대응하는 스레드로 토큰 데이터를 전송하며, 제 4 연산자의 실행을 시작할 경우, 제 5 연산자에 대응하는 스레드로 토큰 데이터를 전송할 필요가 있지만, 이 때, 동시성 리소스가 고갈되어, 동시성 리소스를 해제하기 위해 할당된 스레드가 대응하는 연산자 동작을 전부 실행도록 기다려야한다. 제 1 연산자에 대응하는 스레드의 실행이 완료되어 동시성 리소스가 해제되면, 당해 유휴 스레드가 제 5 연산자에 할당되고, 토큰 데이터가 제 5 연산자에 대응하는 스레드에 할당되어, 제 2 연산자에 대응하는 스레드가 당해 스레드에 대응하는 연산자 동작을 실행하기 시작한다.
본 발명의 실시예의 선택적인 실시방식에서, 토큰 데이터는 글로벌 번호의 형태로 구현될 수 있다. 예시적으로, 각각의 연산자에 대한 순서화된 번호가 할당되고, 하나의 글로벌 번호가 전자설비에 등록되며, 각각의 연산자가 실행될 경우, 글로벌 번호가 다음 연산자에 대응하는 번호로 수정되어, 다음 연산자의 결정 및 대응하는 스레드의 룩업이 실행되며, 다음 연산자에 대응하는 스레드를 찾아낸 후에, 글로벌 번호 전송이 달성되고, 당해 다음 연산자가 실행될 경우, 모든 연산자가 실행될 때까지 글로벌 번호가 계속 수정된다.
단계S203, 각각의 스레드가 당해 스레드에 대응하는 연산자의 동작을 실행할 경우, 각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 상기 버퍼 대기열로부터 상기 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행한다.
본 발명의 실시예의 기술 방안은, 각각의 연산자의 실행 순서에 따라, 각각의 연산자에 대응하는 스레드 사이에서 토큰 데이터를 전송하여, 토큰 데이터를 수신한 스레드가 당해 스레드에 대응하는 연산자의 동작을 실행하기 시작하고, 상기 토큰 데이터를 다음 연산자에 대응하는 스레드로 전송하여, 다음 연산자에 대응하는 스레드의 작동을 트리거하는 것을 상관하게 하고 인접한 연산자에 대응하는 스레드 사이의 대기시간을 단축하여, 실행효율을 향상시킨다.
제 3 실시예
도 3A는 본 발명의 제 3 실시예에 따른 그래프 데이터베이스의 순회 방법의 흐름도이고, 본 발명의 실시예는 상기 실시예의 기술방안에 기초하여 최적화 개선을 수행한다.
또한, 그래프 데이터베이스의 순회 방법에서, "제 1 연산자 이외의 어느 하나의 타겟 연산자에 대응하는 스레드가 연산자의 실행 종료 조건을 충족한다고 결정될 경우, 미리 설정된 동작을 실행함으로써, 대응하는 연산자의 동작을 종료하도록 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드에 통지한다" 란 동작을 추가하여, 많은 량의 무효 계산을 없앤다.
도 3A에 도시된 그래프 데이터베이스의 순회 방법은 단계S301 내지 단계S303을 포함한다.
입력된 그래프 순회 어구를 획득하고, 상기 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 단계(S301)를 포함한다.
각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 상기 버퍼 대기열로부터 상기 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행하는 단계(S302)를 포함한다.
제 1 연산자 이외의 어느 하나의 타겟 연산자에 대응하는 스레드가 연산자의 실행 종료 조건을 충족한다고 결정될 경우, 미리 설정된 동작을 실행함으로써, 대응하는 연산자의 동작을 종료하도록 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드에 통지하는 단계(S303)를 포함한다.
각각의 연산자에 대응하는 스레드가 대응하는 연산자의 동작을 실행하는 과정에서, 제 1 연산자 이외의 어느 하나의 타겟 연산자에 대응하는 스레드가 연산자의 실행 종료 조건을 충족한다고 결정될 경우, 미리 설정된 동작을 실행함으로써, 대응하는 연산자의 동작을 종료하도록 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드에 통지하며; 상기 어느 하나의 타겟 연산자 이후의 각 연산자에 대응하는 스레드가 연산자에 대응하는 동작을 계속 실행하여 최종 실행 결과를 획득하도록 한다. 예시적으로, 연산자 실행 종료 조건은 필요할 모든 데이터를 획득하는 것일 수 있다. 상기 방안은, 미리 설정된 동작을 실행함으로써 종료 정보를 생성하고, 버퍼 대기열 체인에서의 데이터 흐름의 반대 방향을 따라 종료 정보를 전송하여 스레드의 한층한층 폐쇄를 구현한다.
본 발명의 실시예의 선택적인 실시방식에서, 미리 설정된 동작을 실행함으로써, 대응하는 연산자의 동작을 종료하도록 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드에 통지하는 것은, 상기 어느 하나의 타겟 연산자를 현재 연산자로 하며; 현재 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하여 앞 연산자에 대응하는 스레드가 당해 버퍼 대기열의 판독측 상태를 턴 오프한 것을 검출할 경우, 당해 버퍼 대기열에 데이터를 기록하는 것을 중단하고 당해 버퍼 대기열의 기록측 상태를 턴 오프하여 앞 연산자의 실행을 종료하며; 앞 연산자를 새로운 현재 연산자로 하고, 상기 제 1 연산자의 실행이 종료될 때까지 현재 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하는 동작을 실행하도록 리턴된다.
구체적으로, 제 1 연산자 이외의 어느 하나의 타겟 연산자에 대응하는 스레드가 연산자의 실행 종료 조건을 충족할 경우, 당해 어느 하나의 타겟 연산자를 현재 연산자로 하며, 당해 현재 연산자의 이전 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하여 현재 연산자를 실행하는 스레드가 이전 연산자의 실행 결과 데이터를 버퍼 대기열로부터 계속 판독할 수 없다. 이에 따라, 이전 연산자에 대응하는 스레드는 그의 실행 결과 데이터를 저장하는 버퍼 대기열의 판독측 상태가 턴 오프될 경우, 이후의 연산자가 당해 스레드에 대응하는 연산자 실행 결과 데이터의 획득을 실행할 필요가 없다는 것이 알려져 있기 때문에, 이는 버퍼 대기열에 데이터를 기록하는 것을 능동적으로 중지하고, 즉, 당해 스레드에 대응하는 연산자의 실행을 중단하고, 실행 결과 데이터가 생성되는 것을 방지하며; 동시에, 당해 버퍼 대기열의 기록측 상태를 턴 오프하고, 버퍼 대기열에 데이터를 기록하는 것을 수동적으로 정지시킨다. 당해 이전 연산자를 새로운 현재 연산자로 하고, 상기 제 1 연산자의 실행이 종료될 때까지 현재 연산자의 이전 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하는 동작을 순환적으로 실행하도록 한다.
도 3B는 각각의 2개의 인접 연산자가 정보 전달을 중지하는 개략도이다. 뒷 연산자가 버퍼 대기열로부터 실행 결과 데이터①를 획득한 후에, 연산자의 실행 종료 조건을 만족하는 것으로 결정되는데, 이 때 버퍼 대기열의 판독측 상태를 턴 오프하고, 뒷 연산자가 버퍼 대기열로부터 실행 결과 데이터②, ③, ④등을 후속적으로 판독하는 것이 금지된다. 앞 연산자가 당해 버퍼 대기열의 판독측 상태가 턴 오프된 것을 검출할 경우, 실행하고 있는 연산자의 실행 결과 데이터⑤를 버퍼 대기열에 기록하는 것이 정지되고, 앞 연산자에 대응하는 스레드가 버퍼 대기열에 데이터를 기록하는 것이 금지되어 당해 앞 연산자의 실행이 종료되고, 종료 정보의 역방향 송신이 구현된다. 당해 앞 연산자가 새로운 뒷 연산자로 하며, 제 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 연산자의 실행이 종료될 때까지 현재 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하는 동작을 실행하도록 리턴된다.
종료 정보가 미리 설정된 글로벌 정보 테이블에 등록되어 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드가 상기 종료 정보를 판독할 경우, 대응하는 연산자의 동작을 종료한다.
상기 그래프 데이터베이스의 순회 장치는 본 발명의 어느 하나의 실시예에 따른 그래프 데이터베이스의 순회 방법을 수행할 수 있으며, 그래프 데이터베이스의 순회 방법을 수행하기 위한 기능 모듈 및 유익한 효과를 가진다.
제 5 실시예
본 발명의 실시예에 따르면, 본 발명은 전자설비 및 판독가능 저장 매체를 더 개시한다.
도 5에 도시된 바와 같이, 도 5은 본 발명의 실시예에 따른 그래프 데이터베이스의 순회 방법을 구현하기 위한 전자설비의 블록도이다. 전자설비는 랩탑 컴퓨터, 데스크탑 컴퓨터, 워크스테이션, 개인용 정보 단말기, 서버, 블레이드 서버, 메인프레임 컴퓨터, 및 다른 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내는 것이다. 전자 설비는 또한 개인 디지털 프로세싱, 셀룰러 전화기, 스마트 폰, 웨어러블 장치, 및 다른 유사한 컴퓨팅 장치와 같은 다양한 형태의 모바일 장치를 나타낼 수도 있다. 본 명세서에 나타낸 부품, 그들의 연결 및 관계, 및 그들의 기능은 단지 예시적인 것이며, 본 명세서에 설명 및/또는 청구된 본 발명의 구현을 제한하도록 의도되지 않는다.
도 5에 도시된 바와 같이, 당해 전자 설비는 하나 또는 하나 이상의 프로세서(501), 메모리(502), 및 고속 인터페이스 및 저속 인터페이스를 포함하는 각 부품을 연결하기 위한 인터페이스를 포함한다. 각 부품은 상이한 버스를 이용하여 상호 연결되고, 공통 마더보드 상에 장착되거나 또는 원하는 대로 다른 방식으로 장착될 수도 있다. 프로세서는 전자설비 내에서 실행되는 명령을 프로세싱할 수 있고, 외부 입력/출력 장치(예를 들어, 인터페이스에 결합된 디스플레이 장치) 상에 GUI의 그래픽 정보를 디스플레이하기 위해 메모리 또는 메모리 상에 저장된 명령을 포함한다. 다른 실시예에서, 원한다면 복수의 프로세서 및/또는 복수의 버스는 복수의 메모리 및 복수의 메모리와 함께 사용될 수 있다. 또한, 복수의 전자설비는 필요한 동작의 일부를 제공하는 다양한 설비(예를 들어, 서버 어레이, 블레이드 서버의 세트, 또는 멀티 프로세서 시스템)와 연결될 수 있다. 도 5에서는 하나의 프로세서(501)를 예로 든다.
메모리(502)는 본 발명에 따른 비일시적 컴퓨터 판독가능 저장 매체이다. 상기 메모리는 적어도 하나의 프로세서에 의해 실행될 수 있는 명령을 저장하여 적어도 하나의 프로세서에서 본 발명에 따른 그래프 데이터베이스의 순회 방법을 수행하게 한다. 본 발명의 비일시적 컴퓨터 판독가능 저장 매체는 컴퓨터에서 본 발명에 따른 그래프 데이터베이스의 순회 방법을 실행하게 하기 위한 컴퓨터 명령을 저장한다.
메모리(502)는 비일시적 컴퓨터 판독가능 저장 매체로서, 본 발명의 실시예에 따른 그래프 데이터베이스의 순회 방법에 대응하는 프로그램 명령/모듈(예를 들어, 도 4에 도시된 순회 어구 획득 모듈(401) 및 연산자 병렬 실행 모듈(402)을 포함하는 그래프 데이터베이스의 순회 장치(400))과 같은 비일시적 소프트웨어 프로그램, 비일시적 컴퓨터 실행가능 프로그램 및 모듈을 저장하는데 사용될 수 있다. 프로세서(501)는 메모리(502)에 저장된 비일시적 소프트웨어 프로그램, 명령 및 모듈을 실행함으로써 서버의 다양한 기능 애플리케이션 및 데이터 처리를 실행하며, 즉 전술한 방법의 실시예에 따른 그래프 데이터베이스의 순회 방법을 구현한다.
상기 메모리(502)는 프로그램 저장영역 및 데이터 저장영역을 포함할 수 있으며, 프로그램 저장영역은 운영 체제, 적어도 하나의 기능에 필요한 애플리케이션 프로그램을 저장할 수 있고, 데이터 저장영역은 그래프 데이터베이스의 순회 방법에 따른 전자 설비의 사용에 의해 생성된 데이터 등을 저장할 수 있다. 또한, 메모리(502)는 고속 랜덤 액세스 메모리를 포함할 수 있고, 또한 적어도 하나의 자기 디스크 저장 장치, 플래시 메모리 장치, 또는 다른 비일시적 고체 메모리 장치와 같은 비일시적 메모리를 포함할 수도 있다. 일부 실시예에서, 메모리(502)는 선택적으로 프로세서(501)에 비해 원격으로 설치된 저장장치를 포함할 수 있고, 당해 원격 저장장치는 네트워크를 통해 그래프 데이터베이스의 순회 방법에 따른 전자 설비에 연결될 수 있다. 이러한 네트워크의 예는 인터넷, 기업 인트라넷, 로컬 영역 네트워크, 이동 통신 네트워크, 및 이들의 조합을 포함하지만, 이에 제한되지 않는다.
그래프 데이터베이스의 순회 방법에 따른 전자설비는 입력장치(503) 및 출력장치(504)를 더 포함할 수 있다. 프로세서(501), 메모리(502), 입력장치(503), 및 출력장치(504)는 버스 또는 다른 수단에 의해 접속될 수 있으며, 도 5에서 버스를 통한 연결이 예시되어 있다.
입력장치(503)는 입력된 숫자 또는 문자 정보를 수신할 수 있을 뿐만 아니라, 그래프 데이터베이스의 순회 방법에 따른 전자설비의 사용자 설정 및 기능제어에 관련된 키 신호 입력을 생성할 수 있으며, 예를 들어, 터치 스크린, 키패드, 마우스, 트랙패드, 터치패드, 포인팅 스틱, 하나 또는 하나 이상의 마우스 버튼, 트랙볼, 조이스틱 등과 같은 입력장치이다. 출력장치(504)는 디스플레이 장치, 보조 조명 장치(예를 들어, LED), 및 햅틱 피드백 장치(예를 들어, 진동 모터)등을 포함할 수 있다. 당해 디스플레이 장치는 액정표시장치(LCD), 발광 다이오드(LED) 디스플레이, 및 플라즈마 디스플레이를 포함할 수 있지만, 이에 한정되지 않는다. 일부 실시방식에서, 디스플레이 장치는 터치 스크린일 수 있다.
본 출원의 실시예에 따르면, 컴퓨터 판독 가능 매체에 저장되어 있는 컴퓨터 프로그램을 더 제공한다. 당해 컴퓨터 프로그램의 명령이 실행될 경우, 본 출원 실시예의 그래프 데이터베이스의 순회 방법이 실행된다.
본 명세서에 기술된 시스템 및 기술의 다양한 실시방식은 디지털 전자 회로 시스템, 집적 회로 시스템, 주문형 집적 회로 (ASIC), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합으로 구현될 수 있다. 이들 다양한 실시예는 하나 또는 하나 이상의 컴퓨터 프로그램에서 구현하는 것을 포함할 수 있으며, 당해 하나 또는 하나 이상의 컴퓨터 프로그램은 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능한 시스템 상에서 실행 및/또는 해석될 수 있고, 당해 프로그램 가능 프로세서는 전용 또는 범용 프로그램 가능 프로세서일 수 있으며, 저장 시스템, 적어도 하나의 입력장치, 및 적어도 하나의 출력장치로부터 데이터 및 명령을 수신하고, 데이터 및 명령을 당해 저장 시스템, 적어도 하나의 입력장치, 및 적어도 하나의 출력장치에 송신할 수 있다.
이들 컴퓨팅 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 또는 코드로 또한 지칭됨)은 프로그램 가능 프로세서의 기계 명령을 포함하며, 하이 레벨 절차 및/또는 객체 지향 프로그래밍 언어, 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용되는 바와 같이, "기계 판독가능 매체”및 "컴퓨터 판독가능 매체”라는 용어는 기계 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하기 위한 임의의 컴퓨터 프로그램 제품, 디바이스, 및/또는 장치(예를 들어, 자기 디스크, 광 디스크, 메모리, 프로그래머블 논리 소자(PLD))를 지칭하며, 기계 판독 가능 신호인 기계 명령을 수신하기 위한 기계 판독가능 매체를 포함한다. "기계 판독 가능 신호”라는 용어는 기계 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하는데 사용되는 임의의 신호를 지칭한다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 시스템 및 기술은 컴퓨터 상에서 구현될 수 있으며, 당해 컴퓨터는 사용자에 정보를 디스플레이하기 위한 디스플레이 장치(예를 들어, 음극선관(CRT) 또는 액정표시장치(LCD) 모니터), 및 키보드 및 포인팅 장치(예를 들어, 마우스 또는 트랙볼)을 갖고, 사용자가 당해 키보드 및 당해 포인팅 장치를 통해 컴퓨터에 입력을 제공할 수 있다. 다른 종류의 장치가 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며, 예를 들어, 사용자에 제공되는 피드백은 임의의 형태의 감각 피드백(예를 들어, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백) 일 수 있고, 사용자로부터의 입력은 임의의 형태(음향 입력, 음성 입력, 또는 촉각 입력을 포함하는)로 수신될 수 있다.
본 명세서에 설명된 시스템 및 기술은 백그라운드 컴포넌트를 포함하는 컴퓨팅 시스템(예를 들어, 데이터 서버), 또는 미들웨어 컴포넌트를 포함하는 컴퓨팅 시스템 (예를 들어, 애플리케이션 서버), 또는 프론트-엔드 컴포넌트를 포함하는 컴퓨팅 시스템(예를 들어, 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 사용자 컴퓨터이고, 사용자는 당해 그래픽 사용자 인터페이스 또는 웹 브라우저를 통해 본 명세서에 기술된 시스템 및 기술의 실시예와 상호작용할 수 있다), 또는 당해 백그라운드 컴포넌트, 미들웨어 컴포넌트 또는 프론트-엔드 컴포넌트를 포함하는 임의 조합의 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트는 디지털 데이터 통신(예를 들어, 통신 네트워크)의 임의의 형태 또는 매체에 의해 상호접속될 수 있다. 통신 네트워크의 예는 근거리 통신망(LAN), 광대역통신망(WAN) 및 인터넷을 포함한다.
컴퓨터 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 떨어져 있으며, 통상적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버 사이의 관계는 대응하는 컴퓨터 상에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 생성된다.
본 발명의 실시예는 입력된 그래프 순회 어구를 획득하고, 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하며; 각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 각각의 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 버퍼 대기열로부터 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행한다. 상기 기술방안에 따르면, 각각의 2 개의 인접한 연산자 사이에 버퍼 대기열이 생성되어 2 개의 인접한 연산자 중 앞 연산자에 대한 실행 결과 데이터를 생성하고 버퍼 대기열에 기록한 후, 버퍼 대기열 내의 데이터를 판독하여 뒷 연산자를 실행함으로써, 연산자의 병렬 실행이 구현되고, 순회 동작의 실행 효율 및 시스템 자원의 이용률이 향상된다.
전술한 다양한 형태의 흐름, 재배열, 부가 또는 삭제 단계가 사용될 수 있다는 것을 이해해야 한다. 예를 들어, 본 발명에 기재된 각 단계는 본 발명에 개시된 기술방안의 원하는 결과를 구현할 수 있는 한, 병렬로 또는 순서로 또는 상이한 순서로 실행될 수 있으며, 이는 본 명세서에 제한되지 않는다.
상기 상세한 실시방식은 본 발명의 청구항을 제한하는 것으로 의도되지 않는다. 다양한 수정, 조합, 서브 조합, 및 대체가 설계 요건 및 다른 요인을 고려하여 이루어질 수 있다는 것이 당업자에 명백할 것이다. 본 발명의 사상 및 원리 내에서 이루어진 임의의 수정, 등가물, 및 개선은 본 발명의 청구항 내에 포함되는 것으로 의도된다.
Claims (13)
- 입력된 그래프 순회 어구를 획득하고, 상기 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 단계; 및
각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 상기 버퍼 대기열로부터 상기 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행하는 단계; 를 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 제1항에 있어서,
각각의 연산자의 실행 순서에 따라, 각 연산자에 대응하는 스레드 사이에서 토큰 데이터를 전송하여, 토큰 데이터를 수신한 스레드가 당해 스레드에 대응하는 연산자의 동작을 실행하기 시작하고, 상기 토큰 데이터를 다음 연산자에 대응하는 스레드로 전송하는 단계를 더 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 제1항에 있어서,
각각의 연산자에 스레드를 각각 할당하는 단계는,
각각의 연산자의 실행 순서대로 이용 가능한 스레드의 개수에 따라 각각의 연산자에 스레드를 각각 할당하는 단계를 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 제3항에 있어서,
상기 이용 가능한 스레드의 개수가 연산자의 개수보다 작으면, 각각의 연산자의 실행 순서에 따라 각각의 연산자에 대응하는 스레드 사이에서 토큰 데이터가 전송될 경우,
상기 토큰 데이터를 수신한 스레드가 다음 연산자에 대응하는 스레드를 갖는지 여부를 판단하는 단계; 및
상기 토큰 데이터를 수신한 스레드가 다음 연산자에 대응하는 스레드를 갖지 않는다고 판단하면, 미리 설정된 조건을 만족하는 할당된 스레드가 나타날 경우 상기 할당된 스레드를 상기 다음 연산자에 재할당하고, 상기 토큰 데이터를 상기 할당된 스레드에 전송하여 상기 할당된 스레드가 상기 다음 연산자의 동작을 실행하는 단계를 포함하고,
상기 미리 설정된 조건은 상기 할당된 스레드가 당해 스레드에 대응하는 연산자의 동작을 이미 실행하였다는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 제1항에 있어서,
각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 단계는,
각각의 연산자에 로컬 컴퓨터 디바이스의 스레드를 할당하고, 로컬 컴퓨터 디바이스에서 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 단계; 또는,
각각의 연산자에 대하여, 상기 연산자를 실행하기 위한 컴퓨터 디바이스가 적어도 2 개의 컴퓨터 디바이스들로부터 결정되고, 상기 연산자에 대해 결정된 컴퓨터 디바이스의 스레드를 할당하는 단계; 및
각각의 2 개의 인접한 연산자에 대하여, 버퍼 대기열을 생성하기 위한 컴퓨터 디바이스가 적어도 2 개의 컴퓨터 디바이스들로부터 결정되고, 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열을 결정된 컴퓨터 디바이스에서 생성하는 단계; 를 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 제5항에 있어서,
제 1연산자에 대하여, 상기 제 1연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 어드레스 정보를 상기 제 1 연산자를 실행하기 위한 컴퓨터 디바이스로 송신하여, 상기 제 1연산자를 실행하는 컴퓨터 디바이스가 상기 수신된 어드레스 정보에 기초하여 대응하는 버퍼 대기열을 포지셔닝하는 단계; 및
상기 제 1 연산자 이외의 어느 하나의 타겟 연산자에 대하여, 상기 어느 하나의 타겟 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 제 1 버퍼 대기열의 어드레스 정보 및 상기 어느 하나의 타겟 연산자의 실행 결과 데이터를 저장하기 위한 제 2 버퍼 대기열의 어드레스 정보를, 상기 어느 하나의 타겟 연산자를 실행하기 위한 컴퓨터 디바이스로 송신하여, 상기 어느 하나의 타겟 연산자를 실행하는 컴퓨터 디바이스가 수신된 어드레스 정보에 기초하여 대응하는 상기 제 1 버퍼 대기열 및 상기 제 2 버퍼 대기열을 포지셔닝하는 단계; 를 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 제6항에 있어서,
상기 버퍼 대기열이 대기열 클러스터에서 생성되면, 상기 버퍼 대기열의 어드레스 정보는 대기열 식별자를 포함하고;
상기 버퍼 대기열이 컴퓨터 디바이스에서 생성되면, 상기 버퍼 대기열의 어드레스 정보는 대기열이 위치한 컴퓨터 디바이스의 디바이스 식별자, 포트 정보 및 대기열 식별자 중 적어도 하나를 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 제1항에 있어서,
제 1 연산자 이외의 어느 하나의 타겟 연산자에 대응하는 스레드가 연산자의 실행 종료 조건을 충족한다고 결정될 경우, 미리 설된 동작을 실행하여, 대응하는 연산자의 동작을 종료하도록 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드에 통지하는 단계를 더 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 제8항에 있어서,
미리 설정된 동작을 실행하여, 대응하는 연산자의 동작을 종료하도록 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드에 통지하는 단계는,
상기 어느 하나의 타겟 연산자를 현재 연산자로 하며; 현재 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하여 앞 연산자에 대응하는 스레드가 당해 버퍼 대기열의 판독측 상태를 턴 오프한 것을 검출할 경우, 당해 버퍼 대기열에 데이터를 기록하는 것을 중단하고 당해 버퍼 대기열의 기록측 상태를 턴 오프하여 앞 연산자의 실행을 종료하며; 앞 연산자를 새로운 현재 연산자로 하고, 상기 제 1 연산자의 실행이 종료될 때까지 현재 연산자의 앞 연산자의 실행 결과 데이터를 저장하기 위한 버퍼 대기열의 판독측 상태를 턴 오프하는 동작을 실행하도록 리턴되는 단계; 또는
종료 정보가 미리 설정된 글로벌 정보 테이블에 등록되어 상기 어느 하나의 타겟 연산자 이전의 각 연산자에 대응하는 스레드가 상기 종료 정보를 판독할 경우, 대응하는 연산자의 동작을 종료하는 단계; 를 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 방법. - 입력된 그래프 순회 어구를 획득하고, 상기 그래프 순회 어구에 포함된 적어도 2개의 연산자 및 각각의 연산자의 실행 순서를 결정하며, 각각의 연산자에 스레드를 각각 할당하고, 각각의 2 개의 인접한 연산자에 버퍼 대기열을 각각 생성하는 순회 어구 획득 모듈;
각각의 2 개의 인접한 연산자에 대하여, 상기 2 개의 인접한 연산자 중 앞 연산자에 대응하는 스레드를 통해 앞 연산자의 동작을 실행하고, 앞 연산자의 실행 결과 데이터를 상기 2 개의 인접한 연산자에 대응하는 버퍼 대기열에 기록하며; 상기 2 개의 인접한 연산자 중 뒷 연산자에 대응하는 스레드를 통해 병렬로 상기 버퍼 대기열로부터 상기 2 개의 인접한 연산자 중 앞 연산자의 실행 결과 데이터를 판독하여 뒷 연산자의 동작을 실행하는 연산자 병렬 실행 모듈; 을 포함하는,
것을 특징으로 하는 그래프 데이터베이스의 순회 장치. - 적어도 하나의 프로세서; 및
적어도 하나의 프로세서에 통신 가능하게 연결되는 메모리; 를 포함하고,
상기 메모리는 상기 적어도 하나의 프로세서에 의해 실행 가능한 명령을 저장하며, 상기 명령이 상기 적어도 하나의 프로세서에 의해 실행될 경우, 상기 적어도 하나의 프로세서가 제 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 |
---|---|
KR20210092689A true KR20210092689A (ko) | 2021-07-26 |
KR102522958B1 KR102522958B1 (ko) | 2023-04-18 |
Family
ID=70952104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210005000A KR102522958B1 (ko) | 2020-01-15 | 2021-01-14 | 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11734076B2 (ko) |
EP (1) | EP3851979A1 (ko) |
JP (1) | JP7150902B2 (ko) |
KR (1) | KR102522958B1 (ko) |
CN (1) | CN111259205B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237903A (zh) * | 2021-12-22 | 2022-03-25 | 上海壁仞智能科技有限公司 | 内存分配优化方法、装置、电子设备、介质及程序产品 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112149828B (zh) * | 2020-09-29 | 2022-05-13 | 北京百度网讯科技有限公司 | 基于深度学习框架的算子精度检测方法和装置 |
CN114518950A (zh) * | 2020-11-18 | 2022-05-20 | 华为技术有限公司 | 一种内存管理的方法、设备及*** |
CN114741172B (zh) * | 2022-04-06 | 2023-05-02 | 深圳鲲云信息科技有限公司 | 人工智能模型的算子调度方法、装置、设备及存储介质 |
CN115080241A (zh) * | 2022-06-30 | 2022-09-20 | 支付宝(杭州)信息技术有限公司 | 数据处理方法以及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070031307A (ko) * | 2004-05-27 | 2007-03-19 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품 |
US20140172914A1 (en) * | 2012-12-14 | 2014-06-19 | Microsoft Corporation | Graph query processing using plurality of engines |
WO2019241021A1 (en) * | 2018-06-15 | 2019-12-19 | Futurewei Technologies, Inc. | System for handling concurrent property graph queries |
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 |
WO2005116830A1 (en) | 2004-05-27 | 2005-12-08 | Koninklijke Philips Electronics N.V. | Signal processing apparatus |
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 | 华为技术有限公司 | 处理数据库重做数据的方法和装置 |
EP2784697A1 (en) | 2013-03-28 | 2014-10-01 | Fujitsu Limited | Graph database query handling method and apparatus |
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 |
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 US US17/076,400 patent/US11734076B2/en active Active
- 2020-10-21 EP EP20202934.4A patent/EP3851979A1/en active Pending
-
2021
- 2021-01-14 KR KR1020210005000A patent/KR102522958B1/ko active IP Right Grant
- 2021-01-15 JP JP2021005299A patent/JP7150902B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070031307A (ko) * | 2004-05-27 | 2007-03-19 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품 |
US20140172914A1 (en) * | 2012-12-14 | 2014-06-19 | Microsoft Corporation | Graph query processing using plurality of engines |
WO2019241021A1 (en) * | 2018-06-15 | 2019-12-19 | Futurewei Technologies, Inc. | System for handling concurrent property graph queries |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114237903A (zh) * | 2021-12-22 | 2022-03-25 | 上海壁仞智能科技有限公司 | 内存分配优化方法、装置、电子设备、介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
JP2021111419A (ja) | 2021-08-02 |
EP3851979A1 (en) | 2021-07-21 |
US20210216373A1 (en) | 2021-07-15 |
JP7150902B2 (ja) | 2022-10-11 |
KR102522958B1 (ko) | 2023-04-18 |
CN111259205A (zh) | 2020-06-09 |
US11734076B2 (en) | 2023-08-22 |
CN111259205B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102522958B1 (ko) | 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체 | |
US11657091B2 (en) | Method and apparatus for querying shortest path of graph, and storage medium | |
CN111782365B (zh) | 定时任务处理方法、装置、设备及存储介质 | |
JP7282823B2 (ja) | メモリアクセスリクエストスケジューリング方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム | |
CN108351783A (zh) | 多核数字信号处理***中处理任务的方法和装置 | |
JP2021103577A (ja) | 循環命令の処理方法、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム | |
JP2021121959A (ja) | 深層学習推論エンジンのスケジューリング方法、装置、機器及び媒体 | |
US9454481B2 (en) | Affinity group access to global data | |
US11784946B2 (en) | Method for improving data flow and access for a neural network processor | |
WO2022037421A1 (zh) | 指令发射方法、装置、电子设备以及存储介质 | |
KR102326280B1 (ko) | 데이터 처리 방법, 장치, 기기 및 매체 | |
US8977752B2 (en) | Event-based dynamic resource provisioning | |
US11748108B2 (en) | Instruction executing method and apparatus, electronic device, and computer-readable storage medium | |
WO2021147289A1 (zh) | 流式计算作业处理方法、流式计算***及电子设备 | |
US10228982B2 (en) | Hyper-threaded processor allocation to nodes in multi-tenant distributed software systems | |
CN117093335A (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 | |
TW202349201A (zh) | 指令預測方法、裝置、系統及計算機可讀取儲存媒體 | |
US9298622B2 (en) | Affinity group access to global data | |
CN111782147A (zh) | 用于集群扩缩容的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |