KR101710445B1 - 갱신 문장들을 조합 및 검증하는 장치 - Google Patents

갱신 문장들을 조합 및 검증하는 장치 Download PDF

Info

Publication number
KR101710445B1
KR101710445B1 KR1020160025124A KR20160025124A KR101710445B1 KR 101710445 B1 KR101710445 B1 KR 101710445B1 KR 1020160025124 A KR1020160025124 A KR 1020160025124A KR 20160025124 A KR20160025124 A KR 20160025124A KR 101710445 B1 KR101710445 B1 KR 101710445B1
Authority
KR
South Korea
Prior art keywords
update
instruction
sentence
function
base
Prior art date
Application number
KR1020160025124A
Other languages
English (en)
Inventor
홍혜진
Original Assignee
(주)로직소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)로직소프트 filed Critical (주)로직소프트
Priority to KR1020160025124A priority Critical patent/KR101710445B1/ko
Application granted granted Critical
Publication of KR101710445B1 publication Critical patent/KR101710445B1/ko

Links

Images

Classifications

    • G06F17/30289
    • G06F17/2725
    • G06F17/30339

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 로컬 갱신 문장들에 대한 블록들을 입력받아 글로벌 갱신 문장으로 조합하며 로컬 갱신 문장들 간의 간섭이 발생하지 않도록 검증하는 것인 갱신 문장을 조합 및 검증하는 장치에 관한 것이다.
하나 이상의 프로세서; 메모리; 및 상기 메모리에 저장되며 상기 하나 이상의 프로세서에 의해서 실행되도록 구성되는 하나 이상의 프로그램을 포함하고, 상기 하나 이상의 프로그램은, 복잡한 뷰(complex view)를 루트, 제1 베이스 뷰 내지 제k 베이스 뷰(단 k는 2 이상의 자연수) 및 제1 베이스 테이블 내지 제m 베이스 테이블(단 m은 1이상의 자연수)을 포함하도록 치환한 DAG(directed acyclic graph) 구조를 입력받는 제1 인스트럭션; 상위 갱신 문장(단 상기 상위 갱신 문장의 초기값은 상기 루트에 대한 갱신 문장임)에 대한 코드 블록을 입력받는 제2 인스트럭션; 상기 코드 블록에 포함된 적어도 하나의 하위 갱신 문장을 추출하는 제3 인스트럭션; 상기 적어도 하나의 하위 갱신 문장 모두가 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 지 확인하는 제4 인스트럭션; 및 상기 제4 인스트럭션을 수행한 후에, 상기 적어도 하나의 하위 갱신 문장 모두가 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 것이 아니라고 판단되면, 상기 적어도 하나의 하위 갱신 문장에 대한 적어도 하나의 코드 블록을 입력받고, 상기 상위 갱신 문장을 상기 적어도 하나의 하위 갱신 문장으로 갱신하고 상기 코드 블록을 상기 적어도 하나의 코드 블록으로 갱신한 후, 상기 제2 인스트럭션 내지 상기 제4 인스트럭션을 수행하는 제5 인스트럭션을 포함하는 갱신 문장을 조합 및 검증하는 장치가 제공된다.

Description

갱신 문장들을 조합 및 검증하는 장치{APPARATUS FOR ASSEMBLING AND VERIFYING UPDATE SENTENCES}
본 발명은 갱신 문장을 조합 및 검증하는 장치에 관한 것으로, 더욱 구체적으로는 로컬 갱신 문장들에 대한 블록들을 입력받아 글로벌 갱신 문장으로 조합하며 로컬 갱신 문장들 사이에 간섭이 발생하지 않도록 검증하는 장치에 관한 것이다.
데이터베이스로부터 정보를 원하는 경우, 데이터베이스 내의 데이터로부터 원하는 정보를 계산하는 쿼리를 사용한다. 쿼리는 일반적으로 데이터베이스의 하나 이상의 베이스 테이블(base table) 또는 뷰(view)를 참조한다.
쿼리를 구현하기 위해서 주로 SQL(structured query language)을 사용한다. SQL은 은 데이터베이스를 사용할 때, 데이터베이스에 접근할 수 있는 데이터베이스 하부 언어를 지칭한다. SQL은 데이터 정의어(DDL)와 데이터 조작어(DML)를 포함한 데이터베이스용 쿼리 언어(query language)의 일종이다.
SQL은 단순한 쿼리 기능뿐만 아니라 데이터 정의 기능과 조작 기능을 갖추고 있다. 또한 온라인 단말기를 통해 대화식으로 사용할 수도 있고 코볼이나 PL/I, C 등의 호스트 언어로 된 프로그램에 삽입되어서 사용되기도 한다.
한편 데이터베이스를 이용하려는 사용자들이 많아지게 됨에 따라 DBMS(DataBase Management System)는 SQL 처리에 의해서 많은 부하가 발생하게 된다. 이러한 DBMS에서의 부하로 인해 시스템에서의 처리 속도가 떨어지게 되고 이는 DBMS의 성능 저하로 이어지게 된다. 예컨대 주식회사 케이티에 의해서 2006년 4월 20일자로 출원되고 2012년 4월 6일자로 등록된 한국등록특허 제10-1136457호(특허문헌 1)는 SQL의 튜닝을 통하여 DBMS의 성능 저하를 방지하는 기술을 개시하고 있다.
한편 도 6은 종래 기술에 따른 뷰의 예를 나타내는 도면이다.
도 6을 참조하면, employee, dependent 및 department를 베이스 테이블로 하는 뷰의 예를 나타내는 도면이다. 도 6의 뷰는 복잡한 뷰(complex view)라고도 지칭된다.
도 6에 도시되듯이 예컨대 복잡한 뷰에 대한 선언은 다음과 같다.
[복잡한 뷰에 대한 선언]
Select e.eid, e.name, e.did, e.dname, max(e.salary)
From employee e join department d based on e.did=d.did
Where exists (select * from dependent d2 where d2.eid = e.eid)
Group by e.eid, e.name, edid
복잡한 뷰는 사용의 편의성을 위해서 다수의 베이스 뷰(노드)로 치환될 수 있다. 예컨대 DAG(directed acyclic graph) 구조를 이용하여 더 간단하게 치환될 수 있다.
도 7a 및 도 7b는 종래 기술에 따른 DAG 구조를 가지도록 치환된 베이스 뷰의 예를 나타내는 도면이다.
도 7a를 참조하면, 도 6의 복잡한 뷰는 DAG 구조의 베이스 뷰(V, V1 내지 V5)로 치환되고, 각 베이스 뷰(V, V1 내지 V5) 중 적어도 일부는 베이스 테이블(BT1, BT2, BT3)을 참조한다.
도 7b는 도 7a의 DAG 구조의 베이스 뷰에 대해서 선언을 나타낸다.
예컨대 베이스 뷰(V)에 대한 선언은 다음과 같다.
[V에 대한 선언]
V = Select eid, ename, dname, max (salary)
From V1 Group by eid, did, ename
즉 베이스 뷰(V)에 대한 선언은 복잡한 뷰에 대한 선언에 비해서 훨씬 단순화된 것을 확인할 수 있다. 한편 본원 명세서에서 최상위의 베이스 뷰(V)는 루트(root)라고도 지칭한다.
나머지 베이스 뷰(V1 내지 V5)에 대한 선언도 마찬가지로 정의될 수 있다.
도 7a의 DAG 구조에서 베이스 뷰(V1)서 베이스 뷰(V)로의 화살표는 베이스 뷰(V)의 베이스가 베이스 뷰(V1)인 것을 의미한다. 나머지 베이스 뷰들에 대해서도 마찬가지이다.
예컨대 베이스 뷰(V2)에 대한 선언은 도 7b를 참조하면 다음과 같다.
[V2에 대한 선언]
V2 = Select eid, ename, did, dname, salary, a.count
From V4 a join V3 b based on a.eid = b.eid
이를 참조하면, 베이스 뷰(V2)에 대한 베이스는 베이스 뷰(V3) 및 베이스 뷰(V4)인 것을 알수 있으며, 도 7a의 구조에서도 해당 관계가 도시된다.
한편 복잡한 뷰에 대해서 갱신 문장을 적용하는 경우에는 통상적으로 "instead of trigger"라 지칭되는 코드 블록을 작성하여야 한다. 갱신 문장은 예컨대 Insert, Delete 및 Update 중의 적어도 하나를 포함한다. 그러나 복잡한 뷰의 경우 갱신 문장을 작성하는 것은 매우 어렵다는 단점이 있다. 따라서 복잡한 구조를 가지는 복잡한 뷰를 DAG 구조로 치환한 경우, 사용자는 각 뷰에 대하여 비교적 단순한 갱신 문장을 로컬 갱신 문장으로서 입력하고, 시스템은 이를 복잡한 뷰에 대한 갱신 문장, 즉 글로벌 갱신 문장으로 변환하여야 한다. 그러나 각 베이스 뷰에 대한 갱신 문장들(로컬 갱신 문장)에서 서로 간에 간섭이 발생할 수 있으며, 로컬 갱신 문장들 사이의 간섭을 검출하는 것은 매우 어렵다는 단점이 있다.
1. 한국등록특허 제10-1136457호.
본 발명의 목적은 복잡한 뷰에 대한 갱신 문장을 직접 입력받는 대신에 복잡한 뷰를 DAG(directed acyclic graph) 구조로 치환하고, 각 노드에 대해 간단한 로컬 갱신 문장을 입력받고 이를 조합하여 글로벌 갱신 문장을 생성하며, 또한 로컬 갱신 문장들 사이의 간섭을 사전에 검증하는 것인 갱신 문장을 조합 및 검증하는 장치를 제공하는 데 있다.
상기 기술적 과제를 달성하기 위하여, 본 발명은 하나 이상의 프로세서; 메모리; 및 상기 메모리에 저장되며 상기 하나 이상의 프로세서에 의해서 실행되도록 구성되는 하나 이상의 프로그램을 포함하고, 상기 하나 이상의 프로그램은, 복잡한 뷰(complex view)를 루트, 제1 베이스 뷰 내지 제k 베이스 뷰(단 k는 2 이상의 자연수) 및 제1 베이스 테이블 내지 제m 베이스 테이블(단 m은 1이상의 자연수)을 포함하도록 치환한 DAG(directed acyclic graph) 구조를 입력받는 제1 인스트럭션; 상위 갱신 문장(단 상기 상위 갱신 문장의 초기값은 상기 루트에 대한 갱신 문장임)에 대한 코드 블록을 입력받는 제2 인스트럭션; 상기 코드 블록에 포함된 적어도 하나의 하위 갱신 문장을 추출하는 제3 인스트럭션; 상기 적어도 하나의 하위 갱신 문장 모두가 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 지 확인하는 제4 인스트럭션; 및 상기 제4 인스트럭션을 수행한 후에, 상기 적어도 하나의 하위 갱신 문장 모두가 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 것이 아니라고 판단되면, 상기 적어도 하나의 하위 갱신 문장에 대한 적어도 하나의 코드 블록을 입력받고, 상기 상위 갱신 문장을 상기 적어도 하나의 하위 갱신 문장으로 갱신하고 상기 코드 블록을 상기 적어도 하나의 코드 블록으로 갱신한 후, 상기 제2 인스트럭션 내지 상기 제4 인스트럭션을 수행하는 제5 인스트럭션을 포함하는 갱신 문장을 조합 및 검증하는 장치를 제공한다.
본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에 있어서, 상기 제2 인스트럭션은, 상기 상위 갱신 문장의 파라미터가 글로벌 파라미터 또는 상수만을 포함하는 지 확인하는 제2-1 인스트럭션을 포함할 수 있다.
또한 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에 있어서, 상기 제3 인스트럭션은, 상기 적어도 하나의 하위 갱신 문장의 파라미터가 글로벌 파라미터 또는 상수만을 포함하는 지 확인하는 제3-1 인스트럭션을 포함할 수 있다.
또한 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에 있어서, 상기 루트에 대한 갱신 문장은 상기 제1 베이스 뷰 내지 상기 제k 베이스 뷰 중 적어도 하나를 베이스로 하는 것이고, 상기 루트에 대한 갱신 문장의 파라미터는 글로벌 파라미터 또는 상수만을 포함할 수 있다.
또한 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에 있어서, 상기 상위 갱신 문장 및 상기 적어도 하나의 하위 갱신 문장 각각은 update 기능, insert 기능 및 delete 기능 중 어느 하나를 포함할 수 있다.
또한 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에 있어서, 상기 제1 인스트럭션 내지 상기 제5 인스트럭션을 통하여 제1 갱신 문장 내지 제n 갱신 문장(단 n은 2이상의 자연수)을 추출하는 제6 인스트럭션; 상기 DAG 구조의 제1 트리 및 상기 DAG 구조의 제2 트리에 대해서 상기 제1 갱신 문장 내지 상기 제n 갱신 문장을 대응시키는 제7 인스트럭션; 및 상기 제1 트리에 대한 갱신 문장들과 상기 제2 트리에 대한 갱신 문장들의 조합을 기초로 상기 제1 갱신 문장 내지 상기 제n 갱신 문장 중에 간섭이 발생하는 지를 검출하는 제8 인스트럭션을 더 포함할 수 있다.
또한 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에 있어서, 상기 제1 갱신 문장 내지 상기 제n 갱신 문장 각각은 update 기능, insert 기능 및 delete 기능 중 어느 하나를 가지는 것이고, 상기 제8 인스트럭션은 상기 갱신 문장들의 조합 중에서, 모두 insert 기능을 가지거나, 모두 delete 기능을 가지거나, 하나는 insert 기능을 가지고 나머지 하나는 delete 기능 또는 update 기능을 가지거나, 하나는 update 기능을 가지고 나머지 하나는 delete 기능을 가지는 쌍을 검출하고, 검출된 쌍 중에서 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중에서 동일한 테이블을 참조하고 동일한 주 키를 가지는 쌍을 간섭이 발생하는 것으로 검출하는 제8-1 인스트럭션을 포함할 수 있다.
또한 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에 있어서, 상기 제1 갱신 문장 내지 상기 제n 갱신 문장 각각은 update 기능, insert 기능 및 delete 기능 중 어느 하나를 가지는 것이고, 상기 제8 인스트럭션은 상기 갱신 문장들의 조합 중에서 모두 update 기능을 가지는 쌍을 검출하고, 검출된 쌍 중에서 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중에서 동일한 테이블을 참조하고 동일한 주 키 및 동일한 필드를 가지는 쌍을 간섭이 발생하는 것으로 검출하는 제8-2 인스트럭션을 포함할 수 있다.
본 발명에 따르면, 복잡한 뷰에 대한 갱신 문장을 직접 입력받는 대신에 복잡한 뷰를 DAG 구조로 치환하고, 각 노드에 대해 간단한 로컬 갱신 문장을 입력받고 이를 조합하여 글로벌 갱신 문장을 생성하며, 또한 로컬 갱신 문장들 사이의 간섭을 사전에 검증할 수 있다.
따라서 복잡한 뷰에 대한 갱신 문장을 직접 작성하는 단점을 개선할 수 있고, 특히 뷰 데이터베이스에서 사용되는 갱신 문장에 대한 코드 블록을 검증하여 간섭이 발생하는 것을 미리 방지할 수 있다.
도 1은 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치의 예시적인 블록도.
도 2는 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치가 실행되는 시스템 환경을 나타내는 도면.
도 3은 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치가 저장 및 실행하는 프로그램의 예시적인 블록도.
도 4는 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에서 재귀적 구조의 코드 블록의 예를 나타내는 도면.
도 5a 내지 도 5e는 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치에서 코드 블록의 예를 나타내는 도면.
도 6은 종래 기술에 따른 뷰의 예를 나타내는 도면.
도 7a 내지 도 7b는 종래 기술에 따른 DAG 구조를 가지도록 치환된 베이스 뷰의 예를 나타내는 도면
이하, 본 발명의 갱신 문장을 조합 및 검증하는 장치의 실시예를 첨부한 도면을 참조로 보다 구체적으로 설명한다.
도 1은 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치의 예시적인 블록도이다.
도 1을 참조하면, 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치(100)는 하나 이상의 프로세서(110)와, 메모리(130)와, 메모리(130)에 저장되며 하나 이상의 프로세서(110)에 의해서 실행되도록 구성되는 하나 이상의 프로그램(150)을 포함한다.
하나 이상의 프로세서(110)는 메모리(130)에 저장된 하나 이상의 프로그램(150)을 판독하고 실행한다. 하나 이상의 프로세서(110)는 예컨대 x개(단 x는 자연수)로 도시되었지만, 예컨대 1개일 수도 있으며 또는 복수 개일 수도 있다. 즉 하나의 프로세서를 이용하여 갱신 문장을 조합 및 검증하는 장치(100)의 기능을 실행할 수도 있으며, 또는 복수 개의 프로세서가 연동하여 갱신 문장을 조합 및 검증하는 장치(100)의 기능을 실행할 수도 있다. 예컨대 제1 프로세서가 연산 기능을 실행하고, 제2 프로세서가 통신 기능을 실행하는 등으로 갱신 문장을 조합 및 검증하는 장치(100)의 기능을 실행할 수도 있다.
메모리(130)는 프로그램(150)을 저장한다. 메모리(130)는 예컨대 기록 및 판독이 가능한 비휘발성 메모리 또는 휘발성 메모리 등의 기록 매체이다. 메모리(130)는 1개로 도시되었지만 복수 개의 메모리를 이용할 수도 있다.
하나 이상의 프로그램(150)은 예컨대 y개(단 y는 자연수)로 도시되었지만, 예컨대 1개일 수도 있으며 또는 복수 개일 수도 있다. 즉 하나의 프로그램을 이용하여 갱신 문장을 조합 및 검증하는 장치(100)의 기능을 구현할 수도 있으며, 또는 복수 개의 프로그램이 연동하여 갱신 문장을 조합 및 검증하는 장치(100)의 기능을 구현할 수도 있다. 예컨대 제1 프로그램이 연산 기능을 구현하고, 제2 프로그램이 통신 기능을 구현하는 등으로 갱신 문장을 조합 및 검증하는 장치(100)의 기능을 구현할 수도 있다.
이하 하나 이상의 프로세서(110) 및 하나 이상의 프로그램(150)은 각각 "프로세서(110)" 및 "프로그램(150)"으로 지칭한다.
도 2는 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치가 실행되는 시스템 환경을 나타내는 도면이다.
도 2를 참조하면, 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치가 실행되는 시스템 환경은, 클라이언트 장치(200)와, 데이터베이스 서버(300)와, 데이터베이스(400)를 포함한다.
예컨대 클라이언트 장치(200)는 데이터베이스 서버(300)에 제공된 데이터 조작 문장 또는 쿼리에 의해서 데이터베이스(400) 내의 데이터의 저장 또는 검색을 수행할 수 있다.
데이터베이스 서버(300)는 예컨대 데이터베이스(400) 내의 데이터를 검색, 삽입, 삭제 및 갱신 등의 쿼리를 처리한다. 쿼리는 예컨대 SQL 형식이다.
데이터베이스(400)는 데이터에 대한 관계를 나타내는 테이블을 포함한다.
본 발명에 따른 갱신 문장을 조합 및 검증하는 장치(100)는 예컨대 클라이언트 장치(200) 또는 데이터베이스 서버(300)에 연결되어 사용되는 컴퓨팅 장치이거나 또는 클라이언트 장치(200) 또는 데이터베이스 서버(300)의 일부 부분으로 클라이언트 장치(200) 또는 데이터베이스 서버(300)에 일체형으로 통합될 수 있다.
도 3은 본 발명에 따른 갱신 문장을 조합 및 검증하는 장치가 저장 및 실행하는 프로그램의 예시적인 블록도이다.
도 3을 참조하면, 프로그램(150)은 제1 인스트럭션(150-1) 내지 제5 인스트럭션(150-5)을 포함한다. 또한 프로그램(150)은 제6 인스트럭션(150-6) 내지 제8 인스트럭션(150-8)을 더 포함할 수 있다. 제2 인스트럭션(150-2)은 제2-1 인스트럭션(150-2-1)을 포함할 수 있다. 제3 인스트럭션(150-3)은 제3-1 인스트럭션(150-3-1)을 포함할 수 있다. 제8 인스트럭션(150-8)은 제8-1 인스트럭션(150-8-1) 내지 제8-2 인스트럭션(150-8-2)을 포함할 수 있다.
제1 인스트럭션(150-1)은 복잡한 뷰를 루트, 제1 베이스 뷰 내지 제k 베이스 뷰(단 k는 2 이상의 자연수) 및 제1 베이스 테이블 내지 제m 베이스 테이블(단 m은 1이상의 자연수)을 포함하도록 치환한 DAG 구조를 입력받는다.
예컨대 도 7a와 같은 DAG 구조를 입력받는다. 제1 인스트럭션(150-1)을 통하여 입력받는 DAG 구조는 예컨대 도 7b에 도시된 바와 같은 뷰에 대한 선언을 포함할 수 있다.
예컨대 도 7a에서 베이스 뷰는 V1 내지 V5를 포함하며, 베이스 테이블은 BT1 내지 BT3, 보다 구체적으로 employee, dependent 및 department의 3개이다.
다음으로, 제2 인스트럭션(150-2)은 상위 갱신 문장에 대한 코드 블록을 입력받는다. 상위 갱신 문장의 초기값은 루트에 대한 갱신 문장이다.
갱신 문장, 즉 상위 갱신 문장과 후술하는 적어도 하나의 하위 갱신 문장 각각은 update 기능, insert 기능 및 delete 기능 중 어느 하나를 포함하는 것이다.
즉 갱신 문장은 베이스 테이블 또는 베이스 뷰에 대해서 영향을 미치는 기능인 update 기능, insert 기능 및 delete 기능 중 어느 하나를 포함할 수 있다.
도 5a를 참조하면, 루트에 대한 갱신 문장은 "Insert into V values ($eid, $ename, $did, $dname, $sal) with $depName"이다. 또한 이에 대한 코드 블록("코드 블록 1"로 도시됨)은 "Insert into V values ($eid, $ename, $did, $dname, $sal) with $depName { if there exits in V s.t. eid=$eid and ename=$ename, raise exception; if there exists in department s.t. did=$did and sal> $sal and eid <> $eid, raise exception; Insert into V1 values ($eid, $ename, $did, $dname, $sal); }"와 같이 예시적으로 표시된다.
다음으로, 제3 인스트럭션(150-3)은 코드 블록에 포함된 적어도 하나의 하위 갱신 문장을 추출한다.
예컨대 도 5a의 "코드 블록 1"에서, 하위 갱신 문장은 "Insert into V1 values ($eid, $ename, $did, $dname, $sal)"이다.
다음으로, 제4 인스트럭션(150-4)은 적어도 하나의 하위 갱신 문장 모두가 제1 베이스 테이블 내지 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 지 확인한다.
예컨대 도 5a의 "코드 블록 1"에서, 하위 갱신 문장은 "Insert into V1 values ($eid, $ename, $did, $dname, $sal)"이며, "V1"이라는 베이스 뷰를 베이스로 한다.
다음으로, 제5 인스트럭션(150-5)은 제4 인스트럭션(150-4)을 수행한 후, 적어도 하나의 하위 갱신 문장 모두가 제1 베이스 테이블 내지 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 것이 아니라고 판단되면, 적어도 하나의 하위 갱신 문장에 대한 적어도 하나의 코드 블록을 입력받고, 상위 갱신 문장을 적어도 하나의 하위 갱신 문장으로 갱신하고 코드 블록을 적어도 하나의 코드 블록으로 갱신한 후, 제2 인스트럭션(150-2) 내지 제4 인스트럭션(150-4)을 수행한다.
예컨대 도 5a의 "코드 블록 1"에서, 하위 갱신 문장은 "Insert into V1 values ($eid, $ename, $did, $dname, $sal)"이며, "V1"이라는 베이스 뷰를 베이스로 한다. 따라서 하위 갱신 문장은 제1 베이스 테이블 내지 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 것이 아니다.
따라서 우선은 적어도 하나의 하위 갱신 문장, 즉 예컨대 "코드 블록 1"의 예에서는 하위 갱신 문장인 "Insert into V1 values ($eid, $ename, $did, $dname, $sal)"에 대한 코드 블록을 입력받는다.
이후 "Insert into V1 values ($eid, $ename, $did, $dname, $sal)"는 새로운 상위 갱신 문장으로 지정된다. 또한 하위 갱신 문장인 "Insert into V1 values ($eid, $ename, $did, $dname, $sal)"에 대한 코드 블록, 도 5a의 "코드 블록 2"인 "Insert into V1 values ($eid, $ename, $did, $dname, $sal) { if there exists in V1 s.t. eid=$eid, raise exception; If there exists in V2 s.t. eid=$eid, update V2 set count = 1 where eid=$eid; Else insert into V2 values ($eid, $ename, $did, $dname, $sal, 1); }"가 새로운 코드 블록으로 지정된다.
이후 다시 제2 인스트럭션(150-2) 내지 제4 인스트럭션(150-4)을 수행한다.
"Insert into V1 values ($eid, $ename, $did, $dname, $sal)"는 상위 갱신 문장이고, 이에 대한 코드 블록, 즉 "코드 블록 2"는 "Insert into V1 values ($eid, $ename, $did, $dname, $sal) { if there exists in V1 s.t. eid=$eid, raise exception; If there exists in V2 s.t. eid=$eid, update V2 set count = 1 where eid=$eid; Else insert into V2 values ($eid, $ename, $did, $dname, $sal, 1);}"이다.
하위 갱신 문장은 "update V2 set count = 1 where eid=$eid" 및 "insert into V2 values ($eid, $ename, $did, $dname, $sal, 1)"이다.
하위 갱신 문장에서 V2라는 베이스 뷰를 베이스로 하기 때문에, 상위 갱신 문장과 코드 블록이 갱신되고, 다시 제2 인스트럭션(150-2) 내지 제4 인스트럭션(150-4)을 수행한다.
한편 하위 갱신 문장이 여러 개 있을 때는, 하위 갱신 문장 각각은 대해서 상위 갱신 문장으로 갱신되고, 이에 대해서 다시 제2 인스트럭션(150-2) 내지 제4 인스트럭션(150-4)을 수행한다.
즉 "update V2 set count = 1 where eid=$eid" 라는 하위 갱신 문장을 상위 갱신 문장으로 갱신하고 이에 대해서 제2 인스트럭션(150-2) 내지 제4 인스트럭션(150-4)을 수행하고, 또한 "insert into V2 values ($eid, $ename, $did, $dname, $sal, 1)"라는 하위 갱신 문장을 상위 갱신 문장으로 갱신하고 이에 대해서 제2 인스트럭션(150-2) 내지 제4 인스트럭션(150-4)을 수행한다.
한편, 제5 인스트럭션(150-5)은 제4 인스트럭션(150-4)을 수행한 후, 적어도 하나의 하위 갱신 문장 모두가 제1 베이스 테이블 내지 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 것이라고 판단되면, 본 발명에 따른 검증을 종료한다.
예컨대 도 5e에 도시되듯이, 상위 갱신 문장이 "insert into V5 values ($eid, $ename, $depName)"이고, 이에 대한 코드 블록, 즉 "코드 블록 10"이 "insert into V5 values ($eid, $ename, $depName) { if there exists in V5 s.t. eid=$eid, raise exception; If there exists in employee s.t. eid=$eid and there exists in dependent, Update dependent set eid=$eid where depName=$depName; If there not exists in employee s.t. eid= $eid in employee and there not exists in dependent, s.t. depName=$depName Insert into employee values ($eid, $ename, null); /* (10)-B */ Update dependent set eid=$eid where depName=$depName; If there exists in employee s.t. eid=$eid and there not exists in department s.t. depName= $depName, Insert into dependent values ($depName, $eid); If there not exists in employee s.t. eid=$eid and there not exists in dependent s.t. depName=$depName, Insert into employee values ($eid, $ename, null); /* (11)-B */ Insert into dependent values ($depName, $eid); "인 경우를 살펴보자.
"코드 블록 10"에 포함된 하위 갱신 문장은 "Update dependent set eid=$eid where depName=$depName;", "Insert into employee values ($eid, $ename, null)" " Update dependent set eid=$eid where depName=$depName;", "Insert into dependent values ($depName, $eid);", "Insert into employee values ($eid, $ename, null); " 및 "Insert into dependent values ($depName, $eid);"이다.
하위 갱신 문장들은 모두 베이스 테이블, 즉 dependent, employee만을 베이스로 한다. 따라서 본 발명에 따른 갱신 문장의 조합 및 이에 대한 검증이 종료된다.
한편 바람직하게는 제2 인스트럭션(150-2)은 상위 갱신 문장의 파라미터가 글로벌 파라미터 또는 상수만을 포함하는 지 확인하는 제2-1 인스트럭션(150-2-1)을 포함할 수 있다.
또한 제3 인스트럭션(150-3)은 하위 갱신 문장의 파라미터가 글로벌 파라미터 또는 상수만을 포함하는 지 확인하는 제3-1 인스트럭션(150-3-1)을 포함할 수 있다.
예컨대 "코드 블록 1"에서, 상위 갱신 문장은 "Insert into V values ($eid, $ename, $did, $dname, $sal) with $depName"이고, 하위 갱신 문장은 "Insert into V1 values ($eid, $ename, $did, $dname, $sal)"이다. 각 갱신 문장들의 파라미터는, 예컨대 $eid, $ename, $did, $dname, $sal(상위 갱신 문장) 또는 $eid, $ename, $did, $dname, $sal(하위 갱신 문장)이며, 모두 글로벌 파라미터만을 포함한다.
예컨대 베이스 뷰(V2)에 "insert"를 수행하기 위해서는, V3 및 V4를 베이스로 하는 갱신 문장들(U3, U4라 지칭함)을 작성하여야 한다. 이 경우 갱신 문장들의 파라미터가 글로벌 파라미터 또는 상수가 아닌 경우라면, U3 와 U4 에 의한 갱신이 서로 간섭한다는 것을(본원 명세서에서는 이를 "베이스 공유 간섭"이라고 칭한다) 검출하는 것은 불가능하다.
각각의 갱신 문장들에 의한 갱신, 예컨대 U3 또는 U4에 의한 갱신이 서로 간섭할 수 있다. 본원 명세서에서는 이를 "베이스 공유 간섭"이라고 칭한다. 각 갱신 문장들의 파라미터가 로컬 파라미터를 포함하는 경우에는 의도하지 않은 간섭, 즉 베이스 공유 간섭의 발생을 검출할 수 없다.
베이스 공유 간섭을 회피하기 위해서, 제2-1 인스트럭션(150-2-1) 및 제3-1 인스트럭션(150-3-1)을 통하여 각 갱신 문장들의 파라미터가 글로벌 파라미터 또는 상수만을 포함하는 지를 확인한다.
마찬가지로, 루트에 대한 갱신 문장은 제1 베이스 뷰 내지 제k 베이스 뷰 중 적어도 하나를 베이스로 하는 것이고, 루트에 대한 갱신 문장의 파라미터 역시 글로벌 파라미터 또는 상수만을 포함하는 것이 바람직하다.
한편 전술한 제1 인스트럭션(150-1) 내지 제5 인스트럭션(150-5)을 통하여 예컨대 도 4에 도시된 바와 같이 재귀적 구조의 코드 블록이 얻어질 수 있다.
한편 도 7a를 참조하면, 여러 개의 트리가 도시된다. 제1 트리는 예컨대 V-V1-V2-V3-BT1(employee):BT2(department)이고, 제2 트리는 예컨대 V-V1-V2-V4-V5-BT1(employee):BT3(dependent)이다.
제1 트리 및 제2 트리에서, 예컨대 최종적인 베이스 테이블 중 department와 dependent에 대한 갱신은 별도의 트리를 통해서 수행되므로 서로 간섭하지 않으나, employee에 대한 갱신은 제1 트리를 통해서 또는 제2 트리를 통해서 각각 수행될 수 있으므로 서로 간섭할 수 있다.
이러한 간섭을 방지하기 위해서, 도 3을 참조하면, 프로그램(150)은 제6 인스트럭션(150-6) 내지 제8 인스트럭션(150-8)을 더 포함할 수 있다
제6 인스트럭션(150-6)은 제1 인스트럭션(150-1) 내지 제5 인스트럭션(150-5)을 통하여 제1 갱신 문장 내지 제n 갱신 문장(단 n은 2이상의 자연수)을 추출한다.
제7 인스트럭션(150-7)은 DAG 구조의 제1 트리 및 DAG 구조의 제2 트리에 대해서 제1 갱신 문장 내지 제n 갱신 문장을 대응시킨다.
예컨대 총 12개의 갱신 문장이 있는 경우, 제1 내지 제6 갱신 문장은 제1 트리에 대응하고, 제7 내지 제12 갱신 문장은 제2 트리에 대응하는 경우를 가정하자.
이 경우 제1 트리와 제2 트리의 갱신 문장의 조합(쌍)은 총 36개가 존재할 수 있다.
제8 인스트럭션(150-8)은 제1 트리에 대한 갱신 문장들과 제2 트리에 대한 갱신 문장들의 조합을 기초로 제1 갱신 문장 내지 제n 갱신 문장 중에 간섭이 발생하는 지를 검출한다.
간섭이 발생하는 지를 검출하기 위해서, 제8 인스트럭션(150-8)은 제8-1 인스트럭션(150-8-1) 및 제8-2 인스트럭션(150-8-2)을 포함할 수 있다.
전술하듯이 제1 갱신 문장 내지 상기 제n 갱신 문장 각각은 update 기능, insert 기능 및 delete 기능 중 어느 하나를 가진다.
제8-1 인스트럭션(150-8-1)은 갱신 문장들의 조합 중에서, 모두 insert 기능을 가지거나, 모두 delete 기능을 가지거나, 하나는 insert 기능을 가지고 나머지 하나는 delete 기능 또는 update 기능을 가지거나, 하나는 update 기능을 가지고 나머지 하나는 delete 기능을 가지는 쌍을 검출한다.
제8-1 인스트럭션(150-8-1)은 이러한 검출된 쌍 중에서 제1 베이스 테이블 내지 제m 베이스 테이블 중에서 동일한 테이블을 참조하고 동일한 주 키를 가지는 쌍을 간섭이 발생하는 것으로 검출한다.
제8-2 인스트럭션(150-8-2)은 갱신 문장들의 조합 중에서, 모두 update 기능을 가지는 쌍을 검출하고, 검출된 쌍 중에서 제1 베이스 테이블 내지 제m 베이스 테이블 중에서 동일한 테이블을 참조하고 동일한 주 키 및 동일한 필드를 가지는 쌍을 간섭이 발생하는 것으로 검출한다.
즉 모두 update 기능을 가지는 갱신 문장들의 쌍의 경우에는 주 키 및 필드까지 동일한 경우에만 간섭이 발생하는 것으로 판단한다.
이상에서 설명한 바와 같이 본 발명에 따르면, 데이터베이스에서 사용되는 갱신 문장에 대한 코드 블록을 검증하여 간섭이 발생하지 않도록 검증하며, 특히 복잡한 뷰를 DAG 구조로 치환하는 경우에도 DAG 구조의 베이스 뷰에 대한 코드 블록 내의 갱신 문장들이 서로 간섭하지 않도록 검증할 수 있다.
비록 본 발명의 구성이 구체적으로 설명되었지만 이는 단지 본 발명을 예시적으로 설명한 것에 불과한 것으로, 본 발명이 속하는 기술분야에서 통상의 지식을 가지는 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 변형이 가능할 것이다.
따라서 본 명세서에 개시된 실시예들은 본 발명을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 사상과 범위가 한정되는 것은 아니다. 본 발명의 범위는 아래의 청구범위에 의해 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
본 발명에 따르면, 복잡한 뷰에 대한 갱신 문장을 직접 입력받는 대신에 복잡한 뷰를 DAG 구조로 치환하고, 각 노드에 대해 간단한 로컬 갱신 문장을 입력받고 이를 조합하여 글로벌 갱신 문장을 생성하며, 또한 로컬 갱신 문장들 사이의 간섭을 사전에 검증할 수 있다. 따라서 사용자는 복잡한 뷰에 대한 복잡하고 긴 갱신 문장을 작성하는 대신에, 간단한 다수의 로컬 갱신 문장을 작성하는 것에 의해서 갱신 문장을 작성할 수 있으며, 또한 로컬 갱신 문장들에 대해서 간섭을 사전에 확인하고 회피할 수 있으므로, 갱신 문장 작성시 생산성을 높일 수 있다.
100: 갱신 문장을 조합 및 검증하는 장치 110: 프로세서
130: 메모리 150: 프로그램
200: 클라이언트 장치 300: 데이터베이스 서버
400: 데이터베이스

Claims (8)

  1. 하나 이상의 프로세서; 메모리; 및 상기 메모리에 저장되며 상기 하나 이상의 프로세서에 의해서 실행되도록 구성되는 하나 이상의 프로그램을 포함하고,
    상기 하나 이상의 프로그램은,
    복잡한 뷰(complex view)를 루트, 제1 베이스 뷰 내지 제k 베이스 뷰(단 k는 2 이상의 자연수) 및 제1 베이스 테이블 내지 제m 베이스 테이블(단 m은 1이상의 자연수)을 포함하도록 치환한 DAG(directed acyclic graph) 구조를 입력받는 제1 인스트럭션;
    상위 갱신 문장(단 상기 상위 갱신 문장의 초기값은 상기 루트에 대한 갱신 문장임)에 대한 코드 블록을 입력받는 제2 인스트럭션;
    상기 코드 블록에 포함된 적어도 하나의 하위 갱신 문장을 추출하는 제3 인스트럭션;
    상기 적어도 하나의 하위 갱신 문장 모두가 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 지 확인하는 제4 인스트럭션; 및
    상기 제4 인스트럭션을 수행한 후에, 상기 적어도 하나의 하위 갱신 문장 모두가 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중 적어도 하나만을 베이스로 하는 것이 아니라고 판단되면, 상기 적어도 하나의 하위 갱신 문장에 대한 적어도 하나의 코드 블록을 입력받고, 상기 상위 갱신 문장을 상기 적어도 하나의 하위 갱신 문장으로 갱신하고 상기 코드 블록을 상기 적어도 하나의 코드 블록으로 갱신한 후, 상기 제2 인스트럭션 내지 상기 제4 인스트럭션을 수행하는 제5 인스트럭션
    을 포함하는 갱신 문장을 조합 및 검증하는 장치.
  2. 제1항에 있어서,
    상기 제2 인스트럭션은,
    상기 상위 갱신 문장의 파라미터가 글로벌 파라미터 또는 상수만을 포함하는 지 확인하는 제2-1 인스트럭션
    을 포함하는 것인 갱신 문장을 조합 및 검증하는 장치.
  3. 제1항에 있어서,
    상기 제3 인스트럭션은,
    상기 적어도 하나의 하위 갱신 문장의 파라미터가 글로벌 파라미터 또는 상수만을 포함하는 지 확인하는 제3-1 인스트럭션
    을 포함하는 것인 갱신 문장을 조합 및 검증하는 장치.
  4. 제1항에 있어서,
    상기 루트에 대한 갱신 문장은 상기 제1 베이스 뷰 내지 상기 제k 베이스 뷰 중 적어도 하나를 베이스로 하는 것이고, 상기 루트에 대한 갱신 문장의 파라미터는 글로벌 파라미터 또는 상수만을 포함하는 것인 갱신 문장을 조합 및 검증하는 장치.
  5. 제1항에 있어서,
    상기 상위 갱신 문장 및 상기 적어도 하나의 하위 갱신 문장 각각은 update 기능, insert 기능 및 delete 기능 중 어느 하나를 포함하는 것인 갱신 문장을 조합 및 검증하는 장치.
  6. 제1항에 있어서,
    상기 제1 인스트럭션 내지 상기 제5 인스트럭션을 통하여 제1 갱신 문장 내지 제n 갱신 문장(단 n은 2이상의 자연수)을 추출하는 제6 인스트럭션;
    상기 DAG 구조의 제1 트리 및 상기 DAG 구조의 제2 트리에 대해서 상기 제1 갱신 문장 내지 상기 제n 갱신 문장을 대응시키는 제7 인스트럭션; 및
    상기 제1 트리에 대한 갱신 문장들과 상기 제2 트리에 대한 갱신 문장들의 조합을 기초로 상기 제1 갱신 문장 내지 상기 제n 갱신 문장 중에 간섭이 발생하는 지를 검출하는 제8 인스트럭션
    을 더 포함하는 갱신 문장을 조합 및 검증하는 장치.
  7. 제6항에 있어서,
    상기 제1 갱신 문장 내지 상기 제n 갱신 문장 각각은 update 기능, insert 기능 및 delete 기능 중 어느 하나를 가지는 것이고,
    상기 제8 인스트럭션은 상기 갱신 문장들의 조합 중에서, 모두 insert 기능을 가지거나, 모두 delete 기능을 가지거나, 하나는 insert 기능을 가지고 나머지 하나는 delete 기능 또는 update 기능을 가지거나, 하나는 update 기능을 가지고 나머지 하나는 delete 기능을 가지는 쌍을 검출하고, 검출된 쌍 중에서 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중에서 동일한 테이블을 참조하고 동일한 주 키를 가지는 쌍을 간섭이 발생하는 것으로 검출하는 제8-1 인스트럭션
    을 포함하는 것인 갱신 문장을 조합 및 검증하는 장치.
  8. 제6항에 있어서,
    상기 제1 갱신 문장 내지 상기 제n 갱신 문장 각각은 update 기능, insert 기능 및 delete 기능 중 어느 하나를 가지는 것이고,
    상기 제8 인스트럭션은 상기 갱신 문장들의 조합 중에서 모두 update 기능을 가지는 쌍을 검출하고, 검출된 쌍 중에서 상기 제1 베이스 테이블 내지 상기 제m 베이스 테이블 중에서 동일한 테이블을 참조하고 동일한 주 키 및 동일한 필드를 가지는 쌍을 간섭이 발생하는 것으로 검출하는 제8-2 인스트럭션
    을 포함하는 것인 갱신 문장을 조합 및 검증하는 장치.
KR1020160025124A 2016-03-02 2016-03-02 갱신 문장들을 조합 및 검증하는 장치 KR101710445B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160025124A KR101710445B1 (ko) 2016-03-02 2016-03-02 갱신 문장들을 조합 및 검증하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160025124A KR101710445B1 (ko) 2016-03-02 2016-03-02 갱신 문장들을 조합 및 검증하는 장치

Publications (1)

Publication Number Publication Date
KR101710445B1 true KR101710445B1 (ko) 2017-02-27

Family

ID=58315613

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160025124A KR101710445B1 (ko) 2016-03-02 2016-03-02 갱신 문장들을 조합 및 검증하는 장치

Country Status (1)

Country Link
KR (1) KR101710445B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030074647A (ko) * 2000-12-08 2003-09-19 컨피짓 소프트웨어 에이/에스 제품 구성 방법
KR20060095448A (ko) * 2005-02-28 2006-08-31 마이크로소프트 코포레이션 데이터베이스 내부에 표현된 파일 시스템
KR20080101901A (ko) * 2006-02-15 2008-11-21 마이크로소프트 코포레이션 구체화된 외부-조인 뷰의 유지를 용이하게 해주는 컴퓨터 구현 시스템 및 구체화된 뷰를 유지하는 컴퓨터 구현 방법
KR101136457B1 (ko) 2006-04-20 2012-04-19 주식회사 케이티 데이터베이스 관리 시스템에서 구조화 질의어(SQL)실행경로(Trace) 분석 방법 및 장치
KR20130068605A (ko) * 2011-12-15 2013-06-26 한국전자통신연구원 뷰 테이블 기반 다중 테넌트 스키마 관리 방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030074647A (ko) * 2000-12-08 2003-09-19 컨피짓 소프트웨어 에이/에스 제품 구성 방법
KR20060095448A (ko) * 2005-02-28 2006-08-31 마이크로소프트 코포레이션 데이터베이스 내부에 표현된 파일 시스템
KR20080101901A (ko) * 2006-02-15 2008-11-21 마이크로소프트 코포레이션 구체화된 외부-조인 뷰의 유지를 용이하게 해주는 컴퓨터 구현 시스템 및 구체화된 뷰를 유지하는 컴퓨터 구현 방법
KR101136457B1 (ko) 2006-04-20 2012-04-19 주식회사 케이티 데이터베이스 관리 시스템에서 구조화 질의어(SQL)실행경로(Trace) 분석 방법 및 장치
KR20130068605A (ko) * 2011-12-15 2013-06-26 한국전자통신연구원 뷰 테이블 기반 다중 테넌트 스키마 관리 방법 및 장치

Similar Documents

Publication Publication Date Title
CN110908997B (zh) 数据血缘构建方法、装置、服务器及可读存储介质
KR101707369B1 (ko) 이벤트 저장소의 구축 방법 및 장치
US11429586B2 (en) Expression update validation
US20160124936A1 (en) Grammar compiling methods, semantic parsing methods, devices, computer storage media, and apparatuses
AU2019213302A1 (en) Filtering data lineage diagrams
US10901963B2 (en) Database entity analysis
CN114328574A (zh) 一种数据查询方法、装置、电子设备及计算机可读存储介质
KR102292040B1 (ko) 기계 독해 기반 지식 추출을 위한 시스템 및 방법
CN112015722A (zh) 数据库管理方法、数据血缘分析方法以及相关装置
US11238084B1 (en) Semantic translation of data sets
Kvet et al. Concept of temporal data retrieval: Undefined value management
US10108742B1 (en) Apparatus and method for data redaction in a semi-structured document database
US9811579B1 (en) Document relational mapping
CN110309214A (zh) 一种指令执行方法及其设备、存储介质、服务器
CN110147396B (zh) 一种映射关系生成方法及装置
US20060190476A1 (en) Database storage system and associated method
KR101710445B1 (ko) 갱신 문장들을 조합 및 검증하는 장치
CN116974554A (zh) 代码数据处理方法、装置、计算机设备和存储介质
CN111143448A (zh) 一种知识库构建方法
CN107463845B (zh) 一种sql注入攻击的检测方法、系统和计算机处理设备
US9959295B1 (en) S-expression based computation of lineage and change impact analysis
US10872065B1 (en) System for managing relational databases using XML objects
US11074401B2 (en) Merging delta object notation documents
KR101225333B1 (ko) 구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법
JP2008243075A (ja) 構造化文書管理装置及び方法

Legal Events

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