KR101119290B1 - 정보 처리 장치, 데이터베이스 시스템, 정보 처리 방법 및 프로그램 - Google Patents

정보 처리 장치, 데이터베이스 시스템, 정보 처리 방법 및 프로그램 Download PDF

Info

Publication number
KR101119290B1
KR101119290B1 KR1020090075309A KR20090075309A KR101119290B1 KR 101119290 B1 KR101119290 B1 KR 101119290B1 KR 1020090075309 A KR1020090075309 A KR 1020090075309A KR 20090075309 A KR20090075309 A KR 20090075309A KR 101119290 B1 KR101119290 B1 KR 101119290B1
Authority
KR
South Korea
Prior art keywords
unit
subtree
partition
index
unit subtree
Prior art date
Application number
KR1020090075309A
Other languages
English (en)
Other versions
KR20100061308A (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 KR20100061308A publication Critical patent/KR20100061308A/ko
Application granted granted Critical
Publication of KR101119290B1 publication Critical patent/KR101119290B1/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/22Indexing; Data structures therefor; Storage structures
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information 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/83Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Abstract

파티션화를 함으로써 효율적인 데이터베이스 액세스를 보장해주는 정보 처리 장치, 데이터베이스 시스템, 정보 처리 방법, 및 프로그램이 제공된다. 본 장치는, 파티션화되는 대상 데이터를 포함하는 유닛 서브트리가 대상 데이터의 값에 따라 분리되어 등록되는 값 파티션과, 유닛 서브트리를 고유하게 식별해주는 인덱스를 포함하는 기저 파티션을 생성하는 파티션 생성 유닛(222); 구조화된 문서의 속성값을 정의하는 시작 태그와 종료 태그의 위치를 확인하고, 저장 영역내의 등록을 위해 속성값의 계층적 구조에 대응하는 분절 위치 리스트를 생성하는 XML 파서(224); 분절되는 유닛 서브트리의 시작 태그 위치와 종료 태그 위치를 확인하여, 유닛 서브트리와 상기 유닛 서브트리의 인덱스를 구조화된 문서로부터 분리시키는 XML 분절 유닛(226); 및 유닛 서브트리와 인덱스를 개개별의 파티션들내에 등록하는 분절된 XML 등록 유닛을 포함한다.
파티션, 데이터베이스, 액세스, 정보 처리, 인덱스, 태그, XML, 파서.

Description

정보 처리 장치, 데이터베이스 시스템, 정보 처리 방법 및 프로그램{INFORMATION PROCESSING APPARATUS, DATABASE SYSTEM, INFORMATION PROCESSING METHOD, AND PROGRAM}
본 발명은 데이터베이스를 목적으로 하는 정보 처리 기술에 관한 것이다. 보다 구체적으로, 본 발명은 데이터베이스내의 데이터 영역을 파티션화함으로써 효율적인 데이터베이스 액세스를 보장하는 정보 처리 장치, 데이터베이스 시스템, 정보 처리 방법, 및 프로그램에 관한 것이다.
인터넷을 포함하는 네트워크 인프라구조의 보급 및 정보 처리 장치와 응용 프로그램의 진보로 인하여, 정보 처리 장치가 처리할 수 있는 콘텐츠의 유형과 양은 상당히 증가하였다. 방대한 양의 콘텐츠로의 액세스를 위해, 클라이언트 컴퓨터(이후부터, 간단히 "클라이언트"라고 부른다)에 의한 컨텐츠의 검색을 가능하도록 하는데 관계형 데이터베이스 또는 객체지향형 데이터베이스와 같은 데이터베이스가 사용되어 왔다.
데이터베이스는 마스터 키 등을 이용하여 콘텐츠를 고유하게 식별함으로써 콘텐츠를 관리한다. 통상적으로, 콘텐츠내에 포함된 키워드로부터 생성된 인덱스가 검색을 위해 사용되고, 검색에 의해 발견된 콘텐츠 또는 콘텐츠의 리스트는 클라이언트의 사용자에게 콘텐츠를 제공하기 위해 클라이언트에게로 반환된다. 만약 데이터베이스에 의해 관리되는 콘텐츠의 양이 방대하지 않으면, 키워드 검색 등은 검색 효율성에 대하여 악영향을 미치는 것 없이 데이터베이스에 의해 관리되는 풀 텍스트로 수행될 수 있다.
데이터베이스에 의해 검색되는 콘텐츠의 양은 방대해졌고, 최근에, 풀 텍스트 인덱싱이 검색을 위해 점차적으로 많이 사용된다. 검색 효율성을 개선시키기 위해, 예컨대, 데이터베이스내에서 컨텐츠에 파티션을 할당하고, 전체 데이터베이스에 대해 검색을 수행하기 보다는 특정 파티션내에서 검색을 수행함으로써, 검색 공간을 줄이는 방안이 마련되어 왔다.
파티션에 있어서, 동일 범위에 있는 데이터를 동일 파티션에 저장하기 위해, 테이블은 예컨대, 년 또는 월과 같이, 파티션되는 대상 아이템에 기초한 범위들로 분할될 수 있다. 그러면, 컨텐츠 또는 데이터는 파티션별로 추가되고, 삭제되거나, 또는 검색될 수 있다. 이와 같은 파티션별로의 검색은 등록된 모든 컨텐츠 또는 데이터를 검색하는 경우에서 보다 빠른 처리를 보장해주는 것으로 알려져 있다.
또한, 최근해에, XML 문서와 같은 구조화된 문서의 형태로 관계형 데이터베이스내에 콘텐츠 또는 데이터를 등록하는 기술이 알려져 있다. 다양한 데이터를 관계형 데이터베이스내로 등록시킬 때에 XML 문서와 같은 구조화된 문서를 도입함으로써, 통상적인 인덱스 검색 이외에 DOM(문서 객체 모델) 또는 SAX(XML을 위한 단순 API)와 같은 XML 파서(parser)를 이용한 검색이 이용가능해졌고, 보다 효율적인 콘텐츠 검색을 가능하게 해주는 소위 말하는 XML 데이터베이스(이후부터, "XMLDB"라고 부른다)도 제안되고 있다. 또한, XMLDB는, 관계형 데이터베이스의 스키마(schema)를 수정하는 것 없이, 등록된 콘텐츠 또는 데이터 엘리먼트들을 수정함으로써 보다 유연한 스키마 변경을 보장해주는데 사용될 수 있는 것으로 알려져 있다.
도 17은 XML 문서가 관계형 데이터베이스(이후부터, "RDB"로 부른다)에서 관리되는 경우에서의 기록물 또는 컬럼(column)의 통상적인 구조의 예를 도시한다. 통상적으로, RDB에서 XML 문서를 지원해주기 위해, XML 데이터는 보통 RDB내의 컬럼에 맵핑되어 저장될 것이거나, 또는 텍스트 테이터로서 컬럼내에 저장되어 관리될 것이다.
도 17에서 도시된 통상적인 예시에서, 관계형 데이터베이스(1710)는 규정된 기록물의 식별정보를 위한 ID(식별정보) 값을 등록하는 컬럼과, 다른 속성값들을 등록하기 위한 하나 이상의 컬럼들과, XML 문서의 텍스트를 등록하기 위한 컬럼(1720)을 갖는다. 만약 XML 문서의 크기가 작으면, XML 문서는 어떠한 문제도 일으키지 않으면서 컬럼(1720)내에 등록될 수 있다. 하지만, 하나의 카테고리의 데이터를 기술하는 XML 문서의 크기는 점점 더 증대해지는 경향이 있으며, 수 기가바이트가 될 수 있다. 이와 같은 경우, XML 문서 전체를 검색하는 것은 심지어 XML 파서 및 그밖의 것들에 의해 수행되는 처리를 가능하게할 지라도 비효과적이다.
방대한 크기의 XML 문서를 효과적으로 검색하기 위한 몇몇 기술들이 알려져 있다. 예를 들어, 관계형 데이터베이스 제품 DB2?에서(DB2?는 인터내셔날 비지니 스 머신즈 코포레이션의 등록 상표이다)는, XDA(XML 데이터 영역) 객체(1740)가 XML 문서를 저장 및 검색하기 위해 생성된다. XDA 객체(1740)는 복수의 영역들(1750, 1760)로 분할되며, 방대한 크기의 XML 문서의 분할된 영역들로의 액세스들을 가능하게 하기 위하여, 인덱스 객체(1730)가 XML 문서내의 특정 영역들을 인덱싱하도록 구성된다. 또한, XML 문서는 노드 테이블로서 각각 확장되는 단일 형태(entirety) 또는 서브트리들(subtree)을 가지며, 노드 테이블은 인덱스 객체로서도 사용될 수 있다.
지금까지, 데이터베이스내에 파티션화를 도입시키는 다양한 기술들이 알려져 왔다. 예를 들어, 일본 특허 출원 공개 제7-319923호(특허 문헌 1)는 시스템내에서 서로 다른 프로세서들상에서 각자가 실행될 수 있는 데이터 서버들이 각자의 SQL 스테이트먼트(statement)를 수행하고 이에 따라 각자의 데이터베이스 파티션들에 동시적이고 병렬적으로 액세스함으로써, 주어진 클라이언트 애플리케이션으로부터 주어진 요청의 전반적인 액세스 시간을 줄여주는 방법 및 장치를 기술한다.
또한, 일본 특허 출원 공개 제2001-142752호(특허 문헌 2)는 데이터베이스의 저장 영역들로서 m 개의 데이터베이스 저장 영역들이 주어지는 경우, 데이터베이스의 하나 이상의 데이터 항목을 파티션 키로서 사용하고, 상기 데이터베이스를 파티션 키에 해시 함수를 적용함으로써 n(m≤n)개의 논리 단위인 버킷들로 분할하고, 주어진 데이터베이스 저장 영역들의 갯수에 따라 데이터베이스 저장 영역들이 각각의 버킷들을 관리하는 방법을 결정하는 해시 맵 테이블과, 분배된 버킷들을 각 데이터베이스 저장 영역내에서 저장 단위인 세그먼트로 매핑하기 위한 세그먼트 해시 맵 테이블을 이용하여 데이터베이스를 관리하는 방법을 기술한다.
또한, XML 문서와 같은 태그를 이용하여 구조화된 문서를 저장하는 데이터베이스가 예컨대 일본 특허 출원 공개 제2008-197815호(특허 문헌 3)에서 기술된다. 특허 문헌 3은 데이터베이스에 등록될 문서에 해당하는 원본 문서가 해당 데이터베이스내에 이미 등록되어있는 경우, 등록될 문서내에서 원본 문서에 대해 임의의 변경이 발생한 지점의 데이터를 차등 데이터로서 추출하고, 인덱스 처리 유닛은 오로지 변경이 발생한 부분의 인덱스만을 업데이트함으로써, 인덱스 준비 비용을 절감케하는 시스템을 기술한다.
[특허 문헌 1] : 일본 특허 출원 공개 제7-319923호
[특허 문헌 2] : 일본 특허 출원 공개 제2001-142752호
[특허 문헌 3] : 일본 특허 출원 공개 제2008-197815호
상술한 바와 같이, 지금까지, 데이터베이스내에 저장된 콘텐츠 또는 데이터에 대한 검색 효율성을 향상시키려는 목적으로 데이터베이스에 파티션을 할당하는 기술들과, 데이터베이스의 관리시에 효율성을 향상시키려는 목적으로 데이터베이스내의 계층적 구조를 기술하는 구조화된 문서를 등록하는 기술들이 제안되어 왔었다.
XML 문서가 RDB에 의해 관리되는 경우, 데이터 전체는, 도 17에서 도시된 트리 구조와 관련된 영역들로의 XML 문서의 분할 이외에도, 예컨대, 날짜, 영업 장소, 또는 세부사항에 따른 특정 값 범위들로 카테고리화되거나 또는 파티션화될 수 있다. XML 문서가 특정 속성값에 따라 파티션화되면, 검색은 특정 속성값을 포함하는 데이터에 대해서만 수행될 수 있다. 이것은 검색 공간을 줄여줄 수 있고, 이에 따라 효율적인 검색 처리를 가능하게 해준다.
하지만, 데이터베이스에 파티션을 할당함으로써 검색 공간을 줄여주는 통상적인 기술은 XMLDB에 적용되는 경우에 효율적인 파티션 방법을 반드시 제공해주는 것은 아니다. 구체적으로, XML 문서는 그 자체적으로 계층적 데이터 구조를 가질 수 있다. 따라서, 대상 데이터를 갖는 서브트리(대상 데이터에 따라 파티션이 수행될 수 있다)가 XML 문서에 추가될 수 있는 것을 생각할 수 있는 것은 자명하다. 또한, XMLDB에 의해 관리되는 데이터내에서 동일한 속성값에 의해 규정된 서브트리들, 즉 예컨대 <branch name = "">에 의해 규정된 서브트리들에서, 파티션화되어 서로 다른 파티션들로 분리될 대상 데이터를 갖는 서브트리들이 추가될 수 있다.
따라서, XMLDB에서 파티션화를 수행하기 위해, 날짜, 제품명, 고객, 영업 장소 등과 같이, 파티션화될 대상 데이터를 포함하는 서브트리들을 규정하고, 대상 데이터를 오로지 규정된 서브트리에 대한 파티션 범위와 비교하는 것이 필요하다.
게다가, XML 문서를 파티션들로 단순히 분절시키는 것은 XML 문서의 계층적 구조의 손실을 야기시킬 수 있으며, 이 경우 해당 검색을 위해 계층적 구조를 효과적으로 사용하는 것이 더 이상 불가능해졌기 때문에, 새로운 인덱스 데이터를 생성하는 것이 필요할 것이다.
이에 따라, XML을 이용한 데이터 구조를 변경할 때에 데이터베이스의 파티션화의 효과성과 유연성을 손상시키는 것 없이, 데이터베이스의 검색 효율성을 향상시킬 수 있으며, 데이터 구조내의 변경들에 대해 유연하게 대응할 수 있는 기술에 대한 요구가 있어 왔다.
상술한 통상적인 기술들의 문제점들을 해결하기 위해, 본 발명은 구조화된 문서내에서 파티션화될 대상 데이터를 포함하는 유닛 서브트리가, 구조화된 문서내에서, 유닛 서브트리를 정의하는 시작 태그와 종료 태그가 서로 연계되어 있는 범위 정의 쌍으로서 확인되는 정보 처리 장치를 제공한다. 이와 동시에, 정보 처리 장치는 구조화된 문서내에서 서브트리의 위치의 확인을 위해, 구조화된 문서내에서 유닛 서브트리의 기술 순서(description order)를 표시하는 발생 카운터를 생성한다. 비록 이하에서는 대상 데이터를 저장하기 위한 데이터베이스로서 관계형 데이 터베이스를 이용하는 XMLDB에 대하여 설명을 할 것이지만, 본 발명의 실시예는 관계형 데이터베이스를 이용하는 XMLDB로 제한되지 않는다.
유닛 서브트리는 특정 의미를 갖는 텍스트를 포함하는 계층적 구조를 갖는데, 이 특정 의미에 따라 파티션화가 수행된다. 유닛 서브트리는 특정 의미를 갖는 속성을 정의하는 태그 유닛들에서 정의된다. 데이터베이스에 액세스하는 데이터베이스 관리자 또는 사용자는 XPath 등을 이용하여 유닛 서브트리를 정의내릴 수 있다. 파티션화시에, 정보 처리 장치는 유닛 서브트리를 등록하기 위한 값 파티션과, 유닛 서브트리를 가리키는 인덱스를 등록하기 위한 기저 파티션을 생성한다.
이후부터, 정보 처리 장치는 속성값의 계층적 구조에 대응하는 분절 위치 리스트를 생성하기 위한 속성값을 정의하는 시작 태그와 종료 태그의 위치들을 확인하기 위해 파서 유닛을 개시토록 하고, 분절 위치 리스트를 저장 영역내에 등록한다. 또한, 구조화된 문서의 유닛 서브트리가 생성된 분절 위치 리스트를 참조함으로써 인식될 때에, 정보 처리 장치는 유닛 서브트리가 시작하는 구조화된 문서내의 라인 위치와 유닛 서브트리가 끝나는 구조화된 문서내의 라인 위치를 연계시킴으로써 범위 정의 쌍을 생성한다. 범위 정의 쌍은 발생 카운터에 의한 구조화된 문서내의 발생 위치와 연계되며, 이로써 서브트리 데이터 리스트가 생성된다.
서브트리 데이터 리스트가 생성되면, 정보 처리 장치는 분절될 유닛 서브트리의 시작 태그 위치와 종료 태그 위치를 확인하기 위해 분절 위치 리스트를 참조하며, 유닛 서브트리는 파티션화될 대상 데이터를 포함한다. 그런 후, 정보 처리 장치는 유닛 서브트리와 이 유닛 서브트리를 가리키는 인덱스를 구조화된 문서로부 터 분리시켜 확인하고, 분리된 유닛 서브트리와 이 유닛 서브트리를 식별해주는 인덱스를 개별 파티션들내에 등록함으로써, 파티션화를 완성한다.
유닛 서브트리는 복수의 시작 태그를 포함하며, 인덱스는 대응하는 유닛 서브트리내의 시작 태그들 중 첫번째 태그로부터 생성된다. 파티션내의 등록 이전에, 포인터가 유닛 서브트리와 이 유닛 서브트리를 고유하게 식별해주기 위한 인덱스에 추가됨으로써, 유닛 서브트리와 인덱스 서로들간에 상호 참조가 가능해진다.
또한, 본 발명의 정보 처리 장치는 대상 데이터를 이용함으로써 값 파티션내에 등록된 유닛 서브트리의 검색을 수행하는 SQL 처리 유닛과, SQL 처리 유닛에 의해 수행된 검색의 결과를 생성하는 검색 결과 생성 유닛을 포함할 수 있다. 본 발명에서, 구조화된 문서는 XML에서 기술될 수 있으며, 데이터베이스는 관계형 데이터베이스를 이용하는 XMLDB일 수 있다.
본 발명은 상술한 정보 처리 장치를 포함하는 데이터베이스 시스템, 정보 처리 방법, 및 프로그램을 또한 제공할 수 있다.
본 발명에 따르면, 구조화된 문서의 계층적 구조에 의한 검색 효율성을 손상시키는 것 없이, 파티션화에 의해 검색 공간의 감소가 가능하게 되는 정보 처리 장치를 포함하는 데이터베이스 시스템, 정보 처리 방법, 및 프로그램을 제공하는 것이 가능하다.
이제부터, 본 발명을 실시예를 참조하여 설명할 것이지만, 본 발명은 이하의 실시예로 한정되는 것은 아니다. 도 1은 본 발명에 따른 데이터베이스 시스템(100)을 도시한다. 본 실시예의 데이터베이스 시스템(100)은 서버(130), 데이터베이스(140), 네트워크(120), 및 복수의 클라이언트들(110, 112, 114, 116, 및 118)을 포함하며, 여기서 각각의 클라이언트들은 네트워크(120)에 접속되어 있으며, 네트워크(120)를 통해 서버(130)에 액세스하는 사용자에 의해 운영된다.
본 실시예에서, 서버(130)는 데이터가 XML 문서와 같은 구조화된 문서를 이용하여 파티션화되고 저장되는 데이터베이스 애플리케이션을 구현시키는 정보 처리 장치로서 기능한다. 서버(130)는 데이터베이스 서버 이외에, 웹 서버, SNS 서버, 및 메일 서버의 기능을 갖도록 구현될 수 있지만, 서버(130)의 기능은 특별하게 제한되지 않는다. 본 실시예에서, 네트워크(120)는 바람직하게 인터넷을 포함하지만, 인터넷 이외에도 WAN(광역 네트워크) 또는 LAN (로컬 영역 네트워크)를 포함할 수 있다.
서버(130)는 단일 코어 또는 멀티 코어 형태의 Pentium? 또는 Pentium?-호환가능 칩과 같은 CISC 아키텍쳐 마이크로프로세서, PowerPC?와 같은 RISC 아키텍쳐 마이크로프로세서를 구현시킬 수 있다. 또한, 서버(130)는 Windows? 200X, UNIX? 또는 Linux?과 같은 운영 시스템에 의해 제어될 수 있다. 서버(130)는 데이터 등록 요청 및 검색 요청을 포함할 수 있는, 클라이언트들(110 내지 118)로부터 보내져온 다양한 요청들을 처리하기 위해, C, C++, Java™ JavaBeans™, 펄(Perl), 또는 루비(Ruby)와 같은 프로그래밍 언어로 구현된 CGI, 서블릿(servlet) 또는 아파치(Apache)와 같은 서버 프로그램을 실행시킨다.
각각의 클라이언트들(110 내지 118)은 개인 컴퓨터 또는 워크스테이션으로 구현될 수 있으며, 클라이언트의 마이크로프로세서 유닛(MPU)은 지금까지 알려진 임의의 단일 코어 프로세서 및 멀티프로세서를 포함할 수 있다. 클라이언트들(110 내지 118)은 Windows?, UNIX?, Linux?, 또는 Mac OS?과 같은, 임의의 운영 시스템에 의해 제어될 수 있다. 또한, 각각의 클라이언트들(110 내지 118)은 서버(130)에 액세스하기 위해 Internet Explorer?, Mozilla?, Opera?, 또는 Netscape Navigator?와 같은 브라우저 소프트웨어를 구현시킬 수 있다.
각각의 클라이언트들(110 내지 118)은 TCP/IP와 같은 트랜잭션(transaction) 프로토콜에 기초하는 HTTP 프로토콜과 같은 화일 전송 프로토콜을 이용하여 트랜잭션을 지원하는 네트워크를 경유하여 서버(130)와 접속된다. 각각의 클라이언트들(110 내지 118)은 JDBC(자바™ 데이터베이스 접속성)을 구현시킬 수 있으며, 서버(130)내의 데이터베이스 애플리케이션에 액세스하기 위해, JDBC에 의해 결정되는 애플리케이션 레벨 프로토콜을 이용하여 서버(130)와 접속될 수 있다.
클라이언트들(110 내지 118) 중 하나로부터 보내져온 요청에 응답하여, 서버(130)는 해당 요청에 따라 서버(130)에 의해 관리되는 데이터베이스를 처리한다. 예를 들어, 서버(130)는 수신된 데이터를 데이터베이스(140)내에 저장할 수 있으며, 특정한 등록 속성값에 따라 이 데이터를 파티션화할 수 있다. 클라이언트들(110 내지 118) 중 하나로부터 수신된 요청이 검색 요청인 경우, 서버(130)는 데이터베이스(140)에 대한 SQL(구조화된 질의 언어) 스테이트먼트를 발행한다. 본 실시예에서, 검색 요청에 파티션화에 관련된 속성이 포함된 경우, 서버(130)는 XML 문서와 같은 구조화된 문서로서 등록된 데이터에 걸쳐 파티션별로 검색을 수행한다.
또한, 검색 요청에 파티션화와 관련된 속성이 포함되지 않은 경우, 서버(130)는 SQL 스테이트먼트를 이용하여 통상적인 검색을 수행한다. 본 실시예에서 XML 문서가 구조화된 문서로서 예를 들어 활용되지만, 구조화된 문서는 XML 문서로 특별히 제한되지는 않으며, 이것은 SGML, XHTML, 또는 인핸스드 XML 형태의 문서일 수 있다.
데이터베이스 애플리케이션에서, DB2?(DB2는 인터내셔날 비지니스 머신즈 코포레이션의 등록 상표이다), Oracle?, MySQL, 또는 Access?와 같은 소위 말하는 관계형 데이터베이스(RDB)를 채용하는 것이 가능하다. 본 실시예의 데이터베이스 시스템(100)의 데이터베이스 애플리케이션에서, 파티션 모듈이 데이터베이스의 파티션화를 위한 확장으로서 추가적으로 구현된다.
도 2는 본 실시예에 따른 서버(130)의 기능 블럭도(200)이다. 도 2에서 도시된 각각의 기능 블럭도는 기능 유닛을 RAM과 같은 작업 영역내로 구현시키기 위한 프로그램을 판독하고 정보 처리 장치의 기능 수단을 실현시키기 위한 프로그램을 실행하는 서버(130)내의 프로세서로서 정보 처리 장치상에서 구현된다. 서버(130)는 네트워크(120)를 경유하여 클라이언트들(110 내지 118)로부터 요청들을 수신한다. 각각의 요청은 네트워크 아답터(202)에 의해 수신되고, OSI 참조 모델에서 물리층, 데이터 링크층, 네트워크층, 전송층, 등을 경유하여 상위 애플리케이션층에 전달된다. 그 후 요청과 데이터는 상위 애플리케이션 층을 경유하여 데이터베이스 에 전달된다.
본 실시예의 처리의 실행을 위해, 서버(130)는 SQL 처리 유닛(210), 검색 결과 생성 유닛(216), 및 데이터 관리 유닛(220)을 포함한다. SQL 처리 유닛(210)은 XML 문서의 계층적 구조를 규정하는 검색을 가능하게 해주며, 검색 결과를 생성시키는 SQL 명령을 처리한다. 도 2에서 도시된 실시예에서, SQL 처리 유닛(210)은 SQL 파서(212) 및 XML 파서(214)를 포함한다. SQL 파서(212)는 SAX 등을 내장한 상태로 구현되는 XML 파서(214)에 의한 검색이 가능해지도록, 수신된 검색 요청에 대응하는 SQL 명령을 분석한다.
검색 결과 생성 유닛(216)은 XML 파서(214)에 의해 데이터베이스(140)로부터 추출된 결과를 획득하고, 결과물을 값 파티션 검색 결과로서 디스플레이하기 위해, 예컨대 XML 문서 또는 테이블과 같은 적절한 포맷을 생성하고, 이것을 네트워크 아답터(202)를 경유하여 클라이언트에게 반환한다.
서버(130)는 상술한 데이터 관리 유닛(220)을 더 포함한다. 본 실시예에 따르면, 데이터 관리 유닛(220)은 데이터베이스 애플리케이션을 위한 강화 모듈로서 구현될 수 있고, 이것은 파티션 생성 유닛(222), XML 파서(224), XML 분절 유닛(226), 및 분절-XML 등록 유닛(228)을 포함할 수 있다. 파티션 생성 유닛(222)은 데이터베이스(140)의 관리를 위해 데이터베이스 관리자가 어느 파티션들을 설정했는지에 기초하여 대상 데이터에 대해 설정된 범위들을 이용하여 파티션들을 생성하며, 여기서, 대상 데이터는 날짜, 고객 명칭, 제품명, 영업 장소, 매장 등일 수 있다.
또한, 데이터베이스(140)가 MySQL 또는 액세스와 같은 개인 레벨의 데이터를 생성하기 위해 액세스가능한 데이터베이스인 경우, 사용자는 예컨대, 자신에 의해 관리되는 데이터를 위한 대상 데이터에 기초하여 파티션들을 생성하도록 하는 "파티션 생성" 요청을 발행할 수 있으며, 이러한 요청을 받은 서버(130)는 요청한 바와 같은 파티션들을 생성할 수 있다.
데이터베이스 관리자 또는 사용자에 의해 발행된 파티션 생성 요청은 파티션화의 세분성을 정의하기 위해, 파티션화되는 XML 문서의 서브트리의 기술(description)을 포함할 수 있음을 유념한다. 이후부터, 파티션화의 세분성을 정의하기 위한 서브트리를 "유닛 서브트리 = P"라고 부를 것이다. 유닛 서브트리는 예컨대, P = */a/b/c...로서 정의될 수 있으며, 여기서 "*"는 와일드 카드(wild card)이며, "a", "b", 및 "c" 각각은 유닛 서브트리내에서 정의된 속성 및 속성값을 갖는 태그에 해당한다.
또한, 본 실시예에서, XML 파서(224)는 파티션화되는 구조화된 문서의 파싱을 수행하는 파서 유닛으로서 기능을 하며, 또한 이것은 클라이언트들(110 내지 118) 중 하나로부터 또는 데이터베이스(140)로부터, 처리되는 XML 문서를 획득하고, 파티션들에 따라 XML 문서내의 유닛 서브트리들을 분절하는 사전프로세서로서 역할을 한다. 이를 위해, XML 파서(224)는 XML 문서내의 노드의 속성을 정의하는 태그를 포함하는 라인 위치를 확인하여 분절 위치 리스트를 생성하고, RAM과 같은 적절한 저장 영역내에 이렇게 생성된 리스트를 저장해둔다. XML 파서(224)는 또한 DOM 또는 SAX를 내장한 상태로 구현될 수 있다. XML 파서(224)와 XML 파서(214)가 자신들의 기능들에서의 차이로 인해 별개의 기능 유닛들로서 설명되고 있지만, 소프트웨어 구성에서, 단일 XML 파서는 양쪽 파서들로서 기능하도록 사용될 수 있다.
데이터 관리 유닛(220)은 상술한 바와 같이, XML 분절 유닛(226)과 분절-XML 등록 유닛(228)을 더 포함한다. XML 분절 유닛(226)은 XML 파서(224)에 의해 획득되었던, 처리되는 XML 문서의 분절 위치 리스트를 이용하여 XML 문서를 유닛 서브트리들의 세분성을 갖는 파티션들로 분절시킨다. 또한, XML 문서의 파티션화된 유닛 서브트리의 원본 XML 문서내에 계층적 구조를 규정해주는 정보를 등록할 목적으로, XML 분절 유닛(226)은 유닛 서브트리의 식별을 위한 인덱스를 생성하고, 이 인덱스를 XML 문서와 유닛 서브트리로부터 분리시킨다.
이후부터, 데이터와 같은 대상 데이터에 따라 카테고리화된 파티션을 "값 파티션"이라고 부를 것인 반면에, 값 파티션내에 등록된 유닛 서브트리를 원본 XML 문서와 연계시키는 인덱스를 등록하기 위한 파티션을 "기저 파티션"이라고 부를 것이다. XML 문서가 파티션화되지 않은 서브트리를 포함하는 경우, 이와 같은 서브트리는 또한 기저 파티션내에 등록된다.
분절-XML 등록 유닛(228)은 유닛 서브트리들과 대응하는 파티션들내의 인덱스들을 등록시키기 위해, XML 분절 유닛(226)에 의해 수행되는 분절의 결과물을 이용한다. 파티션화된 유닛 서브트리의 계층적 구조와 원본 XML 문서내의 계층적 레벨과의 상호 참조를 가능하게 하기 위해, 분절-XML 등록 유닛(228)은 고유 상호 참조 식별값을 기저 파티션내에 등록되는 인덱스와 파티션화되는 유닛 서브트리에 각각 추가시킨다. 상호 참조 식별값은 이후에 자세하게 설명될 것이다.
도 3은 본 실시예의 서버(130)에 의해 처리되는 XML 문서(300)의 실시예를 도시한다. 도 3에서 도시된 XML 문서(300)는 어떤 회사에서의 판매 주문 데이터이다. 본 데이터는 각각의 브랜치 마다, 브랜치 정보, 판매 주문 식별값, 고객 정보, 및 판매 주문 콘텐츠를 포함하며, 이 데이터는 태그에 의해 식별된 계층적 구조를 갖는 XML 문서로 기술된다. XML 문서(300)에서, <branch name = "A">로 규정된 부모 노드는 <order slip> 태그로 각각 규정된 복수의 자식 노드들을 포함한다. 도 3에서 도시된 예시적 실시예에서, <branch name "A"> 속성을 갖도록 선언된 부모 노드는 자식 노드들(310, 320)을 포함한다.
도 3에서 도시된 실시예는 단지 예시에 불과한 것임을 유념한다. 부모 노드 <branch name = "A"> 는 많은 수의 자식 노드들을 가질 수 있으며, 처리되는 XML 문서는 수 만개의 라인들의 데이터를 포함할 수 있다. 도 3에서 도시된 바와 같이, 각각의 자식 노드는 <date> 태그를 포함한다. 이 태그는 대상 데이터가 "날짜" 태그임을 기술하는 반면에, 속성들을 정의하는 태그를 "속성 정의 태그"라고 부른다. 도시된 실시예에서, 파티션화되는 대상 데이터는 날짜들이며, 회계 년도와 같은 범위들이 값 파티션들로 파티션화하기 위한 날짜로서 할당되는 것으로 가정한다. 속성 정의 태그들은 <branch name = "A">, <order slip number = "0001">, <details line = "1"> 및 기타 등에 해당한다. 파티션화 범위들은, 회계 년도 또는 발행 년도 이외에, U.S.A., 일본, 중국 및 기타 등과 같은 지리학적 범위일 수 있거나, 또는 "a 내지 d", "e 내지 f", 및 기타 등과 같은 문자 범위일 수 있다.
도 4는 트리 구조 또는 계층적 구조(400)로서의 본 실시예의 XML 문서(300) 를 도시한다. 도 4에서 도시된 바와 같이, 계층적 구조(400)는 브랜치 A 노드(410)의 부모 노드(410)로서 <branch A>를, 자식 노드들로서 <order slip 0001>와 <order slip 0002>를 각각 갖는다. 도 3에서 도시된 바와 같이, 날짜 데이터가 파티션화되는 경우, 자식 노드들(420, 430)은 서로 다른 회계 년도의 파티션들(470, 480)내에 놓이게 된다.
도 4에서 도시된 바와 같이, 파티션화되는 대상 데이터를 포함하는 복수의 자식 노드들이 존재하는 경우에서, 대상 데이터는 일반적으로 서로 다른 자식 노드들에 대하여 서로 다른 값들을 갖는다. 따라서, 파티션화되는 자식 노드들을 서로 다른 값 파티션들내에 등록시키기 위해 이 자식 노드들을 계층적 구조로부터 분절시키는 것이 필요하다. 통상적인 관계형 데이터베이스에서 수행되는 바와 같이, 유닛 서브트리들을 파티션들내로 그룹화하기 위해 유닛 서브트리들내의 대상 데이터를 단순히 검출하는 처리를 통해서는, 원본 XML 문서의 계층적 구조는 손실될 것이고, 따라서, XMLDB의 효과성은 손상될 것이다. 따라서, 값 파티션들(470, 480)내에 포함된 자식 노드들의 XPath들을 XML 문서(300)에서 지정하는 것이 필요하다.
본 실시예에서, XML 문서(300)로부터 값 파티션들(470, 480)내로 파티션화된 자식 노드들을 기술하는 서브트리들을 위해, XMLDB의 효과성을 유지하면서, 원본 XML 문서의 계층적 구조를 규정하는 기저 파티션(460)이 파티션화에 의한 검색 효율성을 향상시키도록 생성된다. 기저 파티션(460)은 원본 XML 문서내의 계층적 구조에서의 자식 노드들의 레벨이 유지될 수 있도록 함으로써, 특정 자식 노드에 대응하는 유닛 서브트리를 참조하는 것을 가능하게 해준다.
도 5는 본 실시예의 서버(130)에 의해 XMLDB상에서 수행되는 처리를 개략적으로 도시하는 흐름도이다. 도 5에서의 처리는 파티션 요청 명령이 데이터베이스 관리자 또는 클라이언트들(110 내지 118) 중 하나로부터 수신되는 단계 S500에서 시작한다. 단계 S501에서, 서버(130)는 규정된 데이터의 범위들에 대응하는 값 파티션들을 생성한다. 파티션들은 관계형 데이터베이스를 위한 DDL(데이터 정의 언어)이 XML을 지원하도록 강화된 SQL 스크립트를 이용하여 단계 S501에서 생성될 수 있다.
단계 S502에서, 처리되는 XML 문서는 판독되어 파싱처리된다. 유닛 서브트리들은 XML 문서로부터 분절되며, 파티션화되는 유닛 서브트리들이 자신의 발생 순서와 연계된 서브트리 데이터 리스트가 생성된다. 그런 후, 단계 S503에서, 포인터가 리스트된 유닛 서브트리들내로 임베딩되고, 이어서 유닛 서브트리들은 파티션들내로 등록된다. 포인터는 예컨대, 은닉 속성으로서 유닛 서브트리의 시작 태그내에 임베딩될 수 있다. 이와 달리, 포인터는 서브트리에 대응하는 값을 저장하며, 인덱싱 등을 위해 사용되는 노드 테이블내의 기록물에 추가될 수 있다. 포인터 및 이들의 임베딩 처리는 이후에 보다 자세하게 설명할 것이다.
본 실시예에서의 XML 문서의 파티션화는 단계 S503에서 종료한다. 단계 S501 내지 단계 S503에서의 처리는 관계형 데이터베이스내에 이미 저장된 XML 문서상에서 수행될 수 있거나, 또는 새로운 등록을 위한 요청과 함께 서버(130)에 보내진 XML 문서상에서 수행될 수 있다.
단계 S504 및 도 5에서의 이후의 단계들은 XMLDB상에서 수행되는 검색에 대 응한다. 단계 S504에서, 서버(130)는 클라이언트들(110 내지 118) 중 하나로부터 검색 요청을 수신한다. 단계 S505에서, 어느 파티션들이 생성되었는지에 기초하여 검색 요청이 대상 데이터를 포함하는지 여부를 판단한다. 만약 검색 요청이 파티션화를 위해 사용되는 대상 데이터를 포함한 것으로 판단되는 경우(Yes), 단계 S507에서, 검색은 검색 요청에 의해 지정된 대상 데이터하에 그룹화되었던 파티션에 대해서만 행해지며, 단계 S508에서, 검색 결과는 검색 요청을 발행했던 클라이언트에게 반환된다. 그런 후, 단계 S509에서 프로세스는 종료한다.
한편, 단계 S505에서, 검색 요청이 파티션화를 위해 사용된 속성값을 포함하지 않는 것으로 판단된 경우(No), 단계 S506에서 모든 파티션들이 검색되며, 단계 S508에서, 파티션들에 대해서 획득했던 결과물들을 병합함으로써 검색 결과가 생성되어, 이것을 검색 요청을 발행했던 클라이언트에게 반환한다. 그런 후, 단계 S509에서, 프로세스는 종료한다. 단계 S506이 개개의 값 파티션들의 검색뿐만이 아니라 기저 파티션의 검색을 필요로 하는 경우에, 검색 결과는 단계 S508에서 값 파티션들의 검색 결과와 기저 파티션의 검색 결과를 개별적으로 병합함으로써 생성될 수 있다.
파티션화 이후에 검색 결과들을 병합하기 위해, 통상적인 관계형 데이터베이스내에서 파티션화된 데이터의 검색 결과들을 병합하는 알려진 방법이 활용될 수 있다.
도 6은 도 5에서의 단계 S501에서 파티션들을 생성하기 위해 서버(130)에 의해 사용되는 DDL 스테이트먼트(600)의 실시예를 도시한다. DDL 스테이트먼트(600) 에서, 브랜치 판매 주문 관리 테이블의 생성이 제일 먼저 "CREATE TABLE"에 의해 지시되며, 이어서 브랜치 판매 주문 관리 테이블을 고유하게 식별해주기 위한 ID의 식별정보가 뒤따른다. XML 문서의 대상 속성이 규정되고, 그런 다음 파티션화가 "PARTITION BY RANGE"에 의해 지시된다. 도 6에서 도시된 DDL 스테이트먼트(600)를 통해, XML 문서내의 XPath를 "PARTITION BY RANGE" 명령에 대한 파라미터로서 지정하는 것이 가능하며, 도시된 실시예에서, XPath에 따라 판독된 XML 문서를 파티션화하는데 필요한 XPath의 깊이가 지정된다. 판독된 XML 문서내에 등록된 <order slip>에서 시작하는 자식 노드들의 경우, DDL 스테이트먼트(600)는 다음과 같은 범위들, 즉 가장 오래된 데이터에서부터 2006/12/31까지; 2007/01/01에서부터 2007/12/31까지; 및 2008/01/01에서부터 2008/12/31까지에 대응하는 세 개의 값 파티션들을 생성한다.
도 6에서 도시된 DDL 스테이트먼트(600)는 기저 파티션을 생성하기 위한 명시적 명령을 포함하지 않는다. 기저 파티션의 생성에서, 범위 분절을 위해 사용되는 XML 문서의 XPath가 도 6에서의 (INFOXML/BRANCH/ORDER SLIP/DATE)에 의해 설정되는 경우, 기저 파티션내에 저장되는 XML 문서의 서브트리들의 프래그먼트들, 즉 임의의 데이터 파티션들내에 포함되지 않은 서브트리들의 프래그먼트들과, 파티션화된 유닛 서브트리들의 인덱스들이 분절 알고리즘에 따라 결정된다. 기저 파티션의 등록을 위해, 서버(130)는 PARTITION BY RANGE (INFOXML/...)를 위한 파라미터 설정이 확인된 경우 오로지 XMLDB에서 데이터 저장 구조를 정의할 필요만 있다.
본 명세서에서는 "PARTITION BY RANGE" 명령 및 파티션화 처리를 데이터베이 스(140)로서 DB2를 예를 들어 사용하는 경우에 대해서 설명한 것임을 유념해둔다. 이것들은 물론 다른 관계형 데이터베이스에 적용되는 다양한 포맷들을 따르도록 적절하게 수정될 수 있으며, 기저 파티션을 생성하기 위한 명시적 명령이 특정 관계형 데이터베이스의 구현에 따라 활용될 수 있거나, 또는 XML 분절 처리의 구현시의 편이를 위해 활용될 수 있다.
파티션 설정을 위해 사용되는 태그의 계층적 레벨은 값 파티션들의 정의와 직접 관련된다. 본 실시예에서, DDL 스테이트먼트(600)에 대한 파라미터로서 설정된 (INFOXML/BRANCH/ORDER SLIP/DATE)의 깊이에 대응하는 태그, 구체적으로 <date> 태그가 파티션 설정을 위해 지정될 수 있다. DDL 스테이트먼트에 의해 정의된 XPath의 깊이가 값 태그로서 명시적으로 기술될 수 있는 한편, 이것은 또한 "*"와 같은 와일드 카드가 XPath에서의 깊이 및 계층적 구조와 일치하는 한, 이 와일드 카드를 이용하여 암시적으로 기술될 수 있다.
도 7은 도 5에서의 단계 S502에서 수행된 본 실시예의 XML 분절 처리의 보다 상세한 흐름도이다. 도 7에서의 처리는 도 5에서의 단계 S501로부터 제어가 넘어오는 단계 S700에서 시작한다. 단계 S701에서는, XML 파서를 호출함으로써 XML 분절 위치가 계산된다. 이후에 보다 자세하게 설명될 단계 S701에서의 처리에 따르면, XML 파서(224)는 XML 문서를 판독하고, 파티션화를 위한 자식 노드들의 식별정보를 위한 분절 위치를 계산함으로써, 분절 위치를 지정하는 분절 위치 리스트를 생성한다. 생성된 분절 위치 리스트(710)는 RAM과 같은 적절한 저장 영역내에 저장되고, 파티션화 처리가 완료될 때 까지 서버(130)에 의해 보존된다.
단계 S702에서, 분절 위치 리스트(710)를 참조하여, 파티션화되는 대상 데이터를 각각 갖는 유닛 서브트리들이 XML 문서를 구성하는 자식 노드들로부터 분절되며, 유닛 서브트리들의 식별정보를 위한 범위들(이후부터, "범위 정의 쌍"이라고 부른다)과 발생 카운터를 정의하는 값들의 쌍이 생성됨으로써, 서브트리 데이터 리스트의 생성과, 유닛 서브트리의 분절, 및 인덱스들의 생성이 수행된다. 이 후, 단계 S703에서, 획득된 유닛 서브트리들에서 파티션화되는 대상 값들을 포함하는 태그내에 임베딩된 포인터와 기저 파티션내에 등록되는 인덱스들내에 임베딩되는 포인터가 생성된다. 생성된 포인터는 인덱스들을 데이터베이스(140)내의 대응하는 유닛 서브트리들과 고유하게 연계되도록 해주는 값을 가질 수 있다.
이를 위해, 예컨대, 인덱스를 고유하게 식별하기 위한 인덱스 포인터가 유닛 서브트리내에 임베딩될 수 있으며, 유닛 서브트리를 고유하게 식별하기 위한 자식 노드 포인터가 인덱스내에 임베딩될 수 있다. 인덱스 포인터로서, 기저 파티션내의 인덱스의 등록 번호 또는 저장 어드레스가 사용될 수 있다. 마찬가지로, 자식 노드 포인터로서, 값 파티션내의 유닛 서브트리의 등록 번호 또는 저장 어드레스가 사용될 수 있다.
단계 S703에서의 포인터들의 임베딩에 대해, 단계 S702에서의 XML 분절 처리시에 유닛 서브트리와 인덱스가 생성될 때 마다, 등록 번호 또는 저장되는 어드레스가 할당될 수 있으며, 포인터들이 서로 연계되어 있는 포인터 맵핑 테이블(720)이 생성될 수 있다. 이것은 포인터 맵핑 테이블(720)을 참조하여, 기저 파티션과 값 파티션에서 각각 인덱스와 유닛 서브트리의 동시적 등록을 가능하게 해준다.
이와 달리, 값 파티션내에 등록되는 유닛 서브트리가 규정되면, 포인터 맵핑 테이블(720)은 인덱스내에서 가장 최근에 등록된 포인터가 유닛 서브트리와 연계되는 리스트로서 형성될 수 있다. 포인터 임베딩 처리의 완료시 포인터 맵핑 테이블(720)이 메모리로부터 삭제될 수 있지만, 검색을 위한 인덱스 데이터로서의 사용을 위해, 처리 동안에 포인터 맵핑 테이블(720)은 "CREATE TABLE" 명령에 따라 생성된 테이블의 인덱스로서, 도 6에서의 ID와 연계되어 저장될 수 있다.
포인터 생성 및 임베딩 처리가 완료되면, 프로세스는 단계 S704로 진행하는데, 여기서 제어는 도 5의 단계 S503로 넘겨지고, 이로써 도 7에서의 처리는 종료된다.
도 8은 도 7에서의 단계 S701에서 수행되는 XML 분절 위치 계산 처리의 상세한 흐름도이다. 도 8에서의 처리는 도 7에서의 처리가 호출되는 단계 S800에서 시작한다. 단계 S801에서, 다음의 초기화가 수행된다: i=0, Path=/, Start=/(0), End=-1, Count=f, CutRangeSet=f, 및 isPrevEnd=false. 변수들은 아래의 [표 1]에서와 같이 정의된다.
D: XML 문서
P: 분절 범위를 위한 XPath

출력:
CutRangeSet: XML 분절 위치 세트, 또는 분절 위치 리스트에 대응하는 데이터 구조. 각각의 엘리먼트들은 (Start, End)의 형태의 태그의 시작 위치 번호 및 종료 위치 번호를 보유한다.
엘리먼트들은 "Start"의 올림순으로 배열된다.
예) CutRangeSet=[(3,6), (7,10), (12,17)]

흐름도에서 사용된 심볼들의 설명:
i: D에서 현재 판독된 태그의 위치 번호
Path: D에서 현재 판독된 태그의 XPath(스택으로서 구현됨)
Start: 분절 시작 위치의 후보로서의 태그의 위치 번호를 갖는 XPath(스택으로서 구현됨)
End: 분절 종료 위치의 후보로서의 태그의 위치 번호. 아직까지 어떠한 후보도 발견되지 않은 경우 "-1"로 설정.
Count: P의 발생 횟수(number of time)를 보존. XML 문서에서 계층적 구조를 가짐.
isPrevEnd: 바로 전에 판독된 태그가 종료 태그(</root>, </a>, 등)이면 "ture"로 설정되고; 그렇지 않은 경우이면 "false"로 설정.
단계 S801에서의 변수값의 초기화에 이어서, 단계 S802에서는 처리되는 XML 문서가 판독될 시작 태그 또는 종료 태그를 아직도 포함하는지 여부가 판단된다. 만약 판독될 태그가 하나도 안남아 있는 경우(no), XML 문서는 종료 처리되는 것으로 판단하여, 프로세스는 단계 S807에서 종료된다.
한편, 만약 단계 S802에서 처리되는 XML 문서 D가 판독될 태그를 아직도 포함하는 것으로 판단된 경우(Yes), 단계 S803에서, 태그의 명칭이 Path=Path+"/"+Tag를 계산하기 위해 변수 "Tag"에 할당되고, 태그의 위치 번호는 1만큼 증분된다. 단계 S803에서의 처리로 인해, 특정 Start 태그에서부터 End 태그까지의 XPath가 생성된다. 단계 S804에서, 변수 "Tag"의 값이 Start 태그에 대응하는지 여부를 판단한다. 만약 그런 경우라면(Yes), Start 태그 처리가 단계 S806에서 수행된다. 만약 단계 S804에서 변수 "Tag"의 값이 Start 태그에 대응하지 않는 것으로 판단된 경우(No), End 태그 처리가 단계 S805에서 수행된다. 단계 S805와 단계 S806에서의 각각의 태그 처리의 완료시에, 프로세스는 단계 S802로 복귀한다. 프로세스는 XML 문서 D내의 모든 태그들이 처리될 때 까지 반복된다.
도 9는 도 8에서의, 단계 S805와 단계 S806에서 수행되는 Start 태그 처리 및 End 태그 처리를 각각 도시하는 상세한 흐름도이다. 단계 S900 내지 단계 S908은 Start 태그 처리에 해당하며, 단계 S910 내지 단계 S917은 End 태그 처리에 해당한다. 단계 S900 내지 단계 S908에서의 Start 태그 처리를 제일 먼저 설명한다.
Start 태그 처리는 단계 S804로부터 제어를 넘겨받은 단계 S900에서 시작한다. 단계 S901에서, Count = Count+(0)을 설정함으로써 "0"이 Count 스택내에 등록된다. 단계 S902에서, 현재 D에서 판독되는 태그의 XPath가 값 파티션들내로 분절되는데 사용되는 유닛에 대응하는지 여부를 판단하기 위해, Path = P인지 여부를 판단한다. 만약 Path = P가 만족되지 않으면(no), 프로세스는 단계 S904로 점프하며, 여기서 "Count내의 첫번째 엘리먼트가 1 또는 그 이상이고, End ≥ 0"인지 여부에 대한 판단에 따라, 분절 위치에 대한 현재 후보를 출력할지 여부를 판단한다. 만약 단계 S904에서 Count내의 첫번째 엘리먼트가 0이거나 또는 End < 0인 것으로 판단되면(No), 프로세스는 변수 End = -1인지, 즉 End 태그가 분절 종료 위치의 후보인지 여부를 판단하는 단계 S906으로 점프한다. 만약 End = -1인 경우(Yes), Start에서의 위치 번호는 단계 S907에서 Start = Path+(i)를 설정함으로서 "i"만큼 증분되고, 단계 S908에서, 제어는 해당 프로세스를 종료하기 위해 도 8에서의 단계 S802로 넘겨진다.
한편, 단계 S902에서 Path = P인 것으로 판단되면(Yes), 단계 S903에서, Count내의 모든 엘리먼트들에 "1"이 추가되고, 단계 S904에서 "Count내의 첫번째 엘리먼트가 1 또는 그 이상이고, End ≥ 0"의 상태가 유지되고 있는지 여부를 판단한다. 그러한 경우, 단계 S904에서의 판단은 긍정 응답으로 회답하고(Yes), 따라서, 단계 S905에서, (Start 위치 번호, END 위치 번호)의 쌍이 변수 "CutRangeSet"에 추가되고, End는 "-1"로 설정된다. 단계 S906에서, End = -1인지의 여부가 판단된다. 이러한 상황하에서는, 단계 S906에서의 판단은 긍정 응답으로 회답하고(Yes), 따라서, 단계 S907에서, Start에서의 위치 번호는 "i"만큼 증분되며, 단계 S908에서, 제어는 해당 프로세스를 종료하기 위해 도 8에서의 단계 S802로 넘겨진다.
도 8에서 도시된 END 태그 처리는 단계 S910에서 시작하는데, 이것은 변수 "Tag"에서의 값이 Start 태그에 대응하지 않는 것으로 단계 S804에서 판단한 것에 응답하여 호출된다. 단계 S911에서, Count에서의 첫번째 값이 1이거나 그 이상인지 여부를 판단하고, 만약 그러한 경우(Yes), 단계 S912에서 End는 "i"로 설정되어 다음 Start 태그의 판단을 준비한다. 단계 S913에서, Start내의 상위 엘리먼트들은 제거되고, 단계 S914에서, Count내의 최상위 엘리먼트가 제거된다. Start내의 상위 엘리먼트들의 제거 및 Count내의 최상위 엘리먼트의 제거의 처리들은 이후에 도10을 참조하여 보다 자세하게 설명할 것이다.
만약 단계 S915에서 Count내의 첫번째 엘리먼트가 2이거나 그 이상인 것으로 판단되면, 현재 판단받고 있는 태그의 값은 이미 그 자신의 부모 태그에서 나타난 것임을 의미한다. 따라서, 단계 S916에서, 이 때에서의 판단으로 변수 "Tag"의 위치 번호를 "END"로 설정한 상태에서, Start 위치 번호와 END 위치 번호는 서로 연계되어 범위 정의 쌍으로서 CutRangeSet에 추가된다. 그런 다음, "END"의 값은 -1로 재설정된다. 이 후, 프로세스는 종료되고, 제어는 단계 S917로부터 도 8에서의 단계 S802로 넘겨진다.
도 10은 도 9에서의 단계 S913에서 수행된 Start 스택에서의 상위 엘리먼트들을 제거하는 처리를 도시한다. Start 스택에서, XPath = P내에 포함되는 태그들 중에서, 엘리먼트들(컬럼)이 분절되는 자식 노드를 식별해주는데 필요한 태그들에 따라 적층된다. Start 스택은 분절되는 자식 노드의 END 태그를 검출함으로써, 이 자식 노드의 시작부분을 확인해주는 기능을 갖는다. Start 스택에서, XML 파서(224)는 자신의 첫번째 실행에서, 적절한 저장 영역내에 분절 위치 리스트(710)의 형태로의 등록을 위해, 처리되는 XML 문서의 태그를 분석하여 어느 태그가 XML 문서의 특정 라인 번호에 포함되어 있는지를 확인한다.
XML 분절 유닛(226)은 Start 스택으로의 추가를 위해, XML 파서(224)에 의해 생성된 분절 위치 리스트(710)를 판독한다. 이를 위해, XML 분절 유닛(226)은 두번째 실행을 위해 XML 파서(224)를 재시작하도록 하며, 제1 루트 태그가 발견되면, 이 루트 태그와 이것의 위치 번호를 스택내에 등록시킨다. 이후부터, 태그가 검출되는 때마다, 태그 및 이 태그의 위치 번호를 스택내에 등록시킨다. 예를 들어, 프로세스가 라인 번호 5로 진행할 때, 태그 = </c>인 것이 검출된다. XML 분절 유닛(226)은 분절 유닛이 되는 XPath = P = */a/b/c인 것을 확인하고, 태그 <c>가 검출될 때 까지 태그와 태그의 위치 번호를 스택에 추가한다. 그 결과, 프로세스가 라인 번호 4로 진행하면, 값 스택(1020)이 Start 스택내에 등록된다. 분절 유닛은 유닛 서브트리를 제공하는 속성 정의 태그를 기술함을 유념한다. 분절 유닛은 설명된 실시예에서와 같이 와일드 카드를 이용하여 기술될 수 있거나, 또는 첫번째 유닛 서브트리내의 루트에서부터 최종 속성 정의 태그까지의 기술에 의해 정의될 수 있다.
태그 <c>가 검출되면, 태그 <c>가 검출된 위치 번호가 스택내의 최상위 컬럼에 추가된다. 태그 <c>에 대응하는 END 태그 </c>가 검출될 때, 그리고 설명된 실시예의 경우의 이후의 태그 </b>의 검출 시에, 분절되는 유닛 서브트리가 검출된 것으로 판단하고, Start 스택내의 상위의 두 개의 컬럼들(1040)이 제거되어, 대응하는 바로 이전의 Start 태그 <b>의 위치 번호가 스택내의 최상위 컬럼(1050)으로서 추가되고, 이로써 값 스택(1030)이 생성된다. 이 때, 위치 번호 6이 변수 "Tag"내에 등록된다. 유닛 서브트리는 스택내의 최상위 컬럼내에 등록된 위치 번호로부터의 섹션으로서 이 때에 변수 "Tag"내에 등록된 값으로 설정된다. 설명된 실시예에서, 제1 범위 정의 쌍 = (3, 6)이 획득된다.
이 후, 값 스택(1030)에서, 태그 <b>에 대해 등록된 값은 검출된 태그 <b>의 위치 번호로 업데이트된다. 태그 <c>가 위치 번호 8에서 검출되면, 값 스택(1020)의 경우에서와 같이 값 스택(1060)이 생성된다. 프로세스가 한층 진행하여, </b> 태그가 검출되면, 상술한 값 스택(1020)에 대해 수행된 것과 동일한 처리가 상위의 두 개의 컬럼들(1070)을 제거하도록 수행되며, 대응하는, 바로 이전의 Start 태그 <b>의 위치 번호는 스택내에 최상위 컬럼(1090)으로서 추가되고, 그 결과 값 스택(1080)이 생성된다.
이 프로세스의 완료시에, 제2 범위 정의 쌍 = (7, 10)이 결정된다. 위 처리는 처리되는 태그가 더 이상없을 때까지 또는 </root> 태그가 검출될 때 까지 반복되며, 이로써 처리되는 XML 문서는 유닛 서브트리들로 분절된다. 분절의 결과물은 서버(130)내의 적절한 저장 공간내에 서브트리 데이터 리스트의 형태로 저장된다.
도 11은 도 9에서의 처리에 따라 본 실시예에서 이행되는 Count 스택을 업데이트하는 처리를 도시하는 개략도이다. 도 11은 생성된 값 스택내의 값들의 천이(1100)의 실시예를 도시한다. 도 11에서 도시된 스택내에 등록된 값들은 XPath에 따라 업데이트되고, 분절 유닛으로서 사용된 XPath내의 최종 Start 태그는 처리되는 XML 문서내에 포함되어 분절되는 XPath의 경로 카운터로서 역할을 한다. 설명된 실시예에서, XPath = P = */a/b/c이다. XML 파서(224)의 두번째 실행 동안, 서버(130)에서의 XML 분절 유닛(226)은 도 10에서 도시된 Start 스택의 생성과 병행하여, Count 스택을 생성한다.
XML 파서(224)의 두번째 실행에서, 값 스택의 등록은 XPath내에 포함된 루트 태그가 검출될 때에 시작한다. 이 후, XPath에서 후속하는 Start 태그가 검출될 때 마다, 새로운 컬럼이 추가되고, 값 = 0이 이 컬럼에 등록된다. 프로세스가 진행하여, XPath내의 최종 엘리먼트의 Start 태그가 검출되면, "1"이 모든 컬럼들내의 값들에 추가된다. 이 단계에서, 값 스택(1112)이 생성된다.
이 후, 여전히 XML 파서(224)의 두번째 실행에서, 스택내의 상위 컬럼들내의 값들은 다음 Start 태그가 검출될 때 까지 삭제되며, XPath의 구성 엘리먼트로서의 Start 태그가 검출되면, "0"이 스택내의 최상위 컬럼의 값으로서 등록된다. XML 파서(224)에 의한 처리가 진행하여, XPath를 구성하는 최종 태그가 검출되면, "1"이 스택내의 값들에 다시 추가되고, 그 결과 값 스택(1114)이 생성된다. 스택내의 최하위 컬럼내의 값은 처리되는 XML 문서내에서 검출된 유닛 서브트리들의 번호를 제공하는 것임을 알 것이다. 이 후, 유사한 처리가 반복되며, 라인 번호가 "11"에 도달하면, 0의 값을 갖는 컬럼이 다시 적층된다. 라인 번호 14내의 태그 <c>의 검출 시, "1"이 스택내의 모든 컬럼들내의 값들에 추가되고, 제3 범위 정의 쌍(13, 16)이 출력된다. 마지막으로, 라인 번호 18에서의 </root>가 검출되면, 값 스택내의 모든 값들은 삭제되며, 이로써 프로세스의 종료가 검출된다. 그 결과로, 도 11에서 도시된 XML 문서는 세 개의 유닛 서브트리들을 포함하는 것으로 결정된다.
도 12는 XML 문서를 분절할 때에 사용하기 위한 서브트리 데이터 리스트의 실시예를 도시하며, 이것은 도 9 내지 도 11에서 도시된 처리에서 생성된다. 도 12에서 도시된 실시예에서, XML 문서내의 대응하는 라인들과의 관계를 명확하게 하기 위해, 서브트리 데이터 리스트(1200)의 데이터 구조는 분절 위치 리스트(710)와 관련되어 도시된다. 도 12에서 도시된 바와 같이, XML 분절 유닛(226)에 의한 처리에 따라, 유닛 서브트리들의 범위들이 처리되는 XML 문서내에 포함된 자식 노드들의 식별정보를 위한 변수 "CutRangeSet" 집합내에 등록되며, 이 "CutRangeSet"는 XML 문서의 구조에 따라 (3, 6), (7, 10), 및 (13, 16)를 연속적인 순서로 갖는다.
Start 태그 처리 및 END 태그 처리에서 생성되는, 서브트리 데이터 리스트에서, Start 스택의 데이터, Count 스택내의 값들, 및 END의 값들이 등록된다. 서브트리 데이터 리스트는 XML 문서내의 유닛 서브트리들의 계층적 구조를 고려하여 수행되는 후속적인 파티션화에서 사용하기 위한 데이터를 제공한다.
본 실시예의 서버(130)는 기저 파티션에서 등록되는 XML 문서내에서 서브트리들을 규정하기 위해 도 12에서의 CutRangeSet에서 등록된 라인 번호를 이용하고, XML 분절 유닛(226)에 의해 서브트리들의 분절을 완료하여 기저 파티션과 값 파티션들로 파티션화되도록 한다.
도 13은 기저 파티션에서 등록되는 서브트리들을 생성하는 처리를 도시하는 흐름도이다. 도 13에서의 처리는 유닛 서브트리들의 확인이 종료되고 도 12에서 도시된 데이터 구조가 구축된 때에 호출되는 단계 S1300에서 시작한다. 단계 S1301에서, i, j, T의 값들과, Base가 초기화되며, 여기서 "i"는 라인 번호를 나타내고, "j"는 유닛 서브트리들을 카운팅하는 카운터이며, "k"는 유닛 서브트리들의 번호, 즉 Count내의 첫번째 값에 해당한다. 또한, "T"는 유닛 서브트리들이 등록된 스택이며, "Base"는 기저 파티션내에 등록되는 XML 문서내의 서브트리들이 등록되는 스택이다.
단계 S1302에서, D가 이제 판독될 태그를 포함하는지 여부를 판단하기 위해 분절 위치 리스트(710)를 처리하는 XML 파서(224)가 호출된다. 만약 처리될 태그가 존재하지 않는 경우(No), 이것은 처리되는 XML 문서에 대한 처리가 종료되었음을 의미하며, 따라서, 단계 S1313에서, 기저 파티션에서의 등록때까지 생성된 서브트리와 값 파티션에서의 등록때까지 생성된 유닛 서브트리는 포인터를 제공받게 되며, 대응하는 파티션들에 등록된다.
한편, 만약 단계 S1302에서 이제 판독되는 태그가 존재하는 것으로 판단되면(Yes), 단계 S1303에서, 처리되는 태그는 변수 "Tag"에 할당되고, 카운터 "i"는 1만큼 증분된다. 단계 S1304에서, j>k 또는 i<bj의 여부를 판단한다. 이것은 유닛 서브트리의 범위를 효율적으로 처리하기 위한 목적으로 행해진다. 만약 단계 S1304에서 j>k도 i<bj도 만족되지 않는 것으로 판단되면(No), 단계 S1305에서 i<ej인지의 여부를 판단한다. 만약 i<ej이면(Yes), 이것은 처리되는 라인 위치가 특정 자손 노드의 범위내에 있는 것을 의미하며, 따라서 단계 S1306에서, T = T ∪ Tag를 설정함으로써 스택 T에 추가된다.
단계 S1304에서 j>k 또는 i<bj인 경우, 이것은 처리되는 라인 위치가 유닛 서브트리내에 포함되지 않는 것을 의미하며, 따라서, 프로세스는 단계 S1308로 분기하고, 이 단계에서는 Base = Base ∪ Tag를 설정함으로써 스택 Base에 추가된다. 만약 i<ej가 만족되지 않는 경우(No), 이것은 현재 처리되는 라인 위치가 특정 자식 노드의 범위 밖에 있음을 의미하며, 따라서, 단계 S1309에서, 카운터 j는 j = j+1을 설정함으로써 1만큼 증분되며, Base = Base ∪ Tag를 설정한다. 이 단계에서, 처리되는 라인 번호의 태그는 Base 스택내에 등록되며, T는 서브트리로서 적절한 값 파티션내로 출력된다. 이 후, T는 φ으로 재초기화된다(T=φ).
단계 S1309에서의 처리에 이어서, 단계 S1306에서, T = T ∪ Tag가 설정된다. 이 경우, T는 단계 S1309에서 φ으로 재초기화되었으며(T=φ), 따라서, 유닛 서브트리에 대응하는 서브트리는 T에서 축적된다. 단계 S1306에서의 처리에 이어서, 단계 S1307에서, i=bj인지의 여부를 판단한다. i=bj인 경우(Yes), 이것은 현재 처리되는 라인 위치가 유닛 서브트리의 첫번째 라인에 대응하는 것임을 의미하며, 따라서, 단계 S1308에서, Base = Base ∪ Tag를 설정함으로써, 태그 정보는 기저 파티션내에 등록되는 인덱스의 후보로서 등록된다. 그런 다음, 프로세스는 단계 S1302로 복귀하고, D에서 어떠한 태그도 남지않을 때 까지 반복된다.
한편, 단계 S1307에서 i=bj가 만족되지 않는 경우(No), 이것은 라인이 기저 파티션내에 등록되는 것이 아님을 의미하며, 따라서 프로세스는 단계 S1302로 직접 복귀하고, D에서 어떠한 태그도 남지 않을 때 까지 반복된다. 상술한 처리를 통해, 기저 파티션내에 등록되는 서브트리와, 유닛 서브트리로서 등록되는 서브트리들이 처리되는 XML 문서로부터 분리될 수 있다.
XML 문서의 분절이 완료되면, 파티션들에 대한 포인터들의 추가 및 유닛 서브트리의 등록을 수행하는 분절 XML 등록 유닛(228)이 호출된다. 도 14는 본 실시예에 따른 파티션화의 실시예를 도시한다. 본 실시예의 처리를 통해, 도 3에서 도시된 XML 문서(300)는 기저 파티션(1410)과 값 파티션들(1420, 1430)로 파티션화된다. 본 실시예에서, XML 문서의 원래 계층적 구조를 유지하면서 XML 문서를 기저 파티션과 값 파티션들로 분리하는 처리를 위해, 포인터들이 유닛 서브트리들과 파티션들내에 등록된 인덱스들 간의 상호 참조가 가능해지도록 생성되며, 생성된 포인터들은 인덱스들 및 이 인덱스들에 대응하는 유닛 서브트리들의 라인 위치에 등록된다.
포인터에 대하여, 고유값이 파티션들에 따라 설정된다. 기저 파티션내의 각각의 인덱스에서, 대응하는 유닛 서브트리에 할당된 포인터가 등록되는 동안, 각각의 유닛 서브트리내에서는, 기저 파티션내의 대응하는 인덱스에 할당된 포인터가 등록된다. 포인터를 생성하기 위해, 다양한 실시예들이 적용될 수 있다. 예를 들어, 기저 파티션 및 값 파티션의 생성시에, 예컨대 대응하는 파티션들에 추가되는 서브트리들의 라인 번호를 카운팅하기 위해 카운터가 제공될 수 있다.
이 실시에에서, 인덱스가 기저 파티션에 추가될 때에, 기저 파티션내의 카운터값 Cb(Count_base)가 획득될 수 있다. 값 파티션에서 등록된 대응하는 유닛 서브트리의 경우, 인덱스에 대응하는 값 파티션내의 카운터값 Cv(Count_value)가 획득될 수 있다. 그 후, 포인터로서 서빙하는 카운터값 Cv가 인덱스에 추가될 수 있고, 포인터로서의 카운터값 Cb는 인덱스에 대응하는 유닛 서브트리에 추가될 수 있다.
또한, 포인터에 대해, 상술한 실시예에서와 같이 파티션들에 따라 값들을 생성하고 추가하는 것 대신에, 인덱스 및 이 인덱스에 의해 가리켜지는 유닛 서브트리를 등록할 때에 각각 포인터 Rb(Random_base)와 Rv(Random_value)가 랜덤하게 생성될 수 있으며, 생성된 포인터들은 서로 관련되어 대응하는 라인들에 추가될 수 있다. 또한, 포인터들은 다양한 방법으로 임베딩될 수 있다. 예를 들어, 포인터 임베딩 처리의 제1 실시예에서, 포인터값들은 인덱스와 XML 태그의 은닉 속성들로서 인덱스 및 유닛 서브트리내의 대응하는 XML 태그내에 임베딩될 수 있다.
예를 들어, 도 14는 기저 파티션(1410)에서, ptr = "2006:467" 및 ptr = "2007:8142" 값들이 은닉 속성값으로서 <order slip> 태그(1450, 1460)에 각각 추가되는 실시예를 도시한다. 이에 응답하여, 기저 파티션에서 인덱스에 대한 포인터인 b:344가 은닉 속성값으로서 부모_ptr = "b:344"의 형태로 유닛 서브트리에서의 대응하는 <order slip> 태그(1470)에 추가된다. 이 실시예는 기존의 XMLDB의 구현과는 독립적으로, 그리고 검색 처리를 위한 추가적인 애플리케이션의 필요 없이, 저비용으로 기존의 XMLDB에서 구현될 수 있다.
포인터 임베딩 처리의 제2 실시예에서, 기존의 XMLDB의 구현은 수정된다. 구체적으로, XMLDB를 위해 생성된 노드 테이블에서의 기록물에서, 대응하는 포인터값이 추가적으로 임베딩된다. 이 실시예에 따르면, 포인터가 추가된 태그는 복수의 파티션들내에 포함되는 것으로부터 방지되며, 따라서 하드웨어 자원의 소모가 이롭게 감소된다. 하지만, 이것은 기존의 XMLDB에서의 노드 테이블 등록 처리의 수정을 필요로 하고, 이에 따라 XMLDB의 구현의 수정을 필요로 하기 때문에, 이 실시예는 파티션화가 XMLDB의 구현 단계에서 수행될 때에 적절하게 사용될 수 있다.
도 15는 본 실시예에 따라 파티션화되는 XML 문서와, 기저 파티션과 값 파티션에서의 등록 실시예를 도시한다. 파티션화되는 XML 문서(1510)는 루트 노드 <branch name = "A">를 포함하며, 이 루트 노드 아래에서, 유닛 서브트리(1512)는 <order slip number = "0001">에서 시적하고, 유닛 서브트리(1514)는 <order slip number = "0002">에서 시작한다. 유닛 서브트리들은 날짜가 서로 다르며, 날짜는 파티션화 속성이다.
유닛 서브트리들(1512, 1514) 각각에서의 제1 태그 <order slip ...>가 인덱스로서 기저 파티션(1530)에 추가된다. 도 13에서 도시된 처리에 따르면, 루트 노드의 태그는 파티션화 유닛 XPath = P = */a/b/c내에 포함되지 않으며, 따라서 이것은 기저 파티션(1530)내로 그룹화된다. 값 파티션들(1532, 1534)에서, 속성값들을 갖는 태그를 포함하는 유닛 서브트리들이 등록된다. 포인터들에 대해서 기저 파티션(1530)과 값 파티션들(1532, 1534)간의 상호 참조가 가능해진다.
클라이언트들(110 내지 118) 중 하나가 서버(130)에 대해 검색 요청을 발행하는 경우, 서버(130)는 검색을 수행하기 위해 검색 요청내에 포함된 키워드를 이용하고, 검색 결과 생성 유닛(216)은 계층적 구조를 반영한 검색 결과를 생성한다. 생성된 검색 결과는 네트워크 아답터(202)를 경유하여 클라이언트들(110 내지 118) 중 하나에 보내진다.
본 실시예에서, SQL 함수들, 예컨대 "XMLQUERY" 및 "XMLEXISTS"가 XMLDB의 검색을 위해 정의된다. "XMLQUERY" 명령은 SQL 문맥내의 XQuery 표현의 실행을 가능하게 해주는 SQL 스칼라 함수이다. "XMLQUERY"는 XMLQUERY에 의해 지정된 XQuery 표현에 변수를 전달하는데 사용될 수 있다. 또한, "XMLQUERY"는 XML 시퀀스인 XML 값을 반환한다.
여기서, "XMLEXISTS"의 인자(argument)는 XQuery 표현이 적어도 하나의 텀(term)을 갖는 시퀀스를 반환하는지 여부를 결정한다. 만약 이 인자에서 지정된 XQuery 표현이 공백 시퀀스를 반환하면, "XMLEXISTS"는 "false"를 반환하고; 그렇지 않은 경우에는 "true"를 반환한다. 예를 들어, "bookstore" 테이블내의 "infoxml"의 컬럼내에 저장된 XML 문서내에 포함된, 2006/12/01의 날짜값을 갖는 "/branch/order slip/date"의 리스트를 반환해주는 SQL 스테이트먼트는 다음과 같이 기술될 수 있다:
[표현식 1]
SELECT XMLQUERY ('$i/branch/order slip' PASSING infoxml AS "i")
FROM bookstore
WHERE XMLEXISTS ('$i/branch/order slip/[date = "2006/12/01"]'
PASSING infoxml AS "i")
(보다 자세한 공식을 위해서, 예컨대,
http://publib.boulder.ibm.com/infocenter/db21uw/v9/topic/com.ibm.db2.udb.apdv.embed.doc/doc/c0023899.htm 과,
http://publib.boulder.ibm.com/infocenter/db21uw/v9/topic/com.ibm.db2.jdb.apdv.embed.doc/doc/c0023906.htm. 을 참조하라.)
또한, 값 파티션들내의 날짜 태그가 검색 동안 참조되는 경우, 날짜 태그에 포인터가 제공되지 않으면, 자신의 부모 엘리먼트(= order slip)는 기저 파티션에 존재하기 보다는 동일 파티션내에 존재하는 것으로 이해된다. 반면에, 날짜 태그에 포인터가 제공되면, 동일물은 파티션화되는 것으로 이해되며, 그 결과, order slip의 부모 노드는 기저 파티션내에 등록된다. 이것은 기존의 SQL 명령이 파티션화되거나 또는 되지않거나 간에 XMLDB에 대해서 사용될 수 있도록 해준다.
또한, 파티션화에서 사용되는 XPath에 대해서 보다는 path에 대해서 검색 조건이 지정되는 경우, 모든 파티션들, 및 필요한 경우 기저 파티션이 검색될 수 있고, 결과물은 병합될 수 있다. 따라서, 통상적인 RDB 파티션 테이블에서와 유사한 처리를 이용하여 검색 요청을 처리하는 것이 가능하다.
도 16은 본 실시예에 따라 파티션화될 수 있는 XML 문서의 실시예를 도시한다. 도 16에서 도시된 실시예는 MEDLINE 데이터베이스내에 등록된 XML 문서의 일부이다. MEDLINE 데이터베이스는 의학 문헌에 관한 공개 데이터베이스이며, 대략 천 6백만개의 기록물을 보유한다. 데이터는 XML 화일의 형태로 다운로딩하여 입수가능하며, 하나의 XML 화일은 보통 3만개의 아티클들을 보유한다.
도 16에서 도시된 실시예의 XML 문서는 아티클들의 발행 년도를 이용하여 본 실시예에 따라 예컨대, 파티션화되는 대상 데이터로서 파티션화될 수 있다. 예컨대, 지난 5년내에서 발행된 아티클들만을 검색하고자 하는 질의를 통해, 검색 공간은 상당히 감소되고, 이에 따라 검색 속도는 상당히 향상된다. 파티션시에, 생성된 포인터와 인덱스는 XMLDB에서의 등록시에 원래 계층적 구조가 유지될 수 있도록 해주며, 따라서, 파티션화는 XMLDB의 검색 효율성을 사실상 유지하면서 효율적으로 수행될 수 있다.
또한, 도 16에서 도시된 실시예에서, 아티클 유닛내의 유닛 서브트리(MedlineCitation)는 값 파티션내에 등록될 수 있고, 따라서, 아티클을 획득하기 위해 수행되는 검색에서 조차, 대응하는 파티션에 액세스하는 것이 필요할 뿐이며, 이로써 검색 효율성은 상당히 향상된다. 상술한 바와 같이, 본 실시예는 태그의 유닛으로서 RDB에서 사용되는 복수의 기록물을 포함하며, 파티션화에서 사용되는 속성을 포함하는 데이터에 대한 검색 효율성을 이롭게 향상시키며, 여기서 기록물은 단일 XML 화일내로 수집된다.
본 실시예의 상술한 기능들은 C++, Java™, JavaBeans™, Java™, 애플릿, Java™ 스크립트, 펄 또는 루비와 같은 객체 지향 프로그래밍 언어에서 기술되는 머신 실행가능 프로그램에 의해 구현될 수 있으며, 프로그램은 배포를 위해 하드 디스크 드라이브, CD-ROM, MO, 플렉시블 디스크, EEPROM, 또는 EPROM과 같은 머신 판독가능 기록 매체내에 저장될 수 있거나, 또는 다른 장치에 의해 판독가능하고 실행가능한 형태로 네트워크를 경유하여 전송될 수 있다.
비록 본 발명을 실시예들을 참조하여 설명하였지만, 본 발명은 상술한 실시예로 한정되는 것은 아니다. 오히려, 본 발명분야의 당업자가 인식할 수 있는 범위내에서 다른 실시예들뿐만이 아니라 다양한 변형, 추가, 삭제가 가능하며, 이와 같은 실시예들은 본 발명의 기능 및 효과를 발휘하는 한 본 발명의 범위내에 있다.
도 1은 본 발명의 실시예에 따른 데이터베이스 시스템(100)을 도시한다.
도 2는 본 실시예의 서버(130)의 기능 블럭도(200)이다.
도 3은 본 실시예의 서버(130)에 의해 처리되는 XML 문서(300)의 실시예를 도시한다.
도 4는 트리 구조(400) 형태의 본 실시예의 XML 문서(300)를 도시한다.
도 5는 본 실시예의 서버(130)에 의해 XMLDB 상에서 수행되는 처리를 개략적으로 설명하는 흐름도이다.
도 6은 도 5의 단계 S501에서 파티션들을 생성하는 처리를 수행하기 위해 본 실시예의 서버(130)에 의해 사용되는 DDL 스테이트먼트(600)의 실시예를 도시한다.
도 7은 본 실시예의 XML 분절 처리가 수행되는, 도 5에서의 단계 S502의 보다 상세한 흐름도이다.
도 8은 도 7에서의 단계 S701에서 수행되는 XML 분절 위치 계산 처리의 상세 흐름도이다.
도 9는 도 8에서의, 단계 S805와 단계 S806 각각에서의 시작 태그 처리 및 종료 태그 처리의 상세 흐름도이다.
도 10은 도 9에서의 단계 S913에서 Start 스택상에서 수행되는 상위 엘리먼트를 제거하는 처리를 도시한다.
도 11은 도 9에서의 처리에 따라 본 실시예에서 이행되는 Count 스택을 업데이트하는 처리를 설명하며, 생성된 값 스택내의 값들의 천이(1100)의 실시예를 도 시한다.
도 12는 도 9 내지 도 11에서 도시된 처리로 생성된, XML 분절시에 사용되는 서브트리 데이터 리스트의 실시예를 도시한다.
도 13은 기저 파티션내에 등록되는 서브트리를 생성하기 위한 처리를 설명하는 흐름도이다.
도 14는 기저 파티션(1410)내에서, ptr = "2006:467"과 ptr = "2007:8142"이 은닉 속성값들로서 <order slip> 태그들(1450, 1460) 각각에 추가되는 실시예를 도시한다.
도 15는 본 실시예에 따라 파티션화되는 XML 문서와, 기저 파티션과 값 파티션들내의 등록 처리의 실시예를 도시한다.
도 16은 본 실시예에 따라 파티션화될 수 있는 XML 문서의 실시예를 도시한다.
도 17은 통상적인 XMLDB내에서의 데이터 저장 구조를 도시한다.

Claims (10)

  1. 계층적 구조를 갖는 구조화된 문서를 포함한 데이터베이스를 포함하는 정보 처리 장치에 있어서,
    유닛 서브트리 - 상기 유닛 서브트리는 상기 구조화된 문서 내에서 파티션화될 대상 데이터를 가지며, 상기 대상 데이터의 값에 따라 분리되고 등록됨 - 를 갖는 값 파티션(value partition)과, 상기 유닛 서브트리와 구별되는 제2 서브트리와 상기 유닛 서브트리를 고유하게 식별해주는 인덱스를 포함하는 기저 파티션(base partition)을 생성하는 파티션 생성 유닛;
    상기 구조화된 문서 내에서 속성을 정의하는 시작 태그 및 종료 태그의 위치들을 확인하여 속성값의 계층적 구조에 대응하는 분절 위치 리스트를 생성하고 저장 영역 내에 상기 분절 위치 리스트를 등록하는 파서 유닛;
    분절되는 상기 유닛 서브트리 - 상기 유닛 서브트리는 상기 대상 데이터를 포함함 - 의 상기 시작 태그 위치와 상기 종료 태그 위치를 확인하기 위하여, 상기 분절 위치 리스트를 참조함으로써, 상기 유닛 서브트리와, 상기 유닛 서브트리를 가리키는 상기 인덱스를 상기 구조화된 문서로부터 분리시키는 분절 유닛; 및
    상기 분절 유닛에 의해 분리된, 상기 유닛 서브트리와, 상기 유닛 서브트리를 식별해주는 상기 인덱스를 상기 값 파티션과 상기 기저 파티션 내에 등록하는 등록 유닛
    을 포함하는, 정보 처리 장치.
  2. 제 1 항에 있어서, 상기 유닛 서브트리는 복수의 시작 태그들을 포함하며, 상기 인덱스는 상기 유닛 서브트리내의 상기 시작 태그들 중 첫번째 시작 태그로부터 생성되는 것인, 정보 처리 장치.
  3. 제 2 항에 있어서, 상기 유닛 서브트리와, 상기 유닛 서브트리를 고유하게 식별해주는 상기 인덱스를 상기 값 파티션과 상기 기저 파티션 내에 등록하기 전에, 상기 등록 유닛은 상기 유닛 서브트리와 상기 인덱스 간에 상호 참조가 가능해지도록 하기 위해, 상기 유닛 서브트리와 상기 인덱스에 포인터들을 추가하는 것인, 정보 처리 장치.
  4. 제 3 항에 있어서, 상기 분절 위치 리스트를 참조함으로써 상기 값 파티션과 상기 기저 파티션내의 등록을 위한 상기 유닛 서브트리를 분리시키기 위하여, 상기 분절 유닛은 서브트리 데이터 리스트를 생성하여 상기 저장 영역 내에 상기 생성된 리스트를 등록하며, 상기 서브트리 데이터 리스트는 상기 구조화된 문서 내에 포함된 상기 유닛 서브트리의 시작 위치와 종료 위치가 서로 연계되어 있는 범위 정의 쌍과, 상기 구조화된 문서내의 상기 유닛 서브트리의 기술의 순서(order of description)가 등록된 발생 카운터를 포함하는 것인, 정보 처리 장치.
  5. 제 4 항에 있어서,
    상기 대상 데이터를 이용하여 상기 값 파티션 내에 등록된 상기 유닛 서브트리를 검색하는 SQL(Structured Query Language) 처리 유닛; 및
    상기 SQL 처리 유닛에 의해 수행된 상기 검색의 결과를 생성하는 검색 결과 생성 유닛
    을 더 포함하는, 정보 처리 장치.
  6. 제 4 항에 있어서, 상기 구조화된 문서는 XML로 기술되며, 상기 데이터베이스는 XML 문서의 저장 및 검색을 가능하게 해주는 XMLDB인 것인, 정보 처리 장치.
  7. 계층적 구조를 갖는 구조화된 문서가 등록된 데이터베이스를 포함하는 데이터베이스 시스템에 있어서,
    상기 구조화된 문서 내에서 파티션화될 대상 데이터를 포함하는 유닛 서브트리가 상기 대상 데이터의 값에 따라 분리되어 등록되는 값 파티션과, 상기 유닛 서브트리 이외의 다른 서브트리와 상기 유닛 서브트리를 고유하게 식별해주는 인덱스를 포함하는 기저 파티션을 생성하고 관리하는 데이터 관리 유닛;
    상기 데이터베이스 내에 등록된 상기 구조화된 문서를 검색하기 위한 검색 요청 - 상기 검색 요청은 상기 구조화된 문서의 상기 계층적 구조를 지정함 - 을 처리하는 SQL 처리 유닛; 및
    상기 SQL 처리 유닛에 의해 상기 값 파티션상에서 수행되는 개개의 검색의 결과를 이용함으로써 상기 검색 요청과 관련된 검색 결과를 생성하는 검색 결과 생성 유닛;
    을 포함하며,
    상기 데이터 관리 유닛은,
    상기 파티션들을 생성하는 파티션 생성 유닛;
    상기 구조화된 문서 내에서 속성을 정의하는 시작 태그 및 종료 태그의 위치들을 확인하여 속성값의 계층적 구조에 대응하는 분절 위치 리스트를 생성하고 저장 영역 내에 상기 분절 위치 리스트를 등록하는 파서 유닛;
    분절되는 상기 유닛 서브트리 - 상기 유닛 서브트리는 상기 대상 데이터를 포함함 - 의 상기 시작 태그 위치와 상기 종료 태그 위치를 확인하기 위하여, 상기 분절 위치 리스트를 참조함으로써, 상기 유닛 서브트리와, 상기 유닛 서브트리를 가리키는 상기 인덱스를 상기 구조화된 문서로부터 분리시키는 분절 유닛; 및
    상기 분절 유닛에 의해 분리된, 상기 유닛 서브트리와, 상기 유닛 서브트리를 식별해주는 상기 인덱스를 상기 값 파티션과 상기 기저 파티션 내에 등록하는 등록 유닛
    을 포함하는 것인, 데이터베이스 시스템.
  8. 계층적 구조를 갖는 구조화된 문서가 등록된 데이터베이스에 대한 정보 처리 방법에 있어서, 상기 정보 처리 방법은 정보 처리 장치로 하여금,
    대상 데이터와 연관된 값에 기초하여 상기 대상 데이터를 파티션화하여 분리시키는 단계;
    상기 파티션화된 데이터를 갖는 유닛 서브트리를 갖는 값 파티션을 생성하는 단계;
    상기 유닛 서브트리와 연관된 인덱스 및 상기 유닛 서브트리와 구별된 제1 서브트리를 갖는 기저 파티션을 생성하는 단계;
    상기 구조화된 문서 내에서 속성 - 상기 속성은 계층적 구조를 가짐 - 과 연관된 시작 태그 및 종료 태그의 위치들을 확인하는 단계;
    상기 시작 태그 및 상기 종료 태그에 기초하여 상기 계층적 구조에 대응하는 분절 위치 리스트를 생성하는 단계;
    상기 분절 위치 리스트를 저장 영역에 저장하는 단계;
    분절되는 상기 유닛 서브트리 - 상기 유닛 서브트리는 상기 대상 데이터를 포함함 - 의 상기 시작 태그 위치와 상기 종료 태그 위치를 확인하기 위하여, 상기 분절 위치 리스트에 기초하여, 상기 유닛 서브트리와 상기 인덱스를 상기 구조화된 문서로부터 분리시키는 단계;
    상기 분리 단계에 의해 분리된, 상기 유닛 서브트리와, 상기 유닛 서브트리를 식별해주는 상기 인덱스를 상기 값 파티션과 상기 기저 파티션 내에 등록하는 단계;
    상기 값 파티션과 상기 기저 파티션 중 적어도 하나의 파티션에 기초하여 상기 데이터베이스를 검색하는 단계; 및
    상기 검색의 결과들을 디스플레이하는 단계
    를 수행하게 하는 것인, 정보 처리 방법.
  9. 정보 처리 장치로 하여금 계층적 구조를 갖는 구조화된 문서가 등록된 데이터베이스에 대해 정보 처리 방법을 수행하도록 하게 하는 컴퓨터 실행가능 프로그램을 기록한 컴퓨터 판독가능 기록매체에 있어서, 상기 프로그램은 상기 정보 처리 장치로 하여금,
    상기 구조화된 문서 내에서 파티션화되는 대상 데이터를 포함하는 유닛 서브트리가 상기 대상 데이터의 값에 따라 분리되어 등록되는 값 파티션과, 상기 유닛 서브트리 이외의 다른 서브트리와 상기 유닛 서브트리를 고유하게 식별해주는 인덱스를 포함하는 기저 파티션을 생성하는 단계;
    상기 구조화된 문서 내에서 속성을 정의하는 시작 태그 및 종료 태그의 위치들을 확인하여 속성값의 계층적 구조에 대응하는 분절 위치 리스트를 생성하고 저장 영역 내에 상기 분절 위치 리스트를 등록하는 단계;
    분절되는 상기 유닛 서브트리 - 상기 유닛 서브트리는 상기 대상 데이터를 포함함 - 의 상기 시작 태그 위치와 상기 종료 태그 위치를 확인하기 위하여, 상기 분절 위치 리스트를 참조함으로써, 상기 유닛 서브트리와, 상기 유닛 서브트리를 가리키는 상기 인덱스를 상기 구조화된 문서로부터 분리시키는 단계; 및
    상기 분리 단계에 의해 분리된, 상기 유닛 서브트리와, 상기 유닛 서브트리를 식별해주는 상기 인덱스를 상기 값 파티션과 상기 기저 파티션 내에 등록하는 단계
    를 수행하게 하는 것인, 컴퓨터 실행가능 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  10. 계층적 구조를 갖는 구조화된 문서가 관리되는 데이터베이스를 포함하는 정보 처리 장치에 있어서,
    상기 구조화된 문서 내에서 파티션화되는 대상 데이터를 포함하는 유닛 서브트리가 상기 대상 데이터의 값에 따라 분리되어 등록되는 값 파티션(value partition)과, 상기 유닛 서브트리 이외의 다른 서브트리와 상기 유닛 서브트리를 고유하게 식별해주는 인덱스를 포함하는 기저 파티션(base partition)을 생성하는 파티션 생성 유닛;
    상기 구조화된 문서 내에서 속성을 정의하는 시작 태그 및 종료 태그의 위치들을 확인하여 속성값의 계층적 구조에 대응하는 분절 위치 리스트를 생성하고 저장 영역 내에 상기 분절 위치 리스트를 등록하는 파서 유닛;
    분절되는 상기 유닛 서브트리 - 상기 유닛 서브트리는 상기 대상 데이터를 포함함 - 의 상기 시작 태그 위치와 상기 종료 태그 위치를 확인하기 위하여, 상기 분절 위치 리스트를 참조함으로써, 상기 유닛 서브트리와, 상기 유닛 서브트리를 가리키는 상기 인덱스를 상기 구조화된 문서로부터 분리시키는 분절 유닛; 및
    상기 분절 유닛에 의해 분리된, 상기 유닛 서브트리와, 상기 유닛 서브트리를 식별해주는 상기 인덱스를 상기 값 파티션과 상기 기저 파티션 내에 등록하는 등록 유닛
    을 포함하며,
    상기 유닛 서브트리는 복수의 시작 태그들을 포함하며, 상기 인덱스는 상기 유닛 서브트리내의 상기 시작 태그들 중 첫번째 시작 태그로부터 생성되며,
    상기 유닛 서브트리와 상기 유닛 서브트리를 고유하게 식별해주는 상기 인덱스를 상기 값 파티션과 상기 기저 파티션 내에 등록하기 전에, 상기 등록 유닛은 상기 유닛 서브트리와 상기 인덱스 간에 상호 참조가 가능해지도록 하기 위해, 상기 유닛 서브트리와 상기 인덱스에 포인터들을 추가하며
    상기 분절 위치 리스트를 참조함으로써 상기 값 파티션과 상기 기저 파티션내의 등록을 위한 상기 유닛 서브트리를 분리시키기 위하여, 상기 분절 유닛은 서브트리 데이터 리스트를 생성하여 저장 영역 내에 상기 생성된 리스트를 등록하며, 상기 서브트리 데이터 리스트는 상기 구조화된 문서 내에 포함된 상기 유닛 서브트리의 시작 위치와 종료 위치가 서로 연계되어 있는 범위 정의 쌍과, 상기 구조화된 문서내의 상기 유닛 서브트리의 기술의 순서(order of description)가 등록된 발생 카운터를 포함하며,
    상기 구조화된 문서는 XML로 기술되며, 상기 데이터베이스는 XML 문서의 저장 및 검색을 가능하게 해주는 XMLDB인 것인, 정보 처리 장치.
KR1020090075309A 2008-11-28 2009-08-14 정보 처리 장치, 데이터베이스 시스템, 정보 처리 방법 및 프로그램 KR101119290B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008305698A JP4688111B2 (ja) 2008-11-28 2008-11-28 情報処理装置、データベース・システム、情報処理方法、およびプログラム
JPJP-P-2008-305698 2008-11-28

Publications (2)

Publication Number Publication Date
KR20100061308A KR20100061308A (ko) 2010-06-07
KR101119290B1 true KR101119290B1 (ko) 2012-03-20

Family

ID=42223743

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090075309A KR101119290B1 (ko) 2008-11-28 2009-08-14 정보 처리 장치, 데이터베이스 시스템, 정보 처리 방법 및 프로그램

Country Status (4)

Country Link
US (2) US8856183B2 (ko)
JP (1) JP4688111B2 (ko)
KR (1) KR101119290B1 (ko)
CN (1) CN101751457B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416890B1 (ko) * 2013-05-03 2014-07-08 주식회사 엘지유플러스 데이터 처리 방법 및 장치
KR101679011B1 (ko) * 2014-06-26 2016-11-24 주식회사 알티베이스 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011099284A1 (ja) * 2010-02-15 2011-08-18 株式会社エスグランツ 区画管理装置、区画管理方法及びプログラム
JP5563529B2 (ja) * 2011-06-27 2014-07-30 日本電信電話株式会社 情報記録装置、情報記録方法およびプログラム
US8935267B2 (en) * 2012-06-19 2015-01-13 Marklogic Corporation Apparatus and method for executing different query language queries on tree structured data using pre-computed indices of selective document paths
US8892599B2 (en) * 2012-10-24 2014-11-18 Marklogic Corporation Apparatus and method for securing preliminary information about database fragments for utilization in mapreduce processing
CN102984017B (zh) * 2012-12-31 2015-11-18 北京佳讯飞鸿电气股份有限公司 一种网管系统数据同步的方法
CA2932403A1 (en) * 2013-12-02 2015-07-02 Qbase, LLC Systems and methods for hosting an in-memory database
CN104753891B (zh) * 2013-12-31 2019-04-05 中国移动通信集团湖南有限公司 一种xml报文解析方法及装置
US9576039B2 (en) * 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
US10282437B2 (en) * 2014-04-17 2019-05-07 Oracle International Corporation Partial indexes for partitioned tables
CN105224536A (zh) 2014-05-29 2016-01-06 国际商业机器公司 划分数据库的方法和装置
CN106796589B (zh) * 2014-05-30 2021-01-15 湖北第二师范学院 空间数据对象的索引方法和系统
CN104111994B (zh) * 2014-07-04 2017-08-01 北京思特奇信息技术股份有限公司 一种基于混合数据源的标签数据筛选方法及装置
CN106569731B (zh) * 2015-10-10 2020-08-04 阿里巴巴集团控股有限公司 极限存储方法、装置及设备
KR101656077B1 (ko) * 2015-10-28 2016-09-08 주식회사 인피니플럭스 암시적 타임 칼럼값을 이용한 시간 기반 파티셔닝 시스템 및 방법
CN105447112B (zh) * 2015-11-12 2019-02-01 国云科技股份有限公司 一种实现关系数据库Hash分区高效扩展的方法
US20170308606A1 (en) * 2016-04-22 2017-10-26 Quest Software Inc. Systems and methods for using a structured query dialect to access document databases and merging with other sources
CN108241620B (zh) * 2016-12-23 2022-03-18 北京国双科技有限公司 查询脚本的生成方法及装置
US10289708B2 (en) 2017-04-05 2019-05-14 Amadeus S.A.S. Management of unique identifiers in a database
FR3065093B1 (fr) * 2017-04-05 2019-04-26 Amadeus Gestion d'identifiants uniques dans une base de donnees
ES2764761T3 (es) * 2017-04-05 2020-06-04 Amadeus Sas Gestión de identificadores únicos en una base de datos
US11416466B2 (en) * 2017-06-02 2022-08-16 Chaossearch, Inc. Data edge platform for improved storage and analytics
KR102003487B1 (ko) * 2017-08-28 2019-10-01 서울시립대학교 산학협력단 본문 태그 판별 모델 제공 장치, 방법 및 본문 태그 판별 모델 적용 장치
US11157510B2 (en) 2018-02-28 2021-10-26 Chaossearch, Inc. Data normalization using data edge platform
WO2020168521A1 (zh) * 2019-02-21 2020-08-27 华为技术有限公司 报文解析的方法、数据发送端、数据接收端和系统
US11334600B1 (en) * 2021-03-31 2022-05-17 International Business Machines Corporation Partial reloading in data synchronization

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050097128A1 (en) 2003-10-31 2005-05-05 Ryan Joseph D. Method for scalable, fast normalization of XML documents for insertion of data into a relational database
US20050267909A1 (en) 2004-05-21 2005-12-01 Christopher Betts Storing multipart XML documents
US20080091714A1 (en) 2006-10-16 2008-04-17 Oracle International Corporation Efficient partitioning technique while managing large XML documents

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6519597B1 (en) * 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
JP2000348038A (ja) * 1999-06-02 2000-12-15 Fujitsu Ltd 半構造データベースのためのデータ格納装置および方法
JP4199888B2 (ja) 1999-11-15 2008-12-24 株式会社日立製作所 データベース管理方法
US7287216B1 (en) * 2000-05-31 2007-10-23 Oracle International Corp. Dynamic XML processing system
US6684204B1 (en) * 2000-06-19 2004-01-27 International Business Machines Corporation Method for conducting a search on a network which includes documents having a plurality of tags
JP2003131933A (ja) * 2001-10-23 2003-05-09 Nippon Hoso Kyokai <Nhk> 文書ファイル保存方法及び文書ファイル保存プログラム
WO2004081794A1 (ja) * 2003-03-10 2004-09-23 Sharp Kabushiki Kaisha データ処理装置、データ処理用のプログラムおよび記録媒体
JP2005135317A (ja) * 2003-10-31 2005-05-26 Toshiba Solutions Corp 文書管理システムおよび文書管理プログラム
CN1307584C (zh) 2003-11-17 2007-03-28 中兴通讯股份有限公司 一种用二维表实现的树的存储、访问的方法
JP4724606B2 (ja) 2006-06-05 2011-07-13 新日本製鐵株式会社 溶鋼の連続鋳造方法
JP4521413B2 (ja) 2007-02-09 2010-08-11 株式会社東芝 データベース管理システム及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050097128A1 (en) 2003-10-31 2005-05-05 Ryan Joseph D. Method for scalable, fast normalization of XML documents for insertion of data into a relational database
US20050267909A1 (en) 2004-05-21 2005-12-01 Christopher Betts Storing multipart XML documents
US20080091714A1 (en) 2006-10-16 2008-04-17 Oracle International Corporation Efficient partitioning technique while managing large XML documents

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416890B1 (ko) * 2013-05-03 2014-07-08 주식회사 엘지유플러스 데이터 처리 방법 및 장치
KR101679011B1 (ko) * 2014-06-26 2016-11-24 주식회사 알티베이스 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치

Also Published As

Publication number Publication date
US8856183B2 (en) 2014-10-07
CN101751457B (zh) 2013-04-24
JP4688111B2 (ja) 2011-05-25
US20100138442A1 (en) 2010-06-03
KR20100061308A (ko) 2010-06-07
US20150095344A1 (en) 2015-04-02
CN101751457A (zh) 2010-06-23
JP2010129001A (ja) 2010-06-10

Similar Documents

Publication Publication Date Title
KR101119290B1 (ko) 정보 처리 장치, 데이터베이스 시스템, 정보 처리 방법 및 프로그램
US6339777B1 (en) Method and system for handling foreign key update in an object-oriented database environment
US7260572B2 (en) Method of processing query about XML data using APEX
US20140114994A1 (en) Apparatus and Method for Securing Preliminary Information About Database Fragments for Utilization in Mapreduce Processing
Grust Accelerating XPath location steps
US8886617B2 (en) Query-based searching using a virtual table
Liu et al. Vide: A vision-based approach for deep web data extraction
US6915304B2 (en) System and method for converting an XML data structure into a relational database
CN102831214B (zh) 时间序列搜索引擎
US20080162455A1 (en) Determination of document similarity
US20070271242A1 (en) Point-in-time query method and system
JP2007532998A (ja) フラグメントベースのシリアライゼーションのシステムおよび方法
US8082492B2 (en) Structured-document management apparatus, search apparatus, storage method, search method and program
US20060106831A1 (en) System and method for managing structured document
Abramowicz et al. Filtering the Web to feed data warehouses
US7051016B2 (en) Method for the administration of a data base
US20120303608A1 (en) Method and system for caching lexical mappings for rdf data
US20130297657A1 (en) Apparatus and Method for Forming and Using a Tree Structured Database with Top-Down Trees and Bottom-Up Indices
US9015165B1 (en) Text-SQL relational database
US20170097990A1 (en) Text-sql relational database
Hsu et al. UCIS-X: an updatable compact indexing scheme for efficient extensible markup language document updating and query evaluation
US8504552B2 (en) Query based paging through a collection of values
Kim et al. DOM tree browsing of a very large XML document: Design and implementation
EP1965313A1 (en) Data processing
Unbehauen et al. SPARQL Update queries over R2RML mapped data sources

Legal Events

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

Payment date: 20150127

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee