Source: https://patents.google.com/patent/KR101440615B1/en
Timestamp: 2018-10-17 15:07:07
Document Index: 353906090

Matched Legal Cases: ['Application No. 10', 'Application No. 10', 'Application No. 10', 'Application No. 10', 'Application No. 10', 'Application No. 10', 'Application No. 10', 'Application No. 10', '§6', '§6', '§8', '§8']

KR101440615B1 - Systems and methods for supporting inheritance for user-defined types - Google Patents
Systems and methods for supporting inheritance for user-defined types Download PDF
KR101440615B1
KR101440615B1 KR20057010948A KR20057010948A KR101440615B1 KR 101440615 B1 KR101440615 B1 KR 101440615B1 KR 20057010948 A KR20057010948 A KR 20057010948A KR 20057010948 A KR20057010948 A KR 20057010948A KR 101440615 B1 KR101440615 B1 KR 101440615B1
KR20057010948A
KR20060130480A (en )
베이심 세즈긴
라마찬드란 벤카테쉬
웨이 유
본 발명의 다양한 실시예들은 그 자체와 다른 사용자 정의 타입(서브타입 또는 슈퍼타입/베이스 타입 중 어느 하나)간의 계승 관계를 기술하기 위한 정보는 물론 그 구조를 설명하기 위한 정보를 포함하는 적어도 하나의 사용자 정의 타입에 대해 확장가능한 타입 시스템을 가진 데이터베이스에 관한 것이다. Various embodiments of the invention at least one of including information for describing the information as well as the structure for describing the inheritance relationship between itself and another user-defined type (subtype or supertype / base type any one of) It relates to the database with an extensible type system for user-defined types. 임의 실시예들의 경우, 사용자 정의 타입은 예를 들면, CLR(Common Language Runtime) 명령문, C, C++ 및 C#("C-sharp")의 명령문 및/또는 버추얼 베이직 명령문과 같은 SQL(Squential Quary Language) 명령문 이외의 것으로 정의된다. In the case of certain embodiments, user-defined types, e.g., CLR (Common Language Runtime) statements, C, C ++ and C # ( "C-sharp") the statement and / or SQL (Squential Quary Language), such as a virtual basic statement of It is defined as a non-statement. 소정 경우에, 몇몇 실시예들은 데이터베이스가 상기 데이터베이스를 이용하여 사용자 정의 타입들의 명백한 등록에 의해 2개의 사용자 정의 타입들간의 계승 관계를 인식하고 있는 시스템에 관한 것이다. In some cases, some embodiments relate to a system in which the database is using the database recognizes the second succession among the user-defined type related by explicit registration of a user-defined type.
사용자 정의 타입, 데이터베이서, 서브타입, 슈퍼타입, 베이스타입 User-defined types, the database server, a sub-type, super type, base type
사용자 정의 타입들에 대한 계승을 지원하기 위한 시스템 및 방법{SYSTEMS AND METHODS FOR SUPPORTING INHERITANCE FOR USER-DEFINED TYPES} A system and method for supporting a succession for the user-defined type {SYSTEMS AND METHODS FOR SUPPORTING INHERITANCE FOR USER-DEFINED TYPES}
본 출원은 2004년 2월 10일자로 출원된 일부 계속 미국 특허 출원 제10/775,282호(사건 관리번호 MSFT-3029)의 우선권을 주장하는, 2004년 5월 3일자로 출원된 미국 출원 제10/837,929호에 대한 우선권을 주장하며, 그 개시는 전체적으로 참조로서 본 명세서에 결합된다. This application is filed in May that claimed some filed in February 2004 10 Date of continued US Patent Application priority of the No. 10 / 775,282 call (incident management number MSFT-3029), 2004 February 3 US Application No. 10 / claims priority to, and No. 837 929, the disclosure of which is coupled herein by reference in its entirety.
본 출원은 다음의 공통으로 할당된 출원들에 개시된 발명에 대한 과제와 관련되며, 그 내용은 전체로서 본 출원에 결합된다: 2003년 8월 21일자로 출원된 "SYSTEMS AND METHODS FOR REPRESENTING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM BUT INDEPENENT OF PHYSICAL REPRESENTATION"이라는 표제의 미국특허출원 제10/647,058(사건 관리번호 MSFT-1748); The present application is disclosed in the application is assigned in common in the following related to the assignment of the invention, the content of which is coupled to this application as a whole: filed August 21, 2003, "SYSTEMS AND METHODS FOR REPRESENTING UNITS OF INFORMATION MANAGEABLE BY a HARDWARE / SOFTWARE INTERFACE SYSTEM BUT INDEPENENT oF PHYSICAL REPRESENTATION "title of the U.S. Patent Application No. 10/647 058 (case Control number MSFT-1748); 2003년 8월 21일자로 출원된 "SYSTEMS AND METHODS FOR SEPARATING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICAL ORGANIZATION"이라는 표제의 미국특허출원 제10/646,941호(사건 관리번호 MSFT-1749); In August 2003, filed May 21, the date "SYSTEMS AND METHODS FOR SEPARATING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICAL ORGANIZATION" of US Patent Application No. 10 / 646,941 Issue of the title (case control number MSFT-1749) .; 2003년 8월 21일자로 출원된 "SYSTEMS AND MEHTODS FOR THE IMPLEMENTATION OF A BASE SCHEMA FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM"이라는 표제의 미국특허출원 제10/646,940호( 사건 관리번호 MSFT-1750); In August 2003, filed May 21, the date "SYSTEMS AND MEHTODS FOR THE IMPLEMENTATION OF A BASE SCHEMA FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM" heading in the U.S. Patent Application No. 10 / 646,940 No. of (incident management number MSFT -1750); 2003년 8월 21일자로 출원된 "SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A CORE SCHEMA FOR PROVIDING A TOP-LEVEL STRUCTURE FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY HARDWARE/SOFTWARE INTERFACE SYSTEM"이라는 표제의 미국특허출원 제10/646,632호(사건 관리 번호 MSFT-1751); In August 2003, filed May 21, the date the United States patent application entitled "SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A CORE SCHEMA FOR PROVIDING A TOP-LEVEL STRUCTURE FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY HARDWARE / SOFTWARE INTERFACE SYSTEM" No. 10 / 646,632 call (incident management number MSFT-1751); 2003년 8월 21일자로 출원된 "SYSTEMS AND METHOD FOR REPRESENTING RELATIONSHIPS BETWEEN UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM"이라는 표제의 미국특허출원 제10/646,645호(사건 관리번호 MSFT-1752); In August 2003, it filed May 21, the date "SYSTEMS AND METHOD FOR REPRESENTING RELATIONSHIPS BETWEEN UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM" heading in the U.S. Patent Application No. 10 / 646,645 No. of (incident management number MSFT-1752); 2003년 8월 21일자로 출원된 "SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM"이라는 표제의 미국특허출원 제10/646,575호(사건 관리번호 MSFT-2733); In August 2003, it filed May 21, the date "SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM" of US Patent Application No. 10 / 646,575 No. of titles (case control number MSFT-2733); 2003년 8월 21일자로 출원된 "STORAGE PLATFORM FOR ORGANIZING, SEARCHING, AND SHARING DATA"라는 표제의 미국특허출원 제10/646,646호(사건 관리번호 MSFT-2734); In August 2003, it filed May 21, the date "STORAGE PLATFORM FOR ORGANIZING, SEARCHING, AND SHARING DATA" the title of US Patent Application No. 10 / 646,646 No. of (incident management number MSFT-2734); 2003년 8월 21일자로 출원된 "SYSTEMS AND METHODS FOR DATA MODELING IN AN ITEM-BASED STORAGE PLATFORM"이라는 표제의 미국특허출원 제10/646.580호(사건 관리번호 MSFT-2735). In August 2003, it filed May 21, the date "SYSTEMS AND METHODS FOR DATA MODELING IN AN ITEM-BASED STORAGE PLATFORM" of US Patent Application No. 10 / 646.580 of title No. (case control number MSFT-2735).
본 발명은 컴퓨터 시스템에서의 데이터 저장에 관한 것으로, 특히 UDT들이 특정 계약을 수행하는 관리 타입을 등록함으로써 데이터 저장의 스칼라 타입 시스템(들)을 연장하는 관련 데이터베이스 엔진들 및 파일 시스템들과 관련하여 사용되는 확장가능한 메카니즘인 데이터베이스 시스템내의 사용자 정의 타입들(UDTs)에 대한 계승을 제공하기 위한 시스템들 및 방법들에 관한 것이다. The present invention is used to relate to data storage in a computer system, in particular UDT are associated with the relational database engine and file system to extend the scalar type system (s) of the register by a data storage administrative type to perform a specific contract It relates to systems and methods for providing a succession of the user-defined types (UDTs) within the database system, expandable mechanism.
MICROSOFT SQL SERVER는 광대한 관리 및 개발 도구들, 강력한 추출, 변형, 및 로딩(ETL) 도구, 비지니스 지능 및 분석 서비스 및 다른 성능을 제공하는 포괄적인 데이터베이스 관리 플랫폼이다. MICROSOFT SQL SERVER is a comprehensive database management platform that delivers the extensive management and development tools, a powerful extraction, transformation, and loading (ETL) tool, business intelligence and analytics and other capabilities. 다른 개선사항 중에는, MICROSOFT WINDOWS.NET 프레임워크 공통 언어 런타임(CLR)이 최근에 SQL SERVER 데이터베이스에 통합되었다. Among other improvements, MICROSOFT WINDOWS.NET Framework common language runtime (CLR) was recently integrated into the SQL SERVER database.
CLR은 MICROSOFT.NET 프레임워크의 핵심이며, 모든 .NET 코드에 대한 실행 환경을 제공한다. CLR is the heart of MICROSOFT.NET framework provides an execution environment for all .NET code. 따라서, CLR내에서 실행되는 코드는 "관리 코드(magaged code)"로서 참조된다. Thus, the code that runs within the CLR is referred to as "managed code, (magaged code)". CLR은 프로그램 실행에 필요한 다양한 기능 및 서비스들을 제공하고, JIT(just-in-time) 편집을 포함하고, 메모리를 할당 및 관리하고, 타입 안전, 예외 조작, 쓰레드 관리(thread management) 및 보안을 강화한다. The CLR provides various functions and services required for program execution, JIT assigned to the (just-in-time) including edit, memory and management, type safety, exception operations, thread management (thread management) and enhanced security do. CLR은 .NET 루틴의 제1 호출(invocation)시 SQL SERVER에 의해 로딩된다. CLR is loaded by the first call (invocation) when SQL SERVER of .NET routine.
SQL SERVER의 이전 버전에서, 데이터베이스 프로그래머들은 서버측상에 코드를 기입할 때 Transact-SQL을 사용하는데 제한되었다. In previous versions of SQL SERVER, database programmers were limited to using Transact-SQL when writing code on the server side. Transact-SQL은 국제표준기구(ISO) 및 ANSI(American National Standards Institute)에 의해 정의된 SQL(Structured Query Language)의 확장이다. Transact-SQL is an extension of the (Structured Query Language) SQL is defined by the International Organization for Standardization (ISO) and ANSI (American National Standards Institute). Transact-SQL을 이용하여, 데이터베이스 개발자들은 데이터베이스들 및 테이블들을 생성, 변형 및 삭제할 수 있음은 물론, 데이터베이스에 저장된 데이터를 삽입, 검색, 변형 및 삭제할 수 있다. Using Transact-SQL, database developers can of course is that you can create, transform, and delete the database and tables, insert data stored in the database, search, modified, and deleted. Transact-SQL은 다이렉트 구조적 데이터 억세스 및 조정에 대해 구체적으로 설계된다. Transact-SQL is specifically designed for direct structural data access and coordination. Transact-SQL이 구조적 데이터 억세스 및 관리면에서 뛰어나지만, VISUAL BASIC.NET 및 C#과 같이 충분한 기능을 갖춘 프로그래밍 언어는 아니다. Transact-SQL, only excel in structured data access and management plane, not a programming language with enough features, such as VISUAL BASIC.NET and C #. 예를 들면, Transact-SQL은 각 루프, 비트 시프팅 또는 클래스에 대해 어레이, 수집을 지원하지 않는다. For example, Transact-SQL does not support the array, collected for each loop, the bit shifting or class.
SQL SERVER 데이터베이스에 통합된 CLR을 이용함으로써, 데이터베이스 개발자들은 Transact-SQL 단독으로 달성하기 불가능하거나 어려웠었던 작업들을 수행할 수 있게 되었다. By using the integrated CLR in SQL SERVER database, database developers are able to perform tasks that had been difficult or impossible to achieve with Transact-SQL alone. VISUAL BASIC.NET 및 C# 둘다 어레이, 구조화된 예외 조작 및 수집에 대한 완벽한 지원을 제공하는 현대적인 프로그래밍 언어이다. VISUAL BASIC.NET and C # is a modern programming language that provides full support for both arrays, structured exception manipulation and collected. 개발자들은 VISUAL BASIC.NET 및 C#과 같은 언어들을 이용하여 보다 복잡한 로직을 가지며 연산 작업들에 보다 적합한 코드를 기입하는 CLR 통합에 영향을 줄 수 있다. The developer can affect the CLR integration to have more complex logic using languages ​​such as VISUAL C # BASIC.NET and write more code suitable for the operations work. 이들 프로그래밍 언어들은 캡슐화, 계승, 폴리모피즘(polymorphism)과 같은 객체 배향 력을 제공한다. These programming languages ​​are object-oriented and provides force such as encapsulation, inheritance, polymorphism (polymorphism). 관련 코드는 클래스 및 명칭공간에 쉽게 편성될 수 있다. Related code can be easily organized into classes and namespaces.
관리 코드는 숫자 처리(number crunching) 및 복잡한 실행 로직에 대한 Transact-SQL보다 적합하고, 많은 복잡한 작업들에 대한 광범위한 지원에 특징이 있으며, 스트링 조작 및 일반 표현을 포함한다. The management code includes a numeric processing (number crunching), and Transact-SQL is more suitable for complicated execution logic, and also features a wide range of support for a number of complex operations, string operations and regular expressions. .NET 프레임워크 BCL(Base Class Library)에서 발견된 기능성을 이용하여, 데이터베이스 개발자들은 임의의 저장된 절차, 트리거 또는 사용자 정의 함수로부터 쉽게 억세스될 수 있는 수천의 미리설정된 클래스 및 루틴에 대한 억세스를 한다. Using the functionality found in the .NET Framework (Base Class Library) BCL, database developers the access to thousands of pre-set classes and routines that can be accessed easily from any stored procedure, trigger, or user-defined functions.
관리 코드의 다른 이득은 타입 안전성이다. Other benefits of managed code is type safety. 관리 코드가 실행되기 전에, CLR은 코드가 안전한지를 검증한다. Before managed code is executed, CLR verifies whether the code is secure. 이 프로세스는 "검증(verification)"으로서 알려져 있다. This process is known as "verification (verification)". 검증하는 동안, CLR은 몇가지 체크를 수행하여 코드가 실행하기에 안전한지를 보장한다. During verification, CLR will perform some checks to ensure it is safe to run code. 예를 들면, 코드는 기입되지 않았던 어떠한 메모리도 판독되지 않았는지를 체크한다. For example, the code checks whether any memory anatneun also be read has not been written. CLR은 또한 버퍼 오버플로우를 방지할 것이다. CLR it will also prevent buffer overflow.
관리 코드를 기입할 때, 개발 유닛은 어셈블리라고 불리운다. When the write managed code, the development unit is called an assembly. 어셈블리는 DLL(dynamic link library)로서 패키지된다. Assembly is packaged as a DLL (dynamic link library). 관리 DLL 어셈블리들은 SQL SERVER에 로딩되며 이에 의해 호스트(host)될 수 있다. Administration DLL assemblies are loaded into the SQL SERVER, and may be the host (host) thereby. CREATE ASSEMBLY 표현은 서버내의 어셈블리를 등록하는데 사용된다. CREATE ASSEMBLY expression is used to register the assembly in the server. 다음은 그 예이다: Here is an example:
CREATE ASSEMBLY YukonCLR CREATE ASSEMBLY YukonCLR
FROM 'C:＼MYDBApp＼YukonCLR.dll' FROM 'C: \MYDBApp\YukonCLR.dll'
이 예에서, FROM 절은 로딩될 어셈블리의 패스명을 특정한다. In this example, FROM clause specifies the pathname of the loaded assembly.
SQL SERVER는 정수, 부동 소수점 수, 일자, 시간 및 문자 스트링과 같은 "빌트-인(bulit-in)" 스칼라 타입을 전통적으로 지원하였다. SQL SERVER is the same as integer, float, date, time, and character strings were traditionally supported by the "built-in (bulit-in)" scalar type. 이들 빌트-인 타입들은 또한 한 세트의 빌트-인 동작, 예컨대 +,-,*,/는 물론 이들 타입들에 대한 빌트-인 함수와 함께 온다. These built-in types are also a set of built-in operations, such as +, -, *, /, as well as built for these types - comes with a function. 이들 타입, 동작 및 함수들은 These type, operation, and functions
그들이 곱에 의해 수행되며 패키지되고 사용자들이 그들 자신의 타입을 정의할 수 없다는 의미에서 "빌트-인"이다. In the sense that they are being carried out by the product package that users can define their own type - a "built-in".
사용자들이 데이터베이스 시스템에서 스칼라 타입들로서 작용하지만 보다 복잡한 구조 및 행위를 포함하는 -예를 들면, X 및 Y 좌표로 이루어진 "포인트(Point)" 타입을 생성하는 새로운 타입을 생성할 수 있도록 사용자들이 데이터베이스 시스템의 타입 시스템을 확장할 수 있게 하는 SQL SERVER와 같은 데이터 시스템이 적합하다. Users to the database system to produce a new type of generating a "point (Point)" type, for example, made of X and Y coordinates - users to act as a scalar type but including a more complex structure and behavior in a database system, the data system, such as the type of system and SQL SERVER to be able to expand is suitable. 이에 관련하여, SQL 표준 및 일부 DBMS(database management system) 제품은 용어 "사용자-정의 타입"을 사용하여 몇가지 형태의 타입 확장성을 기술한다. This regard, SQL standard, and some DBMS (database management system) product terms - describes the "user-defined types," the use of some form of type extensibility. 예를 들면, SQL-99 표준은 현존 SQL 빌트-인 데이터 타입의 값인 내부 표현을 갖는 사용자에 의해 정의될 수 있는 타입인 "개별 타입(distinct type)"을 기술한다. For example, SQL-99 standard, the existing SQL built-describes an "individual type (distinct type)" that is the type that can be defined by the user with the internal representation of the value of the data type. 개별 타입은 현존 스칼라 타입을 가지고 비교 및 산술 조작자들, 타입 변환 및 통합(컬럼) 함수(예를 들면, 최대, 최소, 평균)를 선택적으로 공유할 수도 있다. Individual types of comparison with existing scalar type, and the arithmetic operator, the type of transformation and integration (column) function may be selectively shared with a (for example, maximum, minimum, average). 또한, 개별 타입은 In addition, individual types
사용자 정의 함수를 거쳐 개별 타입에 특정한 새로운 함수를 정의함으로써 현존 스칼라 타입의 것들을 벗어난 행위를 드러낼 수도 있다. By via a user-defined function defines a specific new functions to the individual types may be exposed to acts beyond the existing scalar type things. 타입 체킹에 관련하여, 개별 타입 및 현존 스칼라 타입들은 상이한 타입이라고 고려된다. In relation to the type of checking, the individual type and existing scalar type are considered as different types.
개별 타입들의 주요 이점은 정의의 용이함이다. The main advantage is the ease of the individual types of definition. 만일 새로운 타입의 내부 표현이 현존 빌트-인 타입으로 기술될 수 있는 단일 데이터 넘버를 가지고 빌트-인 타입이 새로운 타입에 필요한 대부분의 행위를 이미 수행한다면, 개별 타입들은 매력적인 대안이다. If the internal representation of the new type of existing built-in data with a single number that can be described as a type of built-in if you have already done most of the action is of a type required for the new type, separate types are an attractive alternative. 사용자가 타입, 시공자들(constructors), 비교 조작자들(오더링 및 인덱싱에 사용된), 산술 조작자들 및 타입 변환(캐스팅) 조작자들의 온-디스크 저장을 관리하는데 필요한 행위를 수행하는 것에 대해 걱정하지 않다도 된다. The user types, the contractor of the (constructors), comparison operators in (used in ordering and indexing), arithmetic operators and type conversion (cast) on their operator - not to worry about performing acts necessary to manage disk storage It may be used. 사용자는 단지 착수중인 빌트-인 타입의 어떤 기능성이 개별 타입에 대해 노출될 필요가 있는지 그리고 새로운 타입에 대한 추가적인 기능 또는 값에 대한 제약을 추가적으로 부가할 것인지를 선택하기만 하면 된다. You just built that are launched - you only need to select whether you need the functionality of any type of exposure to individual types, and whether to add further restrictions on additional functionality or value for the new type. 개별 타입들의 다른 이점은 히스토그램의 연산과 같은 빌트-인 타입들에 활용가능한 모든 질문 프로세싱이 개별 타입들의 컬럼들에 대해 반드시 사용될 수 있다는 것이다. Other advantages of the individual type of operation and built like the histogram-processing is that all questions can take advantage of the type can be used for the columns of the individual type. 그러나, 개별 타입들의 단점은 이들이 보다 복잡한 타입들을 생성하는데 쉽게 사용될 수 없다는 것이다. However, the disadvantages of the individual types is that they can not easily be used to create more complex types.
SQL-99 표준은 또한 사용자에 의해 정의될 수 있는 타입이며 데이터 멤버들의 수집인 내부 표현을 갖는 "구조 타입(structured type)"을 기술하며, 이들 각각은 상이한 SQL 빌트-인 또는 사용자 정의 타입일 수도 있다. SQL-99 standard also types which can be defined by the user and, describes the "structure type (structured type)" having a collection of internal representations of data members, each of different SQL built-in or user-defined types of work may have. 이것은 C 및 C++에서의 구조체 포인터(struct)의 개념과 유사하다. This is similar to the concept of a pointer structure (struct) in C and C ++. SQL-99은 사용자는 내부 구조면에서 타입을 정의하는데에만 필요한 구조 타입들을 정의하기 위한 스타일을 기술한다. SQL-99 is a user describes a style for defining the structure type you need only to define the type in terms of the internal structure. 시스템은 데이터 멤버들에 대한 억세서(accessor) 및 뮤테이터 함수, 시공자 및 타입의 인스턴스(instances)의 온-디스크 표현을 관리하는 함수를 자동적으로 생성한다. The system processor billion (accessor) and mutator functions, builders and on the instance (instances) of a type for a data member - to automatically generate a function for managing a disk expression.
SQL에서 정의된 바와 같은 구조 타입들의 주요 이점들은 (a) 타입의 기본적인 행위 정의의 용이함과 (b) 보다 복잡한 타입들을 정의하는 적응성이다. The main advantage of the structure types as defined in SQL are the ease and flexibility of defining the complex type than (b) of (a) the basic behavior of the type defined. 그러나, 구조 타입들의 현저한 단점은 C 또는 C++과 같은 범용 프로그래밍 언어에 기입된 외부 함수들을 통해 일반적으로 정의되는 타입 특정 메소드 정의의 복잡성이다. However, a significant disadvantage of the structure type is the complexity of the general type defined in the specific methods that are defined through an external function written in the general-purpose programming language such as C or C ++. 구조 타입을 완벽하게 정의하기 위해서, 타입의 정의자는 SQL과 일부 다른 프로그래밍 언어간의 라인을 스트레들(straddle)할 필요가 있다. In order to fully define the structure type, who defines the type, it is necessary to stress the (straddle) the line between the SQL and some other programming languages.
개별 타입 및 SQL 99의 구조 타입 특성이 SQL 데이터베이스의 현존 스칼라 타입 시스템을 확장할 수 있게 한다는 면에서 사용자들에게 일부 이점들을 제공하지만, 사용자가 스칼라 타입들로서 작용하지만 보다 복잡한 구조 및 행위를 포함하는 사용자 정의 타입들을 통해 데이터베이스 시스템의 스칼라 타입 시스템을 확장할 수 있게 하기 위한 향상된 시스템들 및 방법들이 필요하였다. Provide some benefits to users in terms of the individual types and structure types characteristic of the SQL 99 that allows you to expand the existing scalar type system of an SQL database, but the user that the user acts as a scalar type, but includes a more complex structure and behavior through defined type it was required to improved systems and methods to be able to extend the scalar type system of the database system.
UDT 특허 출원에 개시된 발명은 스칼라 타입으로서 작용하지만 보다 복잡한 구조 및 행위를 포함하는 사용자 정의 타입을 생성함으로써 사용자가 데이터베이스 시스템의 스칼라 타입 시스템을 확장할 수 있게 하는 시스템 및 방법에 관한 것이다. The invention disclosed in Patent Application UDT is by creating a user-defined type which comprises a more complex structure and action, but acts as a scalar type relates to a system and method that allows a user to extend the scalar type system of the database system. 본 발명에 따르면, 사용자는 사용자 정의 타입의 구조를 정의하는 클래스 및 사용자 정의 타입의 인스턴스들에 대해 실행될 수 있는 방법들을 실행하는 하이레벨 프로그래밍 언어의 프로그램 코드를 기입한다. According to the present invention, a user writes the program codes with a high level to implement methods that can be performed on the class and instances of user-defined type that defines the structure of a user-defined type programming language. 본 명세서에서 사용되는, 용어 "구조(structure)"는, 사용자 정의 타입을 참조할 때, 타입을 실행하는 특성들 또는 필드들의 세트를 포함한다. The term "structure (structure)" as used herein, includes a set of attributes or fields running type when referring to user-defined types. UDT 특허 출원에서 각 필드의 타입은 스칼라 SQL 타입 또는 임의의 이전에 정의된 사용자 정의 타입일 수 있다. In the UDT Patent Application Type of each field it can be a scalar SQL user-defined types defined in the type or any of the previous. 다음으로, 사용자 정의 타입을 정의하는 클래스는 데이터베이스 시스템에 컴파일되어 등록된다. Next, the class that defines the user-defined type is registered and compiled in a database system. 구체적으로, 사용자 정의 타입을 정의하는 CLR 클래스는 CREATE ASSEMBLY 데이터 정의 표현을 통해 데이터베이스 시스템에 등록되는 어셈블리내에서 컴파일될 수도 있다. Specifically, CLR class that defines the user-defined type may be compiled from within the assembly to be registered in the database system through the CREATE ASSEMBLY data definition expression. 어셈블리가 등록된 후, 사용자는 CREATE TYPE 데이터 정의 표현을 이용하여 사용자 정의 타입을 정의하는 어셈블리내에 클래스를 등록할 수 있다. After the assembly has been registered, the user can register the class in the assembly that defines the user-defined type with the CREATE TYPE definition data representation.
UDT 특허 출원 발명의 경우, 데이터베이스 시스템은 사용자 정의 타입이 SQL 타입 시스템에서의 스칼라로서 작용할 수 있게 하는 클래스가 실행되어야 하는 특정 계약을 실시한다. If the UDT invention patent applications, database systems are subjected to a specific agreement to be executed Class that allows user-defined types in SQL can act as a scalar type system. 본 명세서에서 사용된 용어 "계약(contract)"은 실행될 코드가 적당하게 실행되는 것을 보장하는 임의의 선제 조건 또는 요구사항들을 충족하는지를 체크하는 객체 중심 프로그래밍 환경에서 런타임시 사용되는 기술을 의미한다. In the term "agreement (contract)" it is executed code to properly check that meets the prerequisites or any requirement to ensure that the running object-oriented programming environment used herein means a technique that is used at runtime. 본 발명에 따르면, 사용자 정의 타입을 정의하는 클래스가 비교되는 것에 대한 계약은 몇가지 요구사항을 포함한다. According to the present invention, as compared to contracts for the classes that define the user-defined types include some required information. 첫번째로, 클래스는 데이터베이스 저장내의 사용자 정의 타입의 인스턴스를 지속하기 위한 복수의 상이한 포맷들 중 하나를 특정해야만 한다. First, the class must have to a particular one of a plurality of different formats to continue an instance of a custom type in the database storage. 두번째로, 클래스는 사용자 정의 타입에 대한 널 값(null value)을 리턴시킬 수 있어야만 한다. Second, the class must be able to return a null value (null value) for user-defined types. 세번째로, 클래스는 스트링 타입과 같은 다른 타입에 및 이로부터 사용자 정의 타입을 변환하기 위한 방법을 제공해야만 한다. Third, the class must provide a way to convert a user-defined type to another type, such as string type and from it. 일단 이들 요구사항들이 충족되면, 데이터베이스 시스템은 사용자 정의 타입의 인스턴스들이 생성될 수 있게 할 수 있다. Once these requirements are met, the database system may be able to create an instance of a user-defined type. 본 출원의 일 실시예에서, 사용자 정의 타입은 테이블내의 컬럼값, 변수, 루틴의 파라미터 또는 루틴의 리턴값으로서 인스턴스화(instantiate)될 수 있다. In one embodiment of the present application, the user-defined type can be column values, variables, and instantiate (instantiate) as a return value of a parameter of a routine or routines in the table. 데이터베이스 시스템은 타입의 인스턴스를 생성하시 후속 이용에 대한 사용자 정의 타입을 정의하는 클래스에 관한 메타데이터를 저장한다. Database system stores metadata about the class to define a custom type for subsequent use you like to create an instance of the type. 본 발명의 다른 실시예에서, 사용자 정의 타입 계약의 검증은 타입의 정의하는 클래스를 기술하는 메타데이터를 이용하여 수행된다. In a further embodiment of the invention, user-defined type verification of contract is performed using the metadata describing the class, which defines the type.
사용자 정의 타입의 인스턴스를 지속하기 위한 복수의 상이한 포맷들은 데이터베이스 시스템의 본래 포맷에 따라 자동적으로 사용자 정의 타입의 인스턴스가 시리얼화된 제1 포맷과, 사용자 인증 클래스에 의해 정의된 방식으로 사용자 정의 타입의 인스턴스가 시리얼화된 제2 포맷을 포함한다. A plurality of different formats to continue an instance of the user-defined types of user-defined types in the manner defined by the automatic user first format the instance is serialized in the defined type and a user authentication class based on the original format of the database system, and a second format, the instance is serialized. 부가적으로, UDT 특허 출원의 발명이 MICROSOFT.NET CLR이 통합되는 MICROSOFT SQL SERVER내에서 실행될 때, MICROSOFT.NET 프레임워크에 의해 제공된 메소드에 따라 사용자 정의 타입의 인스턴스가 시리얼화된 제3 포맷이 활용가능하다. Additionally, when the invention of the UDT Patent Application is run in the MICROSOFT SQL SERVER that MICROSOFT.NET CLR Integration, a serialized format, the third instance of the user-defined type are utilized according to the methods provided by the framework MICROSOFT.NET It is possible.
UDT 특허 출원의 발명의 경우, 데이터베이스 시스템의 질문 언어의 표현은 표현의 평가가 사용자 정의 타입의 인스턴스에 대한 메소드의 호출(invocation)을 필요로 하도록, 사용자 정의 타입의 인스턴스(들)에 대한 하나 또는 그 이상의 참조를 포함할 수 있다. In the case of the invention of the UDT patent application, the expression of the query language of the database system, the evaluation of the expression to require a call (invocation) of a method for instances of user-defined types, one for the instance (s) of a user-defined type or It may include more than the reference. 데이터베이스 시스템이 그러한 질문 언어 표현을 수신할 때, 그 표현을, 실행될 때, 사용자 정의 타입의 인스턴스에 대한 요구 메소드를 호출하는 일련의 프로그램 코드 명령으로 번역한다. When the database system receives such a query language expression, it runs the expression, translates into a series of program code instructions to call the required methods for an instance of a user-defined type. 다음으로, 데이터베이스 시스템은 질문 언어 표현의 평가 결과로서 메소드 호출(method invocation)의 결과를 리턴시킨다. Next, the database system is then evaluated as a result of the query language expression and returns the result of method calls (method invocation). 일 실시예에서, 사용자 정의 타입의 인스턴스는 인스턴스에 대한 메소드를 호출(invoking)하기 전에 역시리얼화(deserialize)된다. In one embodiment, instances of user-defined type is also a real screen (deserialize) prior to calling (invoking) a method on the instance.
본 발명의 다른 특징은 뮤테이터 메소드의 호출을 통해 사용자 정의 타입의 인스턴스의 값을 변경할 수 있는 능력이다. Another feature of the invention is the ability through a call of the mutator method to change the value of an instance of a user-defined type. 구체적으로, 사용자 정의 타입을 정의하는 클래스의 저작권자는 클래스의 일부로서 뮤테이터 메소드를 포함한다. Specifically, the copyright holder of the class that defines the user-defined type includes a mutator method as part of the class. 사용자 정의 타입의 인스턴스에 대해 호출될 때, 뮤테이터 메소드는 사용자 정의 타입의 값이 변경될 수 있게 한다. When invoked on an instance of a user-defined type, the mutator method makes it possible to change the value of a user-defined type. 이 프로세스는 사용자 정의 타입의 인스턴스를 역시리얼화하고, 인스턴스의 역시리얼화된 데이터의 값을 변경하는 뮤테이터 메소드를 호출하고 나서 변경을 지속하는 사용자 정의 타입의 변형된 인스턴스를 시리얼화하는 것을 포함할 수도 있다. This process comprises also a real screen, calling the mutator method that also changes the value of the real screen data of the instance, and then serial a modified instance of a custom type which continues to change flower an instance of a custom type You may.
본 발명의 다른 특징에 따르면, 사용자 정의 타입을 정의하는 클래스는 사용자 정의 타입의 인스턴스의 시리얼화된 2진수 표현이 2진 차수가 될 것을 특정하는 속성을 더 포함할 수도 있다. According to a further feature of the present invention, the class that defines the user-defined types may further include an attribute that specifies that a serialized binary representation of the user-defined type instance be a binary order. 이것은 타입의 인스턴스에 대해 2진수 비교가 이루어질 수 있게 하며 또한 타입의 인스턴스에 대해 인텍싱이 수행될 수 있다. This allows the binary comparison can be made for instance of the type, and can also be performed on Intec Singh instance of the type. 구체 적으로, 2진 차수화되는 사용자 정의 타입의 인스턴스의 경우, 타입의 2개의 인스턴스들의 일부 비교를 필요로 하는 질문 언어 표현이 데이터베이스 시스템에 의해 수신될 때(예를 들면, >,<, 또는 =), 2개의 인스턴스들의 시리얼화된 2진 표현들은 인스턴스를 역시리얼화하지 않고, 표현을 평가하는데 사용될 수 있다. Specific general, the binary case of difference the sign language of a user-defined type instance that, when query language expression that requires a two-part comparison of the instances of the type is received by the database system (e.g.,>, <, or =), a binary representation serialization of the two instances are not well screen real instance, it can be used to evaluate the expression. 부가적으로, 2진수 차수화된 사용자 정의 타입의 경우, 사용자 정의 타입으로서 정의된 컬럼을 갖는 데이터베이스 저장의 테이블이 생성될 수 있다. Additionally, in the case of the binary difference hydrated user-defined types, a table in the database stored with the columns defined as a user-defined type can be produced. 다음으로, 인덱스는 컬럼상에 생성될 수 있다. Next, the index may be generated on the column. 인덱스는 또한 사용자 정의 타입을 참조하는 질문 언어 표현을 통해 생성될 수 있다. Indexes can also be created through the query language expression that refers to a user-defined type. 이 경우, 연산된 컬럼은 표연을 통해 첫번째로 생성되고나서 인덱스는 연산된 컬럼을 통해 생성된다. In this case, the calculated column is then being generated by the first through pyoyeon index is generated from the calculated column.
본 발명의 다양한 실시예들은 계승을 지원하는 UDT 프레임워크를 확장하는 것에 관한 것이다. Various embodiments of the invention relates to extending the UDT framework that supports inheritance. 계승은 객체 중심 프로그래밍의 키 테넷들(key tenet) 중 하나이며 가장 현대적인 타입시스템들(예를 들면, CLR 타입시스템 또는 XSD 타입시스템)에 대한 기본적인 빌딩 블럭이다. Inheritance One of the key tenet of object-oriented programming (key tenet) and is the basic building blocks for the modern type of system (e.g., CLR type system or XSD type system). 이 확장을 이용하여, 저장의 객체 데이터 모델링 능력들은 크게 향상된다. With this expansion, the object data model of the storage capacity are greatly improved. 관련 매핑 기술들에 대한 귀찮으면서도 느린 객체에 대한 필요성없이 데이터베이스 타입 시스템에 CLR(commone language runtime) 타입시스템으로부터 자연스러운 매핑을 할 수 있다. While gwichaneu for the related mapping technique without the need for a slow object can be a natural mappings from CLR (commone language runtime) type system, the database system types. 질문 언어에서 계승에 관련된 개념들을 지원하는 것은 계승에 대한 SQL 프로그래밍 모델을 크게 간략화한다. It supports the concepts related to the succession question in the language greatly simplifies the programming model for SQL succeeded.
사용자 정의 타입들에 대한 계승이 다른 데이터베이스 제품들에서 수행되었지만, 본 발명의 다양한 실시예들은 현존 분야세서 존재하지 않는 하나 또는 그 이 상의 다음 능력들을 소유한 UDT 계승 솔루션에 관한 것이다. This succeeded for user-defined types have been carried out in other database products, various embodiments of the invention relate to the possession of a nonexistent processor existing field or on the following skills UDT succession solutions.
·CLR 타입시스템을 이용한 일정한 통합. · Constant integration with CLR type system. 본 발명의 몇가지 실시예들은 기본적인 UDT 계약이 한 세트의 필요한 커스텀 속성들과 관리 타입에 대한 인터페이스들로서 특정되는 UDT 계승 시스템 및 방법들에 관한 것이며, 여기서 계승은 동일한 개념을 확장시키며 SQL 타입시스템에 대한 계승의 상세를 구동하기 위해 관리 타입 정의를 사용한다. Some embodiments of the present invention are basic UDT contract relates to UDT factorial system and method is specified as the interface for the custom properties and management type required in a set, wherein the succession is extended sikimyeo for SQL-type system the same concepts It uses a management type definitions in order to drive the details of the inheritance. 이 솔루션은 개발자가 C#, C++ 및 VB.NET을 포함하지만 이에 국한되지 않는, 그들 선택의 임의의 CLS-적응 프로그래밍 언어로 계승된 타입들을 기술할 수 있게 한다. This solution enables developers C #, C ++, and VB.NET can include, but are not limited to, describe an inherited type in any CLS- adapt programming language of their choice.
·대체에 대한 완벽한 지원. · Full support for replacement. 본 발명의 몇가지 실시예들의 경우, 만일 사이트(변수, 파라미터, 컬럼 정의 등)가 특정 UDT라고 선언되는 경우, 그 UDT의 임의의 서브타입들의 값은 그 사이트에 저장될 수 있다. In the case of some embodiments of the present invention, If the site (variable, a parameter, a column definition, etc.) that is declared to be a particular UDT, any value of the sub-types of the UDT can be stored on the site. 대체의 의미는 캐스팅, 변환, 할당 및 메소드 호출을 포함하는 타입의 모든 이용을 확장하는 것은 물론, 이 방식으로 클라이언트 어플리케이션에 의해 결과 세트가 처리된다 The replacement means is to extend the use of all types, including casting, conversion, assignment and method call, of course, the result set by the client application is processed in the manner
·인덱싱 및 질문 서브시스템을 이용한 깊은 통합. · Indexing and deep integration with the question subsystem. 본 발명의 수많은 실시예들의 경우, 계승에는 선언된 타입과는 상이할 수 있는 값의 정확한 런타임 타입의 개념이 부가된다. In the case of a number of embodiments of the invention, it has succeeded is added to the concept of the exact run-time type of which may be different from the value of the declared type. 예를 들면, SQL Server는 이 종류의 정보를 통해 인덱스들의 생성을 지원하고, 또한 값의 타입에 기초하여 술어의 인덱스를 이용한다. For example, SQL Server supports the creation of the index through the type of information, and also based on the value of the type used for the index of the predicate. 계승은 또한 서브타입들로 재정의(번복)될 수 있는 가상의 행위들의 개념을 추가할 것이며, 이 개념은 특정 UDT 함수의 인덱스의 연산에 대입될 수도 있으며 타입 생성시에 검증될 수도 있다. Inheritance also would add the concept of the virtual actions that can be (reverse) of the financial into sub-types, this concept may be substituted into the calculation of the index of a particular UDT function may be verified at the time of generation types.
·질문가능한 메타데이터 및 카탈로그 서비스. · Questions metadata and catalog services. 본 발명의 다양한 실시예들의 경우, 타입 및 그 슈퍼-타입간의 관계는 타입 생성시에 메타데이터에 기록되고 질문가능한 카탈로그 뷰를 통해 활용가능하다. If of the various embodiments of the present invention, the type and the super-relationship between the type is recorded in the metadata when the type generated can be utilized through the question and possible catalog view. 본 출원은 특정 타입의 대체가능한 범위를 결정하는 질문들을 포함한다. This application includes a question for determining a replacement range of the specified type.
이에 관련하여, 본 발명의 일 실시예는 In this regard, one embodiment of the present invention
그 구조를 기술하기 위한 정보는 물론 그 자신과 다른 사용자 정의 타입(서브타입 또는 슈퍼타입/기본 타입 중 어느 하나)간의 계승 관계를 기술하기 위한 정보를 포함하는 적어도 하나의 사용자 정의 타입에 대한 확장가능한 타입 시스템을 이용한 데이터베이스에 관한 것이다. Information to describe the structure as well as its possible own and other user-defined types, at least one user extensions to the defined type that includes information for describing the inheritance relationship between (subtype or supertype / base type either a) It relates to a database using the type system. 임의 실시예의 경우, 사용자 정의 타입은 예를 들면, CLR(Common Language Runtime) 명령문, C, C++, 및 C#("C-sharp")의 명령문, 및/또는 버추얼 베이직 명령문과 같은 SQL 명령문 이외의 어떤 것으로 정의된다. If any embodiment, a user-defined type, e.g., CLR (Common Language Runtime) statements, C, C ++, and C #, any other than the SQL statements, such as statement, and / or virtual basic statement of ( "C-sharp") It is defined as. 어떤 경우에도, 몇가지 실시예들은 데이터베이스가 2개의 사용자 정의 타입들(하나는 서브타입이고 다른 하나는 슈퍼타입/베이스 타입)간의 계승 관계를 인식하는 시스템에 관한 것이다. In any case, some embodiments are 2 to a database of user-defined types to a system for recognizing the relationship between the succession (one sub-type and the other is a supertype / base type).
임의 실시예의 경우, 데이터베이스는 상기 데이터베이스를 이용하여 사용자 정의 타입의 명백한 등록에 의해 2개의 사용자 정의 타입들간의 상기 계승 관계를 인식한다. If any embodiment, the database is aware of the inheritance relationship between two user-defined types of user-defined type by the apparent properties of using the database. 이에 관련하여, 몇가지 실시예들에 대한 본 발명의 한가지 중요한 방법은 (a) 타입을 에셈블리로 번역하고; In this regard, one important method of this invention for some embodiments is to translate the (a) type in esem assembly; (b) 상기 데이터베이스를 이용하여 상기 어셈블리를 등록하고; (B) registers the assembly using the database; (c) 상기 데이터베이스를 이용하여 상기 어셈블리의 타입을 등록하며; (C) to register the type of the assembly using the database; (d) 상기 타입을 이용하는 것을 포함한다. (D) it includes using the above type.
상술한 요약은 물론 바람직한 실시예들의 다음 상세 설명은 첨부된 도면들과 결합하여 읽게 될 때 이해하기 용이할 것이다. The above-described summary of the following detailed description as well as the preferred embodiment will be easily understood when read in conjunction with the accompanying drawings. 본 발명의 설명을 위해, 본 발명의 예시적인 구성이 도면들에 나타냈으며, 본 발명은 개시된 특정 방법들 및 수단들에 국한되지 않는다. For purposes of illustration of the present invention, showed in the exemplary configuration of the present invention, the drawings, the invention is not limited to the specific methods and instrumentalities disclosed.
도 1은 본 발명의 양상들이 결합될 수도 있는 컴퓨터 시스템을 나타낸 블럭도이다. Figure 1 is a block diagram illustrating a computer system that may be coupled to a aspect the present invention.
도 2는 본 발명이 실행될 수도 있는 다양한 컴퓨팅 디바이스들을 갖는 예시적인 네트워크 환경을 나타낸 블럭도이다. Figure 2 is a block diagram illustrating an exemplary network environment having a variety of computing device that may be executed by the present invention.
도 3은 관리 코드로 인스턴스화된 사용자 정의 타입의 인스턴스의 시리얼화 및 역시리얼화를 도시한 블럭도이다. Figure 3 is a block diagram showing serialization and also the real screen of the user-defined types to managed code to instantiate the instance.
도 4는 SqlUserDefinedType에 대한 특성의 비포괄 리스트를 도시한 테이블이다. Figure 4 is a table showing the non-comprehensive list of attributes for SqlUserDefinedType.
도 5는 어드레스가 타입인 경우, 그리고 US어드레스가 어드레스의 서브타입인 경우, 어드레스가 타입 어드레스의 컬럼 addrcol을 가진 테이블일 수도 있다는 것을 나타내는 의사 코드(pseudo-code)이다. Figure 5 is a pseudo-code (pseudo-code) which indicates that the address is the case of a type, and US address when the address of the sub-type, the address may be a table with a column of type addrcol address.
도 6은 역시리얼화된 값의 정확한 타입을 이용하여 역시리얼화되어야 하는 CLK 타입을 결정하는 클라이언트/서버 역시리얼화기를 도시한 의사 코드이다. 6 is also one using the correct type of screen real value shows a client / server also real fire to determine the type of CLK also be real screen pseudocode.
도 7은 CONVERT, CAST 및 TREAT 명령에 대한 행위 및 세만틱들을 도시한 테이블이다. 7 is a table illustrating the behavior and the semantic of the CONVERT, CAST and TREAT command.
도 8은 UDT 메소드들이 포함할 수도 있는 루틴 특성들을 도시한 테이블이다. Figure 8 is a table illustrating the routine features, which may include methods to UDT.
본 발명의 과제는 법정 요구사항에 부합되도록 상세히 기술된다. An object of the present invention are described in detail to meet the statutory requirements. 그러나, 그 설명은 본 특허의 범위를 제한하려는 것은 아니다. However, their description is not intended to limit the scope of this patent. 또한, 발명자들은 청구된 과제가 또한 본 기술 또는 미래의 기술들과 결합하여, 본 서류에 기술된 것과 유사한 상이한 단계들 또는 구성요소들을 포함하는, 다른 방식들로 구현될 수 있다는 것을 고려했다. In addition, the inventors have contemplated that the claimed problem is also in conjunction with the art or future technology may be embodied in, other ways to include different steps or elements similar to those described in this document. 게다가, 이용된 방법들의 상이한 양상들을 암시하는 용어 "단계(step)"가 본 명세서에서 사용될 수도 있지만, 이 용어는 개별 단계들의 순서가 명확하게 기술될 때를 제외하고 그리고 이러한 때가 아닌 한 본 명세서에서 다양한 단계들간에 또는 이 단계들 중에 임의의 특정 순서를 포함하는 것으로서 해석되지 않아야 한다. Further, in but that implies the different aspects of the methods use the term "phase (step)" may be used herein, the term except when the order of individual steps is explicitly described, and the present disclosure is not such a time It should not be interpreted as including any particular order among or between various stages of the step.
이하에 기술된 실시예에서, 본 발명의 상술한 특징들은 MICROSOFT SQL SERVER 데이터베이스 시스템에서 수행되는 것으로서 기술된다. In the embodiment described below, the above-described characteristics of the present invention are described as being performed in the MICROSOFT SQL SERVER database system. 상술한 바와 같이, SQL SERVER는 MICROSOFT.NET CLR(Common Language Runtime)과 결합되어 SQL SERVER 데이터베이스의 데이터 저장에 따라 관리 코드가 동작 실행되고 기입되도록 할 수 있다. As mentioned above, SQL SERVER may be such that in combination with (Common Language Runtime) MICROSOFT.NET CLR managed code execution and write-in operation in accordance with data stored in the SQL SERVER database. 이하 기술된 실시예는 이와 관련해서 동작하지만, 본 발명이 SQL SERVER 제품에서의 수행에 국한되는 것은 아니라는 것을 알 수 잇다. The embodiments described below is the operation example In this regard, but the piece be seen that the present invention is limited to perform in the SQL SERVER product not. 더욱이, 본 발명은 객체 관련 확장을 갖는 간련 데이터베이스 시스템 및 객체 중심 데이터베이스와 같은, 데이터베이스 저장에 따라 동작하는 객체 중심 프로그래밍 코드의 실행을 지원하는 임의의 데이터베이스 시스템에서 수행될 수 있다. Furthermore, the invention can be carried out on any of the database system, support the execution of object-oriented programming code to operate in accordance with a database store, such as database ganryeon system and object-oriented database with the object-specific extensions. 따라서, 본 발명은 이하에 기술되는 특정 실시예에 국한되지 않지만, 첨부된 청구항들에 의해 정의되는 바와 같이 본 발명의 기술적 사상 및 범위내에 있는 모든 변형들을 커버한다는 것을 알 수 있다. Accordingly, the present invention can be seen that, but not limited to the specific embodiments described below, covers all modifications within the spirit and scope of the invention as defined by the appended claims.
본 발명의 수많은 실시예들은 컴퓨터 상에서 실행될 수도 있다. Numerous embodiments of the invention may be executable in the computer. 도 1 및 다음 설명은 본 발명이 수행될 수도 있는 적당한 컴퓨팅 환경의 간략한 일반 설명을 제공하려는 것이다. 1 and the following description is intended to provide a brief general description of a suitable computing environment in which the invention may be performed. 요구되지는 않지만, 본 발명은 클라이언트 워크스테이션 또는 서버와 같은, 컴퓨터에 의해 실행되는 컴퓨터 모듈과 같은 컴퓨터 실행가능 명령들의 일반적으로 관련하여 기술될 것이다. Not required, although, the invention will be described in conjunction with normally of computer-executable instructions, such as computer modules, being executed by a computer, such as a client workstation or a server. 일반적으로, 컴퓨터 모듈들은 특정 작업을 수행하거나 특정 추상 데이터 타입을 수행하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. In general, the computer modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or perform particular abstract data types. 게다가, 본 분야의 숙련된 자라면, 본 발명은 휴대용 디바이스, 멀티 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 소비자 전자기기, 네트워크 PC들, 마이크로컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성들을 가지고 실시될 수도 있다는 것을 알 수 있을 것이다. Moreover, those skilled in the art, the invention has other computer system configurations, including handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PC, a microcomputer, mainframe computer, etc. implementation will be understood that there may be. 본 발명은 통신 네트워크를 통해 링크되는 원격 처리 디바이스에 의해 작업들이 수행되는 분배 컴퓨팅 환경에서 실시될 수도 있다. The present invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. 분배 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 디바이스 둘다에 위치될 수도 있다. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
도 1에 나타난 바와 같이, 예시적인 범용 컴퓨팅 시스템은 프로세싱 유닛(21), 시스템 메모리(22) 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(21)에 결합시키는 시스템 버스(23)를 포함하는, 종래의 개인용 컴퓨터(20) 등을 포함한다. As shown in Fig. 1, an exemplary general purpose computing system includes a system bus 23 that couples various system components including the processing unit 21, a system memory 22 and the system memory to the processing unit 21 , and the like conventional personal computer 20. 시스템 버스(23)는 메모리 버스 또는 메모리 제어기, 주변 버스 및 다양한 버스 구조들 중 어느 하나를 이용하는 로컬 버스를 포함하는 임의의 몇가지 타입의 버스 구조들일 수도 있다. System bus 23 may be any of several types of bus structures accept a local bus using any of a memory bus or memory controller, a peripheral bus, and a variety of bus architectures. 시스템 메모리는 ROM(24) 및 RAM(25)를 포함한다. The system memory includes a ROM (24) and RAM (25). 구동하는 동안과 같은, 개인용 컴퓨터(20)내의 구성요소들간의 정보를 전송하도록 돕는 기본 루틴들을 포함하는 BIOS(basic input/output system)(26)은 ROM(24)에 저장된다. Such as during driving, the configuration BIOS (basic input / output system) (26), containing the basic routines that help to transfer information between elements within the personal computer 20 is stored in the ROM (24). 개인용 컴퓨터(20)는 도시되지 않은 하드 디스크로부터 판독하고 하드 디스크에 기록하기 위한 하드 디스크 드라이브(27), 착탈식 자기 디스크(29)로부터 판독하거나 이 디스크에 기록하기 위한 자기 디스크 드라이브(28), 및 CD-ROM 또는 다른 광학 매체와 같은 착탈식 광 다스크(31)로부터 판독하거나 이 디스크에 기록하기 위한 광 디스크 드라이브(30)를 더 포함할 수도 있다. Personal computer 20, a magnetic disk drive 28 is read out from the unshown hard disk and read from the hard disk drive 27, a removable magnetic disk 29 for recording on the hard disk or to write to the disk, and read out from the removable optical ASCQ 31 such as a CD-ROM or other optical media, or may further include an optical disk drive 30 for recording on the disc. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광 디스크 드라이브(30)는 각기 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 접속된다. By a hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 are each hard disk drive interface 32, magnetic disk drive interface 33, and an optical drive interface 34, a system bus (23 ) it is connected to. 드라이브들 및 그들과 관련된 컴퓨터 판독가능 매체는 컴퓨터 판독가능 명령들, 데이터 구조, 프로그램 모듈 및 개인용 컴퓨터(20)에 대한 다른 데이터의 불휘발성 저장을 제공한다. The computer-readable medium associated with the drive, and they provide a non-volatile storage of the other data for the computer-readable instructions, data structures, program modules and the personal computer 20. 본 명세서에서 기술된 예시적인 환경이 하드 디스크, 착탈식 자기 디스크(29) 및 착탈식 광 디스크(21)를 사용할지라도, 자기 카세트, 플래쉬 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지, RAM, ROM 등과 같은 컴퓨터에 의해 억세스가능한 데이터를 저장할 수 있는 다른 타입의 컴퓨터 판독가능 매체가 예시적인 구동 환경에서 사용될 수도 있다는 것을 본 분야의 숙련된 자라면 이해할 것이다. A computer such as the exemplary environment described herein a hard disk, a removable magnetic disk 29, and even when using a removable optical disk 21, magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, RAM, ROM it will be appreciated by those skilled in the art that may be used in other types of computer readable media, the exemplary driving environment that can store data accessible.
다수의 프로그램 모듈은 구동 시스템(35), 하나 이상의 어플리케이션 프로그램(36), 다른 프로그램 모듈(37) 및 프로그램 데이터(38)를 포함하는, 다수의 프로그램 모듈은 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25)에 저장될 수도 있다. A number of program modules can drive system 35, one or more application programs 36, the number of program modules may be stored on the hard disk, magnetic disk 29, including other program modules 37 and program data 38, the light It may be stored in a disk (31), ROM (24) or a RAM (25). 사용자는 키보드(40) 및 포인팅 디바이스(42)와 같은 입력 디바이스들을 통해 명령들 및 정보를 개인용 컴퓨터(20)에 입력할 수도 있다. A user may enter commands and information through input devices such as a keyboard 40 and pointing device 42 to the personal computer 20. 다른 입력 디바이스들(미도시됨)은 마이크로폰, 조이스틱, 게임 패드, 위성 디스크, 스캐너 등을 포함할 수도 있다. Other input devices (not shown) may include a microphone, joystick, game pad, satellite disk, scanner, or the like. 이들 및 다른 입력 디바이스들은 시스템 버스에 결합되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 인터페이스들에 의해 접속될 수도 있는 시리얼 포트 인터페이스(46)를 통해 프로세싱 유닛(21)에 종종 접속된다. Often connected to these and other input devices are however coupled to the system bus, a parallel port, game port or a USB (universal serial bus) and the processing unit 21 through a serial port interface 46 that may be connected by such interface, do. 모니터(47) 또는 다른 타입의 디스플레이 디바이스는 또한 비디오 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 접속된다. A monitor 47 or other type of display device is also connected to the system bus 23 via an interface, such as a video adapter 48. 모니터(47)에 부가하여, 개인용 컴퓨터는 통상적으로 스피커 및 프린터와 같은 다른 주변 출력 디바이스들(미도시됨)을 포함한다. In addition to the monitor 47, personal computers typically include other peripheral output devices such as speakers and printers (not shown). 도 1의 예시적인 시스템은 또한 호스트 어댑터(55), SCSI(Small Computer System Interface) 버스(56) 및 이 SCSI 버스(56)에 접속된 외부 저장 디바이스(62)를 포함한다. The exemplary system of Figure 1 also includes an external storage device 62 connected to the host adapter (55), SCSI (Small Computer System Interface) bus 56 and the SCSI bus 56.
개인용 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터들에 대한 로컬 접속을 이용하여 네트워크화된 환경에서 동작할 수도 있다. Personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as remote computer (49). 원격 컴퓨터(49)는 다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 디바이스 또는 다른 공통 네트워크 노드일 수 있으며, 통상적으로 메모리 저장 디바이스(50)만이 도 1에 도시되었지만 개인용 컴퓨터(20)에 상대적인 상술한 많은 구성요소들 또는 많은 모든 구성요소들을 포함한다. Remote computer 49 may be a peer (peer) device or, and the other be a common network node, and only typically a memory storage device 50 has been illustrated in Figure 1 the personal computer 20, another personal computer, a server, a router, a network PC, to include a number of components or the number of all of the components relative to one described above. 도 1에 도시된 로직 접속들은 근거리 통신망(LAN)(51) 및 광역 통신망(WAN)(52)를 포함한다. The logical connections depicted in Figure 1 include a local area network (LAN) (51) and a wide area network (WAN) (52). 이러한 네트워킹 환경들은 사무소, 기업 와이트 컴퓨터 네트워크, 인트라넷 및 인터넷에서는 진부한 것이다. Such networking environments will clichés in offices, enterprise Wight computer networks, intranets and the Internet.
LAN 네트워킹 환경에서 사용될 때, 개인용 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 접속된다. When used in a LAN networking environment, personal computer 20 is connected to the LAN (51) through a network interface or adapter 53. WAN 네트워킹 환경에서 사용될 때, 개인용 컴퓨터(20)는 통상적으로 인터넷과 같은 광역 통신망(52)을 통해 통신을 설정하기 위한 다른 수단 또는 모뎀(54)을 포함한다. When used in a WAN networking environment, it includes a personal computer 20, typically by other means or a modem 54 for establishing communications over the wide area network 52, such as the Internet. 내장형 또는 외장형일 수도 있는 모뎀(54)은 시리얼 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. The modem 54, which may be internal or external, is connected to the system bus 23 via serial port interface 46. 네트워크화된 환경에서, 개인용 컴퓨터(20)에 상대적으로 도시된 프로그램 모듈, 또는 그 부분들은 원격 메모리 저장 디바이스에 저장될 수도 있다. Program modules, or portions thereof, in a networked environment, relatively shown in the personal computer 20 may be stored in the remote memory storage device. 도시된 네트워크 접속들은 예시적이며 컴퓨터들간의 통신 링크를 설정하는 다른 수단이 사용될 수도 있다는 것을 이해할 것이다. The network connections shown are exemplary and it will be appreciated that other means of establishing a communications link between the computers may be used.
본 발명의 수많은 실시예들은 컴퓨터화된 시스템에 특히 적합하게 되어 있다고 생각되지만, 본 명세서에서 어떠한 것도 그러한 실시예에 본 발명이 국한되는 것을 의미하는 것은 아니다. Numerous embodiments of the present invention are thought to be particularly well-suited for computerized systems, none herein does not mean that the invention be limited to such embodiments. 이와는 대조적으로, 본 명세서에서 사용되는 용어 "컴퓨터 시스템"은 디바이스들이 사실상 전자, 기계, 논리 또는 버츄얼인지에 무관하게, 정보를 저장 및 처리할 수 있으며/또는 디바이스 자체의 행위 또는 실행을 제어하는 저장된 정보를 이용할 수 있는 임의의 그리고 모든 디바이스들을 포함하는 것을 의미한다. In contrast, the term "computer system" as used herein is stored in the device to control a virtual, electronic, mechanical, regardless of whether logical or virtual, to store and process information and / or the behavior of the device itself or running available information is meant to include any and all devices.
도 2는 예시적인 네트워크화된 또는 분배 컴퓨팅 환경의 개략적인 도면을 제공한다. Figure 2 provides a schematic diagram of an exemplary networked or distributed computing environment. 분배 컴퓨팅 환경은 컴퓨팅 오브젝트(10a, 10b, 등)와 컴퓨팅 오브젝트 또는 디바이스들(110a, 110b, 110c 등)을 포함한다. Distributed computing environment comprises computing objects (10a, 10b, etc.), and computing objects or devices (110a, 110b, 110c, etc.). 이들 오브젝트는 프로그램, 메소드, 데이터 저장, 프로그램가능한 로직 등을 포함할 수도 있다. These objects may comprise programs, methods, data stores, programmable logic, etc. 오브젝트들은 PDA들, 텔레비젼들, MP3 플레이어들, 개인용 컴퓨터들 등과 같은 동일 또는 상이한 디바이스들의 부분을 포함할 수도 있다. Object may comprise the portions of the same or different devices such as those of the the PDA, television, MP3 player, a personal computer. 각 오브젝트는 통신 네트워크(14)를 통해 다른 오브젝트와 통신할 수 있다. Each object can communicate with other objects via communications network 14. 이 네트워크는 자체적으로 다른 컴퓨팅 오브젝트들과 도 2의 시스템에 서비스를 제공하는 컴퓨팅 오브젝트들과 컴퓨팅 디바이스들을 포함할 수도 있으며, 자체적으로 다중 상호접속 네트워크를 나타낼 수도 있다. The network may also comprise computing objects and computing devices that provide services to the system of Figure 2 with its own other computing objects, may represent multiple interconnected networks themselves. 본 발명의 일 양상에 따르면, 각 오브젝트(10a, 10b, 등 또는 110a, 110b, 110c 등)는 API, 또는 다른 오브젝트, 소프트웨어, 펌웨어 및/또는 하드웨어를 이용하여 본 발명의 방법들을 수행하는데 사용된 프로세스의 이용을 요청하는 어플리케이션을 포함할 수도 있다. According to one aspect of the invention, used to carry out each of the objects (10a, 10b, etc. or 110a, 110b, 110c, etc.) API, or other object, software, using a firmware and / or hardware methods of the invention It may include an application that requested the use of the process.
또한, 110c와 같은 오브젝트는 다른 컴퓨팅 디바이스(10a, 10b 등 또는 110a, 110b 등)에 대해 호스트될 수도 있다는 것을 이해할 수 있다. Also, objects such as 110c can be appreciated that a host for the other computing device (such as 10a, 10b, etc. or 110a, 110b). 따라서, 도시된 물리적 환경이 컴퓨터들로서 접속된 디바이스를 나타낼 수도 있다고 할지라도, 그러한 도시는 단지 예시적인 것이며 PDA들, 텔레비젼, MP3 플레이어 등과 같은 다양한 디지털 디바이스들, 인터페이스들, COM 오브젝트들과 같은 소프트웨어 오브젝트 등을 포함하는 물리적 환경이 대안적으로 도시되거나 기술될 수도 있다. Therefore, even if it could illustrated physical environment represented to a device connected as a computer, such a city is merely exemplary of a variety of digital devices, such as PDA s, television, MP3 player, interfaces, software objects such as COM objects and the like may be shown or described in the physical environment including the alternative.
분배 컴퓨팅 환경을 지원하는 다양한 시스템, 컴포넌트들 및 네트워크 구성들이 있다. There are a variety of systems, components, and network configurations that support distributed computing environments. 예를 들면, 컴퓨팅 시스템들은 로컬 네트워크 또는 광역 분배 네트워크에 의해, 유선 또는 무선 시스템에 의해 함께 접속될 수도 있다. For example, computing systems may be connected together by wired or wireless systems, by local networks or wide area distribution networks. 현재, 수많은 네트워크들은 광역 분배 컴퓨팅에 대한 기반을 제공하며 많은 상이한 네트워크를 포함하는 인터넷에 결합된다. Currently, many networks are coupled to the Internet, which provides the basis for wide-area distributed computing, including a number of different networks. 그러한 임의의 기반들은 본 발명에 따른 예시적인 통신에 이용될 수도 있다. Any base that may be used in the exemplary communication in accordance with the present invention.
인터넷은 컴퓨터 네트워킹 분야에서 잘 알려져 있는, 프로토콜의 TCP/IP 슈트를 활용하는 네트워크 및 게이트웨이의 집합을 공통적으로 참조한다. Internet refers to the collection of networks and gateways that well known, utilizing the TCP / IP suite of protocols in the computer networking field in common. TCP/IP는 "Transmission Control Protocol/Internet Protocol"에 대한 두문자어이다. TCP / IP is an acronym for "Transmission Control Protocol / Internet Protocol". 인터넷은 사용자들이 네트워크(들)를 통해 정보를 상호작용 및 공유할 수 있게 하는 네트워킹 프로토콜을 실행하는 컴퓨터들에 의해 상호접속된 지형학적으로 분배된 원격 컴퓨터 네트워크의 시스템으로서 기술될 수 있다. The Internet can be described as a user that the interactive system and a remote computer in a distributed network topography interconnected by executing networking protocols that allow computers to share information over the network (s). 그러한 광범위한 정보 공유로 인해, 인터넷과 같은 원격 네트워크들은 개발자들이 필수적으로 제약없이, 특수화된 동작 또는 서비스를 수행하기 위한 소프트웨어 어플리케이션을 설계할 수 있는 오픈된 시스템에 끌어들일 수 있었다. Due to such extensive information sharing, remote networks such as the Internet, were able to draw on an open system that can design software applications for developers to essentially carries out specialized operations or services without restriction.
따라서, 네트워크 기반은 클라이언트/서버, 피어-투-피어, 또는 하이브리드 구조와 같은 네트워크 토폴로지들의 호스트를 인에이블할 수 있다. Thus, the network-based client / server, peer-may enable a host of the peer, or a network topology such as a hybrid structure-to. "클라이언트"는 관련되지 않는 다른 클래스 또는 그룹의 서비스들을 이용하는 클래스 또는 그룹의 멤버이다. "Client" is a member of a class or group, using different classes or groups of services that are not related. 따라서, 컴퓨팅시, 클라이언트는 다른 프로그램에 의해 제공된 서비스를 요청하는, 프로세스, 즉 대강 한 세트의 명령 또는 작업이다. Therefore, in computing, a client is a command or operation of the process, that is roughly set to request a service provided by another program. 클라이언트 프로세스는 다른 프로그램 또는 서비스 자체에 관한 임의의 작업 상세를 "아는 것(know)"없이 요청된 서비스를 활용한다. The client process utilizes the requested service to any task details about the other program or the service itself, without "knowing (know)". 클라언트/서버 구조에서, 특히 네트워크화된 시스템, 클라이언트는 통상적으로 다른 컴퓨터, 예를 들면, 서버에 의해 제공된 공유된 네트워크 리소스를 억세스하는 컴퓨터이다. In the client function / server architecture, particularly a networked system, a client is typically, for a different computer, for example, a computer that accesses shared network resources provided by a server. 도 2의 예에서, 환경에 따라, 임의의 컴퓨터가 클라이언트, 서버, 또는 둘다로 고려될 수 있다고 할지라도, 컴퓨터들(110a, 110b 등)은 클라이언트들로서 고려될 수 있고 컴퓨터들(10a, 10b 등)은 서버들로서 고려될 수 있다. In the example of Figure 2, depending on the circumstances, any of the client computer, a server, or even if they can be considered to be both, the computer (110a, 110b, etc.) can be thought of as clients and computers (10a, 10b, etc. ) it can be thought of as the server. 임의의 이들 컴퓨팅 디바이스들은 본 발명의 사용자 정의 타입 기술들을 포함하는 방식으로 데이터를 처리할 수도 있다. Any of these computing devices may be processing data in a manner that includes a user defined type of technology of the present invention.
서버는 통상적으로 인터넷과 같은 원격 또는 로컬 네트워크를 통해 억세스가능한 원격 컴퓨팅 시스템이다. The server is accessible remote computing system via a conventional remote or local network such as the Internet. 클라이언트 프로세스는 제1 컴퓨터 시스템에서 액티브 상태에 있을 수 있으며, 서버 프로세스는 통신 매체를 통해 서로 통신하는 제2 컴퓨터 시스템에서 액티브 상태에 있을 수 있기 때문에, 다수의 클라이언트들이 서버의 정보 수집 능력의 이점을 취할 수 있으며 분배 기능을 제공한다. The client process may be active in a first computer system, the server processes the advantage of the second because it is in the active state in a computer system, collecting a large number of clients of the server information, the ability to communicate with one another over a communications medium to take and provide distribution capabilities. 본 발명에 따라 활용된 임의의 소프트웨어 오브젝트들은 분배 억세스 다중 컴퓨팅 디바이스들일 수도 있다. Any software objects utilized in accordance with the present invention are distributed access may be multiple computing devices.
프로토콜층에 의해 제공된 기능을 활용하는 클라이언트(들) 및 서버(들)이 서로 통신할 수도 있다. Client (s) and server (s) to take advantage of the functionality provided by a protocol layer may communicate with each other. 예를 들면, HTTP(HyperText Transfer Protocol)는 WWW(World Wide Web) 또는 "Web"과 결합하여 사용되는 공통 프로토콜이다. For example, (HyperText Transfer Protocol) HTTP is a common protocol that is used in combination with (World Wide Web) WWW or "Web". 통상적으로, IP 어드레스와 같은 컴퓨터 네트워크 어드레스 또는 URL(Universal Resource Locator)와 같은 다른 참조는 서버 또는 클라이언트 컴퓨터들을 서로 식별하는데 사용될 수 있다. Typically, the other reference such as a computer network address or URL (Universal Resource Locator), such as an IP address may be used to identify the server or client computers to each other. 네트워크 어드레스는 URL 어드레스로서 참조될 수 있다. The network address can be referred to as a URL address. 통신은 임의 활용가능한 통신 매체를 통해 제공될 수 있다. Communication can be provided over a communications medium capable of any use.
도 2는 본 발명이 이용될 수도 있는, 네트워크/버스를 통해 클라이언트 컴퓨터들과의 통신시 서버를 이용한, 예시적인 네트워크화된 또는 분배 환경을 도시한다. Figure 2 illustrates a communication when using a server, an exemplary networked or distributed environment, with client computers via a network / bus, which may be used by the present invention. 네트워크/버스(14)는 본 발명에 따라 휴대용 컴퓨터와 같은 다수의 클라이언트 또는 원격 컴퓨팅 디바이스들(110a, 110b, 110c, 110d, 110e 등), 핸드헬드 컴퓨터, 씬 클라언트, 네트워크화된 기기, 또는 VCR, TV, 오븐, 라이트, 히터 등과 같은 다른 디바이스를 이용하는, LAN, WAN, 인트라넷, 인터넷 또는 일부 다른 네트워크 매체일 수도 있다. Network / bus 14 is a large number of client or remote computing devices (110a, 110b, 110c, 110d, 110e, etc.), handheld computer, thin client function, networked device, such as a portable computer according to the present invention, or VCR , TV, using a different device, such as an oven, light, heater, LAN, WAN, intranet, the Internet or may be some other network medium. 따라서, 본 발명은 데이터베이스 저장에서 사용자 정의 타입을 생성하는 것이 바람직한 것에 접속하여 임의의 컴퓨팅 디바이스에 적용될 수도 있다는 것이 고려된다. Accordingly, the invention is connected as desired to create a user-defined types from the database stored is contemplated that may be applied to any computing device.
통신 네트워크/버스(14)가 인터넷인 네트워크 환경에서, 예를 들면, 서버들(10a, 10b 등)은 클라이언트들(110a, 110b, 110c, 110d, 110e 등)이 HTTP와 같은 임의의 다수의 공지된 프로토콜들을 통해 통신하는 서비들일 수 있다. In the communications network / bus 14 is the Internet network environment, for example, servers (10a, 10b, etc.) of the client (110a, 110b, 110c, 110d, 110e, and so on) is any of a number of well-known, such as HTTP It may be a service to communicate through a protocol. 서버들(10a, 10b 등)은 분배 통신 환경의 특성일 수도 있는 바와 같이 클라이언트들(110a, 110b, 110c, 110d, 110e 등)으로서 기능할 수도 있다. The server (10a, 10b, etc.) may also function as a client (110a, 110b, 110c, 110d, 110e, etc.) As can also be a characteristic of the distributed communication environment.
통신은 적당한 유선 또는 무선일 수도 있다. Communication may be a suitable wired or wireless. 클라이언트 디바이스들(110a, 110b, 110c, 110d, 110e 등)은 통신 네트워크/버스(14)를 통해 통신할 수도 있고 또는 통신할 수 없을 수도 있으며, 이와 관련된 독립형 통신을 가질 수도 있다. Client devices (110a, 110b, 110c, 110d, 110e, etc.) may not be able to also communicate and or communication through a communications network / bus 14, and may have independent communications associated therewith. 예를 들면, TV 또는 VCR의 경우에, 그 제어에 대한 네트워크화된 양상일 수도 있고 또는 아닐 수도 있다. For example, in the case of a TV or VCR, there may or may not be a networked yangsangil and for the control. 각 클라이언트 컴퓨터들(110a, 110b, 110c, 110d, 110e 등)과 서버 컴퓨터(10a, 10b 등)은 다양한 어플리케이션 프로그램 모듈 또는 오브젝트들(135)을 구비할 수도 있으며, 파일들 또는 데이터 스트림들의 부분(들)이 다운로딩되고, 전송되거나 이동될 수도 있는 파일들 또는 데이터 스트림들이 저장될 수도 있는 다양한 타입의 저장 구성요소들 또는 오브젝트에 대한 접속 또는 억세스가 구비될 수도 있다. Each of the client computers (110a, 110b, 110c, 110d, 110e, etc.) (such as 10a, 10b), the server computer is also provided with various application program modules or objects 135, a file or parts of the data streams ( s) are down loaded, may be provided with a connection for the transmission or that may be moved files or data streams are stored components of various types, which may be stored in or on an object or access. 임의의 컴퓨터(10a, 10b, 110a, 110b 등)는 본 발명에 따라 처리된 데이터를 저장하기 위한 데이터베이스, 메모리 또는 다른 저장 구성요소(20)의 유지 및 갱신을 담당할 수도 있다. Any computer (10a, 10b, 110a, 110b, etc.) may be responsible for the maintenance and updating of a database, memory or other storage element 20 for storing data processed according to the present invention. 따라서, 본 발명은 컴퓨터 네트워크/버스(14)와 상호작용하며 억세스할 수 있는 클라이언트 컴퓨터들(110a, 110b 등)과 클라이언트 컴퓨터들(110a, 110b 등)과 다른 유사 디바이스들과 상호작용할 수도 있는 서버 컴퓨터들(10a, 10b, 등) 및 데이터베이스(20)을 갖는 컴퓨터 네트워크 환경에서 활용될 수 있다. Accordingly, the invention is a computer network / bus 14 and interact with the to access the client computer (110a, 110b, etc.) and client computers (110a, 110b, etc.) with the server that may interact with other similar devices having a computer (10a, 10b, etc.) and database 20 may be utilized in a computer network environment.
UDT 및 관리 코드 UDT and managed code
도 3은 사용자 정의 타입의 인스턴스의 시리얼화 및 역시리얼화를 도시한 블럭도이다. Figure 3 is a serialization of the user-defined type instance and also a block diagram showing a real screen. 도시된 바와 같이, 사용자 정의 타입의 인스턴스는 메모리의 인스턴스를 나타내는 오브젝트의 시리얼화를 통해 디스크상에 잔존한다. , Instances of user-defined types as shown are left on the disk through the serialization of an object representing an instance of the memory. 어플리케이션이 UDT의 인스턴스의 메소드를 참조하는 표현 또는 술어를 포함하는 질문을 생성할 때, 잔존하는 형태의 인스턴스는 역시리얼화되고(프로세스는 또한 "수화(hydration)"으로서 참조됨) CLR은 그 저장된 값들을 수신하기 위해 풀 오브젝트에 대해 메모리를 할당한다. When the application generates a query containing the expression or predicates that refer to the UDT instance method, the instance of the residual form is also a real screen (a process also referred as a "hydrate (hydration)") CLR is the stored It allocates memory for the full object to receive values. 다음으로 CLR은 어플리케이션 또는 사용자가 원하는 행동을 수행하는 오브젝트에 대한 적당한 메소드를 실행한다. Next, the CLR executes the appropriate method on the object to perform an application or action that you want.
UDT 계승 UDT succession
본 명세서에서 사용된 바와 같이, 다음 용어들은 표시된 의미를 가질 것이다. As used herein, the following terms shall have the meaning indicated.
· 베이스 타입(Base Type) : 소정 타입이 슈퍼타입, 슈퍼클래스 또는 다양한 계승 모델의 적당한 조상(ancestor)으로부터 계승하며 또한 상술한 명칭으로 불리우는 타입. , Base type (Base Type): a predetermined type is inherited from a suitable ancestor (ancestor) of the supertype, or superclass inherit various models, and also the type referred to in the above-described designation.
· 서브 타입(Sub Type) : 베이스 타입으로서, 직접적이거나 다른 서브 타입을 통한 현재 타입을 갖는 타입. , Subtype (Sub Type): type having a current type with a base type, direct or different subtypes.
·사이트(Site) : 관련 타입 정의를 갖는 프로그래밍 언어의 컨텍스트. · Site (Site): the context of the programming language associated with the type definition. 예로서 다양한 선언, 파라미터 정의, 컬럼 정의 등을 포함한다. By way of example it includes various declared parameter definition, a column definition and the like.
· 선언 타입(Declared Type) : 사이트의 "컴파일 타임(compile time)" 타입, 테이블의 컬럼의 타입 또는 함수 파라미터. · Declaration types (Declared Type): SITE "compile time (compile time)" type, or column type of the table function parameters.
· 정확한 타입(Exact Type) : 특정값의 "런타임(runtime)" 타입. , Exact type (Exact Type): for a particular value of "run-time (runtime)" type. 강하게 타이핑된 시스템에서, 정확한 타입은 선언된 타입이거나, 선언된 타입의 서브 타입이다. In a strongly typed system, the exact type of the declared type or a subtype of the declared type.
· 대용가능성(Substitutability) : 서브타입의 값이 베이스 타입의 값에 대해 "대용"될 수 있는 사이트의 특성. · Substitution possibilities (Substitutability): Characteristics of the site, the value of the sub-types can be "a substitute" for the value of the base type. 예를 들면, 파라미터 대용가능성은 만일 함수가 특정 타입의 파라미터를 취하도록 선언되는 경우, 서브타입의 값으로 패스될 수 있어야 한다는 것을 의미한다. For example, a potential surrogate parameter means that ten thousand and one must have the function can be passed, the value of the subtype if declared to take the parameters of a particular type.
본 발명의 다양한 실시예의 경우, UDT들은 SQL 서버를 이용하여 등록된 어셈블리에서 수행된 관리 타입들이다. If the various embodiments of the present invention, are the UDT managed type performed in the assembly properties using the SQL server. UDT들은 테이블 정의 변수 및 파라미터를 포함하는 네이티브 타입이 사용될 수 있는 최상의 컨텍스트에 사용될 수 있다. UDT can be used in the best possible context, which can be a native type that contains the tables defined variables and parameters. UDT 계약에 확인된 UDT에서 정의된 메소드, 특성 및 필드들은 T-SQL로부터 실행될 수 있다. The methods, properties, and fields defined in the UDT UDT check to the contract it may be executed from T-SQL.
몇가지 실시예들의 경우, UDT들은 행위를 갖는 간단한 스칼라들이라고 가정된다. In the case of some embodiments, UDT are assumed to be the simple scalar having the behavior. 이러한 가정은 UDT들에 의해 지원되는 시리얼화 레이아웃 및 간단한 프로그래밍 모델에 반영된다. These assumptions are reflected in the serialized layout and simple programming model supported by the UDT. 예를 들면, 파일 시스템은 UDT 요약을 사용하여 간단한 스칼라들은 아니지만, 그 대신에 복잡한 구조 및 행위를 갖는 타입일 수 있는 "구조 타입들(structured types)"을 생성할 수도 있다. For example, the file system using a simple scalar UDT summaries, but may instead create a "structural types (structured types)", which can be a type having a complex structure, and act on.
다음 의사 코드는 본 발명의 몇가지 실시예들에 대한 서브타입의 생성을 기술한다. The following pseudo-code describes the generation of a sub-type for the several embodiments of the present invention.
CREATE TYPE [type-schema-name.]subtype-name CREATE TYPE [type-schema-name.] Subtype-name
UNDER[type-schema-name.]base-type-name UNDER [type-schema-name.] Base-type-name
EXTERNAL NAME assembly-name:clr-type-name EXTERNAL NAME assembly-name: clr-type-name
계승 계약을 설정하기 위해, 그리고 본 발명의 몇몇 실시예의 경우, UDT 저작권자는 예를 들면, SqlUserDefinedType 커스텀 속성, 그리고 전체 타입 패밀리에 적용되는 이 속성 상세 불변량에 대한 특성을 이용하여 타입 계층의 베이스 타입에 주석을 달아야만 한다. To establish a succession contract, and for some embodiments of the present invention, UDT copyright holder, for example, SqlUserDefinedType the base type of the custom attribute, and the type of layer by using the attributes for the property detail invariant is applied to the entire type family It must be annotated. SqlUserDefinedType에 대한 특성의 비배타적 리스트는 도 4에 도시되어 있다. Non-exclusive list of attributes for SqlUserDefinedType is shown in Fig. 다음으로, 타입 등록시, 사용자는 특정 타입이 등록되어야만 하는 베이스 SQL 타입을 표시하는 "언더(Under)" 절을 부가해야 하며, 예를 들면: Next, the type of registration, the user should be added to "under (Under)" section for displaying the base SQL type which must be registered to a particular type, for example:
/* 슈퍼타입없이 어드레스 타입을 생성 */ / * Supertype an address generation type without * /
create type Address create type Address
external name MyType::Address external name MyType :: Address
/* 이것 하에 USAddress 서브 타입을 생성 */ / * Create a USAddress subtypes under this * /
create type USAddress under Address create type USAddress under Address
external name MyType::USAddress external name MyType :: USAddress
본 발명의 몇몇 실시예들의 경우, 베이스 타입 명칭은 구체적인 개요로 유효 UDT로서 등록되어야 한다. For some embodiments of the invention, a base type name is to be registered as a valid UDT specific outline. 또한, CLR 타입은 베이스 타입 명칭이 정의되는 CLR 타입의 다이렉트 서브타입이다. Further, CLR type is a direct subtypes of the CLR type is a base type name is defined. 서브타입은 SqlUserDefinedType 속성을 정의하지 않아야 하며, 그 모계(parent)로부터 속성을 계승하여야만 한다. Subtypes and should not define SqlUserDefinedType properties, you should be inherit attributes from its mother (parent). 또한, 베이스 타입은 2진 차수되지 않아야만 한다. In addition, the bases are not to be only binary order. 유사하게, 베이스 타입으로 구체화된 모든 대역외 루틴 특성(SqlMethodAttribute 주석)은 서브타입 정의로 일관되어야 하며, - 구체적으로, 베이스 타입으로 정의된 모든 인덱스가능한 메소드들은 서브타입에 우선하는 서브루틴들에 대해 인덱스가능함- 이 정보는 베이스 타입으로부터 수집되며 CREATE TYPE 체크 부분으로서 서브타입의 모든 루틴들에 대해 열거함으로써 검증될 것이다. Similarly, all the band routines characteristics embodied in the base type (SqlMethodAttribute tin) should be consistent with the subtype definition - specifically, all the indices available methods defined in the base type are for subroutines that override Subtype available index - this information will be verified by enumeration for all the routines of the subtype as CREATE tYPE check part are collected from the bases.
본 발명의 다양한 실시예들의 경우, UDT 계승에 대한 프레임워크는 특성 및 그 근본적인 실행의 외부 표면적의 관점에서 기술될 수도 있다. If the various embodiments of the invention, a framework for a UDT succession may be described in terms of external surface area of ​​the fundamental characteristics and running. 또한, 서브타입의 값들은 컬럼 정의의 대용가능한 것; In addition, the subtype values ​​are available to substitute for the column definition; 로컬 변수 및 배치의 파라미터 선언, 저장된 절차, 및 함수; Parameter declaration of local variables and arranged, stored procedures, and functions; 및 컬럼의 선언 타입 또는 임의의 서브타입들인 값들을 결과 컬럼이 포함할 수 있는 질의 결과 세트로 고려될 수 있다. And it has a declared type or any subtype, which are values ​​of the column can be considered as a query result set, which may include the result column.
본 발명의 몇몇 실시예들의 경우, 서브타입의 인스턴스가 서브타입이라고 선언되는 컬럼에 저장되게 하는 것은 다음의 함축적인 의미를 갖는다: (a) 시리얼화 포맷은 베이스 타입 및 서브타입에 대해 동일해야만 한다; For some embodiments of the invention, it is to be stored in the column is an instance of a subtype that is declared to be a subtype has the following implications: (a) a serialization format, must be the same for the base type and subtype .; 그리고 (b) 모계에 대한 MaxByteSize 값은 서브타입의 인스턴스를 저장할 만큼 충분히 커야만 한다. And (b) MaxByteSize value for the mother should be sufficiently large enough to store an instance of a subtype. 만일 불충분한 공간이라면, 실행시, 베이스 타입의 컬럼에 서브타입의 값을 저장하려는 시도는 실패할 것이며, 이러한 에러를 방지하기 위해 베이스 타입은 제한없이 정의될 수 있다. If ten thousand and one sufficient space, the attempt to store the value of the subtype of the column run at a base type will fail, can be defined without a base type it is limited to prevent such an error.
본 발명의 다양한 실시예들의 경우, 모든 할당은 정확한 타입의 값을 저장할 수 있으며, 베이스타입의 변수에 서브타입의 값을 할당하는 것은, 정확한 타입의 값이 타겟 타입에 할당가능한 경우에만 연속하게 될 명백한 변환을, 서브타입의 변수에 베이스타입의 선언 타입을 갖는 값을 할당하는 것이 요구되는 동안 항상 연속할 것이다. If the various embodiments of the present invention, any assignment may store the value of the correct type, assigning the value of the subtypes in a variable of a base type, the value of the correct type will only continuous case can be assigned to the target type the apparent conversion, will always continuously until it is desired to assign a value having the declared type of the base type of the sub-variable type. 예를 들면, 만일 Address가 타입인 경우와, 만일 USAddress가 어드레스의 서브타입인 경우, Address는 도 5에 도시된 바와 같이 타입 Address의 컬럼 addrcol을 갖는 테이블일 수도 있다. For example, if the Address Type and a case, if the address is in USAddress subtypes, Address may be a table having a column of type Address addrcol as shown in Fig.
본 발명의 몇몇 실시예들에 대한 실행시, 2개의 타입들간의 계승 관계에 관한 정보는 데이터베이스의 스칼라 타입시스템의 제1 클래스 부분이고, 이 정보는 할당가능성 및 값들간의 변환을 결정하는데 사용된다. Information about the inheritance relationship, between the two types of execution for some embodiments of the present invention is a first class section of the scalar type system of the database, this information is used to determine the transformation between the assigned probability and the value . 임의 실시예들에서, IS OF 및 TREAT로 명명되는 2개의 새로운 조작자들은 스칼라 시스템에 도입되며, 이들 조작자들은 스칼라 표현 평가동안 타입 술어 및 적절한 변환을 모델링하는데 사용될 수도 있다. In certain embodiments, IS OF and two new operator that is designated as TREAT they are introduced to the scalar system, these operators may be used to model the expression for the evaluation scalar type predicates and proper conversion. 공통 조작자들(예를 들면 질문의 프로젝트 리스트에서의 IS OF 술어 및 TREAT)을 추론하고 결합하는 적당한 세만틱을 인에이블하기 위해, TREAT 조작자는 질문 컴파일 동안 변형된다. Common to the operator to infer (e.g. IS OF predicates and TREAT in Record inquiry) and enable the appropriate semantic combining, is deformed during TREAT the operator questions compiled. 추가 최적화로서, IS OF 조작자는 계층 타입 id 면에서 재기입되어, 활용가능할 수도 있는 임의의 타입 특정 인덱스의 이점을 취할 수도 있다. As a further optimization, IS OF operator is rewritten in the hierarchical type id surface, and may take advantage of any particular type of index that may be utilized. UDT 표현에 접하게 되었을 때, UDT 표현 컴파일 프로세스는 발송의 본질(가상 대 정적)에 대한 어카운트로 변형되고, 파라미터 타입을 포함하는 메소드의 풀 서명에 기초한 메소드들을 명확하게 한다. When in contact with the UDT expression, UDT expression compilation process is modified to account for the nature of the shipment (virtual-to-static) to clarify the method based on the full signature of the method that contains the type of parameter. 이 정보는 외부 컴파일 프로세스로부터 패스인되고 메소드 로케이션에 사용된다. This information is the path from the outside of the compilation process and used in the method location. 일단 이 메소드가 발견되면, 적절한 IL 명령은 정적 발송 또는 가상 메소드를 실행하는데 사용된다. Once a method is found, the appropriate IL instruction is used to execute the static or a virtual method dispatch. 다음으로 실행시, UDT 역시리얼화 코드는 정확한 타입의 값을 사용하여 올바른 타입의 오브젝트를 생성하고 이를 지속적인 상태로 존속시킨다. On the next run, UDT thereby also the real code is generated the object of the correct type by using a value of the correct type and retained them in a constant state. 이 오브젝트는 실행 스택에 대해 푸쉬되고 이 메소드가 실행된다. This object is pushed, and the method is executed for the execution stack.
몇몇 실시예의 경우, 클라이언트/서버 역시리얼화기는 또한 역시리얼화중인 정확한 타입의 값을 이용하여 역시리얼화되어야 하는 CLR 타입을 결정한다. In some embodiments, a client / server also real weapon is also well also determine the CLR type that needs to be real-screen using the correct type of value that is a real screen. 만일 클라이언트가 이전에 타입을 접하지 못했다면, 복제된 접속에 대한 대역외 요구를 하여 요구에 대한 CLR에 관한 메타데이터를 다운로딩하고 이 정보를 이용하여 CLR 타입을 로케이션시킨다(도 6 참조). If the client did not contact the previous type to thereby download the metadata about the CLR to the request by the band required for the replication connection loading and location to CLR type using this information (see Fig. 6).
몇몇 실시예의 경우, T-SQL로부터 실행된 모든 메소드들, 특성 및 필드들이 정확한 타입의 인스턴스를 동적으로 이용하지만 선언된 타입의 호출 사이트는 이용하지 않고 해결되는 것이 주어질 수도 있다. In some embodiments, all of the execution from the T-SQL methods, properties and fields are dynamic used as an instance of the correct type, but a call to the declared type of the site may be given to be solved without use. 게다가, 슈퍼타입으로 정의되며 T-SQL로부터 직접적으로 호출할 수 있는 모든 계승 메소드들, 특성들 및 필드들은 허용될 것이다. In addition, is defined as the supertype inherits all methods that can be invoked directly from the T-SQL, properties and fields will be accepted. 따라서, 선언된 메소드 대 계승된 메소드를 실행하기 위한 신택스의 차이는 없을 것이다. Thus, the difference between the syntax for executing the succession declaration for the method method will not.
본 발명의 몇몇 실시예의 경우, 타겟 실행(target invocation)을 위치시키기 위한 메소드는 다음과 같이 의사 코드로 특징지워질 수 있다: 만일 D가 선언된 타입의 호출 사이트이고, M이 메소드 명칭이며, P1...Pn이 파라미터들의 타입들인 T1...Tn을 갖는 메소드에 대한 파라미터들이라면, 만일 질문이 "select<site of type D>.M(P1...Pn)"이면, 실행 메소드는 다음을 포함할 것이다: In some embodiments of the present invention, a method for positioning a target run (target invocation) may be characterized as a pseudo-code is as follows: a ten thousand and one D is called the declared type of the site, and M is a method name, P1. If by those ..Pn the parameter to the method having the type which are T1 ... Tn of the parameters, if the question is "select <site of type D> .M (P1 ... Pn)", execution method, including: something to do:
startType = D; startType D =;
Method targetMethod = null; Method targetMethod = null;
If (startType == null) If (startType == null)
throw new NoSuchMethodException(D, M); throw new NoSuchMethodException (D, M);
Method[] methods = GetMethods(startType, M, {T1...Tn}) Method [] methods = GetMethods (startType, M, {T1 ... Tn})
If (methods.Length == 0) If (methods.Length == 0)
startType = startType.BaseType; startType = startType.BaseType;
else if (methods.Lengh > 1) else if (methods.Lengh> 1)
throw new OverloadedMethodException(M); throw new OverloadedMethodException (M);
targetMethod = methods[0]; targetMethod = methods [0];
본 발명의 몇몇 실시예들에 사용된 메소드 실행에 관련하여, 메소드 명칭 매칭은 2진수 대조(binary collation)를 이용한다. In relation to the execution method used in some embodiments of the present invention, a method name matching is used in the binary control (binary collation). 또한, 파라미터 타입 체크는 각 파라미터에 대한 CLR 타입이 SQL 파라미터 타입으로부터 함축적으로 변환가능한지를 보장한다. In addition, the parameter types are checked to ensure the implicit conversion is possible from the SQL parameters CLR type is a type for each parameter. 게다가, 메소드 오버로딩은 만일 동일한 타입의 2개의 적당한 메소드들이 있는 경우에 허용되지 않지만, 만일 2개의 메소드들이 상이한 수의 파라미터들을 취하거나 계층이 상이한 타입으로 정의되는 경우에 허용된다. In addition, the method overloading is permitted in the case where not allowed, but if there are two suitable methods of emergency the same type, if the two methods are taken or layer is defined with a different type parameters of the different number. 유사하게, 만일 메소드 또는 속성이 SQL로 등록되지 않은 CLR 서브타입의 인스턴스를 리턴시키는 경우, 시스템은 실행시 에러를 일으킬 것이다. If that Similarly, if a method or property is not registered as a SQL returns an instance of the CLR subtypes, the system will cause a runtime error. 또한, 사용된 실제 발송 명령은 해결되었던 메소드에 따라 좌우된다 -즉, 만일 발견된 메소드가 가상 또는 오버라이드 메소드로서 정의되는 경우, 가상 발송이 사용되고, 그밖에 정적 발송이 사용된다. Furthermore, the actual command sent used is dependent upon the method that was solved - that is, when it is found that the method defined as a virtual or ten thousand and one override method, virtual ships are used, In addition, this static ship are used.
본 발명의 다양한 실시예들의 경우, 값이 올바른 타입이라면 타입으로부터 그 서브타입(다운캐스트)으로의 변환이 계속되는 한, 타입으로부터 그 슈퍼타입(업캐스트)로의 변환은 항상 계속될 것이며, 정확한 실패 모드가 사용된 변환 조작자에 따라 좌우되는 올바른 타입이 아니라면 변환은 실패할 것이다. If the various embodiments of the present invention, if the value is a valid type conversion to the sub-type (downcast) as its super-type (up cast) from the type followed by a conversion from the type will always be continued, accurate failure mode If the correct type is converted it is dependent on the conversion operator uses will fail.
이러한 실시예들의 경우, 3개의 변환 조작자들이 있다: CONVERT, CAST 및 TREAT는 다음과 같다: In the case of this embodiment, there are three conversion operator: CONVERT, CAST and TREAT is as follows:
· CONVERT([schema.]type, target_type)→[schema.]type의 값 또는 변환이 실패한 경우의 에러. · CONVERT ([schema.] Type, target_type) → [schema.] If the value of the error or the conversion of a type that failed.
· CAST([schema.]target_type으로서의 값)→[schema.]type의 값 또는 변환이 실패한 경우의 에러. · CAST ([schema.] Value as target_type) → [schema.] If the value of the error or the conversion of a type that failed.
· TREAT([schema.]target_type으로서의 값)→[schema.]type의 값 또는 변환이 실패한 경우의 에러. · TREAT ([schema.] Value as target_type) → [schema.] If the value of the error or the conversion of a type that failed.
이들 실시예들의 경우, CAST와 CONVERT는 계승 및 대용을 이해하기 위해 변형되었던 현존 조작자들일 수도 있다. For these embodiments, CAST and CONVERT may accept existing operator was modified in order to understand the succession and substitute. 한편, TREAT는 SQL99 컨포먼트(conformant) 신택스(SQL 표준의 §6.25)이며 슈퍼타입의 표현이 그 서브타입들 중 하나의 표현으로서 처리될 때 다운캐스팅 또는 내로윙 시나리오시 사용하기 위한 것이다(표준은 이 서브타입 처리라 칭한다). On the other hand, the TREAT SQL99 keonpo garment (conformant) syntax (SQL standard §6.25) is a representation of the super type intended to be used when the wing down into the scenario, casting, or when it is processed as a representation of the sub-types (standard, referred to as a sub-type process). 이 조작자는 2개의 컨텍스트에서 유효하다: (a) 서브타입으로 정의되는 특성들을 억세스하는 것과; The operation is available in two contexts: (a) that access to the characteristics that are defined in the sub-types; (b) 서브타입으로 정의되는 특성들을 갱신하는 것. (B) to update the properties defined by the subtype. 컴파일시, 만일 선언된 타입의 값이 target_type의 슈퍼타입이 아니라면, 에러는 보고될 것이며 TREAT는 실패할 것이다. If the compile time, if the super-type of the value of the declared type target_type, an error will be reported TREAT will fail. 예를 들면: For example:
select TREAT(person as Employee).Salary from T select TREAT (person as Employee) .Salary from T
where person is of (Employee) where person is of (Employee)
update T update T
set TREAT(person as Employee).Salary = 10000 set TREAT (person as Employee) .Salary = 10000
where ID = x where ID = x
한편, 표준은 NULL 인스턴스에 대한 뮤테이터(mutator) 메소드를 실행하는 것을 지원하지 않으며, SQL 서버는 또한 TREAT 조작자의 결과들에 대한 제한을 강화할 것이다. On the other hand, the standard does not support running the mutator (mutator) method on an instance NULL, SQL Server will also strengthen the restrictions on the results of the TREAT operator. 만일 TREAT가 NULL 값을 생성하는 경우, 시스템은 NULL 값을 갱신하려는 시도시 에러를 일으킬 것이다. If a TREAT generates a NULL value, the system will cause an error when trying to update a NULL value. 바꾸어 말하자면, CONVERT, CAST 및 TREAT 명령에 대한 행위 및 세만틱을 일반적으로 도시하는 도 7에 도시된 테이블에 나타난 바와 같이, 논리적으로 TREAT(type_x로서의 값)는 본 발명의 몇몇 실시예들의 경우 IF(값 IS OF type_x) THEN 값 그밖에 NULL으로 변형될 수 있다. In other words, CONVERT,, logically TREAT (value as type_x) as shown in the table shown in Figure 7 generally illustrates the behavior and the semantic of the CAST and TREAT command is the case of some embodiments of the invention IF ( value iS OF type_x) THEN Other values ​​may be modified as NULL.
몇몇 실시예들의 경우, 그리고 UDT 확장의 부분으로서, SqlUserDefinedTypeAttribute 및 SqlMethodAttribute에 대한 새로운 특성은, SqlMethodAttribute를 이용하여 참값(true)으로 설정함으로써 특정 메소드에 대해 오버라이트(override)될 수 있다고 할지라도, 만일 수신기(이것)가 null값이라면 타입에 대한 메소드들이 실행되어야 하는지를 제어하는데 사용될 수도 있다. For some embodiments, and as part of the UDT extension, new attributes for SqlUserDefinedTypeAttribute and SqlMethodAttribute is, by the set to a true value (true) using SqlMethodAttribute even if they can be overwritten (override) for a specific method, if the receiver may be used to control whether (it) a null value if the method should be executed are of the type. 이들 실시예들의 경우, 디폴트 값은 FALSE이다. For these embodiments, the default value FALSE. 또한, 만일 리턴 타입의 메소드가 null가능한 타입이라면, 타입의 구별가능한 null값은 리턴된다. In addition, if the return type of the method, null if the available types, null values ​​are distinguishable types of returns. 만일 리턴 타입이 null 가능하다면, 타입에 대한 디폴트 clr 값은 리턴된다. If ten thousand and one return type is possible null, then a default value for the type is returned clr. 참조 타입들에 대한 디폴트 값은 null이고, 값 타입들에 대한 디폴트 값은 타입에 대한 디폴트 구성자의 호출 결과이다. The default values ​​for the reference type is null and the default values ​​for value type is the result of calling party default configuration for the type.
몇몇 실시예의 경우, 시스템의 모든 null 값들은 타이핑된다. In some embodiments, all the null values ​​of the system are typing. 그러나, 표준으로 구체화된 타입 술어들은 값들이 null이라면 미지(unknown)로서 리턴되기 때문에, SQL로부터 특정 타입의 null값을 결정할 수 없다. However, the type of predicate values ​​are embodied in the standards are null because if returned as unknown (unknown), a null value can not be determined for a particular type from SQL. 따라서, 이들 실시예들은 모든 null 값들은 선언된 타입의 호출 사이트인 것으로서 처리될 수도 있으며, 사이트에 삽입되었던 값의 정확한 타입이 아니다. Accordingly, these embodiments are all null values ​​may be treated as being a call to the declared type of site, not the correct type of value that was inserted into the site.
declare @emp Employee declare @emp Employee
set @emp = NULL set @emp = NULL
insert into Persons values (@emp) insert into Persons values ​​(@emp)
select pcol from Persons - returns a null value, the type of the instance is Person select pcol from Persons - returns a null value, the type of the instance is Person
다양한 실시예들의 경우, 타입 술어는 (a) 타입의 모든 인스턴스들과 컬럼의 모든 서브타입들은 물론 컬럼의 특정 타입의 모든 인스턴스들을 지원한다(SQL99 표준의 §8.14에 설정된 바와 같이). If the various embodiments, the type of predicate (a) and all subtypes of all instances of the type and columns as well as support for all instances of a particular type of column (as set in §8.14 of SQL99 standard). 다음을 고려하자: Consider the following:
udtColumnOrValue IS [NOT] OF (type-specifier) udtColumnOrValue IS [NOT] OF (type-specifier)
type-specifier ;;= [ONLY} TYPE [, type-specifier] type-specifier ;; = [ONLY} TYPE [, type-specifier]
만일 udtColumnOrValue가 null이면, 결과는 미지이며, 그렇지 않으면 술어는 불린(boolean) 결과를 리턴시킨다. If the udtColumnOrValue is null, the result is thus unknown, and, if not predicate returns (boolean) boolean result.
타입 술어는 모든 스칼라 컨텍스트에 사용될 수 있으며, 여기서 불린을 생성하는 표현은 예를 들면, 단지 타입의 인스턴스와 같이 허용된다. Type predicates can be used for any scalar context, the expression generating a called here, for example, is permitted only as an instance of the Type.
select convert(USAddress, addrcol) as USAaddrCol from Addresses select convert (USAddress, addrcol) as USAaddrCol from Addresses
where addrcol is of (only USAddress); where addrcol is of (only USAddress);
이것은 타입의 인스턴스들과 모든 그 서브타입들에 대조된다: This is in contrast to the instance of the type with all its subtypes:
where addrcol is of (USAddress); where addrcol is of (USAddress);
또한, 본 발명의 몇몇 실시예들의 경우, sys.assembly_types 카탈로그 뷰는 다음과 같은 하나의 추가적인 컬럼을 가질 것이다. In the case of some embodiments of the present invention, sys.assembly_types catalog view will have one additional column, including:
base_type_id base_type_id int int The user_type_id of my basetype The user_type_id of my basetype
또한, 본 발명의 수많은 실시예들의 경우, 가상 메소드가 서브타입에서 오버라이드될 때, 오버라이드 실행은 베이스 메소드에서 특정화된 루틴 특성들에 대해 대용가능해야만 한다. In the case of a number of embodiments of the invention, when a virtual method is overridden in the subtype, override execution must be substituted for the routine the characteristics specified in the base method. 이 매트릭스는 타입 등록시에 체크되며 에러는 유효 조합이 검출되는 경우에 생성된다. This matrix is ​​checked on the type and time of registration error is generated when a valid combination is detected. 여기서 가이드 원리들은 서브타입 실행이 베이스 메소드의 인덱스가능성을 깨지 않아야 한다는 것이다. The guiding principles are that it is a sub-type execution should break the possibility of index-based methods. 따라서, 만일 베이스 메소드 정의가 인덱스가능하다면, 오버라이드 실행은 또한 인덱스가능해야만 한다. Therefore, if the index can be defined if the base method, override execution must also enable the index. 게다가, 서브타입 실행은 베이스 메소드 정의(null 수신기 및 독립변수(argument), sqlfacet, 데이터 억세스, 뮤테이터 메소드 실행)에 대해 컴파일된 표현을 무효로 만들지 않아야 한다. In addition, a sub-type execution should not become invalid compiled representation with respect to the base method definition (null receiver and the independent variable (argument), sqlfacet, data access, run mutator methods). 한편, 서브타입 실행은 베이스와 충돌하지 않지만 활성화(인텍스 가능하게)되도록 캐스트 또는 처리될 필요가 있는 행위를 추가할 수 있다. On the other hand, the sub-type execution may be added to the actions that need to be cast or treated to be active (enable index) does not conflict with the base. 만일 "N"이 "새로운 서브타입"을 지칭하는 경우, 즉, 베이스 타입이 거짓(false)으로 설정되거나 정의되지 않는다고 할지라도 서브타입은 특성을 참(true)로 설정할 수 있으며, 만일 "S"가 "베이스 정의와 동일한 것"을 지칭하는 경우, 즉, 서브타입의 정의가 베이스 타입과 동일한 경우에, UDT 메소드들은 도 8에 도시된 루틴 특성들을 포함할 수도 있다. If the "N" is referred to a "new subtype", that is, the base type, although this does not set or defined as false (false) Fig subtypes may set the property to True (true), ten thousand and one "S" sometimes it refers to "the same thing to the base definition", i.e., the definition of sub-types of the same case and the base type, UDT methods may include a routine characteristic shown in Fig.
상술한 설명에 부가하여, 그리고 본 발명의 몇가지 실시예들의 경우, 모든 UDT 값은 특정 type_id 주변을 전송해야 하고, 이것은 일단 UDT가 생성되면 결코 변경할 수 없다. If in addition to the above description, and of several embodiments of the present invention, all UDT values ​​can never be changed when the need to send specific type_id around, and this one UDT is generated. UDT 계승을 이용한 2진 차수에 대한 지원이 없기 때문에,이 메소드는 타입에 대한 2진수 비교에 영향을 미치지 않는다(2진수 비교될 모든 인스턴스가 동일한 type_id를 가지게 되는 것과 같이). Since there is no support for the binary order using the UDT succession, this method does not affect the comparison of the binary type (for example, they may have any instance be compared to a binary number that have the same type_id). 게다가, DROP 타입은 서브타입의 값을 포함하는 임의의 슈퍼타입으로 정의된 컬럼들이 없는지를 체크해야 한다(따라서 DROP 타입은 결과로서 고가일 수 있다). Furthermore, DROP type must check that there are a column defined in any of the supertypes, including the value of the sub-type (hence DROP type can be expensive as a result). 유사하게, 추가 서브타입은 체인 형태의 모든 타입에 대한 슈퍼타입을 참조하는 현존 comp 플랜들을 무효로 만들 것이다. Similarly, additional sub-types will make the existing comp plan that refers to the super-type for every type of chain form as invalid.
본 명세서에서 기술된 다양한 시스템, 방법 및 기술들은 하드웨어 또는 소프트웨어를 이용하여 실행될 수도 있거나 이들 둘다의 조합으로 적당한 곳에서 실행될 수도 있다. Herein, a variety of systems, methods and techniques described may be performed in a suitable place by a combination of these, or both may be performed using hardware or software. 따라서, 본 발명의 방법들 및 장치들, 또는 임의의 양상 또는 그 부분들은 플로피 디스켓, CD_ROM, 하드 드라이브 또는 임의의 다른 기계-판독 저장 매체와 같은 유형의 매체에서 구현된 프로그램 코드(즉, 명령)의 형태로 취해질 수 있으며, 여기서 프로그램 코드가 컴퓨터와 같은 기계에 로딩되고 실행될 때, 기계는 본 발명을 실행하기 위한 장치가 된다. Thus, the methods and apparatus of the present invention, or any of the aspects or portions thereof, are a floppy disk, CD_ROM, hard drives, or any other machine-program code (i.e., instructions) embodied in the type of medium, such as a read storage medium It may be taken in the form of, where the program when the code is loaded and executed on a machine, such as a computer, the machine becomes an apparatus for practicing the invention. 프로그램가능한 컴퓨터들상에서의 컴퓨터 코드 실행의 경우에, 컴퓨터는 프로세서, 이 프로세서에 의해 판독가능한 기억 매체(휘발성 및 불휘발성 메모리 및/또는 저장 소자를 포함), 적어도 하나의 입력 디바이스를 일반적으로 포함할 것이다. In the case of a programmable computer code running on the available computer, the computer typically includes a readable storage medium (volatile and non-volatile memory and / or storage elements), at least one input device by a processor, the processor will be. 하나 이상의 프로그램들은 컴퓨터 시스템과 통신하는 하이레벨 절차 또는 오브젝트 중심 프로그래밍 언어로 수행되는 것이 바람직하다. One or more programs are preferably carried out in a high level procedural or object oriented programming language to communicate with a computer system. 그러나, 프로그램(들)은 원한다면 어셈블리 또는 기계 언어로 수행될 수 있다. However, the program (s) may be carried out in assembly or machine language, if desired. 임의의 경우에, 언어는 컴파일 또는 패석된 언어, 및 하드웨어 실행으로 조합된 것일 수도 있다. In any case, the language may be a compiled or combined in the paeseok language, and hardware implementation.
본 발명의 방법들 및 장치들은 또한 일부 전송 매체, 예컨대 전기 배선 또는 케이블, 광섬유, 또는 임의의 다른 형태의 전송을 통해 전송되는 프로그램 코드의 형태로 구현될 수도 있으며, 여기서 프로그램 코드가 EEOROM, 게이트 어레이, PLD(programmable logic device), 클라이언트 컴퓨터, 비디오 레코더 등과 같은 기계에 수신 및 로딩되며 실행될 때, 기계는 본 발명을 실행하기 위한 장치가 된다. The methods and apparatus of the present invention are also some transmission medium, such as electrical wire or cable, fiber optics, or may be implemented in the form of program code that is transmitted over the transmission of any other form, in which the program code is EEOROM, gate array , received and loaded into a machine such as a PLD (programmable logic device), a client computer, a video recorder, and when executed, the machine becomes an apparatus for practicing the invention. 범용 프로세서상에서 실행될 때, 프로그램 코드는 프로세서와 결합하여 본 발명의 인텍스가능한 기능을 수행하도록 동작하는 고유 장치를 제공한다. When executed on a general-purpose processor, the program code provides a unique apparatus that operates to perform the index available functionality of the present invention in combination with a processor.
본 발명이 다양한 도면들의 바람직한 실시예들과 결합하여 설명되었지만, 다른 유사한 실시예들이 사용될 수도 있으며, 또한 변형 및 추가가 본 발명의 동일 기능을 벗어나지 않는 범위내에서 수행하기 위한 상술한 실시예에서 이루어질 수도 있다는 것을 알 수 있을 것이다. Although the present invention has been described in conjunction with the preferred embodiments of the various figures, and other similar embodiments it may be used, also made in the aforementioned embodiment for carrying out in the transformation and scope added without departing from the same function of the present invention; also it will appreciate that. 예를 들면, 본 발명의 예시적인 실시예들이 개인용 컴퓨터들의 기능을 에뮬레이팅하는 디지털 디바이스들에 관련하여 기술되었지만, 본 분야의 숙련된 자라면 본 발명은 본 출원에서 기술된 바와 같이 디지털 디바이스들에 국한되지 않는다는 것을 알 수 있을 것이며, 유선 또는 무선의, 게임 콘솔 핸드헬드 컴퓨터, 포터블 컴퓨터 등과 같은 소정수의 현존 또는 앞으로 출시될 컴퓨팅 디바이스들 또는 환경에 적용할 수도 있으며, 통신 네트워크를 통해 접속되며 네트워크를 통해 상호작용하는 소정수의 컴퓨팅 디바이스들에 적용될 수도 있다. For example, an exemplary embodiment of the invention have been described in connection with digital devices emulating the functionality of personal computers, those skilled in the art in digital devices, as described in the present invention, the present application will be able to know that they are not limited to, wired or wireless, game consoles, handheld computers, and can also be applied to any number of existing or future to launch a computing device or environment, such as portable computers, it is connected via a communication network, the network a may be applied to each other by a predetermined number of computing devices that act through. 또한, 핸드헬드 디바이스 구동 시스템 및 다른 어플리케이션 특정 하드웨어/소프트웨어 인터페이스 시스템들 포함하는 다양한 컴퓨터 플랫폼들이 본 명세서에서 고려되며, 특히 다수의 무선 네트워크된 디바이스들이 계속해서 증가하는 것과 같이 고려되는 것이 강조되어야만 한다. In addition, It should be emphasized that a variety of computer platforms, including handheld device drive systems and other application specific hardware / software interface system are considered as consideration and, in particular, continue to increase in number of wireless network devices herein. 따라서, 본 발명은 임의의 단일 실시예에 국한되지 않아야만 하며, 첨부된 청구범위에 따라 폭 및 범위가 추론되어야 한다. Accordingly, the present invention but should not be limited to any single embodiment example, and the width and range to be deduced according to the appended claims.
프로세서, 상기 프로세서에 통신 가능하게 연결된 데이터베이스 저장소, 및 상기 프로세서에 연결된 데이터베이스를 포함하는 데이터베이스 시스템에서, 사용자 정의 타입을 생성하기 위한 방법 - 상기 방법은 상기 프로세서에서 수행됨 - 으로서, A, - in a database system including a processor, a processor communicably coupled to database storage and database coupled to the processor, a method for generating a user-defined type, wherein the method is carried out in the processor
사용자 정의 타입의 구조를 정의하는 클래스 및 상기 사용자 정의 타입의 인스턴스에 대해 호출될 수 있는 메소드를 구현하는 코드를 수신하는 단계; Class that defines the structure of the user-defined types, and receiving a code to implement a method that can be invoked on an instance of the user-defined type;
상기 클래스에 대한 계약(contract)을 실시(enforce)하는 단계 The method comprising the contract (contract) with respect to the class implementation (enforce)
- 상기 계약은 - The contract
상기 클래스가 상기 데이터베이스 저장소 내의 사용자 정의 타입의 인스턴스를 지속하기 위한 복수의 상이한 포맷들 중 하나를 특정한다는 제1 요구사항; It details first requirement that the class is a particular one of a plurality of different formats to continue an instance of a custom type in the database storage;
상기 클래스가 상기 사용자 정의 타입에 대한 널 값(null value)을 리턴할 수 있다는 제2 요구사항; Your second requirement is that the class can return a null value (null value) to the user-defined type;
상기 클래스가 상기 사용자 정의 타입을 다른 타입으로 변환하기 위한 메소드를 제공한다는 제3 요구사항을 포함함 -; Including a third request information that the class provides methods for converting the user-defined type to another type;
상기 클래스가 상기 계약의 요구사항들을 만족시킬 때에만 상기 사용자 정의 타입의 인스턴스를 생성가능하게 하는 단계; All steps for creating an instance of the defined type when the user to the class meets the requirements of the contract demand;
상기 수신하는 단계, 실시하는 단계, 및 생성가능하게 하는 단계를 수행하여 상기 데이터베이스의 컨텍스트(context)에서 사용자 정의 타입을 생성하는 단계; The method comprising performing the step of enabling step for applying the method comprising the receiving, and generating the generated user-defined types from the context (context) of the database;
상기 데이터베이스 시스템의 질의 언어로 된 표현(expression)을 수신하는 단계 - 상기 표현의 평가(evaluation)는 상기 사용자 정의 타입의 인스턴스의 메소드의 호출을 요구함 - ; Receiving an expression (expression) in the query language of the database system - assessment (evaluation) of the representation requires a call to the instance of the user defined type methods;
상기 표현을, 상기 사용자 정의 타입의 인스턴스에 대한 요구되는 메소드를 호출하는 일련의 프로그램 코드 명령어로 변환하는(translate) 단계; (Translate) converting the expression of a set of program code instructions to call a method on the instance of the required user-defined type;
상기 프로그램 코드의 실행 중에 상기 메소드를 호출하는 단계; Calling a method during the execution of the program code; 및 And
상기 메소드 호출의 결과를 상기 질의 언어로 된 표현의 평가로서 리턴하는 단계 Steps to be returned as a result of the evaluation of expression with a method call to the query language
를 포함하는 사용자 정의 타입 생성 방법. Create user-defined types comprises a.
상기 사용자 정의 타입의 인스턴스를 생성할 때 상기 데이터베이스 시스템에 의한 후속 사용을 위하여 상기 사용자 정의 타입에 대한 메타데이터를 저장하는 단계를 더 포함하는 사용자 정의 타입 생성 방법. When creating an instance of a custom type of user-defined type generation method further comprising: storing the metadata for the user-defined type for subsequent use by the database system.
상기 사용자 정의 타입의 인스턴스를 지속하기 위한 복수의 상이한 포맷들은, The user a plurality of different formats to continue an instance of the defined types,
상기 사용자 정의 타입의 인스턴스가 상기 데이터베이스 시스템의 본래 포맷(native format)에 따라 자동적으로 시리얼화된 제1 포맷; The format of the original user-defined type wherein the database system instance (native format) automatically serialized according to a first format; 및 And
상기 사용자 정의 타입의 인스턴스가 상기 클래스에 의해 정의된 방식으로 시리얼화된 제2 포맷을 포함하는 사용자 정의 타입 생성 방법. Create user-defined types comprises a serialized format, the second instance of the user-defined types in the manner defined by the class.
상기 사용자 정의 타입을, 테이블내의 컬럼값, 변수, 루틴의 파라미터 또는 루틴의 리턴값 중 하나로서 인스턴스화하는 단계를 더 포함하는 사용자 정의 타입 생성 방법. User-defined types generation method further comprising the step of instantiating the user-defined type, as column values ​​in the table, the variable, one of the return value of a parameter of a routine or routines.
상기 사용자 정의 타입을 정의하는 클래스는, 호출시에, 상기 사용자 정의 타입의 값이 변경될 수 있게 하는 뮤테이터(mutator) 메소드를 포함하고, Class that defines the user-defined type, during the call, and including the mutator (mutator) method that allows the value of the user-defined type can be changed,
상기 방법은 상기 사용자 정의 타입의 인스턴스에 대하여 상기 뮤테이터 메소드를 호출하여 상기 인스턴스의 값을 변경시키는 단계를 더 포함하는 사용자 정의 타입 생성 방법. The method includes generating a user-defined type further comprises the step of changing the value of the instance by calling the mutator method on the instance of the user-defined type.
상기 컴퓨터 판독가능 저장 매체는 컴퓨터 실행가능 명령어를 포함하고, The computer program product comprises a computer-executable instructions,
상기 컴퓨터 실행가능 명령어는, 프로세서, 상기 프로세서에 통신 가능하게 연결된 데이터베이스 저장소, 및 상기 프로세서에 통신 가능하게 연결된 데이터베이스를 포함하는 컴퓨터 시스템 상에서 실행될 때에, 상기 프로세서로 하여금, 제1항 내지 제4항 및 제6항 중 어느 한 항의 방법을 수행하도록 하는 컴퓨터 판독가능 저장 매체. The computer-executable instructions, the processor, the processor communicably coupled database storage in, and when executed on a computer system including a connected database communicatively to the processor, causes the processor to any one of claims 1 to 4 and the computer program product of 6 to perform the method of any one of wherein the storage medium.
KR20057010948A 2004-02-10 2004-07-29 Systems and methods for supporting inheritance for user-defined types KR101440615B1 (en)
US10/775,282 2004-02-10
US10/837,929 2004-05-03
KR20060130480A true KR20060130480A (en) 2006-12-19
KR101440615B1 true KR101440615B1 (en) 2014-09-16
ID=34915771
EP (1) EP1683046A4 (en)
JP (1) JP5108309B2 (en)
KR (1) KR101440615B1 (en)
WO (1) WO2005081668A3 (en)
EP1683046A4 (en) 2009-07-08 application
WO2005081668A2 (en) 2005-09-09 application
JP2007522558A (en) 2007-08-09 application
KR20060130480A (en) 2006-12-19 application
JP5108309B2 (en) 2012-12-26 grant
EP1683046A2 (en) 2006-07-26 application
WO2005081668A3 (en) 2006-05-18 application
2011-07-22 AMND Amendment
2012-11-30 B601 Maintenance of original decision after re-examination before a trial
2014-05-14 J301 Trial decision
2014-05-19 S901 Examination by remand of revocation
2014-06-10 GRNO Decision to grant (after opposition)