KR101718119B1 - SparkSQL 기반의 SPARQL 질의 처리 수행 시스템 - Google Patents

SparkSQL 기반의 SPARQL 질의 처리 수행 시스템 Download PDF

Info

Publication number
KR101718119B1
KR101718119B1 KR1020160049318A KR20160049318A KR101718119B1 KR 101718119 B1 KR101718119 B1 KR 101718119B1 KR 1020160049318 A KR1020160049318 A KR 1020160049318A KR 20160049318 A KR20160049318 A KR 20160049318A KR 101718119 B1 KR101718119 B1 KR 101718119B1
Authority
KR
South Korea
Prior art keywords
query
sparal
column
sparksql
value
Prior art date
Application number
KR1020160049318A
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 KR1020160049318A priority Critical patent/KR101718119B1/ko
Application granted granted Critical
Publication of KR101718119B1 publication Critical patent/KR101718119B1/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/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • G06F17/30445
    • 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/221Column-oriented storage; 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/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/2455Query execution
    • G06F17/30315
    • G06F17/30339
    • G06F17/30477

Landscapes

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

Abstract

SparkSQL 기반의 SPARQL 질의 처리 수행 시스템이 개시된다. 개시된 SPARQL 질의 처리 수행 시스템은 복수의 트리플(SPO) 데이터로 구성된 RDF 데이터를 파싱하여 상기 복수의 트리플 데이터의 P를 각각의 column로 하는 제1 테이블을 생성하는 테이블 생성부; 입력된 SPARAL 질의를 SparkSQL 질의로 변환하는 질의 변환부; 및 상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하는 질의 처리 수행부;를 포함한다.

Description

SparkSQL 기반의 SPARQL 질의 처리 수행 시스템{System and Method for processing SPARQL queries based on Spark SQL}
본 발명의 실시예들은 대규모 트리플 데이터 기반의 빠른 응답 속도로 질의 처리를 수행할 수 있는 SparkSQL 기반의 SPARQL 질의 처리 수행 시스템 및 방법에 관한 것이다.
매일 수백억의 데이터가 생산되는 현대 사회에서 의미있는 데이터를 추출 및 정제하고 이를 활용하고자 하는 노력이 끊임없이 진행되어 왔다. 그 방법 중 하나로 W3C(World Wide Web Consortium)에서 표준을 개발하고 있는 RDFS(Resource Description Framework Schema)가 있다. 이는 웹 상의 자원 정보를 표현하기 위한 방법으로 데이터에 대한 메타 정보를 포함하여 N-Triples, Turtle, RDF/XML 등의 다양한 형태로 표현할 수 있다. 그리고 SPARQL이라는 질의 엔진을 통해 원하는 데이터를 검색할 수 있다. 현재까지는 대부분 고성능의 단일 컴퓨팅 환경에서 RDFS 데이터와 질의를 처리해왔다. 하지만, RDF 데이터가 방대해짐에 따라 단일 컴퓨팅 환경에서 만족할만한 성능을 낼 수 없게 되는 문제점이 있다.
한편,대용량의 데이터에 대한 처리가 필요함에 따라 다양한 프레임워크가 등장하였다. 가장 먼저 등장한 프레임워크는 Apache Hadoop(MapReduce)으로, Map과 Reduce라는 패러다임으로 대용량의 데이터를 병렬로 처리하는 방법이다. 그러나, 이 프레임워크는 실시간 처리가 불가능하며 보조 저장장치의 잦은 I/O로 인해 반복적인 알고리즘의 처리가 어렵다는 문제점이 있다. 따라서, 이를 보완하기 위한 인메모리 기반의 병렬처리 프레임워크가 개발되고 있으며, 대표적인 프레임 워크로 Berkeley의 Spark가 있다. Spark는 Hadoop과는 달리 주 메모리를 기반으로 한 병렬 처리를 하기 때문에 속도가 빠르며 실시간 처리가 가능하다. 또한, RDD(Resilient Distributed Dataset)라는 논리적인 개념으로 접근하여, 사용자가 병렬처리를 위한 노력이 상대적으로 적게 든다. 또한, 병렬처리를 위한 인메모리 기반 질의 엔진으로 Cloudera 의 Impala, Facebook의 presto, Hadoop 기반의 질의 엔진으로는 Hive, Pig 등이 있다.
이와 같이, 데이터의 병렬처리가 가능한 다양한 프레임워크의 등장으로 인하여 이를 기반으로 SPARQL 질의를 분산 병렬 처리하고자 하는 연구가 활발히 진행 중이다. 대부분의 연구는 SPARQL을 분산처리 플랫폼에 맞는 SQL 언어로 변환하는 작업을 중점으로 한다. Hadoop 기반의 Hive, Pig의 처리 방법은 단일 컴퓨팅 환경보다 뛰어난 성능을 보이지만 SPARQL 질의를 처리했을 경우, 수 초에서 많게는 수 분이 걸리기 때문에 사용자에게 만족할 만한 성능을 보여주지 못한다.
이를 극복하기 위해, 인메모리 병렬처리 프레임워크 중 하나인 Spark나 Impala를 사용한 SPARQL 질의 엔진이 연구되었으나, 이는 SPARQL의 질의문에 대한 분산 질의 엔진을 Spark 함수를 사용하여 직접 모두 구현해야 하는 단점이 있다. 또한, 질의문이 복잡해질수록 구현과 함께 최적화 작업이 어렵다는 문제점이 있다. 그리고, Hive와 거의 동일한 질의 언어인 Hadoop의 HDFS(Hadoop Distri-buted File System)의 경우, 분산 저장되어 있는 RDF 데이터들을 질의 처리하며, Pig와 달리 MapReduce 작업을 거치지 않고 자체 알고리즘을 통하여 질의 처리를 한다. 하지만 메모리에 데이터를 저장할 수 없어서 재사용 측면에서 취약하며 질의 처리 도중에 오류가 발생하였을 경우, 처음부터 다시 질의 처리를 수행해야 하는 단점이 있다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 빠른 속도의 질의응답 처리를 위해 인메모리 기반 분산 질의 프레임워크인 SparkSQL을 사용하여 고수준에서 SPARQL 질의를 분석하여 처리할 수 있는 SparkSQL 기반의 SPARQL 질의 처리 수행 시스템 및 방법을 제안하고자 한다.
본 발명의 다른 목적들은 하기의 실시예를 통해 당업자에 의해 도출될 수 있을 것이다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 복수의 트리플(SPO) 데이터로 구성된 RDF 데이터를 파싱하여 상기 복수의 트리플 데이터의 P를 각각의 column로 하는 제1 테이블을 생성하는 테이블 생성부; 입력된 SPARAL 질의를 SparkSQL 질의로 변환하는 질의 변환부; 및 상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하는 질의 처리 수행부;를 포함하는 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템이 제공된다.
상기 제1 테이블의 row 각각은 상기 복수의 트리플 데이터의 S이고, 상기 제1 테이블의 value 중 일부의 value는 상기 복수의 트리플 데이터의 O이고, 상기 제1 테이블의 value 중 나머지의 value는 null일 수 있다.
상기 복수의 트리플 데이터 중 하나의 트리플 데이터의 S가 i번째 row에 배치되고 상기 하나의 트리플 데이터의 P가 j번째 column에 배치되는 경우, 상기 하나의 트리플 데이터의 O는 상기 i번째 row와 상기 j번째 column의 교차하는 지점의 value일 수 있다.
상기 SPARAL 질의가 P를 변수로 하는 질의가 아닌 경우에 상기 질의 변환부는 상기 SPARAL 질의를 SparkSQL 질의로 변환하고, 상기 질의 처리 수행부는 상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행할 수 있다.
상기 SPARAL 질의가 S를 변수로 하는 질의인 경우, 상기 질의 변환부는, 상기 SPARAL 질의의 P와 동일한 상기 제1 테이블의 column을 검색하고, 상기 검색된 column의 value 중 상기 SPARAL 질의의 O와 동일한 value를 검색하고, 상기 검색된 value를 가지는 row를 검색하는 상기 SparkSQL 질의로 변환할 수 있다.
상기 SPARAL 질의가 O를 변수로 하는 질의인 경우, 상기 질의 변환부는, 상기 SPARAL 질의의 P와 동일한 상기 제1 테이블의 column을 검색하고, 상기 검색된 column의 value가 NULL이 아닌 값을 가지는 적어도 하나의 row를 검색하고, 상기 적어도 하나의 row 중 상기 SPARAL 질의의 S와 동일한 row를 검색하고, 상기 동일한 row와 상기 검색된 column이 교차하는 지점의 value를 검색하는 상기 SparkSQL 질의로 변환할 수 있다.
상기 질의 처리 수행부는 복수의 프로세서 장치를 포함하고, 상기 제1 테이블의 column의 검색은 상기 복수의 프로세서 장치에서 분산되어 수행될 수 있다.
또한, 본 발명의 다른 실시예에 따르면, 복수의 트리플(SPO) 데이터로 구성된 RDF 데이터를 파싱하여 제1 테이블 및 제2 테이블을 생성하는 테이블 생성부; SPARAL 질의를 입력받는 질의 입력부; 입력된 SPARAL 질의를 SparkSQL 질의로 변환하는 질의 변환부; 및 상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하거나, 상기 제2 테이블을 이용하여 상기 SPARAL 질의 처리를 수행하는 질의 처리 수행부;를 포함하되, 상기 제1 테이블의 row 각각은 상기 복수의 트리플 데이터의 S이고, 상기 제1 테이블의 column 각각은 상기 복수의 트리플 데이터의 P이고, 상기 제1 테이블의 value 중 일부의 value는 상기 복수의 트리플 데이터 중 O이고, 상기 제1 테이블의 value 중 나머지의 value는 null이고, 상기 제2 테이블의 row 각각은 식별 인덱스이고, 상기 제2 테이블의 column 각각은 subject, predicate, object이고, 상기 제2 테이블의 value 중 subject의 column의 values는 상기 복수의 트리플 데이터의 S이고, 상기 제2 테이블의 value 중 predicate의 column의 value는 상기 복수의 트리플 데이터의 P이고, 상기 제2 테이블의 value 중 object의 column의 value는 상기 복수의 트리플 데이터의 O인 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템이 제공된다.
또한, 본 발명의 또 다른 실시예에 따르면, 프로세서가 포함된 디바이스에서, SPARQL 질의 처리를 수행하는 방법에 있어서, 복수의 트리플(SPO) 데이터로 구성된 RDF 데이터를 파싱하여 상기 복수의 트리플 데이터의 P를 각각의 column로 하는 제1 테이블을 생성하는 단계; 입력된 SPARAL 질의를 SparkSQL 질의로 변환하는 단계; 및 상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하는 단계;를 포함하는 것을 특징으로 하는 SPARQL 질의 처리 수행 방법이 제공된다.
본 발명에 따르면, SparkSQL를 이용하여 대규모 트리플 데이터 기반의 빠른 응답 속도로 SPARQL 질의를 처리할 수 있는 장점이 있다.
도 1은 SparkSQL의 개략적인 구조를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 SPARQL 질의 처리 수행 시스템의 개략적인 구성을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 다른 SPARQL 질의 처리 수행 방법의 구체적인 흐름을 도시한 도면이다.
도 4 내지 도 8은 본 발명의 일 실시예에 따른 질의 변환부의 동작을 설명하기 위한 도면이다.
본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다" 또는 "포함한다" 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
이하, 본 발명의 다양한 실시예들을 첨부된 도면을 참조하여 상술한다.
도 1은 SparkSQL의 개략적인 구조를 도시한 도면이다.
SparkSQL은 구조화된 데이터를 처리하기 위한 Spark 모듈 중 하나이다. 원래는 Shark라는 이름으로 사용되었으며, Hive 기반의 질의 엔진을 Spark 기반으로 동작하도록 구현하면서 SparkSQL으로 호칭되었다. SQL 질의문과 Spark가 모두가 RDD 기반으로 값을 주고 받을 수 있기 때문에 SparkSQL은 SQL 질의문과 Spark을 혼합하여 쓸 수 있다.
도 1를 참조하면, SparkSQL은 Spark 프레임워크를 기반으로 하고 있으며, SQL을 분석 및 최적화하는 작업이 내부적으로 이루어진다. 또한, Spark 프레임워크의 장점인 캐쉬를 사용함으로써 빠른 질의문 처리에 적합하다.
도 2는 본 발명의 일 실시예에 따른 SPARQL 질의 처리 수행 시스템의 개략적인 구성을 도시한 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 SPARQL 질의 처리 수행 시스템(200)는 데이터베이스(210), 테이블 생성부(220), 질의 입력부(230), 질의 변환부(240) 및 질의 처리 수행부(250)를 포함한다.
그리고, 도 3은 본 발명의 일 실시예에 다른 SPARQL 질의 처리 수행 방법의 구체적인 흐름을 도시한 도면이다. 여기서, 상기 방법은 프로세서가 포함된 디바이스에서 수행될 수 있다.
이하, 각 구성요소 별 기능 및 각 단계 별로 수행되는 과정을 설명하기로 한다.
단계(310)에서, 데이터베이스(210)는 복수의 트리플(SPO) 데이터로 구성된 RDF(Resource Description Framework) 데이터를 저장한다.
단계(320)에서, 테이블 생성부(220)는 RDF 데이터를 파싱하여 제1 테이블 및 제2 테이블을 생성한다.
제1 테이블, 즉 property 테이블은 RDF 데이터를 구성하는 복수의 트리플 데이터의 S(subject)를 각각의 row(행)로 하고, 복수의 트리플 데이터의 P(predicate)를 각각의 column(열)으로 하며, 복수의 트리플 데이터의 O(object) 또는 NULL를 value(값)로 하는 테이블이다.
이 때, 복수의 트리플 데이터 중 하나의 트리플 데이터의 S가 i번째 row에 배치되고 하나의 트리플 데이터의 P가 j번째 column에 배치되는 경우, 하나의 트리플 데이터의 O는 i번째 row와 j번째 column의 교차하는 지점의 value일 수 있다.
일례로, 5개의 트리플 데이터(SPO)가 [Lee, graduatedFrom, seoul_Univ], [Park, wasBornOn, Seoul], [Park, spouse, Kim], [Choi, graduatedFrom, soongsil_Univ], [Choi, spouse, soongsil_Univ]인 경우, 아래의 표 1과 같은 제1 테이블이 생성될 수 있다.
ID graduatedFrom wasBornOn spouse
Lee seoul_Univ NULL NULL
Park NULL Seoul kim
Choi soongsil_Univ NULL Yoon
여기서, 상기의 표 1의 제1 테이블에 하나의 트리플 데이터 [Jeon, type,student]를 추가하는 경우, 제1 테이블은 아래의 표 2와 같을 수 있다.
ID graduatedFrom wasBornOn spouse type
Lee seoul_Univ NULL NULL NULL
Park NULL Seoul Kim NULL
Choi soongsil_Univ NULL Yoon NULL
Jeon NULL NULL NULL student
요컨대, 제1 테이블은 복수의 트리플 데이터의 P를 각각의 column로 하는 테이블로서, P의 이름이 같은 트리플들은 같은 노드에 저장될 확률이 높기 때문에 집약성(locality)이 보장되는 장점이 있다. 따라서, P를 기준으로 데이터를 질의할 경우, 같은 노드에 있을 확률이 높으며 노드간의 데이터가 이동하는 셔플을 최대한 방지할 수 있기 때문에 아래에서 설명하는 빠른 응답속도를 보장할 수 있다. 그리고 SPARQL 질의에서 P가 상수로 많이 사용되기 때문에 전체적인 성능 향상에 큰 도움이 된다. 다만, 제1 테이블에는 구조적으로 많은 NULL 값이 생길 수 있는데, 이는 Parquet 방식의 포맷을 사용하여 해결할 수 있다. Parquet 포맷은 NULL 값을 위한 메모리 공간은 할당하지 않기 때문에 공간 비용과 검색 동작을 수행하기 위한 시간비용도 절약할 수 있다.
제2 테이블, 즉, 트리플 테이블은 식별 인덱스를 각각의 row로 하고, subject, predicate, object을 column으로 하고, RDF 데이터를 구성하는 복수의 트리플 데이터의 S, P, O를 value로 하는 테이블이다. 이 때, 제2 테이블의 value 중 subject의 column의 values는 복수의 트리플 데이터의 S이고, 제2 테이블의 value 중 predicate의 column의 value는 복수의 트리플 데이터의 P이고, 제2 테이블의 value 중 object의 column의 value는 복수의 트리플 데이터의 O일 수 있다.
일례로, 3개의 트리플 데이터(SPO)가 [Lee, graduatedFrom, seoul_Univ], [Park, wasBornOn, Seoul], [Park, spouse, kim]인 경우, 아래의 표 3과 같은 제2 데이터가 생성될 수 있다.
ID subject predicate object
1 Lee graduatedFrom seoul_Univ
2 Park wasBornOn Seoul
3 Park spouse kim
단계(330)에서, 질의 입력부(230)는 SPARAL 질의를 입력받는다. 이 때, 질의 입력부(230)는 SPARAL 질의가 P를 변수로 하는 질의인지 아닌지를 판단한다.
단계(340)에서, 질의 변환부(240)는 입력된 SPARAL 질의를 SparkSQL 질의로 변환한다. 보다 상세하게, 질의 변환부(240)는 SPARAL 질의가 P를 변수로 하는 질의가 아닌 경우에만 입력된 SPARAL 질의를 SparkSQL 질의로 변환한다. 따라서, SPARAL 질의가 P를 변수로 하는 질의인 경우 질의 변환부(240)는 동작하지 않을 수 있다.
본 발명의 일 실시예에 따르면, SPARAL 질의가 S를 변수로 하는 질의인 경우, 질의 변환부(240)는, SPARAL 질의의 P와 동일한 제1 테이블의 column을 검색하고, 검색된 column의 value 중 SPARAL 질의의 O와 동일한 value를 검색하고, 검색된 value를 가지는 row를 검색하는 SparkSQL 질의로 SPARAL 질의를 변환할 수 있다.
일례로, 표 2를 참조하면, SPARAL 질의가 "서울대(seoul_Univ)를 졸업한(graduatedFrom) 사람의 검색"과 대응되는 경우, 질의 변환부(240)는, SPARAL 질의의 P(graduatedFrom)와 동일한 제1 테이블의 column(graduatedFrom)을 검색하고, 검색된 column(graduatedFrom)의 value 중 SPARAL 질의의 O(seoul_Univ)와 동일한 value(seoul_Univ)를 검색하고, 검색된 value(seoul_Univ)를 가지는 row(Lee)를 검색하는 SparkSQL 질의를 생성할 수 있다.
또한, 본 발명의 다른 실시예에 따르면, SPARAL 질의가 O를 변수로 하는 질의인 경우, 질의 변환부(240)는, SPARAL 질의의 P와 동일한 제1 테이블의 column을 검색하고, 검색된 column의 value가 NULL이 아닌 값을 가지는 적어도 하나의 row를 검색하고, 적어도 하나의 row 중 SPARAL 질의의 S와 동일한 row를 검색하고, 동일한 row와 검색된 column가 교차하는 지점의 value를 검색하는 SparkSQL 질의로 SPARAL 질의를 변환할 수 있다.
일례로, 표 2를 참조하면, SPARAL 질의가 "박씨(Park)의 배우자(spouse)가 누구인지 여부"와 대응되는 경우, 질의 변환부(240)는, SPARAL 질의의 P(spouse)와 동일한 제1 테이블의 column(spouse)을 검색하고, 검색된 column(spouse)의 value가 NULL이 아닌 값(Kim, Yoon)을 가지는 2개의 row(Park, Choi)를 검색하고, 2개의 row(Park, Choi) 중 SPARAL 질의의 S(Park)와 동일한 row(Park)를 검색하고, 동일한 row(Park)와 검색된 column(spouse)가 교차하는 지점의 value(Kim)를 검색하는 SparkSQL 질의를 생성할 수 있다.
단계(350)에서, 질의 처리 수행부(250)는 제1 테이블을 이용하여 SparkSQL 질의 처리를 수행하거나, 제2 테이블을 이용하여 SPARAL 질의 처리를 수행할 수 있다. 즉, SPARAL 질의가 P를 변수로 하는 질의가 아닌 경우 질의 처리 수행부(250)는 변환된 SparkSQL 질의 및 제1 테이블을 이용하여 SparkSQL 질의 처리를 수행하고, SPARAL 질의가 P를 변수로 하는 질의인 경우 질의 처리 수행부(250)는 SPARAL 질의 및 제2 테이블을 이용하여 SPARAL 질의 처리를 수행할 수 있다. 일례로서, 질의 처리 수행부(250)는 제1 테이블을 이용한 SparkSQL 질의 엔진 또는 제2 테이블을 이용한 SPARAL 질의 엔진을 통하여 질의 처리를 수행할 수 있다.
본 발명의 일 실시예에 따르면, 질의 처리 수행부(250)는 복수의 프로세서 장치를 포함하고, 제1 테이블의 column의 검색은 복수의 프로세서 장치에서 분산되어 수행될 수 있다. 예를 들어, 표 2를 참조하면, 질의 처리 과정에서, graduatedFrom에 대한 column의 검색 및 질의 처리 수행은 제1 프로세서 장치에서 수행되고, wasBornOn에 대한 column의 검색 및 질의 처리 수행은 제2 프로세서 장치에서 수행되고, spouse에 대한 column의 검색 및 질의 처리 수행은 제3 프로세서 장치에서 수행되고, type에 대한 column의 검색 및 질의 처리 수행은 제4 프로세서 장치에서 수행될 수 있다.
이하, 하기의 도면을 참조하여 질의 변환부(240)의 동작을 보다 상세하게 설명하기로 한다.
질의 변환부(240)는 도 4에 도시된 바와 같이 입력된 SPARQL 질의문을 SPARQL Algebra Tree로 변환한다.
일례로, 질의 변환부(240)는 도 5에 도시된 예와 같이 Jena의 API를 이용하여 SPARQL 질의문을 SPARQL Algebra Tree 형태로 변환할 수 있다. 여기서, SELECT 구문은 project 키워드로 변경되며, 'WHERE' 구문은 'bgp' 이름의 구문으로 변경된다. 그리고 질의문에 대한 트리 구조를 괄호를 사용하여 표현하고 있다.
SPARQL Algebra Tree는 SparkSQL Algebra Tree로 재구성하기 위한 과정을 거친다. 도 4에 도시된 SparkOp Tree는 SparkSQL Algebra Tree와 동일한 것이다. 트리를 재구성하는 이유는 트리의 각 노드 종류에 따라 SparkSQL 구문을 독립적으로 생성하고, 트리 구조를 통해 각각 생성된 SparkSQL 구문을 조립하기에 용이하기 때문이다.
SparkSQL Tree를 구현하기 위해서는 먼저 SPARQL Algebra Tree의 최하위의 말단 노드로부터 시작하여 최상위 노드까지 방문하는 과정을 통해 SparkOp Tree를 생성한다. 생성된 트리의 각 노드에는 SparkSQL의 질의문을 생성하기 위한 테이블 이름,column의 이름 등의 메타 데이터들을 가지고 있으므로, 마지막 과정인 SparkSQL 문을 생성할 때 사용된다.
SparkOp Tree가 생성되었으면 SparkSQL 문을 만드는 과정을 수행한다. SparkOp Tree의 최하위 노드(말단 노드)부터 질의문을 만들기 시작하는데 트리의 말단 노드는 기본적으로 모두 BGP(Basic Graph Pattern)로 구성되어 있다. BGP에서는 FILTER, UNION, LIMIT 등의 옵션을 제외한 가장 기본 패턴에 대한 SparkSQL 질의문을 생성한다. 즉, 기본적인 SELECT, WHERE, FROM 절을 생성한다. 이렇게 생성된 기본 질의문은 가명을 부여받게 되며, 트리의 상위 노드에서 Filter 등을 만나게 되면 또다시 SELECT, WHERE, FROM 절이 생성되며 FROM 위치에 앞에 생성한 가명이 위치한다. 이와 같은 형태로 완성된 SparkSQL 질의문은 아래의 표 4와 같은 sqlContext.sql 형태의 SparkSQL 함수에 String 형태로 전달되고, 내부적으로 분산 질의 처리를 수행하게 된다.
Figure 112016038904612-pat00001
이하, 세부 구성에 대해 설명하면 다음과 같다.
1. BGP
BGP는 SPARQL의 WHERE절 부분(중괄호)가 대응된다. RDF 데이터는 하나의 제1 테이블(Property 테이블)로 구성되어 있으며, 주어부(첫번째 column, S)롤 기준으로 모든 술어부(column)에 대한 목적부(value)가 하나의 row에 모두 포함되어 있다. 따라서, 도 5의 BGP와 같이, 먼저 BGP 조건들 중에서 주어부(S)가 동일한 변수인 조건들을 그룹화하며, BGP_[number] 형식으로 가명을 얻게 된다.
그리고, 각각의 그룹들은 기본적으로 SELECT, WHERE, FROM 구문을 하나씩 가지게 되며, 공유하는 주어부(S)의 변수가 가장 많은 그룹끼리 먼저 조인(join)하게 된다. 여기서, projection은 SELECT문을 의미하여 conditions은 WHERE 절을 의미한다. 앞에서 나뉘어진 그룹들을 하나씩 가져와서 주어부(S)나 목적부(O)가 변수이면 SELECT 구문을 만들게 되고, 상수이면 제1 테이블(Property 테이블)를 검색하기 위한 조건으로 WHERE절 위치에서 생성된다.
도 6은 2개의 조건을 가지고 있는 BGP를 SparkSQL로 변경한 알고리즘의 일례를 도시하고 있다. 마지막 라인에 BGP 1_0이라는 이름으로 가명을 만들어 또 다른 SELECT문에서 참고할 수 있도록 한다.
2. FILTER
SPARQL에서 FILTER와 관련된 문법은 SparkSQL에서 사용하는 문법으로 변경되어야 한다. 산술 표현(=, <, >, >=, <=, +,!=)은 SparkSQL에서 그대로 사용할 수 있기 때문에 변경하지 않는다. 그리고 논리 표현인 && 및 ||은 AND 및 OR로 변경한다. 그리고 변수는 제1 테이블(Property 테이블)에서 column 중에서 일치하는 이름으로 변경한다.
3. PROJECT
SPARQL의 SELECT 구문에 명시된 변수를 출력하기 위한 질의문을 생성해야 한다. 이를 위해, 도 6과 같이 BGP 구문에서 생성된 SELECT, FROM, WHERE로부터 생성된 결과를 PROJECT의 FROM 절로 받아들여 질의문을 생성한다. 이렇게 생성된 BGP 구문은 도 7의 예제와 같이 PROJECT의 SELECT, WHERE, FROM 절의 FROM절에 BGP 구문이 포함되어 생성되어 있는 것을 확인할 수 있다.
보다 상세하게, SPARQL의 WHERE 절에 있는 조건절에서, property인 rdf:type 변수가 아닌 상수이기 때문에 SparkSQL의 FROM 절에서 propertytable를 사용했음을 확인할 수 있다. 또한, object인 ub:Student는 propertytable에서 value로 사용되기 때문에 SparkSQL의 WHERE 절에서 rdf_type= 'ub:Student' 라는 문장으로 검색됨을 확인할 수 있다.
4. ORDER BY
SPARQL에서의 ORDER BY는 SparkSQL의 ORDER BY와 동일하다. 따라서, 정렬의 기준이 되는 변수는 SELECT 구문의 변수 이름과 동일한 형태로 ORDER BY 구문 뒤에 배치되어 동작한다. 아래의 표 5는 ORDER BY를 사용하는 간단한 예제이다.
Figure 112016038904612-pat00002
5. UNION
SPARQL의 UNION 역시 SparkSQL의 UNION과 동일하다. UNION의 왼쪽과 오른쪽의 조건문들은 BGP와 동일한 방법으로 변환된다.
6. OPTIONAL
SPARQL에서 OPTIONAL은 SparkSQL의 LEFT JOIN과 동일하다. 그리고, OPTIONAL 구문 내의 조건문에 변수들이나 FILTER가 있으면 SparkSQL 문의 ON과 WHERE절 위치에 산술 표현으로 질의문올 생성한다.
7. Slice
SPARQL에서 결과값을 제한할 수 있는 OFFSET과 LIMIT은 SparkSQL에서도 같은 형태로 쓰인다. SparkSQL에서는 도 8에서와 같이 내부적으로는 Catalyst 라는 질의문 최적화 툴을 사용하여 논리적 및 물리적 레이어 단계에서 최적화 과정을 거친다. 논리적 단계에서는 constant folding, predicate pushdown, projec-tion pruning, null propagation 등의 최적화 작업을 거 치며, 물리적 단계에서는 조인 단계에서의 브로드캐스트(broadcast)나 pipelining projection, filter 등의 물리적인 네트워크나 I/O의 부하를 줄이기 위한 내부적인 최적화 작업을 거치게 된다.
정리하면, 본 발명의 일 실시예에 따른 SPARQL 질의 처리 수행 시스템(300) 및 방법은 Spark 플랫폼을 기반으로 하고 있으며, 따라서 Spark의 장점들을 사용할 수 있다. SparkSQL은 Spark 기반의 고수준 분산 질의 엔진으로서, 기존 데이터베이스에서 사용하는 일반 SQL 문을 활용한 질의가 가능하며, 추후 추가적으로 필요한 기능들을 비교적 쉽게 추가할 수 있으며, SparkSQL을 사용하면 내부적으로 질의문 최적화 과정을 거치기 때문에 사용자 입장에서 특별한 튜닝과정 없이 최적화된 성능을 얻을 수 있다. 또한, 데이터를 세부적으로 다루기 위해서 하위 수준인 Spark의 기능들도 이질감 없이 동시에 사용이 가능하기 때문에 다른 서비스와의 호환성 면에서도 뛰어난 장점이 있다.
또한, 앞서 설명한 기술적 내용들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예들을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 하드웨어 장치는 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (15)

  1. 복수의 트리플(SPO) 데이터로 구성된 RDF 데이터를 파싱하여 상기 복수의 트리플 데이터의 P를 각각의 column로 하는 제1 테이블을 생성하는 테이블 생성부;
    입력된 SPARAL 질의를 SparkSQL 질의로 변환하는 질의 변환부; 및
    상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하는 질의 처리 수행부;를 포함하되,
    상기 제1 테이블의 row 각각은 상기 복수의 트리플 데이터의 S이고, 상기 제1 테이블의 value 중 일부의 value는 상기 복수의 트리플 데이터의 O이고, 상기 제1 테이블의 value 중 나머지의 value는 null인 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템.
  2. 삭제
  3. 제1항에 있어서,
    상기 복수의 트리플 데이터 중 하나의 트리플 데이터의 S가 i번째 row에 배치되고 상기 하나의 트리플 데이터의 P가 j번째 column에 배치되는 경우, 상기 하나의 트리플 데이터의 O는 상기 i번째 row와 상기 j번째 column의 교차하는 지점의 value인 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템.
  4. 제3항에 있어서,
    상기 SPARAL 질의가 P를 변수로 하는 질의가 아닌 경우에 상기 질의 변환부는 상기 SPARAL 질의를 SparkSQL 질의로 변환하고, 상기 질의 처리 수행부는 상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하는 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템.
  5. 청구항 5은(는) 설정등록료 납부시 포기되었습니다.
    제4항에 있어서,
    상기 SPARAL 질의가 S를 변수로 하는 질의인 경우, 상기 질의 변환부는, 상기 SPARAL 질의의 P와 동일한 상기 제1 테이블의 column을 검색하고, 상기 검색된 column의 value 중 상기 SPARAL 질의의 O와 동일한 value를 검색하고, 상기 검색된 value를 가지는 row를 검색하는 상기 SparkSQL 질의로 변환하는 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템.
  6. 청구항 6은(는) 설정등록료 납부시 포기되었습니다.
    제4항에 있어서,
    상기 SPARAL 질의가 O를 변수로 하는 질의인 경우, 상기 질의 변환부는, 상기 SPARAL 질의의 P와 동일한 상기 제1 테이블의 column을 검색하고, 상기 검색된 column의 value가 NULL이 아닌 값을 가지는 적어도 하나의 row를 검색하고, 상기 적어도 하나의 row 중 상기 SPARAL 질의의 S와 동일한 row를 검색하고, 상기 동일한 row와 상기 검색된 column이 교차하는 지점의 value를 검색하는 상기 SparkSQL 질의로 변환하는 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제5항 또는 제6항에 있어서,
    상기 질의 처리 수행부는 복수의 프로세서 장치를 포함하고, 상기 제1 테이블의 column의 검색은 상기 복수의 프로세서 장치에서 분산되어 수행되는 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템.
  8. 복수의 트리플(SPO) 데이터로 구성된 RDF 데이터를 파싱하여 제1 테이블 및 제2 테이블을 생성하는 테이블 생성부;
    SPARAL 질의를 입력받는 질의 입력부;
    입력된 SPARAL 질의를 SparkSQL 질의로 변환하는 질의 변환부; 및
    상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하거나, 상기 제2 테이블을 이용하여 상기 SPARAL 질의 처리를 수행하는 질의 처리 수행부;를 포함하되,
    상기 제1 테이블의 row 각각은 상기 복수의 트리플 데이터의 S이고, 상기 제1 테이블의 column 각각은 상기 복수의 트리플 데이터의 P이고, 상기 제1 테이블의 value 중 일부의 value는 상기 복수의 트리플 데이터 중 O이고, 상기 제1 테이블의 value 중 나머지의 value는 null이고,
    상기 제2 테이블의 row 각각은 식별 인덱스이고, 상기 제2 테이블의 column 각각은 subject, predicate, object이고, 상기 제2 테이블의 value 중 subject의 column의 values는 상기 복수의 트리플 데이터의 S이고, 상기 제2 테이블의 value 중 predicate의 column의 value는 상기 복수의 트리플 데이터의 P이고, 상기 제2 테이블의 value 중 object의 column의 value는 상기 복수의 트리플 데이터의 O인 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템.
  9. 제8항에 있어서,
    상기 SPARAL 질의가 predicate를 변수로 하는 질의가 아닌 경우 상기 질의 변환부는 상기 SPARAL 질의를 SparkSQL 질의로 변환하고, 상기 질의 처리 수행부는 상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하고,
    상기 SPARAL 질의가 predicate를 변수로 하는 질의인 경우, 상기 질의 처리 수행부는 상기 제2 테이블을 이용하여 상기 SPARAL 질의 처리를 수행하는 것을 특징으로 하는 SPARQL 질의 처리 수행 시스템.
  10. 프로세서가 포함된 디바이스에서, SPARQL 질의 처리를 수행하는 방법에 있어서,
    복수의 트리플(SPO) 데이터로 구성된 RDF 데이터를 파싱하여 상기 복수의 트리플 데이터의 P를 각각의 column로 하는 제1 테이블을 생성하는 단계;
    입력된 SPARAL 질의를 SparkSQL 질의로 변환하는 단계; 및
    상기 제1 테이블을 이용하여 상기 SparkSQL 질의 처리를 수행하는 단계;를 포함하되,
    상기 제1 테이블의 row 각각은 상기 복수의 트리플 데이터의 S이고, 상기 제1 테이블의 value 중 일부의 value는 상기 복수의 트리플 데이터의 O이고, 상기 제1 테이블의 value 중 나머지의 value는 null인 것을 특징으로 하는 SPARQL 질의 처리 수행 방법.
  11. 삭제
  12. 제10항에 있어서,
    상기 복수의 트리플 데이터 중 하나의 트리플 데이터의 S가 i번째 row에 배치되고 상가 하나의 트리플 데이터의 P가 j번째 column에 배치되는 경우, 상기 하나의 트리플 데이터의 O는 상기 i번째 row와 상기 j번째 column의 교차하는 지점의 value인 것을 특징으로 하는 SPARQL 질의 처리 수행 방법.
  13. 제12항에 있어서,
    상기 SPARAL 질의가 P를 변수로 하는 질의가 아닌 경우, 상기 변환하는 단계는 상기 SPARAL 질의의 P와 동일한 상기 제1 테이블의 column을 검색하고, 상기 검색된 column의 value 중 상기 SPARAL 질의의 O와 동일한 value를 검색하고, 상기 검색된 value를 가지는 row를 검색하는 상기 SparkSQL 질의로 변환하는 것을 특징으로 하는 SPARQL 질의 처리 수행 방법.
  14. 제12항에 있어서,
    상기 SPARAL 질의가 O를 변수로 하는 질의인 경우, 상기 변환하는 단계는, 상기 SPARAL 질의의 P와 동일한 상기 제1 테이블의 column을 검색하고, 상기 검색된 column의 value가 NULL이 아닌 값을 가지는 적어도 하나의 row를 검색하고, 상기 적어도 하나의 row 중 상기 SPARAL 질의의 S와 동일한 row를 검색하고, 상기 동일한 row와 상기 검색된 column이 교차하는 지점의 value를 검색하는 상기 SparkSQL 질의로 변환하는 것을 특징으로 하는 SPARQL 질의 처리 수행 방법.
  15. 제10항, 제12항 내지 제14항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
KR1020160049318A 2016-04-22 2016-04-22 SparkSQL 기반의 SPARQL 질의 처리 수행 시스템 KR101718119B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160049318A KR101718119B1 (ko) 2016-04-22 2016-04-22 SparkSQL 기반의 SPARQL 질의 처리 수행 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160049318A KR101718119B1 (ko) 2016-04-22 2016-04-22 SparkSQL 기반의 SPARQL 질의 처리 수행 시스템

Publications (1)

Publication Number Publication Date
KR101718119B1 true KR101718119B1 (ko) 2017-03-21

Family

ID=58502269

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160049318A KR101718119B1 (ko) 2016-04-22 2016-04-22 SparkSQL 기반의 SPARQL 질의 처리 수행 시스템

Country Status (1)

Country Link
KR (1) KR101718119B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107944004A (zh) * 2017-12-07 2018-04-20 深圳乐信软件技术有限公司 Spark‑SQL调度的方法、系统、设备及存储介质
CN109408537A (zh) * 2018-10-18 2019-03-01 网易(杭州)网络有限公司 基于Spark SQL的数据处理方法及装置、存储介质及计算设备
CN111400299A (zh) * 2020-06-04 2020-07-10 成都四方伟业软件股份有限公司 一种多种数据融合质量检验的方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160027455A (ko) * 2014-08-29 2016-03-10 한국전자통신연구원 대용량 rdf 데이터 관리 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160027455A (ko) * 2014-08-29 2016-03-10 한국전자통신연구원 대용량 rdf 데이터 관리 방법 및 장치

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107944004A (zh) * 2017-12-07 2018-04-20 深圳乐信软件技术有限公司 Spark‑SQL调度的方法、系统、设备及存储介质
CN107944004B (zh) * 2017-12-07 2020-09-29 深圳乐信软件技术有限公司 Spark-SQL调度的方法、系统、设备及存储介质
CN109408537A (zh) * 2018-10-18 2019-03-01 网易(杭州)网络有限公司 基于Spark SQL的数据处理方法及装置、存储介质及计算设备
CN111400299A (zh) * 2020-06-04 2020-07-10 成都四方伟业软件股份有限公司 一种多种数据融合质量检验的方法及系统

Similar Documents

Publication Publication Date Title
KR100493882B1 (ko) Xml 데이터 검색을 위한 질의 처리 방법
Simitsis et al. State-space optimization of ETL workflows
EP3243305B1 (en) Distributed storage and distributed processing query statement reconstruction in accordance with a policy
US7730055B2 (en) Efficient hash based full-outer join
US8965918B2 (en) Decomposed query conditions
US7577647B2 (en) Combining nested aggregators
US20070038658A1 (en) Communication optimization for parallel execution of user-defined table functions
CN107169033A (zh) 基于数据模式转换和并行框架的关系数据查询优化方法
Hölsch et al. An algebra and equivalences to transform graph patterns in neo4j
EP2788896B1 (en) Fuzzy full text search
CN107491476B (zh) 一种适用于多种大数据管理系统的数据模型转换及查询分析方法
KR101718119B1 (ko) SparkSQL 기반의 SPARQL 질의 처리 수행 시스템
Kim et al. Similarity query support in big data management systems
Ma et al. G-SQL: Fast query processing via graph exploration
Botoeva et al. Ontology-based data access–Beyond relational sources
Bondiombouy et al. Multistore big data integration with CloudMdsQL
Liu et al. PAIRPQ: an efficient path index for regular path queries on knowledge graphs
Chen et al. A bi-labeling based XPath processing system
Kim et al. Semantic query transformations for increased parallelization in distributed knowledge graph query processing
Mulay et al. SPOVC: a scalable RDF store using horizontal partitioning and column oriented DBMS
CN112835920B (zh) 基于混合存储模式的分布式sparql查询优化方法
US11379485B2 (en) Inferred predicates for query optimization
CN116795859A (zh) 数据分析方法、装置、计算机设备和存储介质
Przyjaciel-Zablocki et al. TriAL-QL: distributed processing of navigational queries
Oh et al. Job-optimized map-side join processing using mapreduce and hbase with abstract RDF data

Legal Events

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