KR20010041082A - Method and system for in-place modification in a database - Google Patents
Method and system for in-place modification in a database Download PDFInfo
- Publication number
- KR20010041082A KR20010041082A KR1020007009121A KR20007009121A KR20010041082A KR 20010041082 A KR20010041082 A KR 20010041082A KR 1020007009121 A KR1020007009121 A KR 1020007009121A KR 20007009121 A KR20007009121 A KR 20007009121A KR 20010041082 A KR20010041082 A KR 20010041082A
- Authority
- KR
- South Korea
- Prior art keywords
- template
- entry
- database
- matching
- entries
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/42—Loop networks
- H04L12/427—Loop networks with decentralised control
- H04L12/433—Loop networks with decentralised control with asynchronous transmission, e.g. token ring, register insertion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
본 발명은 하나 이상의 데이터베이스가 복수의 엔트리를 저장하는 데이터베이스 시스템을 개시한다. 각각의 엔트리는 엔트리의 필드를 정의하는 소정의 타입이다. 각각의 필드는 연관된 속성 또는 데이터를 갖는 오브젝트를 포함하거나 또는 이를 식별한다. 각 엔트리의 타입은 엔트리가 구현할 수 있는 메소드의 형태로 행위를 정의할 수 있다. 다른 서브타입인 엔트리 타입은 모든 필드, 및 그 슈퍼 타입의 행위를 상속하고, 부수적인 필드를 포함하고/거나 새로운/수정된 행위를 정의한다. 엔트리들은 JavaTM프로그래밍 언어로 표현될 수 있다. 데이터베이스 시스템은 데이터베이스 내의 엔트리를 질의할 수 있게 하는 검색 엔진을 이용할 수 있다. 한 실시예에서, 질의는 판독 동작, 테이크(take) 동작 및 통지 동작을 포함한다. 각각의 질의 요청은 동작의 타입을 가리키는 명령어, 및 정확하게 정합되어야하는 특정 값으로 설정된 그 필드의 일부 또는 전부를 갖는 엔트리 오브젝트인 템플릿을 포함한다. 테플릿 엔트리의 다른 필드는 그 값이 문제가 되지 않는 와일드카드로서 명시되어야 한다. 검색 엔진은 질의에 의해 공통으로 명시된 특성을 갖는 엔트리를 캐쉬하기 위한 인덱스를 생성하도록 구성될 수 있다. 한 실시예에서, 데이터베이스는 또한 일단의 템플릿을 사용하여 정합되는 일단의 엔트리를 저장할 수 있다. 다른 실시예에서, 검색 엔진은 데이터베이스로부터 제거하지 않고 인-플레이스(in-place) 데이터베이스 내의 엔트리 또는 일단의 엔트리를 수정하기 위한 동작을 실시할 수 있다.The present invention discloses a database system in which one or more databases store a plurality of entries. Each entry is of a type that defines a field of the entry. Each field includes or identifies an object with associated attributes or data. Each entry type can define an action in the form of a method that the entry can implement. The other subtype, the entry type, inherits all fields, and the supertype's behavior, includes additional fields and / or defines new / modified behavior. Entries may be expressed in the Java TM programming language. The database system may use a search engine that allows for querying entries in the database. In one embodiment, the query includes a read operation, a take operation, and a notification operation. Each query request includes a template, which is an entry object having instructions indicating the type of operation, and some or all of its fields set to specific values that must be matched correctly. The other fields of the template entry must be specified as wildcards whose values do not matter. The search engine may be configured to generate an index for caching entries with properties commonly specified by the query. In one embodiment, the database may also store a set of entries that are matched using a set of templates. In other embodiments, the search engine may perform operations to modify an entry or group of entries in an in-place database without removing it from the database.
Description
데이터베이스 시스템은 오늘날 사회에서 점차 그 중요도가 증가하고 있다. 전형적인 데이터베이스 시스템에 의해 저장될 수 있는 데이터의 양이 급격히 증가하고 있고, 데이터에의 신속하고 유연한 액세스를 제공하는 것이 중요하다. 그러나, 최적으로 수행하는 데이터베이스 시스템을 설계하는 일은 힘들다.Database systems are becoming increasingly important in today's society. The amount of data that can be stored by typical database systems is growing rapidly, and it is important to provide fast and flexible access to the data. However, designing a database system that performs optimally is difficult.
데이터베이스 설계에서 특별히 중요한 고려사항은, 다양한 어플리케이션에 사용될 수 있으며 사용될 수 있는 방법이 신속하고도 쉽게 변경될 수 있도록, 데이터를 저장하는 것이다. 또한 데이터베이스 시스템의 다른 부분에 큰 영향을 미치지 않고 데이터 타입(data type) 또는 카테고리가 부가될 수 있게 하는 것이 바람직하다.A particularly important consideration in database design is to store the data so that it can be used for a variety of applications and the way it can be used can be changed quickly and easily. It is also desirable to allow data types or categories to be added without significantly affecting other parts of the database system.
불행하게도, 많은 데이터베이스 시스템에서 데이터가 사용되고 구성되는 방법을 변경하고, 부수적인 데이터 타입과 카테고리를 가능하게 하는 것을 극히 힘들다. 수정은 데이터베이스 시스템의 프로그램 및 다른 구성요소에 대한 변경의 체인 반응(chain reaction)을 초래할 수 있고, 따라서 달성하는 것은 많은 비용이 들 수 있다. 결국, 데이터 처리는 그 오래된 데이터 구조로 굳어져 버리는 경향이 있다. 부수적으로, 데이터베이스 시스템의 설계자는 설계 및 다른 것들의 특징 간에 많은 절충을 하여 최적의 설계가 되지 못하는 경향이 있다.Unfortunately, in many database systems it is extremely difficult to change the way data is used and organized and to enable additional data types and categories. Modifications can result in a chain reaction of changes to programs and other components of the database system, and therefore can be expensive to achieve. After all, data processing tends to harden into its old data structures. Incidentally, the designer of the database system tends to make a lot of tradeoffs between the design and the features of the others, resulting in less than optimal design.
더욱 정교하게 하기 위해, 데이터베이스 시스템에 정보를 저장하는 것은 흔히 정확한 타입에 의해 수행된다: 즉, 데이터베이스 시스템에 저장된 레코드는 전형적으로 임의의 숫자, 및 관계 데이터베이스의 관계에서 터플(tuple)과 같은 필드의 타입을 갖는다. 각각의 필드는 스트링 데이터, 정수 데이터, 부울린 데이터 또는 필요에 따라 일부 다른 데이터 타입과 같은 특정 타입의 데이터를 저장하도록 정의될 수 있다. 만일 사용자가 데이터베이스 내의 정보를 룩업하기를 원하면, 사용자는 정확한 레코드 타입(즉, 서로 다른 타입의 레코드들이 전형적으로 독립적으로 검색된다.)을 룩업하여야만 한다. 따라서, 만일 검색하는 이가 관심이 있는 데이터가 몇몇 다른 타입중의 임의의 타입의 레코드에 존재한다면, 검색하는 이는 어떤 레코드 타입이 존재하는 지를 미리 알아야 하거나 또는 모든 타입을 요구하는 명시적인 방법을 가지고 있어야 한다. 이때 검색하는 이는 특정 레코드를 찾기 위해 명시적으로 가능한 모든 레코드 타입을 조사할 필요가 있다. 이는 검색 엔진과 연관된 소프트웨어를 복잡하게 하며, 유지될 수 있는 서로 다른 레코드 타입의 수를 실제로 제한할 수 있다.To be more sophisticated, storing information in a database system is often done by the correct type: records stored in the database system are typically of random numbers, and fields such as tuples in the relationships of the relational database. Has a type. Each field may be defined to store a particular type of data, such as string data, integer data, Boolean data, or some other data type as needed. If the user wants to look up information in the database, the user must look up the correct record type (ie, different types of records are typically retrieved independently). Thus, if the searcher is present in any type of record of some other type, the searcher must know in advance which record type exists or have an explicit way of requiring all types. do. The searcher then needs to examine all the possible record types explicitly to find a particular record. This complicates the software associated with the search engine and can actually limit the number of different record types that can be maintained.
또한, 데이터베이스에서 레코드 내의 필드는 전형적으로 다른 레코드를 참조하지 않는다. 이는 단일 레코드가 전형적으로 보유하고 있는 정보의 양과 종류를 감소시킨다. 결국, 데이터베이스는 일단의 레코드인 레코드를 저장하고 조작하는 그 무능력에 의해 제한되고 있다.Also, fields in a record in the database typically do not refer to other records. This reduces the amount and type of information that a single record typically holds. After all, databases are limited by their inability to store and manipulate records, which are sets of records.
부수적으로, 전형적인 데이터베이스 내의 레코드는 흔히 자체로 실제의 데이터와는 다른 특성에 연관되어 있지 않다. 예를 들어, 데이터가 발견되면, 행위를 레코드 타입에 따라 변하는 레코드와 연관시키고, 레코드 타입에 특정한 결과를 달성하기 위해 프로그램이 간단한 방법으로 정합에 의해 반환된 다양한 레코드를 사용할 수 있게 하는 어떠한 방법도 존재하지 않는다.Incidentally, records in a typical database are often not associated with any characteristics other than the actual data on their own. For example, if data is found, any method that associates the behavior with records that vary by record type and allows the program to use the various records returned by the match in a simple way to achieve record type-specific results. does not exist.
데이터베이스 시스템의 다른 특징과 관련하여, 데이터베이스 내의 속성 또는 특성을 명시하는 흔한 방법은, 간단한 세트인 <name, value>에 의한 것으로, 여기서 값들은 스트링에 의해 제한되거나 또는 임의의 타입(타입, "any")이다. 이들 <name,value>쌍에서 타입을 제한하는 어떠한 방법도 존재하지 않고, 따라서 특정 명칭이 항상 특정 타입의 값을 가져야만 하는 규칙도 없다. 예를 들어, 가설 프린터에서, 프린터가 분당 얼마나 많은 페이지를 프린트할 수 있는 지를 나타내는 "속도" 속성은, 사용자가 "약 10ppm" 또는 "8 내지 10"과 같이 어느정도로 이를 설정할 수 있게 보장하기 위해 정수로서 시행되어야만 한다. 만일 값들이 임의의 타입의 오브젝트일 수 있다면 동일한 종류의 문제가 존재한다. 이 경우에, 사용자는 속성을 스트링 오브젝트 대신에 정수 오브젝트로 설정할 수 있지만, 여전히 다른 사용자가 정수로만 설정되어야 하는 속성으로 스트링 오브젝트를 부정확하게 저장하는 것을 방지한다.With respect to other features of the database system, a common way of specifying attributes or properties in a database is by a simple set of <name, value>, where values are limited by strings or any type (type, "any ")to be. There is no way to limit the type in these <name, value> pairs, and therefore there is no rule that a particular name must always have a value of a particular type. For example, in a hypothetical printer, the "speed" attribute, which indicates how many pages per minute the printer can print, is to ensure that the user can set it to some extent, such as "about 10 ppm" or "8 to 10". Must be implemented as an integer. The same kind of problem exists if the values can be any type of object. In this case, the user can set the attribute to an integer object instead of a string object, but still prevents other users from incorrectly storing the string object as an attribute that should only be set to an integer.
더우기, 이전의 시스템은, 서로 다른 속성(즉, 하나의 속성이 존재하여야 하고 또한 만일 다른 속성이 존재하면) 간의 관계에 대한 어떠한 규칙도 존재하지 않는다. 예를 들어, 프린터에 대한 예시적인 3개의 속성: 해상도(인치당 도트), 속도(분당 페이지), 및 컬러(흑색과 백색)이 존재한다고 가정하면, 실제로 많은 프린터는 이들 속성의 서로 다른 많은 조합을 수행할 수 있다. 예를 들어, 전형적인 컬러 프린터는 다음과 같이 설명될 수 있다:Moreover, the previous system does not have any rules for the relationship between different attributes (ie, if one attribute must exist and if another attribute exists). For example, suppose there are three exemplary attributes for a printer: resolution (dots per inch), speed (pages per minute), and color (black and white). In fact, many printers have many different combinations of these attributes. Can be done. For example, a typical color printer can be described as follows:
흑색과 백색으로 인치당 600도트로 분당 5 페이지;5 pages per minute at 600 dots per inch in black and white;
흑색과 백색으로 인치당 300도트로 분당 7 페이지;7 pages per minute at 300 dots per inch in black and white;
컬러로 인치당 300도트로 분당 1 페이지.1 page per minute at 300 dots per inch in color.
반면에, 소정의 속성이 다수의 값을 가지면, 일부 종래 시스템은 속성이 다수의 값을 갖게 하며, 이들 시스템은 다음과 같이 소정의 속성을 나타낼 수 있다:On the other hand, if a given attribute has multiple values, some conventional systems allow the attribute to have multiple values, and these systems may represent a given attribute as follows:
속도 = {1,5,7}Speed = {1,5,7}
해상도 = {300,600}Resolution = {300,600}
컬러 = {참, 거짓}Color = {true, false}
그러나, 이는 속성 쌍들 간의 상호관계를 표현하지 못하고 있다. 즉, 세가지 상호관계의 어떠한 표현 및 규칙도 존재하지 않는다:However, this does not represent an interrelationship between attribute pairs. That is, there are no expressions and rules of the three interrelationships:
{속도: 1, 해상도: 300, 컬러:참}{Speed: 1, Resolution: 300, Color: True}
{속도: 7, 해상도: 300, 컬러:거짓}{Speed: 7, Resolution: 300, Color: False}
{속도: 5, 해상도: 600, 컬러:거짓}{Speed: 5, Resolution: 600, Color: False}
따라서, 엔트리의 세트를 포함하는 다형 엔트리, 엔트리 정합 및 조작을 허용하여, 보다 효율적인 검색을 가능하게 하고 많은 서로 다른 타입들이 존재하는 간단한 소프트웨어 구현을 가능하게 하는 데이터베이스 시스템을 제공하는 것이 바람직하다. 또한, 엔트리들이 타입에 따라 그 자신의 행위를 정의할 수 있는 시스템을 제공하는 것이 바람직하다. 따라서, 데이터베이스 시스템에 타입-세이프(type-safe) 속성 정합과 속성 간의 관계 규칙을 갖는 것이 바람직하다.Accordingly, it would be desirable to provide a database system that allows polymorphic entries, entry matching and manipulation, including a set of entries, to allow for more efficient retrieval and to enable simple software implementations with many different types. It would also be desirable to provide a system in which entries can define their own behavior depending on the type. Thus, it is desirable to have a type-safe attribute matching and relationship rule between attributes in a database system.
본 발명은 데이터베이스 시스템에 관한 것으로, 더 상세하게는 데이터베이스 시스템의 엔트리 기억장치에 관한 것이다. 본 발명은 또한 데이터베이스 시스템에 이용되는 질의 정합 방법(query matching methodologies)에 관한 것이다.The present invention relates to a database system, and more particularly to an entry storage device of a database system. The invention also relates to query matching methodologies used in database systems.
도 1은 본 발명에 따른 데이터베이스 시스템을 이용하는 분산 컴퓨터 시스템.1 is a distributed computer system using a database system according to the present invention.
도 2는 본 발명에 따른 복수의 클라이언트 및 복수의 엔트리 데이터베이스 간의 예시적인 통신을 도시하는 도면.2 illustrates exemplary communication between a plurality of clients and a plurality of entry databases in accordance with the present invention.
도 3은 본 발명에 따른 특정 타입의 필드를 각각 포함하는 일부 엔트리, 및 다른 엔트리의 서브타입인 엔트리를 도시하는 도면.3 illustrates some entries each containing a particular type of field and an entry that is a subtype of another entry in accordance with the present invention.
도 4는 본 발명에 따른 데이터베이스 시스템에 의해 지원되는 다양한 동작을 도시하는 도면.4 illustrates various operations supported by a database system in accordance with the present invention.
도 5는 본 발명에 따른 예시적인 템플릿 엔트리를 도시하는 도면.5 illustrates an exemplary template entry in accordance with the present invention.
도 6은 본 발명에 따른 판독 요청 또는 테이크(take) 동작에 응답하여 특정 엔트리 데이터베이스 내의 엔트리를 검색하기 위한 방법의 한 실시예를 도시하는 순서도.6 is a flow diagram illustrating one embodiment of a method for retrieving an entry in a particular entry database in response to a read request or take action in accordance with the present invention.
도 7은 본 발명에 따른 데이터베이스 시스템의 특성을 도시하는 블럭도.7 is a block diagram illustrating characteristics of a database system according to the present invention.
도 8은 본 발명에 따른 통지 요청(notify request)을 처리하는 검색 방법의 구현을 도시하는 순서도.8 is a flow chart illustrating an implementation of a search method for processing a notify request in accordance with the present invention.
도 9A 및 9B는 본 발명에 따른 인덱싱 방법의 구현을 도시하는 도면.9A and 9B illustrate an implementation of an indexing method according to the present invention.
도 10은 엔트리를 포함하는 필드를 각각 구비한 몇몇 다중-엔트리를 도시하는 도면.10 illustrates several multi-entries each with a field containing entries.
도 11은 본 발명에 따른 데이터베이스 시스템에 의해 지원되는 다양한 다중-엔트리 동작을 도시하는 도면.11 illustrates various multi-entry operations supported by a database system in accordance with the present invention.
도 12는 본 발명에 따른 예시적인 다중-템플릿을 도시하는 도면.12 illustrates an exemplary multi-template in accordance with the present invention.
도 13은 본 발명에 따른 다중-엔트리에 대한 데이터베이스 검색 방법을 도시하는 순서도.13 is a flow chart illustrating a database search method for multi-entry in accordance with the present invention.
도 14는 본 발명에 따른 다중-엔트리 검색의 예에 관한 데이터베이스 시스템의 특성을 도시하는 기능도.14 is a functional diagram illustrating characteristics of a database system relating to an example of multi-entry search in accordance with the present invention.
도 15는 다중-엔트리에 대한 통지 요청을 처리하는 검색 방법의, 본 발명에 따른 구현을 도시하는 순서도.15 is a flowchart illustrating an implementation in accordance with the present invention of a search method for processing a notification request for multi-entry.
도 16은 본 발명에 따른 데이터베이스 내에 인-플레이스(in-place)한 엔트리 및 다중-엔트리를 수정하는 다양한 동작을 도시하는 도면.Figure 16 illustrates various operations for modifying in-place entries and multi-entries in a database in accordance with the present invention.
도 17은 본 발명에 따른 단일 엔트리 수정(modify) 동작의 단계들을 도시하는 순서도.Figure 17 is a flow chart showing the steps of a single entry modify operation in accordance with the present invention.
도 18은 본 발명에 따른 다중-엔트리 부가 동작의 단계들을 도시하는 순서도.18 is a flow chart illustrating the steps of a multi-entry add operation in accordance with the present invention.
도 19는 본 발명에 따른 인-플레이스 수정 동작용 통지 동작의 단계들을 도시하는 순서도.19 is a flow chart illustrating the steps of a notification operation for an in-place modification operation in accordance with the present invention.
비록 본 발명이 다양한 변형 및 대체 형태를 취할 수 있지만, 특정 실시예는 도면에서 예시로서 도시되어 있고 상세하게 설명될 것이다. 그러나, 본 발명의 도면 및 상세한 설명은 개시된 특정 형태에 본 발명을 제한하도록 의도되어 있지 않고, 그 대신에 본 발명은 특허청구범위에 의해 한정된 바와 같이 본 발명의 정신과 범위에 포괄하는 변형, 등가물 및 대체를 포활한다.Although the present invention may take various modifications and alternative forms, specific embodiments are shown by way of example in the drawings and will be described in detail. However, the drawings and detailed description of the invention are not intended to limit the invention to the particular forms disclosed, but instead the invention is intended to cover the modifications, equivalents and equivalents of the invention as defined by the claims. To embrace substitution.
상기 문제는 본 발명에 따른 데이터베이스에서 엔트리를 저장하고 검색하기 위한 방법 및 시스템에 의해 해결된다. 한 실시예에서, 컴퓨터 시스템은, 하나 이상의 엔트리 데이터베이스가 복수의 엔트리를 저장하는 데이터베이스 시스템을 구현한다. 각각의 엔트리는 엔트리의 필드를 정의하는 소정의 타입이다. 각각의 필드는 연관된 속성 또는 데이터를 갖는 오브젝트를 포함하거나 또는 이를 식별한다. 각 엔트리의 타입은 엔트리가 구현할 수 있는 메소드의 형태로 행위를 정의할 수 있다. 다른 서브타입인 엔트리 타입은 모든 필드, 및 그 슈퍼 타입의 행위를 상속하고, 부수적인 필드를 포함하고/거나 새로운/수정된 행위를 정의한다. 엔트리들은 JavaTM프로그래밍 언어로 표현될 수 있다. 유사하게, 한 실시예에서, 각각의 필드는 정의된 클래스로 표현된다.The problem is solved by a method and system for storing and retrieving entries in a database according to the invention. In one embodiment, the computer system implements a database system in which one or more entry databases store a plurality of entries. Each entry is of a type that defines a field of the entry. Each field includes or identifies an object with associated attributes or data. Each entry type can define an action in the form of a method that the entry can implement. The other subtype, the entry type, inherits all fields, and the supertype's behavior, includes additional fields and / or defines new / modified behavior. Entries may be expressed in the Java TM programming language. Similarly, in one embodiment, each field is represented by a defined class.
데이터베이스 시스템은 또한 데이터베이스 내의 엔트리를 질의할 수 있게 하는 검색 엔진을 이용할 수 있다. 한 실시예에서, 질의는 판독 동작, 테이크(take) 동작 및 통지 동작을 포함한다. 각각의 질의 요청은 동작의 타입을 가리키는 명령어, 및 정확하게 정합되어야하는 특정 값으로 설정된 그 필드의 일부 또는 전부를 갖는 엔트리 오브젝트인 템플릿을 포함한다. 테플릿 엔트리의 다른 필드는 그 값이 문제가 되지 않는 와일드카드(wildcards)로서 명시되어야 한다. 다형 엔트리 및 엔트리 정합 기법은 장점으로서, 템플릿 엔트리와 동일한 타입 또는 템플릿 엔트리의 서브타입인 엔트리의 정합이 될 수 있는 질의가 이루어질 수 있게 한다. 이는 효율적인 검색, 및 검색 엔진의 간단한 구현을 가능하게 한다. 더우기, 검색 엔진은 존재할 수 있는 가능한 모든 서브타입을 알 필요가 없다. 마지막으로, 각각의 엔트리가 연관된 클래스를 가지고 있기 때문에, 엔트리는 하나 이상의 메소드를 지원함으로써 그 자신의 행위를 정의할 수 있다. 특정 엔트리의 메소드는 등가 점검과 같은 다양한 기능을 구현하는 프로그램에 의해 호출될 수 있다.The database system may also use a search engine that allows for querying entries in the database. In one embodiment, the query includes a read operation, a take operation, and a notification operation. Each query request includes a template, which is an entry object having instructions indicating the type of operation, and some or all of its fields set to specific values that must be matched correctly. The other fields of the template entry must be specified as wildcards whose values do not matter. Polymorphic entry and entry matching techniques are advantageous, allowing queries to be made that can be entries of the same type as the template entry or a subtype of the template entry. This enables efficient search and simple implementation of the search engine. Moreover, the search engine does not need to know all possible subtypes that may exist. Finally, because each entry has an associated class, an entry can define its own behavior by supporting one or more methods. The methods of a particular entry can be called by programs that implement various functions, such as equivalence checking.
검색 엔진은 질의에 의해 공통으로 명시된 특성을 갖는 엔트리를 캐쉬하기 위한 인덱스를 생성하도록 구성될 수 있다. 즉, 검색 엔진은 사용 패턴을 검출할 수 있고, 수신된 템플릿에 의해 공통으로 명시된 속성을 갖는 엔트리를 포인트하는 인덱스를 생성할 수 있다. 이와 같이, 편리한 엔트리 검색이 달성될 수 있다.The search engine may be configured to generate an index for caching entries with properties commonly specified by the query. That is, the search engine may detect the usage pattern and generate an index that points to an entry having attributes commonly specified by the received template. As such, a convenient entry search can be achieved.
본 발명에 따른 방법 및 시스템은 데이터베이스 내의 엔트리를 저장하고 검색한다. 각각의 엔트리는 타입의 필드들을 정의하는 소정의 타입이고, 각각의 필드는 소정의 타입의 오브젝트를 포함하거나 식별한다. 이들 엔트리들은 JavaTM프로그래밍 언어로 표현될 수 있다. 부수적으로, 본 발명에 따른 방법 및 시스템은 또한 데이터베이스 내의 일단의 엔트리를 저장하고 검색할 수 있다. 일반적으로, 이들 검색은 일단의 템플릿을 사용하여 수행된다. 한 실시예에서, 데이터베이스로부터 엔트리들을 제거하지 않고 데이터베이스 내에 인플레이스한 엔트리 또는 일단의 엔트리에 대해 동작이 수행될 수 있다.The method and system according to the present invention stores and retrieves entries in a database. Each entry is a certain type that defines fields of a type, and each field contains or identifies an object of a certain type. These entries can be expressed in the Java TM programming language. Incidentally, the method and system according to the present invention can also store and retrieve a set of entries in a database. In general, these searches are performed using a set of templates. In one embodiment, an operation may be performed on an entry or group of entries in-place in the database without removing the entries from the database.
분산 시스템Distributed system
지금부터 도 1을 참조하면, 도 1에는 본 발명에 따른 엔트리, 엔트리 정합(entry matching), 및 엔트리 조작을 이용하는 분산 시스템(100)이 도시되어 있다. 도 1은 네트워크(105)에 의해 상호접속된 복수의 컴퓨터 시스템(101-103)을 도시한다. 네트워크(105)는 예를 들어, 다른 가능한 통신 채널중에서, 근거리 네트워크(LAN), 광대역 네트워크(WAN) 또는 인터넷을 도시한다. 각각의 컴퓨터 시스템은 예시적인 메모리(120) 및 컴퓨터 시스템(101)의 CPU(122)와 같은 마이크로프로세서 및 메모리를 포함한다. 메모리(120)는 하드 디스크 기억장치, 플로피 디스크 기억장치, 및 다이나믹 랜덤 액세스 메모리(DRAM)과 같은 가능한 다양한 종류의 메모리를 나타낸다. 하나 이상의 CD ROM 또는 플로피 디스크(또는 다른 기억매체)를 나타내는 설치 미디어(126)가 컴퓨터 시스템(101)과 연관되어 도시되어 있다. 일반적으로 말해서, 설치 미디어(126)는 검색 엔진의 일부 및 이하에 설명하는 데이터베이스 시스템의 다른 특징을 구현하는 코드 및/또는 데이터를 저장할 수 있고, 특정 컴퓨터 시스템 내에 코드 및/또는 데이터를 설치하는데 이용될 수 있다. 다른 실시예에서, 본 발명에 따른 데이터베이스 시스템은 단일의 비네트워크 컴퓨터 시스템 내에서 구현될 수 있다.Referring now to FIG. 1, FIG. 1 shows a distributed system 100 utilizing entries, entry matching, and entry manipulation in accordance with the present invention. 1 illustrates a plurality of computer systems 101-103 interconnected by a network 105. Network 105 shows a local area network (LAN), a broadband network (WAN), or the Internet, for example, among other possible communication channels. Each computer system includes microprocessors and memory, such as the exemplary memory 120 and the CPU 122 of the computer system 101. Memory 120 represents various possible memory types, such as hard disk storage, floppy disk storage, and dynamic random access memory (DRAM). Installation media 126 is shown associated with computer system 101 that represents one or more CD ROM or floppy disks (or other storage media). Generally speaking, installation media 126 may store code and / or data that implements portions of a search engine and other features of a database system described below and may be used to install code and / or data within a particular computer system. Can be. In another embodiment, the database system according to the present invention may be implemented within a single non-network computer system.
이하에 상세히 설명하는 바와 같이, 컴퓨터 시스템(100)은 가능한 타입 또는 서브타입의 엔트리를 저장하기 위한 오브젝트 지향 기법을 이용하는 데이터베이스 시스템을 구현한다. 이 데이터베이스는 또한 단일 엔트리 구현후에 설명하는 바와 같이, 일단의 엔트리, 호출된 다중-엔트리를 저장할 수 있다. 데이터베이스의 엔트리들은 전적으로 컴퓨터 시스템(101)의 메모리(122) 내에 저장될 수 있거나 또는 메모리(122) 및 컴퓨터 시스템(102 및 103)의 유사한 메모리와 같은 몇몇 서로 다른 시스템의 메모리에 걸쳐 분산될 수 있다. 각각의 엔트리는 엔트리의 필드를 정의하는 소정의 타입(type)이다. 필드 각각은 속성 또는 데이터에 연관된 오브젝트를 포함하거나 또는 식별한다. 각 엔트리의 타입은 또한 엔트리가 구현하도록 구성되어 있는 메소드의 형태로 행위를 정의할 수 있다. 다른 엔트리의 서브타입인 엔트리 타입은 모든 필드 및 그 서브타입의 행위를 상속하며, 부수적인 필드를 포함하고/거나 새롭고 수정된 행위를 정의한다.As will be described in detail below, computer system 100 implements a database system using an object-oriented technique for storing entries of possible types or subtypes. The database can also store a set of entries, called multi-entries, as described after a single entry implementation. Entries in the database may be stored entirely in memory 122 of computer system 101 or may be distributed across memory of several different systems, such as memory 122 and similar memory of computer systems 102 and 103. . Each entry is a certain type that defines the fields of the entry. Each field contains or identifies an object associated with an attribute or data. Each type of entry may also define an action in the form of a method that the entry is configured to implement. An entry type, which is a subtype of another entry, inherits all fields and the behavior of that subtype, and includes additional fields and / or defines new and modified behavior.
데이터베이스 시스템은 또한 데이터베이스 내의 엔트리(또는 이하에 설명되는 다중-엔트리)를 질의할 수 있게 하는 소프트웨어로 구현될 수 있는 검색 엔진을 이용한다. 한 실시예에서, 각각의 엔트리는 성공적으로 정합(match)하게 되는 템플릿의 대응하는 필드에 정합하는 소정의 엔트리의 키 필드의 값(또는 속성)을 명시하는 템플릿을 포함한다. 템플릿 엔트리의 다른 필드는 그 값이 문제가 되지 않는 와이드카드로서 명시될 수 있다. 컴퓨터 시스템(100)에 의해 이용되는 다형 엔트리 및 엔트리 정합 기법은 장점으로서, 템플릿 엔트리와 동일한 타입이거나 또는 템플릿 엔트리의 서브타입인 엔트리의 정합이 될 수 있는 질의가 이루어질 수 있게 한다. 다형 엔트리 및 엔트리 정합 기법에 관한 부수적인 세부사항은 도 2-9를 참조하여 이하에 상세히 제공된다.The database system also utilizes a search engine, which can be implemented in software that allows for querying entries (or multi-entries described below) in the database. In one embodiment, each entry includes a template that specifies the value (or attribute) of the key field of a given entry that matches the corresponding field of the template that is successfully matched. Other fields of the template entry may be specified as wide cards whose values do not matter. The polymorphic entry and entry matching technique used by computer system 100 is advantageous in that queries can be made that can be of the same type as the template entry or a subtype of the template entry. Additional details regarding the polymorphic entry and entry matching technique are provided in detail below with reference to FIGS. 2-9.
도 2는 한쌍의 클라이언트(또는 사용자)(202 및 204)와 복수의 엔트리 데이터베이스(206-208) 간의 예시적인 통신 흐름을 도시하는 도면이다. 엔트리 데이터베이스(206-208)의 각각은 분산 시스템(100)의 하나 이상의 메모리 서브시스템에 걸쳐 분산될 수 있다. 각각의 클라이언트(202 및 204)는 하나 이상의 엔트리 데이터베이스(206-208)에 제공될 수 있는 질의를 발생하도록 구성되어 있다. 클라이언트(202 및 204)는 또한 이하에 설명하는 바와 같이 엔트리 데이터베이스(206-208) 내에 엔트리를 저장(기록)하도록 구성될 수 있다. 도 2는 마지막으로 그 기능이 이하세 상세히 설명되는 바와 같이 이벤트 캐쳐(event catcher)(210)를 도시한다.2 is a diagram illustrating an exemplary communication flow between a pair of clients (or users) 202 and 204 and a plurality of entry databases 206-208. Each of the entry databases 206-208 may be distributed across one or more memory subsystems of the distributed system 100. Each client 202 and 204 is configured to generate a query that can be provided to one or more entry databases 206-208. Clients 202 and 204 may also be configured to store (write) entries in entry database 206-208 as described below. 2 finally shows an event catcher 210 as its function is described in detail below.
엔트리 정합 및 동작Entry Matching and Behavior
도 3은 임의의 엔트리 데이터베이스(206-208)에 저장될 수 있는 복수의 예시적인 엔트리를 도시하는 도면이다. 한 실시예에서, 각각의 엔트리는 JavaTM프로그래밍 언어의 JavaTM클래스이다. JavaTM프로그래밍 언어는 본 발명의 참조로서 일체화되어 있는 Ken Arnold, James Gosling The JavaTMProgramming Language (Addison-Wesley 출판, 1996)에 설명되어 있다. JavaTM는 미국 및 다른 국가에 소재한 선 마이크로시스템즈, 인크.의 등록 상표이다. 그러나, 다른 실시예에서, 엔트리는 다른 프로그래밍 언어의 클래스에 정의될 수 있다.3 is a diagram illustrating a plurality of example entries that may be stored in any entry database 206-208. In one embodiment, each entry is a Java TM class of Java TM programming language. The Java TM programming language is described in Ken Arnold, James Gosling The Java TM Programming Language (Addison-Wesley Publishing, 1996), which is incorporated herein by reference. Java TM is a registered trademark of Sun Microsystems, Inc. in the United States and other countries. However, in other embodiments, entries may be defined in classes of other programming languages.
도 3의 엔트리는 예시적으로 엔트리 1의 클래스 타입에 의해 정의된 일단의 네개의 필드(필드 A, 필드 B, 필드 C 및 필드 D)를 포함한다. 엔트리 2는 엔트리 2의 클래스 타입에 의해 정의된 일단의 다섯개의 필드(필드 A, 필드 B, 필드 C, 필드 D 및 필드 E)를 포함한다. 엔트리 2가 다른 것 이외에 엔트리 1과 동일한 필드 타입을 포함하기 때문에, 엔트리 2는 엔트리 1의 타입의 서브타입이라는 것을 알아야 한다.The entry in FIG. 3 illustratively includes a set of four fields (field A, field B, field C and field D) defined by the class type of entry 1. FIG. Entry 2 contains a set of five fields (field A, field B, field C, field D and field E) defined by the class type of entry 2. Note that entry 2 is a subtype of the type of entry 1 because entry 2 contains the same field type as entry 1 in addition to the others.
특정 어플리케이션 또는 데이터베이스의 조건에 따라 필요에 따라, 무수히 많은 다른 타입 및 서브타입들이 데이터베이스 시스템과 연관될 수 있다. 부수적으로, 서브타입의 서브타입인 엔트리들이 가능하다는 것을 알아야 한다. 예시목적으로, 다음 코드는 JavaTM프로그래밍 언어로 정의된 예시적인 특정 엔트리를 도시한다.As many different types and subtypes can be associated with the database system, depending on the requirements of a particular application or database. Incidentally, it should be noted that entries that are subtypes of the subtype are possible. For illustrative purposes, the following code shows example specific entries defined in the Java TM programming language.
책 구매를 위한 "Request For bid" 오브젝트:"Request For bid" object for book purchases:
public class RFB implements Entry{public class RFB implements Entry {
public Integer order number; \\ 이 주문에 대한 구매자의 트래킹 번호public Integer order number; 구매자 Buyer's tracking number for this order
public String title; \\ 이 책의 제목public String title; 의 Title of this book
public Integer count; \\ 필요한 권수public Integer count; \\ The required number of turns
}}
ISBN을 포함하는, 경매를 위한 "Full" 요청"Full" request for auction, including ISBN
public class FullRFB extends a RFB{public class FullRFB extends a RFB {
public String isbn; \\ ISBN 필드 제목public String isbn; \\ ISBN field title
}}
다시 도 3을 참조하면, 엔트리의 필드들의 각각은 타입된 오브젝트(typed objects)을 가리키거나 식별하는 값들을 저장하도록 구성되어 있다. 이들 타입된 오브젝트의 각각은 유사하게 JavaTM프로그래밍 언어로 표현될 수 있다. 예를 들어, 엔트리 1의 필드 A는 오브젝트(310)를 식별하는 값을 포함하고, 엔트리 1의 필드 B는 오브젝트(312)를 식별한다. 유사하게, 엔트리 2의 필드 A는 오브젝트(314)를 식별하고, 필드 B는 오브젝트(316)를 식별한다. 등등. 도 3의 예시적인 엔트리의 경우, 엔트리 2가 엔트리 1의 서브타이이기 때문에, 엔트리 1의 필드 A에 연관된 오브젝트(310)는 엔트리 2의 필드 A에 연관된 오브젝트(314)의 클래스 타입과 동일한 클래스 타입에 의해 표현된다. 그러나 오브젝트(310 및 314)의 각각에 연관된 속성 및 데이터는 다를 수 있다. 또한 다양한 엔트리의 필드에 의해 식별된 오브젝트는 정의된 타입에 따라, 필요에 따라, 정수 데이터, 부울린 데이터, 스트링 데이터, 또는 다른 데이터 타입을 포함할 수 있다. 또한, 각각의 필드가 타입된 오브젝트에 연관되어 있기 때문에, 필요에 따라, 데이터에 대한 동작을 수행하기 위해 메소드가 지원되고 외부 자극을 거쳐 선택적으로 호출될 수 있다. 유사하게, 각각의 엔트리 타입은 이하에 상세히 설명하는 바와 같이, 하나 이상의 메소드를 지원할 수 있다.Referring again to FIG. 3, each of the fields of the entry is configured to store values that indicate or identify typed objects. Each of these typed objects can similarly be represented in the Java TM programming language. For example, field A of entry 1 includes a value identifying object 310, and field B of entry 1 identifies object 312. Similarly, field A of entry 2 identifies object 314 and field B identifies object 316. etc. For the example entry of FIG. 3, since entry 2 is a subtie of entry 1, the object 310 associated with field A of entry 1 is the same class type as the class type of object 314 associated with field A of entry 2. Is represented by. However, the attributes and data associated with each of the objects 310 and 314 may be different. The objects identified by the fields of the various entries may also include integer data, Boolean data, string data, or other data types, as needed, depending on the defined type. In addition, because each field is associated with a typed object, methods may be supported and optionally invoked via external stimuli as needed to perform operations on the data. Similarly, each entry type may support one or more methods, as described in detail below.
다시 도 2를 참조하면, 설명한 바와 같이, 엔트리 데이터베이스(206,207 및 208)의 각각은 서브타입의 다양한 타입의 무수한 엔트리를 저장할 수 있다. 엔트리는 클라이언트에 의해 호출된 기록 동작을 통해 소정의 엔트리 데이터베이스(206-208) 내에 저장될 수 있다. 엔트리는 부수적으로, 설치 미디어(즉, 도1의 설치 미디어(126))를 거쳐 엔트리 데이터베이스에 제공될 수 있다.Referring again to FIG. 2, as described, each of the entry databases 206, 207, and 208 can store countless entries of various types of subtypes. Entries may be stored in a given entry database 206-208 via a write operation called by the client. The entries may additionally be provided to the entry database via the installation media (ie, installation media 126 of FIG. 1).
도 4에 의해 도시한 바와 같이, 시스템에 의해 몇가지 동작이 지원된다. 특히 기록 동작 이외에, 클라이언트 또는 사용자는 "판독" 동작, "태이크(take)" 동작 및 "통지" 동작을 초기화할 수 있다.As shown by FIG. 4, several operations are supported by the system. In particular, in addition to the write operation, the client or user may initiate a "read" operation, a "take" operation and a "notify" operation.
판독, 테이크 및 통지 동작은 각각 임의이 명시된 특성을 갖는 엔트리가 엔트리 데이터베이스에 기록되었는 지의 여부를 판정하고, 만일 그렇다면 특정 행위를 야기하기 위해 특정 엔트리 데이터베이스를 질의하는데 사용된다. 특정 실시예에서, 이들 질의는 동작과 관련하여 관심있는 엔트리의 타입을 정의하는 동작 요청의 일부로서 포함되어 있는 템플릿의 사용을 통해 이루어진다. 테이크 동작은 판독 동작과 유사하지만, 테이크 동작은 엔트리 데이터베이스로부터 템플릿에 정합하는 엔트리를 제거할 것이다. 마지막으로, 통지 동작은 연관된 템플릿에 정합하는 명시된 엔트리 데이터베이스의 들어오는 장래의 엔트리에 인터레스트(interest)를 등록한다. 정합하는 엔트리가 도달하면, 클라이언트 또는 명시된 이벤트 캐쳐(event catcher)에게 통지된다. 이들 동작의 각각에 관한 더욱 상세한 내용이 이하에 설명된다.Read, take, and notify operations are each used to determine whether an entry with any specified characteristics has been written to the entry database, and if so, to query a particular entry database to cause a particular action. In a particular embodiment, these queries are made through the use of a template that is included as part of an action request that defines the type of entry of interest with respect to the action. The take operation is similar to the read operation, but the take operation will remove entries that match the template from the entry database. Finally, the notification operation registers an interest in an incoming future entry of the specified entry database that matches the associated template. When a matching entry arrives, the client or the specified event catcher is notified. Further details regarding each of these operations are described below.
도 5는 예시적인 템플릿을 도시한다. 일반적으로 말해서, 템플릿은 필드가 값들(오브젝트에 대한 참조) 또는 "와일드카드"를 가질 수 있는 특정 엔트리 타입을 명시한다. 엔트리 데이터베이스 내의 특정 엔트리를 템플릿에 대한 잠재적인 정합로서 간주할 때, 엔트리의 명시된 필드의 속성(즉, 템플릿의 와일드 필드에 대응하지 않는 필드)은 템플릿의 대응하는 필드에 의해 명시된 속성(또는 가능한 속성의 범위 이내에 포함되는)에 정확히 정합하여야만 한다. 템플릿의 "와일드카드"필드에 대응하는 엔트리의 필드는 임의의 속성을 가질 수 있고, 정합하는 결과(즉, 엔트리의 동일한 필드 내의 임의의 값에 정합하는 템플릿 내의 와일드카드)에 영향을 주지 않는다. 한 실시예에서, 와일드카드는 널 참조 값으로서 명시된다. 이하에 설명하는 바와 같이, 템플릿에 정합하는 엔트리의 타입은 템플릿의 타입의 서브타입일 수 있다. 즉, 서브타입에 의해 정의된 특정 엔트리의 모든 필드들은 와일드카드인 것으로 간주된다. 이는 템플릿이 임의의 서브타입의 엔트리에 정합하게 한다. 어떠한 와일드카드도 갖지 않는 엔트리는 유효 템플릿일 수 있다는 것을 알아야 한다.5 illustrates an example template. Generally speaking, a template specifies a particular entry type that a field can have values (reference to an object) or "wildcards". When considering a particular entry in the entry database as a potential match for a template, the attributes of the specified fields of the entry (ie, fields that do not correspond to the wild fields of the template) are specified by the corresponding fields of the template (or possible attributes). Must fall within the scope of. The field of the entry corresponding to the "wildcard" field of the template may have any attribute and does not affect the result of the match (ie, a wildcard in the template that matches any value in the same field of the entry). In one embodiment, wildcards are specified as null reference values. As described below, the type of entry matching the template may be a subtype of the type of template. That is, all fields of a particular entry defined by a subtype are considered wildcards. This allows the template to match an entry of any subtype. Note that an entry without any wildcard can be a valid template.
도 6은 본 발명에 따른 테이크 동작 또는 판독 동작중의 하나에 응답해서, 특정 엔트리 데이터베이스 내의 엔트리를 검색하기 위한 방법의 한 실시예를 도시하는 순서도이다. 상술한 바와 같이, 판독 요청은 소정의 템플릿에 정합하는 엔트리를 판독하는 클라이언트(또는 사용자)에 의해 초기화될 수 있다. 테이크 요청이 엔트리 데이터베이스로부터 소정의 템플릿에 정합하는 엔트리를 제거하기 위해 초기화될 수 있다.6 is a flowchart illustrating one embodiment of a method for retrieving entries in a particular entry database in response to either a take operation or a read operation in accordance with the present invention. As described above, the read request may be initiated by a client (or user) reading an entry that matches a given template. The take request may be initialized to remove entries that match a given template from the entry database.
(1) 엔트리 정합 방법(1) Entry matching method
도 6에 도시한 단계는 도 6의 검색 방법을 이용하는 데이터베이스 시스템의 기능상의 특징을 도시하는 도 7을 참조하여 설명될 것이다. 도 7의 기능상 구성요소들은 도 1의 하나 이상의 컴퓨터 시스템(101-103)에 연관된 소프트웨어 및 하드웨어의 조합을 통해 구현될 수 있다. 단계(602) 동안, 판독 또는 테이크 요청이 사용자(702)로부터 데이터베이스 관리자(704)에게 제공된다. 소정의 요청은 예시적으로 도 7의 템플릿(706)으로서 도시되어 있는 명시된 템플릿을 포함할 것이다. 다음에 데이터베이스 관리자(704)의 검색 엔진(708)이 단계(604) 동안 엔트리 데이터베이스(710)를 검색하여, 템플릿의 정합하는 타입 또는 서브타입이 엔트리 데이터베이스(710) 내에 존재하는지의 여부를 판정한다. 만일 엔트리 데이터베이스(710) 내의 어떠한 엔트리도 템플릿의 동일한 타입 또는 서브타입이 아니면(단계 606), 데이터베이스 관리자(704)는 사용자(704)에게 널 값을 반환할 것이다(단계 608).The steps shown in FIG. 6 will be described with reference to FIG. 7 showing the functional features of the database system using the search method of FIG. The functional components of FIG. 7 may be implemented through a combination of software and hardware associated with one or more computer systems 101-103 of FIG. 1. During step 602, a read or take request is provided from the user 702 to the database manager 704. The predetermined request will include the specified template, which is illustratively shown as the template 706 of FIG. The search engine 708 of the database manager 704 then searches the entry database 710 during step 604 to determine whether a matching type or subtype of template exists in the entry database 710. . If no entry in entry database 710 is the same type or subtype of template (step 606), database manager 704 will return a null value to user 704 (step 608).
만일 검색 엔진(708)이 템플릿의 타입 또는 서브타입에 정합하는 하나 이상의 엔트리가 엔트라 데이터베이스(710) 내에 존재하는 것으로 판정하면, (동일한 타입 또는 서브타입의) 선택된 엔트리의 필드를 와일드카드로서 명시되지 않은 템플릿(706)의 대응하는 필드와 비교한다(단계 610). 검색 엔진(708)은 템플릿의 와일드카드에 대응하는 선택된 엔트리의 임의의 필드를 무시한다(단계 612). 한 특정 실시예에서, 검색 엔진(708)은 엔트리의 각 비-와일드카드 필드에 연관된 속성 또는 데이터가 대응하는 템플릿 엔트리의 속성 또는 데이터에 정확히 정합하는지를 판정한다. 만일 와일드카드 필드가 아닌 임의의 필드의 속성이 템플릿의 속성에 정확히 정합하지 않으면, 해당 엔트리에 대한 정합이 발생하지 않았는 지가 판정된다. 다른 실시예에서, 템플릿의 필드는 대응하는 필드의 데이터가 정합하지 않아야 하는 값의 범위(정확한 정합을 필요로 하기 보다는)를 명시할 수 있다는 것을 알아야 한다.If the search engine 708 determines that there is more than one entry in the intra database 710 that matches the type or subtype of the template, the field of the selected entry (of the same type or subtype) is not specified as a wildcard. And compare with the corresponding field in template 706 (step 610). The search engine 708 ignores any field of the selected entry that corresponds to the wildcard of the template (step 612). In one particular embodiment, search engine 708 determines whether the attribute or data associated with each non-wildcard field of the entry exactly matches the attribute or data of the corresponding template entry. If an attribute of any field that is not a wildcard field does not exactly match the attribute of the template, then it is determined whether no match has occurred for that entry. In other embodiments, it should be appreciated that a field in a template may specify a range of values (rather than requiring an exact match) that the data of the corresponding field should not match.
(2) 예(2) yes
도 7에 의해 도시된 예에서, 템플릿(706)의 필드 C는 와일드카드로서 명시된다. 따라서, 검색 엔진(708)이 정합하는 엔트리를 찾기 위해 엔트리 데이터베이스(710)룰 검색하면, 검색 엔진(708)은 먼저 템플릿(706)의 타입 또는 서브타입인 엔트리 데이터베이스(710) 내에 임의의 엔트리가 존재하는지의 여부를 판정한다. 도시한 바와 같이, 엔트리 1 및 엔트리 2 모두는 이 자격을 충족한다. 다음에 검색 엔진(708)은 (도시한 바와 같이 엔트리 2와 같은) 이들 엔트리들중의 하나를 선택하고, 와일드카도로서 명시되지 않은 템플릿의 필드에 엔트리의 필드를 비교한다. 검색 엔진(708)은 템플릿의 비-와일드카드 필드 각각에 대한 정확한 정합이 대응하는 엔트리 필드 각각의 속성에 대해 발생하는지의 여부를 판정한다. 도 7의 템플릿(706)의 필드 C가 와일드카드 필드로서 명시되어 있기 때문에, 엔트리 2의 필드 C의 속성은 무시되지 않고, 비교 동작에 영향을 미치지 않는다. 유사하게, 템플릿 타입의 서브타입에 의해 정의된 임의의 엔트리의 필드들도 무사된다(즉, 와일드카드 필드의 속성이 정합하더라도 정합이 발생할 수 있다). 만일 정합 엔트리가 발견되면(모든 비-와일드카드 필드가 정합), 검색 엔진(708)은 엔트리 데이터베이스(710)으로부터 정합 엔트리를 판독하고, 이를 사용자에게 제공하거나 또는 요청이 판독 요청 또는 테이크 요청인지에 따라 엔트리 데이터베이스(710)로부터 엔트리를 제거한다. 검색 엔진(708)은 정합이 발견될 때까지 또는 모든 엔트리들이 점검될 때까지 엔트리 데이터베이스(710)를 검색한다. 만일 데이터베이스 내의 모든 엔트리를 검색한 후에 어떠한 정합하는 엔트리고 발견되지 않으면, 데이터베이스 관리자(704)는 사용자(702)에게 널 값을 반환한다(단계 616)In the example shown by FIG. 7, field C of template 706 is specified as a wildcard. Thus, if search engine 708 searches the entry database 710 to find an entry that matches, the search engine 708 first searches for an entry in the entry database 710 that is a type or subtype of the template 706. Determine if it exists. As shown, both Entry 1 and Entry 2 meet this qualification. The search engine 708 then selects one of these entries (such as entry 2 as shown) and compares the field of entry to the field of the template that is not specified as a wildcard. Search engine 708 determines whether an exact match for each non-wildcard field of the template occurs for an attribute of each of the corresponding entry fields. Since field C of template 706 of FIG. 7 is specified as a wildcard field, the attribute of field C of entry 2 is not ignored and does not affect the comparison operation. Similarly, the fields of any entry defined by the template type subtype are ignored (ie, matching may occur even if the attributes of the wildcard field match). If a match entry is found (all non-wildcard fields match), search engine 708 reads the match entry from entry database 710 and provides it to the user or whether the request is a read or take request. Accordingly, the entry is removed from the entry database 710. Search engine 708 searches entry database 710 until a match is found or until all entries are checked. If no matching entry is found after searching all entries in the database, the database manager 704 returns a null value to the user 702 (step 616).
(3) 통지(3) Notice
다음에 도 8을 참조하면, 본 발명에 따라 사용자로부터 입력된 통지 요청을 처리하기 위해 검색 엔진(708)에 의해 실시되는 방법의 한 실시예를 도시하는 순서도이다. 상술한 바와 같이, 통지 요청은 템플릿에 정합하는 미래의 들어오는 엔트리에 인터레스트를 등록하기 위해 사용자에 의해 발행될 수 있다. 정합하는 엔트리가 도달하면, 데이터베이스 관리자는 필요에 따라 사용자 또는 이벤트 캐쳐에게 통지한다(도 2). 사용자가 통지 요청을 호출하면, 얼마나 오랫동안 데이터베이스 관리자(704)가 통지를 등록하는지를 가리키는 리스 타임(lease time)이 명시된다. 명시된 시간이 경과한 후, 통지 등록이 취소된다.Referring next to FIG. 8, a flow diagram illustrating one embodiment of a method performed by search engine 708 to process a notification request entered from a user in accordance with the present invention. As discussed above, a notification request may be issued by a user to register an interest in a future incoming entry that matches a template. When a matching entry arrives, the database manager notifies the user or event catcher as needed (Figure 2). When a user invokes a notification request, a lease time is specified that indicates how long database manager 704 has registered for notification. After the specified time has elapsed, the notification registration is canceled.
이와 같이, 도 8에 도시한 바와 같이, 데이터베이스 관리자(704)가 새로운 통지 요청을 수신하면(단계 802), 등록 시간이 만료할 때까지 들어오는 엔트리가 모니터된다(단계 804 내지 806). 만일 엔트리가 템플릿의 타입 또는 서브타입인 엔트리 데이터베이스(710)에 기록되면(단계 808), 그 속성이 템플릿의 비-와일드카드 필드에 연관된 속성이 정합하는 지를 판정하기 위해 엔트리의 필드가 비교된다(단계 810). 이전 설명과 유사하게, 와일드카드 또는 템플릿 엔트리의 서브타입에 의해 정의된 들어오는 엔트리의 필드가 무시된다(단계 812). 만일 정합이 발생하면, 사용자 또는 이벤트 캐쳐가 통지된다(단계 814 및 816). 부수적인 들어오는 엔트리는 등록 시간이 만료되지 않은 한 계속 모니터된다.As such, as shown in FIG. 8, when the database manager 704 receives a new notification request (step 802), an incoming entry is monitored until the registration time expires (steps 804 to 806). If the entry is written to the entry database 710 that is a type or subtype of the template (step 808), the fields of the entry are compared to determine if the attribute matches the non-wildcard field of the template (see step 808). Step 810). Similar to the previous description, the fields of the incoming entry defined by the wildcard or subtype of the template entry are ignored (step 812). If a match occurs, the user or event catcher is notified (steps 814 and 816). Incidental incoming entries will continue to be monitored as long as the registration time has not expired.
(4) 인덱싱(4) indexing
다시 도 7을 참조하면, 검색 엔진(708)은 데이터베이스 관리자(704)에 의해 수신된 질의에 의해 공통으로 명시된 특성을 갖는 엔트리에 대한 인덱스를 생성하도록 구성될 수 있다. 즉, 검색 엔진(708)은 사용 패턴을 검출할 수 있고, 수신된 템플릿에 의해 공통으로 명시된 속성을 갖는 엔트리를 가리키는 인덱스(720)를 사용할 수 있다. 예시로서, 데이터베이스 관리자(704)가 도 7에 도시된 템플릿(706)의 동일한 타입 또는 서브타입인 템플릿을 각각 사용하여 몇가지 질의 요청을 수신한다고 가정한다. 이 상황에서, 검색 엔진(708)은 (정수값 1,000과 같은 필드 A에 대한 동일한 속성값이 수많은 요청의 템플릿의 각각에 명시되어 있다는 것을 검출할 수 있다. 한 실시예에서, 데이터베이스 관리자(704)는 많은 질의에 의해 명시된 공통 템플릿 사용량을 검출하고, 이에 응답하여 공통으로 수신된 템플릿의 동일한 타입 또는 서브타입이며, 모두 필드 A마다 명시된 공통 속성을 갖는 엔트리 데이터베이스(710) 내의 모든 엔트리를 가리킨는 인덱스(720)를 생성하도록 구성되어 있다. 결국, 유사한 템플릿을 갖는 새로운 질의가 수신되면(즉, 필드 A에 대해 값 1,000을 다시 명시하는 템플릿), 검색 엔진(708)은 인덱스(720)를 사용하여, 데이터베이스 내의 모든 엔트리 세트를 검색하지 않고 템플릿에 정합할 수 있는 엔트리의 서브셋을 신속히 찾는다.Referring again to FIG. 7, search engine 708 may be configured to generate an index for entries having characteristics commonly specified by a query received by database manager 704. That is, the search engine 708 can detect the usage pattern and use the index 720 pointing to an entry having attributes commonly specified by the received template. As an example, assume that the database manager 704 receives several query requests using templates that are each the same type or subtype of the template 706 shown in FIG. In this situation, search engine 708 may detect that the same attribute value for field A, such as an integer value of 1,000, is specified in each of the templates of numerous requests. In one embodiment, database manager 704 Is the same type or subtype of template commonly received in response to detection of a common template usage specified by many queries, and is an index that points to all entries in the entry database 710 that all have a common attribute specified for each field A In turn, if a new query with a similar template is received (i.e., a template specifying a value of 1,000 again for field A), the search engine 708 uses the index 720, Quickly find a subset of entries that can match a template without searching all sets of entries in the database.
인덱싱 방법의 실시가 도 9A 및 9B에 도시되어 있다. 도 9A에 도시한 바와 같이, 특정 템플릿 카테로기에 대응하는 엔트리에의 인덱스는 요청 템플릿을 추적하고(단계 910), 템플릿(즉, 특정 비-와일드카드 필드(도는 필드들)에 연관된 패턴이 동일한 속성 또는 값으로 명시되어 있는지를 판정함으로서 생성될 수 있다. 이 판정은, 예를 들어, 유사한 템플릿을 갖는 특정 시간 내의 선정된 질의의 숫자를 수신하는 것에 기초하여 또는 유사한 템플릿을 갖는 질의의 임의의 퍼센트를 수신하는 것에 기초하여 결정될 수 있다. 검색 엔진(708)이 공통 템플릿 사용 패턴을 검출하면, 특정 템플릿 카테고리인 엔트리에 대한 인덱스를 생성한다(단계 914). 따라서, 상기 예를 고려할 때, 검색 엔진(708)은 1,000의 필드 A 값을 갖는 템플릿(706)과 동일한 타입 또는 서브타입의 모든 엔트리에 대한 인덱스를 생성할 수 있다.An implementation of the indexing method is shown in FIGS. 9A and 9B. As shown in FIG. 9A, an index into an entry corresponding to a particular template categorizer tracks the request template (step 910), and the pattern associated with the template (ie, the specific non-wildcard field (or fields) is the same. It can be generated by determining whether it is specified as an attribute or a value This determination can be made, for example, based on receiving a number of selected queries within a certain time having a similar template or any of the queries having a similar template. Can be determined based on receiving a percentage, if search engine 708 detects a common template usage pattern, it generates an index for an entry that is a particular template category, step 914. Thus, given the above example, a search Engine 708 may generate an index for all entries of the same type or subtype as template 706 with a field A value of 1,000.
도 9B에 도시한 바와 같이, 만일 새로운 요청이 단계(920) 동안 수신되면, 특정 템플릿 카테고리에 대해 인덱스가 존재하는지에 대해 정상적인 검색이 수행된다(단계 922 및 924). 만일 새로운 요청의 템플릿에 대해 인덱스 카테고리가 존재하면, 인덱스를 사용하여, 잠재적으로 정합하는 엔트리의 서브셋을 찾고 그 엔트리만을 비교한다. 이와 같이, 편리한 엔트리 검색이 수용될 수 있다. 다음에, 만일 공통 사용이 더 이상 검출되지 않으면 필요에 따라 검색 엔진(708)운 임의의 인덱스를 제거할 수 있다는 것을 알아야 한다.As shown in Figure 9B, if a new request is received during step 920, a normal search is performed as to whether an index exists for a particular template category (steps 922 and 924). If an index category exists for the template of the new request, the index is used to find a subset of the potentially matching entries and compare only those entries. As such, a convenient entry search can be accommodated. Next, it should be appreciated that search engine 708 may remove any index as needed if common usage is no longer detected.
상술한 바와 같이, 엔트리 타입은 특정 행위가 발생하도록 야기하기 위해, 외부 자극(즉, 엔트리를 처리하는 데이터베이스 시스템에 연관된 소프트웨어 프로그램)에 의해 호출될 수 있는 메소드를 부가적으로 정의할 수 있다. 이와 같은 특정 행위는 엔트리에 존재하는 데이터에 영향을 미칠 수 있다. 부수적으로, 데이터의 형식이 다르더라도, 효율적인 등가 점검이 특정 엔트리가 다른(또는 템플릿에 등가인) 엔트리와 등가인지를 판정하게 하는 메소드가 이용될 수 있다. 예를 들어, 압축 비디오 데이터를 저장하는 엔트리는 비디오 데이터의 압축 형식을 저장하는 다른 엔트리와 등가인 것으로 간주될 수 있다. 실제 저장된 데이터가 다르더라도(즉, 오브젝트가 이미지에 연관된 파일 시스템 내의 동일한 하부 경로명을 지칭한지를 판정하는 메소드가 호출될 수 있다), 이와 같은 엔트리 등가를 판정하는 메소드가 제공될 수 있다.As mentioned above, an entry type may additionally define a method that can be called by an external stimulus (ie, a software program associated with the database system processing the entry) to cause a particular action to occur. This particular behavior may affect the data present in the entry. Incidentally, even if the format of the data is different, a method may be used that allows an efficient equivalence check to determine whether a particular entry is equivalent to another (or equivalent to a template) entry. For example, an entry that stores compressed video data may be considered equivalent to another entry that stores a compressed format of video data. Even if the data actually stored is different (i.e., a method can be called that determines whether the object refers to the same subpath name in the file system associated with the image), a method can be provided for determining such an entry equivalent.
또한, 엔트리는 엔트리의 클래스 및 엔트리의 각 필드의 직렬화된 형식을 포함하는 구현에 특정한 표현으로 저장될 수 있다는 것을 알아야 한다. 이때 템플릿의 직렬화된 형식이 엔트리의 직렬화된 형식에 비교될 수 있다. 마지막으로, 엔트리는 다른 엔트리의 필드에 의해 명시될 수 있다는 것을 알아야 한다.In addition, it should be appreciated that an entry may be stored in an implementation specific representation that includes the class of the entry and the serialized form of each field of the entry. The serialized form of the template can then be compared to the serialized form of the entry. Finally, it should be understood that an entry can be specified by a field of another entry.
다중-엔트리 및 다중-템플릿 정합Multi-Entry and Multi-Template Matching
대체 실시예는 각각의 항목이 일단의 엔트리를 정의하는 데이터베이스 내의 항목의 동작 및 정합을 구현한다. "항목"은 본 발명에서 "다중-엔트리(multi-entry)"를 지칭하고, "다중-템플릿"(또는 "항목 템플릿")은 데이터베이스에서 항목을 정합시키는데 사용되는 일단의 템플릿을 지칭하는데 사용되는 용어이다. 본 절은 다중-엔트리 내지 다중-템플릿의 정합, 및 다중-엔트리 및 다중-템플릿을 포함하는 동작을 설명할 것이다. 다중-엔트리 및 다중-템플릿의 행위의 대부분은 상술한 바와 같이 단일 엔트리 및 템플릿 행위와 유사하다.Alternate embodiments implement the operation and matching of items in a database where each item defines a set of entries. "Item" refers to "multi-entry" in the present invention, and "Multi-Template" (or "Item Template") is used to refer to a set of templates used to match items in a database. Term. This section will describe operations involving multi-entry to multi-templates, and multi-entry and multi-templates. Most of the behavior of multi-entry and multi-templates is similar to single entry and template behavior as described above.
도 10은 임의의 엔트리 데이터베이스(206-208)에 저장될 수 있는 예시적인 복수의 다중-엔트리를 도시하는 도면이다. 본 발명에 따른 방법 및 시스템에서, 각각의 다중-엔트리는 엔트리 그룹이며, 각각의 엔트리는 예를 들어 JavaTM프로그래밍 언어의 JavaTM클래스로 표현된 오브젝트의 타이핑된 그룹이다. 다른 말로 표현하면, 다중-엔트리는 엔트리의 세트이며 그 자신의 타입을 가지고 있지 않다.10 is a diagram illustrating an exemplary plurality of multi-entries that may be stored in any entry database 206-208. In the method and system according to the present invention, each multiple-entry is a group of entries, and each entry might, for example, a group type of the object represented by a Java TM class of Java TM programming language. In other words, a multi-entry is a set of entries and does not have its own type.
도 10을 참조하면, 다중-엔트리 1은 예시적으로 네개의 엘리먼트(엘리먼트 A, 엘리먼트 B, 엘리먼트 C 및 엘리먼트 D) 세트를 포함한다. 반면에 다중-엔트리는 가변 길이일 수 있고, 예시적인 다중-엔트리 2는 다섯개의 엘리먼트(엘리먼트 E, 엘리먼트 F, 엘리먼트 G, 엘리먼트 H 및 엘리먼트 I) 세트를 포함하고, 예시적인 다중-엔트리 3은 세개의 엘리먼트(엘리먼트 J, 엘리먼트 K 및 엘리먼트 L)을 포함한다. 다중-엔트리의 엘리먼트의 각각은 타입된 엔트리를 저장하도록 구성되어 있다. 상술한 바와 같이, 이들 타입된 엔트리의 각각은 JavaTM클래스로 표현될 수 있고, 엔트리의 필드들은 타입된 오브젝트를 식별하는 값을 저장한다. 예를 들어, 다중-엔트리 1의 엘리먼트 A는 엔트리 1010을 식별하는 값을 포함하고, 다중-엔트리 1의 엘리먼트 B는 엔트리 1012를 식별한다. 유사하게, 다중-엔트리 2의 엘리먼트 B는 엔트리 1014을 식별하고, 엘리먼트 F는 엔트리 1016을 식별한다. 등등. 도 10의 예시적인 다중-엔트리의 경우, 비록 임의의 엔트리가 동일한 타입일 수 있지만, 그러나, 엔트리의 필드에 연관된 속성 또는 데이터는 다를 수 있다. 비록 다양한 다중-엔트리의 엘리먼트에 의해 식별된 엔트리가 특정 타입을 가질 수 있지만, 다중-엔트리는 단순히 엔트리의 세트이며 그들 스스로 특정 타입을 가지고 있지 않다는 것을 알아야 한다.Referring to FIG. 10, multi-entry 1 illustratively includes a set of four elements (element A, element B, element C and element D). Whereas multi-entry may be of variable length, exemplary multi-entry 2 includes a set of five elements (element E, element F, element G, element H and element I), and exemplary multi-entry 3 It contains three elements (element J, element K and element L). Each of the elements of the multi-entry is configured to store a typed entry. As mentioned above, each of these typed entries may be represented by a Java TM class, and the fields of the entry store values that identify the typed object. For example, element A of multi-entry 1 includes a value identifying entry 1010 and element B of multi-entry 1 identifies entry 1012. Similarly, element B of multi-entry 2 identifies entry 1014 and element F identifies entry 1016. etc. In the example multi-entry of FIG. 10, although any entry may be of the same type, the attributes or data associated with the field of the entry may be different. Although entries identified by elements of various multi-entries may have a particular type, it should be understood that multi-entries are simply a set of entries and do not themselves have a specific type.
다중-엔트리 및 다중 엘리먼트가 바로 설정되어 있기 때문에, 이들은 임의의 적합한 세트의 표현을 사용하여 표현될 수 있다. 예시 목적으로, Java 프로그래밍 언어를 포함한 많은 프로그래밍 언어에서 적합한 표현은 어레이이고, 여기서 어레이의 크기는 다중-엔트리 내의 엔트리들의 수 또는 다중-템플릿 내의 템플릿의 수에 의해 주어지며, 어레이의 각각의 엘리먼트는 (다중-엔트리의 경우에) 엔트리 또는 (다중-템플릿의 경우에는) 템플릿이다.Since multi-entry and multiple elements are set up directly, they can be represented using any suitable set of representations. For illustrative purposes, in many programming languages, including the Java programming language, a suitable representation is an array, where the size of the array is given by the number of entries in a multi-entry or the number of templates in a multi-template, each element of the array being Either an entry (for multi-entry) or a template (for multi-template).
다시 도 2를 참조하면, 상술한 바와 같이, 엔트리 데이터베이스(206, 207 및 208)의 각각은 수많은 다중-엔트리를 저장할 수 있다. 다중-엔트리는 클라이언트에 이해 호출된 기록 동작을 통해 소정의 엔트리 데이터베이스(206-208) 내에 저장될 수 있다. 설치 매체(즉도 1의 설치 매체(126))를 거쳐 엔트리 데이터베이스에 다중-엔트리가 부수적으로 제공될 수 있다. 도 11로 도시한 바와 같이, 단일 엔트리 동작과 유사한 몇몇 부수적인 동작이 시스템에 의해 지원된다. 특히, 기록 동작 이외에, 클라이언트 또는 사용자는 "판독" 동작, "테이크" 동작 및 "통지" 동작을 초기화할 수 있다.Referring again to FIG. 2, as described above, each of the entry databases 206, 207, and 208 can store numerous multi-entries. Multi-entries may be stored within a given entry database 206-208 via a write operation called upon by the client. Multi-entries may additionally be provided to the entry database via the installation medium (ie, installation medium 126 of FIG. 1). As shown in FIG. 11, some additional operations similar to single entry operations are supported by the system. In particular, in addition to the write operation, the client or user may initiate the "read" operation, the "take" operation, and the "notify" operation.
판독, 테이크 및 통지 동작은 단일 엔트리를 조작하는 동일한 방식으로 다중-엔트리를 조작한다. 한 특정 실시예에서, 동작과 관련하여 어떤 다중-엔트리가 문제가 되는 지를 정의하는 동작 요청의 일부로서 포함된 다중-템플릿을 사용함으로써 이와 같은 질의가 이루어진다. 단일 엔트리 구현에서와 같이, 판독 동작이 소정의 다중-템플릿에 정합하는 데이터베이스 내의 다중-엔트리를 판독한다. 다시 한번, 테이크 동작은 판독 동작과 동일한 동작을 수행하지만, 또한 데이터베이스로부터 판독된 임의의 다중-엔트리를 제거한다. 미래의 다중-엔트리에 인터레스트를 등록하는데 사용되던 통지 동작은 데이터베이스 내에서 정합하는 다중-엔트리가 도달할 때를 클라이언트 또는 이벤트 캐쳐에게 통지한다.Read, take, and notify operations manipulate multiple-entries in the same way that they manipulate a single entry. In one particular embodiment, such a query is made by using a multi-template included as part of an operation request that defines which multi-entry is problematic with respect to the operation. As in the single entry implementation, the read operation reads multi-entries in the database that match a given multi-template. Once again, the take operation performs the same operation as the read operation but also removes any multi-entry read from the database. The notification action used to register an interest in a future multi-entry notifies the client or event catcher when a matching multi-entry arrives in the database.
도 12는 예시적인 다중-템플릿을 도시한다. 일반적으로 말해서, 다중-템플릿은 그 엘리먼트가 이전에 정의한 템플릿을 포함하는 특정 다중-엔트리를 명시한다. 도 12에 도시된 다중-템플릿(1200)은, 다중-템플릿이 임의의 수의 엘리먼트를 가질수 있으나 본 발명의 예시적인 실시예에서는 다중-템플릿(1200) 내의 각 엘리먼트가 하나의 템플릿(1202)을 포함한다는 것을 알더라도, 네개의 엘리먼트, W, X, Y 및 Z을 갖는다.12 illustrates an example multi-template. Generally speaking, a multi-template specifies a particular multi-entry whose element contains a template previously defined. In the multi-template 1200 shown in FIG. 12, the multi-template may have any number of elements, but in an exemplary embodiment of the present invention, each element in the multi-template 1200 may be configured to have one template 1202. Even though it is included, it has four elements, W, X, Y and Z.
(1) 다중-엔트리 및 다중-템플릿 정합을 위한 방법(1) Method for multi-entry and multi-template matching
일반적으로, 다중-템플릿은 다중-템플릿 내의 각각의 템플릿이 다중-엔트리 내의 정합하는 엔트리를 갖는다면 다중-엔트리를 정합시킬 것이다. 다중-엔트리 내의 각각의 엔트리는 다중-템플릿 내의 하나의 템플릿 이상을 정합시키는데 사용될 수 있다. 예를 들어, 다중-엔트리 내의 단일 엔트리는 다중-템플릿 내의 모든 템플릿에 정합시킬 수 있어, 다중-엔트리와 다중-템플릿 간의 정합을 야기한다. 다중-엔트리가 다중-템플릿에 정합하는 지의 여부를 결정하는 프로세스에서는, 다중-엔트리의 개별적인 엔트리를 다중-템플릿 내의 개별적인 템플릿과 비교하는 것이 필요하다. 다중-엔트리 내의 개별적인 엔트리에 대한 이와 같은 다중-템플릿 내의 개별적인 템플릿의 정합은 상술한 바와 같이 단일 템플릿에 대한 단일 엔트리의 정합과 동일한 방식으로 수행된다.In general, a multi-template will match a multi-entry if each template in the multi-template has a matching entry in the multi-entry. Each entry in the multi-entry may be used to match more than one template in the multi-template. For example, a single entry in a multi-entry can match all templates in a multi-entry, resulting in a match between a multi-entry and a multi-template. In the process of determining whether a multi-entry matches a multi-template, it is necessary to compare the individual entries of the multi-entry with the individual templates in the multi-template. Matching individual templates in such multi-templates to individual entries in the multi-entry is performed in the same manner as matching single entries to a single template as described above.
도 13은 판독 요청 또는 테이크 요청중의 하나에 응답해서 특정 엔트리 데이터베이스 내의 다중-엔트리를 검색하기 위한 방법의 한 실시예를 도시하는 순서도이다. 도 13에 도시된 단계는 도 13의 검색 방법을 이용하는 데이터베이스 시스템의 기능 특성을 도시하는 도 14와 결합하여 설명될 것이다. 도 14의 기능 구성요소는 도 1의 하나 이상의 컴퓨터 시스템(101-103)와 연관된 소프트웨어 및 하드웨어의 조합을 통해 구현될 수 있다. 단계(1302) 동안, 판도 또는 테이크 요청이 사용자(702)로부터 데이터베이스 관리자(704)에게 제공된다. 소정의 요청은, 그 예시가 도 14의 다중-템플릿(1200)으로서 도시된 특정 다중-템플릿을 포함할 것이다. 다음에 데이터베이스 관리자(704)의 검색 엔진(708)은 엔트리 데이터베이스(710) 내에 다중-템플릿의 임의의 정합하는 다중-엔트리가 존재하는 지를 판정하기 우ㅢ해 엔트리 데이터베이스(710)를 검색한다.FIG. 13 is a flow diagram illustrating one embodiment of a method for searching for multi-entries in a particular entry database in response to either a read request or a take request. The steps shown in FIG. 13 will be described in conjunction with FIG. 14 showing the functional characteristics of the database system using the search method of FIG. The functional component of FIG. 14 may be implemented through a combination of software and hardware associated with one or more computer systems 101-103 of FIG. 1. During step 1302, a dominant or take request is provided from the user 702 to the database administrator 704. The predetermined request will include a particular multi-template, the example of which is shown as multi-template 1200 of FIG. 14. The search engine 708 of the database manager 704 then searches the entry database 710 to determine if there is any matching multi-entry of the multi-templates in the entry database 710.
엔트리 데이터베이스(710)를 검색하기 위해, 검색 엔진(708)은 엔트리 데이터베이스(710) 내의 다중-엔트리를 선택하여 소정의 다중-템플릿에 비교한다(단계 1304). 다음에, 다중-엔트리가 명시된 다중-템플릿에 정합하는지를 판정하기 위해, 검색 엔진(708)은 다중-템플릿 내의 각각의 템플릿을 다중-엔트리의 엔트리에 비교한다(단계 1306). 만일 다중-템플릿 내의 각각의 그리고 모든 템플릿에 대해 정합하는 엔트리가 존재하면, 다중-엔트리는 다중-템플릿에 정합시킨다(단계 1308). 다중-엔트리 내의 엔트리는 다중-템플릿 내의 하나 이상의 템플릿에 정합시키는데 사용될 수 있다. 만일 다중-템플릿 내의 모든 템플릿이 다중-엔트리 내의 정합하는 엔트리를 가지고 있으면(단계 1310), 다중-템플릿은 다중-엔트리에 정합하고 다중-엔트리가 반환된다(단계 1312). 이 프로세스는 데이터베이스 내의 모든 엔트리들이 조사될 때까지 계속한다.To search the entry database 710, the search engine 708 selects a multi-entry in the entry database 710 and compares it to a predetermined multi-template (step 1304). Next, to determine if the multi-entry matches the specified multi-template, search engine 708 compares each template in the multi-template to an entry of the multi-entry (step 1306). If there is a matching entry for each and every template in the multi-template, then the multi-entry matches the multi-template (step 1308). Entries in the multi-entry may be used to match one or more templates in the multi-template. If all templates in the multi-template have matching entries in the multi-entry (step 1310), the multi-template matches the multi-entry and the multi-entry is returned (step 1312). This process continues until all entries in the database have been examined.
만일 선택된 다중-엔트리와 동작에 의해 공급된 다중-템플릿 간에 정합되면, 검색 엔진(708)은 엔트리 데이터베이스(710) 내의 다른 다중-엔트리를 검색한다(단계 1314). 만일 데이터베이스에 다중-템플릿에 정합하는 어떠한 다중-엔트리도 발견되지 않으면, 널 값이 반환된다(단계 1316). 한 실시예에서, 만일 하나 이상이 발견되면, 하나의 다중-엔트리가 반환되고, 다른 실시예에서는, 정합하는 다중-엔트리의 요청 회수가 반환된다. 만일 클라이언트으로부터의 본래 요청이 테이크 요청 형태로 도달되면, 정합하는 다중-엔트리가 데이터베이스로부터 제거된다. 그러나, 만일 본래의 요청이 판독 요청으로서 도달되면, 정합하는 다중-엔트리가 데이터베이스로부터 제거된다.If a match is found between the selected multi-entry and the multi-template supplied by the operation, search engine 708 searches for another multi-entry in entry database 710 (step 1314). If no multi-entry matching the multi-template is found in the database, a null value is returned (step 1316). In one embodiment, if more than one is found, one multi-entry is returned, and in another embodiment, the number of requests of matching multi-entries is returned. If the original request from the client arrives in the form of a take request, the matching multi-entry is removed from the database. However, if the original request arrives as a read request, the matching multi-entry is removed from the database.
(2) 예(2) yes
도 14에 의해 도시된 예에서, 검색 엔진(708)은 (도시한 바와 같이 다중-엔트리(2)와 같은) 다중-엔트리중의 하나를 선택하고, 이 다중-엔트리의 엔트리를 다중-템플릿의 템플릿에 비교한다. 본 예에서, 검색 엔진(708)은 다중-템플릿(120)을 포함하는 요청을 수신한다.In the example shown by FIG. 14, search engine 708 selects one of the multi-entries (such as multi-entry 2 as shown) and converts the entries of this multi-entry into entries of the multi-template. Compare to template. In this example, search engine 708 receives a request that includes multi-template 120.
검색 엔진(708)은 다중-템플릿(1200) 내의 템플릿이 엔트리 데이터베이스(710) 내의 선택된 다중-엔트리에 정합하는지의 여부를 판정한다. 검색 엔진(708)은 다중-템플릿(1200)의 엘리먼트 W 내의 템플릿을, 엔트리 데이터베이스(710) 내의 다중-엔트리 2의 엘리먼트 E,F,G 및 H 내의 엔트리에 비교하여, 임의의 엔트리가 템플릿에 정합하는 지를 판정한다. 만일 검색 엔진(708)이 다중-템플릿(1200)의 엘리먼트 W 내의 템플릿에 대한 정합을 발견하면, 이때 다중-템플릿(1200)의 엘리먼트 X 내의 템플릿에 대한 정합을 찾으려고 시도할 수 있다. 이는 다시 한번, 정합을 찾을 때까지 다중-엔트리 2 내의 엔트리의 각각에, 다중-템플릿(1200)의 엘리먼트 X 내의 템플릿을 비교할 것이다. 엘리먼트 E,F,G,H 및 I 내의 이들 엔트리의 각각이 다중-템플릿 내의 다른 템플릿(즉, 엘리먼트 W내의 템플릿)에 비교되었을 수 있더라도, 이들은 다시 이 템플릿에 비교될 수 있다. 만일 엘리멘트 X 내의 템플릿에 대한 정합이 발견되면, 검색 엔진(708)은 다중-템플릿(1200) 내의 나머지 템플릿(엘리먼트 Y 및 Z 내의 템플릿)을 동일한 방식으로 점검한다. 각각의 엔트리가 하나 이상의 템플릿에 비교될 수 있기 때문에, 예를 들어, 다중-엔트리 2의 엘리먼트 E 내의 엔트리는 다중-템플릿(1200)의 엘리먼트 W,X,Y 및 Z 내의 모든 템플릿에 정합한다. 만일 다중-템플릿(1200) 내의 각각의 템플릿이 다중-엔트리 2 내의 정합하는 엔트리를 가지고 있으면, 다중-엔트리 2는 다중-템플릿(1200)에 정합한다.Search engine 708 determines whether a template in multi-template 1200 matches a selected multi-entry in entry database 710. Search engine 708 compares the template in element W of multi-template 1200 to entries in elements E, F, G, and H of multi-entry 2 in entry database 710 so that any entry Determine if it matches. If search engine 708 finds a match for a template in element W of multi-template 1200, then it may attempt to find a match for template in element X of multi-template 1200. This will again compare the template in element X of multi-template 1200 to each of the entries in multi-entry 2 until a match is found. Although each of these entries in elements E, F, G, H and I may have been compared to another template in the multi-template (ie, template in element W), they can be compared back to this template. If a match is found for a template in element X, search engine 708 checks the remaining templates in multi-template 1200 (templates in elements Y and Z) in the same manner. Since each entry can be compared to one or more templates, for example, an entry in element E of multi-entry 2 matches all templates in elements W, X, Y, and Z of multi-template 1200. If each template in the multi-template 1200 has a matching entry in multi-entry 2, then multi-entry 2 matches the multi-template 1200.
단일 엔트리 동작에서와 같이, 만일 정합하는 다중-엔트리가 발견되면, 검색 엔진(708)은 엔트리 데이터베이스(710)으로부터 정합하는 다중-엔트리를 판독하거나 또는 제거하고, 요청이 판독 요청 또는 테이크 요청인지에 따라 이를 사용자에게 제공한다. 검색 엔진(708)은 정합이 발견되거나 모든 다중-엔트리들이 점검될 때까지 엔트리 데이터베이스(710)를 계속 검색한다. 만일 엔트리 데이터베이스(710) 내의 모든 다중-엔트리의 검색 후에 어떠한 정합하는 다중-엔트리도 발견되지 않으면, 데이터베이스 관리자(704)는 널 값을 사용자(702)에 반환한다.As with a single entry operation, if a matching multi-entry is found, the search engine 708 reads or removes the matching multi-entry from the entry database 710 and determines whether the request is a read or take request. Provide it to the user accordingly. Search engine 708 continues to search entry database 710 until a match is found or all multi-entries are checked. If no matching multi-entry is found after searching all multi-entries in the entry database 710, the database manager 704 returns a null value to the user 702.
(3) 통지(3) Notice
다음에 도 15을 참조하면, 검색 엔진(708)에 의해 실시되고, 사용자로부터 수신된 통지 요청(notify request)을 처리하는 방법의 한 실시예를 도시하는 순서도가 도시된다. 통지 동작은 단일 엔트리에 대한 통지와 유사하게 동작하고, 상술한 바와 같이, 다중-템플릿에 정합하는 들어오는 미래의 다중-엔트리에 인터레스트(interest)를 등록하기 위해 사용자에 의해 통지 요청이 발행될 수 있다. 정합하는 다중-엔트리가 도달하면, 데이터베이스 관리자(704)는 필요에 따라, 사용자 또는 이벤트 캐쳐(event catcher)(도 2)중의 하나에게 통지한다. 사용자가 통지 요청을 호출하면, 데이터베이스 관리자(704)가 통지를 얼마나 오랫동안 등록하는지를 가리키는 리스 타임(lease time)이 명시된다. 명시된 시간이 경과한 후에, 통지 등록이 취소된다.Referring next to FIG. 15, shown is a flow chart illustrating one embodiment of a method performed by a search engine 708 that handles a notify request received from a user. The notification operation works similar to the notification for a single entry, and as described above, a notification request can be issued by a user to register an interest in an incoming future multi-entry that matches the multi-template. have. When a matching multi-entry arrives, database manager 704 notifies the user or one of the event catchers (FIG. 2) as needed. When a user invokes a notification request, a lease time is specified that indicates how long the database manager 704 registers for the notification. After the specified time has elapsed, the notification registration is canceled.
이와 같이, 도 15에 도시한 바와 같이, 데이터베이스 관리자(704)가 새로운 통지 요청을 수신하면(단계 1502), 등록 시간이 종료할 때까지 들어오는 다중-엔트리가 모니터된다(단계 504). 만일 다중-엔트리가 엔트리 데이터베이스(710)에 기록되면, 검색 엔진(708)은 다중-엔트리가 다중-템플릿에 정합하는 지의 여부를 판정한다. 이전의 설명과 유사하게, 만일 다중-템플릿의 각 템플릿이 다중-엔트리 내에 정합하는 엔트리를 가지고 있으면(단계 1508 및 1510), 정합이 발생하고, 사용자 또는 이벤트 캐쳐에게 통지된다(단계 1512). 등록 시간이 종료하지 않는 한 부수적인 들어오는 다중-엔트리가 계속 모니터된다(단계 1504).As such, as shown in FIG. 15, when the database manager 704 receives a new notification request (step 1502), the incoming multi-entry is monitored until the registration time expires (step 504). If a multi-entry is recorded in the entry database 710, the search engine 708 determines whether the multi-entry matches the multi-template. Similar to the previous description, if each template of the multi-template has a matching entry in the multi-entry (steps 1508 and 1510), a match occurs and a user or event catcher is notified (step 1512). The incidental incoming multi-entry is continuously monitored unless the registration time expires (step 1504).
인-플레이스(In-Place) 엔트리 수정Modify In-Place Entries
대체 실시예는 부수적으로, 데이터베이스에 인플레이스한(in-place) 엔트리 및 다중-엔트리의 수정을 실시한다. 본 발명에 따르면, 이 실시는 엔트리의 필드가 데이터베이스 내에 인 플레이스하게 수정될 수 있는 엔트리/템플릿 및 다중-엔트리/다중-템플릿 시나리오로의 확장이고, 다중-엔트리의 경우에, 다중-엔트리 내의 엔트리가 부가되고, 수정되거나 또는 삭제될 수 있다. "인-플레이스(in-place)"라는 용어는, 데이터베이스로부터 엔트리 또는 다중-엔트리를 제거하지 않고 데이터베이스 내에서 수정이 발생한다는 것을 의미한다.Alternative embodiments additionally make modifications to entries and multi-entries in-place in the database. According to the invention, this implementation is an extension to entry / template and multi-entry / multi-template scenarios in which fields of entries can be modified in-place in the database, and in the case of multi-entry, entries within a multi-entry. Can be added, modified or deleted. The term "in-place" means that modifications occur within the database without removing entries or multi-entries from the database.
본 발명에 따른 인-플레이스 수정 동작은, "단일 엔트리 수정", "다중-엔트리 부가", "다중-엔트리 수정/삭제", 및 "통지"를 포함한다. 도 16은 이와 같은 인-플레이스 수정, 및 수정을 요청하도록 사용자에 의해 공급된 정보를 도시한다. 단일 엔트리 수정 동작은 데이터베이스 내의 엔트리의 개별적인 필드 내의 값을 변경한다. 다중-엔트리 부가 동작은 데이터베이스에 존재하는 다중-엔트리에 엔트리를 부가하고, 다중-엔트리 수정/삭제는 데이터베이스 내의 다중-엔트리 내의 엔트리를 변경하거나 또는 삭제한다. 인-플레이스 수정에 관한 통지 동작은 데이터베이스 내의 엔트리 또는 다중-엔트리의 변경으로 인해 발생하는 정합을 통지한다. 일반적으로, 도 16에 도시한 바와 같이, 동작 요청의 제1 파라메타는 데이터베이스 내의 어떤 엔트리 또는 다중-엔트리가 수정되어야 하는 것을 명시하고, 제2 파라메타는 이루어질 수정을 명시한다.In-place modification operations in accordance with the present invention include "single entry modification", "multi-entry addition", "multi-entry modification / deletion", and "notification". 16 shows such in-place modifications and the information supplied by the user to request the corrections. The single entry modification operation changes the value in an individual field of an entry in the database. The multi-entry add operation adds an entry to a multi-entry present in the database, and the multi-entry modify / delete changes or deletes an entry in a multi-entry in the database. The notification operation for in-place modification notifies a match that occurs due to a change in an entry or multi-entry in the database. In general, as shown in FIG. 16, the first parameter of the operation request specifies which entry or multi-entry in the database should be modified, and the second parameter specifies the modification to be made.
(1) 단일 엔트리 수정(Single Entry Modify)(1) Single Entry Modify
도 17은 본 발명에 따른 단일 엔트리 수정 동작의 실시를 도시하는 순서도이다. 또한 구조 특성에 대해서는 도 7을 다시 참조할 것이다. 단일 엔트리 수정 동작을 호출하여 엔트리 내의 개별적인 필드의 값을 바꾸기 위해, 사용자(702)는 두개의 템플릿을 포함하는 요청을 한다(단계 1700, 또한 도 16을 참조). 제1 템플릿(1602)은 수정될 데이터베이스 내의 엔트리를 식별하는데 사용되는 한편, 제2 템플릿(1604)은 엔트리를 수정하는데 사용하는데 사용되고 이루어질 수정을 식별한다. 이들 두가지 템플릿이 그것을 식별하고 수정함으로써 동일한 엔트리를 조작하기 때문에, 제2 템플릿(1604)은 제1 템플릿(1602)와 동일한 타입 또는 동일한 서브타입이다. 임의의 실시예에서, 단일 엔트리 수정 동작은 템플릿의 타입 점검(type checking)을 포함할 수 있다.17 is a flowchart illustrating the implementation of a single entry modification operation in accordance with the present invention. Reference will also be made again to FIG. 7 for structural characteristics. To invoke a single entry modification operation to change the value of individual fields in the entry, the user 702 makes a request that includes two templates (step 1700, see also FIG. 16). The first template 1602 is used to identify entries in the database to be modified, while the second template 1604 is used to modify entries and identify modifications to be made. Because these two templates manipulate the same entry by identifying and modifying it, the second template 1604 is the same type or the same subtype as the first template 1602. In some embodiments, the single entry modification operation may include type checking of the template.
먼저, 검색 엔진(708)은 사용자로부터의 요청에 수신된 제1 템플릿(1602)에 정합하는 엔트리 데이터베이스(710) 내의 엔트리를 검색한다(단계 1702). 이 데이터베이스 내의 엔트리를 제1 템플릿에 비교하면, 상술한 바와 같이 단일 엔트리 및 템플릿 정합에 따라 정합이 수행된다. 만일 제1 템플릿(1602)에 정합하는 엔트리 데이터베이스(710) 내에 어떠한 엔트리도 존재하지 않으면, 검색 엔진(708)은 사용자(702)에게 이 동작으로 인해 변경된 엔트리의 수를 나타내는 제로를 반환한다(단계 1712).First, the search engine 708 searches for an entry in the entry database 710 that matches the first template 1602 received in a request from the user (step 1702). When the entries in this database are compared to the first template, matching is performed according to a single entry and template matching as described above. If no entry exists in the entry database 710 that matches the first template 1602, the search engine 708 returns a zero to the user 702 indicating the number of entries changed due to this operation (step 202). 1712).
만일 정합하는 엔트리가 발견되면, 제2 템플릿(1604)를 사용하여 데이터베이스 내의 인 플레이스한 엔트리를 수정, 즉 엔트리가 수정을 위해 데이터베이스로부터 제거되지 않는다. 제2 템플릿(1604)이 제1 템플릿(1602)과 동일한 타입 또는 동일한 서브타입이고 제1 템플릿(1602)이 수정된 엔트리와 동일한 타입 또는 서브타입이기 때문에, 제2 템플릿(1604)도 역시 수정된 수정된 엔트리와 동일한 타입 또는 서브타입이고, 따라서 제2 템플릿(1604)는 수정된 엔트리의 필드와 동일 또는 슈퍼타입(supertype)을 갖는다. 정합하는 엔트리를 수정하기 우ㅢ해 제2 템플릿(1604)의 비-널(non-null) 필드 내의 값을 사용하여 엔트리의 대응하는 필드 내의 값을 교체한다(단계 1708). 제2 템플릿(1604)의 널 또는 와일드카드 필드에 대응하는 엔트리의 필드 값은 변하지 않고 남는다. 데이터베이스 내의 엔트리의 수정후에, 검색 엔진(708)은 수정될 다른 엔트리를 계속 검색한다. 만일 제1 템플릿(1602)에 정합하는 데이터베이스 내의 임의의 그 이상의 엔트리가 존재하면, 그와 같은 엔트리도 동일한 방식으로 수정된다(단계 1708). 완료시, 검색 엔진(708)은 동작에 의해 수정된 엔트리의 수를 나타내는 숫자를 반환한다(단계 1712).If a matching entry is found, the second template 1604 is used to modify the in-place entry in the database, ie the entry is not removed from the database for modification. Since the second template 1604 is of the same type or same subtype as the first template 1602 and the first template 1602 is the same type or subtype as the modified entry, the second template 1604 is also modified. It is of the same type or subtype as the modified entry, so the second template 1604 has the same or supertype as the field of the modified entry. Modify the matching entry to replace the value in the corresponding field of the entry using the value in the non-null field of the second template 1604 (step 1708). The field value of the entry corresponding to the null or wildcard field of the second template 1604 remains unchanged. After modification of an entry in the database, search engine 708 continues to search for other entries to be modified. If there are any more entries in the database that match the first template 1602, such entries are modified in the same manner (step 1708). Upon completion, search engine 708 returns a number indicating the number of entries modified by the operation (step 1712).
(2) 다중-엔트리 부가(2) multi-entry addition
도 18은 본 발명에 따른 다중-엔트리 부가 동작의 단계들을 도시하는 순서도이다. 일반적으로, 다중-엔트리 부가 동작은 데이터베이스 내의 명시된 다중-엔트리에 엔트리를 부가한다. 이와 같은 동작을 요구하는 사용자(702)는 검색 엔진(708), 다중-템플릿(1606) 및 다중-엔트리(1608)에 두개의 파라메타를 공급한다(도 16). 제1 파라메타인 다중-템플릿(1606)은 변경될 엔트리 데이터베이스 내의 다주 엔트리를 식별하는데 사용되고, 제2 템플릿인 다중-엔트리(1608)는 식별된 다중-엔트리 데이터베이스에 부가될 일단의 엔트리이다. 상술한 바와 같이 정합하는 다중-엔트리/다중-템플릿을 사용하여, 검색 엔진(708)은 사용자(702)에 의해 제시된 다중-템플릿에 정합하는 데이터베이스 내에서 다중-엔트리를 검색한다(단계 1802). 만일 어떠한 정합하는 다중-엔트리도 발견되지 않으면(단계 1804), 검색 엔진(708)은 사용자(702)에게, 엔트리들이 부가된 다중-엔트리의 수를 나타내는 제로를 반환한다(단계 1812).18 is a flow chart illustrating the steps of a multi-entry add operation in accordance with the present invention. In general, a multi-entry add operation adds an entry to a specified multi-entry in a database. User 702 requesting such an operation supplies two parameters to search engine 708, multi-template 1606, and multi-entry 1608 (FIG. 16). The first parameter, multi-template 1606, is used to identify multi-entry entries in the entry database to be changed, and the second template, multi-entry 1608, is a set of entries to be added to the identified multi-entry database. Using matching multi-entry / multi-templates as described above, search engine 708 searches for multi-entries in the database that match the multi-templates presented by user 702 (step 1802). If no matching multi-entries are found (step 1804), search engine 708 returns zero to user 702 indicating the number of multi-entries to which entries have been added (step 1812).
만일 정합하는 다중-엔트리가 발견되면(단계 1804), 사용자(702)에 의해 공급된 명시된 다중-엔트리(1608)의 엔트리가 엔트리 데이터베이스(710)로부터 정합하는 다중-엔트리를 제거하지 않고, 엔트리 데이터베이스(710)에서 발견된 정합하는 다중-엔트리에 부가된다(단계 1808). 데이터베이스 내의 다중-엔트리에 부가한 후에, 검색 엔진(708)은 변경할 그 이상의 다중-엔트리를 계속 검색한다. 만일 동작 요청에서 제1 파라메타로서 제시된 다중-템플릿(1606)에 정합하는 엔트리 데이터베이스(710) 내의 그 이상의 다중-엔트리가 존재하면(단계 1810), 동작 요청에서 다중-엔트리(1608)의 엔트리가 동일한 방식으로 다중-엔트리에 부가된다(단계 1808). 마지막으로, 검색 엔진(708)은 엔트리가 부가된 다중-엔트리의 숫자를 나타내는 숫자를 반환한다(단계 1812).If a matching multi-entry is found (step 1804), the entry of the specified multi-entry 1608 supplied by the user 702 does not remove the matching multi-entry from the entry database 710, and the entry database. It is added to the matching multi-entry found at 710 (step 1808). After adding to multi-entries in the database, search engine 708 continues to search for more multi-entries to change. If there are more multi-entries in the entry database 710 that match the multi-template 1606 presented as the first parameter in the operation request (step 1810), then the entries of the multi-entry 1608 in the operation request are the same. Is added to the multi-entry in a manner (step 1808). Finally, search engine 708 returns a number representing the number of multi-entries to which the entry has been added (step 1812).
(3) 다중-엔트리 수정/삭제(3) Modify / Delete Multi-Entry
도 19는 본 발명에 따른 다중-엔트리 수정/삭제 동작을 구현하기 위한 방법을 도시하는 순서도이다. 다중-엔트리 수정/삭제 동작은, 요청에서 다중-엔트리 내의 엔트리에 따라 데이터베이스 내의 다중-엔트리에 엔트리를 수정하거나 또는 데이터베이스로부터 다중-엔트리로부터 엔트리를 삭제한다. 검색 엔진(708)이 다중-엔트리 수정/삭제 요청을 수신하면, 이 요청은 그 두개의 파라마타로서 두개의 다중-템플릿인 다중-템플릿(1610 및 다중-템플릿(1612)를 포함한다(단계 1900, 도 16 참조). 다중-템플릿(1610)은 수정되려하거나 또는 삭제된 엔트리를 갖는 엔트리 데이터베이스(710) 내의 다중-엔트리를 식별하는데 사용되는 한편, 사용자(702)에 의해 공급된 다중-템플릿(1612)은 정합하는 다중-엔트리 내의 엔트리에 대해 이루어질 수저과 삭제를 명시한다.19 is a flow chart illustrating a method for implementing a multi-entry modify / delete operation in accordance with the present invention. The multi-entry modify / delete operation modifies entries in the multi-entry in the database or deletes entries from the multi-entry from the database according to entries in the multi-entry in the request. When the search engine 708 receives a multi-entry modify / delete request, the request includes two multi-templates 1610 and a multi-template 1612 as its two parameters (step 1900). 16. The multi-template 1610 is used to identify multi-entries in the entry database 710 having entries that are to be modified or deleted, while the multi-templates supplied by the user 702 ( 1612 specifies the cut and deletes made for entries in the matching multi-entry.
요청에서 제시된 다중-템플릿(1612)은 다중-템플릿(1610)과 동일한 수의 템플릿을 포함한다. 또한, 다중-템플릿(1612) 내의 각각의 개별적인 템플릿은 다중-템플릿(1610) 내의 대응하는 템플릿과 동일한 타입 또는 서브타입이다(즉, 다중-템플릿(1612) 내의 모든 템플릿 (i)는 (i) 다중-템플릿(1610) 내의 템플릿과 동일한 타입 또는 서브타입이다). 예를 들어, 다중-템플릿(1612) 내의 제1 템플릿이 다중-템플릿(1610) 내의 제1 템플릿과 동일한 타입 또는 서브타입이면,제2 템플릿은 대응하는 템플릿과 동일한 타입 또는 서브타입 등등이다. 공통 다중-템플릿과는 달리, 요청 파라메타의 다중-템플릿(1612) 내의 템플릿은 또한 널 값일 것이며, 이들 템플릿은 이하에 설명하는 바와 같이 다중-엔트리로부터의 삭제를 명시하는데 사용될 것이다.The multi-template 1612 presented in the request includes the same number of templates as the multi-template 1610. Further, each individual template in multi-template 1612 is of the same type or subtype as the corresponding template in multi-template 1610 (ie, all templates (i) in multi-template 1612 are (i) The same type or subtype as the template in multi-template 1610). For example, if the first template in multi-template 1612 is the same type or subtype as the first template in multi-template 1610, then the second template is the same type or subtype as the corresponding template. Unlike common multi-templates, templates in multi-template 1612 of request parameters will also be null values, and these templates will be used to specify deletion from multi-entry as described below.
검색 엔진(708)은 동작 요청에서 제1 파라메타로서 제시된 다중-템플릿에 정합하는 다중-엔트리를 검색한다(단계 1902). 만일 어떠한 정합도 발견되지 않으면, 수정된 다중-엔트리의 숫자를 나타내는 제로가 반환된다(단계 1914).The search engine 708 searches for a multi-entry that matches the multi-template presented as the first parameter in the operation request (step 1902). If no match is found, zero is returned indicating the number of modified multi-entries (step 1914).
만일 정합하는 다중-엔트리가 엔트리 데이터베이스(710) 내에서 발견되면, 동작 요청으로부터 다중-템플릿(1612)을 사용하여 수정된다. 이 수정을 달성하기 위해, 다중-템플릿(1612) 내의 각각의 비-널 템플릿마다, 다중-템플릿(1612) 내의 비-널 템플릿에 따라 엔트리 데이터베이스(710) 내의 정합하는 다중-엔트리 내의 대응하는 엔트리가 변경된다(단계 1908). 이 변경은 상술한 바와 같이 단일 엔트리 수정을 사용하여 수정되고, 정합하는 다중-엔트리를 제거하지 않고 엔트리 데이터베이스(710) 내에서 수정이 인 플레이스로 발생한다. 예를 들어, 만일 다중-템플릿(162) 내의 템플릿(i)가 비-널이면, 변경되고 있는 다중-엔트리 내의 엔트리(i)가 단일 엔트리 수정을 사용하여 다중-엔트리(1612) 내의 템플릿에 따라 수정된다(도 17의 단계 1708, 여기서 다중-템플릿(1612) 내의 템플릿(i)은 템플릿 2로서 사용된다). 템플릿(i)의 비-널 필드의 값은 수정되고 있는 기존의 엔트리의 대응하는 필드 내의 값을 교체하는데 사용된다.If a matching multi-entry is found in the entry database 710, it is modified using the multi-template 1612 from the operation request. To achieve this modification, for each non-null template in multi-template 1612, the corresponding entry in matching multi-entry in entry database 710 according to the non-null template in multi-template 1612. Is changed (step 1908). This change is modified using a single entry modification as described above, and the modification occurs in place within the entry database 710 without eliminating matching multi-entries. For example, if template i in multi-template 162 is non-null, entry i in multi-entry being changed is subject to template in multi-entry 1612 using a single entry modification. (Step 1708 of FIG. 17, where template i in multi-template 1612 is used as template 2). The value of the non-null field of template i is used to replace the value in the corresponding field of the existing entry being modified.
소정의 다중-엔트리(1612) 내의 모든 널 템플릿마다, 정합하는 다중-엔트리 내의 대응하는 엔트리가 삭제된다(즉, 널인 다중-템플릿(1612) 내의 모든 템플릿(i)마다, 수정될 다중-엔트리 내의 엔트리(i)가 삭제된다)(단계 1910). 만일 데이터베이스 내에 다중-템플릿(1610)에 정합하는 다중-엔트리가 존재하면, 엔트리 데이터베이스(710) 내의 나머지 정합하는 다중-엔트리를 수정하기 위해 상기 단계들이 반복된다(단계 1912). 검색 엔진(708)이 수정을 완료하면, 이는 수정된 다중-엔트리의 숫자를 나타내는 숫자를 반환한다(단계 1914).For every null template in a given multi-entry 1612, the corresponding entry in the matching multi-entry is deleted (ie, for every template i in the multi-template 1612 that is null, within the multi-entry to be modified. Entry i is deleted) (step 1910). If there is a multi-entry in the database that matches the multi-template 1610, the above steps are repeated to modify the remaining matching multi-entries in the entry database 710 (step 1912). When search engine 708 completes the modification, it returns a number representing the number of modified multi-entries (step 1914).
그러나, 다중-엔트리 수정/삭제 동작을 다룰 때에는 예외의 경우가 발생한다. 다중-엔트리/다중-템플릿 정합에서, 다중-엔트리 내의 엔트리가 다중-템플릿 내의 하나 이상의 템플릿에 정합시키는데 사용될 수 있기 때문에, 다중-엔트리는 다중-템플릿에 정합할 수 있고, 다중-템플릿이 템플릿을 갖는 것보다 적은 엔트리를 가질 수 있다. 만일 이와 같은 다중-엔트리가 다중-템플릿(1610)에 정합하고 본 발명에 따른 수정/삭제 동작에 의해 수정된다면, 다중-템플릿(1612) 내의 하나 이상의 템플릿이 수정된 다중-엔트리 내의 단일 엔트리를 수정하거나 또는 삭제하는데 사용될 것이다. 이 경우, 만일 다중-템플릿(1612) 내의 임의의 이와 같은 템플릿(즉, 수정될 다중-엔트리의 엔트리에 정합하는 다중-템플릿(1610)의 템플릿에 대응하는 템플릿)이 삭제 동작(즉, 널)을 가리키면, 이때 수정될 다중-엔트리 내의 엔트리가 삭제된다. 그렇지 않고, 만일 다중-템플릿(1612) 내의 이와 같은 모든 템플릿이 수정 동작을 가리키면, 이때에는 모든 템플릿들이 수정을 하는데 사용되지만, 수정을 실시하는 순서에 대한 결정은 실시하는 것에 따라 다르고, 전체적으로 수정/삭제 동작에 크게 관계를 가지고 있지 않다.However, exceptions occur when dealing with multi-entry modify / delete operations. In multi-entry / multi-template matching, a multi-entry can match a multi-template, since the entry in the multi-entry can be used to match one or more templates in the multi-template, and the multi-template matches the template. You can have fewer entries than you have. If such a multi-entry matches the multi-template 1610 and is modified by the modify / delete operation according to the present invention, one or more templates in the multi-template 1612 modify a single entry in the modified multi-entry. To be used or deleted. In this case, if any such template in multi-template 1612 (ie, the template corresponding to the template of multi-template 1610 that matches the entry of the multi-entry to be modified) is deleted (ie null) If, then the entry in the multi-entry to be modified is deleted. Otherwise, if all such templates in the multi-template 1612 indicate a modification action, then all the templates are used to make the modifications, but the decision on the order in which the modifications are made depends on the implementation and the overall modification / It does not have much relation to the delete operation.
(4) 수정 통지(4) Notice of Amendment
인-플레이스 수정과 관련하여, 본 발명에 따른 다른 실시예에서는, 사용자는 데이터베이스 내의 엔트리 또는 다중-엔트리에 인터레스트(interest)를 등록할 수 있고, 이전과 같이 사용자 또는 이벤트 캐쳐에 대한 통지를 수신할 수 있다. 본 실시예에서, 사용자가 템플릿 또는 다중-템플릿을 공급함으로써, 데이터베이스 내의 엔트리 또는 다중-엔트리에 인터레스트를 등록하면, 검색 엔진(708)은 상술한 바와 같이 들어오는 엔트리 또는 다중-엔트리를 모니터하지 않는다. 인-플레이스 수정의 통지를 실시할 때, 이는 데이터베이스에서 변경되거나 또는 수정된 엔트리 또는 다중-엔트리를 모니터한다. 데이터베이스에의 들어오는 엔트리와는 반대로 데이터베이스 내의 수정된 엔트리 또는 다중-엔트리의 모니터링은, 이전의 통지 동작과, 인-플레이스 수정에 관한 현재의 통지 동작 간의 주요한 차이점이다. 그런, 통지의 많은 기본 특징은 동일하게 유지된다.Regarding in-place modification, in another embodiment according to the present invention, a user may register an interest in an entry or multi-entry in a database and receive notification of the user or event catcher as before. can do. In this embodiment, if a user registers an interest in an entry or multi-entry in a database by supplying a template or multi-template, the search engine 708 does not monitor the incoming entry or multi-entry as described above. . When issuing a notification of in-place modification, it monitors entries or multi-entries that have been changed or modified in the database. Contrary to incoming entries into the database, monitoring of modified entries or multi-entries in the database is a major difference between previous notification operations and current notification operations for in-place modifications. As such, many basic features of the notification remain the same.
일반적으로, 템플릿(1614) 또는 다중-템플릿(1616)은 엔트리와 다중-엔트리를 변경시키는데 있어서 인터레스트를 등록하는데 사용된다. 인-플레이스 수정 동안 다중-엔트리 또는 엔트리의 변경시, 검색 엔진(708)은 변경된 엔트리 또는 다중-엔트리가 등록된 템플릿 또는 다중-템플릿에 정합하는 지를 판정하거나 또는 변경된 다중-엔트리 또는 엔트리가 정합하는 템플릿 또는 다중-템플릿에서 정합하지 않는 템플릿 또는 다중-템플릿으로 천이하였는지를 판정하기 위해 점검한다. 즉, 통지 동작은 정합에서 불정합 또는 불정합에서 정합로, 정합하는 상태 내의 천이를 검색한다.Generally, template 1614 or multi-template 1616 is used to register interest in changing entries and multi-entries. Upon changing a multi-entry or entry during in-place modification, the search engine 708 determines whether the changed entry or multi-entry matches a registered template or multi-template, or the modified multi-entry or entry matches. Check to determine if the template or multi-template has transitioned to a mismatched template or multi-template. That is, the notification operation searches for transitions in the matching state, from match to mismatch or from mismatch to match.
다음에 도 20을 참조하면, 수정된 엔트리 또는 다중-엔트리의 변경을 모니터하기 위해 사용자로부터 수신된 통지 요청을 처리하는, 검색 엔진(708)에 의해 실시되는 방법의 한 실시예를 도시하는 순서도이다. 이 경우에, 통지 요청은, 공급된 템플릿(1614) 또는 다중-템플릿(1616)과 관련하여 정합 상태를 변경시키는 지의 여부를 판정하기 위해 명시된 엔트리 또는 다중-엔트리 내에 사용자가 인터레스트를 등록하기 위해 발행될 수 있다. 엔트리 또는 다중-엔트리가 수정되면, 그 정합 상태는 템플릿(1614) 또는 다중-템플릿(1616)에의 정합로부터 그것에의 불정합로 변경함으로써 또는 불정합에서 정합로 바꿈으로써 천이할 수 있다. 엔트리 또는 다중-엔트리가 통지 동작 요청에서 템플릿(1614) 또는 다중-템플릿(1616)에 대해 그 정합 상태를 바꾸면, 데이터베이스 관리자(704)는 필요에 따라 사용자 또는 이벤트 캐쳐(도 2 참조)에게 통지한다. 사용자가 통지 요청을 호출하면, 데이터베이스 관리자(704)가 얼마나 오랫동안 통지를 등록할 것인지를 가리키는 리스 타임이 명시된다. 명시된 시간이 경과한 후에, 통지 등록이 취소된다.Referring next to FIG. 20, there is a flow diagram illustrating one embodiment of a method implemented by search engine 708 that processes a notification request received from a user to monitor changes in a modified entry or multi-entry. . In this case, the notification request is for a user to register an interest in the specified entry or multi-entry to determine whether to change the registration status with respect to the supplied template 1614 or multi-template 1616. Can be issued. If an entry or multi-entry is modified, its registration state can transition by changing from registration to template 1614 or multi-template 1616 to mismatch to it or from mismatch to match. If an entry or multi-entry changes its matching status for template 1614 or multi-template 1616 in a notification action request, database manager 704 notifies the user or event catcher (see FIG. 2) as needed. . When a user invokes a notification request, a lease time is specified that indicates how long the database manager 704 will register for notifications. After the specified time has elapsed, the notification registration is canceled.
이와 같이, 도 20을 참조하면, 데이터베이스 관리자(704)가 새로운 통지 요청을 수신하면(단계 2002), 등록 시간이 종료할 때까지 이들이 수정될 때에 엔트리 또는 다중-엔트리가 모니터된다(단계 2004 및 2006). 만일 엔트리 또는 다중-엔트리가 엔트리 데이터베이스(710) 내에서 수정되면, 검색 엔진(708)은 엔트리 또는 다중-엔트리가 통지 요청에서 수신된 템플릿(1614) 또는 다중-템플릿(1616)과 관련하여 그 정합 상태를 변경하였는지를 판정한다(단계 2008 및 2010). 검색 엔진(708)은 수정된 엔트리 또는 다중-엔트리가 불정합 또는 그 역으로의 요청에서 템플릿 또는 다중-템플릿에의 정합로부터 변경하였는지의 여부를 판정한다. 만일 정합 상태의 천이가 발생하면, 사용자 또는 이벤트 캐쳐에게 통지된다(단계 2012). 등록 시간이 종료하지 않는한, 인 플레이스로 수정된 부수적인 엔트리 또는 다중-엔트리가 계속 모니터된다(단계 2004).As such, referring to FIG. 20, when the database manager 704 receives a new notification request (step 2002), entries or multi-entries are monitored as they are modified until the registration time expires (steps 2004 and 2006). ). If an entry or multi-entry is modified within the entry database 710, the search engine 708 matches the template 1614 or multi-template 1616 with which the entry or multi-entry was received in the notification request. It is determined whether the state has changed (steps 2008 and 2010). Search engine 708 determines whether the modified entry or multi-entry has changed from matching to template or multi-template in a mismatch or vice versa. If a transition of the mating state occurs, the user or event catcher is notified (step 2012). As long as the registration time has not expired, any additional entries or multi-entries modified in place are still monitored (step 2004).
타입-세이프 속성 정합(Type-Safe Attribute Matching)Type-Safe Attribute Matching
본 발명에 따른 다른 실시예는 오브젝트로서 표현된 데이터베이스 엔트리의 다양한 값을 나타내는 속성을 포함한다. 본 실시예에서는, 속성을 엔트리의 필드에 연관시키고 엔트리를 사용함으로써, 다중-엔트리 및 그 동작인 타입-세이프 속성 정합이 달성될 수 있다. 타입-세이프 속성 정합은 데이터베이스 내의 다양한 타입의 속성을 검색하는 것을 포함하고, 속성들이 강하게 타이핑되는 것을 가능하게 한다. 또한 이는 속성 간의 관계의 강화를 가능하게 하고, 타입에 의한 속성의 효율적인 참조 및 조작을 가능하게 한다.Another embodiment according to the present invention includes attributes representing various values of a database entry represented as an object. In this embodiment, by associating an attribute with a field of the entry and using the entry, multi-entry and its operation type-safe attribute matching can be achieved. Type-safe attribute matching involves retrieving various types of attributes in the database, and allows the attributes to be typed strongly. It also enables the strengthening of relationships between attributes and enables efficient reference and manipulation of attributes by type.
타입-세이프 속성 정합을 사용함으로써, 속성 및 명칭은, 속성 및 그 값(즉, 분당 페이지가 정수에만 연관된)은 물론 상호(즉, 분당 속성의 페이지가 프린터에만 연관된) 긴밀하게 연관된다. 타입-세이프 속성은 또한 속성의 쌍들과 그 값들 간의 관계의 강화를 가능하게 한다. 또한 이는 많은 서로 다른 타입들의 오브젝트들이 단일 데이터베이스에 저장되는 것을 가능하게 하면서 타입에 의한 오브젝트의 효율적인 검색을 가능하게 한다. 부수적으로, 이는 비록 데이터베이스가 많은 서로 다른 타입의 오브젝트를 저장할 수 있더라도 데이터베이스 내의 오브젝트의 명시된 타입에만 영향을 미치는 수정을 가능하게 한다.By using type-safe attribute matching, attributes and names are closely related to each other (i.e., pages of attributes per minute are associated only with printers) as well as to attributes and their values (i.e., pages per minute are only integers). Type-safe attributes also allow for strengthening the relationships between pairs of attributes and their values. It also enables efficient retrieval of objects by type while allowing many different types of objects to be stored in a single database. Incidentally, this allows modifications that affect only the specified types of objects in the database, even though the database can store many different types of objects.
본 발명에 따르면, 타입-세이프 속성 정합은 엔트리의 필드와 속성을 연관시킴으로써 달성된다. 엔트리의 필드에 저장된 값은 연관된 속성의 값이다. 일단의 속성, 이 경우에 엔트리가 JavaTM클래스의 인스턴스일 수 있기 때문에, 클래스는 세트 및 개별적인 속성 모두의 강한 타이핑을 제공한다. 일예로, 다음 예는 필드가 명칭, 제품 데이터, 및 물리적 장소와 같은 일반적인 정보 이상을 나타내는 엔트리는 물론, (즉 분당 페이지, 해상도 등) 프린터의 속성을 표현하는 전형적인 프린터를 나타내는 엔트리를 예시한다.According to the present invention, type-safe attribute matching is achieved by associating attributes with fields of the entry. The value stored in the entry's field is the value of the associated attribute. Because a set of attributes, in this case an entry, can be an instance of a Java TM class, the class provides strong typing of both sets and individual attributes. As one example, the following example illustrates an entry representing a typical printer that represents attributes of the printer (ie pages per minute, resolution, etc.), as well as entries representing fields beyond general information such as name, product data, and physical location.
public class Printer implements Entry{public class Printer implements Entry {
Integer ppm; // 분당 페이지Integer ppm; // pages per minute
Integer dpi; //인치당 도트 해상도Integer dpi; // dot resolution per inch
Boolean duplex; // 양면 인쇄를 지원Boolean duplex; // support duplex printing
Boolean color; //컬러 또는 흑색 전용Boolean color; // color or black only
}}
public class Name implements Entry{public class Name implements Entry {
String name; //서비스의 사용자 친근 명칭String name; // user friendly name of the service
String description; // 서비스의 자유 형태 설명String description; // free form description of service
String language; // 상기 사용된 언어(즉, 영어, 프랑스어)String language; // language used above (ie English, French)
}}
public class Type implements Entry{public class Type implements Entry {
String type; //서비스의 일반적인 타입String type; // general type of service
String vendor; //서비스를 실시하는 제품 공급자String vendor; // provider of service
String model; //제품의 모델번호/명칭String model; // model number / name of the product
String version; 제품의 버젼 번호String version; Product version number
}}
public class Location implements Entry{public class Location implements Entry {
Integer floor; //어떤 층이 서비스를 제공하는가Integer floor; // which layers provide services
String building; //어떤 건물에 들어갈 수 있는가String building; // what buildings can enter
String room; // 어떤 방을 들어갈 수 있는가String room; // what room you can enter
}}
도시한 바와 같이, 엔트리는 물론 필드의 엄격한 타이핑이 존재하고, 이와 같은 필드와 그 타입들은 항상 이와 같은 엔트리와 그 타입에 연관될 것이다. 예를 들어, "ppm" 또는 "분당 페이지(pages per mimute)"는 "Integer"의 타입이다.As shown, there are strict typing of fields as well as entries, and such fields and their types will always be associated with such entries and their types. For example, "ppm" or "pages per mimute" is a type of "Integer".
항목의 추가적인 설명은 다중-엔트리를 사용하여 달성될 수 있다. 다중-엔트리를 사용함으로써, 전형적인 프린터는 또한 일단의 속성 세트로서 설명될 수 있다. 이와 같이 전형적인 프린터를 설명할 때에는 장소, 명칭 또는 기계 종류와 같이, 다중-엔트리 내의 다른 엔트리에 의해 표현될 수 있는 부수적인 특징들이 포함될 수 있다. 상기 예에서의 일단의 엔트리는 전형적인 프린터의 속성을 표현하는 예시적인 다중-엔트리를 형성한다.Further description of the items may be achieved using multi-entry. By using multi-entry, a typical printer can also be described as a set of attributes. Such typical printer descriptions may include additional features that may be represented by other entries in the multi-entry, such as location, name, or machine type. The set of entries in this example form an exemplary multi-entry representing the attributes of a typical printer.
엔트리 및 다중-엔트리 동작은 이와 같은 속성의 타입-세이프 세트를 검색하고 조작하는데 사용될 수 있다. 이와 같은 연상은 테이크, 기록, 통지, 판독, 엔트리 수정, 다중-엔트리 부가, 다중-엔트리 수정/삭제, 및 수정 통지를 포함한다. 본 발명에 따른 데이터베이스 시스템에서는 다른 공지된 데이터베이스 동작이 수행될 수 있다는 것을 알아야 한다.Entry and multi-entry operations may be used to retrieve and manipulate the type-safe set of such attributes. Such associations include take, record, notification, read, entry modification, multi-entry addition, multi-entry modification / deletion, and modification notification. It should be appreciated that other known database operations may be performed in the database system according to the present invention.
예시적인 목적으로, 데이터베이스에 저장되어 있는 다음과 같은 다중-엔트리에 의해 설명되는 두개의 서로 다른 프린터가 존재한다고 가정한다. 각각의 프린터는 다중-엔트리 내의 엔트리의 필드에 연관된 속성에 의해 설명된 임의의 성질을 가질 것이다. 가설 예에서, 첫번째 프린터는 설명과 연관된, 영어 명칭 "quick" 및 독일어 명칭 "schnell"를 갖는다. 예에 도시한 바와 같이, 이는 ABC 건물의 1층 방 1202에 위치하고, 또한 연관된 인쇄 특성(즉, ppm=10, dpi=600 등)을 갖는다. 이와 같은 프린터는 다음과 같은 다중-엔트리에 의해 표현될 수 있다:For illustrative purposes, assume that there are two different printers described by the following multi-entries stored in a database. Each printer will have any property described by the attribute associated with the field of entry in the multi-entry. In the hypothetical example, the first printer has an English name "quick" and a German name "schnell", associated with the description. As shown in the example, it is located in the first floor room 1202 of the ABC building and also has associated printing characteristics (ie, ppm = 10, dpi = 600, etc.). Such a printer can be represented by a multi-entry such as:
Multi-Entry 1 =Multi-Entry 1 =
{Name [name = "quick",{Name [name = "quick",
description ="yahda1",description = "yahda1",
language ="English"],language = "English"],
Name [name = "schnell",Name [name = "schnell",
description ="yahda1",description = "yahda1",
language ="German"],language = "German"],
Location [floor = 1,Location [floor = 1,
building ="ABC",building = "ABC",
room ="1202"],room = "1202"],
Printer [ppm = 10,Printer [ppm = 10,
dpi = 600,dpi = 600,
duplex = colorduplex = color
color =false]}color = false]}
영어 명칭 "slow"를 가지며 XYZ 건물 2층 방 101에 위치한 두번째 프린터는 또한 연관된 인쇄 특성(즉, ppm=3, dpi=300 등)을 갖는다. 두번째 프린터는 다음과 같이 다중-엔트리에 의해 표현될 수 있다:The second printer, with the English name "slow" and located in room 101 of the XYZ building, also has associated printing characteristics (ie, ppm = 3, dpi = 300, etc.). The second printer can be represented by a multi-entry as follows:
Multi-Entry 2 = {Name [name = "slow",Multi-Entry 2 = {Name [name = "slow",
description ="yada2",description = "yada2",
language ="English"],language = "English"],
Location [floor = 2,Location [floor = 2,
building ="XYZ",building = "XYZ",
room ="101"],room = "101"],
Printer [ppm = 3,Printer [ppm = 3,
dpi = 300,dpi = 300,
duplex = falseduplex = false
color =true]}color = true]}
지금부터, 엔트리의 필드로서 표현된 임의의 속성을 갖는 모든 프린터를 반환하는 검색이 필요하다고 가정한다. 예를 들어, 만일 사용자가 "XYZ" 건물에 위치한 데이터베이스에 표현된 프린터를 찾고, 컬러 프린터라면, 검색에서의 다중-템플릿은 다음과 같이 표현될 수 있다:From now on, assume that a search is needed that returns all printers with any attribute expressed as a field of the entry. For example, if the user looks for a printer represented in a database located in the "XYZ" building and is a color printer, the multi-template in the search can be expressed as follows:
Multi-Template 1 ={Location [floor = null,Multi-Template 1 = {Location [floor = null,
building ="XYZ",building = "XYZ",
room =null],room = null],
Printer [ppm =null,Printer [ppm = null,
dpi =null,dpi = null,
duplex =null,duplex = null,
color =true]}color = true]}
사용자는 다중-템플릿 1을 공급하는 판독 동작을 파라메타로서 호출할 수 있다. 만일 다중-엔트리 1 및 2를 포함하는 데이터베이스에 적용되면, 여기에 도시한 다중-템플릿 1이 다중-엔트리 2에 정합하기 때문에, 이전 예로부터의 두번째 프린터를 표현하는 다중-엔트리 2가 반환될 것이다. 검색 엔진(708)은 부정확한 타입의 항목을 바이패스하여 데이터베이스를 검색하고, 엔트리의 필드에 저장된 값을 요청내의 템플릿의 값에 비교한다. 결과로, 정확한 속성값을 갖는 것만을 반환한다. 이와 같은 타입-세이프 정합은 서로 다른 타입의 오브젝트가 동일한 데이터베이스에 저장되어 효율적으로 검색될 수 있게 한다.The user may invoke the read operation as a parameter supplying multi-template 1. If applied to a database containing multi-entries 1 and 2, since multi-template 1 shown here matches multi-entry 2, multi-entry 2 representing the second printer from the previous example will be returned. . Search engine 708 bypasses the incorrect type of item to search the database and compares the value stored in the field of the entry to the value of the template in the request. As a result, only those with the correct attribute values are returned. This type-safe match allows objects of different types to be stored in the same database for efficient retrieval.
타입-세이프 속성 정합을 이용하는 데이터베이스에서 수행되는 동작과 관련하여, 임의의 특성을 소유하고 있는 데이터베이스에 표현된 모든 항목에 대해 타입-세이프 수정이 요청된다고 가정한다. 이와 같은 경우에, 데이터베이스 내의 항목을 수정하기 위해 엔트리/다중-엔트리 수정 동작이 사용될 수 있다. 예를 들어, 특정 임의의 위치에 있는 흑색 및 백색(color=flase) 모든 프린터를 해상도(즉, dpi 100)로 변경하는 요청이 정형화되고, 그 위치 속성을 제거한다고 가정한다. 다중-엔트리 수정/삭제 동작이 두개의 파라메타, 데이터베이스 내의 다중-엔트리가 수정될 것이라는 것을 가리키는 다중-템플릿, 및 이루어질 변경을 가리키는 다중-엔트리를 취한다고 간주하면, 이들 두개의 파라메타가 이와 같은 변경을 나타내도록 공급될 수 있다. 다시 이전 예를 참조하면, 다중-엔트리 수정/삭제 동작의 파라메타중 첫번째 파라메타는 다음과 같이 다중-템플릿으로 표현될 수 있다:Regarding the operations performed in a database using type-safe attribute matching, it is assumed that type-safe modifications are required for all items represented in the database owning any property. In such cases, entry / multi-entry modification operations may be used to modify items in the database. For example, suppose a request to change all printers in black and white (color = flase) at a particular arbitrary location to a resolution (i.e., dpi 100) is formalized and removes its location attribute. Given that a multi-entry modify / delete operation takes two parameters, a multi-template indicating that a multi-entry in the database will be modified, and a multi-entry indicating a change to be made, these two parameters may cause such a change. Can be supplied to indicate. Referring back to the previous example, the first parameter of the multi-entry modify / delete operation may be represented as a multi-template as follows:
Multi-Template 2 ={Location [floor = null,Multi-Template 2 = {Location [floor = null,
building = null,building = null,
room =null],room = null],
Printer [ppm =null,Printer [ppm = null,
dpi =null,dpi = null,
duplex =null,duplex = null,
color =false]}color = false]}
이와 같은 다주 템플릿은 위치에 무관하게 흑색 및 백색의 모든 프린터를 검색한다. 마지막으로, 이와 같은 성질이 100의 해상도를 갖는 모든 다중-엔트리를 수정하고 그 위치 속성을 제거하기 위해, 다음과 같은 요청을 사용하여 수정/삭제 동작이 초기화된다:This multi-week template searches for all black and white printers regardless of location. Finally, to modify all multi-entries with a resolution of 100 and remove their location attributes, the modify / delete operation is initiated using the following request:
Multi-Entry modify/delete (Multi-template 2,Multi-Entry modify / delete (Multi-template 2,
{null,{null,
Printer [ppm =null,Printer [ppm = null,
dpi =100,dpi = 100,
duplex =null,duplex = null,
color =null]})color = null]})
검색 엔진(708)은 다중-템플릿 2에 정합하는 데이터베이스 내의 모든 다중-엔트리를 찾고, 이들을 다중-엔트리 수정/삭제 동작 방법에서 설명한 바와 같이 동작 내의 두번째 파라메타에 따라 수정한다. 이전 예로부터의 다중-엔트리 1은 동작 파라메타에 사용된 다중-템플릿 2에 정합하고, 따라서 다중-엔트리 1이 동작의 두번째 파라메타에 따라 변경된다. 이와 같은 동작은 위치 속성을 삭제하고, dpi 성질을 100의 값으로 교체하고, 수정된 다중-엔트리 1을 만든다:Search engine 708 finds all multi-entries in the database that match multi-template 2 and modifies them according to the second parameter in the operation as described in the multi-entry modify / delete operation method. Multi-entry 1 from the previous example matches the multi-template 2 used in the operating parameters, so that multi-entry 1 is changed according to the second parameter of the operation. This action deletes the location attribute, replaces the dpi attribute with a value of 100, and creates a modified multi-entry 1:
Multi-Entry 1 =Multi-Entry 1 =
{Name [name = "quick",{Name [name = "quick",
description ="yada1",description = "yada1",
language ="English"],language = "English"],
Name [name = "schnell",Name [name = "schnell",
description ="yahda1",description = "yahda1",
language ="German"],language = "German"],
Printer [ppm = 10,Printer [ppm = 10,
dpi = 100,dpi = 100,
duplex = true,duplex = true,
color =false]}color = false]}
즉, 검색 엔진은 요청된 타입의 속성을 처리하는 데이터베이스 내의 모든 항목을 찾고, 이들을 타입-세이프 방식으로 수정함으로써, 타입-세이프 속성 정합을 구현한다. 도시한 예는 예시하기 위한 것이라는 것을 알아야 한다.That is, the search engine implements type-safe attribute matching by finding all items in the database that handle attributes of the requested type and modifying them in a type-safe manner. It should be understood that the illustrated example is for illustration.
상기 개시를 완전히 이해하는 한 기술분야의 숙련자에게는 많은 변형과 수정이 명확할 것이다. 다음 특허청구범위는 이와 같은 변형과 수정을 포괄하도록 해석되도록 의도되었다.Many variations and modifications will be apparent to those skilled in the art upon a full understanding of the disclosure. The following claims are intended to be interpreted to cover such modifications and variations.
Claims (40)
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7604898P | 1998-02-26 | 1998-02-26 | |
US4483998A | 1998-03-20 | 1998-03-20 | |
US09/044,839 | 1998-03-20 | ||
US60/076,048 | 1998-03-20 | ||
PCT/US1999/004071 WO1999044156A1 (en) | 1998-02-26 | 1999-02-25 | Method and system for in-place modifications in a database |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20010041082A true KR20010041082A (en) | 2001-05-15 |
Family
ID=26722059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020007009121A KR20010041082A (en) | 1998-02-26 | 1999-02-25 | Method and system for in-place modification in a database |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1057122A1 (en) |
JP (1) | JP2002505483A (en) |
KR (1) | KR20010041082A (en) |
CN (1) | CN1298524A (en) |
AU (1) | AU2876999A (en) |
WO (1) | WO1999044156A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100882274B1 (en) * | 2007-11-08 | 2009-02-06 | 아주대학교산학협력단 | Apparatus and method for image retrieval using partial dynamic time warping |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6826572B2 (en) | 2001-11-13 | 2004-11-30 | Overture Services, Inc. | System and method allowing advertisers to manage search listings in a pay for placement search system using grouping |
-
1999
- 1999-02-25 JP JP2000533837A patent/JP2002505483A/en active Pending
- 1999-02-25 EP EP99909597A patent/EP1057122A1/en not_active Withdrawn
- 1999-02-25 AU AU28769/99A patent/AU2876999A/en not_active Abandoned
- 1999-02-25 WO PCT/US1999/004071 patent/WO1999044156A1/en not_active Application Discontinuation
- 1999-02-25 CN CN99805368A patent/CN1298524A/en active Pending
- 1999-02-25 KR KR1020007009121A patent/KR20010041082A/en not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100882274B1 (en) * | 2007-11-08 | 2009-02-06 | 아주대학교산학협력단 | Apparatus and method for image retrieval using partial dynamic time warping |
Also Published As
Publication number | Publication date |
---|---|
JP2002505483A (en) | 2002-02-19 |
EP1057122A1 (en) | 2000-12-06 |
CN1298524A (en) | 2001-06-06 |
WO1999044156A1 (en) | 1999-09-02 |
AU2876999A (en) | 1999-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6567820B1 (en) | Method and system for in-place modifications in a database | |
US6032151A (en) | Database system employing polymorphic entry and entry matching | |
US6484181B2 (en) | Method and system for handling foreign key update in an object-oriented database environment | |
US8229932B2 (en) | Storing XML documents efficiently in an RDBMS | |
US6631381B1 (en) | System and method for referencing a user-generated copy of a catalog | |
US6834286B2 (en) | Method and system for representing and accessing object-oriented data in a relational database system | |
US8150884B2 (en) | System and computer program product for nested categorization using factorization | |
US6823338B1 (en) | Method, mechanism and computer program product for processing sparse hierarchical ACL data in a relational database | |
US7921076B2 (en) | Performing an action in response to a file system event | |
US7260572B2 (en) | Method of processing query about XML data using APEX | |
US20020032684A1 (en) | Directory information management apparatus, directory information management method, and computer readable recording medium having directory information management program stored therein | |
US8694510B2 (en) | Indexing XML documents efficiently | |
US20020107872A1 (en) | Object manager for common information model | |
US20050044074A1 (en) | Scoping queries in a search engine | |
US20080027981A1 (en) | System and method for ontology-based translation between directory schemas | |
US7363328B2 (en) | Method and system for modifying schema definitions | |
CA2461871A1 (en) | An efficient index structure to access hierarchical data in a relational database system | |
US7627547B2 (en) | Processing path-based database operations | |
KR20010041366A (en) | Method and system for multi-entry and multi-template matching in a database | |
KR20010034516A (en) | Method and system for typesafe attribute matching | |
US6578044B1 (en) | Method and system for typesafe attribute matching | |
US20030088615A1 (en) | Update resolution procedure for a directory server | |
KR20010041082A (en) | Method and system for in-place modification in a database | |
US20080016029A1 (en) | Optimizing a query to a database | |
US20080147615A1 (en) | Xpath based evaluation for content stored in a hierarchical database repository using xmlindex |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |