KR102479261B1 - 맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치 - Google Patents

맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치 Download PDF

Info

Publication number
KR102479261B1
KR102479261B1 KR1020220007437A KR20220007437A KR102479261B1 KR 102479261 B1 KR102479261 B1 KR 102479261B1 KR 1020220007437 A KR1020220007437 A KR 1020220007437A KR 20220007437 A KR20220007437 A KR 20220007437A KR 102479261 B1 KR102479261 B1 KR 102479261B1
Authority
KR
South Korea
Prior art keywords
query
value
lod
query result
result
Prior art date
Application number
KR1020220007437A
Other languages
English (en)
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 한국과학기술정보연구원
Priority to KR1020220007437A priority Critical patent/KR102479261B1/ko
Application granted granted Critical
Publication of KR102479261B1 publication Critical patent/KR102479261B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results

Abstract

복수의 매퍼와 리듀스를 이용하여 대량의 LOD 쿼리 결과를 복원하는 방법 및 그 장치가 제공된다. 본 개시의 일 실시예에 따른 쿼리 결과 복원 방법은 대량의 LOD 쿼리 결과를 복수의 리듀서가 나누어 처리함으로써 복원 시간을 효과적으로 단축시킬 수 있다. 또한 본 개시의 다른 실시예에 따른 쿼리 결과 복원 방법은 쿼리 ID를 기준으로 쿼리 결과와 그에 필요한 ID 매핑 정보를 그룹핑함으로써 쿼리 결과의 복원에 필요한 ID 매핑 정보만을 기초로 리버스 ID 매핑 테이블로 생성하고, 상기 생성된 리버스 ID 매핑 테이블을 사용하여 쿼리 결과를 복원함으로써 테이블 크기로 인한 검색 시간 및 메모리 오버헤드를 효과적으로 단축시킬 수 있다.

Description

맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치{METHOD FOR RESTORING HUGE LOD QUERY RESULT USING MAPREDUCE AND APPARATUS THEREOF}
본 개시는 맵리듀스 기반의 대량의 LOD 쿼리에 대한 결과를 복원하는 방법 및 그 장치에 관한 것이다. 보다 자세하게는 복수의 매퍼(mapper)와 리듀서(reducer)를 이용하여 쿼리 결과에 대응되는 LOD 값을 빠르고 효율적으로 복원하는 방법 및 이를 수행하는 장치에 관한 것이다.
LOD(Linked Open Data)는 주어(Subject), 서술어(Predicate), 목적어(Object)로 구성된 트리플(Triple) 구조를 갖는 데이터이다. LOD의 주요 특징은 자원에 대한 고유 식별을 위해 각 자원에 URI(Uniform Resource Identifier)를 부여하는 것이므로 트리플의 각 요소인 주어, 서술어, 목적어 자리에는 URI, 리터럴(Literal), 빈 노드(Blank node)가 위치할 수 있다. 트리플을 구성하는 URI와 리터럴은 많은 수의 문자(Character)를 가진 문자열 형태로 저장되는데, 이로 인해 데이터의 저장 비용, 조인 비용, 그리고 분산 환경에서의 통신 비용을 발생시키는 주요 요소가 된다. 따라서, 대다수의 LOD 저장소들은 주로 원본 LOD 데이터를 축약된 고유 ID로 저장하는 방법을 사용하여 저장하고 있다.
종래 기술인 RDF-3X는 가장 기본적인 ID 매핑 방법을 사용하는데, 트리플들을 주어, 서술어, 목적어로 나누어 각 자리에 위치한 URI, 리터럴, 빈노드를 추출하고, 추출된 중복이 없는 값들에 대해서 고유 정수형 ID가 부여되며, 값과 고유 ID 값이 ID 매핑 테이블에 저장된다. 구체적으로, 추출된 값이 ID 매핑 테이블에 있는 경우 해당 값에 해당하는 ID로 치환되고 추출된 값이 테이블에 없는 경우 테이블의 최대 ID에서 1을 증가시켜 고유 새로운 ID가 부여된 후 값이 ID로 치환되고, 값과 고유 ID가 테이블에 저장된다.
또 다른 종래 기술인 TripleBit은 트리플의 값과 ID를 하나의 매핑 테이블에 저장하는 것이 아닌, 값을 Prefix와 Suffix로 나누어 여러 ID 매핑 테이블에 저장하는 방법을 사용한다.
RDF-3X, TripleBit 등 종래 기술들은 트리플의 값과 매핑되는 ID를 테이블에 저장하여, 저장한 ID 매핑 테이블들을 사용하여 LOD 데이터를 변환하는 방법을 사용하나, 단일 노드 환경(Single machine)이기 때문에 대량의 LOD 데이터에 대해 변환할 경우, 모든 LOD 값과 고유 ID를 제한된 메모리에 저장하게 되어 메모리 부족 문제가 발생할 수 있다. 또한, 해당 기술들을 분산 노드 환경(Multiple machines)에서 수행한다고 해도, 분산된 노드 간에 값과 ID를 공유할 수 없기 때문에 ID가 중복되는 문제가 발생할 수 있다.
한편, LOD 데이터를 축약된 고유 ID로 변환하는 과정과 마찬가지로 단일 노드 환경 또는 분산 노드 환경에서 고유 ID로 치환된 LOD 데이터를 다시 복원하는 경우에도 모든 값과 ID를 매핑 테이블에 저장하게 되면 테이블 크기로 인한 복원 시간 및 메모리 오버헤드 문제가 발생할 수 있다.
결론적으로 고유 ID로 치환된 기존의 LOD 데이터를 다시 복원하는 과정에서 수반되는 복원 시간 및 메모리 오버헤드의 이슈를 해결하는 기술이 요구된다.
미국 등록특허 제9569486호
본 개시의 일 실시예를 통해 해결하고자 하는 기술적 과제는 대량의 LOD 쿼리의 결과에 대응되는 LOD 값을 빠르게 복원하는 방법 및 그 방법이 수행되는 장치를 제공하는 것이다.
본 개시의 일 실시예를 통해 해결하고자 하는 다른 기술적 과제는 쿼리 결과 복원에 필요한 정보만을 포함하는 복원 참조 데이터가 생성되는 방법 및 그 장치를 제공하는 것이다.
본 개시의 일 실시예를 통해 해결하고자 하는 또 다른 기술적 과제는 쿼리 ID를 기준으로 쿼리 결과와 상기 쿼리 결과에 포함된 ID의 매핑 정보가 그룹핑되는 방법 및 그 장치를 제공하는 것이다.
본 개시의 일 실시예를 통해 해결하고자 하는 또 다른 기술적 과제는 쿼리에 대한 결과의 복원에 필요한 정보만을 포함하는 리버스 ID 매핑 테이블이 생성되는 방법 및 그 장치를 제공하는 것이다.
본 개시의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 개시의 일 실시예에 따른 대량 LOD 쿼리 결과 복원 방법은, 쿼리(query)에 대한 응답으로서 쿼리 결과를 획득하는 단계와 상기 쿼리 결과와 ID 매핑 테이블을 이용하여, 상기 쿼리 결과의 복원에 필요한 ID와 상기 ID에 매핑된 값이 포함된 복원 참조 데이터를 획득하는 단 및 상기 복원 참조 데이터를 이용하여 상기 쿼리 결과에 대응되는 LOD(Linked Open Data) 값을 복원하는 단계를 포함할 수 있다. 이 때, 상기 쿼리 결과는, ID의 형태로 변환된 일부의 LOD 값을 포함하는 것일 수 있다.
일 실시예에서, 상기 복원 참조 데이터를 획득하는 단계는, 복수의 매퍼(mapper)를 이용하여 제1 중간 결과를 생성하되, 상기 매퍼가 상기 쿼리 결과를 입력 받은 경우, 행의 각 컬럼을 기준으로 상기 쿼리 결과를 분할하여 <키, 밸류>의 쌍으로 구성된 제1 중간 결과를 생성하는 단계를 포함할 수 있다. 이 때, 상기 키는 상기 ID이고, 상기 밸류는 상기 ID가 속한 쿼리 ID일 수 있다.
일 실시예에서, 상기 복원 참조 데이터를 획득하는 단계는, 상기 매퍼가 상기 ID 매핑 테이블을 입력받은 경우 <키, 밸류>의 쌍으로 구성된 제1 중간 결과를 생성하는 단계와 복수의 리듀서를 이용하여 상기 제1 중간 결과를 기반으로 복원 참조 데이터를 생성하는 단계를 더 포함할 수 있다. 이 때, 상기 키는 상기 ID이고 상기 밸류는 상기 ID에 매핑된 값일 수 있다.
일 실시예에서, 상기 복원 참조 데이터를 생성하는 단계는, 상기 제1 중간 결과의 키를 기준으로 그룹핑된 데이터를 상기 리듀서가 전달받는 단계와 상기 리듀서가 상기 그룹핑된 데이터에 쿼리 ID가 포함되어 있는지 여부를 판단할 수 있고, 상기 그룹핑된 데이터에 상기 쿼리 ID가 포함되어 있지 않은 경우, 전달받은 상기 그룹핑된 데이터를 제거하는 단계를 포함할 수 있다.
일 실시예에서, 상기 복원 참조 데이터를 생성하는 단계는, 상기 그룹핑된 데이터에 상기 쿼리 ID가 포함되어 있는 경우, 상기 ID, 상기 쿼리 ID 및 상기 ID에 매핑된 값으로 구성된 데이터를 상기 복원 참조 데이터로서 생성하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 LOD 값을 복원하는 단계는, 복수의 매퍼를 이용하여 제2 중간 결과를 생성하되, 상기 매퍼가 쿼리 결과를 입력 받은 경우, <키, 밸류>의 쌍으로 구성된 제2 중간 결과를 생성하는 단계를 포함할 수 있다. 이 때, 상기 키는 상기 쿼리 ID이고, 상기 밸류는 상기 쿼리 결과일 수 있다.
일 실시예에서, 상기 LOD 값을 복원하는 단계는, 복수의 매퍼를 이용하여 제2 중간 결과를 생성하되, 상기 매퍼가 상기 복원 참조 데이터를 입력받은 경우, <키, 밸류>의 쌍으로 구성된 제2 중간 결과를 생성하는 단계와 복수의 리듀서를 이용하여 상기 제2 중간 결과를 기반으로 상기 쿼리 결과를 복원하는 단계를 더 포함할 수 있다. 이 때, 상기 키는 상기 쿼리 ID이고, 상기 밸류는 상기 ID와 상기 ID에 매핑된 값일 수 있다.
일 실시예에서, 상기 쿼리 결과를 복원하는 단계는, 상기 리듀서가 상기 제2 중간 결과의 키를 기준으로 그룹핑된 데이터를 전달받는 단계와 상기 리듀서가 상기 그룹핑된 데이터를 이용하여 리버스 ID 매핑 테이블을 생성하는 단계 및 상기 리듀서가 상기 리버스 ID 매핑 테이블을 이용하여 복원된 최종 결과를 생성하는 단계를 포함할 수 있다.
상기의 기술적 과제를 해결하기 위한 본 개시의 일 실시예에 따른 대량 LOD 쿼리 결과 복원 장치는 프로세서, 메모리를 포함하는 컴퓨팅 장치로서 상기 메모리는 명령어를 저장할 수 있고, 상기 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 쿼리에 대한 응답으로서 쿼리 결과를 획득하는 단계와 상기 쿼리 결과와 ID 매핑 테이블을 이용하여 상기 쿼리 결과의 복원에 필요한 ID와 상기 ID에 매핑된 값이 포함된 복원 참조 데이터를 획득하는 단계 및 상기 복원 참조 데이터를 이용하여 상기 쿼리 결과의 LOD 값을 복원하는 단계를 포함할 수 있다. 이 때, 상기 쿼리 결과는, ID 형태로 변환된 일부의 LOD 값을 포함하는 것일 수 있다.
본 개시에 따르면, 대량 LOD 쿼리에 대한 결과를 복수의 리듀서가 나누어 처리함으로써 쿼리 결과의 복원 시간을 단축시킬 수 있다.
또한, 본 개시에 따르면, 쿼리 ID를 기준으로 쿼리 결과와 그에 필요한 ID 매핑 정보가 그룹핑되어 리버스 ID 매핑 테이블이 생성됨으로써 테이블의 크기로 인한 검색 시간 및 메모리 오버헤드를 감소시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법을 나타내는 순서도이다.
도 2는 본 개시의 몇몇 실시예들에서 참조되는 ID 매핑 테이블 및 리버스 ID 매핑 테이블을 설명하기 위한 예시도이다.
도 3은 도 1에 도시된 일부 동작의 세부 프로세스를 설명하기 위한 예시적인 흐름도이다.
도 4는 도 3에 도시된 일부 동작의 세부 프로세스를 설명하기 위한 예시적인 흐름도이다.
도 5는 도 4에 도시된 일부 동작의 세부 프로세스를 설명하기 위한 예시도이다.
도 6은 도 3에 도시된 일부 동작의 세부 프로세스를 설명하기 위한 예시적인 흐름도이다.
도 7은 도 6에 도시된 일부 동작의 세부 프로세스를 설명하기 위한 예시도이다.
도 8은 도 7에 도시된 일부 동작의 세부 프로세스를 설명하기 위한 예시도이다.
도 9는 본 개시의 다양한 실시예에 따른 장치를 구현할 수 있는 예시적인 컴퓨팅 장치를 도시한다.
이하, 첨부된 도면을 참조하여 본 개시의 바람직한 실시예들을 상세히 설명한다. 본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 개시의 기술적 사상을 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 본 개시의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐를 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 도는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 개시를 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형을 포함한다.
또한, 본 개시의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합", "접속"될 수도 있다고 이해되어야 할 것이다.
본 개시에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 명세서에 대한 설명에 앞서, 본 명세서에서 사용되는 몇몇 용어들에 대하여 명확하게 하기로 한다.
본 명세서에서, LOD(Linked Open Data)는 주어(Subject), 서술어(Predicate), 목적어(Object)로 구성된 트리플(Triple) 구조를 갖는 데이터이다. 상기 LOD가 가지는 주요한 특징은 자원에 대한 고유 식별을 위해 각 자원에 URI를 부여하는 것이므로 트리플의 각 요소인 주어, 서술어, 목적어의 자리에는 URI(Uniform Resource Identifier), 리터럴(Literal), 빈 노드(Black node)가 위치할 수 있다. 한편, 트리플을 구성하는 URI와 리터럴은 많은 수의 문자(Character)를 가진 문자열 형태로 저장될 수 있고, 이로 인하여 데이터의 저장 비용, 조인 비용 등을 발생시킬 수 있다. 예를 들어, {mdb: film/2014 rdfs:label "The Shining"}으로 구성된 LOD는 문자열 형태의 주어(mdb:film/2014), 서술어(rdfs:label), 목적어("The Shining")로 구성된 트리플 구조를 갖는다.
본 명세서에서, ID는 LOD를 구성하는 문자열 형태 각각에 대응하여 매핑되는 것으로, 상기 ID는 정수 형태의 ID일 수 있다. 문자열 형태의 리터럴 및 URI가 포함된 LOD 데이터에 있어서, 데이터의 저장 비용 등이 발생되므로 대부분의 LOD 저장소들은 주로 원본 LOD 데이터를 축약된 고유 ID로 저장하는 방법을 사용하고 있다. 예를 들어, LOD 저장소는 {mdb: film/2014 rdfs:label "The Shining"}으로 구성된 LOD를 저장함에 있어서, 주어인 "mdb:film/2014"에는 "0"의 고유 ID를 부여하고, 서술어인 "rdfs;label"에는 "1"의 고유 ID를 부여하고, 목적어인 ""The Shining""에는 "2"의 고유 ID를 부여할 수 있다. 이를 통해, {mdb: film/2014 rdfs:label "The Shining"}으로 구성된 LOD가 {0, 1, 2}의 정수 기반 ID의 형태로 변환되어 저장될 수 있다.
본 명세서에서, ID 매핑 테이블은 상기 LOD 데이터의 일부 구성과 상기 LOD 데이터의 일부 구성에 부여된 정수 기반의 고유 ID를 저장한 테이블일 수 있다. 상기 ID 매핑 테이블은 해시 기반 ID 매핑 테이블일 수 있고, 상기 LOD 데이터의 일부 구성인 주어, 서술어, 목적어 값이 해시 키(Key)로, 상기 값에 매핑되는 정수 기반 ID가 밸류(Value)로 저장될 수 있다.
본 명세서에서, ID에 매핑된 값이란 원본 LOD 데이터의 일부 구성인 문자열 형태의 주어, 서술어, 목적어 중 어느 하나를 의미할 수 있다. 또한, 쿼리 결과에 대응되는 LOD 값이란 정수 기반 ID 형태의 쿼리 결과와 매핑되어 있는 문자열 형태의 주어, 서술어, 목적어 중 어느 하나를 의미하는 것으로, 원본 LOD 데이터의 일부라는 점에서 원본 LOD 데이터와 구분될 수 있다.
이하, 본 개시의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
먼저, 본 개시의 일 실시예에 따른 LOD 쿼리에 대한 결과 복원 방법에 대하여 도 1을 참조하여 설명한다.
도 1에 도시된 바와 같이, 상기 맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법은 컴퓨팅 장치가 사용자의 쿼리 요청에 대한 응답으로 쿼리 결과를 획득하는 단계 S100에서 시작된다. 상기 쿼리 결과는 하나 이상의 ID 값으로 구성된다. 상기 ID 값은 복원의 대상인 쿼리 결과 LOD 값에 대응되는 것이다. 상기 ID 값은, ID 매핑 테이블을 구성하는 ID 값들 중의 일부에 해당한다. 상기 ID는 정수의 값을 가질 수 있다.
단계 S200에서, 단계 S100에서 획득된 쿼리 결과를 이용하여 복원 참조 데이터가 획득될 수 있다. 본 단계의 세부 프로세스에 대해서는 도 3 내지 도 5을 참조하여 후술하도록 한다.
단계 S300에서, 단계 S200을 통해 획득된 복원 참조 데이터를 이용하여 쿼리 결과에 대응되는 LOD 값이 복원될 수 있다. 본 단계의 세부 프로세스에 대해서는 도 3 및 도 6 내지 도 8을 참조하여 후술하도록 한다.
도 2는 LOD 데이터가 ID로 변환되는 과정에 사용되는 ID 매핑 테이블 및 축약된 고유 ID로 변환된 LOD 데이터가 기존의 LOD 데이터로 복원되는 과정에 사용되는 리버스 ID 매핑 테이블을 설명하기 위한 예시도이다. LOD 데이터를 ID로 변환하는 과정에서 ID 매핑 테이블(1000)이 생성될 수 있다. ID 매핑 테이블(1000)에는 LOD 데이터를 구성하는 주어, 서술어, 목적어 값으로 구성된 키(Key)와, 상기 값과 매핑된 ID인 밸류(Value)가 포함될 수 있다. ID 매핑 테이블(1000)은 해시 기반의 ID 매핑 테이블일 수 있고, LOD 데이터가 정수 기반의 ID 형태로 변환될 수 있다.
예를 들어, 해시 기반 ID 매핑 테이블에는 LOD 데이터를 구성하는 "variable"이 해시 키로, "variable"이 매핑되는 "0"이 밸류로 저장될 수 있다. 마찬가지로, 해시 기반 ID 매핑 테이블에는 LOD 데이터를 구성하는 "ub:name", "author1" 및 "Kim"이 해시 키로, "ub:name", "author1" 및 "Kim"각각에 매핑되는 "5", "30" 및 "31"이 밸류로 각각 저장될 수 있다.
다음으로, 축약된 고유 ID가 기존의 LOD 데이터로 변환되는 과정에서 리버스 ID 매핑 테이블(2000)이 생성될 수 있다. 상기 리버스 ID 매핑 테이블(2000)에는 LOD 데이터를 구성하는 주어, 서술어, 목적어 값에 매핑되는 ID로 구성된 키(Key)와, 상기 ID에 매핑된 값인 밸류(Value)가 포함될 수 있다. 리버스 ID 매핑 테이블(2000)은 해시 기반의 리버스 ID 매핑 테이블일 수 있고, ID는 정수 기반의 데이터일 수 있다.
예를 들어, 해시 기반 리버스 ID 매핑 테이블에는 LOD 데이터를 구성하는 "variable"에 매핑된 ID 값인 "0"이 해시 키로, "0"에 매핑된 값 "variable"이 밸류로 저장될 수 있다. 마찬가지로, 해시 기반 리버스 ID 매핑 테이블에는 ID 값인 "5", "30" 및 "31"이 해시 키로, 각각의 ID에 매핑된 LOD 구성 데이터인 "ub:name", "author1" 및 "Kim"이 밸류로 각각 저장될 수 있다.
도 2에 도시된 원본 LOD 데이터의 일부 구성(1100)을 참조하면 LOD 데이터를 구성하는 주어(author1), 서술어(ub:name), 목적어(Kim)로 구성된 {author1 ub:name Kim}은 상기 해시 기반 ID 매핑 테이블을 통해 {30, 5, 31}으로 변환될 수 있고, 도 2에 도시된 2100을 참조하면 쿼리 결과로 획득한 {30, 5, 31}은 상기 해시 기반 리버스 ID 매핑 테이블을 통해 쿼리 결과에 대응되는 LOD 데이터인 {author1 ub:name Kim}으로 복원될 수 있다.
이하에서는. 도 3을 참조하여 복원 참조 데이터가 획득되는 단계 S200의 세부 프로세스 및 쿼리 결과에 대응되는 LOD 값이 복원되는 단계 S300의 세부 프로세스에 대해 설명하도록 한다.
도 3에 도시된 바와 같이, 단계 S200은 복수의 매퍼(Mapper)가 상기 쿼리 결과를 이용하여 제1 중간 결과를 생성하는 단계(S210) 및 복수의 리듀서(Reducer)가 상기 제1 중간 결과를 이용하여 복원 참조 데이터를 생성하는 단계(S220)을 포함할 수 있다. 또한, 단계 S300은 복수의 매퍼가 복원 참조 데이터를 이용하여 제2 중간 결과를 생성하는 단계(S310) 및 복수의 리듀서가 상기 제2 중간 결과를 이용하여 쿼리 결과를 복원하는 단계(S320)를 포함할 수 있다. 각각의 단계에서의 세부 프로세스에 대한 자세한 설명은 도 4 내지 도 8에서 후술하도록 한다.
도 4는 복원 참조 데이터가 획득되는 단계 S200의 세부 프로세스를 나타내는 예시적인 흐름도이다. 단, 이는 본 개시의 목적을 달성하기 위한 바람직한 실시예일 뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있음은 물론이다.
도 4에 도시된 바와 같이, 단계 S211에서 매퍼가 쿼리 결과를 입력 받을 수 있고, 단계 S212에서 매퍼는 상기 쿼리 결과의 행의 각 컬럼을 기준으로 상기 쿼리 결과를 분할하여 <키, 밸류>의 쌍으로 구성된 제1 중간 결과를 생성할 수 있다. 이 때, 상기 키는 ID일 수 있고, 상기 밸류는 상기 ID가 속한 쿼리 ID일 수 있다. 한편, 단계 S213에서 매퍼가 ID 매핑 테이블을 입력 받을 수 있고, 단계 S214에서 매퍼는 상기 ID 매핑 테이블을 이용하여 <키, 밸류>의 쌍으로 구성된 제1 중간 결과를 생성할 수 있다. 이 때, 상기 키는 ID일 수 있고, 상기 밸류는 상기 ID에 매핑된 값일 수 있다.
단계 S210을 통해 생성된 제1 중간 결과를 이용하여 복원 참조 데이터가 획득되는 단계 S220의 이전에 상기 제1 중간 결과의 키 값이 동일한 제1 중간 결과끼리 그룹핑되고, 상기 그룹핑된 데이터를 리듀서가 전달받는 단계(S200a)가 포함될 수 있다.
단계 S220은 상기 리듀서가 상기 그룹핑된 데이터에 쿼리 ID가 포함되어 있는지 여부를 판단하는 단계(S221)를 포함할 수 있다. 상기 리듀서가 상기 그룹핑된 데이터에 상기 쿼리 ID가 포함되어 있지 않다는 판단에 응답하여 상기 그룹핑된 데이터를 제거하는 단계(S222)를 포함할 수 있다. 상기 리듀서가 상기 그룹핑된 데이터에 상기 쿼리 ID가 포함되어 있다는 판단에 응답하여 ID, 쿼리 ID 및 ID에 매핑된 값으로 구성된 데이터를 생성하는 단계(S223)을 포함할 수 있다. 마지막으로, 단계 S224에서 쿼리 결과 복원에 필요한 복원 참조 데이터가 획득될 수 있고, 상기 복원 참조 데이터에는 ID 매핑 테이블에 저장된 데이터 중 복원에 필요한 일부 구성이 포함될 수 있다.
도 5는 복원 참조 데이터가 획득되는 단계 S200의 세부 프로세스를 구체적으로 설명하는 예시도이다. 이해의 편의를 제공하기 위해 ID는 정수 값으로, ID에 매핑된 값은 영문 단어로 구성된 경우로 상정하여 설명하도록 한다. 도 5에는 세 개의 매퍼(M1, M2, M3) 및 두 개의 리듀서(R1, R2)만을 도시하고 있으나, 필요에 따라 매퍼와 리듀서의 수는 추가되거나 삭제될 수 있다.
도 5에 도시된 바와 같이, 사용자의 쿼리 요청에 대한 응답인, 제1 쿼리 결과(21a)는 {1, 2, 576, 20}, {1, 2, 576, 900}, {1, 2, 576, 50} 등의 형태로 구성될 수 있으며 제2 쿼리 결과(21b)는 {6, 576}, {6, 34}, {6, 90} 등의 형태로 구성될 수 있다. 또한, LOD 데이터를 ID로 변환하는 과정에서 생성된 ID 매핑 테이블(21c)은 {1, student1}, {2, takesCourse}, {576, DB}, {20, Kim}, {3, University}, {100, Major} 등의 데이터를 포함할 수 있다.
이하, 각각의 매퍼(M1, M2, M3)가 제1 중간 결과를 생성하는 세부 프로세스에 대해 설명하도록 한다. 매퍼(M1 및 M2)는 쿼리 결과(21a, 21b)를 입력 받는 매퍼이고, 매퍼(M3)는 ID 매핑 테이블(21c)을 입력 받는 매퍼이다. 제1 쿼리 결과의 쿼리 ID는 "1"이고, 제2 쿼리 결과의 쿼리 ID는 "2"이다.
매퍼(M1)는 상기 제1 쿼리 결과(21a)를 입력 받은 경우, 행의 각 컬럼을 기준으로 상기 제1 쿼리 결과(21a)를 분할하여 <키, 밸류>의 쌍으로 구성된 제1 중간 결과(22a)를 생성할 수 있다. 이 때 상기 키는 ID일 수 있고, 상기 밸류는 상기 ID가 속한 쿼리 ID일 수 있다. 예를 들어, 매퍼(M1)가 상기 제1 쿼리 결과(21a)중 일부인 {1, 2, 576, 20}을 입력 받은 경우 상기 매퍼(M1)는 행의 각 컬럼을 기준으로 "1", "2", "576", "20"으로 분할하고, 각각의 분할된 ID("1", "2", "576", "20")를 키로, ID가 속한 쿼리 ID인 "1"을 밸류로 작성하여 <1, 1>, <2, 1>, <576, 1>, <20, 1>로 구성된 제1 중간 결과(22a)를 생성할 수 있다.
매퍼(M2)는 상기 제2 쿼리 결과(21b)를 입력 받은 경우, 행의 각 컬럼을 기준으로 상기 제2 쿼리 결과(21b)를 분할하여 <키, 밸류>의 쌍으로 구성된 제1 중간 결과(22b)를 생성할 수 있다. 이 때 상기 키는 ID일 수 있고, 상기 밸류는 상기 ID가 속한 쿼리 ID일 수 있다. 예를 들어, 매퍼(M2)가 상기 제1 쿼리 결과(21b)중 일부인 {6, 576}, {6, 34}, {6, 90}을 입력 받은 경우 상기 매퍼(M2)는 행의 각 컬럼을 기준으로 "6", "576", "6", "34", "6", "90"으로 분할하고, 각각의 분할된 ID("6", "576", "34", "90")를 키로, ID가 속한 쿼리 ID인 "2"를 밸류로 작성하여 <6, 2>, <576, 2>, <34, 2>, <90, 2>로 구성된 제1 중간 결과(22b)를 생성할 수 있다.
매퍼(M3)는 상기 ID 매핑 테이블(21c)을 입력 받은 경우, <키, 밸류>의 쌍으로 구성된 제1 중간 결과(22c)를 생성할 수 있다. 이 때 상기 키는 ID일 수 있고, 상기 밸류는 상기 ID에 매핑된 값일 수 있다. 예를 들어, 매퍼(M3)가 상기 ID 매핑 테이블(21c)중 일부인 {1, student1}, {2, takesCourse}, {576, DB}, {20, Kim}, {3, University}, {100, Major}를 입력 받은 경우 상기 매퍼(M3)는 각각의 ID("1", "2", "576", "20", "3", "100")를 키로, ID에 매핑된 값("student1", "takesCourse", "DB", "Kim", "University", "Major")을 밸류로 작성하여 <1, student1>, <2, takesCourse>, <576, DB>, <20, Kim>, <3, University>, <100, Major>로 구성된 제1 중간 결과(22c)를 생성할 수 있다.
<키, 밸류>의 구성으로 생성된 제1 중간 결과(22a, 22b, 22c)를 이용하여 동일한 키 값을 갖는 제1 중간 결과끼리 그룹핑된 데이터(23a, 23b, 23c)가 생성될 수 있다. 예를 들어, 키 값이 "1"인 제1 중간 결과(22a)의 <1, 1>과 제1 중간 결과(22c)의 <1, student1>가 그룹핑된 데이터(23a)가 생성될 수 있고, 키 값이 "2"인 제1 중간 결과(22a)의 <2, 1>과 제1 중간 결과(22c)의 <2, takesCourse>가 그룹핑된 데이터(23b)가 생성될 수 있다. 또한, 키 값이 "576"인 제1 중간 결과(22a)의 <576, 1>, 제1 중간 결과(22b)의 <576, 2> 및 제1 중간 결과(22c)의 <576, DB>가 그룹핑된 데이터(23c)가 생성될 수 있다.
복수의 리듀서(R1, R2)는 상기 그룹핑된 데이터(23a, 23b, 23c)를 입력 받고, 상기 입력받은 그룹핑된 데이터(23a, 23b, 23c)를 이용하여 복원 참조 데이터(24a, 24b)를 생성할 수 있다. 상기 리듀서는 상기 그룹핑된 데이터에 쿼리 ID가 포함되어 있는지 여부를 판단하고, 상기 그룹핑된 데이터에 상기 쿼리 ID가 포함되어 있지 않은 경우, 입력 받은 상기 그룹핑된 데이터를 제거할 수 있다. 상기 리듀서는 상기 그룹핑된 데이터에 상기 쿼리 ID가 포함된 경우에는 ID, 쿼리 ID 및 상기 ID에 매핑된 값으로 구성된 데이터를 상기 복원 참조 데이터로서 생성할 수 있다. 이하 구체적인 예시를 들어 복수의 리듀서(R1, R2)가 수행하는 과정을 설명하도록 한다.
리듀서(R1)는 상기 그룹핑된 데이터(23a, 23b)에 포함된 <1, 1>, <1, student1> 및 <2, 1>, <2, takesCourse>의 데이터를 입력 받을 수 있다. 상기 입력 받은 데이터(23a, 23b)의 밸류 값에 각각 쿼리 ID("1", "2")가 포함되어 있으므로 ID, 쿼리 ID 및 상기 ID에 매핑된 값으로 구성된 데이터(24a)가 제1 복원 참조 데이터로서 생성될 수 있다. 즉, <ID, [쿼리 ID, 상기 ID에 매핑된 값]>의 쌍으로 구성된 <1, [1, student1]> 및 <2, [1, takesCourse]>로 구성된 제1 복원 참조 데이터(24a)가 생성될 수 있다.
리듀서(R2)는 상기 그룹핑된 데이터(23c)에 포함된 <576, 1>, <576, 2>, <576, DB>의 데이터를 입력 받을 수 있다. 상기 입력 받은 데이터(23c)의 밸류 값에 쿼리 ID("1"과 "2")가 모두 포함되어 있으므로 ID, 쿼리 ID 및 상기 ID에 매핑된 값으로 구성된 데이터(24b)가 제2 복원 참조 데이터로서 생성될 수 있다. 즉, <ID, [쿼리 ID, 상기 ID에 매핑된 값]>의 쌍으로 구성된 <576, [1, 2, DB]> 로 구성된 제2 복원 참조 데이터(24b)가 생성될 수 있다.
도 5에는 상기 그룹핑된 데이터에 상기 쿼리 ID가 포함되어 있지 않은 경우, 리듀서에 의해 제거된 그룹핑된 데이터(24c)가 도시되어 있다. 예를 들어 ID 값 "3", "100"을 갖는 제1 중간 결과끼리 그룹핑된 데이터의 밸류 값에 쿼리 ID("1", "2")가 포함되지 않은 경우 리듀서는 입력받은 데이터인 <3, University>, <100, Major>을 제거할 수 있다.
복원 참조 데이터가 생성되는 단계 S200에서, 대량 LOD 쿼리 결과의 ID와 상기 ID에 매핑된 값이 분산 병렬 처리로 빠르게 매핑될 수 있고, 동시에 상기 쿼리 결과에 포함되지 않는 ID와 값이 제거될 수 있다. 후술하는 단계 S300에서 상기 복원 참조 데이터를 이용함으로써 복원 시간 및 메모리 오버 헤드를 감소시킬 수 있다.
도 6는 쿼리 결과가 복원되는 단계 S300의 세부 프로세스를 나타내는 예시적인 흐름도이다. 단, 이는 본 개시의 목적을 달성하기 위한 바람직한 실시예일뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있음은 물론이다.
도 6에 도시된 바와 같이, 단계 S311에서 매퍼는 쿼리 결과를 입력 받을 수 있고, 단계 S312에서 매퍼는 상기 쿼리 결과를 이용하여 <키, 밸류>의 쌍으로 구성된 제2 중간 결과를 생성할 수 있다. 이 때, 상기 키는 쿼리 ID일 수 있고, 상기 밸류는 쿼리 결과일 수 있다. 한편, 단계 S313에서 매퍼는 단계 S200에서 생성된 복원 참조 데이터를 입력 받을 수 있고, 단계 S314에서 매퍼는 상기 복원 참조 데이터를 이용하여 <키, 밸류>의 쌍으로 구성된 제2 중간 결과를 생성할 수 있다. 이 때, 상기 키는 쿼리 ID일 수 있고, 상기 밸류는 ID와 상기 ID에 매핑된 값일 수 있다.
단계 S310을 통해 생성된 제2 중간 결과를 이용하여 쿼리 결과가 복원되는 단계 S320의 이전에 상기 제2 중간 결과의 키 값이 동일한 제2 중간 결과끼리 그룹핑되고, 상기 그룹핑된 데이터를 리듀서가 전달받는 단계(S300a)가 포함될 수 있다.
단계 S320은 상기 리듀서가 상기 그룹핑된 데이터를 이용하여 리버스 ID 매핑 테이블을 생성하는 단계(S321)를 포함할 수 있고, 상기 리듀서가 상기 리버스 ID 매핑 테이블을 이용하여 복원된 최종 결과를 획득하는 단계(S322)를 포함할 수 있다. 상기 리버스 ID 매핑 테이블은 해시 기반의 리버스 ID 매핑 테이블일 수 있다.
도 7는 쿼리 결과가 복원되는 단계 S300의 세부 프로세스를 구체적으로 설명하는 예시도이다. 이해의 편의를 제공하기 위해 ID는 정수 값으로, ID에 매핑된 값은 영문 단어로 구성된 경우로 상정하여 설명하도록 한다. 도 7에는 세 개의 매퍼(M1, M2, M3) 및 두 개의 리듀서(R1, R2)만을 도시하고 있으나, 필요에 따라 매퍼와 리듀서의 수는 추가되거나 삭제될 수 있다.
도 7에 도시된 바와 같이, 매퍼에 입력되는 제1 쿼리 결과(21a)는 {1, 2, 576, 20}, {1, 2, 576, 900}, {1, 2, 576, 50} 등의 형태로 구성될 수 있으며 제2 쿼리 결과(21b)는 {6, 576}, {6, 34}, {6, 90} 등의 형태로 구성될 수 있다. 또한, 복원 참조 데이터를 생성하는 단계에서 획득한 제1 복원 참조 데이터(24a)는 {1, [1, student1]}, {2, [1, takesCourse]}을 포함할 수 있고, 제2 복원 참조 데이터(24b)는 {576, [1, 2, DB]} 등의 데이터를 포함할 수 있다.
이하, 각각의 매퍼(M1, M2, M3)가 제2 중간 결과를 생성하는 세부 프로세스에 대해 설명하도록 한다. 상기 매퍼(M1)는 제1 쿼리 결과(21a)를 입력 받는 매퍼이고, 상기 매퍼(M2)는 제2 쿼리 결과(21b) 및 제1 복원 참조 데이터(24a)를 입력 받는 매퍼이다. 제1 쿼리 결과의 쿼리 ID는 "1"이고, 제2 쿼리 결과의 쿼리 ID는 "2"이다.
매퍼(M1)는 상기 제1 쿼리 결과(21a)를 입력 받은 경우, <키, 밸류>의 쌍으로 구성된 제1 중간 결과(22a)를 생성할 수 있다. 이 때 상기 키는 쿼리 ID이고 상기 밸류는 상기 제1 쿼리 결과이다. 예를 들어, 매퍼(M1)가 상기 제1 쿼리 결과(21a)중 일부인 {1, 2, 576, 20}을 입력 받은 경우 상기 매퍼(M1)는 쿼리 ID"1"을 키로, 상기 제1 쿼리 결과(21a)중 일부인 {1, 2, 576, 20}을 밸류로 작성하여 <1, {1, 2, 576, 20}>으로 구성된 제2 중간 결과(32a)를 생성할 수 있다.
매퍼(M2)는 상기 제2 쿼리 결과(21b)를 입력 받은 경우, <키, 밸류>의 쌍으로 구성된 제2 중간 결과(32b)를 생성할 수 있다. 이 때 상기 키는 쿼리 ID이고 상기 밸류는 상기 제2 쿼리 결과이다. 예를 들어, 매퍼(M2)가 상기 제1 쿼리 결과(21b)중 일부인 {6, 576}, {6, 34}, {6, 90}을 입력 받은 경우 상기 매퍼(M2)는 쿼리 ID"2"를 키로, 상기 제2 쿼리 결과(21b) 중 일부인 {6, 576}을 밸류로 작성하여 <2, {6, 576}>으로 구성된 제2 중간 결과(32b)를 생성할 수 있다.
매퍼(M2)는 상기 제1 복원 참조 데이터(24a)을 입력 받은 경우, <키, 밸류>의 쌍으로 구성된 제2 중간 결과(32b)를 생성할 수 있다. 이 때 상기 키는 쿼리 ID이고, 상기 밸류는 ID와 상기 ID에 매핑된 값이다. 예를 들어, 매퍼(M2)가 상기 제1 복원 참조 데이터(24a)중 일부인 {1, [1, student1]}, {2, [1, takesCourse]}를 입력 받은 경우 상기 매퍼(M2)는 각각의 쿼리 ID인"1"을 키로, ID 및 상기 ID에 매핑된 값({student1, 1}, {takesCourse,2})을 밸류로 작성하여 <1, {student1, 1}>, <1, {takesCourse, 2}>로 구성된 제2 중간 결과(32b)를 생성할 수 있다.
매퍼(M3)는 상기 제2 복원 참조 데이터(24b)을 입력 받은 경우, <키, 밸류>의 쌍으로 구성된 제2 중간 결과(32c)를 생성할 수 있다. 이 때 상기 키는 쿼리 ID이고, 상기 밸류는 ID와 상기 ID에 매핑된 값이다. 예를 들어, 매퍼(M3)가 상기 제2 복원 참조 데이터(24b)중 일부인 {576, [1, 2, DB]}를 입력 받은 경우 상기 매퍼(M3)는 쿼리 ID인"1"과 "2"를 키로, ID 및 상기 ID에 매핑된 값({DB, 1}, {takesCourse,2})을 밸류로 작성하여 <1, {DB, 576}>, <2, {DB, 576}>으로 구성된 제2 중간 결과(32c)를 생성할 수 있다.
상기 <키, 밸류>의 구성으로 생성된 제2 중간 결과(32a, 32b, 32c)를 이용하여 동일한 키 값을 갖는 제2 중간 결과끼리 그룹핑된 데이터(33a, 33b)가 생성될 수 있다. 예를 들어, 키 값이 "1"인 제2 중간 결과(32a)의 <1, {1, 2, 576, 20}>, 제2 중간 결과(32b)의 <1, {student1, 1}>과 <1, {takesCourse, 2}> 및 제3 중간 결과(32c)의 <1, {DB, 576}> 등이 그룹핑된 데이터(33a)가 생성될 수 있고, 키 값이 "2"인 제2 중간 결과(32b)의 <2, {6, 576}>, <2. {6, 34}> 등과 제3 중간 결과(32c)의 <2, {DB, 576}> 등이 그룹핑된 데이터(33b)가 생성될 수 있다.
복수의 리듀서(R1, R2)는 상기 그룹핑된 데이터(33a, 33b)를 입력 받고, 이를 이용하여 쿼리 결과를 복원할 수 있다. 상기 리듀서는 상기 그룹핑된 데이터를 이용하여 리버스 ID 매핑 테이블을 생성하고, 상기 리버스 ID 매핑 테이블을 이용하여 LOD 쿼리 결과를 복원할 수 있다. 이하 도 8에서 구체적인 예시를 들어 복수의 리듀서(R1, R2)가 수행하는 과정을 설명하도록 한다.
도 8은 도 7에 도시된 일부 과정의 세부 프로세스를 자세히 설명하기 위한 것으로, 복수의 리듀서가 그룹핑된 제2 중간 결과를 입력 받아 ID 형태의 쿼리 결과를 LOD 값으로 복원하는 최종 단계의 구체적인 예시도이다.
리듀서(R1)는 상기 그룹핑된 데이터(33a)에 포함된 <1, {1, 2, 576, 20}>, <1, {1, 2, 576, 900}>, <1, {1, 2, 576, 50}>, <1, {student1, 1}>, <1, {takesCourse, 2}>, <1, {DB, 576}> 등의 데이터를 입력 받을 수 있다. 보다 자세하게는, 상기 입력 받은 데이터(33a)의 밸류 값인 {1, 2, 576, 20}, {1, 2, 576, 900}, {1, 2, 576, 50}, {student, 1}, {takesCourse, 2}, {DB, 576}은 제1 쿼리 결과(34b)({1, 2, 576, 20}, {1, 2, 576, 900}, {1, 2, 576, 50})와 제1 쿼리 결과에 포함되는 ID 매핑 정보(34a)({student, 1}, {takesCourse, 2}, {DB, 576})로 분류될 수 있다. 리듀서(R1)는 상기 제1 쿼리 결과에 포함되는 ID 매핑 정보(34a)를 이용하여 키는 "student", "takesCourse", "DB" 등이고 이에 대응되는 밸류는 각각 "1", "2", 576"등인 리버스 ID 매핑 테이블을 생성하고, 상기 리버스 ID 매핑 테이블을 이용하여 상기 제1 쿼리 결과를 복원(34c)할 수 있다.
도 8에는 복원된 제1 쿼리 결과의 LOD 데이터(34c)가 도시되어 있다. 도시되어 있지는 않지만 리버스 ID 매핑 테이블에 키는 "Jung"으로, 밸류는 "900"으로 저장되어 있다고 가정해볼 수 있다. 이 경우, 제1 쿼리 결과 {1, 2, 576, 20}은 상기 리버스 ID 매핑 테이블을 통해 {student1, takesCourse, DB, Kim}의 LOD 데이터로 복원될 수 있고, 제1 쿼리 결과 {1, 2, 576, 900}은 {student1, takesCourse, DB, Jung}의 LOD 데이터로 복원될 수 있다.
리듀서(R2)는 상기 그룹핑된 데이터(33b)에 포함된 <2, {6, 576}>, <2, {6, 34}>, <2, {6, 90}>, <2, {DB, 576}> 등의 데이터를 입력 받을 수 있다. 보다 자세하게는, 상기 입력 받은 데이터(33b)의 밸류 값인 {6, 576}, {6, 34}, {6, 90}, {DB, 576}은 제2 쿼리 결과(35b)({6, 576}, {6, 34}, {6, 90})와 제2 쿼리 결과에 포함되는 ID 매핑 정보(35a)({DB, 576})로 분류될 수 있다. 리듀서(R2)는 상기 제2 쿼리 결과에 포함되는 ID 매핑 정보(35a)를 이용하여 키는 "DB"등이고 이에 대응되는 밸류는 "576"등인 리버스 ID 매핑 테이블을 생성하고, 상기 리버스 ID 매핑 테이블을 이용하여 상기 제2 쿼리 결과를 복원(35c)할 수 있다.
도 8에는 복원된 제2 쿼리 결과의 LOD 데이터(35c)가 도시되어 있다. 도시되어 있지는 않지만 리버스 ID 매핑 테이블에 키는 "Professor"로, 밸류는 "6"으로 저장되어 있고, 또 다른 키는 "Mobile"으로, 밸류는 "34"로 저장되어 있다고 가정해볼 수 있다. 이 경우, 제2 쿼리 결과 {6, 576}은 상기 리버스 ID 매핑 테이블을 통해 {Professor, DB}의 LOD 데이터로 복원될 수 있고, 제2 쿼리 결과 {6, 34}는 {Professor, Mobile}의 LOD 데이터로 복원될 수 있다.
복원 참조 데이터가 생성되는 단계 S300은, 대량의 LOD 쿼리 결과를 복수의 리듀서가 나누어 처리함으로써 빠른 복원을 가능하게 할 수 있다. 또한, 상기 쿼리 결과의 복원에 필요한 정보만을 리버스 ID 매핑 테이블로 생성함으로써 테이블 크기로 인한 검색 시간 및 메모리 오버헤드를 감소시킬 수 있다.
지금까지 도 1 내지 도 8을 참조하여 본 개시의 몇몇 실시예에 따른 맵리듀스 기반의 대량 LOD 쿼리 결과를 복원하는 방법에 대하여 설명하였다. 상술한 방법에 따르면, 대량의 쿼리 결과를 복수의 리듀서가 나누어 처리함으로써 쿼리 결과 복원의 속도를 효과적으로 향상시킬 수 있다. 또한, 쿼리 ID를 기준으로 쿼리 결과와 그에 필요한 ID 매핑 정보를 그룹핑함으로써, 쿼리 결과 복원에 필요한 정보만을 리버스 ID 매핑 테이블로 생성할 수 있으므로, 테이블 크기로 인한 검색 시간 및 메모리 오버헤드를 효과적으로 감소시킬 수 있다.
지금까지 도 1 내지 도 8을 참조하여 설명된 본 개시의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이하에서는, 도 9를 참조하여 본 개시의 다양한 실시예에 따른 장치를 구현할 수 있는 예시적인 컴퓨팅 장치(500)에 대하여 설명한다.
도 9은 컴퓨팅 장치(500)를 나타내는 예시적인 하드웨어 구성도이다.
도 9에 도시된 바와 같이, 컴퓨팅 장치(500)는 하나 이상의 프로세서(510), 버스(550), 통신 인터페이스(570)에 의하여 수행되는 컴퓨터 프로그램(591)을 로드(load)하는 메모리(530)와, 컴퓨터 프로그램(591)을 저장하는 스토리지(590)을 포함할 수 있다. 다만, 도 9에는 본 개시의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 개시가 속한 기술분야의 통상의 기술자라면 도 9에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(510)는 컴퓨팅 장치(500)의 각 구성의 전반적인 동작을 제어한다. 프로세서(510)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller unit), GPU(Graphic Processing Unit) 또는 본 개시의 기술 분야에 잘 알려진 임의의 형태의 프로세서 중 적어도 하나를 포함하여 구성될 수 있다. 또한, 프로세서(510)는 본 개시의 다양한 실시예들에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(500)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(530)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(530)는 본 개시의 다양한 실시예들에 따른 방법/동작들을 실행하기 위하여 스토리지(590)로부터 하나 이상의 프로그램(591)을 로드할 수 있다. 예를 들어, 컴퓨터 프로그램(591)이 메모리(530)에 로드되면, 도 9에 도시된 바와 같은 로직(또는 모듈)이 메모리(530) 상에 구현될 수 있다. 메모리(530)의 예시는 RAM이 될 수 있으나, 이에 한정되는 것은 아니다.
버스(550)는 컴퓨팅 장치(500)의 구성 요소 간 통신 기능을 제공한다. 버스(550)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(570)는 컴퓨팅 장치(500)의 유무선 인터넷 통신을 지원한다. 통신 인터페이스(570)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(570)는 본 개시의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(590)는 하나 이상의 컴퓨터 프로그램(591)을 비임시적으로 저장할 수 있다. 스토리지(590)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 개시가 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(591)은 본 개시의 다양한 실시예들에 따른 방법/동작들이 구현된 하나 이상의 인스트럭션들을 포함할 수 있다. 컴퓨터 프로그램(591)이 메모리(530)에 로드되면, 프로세서(510)는 상기 하나 이상의 인스트럭션들을 실행시킴으로써 본 개시의 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다.
지금까지 도 1 내지 도 9를 참조하여 본 개시의 기술적 사상에 내포된 다양한 실시예들 및 그 실시예들에 따른 효과들을 언급하였다. 본 개시의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
이상에서, 본 개시의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 개시의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 개시의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 개시의 실시예들을 설명하였지만, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 개시가 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 개시의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 개시에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (9)

  1. 컴퓨팅 장치에 의하여 수행되는 방법에 있어서,
    쿼리(query)에 대한 응답으로서 쿼리 결과를 획득하는 단계;
    상기 쿼리 결과와 ID 매핑 테이블을 이용하여, 상기 ID, 상기 ID가 속한 쿼리 ID 및 상기 ID 에 매핑된 값이 포함된, 상기 쿼리 결과의 복원에 필요한 복원 참조 데이터를 획득하는 단계; 및
    상기 쿼리 결과와 상기 복원 참조 데이터를 이용하여 상기 쿼리 결과에 대응되는 LOD(Linked Open Data) 값을 복원하는 단계를 포함하되,
    상기 쿼리 결과는, 상기 복원된 LOD 값에 대응되는 하나 이상의 ID 값으로 구성된 것이고,
    상기 ID 매핑 테이블은 상기 ID에 매핑된 LOD 값이 키로, 상기 ID가 밸류로 저장된 해시 기반의 ID 매핑 테이블이며,
    상기 복원 참조 데이터는 <상기 ID, [상기 쿼리 ID, 상기 ID에 매핑된 값]>의 쌍으로 구성된 데이터인,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법.
  2. 제1 항에 있어서,
    상기 복원 참조 데이터를 획득하는 단계는,
    복수의 매퍼(mapper)를 이용하여 제1 중간 결과를 생성하되, 상기 매퍼가 상기 쿼리 결과를 입력 받은 경우, 행의 각 컬럼을 기준으로 상기 쿼리 결과를 분할하여 <키, 밸류>의 쌍으로 구성된 제1 중간 결과를 생성하는 단계를 포함하되,
    상기 키는 상기 ID이고, 상기 밸류는 상기 ID가 속한 쿼리 ID인,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법.
  3. 제2 항에 있어서,
    상기 복원 참조 데이터를 획득하는 단계는,
    상기 매퍼가 상기 ID 매핑 테이블을 입력받은 경우 <키, 밸류>의 쌍으로 구성된 제1 중간 결과를 생성하는 단계; 및
    복수의 리듀서를 이용하여 상기 제1 중간 결과를 기반으로 복원 참조 데이터를 생성하는 단계를 더 포함하되,
    상기 키는 상기 ID이고 상기 밸류는 상기 ID에 매핑된 값인,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법.
  4. 제3 항에 있어서,
    상기 복원 참조 데이터를 생성하는 단계는,
    상기 제1 중간 결과의 키를 기준으로 그룹핑된 데이터를 상기 리듀서가 전달받는 단계; 및
    상기 리듀서가 상기 그룹핑된 데이터에 쿼리 ID가 포함되어 있는지 여부를 판단하고, 상기 그룹핑된 데이터에 상기 쿼리 ID가 포함되어 있지 않은 경우, 전달받은 상기 그룹핑된 데이터를 제거하는 단계를 포함하는,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법.
  5. 제4 항에 있어서,
    상기 복원 참조 데이터를 생성하는 단계는,
    상기 그룹핑된 데이터에 상기 쿼리 ID가 포함되어 있는 경우, 상기 ID, 상기 쿼리 ID 및 상기 ID에 매핑된 값으로 구성된 데이터를 상기 복원 참조 데이터로서 생성하는 단계를 더 포함하는,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법.
  6. 제1 항에 있어서,
    상기 LOD 값을 복원하는 단계는,
    복수의 매퍼를 이용하여 제2 중간 결과를 생성하되, 상기 매퍼가 쿼리 결과를 입력 받은 경우, <키, 밸류>의 쌍으로 구성된 제2 중간 결과를 생성하는 단계를 포함하되,
    상기 키는 상기 쿼리 ID이고, 상기 밸류는 상기 쿼리 결과인,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법.
  7. 제1 항에 있어서,
    상기 LOD 값을 복원하는 단계는,
    복수의 매퍼를 이용하여 제2 중간 결과를 생성하되, 상기 매퍼가 상기 복원 참조 데이터를 입력받은 경우, <키, 밸류>의 쌍으로 구성된 제2 중간 결과를 생성하는 단계; 및
    복수의 리듀서를 이용하여 상기 제2 중간 결과를 기반으로 상기 쿼리 결과를 복원하는 단계를 더 포함하되,
    상기 키는 상기 쿼리 ID이고, 상기 밸류는 상기 ID와 상기 ID에 매핑된 값인,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법.
  8. 제7 항에 있어서,
    상기 쿼리 결과를 복원하는 단계는,
    상기 리듀서가 상기 제2 중간 결과의 키를 기준으로 그룹핑된 데이터를 전달받는 단계;
    상기 리듀서가 상기 그룹핑된 데이터를 이용하여 리버스 ID 매핑 테이블을 생성하는 단계; 및
    상기 리듀서가 상기 리버스 ID 매핑 테이블을 이용하여 복원된 최종 결과를 생성하는 단계를 포함하는,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 방법.
  9. 프로세서; 및
    메모리를 포함하는 컴퓨팅 장치로서,
    상기 메모리는 명령어를 저장하고,
    상기 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
    쿼리에 대한 응답으로서 쿼리 결과를 획득하는 동작;
    상기 쿼리 결과와 ID 매핑 테이블을 이용하여, 상기 ID, 상기 ID가 속한 쿼리 ID 및 상기 ID 에 매핑된 값이 포함된, 상기 쿼리 결과의 복원에 필요한 복원 참조 데이터를 획득하는 동작; 및
    상기 쿼리 결과와 상기 복원 참조 데이터를 이용하여 상기 쿼리 결과에 대응되는 LOD(Linked Open Data) 값을 복원하는 동작을 수행하도록 하되,
    상기 쿼리 결과는, 상기 복원된 LOD 값에 대응되는 하나 이상의 ID 값으로 구성된 것이고,
    상기 ID 매핑 테이블은 상기 ID에 매핑된 LOD 값이 키로, 상기 ID가 밸류로 저장된 해시 기반의 ID 매핑 테이블이며,
    상기 복원 참조 데이터는 <상기 ID, [상기 쿼리 ID, 상기 ID에 매핑된 값]>의 쌍으로 구성된 데이터인,
    맵리듀스 기반의 대량 LOD 쿼리 결과 복원 장치.
KR1020220007437A 2022-01-18 2022-01-18 맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치 KR102479261B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220007437A KR102479261B1 (ko) 2022-01-18 2022-01-18 맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220007437A KR102479261B1 (ko) 2022-01-18 2022-01-18 맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR102479261B1 true KR102479261B1 (ko) 2022-12-20

Family

ID=84539221

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220007437A KR102479261B1 (ko) 2022-01-18 2022-01-18 맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102479261B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101255060B1 (ko) * 2012-07-16 2013-04-16 한국과학기술정보연구원 맵리듀스 기반 분산 병렬 개체 추출 시스템 및 방법
KR20160064569A (ko) * 2014-11-28 2016-06-08 삼육대학교산학협력단 맵리듀스를 이용한 sql 질의처리방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101255060B1 (ko) * 2012-07-16 2013-04-16 한국과학기술정보연구원 맵리듀스 기반 분산 병렬 개체 추출 시스템 및 방법
KR20160064569A (ko) * 2014-11-28 2016-06-08 삼육대학교산학협력단 맵리듀스를 이용한 sql 질의처리방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
C. Nomikos et al., A Map-Reduce algorithm for querying linked data based on query decomposition into stars, Workshop Proceedings of the EDBT/ICDT 2014 Joint Conference(2014)* *

Similar Documents

Publication Publication Date Title
JP6542909B2 (ja) ファイル操作方法及び装置
US11630864B2 (en) Vectorized queues for shortest-path graph searches
US9953106B2 (en) Dynamic generation of traversal code for a graph analytics environment
US11379499B2 (en) Method and apparatus for executing distributed computing task
US20170228422A1 (en) Flexible task scheduler for multiple parallel processing of database data
Mestre et al. An efficient spark-based adaptive windowing for entity matching
US10585896B2 (en) Managing data in relational database management system
US9519679B2 (en) Techniques for query homogenization in cache operations
US10339151B2 (en) Creating federated data source connectors
US20210271710A1 (en) Vectorized hash tables
US9047328B2 (en) Searching entity-key associations using in-memory objects
US20140067853A1 (en) Data search method, information system, and recording medium storing data search program
US11599540B2 (en) Query execution apparatus, method, and system for processing data, query containing a composite primitive
CN111125216B (zh) 数据导入Phoenix的方法及装置
KR102479261B1 (ko) 맵리듀스를 사용한 대량 LOD(Linked Open Data) 쿼리에 대한 결과 복원 방법 및 그 장치
CN105930104B (zh) 数据存储方法和装置
CN111198880A (zh) 一种基于redis的数据存储方法、装置及电子设备
JP2021508867A (ja) データベースをクエリするためのシステム、方法および装置
Becker et al. Memory-driven computing accelerates genomic data processing
Dayarathna et al. Introducing acacia-rdf: An x10-based scalable distributed rdf graph database engine
CN111309704B (zh) 数据库操作方法和数据库操作系统
CN113282617A (zh) 数据查询方法以及业务系统翻页方法
Alshammari et al. Hadoop based enhanced cloud architecture for bioinformatic algorithms
CN112214497A (zh) 一种标签的处理方法、装置及计算机系统
CN103942162A (zh) 在存储器中进行多访问的方法、装置和存储系统

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant