KR102535666B1 - 대형 그래프 처리를 위한 그래프 데이터 분할 - Google Patents

대형 그래프 처리를 위한 그래프 데이터 분할 Download PDF

Info

Publication number
KR102535666B1
KR102535666B1 KR1020190160433A KR20190160433A KR102535666B1 KR 102535666 B1 KR102535666 B1 KR 102535666B1 KR 1020190160433 A KR1020190160433 A KR 1020190160433A KR 20190160433 A KR20190160433 A KR 20190160433A KR 102535666 B1 KR102535666 B1 KR 102535666B1
Authority
KR
South Korea
Prior art keywords
partition
vertex
partitions
data
graph
Prior art date
Application number
KR1020190160433A
Other languages
English (en)
Other versions
KR20200070116A (ko
Inventor
니마 엘야시
최창호
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20200070116A publication Critical patent/KR20200070116A/ko
Application granted granted Critical
Publication of KR102535666B1 publication Critical patent/KR102535666B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Image Generation (AREA)

Abstract

본 발명은 대형 그래프들에 대한 그래프 데이터를 처리하고 분할하는 방법, 장치, 및 시스템을 포함한다. 이러한 구성들은: 분할 선-처리 단계에서, 복수의 목표 꼭지점들의 각 목표 꼭지점이 복수의 구획들 중 하나의 구획으로만 유일하게 할당되도록, 복수의 복표 꼭지점들을 복수의 구획들로 할당하는 단계, 및 외부 그래프 처리 단계의 메인 실행에서, (i) 복수의 구획들 중 목표 꼭지점들의 주어진 구획을 솔리드 스테이트 드라이브(SSD; solid state drive)로부터 컴퓨팅 머신의 메인 메모리로 로딩하고, (ii) 소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 SSD로부터 컴퓨팅 머신의 메인 메모리로 스트림하고, (iii) 적어도 목표 꼭지점들의 주어진 구획 및 소스 꼭지점 데이터의 스트림된 하나 또는 그 이상의 청크들을 기반으로 그래프 처리를 수행하는 단계를 포함한다.

Description

대형 그래프 처리를 위한 그래프 데이터 분할{PARTITIONING GRAPH DATA FOR LARGE SCALE GRAPH PROCESSING}
본 발명은 대형 그래프 처리(large-scale graph processing)에 관한 것으로, 좀 더 상세하게는, 대형 그래프 처리를 분할하는 방법 및 그래프 데이터 코디네이터(coordinator)에 관한 것이다.
대형 그래프 처리는 소셜 네트워크 분석, 추천 시스템들(recommendation systems), 및 인간 유전자로부터의 특징 추출에서 널리 사용된다. 시간이 흐르면서, 그래프 데이터세트 크기가 증가함에 따라, 모든 그래프 데이터를 메인 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM; Dynamic Random Access Memory))에 저장하는 것은 더 이상 효율적이지 않거나 또는 구현 가능하지 않다. 이에 따라, 급격하게 증가하는 데이터 세트 크기는 그래프 데이터를 솔리드 스테이트 드라이브(SSD; solid state drive)와 같은 불휘발성 장치에 저장하는 것을 필요로 한다. 이는 많은 세밀한 랜덤 액세스들(fine-grained random accesses)을 발생시키고, 그 결과, 그래프 분석 애플리케이션의 실행을 지연시킬 뿐만 아니라, SSD 수명을 악화시킨다. 모든 그래프 데이터를 SSD에 저장하고 메인 메모리로 데이터를 로드하여 외부 그래프 처리를 수행하는 그래프 처리 프레임워크의 타입에서, 중간의 세밀한 데이터는 SSD에 먼저 로깅(log)되고, 각 반복 동작 이후에 정렬되고, 최종적으로 SSD에 저장된다. 정렬 단계는 큰 오버헤드를 일으키고, 실행 시간을 증가시킨다. 더욱이, 그래프 데이터 세트 크기들이 증가함에 따라 시간이 흐르면서, 정렬의 비용은 심각하게 악화된다.
대형 그래프 처리를 위해 그래프 데이터를 분할하는 향상된 그래프 데이터 코디네이터 및 방법이 요구된다.
본 발명의 목적은 향상된 성능을 갖는 대형 그래프 처리를 위한 그래프 데이터 분할 방법을 제공하는데 있다.
예시적인 실시 예들은 대형 그래프 처리를 위한 그래프 데이터를 분할하는 컴퓨터-실행 가능한 방법을 포함한다. 상기 방법은 분할 선-처리 단계에서, 복수의 목표 꼭지점들의 각 목표 꼭지점이 복수의 구획들 중 하나의 구획으로만 유일하게 할당되도록, 상기 복수의 복표 꼭지점들을 상기 복수의 구획들로 할당하는 단계; 및 외부 그래프 처리 단계의 메인 실행에서, (i) 상기 복수의 구획들 중 목표 꼭지점들의 주어진 구획을 솔리드 스테이트 드라이브(SSD; solid state drive)로부터 컴퓨팅 머신의 메인 메모리로 로딩하고, (ii) 소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 상기 SSD로부터 상기 컴퓨팅 머신의 상기 메인 메모리로 스트림하고, (iii) 적어도 상기 목표 꼭지점들의 주어진 구획 및 상기 소스 꼭지점 데이터의 상기 스트림된 하나 또는 그 이상의 청크들을 기반으로 그래프 처리를 수행하는 단계를 포함할 수 있다.
일부 실시 예들은 분할 선-처리 단계를 수행하여 복수의 목표 꼭지점들 각각의 목표 꼭지점이 복수의 구획들 중 하나의 구획으로만 유일하게 할당되도록 상기 복수의 목표 꼭지점들을 상기 복수의 구획들로 분할하도록 구성된 그래프 데이터 코디네이터 로직부를 포함하는 컴퓨팅 머신을 포함한다. 상기 그래프 데이터 코디네이터 로직부는 외부 그래프 처리 단계의 메인 실행을 수행하도록 구성된다. 그래프 데이터 코디네이터 로직부는 상기 복수의 구획들 중 목표 꼭지점들의 주어진 구획을 솔리드 스테이트 드라이브(SSD; solid state drive)로부터 상기 컴퓨팅 머신의 메인 메모리로 로드하도록 구성된다. 상기 그래프 데이터 코디네이터 로직부는 소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 상기 SSD로부터 상기 컴퓨팅 머신의 메인 메모리로 스트림하도록 구성된다. 상기 그래프 데이터 코디네이터 로직부는 적어도 상기 목표 꼭지점들의 로드된 주어진 구획 및 상기 소스 꼭지점 데이터의 스트림된 하나 또는 그 이상의 청크들을 기반으로 그래프 처리를 수행하도록 구성된다.
본 발명의 실시 예에 따르면, 향상된 신뢰성을 갖는 대형 그래프 처리를 위해 그래프 데이터를 분할하는 방법, 장치, 및 시스템이 제공된다.
본 발명의 이론들의 전술한 그리고 추가적인 특징들 및 이점들은 첨부된 초면들을 참조하여 이하에서 설명되는 상세한 설명들로부터 좀 더 명확해 질 것이다.
도 1은 본 발명의 실시 예에 따른, 꼭지점들을 포함하는 다양한 구획들을 포함하는 목표 꼭지점 테이블의 예시적인 도면이다.
도 2는 본 발명의 실시 예에 따른, 각각이 꼭지점 ID, 값, 연관된 인덱스, 및 에지 데이터를 포함하는 다양한 구획들을 포함하는 소스 꼭지점 테이블의 예시적인 도면이다.
도 3a는 본 발명의 실시 예에 따른, 그리디 분할 프리-프로세싱 단계 및 직후의 외부 그래프 프로세싱의 메인 실행을 수행하기 위한 기법을 보여주는 예시적인 흐름도이다.
도 3b는 본 발명의 실시 예에 따른, 도 3a의 그리디 분할 프리-프로세싱 단계의 추가적인 설명들을 보여주는 예시적인 흐름도이다.
도 4a는 본 발명의 실시 예에 따른, 메인 메모리 및 SSD 사이에서 데이터의 흐름 및 프로세싱, 그리고 그래프 데이터 코디네이터 로직부를 포함하는 컴퓨팅 머신의 예시적인 블록 및 흐름도이다.
도 4b는 본 발명의 실시 예에 따른, 메인 메모리 및 SSD 사이에서 추가적인 데이터의 흐름 및 프로세싱, 그리고 그래프 데이터 코디네이터 로직부를 포함하는 도 4a의 컴퓨팅 머신의 예시적인 블록 및 흐름도이다.
도 5는 본 발명의 실시 예에 따른, 목표 꼭지점 테이블, 목표 꼭지점들에 대한 메타 데이터, 및 복수의 소스 꼭지점 테이블의 예시적인 블록 및 흐름도이다.
도 6은 본 발명의 실시 예에 따른 메인 메모리 및 SSD 사이에서 데이터의 좀 더 포괄적인 흐름 및 프로세싱, 그리고 그래프 데이터 코디네이터 로직부를 포함하는 컴퓨팅 머신의 예시적인 블록 및 흐름도이다.
도 7은 본 발명의 실시 예에 따른, 그래프 데이터 코디네이터 로직부를 포함하는 컴퓨팅 시스템의 예시적인 블록도이다.
첨부된 도면들에 도시된 실시 예들을 참조하여 본 발명의 실시 예들이 상세하게 설명될 것이다. 이하의 상세한 설명에서, 다양한 상세한 설명들은 본 발명의 전반적인 이해를 가능하게 하기 위한 것이다. 그러나 당업자는 이러한 상세한 설명 없이 본 발명을 실행할 수 있는 것으로 이해되어야 한다. 다른 예에서, 잘-알려진 방법들, 절차들, 구성들, 회로들, 및 네트워크들은 실시 예들의 사상들을 불필요하게 모호하게 하지 않기 위하여 상세하게 설명되지 않는다.
본문에서 사용되는 "제1(first)", "제2(second)", "제3(third)" 등과 같은 용어들은 다양한 요소들을 설명하기 위한 것으로 이해될 것이며, 이러한 요소들은 이러한 용어들에 한정되지 않아야 한다. 이러한 용어들은 하나의 요소를 다른 것으로부터 구분하기 위해서만 사용된다. 예를 들어, 본 발명의 사상으로부터의 벗어남 없이, 제1 그래프는 제2 그래프로 지칭될 수 있으며, 유사하게, 제2 그래프는 제1 그래프로 지칭될 수 있다.
본 발명의 상세한 설명에서 사용되는 용어들은 오직 특정 실시 예들을 설명하기 위한 것이며, 본 발명이 이에 한정되는 것으로 의도되지 않는다. 본 발명의 상세한 설명 및 첨부된 특허청구범위에서 사용되는 바와 같이, 맥락이 다르게 명확하게 지칭하지 않는 한, 단수 용어들은 복수의 형태들을 포함하는 것으로 의도된다. 본문에서 사용되는 바와 같이 "및/또는(and/or)"의 용어는 연관되어 열거된 목록들의 하나 또는 그 이상의 가능한 조합들 전부 및 일부를 참고하고 아우르는 것으로 이해될 것이다. "포함하다(comprises, comprising)"의 용어들은 상세한 설명에서 사용될 때, 열거된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성들의 존재를 가리키나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성들, 및/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성들 및 특징들은 필수적으로 계측되지 않는다.
SSD의 가용한 용량을 효율적으로 이용하고, 그래프 애플리케이션들의 실행을 더 신속히 처리하기 위하여, 본 발명의 실시 예들은 각 구획(each partition)과 연관된 꼭지점 데이터가 DRAM내에 맞춰지고, 즉시 업데이트가 되도록 그래프 데이터를 분할(partition)한다. 각 구획이 처리될 때, 그것의 연관된 데이터가 SSD로 재기입(write-back)된다. 따라서, 세밀한 액세스들(fine-grained accesses)이 SSD 대신에, 메인 메모리(DRAM)에서 발생한다. 이는 SSD로의 순차적인 거친 액세스들(sequential coarse grain accesses)을 제공하고, 대형 그래프 분석의 실행 시간을 감소시키는 것을 돕는다.
본 발명의 실시 예들은 구획들의 그룹 중 각 구획에서의 목표 꼭지점들이 쉽게 메인 메모리(DRAM) 공간에 적합하게 하는 꼭지점 데이터에 대한 그리디 분할 메커니즘들(greedy partitioning mechanism)을 포함한다. 이에 따라, 중간의 세밀한 데이터를 저장하는 필요성이 없어진다. 분할은 선-처리 단계로서 실행 이전에 수행된다.
꼭지점(vertex)은 목표 꼭지점들(destination vertices)을 기반으로 분할된 데이터일 수 있다. 세밀한(fine-grained) 그리고 느린 I/O 액세스들은 고속 메모리 액세스들로 대신 변환될 수 있다. 랜덤의 세밀한(Random fine-grained) I/O 액세스들이 합쳐지고, 순차적인 거친 액세스들(sequential coarse-grained accesses)을 생성할 수 있다. 다른 이점들은 반복 실행의 각각에서 생성된 중간 데이터를 정렬하는 종래의 필요성이 제거되는 것이다.
도 1은 본 발명의 실시 예들에 따른, 복수의 구획들(예를 들어, Partition 0~Partition N)을 포함하는 목표 꼭지점 테이블(100)의 예시적인 도면이다. 복수의 구획들 각각은 꼭지점들(예를 들어, Vertex 0, Vertex 1 등)을 포함할 수 있다. 도 2는 본 발명의 실시 예에 따른 다양한 구획들(예를 들어, Partition 0~Partition N)을 포함하는 소스 꼭지점 테이블(200)의 예시적인 도면이다. 복수의 구획들 각각은 꼭지점 ID 및 값(205), 연관된 인덱스(210), 및 에지 데이터(215)를 포함할 수 있다. 도 1 및 도 2가 이하에서 참조된다.
본 발명의 실시 예들은 대형 그래프 데이터 세트들에서 구동할 때, 외부 그래프 처리를 위한 그리디 분할 매커니즘(greedy partitioning mechanism)을 포함할 수 있다. 그래프는 꼭지점들의 세트 및 꼭지점들을 연결하는 에지들의 세트를 포함할 수 있다. 각 꼭지점 "v"와 연결된 꼭지점들은 "v"의 이웃들이라 불린다. 꼭지점 "u"에 대하여, 에지 "e"(즉, "u→와 같이 "→로 표현됨.)는 "u"의 "아웃 에지(out edge)" 및 "v"의 "인 에지(in edge)"라 불린다. 그래프를 처리하기 위하여, 각 꼭지점은 그것의 이웃의 정보(예를 들어, ID 및 값 등)을 갖는 것을 필요로 한다.
도 1 및 도 2에 도시된 바와 같이, 목표 꼭지점 테이블(100) 및 소스 꼭지점 테이블(200)은 대형 그래프들을 처리하는데 사용될 수 있다. 그래프 데이터는 2개의 섹션들에 저장될 수 있고, 2개의 섹션들은 (i) 꼭지점 ID 및 값(205)(예를 들어, PageRank의 랭크), 및 꼭지점의 이웃들의 시작 오프셋(예를 들어, OFFSET A ~ OFFSET N 등)을 가리키는 인덱스(210); 및 (ii) 각 꼭지점에 대한 이웃들의 세트(예를 들어, 이웃하는 꼭지점들의 ID) 및 에지 정보(예를 들어, 소스로부터의 거리)를 포함하는 에지 데이터(215)를 포함할 수 있다. 이하에서 설명되는 바와 같이, 각 구획(예를 들어, Partition 0, PARTION 1 등)에 대한 소스 꼭지점들(예를 들어, Vertex A, Vertex B 등)은 미러 꼭지점들(mirror vertices)(예를 들어, 225) alc 마스터 꼭지점들(예를 들어, 230)로 분할될 수 있다.
대형 그래프들을 처리하기 위하여, 꼭지점 중심의 처리 모델(vertex-centric processing model)이 분산된 방식(distributive fashion)으로 외부 그래프 처리 실행을 병렬화하는데 사용될 수 있다. 이러한 처리 모델은 단일 컴퓨터 서버와 같은 단일 이산 머신(single discrete machine)을 사용하여 적절하게 달성된다. 일부 실시 예들에서, 그래프 처리는 병렬화하는 것은 현재 꼭지점 정보뿐만 아니라 그것의 이웃 꼭지점들을 읽은 꼭지점 프로그램을 각 꼭지점이 실행하도록 멀티 프로세싱 유닛들을 사용하거나 또는 쓰레드들을 처리하여 수행될 수 있다. 일부 연산(그래프 처리 기법에 의해 정의됨.)을 수행한 이후에, 꼭지점은 자체를 업데이트하거나 또는 그것의 이웃들로 업데이트들을 전송하는 것을 필요로 할 수 있다. 꼭지점 중심의 실행 모델을 사용하는 그래프 처리 프레임워크들(graph processing frameworks)은 메인 메모리(예를 들어, DRAM)에 꼭지점 데이터를 저장할 수 있고, 보조 스토리지(예를 들어, SSD)에 에지 데이터를 저장할 수 있다. 일반적으로, 각 이웃 꼭지점의 값이 4바이트 수만큼 작을 수 있기 때문에, 이웃하는 꼭지점들로의 업데이트들은 다수의 세밀한 랜덤 액세스들을 필요로 한다. 본 발명의 실시 예들에 따르면, 바이트로 지정될 수 있는 메인 메모리에 꼭지점 데이터를 저장할 때, 이러한 세밀한 랜덤 업데이트들이 메인 메모리로 발생하고, 이는 그것들을 좀 더 잘 처리할 수 있다. 반면에, 에지 데이터로의 액세스들은 일반적으로 순차적이고 좀 더 거칠기(coarse-grained) 때문에, SSD에 의해 거의 비슷하게 관리될 수 있다.
그래프 데이터세트 크기들이 증가함에 따라, 메인 메모리에 동등한 꼭지점 데이터를 저장하는 것은 SSD 공간보다 좀 더 비싼 DRAM 공간의 큰 용량을 필요로 한다. 즉, 그래프 애플리케이션을 구동하는데 DRAM 공간의 제한된 공간이 주어진 경우, 동등한 꼭지점 데이터는 SSD에 저장되고, 다른 시간 구간들에서 메인 메모리로부터 읽어 질 필요가 있다. SSD 페이지(예를 들어, 8KB)의 액세스 단위(access granularity)를 갖는 SSD에 꼭지점 데이터를 저장할 때, 각 세밀한 랜덤 업데이트(예를 들어, 4B)는 이와는 다르게, 전체 SSD 페이지 기입을 명령할 것이다. SSD 페이지 크기 및 꼭지점 값 업데이트들의 불일치는 SSD의 수명 및 애플리케이션 성능에 매우 불리할 것이다. 대조적으로, 본 발명의 실시 예는 선-처리 단계(pre-processing phase)에서 오프-라인으로 수행될 수 있는 꼭지점 데이터에 대한 저-비용 분할 메커니즘을 사용하고, 이에 따라, SSD 수명 및 애플리케이션 성능의 효율적인 향상을 위하여, 이웃하는 꼭지점들로의 세밀한 랜덤 업데이트들이 거칠 순차 액세스들(coarse-grained sequential accesses)로 변환된다.
본 발명의 실시 예들은 각각의 꼭지점 데이터를 메인 메모리로부터 읽고, 이후에 보조 스토리지(예를 들어, SSD)로부터 메인 메모리로 에지 데이터를 스트리밍함으로써, 꼭지점 데이터를 분할하고, 각 구획을 처리한다. 본 발명에 따른 분할 메커니즘은 꼭지점 데이터를 분할하는데 그리디 기법(greedy technique)을 사용한다. 각 반복에서, 업데이트들이 목표 꼭지점들로 발생하기 때문에, 본 발명의 실시 예들은 (i) 목표 꼭지점들(예를 들어, Vertex 0 ~ Vertex N)을 분할하고, 그것들의 일부 각각을 대응하는 구획들(예를 들어, Partition 0 ~ Partition N)로 할당하고, (ii) 각 구획과 연관된 목표 꼭지점들의 "인 에지들(in edges)"을 그것들의 인덱싱 정보와 분리해서 함께 저장한다. 즉, 그래프 데이터를 선-처리/분할하는 단계를 수행한 이후에, 이하에서 설명되는 바와 같이, 이하의 3개의 파일들이 SSD에 저장되고, 연속적으로 처리된다. 3개의 파일들은 (i) 목표 꼭지점 데이터(예를 들어, 목표 꼭지점 테이블(100)), (ii) 소스 꼭지점 데이터 및 그것의 이웃들의 인덱싱 정보(예를 들어, 소스 꼭지점 테이블(200), 저장된 데이터의 ID들, 및 (iii) 에지 데이터(예를 들어, 에지 데이터(215)를 포함한다.
꼭지점 데이터에 대한 그리디 분할 기법은 선-처리 단계(예를 들어, 오프라인)으로서 수행될 수 있다. 각 목표 꼭지점이 하나의 구획으로만 할당되도록 꼭지점 데이터가 SSD에서 분할될 수 있다. 각 구획에 대한 목표 꼭지점 데이터는 메모리로 전송되고, 구획들이 처리될 때까지 유지된다. 데이터의 나머지(예를 들어, 소스 꼭지점 데이터 및 에지 데이터)는, 이하에서 설명되는 바와 같이, SSD로부터 메인 메모리로 청크 단위로 스트림될 수 있다. 이는 단일 머신이 제안된 크기의 메인 메모리를 갖더라도, 단일 이산 머신 상에서 외부 그래프 처리를 구동하는 것을 가능하게 한다.
도 3a는 본 발명의 실시 예에 따른 그리디 분할 선-처리 단계(305) 및 그 이후의 외부 그래프 처리의 주요 실행(310)을 보여주는 예시적인 순서도(300)이다. 기법은 도 3b를 참조하여 더욱 상게하게 설명되는 그리디 분할 선-처리 단계(305)를 수행하는 305에서 시작한다. 그리디 분할 선-처리 단계(305) 이후에, 외부 그래프 처리의 주 실행이, 도 4a, 도 4b, 도 5, 및 도 6을 참조하여 더욱 상세하게 설명되는 310에서 수행된다.
도 3b는 본 발명의 실시 예들에 따른, 도 3a의 그리디 분할 선-처리 단계(305)의 추가적인 상세 구성을 보여주는 예시적인 순서도이다. 이러한 분할 선-처리 단계(305)를 통해, 목표 꼭지점들(예를 들어, Vertex "0", Vertex "1", Vertex "2" 등)은 각 구획(예를 들어, Partition "0")으로 유일하게 할당된다. 다르게 말하면, 각 목표 꼭지점이 하나의 구획으로만 할당되도록 꼭지점 데이터가 SSD에서 분할될 수 있다. 그러나 소스 꼭지점들(예를 들어, Vertex "A", Vertex "B", Vertex "C" 등)은 다른 구획들에 대한 복제들(duplicates)을 포함할 수 있다. 이러한 그리디 분할의 목적은 목표 꼭지점의 유일성을 유지하면서, 복제 꼭지점들(일반적으로 "미러(mirror)"라 칭함.)의 개수를 최소화하는 것이다.
315에서 지칭되는 바와 같이, 각 에지 "e"(즉, u→에 대하여: 320에서 지칭되는 바와 같이, 꼭지점 "v"가 구획 "P"로 이미 할당된 경우, 325에서 지칭되는 바와 같이, 꼭지점 "u"가 구획에 이미 존재하지 않는다면, 330에서 지칭되는 바와 같이, 꼭지점 "u"가 동일한 구획 "P"로 추가된다. 다시 말해서, 꼭지점 "u"가 구획 "P"에 이미 존재하지 않는 경우, 꼭지점 "u"가 구획 "P"에 추가된다.
320을 다시 참조하면, 꼭지점 "v"가 어떤 구획에 아직 할당되지 않은 경우, 335에서 꼭지점 "u"가 검사된다. 335에서, 꼭지점 "u"가 구획들{P1, P2, …}의 세트에 이미 할당된 경우, 340에서, 최소 개수의 에지들을 포함하는 구획이 선택되고, 꼭지점 "v"가 그 구획으로 추가되거나 또는 할당될 수 있다. 그렇지 않다면, 335에서 꼭지점 "u"가 어떤 구획에 아직 할당되지 않은 경우, 꼭지점들 "u" 및 "v"은 345에서, 최소 개수의 에지들을 갖는 구획으로 추가되거나 또는 할당될 수 있다.
이런한 그리디 분할 선-처리 기법은 각 목표 꼭지점이 구획으로 유일하게 할당되고, 그것이 어떤 미러들로 포함하지 않는 것을 보장할 수 있다. 다시 말해서, 소스 꼭지점들이 미러들을 포함할 수 있는 반면에, 목표 꼭지점들은 그렇지 않은 것이 보장될 수 있다. 이 단계 이후에, 목표 꼭지점들의 레이블들은 그것들의 새로운 순서에 대하여 변경될 수 있다. 이러한 변경들은 각각의 소스 꼭지점들 및 에지 데이터에 대해 반영될 수 있다. 더욱이, 각 구획을 처리할 때, 각 구획에 대한 목표 꼭지점들은 메인 메모리에 적합할 수 있고, 그에 따라 업데이트될 수 있다. 그리디 분할 선-처리 단계(305)가 완료된 경우, 그래프 처리 기법(310)이 분할된 그래프 데이터에 대하여 수행될 수 있다. 그리디 분할은 오프라인으로 그리고 선-처리 단계로서 수행될 수 있고, 그것의 레이턴시는 그래프 처리 기법의 실행 시간의 레이턴시에 부정적으로 영향을 주지 않는다. 다음으로, 그래프 처리 기법 실행을 위한 실행 모델이 설명된다.
도 4a는 본 발명의 실시 예에 따른 메인 메모리(410) 및 SSD(415) 사이의 데이터의 처리 및 흐름, 및 그래프 데이터 코디네이터 섹션(405)을 포함하는 컴퓨팅 머신(402)의 순서도(400) 및 예시적인 블록도이다.
구획들(예를 들어, 목표 꼭지점 테이블(100)로부터의 구획들)은 연속하여 처리될 수 있다. 각 구획에 대하여, 일련의 처리 단계들이 수행될 수 있다. 먼저, 425에서, 주어진 구획 "P"과 연관된 목표 꼭지점 데이터가 그래프 데이터 코디네이터 로직 섹션(405)에 의해 SSD(415)와 같은 디스크로부터 메인 메모리(410)로 로드될 수 있다. 두 번째로, 그래프 처리 기법에 따라, 소스 꼭지점 데이터의 부분 또는 전체 소스 꼭지점 데이터(430) 중 어느 하나가, 소스 꼭지점 데이터(430)의 스트림된 청크들(435)로, SSD(415)로부터 메인 메모리(410)로 전송되고, 이후에 처리된다. 좀 더 상세하게는, 소스 꼭지점 데이터의 청크(435)(예를 들어, 32MB)는 SSD(415)로부터 메인 메모리(410)로 전송될 수 있고, 꼭지점 값들(예를 들어, 도 2의 210) 및 이웃하는 꼭지점들을 지정하는 인덱스들(예를 들어, 도 2의 210)을 포함할 수 있다. 일부 실시 예들에서, 소스 꼭지점의 전체 또는 거의 전체는 32MB의 청크들(435)로 메인 메모리(410)로 스트림된다. 그러나, 본 발명의 기술적 사상으로부터 벗어남 없이, 청크들(435)이 16MB 또는 64MB 등과 같이 다른 크기를 가질 수 있음이 이해될 것이다. 추가적으로, 이는 병렬화 기회를 더 제공한다. 이 단계 및 다음 단계들은 병렬적으로(즉, 동시에) 실행될 수 있다. 더욱이, 어떤 꼭지점 데이터가 현재 활성 상태인지에 대한 결정들은 온-더-플라이(on-the-fly)(즉, 실시간) 또는 소스 꼭지점 데이터가 메인 메모리(410)로 완전히 전송된 때 중 어느 하나에서 행해 질 수 있다. 즉, 활성 소스 꼭지점 데이터의 정보가 판별되고, 활성 꼭지점들의 세트(445)가 그래프 데이터 코디네이터 로직 섹션(405), 마이크로 프로세서(440), 또는 그것들 모두에 의해 처리된다.
활성 꼭지점 리스트(450)는 순서대로 처리될 수 있다. 활성 꼭지점 리스트(450)의 각 소스 꼭지점에 대하여, 에지 데이터 파일(예를 들어, 도 2의 215)에 포함된 그것의 이웃들의 바이트 오프셋(예를 들어, Offset A, Offset B 등)을 가리키는 그것의 이웃들의 인덱스가 꼭지점 데이터(445)으로부터 추출될 수 있다. 2개의 인덱스들을 읽음으로써(즉, 2개의 연속적인 꼭지점들의 인덱스를 시작함으로써), 그래프 데이터 코디네이터 섹션(405)은 꼭지점의 이웃들의 시작 및 종료 바이트 오프셋들을 추출할 수 있고, 그것들을 SSD(415)로부터 메인 메모리(410)로 460에 도시된 바와 같이 전송할 수 있다. 그 이후에, 메인 메모리(410)에 존재하는 소스 데이터(430)의 청크(예를 들어, 435)에 대하여, 그래프 처리 기법을 수행하는데 요구되는 모든 정보는 소스 데이터 청크(435)와 연관된 소스 꼭지점의 이웃 정보, 현재 구획의 목표 꼭지점들, 및 소스 꼭지점 값을 포함하여 메인 메모리(410)에 존재한다. 이는 소스 꼭지점들의 이웃 꼭지점들로의 업데이트들 전부가 메인 메모리(410)내에 존재하는 목표 꼭지점들의 세트로 발생할 수 있음을 의미한다. 즉, SSD(415)에서 이러한 동작을 수행할 때 필요할 수 있는 정렬 부담(sorting overhead) 또는 세밀한 랜덤 I/O 액세스들을 위한 요구가 제거된다.
다음으로, 그래프 처리 기법은, 455에서, 각 소스 꼭지점에 대해 수행될 수 있고, 업데이트들이 목표 꼭지점들에 대하여 생성된다. 실시 예로서, PageRank 알고리즘에서, 각 소스 꼭지점의 랭크(즉, 값)는 목표 꼭지점들로 전송된다. 랭크들은 각 꼭지점 데이터에서 누적되고, 이러한 알고리즘에 의해 지정된 인자에 의해 감쇠(예를 들어, 0.15 단위로 나뉘어짐.)된다. 현재 구획과 연관된 소스 데이터에 대한 처리(예를 들어, 455)가 완료된 경우, 이 구획(예를 들어, 구획 "P")에 대하여 업데이트된 목표 꼭지점 데이터(465)가 SSD(415)에 저장될 수 있다.
주어진 구획 "P"에 대한 실행의 각 반복 구간에서, 그래프 데이터 코디네이터 로직 섹션(405)은 이하의 동작들을 수행할 수 있다. i) SSD(415)로부터 메인 메모리(410)로 주어진 구획 "P"에 대한 꼭지점 데이터(425)를 로드하는 동작; ii) SSD(415)로부터 메인 메모리(410)로 주어진 구획 "P"에 대한 소스 꼭지점 데이터(430)를 스트림하는 동작(예를 들어, 한번에 데이터의 32MB의 청크들을 읽음으로써 스트림됨.); 및 iii) SSD(415)로부터 에지 데이터 파일(예를 들어, 도 2의 215)을 액세스함으로써, 소스 꼭지점들의 각 청크에 대한 이웃 정보(460)를 읽는 동작이 수행될 수 있다. 각 소스 꼭지점(예를 들어, Vertex "A," Vertex "B" 등)에 대한 에지 파일(215) 내의 이웃들의 오프셋들(예를 들어, Offset "A", Offset "B" 등)은 소스 꼭지점 데이터 파일(200)에 오프셋으로서 저장될 수 있다. 그래프 데이터 코디네이터 로직 섹션(405)은 그래프 처리 기법을 수행할 수 있고, 이후에 구획 "P"에 대한 목표 꼭지점들을 메인 메모리(410)에서 업데이트할 수 있다. 구획 "P"에 대한 처리가 종료된 경우, 그래프 처리 코디네이터 로직 섹션(405)은 455에서, 목표 꼭지점들을 업데이트하고, 구획 "P"에 대하여 업데이트된 목표 꼭지점들을 SSD(415)에 저장할 수 있다. 그래프 처리 코디네이터 로직 섹션(405)은 구획들 각각을 통해 이러한 단계들 각각을 실행하는 것을 반복할 수 있다. 모든 구획들이 처리된 경우, 도 4b 및 도 5를 참조하여 이하에서 설명되는 바와 같이, 그래프 처리 코디네이터 로직 섹션(405)은 각 구획에 대한 목표 꼭지점 데이터를 읽을 수 있고, 다른 구획들에 대한 대응하는 미러들을 업데이트할 수 있다.
도 4b는 본 발명의 실시 예에 따른 메인 메모리(410) 및 SSD(415) 사이의 추가 데이터(예를 들어, 470 및 475)의 처리 및 흐름, 그리고 그래픽 데이터 코디네이터 로직 섹션(405)을 포함하는 도 4a의 컴퓨팅 머신(402)의 예시적인 블록 및 순서도(404)이다. 도 5는 본 발명의 실시 예들에 따른, 복수의 소스 꼭지점 테이블들(예를 들어, 510, 515), 및 목표 꼭지점들에 대한 메타 데이터(505), 및 목표 꼭지점 테이블(100)의 예시적인 블록 및 순서도이다. 도 2, 도 4b, 및 도 5가 이하에서 참조된다.
모든 구획들(예를 들어, 도 2의 Partition "0", Partition "1" 내지 Partition "N"이 처리된 경우, 각 꼭지점에 대한 미러들(480)(즉, 복제 꼭지점들)이 도 4b에 도시된 바와 같이, 485에서 업데이트된다. 일반적으로, 각 구획(예를 들어, 도 2의 Partition "0", Partition "1" 등)에 대한 소스 꼭지점들(예를 들어, 도 2의 Vertex "A", Vertex "B" 등)은 미러 꼭지점들(예를 들어, 도 2의 225) 및 마스터 꼭지점들(예를 들어, 도 2의 230)으로 분할되고, 미러들(225)은 그것들의 구획 ID의 순서로 저장된다. 이에 따라, 모든 구획들이 제2 구획에 대응하는 미러들 전의 제1 구획에 대한 미러들(예를 들어, 255)를 저장한다. 이는 미러들(480)에 대한 순차적 업데이트들이 가능하게 한다. 다른 구획들에서 미러 꼭지점들(480)의 값을 업데이트 하기 위하여, 각 구획의 목표 꼭지점 데이터(예를 들어, 470)는 SSD(415)로부터 읽어질 수 있다. 메타 데이터로서 각 구획에 대하여 저장된 인덱스들을 기반으로, 그래프 데이터 코디네이터 로직 섹션(405)은 목표 꼭지점의 각 부분에 대한 업데이트 위치를 결정할 수 있다. 목표 꼭지점(예를 들어, 도 5의 Vertex "0")에 대해 유지되는 메타 데이터(505)는 각 꼭지점의 미러들의 구획 ID들(예를 들어, 520), 및 각 구획(예를 들어, Partition 1, Partition i 등)에 대한 오프셋(예를 들어, 도 5의 Offset A, Offset N 등)을 포함할 수 있다. 메타 데이터(505)는 다른 구획들(예를 들어, Partition 1, Partition i 등)의 각각에 대하여, 주어진 구획(예를 들어, Partition "P")에 대한 미러들(480)의 시작 인덱스(525) 및 종료 인덱스(530)를 포함할 수 있다.
도 5는 각 구획에 대한 메타 데이터 구조를 보여 준다. 도시된 데이터 구조에서, 다른 구획들(예를 들어, 도 5의 Partition 1 내지 Partition i)에 대하여 미러들(480)을 업데이트하는 것은 병렬적으로 행해 질 수 있다. 이는 데이터가 목표 꼭지점들(예를 들어, Partition "P"의 Vertex "0", Vertex "1" 등)로부터 순차적으로 읽어 지고, 각 소스 꼭지점 구획(예를 들어, Partition "1", Partition "i" 등)의 다른 오프셋들에 저장되기 때문이다. 본 발명에 따른 단계들이 반복되어 각 구획이 처리되고, 이에 따라, 다른 구획들(예를 들어, Partition "1", Partition "i" 등)에 대한 미러들(480)(예를 들어, Partition "P"의 미러)가 업데이트된다.
따라서, 주어진 구획 "P"에 대한 목표 꼭지점을 읽고, 주어진 구획 "P"에 대한 메타 데이터를 읽은 이후에, 다른 구획들에 대하여 주어진 구획 "P"의 미러들의 시작/종료 인덱스가 결정될 수 있다. 주어진 구획 "P"에 포함된 꼭지점들에 대하여, 그래프 데이터 코디네이터 로직 섹션(405)은 그것들의 미러들이 어느 구획들에 존재하는지 판별할 수 있다. 일 실시 예로서, 소스 꼭지점들이 정렬되기 때문에, 구획들로의 업데이트들은 순차적이다.
이하의 표 1은 도 4a, 도 4b, 도 5, 및 도 6에 도시된 바와 같은 미러들을 업데이트하는 의사 코드(pseudo code)를 보여준다.
Figure 112019125713452-pat00001

* P*N의 순서로 실행, P는 구획들의 개수이고, N은 그래프의 꼭지점들의 개수이다.
Figure 112019125713452-pat00002

*N의 순서로 실행, N은 그래프의 꼭지점들의 개수이다.
도 6은 본 발명의 실시 예에 따른, 메인 메모리(410) 및 SSD(415) 사이의 데이터의 좀 더 포괄적인 흐름 및 처리, 그리고 그래프 데이터 코디네이터 로직 섹션(405)을 포함하는 컴퓨팅 머신(402)의 예시적인 블록 및 흐름도(600)이다. 일부 구성들 및 연관된 참조 번호들은 앞서 상세하게 설명되었으므로, 이러란 구성 요소들에 대한 상세한 설명은 필수적으로 반복되지 않는다. 특히, 도 6에 도시된 프로세스는 도 4a 및 도 4b의 일부 요소들을 단일의 좀 더 개선된 프로세스로 조합한다. 이전의 경우에서, SSD(415)로 모든 구획들을 기입한 이후에, 각 구획은 SSD(415)로부터 읽어지고, 미러 업데이트들이 생성되고, 업데이트들은 이후에 SSD(415)로 다시 기입된다. I/O 액세스들의 개수를 감소시키기 위하여, 다른 구획들에 대한 미러 업데이트들은 SSD(415)로 각 구획을 기입하기 이전에, 685에서 온-더-플라이로 행해 질 수 있다. 특히, 각 구획(예를 들어, Partition "P")에 대한 메타 데이터(605)는 SSD(415)로 업데이트된 꼭지점 데이터를 기입하기 전에 읽어 질 수 있다. 각 단계의 반복에 대하여 다은 구획으로 이동하기 전에, 주어진 구획(예를 들어, Partition "P")과 연관된 다른 구획들(예를 들어, Partition "1", Partition "i")에 대한 미러 업데이트들은 685에서 생성될 수 있고, 다른 구획들에 대한 미러들을 포함하는 업데이트된 꼭지점 데이터의 전부는 465에서 SSD(415)로 기입될 수 있다. 도 6에 도시된 바와 같이, 이러한 방식은 도 4b에 도시된 방식과 연관된 목표 꼭지점 데이터(예를 들어, 470)의 추가적인 읽기들을 요구하지 않는다.본 발명은 외부 그래프 프로세싱에서 꼭지점 데이터에 대한 그리디 분할 기법을 제안한다. 각 구획에 대한 꼭지점 데이터는 메인 메모리에 적합하도록 충분히 작고, 이에 따라, 메인 메모리에 포함된 현재 구획에 대한 목표 꼭지점 데이터를 맞추기만 하면 된다. 데이터의 나머지는 스트리밍 방식으로 메모리에서 전송되고 처리된다. 소스 꼭지점들은 정렬된 순서로 각 구획에 대하여 저장될 수 있다. 미러들을 업데이트할 때, 모든 업데이트들은 순차적일 수 있다. 소스 꼭지점 데이터 및 에지 데이터로의 액세스들은 소스 꼭지점 데이터의 다른 청크들을 읽고 목표 꼭지점 데이터를 업데이트하는 각 쓰레드와 함께 병렬적으로(즉, 높은 수준의 병렬화가 가능함) 수행될 수 있다. 분할은 메인 프로세스 실행 이전에 수행될 수 있다. 이로 인하여, 선-처리 단계에서 한번만 발생하기 때문에 1회의 비용만 발생한다. 각 구획이 순차적인 액세스들을 가능하게 하는 데이터 구조가 본문에서 제공된다. 미러들은 각 반속의 종료 지점에서 업데이트될 수 있다. 각 구획에 대한 메타 데이터는 다른 구획들에 대한 미러들의 위치들을 추출하는데 사용될 수 있다. 목표 꼭지점 데이터는 각 구획에 대하여 읽어질 수 있고, 미러들은 병렬적으로 업데이트될 수 있다.
도 7은 본 발명의 실시 예에 따른, 그래프 데이터 코디네이터 로직 섹션(730)을 포함하는 컴퓨팅 시스템(700)의 예시적인 블록도이다. 그래프 데이터 코디네이터 로직 섹션(730)은 본문에 기재된 그래프 데이터 코디네이터 로직 섹션(405)과 동일할 수 있고, 시스템 버스(705)와 전기적으로 연결될 수 있다. 컴퓨팅 시스템(700)은 클럭(710), 랜덤 액세스 메모리(RAM) 및/또는 플래시 메모리(715), 메모리 컨트롤러(745), 사용자 인터페이스(720), 및/또는 베이스 밴드 칩셋과 같은 모뎀(725)를 포함할 수 있고, 그것들 중 일부 또는 전부는 시스템 버스(705)와 전기적으로 연결될 수 있다.
컴퓨팅 시스템(700)이 모바일 장치인 경우, 컴퓨팅 시스템(700)으로 전원을 공급하는 배터리(740)를 더 포함할 수 있다. 비록 도 7에 도시되지는 않았으나, 컴퓨팅 시스템(700)은 애플리케이션 칩셋, 카메라 이미지 프로세서(CIS), 모바일 DRAM 등을 더 포함할 수 있다. 메모리 컨트롤러(745) 및 플래시 메모리(715)는 데이터를 저장하는데 불휘발성 메모리를 사용하는 솔리드 스테이드 드라이브/디스크(SSD)를 구성할 수 있다.
예시적인 실시 예들에서, 컴퓨팅 시스템(700)은 컴퓨터, 휴대용 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷-북, PDA, 웹 태블릿, 무선 전화, 모바일폰, 스마트폰, 이-북, 휴대용 멀티미디어 플레이어(PMP; potable multimedia player), 디지털 카메라, 디지털 녹음기/재생기, 디지털 사진/비디오 녹화기/재생기, 휴대용 게임 장치, 네비게이션 시스템, 블랙 박스, 3차원 TV, 무선 환경에서 정보를 송수신하는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 통신(telematics), RFID를 구선하는 다양한 전자 장치들 중 하나, 또는 컴퓨팅 시스템을 구성하는 다양한 전자 장치들 중 하나로서 사용될 수 있다.
상술된 방법들의 다양한 동작들은 다양한 하드웨어 및/또는 소프트웨어 구성(들), 회로들, 및/또는 모듈(들)과 같이 동작들을 수행할 수 있는 적절한 수단들에 의해 수행될 수 있다.
실시 예들은 대형 그래프 처리를 분할하는 컴퓨터에서-실행되는 포함할 수 있다. 방법은, 분할 선-처리 단계에서, 각 복수의 목표 꼭지점들의 각 목표 꼭지점이 복수의 구획들 중 하나의 구획으로만 유일하게 할당되도록 복수의 목표 꼭지점들을 복수의 구획들로 할당하는 단계를 포함할 수 있다. 방법은, 메인 외부 그래프 처리 단계에서, (i) 복수의 구획들 중 목표 꼭지점들의 주어진 구획을 솔리드 스테이트 드라이브(SSD; solid state drive)로부터 컴퓨팅 머신의 메인 메모리로 로딩하는 단계; (ii) 소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 SSD로부터 컴퓨팅 머신의 메인 메모리로로 스트림하는 단계; 및 (iii) 적어도 목표 꼭지점들의 로드된 주어진 구획 및 소스 꼭지점 데이터의 스트림된 하나 또는 그 이상의 청크들을 기반으로 그래프 처리를 수행하는 단계를 포함할 수 있다.
컴퓨터에서-실행되는 방법은 적어도 소스 꼭지점 데이터의 스트림된 하나 또는 그 이상의 청크들을 기반으로 목표 꼭지점들의 로드된 주어진 구획을 업데이트하는 단계를 더 포함할 수 있다. 방법은 목표 꼭지점들의 업데이트된 구획을 메인 메모리로부터 SSD로 기입하는 단계를 더 포함할 수 있다. 방법은 목표 꼭지점들의 업데이트된 구획을 SSD로부터 메인 메모리로 로딩하는 단계를 더 포함할 수 있다. 방법은 주어진 구획과 연관된 복수의 다른 구획들에 대하여 목표 꼭지점과 연관된 미러들로의 미러 업데이트들을 생성하는 단계를 더 포함할 수 있다.
미러 업데이트들을 생성하는 단계는 구획 식별자(ID; identifier)를 기반으로 순차적으로 미러들을 업데이트하는 단계를 더 포함할 수 있다. 목표 꼭지점들의 업데이트된 구획을 기입하는 단계는 주어진 구획에 대한 미러들을 복수의 다른 구획들 각각에 순차적으로 저장하는 단계를 더 포함할 수 있다. 컴퓨팅 머신은 단일 이산 머신(single discrete machine)일 수 있다. 분할 선-처리 단계는: "u→ 관계에서 꼭지점 "v"와 연관된 꼭지점 "u"의 에지 리스트의 각 에지 "→"에 대하여, 꼭지점 "v"이 구획 "P"에 이미 할당되었는지 판별하는 단계를 더 포함할 수 있다. 꼭지점 "v"이 구획 "P"에 이미 할당된 것으로 판별된 것에 응답하여, 방법은 꼭지점 "u"이 이미 구획 "P"에 할당되었는지 판별하는 단계를 포함할 수 있다. 꼭지점 "u"이 구획 "P"에 아직 할당되지 않는 것으로 판별된 것에 응답하여, 방법은 꼭지점 "u"을 구획 "P"에 추가하는 단계를 포함할 수 있다. 분할 선-처리 단계는: 꼭지점 "v"이 구획 "P"에 아직 할당되지 않은 것에 응답하여, 꼭지점 "u"이 구획들의 세트{P1, P2, …PN}에 이미 할당되었는지 판별하는 단계를 포함할 수 있다. 꼭지점 "u"이 구획들의 세트{P1, P2, …PN}에 이미 할당된 것으로 판별된 것에 응답하여, 방법은 구획들의 세트 중 최소 개수의 에지들을 갖는 구획을 선택하는 단계, 및 선택된 구획에 꼭지점 "v"을 추가하는 단계를 포함할 수 있다.
분할 선-처리 단계는, 꼭지점 "u"이 구획들의 세트{P1, P2, …PN}에 아직 할당되지 않은 것으로 판별된 것에 응답하여, 구획들의 세트 중 최소 개수의 에지들을 포함하는 구획에 꼭지점 "u"을 할당하는 단계, 및 구획들의 세트 중 최소 개수의 에지들을 포함하는 구획에 꼭지점 "v"을 할당하는 단계를 더 포함할 수 있다. 컴퓨팅 머신은 마이크로 프로세서 및 그래프 데이터 코디네이터 로직 섹션을 포함할 수 있다. 분할 선-처리 단계는 마이크로 프로세서 및 그래프 데이터 코디네이터 로직 섹션에 의해 수행될 수 있다. 외부 그래프 처리 단계의 주 실행은 마이크로 프로세서 및 그래프 데이터 코디네이터 로직 섹션에 의해 수행될 수 있다.
일부 실시 예들은 복수의 목표 꼭지점들의 각 목표 꼭지점이 복수의 구획들 중 하나의 구획으로만 유일하게 할당되도록 분할 선-처리 단계를 수행하여 복수의 목표 꼭지점들을 복수의 구획들로 분할하도록 구성된 그래프 데이터 코디네이터 로직 섹션을 포함하는 컴퓨팅 머신을 포함한다. 그래프 데이터 코디네이터 로직 섹션은 외부 그래프 처리 단계의 메인 실행을 수행하도록 구성된다. 그래프 데이터 코디네이터 로직 섹션은 복수의 구획들 중 목표 꼭지점들의 주어진 구획을 솔리드 스테이트 드라이브(SSD; solid state drive)로부터 컴퓨팅 머신의 메인 메모리로 로드하도록 구성된다. 그래프 데이터 코디네이터 로직 섹션은 소스 꼭지점의 하나 또는 그 이상의 청크들을 SSD로부터 컴퓨팅 머신의 메인 메모리로 스트림하도록 구성된다. 그래프 데이터 코디네이터 로직 섹션은 적어도 목표 꼭지점들의 로드된 주어진 구획 및 소스 꼭지점 데이터의 스트림된 하나 또는 그 이상의 청크들을 기반으로 그래프 처리를 수행하도록 구성된다.
그래프 데이터 코디네이터 로직 섹션은 적어도 소스 꼭지점 데이터의 스트림된 하나 또는 그 이상의 청크들을 기반으로 목표 꼭지점들의 로드된 주어진 구획을 업데이트하도록 구성된다. 그래프 데이터 코디네이터 로직 섹션은 목표 꼭지점들의 업데이트된 구획을 메인 메모리로부터 SSD로 기입하도록 구성된다. 그래프 데이터 코디네이터 로직 섹션은: 목표 꼭지점들의 업데이트된 구획을 SSD로부터 메인 메모리로 로드하고; 주어진 구획과 연관된 복수의 다른 구획들에 대하여 목표 꼭지점들과 연관된 미러들로의 미러 업데이트들을 생성하도록 구성된다.
그래프 데이터 코디네이터 로직 섹션은 주어진 구획과 연관된 복수의 다른 구획들에 대하여 목표 꼭지점과 연관된 미러들로의 미러 업데이트들을 생성하고; 목표 꼭지점들의 업데이트된 구획을 메인 메모리로부터 SSD로 기입하도록 구성된다. 그래프 데이터 코디네이터 로직 섹션은 구획 식별자(ID; identifier)를 기반으로 순차적으로 미러들을 업데이트하도록 구성된다. 그래프 데이터 코디네이터 로직 섹션은 목표 꼭지점들의 업데이트된 구획을 기입하고, 복수의 다른 구획들 각각에 순차적으로 주어진 구획에 대한 미러들을 저장하도록 구성된다.
본 발명의 실시 에들과 관련되어 설명된 방법 또는 알고리즘 및 기능들의 블록들 또는 단계들은 다르웨어로 직접 구현되거나 또는 프로세서에 의해 실행되는 소프트웨어 모듈로 구현되거나 또는 그것들의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 또는 그 이상의 명령어들 또는 코드로서 유형의, 비일시적인 컴퓨터-판독 가능한 매체에 저장되거나 또는 전송될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM; Random Access Memory), 플래시 메모리, 읽기 전용 메모리(ROM; Read Only Memory), 전기적 프로그램 가능한 ROM(EPROM; Electrically Programmable ROM), 전기적 소거-가능 프로그램-가능한 ROM(EEPROM; Electrically Erasable Programmable ROM), 레지스터, 하드 디스트, 착탈식 디스크, CD ROM, 또는 본 발명의 기술 분야에서 잘 알려진 저장 매체의 다양한 형태들에 존재할 수 있다.
이하의 설명은 본 발명의 특정한 사상들이 구현될 수 있는 머신들 또는 적절한 머신(machine)의 일반적인 설명을 제공하도록 의도된다. 특히, 머신 또는 머신들은 시스템 버스에 부착된 프로세서들, 메모리, 예를 들어, RAM, ROM, 또는 다른 상태 보존 매체, 스토리지 장치들, 비도이 인터페이스, 입력/출력 인터페이스 포트들을 포함할 수 있다. 적어도 일부에서, 키보드, 마우스 등과 같은 일반적인 입력 장치로부터의 입력뿐만 아니라, 다른 머신으로부터 수신된 명령어, 가상 현실 환경(virtual reality environment), 생체 피드백, 또는 다른 입력 신호들에 의해 제어될 수 있다. 본문에서 사용된 바와 같이, "머신(machine)"의 용어는 단일 이산 머신(single discrete machine), 가상 머신, 또는 머신들, 가상 머신들 또는 함께 작동하는 장치들이 통신적으로 연결된 시스템을 넓게 아우르는 것으로 의도된다. 예시적인 머신들은 퍼스널 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨터, 소형 컴퓨터, 전화기, 태블릿 등과 같은 컴퓨팅 장치들뿐만 아니라, 대중 교통, 예를 들어, 자동차, 기차, 택시 등과 같은 운송 장치들을 포함한다.
머신 또는 머신들은 프로그램 가능하거나 또는 프로그램 불가능한 로직 장치들 또는 어레이, ASIC(Application Specific Integrated Circuit), 내장된 컴퓨터, 스마트 카드 등과 같은 내장된 컨트롤러들을 포함할 수 있다. 머신 또는 머신들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 연결 등과 같이 하나 또는 그 이상의 원격 장치들과 하나 또는 그 이상의 연결들을 활용할 수 있다. 머신들은 인트라넷, 인터넷, LAN(Local Area Network), WAN(Wide Area Network) 등과 같은 물리적 또는 논리적 네트워크 방식으로 연결될 수 있다. 당업자는 네트워크 통신이 무선 주파수(RF; Radio Frequency), 위성, 마이크로웨이브, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광, 적외선, 케이블, 레이저 등과 같은 다양한 유선 또는 무선 단파장 또는 장파장 캐리어들 및 프로토콜을 활용할 수 있음을 인지할 것이다.
본 발명의 실시 예들은 머신들에 의해 액세스될 때 머신들에 작업들을 수행하거나 또는 요약 데이터 타입들 또는 저-레벨 하드웨어 구성들을 정의하도록 하는 기능들, 절차들, 데이터 구조들, 애플리케이션 프로그램들을 포함하는 연관된 데이터를 참조하거나 또는 관련하여 설명될 수 있다. 연관된 데이터는 휘발성 또는 불휘발성 메모리(예를 들어, RAM, ROM)에 저장될 수 있거나 또는 하드 드라이브, 플로피 디스크, 광 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지틸 비디오 디스크, 생체 스토리지 등을 포함하는 연관된 스토리지 매체 및 다른 저장 장치들에 저장될 수 있다. 연관된 데이터는 물리적 또는 논리적 네트워크를 포함하는 전송 환경상에서 패킷, 직렬 데이터, 병렬 데이터, 전파 신호들 등과 같은 형태로 제공될 수 있고, 압축되거나 또는 암호화된 형식으로 사용될 수 있다. 연관된 데이터는 분산된 환경에서 사용될 수 있고, 논리적으로 또는 원격으로 장치 액세스를 위하여 저장될 수 있다.
실시 예들을 참조하여 본 발명의 이론들이 설명되었으나, 실시 예들은 본 발명의 기술적 사상으로부터의 벗어남 없이 변형될 수 있고, 다른 적절한 방식과 조합될 수 있음은 잘 이해될 것이다. 그리고, 상세한 설명이 특정 실시 예들을 집중되었으나, 다른 구성들이 고려된다. 특히, 본문에서 "본 발명의 실시 예에 따르면"과 같은 표현들이 사용되었으나, 이러한 표현들은 일반적으로, 참조 실시 예의 가능성을 의미하며, 본 발명이 특정 실시 예 구성들에 한정됨을 의미하지 않는다. 본문에 기재된 바와 같이, 이러한 용어들은 다른 실시 예들과 조합될 수 있는 동일한 또는 다른 실시 예들을 참조할 수 있다.
본 발명의 실시 예들은 하나 또는 그 이상의 프로세서들에 의해 실행될 수 있는 명령어들을 포함하는 비-일시적인 머신-판독 가능한 매체를 포함할 수 있다. 명령어들은 본 발명의 요소들을 실행하기 위한 명령어들을 포함할 수 있다.
상술된 실시 예들은 본 발명을 한정하는 것은 아니다. 비록 일부 실시 예들이 설명되었으나, 당업자는 본문의 이점들 및 새로운 특징으로부터의 벗어남 없이 본 발명의 가능한 다양한 변형을 용이하게 수행할 수 있다. 따라서, 이러한 변형들은 특허청구범위에 정의된 본 발명의 사상 내에 포함되도록 의도될 수 있다.

Claims (10)

  1. 대형 그래프 처리를 위한 그래프 데이터를 분할하는 컴퓨터-실행 가능한 방법에 있어서,
    분할 선-처리 단계에서, 제1 및 제2 목표 꼭지점들이 제1 및 제2 구획들 중 하나의 구획으로 유일하게 할당되도록 상기 제1 및 제2 목표 꼭지점들을 제1 및 제2 구획들로 할당하는 단계;
    그래프 처리 동작에서, (i) 상기 제1 및 제2 구획들 중 상기 제1 및 제2 목표 꼭지점들로 할당된 주어진 구획을 솔리드 스테이트 드라이브(SSD; solid state drive)로부터 컴퓨팅 머신의 메인 메모리로 로딩하고; (ii) 소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 상기 SSD로부터 상기 컴퓨팅 머신의 상기 메인 메모리로 스트리밍하고; (iii) 적어도 상기 제1 및 제2 목표 꼭지점들의 상기 주어진 구획 및 상기 스트리밍된 소스 꼭지점 데이터의 적어도 하나 또는 그 이상의 청크들을 기반으로 그래프 처리를 수행하는 단계;
    적어도 상기 스트리밍된 소스 꼭지점 데이터의 적어도 하나 또는 그 이상의 청크들을 기반으로 상기 제1 및 제2 목표 꼭지점들의 상기 주어진 구획을 업데이트하는 단계;
    상기 주어진 구획과 연관된 다른 구획들에 대한 미러 업데이트들을 생성하는 단계; 및
    상기 제1 및 제2 목표 꼭지점들의 업데이트된 구획을 상기 메인 메모리로부터 상기 SSD로 기입하는 단계를 포함하고,
    상기 미러 업데이트들을 생성하는 단계는 구획 식별자(ID; Identifier)를 기반으로 순차적으로 상기 미러 업데이트들을 생성하는 단계를 포함하는 컴퓨터-실행 가능한 방법.
  2. 제 1 항에 있어서,
    상기 제1 및 제2 목표 꼭지점들의 업데이트된 구획을 상기 SSD로부터 상기 메인 메모리로 로딩하는 단계를 더 포함하는 컴퓨터-실행 가능한 방법.
  3. 제 1 항에 있어서,
    상기 제1 및 제2 목표 꼭지점들의 업데이트된 구획을 기입하는 단계는:
    상기 다른 구획들에 순차적으로 상기 주어진 구획에 대한 상기 미러 업데이트들을 저장하는 단계를 포함하는 컴퓨터-실행 가능한 방법.
  4. 제 1 항에 있어서,
    상기 컴퓨팅 머신은 단일 머신인 컴퓨터-실행 가능한 방법.
  5. 제 1 항에 있어서,
    상기 컴퓨팅 머신은 마이크로프로세서 및 그래프 데이터 코디네이터 로직부를 포함하고,
    상기 분할 선-처리 단계는 상기 마이크로프로세서 및 상기 그래프 데이터 코디네이터 로직부에 의해 수행되는 컴퓨터-실행 가능한 방법.
  6. 제 1 항에 있어서,
    상기 컴퓨팅 머신은 마이크로프로세서 및 그래프 데이터 코디네이터 로직부를 포함하고,
    상기 그래프 처리 동작은 상기 마이크로프로세서 및 상기 그래프 데이터 코디네이터 로직부에 의해 수행되는 컴퓨터-실행 가능한 방법.
  7. 대형 그래프 처리를 위한 그래프 데이터를 분할하는 컴퓨터-실행 가능한 방법에 있어서,
    분할 선-처리 단계에서, 제1 및 제2 목표 꼭지점들이 제1 및 제2 구획들 중 하나의 구획으로 유일하게 할당되도록 상기 제1 및 제2 목표 꼭지점들을 제1 및 제2 구획들로 할당하는 단계; 및
    그래프 처리 동작에서, (i) 상기 제1 및 제2 구획들 중 상기 제1 및 제2 목표 꼭지점들이 할당된 주어진 구획을 솔리드 스테이트 드라이브(SSD; solid state drive)로부터 컴퓨팅 머신의 메인 메모리로 로딩하고; (ii) 소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 상기 SSD로부터 상기 컴퓨팅 머신의 상기 메인 메모리로 스트리밍하고; (iii) 적어도 상기 제1 및 제2 목표 꼭지점들의 상기 주어진 구획 및 상기 스트리밍된 소스 꼭지점 데이터의 적어도 하나 또는 그 이상의 청크들을 기반으로 그래프 처리를 수행하는 단계를 포함하고,
    상기 분할 선-처리 단계는:
    "u→v"의 관계에서 꼭지점 "u"가 꼭지점 "v"와 연관되는 에지 리스트의 각 에지 "→"에 대하여, 상기 꼭지점 "v"이 구획 "P"에 이미 할당되었는지 판별하는 단계;
    상기 꼭지점 "v"가 상기 구획 "P"에 이미 할당된 것으로 판별된 것에 응답하여, 상기 꼭지점 "u"이 상기 구획 "P"에 이미 존재하는지 판별하는 단계; 및
    상기 꼭지점 "u"이 상기 구획 "P"에 이미 존재하지 않는 것으로 판별된 것에 응답하여, 상기 꼭지점 "u"을 상기 구획 "P"에 추가하는 단계를 포함하는 컴퓨터-실행 가능한 방법.
  8. 제 7 항에 있어서,
    상기 분할 선-처리 단계는:
    상기 꼭지점 "v"이 상기 구획 "P"에 아직 할당되지 않은 것으로 판별된 것에 응답하여, 상기 꼭지점 "u"이 구획들의 세트 {P1~PN}에 이미 할당되었는지 판별하는 단계; 및
    상기 꼭지점 "u"이 상기 구획들의 세트 {P1~PN}에 이미 할당된 것으로 판별된 것에 응답하여, 상기 구획들의 세트 중 최소 에지들을 갖는 구획을 선택하고, 상기 꼭지점 "v"을 상기 선택된 구획에 추가하는 단계를 더 포함하는 컴퓨터-실행 가능한 방법.
  9. 제 8 항에 있어서,
    상기 분할 선-처리 단계는:
    상기 꼭지점 "u"이 상기 구획들의 세트 {P1~PN}에 아직 할당되지 않은 것으로 판별된 것에 응답하여, 상기 꼭지점 "u"을 상기 구획들의 세트 중 상기 최소 에지들을 갖는 상기 구획으로 할당하고, 상기 꼭지점 "v"을 상기 구획들의 세트 중 상기 최소 에지들을 갖는 상기 구획으로 할당하는 단계를 더 포함하는 컴퓨터-실행 가능한 방법.
  10. 컴퓨팅 머신에 있어서,
    마이크로프로세서;
    분할 선-처리 단계를 수행하여, 제1 및 제2 목표 꼭지점들이 제1 및 제2 구획들 중 하나의 구획으로 유일하게 할당되도록, 상기 제1 및 제2 목표 꼭지점들을 상기 제1 및 제2 구획들로 할당하도록 구성된 그래프 데이터 코디네이터 로직부를 포함하고,
    상기 그래프 데이터 코디네이터 로직부는:
    그래프 처리 동작을 수행하고;
    상기 제1 및 제2 구획들 중 상기 제1 및 제2 목표 꼭지점들이 할당된 주어진 구획을 솔리드 스테이트 드라이브(SSD; solid state drive)로부터 상기 컴퓨팅 머신의 메인 메모리로 로딩하고;
    소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 상기 SSD로부터 상기 컴퓨팅 머신의 상기 메인 메모리로 스트리밍하고;
    적어도 상기 제1 및 제2 목표 꼭지점들의 주어진 구획 및 상기 스트리밍된 소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 기반으로 그래프 처리를 수행하고;
    적어도 상기 스트리밍된 소스 꼭지점 데이터의 하나 또는 그 이상의 청크들을 기반으로 상기 제1 및 제2 목표 꼭지점들의 주어진 구획을 업데이트하고;
    상기 주어진 구획과 연관된 다른 구획들에 대한 미러 업데이트들을 생성하는 단계;
    상기 제1 및 제2 목표 꼭지점들의 업데이트된 구획을 상기 메인 메모리로부터 상기 SSD로 기입하고;
    구획 식별자(ID; identifier)를 기반으로 순차적으로 상기 미러 업데이트들을 생성하도록 구성된 컴퓨팅 머신.

KR1020190160433A 2018-12-07 2019-12-05 대형 그래프 처리를 위한 그래프 데이터 분할 KR102535666B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862777051P 2018-12-07 2018-12-07
US62/777,051 2018-12-07
US16/255,815 2019-01-23
US16/255,815 US11126359B2 (en) 2018-12-07 2019-01-23 Partitioning graph data for large scale graph processing

Publications (2)

Publication Number Publication Date
KR20200070116A KR20200070116A (ko) 2020-06-17
KR102535666B1 true KR102535666B1 (ko) 2023-05-23

Family

ID=70971808

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190160433A KR102535666B1 (ko) 2018-12-07 2019-12-05 대형 그래프 처리를 위한 그래프 데이터 분할

Country Status (3)

Country Link
US (1) US11126359B2 (ko)
KR (1) KR102535666B1 (ko)
CN (1) CN111292225B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210024751A (ko) * 2019-08-26 2021-03-08 에스케이하이닉스 주식회사 이종 메모리 장치를 포함하는 그래프 처리 시스템 및 그래프 처리 시스템의 동작방법
CN113282774A (zh) * 2021-05-06 2021-08-20 天津大学深圳研究院 一种新型图数据库的存储内图划分方法
KR20240014841A (ko) 2022-07-26 2024-02-02 광운대학교 산학협력단 엣지 디바이스 간 워크로드 분산 방법
US11782982B1 (en) * 2023-02-28 2023-10-10 Intuit, Inc. Offset-based watermarks for data stream processing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108132838A (zh) 2016-11-30 2018-06-08 华为技术有限公司 一种图数据处理的方法、装置及系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112011106060T5 (de) * 2011-12-28 2014-12-04 Intel Corp. Verfahren und Vorrichtung zum Verteilen von Code- und Datenspeicherungen zwischen flüchtigem und nichtflüchtigem Speicher
US10198834B2 (en) 2013-04-29 2019-02-05 Microsoft Technology Licensing, Llc Graph partitioning for massive scale graphs
GB2515537A (en) * 2013-06-27 2014-12-31 Ibm Backup management for a plurality of logical partitions
EP2950507A1 (en) * 2014-05-28 2015-12-02 Fujitsu Limited Method and system for storing distributed graph data
US9734607B2 (en) 2014-09-10 2017-08-15 Oracle International Corporation Graph processing using a mutable multilevel graph representation
US10810179B2 (en) 2015-09-25 2020-10-20 Microsoft Technology Licensing, Llc Distributed graph database
US10635546B2 (en) * 2017-12-07 2020-04-28 Commvault Systems, Inc. Synthesizing a restore image from one or more secondary copies to facilitate data restore operations to a file server
CN107957962A (zh) * 2017-12-19 2018-04-24 重庆大学 一种面向大图计算高效图划分方法与系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108132838A (zh) 2016-11-30 2018-06-08 华为技术有限公司 一种图数据处理的方法、装置及系统

Also Published As

Publication number Publication date
CN111292225B (zh) 2022-05-31
CN111292225A (zh) 2020-06-16
US20200183604A1 (en) 2020-06-11
US11126359B2 (en) 2021-09-21
KR20200070116A (ko) 2020-06-17

Similar Documents

Publication Publication Date Title
KR102535666B1 (ko) 대형 그래프 처리를 위한 그래프 데이터 분할
US11082206B2 (en) Layout-independent cryptographic stamp of a distributed dataset
US10176092B2 (en) System and method for executing data processing tasks using resilient distributed datasets (RDDs) in a storage device
US10101916B2 (en) Optimized data placement for individual file accesses on deduplication-enabled sequential storage systems
US11874815B2 (en) Key-value storage device and method of operating the same
US10303797B1 (en) Clustering files in deduplication systems
KR102509913B1 (ko) 최대화된 중복 제거 메모리를 위한 방법 및 장치
US9973210B1 (en) Reduction of execution stalls of LZ4 decompression via parallelization
US10409520B1 (en) Replication of content-based storage using address space slices
CN104133775A (zh) 一种用于管理存储器的方法和装置
US20150074360A1 (en) Scheduler for memory
CN110851436B (zh) 具有虚拟编索引的分布式搜索框架
CN115756312A (zh) 数据访问系统、数据访问方法和存储介质
CN112579595A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN104035822A (zh) 一种低开销的高效内存去冗余方法及系统
US11726743B2 (en) Merging multiple sorted lists in a distributed computing system
US10929239B2 (en) Storage system with snapshot group merge functionality
US20220129430A1 (en) Optimizing storage and retrieval of compressed data
US20240070120A1 (en) Data processing method and apparatus
CN105426119A (zh) 一种存储设备及数据处理方法
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
CN112764662B (zh) 用于存储管理的方法、设备和计算机程序产品
CN114297196A (zh) 元数据存储方法、装置、电子设备及存储介质
CN114115734A (zh) 一种数据重删方法、装置、设备及存储介质
KR20220006458A (ko) 키-밸류 저장 장치 및 키 분류 방법

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