KR20020061886A - 엑스엠엘 문서의 저장방법 및 엑스엠엘 문서 또는 인덱스노드 탐색방법 - Google Patents
엑스엠엘 문서의 저장방법 및 엑스엠엘 문서 또는 인덱스노드 탐색방법 Download PDFInfo
- Publication number
- KR20020061886A KR20020061886A KR1020010002966A KR20010002966A KR20020061886A KR 20020061886 A KR20020061886 A KR 20020061886A KR 1020010002966 A KR1020010002966 A KR 1020010002966A KR 20010002966 A KR20010002966 A KR 20010002966A KR 20020061886 A KR20020061886 A KR 20020061886A
- Authority
- KR
- South Korea
- Prior art keywords
- node
- signature
- nfa
- state
- query
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/83—Querying
- G06F16/835—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
Abstract
본 발명은 시그니처를 이용한 XML 문서의 저장방법 및 질의처리를 통하여 질의 수행시 노드의 탐색 횟수를 줄여 질의 수행을 빠르게 할 수 있는 XML 문서의 저장방법 및 XML 문서 또는 인덱스 노드 탐색방법에 관한 것이다.
Description
본 발명은 시그니처를 이용한 XML 문서의 저장방법 및 질의처리를 통하여 질의 수행시 노드의 탐색 횟수를 줄여 질의 수행을 빠르게 할 수 있는 XML 문서의 저장방법 및 XML 문서 또는 인덱스 노드 탐색방법에 관한 것이다.
종래에 시그니처 방법은 정보 추출 및 데이터베이스 분야에서 많이 연구되어 왔다[도10의 참고논문 5, 10, 21, 25 참조]. 이러한 시그니처 방법은 필요한 단어들의 해쉬값을 구하여 간단한 비트 연산만으로 원하는 데이터를 빨리 찾기 위하여 사용되었다. 도10의 참고논문[5]에서는 관계형 데이터베이스에서 B트리를 사용하지 않고, 특정 애트리뷰트의 값들에 대한 시그니처를 구한 후 간단한 비트 연산만으로 원하는 애트리뷰트를 가진 튜플을 찾을 수 있게 하였다. 도10의 참고논문[25]에서는 객체지향형 데이터베이스에서 OID로 참조한 객체의 특정 애트리뷰트의 시그니처를 구하여 OID 뿐만 아니라 피참조 객체의 객체 시그니처도 같이 저장하였다. 이때 OID가 가리키는 객체를 참조하기 전에 객체 시그니처를 먼저 비교함으로서 객체를 읽어들이는 연산을 줄일 수 있게 하였다.
관계형 데이터베이스 혹은 객체지향형 데이터베이스에서 사용한 시그니처 방법은 특정 애트리뷰트를 가진 객체를 찾을 때 사용되었다.
이와 같이 종래에 연구된 방법들을 포함하는 논문들을 정리하여 소개하면 도10과 같다.
본 발명은, 종래의 방법들이나 논문들과는 다르게 XML 문서의 앨리먼트와 애트리뷰트 이름에 대하여 시그니처를 구한 후 이를 상위노드로 전파하여 임의의 하위노드에 특정 이름을 가진 노드가 있는지를 찾아내는 것이 목적으로 한다.
또한, 본 발명은 참고논문[25]에서 처리하지 못했던 정규경로식을 가진 질의를 처리할 수 있는 방법을 제안한 것을 또다른 목적으로 한다.
그러므로 본 발명의 목적은 디스크 I/O를 줄이려면 노드의 탐색 횟수를 줄일 수 있으며, 정규경로식을 처리하기 위하여 노드를 탐색할 때 노드 탐색 횟수를 줄이는 것이다.
도1은 XML 파일의 일예.
도2는 DOM 그래프의 일예.
도3은 본 발명에 따른 노드의 시그니처 계산 알고리즘의 일예.
도4는 NFA의 일예.
도5는 정규경로식에 대한 NFA의 일예
도6은 본 발명에 따른 스캔 인터페이스로서 정규경로식에 해당하는 노드를 반환하는 함수의 일예.
도7은 본 발명에 따른 s-NFA 상태를 전진할 때 s-NFA와 s-DOM의 시그니처를 비교 연산하여 다음 상태로 전진할 수 있는지를 판단하는 알고리즘의 일례.
도8은 갱신 연산이 일어날 때 DOM의 각 노드의 시그니처를 변경하는 알고리즘의 일예.
도9a는 본 발명의 실험실시예에 따른 노드 탐색 횟수의 비교예.
도9b는 본 발명의 실험실시예에 따른 노드 탐색 횟수의 비율.
도9c는 본 발명의 실험실시예에 따른 디스크 I/O횟수의 비교예.
도9d는 본 발명의 실험실시예에 따른 디스크 I/O횟수 비율.
도9e는 본 발명의 실험실시예에 따른 디스크 동작시간(단위는 초)의 비교예.
도9f는 본 발명의 실험실시예에 따른 디스크 동작시간 비율.
도10은 종래 참고논문들의 리스트.
이러한 목적을 달성하기 위하여 본 발명은, XML 문서의 자료구조에서 상위노드 및 하위노드의 앨리먼트와 애트리뷰트 이름에 대하여 시그니처를 구하는 각 노드의 시그니처 계산단계와, 각 상위노드 하부에 위치하는 하위노드들의 시그니처들과 그 상위노드 시그니처를 OR 연산하여 상위노드의 시그니처를 구하는 상위노드의 시그니처 계산단계와, 상기 자료구조에 상기 하위노드와 상기 상위노드의 시그니처를 저장하는 저장단계를 갖는 XML 문서의 저장방법을 제공한다. 여기서, 상기자료구조는 트리형태의 그래프 구조의 DOM일 수 있다.
또다른 측면에서, 본 발명은, 질의로 들어온 정규경로식을 상태노드와 에지들로 구성된 하나의 시작 상태와 하나의 최종상태를 갖는 NFA로 변경하는 정규경로식 변경단계와, 상기 상태노드가 경로 시그니처를 포함하도록 NFA를 변경하는 NFA 변경단계와, 상기 시그니처 정보를 포함하는 NFA를 DOM에 적용하여 질의 탐색하는 질의 탐색단계를 갖는 XML 문서의 노드 탐색방법을 제공한다. 여기서, 상기 DOM은 상기 XML 문서의 저장방법에 의한 XML 문서의 저장방법에 의해 저장된 것일 수 있다. 또한, 상기 질의 탐색은 깊이 우선 검색(DFS)에 의한 것일 수 있다. 또한, 노드를 삽입하거나 삭제할 때, 상기 노드를 포함하는 상위노드의 시그니처를 갱신하는 갱신단계를 추가로 포함할 수 있다.
또다른 측면에서, 본 발명은, 질의로 들어온 정규경로식을 상태노드와 에지들로 구성된 하나의 시작 상태와 하나의 최종상태를 갖는 NFA로 변경하는 정규경로식 변경단계와, 상기 상태노드가 경로 시그니처를 포함하도록 NFA를 변경하는 NFA 변경단계와, 상기 시그니처 정보를 포함하는 NFA를 반구조적 데이터에 대한 인덱스에 적용하여 인덱스 노드를 탐색하는 인덱스 탐색단계를 갖는 인덱스 노드 탐색방법을 제공한다.
이하 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
1. 기반 시스템
본 발명에서 제안한 방법은 XWEET(XML DBMS for Web Environment)[14] 시스템의 질의 최적화 모듈에서 사용하는 방법이다. XWEET는 XML 데이터의 효율적인 저장, 추출, 질의 및 웹 환경에서의 응용을 위한 기반 시스템이다. 이것은 XML 데이터의 저장을 위한 PDM(Persistent Data Manager), 소스로부터 데이터 통합을 위한 래퍼와 XWS(XWEET Web Wrapper system) 및 웹 응용프로그램을 작성하기 위한 WPG(Web Page Generator), HTML/XML Template 등을 제공한다.
2. 관련연구
XML 문서를 기존의 데이터베이스에 효율적으로 저장하기 위한 방법은 활발히 연구되고 있다[도10의 참고논문8, 11, 22, 23 참조]. 이런 방법들은 관계형 데이터베이스에 XML 문서를 저장하기 위한 스키마 생성 방법과 질의 변환을 통한 데이터 추출에 중점을 두고 있다. 기존의 데이터베이스에 XML 문서를 저장하는 것은 크게 두가지 방법으로 나누어 볼 수 있다. 도10의 참고논문[8, 22]에서와 같이 XML 문서의 태그를 이용하여 관계형 데이터베이스 스키마를 생성한 후 각각의 엘리먼트를 대응하는 적절한 테이블에 저장하는 방법과 도10의 참고논문[11, 23]과 같이 XML 데이터의 트리 구조를 그대로 유지하는 방법이다.
트리의 각 노드를 객체 단위로 저장하는 것으로 eXcelon[9], PDOM[12] 등이 있는데 이것은 각각의 노드를 하나의 객체로 저장하기 때문에 XML 문서의 구조가 변하지 않으며 원래 문서의 구조를 그대로 유지할 수 있다. 객체지향 데이터베이스나 Lore[1]등에서도 이와 같은 방법을 사용한다.
본 발명에서는 이와 같은 방법으로 객체를 저장한다고 가정하고 있다. 이때객체의 접근 횟수를 줄이는 것이 질의를 최적화할 수 있는 한 방법이다.
XML 데이터에 대한 질의로는 정규경로식[도10의 참고논문1, 4, 6 참조]를 이용한다. 이러한 정규경로식을 빠르게 수행하기 위하여 도10의 참고논문[13, 17, 18]과 같은 인덱스가 제안되었다. 이것은 익스텐트와 오토마타가 같이 있는 구조로서 정규식에 해당하는 것을 오토마타를 통해 찾아서 익스텐트를 반환하는 구조로 되어 있다.
XML 문서의 자료 구조는 DOM[도10의 참고논문24 참조]으로 표현하며 이것은 트리 형태의 그래프 구조로 되어 있다. DOM 인터페이스는 한 노드에서 그 노드의 부모, 자식, 형제 노드들을 탐색할 수 있는 인터페이스를 통하여 트리를 탐색하게 된다.
3. 데이터 모델과 질의어
본 발명에서 다루는 데이터는 XML 이다. 이것은 구조적 데이터 모델인 OEM[도10의 참고논문19 참조]와 유사하다. OEM은 그래프 형태로 표현되지만 XML은 트리 형태의 구조를 가진다. XML 데이터 구조에 대한 인터페이스로 DOM[도10의 참고논문24 참조]가 제안되어 있다. 이것은 트리 형태로 이루어진 XML 데이터 접근에 대한 표준 인터페이스로서 본 발명에서 다루는 데이터 모델이다. DOM은 노드들이 트리 형태로 이루어진 구조로서 각 노드는 부모, 자식, 형제 노드들을 가리키고 있다. 이때 노드들은 순서를 가지는 리스트이다.
도1은 XML 파일의 예이다. 이것은 DTD가 없는 XML 문서로서 XML 문서는 DTD를 가질 수도 있고 DTD가 없을 수도 있다. DTD는 문서의 정확성(validity)을 확인하는데 사용되며 본 발명에서는 DTD 정보를 이용하지 않는다. 이 XML 문서를 DOM 구조로 표현한 것이 도2이다. 이것은 트리형태의 구조를 가지며 각 노드에서 부모, 자식, 형제 노드를 탐색할 수 있다.
XML 질의는 이와 같은 트리 형태의 그래프의 각 노드를 탐색하면서 수행된다. 그러므로 이 노드의 탐색 횟수를 줄이는 것이 XML 질의 처리의 핵심이다. 본 발명에서 각각의 노드는 객체로 저장하며 각각의 OID는 도2에서와 같이 &를 붙여 표시한다. 예를 들어 루트 노드의 OID는 &1 이다.
본 발명에서 다루는 질의어는 정규경로식을 가진 질의이다. 주어진 정규경로식을 가지는 질의를 탐색할 수 있게 하는 스캔 인터페이스를 제공하며 이 인터페이스를 통하여 정규경로식을 만족하는 노드를 가져온다. 각각의 노드가 클러스트링되지 않고 디스크에 저장되었다면 노드를 하나 읽어들이는 것은 디스크 페이지 하나를 읽어들이는 것이다. 그러므로 디스크 I/O를 줄이려면 노드의 탐색 횟수를 줄여야 한다. 정규경로식을 처리하기 위하여 노드를 탐색할 때 노드 탐색 횟수를 줄이는 것이 본 발명의 목적이다.
4. 시그니처 기법을 적용한 XML 문서의 저장방법
4.1 시그니처의 의미
시그니처는 일반적인 텍스트 문서에서 검색을 빠르게 하기 위한 방법으로 제안되었다. 시그니처는 문자열에 대한 해쉬값으로 본 명세서에서는 SC 방법(참고논문 10 참조)으로 시그니처를 만들었다. 예를 들어 표 1에서와 같이 각각의 문자열에 대한 시그니처를 구했다고 하자.
각각의 문자열이 한 문서 블럭 D에 저장되어 있다면 그 문서 블록 D의 시그니처 SD는 그 블럭 내의 모든 시그니처의 OR 연산으로 구한다. 그러므로 SD=11101001=(01001000 │00100001 │10001000)이다.
이때 이 페이지 내에 문자열 "Tom"이 있는지를 알아보려면 아래 조건을 만족하면 된다.
S"Tom"≡S"Tom"& SD
즉 Tom의 시그니처 S"Tom"(01001000)과 블럭 D의 시그니처 SD(11101001)에 대하여 비트 연산 AND를 했을 때 그 결과가 S"Tom"이 되면 그 블럭 내에 Tom이 있을 가능성이 높은 것이다. 이와 다르게 Jane의 시그니처 S"Tom"이 01010001 이라면 SD& S"Jane"의 결과가 S"Jane"이 되지 못하므로 그 블럭 내에는 Jane이 없다는 것을 확신할 수 있다. 이와 같이 특정 단어가 들어간 문서를 찾을 때 그 단어의 시그니처와 문서 블럭의 시그니처를 AND 연산함으로써 검색 연산의 비용을 줄일 수 있다.
이와 같이 시그니처는 여러 블럭으로 저장된 문서에서 특정 문자열을 찾을 때 모든 문서 블럭을 검색하지 않고 문서 블럭에 대한 시그니처를 이용하여 시그니처가 매치되는 블럭만 검사하게 하여 원하는 결과를 빠르게 찾을 수 있게 한다. 이와 같은 시그니처 기법을 DOM에 적용한 것이 다음 절에 나오는 s-DOM이다.
4.2 s-DOM (Signature based DOM)
본 발명에서 제안하고 있는 시그니처 방법은 XML 데이터를 저장할 때 도2에서 보는 바와 같은 그래프의 각 노드를 객체 단위로 저장한다고 가정한다. 이것은 반구조적 데이터를 위한 데이터베이스[도10의 참고논문16 참조]나 기존 데이터베이스[도10의 참고논문9, 11, 23 참고]에서 실제 사용하고 있는 저장 방법이다. 여기서 DOM의 각 노드를 저장할 때 시그니처 정보를 첨가하여 저장하게 된다. 시그니처는 각 엘리먼트 이름을 이용하여 구하고 상위노드는 하위노드의 시그니처 정보를 포함하는 형태이다. 먼저 각각의 엘리먼트 이름의 해쉬 값을 구하면 표 2의 왼쪽과 같다. 즉 company의 해쉬 값은 이진값으로 00001001 이다.
이 해쉬값을 이용하여 DOM에서 시그니처 정보를 더한 s-DOM을 구축한다. s-DOM은 하위노드의 시그니처 값을 OR 연산하여 구한다. 즉 하위노드의 시그니처의 OR 값을 상위노드의 시그니처로 갖는다. 이것은 노드의 이름으로 시그니처를 만들므로 엘리먼트 노드나 애트리뷰트 노드만 시그니처 값을 구하고 텍스트 노드는 시그니처 값을 구하지 않는다. 도3의 알고리즘 1은 특정 노드의 시그니처를 구하는 방법으로, 이렇게 구한 각 노드 객체의 시그니처 값은 표 2의 오른쪽과 같다.
실시예 4.1 : 시그니처 계산
도2의 &2 객체의 시그니처를 구하면 다음과 같다. 먼저 자식 노트 &5, &6의 시그니처를 구해야 한다. 이때 노드 &6, &13, &14의 시그니처는 자식 노드가 텍스트 노드이므로 시그니처가 0이다. 노드 &5의 시그니처는 &13, &14의 시그니처와 노드 &13, &14의 이름의 해쉬값을 OR 연산하므로 11100010 이다. 그러므로 &2의 시그니처는 &5, &6의 시그니처 11100010, 0과 &5, &6의 노드 이름 name, company의 해쉬 값을 OR연산한 11101011 이다.
실시예 4.1에서 보는 바와 같이 상위노드는 하위노드의 시그니처 정보를 가지고 있다. 이것이 의미하는 바는 시그니처 정보를 보면 하위노드에 어떤 이름을 가진 노드가 나타나지 않는지, 혹은 어떤 노드 이름이 나타날 가능성이 높은지 알 수 있다. 실시예 4.2는 시그니처를 이용하여 특정 레이블을 가진 노드가 있는지 검사하는 방법에 대하여 설명한다.
실시예 4.2 : 노드 탐색
도2의 &3 노드의 하위노드에 address 노드가 나타날 가능성이 있는지 검사하는 방법은 address의 해쉬값 S"address"와 &3 노드의 시그니처 S&3을 비트 연산 AND 하여 그 결과로 S"address"가 나오면 나타날 가능성이 높은 것이다. 즉,
S"address"& S&3≡S"address"
와 같은 결과가 나오면 &3의 하위노드에서 address가 나올 가능성이 있다는 얘기이다. 이와 다르게 father가 &4 객체 아래에 있는지 알아보면
S"father"& S&4≠S"father"
이다. 그러므로 &4 객체 아래에는 father 이름을 가지는 노드가 없다는 것을 알 수 있다. 즉 s-DOM은 하위노드에서 나타나는 엘리먼트의 시그니처를 가지고 있음으로서 질의 처리시 하위노드의 특정 엘리먼트가 나타나지 않는 그래프를 탐색 범위에서 제외할 수 있다.
5.1 NFA를 이용한 질의 처리
정규경로식(regular path expression)은 결정적 유한 오토마타(deterministic finite automata, DFA)와 비결정적 유한 오토마타(nondeterministic finite automata, NFA)를 이용하여 표현할 수 있다. 결국, 모든 정규경로식은 NFA로 표현할 수 있으며, 질의의 처리는 데이터 그래프의 각 노드 탐색에 따라 NFA의 상태를 전이하면서 그 상태가 최종 상태에 도달하게 되면 정규경로식에서 요구하는 노드라는 것을 알 수 있다. 이와 같은 정규경로식은 다음의 규칙(1)과 규칙(2)에 의해 만들어 진다.
규칙(1): 원자값의 NFA는 도4의 (a)와 같이 시작상태(start state)와 최종 상태(final state) 하나씩을 가지며, 시작상태에서 최종상태로 원자값을 레이블(label)로 하는 에지(edge, 모서리)가 하나 있다.
규칙(2): 각각의 NFA는 도4의 (2), (3), (4)와 같은 방법으로 만들어지며 그 자체가 다시 시작 상태와 최종 상태 하나씩을 가진 새로운 NFA가 된다.
실시예 5.1: 정규경로식을 NFA로 만들기
정규경로식 AddrList.((person.*)│company).name에 대한 NFA는 규칙(1), (2)에 의해 도5와 같이 만들어진다. 이때 *는 어떠한 레이블도 가능하므로 (any label)*와 같다. 각각의 NFA가 합해져서 하나의 NFA를 구성하게 되며 시작 상태와 최종 상태를 하나씩 가지게 된다.
실시예 5.2: NFA를 이용한 정규경로식의 처리
정규경로식 AddrList.((person.*)│company).name을 도2에서 수행하면 그 결과는 {&5, &7, &27, &10}이 차례로 반환된다. 이것은 깊이 우선 탐색(depth first search, DFS)으로 DOM 트리의 각 노드를 방문하면서 NFA를 만족하는 노드를 찾은 것이다. 이때 person.*로 인하여 person 노드 아래의 노드는 모두 방문해야 한다.
5.2 s-NFA
5.1에서는 NFA에서 특정 상태에서 다른 상태로 전이하는 것은 에지의 레이블만 가지고 결정하였다. 상태 전이를 통하여 최종 상태에 도달하면 그 NFA를 만족하는 것으로 결정한다. 이와 같은 NFA에서는 특정 상태에서 뒤에 어떠한 노드를 거쳐야만 최종 상태에 전이할 수 있는지 알 수 없고 더 이상 상태 전이를 할 수 없을 때까지 계속 상태 전이를 적용해 나가는 방법 밖에는 다른 방법이 없다.
s-NFA는 질의 처리를 하기 위하여 NFA에 시그니처 정보를 더한 것으로서 이것은 NFA의 각 노드에 NFA의 최종 상태에 도달하기 위하여 반드시 거쳐야 하는 에지들의 레이블에 대한 시그니처 정보를 가지고 있는 것이다. s-NFA의 시그니처와 s-DOM의 시그니처를 이용하여 질의를 처리하게 되는데, s-DOM에서는 어떠한 레이블을 가진 노드가 서브 트리에 존재하는지를 나타내는 것이고, s-NFA의 시그니처는 질의를 만족하기 위해서 반드시 나타나야 하는 레이블들을 나타낸다. 그러므로 s-NFA의 시그니처와 s-DOM의 시그니처를 비교하여 s-DOM의 서브 트리를 검색할지 여부를 결정하게 된다. 즉, s-NFA에서 상태 전이를 통하여 거부(reject)되지 아니하더라도 s-NFA의 시그니처가 s-DOM의 시그니처에 나타나지 않으면 s-NFA에서 더 이상 상태 전이를 할 수 없으므로 서브 트리를 방문하지 않는 것이다. 아래의 정의는 본 명세서에서 유용하게 쓰이는 것들이다.
정의 5.1: NFA 경로
비결정적 유한 오토마타(NFA)의 한 상태노드에서 최종 상태로 가는 경로를NFA 경로라 한다. 즉, 한 상태노드의 NFA 경로는 여러 개일 수 있다.
정의 5.2 : 경로 시그니처(path signature)
NFA의 한 상태노드 n의 경로 시그니처 PSn은 다음과 같이 정의한다.
PSn={x │x는 NFA의 상태노드 n의 한 NFA 경로에 나타나는 모든 레이블의 시그니처 값을 비트 연산 OR한 값}
경로 시그니처는 NFA의 상태노드에서 그 오토마타를 승인(accept)하기 위하여 반드시 나타나야 하는 레이블들에 대한 정보를 비트 값으로 가지고 있는 것을 말한다. NFA의 특정 상태에서 최종 상태로 갈 수 있는 길은 여러 개이기 때문에 이런 경로 시그니처는 집합으로 표현되며 NFA 상태노드 n의 경로 시그니처의 집합은 PSn으로 표현된다. 그러므로 s-NFA는 각 상태노드가 경로 시그니처를 가진 NFA를 말한다.
경로 시그니처를 생성하는 방법은 다음과 같다.
도4는 모든 종류의 NFA를 만드는 방법에 대하여 나타낸 것이다. 즉, 이들 그래프의 경로 시그니처를 구하는 방법은 모든 NFA의 경로 시그니처를 구하는 것과 같다. 도4의 각 그래프에서 경로 시그니처를 구하는 방법에 대한 규칙들은 규칙 5.1~규칙 5.5와 같다.
(1) 규칙 5.1(L(a)) : 도4(a)와 같이 원자값을 가지는 NFA는 시작 노드 s,최종 노드 f 두개의 상태노드를 가진다. 레이블 a의 해쉬값을 Ha라 하면 s 노드와 f 노드의 경로 시그니처 PSN와 PSf는 각각 다음과 같다.
PSn= {Ha}
PSf= {0}
(2) 규칙 5.2(L(r1+r2)) : 도4(c)와 같이 두개의 NFA가 " │"로 연결된 정규식인 경우 PSS, PSf는 다음과 같다.
PSS={x │x는 PSp혹은 PSq의 한 원소}
PSf={0}
(3) 규칙 5.3(L(r*)) : 도4(d)와 같이 *연산자의 경우, 경로 시그니처는 다음과 같다. 이 경우 *로 인하여 내부 시그니처는 PSS에서 무시된다. 왜냐하면 내부를 거치지 않고 f노드로 바로 진행할 수 있기 때문이다.
(4) 규칙 5.3(L(r+)) : 도4(d)에서 s노드에서 f노드로 가는 에지를 삭제하면 된다. 이때 PSS노드를 제외하고는 규칙 5.3와 동일하다.
PSS=PSp
L(r?)는 규칙5.3과 동일하다.
(5) 규칙 5.5(L(r1)L(r2)) : 두개의 NFA가 합해지는(concatenation) 것으로서M(r1)의 모든 상태노드의 경로 시그니처는 PSP의 경로 시그니처를 가져야 한다. 이것을 시그니처 전파(signature propagation)라고 한다. 즉, 시작 상태노드에서 최종 상태노드로 가려면 M(r2)의 노드 p를 거쳐야 하므로 PSp를 M(r1)의 경로 시그니처를 반영해야 한다. 이것은 M(r1)의 모든 상태노드의 경로 시그니처와 경로 시그니처 PSn은 다음과 같다.
PSn={(x│y)│x는 원래의 경로 시그니처 PSn의 한 원소, y는 경로 시그니처 PSp의 한 원소}
실시예 5.3 : NFA에서의 경로 시그니처
상기 규칙들에 따라 실시예 5.2의 경로 시그니처를 구하면 표3과 같다.
예를 들어 13번 노드는 반드시 name 에지를 지나야만 최종 상태로 갈 수 있다. 그러므로 13노드의 경로 시그니처 PS13은 표1에서 name의 해쉬값인 {10001000}을 가진다. 최종 상태인 14번 노드에는 더 이상 지나가야 할 에지가 없으므로 PS14는 {00000000}을 가진다. 이때 11번 노드는 name을 지나야 하므로 PS11은 company와 name을 지나야 하므로 company와 name의 시그니처를 OR 연산한 값인 {10001001}을 가진다.
5.3 s-NFA를 이용한 질의 처리
s-NFA를 이용하여 질의를 처리하는 과정을 살펴보면 다음과 같다. s-NFA의 경로 시그니처는 오토마타에서 상태를 변이하기 위하여 반드시 거쳐야 하는 레이블이 어떠한 것인지를 알려주는 값이고, s-DOM에서의 각 노드의 시그니처는 하위 트리에 어떠한 레이블을 가진 노드들이 있는지를 알려주는 값이다. 도6의 알고리즘2는 스캔 인터페이스로서 정규경로식에 해당하는 노드를 반환하는 함수이다. 이 함수는 ForwardLabel과 ForwardLambda를 호출한다. ForwardLabel은 s-NFA에서 주어진 레이블을 이용하여 상태를 전이하는 것이다. 도7의 알고리즘3의 함수 ForwardLambda은 s-NFA 상태를 전진할 때 s-NFA 상태를 전진할 때 s-NFA와 s-DOM의 시그니처를 비교 연산하여 다음 상태로 전진할 수 있는지를 판단한다. 도7의 알고리즘3의 if절의 의미는 s-NFA의 최종 상태까지 전진하는데 필요한 레이블이 s-DOM의 서브 트리에 있는지를 확인하는 것이다. 만약 없다면 상태 전진을 할 수 없으므로 그 노드는 탐색할 필요가 없게 되는 것이다.
실시예 5.4 : 질의 처리
실시예 5.2의 질의를 처리할 때 이 질의를 s-NFA로 변환하면 s-NFA는 실시예 5.2의 NFA 그림에 예제 5.3의 시그니처를 각 노드가 가지고 있는 형태가 된다. 이것을 도2의 s-DOM에 적용하였을 때 &1노드를 읽으면 s-NFA에서의 상태집합 S={2}가 된다. 이때 λ로 된 상태를 전진하기 위하여 알고리즘 3을 적용하면 상태노드 2의 시그니처 {11101010, 10001001} 중 10001001과 &2의 시그니처 11101011을 AND연산하면 10001001이 되므로 상태 전이를 할 수 있게 되어 S={7, 13}이 된다. 이때 상태노드 7의 시그니처 10001000과 &5의 시그니처 11100010과 AND연산을 하면 그 결과가 10001000이 되지 않는다. 그러므로 질의 person.*에도 불구하고 &5의 서브 트리는 방문할 필요가 없게 된다. 이와 같은 연산을 반복적으로 하면 원하는 결과를 얻을 수 있다.
5.4 삽입과 삭제 연산
삽입과 삭제 연산이 일어나면 그 부모 노드들의 시그니처 값을 변경하야야 한다. 한 노드의 갱신 연산이 일어나면 그 노드의 부모 노드의 시그니처 값은 부모 노드의 모든 자식 노드들의 시그니처를 OR연산하여 다시 만들어야 한다. 이것은 부모 노드의 갱신 작업이 되므로 다시 재귀적으로 이와 같은 연산이 최상위노드까지 연산되어야 한다. 이러한 점은 시그니처 방법을 사용하지 않았을 경우보다 갱신 연산시 비용이 많이 든다. 본 명세서에서는 검색 연산의 수행 속도를 증진시키는 것이 목적이기 때문에 갱신 연산시의 이와 같은 비용상승은 고려하지 않았다. 일반적으로 XML 문서에서 갱신 연산은 자주 일어나는 것이 아니면 주로 검색 연산을 하는 경향이 있으므로 이와 같은 가정은 타당하다. 도8의 알고리즘4는 갱신 연산이 일어날 때 DOM의 각 노드의 시그니처를 변경하는 알고리즘이다.
실험실시예
본 발명의 실험은 Java로 코딩되었으며 입력된 정규경로식을 처리하는 스캔 연산자를 수행할 때 DOM에서 접근하는 노드 갯수를 측정하였다. 또한 노드들을 깊이 우선 탐색(DFS) 방법과 넓이 우선 방식(broadth first search, BFS)으로 저장하였을 때 접근되는 디스크 페이지의 갯수를 비교하였다. 디스크 접근은 페이지를 읽어들이는 횟수와 디스크 연산시 소요되는 총 사간을 비교하였다. 이때 버퍼는 LPU 방식으로 페이지 치환(replace)을 하며 디스크 연산 시간을 계산하는 식은 [20]를 이용하였으며 각 인자는 표 4에 나타나 있다. 이때 Seek Time 식의 d는 트랙과 트랙사이의 거리를 나타낸다.
디스크에 저장하는 각 노드의 시그니처 크기는 5 바이트로 하였으며 버퍼의 갯수는 20개로 고정하였다. 페이지의 크기는 4Kbytes로 하였으며 각 페이지에 저장되는 객체의 크기는 엘리먼트의 이름에 따라 가변적으로 하였다.
본 발명에서 디스크에 저장하는 방법으로 BFS와 DFS를 이용한 것은 트리 형태의 데이터를 저장하는 방법에서 가장 클러스트링이 많이 된 두가지 형태를 택하였기 때문이다. 노드의 접근 횟수를 비교하는 것과 BFS, DFS로 저장한 후 페이지 I/O 횟수를 비교하는 것은 양극단을 비교하는 것으로, 전자는 클러스트링이 전혀 되어 있지 않은 상태를 나타낸 것이며, 후자는 완전히 클러스트링이 되어 있는 것을 말한다. 노드 접근 횟수는 결국 객체의 접근 횟수와 동일하며 실제 삽입과 삭제 연산이 빈번히 일어나게 되면 객체들의 저장 형태는 클러스트링이 되어 있는 상태와 완전히 되어 있지 않은 상태의 중간 형태를 띄게 될 것이다. 본 발명에서는 실험을 통하여 시그니처를 통하여 데이터를 저장할 때 클러스트링 효과를 보기 위하여 어떠한 방법을 이용하는 것이 좋은지를 비교하였다.
본 발명에서 실험한 데이터는 Shakespeare, The Book fo Mormon과 Michael Ley의 논문 리스트 일부(bibliography)를 XML로 변환한 데이터이다. 각 데이터의 크기는 Shakespeare가 7.5Mbytes, The Book fo Mormon가 6.7Mbytes, Michael Ley(bibliography)가 247Kbytes이다. 실험의 결과는 도9에 나타나 있다. 도9a, 도9c, 도9e는 각각 노드의 탐색 횟수, 디스크 I/O 횟수 및 디스크 연산에 걸린 시간을 측정한 것이다. 도9b, 도9d, 도9f는 각 연산에서 사용한 방법들의 상대적인 값을 비교한 것이다. 여기에서 쓰인 질의는 6가지인데 표 5에 나타나 있다.
여기서 *[2]는 임의의 경로가 두개 있다는 것을 나타낸다. 보는 바와 같이 한 문서에 대하여 첫번째 질의는 특정 경로에 있는 데이터를 검색하는 질의이고 두번째 질의는 트리의 깊이와는 관계없이 모든 특정레이블이 나타나는 것을 검색하는 질의이다.
도9a는 본 발명의 실험실시예에 따른 노드 탐색 횟수의 비교예를 나타내며, 도9b는 본 발명의 실험실시예에 따른 노드 탐색 횟수의 비율을 나타낸다. 직선으로 표시한 막대(,Sig)는 본 발명에 따른 시그니처 방법을 이용한 노드 탐색 횟수이며, 사선으로 표시한 막대(, non-Sig)는 시그니처 방법을 사용하지 않은 노드 탐색 횟수이다.
즉, 도9a와 도9b를 보면 각 질의를 수행할 때 노드의 방문 횟수를 알 수 있다. 시그니처 기반의 질의 처리가 모든 경우에 성능이 좋은 것을 알 수 있다. 이것은 시그니처를 이용하여 그래프 탐색을 줄일 수 있기 때문이다. 객체지향형 데이터베이스에서와 같이 각 노드가 하나의 객체로 저장되어 있을 경우에 시그니처를 이용하면 데이터베이스내의 각 객체의 탐색 횟수를 줄일 수 있으므로 성능이 향상될 것이라는 것을 알 수 있다.
도9c는 본 발명의 실험실시예에 따른 디스크 I/O횟수를 나타내며, 도9d는 본 발명의 실험실시예에 따른 디스크 I/O횟수 비율을 나타낸다. 직선으로 표시한 막대(,DFS)와 사선으로 표시한 막대(, BFS)는 시그니처 방법을 사용하지 않고 데이터를 DFS와 BFS로 클러스트링하여 저장한 것이며, 직선 벽돌로 표시한 막대(,s-DFS)과 사선 벽돌로 표시한 막대(, s-BFS)는 시그니처 방법을 사용하여 데이터를 DFS와 BFS로 클러스터링하여 저장한 것이다.
즉, 도9c와 도9d를 보면, 일반적인 경우에 BFS가 더 나은 성능을 보이는 것을 알 수 있다. 이것은 정규경로식을 처리할 때 만족하지 않는 노드는 탐색할 필요가 없는 경우가 많이 발생하기 때문에 그래프 탐색이 항상 자식 방향으로 일어나지 않기 때문이다. 이때 시그니처를 이용하여 저장하였을 경우에 디스크 I/O가 현저히 적다는 것을 알 수 있다. 하지만 질의 결과가 클수록 디스크 I/O 성능은 줄어든다. 도9d에서 Q3, Q4를 보면 시그니처를 이용한 것이 크게 나은 성능을 보이지 않는데 이것은 비록 노드의 탐색 횟수는 줄지만 각 노드에 시그니처를 저장함으로서 한 페이지에 저장할 수있는 노드의 갯수가 줄기 때문에 일정한 횟수 이상으로 노드 탐색이 많아지면 디스크 I/O가 더 많이 발생하기 때문이다. 하지만 이런 경우는 모든 데이터가 완전히 클러스트링이 되어 있다는 가정 하에 수행한 결과이기 때문에 그 차이가 작은 것이며 실제 환경에서는 완벽한 클러스트링을 할 수 없으므로 시그니처를 한 경우와 사용하지 않은 경우의 차이는 더욱 커질 것으로 예상된다.
또한 시그니처를 이용하여 데이터를 저장할 경우 클러스트링은 BFS로 하는 것이 좋다는 것을 알 수 있다. 그러므로 한 노드를 삽입할 때 그 노드의 부모나 자식 노드가 저장된 디스크에 삽입하는 것보다는 형제 노드가 저장된 디스크에 삽입하는 것이 디스크 I/O를 줄일 수 있다는 것을 알 수 있다.
도9e는 본 발명의 실험실시예에 따른 디스크 동작시간(단위는 초)을 나타내며, 도9f는 본 발명의 실험실시예에 따른 디스크 동작시간 비율을 나타낸다. 도9e와 도9f에서 막대들은 디스크 I/O횟수 대신 디스크 동작시간을 나타낸 것을 제외하고 도9c와 도9d의 막대들과 동일하다.
즉, 도9e와 도9f는 디스크 연산에 소요되는 시간을 계산한 것으로서 디스크 I/O 횟수를 측정한 것과 유사한 형태의 그래프를 얻을 수 있다. 결국 클러스트링 방법에 관계없이 디스크 I/O 횟수를 줄이는 것이 성능을 향상하는 방법이라는 것을 알 수 있으며 클러스트링은 DFS다 BFS 방법으로 하는 것이 더 나은 성능을 얻을 수 있다는 것을 알 수 있다.
이상, 본 발명을 도면을 참조하여 실시예들을 들어 설명하였으나, 본 발명은 이에 제한되지 않는다.
즉, 상기 실시예들에서는 시그니처 기법을 이용한 XML 데이터의 저장 및 이에 대한 질의인 정규경로식을 처리하는 기법에 대하여 설명하였다. 정규경로식을 s-NFA를 이용하여 수행함으로써 그래프의 노드 탐색을 줄일 수 있으며 실제디스크 접근 횟수도 많이 줄일 수 있었다. 이와 같은 기법은 인덱스를 사용하지 않고 그래프를 탐색하는 경우에 사용하는 기법이다. 반구조적 데이터에 대한 인덱스도 또한 그래프 형태의 데이터이므로 이러한 기법을 인덱스 구축에도 적용하여 사용할 수 있다. 이 경우 인덱스 노드의 탐색 범위를 줄일 수 있다.
또한 BFS로 클러스트링하는 것이 DFS 보다 디스크 접근 횟수를 줄일 수 있는 것을 알 수 있었다. 그러므로 시그니처 기반의 그래프 탐색의 경우에는 부모 자식간의 노드 클러스트링보다는 형제 노드간의 클러스트링이 더 큰 성능 향상을 보인다는 것을 알 수 있었다. 이것은 그래프 탐색시에 특정 노드의 하위 트리를 탐색하지 않는 경우가 빈번히 발생하기 때문이다.
하지만 엘리먼트의 갯수가 많아지거나 그래프의 깊이가 깊어질수로 상위노드의 시그니처는 1로 세팅되는 비트 수가 많아져서 시그니처가 포화(saturation)될 가능성이 높아진다. 이것은 시그니처의 크기를 늘리거나 자식 노드들에 관한 시그니처의 갯수를 본 발명에서 제시한 1개에서 여러개로 늘리는 시그니처 분할(signature chopping)을 통해서 해결될 수 있다. 또한 DTD 정보와 시그니처를 동시에 이용하면 그래프 탐색 범위를 훨씬 많이 줄일 수 있다.
이상에서 본 발명은, XML 문서의 앨리먼트와 애트리뷰트 이름에 대하여 시그니처를 구한 후 이를 상위노드로 전파하여 임의의 하위노드에 특정 이름을 가진 노드가 있는지를 찾아내고, 정규경로식을 가진 질의를 처리할 수 있는 방법을 제안하므로, 디스크 I/O를 줄이려면 노드의 탐색 횟수를 줄일 수 있으며, 정규경로식을 처리하기 위하여 노드를 탐색할 때 노드 탐색 횟수를 줄일 수 있는 효과가 있다.
Claims (7)
- XML 문서의 자료구조에서 상위노드 및 하위노드의 앨리먼트와 애트리뷰트 이름에 대하여 시그니처를 구하는 각 노드의 시그니처 계산단계와,각 상위노드 하부에 위치하는 하위노드들의 시그니처들과 그 상위노드 시그니처를 OR 연산하여 상위노드의 시그니처를 구하는 상위노드의 시그니처 계산단계와,상기 자료구조에 상기 하위노드와 상기 상위노드의 시그니처를 저장하는 저장단계를 갖는 엑스엠엘 문서의 저장방법.
- 제1항에 있어서, 상기 자료구조는 트리형태의 그래프 구조의 DOM인 것을 특징으로 하는 엑스엠엘 문서의 저장방법.
- 질의로 들어온 정규경로식을 상태노드와 에지들로 구성된 하나의 시작 상태와 하나의 최종상태를 갖는 NFA로 변경하는 정규경로식 변경단계와,상기 상태노드가 경로 시그니처를 포함하도록 NFA를 변경하는 NFA 변경단계와,상기 시그니처 정보를 포함하는 NFA를 DOM에 적용하여 질의 탐색하는 질의 탐색단계를 갖는 엑스엠엘 문서의 노드 탐색방법.
- 제4항에 있어서,상기 DOM은 제 1 항 또는 제 2 항에 의한 XML 문서의 저장방법에 의해 저장된 것을 특징으로 하는 엑스엠엘 문서의 노드 탐색방법.
- 제3항 또는 제4항에 있어서,상기 질의 탐색은 깊이 우선 검색(DFS)에 의한 것을 특징으로 하는 엑스엠엘 문서의 노드 탐색방법.
- 제3항 또는 제4항에 있어서,노드를 삽입하거나 삭제할 때, 상기 노드를 포함하는 상위노드의 시그니처를 갱신하는 갱신단계를 추가로 포함하는 엑스엠엘 문서의 노드 탐색방법.
- 질의로 들어온 정규경로식을 상태노드와 에지들로 구성된 하나의 시작 상태와 하나의 최종상태를 갖는 NFA로 변경하는 정규경로식 변경단계와,상기 상태노드가 경로 시그니처를 포함하도록 NFA를 변경하는 NFA 변경단계와,상기 시그니처 정보를 포함하는 NFA를 반구조적 데이터에 대한 인덱스에 적용하여 인덱스 노드를 탐색하는 인덱스 탐색단계를 갖는 인덱스 노드 탐색방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20010002966A KR100441346B1 (ko) | 2001-01-18 | 2001-01-18 | 엑스엠엘 문서의 저장방법 및 엑스엠엘 문서 또는 인덱스노드 탐색방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20010002966A KR100441346B1 (ko) | 2001-01-18 | 2001-01-18 | 엑스엠엘 문서의 저장방법 및 엑스엠엘 문서 또는 인덱스노드 탐색방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20020061886A true KR20020061886A (ko) | 2002-07-25 |
KR100441346B1 KR100441346B1 (ko) | 2004-08-02 |
Family
ID=27692125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20010002966A KR100441346B1 (ko) | 2001-01-18 | 2001-01-18 | 엑스엠엘 문서의 저장방법 및 엑스엠엘 문서 또는 인덱스노드 탐색방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100441346B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100493882B1 (ko) * | 2002-10-23 | 2005-06-10 | 삼성전자주식회사 | Xml 데이터 검색을 위한 질의 처리 방법 |
KR100558765B1 (ko) * | 2002-11-14 | 2006-03-10 | 한국과학기술원 | 적응형 경로 인덱스를 이용한 xml 질의 수행 방법 |
KR100660028B1 (ko) * | 2005-02-23 | 2006-12-20 | 인천대학교 산학협력단 | 데이터베이스 개념 구조에 기반한 xml 트리의 색인 및질의 방법 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100902653B1 (ko) | 2008-01-11 | 2009-06-15 | 숭실대학교산학협력단 | 효율적인 온톨로지 추론을 위한 검색 장치 및 방법 |
-
2001
- 2001-01-18 KR KR20010002966A patent/KR100441346B1/ko not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100493882B1 (ko) * | 2002-10-23 | 2005-06-10 | 삼성전자주식회사 | Xml 데이터 검색을 위한 질의 처리 방법 |
KR100558765B1 (ko) * | 2002-11-14 | 2006-03-10 | 한국과학기술원 | 적응형 경로 인덱스를 이용한 xml 질의 수행 방법 |
KR100660028B1 (ko) * | 2005-02-23 | 2006-12-20 | 인천대학교 산학협력단 | 데이터베이스 개념 구조에 기반한 xml 트리의 색인 및질의 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR100441346B1 (ko) | 2004-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Nijssen et al. | Efficient discovery of frequent unordered trees | |
Nestorov et al. | Representative objects: Concise representations of semistructured, hierarchical data | |
US8892599B2 (en) | Apparatus and method for securing preliminary information about database fragments for utilization in mapreduce processing | |
US7171404B2 (en) | Parent-child query indexing for XML databases | |
US7260572B2 (en) | Method of processing query about XML data using APEX | |
US6853992B2 (en) | Structured-document search apparatus and method, recording medium storing structured-document searching program, and method of creating indexes for searching structured documents | |
JP5376163B2 (ja) | 文書管理・検索システムおよび文書の管理・検索方法 | |
US7124147B2 (en) | Data structures related to documents, and querying such data structures | |
US7412444B2 (en) | Efficient indexing of hierarchical relational database records | |
KR100638695B1 (ko) | 구조화 문서의 데이터를 검색하는 장치 및 방법 | |
Bille et al. | Dynamic relative compression, dynamic partial sums, and substring concatenation | |
US20060015809A1 (en) | Structured-document management apparatus, search apparatus, storage method, search method and program | |
Brisaboa et al. | Compressed representation of dynamic binary relations with applications | |
Ko et al. | A binary string approach for updates in dynamic ordered XML data | |
Fischer et al. | Deterministic sparse suffix sorting on rewritable texts | |
Amavi et al. | On correcting XML documents with respect to a schema | |
Kocher et al. | A scalable index for top-k subtree similarity queries | |
US20130297657A1 (en) | Apparatus and Method for Forming and Using a Tree Structured Database with Top-Down Trees and Bottom-Up Indices | |
KR100441346B1 (ko) | 엑스엠엘 문서의 저장방법 및 엑스엠엘 문서 또는 인덱스노드 탐색방법 | |
Arenas et al. | Consistency of XML specifications | |
Hsu et al. | UCIS-X: an updatable compact indexing scheme for efficient extensible markup language document updating and query evaluation | |
Feigenblat et al. | A grouping approach for succinct dynamic dictionary matching | |
Belazzougui | Improved space-time tradeoffs for approximate full-text indexing with one edit error | |
Kucherov et al. | Full-fledged real-time indexing for constant size alphabets | |
Park et al. | SigDAQ: an enhanced XML query optimization technique |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |