KR20060112191A - 컬렉션값을 가지는 열 및 스칼라값을 가지는 열을 단일문으로 수정하기 위한 sql 언어 확장 - Google Patents

컬렉션값을 가지는 열 및 스칼라값을 가지는 열을 단일문으로 수정하기 위한 sql 언어 확장 Download PDF

Info

Publication number
KR20060112191A
KR20060112191A KR1020057012345A KR20057012345A KR20060112191A KR 20060112191 A KR20060112191 A KR 20060112191A KR 1020057012345 A KR1020057012345 A KR 1020057012345A KR 20057012345 A KR20057012345 A KR 20057012345A KR 20060112191 A KR20060112191 A KR 20060112191A
Authority
KR
South Korea
Prior art keywords
values
column
update
statement
collection
Prior art date
Application number
KR1020057012345A
Other languages
English (en)
Other versions
KR101085686B1 (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 KR20060112191A publication Critical patent/KR20060112191A/ko
Application granted granted Critical
Publication of KR101085686B1 publication Critical patent/KR101085686B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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/23Updating
    • G06F16/235Update request formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Landscapes

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

Abstract

표의 스칼라값을 가지는 열을 수정하기 위해 쓰이는 (외부 UPDATE라고 불리는) UPDATE문의 문법 및 의미와 유사한 방식으로 컬렉션값을 갖는 열들을 수정하기 위한 UPDATE문의 함유된 확장을 사용하여 컬렉션값을 가지는 열(collection-valued column) 및 함유된 표 안의 다른 복합 구조의 열들을 갱신하기 위한 기술이 개시된다. 외곽 레벨에서 표와 동일한 문법 및 의미 구조를 사용하면, 관계형 표들에 대한 수정을 처리하는 기존의 구현이 컬렉션 값을 갖는 열들에 대한 외곽 갱신들을 처리하기 위한 자신의 구현 기술을 재사용할 수 있다. UPDATE 확장은 객체 모델의 임의의 깊이 레벨들에 포함된 함유된 컬렉션들에 대한 갱신들의 지정을 가능하게 한다. 데이터 자체의 구조와 평행하고 그래서 사용자의 개념적인 데이터 모델에 대해 보다 직접적으로 매핑하는 방식으로 새로운 문법은 외곽 UPTATE문 안에 포함된다. UPDATE 확장들을 구현하기 위한 방법은, 스칼라값을 가지고 컬렉션 값을 가지는 거의 모든 변경들을, 변경된 컬렉션 값을 갖는 열들에 적용될 수 있는 단일값으로 모으는 데이터 구조인 변경 기술자를 사용한다. 이 기술은 또한 객체들 또는 XML같은 다른 종류의 복합 구조의 열들의 수정을 위해 사용될 수 있다. 변경 기술자는 셀에 대한 계층적 정보를 포함하여, 단일 작업으로 다양한 입자 레벨들에서의 다중 갱신의 효율적인 적용을 가능케하고, UPDATE 작업에 의해 영향을 받는 색인들만을 갱신하고 UPDATE 작업에 의해서 영향받는 색인 행들만 갱신함으로써 효율적인 색인 유지 알고리듬들의 구현이 가능해진다.
갱신, UPDATE문, 함유, 컬렉션값을 가지는 열, 계층구조

Description

컬렉션값을 가지는 열 및 스칼라값을 가지는 열을 단일 문으로 수정하기 위한 SQL 언어 확장{SQL LANGUAGE EXTENSIONS FOR MODIFYING COLLECTION-VALUED AND SCALAR VALUED COLUMNS IN A SINGLE STATEMENT}
본 출원은 2003년 10월 24일 출원된 미국 출원 일련번호 10/693,302에 대하여 우선권을 주장하며, 그 명세는 참고로 본원에 그 전체가 포함된다.
본 발명은 데이터베이스 시스템에 관한 것으로, 더 자세하게는, (함유된 표들 및 복합 구조의 객체들 또는 XML을 저장하는 표들 같은) 계층적 구조의 표들을 한 단계의 임의의 방식으로 수정하기 위해 함유된 관계형 SQL(structured query language) 언어 확장들을 사용하고, 복잡하고 부분적인 갱신을 효율적으로 달성하기 위한 (변경 기술자 및 질의 최적화기와 질의 실행 기술의 레버리징과 같은) 기구들을 제공하기 위한 시스템 및 방법에 관련된다.
SQL 질의 언어는 사용자에게 관계형 데이터 모델을 사용하여 저장된 표로 된 데이터를 질의(및 수정)할 능력을 제공한다. 관계형 데이터 모델은 표 안의 각 셀(행의 한 열)이 하나의 스칼라(또는 원자) 값이 되도록 지시한다. SQL은 관계형 데이터베이스와 통신하는데 사용되는 ANSI(American National Standards Institute) 표준이다. SQL문들은 데이터를 갱신하거나 관계형 데이터베이스에서 데이터를 검색하는 것 같은 작업을 수행하는데 사용된다. 많은 데이터베이스 시스템들이 SQL을 사용함에도 불구하고, 그들 다수는 또한 보통 그들의 시스템에서만 사용되는 그들 자신의 추가적인 독자적 확장들을 가지고 있다. 그러나, "Select", "Insert", "Update", "Delete", "Create" 및 "Drop" 같은 표준 SQL 명령들은, 사람들이 관계형 데이터베이스와 작업하기를 원하는 것과 데이터베이스 분야의 당업자에게 공지되었다고 믿어지는 많은 것들을 이루기 위해서 사용될 수 있다.
관계형 데이터 모델에 대한 최근의 확장들은 셀 안에 하나의 스칼라 값을 저장하는 제한을 완화하고, 표 안의 각 셀이 값들의 컬렉션(collection) 그 자체가 되도록 허용한다. 이 컬렉션 안의 각 요소는 차례로 컬렉션 자체를 담을 수 있다 - 즉, 컬렉션은 임의의 깊이 레벨들로 함유될 수 있다. 이러한 다수의 값들을 갖는 컬렉션값을 가지는 셀들을 구비한 표들은 함유된 표들(nested tables)이라고 넓게 불릴 수 있다. 이런 발달은 이러한 함유된 표의 컬렉션값들을 수정하기 위해 어떻게 SQL 언어를 확장시킬 것인가 하는 문제를 일으킨다. 예를 들면, 임의의 함유 레벨에서 스칼라 값들을 동시에 변경하는 것을 허용하기 위해 컬렉션값을 가지는 셀들을 수정하기 위한 기술이 필요하다.
함유된 표들 및 연관된 표준들의 현 구현들은 함유된 표 내의 컬렉션들에 질의하고 갱신하기 위한 확장들을 제공한다. 그러나 종래의 함유된 표 시스템에서는 컬렉션값을 가지는 셀 안의 스칼라 값들의 각 레벨에 대해 함유된 스칼라 값들이 한 번에 한 레벨씩 갱신되기 때문에, 다수 레벨의 셀에 저장된 값들을 변경시키기 위해서 다수의 갱신들을 필요로 한다. 예를 들면, 미국 특허 6,564,203은 함유된 컬렉션 열의 하나 또는 그 이상의 함유된 컬렉션들에 논리적으로 존재하는 데이터를 갱신하기 위한 기술들을 설명한다. 하나 또는 그 이상의 함유된 컬렉션들에 작용하는 DML(Data Manipulation Language)문이 검출되고 DML문이 목표로 하는 함유된 컬렉션들 안의 각 개별적인 요소에 대해 트리거 코드가 한번씩 실행된다. 트리거 코드는 부모값(parent value)에 대한 참조들을 포함할 수 있다; 그러나 트리거들은 데이터베이스의 표 또는 표 보기(table view)의 한 행이 갱신, 삽입 또는 삭제될 때 시작되도록 설계된다. 바꿔 말하면, 한 번에 하나의 행만 갱신된다. 이러한 처리는 느리고 지루하며 임의의 지정된 함유 레벨에서의 갱신들을 허락하지 않는다.
미국 특허 6,493,708은 계층구조의 레벨들을 식별하기 위해 다양한 LEVEL문들을 포함하는 CREATE DIMENSION문을 사용하여 계층적 차원, 다양한 레벨들, 및 레벨들 간의 관계들을 정의하기 위한 기구들을 개시한다. 디멘젼 표(dimension table)는 디멘젼의 다양한 레벨들의 입자 간의 계층적 관계들을 포함하는데, 이때 그 레벨들은 미세한 레벨에서 더 거친 레벨로 진행한다고 가정된다. 그러나, 동일한 데이터에 대한 더 미세한/더 거친 표현들처럼 서로에게 반드시 관련되지 않는 각각의 행의 값들에 대해 함유된 표들을 갱신하기 위한 어떤 일반적인 기구들도 알려지지 않았다.
SQL2003 표준은 어레이들 및 다중 세트들이라는 두 종류의 컬렉션들을 지정한다. 표의 열들은 이들 두 유형 중 하나일 수 있다. 어레이들 및 다중 세트들을 구현하는 기존의 데이터베이스 시스템들에서 그 표준은 예전의 값이 완전히 새로운 값으로 대체되는 컬렉션값을 가지는 열 전체를 수정하기 위한 문법 및 의미들을 지정한다. 종래의 기술분야는 컬렉션값을 가지는 열을 점진적으로 수정하기 위한 어떤 방식도 지정하지 않는다. 이러한 컬렉션들에 대해 점진적인 수정들을 수행하는 것을 허용하는 기술이 바람직한데, 그것은 전체의 커다란 컬렉션을 새로운 컬렉션으로 대체하는 것은 매우 값비싸서, 컬렉션의 단지 작은 부분만을 수정하는 것이 필요하기 때문이다. 본 발명은 본 기술분야의 이러한 필요성을 다룬다.
본 발명의 요약
본 발명은, SQL UPDATE문의 함유된 확장을 사용하여 함유된 표 안의 컬렉션값을 가지는 열들을 갱신하기 위한 새로운 방식을 제공함으로써 본 기술분야의 전술된 필요성들을 만족시킨다. 제안된 확장은, 표의 스칼라값을 가지는 열들을 수정하는데 사용되는 종래의 UPDATE 문(외부 UPDATE문이라고 불림)의 문법 및 의미들과 유사한, 문법 및 의미들을 사용하여 컬렉션값을 가지는 열들을 수정한다. 이것은 바람직한데, 동일한 문법 및 의미 구문들을 외부 레벨의 표로서 사용하면 관계형 표들에 대한 수정들을 처리하는 기존의 구현이 갱신들을 처리하기 위해 자신의 구현 기술들을 재사용하여 컬렉션값을 가지는 열들도 수정할 수 있기 때문이다. 또한 본 발명에 따른 이러한 UPDATE 확장들은 갱신들의 명세를 계층구조의 임의의 깊이 레벨에 포함된 함유된 컬렉션들에 대해 가능케 한다.
새로운 문법은 데이터 자체의 구조와 평행한 방식으로 외부 UPDATE문 안에 포함된다. 그래서 그 문법은 사용자의 개념적인 데이터 모델에 보다 직접적으로 매핑하기 때문에 이해하기 더 쉽다. UPDATE문에 대해 제안된 확장은, 수정의 효율적 인 처리를 고려하는 동일한 문을 사용하여 컬렉션값을 가지는 열들 및 다른 스칼라값을 가지는 열들 둘 다에 대한 갱신을 동시에 허용한다.
본 발명에 따라 변경 기술자들을 사용하여 UPDATE문들을 구현하는 관계형 데이터베이스 시스템은, 데이터베이스 수정문(질의문)을 구문분석하고 UPDATE문에 의해 지정된 것과 같은 표에 대한 변경의 논리적 기술을 생산하는 파서(parser), 수정들을 수행할 실행 알고리듬을 생산하는 질의 최적화기(query optimizer), 및 최종적으로 실행 알고리듬을 구현하는 질의 실행 엔진을 포함한다. 실행 알고리듬은 다음의 단계들로 구성된다: (ⅰ) 갱신될 필요가 있는 복합 구조형 열(예를 들면, 함유된 표) 안의 행들을 결정하고 갱신될 복합 구조형 열 안의 열들에 대한 새로운 값들을 계산하고, (ⅱ) 계산된 새로운 값들을 복합 구조형 열에 적용한다. 컬렉션값을 가지는 열들에 대한 수정에 대해서, 단계 (ⅱ)는 복합 구조형 열의 계층구조에서 갱신될 값들의 위치, 및 컬렉션값을 가지는 열들의 값들에 대한 변경들의 집합을 나타내는 데이터 구조(변경 기술자)를 사용한다. 단계 (ⅱ)에서, 질의 실행 엔진은 스칼라값을 가지는 열들에 대해 단순한 스칼라 갱신들을 사용하는 것 외에도, 변경 기술자를 판독하고 그것에 의해 기술된 대로 변경들을 컬렉션값을 가지는 열들에 적용한다.
UPDATE 확장들을 구현하는 방법은 변경 기술자라고 불리는 기술을 사용하는데, 이는 컬렉션값을 가지는 열에서 이루어질 변경들에 대한 완벽한 기술을 제공하는 하나의 값으로, 스칼라값 및 컬렉션값을 가지는 모든 변경들을 수집하는 데이터 구조이다. 변경 기술자는 질의 실행 엔진에게 무엇을 변경시키고 어디에서 변경시 켜야 할지 알려주고 종래의 스칼라로 패키징되나, 지정된 계층 레벨들에서 스칼라들을 수정하는데 필요한 모든 계층 정보와 함께 패키징된다. 그래서 변경 기술자는 단일 작업으로 다양한 입도 레벨들에서의 다수의 갱신들의 효율적인 적용을 가능하게 한다. 변경 기술자는 또한, UPDATE 연산의 SET절에 의해 다양한 함유 레벨에서 수정되는 특정한 스칼라 필드들에 의해 영향받는 색인들만 갱신하고 UPDATE작업에 의해 수정되는 실제 요소들에 대응하는 색인들의 행들만 갱신함으로써 효율적인 색인 관리 알고리듬들의 구현을 가능하게 한다. 변경 기술자는 또한 변경들의 계산을 그들의 적용 자체로부터 분리시키는, 즉, 갱신문 그 자체의 부작용을 방지하는, (할로윈 보호라고 알려진) 이점을 가진다. 만약 계산과 변경들의 적용이 강력하게 분리되지 않으면, 제1 단계가 부적절하게 영향을 받기 때문에, 중간 변경들을, 제2 단계가 생산했을 수 있었던 데이터로 본 결과 부작용이 일어날 수 있다.
그래서 본 발명은 함유된 관계형 SQL 언어 확장들을 사용하여 (함유된 표들 및 복합 구조 객체들이나 XML을 저장하는 표들과 같은) 계층구조로 된 표들을 한 단계의 임의의 방식으로 수정하고 복합적이고 부분적인 갱신들을 효율적으로 달성하기 위한 (변경 기술자 및 질의 최적화기 및 질의 실행 기술의 레버리징과 같은) 기구들을 제공한다. 본 발명의 SQL 언어 확장은 또한 본 발명을 구현하도록 구성된 데이터 베이스 안의 복합 구조형의 관계형 데이터 또는 XML 데이터의 관리 및 질의를 풍부하고 효율적으로 지원하는 것을 가능하게 한다.
앞의 요약은, 다음의 본 발명의 상세한 설명과 마찬가지로, 첨부된 도면들과 관련하여 읽을 때 더 잘 이해될 것이다. 본 발명을 도시하려는 목적을 위해, 도면들은 본 발명의 다양한 측면들의 예시적인 실시예들을 포함한다; 그러나 본 기술분야의 당업자들은 본 발명이 그 특정한 방법들 및 드러난 수단에 한정되지 않는 것을 이해할 것이다. 도면에서;
도 1은 질의에서의 술어(predicate)를 만족시키는 행들을 나열하고 각 열의 월급 행의 새로운 값을 계산함으로써 구현되는, 월급 스칼라의 함유된 표 갱신을 도시한다.
도 2-4는 변경 기술자 콘텐트 및 그 적용의 효율의 윤곽을 그리는 도면을 포함하는, 본 발명에 따른 함유된 UPDATE문들의 세 예시를 도시한다.
도 5는 종래의 SQL 서버 시스템에서 종래의 UPDATE 명령을 사용하여 표의 정규 갱신을 구문분석, 최적화 및 실행하는 단계들을 도시한다
도 6은 본 발명의 함유된 갱신 사례를 도시하며, 이에 의해 본 발명에 따라 변경 기술자를 계산하도록 질의 실행 처리가 수정된다.
본 발명은 법정 요구들을 만족시킬 수 있도록 구체적으로 설명된다(35 U.S.C 1. 이하 참조). 그러나 설명 그 자체는 본 발명의 범위를 제한하려고 의도되지 않는다. 그보다는, 발명자들은, 본 특허의 유효기간동안 다른 현재 또는 미래의 기술들과 관련하여 사용될 수 있는 바와 같이 본 발명이 본원에서 설명된 단계들이나 요소들과 유사한 다른 단계들 또는 요소들을 포함하는 다른 방식으로 실시될 수 있다고 생각한다. 게다가, "단계"라는 용어가 본원에서 사용된 방법들의 다른 측면들을 의미함에도 불구하고, 개별적인 단계들의 특정한 순서가 명백히 필요한 것처럼 설명되는 경우를 제외하면, 이 용어는 본원에서 개시된 다양한 단계들 사이 또는 그들 간의 임의의 특별한 순서를 암시하는 것으로 해석되어서는 안된다.
데이터베이스 및 메모리 관리 기술분야의 당업자들은, 본 발명이 임의의 확장된 관계형 데이터베이스 시스템 - MYSQL과 같은 함유된 표들을 지원함 - 에 유용하다는 것을 이해할 것이다. 따라서, 본원에서 도 1-6에 관하여 기술된 본 발명은 모든 그러한 시스템에서 적용가능하다고 이해되어야 한다.
정의들:
복합 구조형: 복합 구조형은 필드들, 특성들 및 방법들의 세트로 구성된다. 각 필드 또는 특성은
- 스칼라 유형;
- 복합 구조형 자체;
- 각 요소가 복합 구조형인 다중 세트 중 하나일 수 있다.
복합 구조형들은 반복적이지 않도록 제한된다. 바꿔 말하면, 복합 구조형은 그것과 동일한 유형의 필드 특성을 포함할 수 없다. 본원에서 정의된 복합 구조형은 함유된 표들, 컬렉션값을 가지는 표들, 및 다른 다치원 데이터 구조들을 포함한다.
다중 세트: 다중 세트는 컬렉션의 유형이다. 이것은, 가능한 복제를 구비한 순서화되지 않은 객체들의 세트이다. 다중 세트는, 그것이 포함하는 요소들의 유형을 정의한다는 뜻에서 엄격한 유형이다(strongly typed). 본 문서는 T 유형의 요소들의 다중 세트를 나타내기 위해 Multiset<T> 라는 표기를 사용할 것이다.
복합 구조형들 및 다중 세트값을 가지는 유형들에서, 임의의 깊은 함유 레벨들을 갖는 것이 가능하다.
복합 구조형은 다음의 문법을 이용하여 정규적으로 표현될 수 있다. 이 예시에서, AddressType은 컬렉션값을 가지고 Multiset<PhoneNoType> 유형인, PhonNos라고 불리는 필드를 가진다 :
class AddressType {
SqlString Street,
SqlString City,
SqlString Country,
Multiset<PhoneNoType> PhoneNos
}
한편, PhoneNoType 은 다음과 같이 정의된다.
class PhoneNoType {
SqlString AreaCode,
SqlString Number,
SqlString Extension
}
다음의 표들은 위에서 정의된 유형들을 사용한다. 먼저 MULTISET 유형이 AddressType의 Multiset에 대하여 생성된다. 그 후 해당 유형은 고용자 표의 열을 정의하는데 사용된다 :
CREATE TYPE AddressesType AS MULTISET(AddressType)
CREATE TABLE Employees (
EmpID int,
FirstName varchar(30),
LastName varchar(30),
Salary int,
Addresses AddressesType
)
본 발명은 복합 구조의 표들(즉, 구조화된 열들 및 다중 세트값을 가지는 열들 모두를 포함하는 표)에 대한 데이터 수정 기능들을 제공하는 기술을 제공한다. 본 발명의 바람직한 실시예에서, 이러한 특성들은 관계형 데이터베이스에 저장된 데이터를 갱신하기 위한 SQL 서버 엔진의 일부분이다. 예를 들면, 본 발명은 1NF(또는 "평평한") 관계형 모델보다 더 복잡한 데이터 모델을 종종 갖는 애플리케이션들과 함께 효율적으로 사용된다. 모델링하는 데이터 유형들은 복합 내부 구조를 갖거나 및/또는 값들의 다중 세트들을 포함한다. 전형적으로, 그러한 애플리케이션 들은 플랫 표(flat table)들의 세트를 사용하여 해당 데이터를 모델링한다. 복합 구조형들 및 다중 세트들은 데이터의 논리적인 스키마가 원래의 데이터 모델에 더 자연스럽게 매핑되는 그런 데이터를 모델링하는 방식을 제공한다. 본 발명은 그러한 복합 구조형의 내부에 포함된 다중 세트들 안의 관계형 데이터를 갱신하기 위해 사용될 수 있다. 아래에서 더 자세하게 설명될 것처럼, 본 발명은 또한 SQL이 플랫 표들의 가장 외부 레벨에서 제공하는 표현력 및 풍부함의 레벨로 다중 세트 데이터를 수정하는 능력을 포함한다.
본 발명에 따르면, SQL문은 표의 컬렉션값을 가지는 행들(다중 세트들)에 대한 수정을 지원하도록 강화된다. 본 발명에 따르면, 표의 컬렉션값을 가지는 열들에 대한 수정을 지원하도록 강화된 SQL문은 UPDATE문이다. 종래의 UPDATE문의 보편적인 형식은 다음과 같은데, 여기서 <>로 둘러싸인 문법 요소들은 설명에서 나중에 확장되는 비단말요소들(non-terminals)이다.
UPDATE <target-table>
SET <scalar-column-modification1>,<scalar-column-modification>, ….
WHERE <search-condition>
여기서, <target-table>은 수정되는 표이고, <scalar-column-modification>은 스칼라값을 가지는 열의 수정을 지정하고 다음의 형태이다.
<target-column1> = <value-expression>
여기서, <target-column1>은 수정되는 열의 이름이고 <value-expression>은 <target-column1>이 수정되어야 하는 새로운 값을 공급하는 스칼라값을 가지는 표현이다.
본 발명에 따라 제안된 UPDATE문의 확장은 컬렉션값을 가지는 열들을 수정하는데 사용될 수 있는 SET절 내의 또 다른 종류의 수정(<collection-column-modification>)을 도입한다. <collection-column-modification>은 다음 형태들 중 하나다.
(UPDATE <컬렉션값을 가지는 열>
SET …
WHERE <search-condition>)
또는
(DELETE FROM <컬렉션값을 가지는 열>
WHERE …)
또는
(INSERT INTO <컬렉션값을 가지는 열>
VALUES (…)
)
바꿔 말하면, <collection-column-modification>은 외부 표에 대한 INSERT/UPDATE/DELETE와 비슷한 INSERT/UPDATE/DELETE 문법을 사용한다. 내부 UPDATE문의 SET절은 차례로 외부 컬렉션값을 가지는 열 내의 컬렉션값을 가지는 열들에 대한 수정들을 지정할 수 있고, 그래서 동일하게, 반복적으로 함유된 문법적 접근을 사용하여 컬렉션값을 가지는 열들에 대한, 임의의 함유 레벨에서의 수정을 가능하게 한다. 본질적으로, 컬렉션값을 가지는 열들에서의 수정은 INSERT/UPDATE/DELETE를 외부 UPDATE문의 SET절에 포함함으로써 외부 표에서 UPDATE들과 같이 모델링된다.
상기한 바와 같이, 본 발명에 따르면, 복합 구조, 객체값을 가지거나 또는 컬렉션값을 가지는 열에서 이루어진 변경의 완벽한 기술을 제공하는 하나의 값으로 스칼라 및 컬렉션값을 갖는 모든 변경들을 모으는 데이터 구조가 "변경 기술자(change descriptor)"라고 언급된다. 변경 기술자는 복합 구조형의 계층구조에서 변경할 대상 및 장소를 UPDATE 명령에 알려주고 종래의 스칼라로 패키지되어서 UPDATE 명령이 지정된 계층적 레벨에서 스칼라들을 갱신하도록 한다. 변경 기술자는, UPDATE 연산의 SET 절에 의해 영향받는 스칼라값을 가지거나 또는 컬렉션값을 가지는 필드들에 의해 영향받는 색인들만 갱신하고 또한 그 UPDATE 연산에 의해 수정되는 컬렉션의 실제 요소들에 대응하는 그 색인의 행들만 갱신함으로써 효율적인 색인 관리 알고리듬의 구현을 가능하게 한다. 그래서 본 발명은 스칼라가 아니라 오히려 계층적인 구조를 갖는 표의 열들에 대해 복합적이고 부분적인 갱신들을 구 현하기 위해 변경 기술자를 사용한다.
변경 기술자의 구현의 예시들은 스칼라값을 가지는 열들인 FirstName, LastName 및 EmployeeID, Salary 및 주소 세트를 저장하는 Addresses라 불리는 컬렉션값을 가지는 열을 사용하여, Employees 표에 대한 갱신에 관해서 아래에 제공될 것이다. 컬렉션값을 가지는 열의 각 주소는 다음의 스칼라값을 가지는 열들: Street, City, State, ZipCode, 및 PhoneNos라 불리는 컬렉션값을 가지는 열을 가진다. 예를 들면:
Employees
EmployeeID
FirstName
LastName
Salary
Addresses
Street
City
State
ZipCode
PhoneNos
AreaCode
Number
Extension
종래의 UPDATE문들의 문법은 표의 열들에 그들의 새로운 값을 할당함으로써 표의 열들을 전체적으로 수정하는 것만 허용한다. 한 예시로, 만약 표 "Employees" 안의 고용인들(1234 및 1235)이 10%의 인상을 받아야 한다면, 그 후 이 작업은 다음의 종래의 문법으로 구현될 수 있다:
UPDATE Employees
SET Salary=Salary*1.1
WHERE EmpID=1234 OR EmpID=1235
그러한 UPDATE들은 두 단계들을 이용하여 처리된다. 제1 단계 동안 변경될 행들이 나열되고 수정될 열들에 대한 새로운 값들이 계산된다. 이 처리는 본원에서 델타 스트림(delta stream)이라고 불리는, 수행될 변경들을 표현하는 데이터의 흐름을 생산한다. 제2 단계에서, 열들은 델타 스트림에 의하여 수정된다.
한편, 본 발명에 따르면, UPDATE문들은 두 단계들을 사용하는 동일한 기구의 변형을 사용하여 복합 구조의 컬렉션값을 가지는 열의 부분들을 수정한다. 본 발명에 따르면, 제1 단계에서 델타 스트림은 컬렉션값을 가지는 열에 대한 모든 변경을 수집하는 새로운 데이터 구조를 사용한다. 도 1에 예시되었듯이, 갱신의 제1 단계는 질의에서의 술어를 만족시키는 행들을 나열하고 그들 각각에 대한 Salary 열의 새로운 값을 계산하는 것에 의해 구현될 것이다. 이것은 갱신에 대한 델타 스트림을 생산할 것이다. 제2 단계는 이전에 수집된 변경들을 수행하도록 표 자체에 델타 스트림을 적용하는 단계를 포함한다.
본원에 설명되었듯이, 변경 기술자 기술은, 위에서 언급된 델타 스트림의 개념을 확장하여, 복합 구조 또는 컬렉션값을 가지는 열들에 대한 완전한 변경들보다는 미세한 변경들을 구현하는 방식이다. 함유된 갱신의 일부로서 컬렉션값을 가지는 열에 적용될 변경들의 세트는 본질적으로 델타 스트림으로서 보여질 수 있다. 이러한 델타 스트림은 표에 대한 변경들을 표현하는 최상위 델타 스트림 안으로 함유된다. 컬렉션값을 가지는 열들 안에 담긴, 컬렉션값을 가지는 열들에 대한 변경들은 더 함유된 델타 스트림을 써서 다시 표현될 수 있다.
변경 기술자는 함유된 델타 스트림들의 간결한 표현이자 스칼라 표현이다. 스칼라 값으로 표현하는 것은, 최상위 표 레벨의 델타 스트림의 생성동안 정규적인 표의 열들의 다른 새로운 값들과 함께 무결정성으로 수집되는 것을 허용한다. 이것은 스칼라 및 다중레벨로 함유된 갱신들이 동일한 문에서 서로 섞이도록 허용한다.
갱신의 제2 단계의 구현은, 변경 기술자가 컬렉션값을 갖는 열들의 완전한 새로운 값을 포함하지 않고, 오히려 적용될 미세한 변경들의 세트를 포함한다는 것을 이해한다. 구현은 또한 컬렉션값을 가지는 열의 저장 형식을 알고, 변경 기술자 안에 담긴 정보를 물리적 작업들로 번역할 수 있다. 그래서, 변경 기술자 형식은 다소 유연하고, 구현에 의존적이지 않으며, 컬렉션값을 가지는 열들 이외에 XML, 객체 유형들 같은 다양한 다른 종류의 복합 구조들과 함께 사용될 수 있다.
도 2-4는 함유된 갱신문들의 세 예시들을 도시하고, 변경 기술자 콘텐트 및 그것의 적용이 갖는 효율의 윤곽을 그리는, 대응하는 도면들을 도시한다. 제1 문(도 2)은 두 고용인의 기록들에 대해 동시에 10% 인상시키고 워싱톤 주의 주소에 대한 우편번호를 갱신하는 변경을 수행할 것이다.
UPDATE Employees
SET Salary = Salary * 1.1,
(UPDATE Addresses A(addr)
SET addr.ZipCode = ‘98074’,
WHERE addr.State = ‘WA’)
WHERE EmpID = 1234 OR EmpID = 1235
제2 문(도 3)은 유사하지만, 갱신되는 주소들 안에 담긴 몇몇 전화번호들 안의 AreaCode 또한 갱신한다. 이것은 스칼라 값들을 동일한 문의 계층 구조의 3 레벨로 수정할 수 있는 능력을 보여준다(Salary는 레벨 1, ZipCode는 레벨 2, AreaCode는 레벨 3이다).
UPDATE Employees
SET Salary = Salary * 1.1,
(UPDATE Addresses A(addr)
SET addr.ZipCode = ‘98074’,
(UPDATE addr.PhoneNos P(phone)
SET phone.AreaCode = ‘425’
WHERE phone.AreaCode = ‘206’)
WHERE addr.State = ‘WA’)
WHERE EmpID = 1234 OR EmpID = 1235
3번째 예시(도 4)에서, 인상과 함께, 두 고용인들은 시애틀에 있는 그들의 주소들을 제거당한다.
UPDATE Employees
SET Salary = Salary * 1.1,
(DELETE FROM Addresses
WHERE City = ‘Seattle’)
WHERE EmpID = 1234 OR EmpID = 1235
변경 기술자들의 코드 구현
본 발명에 따라 변경 기술자들을 구현하기 위한 코드는 변경 기술자들을 만들고 변경 기술자들을 소비하도록 작용한다. 변경 기술자들은 계층구조의 바닥에서부터 위로 만들어지고, 변경 기술자들을 수신하는 작업자들은 위에서 자세하게 설명된 문법에 따라 그들을 분석한다. 문법은 계층으로 함유된 표 구조 안의 갱신 위치를 지정하고 다중값을 가지는 저장된 데이터의 계층적 기록을 유지한다. 변경 기술자가 스칼라 정보와 마찬가지로 위치 정보도 포함하기 때문에, 셀 안의 계층적 데이터는 위의 예시들에 있는 질의 실행 알고리듬내의 단일 단계를 사용하여 갱신될 수 있다.
도 5 및 6은 위의 도 2-4의 예시들에 있는 본 발명의 변경 기술자들의 구현을 도시한다. 도 5는 종래의 SQL 서버 시스템에서 종래의 UPDATE 명령을 사용하여 셀의 정규적인 갱신을 분석, 최적화 및 실행하는 단계들을 도시한다. 도 6은 질의 실행 처리가 위의 문법에 따라 변경 기술자를 계산하도록 수정되는, 본 발명의 함유된 갱신 사례를 도시한다. 도시되었듯이, 관계형 데이터베이스 시스템은 수신된 SQL문을 분석하고 사용자가 데이터베이스에 의해 무엇(예를 들면, 데이터의 삽입, 갱신 또는 삭제)이 행해지기를 요구하는지에 대한 논리적인 설명을 생산하는 SQL 파서 및 본 기술분야에서 알려진 기술들을 사용하여 실행 알고리듬을 생산하는 질의 최적화기를 포함한다. 본 발명에 따르면, 도 5의 종래의 질의 실행은 변경 기술자를 계산하는 단계를 더 포함하도록 수정되어 함유된 표들의 각 변경이 변경 기술자에 제시되게 한다. 또한, 본 발명에 따른 질의 실행 엔진은 변경 기술자를 판독하고 변경 기술자에 의해 기술된대로 변경들을 표에 적용하도록 개선된다. 도 6의 예시에서, 월급 이외에 주소가 갱신된다. 일단 변경들이 모아지면, 그들은 본 발명의 SQL 서버 시스템과 연관된 데이터베이스의 Employees 표(도시되지 않음)에 적용된다.
본 기술분야의 당업자들은 도 6으로부터 본 발명의 변경 기술자가 UPDATE 작업의 SET 절에 의해 다양한 함유 레벨들로 수정되는 특정한 스칼라 필드들에 의해 영향받는 색인들만 갱신하고 또한 그 UPDATE 작업에 의해 수정되는 실제 요소들에 대응하는 색인의 행들만 갱신함으로써 효율적인 색인 관리 알고리듬 구현을 가능하게 한다는 것을 이해할 것이다. 변경 기술자는 또한 변경들의 계산을 그들의 적용으로부터 분리시키는, 즉 갱신문 그 자체의 부작용을 방지하는, (할로윈 보호라고 알려진) 이점을 가진다. 만약 변경의 계산과 적용이 두 개의 독립된 단계로 강력하게 분리되지 않으면 데이터에 대한 중간 변경들을 제2 단계가 생산했을 수 있었던 데이터로 본 결과 제1 단계가 부적절하게 영향을 받을 수 있기 때문에 이것이 일어날 수 있다.
본 기술분야의 당업자들은 또한 본 발명이 데이터베이스 관리 시스템 내에서 사용자가 정의한 유형의 필드들로 많은 데이터 유형들을 저장하는데 특별히 유리하다는 것을 이해할 것이다. 넓은 진보성 있는 개념에서 벗어나지 않고 위에 설명된 실시예들에 변화가 이루어질 수 있다는 것이 이해된다. 예를 들면, 본 발명의 실시예가 Microsoft사의 SQL SERVER 데이터베이스 관리 시스템을 배경으로 위에 설명되었으나, 본 발명이 SQL UPDATE 문들의 사용을 지원하는 임의의 데이터베이스 관리 시스템(예를 들면, 객체 지향 데이터베이스, XML 데이터베이스 등)에도 포함될 수 있다는 것이 이해된다. 게다가, 본 발명의 어떤 측면들은 SQL Sever 같은 관계형 데이터베이스 시스템을 배경에 포함된 것처럼 설명되었으나, 본 발명의 그러한 측면들은 그러한 환경에서의 구현에 반드시 한정될 필요가 없다는 것이 이해된다. 따라서, 본 발명은 개시된 특정한 실시예들에 한정되지 않고, 첨부된 청구항들에 의해 정의된 본 발명의 사상과 범위 내의 모든 수정들을 포괄하도록 의도되는 것으로 이해해야 한다.

Claims (22)

  1. 관계형 데이터베이스 시스템에서 복합 구조형 열의 값들을 갱신하는 방법으로서,
    복합 구조형 열의 값들에 대한 수정들을, 상기 복합 구조 열의 계층구조의 임의의 레벨에서 상기 값들에 대한 변경들을 모으는 데이터 구조를 사용하여 표현하는 단계; 및
    상기 복합 구조형 열 내의 어느 값들이 상기 집합된 변경들로 갱신될 것인지를 판정하기 위하여 상기 데이터베이스 상의 데이터 수정문에 응답하여 상기 데이터 구조를 계산하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복합 구조형 열의 상기 계층구조 내의 서로 다른 레벨들에서 다수의 스칼라 값들을 동시에 갱신하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 관계형 데이터베이스 시스템의 복합 구조형 열 내의 복합 구조형 값과 함께 표 내의 스칼라 값을 동시에 갱신하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    UPDATE문의 SET절 안에 INSERT/UPDATE/DELETE문을 포함하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 복합 구조형 열의 상기 계층구조 내의 각 층에 대응하는 최외곽 UPDATE문 안에 복수의 함유된 SET 절들을 포함하는 단계를 더 포함하는 방법.
  6. 제4항에 있어서,
    상기 계산 단계는 상기 UPDATE문의 상기 SET절에 의해 다양한 함유레벨에서 수정된 특정한 스칼라 필드들에 의해 영향받는 색인들만 갱신하는 단계와, 상기 UPDATE문에 의해 수정되는 실제 값들에 대응하는 상기 색인들의 행만을 갱신하는 단계들을 포함하는 방법.
  7. 제1항에 있어서,
    상기 복합 구조형 열에 대해 상기 집합된 변경들을 적용하는 단계를 더 포함하고, 상기 적용 단계는 할로윈 보호(Halloween Protection)를 제공하도록 상기 계산 단계와 분리되는 방법.
  8. 적어도 하나의 복합 구조형 열의 값들을 저장하고 갱신하기 위한 데이터베이 스 수정문들에 응답하는 관계형 데이터베이스 시스템으로서,
    데이터베이스 수정문을 분석하고 상기 데이터베이스 수정문에 의해 제안된 상기 데이터베이스에 대한 변경들의 기술(description)을 생산하는 파서(parser);
    상기 데이터베이스 수정문을 구현하기 위한 실행 알고리듬을 생산하는 질의 최적화기; 및
    복합 구조형 열 안의 어떤 값들이 갱신될지를 판정하기 위해 상기 데이터베이스 수정문의 데이터 구조를 계산하기 위한 실행 알고리듬을 사용하는 질의 실행 엔진
    을 포함하고,
    상기 데이터 구조는 상기 복합 구조형 열의 값들을, 상기 복합 구조형 열의 계층구조의 임의의 레벨에서 상기 값들에 대한 변경들의 집합으로서 표현하고, 상기 질의 실행 엔진은 갱신될 상기 복합 구조형 열의 상기 값들에 상기 변경들을 적용하는 시스템.
  9. 제8항에 있어서,
    상기 질의 실행 엔진은 상기 복합 구조형 열의 상기 계층구조 내의 서로 다른 레벨들에서 다수의 스칼라 값들을 동시에 갱신하는 시스템.
  10. 제8항에 있어서,
    상기 질의 실행 엔진은 상기 관계형 데이터베이스 시스템의 복합 구조형 열 안의 복합 구조형 값과 함께 표 내의 스칼라 값을 동시에 갱신하는 시스템.
  11. 제8항에 있어서,
    상기 파서는 데이터베이스 UPDATE문의 SET절을 분석하는 시스템.
  12. 제11항에 있어서,
    상기 파서는 상기 복합 구조형 열의 상기 계층구조 내의 각 레벨에 대응하는 최외곽 UPDATE문 내의 복수의 함유된 SET절들 안의 UPDATE문을 분석하는 시스템.
  13. 제11항에 있어서,
    상기 질의 실행 엔진은 상기 UPDATE문의 상기 SET절에 의해 다양한 함유레벨에서 수정된 특정한 스칼라 필드들에 의해 영향받는 색인들만 갱신하고, 상기 UPDATE문에 의해 수정되는 실제 값들에 대응하는 상기 색인의 행들만 갱신하는 시스템.
  14. 제8항에 있어서,
    상기 질의 실행 엔진은, 할로윈 보호를 제공하도록 상기 데이터 구조의 상기 계산과 분리된 상기 복합 구조형 열에 상기 집합된 변경들을 적용하는 시스템.
  15. 관계형 데이터베이스 시스템 내의 컬렉션 값을 가지는 열의 값들을 갱신하는 방법으로서,
    상기 컬렉션값을 가지는 열 안의 상기 값들에 대한 변경들을 모으는 데이터 구조를 사용하여 상기 컬렉션값을 가지는 열의 값들에 대한 수정들을 나타내는 단계; 및
    상기 컬렉션값을 가지는 열의 어떤 값들을 상기 집합된 변경들로 갱신할지를 판정하기 위해 상기 데이터베이스 상의 데이터 수정문에 응답하여 상기 데이터 구조를 계산하는 단계
    를 포함하는 방법.
  16. 제15항에 있어서,
    상기 컬렉션값을 가지는 열 안의 서로 다른 레벨들에서 다수의 스칼라 값들을 동시에 갱신하는 단계를 더 포함하는 방법.
  17. 제15항에 있어서,
    상기 관계형 데이터베이스 시스템의 컬렉션값을 가지는 열 안의 값과 함께 표 내의 스칼라 값을 동시에 갱신하는 단계를 더 포함하는 방법.
  18. 적어도 하나의 컬렉션값을 가지는 열의 값들을 저장하고 갱신하기 위한 데이터베이스 수정문들에 응답하는 관계형 데이터베이스 시스템으로서,
    데이터베이스 수정문을 분석하고 상기 데이터베이스 수정문에 의해 제안된
    상기 데이터베이스에 대한 변경들의 기술을 생산하는 파서(parser);
    상기 데이터베이스 수정문을 구현하기 위한 실행 알고리듬을 생산하는 질의
    최적화기; 및
    상기 컬렉션값을 가지는 열 안의 어떤 값들이 갱신될지를 판정하기 위해 상기 데이터베이스 수정문의 데이터 구조를 계산하기 위한 상기 실행 알고리듬을 사용하는 질의 실행 엔진
    을 포함하고,
    상기 데이터 구조는 상기 컬렉션값을 가지는 열의 값들을, 상기 컬렉션값을 가지는 열 내의 상기 값들에 대한 변경들의 집합으로 표현하고, 상기 질의 실행 엔진은 갱신될 상기 컬렉션값을 가지는 열의 상기 값들에 대해 상기 변경들을 적용하는 시스템.
  19. 제18항에 있어서,
    상기 파서는 데이터베이스 UPDATE문의 SET절을 분석하는 시스템.
  20. 제19항에 있어서,
    상기 파서는 상기 컬렉션값을 가지는 열의 각 레벨에 대응하는 최외곽 UPDATE문 내의 복수의 함유된 SET절들 안의 UPDATE문을 분석하는 시스템.
  21. 제18항에 있어서,
    상기 질의 실행 엔진은 상기 UPDATE문의 상기 SET절에 의해 다양한 함유레벨에서 수정된 특정한 스칼라 필드들에 의해 영향받는 색인들만 갱신하고, 상기 UPDATE문에 의해 수정되는 실제 값들에 대응하는 상기 색인의 행들만 갱신하는 시스템.
  22. 제18항에 있어서,
    상기 질의 실행 엔진은, 할로윈 보호를 제공하도록 상기 데이터 구조의 상기 계산과 분리된 상기 컬렉션값을 가지는 열에 상기 집합된 변경들을 적용하는 시스템.
KR1020057012345A 2003-10-24 2004-07-29 컬렉션값을 가지는 열 및 스칼라값을 가지는 열을 단일문으로 수정하기 위한 sql 언어 확장 KR101085686B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/693,302 US7433886B2 (en) 2003-10-24 2003-10-24 SQL language extensions for modifying collection-valued and scalar valued columns in a single statement
US10/693,302 2003-10-24
PCT/US2004/024522 WO2005045582A2 (en) 2003-10-24 2004-07-29 Modifying collection-value and scalar valued columns in a single statement

Publications (2)

Publication Number Publication Date
KR20060112191A true KR20060112191A (ko) 2006-10-31
KR101085686B1 KR101085686B1 (ko) 2011-11-22

Family

ID=34522359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057012345A KR101085686B1 (ko) 2003-10-24 2004-07-29 컬렉션값을 가지는 열 및 스칼라값을 가지는 열을 단일문으로 수정하기 위한 sql 언어 확장

Country Status (6)

Country Link
US (1) US7433886B2 (ko)
EP (1) EP1597655A4 (ko)
JP (1) JP4604041B2 (ko)
KR (1) KR101085686B1 (ko)
CN (1) CN100474286C (ko)
WO (1) WO2005045582A2 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890532B2 (en) * 2004-12-15 2011-02-15 Microsoft Corporation Complex data access
US7624374B2 (en) * 2005-08-30 2009-11-24 Microsoft Corporation Readers and scanner design pattern
US20070174305A1 (en) * 2006-01-06 2007-07-26 International Business Machines Corporation Method to reduce the number of copies of values in procedural language
US8656272B2 (en) * 2006-04-28 2014-02-18 Microsoft Corporation Persisting instance-level report customizations
US20080071730A1 (en) * 2006-09-14 2008-03-20 Roland Barcia Method and Apparatus to Calculate Relational Database Derived Fields During Data Modification
US8387004B2 (en) * 2007-02-09 2013-02-26 Microsoft Corporation Compositional application programming interface and literal syntax
US8595231B2 (en) * 2007-04-26 2013-11-26 International Business Machines Corporation Ruleset generation for multiple entities with multiple data values per attribute
US7676525B2 (en) * 2007-07-02 2010-03-09 Microsoft Corporation Efficient query processing of merge statement
US7974981B2 (en) 2007-07-19 2011-07-05 Microsoft Corporation Multi-value property storage and query support
US8200668B2 (en) * 2008-06-24 2012-06-12 Microsoft Corporation Scalar representation for a logical group of columns in relational databases
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9727606B2 (en) 2012-08-20 2017-08-08 Oracle International Corporation Hardware implementation of the filter/project operations
US9563658B2 (en) 2012-08-20 2017-02-07 Oracle International Corporation Hardware implementation of the aggregation/group by operation: hash-table method
US9600522B2 (en) * 2012-08-20 2017-03-21 Oracle International Corporation Hardware implementation of the aggregation/group by operation: filter method
US8996544B2 (en) 2012-09-28 2015-03-31 Oracle International Corporation Pruning disk blocks of a clustered table in a relational database management system
US9507825B2 (en) 2012-09-28 2016-11-29 Oracle International Corporation Techniques for partition pruning based on aggregated zone map information
US9430550B2 (en) 2012-09-28 2016-08-30 Oracle International Corporation Clustering a table in a relational database management system
US10642837B2 (en) 2013-03-15 2020-05-05 Oracle International Corporation Relocating derived cache during data rebalance to maintain application performance
CN103177123B (zh) * 2013-04-15 2016-05-11 昆明理工大学 一种提高数据库检索信息相关度的方法
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
US10025823B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US10067954B2 (en) 2015-07-22 2018-09-04 Oracle International Corporation Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10656964B2 (en) 2017-05-16 2020-05-19 Oracle International Corporation Dynamic parallelization of a calculation process
US10719372B2 (en) 2017-05-22 2020-07-21 Oracle International Corporation Dynamic parallelization of data loading
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US11748352B2 (en) * 2021-08-26 2023-09-05 International Business Machines Corporation Dynamical database system resource balance

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412804A (en) 1992-04-30 1995-05-02 Oracle Corporation Extending the semantics of the outer join operator for un-nesting queries to a data base
US6016497A (en) * 1997-12-24 2000-01-18 Microsoft Corporation Methods and system for storing and accessing embedded information in object-relational databases
US6460043B1 (en) 1998-02-04 2002-10-01 Microsoft Corporation Method and apparatus for operating on data with a conceptual data manipulation language
US6122644A (en) * 1998-07-01 2000-09-19 Microsoft Corporation System for halloween protection in a database system
JP4346158B2 (ja) * 1999-06-28 2009-10-21 株式会社東芝 データ生成装置及びプログラムを記憶したコンピュータ読み取り可能な記憶媒体
US6484179B1 (en) 1999-10-25 2002-11-19 Oracle Corporation Storing multidimensional data in a relational database management system
US6564203B1 (en) * 2000-02-24 2003-05-13 Oracle Corporation Defining instead-of triggers over nested collection columns of views
US6493708B1 (en) 2000-03-02 2002-12-10 Oracle Corporation Techniques for handling function-defined hierarchical dimensions
CA2427354A1 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US6892204B2 (en) * 2001-04-16 2005-05-10 Science Applications International Corporation Spatially integrated relational database model with dynamic segmentation (SIR-DBMS)

Also Published As

Publication number Publication date
WO2005045582A2 (en) 2005-05-19
US7433886B2 (en) 2008-10-07
KR101085686B1 (ko) 2011-11-22
EP1597655A2 (en) 2005-11-23
JP4604041B2 (ja) 2010-12-22
CN100474286C (zh) 2009-04-01
JP2007509422A (ja) 2007-04-12
US20050091256A1 (en) 2005-04-28
CN1875358A (zh) 2006-12-06
EP1597655A4 (en) 2008-12-10
WO2005045582A3 (en) 2005-12-29

Similar Documents

Publication Publication Date Title
KR101085686B1 (ko) 컬렉션값을 가지는 열 및 스칼라값을 가지는 열을 단일문으로 수정하기 위한 sql 언어 확장
US5893104A (en) Method and system for processing queries in a database system using index structures that are not native to the database system
US5778355A (en) Database method and apparatus for interactively retrieving data members and related members from a collection of data
US6374252B1 (en) Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
US5734887A (en) Method and apparatus for logical data access to a physical relational database
US5511186A (en) System and methods for performing multi-source searches over heterogeneous databases
US8037059B2 (en) Implementing aggregation combination using aggregate depth lists and cube aggregation conversion to rollup aggregation for optimizing query processing
US10423623B2 (en) Hierarchy modeling and query
US7509332B1 (en) Customized indexes for user defined data types
JP3492246B2 (ja) Xmlデータ検索処理方法および検索処理システム
CN113590894A (zh) 一种动态高效的遥感影像元数据入库检索方法
US7287216B1 (en) Dynamic XML processing system
US20080215618A1 (en) Natural Language Interaction with Large Databases
Yannakoudakis The architectural logic of database systems
Carlis et al. A descriptive model of physical database design problems and solutions
KR100666942B1 (ko) 관계형 dbms를 이용한 xml 데이터 관리 방법
Xu Efficiency in the Columbia database query optimizer
Mazón et al. Improving the development of data warehouses by enriching dimension hierarchies with WordNet
US10025588B1 (en) Parsing of database queries containing clauses specifying methods of user-defined data types
JP3980326B2 (ja) データ管理方法およびコンピュータ読み取り可能な記録媒体
Tankoano Providing in RDBMSs the Flexibility to Work with Various Non-Relational Data Models
Schmidt et al. Basic Building Blocks for Column-Stores
KR100456027B1 (ko) 지-에프큐엘을 이용한 이비엑스엠엘 필터질의 변환 장치및 방법
Yin et al. Algebra-based optimization of XML-extended OLAP queries
Teguiak et al. Mql: A mapping management language for model-based databases

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: 20141017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8