KR20080051063A - 통합 XQuery 질의 처리 방법 - Google Patents

통합 XQuery 질의 처리 방법 Download PDF

Info

Publication number
KR20080051063A
KR20080051063A KR1020070122823A KR20070122823A KR20080051063A KR 20080051063 A KR20080051063 A KR 20080051063A KR 1020070122823 A KR1020070122823 A KR 1020070122823A KR 20070122823 A KR20070122823 A KR 20070122823A KR 20080051063 A KR20080051063 A KR 20080051063A
Authority
KR
South Korea
Prior art keywords
node
result
xquery
generation
parent
Prior art date
Application number
KR1020070122823A
Other languages
English (en)
Other versions
KR100882589B1 (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 KR20080051063A publication Critical patent/KR20080051063A/ko
Application granted granted Critical
Publication of KR100882589B1 publication Critical patent/KR100882589B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/211Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 통합 XQuery 질의 처리 방법에 관한 것이다. 본 발명은, 관계형 데이터베이스의 영속 XML 데이터를 질의 대상으로 하는 XML 경로 표현식의 처리 과정에서, 중간 결과로서 관계형 데이터베이스로부터 질의 처리에 필요한 영속 노드만을 가져 와서 메모리에 적재하는 제 1 단계; XQuery 생성자의 처리 과정에서, 중간 결과로서 새로운 생성 노드를 메모리에 구성하는 제 2 단계; XQuery 생성자의 내부에서 관계형 데이터베이스의 영속 노드를 나타내는 XML 경로 표현식이 사용되는 경우, 상기 관계형 데이터베이스로부터 가져온 영속 노드를 상기 XQuery 생성자로부터 생성된 생성 노드에 연결하여 통합 XQuery 결과의 전체 트리를 구성하는 제 3 단계; 및 상기 통합 XQuery 결과를 중간 결과로서 활용하여 계속적인 XML 경로 표현식 질의를 처리하는 제 4 단계를 포함하는 통합 XQuery 질의 처리 방법을 제공한다.
XML, 관계형 데이터베이스, 통합 XQuery, 영속 노드, 생성 노드, 경로 표현식

Description

통합 XQuery 질의 처리 방법{METHOD FOR MANAGING INTERGRATED XQUERY}
본 발명은, 통합 XQuery 질의 처리 방법에 관한 것이다.
본 발명은 정보통신부 및 정보통신연구진흥원의 IT신성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2005-S-405-02, 과제명: 차세대 인터넷 서버 기술 개발].
최근, 인터넷이 확산함에 따라 XML 데이터의 생성 및 유통이 급격하게 증가하였고, 그에 따라 대량의 XML 데이터를 관리할 필요성이 대두하고 있다. 따라서, 관리하는 XML 데이터의 양이 많아질수록 데이터의 빠른 검색, 여러 사용자 간의 공유, 백업 및 고장 시 복구 등 기존의 관계형 데이터베이스에서 제공하던 관리 기능이 필요하게 되어, 관계형 데이터베이스를 기반으로 하는 XML 데이터베이스에 대한 연구가 활발히 수행되고 있다.
대량의 XML 데이터를 관리하는 XML 데이터베이스에서는, 대량의 XML 데이터를 대상으로 검색이 수행되기 때문에, 검색 조건 또는 사용자의 결과 반환 요구 형태에 따라 그 결과도 대량이 되는 경우가 빈번히 발생한다.
특히, 경로 표현식 및 FLWOR 절 등의 복잡한 질의 기능을 제공하는 XQuery 질의 언어를 지원하며 관계형 데이터베이스를 기반으로 하는 XML 데이터베이스의 경우에는, 하나의 XQuery 문장을 처리하는 데 있어 관계형 데이터베이스에서 한번에 원하는 영속 노드 결과를 얻어 와서 최종 결과를 만들어 내는 방식으로 XQuery 질의 처리를 할 수 있는 것이 아니라, XQuery 문장의 주요 구문을 처리하는 과정에서 계속하여 관계형 데이터베이스에 접속하여 부분적으로 중간 결과들을 만들어 내고, 그러한 중간 결과를 대상으로 계속적인 질의 처리를 수행하여 최종적인 XQuery 결과를 만들어 내는 방식으로 질의 처리를 수행할 수밖에 없다.
이와 같이, 복잡한 XQuery 질의문을 처리하면서 계속하여 관계형 데이터베이스로부터 중간 결과를 만들어 내고 중간 결과를 대상으로 계속적인 질의 처리를 수행하여 최종 결과를 만들어 내는 질의 처리 방식에서는, 가능한 관계형 데이터베이스로부터 얻어온 영속 노드 결과의 양을 적게 하여 메모리에 적재하는 방식으로 XQuery 질의 처리를 수행하는 것이 XQuery 질의 처리 성능을 향상시키는 가장 핵심적인 방안이다.
종래의 관계형 데이터베이스를 기반으로 하는 XML 데이터베이스에서는, 최적화된 질의 실행 계획을 생성하고 수행함으로써, 관계형 데이터베이스로부터 XML 데이터베이스로 전달되는 결과의 개수를 줄이거나 질의 처리 수행 시간을 줄이는 방식으로 검색 성능을 향상하려는 노력을 하고 있지만, 검색된 중간 및 최종 검색 결과에 대해서는 대체로 모든 결과 트리를 한꺼번에 메모리에 적재하는 방식으로 처리하고 있다.
그러나, 트리 구조를 갖는 XML 모델의 특성상 검색 결과에 해당하는 노드가 자식 및 자손 노드를 많이 갖는 노드, 즉 크기가 큰 서브 트리인 경우, 이러한 서브 트리를 전부 메모리에 적재하게 되면 여전히 결과가 너무 많게 된다. 또한 서브 트리의 많은 노드의 대부분은, 계속적인 질의 처리를 수행하는데 불필요한 노드인 경우가 많다.
따라서, XML 데이터베이스의 XQuery 질의 처리 시스템이 아무리 최적화된 검색을 수행해 주더라도 전체 중간 결과 서브 트리가 한꺼번에 메모리로 적재가 된다면 성능에 치명적인 문제가 발생하게 되며, 중간 결과 노드의 서브 트리 전체를 한꺼번에 메모리에 적재하는 것보다는 필요한 중간 결과 노드만을 생성해서 메모리에 적재하는 것이 바람직하다.
또한, XQuery에서는 검색 결과를 재구성할 수 있도록 생성자 기능을 제공하며, XQuery 질의문에서 생성자를 사용하게 되면, 관계형 데이터베이스로부터 구성한 영속 노드 결과와 함께 새로운 생성 노드 결과가 메모리에 구성이 되며, 생성 노드 결과와 영속 노드가 서로 부모/자식 노드 관계 또는 소유 엘리먼트/소속 애트리뷰트 관계로 서로 연관이 되어 전체 XQuery 결과를 구성하게 된다.
이와 같이, 영속 노드가 생성 노드와 연관이 되어 구성된 통합 XQuery 결과는 중간 결과로서 활용이 되어 다시 계속적인 질의 처리 과정을 거치게 되며, XML 데이터베이스의 XQuery 질의 처리 시스템에서 영속 노드, 생성 노드 또는 영속 노드와 생성 노드가 결합된 통합 XQuery 결과 노드 등의 노드 종류에 무관하게 질의 처리를 수행할 수 있는 방법이 필요하게 된다.
따라서, 본 발명에서는 관계형 데이터베이스에서 영속적으로 관리되는 XML 데이터로부터 XQuery 질의 처리에 꼭 필요한 영속 노드만을 메모리에 적재하고, 영속 노드 결과와 XQuery 생성자에 의해서 구성되는 생성 노드 결과를 통합하여 통합 XQuery 결과를 구성하고, 이와 같이 구성된 통합 XQuery 결과를 중간 결과로서 활용하여 계속적인 XQuery 질의 처리를 수행하여 최종적인 XQuery 결과를 구할 수 있는 방안을 제시하고자 한다.
본 발명은, 상기한 문제점을 해결하기 위하여 제안된 것으로, 관계형 데이터베이스를 기반으로 하고 XQuery를 질의 언어로서 지원하는 XML 데이터베이스에서, 관계형 데이터베이스에 관리되는 XML 데이터로부터 XQuery 질의 처리에 꼭 필요한 영속 노드만을 메모리에 적재하고, 또한 XQuery 생성자에 의해 메모리에 구성되는 생성 노드 결과를 영속 노드 결과와 통합하여 통합 XQuery 결과를 구성하는 방법, 그리고 이를 중간 결과로서 활용하여 계속적인 XQuery 질의 처리를 수행하는 방법을 제공하는데 그 목적이 있다.
상기의 목적을 달성하기 위하여, 본 발명에 따른 통합 XQuery 질의 처리 방법은, 관계형 데이터베이스의 영속 XML 데이터를 질의 대상으로 하는 XML 경로 표현식의 처리 과정에서, 중간 결과로서 관계형 데이터베이스로부터 질의 처리에 필요한 영속 노드만을 가져 와서 메모리에 적재하는 제 1 단계; XQuery 생성자의 처리 과정에서, 중간 결과로서 새로운 생성 노드를 메모리에 구성하는 제 2 단계; XQuery 생성자의 내부에서 관계형 데이터베이스의 영속 노드를 나타내는 XML 경로 표현식이 사용되는 경우, 상기 관계형 데이터베이스로부터 가져온 영속 노드를 상기 XQuery 생성자로부터 생성된 생성 노드에 연결하여 통합 XQuery 결과의 전체 트리를 구성하는 제 3 단계; 및 상기 통합 XQuery 결과를 중간 결과로서 활용하여 계속적인 XML 경로 표현식 질의를 처리하는 제 4 단계를 포함한다.
상기와 같은 본 발명은, 관계형 데이터베이스를 기반으로 하며 XQuery를 질의 언어로서 지원하는 XML 데이터베이스에서 관계형 데이터베이스에서 영속적으로 관리되는 XML 데이터로부터 영속 노드 결과의 메모리 적재 시에 꼭 필요한 영속 노드만을 메모리에 적재하므로써, 메모리에 적재된 영속 노드가 비단말 노드인 경우에도 모든 자식 및 자손 노드를 얻어 오지 않고 해당 영속 노드만을 얻어 와도 계속된 질의 처리가 가능하여 필요 없는 영속 노드의 메모리 적재를 방지하여 전체적인 XQuery 질의 처리 성능을 향상시킬 수 있는 효과가 있으며, 또한 영속 노드 결과와 생성 노드 결과가 통합된 통합 XQuery 결과에 대하여 일관된 질의 처리가 가능하게 하는 효과가 있다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 더욱 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 다양한 실시예들을 상세히 설명하기로 한다.
도 1은, 본 발명에 따른 관계형 데이터베이스로부터의 영속 노드 결과와 XQuery 생성자에 의한 생성 노드 결과를 통합하여, 통합 XQuery 결과를 구성하는 과정을 나타내는 일실시예 흐름도이다.
도 1에 도시된 바와 같이, 본 발명에 따른 통합 XQuery 결과 구성 방법은, 사용자가 입력한 XQuery 질의를 구문 분석하여 구문 분석 트리를 구성하는 단계(102), 상기 구문 분석 트리의 노드를 하나씩 방문하며 XQuery 질의 처리를 수행하는 단계(103) 및 상기 방문한 노드가 구문 분석 트리의 마지막 노드인지를 판단하는 단계(104)를 포함한다.
그리고, 상기 본 발명에 따른 통합 XQuery 결과 구성 방법은, 상기 판단 결과 마지막 노드가 아닌 경우에, 상기 방문한 노드의 노드 타입을 검사하는 단계(105)를 포함하고, 상기 판단 결과 상기 방문한 노드의 노드 타입이 생성자인 경우에 생성 노드를 구성하고(109), 상기 판단 결과 상기 방문한 노드 타입이 경로 표현식인 경우에 질의 대상이 무엇인지를 판단한다(106).
그리고, 상기 본 발명에 따른 통합 XQuery 결과 구성 방법은, 상기 판단 결과 상기 질의 대상이 영속 노드인 경우에 데이터베이스로부터 영속 노드를 가져 와서 메모리에 구성하고(108), 상기 질의 대상이 생성 노드인 경우에 이미 메모리에 구성된 생성 노드 트리의 모든 노드를 방문하며 결과 노드를 구성한다(107).
그리고, 상기 본 발명에 따른 통합 XQuery 결과 구성 방법은, 상술한 106, 107, 108, 109의 과정들이 완료되면, 생성자 내부인지를 검사하고(110), 상기 검사 결과 생성자 내부이면 상기 메모리에 구성된 생성 노드 또는 영속 노드를 상위 생성 노드와 연결하고(111), 상기 검사 결과 생성자 내부가 아니면 상기 103 단계로 복귀한다.
마지막으로, 상기 103 단계로 복귀하여, 방문한 노드가 마지막 노드라고 판단되는 경우에(104), 상기 XQuery 질의 처리 절차를 종료한다(112)
상술한 과정들 중, 생성 노드 또는 영속 노드를 생성자 내부에서 상위 생성 노드와 연결하는 과정(111)은, W3C에서 제정한 DOM(Document Object Model) 규격 또는 XDM(XQuery Data Model) 규격에 따라, 부모/자식 노드 또는 소유 엘리먼트/소속 애트리뷰트 관계가 될 수 있으며, 생성 노드의 노드 유형과 영속 노드의 노드 유형에 따라 결정된다. 생성 노드의 노드 유형과 영속 노드의 노드 유형에 대해서는, 후술하는 도 8의 영속 노드와 생성 노드의 상속 및 연관 관계도를 참조하여 자세히 설명하기로 한다.
도 2는, 본 발명에 따른 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위하여, 관계형 데이터베이스를 기반으로 하는 XML 데이터베이스에서 영속적으로 관리되는 XML 데이터의 일실시예이다.
도 2에 도시된 바와 같이, 임의의 XML 데이터는, 루트 엘리먼트가 "users(사용자들)" 엘리먼트(201)이며, "users(사용자들)" 엘리먼트(201)는, 3개의 "user(사용자)" 엘리먼트(202-1, 202-2, 202-3)를 자식 노드로 갖고 있으며, 각 "user(사용자)" 엘리먼트(202-1, 202-2, 202-3)는, 서로 다른 값을 갖는 "id(식별자)" 엘리먼트(203-1, 203-2, 203-3), "name(이름)" 엘리먼트(205-1, 205-2, 205-3), "rating" 엘리먼트(204-1, 204-2, 204-3)를 자식 노드로 갖고 있다.
도 3은, 본 발명에 따른 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위하여 관계형 데이터베이스로부터의 영속 노드 결과와 XQuery 생성자에 의한 생성 노드 결과의 통합이 필요한 XQuery 질의의 일실시예이며, 상기한 도 2의 XML 데이터에 관리되는 모든 사용자 중에서 식별자가 "U01"인 사용자(202-1)의 이름(205-1)을 반환하라는 의미를 갖는 XQuery 질의문이다.
도 3에 도시된 XQuery 질의문(301)은 다음과 같이 모두 3개의 경로 표현식을 포함하고 있다.
- fn:doc('users.xml')/users/user
- $user/id
- $user/name
이와 같이, 하나의 XQuery 질의에는 여러 개의 XML 경로 표현식이 서로 변수에 의해서 연관을 가지면서 사용이 되며, 맨 마지막에 return 절에서 사용이 된 $user/name 경로 표현식(303)은 최종 결과를 만들어 내는데 사용이 되는 경로 표현식이지만, 이외의 경로 표현식은 최종 결과를 만들어 내기 이전에 중간 결과를 만들어 내는 경로 표현식이다.
따라서, 하나의 XQuery 질의에는, 최종 결과를 만들어 내는 경로 표현식도 사용이 되고, 최종 결과에는 포함되지 않고 중간 결과만을 만들어 내는 경로 표현식도 사용된다. 즉, 관계형 데이터베이스를 기반으로 하는 XML 데이터베이스에서 XQuery 질의 처리 시에는, 하나의 XQuery 질의문을 처리하는 과정에서 여러 번 관계형 데이터베이스로부터 중간 결과인 영속 노드를 메모리에 적재하고, 이러한 중간 결과를 다음 경로 표현식을 처리하기 위한 대상으로 활용하게 된다.
이런 상황에서는, 관계형 데이터베이스에서 경로 표현식이 나타내는 노드의 서브 트리를 모두 가져오게 되면, 불필요한 노드들까지 데이터베이스에서 메모리로 적재되기 때문에, 성능에 치명적인 문제가 된다. 예를 들면, 도 3의 첫 번째 경로 표현식은, 모든 user 엘리먼트를 중간 결과로서 반환하게 되며, user 엘리먼트는 id, name, rating 엘리먼트를 자식 노드로서 가지고 있다. 상기한 엘리먼트 중에서 id와 name 엘리먼트는, 각각 where절과 return절에서 사용이 되지만, rating 엘리먼트는, 최종 XQuery 결과를 만드는데 전혀 사용이 되지 않는다. 따라서, 각 경로 표현식을 만족하는 노드만을 중간 결과로서 만들어 내는 것이 당장은 필요 없는 노드를 관계형 데이터베이스로부터 메모리에 적재하지 않음으로써 전체적인 XQuery 질의 처리 성능을 향상시킬 수 있게 된다.
도 4는, 도 3의 XQuery 질의(301)를 처리한 최종 결과로서 얻어지는 통합 XQuery 결과의 모습을 나타낸다. 도 4의 통합 XQuery 결과는, XQuery 생성자에 의해 구성된 생성 노드인 results 엘리먼트(401)와 관계형 데이터베이스에 관리되는 XML 데이터로부터 메모리에 적재된 영속 노드인 user 엘리먼트(402)가 부모/자식 관계로서 연관되어 전체 결과 트리가 구성된 모습을 갖는다. 그리고, 영속 노드인 user 엘리먼트(402)는, 관계형 데이터베이스 상에서 영속 노드간 관계로는 영속 노드인 id, name, rating 엘리먼트(403)를 자식 노드로서 갖고 있으며, 본 발명에 따르면 XQuery 질의 처리의 중간 및 최종 질의 처리 결과를 나타내는 트리에는 포함이 되지 않고, 최종적으로 사용자가 결과를 가져 가는 시점에서 메모리에 적재되어 사용자에게 제공이 된다.
도 5는, 본 발명에 따른 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하 기 위하여 관계형 데이터베이스로부터의 영속 노드 결과와 XQuery 생성자에 의한 생성 노드 결과를 통합하여 통합 XQuery 결과를 구성하고 구성된 통합 XQuery 결과를 중간 결과로서 활용하여 추가적인 XQuery 표현식에 대한 질의 처리를 수행하는 XQuery 질의의 일실시예(501)이며, 도 2의 XML 데이터에 관리되는 모든 사용자 중에서 식별자가 'U01'인 사용자의 이름을 반환하라는 의미를 갖는 도 3의 XQuery 질의와는 같은 의미를 가지면서 구문이 상이한 XQuery 질의이다.
도 5의 질의에서, 경로 표현식 "$r/user/id/.."(503)는 생성 노드인 results(502)에 대해서 자식 노드인 영속 노드 user를 구하고, 그 자식 노드인 영속 노드인 id를 구하고, 그 부모 노드인 영속 노드 user를 구하라는 뜻을 갖는다. 그러나, 만일 질의가 $r/user/.. 이라면, 생성 노드인 results(502)에 대해서 자식 노드인 영속 노드 user를 구하고, 그 부모 노드인 생성 노드 results(502)를 구해야 한다. 이와 같은 경우 영속 노드인 user의 영속 노드 부모인 users를 구하면 결과가 잘못된 것이 된다.
따라서, 본 발명에서는 이와 같은 문제를 해결하기 위하여, 메모리에 적재된 영속 노드가 XQuery 생성자 내부에서 참조가 되는 경우에, 상위 생성 노드와의 관계를 연관 지을 수 있도록, 영속 노드의 속성으로 생성 부모 노드 참조와 생성 소유 엘리먼트 참조를 갖도록 하며, 이에 대해서는 후술하는 도 8을 참조하여 자세히 설명하기로 한다.
도 6, 도 7 및 도 8은, 관계형 데이터베이스를 기반으로 하며 XQuery를 질의 언어로서 지원하는 XML 데이터베이스에서, 가능한 관계형 데이터베이스로부터는 중 간 영속 결과를 적게 메모리에 적재하고, XQuery 생성자에 의해 생성된 생성 노드와 관계형 데이터베이스로부터 적재된 영속 노드 간에는 구조 정보를 XQuery 질의문에서 의미한 대로 표현해 주기 위하여 본 발명의 통합 XQuery 결과 구성 및 질의 처리 방법에서 제시하는 중간 결과 구성 및 관리를 위한 자료 구조이다.
도 6은, 본 발명에 따른 통합 XQuery 결과 구성 및 질의 처리 방법에서 제안하는 XQuery 결과 아이템의 일실시예 구성도이다.
본 발명에 따른 XQuery 결과 아이템(Result item)(601)은 노드 종류에 따라서 생성 노드(Constructed node)(602), 영속 노드(Persistent node)(603) 또는 원자형 값(Atomic value)(604)을 XQuery 결과로서 갖게 되며, 상기 원자형 값(604)은, 노드가 아닌 원자형 타입, 즉 정수형(Integer)(606), 부동 소수형(Float)(607), 문자열 형(String)(605) 등의 값을 나타내며, 상기 원자형 타입은, W3C에서 제정한 XML 스키마 규격을 따른다.
도 7은 본 발명에 따른 통합 XQuery 결과 구성 및 질의 처리 방법에서 제안하는 XQuery 결과 순서열의 일실시예 구성도이다.
본 발명에 따른 XQuery 결과 순서열(701)은, 포함하는 XQuery 결과 아이템(702)이 순서를 갖는 순서열이며, 각 XQuery 결과 아이템(702)의 노드 종류에 따라서 생성 노드(704), 영속 노드(705,706), 생성 노드와 영속 노드가 통합이 된 통합 노드 트리(704) 또는 원자형 값(703)을 XQuery 결과로서 갖게 된다.
전술한 바와 같이 통합 XQuery 결과인 경우, 생성 노드 간 또는 생성 노드와 영속 노드 간에는 부모 자식 관계가 생성 부모 노드 참조 속성 및 자식 노드 참조 속성에 의해서 메모리 참조에 의한 부모 자식 관계가 표현이 되며, 영속 노드와 영속 노드간 부모 자식 관계는 노드 식별자로서 표현이 되며, 메모리 참조 관계로는 나타내지 않는다. 또한, 전술한 바와 같이 불필요한 노드의 메모리 적재를 피하기 위하여 메모리에 적재된 영속 노드(705)의 자식 및 자손 노드(706)는 메모리에 적재하지 않고 필요한 상황이 되면 메모리에 적재하게 된다.
도 8은, 본 발명에 따른 통합 XQuery 결과 구성 및 질의 처리 방법에서 제안하는 XQuery 결과를 나타내는 생성 노드(CNode)(801)와 영속 노드(XNode)(810)의 자료 구조, 및 생성 노드(801)와 영속 노드(810)의 연관 관계를 나타내는 일실시예 관계도이다.
도 8에서 보는 바와 같이, 생성 노드(801)의 노드 타입으로는 엘리먼트(CElement)(802), 애트리뷰트(CAttribute), 주석(CComment), 처리 명령어(CProcesing Instruction), 텍스트(CText)가 있으며, 영속 노드(810)의 노드 타입으로는 엘리먼트(XElement)(811), 애트리뷰트(XAttribute)(812), 주석(XComment)(813), 처리 명령어(XProcesing Instruction)(814), 텍스트(XText)(815), 문서 노드(XDocument)(816)가 있다.
영속 노드와 영속 노드간의 부모 자식 관계는, 영속 노드가 고유하게 가지고 있는 노드 식별자에 의해서 구분이 되며, 메모리 참조 관계로는 표현하지 않는다.
생성 노드 간의 부모 자식 관계는, 생성 노드가 속성으로 갖는 생성 부모 노드 참조 속성과 자식 노드 참조 속성에 의해서 표현이 되며, 생성 부모 노드와 영속 자식 노드간의 부모 자식 관계는, 영속 노드가 속성으로 갖는 생성 부모 참조 속성과 생성 노드가 갖는 자식 노드 참조 속성에 의해서 표현이 된다. 즉, 영속 노드는 생성 부모 노드 참조가 존재하지 않으면, 관계형 데이터베이스에 관리되는 영속 부모 노드를 갖게 되며, 생성자 처리 과정에서 생성 부모 노드 참조를 갖게 되면, 원래 갖고 있던 영속 부모 노드를 잃어 버리고, 생성 노드를 부모 노드로서 갖게 되는 특성이 있다.
상술한 바와 같이, 생성 노드와 영속 노드의 부모/자식 노드에 대한 관계를 요약하면 다음과 같다.
- 생성 노드의 부모 노드는, 생성 노드이거나 존재하지 않는다.
- 생성 노드의 자식 노드는, 생성 노드, 영속 노드 또는 존재하지 않는다.
- 영속 노드의 부모 노드는, 기본적으로 영속 노드이거나 존재하지 않지만, 질의 처리 과정에서 생성 노드가 부모 노드가 될 수 있다.
- 영속 노드의 자식 노드는, 언제나 영속 노드이거나 존재하지 않는다.
도 9는, 도 6, 도 7 및 도 8과 같은 자료 구조를 갖는 통합 XQuery 중간 결과를 대상으로 계속적인 XQuery질의 처리를 수행하여 자식 노드를 검색하는 과정을 나타내는 흐름도의 일실시예이다.
XQuery 질의 처리 시스템은, 자식 노드 검색 과정이 시작되면(901), 입력 노드의 노드 종류를 검사한다(902).
상기 검사 결과 입력 노드의 노드 종류가 생성 노드이면, 생성 노드가 메모리 참조로 갖고 있는 모든 자식 노드를 검색하여 최종 검색 결과에 추가한다(904). 또는, 상기 검사 결과 입력 노드의 노드 종류가 영속 노드이면, 관계형 데이터베이스에서 입력 노드의 모든 영속 자식 노드를 검사하여 최종 검색 결과에 추가한다(906). 이후, 상기 최종 검색 결과를 사용자에게 제공(905)하는 것으로 자식 노드 검색 과정은 종료된다(907).
도 10은, 도 6, 도 7 및 도 8과 같은 자료 구조를 갖는 통합 XQuery 중간 결과를 대상으로 계속적인 질의 처리를 수행하여 자손 노드를 검색하는 과정을 나타내는 흐름도의 일실시예이다.
XQuery 질의 처리 시스템은, 자손 노드 검색 과정이 시작되면(1001), 입력 노드의 노드 종류를 검사한다(1002).
상기 노드 종류가 무엇인지를 판단하여(1003), 상기 판단 결과 입력 노드의 노드 종류가 영속 노드이면, 관계형 데이터베이스에서 모든 자손 노드를 검색하여 검색 결과에 추가하고(1010), 상기 판단 결과 입력 노드의 노드 종류가 생성 노드이면, 생성 노드의 자식 노드 존재 여부를 검사한다(1004).
자식 노드가 존재하는지를 판단하여(1005), 자식 노드가 존재하는 경우에는, 검색 결과 목록에 메모리 참조로 갖고 있는 모든 자식 노드를 추가하고(1006), 각 자식 노드에 대해서 노드 종류를 검사 한다(1007). 한편, 자식 노드가 존재하지 않은 경우에는, 검색 결과를 제공(1008)하고 종료한다(1011).
상기 자식 노드의 노드 종류를 검사하여, 노드 종류를 판단한다(1007, 1009). 상기 판단 결과 자식 노드가 생성 노드이면, 다시 자식 노드에 대해서 상기의 자식 노드 존재 여부를 검사하고(1004), 상기 판단 결과 자식 노드가 영속 노드 이면, 관계형 데이터베이스에서 모든 자손 노드를 검색하여 검색 결과에 추가(1010)한 후 검색 결과를 제공(1011)하는 것으로 자손 노드 검색 과정은 종료한다(1011).
도 11은, 도 6, 도 7 및 도 8과 같은 자료 구조를 갖는 통합 XQuery 중간 결과를 대상으로 계속적인 질의 처리를 수행하여 부모 노드를 검색하는 과정을 나타내는 흐름도의 일실시예이다.
XQuery 질의 처리 시스템은, 부모 노드 검색 과정이 시작되면(1101), 입력 노드의 노드 종류를 검사하여, 노드 종류를 판단한다(1102, 1103).
상기 판단 결과 입력 노드의 노드 종류가 생성 노드이면, 생성 노드가 메모리 참조로 갖고 있는 부모 노드를 검색하여 검색 결과로서 제공한다(1104). 또는, 상기 판단 결과 입력 노드의 노드 종류가 영속 노드이면, 영속 노드의 생성 부모 노드 참조 여부를 검사한다(1105, 1106).
상기 생성 부모 노드 참조 검사 결과, 생성 부모 노드 참조가 존재하지 않으면, 관계형 데이터베이스에서 부모 노드를 검색하여 검색 결과로서 제공하고(1107), 존재하면 메모리 참조로서 갖고 있는 생성 부모 노드를 검색 결과로서 제공(1104)하는 것으로 부모 노드 검색 과정은 종료된다(1108).
도 12는, 도 6, 도 7 및 도 8과 같은 자료 구조를 갖는 통합 XQuery 중간 결과를 대상으로 계속적인 질의 처리를 수행하여 조상 노드를 검색하는 과정을 나타내는 흐름도의 일실시예이다.
XQuery 질의 처리 시스템은, 조상 노드 검색 과정이 시작되면(1201), 입력 노드의 노드 종류를 검사하여, 노드 종류를 판단한다(1202, 1203).
상기 판단 결과 입력 노드의 노드 종류가 생성 노드이면, 생성 부모 노드 존재 여부를 검사한다(1204, 1205). 그리고, 상기 검사 결과 생성 부모 노드가 존재하면, 검색 결과에 부모 노드를 추가하고(1209), 추가된 부모 노드에 대해서 다시 상기의 생성 부모 노드 존재 여부를 검사한다(1204). 한편, 상기 검사 결과 생성 부모 노드가 존재하지 않으면, 조상 노드 검색 결과 목록을 검색 결과로서 제공한다(1206).
또는, 상기 판단 결과 입력 노드의 노드 종류가 영속 노드이면, 생성 부모 노드 존재 여부를 검사한다(1207, 1208). 상기 검사 결과 생성 부모 노드가 존재하면, 검색 결과 목록에 부모 노드를 추가하고(1209), 생성 부모 노드에 대해서 다시 생성 부모 노드 존재 여부를 검사한다(1204). 한편, 상기 검사 결과 부모 노드가 존재하지 않으면, 관계형 데이터베이스에서 모든 조상 노드를 검색하여 결과 목록에 추가하고(1210), 검색 결과로서 제공(1206)하는 것으로 조상 노드 검색 과정은 종료된다(1211).
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(시디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다. 이러한 과정은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있으므로 더 이상 상세히 설명하지 않기로 한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
당업자라면 본 발명의 범위와 사상을 벗어나지 않고서 다양한 변형이나 변경이 이루어질 수 있음을 알 것이다. 당업자라면 본 명세서에 게시된 본 발명에 관한 구체적 내용과 그 실시를 이해하고, 본 발명에 관한 또 다른 실시 예가 가능함을 알 것이다.
도 1은, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 과정에 대한 일실시예 흐름도.
도 2는, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위한 일실시예 XML 데이터 구조도.
도 3은, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위한 상기 도2의 XML 문서에 대한 일실시예 XQuery 질의문 구조도.
도 4는, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위한 상기 도3의 XQuery 질의문을 질의 처리한 후에 생성되는 일실시예 통합 XQuery 결과 트리 구조도.
도 5는, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위한 일실시예 XQuery 질의문 구조도.
도 6은, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위한 일실시예 XQuery 결과 아이템 구성도.
도 7은, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리 하기위한 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위한 일실시예 XQuery 결과 순서열 구성도.
도 8은, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법을 설명하기 위한 영속 노드와 생성 노드의 상속 및 연관 관계를 나타내는 일실시예 관계도.
도 9는, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법에서 자식 노드를 검색하는 과정을 나타내는 일실시예 흐름도.
도 10은, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법에서 자손 노드를 검색하는 과정을 나타내는 일실시예 흐름도.
도 11은, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법에서 부모 노드를 검색하는 과정을 나타내는 일실시예 흐름도.
도 12는, 본 발명에 따른 영속 노드 결과와 생성 노드 결과를 통합하여 관리하기위한 통합 XQuery 결과 구성 및 질의 처리 방법에서 조상 노드를 검색하는 과정을 나타내는 일실시예 흐름도.

Claims (8)

  1. 관계형 데이터베이스의 영속 XML 데이터를 질의 대상으로 하는 XML 경로 표현식의 처리 과정에서, 중간 결과로서 관계형 데이터베이스로부터 질의 처리에 필요한 영속 노드만을 가져 와서 메모리에 적재하는 제 1 단계;
    XQuery 생성자의 처리 과정에서, 중간 결과로서 새로운 생성 노드를 메모리에 구성하는 제 2 단계;
    XQuery 생성자의 내부에서 관계형 데이터베이스의 영속 노드를 나타내는 XML 경로 표현식이 사용되는 경우, 상기 관계형 데이터베이스로부터 가져온 영속 노드를 상기 XQuery 생성자로부터 생성된 생성 노드에 연결하여 통합 XQuery 결과의 전체 트리를 구성하는 제 3 단계; 및
    상기 통합 XQuery 결과를 중간 결과로서 활용하여 계속적인 XML 경로 표현식 질의를 처리하는 제 4 단계
    를 포함하는 통합 XQuery 질의 처리 방법.
  2. 제 1 항에 있어서, 상기 제 1 단계는,
    상기 XQuery 생성자의 내부에서 영속 노드에 대한 참조가 발생하는 경우, 영속 노드의 생성 부모 노드 참조 속성과 생성 노드의 자식 노드 참조 속성을 통하여, 상위의 생성 노드와 부모 자식 관계를 연관시키는 통합 XQuery 질의 처리 방법.
  3. 제 1 항에 있어서, 상기 제 2 단계는,
    상기 메모리에 구성된 생성 노드를 이용하여, 생성 부모 노드 참조 속성과 자식 노드 참조 속성을 통하여 중첩된 생성 노드 간에 부모 자식 관계를 연관시키는 통합 XQuery 질의 처리 방법.
  4. 제 1 항에 있어서,
    상기 통합 XQuery 결과를 구성하는 상기 영속 노드와 상기 생성 노드 간에 구조적 관계를 밝힘에 있어서,
    상기 영속 노드와 상기 생성 노드가 통합된 통합 XQuery 결과에 대해서, 특정 노드의 자식 노드, 자손 노드, 부모 노드, 조상 노드 중 적어도 하나를 검색하는 제 5 단계를 더 포함하는 통합 XQuery 질의 처리 방법.
  5. 제 4 항에 있어서,
    상기 5 단계에서 검색 대상이 상기 자식 노드인 경우에 있어서,
    입력 노드의 노드 종류를 검사하는 제 6 단계;
    상기 검사 결과 입력 노드의 노드 종류가 생성 노드이면, 생성 노드가 메모리 참조로 갖고 있는 모든 자식 노드를 검색하여 최종 검색 결과에 추가하는 제 7 단계;
    상기 검사 결과 입력 노드의 노드 종류가 영속 노드이면, 상기 관계형 데이 터베이스에서 입력 노드의 모든 영속 자식 노드를 검사하여 최종 검색 결과에 추가하는 제 8 단계; 및
    상기 최종 검색 결과를 사용자에게 제공하는 제 9 단계를 더 포함하는 통합 XQuery 질의 처리 방법.
  6. 제 4 항에 있어서,
    상기 5 단계에서 검색 대상이 자손 노드인 경우에 있어서,
    입력 노드의 노드 종류를 검사하는 제 10 단계;
    상기 검사 결과 입력 노드의 노드 종류가 생성 노드이면, 생성 노드의 자식 노드 존재 여부를 검사하는 제 11 단계;
    상기 검사 결과 자식 노드가 존재하면, 검색 결과 목록에 메모리 참조로 갖고 있는 모든 자식 노드를 추가하고 각 자식 노드에 대해서 노드 종류를 검사하는 제 12 단계;
    상기 검사 결과 자식 노드가 존재하지 않으면, 검색 결과를 사용자에게 제공하는 제 13 단계;
    상기 자식 노드의 노드 종류 검사 결과 자식 노드가 생성 노드이면, 다시 자식 노드에 대해서 상기의 자식 노드 존재 여부를 검사하는 제 14 단계; 및
    상기 자식 노드의 노드 종류 검사 결과 자식 노드가 영속 노드이면, 관계형 데이터베이스에서 모든 자손 노드를 검색하여 검색 결과에 추가한 후 검색 결과를 제공하는 제 14 단계를 더 포함하는 통합 XQuery 질의 처리 방법.
  7. 제 4 항에 있어서,
    상기 5 단계에서 검색 대상이 부모 노드인 경우에 있어서,
    입력 노드의 노드 종류를 검사하는 제 15 단계;
    상기 검사 결과 입력 노드의 노드 종류가 생성 노드이면, 생성 노드가 메모리 참조로 갖고 있는 부모 노드를 검색하여 검색 결과로서 제공하는 제 16 단계;
    상기 검사 결과 입력 노드의 노드 종류가 영속 노드이면, 영속 노드의 생성 부모 노드 참조 여부를 검사하는 제 17 단계;
    상기 생성 부모 노드 존재 여부 검사 결과 존재하지 않으면, 관계형 데이터베이스에서 부모 노드를 검색하여 검색 결과로서 제공하는 제 18 단계; 및
    상기 생성 부모 노드 존재 여부 검사 결과 존재하면, 메모리 참조로서 갖고 있는 생성 부모 노드를 검색 결과로서 제공하는 제 19 단계를 더 포함하는 통합 XQuery 질의 처리 방법.
  8. 제 4 항에 있어서,
    상기 5 단계에서 검색 대상이 부모 노드인 경우에 있어서,
    입력 노드의 노드 종류를 검사하는 제 20 단계;
    상기 검사 결과 입력 노드의 노드 종류가 생성 노드이면, 생성 부모 노드 존재 여부를 검사하는 제 21 단계;
    상기 생성 부모 노드 존재 여부 검사 결과 부모 노드가 존재하면, 검색 결과 에 부모 노드를 추가하고, 부모 노드에 대해서 다시 상기의 생성 부모 노드 존재 여부를 검사하는 제 22 단계;
    상기 부모 노드가 존재하지 않으면, 조상 노드 검색 결과 목록을 검색 결과로서 제공하는 제 23 단계;
    상기 노드 종류 검사 결과 입력 노드가 영속 노드이면, 생성 부모 노드 존재 여부를 검사하는 제 24 단계;
    상기 생성 부모 노드 존재 여부 검사 결과 부모 노드가 존재하면, 검색 결과 목록에 부모 노드를 추가하고, 생성 부모 노드에 대해서 다시 생성 부모 노드 존재 여부를 검사하는 제 25 단계; 및
    상기 부모 노드가 존재하지 않으면, 관계형 데이터베이스에서 모든 조상 노드를 검색하여 결과 목록에 추가하고 검색 결과로서 제공하는 제 26 단계를 더 포함하는 통합 XQuery 질의 처리 방법.
KR1020070122823A 2006-12-04 2007-11-29 통합 XQuery 질의 처리 방법 KR100882589B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020060121539 2006-12-04
KR20060121539 2006-12-04

Publications (2)

Publication Number Publication Date
KR20080051063A true KR20080051063A (ko) 2008-06-10
KR100882589B1 KR100882589B1 (ko) 2009-02-12

Family

ID=39806197

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070122823A KR100882589B1 (ko) 2006-12-04 2007-11-29 통합 XQuery 질의 처리 방법

Country Status (1)

Country Link
KR (1) KR100882589B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368500A (zh) * 2016-05-13 2017-11-21 北京京东尚科信息技术有限公司 数据抽取方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100670210B1 (ko) * 2004-12-14 2007-01-16 한국전자통신연구원 관계형 데이터베이스를 기반으로 하는 XML데이터베이스에서 XQuery 트리거를 지원하는 방법 및시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368500A (zh) * 2016-05-13 2017-11-21 北京京东尚科信息技术有限公司 数据抽取方法及系统
CN107368500B (zh) * 2016-05-13 2020-03-03 北京京东尚科信息技术有限公司 数据抽取方法及系统

Also Published As

Publication number Publication date
KR100882589B1 (ko) 2009-02-12

Similar Documents

Publication Publication Date Title
US8631028B1 (en) XPath query processing improvements
US7634498B2 (en) Indexing XML datatype content system and method
Chamberlin XQuery: An XML query language
Cardelli et al. A query language based on the ambient logic
US7461074B2 (en) Method and system for flexible sectioning of XML data in a database system
US20100211572A1 (en) Indexing and searching json objects
US20060206466A1 (en) Evaluating relevance of results in a semi-structured data-base system
US8126932B2 (en) Indexing strategy with improved DML performance and space usage for node-aware full-text search over XML
US20100169354A1 (en) Indexing Mechanism for Efficient Node-Aware Full-Text Search Over XML
Petković JSON integration in relational database systems
US20060161525A1 (en) Method and system for supporting structured aggregation operations on semi-structured data
US8495055B2 (en) Method and computer program for evaluating database queries involving relational and hierarchical data
Delva et al. Integrating nested data into knowledge graphs with RML fields
Catania et al. Lazy XML updates: laziness as a virtue, of update and structural join efficiency
Nørvåg Algorithms for temporal query operators in XML databases
KR100882589B1 (ko) 통합 XQuery 질의 처리 방법
US8880505B2 (en) Method and computer program for evaluating database queries involving relational and hierarchical data
Arion et al. Algebra-based identification of tree patterns in XQuery
Min et al. XTRON: An XML data management system using relational databases
Näppilä et al. A tool for data cube construction from structurally heterogeneous XML documents
Lim et al. Unifying data and domain knowledge using virtual views
Leela et al. Schema-conscious XML indexing
Georgiadis et al. Cost based plan selection for XPath
Kim et al. Efficient processing of regular path joins using PID
Mihajlovic et al. On Region Algebras, XML Databases, and Information Retrieval

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120131

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee