KR20030047996A - Method, system and data structures for implementing nested databases - Google Patents

Method, system and data structures for implementing nested databases Download PDF

Info

Publication number
KR20030047996A
KR20030047996A KR10-2003-7001266A KR20037001266A KR20030047996A KR 20030047996 A KR20030047996 A KR 20030047996A KR 20037001266 A KR20037001266 A KR 20037001266A KR 20030047996 A KR20030047996 A KR 20030047996A
Authority
KR
South Korea
Prior art keywords
data structure
database
lock
data
hierarchical level
Prior art date
Application number
KR10-2003-7001266A
Other languages
Korean (ko)
Inventor
안핀드젠올레조르젠
Original Assignee
자임포닉 시스템즈 아에스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/628,728 external-priority patent/US6751617B1/en
Application filed by 자임포닉 시스템즈 아에스 filed Critical 자임포닉 시스템즈 아에스
Publication of KR20030047996A publication Critical patent/KR20030047996A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

Abstract

본 발명은 데이터를 동시에 이용하기 위한 요청을 처리하고 관리하는 방법 및 시스템을 개시한다. 내포 데이터베이스는 데이터를 액세스하여 수정할 수 있는 다른 환경을 생성하기 위하여 이용된다. 존재하는 각각의 트랜잭션에 대하여, 그 트랜잭션과 관련된 데이터베이스 또는 보조 데이터베이스에 대한 표시 또는 참조가 있다. 또한, 문제의 데이터 항목에 대하여, 어떤 데이터베이스 또는 보조 데이터베이스가 그 항목과 관련이 있는지를 표시하는 데이터 구조도 있다. 트랜잭션, 보조 데이터베이스 및 데이터 항목들에 관한 데이터 구조를 이용하여 다양한 트랜잭션 및 보조 데이터베이스에 대한 제어 범위를 생성할 수 있다. 따라서, 데이터는 복수의 유저사이에 쉽게 공유될 수 있다. 데이터베이스의 생성에는 복수의 데이터 사본을 요청하지 않고, 상기 데이터베이스 관리 시스템은, 바람직하게 복수의 사본이 이용될 수 있어도, 그 데이터의 하나의 사본을 이용하여 구현될 수 있다.The present invention discloses a method and system for processing and managing requests for concurrent use of data. Nested databases are used to create other environments in which data can be accessed and modified. For each transaction present, there is an indication or reference to the database or secondary database associated with that transaction. There is also a data structure for the data item in question indicating which database or secondary database is associated with the item. Data structures for transactions, secondary databases, and data items can be used to create control ranges for various transactions and secondary databases. Thus, data can be easily shared among a plurality of users. The creation of a database does not require a plurality of copies of the data, and the database management system can be implemented using one copy of the data, although a plurality of copies may preferably be used.

Description

내포 데이터베이스를 구현하는 방법, 시스템 및 데이터 구조{METHOD, SYSTEM AND DATA STRUCTURES FOR IMPLEMENTING NESTED DATABASES}How to implement a nested database, system and data structure {METHOD, SYSTEM AND DATA STRUCTURES FOR IMPLEMENTING NESTED DATABASES}

2명의 사람 또는 엔티티들이 동시에 데이터베이스 또는 다른 장소 내의 정보에 액세스하길 원하거나, 동시에 또는 동일한 시간대에 동일한 정보와 관련된 데이터베이스에 데이터를 기록하길 원할 때, 고유의 충돌 및 현존하는 문제점이 있다. 이러한 문제점들은 데이터를 공유하는 어떤 형태의 애플리케이션에서 발생할 수 있으며, 워드 프로세싱 분야 및 공학 설계 분야에서는, 1개 이상의 엔티티가 동일한 데이터를 이용하길 원하는 어떠한 설정 또는 상황에서 본 발명을 적용하더라도, 동시 액세스를 발생시킨다.There are inherent conflicts and existing problems when two people or entities want to access information in a database or other place at the same time, or write data to a database associated with the same information at the same time or at the same time. These problems may arise in any type of application that shares data, and in word processing and engineering design, concurrent access may be achieved, regardless of the configuration or situation in which more than one entity wants to use the same data. Generate.

데이터베이스 관리 시스템에서, ACID[원자성(Atomicity), 일관성(Consisten cy), 독립성(Isolation), 내구성(Durability)] 특성들은 바람직하다.In a database management system, ACID (Atomicity, Consisten cy, Isolation, Durability) characteristics are desirable.

원자성은 트랜잭션의 수행 결과들(즉, 데이터베이스에 대한 변경 사항)이 데이터베이스에 모두 반영되든가 전혀 반영되지 않는 것을 의미한다. 일반적으로 트랜잭션을 승인(commit) 또는 거부(abort)하는 것을 말한다. 트랜잭션이 승인되는 경우에, 이 트랜잭션의 수행에 의해 데이터베이스에 만들어진 모든 변경 사항들은 영속성있게 기억되어, 일정한 상태로 데이터베이스를 유지한다. 트랜잭션이 거부되는 경우에, 트랜잭션에 의해 데이터베이스에 만들어진 변경 사항들은 취소되어(backed out), 다시 한번 데이터베이스를 일정한 상태로 유지한다.Atomicity means that the results of a transaction (ie changes to the database) are all reflected in the database or not at all. In general, it means to commit or reject a transaction. If the transaction is approved, all changes made to the database by the execution of this transaction are persistently stored, keeping the database in a constant state. If a transaction is rejected, the changes made to the database by the transaction are backed out, once again keeping the database constant.

일관성은 각각의 트랜잭션이 데이터베이스에 대한 합법적인 결과만을 승인하는 것을 의미한다. 따라서, 트랜잭션은 데이테베이스를 하나의 일정한 상태로부터 다른 일정한 상태로 되게 해야한다.Consistency means that each transaction only accepts legitimate results for the database. Thus, a transaction must bring the database from one constant state to another.

독립성은 하나의 트랜잭션 내의 이벤트들을 동시에 실행 중에 있는 다른 트랜잭션에 대해 비밀로 하는 것을 의미한다. 동시 트랜잭션들은 서로 간섭하지 않아야 하며, 그들 자체에 데이터베이스를 갖고 있는 것처럼 실행한다.Independence means keeping events in one transaction secret from other transactions running simultaneously. Concurrent transactions should not interfere with each other and execute as if they had a database in themselves.

내구성은 일단 트랜잭션을 완료하고 그 결과들을 데이터베이스에 승인한 경우에, 이후에 어떤 오기능이 발생하더라도 그 결과들을 잃어버리지 않는 것을 의미한다.Durability means that once you have completed a transaction and approved the results in the database, you will not lose the results if any malfunctions occur later.

ACID 특성들이 매우 바람직한 반면에, 동일한 데이터의 복수의 라이터 (writer)들을 갖는 것은 일반적으로 ACID 특성에 관한 타협을 필요로 한다. 트랜잭션 특성들을 확보하는 동시에, 또 모든 사람 또는 트랜잭션마다 행할 필요성이 있는 무엇이든지, 행하고 싶은 무엇이든지 행하기란 매우 어렵다. 데이터를 사용하는 동안에 다른 사람이 데이터에 액세스하는 것을 간단히 허용하는 것은 ACID 특성들과 충돌을 내포한다.While ACID features are highly desirable, having multiple writers of the same data generally requires compromise on the ACID feature. It is very difficult to do what you want to do, whether you need to do it at the same time as everyone or every transaction, while having transactional characteristics. Simply allowing others to access the data while using the data implies conflicts with the ACID characteristics.

본 발명은 데이터베이스 관리 시스템에 관한 것으로써, 보다 구체적으로는 호환성 없는 이용으로부터 데이터베이스 자원들을 보호하는 잠금 관리자(lock manager)를 이용하는 데이터 관리 시스템 및 트랜잭션 처리 시스템에 관한 것이다. 또한, 본 발명은 메모리에 기억되는 컴퓨터 데이터 구조에 기초한 내포(nested) 데이터베이스의 이용을 허용하는 데이터 관리 시스템의 구현 방법에 관한 것이다. 더욱더, 본 발명은 공유 데이터에 대한 동시 액세스를 제공하는 특정 시스템에 적용할 수 있는 것에 관한 것이다.The present invention relates to a database management system, and more particularly, to a data management system and a transaction processing system using a lock manager to protect database resources from incompatible use. The present invention also relates to a method of implementing a data management system that allows the use of nested databases based on computer data structures stored in memory. Moreover, the present invention is applicable to certain systems that provide simultaneous access to shared data.

도 1은 본 발명을 구현하는 데이터베이스 관리 시스템의 블록도이다.1 is a block diagram of a database management system implementing the present invention.

도 2는 보조 데이터베이스로 분할되는 자원들의 트랙을 유지하는 데이터 구조를 도시한다.2 shows a data structure that maintains a track of resources divided into secondary databases.

도 3은 복수의 링크된 잠금 제어 블록 및 잠금 요청 블록을 도시한다.3 illustrates a plurality of linked lock control blocks and lock request blocks.

도 4는 보조 데이터베이스 내의 데이터 항목들에 대한 잠금을 설정하는데 이용되는 보조 데이터베이스 잠금 제어 블록(SLCB : subdatabase lock control block)을 포함하는 데이터 구조를 도시한다.4 illustrates a data structure including a subdatabase lock control block (SLCB) used to establish a lock on data items in a secondary database.

도 5는 특정 데이터베이스 또는 보조 데이터베이스에 각각의 트랜잭션이 속하는 것을 도시한다.5 shows that each transaction belongs to a particular database or secondary database.

도 6은 이러한 특정 실시예에서 트랜잭션이 자체의 데이터베이스 또는 보조 데이터베이스 내의 자원들만을 액세스할 수 있는 것을 도시한다.FIG. 6 illustrates that in this particular embodiment, the transaction can only access resources in its own database or in a secondary database.

도 7은 데이터베이스 제어 블록(DBCB : database control block) 데이터 구조의 전형적인 구현을 도시한다.7 illustrates an exemplary implementation of a database control block (DBCB) data structure.

도 8은 트랜잭션 제어 블록(TCB : transaction control block) 데이터 구조의 전형적인 구현을 도시한다.8 illustrates a typical implementation of a transaction control block (TCB) data structure.

도 9는 하나의 계층에 보조 데이터베이스를 전형적으로 구현하는 것을 도시한다.9 illustrates a typical implementation of a secondary database in one tier.

도 10은 데이터베이스 제어 블록 내의 실제 트랜잭션 필드 및 트랜잭션 제어 블록 내의 문맥 데이터베이스 필드와 보조 데이터베이스 필드를 이용하는 일예를 도시한다.10 illustrates an example of using actual transaction fields in a database control block and context database fields and auxiliary database fields in a transaction control block.

도 11은 보조 데이터베이스마다 하나의 검색 테이블이 있고, 이 검색 테이블이 보조 데이터베이스 잠금 제어 블록에 대한 참조를 포함하는 대안의 구현을 도시한다.FIG. 11 shows an alternative implementation where there is one lookup table per secondary database, the lookup table including a reference to a secondary database lock control block.

도 12는 잠금 제어 블록들이 하나의 어레이 또는 테이블 내에 포함되는 어떤 보조 데이터베이스의 전형적인 구현을 도시한다.12 illustrates a typical implementation of any secondary database in which lock control blocks are included in one array or table.

도 13은 데이터베이스 제어 블록 및 트랜잭션 제어 블록을 단 하나의 계층 데이터 구조 배열로 구현할 수 있는 것을 도시한다.13 illustrates that the database control block and the transaction control block can be implemented in only one hierarchical data structure arrangement.

도 14는 잠금 제어 블록 데이터 구조의 대안의 구현을 도시한다.14 illustrates an alternative implementation of the lock control block data structure.

도 15는 새로운 보조 데이터베이스를 생성하는 흐름도이다.15 is a flowchart for creating a new secondary database.

도 16은 유저 데이터의 물리적인 이동을 요청하지 않더라도 보조 데이터베이스를 파퓰레이트(populate)하는 방법을 나타내는 흐름도이다.FIG. 16 is a flowchart illustrating a method of populating an auxiliary database even without requiring physical movement of user data.

도 17은 도 11의 데이터 구조를 이용하여 보조 데이터베이스를 파퓰레이팅하는 대안의 실시예를 도시하는 흐름도이다.FIG. 17 is a flow diagram illustrating an alternative embodiment of populating an auxiliary database using the data structure of FIG. 11.

도 18은 내포 데이터베이스의 면전에서 잠금 요청의 취급을 도시하는 흐름도이다.18 is a flow chart illustrating handling of lock requests in the presence of a containment database.

도 19는 잠금 제어 블록이 도 11의 대안의 구조를 가지는 경우에 내포 데이터베이스의 면전에서 로크 요청을 취급하는 흐름도의 대안의 구현을 도시한다.FIG. 19 illustrates an alternative implementation of a flow diagram for handling a lock request in the presence of an embedded database when the lock control block has the alternative structure of FIG.

도 20은 보조 데이터베이스의 이용을 종료하는데 이용된 프로세스의 흐름도이다.20 is a flow chart of a process used to terminate the use of the secondary database.

도 21a 내지 21d는 보조 데이터베이스에 조직되는 4개의 워드 프로세싱 문서들을 포함하는 단 하나의 데이터베이스를 복수의 유저들이 바람직하게 이용하는 일예를 도시한다.21A-21D illustrate an example where a plurality of users preferably use a single database that includes four word processing documents organized in a secondary database.

도 22a 내지 22d는 도 21a-21d에 각각 대응하고, 도 21a 내지 21d의 예를 수행하는 데이터 구조 배열을 도시한다.22A-22D correspond to FIGS. 21A-21D, respectively, and illustrate a data structure arrangement for performing the example of FIGS. 21A-21D.

도 23a 내지 23d는 도 21a 내지 도 21d의 예에 각각 해당하지만, 각각의 데이터베이스에 대한 검색 테이블 또는 어레이인 데이터 구조 배열을 이용한다.Figures 23A-23D correspond to the examples of Figures 21A-21D, respectively, but use a data structure arrangement that is a lookup table or array for each database.

도 24a 내지 24d는 내포 데이터베이스를 이용함으로써 다른 판독 및 기록 능력을 갖는 복수의 사람에 의한 문서의 섹션 공유예를 도시한다.24A-24D show examples of section sharing of a document by a plurality of people with different reading and writing capabilities by using an embedded database.

따라서, 본 발명의 목적은 복수의 엔티티가 동일한 데이터에 액세스를 허용하는 것이다. 또한, 본 발명의 목적은 ACID 특성들을 확장가능하게 유지하도록 복수의 유저 환경에서 데이터를 잠그는 것이다. 본 발명의 또 다른 목적은 복수의 유저 또는 엔티티들이 기타 데이터베이스(데이터베이스로 칭함), 즉 가상 데이터베이스 또는 보조 데이터베이스를 통해 데이터에 액세스하는 데이터베이스 관리 시스템을 구비한다. 본 발명의 또 다른 목적은 보조 데이터베이스 또는 가상 데이터베이스를 구현할 수 있는 데이터베이스 관리 시스템 및/또는 이 시스템의 데이터 구조를 제공하는 것이다.Accordingly, it is an object of the present invention to allow multiple entities to access the same data. It is also an object of the present invention to lock data in multiple user environments to keep ACID characteristics extensible. It is yet another object of the present invention to have a database management system in which a plurality of users or entities access data through other databases (called databases), ie virtual databases or auxiliary databases. It is yet another object of the present invention to provide a database management system and / or data structure of the system that can implement a secondary database or a virtual database.

이들 목적들은 데이터 구조를 포함하는 메모리와, 복수의 유저 환경에서 동시성 제어 및 데이터의 잠금을 허용하는 방법, 시스템 및 컴퓨터 프로그램 제품에 의해 달성된다. 현존하는 트랜잭션에 대하여는 그 트랜잭션과 관련된 데이터베이스 또는 보조 데이터베이스에 대한 관련성(association) 또는 참조(reference )가 있다. 이 트랜잭션과 관련된 데이터 구조는 트랜잭션 제어 블록으로 칭해질 수 있다. 본원에 데이터 제어 블록으로 참조되는 데이터 구조는 어떤 데이터베이스 또는 보조 데이터베이스가 데이터 항목과 관련이 있는지를 지시한다. 더욱더, 잠금 제어블록 및/또는 잠금 요청 블록으로 칭해지는 데이터의 실제 잠금과 관련된 데이터 구조가 있다. 다양한 데이터 구조사이의 관련성에 의해 내포 데이터베이스, 보조 데이터베이스 또는 가상 데이터베이스란 개념을 구현할 수 있다. 예컨대, 그 데이터 구조 배열에 의해 바람직하게는 특정 트랜잭션의 문맥 데이터베이스 (context database) 및 그 트랜잭션 실행하에 보조 데이터베이스에 대하여 판정될 수 있다. 또한, 그 트랜잭션과 관련된 데이터 구조는 허락된 잠금 요청 및 보류 중인 잠금 요청에 대한 참조들을 포함할 수 있으며, 이러한 잠금 요청은 데이터의 잠금에 관한 데이터 구조에 의해 나타내어 질 수 있다. 그 가상 데이터베이스와 관련된 데이터 구조, 즉 데이터베이스 제어 블록은 어떤 데이터베이스 또는 보조 데이터베이스가 그 잠금과 관련이 있는지에 대하여 판정될 수 있도록 잠금 데이터 구조에 의해 참조된다.These objects are achieved by a memory containing a data structure and a method, system and computer program product that allow concurrency control and locking of data in a plurality of user environments. For an existing transaction, there is an association or reference to the database or secondary database associated with that transaction. The data structure associated with this transaction may be referred to as a transaction control block. The data structure referred to herein as a data control block indicates which database or secondary database is associated with the data item. Furthermore, there is a data structure associated with the actual locking of data, referred to as lock control blocks and / or lock request blocks. The association between the various data structures enables the concept of a nested database, a secondary database or a virtual database. For example, the data structure arrangement can preferably determine the context database of a particular transaction and the secondary database under that transaction execution. In addition, the data structure associated with the transaction may include references to granted lock requests and pending lock requests, which may be represented by a data structure relating to the locking of data. The data structure associated with that virtual database, that is, the database control block, is referenced by the lock data structure so that it can be determined which database or auxiliary database is associated with the lock.

본 발명의 일 실시예에 따르면, 데이터 처리 시스템이 액세스하기 위한 데이터를 저장하는 메모리가 있다. 이 데이터는 필히 최종 유저가 궁극적으로 원하는 데이터가 아니라, 잠금 및 보조 데이터베이스 정보를 나타내는 데이터 구조와 관련된 데이터가 될 수 있다. 이 메모리는 트랜잭션 정보를 포함하는 데이터 구조를 포함한다. 이 데이터 구조는 바람직하게는 트랜잭션 제어 블록으로 구현된다. 이 메모리는 또한 트랜잭션 데이터의 잠금 정보를 포함하는 데이터 구조를 포함한다. 이 데이터베이스와 관련된 데이터 구조는 잠금 제어 블록 및/또는 잠금 요청 블록으로 칭해질 수 있다. 더욱더, 복수의 데이터베이스의 정보를 포함하는 복수의 데이터 구조가 있다. 이들 데이터 구조는 데이터 제어 블록으로 칭해질 수 있다. 이 데이터베이스 제어 블록들은 내포 데이터베이스 또는 보조 데이터베이스를 적합하게 제어하기 위해서 특정 데이터베이스 또는 보조 데이터베이스를 잠금 또는 트랜잭션과, 또는 그 반대로 관련시키는데 이용된다.According to one embodiment of the invention, there is a memory for storing data for access by a data processing system. This data is not necessarily the data ultimately desired by the end user, but may be data related to a data structure representing locks and secondary database information. This memory contains a data structure containing transaction information. This data structure is preferably implemented as a transaction control block. This memory also includes a data structure containing lock information of the transaction data. The data structure associated with this database may be referred to as a lock control block and / or a lock request block. Furthermore, there are a plurality of data structures that contain information from a plurality of databases. These data structures may be referred to as data control blocks. These database control blocks are used to associate a particular database or secondary database with a lock or transaction and vice versa in order to appropriately control the nested or secondary database.

본 발명은 또한 내포 데이터베이스 또는 보조 데이터베이스의 개념을 구현하는 데이터 구조의 생성 및 이용에 관한 것이다. 데이터 항목의 잠금을 표시하는 방법은 제1 계층 레벨과 관련된 제1 트랜잭션에 의해 데이터 항목이 잠금되는 것을 표시하는 데이터 구조를 제1 계층 레벨에 생성하는 단계를 포함한다. 또한, 이 방법은 제2 계층 레벨과 관련된 제2 트랜잭션에 의해 데이터 항목이 잠금되는 것을 표시하는 데이터 구조를 제2 계층 레벨에 생성하는 단계를 포함한다. 따라서, 전술한 단계들은 잠금 제어 블록 등의 통제된 데이터 구조들을 잠그는 계층을 생성한다. 이 계층의 각 레벨은 기타 데이터베이스, 보조 데이터베이스 또는 가상 데이터베이스에 의해 이용될 수 있다.The present invention also relates to the creation and use of data structures that implement the concept of nested or secondary databases. The method of marking a lock of a data item includes creating a data structure at the first hierarchy level indicating that the data item is locked by a first transaction associated with the first hierarchy level. The method also includes creating a data structure at the second hierarchical level indicating that the data item is locked by a second transaction associated with the second hierarchical level. Thus, the foregoing steps create a hierarchy that locks controlled data structures, such as a lock control block. Each level of this hierarchy can be used by other databases, secondary databases or virtual databases.

데이터 항목에 액세스하기 위해서는, 먼저, 그 데이터 항목이 현재 잠겨있는지 여부를 판정해야 한다. 이러한 판정은 (a) 데이터 항목의 잠금이 제1 계층 레벨에 존재하는지 여부와, (b) 단계(a)에서 그 데이터 항목의 잠금이 존재하지 않는다고 판정하는 경우에 제1 계층 레벨에서 데이터 항목의 잠금을 생성하는 단계를 포함한다. 단계(c)에서는 단계(a)에서 데이터 항목의 잠금이 존재하지 않는다고 판정한 경우에 데이터 항목에 대한 잠금이 제2 레벨에 존재하는지 여부를 판정한다. 또한 단계(d)에서는 데이터 항목의 잠금이 제2 계층 레벨에 존재하지 않는 경우에 데이터 항목의 잠금을 생성한다.In order to access a data item, first it is necessary to determine whether the data item is currently locked. This determination may include (a) whether a lock of a data item exists at the first hierarchical level, and (b) if in step (a) it is determined that there is no lock of the data item, the determination of the data item at the first hierarchical level. Generating a lock. In step (c), if it is determined in step (a) that there is no lock on the data item, it is determined whether or not the lock on the data item exists at the second level. Also in step (d), a lock of the data item is generated if the lock of the data item does not exist at the second hierarchical level.

전술한 기능을 실행하는 방법 이외에, 본 발명은 전술한 기능들을 수행하는 다양한 수단들을 구비한 시스템을 포함한다. 더욱더, 본 발명은 본 발명의 방법론을 수행하는 실행가능한 명령들을 포함하는 컴퓨터 프로그램 제품을 더 포함한다.In addition to the method of carrying out the functions described above, the present invention includes a system having various means for performing the functions described above. Moreover, the invention further includes a computer program product comprising executable instructions for carrying out the methodology of the invention.

이제, 도면들을 참조하면, 동일한 참조 부호들은 도면을 통해 동일하거나 해당하는 부분을 지시하며, 보다 구체적으로 설명하면, 도 1에는 데이터베이스 관리 시스템("DBMS")(100)이 도시된다. 트랜잭션 동작 및 관리는 트랜잭션 관리자(102) 및 잠금 관리자(104)에 의해 취급되고, 이 2개의 관리자는 시스템의 데이터 프로세서 또는 CPU(106)에 의해 실행되는 소프트웨어 절차들이다. 이 트랜잭션 관리자는 보류 트랜잭션의 항등(identity) 및 상태를 추적하기 위하여, 때때로 트리 구조로서 구현되는 트랜잭션 테이블(108)을 유지한다. 이 잠금 관리자(104)는 해시 테이블 및 다양하게 링크된 목록 및/또는 트리 구조(이후에 보다 상세히 토론될 것이다)를 이용하여 일반적으로 구현되는 잠금 테이블(110)을 유지한다. 이 잠금 테이블(110)은 데이터베이스(112)의 자원들에 요청되는 잠금들을 지속적으로 추적한다. 이 잠금 테이블(110)은 트랜잭션의 메모리 어드레스, 트랜잭션 식별, 잠금의 타입 또는 모드, 잠금 파라메터, 및 그 잠금과 관련되는 데이터베이스 또는 보조 데이터베이스에 관한 정보를 저장할 수 있다. 이 데이터베이스(112)는 DBMS(100)에 의해 실행된 트랜잭션에 액세스할 수 있는 데이터를 저장한다. 이 데이터베이스(112)는 유용한 경우일지라도 영속적으로 데이터를 저장할 필요가 없다. 대안으로써, 그 저장된 데이터는 비상주(transient)될 수 있다. 따라서, 데이터베이스의 내용 상에서 협조하여 작업하는 트랜잭션은 몇분, 몇시간 또는 몇일 동안만 라이브(live)하는 데이터 자원들을 조작할 수 있고, 시스템의 전원이 꺼지거나 가동을 중지한 때 없어질 것이다.Referring now to the drawings, like reference numerals designate the same or corresponding parts throughout the figures, and more particularly, FIG. 1 shows a database management system (“DBMS”) 100. Transactional operations and management are handled by transaction manager 102 and lock manager 104, both of which are software procedures executed by the data processor or CPU 106 of the system. This transaction manager maintains a transaction table 108, sometimes implemented as a tree structure, to track the identity and state of pending transactions. This lock manager 104 maintains a lock table 110 that is generally implemented using a hash table and various linked lists and / or tree structures (which will be discussed in more detail later). The lock table 110 keeps track of the locks requested on the resources of the database 112. The lock table 110 may store information about the memory address of a transaction, the transaction identification, the type or mode of the lock, the lock parameters, and the database or auxiliary database associated with the lock. This database 112 stores data that allows access to transactions executed by DBMS 100. This database 112 does not need to store data permanently even if it is useful. Alternatively, the stored data can be transiented. Thus, a cooperative transaction on the contents of a database can manipulate data resources that live only for minutes, hours, or days, and will disappear when the system is powered off or down.

DBMS(100)는 통상적으로 추가적인 메모리 자원(114), 다양한 시스템 부품들을 상호 접속하는 하나 이상의 시스템 버스(116), 및 클라이언트 워크스테이션(120 )과 통신을 취급하는 네트워크 인터페이스(118) 또는 기타 통신 인터페이스를 포함할 것이다. 이 메모리(114)는 랜덤 액세스 메모리에 국한되지 않고 임의 형태의 메모리를 이용하여 구현될 수 있으며, 바람직하게는 판독 및 기록이 모두 가능하다. 더욱더, 이 메모리(114)는 본 발명의 데이터 구조를 저장하는데 이용될 수 있다. 도 1에 본 발명을 구현할 수 있는 한가지를 도시하는 동안에, 어떤 소정의 하드웨어 및 소프트웨어는 본 발명의 기능을 달성하는데 이용될 수 있다. 예컨대, 본 발명은 어떤 특정 타입의 컴퓨터, 컴퓨터 서버, 및/또는 개인용 컴퓨터 및/또는 하드웨어를 실행하는 어떤 소정의 오퍼레이팅 시스템을 이용하여 구현될 수 있다. 이러한 하드웨어의 부품, 구조 및 동작은 널리 알려져 있다.DBMS 100 typically includes an additional memory resource 114, one or more system buses 116 interconnecting various system components, and a network interface 118 or other communication interface that handles communication with a client workstation 120. It will include. This memory 114 is not limited to random access memory but can be implemented using any type of memory, preferably both read and write. Moreover, this memory 114 can be used to store the data structures of the present invention. While one is shown in FIG. 1 that may implement the present invention, any predetermined hardware and software may be used to achieve the functionality of the present invention. For example, the present invention may be implemented using any particular operating system that runs any particular type of computer, computer server, and / or personal computer and / or hardware. The components, structures and operation of such hardware are well known.

도 2를 참조하면, 양호한 실시예의 "잠금 테이블"은 다음과 같이 구현된다. 해시 함수(150)를 이용하여 자원 식별자(RID : resource identifier)를 해시 테이블(152)의 해시 테이블 어드레스로 변환하며, 이 해시 테이블은 일정한 크기를 갖게 구현될 수 있다. 해시 함수(150)에 의해 해시되는 자원 식별자는 자원 타입 또는 레벨 표시기(예컨대, 잠금될 자원이 데이터베이스, 테이블, 페이지, 터플 등인지를 표시함) 및 자원의 개시 어드레스를 포함할 수 있다. 각각의 어드레스 가능한 슬롯(154), 예컨대 해시 테이블의 참조(154-1)는 그 슬롯의 해시 테이블 어드레스에 해당하는 잠금된 자원들이 없는 경우에 널 값(null value)이나, 해시 값이 그 슬롯의 해시 테이블 어드레스에 해당하는 적어도 하나의 잠금된 자원이 있는 경우에 LCB(160-1) 등의 잠금 제어 블록(LCB)의 리스트에 포인터 중에서 하나를 포함한다.2, the "lock table" of the preferred embodiment is implemented as follows. The hash function 150 converts a resource identifier (RID) into a hash table address of the hash table 152, and the hash table may be implemented to have a predetermined size. The resource identifier hashed by the hash function 150 may include a resource type or level indicator (eg, indicating whether the resource to be locked is a database, table, page, tuple, etc.) and the starting address of the resource. Each addressable slot 154, e.g., reference 154-1 of a hash table, is null if there are no locked resources corresponding to that slot's hash table address, but the hash value is When there is at least one locked resource corresponding to the hash table address, one of the pointers is included in the list of the lock control block (LCB) such as the LCB 160-1.

잠금 관리자는 실질적으로 잠금되는 각각의 잠금 가능한 데이터 항목에 대하여 하나의 잠금 제어 블록("LCB")을 할당(즉, 발생 및 저장)할 것이고, 트랜잭션에 의해 유지된 각각의 잠금에 대하여 LRB(162-1) 등의 하나의 잠금 요청 블록('LRB')(162)을 할당(발생 및 저장)할 것이다. 따라서, 특정 데이터베이스 객체가 적시에 소정의 포인트에서 3개의 다른 트랜잭션에 의해 잠금되는 경우에, 그 객체에 대한 하나의 LCB(160) 및 이 LCB로부터 3개의 LRB의 (트랜잭션당 하나) "행잉(hanging)"의 링크된 리스트가 될 수 있다.The lock manager will allocate (ie, generate and store) one lock control block ("LCB") for each lockable data item that is substantially locked, and an LRB 162 for each lock held by the transaction. One lock request block ('LRB') 162, such as -1). Thus, if a particular database object is locked by three different transactions at a given point in time, one LCB 160 for that object and three LRBs (one per transaction) from that LCB are "hanging" ) "Can be a linked list of". "

각각의 LCB(160)는 바람직하게는,Each LCB 160 preferably

잠금된 자원에 대한 자원 식별자의 사본을 통상적으로 포함할 잠금 ID(170)와,A lock ID 170 that will typically include a copy of the resource identifier for the locked resource,

이러한 LCB에 의해 표현된 데이터베이스 자원에 대하여 허락된 모든 잠금의 가장 제한적인 액세스 모드(예컨대, 브라우즈, 판독, 파라메터로 나타낸 판독, 기록, 파라메터로 나타낸 기록, 또는 배타적)를 표시하는 모드 표시기(171)와,Mode indicator 171 indicating the most restrictive access mode (e.g., browse, read, read in parameter, write, write in parameter, or exclusive) of all locks allowed for the database resource represented by this LCB. Wow,

바람직하게는 비트맵 형태이고, 그 잠금된 자원에 현저하게 파라메터로 나타낸 판독 잠금(만약 있다면)에 이용되는 판독 파라메터의 논리 OR을 나타내는 선택적인 판독 파라메터 표시기(172)와, 그 잠금된 자원에서 현저하게 파라메터로 나타낸 기록 잠금(만약 있다면)의 기록 파라메터를 나타내는 선택 기록 파라메터 표시기 (173)를 포함한다.An optional read parameter indicator 172, preferably in the form of a bitmap, which indicates the logical OR of the read parameters used for read locks (if any) markedly parameterized to the locked resource, and prominent in the locked resource. Optionally, it includes an optional write parameter indicator 173 indicating the write parameter of the write lock (if any).

그 판독 및 기록 파라메터 표시기(172, 173)의 세부 사항은 본 발명의 일특징을 구성하고, Anfindsen의 미국 특허 제5,983,225호에 개시되며, 이것은 본원에 참조용으로, 이러한 LCB에 의해 나타낸 데이터베이스 자원에 대하여 능동된 자원 요청에 대하여 LRB(162)의 리스트에 허락된 요청 리스트 포인터(174)와, 이러한 LCGB에 의해 나타난 보류(즉, 아직 허락 안됨) 자원 요청에 대하여 LRB들의 리스트(또는 큐라고 칭함)에 보류 요청 리스트 포인터(175)와, 이러한 LCB가 속하는 데이터베이스 또는 보조 데이터베이스에 대한 참조인 데이터베이스 필드(177)를 포함된다. 본 발명의 특징에 의하면, 데이터는 보조 데이터베이스, 가상 데이터베이스 또는 데이터베이스로 본원에서 칭해지는 기타 데이터베이스에 분할될 수 있다. 이러게 분할함으로써, 복수의 사람 또는 트랜잭션들이 동일한 데이터를 이용할 수 있다. 이러한 시스템에서, 본 발명의 발명가는 바람직하게는 잠금이 속하는 데이터베이스가 어떤 것인지를 알 수 있으며, 이러한 정보는 데이터베이스(177) 필드를 이용하여 쉽게 측정될 수 있다는 것을 알았다. 본 발명의 이러한 특징이 데이터베이스 참조(177) 등의 참조를 이용하여 구현되는 반면에, 다른 구현은 LCB 안의 데이터베이스 명칭을 포함하는 것 등으로 구현할 수 있다. 도 2에 있어서, 데이터베이스 참조(177)는 글로벌 데이터베이스(192)를 나타낸다. 이 글로벌 데이터베이스(192)는 최고 레벨의 데이터베이스이고, 또 보조 데이터베이스는 DB1, DB2,,,,DBn으로 나타낸다. 또한, 보조 데이터베이스의 이용에 관한 세부 사항으로는 보조 데이터베이스 잠금 제어 블록("SLCB")(164-1) 등의 보조 데이터베이스(다른 계층 레벨에서 가상 데이터베이스 또는 보조 데이터베이스)를 지시하는 다음 레벨 LCB 참조(178)가 설명된다. 이 참조는 다른 계층 레벨에서 널 또는 보조 데이터베이스 잠금 제어 블록 중 하나로 나타낸다. 또 이러한 필드에 관한 정보는 이러한 LCB와 동일한 해시 어드레스를 공유하는 다음 LCB(만약 있다면)의 다음 LCB 포인터(176)에 있다.The details of the read and write parameter indicators 172, 173 constitute an aspect of the present invention, and are disclosed in U.S. Patent No. 5,983,225 to Anfindsen, which is incorporated herein by reference in the database resources represented by such LCB. A request list pointer 174 allowed in the list of LRBs 162 for active resource requests for the request and a list of LRBs (or queues) for the pending (ie not yet allowed) resource requests indicated by this LCGB. Includes a pending request list pointer 175 and a database field 177 that is a reference to the database or secondary database to which this LCB belongs. In accordance with a feature of the invention, the data may be partitioned into a secondary database, a virtual database, or other database referred to herein. By doing so, multiple people or transactions can use the same data. In such a system, the inventor of the present invention preferably knows which database the lock belongs to, and this information can be easily measured using the database 177 field. While this feature of the invention is implemented using a reference such as database reference 177, other implementations may be implemented including including a database name in the LCB. In FIG. 2, database reference 177 represents global database 192. This global database 192 is the highest level database, and the secondary database is represented by DB1, DB2, ..., DBn. Also, for details regarding the use of secondary databases, see the next level LCB that points to a secondary database (a virtual database or a secondary database at another hierarchical level), such as the secondary database lock control block (“SLCB”) 164-1. 178 is described. This reference is represented by either a null or secondary database lock control block at another hierarchy level. The information about these fields is also in the next LCB pointer 176 of the next LCB (if any) that shares the same hash address as this LCB.

LCB(160)의 필드(172, 173)에 의해 나타낸 판독 및 기록 파라메터들은 본 발명에 필수적인 것이 아니라 본 발명의 보조 데이터베이스 특성과 함께 또는 개별적으로 이용될 수 있는 특징을 나타낸다. 더욱더, 파라메터(172, 173)는 본 발명을 확대하여 DBMS들에 이용된 종래의 액세스 모드에 나타낸다. 소정 세트의 판독/기록파라메터 도메인의 각각의 명백한 값은 해당하는 데이터 신뢰성 분류 또는 카테고리를 나타낸다. 8개의 파라메터 값(8비트 파라메터 필드 중 해당하는 비트에 의해 각각 나타냄)을 갖는 파라메터 도메인은 최고 8개의 다른 데이터 신뢰성 분류를 정의할 수 있다. 본 발명의 다른 실시예에 있어서, 이 파라메터들은 객체에 기록 잠금을 유지하는 애플리케이션의 타입 또는 식별 등의 "신뢰성" 이외의 데이터베이스 객체의 특성들이나, 기록 잠금이 존재하는데도 불구하고 기꺼이 데이터를 판독할 것인지 여부를 판정하는 애플리케이션에 이용될 수 있는 기타 정보를 나타내는데 이용될 수 있다.The read and write parameters represented by fields 172 and 173 of LCB 160 are not essential to the present invention but represent features that may be used separately or in conjunction with the secondary database features of the present invention. Furthermore, parameters 172 and 173 extend the present invention to the conventional access modes used in DBMSs. Each apparent value of a set of read / write parameter domains represents a corresponding data reliability classification or category. A parameter domain with eight parameter values (each represented by the corresponding bit in the 8-bit parameter field) can define up to eight different data reliability classifications. In another embodiment of the invention, these parameters may be used to read data in spite of the presence of a write lock or characteristics of a database object other than "reliability" such as the type or identification of the application holding the write lock on the object. It can be used to indicate other information that can be used for the application to determine whether or not.

하나의 허락 또는 보류 중인 잠금 요청을 나타내는 각각의 LRB(162)는,Each LRB 162, representing one grant or pending lock request,

자원이 액세스되거나 특정 트랜잭션에 의해 요청되는 액세스 모드(예컨대, 브라우즈, 판독, 파라메터로 나타낸 판독, 기록, 파라메터로 나타낸 기록 또는 배타적)를 표시하는 모드 표시기(181)와,A mode indicator 181 indicating an access mode (eg, browse, read, parameterized read, write, parameterized write or exclusive) for which a resource is accessed or requested by a particular transaction;

요청되는 트랜잭션을 식별하거나 이러한 LRB에 해당하는 잠금을 유지하는 트랜잭션 식별기(184)와,A transaction identifier 184 that identifies the requested transaction or holds a lock corresponding to this LRB,

바람직하게는 비트 맵의 형태로 이러한 판독 또는 기록 잠금의 오너(owner)에 의해 이용되는 판독 또는 기록 액세스 모드 파라메터(만일 있다면)를 나타내는 선택적인 파라메터 표시기로서, 이러한 필드는 이러한 잠금 또는 요청 잠금이 파라메터로 나타낸 액세스 요청을 이용하고 있는 중에만 이용되고, 잠금 제어 블록이 파라메터(172, 173)를 가짐으로써, 파라메터 필드(182)가 본 발명의 내포 데이터베이스 또는 보조 데이터베이스 특징을 구현하는데 필수적이지 않거나 불필요한 선택적인 파라메터 표시(182)와,An optional parameter indicator that indicates (if any) the read or write access mode parameters used by the owner of such a read or write lock, preferably in the form of a bitmap, such a field indicates that this lock or request lock Is used only while using the access request indicated by < RTI ID = 0.0 > and < / RTI > Parameter display (182),

트랜잭션 ID(184)에 의해 식별되는 트랜잭션(T1) 등의 트랜잭션이 소유한 LRB의 링크된 리스트를 형성하는데 이용되는 잠금 세트 포인터(lockset pointer)(185)를 포함한다. LRB등의 링크된 리스트들이 또다른 특징들, 예컨대 LRB들의 체인을 양방향으로 추적할 수 있는 이중으로 링크된 리스트들을 포함하여 구현될 수 있다. 이 LRB들의 또 다른 대안은 이 LRB와 동일한 데이터베이스 자원에 대한 다음 LRB(만일 있다면)로의 다음 LRB 포인터(186)이다.And a lockset pointer 185 used to form a linked list of LRBs owned by the transaction, such as transaction T1 identified by transaction ID 184. Linked lists, such as LRBs, can be implemented including other features, such as dual linked lists, which can track the chain of LRBs in both directions. Another alternative to these LRBs is the next LRB pointer 186 to the next LRB (if any) for the same database resource as this LRB.

LCB에서 판독 및 기록 파라메터 필드 및 LRB에서 액세스 모드 파라메터 필드에 대한 통상적인 크기는 8 내지 16 개별 파라메터 값들을 제공하는 1 내지 2 바이트이다.Typical sizes for the read and write parameter fields in the LCB and the access mode parameter fields in the LRB are 1 to 2 bytes providing 8 to 16 individual parameter values.

보조 데이터베이스 LCB("SLDB")(164-1)는 LCB(160-1)와 동일하거나 비슷한 방식으로 구성될 수 있다. 따라서, 보조 데이터베이스 LCB(164)는 이 LCB를 이용하여 보조 데이터베이스의 데이터로의 액세스의 잠금을 제어하는데 이용되는 것을 명백히 지시하기 위하여 SLCB로서 언급될 것이다. 도 2에 있어서, SLCB(164-1)로부터 보조 데이터베이스(DB1)까지의 참조 또는 포인터는 SLCB(164-1)와 보조 데이터베이스 (DB1)의 결합을 지시하는 데이터베이스 참조(177)이다. 유사한 방법으로, LCB (160-1)의 데이터베이스 참조(177)는 글로벌 데이터베이스(192)로 칭해진다. 그러나, DBMS가 모든 LCB, 또는 제1 레벨에서 최소의 LCB를 갖고, 글로벌 데이터베이스(192)를 참조하도록 셋업될 수 있기 때문에, LCB로부터 데이터베이스 참조 필드(177)를 제거할 수 있거나 제거하는 것이 좋다.Secondary database LCB (“SLDB”) 164-1 may be configured in the same or similar manner as LCB 160-1. Thus, secondary database LCB 164 will be referred to as SLCB to explicitly indicate that this LCB is to be used to control locking of access to data in secondary databases. In Fig. 2, the reference or pointer from the SLCB 164-1 to the secondary database DB1 is a database reference 177 indicating the combination of the SLCB 164-1 and the secondary database DB1. In a similar manner, database reference 177 of LCB 160-1 is referred to as global database 192. However, it is advisable to remove or remove the database reference field 177 from the LCB since the DBMS can be set up to reference the global database 192 with all LCBs, or with a minimum LCB at the first level.

본 명세서에서 도면이 하나의 필드에서 다른 항목까지의 포인트 중 어떤 포인트를 포인터가 나타내는지를 주목해서 보아야 한다. 이러한 포인터들은 종래의 컴퓨터 포인터에 국한되는 것이 아니라, 참조 또는 트리 구조의 형태로 구현될 수 있다. 추가적으로, 참조되는 정보는 데이터 구조 자체에 대안으로 포함될 수 있다. 따라서, 상기 글로벌 데이터베이스(192)를 참조하는 필드(177) 대신에, 글로벌 데이터베이스(192)와 관련된 정보를 데이터베이스 필드(177)에 넣을 수 있다. 이하, 더욱 상세히 설명되겠지만, 바람직한 실시예에 있어서, 글로벌 데이터베이스(192) 및 보조 데이터베이스(DB1, DB2,....DBn)를 포함하는 다양한 데이터베이스들이 데이터베이스 제어 블록("DBCB")이고, 최종 유저가 궁극적으로 원하지 않는 데이터를 포함하지 않는다는 것에 주목해야 한다. 그 대신에, 데이터베이스 제어 블록을 이용하여 잠금 또는 잠금 제어 블록(LCB)이 관련있는 데이터베이스 또는 보조 데이터베이스가 어떤 것인지를 지시한다.In the present specification, it should be noted that the pointer indicates which of the points from one field to another item. Such pointers are not limited to conventional computer pointers, but may be implemented in the form of a reference or tree structure. In addition, the referenced information may alternatively be included in the data structure itself. Thus, instead of the field 177 referring to the global database 192, information related to the global database 192 may be put in the database field 177. As will be described in more detail below, in a preferred embodiment, the various databases, including the global database 192 and the secondary databases DB1, DB2, .... DBn, are database control blocks ("DBCBs") and end users. Note that does not ultimately contain unwanted data. Instead, a database control block is used to indicate which database or secondary database the lock or lock control block (LCB) is related to.

SLCB(164-1)는 LRB(162-1)과 동일한 구조를 갖도록 구현될 수 있는 LRB(162-2)를 참조한다. 도 2는 또한 2개의 트랜잭션 제어 블록(T1, T2)을 도시한다. 이 트랜잭션(T1)은 글로벌 데이터베이스와 결합되는 반면에, 트랜잭션(T2)은 보조 데이터베이스(DB1)와 결합된다. 더욱더, 트랜잭션(T1)이 LRB(162-1)를 참조하여 허락된 블록 요청을 갖는다. 유사하게, 트랜잭션(T2)은 이 트랜잭션(T2)이 보조 데이터베이스(DB1)와 결합된 데이터의 잠김을 지시하는 LRB(162-2)를 참조한다.SLCB 164-1 refers to LRB 162-2, which may be implemented to have the same structure as LRB 162-1. 2 also shows two transaction control blocks T1, T2. This transaction T1 is coupled with the global database, while transaction T2 is coupled with the secondary database DB1. Further, transaction T1 has an allowed block request with reference to LRB 162-1. Similarly, transaction T2 refers to LRB 162-2 which indicates that transaction T2 is locked of data associated with secondary database DB1.

본 발명에 있어서, 잠김 관리자의 메인 엔티티는 잠김 제어 블록("LCB")이다. 종래의 데이터베이스 관리 시스템에 있어서, LCB는 잠김가능한 자원, 예컨대객체, 관련있는 테이블의 로우(또 터플로 알려짐), 또는 레코드를 식별한다. 그런한 자원들은 객체 ID("OID"), 터플 ID("TID"), 또는 로우/레코드 ID("RID")에 의해 통상적으로 식별된다. 간단히 말해서, RID는 이후에 xID에 대한 일반적인 용어로서 이용될 수 있다.In the present invention, the main entity of the lock manager is a lock control block ("LCB"). In conventional database management systems, the LCB identifies a lockable resource, such as an object, a row (also known as a tuple), or record of an associated table. Such resources are typically identified by object ID ("OID"), tuple ID ("TID"), or row / record ID ("RID"). In short, RID may be used later as a generic term for xID.

도 2에 있어서, 해시 테이블이 도시되지만, 본 발명은 해시 테이블 구현에 국한되지 않는다. 바람직하게는 RID를 이용하여 해당하는 LCB를 찾고, 해시 테이블을 바람직하게 적절하게 구현하는 것은 고려할 사항이다. 그러한, 어떤 어레이 또는 기타 검색형 구조가 구현될 수 있으며, 본 발명은 해시 테이블의 이용에 국한되지 않는다.In Figure 2, a hash table is shown, but the invention is not limited to the hash table implementation. It is desirable to find the corresponding LCB using the RID, and preferably to properly implement the hash table. As such, any array or other searchable structure may be implemented and the invention is not limited to the use of a hash table.

소정의 RID 상의 특정 트랜잭션에 의해 잠금이 이루어지지 않으면, 이것을 나타내는 간편한 방법은 데이터 구조의 RID에 대하여 LCB를 가질 수 없다. 즉, 해시 테이블로부터 도달할 수 있는 LCB들은 이러한 포인트에서 때를 맞추어 적어도 하나의 트랜잭션에 의해 일어날 수 있는 잠금가능한 자원 등의 모든 잠금가능한 자원의 부분집합만을 나타낸다.If a lock is not held by a particular transaction on a given RID, a convenient way of indicating this may not have an LCB for the RID of the data structure. That is, the LCBs that can be reached from the hash table represent only a subset of all lockable resources, such as lockable resources, which may occur by at least one transaction in time at this point.

일방향으로 LCB들을 링킹하는 대안으로서, 이중으로 링크된 리스트는 양방향으로 LCB들의 체인을 추적할 수 있도록 구현될 수 있다. 각각의 잠금가능한 자원에 대하여, 질의시 자원상에 잠금을 유지하는 복수의 트랜잭션이 있을 수 있다. 각각 허락되거나 보류 중인 잠금 요청은 잠금 요청 블록("LRB")에 의해 나타난다. 바람직하게는 각각의 LRB가 자체의 LCB를 역으로 인용하거나 참조하는 것이 좋다. 이러한 특징은 명백성 및 공간 때문에 도면에는 포함되지 않을 수 있다. LRB 체인들이둘중에 한 방향으로 LRB들의 체인을 추적할 수 있도록 이중으로 링크된 구조를 이용하여 구현될 수 있다. 더욱더, 제1 LRB가 LRB들의 체인의 마지막 LRB를 참조할 수 있다. 이것은 가능한 빠르게 체인의 끝에 위치시킬 필요가 있을 때마다(예컨대, 신규의 LRB가 보류 리스트의 끝에 삽입되어야 할 때) 성능을 향상시킨다. 예컨대, 이러한 특징을 구현하기 위해서, 도 3의 LRB(162-5)는 LRB(162-7)를 참조할 것이다.As an alternative to linking LCBs in one direction, a dual linked list can be implemented to track the chain of LCBs in both directions. For each lockable resource, there may be a plurality of transactions that hold the lock on the resource at query time. Each granted or pending lock request is indicated by a lock request block ("LRB"). Preferably each LRB quotes or references its LCB backwards. Such features may not be included in the drawings for clarity and space. The LRB chains can be implemented using a dual linked structure to track the chain of LRBs in either direction. Furthermore, the first LRB may refer to the last LRB of the chain of LRBs. This improves performance whenever it needs to be placed at the end of the chain as soon as possible (eg when a new LRB has to be inserted at the end of the pending list). For example, to implement this feature, the LRB 162-5 of FIG. 3 will refer to the LRB 162-7.

도 3은 본 발명에 이용될 수 있는 데이터 구조의 집합에 대한 일예이다. 그러나, DBCB들은 명백하게 도시되지 않았다. 이 트랜잭션 제어 블록("TCB")(T1, T2)들은 트랜잭션을 나타낸다. 트랜잭션은 많은 잠금 및 많은 LRB들을 가질 수 있는 반면에, LRB는 바람직하게는 단 하나의 트랜잭션에 속한다. TCB마다, LRB들의 집합이 유지된다. 도면안에 파선들은 LRB들사이 및 TCB들로부터 LRB들까지의 관계를 나타내는데 이용된다. 또한, LRB들이 이중으로 링크된 리스트에 만들어질 수 있고, LRB들은 LRB마다 그것의 트랜잭션 제어 블록에 나타나도록 구현될 수 있다. 예컨대, 이러한 경우에, 도 3의 각각의 LRB들(162)은 TCB(T1 또는 T2) 중 하나를 나타낼 것이다.3 is an example of a set of data structures that may be used in the present invention. However, DBCBs are not explicitly shown. These transaction control blocks (“TCBs”) T1 and T2 represent a transaction. A transaction can have many locks and many LRBs, while an LRB preferably belongs to only one transaction. For each TCB, a set of LRBs is maintained. The dashed lines in the figure are used to indicate the relationship between LRBs and from TCBs to LRBs. Also, LRBs can be made in a doubly linked list, and LRBs can be implemented such that each LRB appears in its transaction control block. For example, in this case, each of the LRBs 162 of FIG. 3 will represent one of the TCBs T1 or T2.

본 발명의 LCB 및 SLCB 데이터 구조로부터 알 수 있는 바와 같이, LCB를 이용하여 잠금가능한 자원 및 데이터베이스를 나타낸다. 즉, LCB는 특정 데이터베이스(글로벌 데이터베이스 또는 그 내의 보조 데이터베이스 중 하나) 내의 잠금가능한 자원을 나타낸다.As can be seen from the LCB and SLCB data structures of the present invention, the LCB is used to represent lockable resources and databases. That is, the LCB represents a lockable resource in a particular database (either a global database or a secondary database therein).

도 4는 잠금용 데이터 구조를 도시하고, 각각의 LCB(또는 SLCB)가 단 하나의데이터베이스와 관련되기 때문에, 단 하나의 데이터베이스 제어 블록("DBCB")을 나타낸다. 예컨대, 도 1에 있어서, SLCB(164-1)는 DB1을 참조하고, SLCB(164-2)는 DB2를 참조하며, SLCB(164-3)는 DB1을 참조하고, SLCB(164-4)는 DB2를 참조한다. 원하는 경우에, 최저 계층 레벨에서 각각의 LCB들이 글로벌 데이터베이스에 속하여 LCB 및 트랜잭션들에 대하여 디폴트가 고려될 수 있기 때문에, 글로벌 데이터베이스용 데이터베이스 제어 블록을 갖는 것을 피할 수 있다. 그 경우에, LCB 및 TCB들로부터의 참조를 이용하여 글로벌 데이터베이스와의 관계를 지시하는 것이 바람직하다.4 shows a data structure for locking and represents only one database control block (“DBCB”) since each LCB (or SLCB) is associated with only one database. For example, in FIG. 1, SLCB 164-1 refers to DB1, SLCB 164-2 refers to DB2, SLCB 164-3 refers to DB1, and SLCB 164-4 refers to DB1. See DB2. If desired, it can be avoided to have a database control block for the global database since each LCB at the lowest hierarchical level belongs to the global database and defaults can be considered for the LCB and transactions. In that case, it is desirable to use a reference from the LCB and TCBs to indicate the relationship with the global database.

도 4에는 또한 보조 데이터베이스의 임의 갯수의 레벨들이 생성되는 방법을 도시한다. 앞서 설명한 바와 같이, LCB와 동일한 구조를 갖도록 SLCB를 구현할 수 있고, 이러한 레벨링은 보조 데이터베이스용 LCB와 글로벌 데이터베이스의 LCB들을 구별하기 위하여 본 출원에서만 행하여 질 수 있다. 그러나, 일부의 메모리는 LCB들을 함께 연결하는데 이용되는 "다음 LCB 참조" 없이 SLCB들을 구현함으로써 절약될 수 있다. 그러나, 원하는 경우, SLCB들은 원하는 경우에 단일 방향으로 서로 링크되거나 이중으로 링크될 수 있다. 도 4에 있어서, LCB(160-1, 160-2)들은 제1 레벨 LCB이고, 글로벌 데이터베이스와 관련시킨다. SLCB(164-1, 164-3)들은 제2 레벨 LCB이거나, 제1 레벨 SLCB로 고려될 수 있다. SLCB(164-2, 164-4)는 제3 레벨 LCB 또는 제2 레벨 SLCB이다. 동일한 레벨에서 SLCB들 사이의 선택 링크는 파선 화살표 또는 참조를 이용하여 나타내고, 또한 SLCB(164-3)이 SLCB(164-1)를 참조할 수 있도록 구현될 수도 있다.4 also shows how any number of levels in the secondary database are generated. As described above, the SLCB can be implemented to have the same structure as the LCB, and this leveling can only be done in this application to distinguish between the LCB for the secondary database and the LCBs of the global database. However, some memory can be saved by implementing SLCBs without the "see next LCB" used to link the LCBs together. However, if desired, the SLCBs may be linked to each other in a single direction or double linked if desired. In FIG. 4, the LCBs 160-1, 160-2 are first level LCBs and are associated with a global database. The SLCBs 164-1 and 164-3 may be second level LCBs or considered as first level SLCBs. SLCBs 164-2 and 164-4 are third level LCB or second level SLCB. The selection link between SLCBs at the same level is indicated using dashed arrows or references, and may also be implemented such that SLCB 164-3 can refer to SLCB 164-1.

도 5는 바람직한 실시예의 트랜잭션마다 단일 데이터베이스에 속하는 것을 도시한다. 이 트랜잭션 제어 블록(T1, T2, T3, ....Tm)들 각각은 단일 데이터베이스 제어 블록을 참조한다. 따라서, 특정 트랜잭션과 관련되는 데이터베이스 또는 보조 데이터베이스의 레벨을 판정할 수 있다.Figure 5 illustrates belonging to a single database per transaction in the preferred embodiment. Each of these transaction control blocks T1, T2, T3, .... Tm refers to a single database control block. Thus, it is possible to determine the level of database or secondary database associated with a particular transaction.

도 6은 자체의 데이터베이스 내의 자원들만을 액세스하는 전형적인 데이터 구조를 도시한다. 예컨대, 실선 화살표를 이용하여 글로벌 데이터베이스(192)를 참조하는 트랜잭션(T1)에 대하여, 트랜잭션(T1)이 파선 화선표를 이용하여, 해시 테이블(152)에 의해 참조되는 제1 레벨 또는 LCB 레벨과 각각 관련되는 LRB(162-1, 162-3)를 참조한다. 또한, 트랜잭션(T2) 및 이것의 트랜잭션 제어 블록이 참조하거나 보조 데이터베이스의 일부분이며, 또한 파선 화살표를 이용하여 제2 LCB 레벨 또는 제1 SLCB 레벨과 관련되고, DB1에 해당하는 LRB(162-2, 162-4)를 참조한다. 바람직한 실시예에 있어서, 트랜잭션은 하나의 데이터베이스 및 단 하나의 데이터베이스의 문맥내에서 실행한다. 또한, 바람직하게는 그 트랜잭션의 데이터베이스의 범위 밖에서 자원들에 액세스하는 것을 트랜잭션이 금지하는 것이 좋다. 그 구현 레벨에서, 이것은 트랜잭션의 트랜잭션 제어 블록이 참조하는 것과 동일한 데이터베이스 제어 블록을 참조하는 LCB들(또는 SLCB들)에 결합되거나 속하는 트랜잭션의 LRB들을 발생한다. 예컨대, 도 6에 있어서, T2는 DB1 내에서 실행한다. 따라서, T2의 LRB들(162-2, 162-4)은 동일한 데이터베이스(DB1)를 참조하는 LCB들(SLCB 164-1, 164-2)에 속한다.6 shows an exemplary data structure that accesses only resources in its database. For example, for a transaction T1 that references the global database 192 using a solid arrow, the transaction T1 uses a dashed line table to match the first level or LCB level referenced by the hash table 152. See associated LRBs 162-1 and 162-3, respectively. In addition, transaction T2 and its transaction control blocks are referenced or are part of the secondary database, and are also associated with the second LCB level or the first SLCB level using dashed arrows and correspond to DB1 LRB 162-2, 162-4). In a preferred embodiment, the transaction executes in the context of one database and only one database. Also, it is desirable for a transaction to prohibit access to resources outside the scope of the transaction's database. At that implementation level, this results in LRBs of the transaction that are bound to or belong to LCBs (or SLCBs) that refer to the same database control block as the transaction control block of the transaction references. For example, in Fig. 6, T2 is executed in DB1. Thus, LRBs 162-2 and 162-4 of T2 belong to LCBs SLCB 164-1 and 164-2 that refer to the same database DB1.

도 7은 데이터베이스 제어 블록("DBCB")의 전형적인 구현을 도시한다. 바람직한 실시예에서는 궁극적으로 최종 유저가 원하는 데이터를 저장하기 위하여 DBCB에 대한 요청은 없지만, DBCB의 목적은 LCB 또는 SLCB에 의해 적어도 일부분에 나타낸 바와 같이 잠금이 속하는 데이터베이스 또는 보조 데이터베이스가 어떤 것인지를 표시하는 것이다. 도 7의 DBCB(202)는 ID로서 단축되는 식별자 필드(204)를 포함한다. 이 필드는 DBCB의 명칭 또는 식별을 나타낸다. 능동 트랜잭션 필드(206) (간략하게, Act Tx)에 의해 DBCB로부터 질의시 데이터베이스 또는 보조 데이터베이스 내의 이러한 시점에서 능동 상태인 각각의 트랜잭션까지 추적할 수 있다. 예컨대, 이것은 보조 데이터베이스의 오너가 그 보조 데이터베이스를 허락하거나 종료하길 원하는 경우에 바람직하다. 이 시스템은 보조 데이터베이스 내의 능동 트랜잭션이 어떤 것인지를 결정해야 하며, 능동 트랜잭션의 목록이 비어있지 않은 경우에, 보조 데이터베이스의 오너는 보조 데이터베이스 내에 다른 작업이 진행 중인지를 지시하고, 이러한 시점에서 그 트랜잭션을 종료하는 것이 바람직한지 여부를 문의하는 경보를 받아야 한다. 보조 데이터베이스를 종료하는 책임있는 엔티티에게 그 종료 판정을 변경할 가능성을 제공하는 것이 바람직하다.7 illustrates a typical implementation of a database control block (“DBCB”). In the preferred embodiment there is no request to the DBCB to ultimately store the data desired by the end user, but the purpose of the DBCB is to indicate which database or secondary database the lock belongs to, as indicated at least in part by the LCB or SLCB. will be. DBCB 202 of FIG. 7 includes an identifier field 204 shortened as an ID. This field indicates the name or identification of the DBCB. The active transaction field 206 (abbreviated Act Tx) may track up to each transaction that is active at this point in the database or secondary database upon querying from the DBCB. For example, this is desirable if the owner of the secondary database wishes to allow or terminate the secondary database. The system must determine which active transaction is in the secondary database, and if the list of active transactions is not empty, the owner of the secondary database indicates whether other work is in progress in the secondary database, and at that point You should receive an alarm asking if it is desirable to exit. It is desirable to give the responsible entity terminating the secondary database the possibility to change its termination decision.

대안으로, 이 시스템은 능동 트랜잭션이 내부에서 실행중인 경우에 보조 데이터베이스를 종료할 수 없도록 구현될 수 있다. 이러한 경우에, 그 트랜잭션은 능동 트랜잭션이 없을 때에만 보조 데이터베이스를 종료할 수 있도록 진행되어야 한다. 이러한 점검없이, 이 시스템이 트랜잭션을 중지하는 것은 그 데이터 관리 시스템의 특성들에 바람직하지 않을 것이다. 능동 트랜잭션 필드(206)는 복수의 참조 사항, 모든 능동 트랜잭션의 하나의 리스트를 포함하는 하나의 링크된 목록의 일부분인 단 하나의 참조 사항을 포함하거나, 능동 트랜잭션의 명칭 또는 다른 식별을 포함할 수 있다. 추가적으로 또는 대안으로, 능동 트랜잭션 필드는 모순이 있을 때 데이터베이스 또는 보조 데이터베이스에 대한 각각의 능동 트랜잭션을 참조하는 이중으로 링크된 리스트를 이용하여 구현될 수 있다.Alternatively, the system can be implemented such that the secondary database cannot be terminated if an active transaction is running internally. In such a case, the transaction must proceed to terminate the secondary database only when there is no active transaction. Without this check, it would be undesirable for the system to abort a transaction for the characteristics of the data management system. The active transaction field 206 may include a single reference that is part of one linked list that includes a plurality of references, one list of all active transactions, or may include the name or other identification of an active transaction. have. Additionally or alternatively, the active transaction field may be implemented using a dual linked list that references each active transaction to the database or secondary database when there is a contradiction.

그 소유 트랜잭션 필드(208)(간략하게, Own Tx)는 생성되는 트랜잭션에 참조되기 때문에, 질의시 DBCB를 소유한다. 글로벌 데이터베이스에 대하여, 이러한 필드는 널(null) 참조가 되도록 설정될 수 있고, 보조 데이터베이스에 대하여 이 필드는 그것의 생성자/오너 트랜잭션 제어 블록을 참조할 것이다. 슈퍼 데이터베이스 필드(210)(간략하게, Sup DB)는 이 데이터베이스의 일부분인 데이터베이스를 나타내는 DBCB를 참조한다.Since the owning transaction field 208 (abbreviated Own Tx) is referenced in the transaction being created, it owns the DBCB at the time of query. For a global database, this field can be set to be a null reference, and for a secondary database this field will refer to its creator / owner transaction control block. Super database field 210 (abbreviated to Sup DB) refers to the DBCB representing the database that is part of this database.

보조 데이터베이스 필드(212)(간략하게, Sub, Db)는 이러한 데이터베이스의 보조 데이터베이스를 나타내는 DBCB들의 집합을 참조한다. 다음 데이터베이스 필드 (214)(간략하게, Next DB)는 데이터베이스 계층에서 동일 레벨 내에 있는 다음 DBCB를 참조한다. 이전의 데이터베이스 필드(216)(간략하게, Prev DB)는 보조 데이터베이스 계층에서 동일 레벨 내의 이전의 DBCB를 참조한다. 다음 DB 및 이전의 DB를 이용하여 보조 데이터베이스 계층에서 소정의 레벨 내의 DBCB의 이중으로 링크된 리스트를 생성한다. 따라서, 동일한 모 데이터베이스(parent database)를 갖는 보조 데이터베이스는 그러한 리스트에 함께 링크된다. DBCB(202)의 3개의 점 또는 타원들은 추가 필드들이 DBCB에 포함될 수 있다는 것을 나타낸다.Secondary database field 212 (abbreviated, Sub, Db) refers to a set of DBCBs representing the secondary database of this database. The next database field 214 (abbreviated Next DB) refers to the next DBCB within the same level in the database hierarchy. The previous database field 216 (abbreviated Prev DB) refers to the previous DBCB within the same level in the secondary database layer. The next DB and the previous DB are used to create a dual linked list of DBCBs within a given level at the secondary database layer. Thus, secondary databases with the same parent database are linked together in such a list. Three points or ellipses in DBCB 202 indicate that additional fields may be included in the DBCB.

DBCB의 목적은 자원 계층 또는 데이터베이스 계층에서 잠금 등의 특정 일이속하는 장소를 특별히 정확하게 나타낸다. 따라서, 그 시스템의 나머지와 보조 데이터베이스의 관계를 쉽게 판정할 수 있다.The purpose of the DBCB is to pinpoint the place where a particular thing happens, such as a lock, in the resource or database layer. Thus, the relationship between the rest of the system and the secondary database can be easily determined.

전술한 DBCB 및 이후에 상세히 설명될 트랜잭션 제어 블록('TCB)에 관해서는 이러한 데이터 구조내에 포함된 복수의 필드들(도시 생략)이 있다. 관리가능하고 이해할 수 있는 복수의 참조들을 유지하기 위해서, 모든 참조들을 설명할 필요는 없다. 따라서, 다이어그램이 참조를 포함하지 않은 사실은 그 참조가 거기에 없다는 의미로 해석해서는 않되며, 이와 비슷하게, 데이터 구조가 특정 참조 또는 필드를 포함하는 사실도 데이터 구조의 절대적인 요건으로서 그러한 참조를 갖는 것으로 해석되어서는 안된다. DBCB들은 바람직하게는 계층을 형성한다. 그러나, 하나의 계층에 DBCB를 배열하지 않은 다른 구현도 가능하다.As for the DBCB described above and the transaction control block 'TCB' which will be described in detail later, there are a plurality of fields (not shown) included in this data structure. In order to maintain a plurality of manageable and understandable references, it is not necessary to describe all the references. Thus, the fact that a diagram does not contain a reference should not be interpreted to mean that the reference is not there, and similarly, the fact that a data structure contains a particular reference or field means that such a reference is an absolute requirement of the data structure. It should not be interpreted. DBCBs preferably form a hierarchy. However, other implementations without DBCB arrangement in one layer are possible.

도 8은 트랜잭션 제어 블록("TCB") 데이터 구조(222)를 도시한다. 이러한 데이터 구조를 이용하여 능동 트랜잭션을 지시하고, 그 트랜잭션이 속하는 어떤 데이터베이스 또는 보조 데이터베이스를 지시하며, 그 잠금된 자원 및 트랜잭션의 잠금 상태를 판정한다.8 illustrates a transaction control block (“TCB”) data structure 222. This data structure is used to indicate an active transaction, to indicate which database or secondary database the transaction belongs to, and to determine the locked resources and lock state of the transaction.

TCB에는 예컨대, 트랜잭션의 명칭을 식별하는 식별자 필드(224)가 있다. 문맥 데이터베이스 필드(226)(간략하게 Ctxt DB)를 이용하여 질의시 트랜잭션의 범위 또는 문맥을 나타내는 데이터베이스의 DBCB를 참조한다. 이것은 트랜잭션 생성시에 판정될 수 있다. 본 발명의 일 실시예에 따르면, 트랜잭션이 태어나는 시간부터 그 트랜잭션을 종료할 때 까지, 트랜잭션은 그의 생을 살면서 단 하나의 데이터베이스 내에서 모든 그의 동작을 실행한다. 본 발명의 바람직한 실시예에서는 단 하나의문맥에서 그들의 수명의 초기에 트랜잭션이 존재하는 규칙을 이용함으로써 효율적이고 적당하게 동작한다. 따라서, 그 문맥 데이터베이스 필드(226)를 이용하여 질의시 트랜잭션의 범위 또는 문맥을 나타낼 수 있다. 예컨대, 문맥 데이터베이스 필드(226)는 TCB에 해당하는 트랜잭션이 글로벌 데이터베이스 내에서 실행되는 것을 의미하는 글로벌 데이터베이스를 참조하거나, 그것이 문맥 데이터베이스로서 글로벌 데이터베이스를 갖는다.The TCB has, for example, an identifier field 224 that identifies the name of the transaction. The context database field 226 (abbreviated Ctxt DB) is used to refer to the DBCB of the database that represents the scope or context of the transaction at the time of query. This can be determined at transaction creation. According to one embodiment of the present invention, from the time a transaction is born to the end of the transaction, the transaction executes all its operations within a single database, living its life. In a preferred embodiment of the present invention it operates efficiently and suitably by using rules in which transactions exist at the beginning of their lifetime in a single context. Thus, the context database field 226 can be used to indicate the scope or context of the transaction in the query. For example, the context database field 226 refers to a global database, meaning that a transaction corresponding to a TCB is executed in a global database, or it has a global database as the context database.

도 8의 보조 데이터베이스 필드(228)는 이러한 트랜잭션을 생성하는 보조 데이터베이스의 집합을 나타낸다. 이러한 필드가 비워져 있거나 널을 참조할 수 있다는 것에 주목해야 한다. 트랜잭션이 생성될 수 있기 때문에, 복수의 보조 데이터베이스를 소유한다. 실행되는 동작에 따라, 많은 보조 데이터베이스가 특정 트랜잭션에 존재하는 방법을 바람직하게 판정할 수 있다. 따라서, 트랜잭션을 종료하길 원할 때, 그러한 종료를 실행하기 전에 어떤 보조 데이터베이스가 존재하는지를 아는 것이 바람직하다. 유사하게, 앞서 설명한 바와 같이, 바람직하게는 데이터베이스 제어 블록에 대한 보조 데이터베이스를 아는 것이 바람직하다.Secondary database field 228 of FIG. 8 represents a set of secondary databases that generate such transactions. Note that these fields may be empty or may refer to nulls. Since a transaction can be created, it owns multiple secondary databases. Depending on the operation performed, it may be desirable to determine how many secondary databases exist in a particular transaction. Thus, when you want to terminate a transaction, it is desirable to know what secondary database exists before executing such termination. Similarly, as described above, it is desirable to know the secondary database for the database control block.

필드(230)는 TCB의 허락된 잠금 요청을 나타내고, 필드(234)은 TCB의 보류 잠금 요청을 나타낸다. 이러한 필드들(230, 234)은 도면, 예컨대 도 6에 도시된 TCB들로부터 LRB까지의 참조를 이용하여 구현될 수 있다.Field 230 represents the TCB's allowed lock request, and field 234 represents the TCB's pending lock request. These fields 230, 234 may be implemented using references from the TCBs to the LRB shown in the figure, eg, FIG. 6.

슈퍼 트랜잭션 필드(236)는 바람직하게는 트랜잭션 또는 TCB의 계층을 유지하는데 이용될 수 있다. 슈퍼 트랜잭션 필드(236)는 문제의 트랜잭션 보다는 계층이 높은 트랜잭션을 참조 또는 지적할 것이다. 예컨대, 그 트랜잭션 필드(236)를이용하여 문제의 트랜잭션을 생성하거나 생성을 허용한 트랜잭션을 참조할 것이다.Super transaction field 236 may preferably be used to maintain a hierarchy of transactions or TCBs. Super transaction field 236 will reference or point to the transaction with the higher hierarchy than the transaction in question. For example, the transaction field 236 will be used to reference the transaction that created or allowed to create the transaction in question.

도 9는 DBCB들 사이의 관계, 또 DCBC와 TCB 사이의 관계를 도시한다. 이러한 데이터 구조를 이용하여 자원들의 잠금을 제어한다. 도 9에 있어서, 해시 테이블, LCBs, SLCBs 및 LRBs를 도시하지 않음으로써, 그 다이어그램이 지나치게 복잡해지지 않았다. 그러나, 데이터 구조는 통상적으로 그 시스템에 나타난다. 도 9에는 TCB(T1, T2, T3, .... Tm)이 도시된다. 또한 DBCB(240, 250, 260, 270, 280, 290, 300)이 도시된다. 이러한 예로서, DBCB의 계층이 관찰될 수 있다. 예컨대, DBCB(240)는 계층 DBCB 구조에서 최고의 DBCB이며, 글로벌 데이터베이스(192)에 해당한다. DBCB(240)에 관하여, ID 필드(241)는 이러한 DBCB가 글로벌 데이터베이스인지를 지시할 것이다. Own Tx 필드(243)는 DBCB에서 글로벌 데이터베이스의 오너 또는 소유하는 트랜잭션을 식별할 필요가 없기 때문에, 널을 가르킨다. 유사하게, Sup DB 필드(244)도 또한 글로벌 데이터베이스용 슈퍼 데이터베이스가 없기 때문에 널을 가르킨다.9 shows a relationship between DBCBs and a relationship between DCBC and TCB. This data structure is used to control locking of resources. In Fig. 9, by not showing the hash tables, LCBs, SLCBs and LRBs, the diagram was not overly complicated. However, data structures typically appear in the system. 9 shows TCBs (T1, T2, T3, .... Tm). Also shown are DBCBs 240, 250, 260, 270, 280, 290, 300. As such an example, a hierarchy of DBCBs can be observed. For example, DBCB 240 is the best DBCB in the hierarchical DBCB structure and corresponds to global database 192. With respect to DBCB 240, ID field 241 will indicate whether this DBCB is a global database. The Own Tx field 243 points to null because DBCB does not need to identify the owner or owning transaction of the global database. Similarly, Sup DB field 244 also points to null because there is no super database for the global database.

Sub DB 필드(245)는 이러한 데이터베이스용 보조 데이터베이스의 집합을 참조하고, 이러한 경우에 DBCB(250)를 참조한다. 이러한 특정예의 글로벌 데이터베이스 레벨에서는 글로벌 데이터베이스 레벨에 다른 데이터베이스가 없기 때문에, 다음 DB 필드(246) 및 이전 DB 필드(247)는 각각 널을 가르킨다. 도 7에 도시된 능동 트랜잭션 필드(206)를 간단히 도시하여 다이어그램을 간소화하지는 않았지만, 바람직한 실시예에서는 앞서 설명한 바와 같이 능동 트랜잭션 필드가 이용될 수 있다.Sub DB field 245 refers to the collection of secondary databases for this database, in which case it refers to DBCB 250. At the global database level of this particular example, since there are no other databases at the global database level, the next DB field 246 and the previous DB field 247 each point to null. Although the diagram is not simplified by simply showing the active transaction field 206 shown in FIG. 7, in the preferred embodiment, an active transaction field may be used as described above.

DBCB(240) 아래의 계층 레벨에는 DBCB(250, 260)가 있다. 도 9의 모든 필드들은 자체적으로 설명되지는 않을 것이다. 그러나, DBCB(250)에 관하여, 소유 트랜잭션(253)이 이러한 DBCB용 슈퍼 데이터베이스(254)가 DBCB(240)에 나타난 글로벌 데이터베이스인 T2를 참조하는 것이 도시된다. 이 DBCB(250)에 대한 보조 데이터베이스는 DBCB(270)를 참조하는 참조 Sub DB(255)에 의해 지시된다. 데이터베이스 (250)의 보조 데이터베이스(280, 290, 300)는 보조 데이터베이스(270)에 링크된다. 그 다음 DB 필드(256)는 DBCB(260)를 참조하고, 이전 DB 필드(257)는 널을 참조한다.At the hierarchical level below DBCB 240 are DBCBs 250 and 260. Not all fields of FIG. 9 will be described by themselves. However, with respect to DBCB 250, it is shown that owning transaction 253 refers to T2, which is a global database such that super database 254 for DBCB appears in DBCB 240. The secondary database for this DBCB 250 is pointed to by the reference Sub DB 255 which references DBCB 270. Secondary databases 280, 290, and 300 of database 250 are linked to secondary database 270. The next DB field 256 refers to DBCB 260 and the previous DB field 257 refers to null.

DBCB(250)와 동일한 계층 레벨에 있는 DBCB(260)에 관하여, 소유 트랜잭션 (263)은 T3이고, 슈퍼 데이터베이스(264)는 DBCB(240)를 참조하며, 널을 참조하는 Sub DB 필드(265)에 의해 지시된 DBCB(260)에 대한 보조 데이터베이스는 없고, 필드(266)에 의해 지시된 바와 같은 다음 DB도 없다. 이전 DB 필드(267)는 DBCB (250)를 참조한다. DBCB(240, 250, 260)에 대한 앞선 설명을 토대로, DBCB(250, 260)의 계층 레벨 아래에 있는 동일한 계층 레벨에 DBCB(270, 280, 290, 300)가 있는 것이 명백하다.Regarding DBCB 260 at the same hierarchical level as DBCB 250, the owning transaction 263 is T3, the super database 264 refers to DBCB 240, and the Sub DB field 265 refers to null. There is no secondary database for DBCB 260 indicated by, and there is no next DB as indicated by field 266. Previous DB field 267 refers to DBCB 250. Based on the foregoing description of DBCBs 240, 250, 260, it is evident that DBCBs 270, 280, 290, 300 are at the same hierarchy level below the hierarchy level of DBCBs 250, 260.

일반적인 DBCB들에 대하여, 슈퍼 데이터베이스 필드는 일반적으로 특정 슈퍼 데이터베이스를 참조하지 않을 글로벌 데이터베이스 이외에 하나의 슈퍼 데이터베이스를 참조할 것이다. 이러한 참조는 그 계층을 나타낼 수 있다. 도 9는 특정열의 트랜잭션 동안 DBCB들이 배열될 수 있는 방법에 대한 일예만이 도시되며, 도 9의 정확한 계층은 필요없다.For typical DBCBs, a super database field will generally refer to one super database in addition to the global database, which will not refer to a particular super database. Such a reference may represent that hierarchy. 9 illustrates only one example of how DBCBs can be arranged during a particular row of transactions, and the exact hierarchy of FIG. 9 is not required.

트랜잭션이 보조 데이터베이스를 생성하는 경우에, 그 보조 데이터베이스는그 생성하는 트랜잭션의 문맥을 토대로 생성될 것이다. 도 9에 있어서, 트랜잭션 (T2, T3)은 글로벌 데이터베이스에서 바람직하게 실행되는데, 그 이유는 그 글로벌 데이터 베이스 내에 속하는 보조 트랜잭션을 생성할 수 없기 때문이다. 따라서, 고급 데이터베이스로서 DBCB(240)에 의해 나타낸 글로벌 데이터베이스를 DBCB(250, 260)가 갖는다는 사실은 Owing 트랜잭션이 그 범위 또는 문맥으로서 글로벌 데이터베이스를 갖는 것을 지시한다. 더욱더, 앞서 설명한 바와 같이, 바람직하게는 각각의 DBCB에 대하여 단지 하나의 슈퍼 데이터베이스가 있지만, 보조 데이터베이스는 특정수가 있는 것이 좋다. 그러나, 대안의 구현에서는 그러한 요건을 가질 수 없다.If a transaction creates a secondary database, that secondary database will be created based on the context of the creating transaction. In Fig. 9, transactions T2 and T3 are preferably executed in a global database because it is not possible to create an auxiliary transaction belonging to that global database. Thus, the fact that DBCBs 250 and 260 have a global database represented by DBCB 240 as an advanced database indicates that the Owing transaction has a global database as its scope or context. Furthermore, as described above, there is preferably only one super database for each DBCB, but it is preferred that the secondary database has a specific number. However, alternative implementations may not have such a requirement.

도 9는 DBCB(250)가 DBCB(260)를 참조하고, 또 DBCB(260)가 DBCB(250)를 참조하는 이중으로 링크된 리스트 구조를 도시하는 동안에, 그러한 DBCB들 사이에 이중으로 링크된 리스트 관계는 필수 요건이 아니라, 트리 구조 실행 등의 기타 실행에 이용될 수 있다. 예컨대, DBCB들의 위치를 지시하는 일부 구조의 집합 또는 리스트를 나타내기 위한 개별 객체를 가르키거나 참조하는 DBCB로부터의 참조 또는 포인터가 될 수 있다. 이러한 대안의 구현은 다른 데이터 구조를 그 데이터 구조 배치에 부가할 수 있다. 그러한 대안의 배치는 데이터 구조 배치를 더욱 복잡하게 할 수 있지만, 그것을 행하는 것은 장점이 될 수도 있다. 한가지 그러한 예에 의해 바람직하게는 DBCB들의 다음 참조 및/또는 이전의 참조를 제거할 수 있다.9 shows a double linked list between such DBCBs, while DBCB 250 refers to DBCB 260, and DBCB 260 refers to DBCB 250. Relationships are not mandatory but can be used for other implementations such as tree structure implementations. For example, it may be a reference or pointer from a DBCB that points to or refers to an individual object to represent a set or list of some structures indicating the location of the DBCBs. This alternative implementation may add other data structures to the data structure arrangement. Such alternative arrangements can complicate data structure placement, but doing so may be an advantage. One such example may preferably remove the next and / or previous reference of DBCBs.

도 10은 도 9에 도시되지 않은 TCB 및 DBCB들의 추가적인 세부 사항을 도시한다. 이러한 세부 사항은 명료성을 위하여 도 9로부터 생략되고, 그 도면이 너무난잡해지는 것을 예방한다. 유사하게, 도 9에 포함되는 DBCB의 특징들은 명료한 표현을 위하여 도 10에서 생략되었다. 도 10에 있어서, 능동 트랜잭션 필드는 DBCB들에 도시되었고, 그 문맥 데이터베이스 및 보조 데이터베이스 필드는 TCB들에 관하여 도시하는데 이용되었다. 도 10의 이러한 필드들은 DBCB와 TDB 사이의 관계를 더욱 상세한 방법으로 도시한다.FIG. 10 shows additional details of the TCB and DBCBs not shown in FIG. 9. These details are omitted from FIG. 9 for clarity, and prevent the drawing from becoming too cluttered. Similarly, features of DBCB included in FIG. 9 have been omitted from FIG. 10 for clarity. In FIG. 10, the active transaction field is shown in DBCBs, and the context database and auxiliary database field are used to illustrate the TCBs. These fields of FIG. 10 illustrate the relationship between DBCB and TDB in a more detailed manner.

그 DBCB가 자체의 소유 트랜잭션을 추적하는 것이 바람직하며, 이것에 대하여는 도 9에 도시되어 있고, 또 보조 데이터베이스의 능동 트랜잭션을 추적하는 것이 바람직하다. 이러한 기능은 DBCB의 능동 트랜잭션 참조 또는 필드에 의해 실행된다. 도 10에 도시된 바와 같이, DBCB(310)는 식별 필드(311) 및 능동 트랜잭션 필드(312)를 갖는다. 이 능동 트랜잭션 필드(312)는 TCB(320)를 참조한다. 따라서, DBCB(310)에 대응하는 보조 데이터베이스의 오너는 TCB(320)에 해당하는 트랜잭션이 DBCB(310)에 대한 능동 트랜잭션인지를 판정할 수 있다. 더욱더, TCB(330)을 참조하고, TCB(330)이 TCB(340)를 참조하는 것을 TCB(320)의 가장 오른쪽 부분에서 알 수 있다. 또한, TCB(340)는 TCB(320)를 참조하는 TCB(330)를 참조한다. 또한, 각각의 TCB(320, 330, 340)의 문맥 데이터베이스 필드는 DBCB(310)를 참조한다.It is preferred that the DBCB track its own transaction, which is illustrated in FIG. 9 and preferably tracks the active transaction of the secondary database. This function is performed by an active transaction reference or field in the DBCB. As shown in FIG. 10, DBCB 310 has an identification field 311 and an active transaction field 312. This active transaction field 312 refers to the TCB 320. Accordingly, the owner of the secondary database corresponding to DBCB 310 may determine whether the transaction corresponding to TCB 320 is an active transaction to DBCB 310. Further, it can be seen in the rightmost part of the TCB 320 that the TCB 330 is referenced and the TCB 330 refers to the TCB 340. TCB 340 also references TCB 330 which references TCB 320. Also, the context database fields of each TCB 320, 330, 340 refer to DBCB 310.

하나의 트랜잭션이 생성, 기동 또는 개시되는 경우에, 그 트랜잭션은 바람직하게는 실행할 몇가지 종류의 문맥을 갖는 것이 좋다. 고전적인 문맥 및 종래의 기술에 있어서, 이러한 설정은 항상 글로벌 데이터베이스이다. 그러나, 본 발명의 내포 데이터베이스로서, 트랜잭션은 글로벌 데이터베이스에서 기동 및 실행될 수 있고, 트랜잭션은 보조 데이터베이스에서 개시될 수 있다. 바람직하게는 하나의 트랜잭션이 기동되는 보조 데이터베이스의 외측의 데이터는 액세스 불가능하고, 바람직하게는 잠금 관리자가 이러한 트랜잭션이 실행 중인 데이터베이스를 판정할 수 있으며, 문맥 데이터베이스로서 참조되는 것이다. 하나의 트랜잭션이 요청하는 자원이 문맥 데이터베이스의 외부에 있는 경우에, 이러한 정보를 액세스하는 요청은 바람직하게는 잠금 관리자에 의해 부정될 수 있다. 그러나, 대안으로써, 질의시 그 보조 데이터베이스를 동적으로 성장시킬 수 있다. 바람직하게는, 이러한 동적 성장은 오른쪽에서 발생할 수 있고, 또 바람직하게는, 그 성장이 자동으로 트리거링(예컨대, 유저의 중단없이)될 수 있다. 이러한 성장은 새로운 데이터 항목들이 보조 데이터베이스에 발생되는 방법을 보여주는 도 16의 프로세스와 비슷한 방법으로 발생할 수 있다. 요청되는 데이터가 문맥 데이터베이스의 일부분인 경우에, 그 자원은 액세스가능한 데이터베이스에 속하고, 평가할 다음 문제는 그 자원 상에 어떤 충돌 잠금이 있는지 여부이다. 충돌 잠금이 없는 경우, 그 잠금 관리자는 그 잠금 요청을 허락할 수 있다. 따라서, 본 발명의 데이터 구조는 자원이 액세스가능한지 여부를 지시하여, 그 자원이 잠금되었는지 여부를 판정할 수 있다.When a transaction is created, started or started, the transaction preferably has some kind of context to execute. In the classical context and in the prior art, this setting is always a global database. However, as the nested database of the present invention, a transaction can be initiated and executed in a global database, and a transaction can be initiated in a secondary database. Preferably data outside of the secondary database on which one transaction is invoked is inaccessible, and preferably the lock manager can determine the database on which this transaction is running and is referred to as the context database. If the resources requested by one transaction are outside of the context database, the request to access this information may be negated by the lock manager, preferably. However, as an alternative, you can dynamically grow that secondary database at query time. Preferably, this dynamic growth can occur on the right side, and preferably, the growth can be triggered automatically (eg without interruption of the user). This growth can occur in a manner similar to the process of FIG. 16 showing how new data items are generated in the secondary database. If the data requested is part of a context database, the resource belongs to an accessible database, and the next question to evaluate is whether there are any conflict locks on that resource. If there are no conflicting locks, the lock manager can grant the lock request. Thus, the data structure of the present invention can indicate whether a resource is accessible and determine whether the resource is locked.

다시, 도 10을 참조해보면, TCB(320)의 Sub DB 필드(323)가 DBCB(348)를 참조하고, TCB(330)의 Sub DB 필드(333)가 DBCB(346)를 참조하며, TCB(340)의 Sub DB 필드(343)가 DBCB(347)를 참조하는 것을 알게 된다. DBCB(348, 352, 356)에 관하여, 이러한 DBCB들의 슈퍼 데이터베이스 포인터 또는 참조는 DBCB(310)를 참조한다. 그 DBCB(348)는 그것의 능동 트랜잭션 참조를 이용하여 TCB(360)를 참조한다. TCB(360, 364)는 각각 그들에 해당하는 문맥 데이터베이스 참조들을 이용하여 DBCB(348)를 참조한다. 도 10의 간소한 DBCB 및 TCB들의 필드의 상세한 구조는 참조들로 인하여 과도하게 난잡해지는 것을 예방하기 위하여 명료하게 생략되었다.Referring back to FIG. 10, the Sub DB field 323 of the TCB 320 refers to the DBCB 348, the Sub DB field 333 of the TCB 330 refers to the DBCB 346, and the TCB ( It will be appreciated that the Sub DB field 343 of 340 refers to the DBCB 347. With respect to DBCBs 348, 352, 356, the super database pointers or references of these DBCBs refer to DBCB 310. The DBCB 348 refers to TCB 360 using its active transactional reference. TCBs 360 and 364 refer to DBCB 348 using context database references corresponding to them, respectively. The detailed structure of the simple DBCB and TCB fields of FIG. 10 has been omitted for clarity in order to prevent excessive clutter due to references.

도 11은 자원들의 잠금을 제어하고 감시하는데 이용된 데이터 구조의 대안의 구현을 도시한다. 도 2, 4 및 6에 관하여 설명된 실시예에 있어서, 잠금 관리자가 특정 데이터베이스의 특정 자원의 잠금에 대한 잠금 요청을 처리하는 경우에, 우선, 자원 ID("RID")를 이용하여 글로벌 데이터베이스에서 소정의 자원에 대한 LCB를 찾을 것이다. 그 후에, 필요한 경우, "다음 레벨 LCB" 참조를 이용하여 동일한 RID에 대한 LCB를 찾지만, 특별한 경우에는 처리될 잠금 요청에 의해 식별되는 데이터베이스 또는 보조 데이터베이스를 찾을 것이다. 도 11의 대안의 실시예(또한 도 12의 대안의 실시예)는 이전에 설명된 것에 비하여 역으로 이벤트의 시퀀스를 허용한다. 즉, 도 11의 데이터 구조에 의해 잠금 관리자는 먼저 데이터베이스를 위치시키고, 이것은 DBCB로 나타내며, 그 후에 그 데이터베이스 내에 RID를 위치시킬 수 있다. 이것은 이전에 기술된 해시 테이블 등의 단일 글로벌 검색 테이블보다는 DBCB마다 하나의 검색 테이블을 갖도록 수행된다.11 illustrates an alternative implementation of the data structure used to control and monitor locks of resources. 2, 4 and 6, in the case where the lock manager handles a lock request for a lock of a specific resource of a specific database, the resource ID ("RID") is first used in the global database. The LCB for a given resource will be found. Then, if necessary, the "next level LCB" reference will be used to find the LCB for the same RID, but in special cases the database or secondary database identified by the lock request to be processed. An alternative embodiment of FIG. 11 (also an alternative embodiment of FIG. 12) allows a sequence of events in reverse as compared to previously described. That is, the data structure of FIG. 11 allows the lock manager to first locate a database, which is represented by the DBCB, and then the RID within that database. This is done to have one lookup table per DBCB rather than a single global lookup table such as the hash table described previously.

도 11에 있어서, DBCB들은 그들의 owing TCB를 참조하는 것 이외에, 문의시 그 데이터베이스 내에 포함된 RID들에 액세스를 제공하는 검색 테이블을 참조한다. 예컨대, DB1은 테이블(380)을 참조하고, DB2는 테이블(390)을 참조하며, DBn은 검색 테이블(400)을 참조한다. 각각의 검색 테이블(380, 390, 400)들은 특정 데이터 항목의 잠금에 관한 정보를 제공하는 SLCB를 참조한다. 도면 11에는 도시를 생략하였지만, LRB들은 전술한 실시예에 이용되는 방법과 동일한 방법으로 SLCB들에 허락된 잠금 요청 및 보류 잠금 요청에 이용될 수 있다.In FIG. 11, in addition to referring to their owing TCB, DBCBs refer to a lookup table that provides access to the RIDs included in the database upon query. For example, DB1 refers to table 380, DB2 refers to table 390, and DBn refers to lookup table 400. Each lookup table 380, 390, 400 references an SLCB that provides information about the lock of a particular data item. Although not shown in FIG. 11, the LRBs may be used for the lock request and the pending lock request granted to the SLCBs in the same manner as the method used in the above-described embodiment.

보조 데이터베이스 검색 테이블(380, 390, 400)들은 해시 테이블로 구현될 수 있지만, 다른 방법으로는 구현될 수 없다. 예컨대, 보조 데이터 검색 테이블들은 LCB 참조들의 일정한 크기의 어레이를 이용하여 구현될 수 있다. 이러한 구현은 보조 데이터 생성시에 보조 데이터의 크기를 고정한 경우에 장점이 있고, 또한 LCB 참조의 동적 크기 어레이(발생가능한 어레이)를 이용하여 대안으로 구현될 수 있다. 해시 테이블을 보조 데이터베이스 검색 테이블로서 이용하는 경우, 이 해시 테이블은 바람직하게는 글로벌 데이터베이스 해시 테이블보다 적은 엔트리로 할당될 수 있다. 해시 테이블들을 보조 데이터베이스 검색 테이블로서 이용하는 경우에, 예컨대, SLCB(164-6)를 참조하는 SLCB(164-5)를 언급하는 참조(402)를 갖는 검색 테이블 (400)에 관하여 도시된 바와 같이 임의 소정의 해시 테이블에 대하여 LCB들의 체인을 가질 수 있다. 도 11의 대안의 실시예에 있어서, LCB들이 다른 검색 테이블에 조직되기 때문에, LCB 또는 SLCB의 "다음 레벨 LCB" 필드는 더 이상 필요없다. 따라서, 하나의 이러한 검색 테이블에서 소정의 엔트리로부터, 앞선 실시예의 LCB 및 SLCB의 계층 구조와 반대의 LCB의 선형 구조에 액세스한다. 도 11에 있어서, 각각의 보조 데이터베이스 DBCB는 자체의 TCB를 참조하고, 또한, 각각의 TCB는 그것이 포함하는 DBCB를 참조한다. 도 11의 데이터 구조는, 이러한 참조들이 도 11 또는 도 12에 도시되지 않더라도, 슈퍼 데이터베이스 참조들의 이용을 없애지 않는다.The secondary database lookup tables 380, 390, and 400 may be implemented as hash tables, but not otherwise. For example, auxiliary data lookup tables may be implemented using a constant sized array of LCB references. This implementation is advantageous in the case of fixing the size of the auxiliary data at the time of generating the auxiliary data, and can also be alternatively implemented using a dynamic size array (probable array) of LCB references. When using a hash table as a secondary database lookup table, this hash table may be allocated with fewer entries than the global database hash table. When using hash tables as a secondary database lookup table, for example, as shown with respect to lookup table 400 with reference 402 referring to SLCB 164-5, which refers to SLCB 164-6, for example. It may have a chain of LCBs for a given hash table. In the alternative embodiment of Figure 11, since the LCBs are organized in different lookup tables, the "next level LCB" field of the LCB or SLCB is no longer needed. Thus, from a given entry in one such lookup table, the linear structure of the LCB opposite to the hierarchy of LCB and SLCB of the previous embodiment is accessed. In Fig. 11, each secondary database DBCB refers to its own TCB, and each TCB also refers to the DBCB it contains. The data structure of FIG. 11 does not eliminate the use of super database references, even though these references are not shown in FIG. 11 or 12.

도 11에 있어서, 트랜잭션에 대한 문맥 데이터베이스와 관련된 정보를 나타내는 TCB와 DBCB 사이에 양방향으로 진행하는 참조들이 있다. 즉, T1을 참조하면, 예컨대, T1은 글로벌 데이터베이스 내에서 T1을 실행하거나, T1의 목록 데이터베이스로서 글로벌 데이터베이스를 갖는 것을 지시하는 글로벌 데이터베이스(192)를 가르킨다. DB1으로부터 T1까지를 참조하면, 이러한 참조는 DB1이 T1, T2, T3 및 T4에 의해 소유되거나 생성되는 것을 가르키고, 모든 참조 DB1은 이들 트랜잭션이 DB1의 범위 또는 문맥내에서 실행되는 것을 가르킨다. 도 11에 있어서, T4는 DB2로부터 T4까지를 참조하는 DB2의 작성 프로그램(creator)이지만, DB1 내에서 T4가 실행되는 것을 도시한다. 이러한 정보로부터, DB2가 보조 데이터베이스이고, DB1 내에 포함되는 것을 결정할 수 있다. 명심할 점은 도 11이 보조 데이터베이스 시스템의 단지 일예에 불과하며, 다른 방법으로 도시할 수 있다는 것이다. 그러나, 도 11에 도시된 바와 같이, DB2를 대신하여 있는 것이 T4를 통한 접속이기 때문에 DB1의 부분집합이다. 도 11은 또한 T5 및 T6이 그들의 문맥으로써 DB2로 실행되는 것을 도시한다. T6은 DBn을 작성하고, T7 및 T8은 DBn 내에서 실행한다.In FIG. 11, there are bidirectional references between the TCB and the DBCB that represent information related to the context database for a transaction. That is, referring to T1, for example, T1 points to a global database 192 that directs T1 to run in the global database or to have a global database as a list database of T1. Referring to DB1 through T1, this reference indicates that DB1 is owned or created by T1, T2, T3, and T4, and all reference DB1 indicates that these transactions are executed within the scope or context of DB1. In Fig. 11, T4 is a creator of DB2 referring to DB2 through T4, but shows that T4 is executed in DB1. From this information, it can be determined that DB2 is the secondary database and included in DB1. It should be borne in mind that FIG. 11 is only one example of a secondary database system and may be illustrated in other ways. However, as shown in FIG. 11, it is a subset of DB1 because it is the connection through T4 that replaces DB2. 11 also shows that T5 and T6 are executed with DB2 in their context. T6 creates a DBn, and T7 and T8 run within the DBn.

도 12는 본 발명의 또 다른 변경 구현을 도시한다. 보조 데이터베이스의 크기가 작아짐으로써, 보조 데이터베이스는 소수의 잠금가능한 자원들을 포함하여 구현될 수 있기 때문에, 바람직하게는 일정한 크기로 보조 데이터베이스를 구현할 수 있고, 검색 테이블(410. 414, 416)들은 바람직하게는 LCB들의 어레이로서 구현될 수 있다. LCB들이 보조 데이터베이스용이기 때문에, 도 12의 LCB들은 SLCB("보조 데이터베이스 잠금 제어 블록")(164 ~ 1 내지 164 ~ 20)으로 도시된다. SLCB들의 어레이들은 참조의 어레이 또는 LCB 참조들의 해시 테이블과 반대로 이용될 수 있다. 해시 테이블(152)이 앞서 실시예에 관하여 기술된 것과 동일한 방법으로 바람직하게 구현될 수 있다는 점에 주목하자. 글로벌 데이터베이스에 대하여 해시 테이블을 구현하는 것에 의해 많은 갯수의 LCB들이 바람직하게는 글로벌 데이터베이스에 이용될 수 있다. 보조 데이터베이스의 특정 사용이 알려진 경우, 또는 알려지지 않은 경우에도, 보조 데이터베이스의 항목의 갯수를 임의의 갯수, 예컨대 20 데이터 항목으로 제한하는 것이 바람직할 수 있다. 이러한 갯수는 바람직하게는 커지거나 작아질 수 있다. 그러나, 그 갯수는 일정하고, 하나 전체의 SLCB를 각각 보유할 수 있는 20 조각의 메모리를 갖게 작성되도록 구현될 수 있다. 그 할당된 메모리의 일부분만을 이용하는 경우에, 그 사용되지 않은 부분은 낭비되지만, 너무 커지지는 않고, 새로운 LCB가 도입될 때마다 동적 메모리 할당으로 취급하지 않는 잇점을 얻을 수 있다. 또한, 검색 테이블이 없는 링크된 리스트 또는 이중으로 링크된 리스트 등의 LCB들의 체인을 가질 수 있고, 특정 LCB를 위치시킬 필요성이 있을 때마다 포인터 또는 참조 체인의 순차적인 검색을 행할 수 있다.12 illustrates another modified implementation of the present invention. As the size of the secondary database becomes smaller, the secondary database can be implemented with fewer lockable resources, so that the secondary database can preferably be implemented with a constant size, and the lookup tables 410. 414, 416 are preferably May be implemented as an array of LCBs. Since the LCBs are for the secondary database, the LCBs of FIG. 12 are shown as SLCBs (“secondary database lock control blocks”) 164-1-164-20. Arrays of SLCBs can be used as opposed to an array of references or a hash table of LCB references. Note that the hash table 152 may be preferably implemented in the same manner as described with respect to the embodiment above. By implementing a hash table for a global database, a large number of LCBs can preferably be used for the global database. If a particular use of the secondary database is known or unknown, it may be desirable to limit the number of items in the secondary database to any number, such as 20 data items. This number is preferably large or small. However, the number is constant and can be implemented to have 20 pieces of memory each capable of holding one full SLCB. In the case of using only a portion of the allocated memory, the unused portion is wasted, but it does not get too large, and the advantage of not dealing with dynamic memory allocation every time a new LCB is introduced is obtained. It can also have a chain of LCBs, such as a linked list or a doubly linked list without a lookup table, and can perform a sequential search of a pointer or reference chain whenever there is a need to locate a particular LCB.

도 13은 DBCB 및 TCB와 관련된 모든 데이터 구조를 포함하는 계층을 도시한다. 본 발명에 따르면, 동일한 종류의 "것(thing)"이 있는 트랜잭션 및 데이터베이스를 볼 수 있다. 이것은 데이터베이스를 수동 트랜잭션으로 보게할 수 있다. 따라서, 그 데이터베이스가 수동 트랜잭션으로 보여지고, 트랜잭션(예컨대, T1)과 같이 전술된 것이 능동 트랜잭션으로 레벨링되면, 단일 계층 데이터 구조에서 DBCB 및 TCB의 통합 기법이 가능해진다.13 illustrates a layer that includes all data structures associated with DBCBs and TCBs. According to the invention, one can see a transaction and a database having the same kind of "thing". This allows you to view the database as a manual transaction. Thus, if the database is viewed as a passive transaction and the above described as a transaction (e.g. T1) is leveled as an active transaction, then the integration scheme of DBCB and TCB in a single layer data structure is possible.

도 13에는 능동 TCB 및 수동 TCB로 언급되는 ATCB 및 PTCB들이 도시된다. 능동 TCB("ATCB")는 이전에 기술된 TCB에 해당하고, 수동 TCB("PTCB")는 DBCB에 대한 다른 명칭이다. 도 13에 있어서, 데이터베이스/트랜잭션 계층으로 언급될 수 있는 계층의 루트는 글로벌 데이터베이스 PTCB(420)이다. 이 노드는 전술한 글로벌 데이터베이스 데이터 구조(192)에 해당한다. 그 계층에서, PTCB가 중간 모 노드(parent node)로서 다른 PCTB를 갖는데 공통으로 또는 통상적으로 이용되지 않을지라도, 어떤 노드는 특정 타입의 자 노드(child node)를 가질 수 있다. 전술한 것과는 다를지라도, 그 계층의 개시점은 계층의 루트인 글로벌 데이터베이스이고, 이후에, 그 데이터베이스/트랜잭션 계층은 트랜잭션 및 보조 데이터베이스들이 작성되어 종료되는 거의 인식가능한 방법으로 동적으로 개발(성장 및 수축)할 수 있다. 이것은 트랜잭션 관리 및 잠금 관리를 행하기 위한 시스템이 있는 한 글로벌 데이터베이스용 PTCB가 나타날 수 있는 반면에, 모든 다른 노드들이 비상주될 수 있는 것을 의미한다. 이러한 경우에, 글로벌 데이터베이스용 PTCB는 영구적으로 나타나도록 구현될 수 있다. 도 13의 통합 구조는 전술한 구현에 이용될 수 있다. 이것은 모든 LCB에 액세스를 제공하는 글로벌 검색 테이블을 갖도록 구현되거나, 문의시에 PTCB에 속하는 LCB에 액세스를 제공하는 PTCB마다 검색 테이블을 갖도록 구현될 수 있다.13 shows ATCBs and PTCBs referred to as active and passive TCBs. Active TCB ("ATCB") corresponds to the TCB described previously, and passive TCB ("PTCB") is another name for DBCB. In FIG. 13, the root of the layer, which may be referred to as the database / transaction layer, is the global database PTCB 420. This node corresponds to the global database data structure 192 described above. At that layer, although a PTCB is not commonly or commonly used to have another PCTB as an intermediate parent node, any node may have a particular type of child node. Although different from the foregoing, the starting point of the hierarchy is a global database that is the root of the hierarchy, after which the database / transaction hierarchy is dynamically developed (growing and contracting) in a nearly perceptible way in which transactional and auxiliary databases are created and terminated. )can do. This means that as long as there is a system for doing transaction management and lock management, PTCB for the global database can appear, while all other nodes can be relocated. In this case, the PTCB for global database can be implemented to appear permanently. The integrated structure of FIG. 13 can be used in the implementation described above. This may be implemented to have a global lookup table that provides access to all LCBs, or it may be implemented to have a lookup table for each PTCB that provides access to an LCB belonging to a PTCB upon query.

도 13을 참조하면, 글로벌 데이터베이스 PTCB(420)는 최고의 계층 레벨이 되도록 보여진다. 즉, 글러벌 데이터베이스 PTCB(420) 아래에는 3개의 트랜잭션, 즉 ATCB(422), ATCB(424) 및 ATCB(426)가 있다. 이들 3개의 ATCB들은 그들의 중간 모 노드로서 글로벌 데이터베이스 PTCB를 갖는 최상위 레벨 트랜잭션이다. 도 13의 계층안에 모든 다른 트랜잭션 및 ATCB들은 보조 트랜잭션으로 고려될 수 있다. 도 13에 도시된 데이터 구조 관계를 구현할 수 있는 이유는 발명가가 보조 데이터베이스를 수동 트랜잭션으로 간주하고, 보조 데이터베이스가 능동 트랜잭션에 의해 항상 작성될 수 있음으로서, 그 보조 데이터베이스가 보조 트랜잭션이 될 것이라고 판정한다는 것이다. 도 13에 도시된 데이터 구조의 계층 및 통합의 이점은 도 10에 도시된 배치와 비교하여 잠재적으로 간소화된다는 것이다. 이러한 간소화는 클스 백(cross back)하는 포인터 또는 참조와, TCB 및 DBCB의 2개의 다른 계층사이에 4를 갖기 보다는 오히려, 단일 계층이기 때문에 발생할 수 있다. 자체 소유의 트랜잭션과 그것의 슈퍼 데이터베이스 사이를 데이터베이스 제어 블록이 구별하기 보다는 오히려, 그 2개의 필드 중 하나만이 현재 필요하도록 데이터 구조를 구현할 수있고, 그 시스템은 단지 슈퍼 노드를 포함하도록 구현될 수 있다. 예컨대, 트랜잭션 제어 블록이 문맥 데이터베이스에 대한 포인터 또는 참조를 갖는 도 10을 보면, 이전에 구현한 데이터 구조는 필요없어도 슈퍼 트랜잭션으로 다른 포인터 또는 참조를 갖도록 바람직하게 구현된다. 도 13의 실시예에 따르면, 그러한 슈퍼 트랜잭션 및 문맥 데이터베이스 참조 또는 포인터들은 단 하나의 참조로 결합될 수 있다. 해시 테이블, LCB, SLCB 및 LRB 등의 검색 테이블은 전술한 실시예에 이용되는 것과 비슷한 방법으로 이 실시예에 이용된다.Referring to FIG. 13, global database PTCB 420 is shown to be at the highest hierarchical level. That is, under the global database PTCB 420 there are three transactions: ATCB 422, ATCB 424 and ATCB 426. These three ATCBs are top level transactions with the global database PTCB as their intermediate parent node. All other transactions and ATCBs in the layer of FIG. 13 may be considered secondary transactions. The reason for implementing the data structure relationship shown in FIG. 13 is that the inventor considers the secondary database to be a passive transaction and determines that the secondary database will be a secondary transaction, since the secondary database can always be created by an active transaction. will be. The advantage of the hierarchy and integration of the data structure shown in FIG. 13 is that it is potentially simplified compared to the arrangement shown in FIG. This simplification may occur because of a single layer, rather than having a pointer or reference that crosses back and two other layers of TCB and DBCB. Rather than the database control block distinguishing between its own transaction and its super database, the data structure can be implemented such that only one of the two fields is currently needed, and the system can be implemented to include only super nodes. . For example, referring to FIG. 10 where a transaction control block has a pointer or reference to a context database, a previously implemented data structure is preferably implemented to have another pointer or reference in a super transaction even if it is not necessary. According to the embodiment of Fig. 13, such super transaction and context database references or pointers may be combined into only one reference. Hash tables, lookup tables such as LCB, SLCB and LRB are used in this embodiment in a manner similar to that used in the above embodiments.

이전의 실시예가 실행한 단계들과 비슷한 잠금 요청 처리 단계들을 실행할 때, 프로세싱의 경우, TCB로부터 LCB로 또는 이와 반대로 진행하는 것이 바람직할 수 있다. 이전과 마찬가지로, 그 대답은 DBCB에 대응하는 PTCB를 참조하는 TCB 또는 ATCB에 의해 판정될 수 있다. 대안으로써, PTCB가 위치될 때까지 계층의 위쪽으로 진행할 것이다. 두가지 중 한 경우에, 트랜잭션 제어 블록으로부터 그 트랜잭션의 데이터 제어 블록까지 빠르게 진행할 수 있다. 이러한 점에서, 질의시 참조용 LCB를 찾고, 그 다음 질의시 데이터베이스용 LCB를 찾기 위해 해시 테이블로서 RID를 이용하는 것에는 2가지 옵션이 있으며, 또 DBCB로 진행한 다음에, 원하는 하나의 RID에 대하여 LCB를 검색하는데 이용되는 데이터베이스 제어 블록 또는 해시 테이블로 진행할 수 있다. PTCB의 구조에 관하여, 이러한 구조는 앞서 기술한 DBCB와 비슷해질 수 있다. 그러나, PTCB는 소유 트랜잭션과 DBCB의 슈퍼 데이터베이스 필드를 결합함으로서 바람직하게 구현될 것이고, 이러한 결합 필드는 간단히 고급(superior)이라고 말할 수 있다. 전술한 TCB들에 해당하는 ATCB들의 구현에 관하여, 도 8의 문맥 데이터베이스 필드(226)는 도 8의 TCB의 슈퍼 트랜잭션 또는 모 (parent) 트랜잭션 필드와 결합될 수 있다. 따라서, 추가적인 변경이 이루어지더라도, 바람직하게는, TCB와 매우 비슷한 ATCB를 구현할 수 있다.When executing lock request processing steps similar to those executed by the previous embodiment, for processing, it may be desirable to proceed from the TCB to the LCB or vice versa. As before, the answer may be determined by the TCB or ATCB referencing the PTCB corresponding to the DBCB. Alternatively, it will proceed to the top of the hierarchy until the PTCB is located. In either case, one can quickly progress from the transaction control block to the data control block of the transaction. In this regard, there are two options for using a RID as a hash table to find a reference LCB for a query and then a database LCB for a query, and then proceed to DBCB and then for one desired RID. You can proceed to the database control block or hash table used to retrieve the LCB. With regard to the structure of the PTCB, this structure can be similar to the DBCB described above. However, PTCB would preferably be implemented by combining the owning transaction with the DBCB's super database field, which can be said simply to be superior. With regard to the implementation of ATCBs corresponding to the aforementioned TCBs, the context database field 226 of FIG. 8 may be combined with the super transaction or parent transaction field of the TCB of FIG. 8. Thus, even if further changes are made, it is advantageously possible to implement an ATCB very similar to a TCB.

앞서 기술한 각각의 실시예들은 LRB의 잠금 요청 블록을 참조한 LCB 또는 SLCB를 바람직하게 이용했다. 이러한 구현을 변경하거나 추가함으로써, LRB들을 LCB 또는 SLCB 내에 허락된 요청 비트 맵 및 보류 요청 비트 맵으로 대체할 수 있다. 도 14를 참조하면, LCB 또는 SLCB의 변경 구현은 데이터 구조(460)로써 도시된다. 이 데이터 구조는 LRB들에 저장된 정보를 LCB에 통합함으로써, LCB(및 SLCB)들이 종래의 형식의 LCB(및 SLCB)보다 더 많은 정보를 포함하는 풍부한 제어 블록들이다. 도 14의 데이터 구조는 본원에 참조용으로 포함되는 미국 특허 제5,983,225호에 도시된 도 3의 데이터 구조에 기초하거나 비슷하다.Each of the embodiments described above preferably used an LCB or SLCB that referenced the lock request block of the LRB. By modifying or adding this implementation, it is possible to replace the LRBs with the request bit map and the pending request bit map allowed in the LCB or SLCB. Referring to FIG. 14, a modified implementation of LCB or SLCB is shown as data structure 460. This data structure is abundant control blocks in which the LCBs (and SLCBs) contain more information than conventional LCBs (and SLCBs) by integrating the information stored in the LRBs into the LCB. The data structure of FIG. 14 is based on or similar to the data structure of FIG. 3 shown in US Pat. No. 5,983,225, which is incorporated herein by reference.

이 데이터 구조(460)는 통상적으로 문제의 잠금된 자원 또는 자원의 일부의 다른 식별을 위하여 자원 식별자의 사본을 포함할 잠금 ID 필드(462)를 포함한다. 모드 필드(464)는 이러한 LCB에 의해 나타난 데이터베이스 자원에 대하여 허락된 모든 잠금의 가장 제한적인 액세스 모드를 나타낸다. 허락된 요청 비트 맵 필드 (466) 및 보류 요청 비트 맵 필드(468)는 각각 충분한 크기의 비트 맵(예컨대, 64 비트 또는 128 비트)을 포함하여, 그 시스템에 의해 제공되는 최대수의 동시성 트랜잭션(또는 서브 데이터베이스 레벨)을 나타낸다. 각 트랜잭션은 비트 맵 트랜잭션 식별자 중 하나의 식별자에 할당된다. 그 허락된 비트 맵(466)은 LCB(또는 SLCB)(460)에 의해 나타낸 잠금 자원을 허락한 각각의 능동 트랜잭션에 대한 집합 비트를 포함한다. 유사하게, 그 보류 요청 비트 맵(468)은 그 자원 상의 보류 잠금 요청(또는 액세스 요청)을 LCB(460)에 의해 나타낸 각각의 능동 트랜잭션용 집합 비트를 포함한다. 데이터베이스 필드(470)는 LCB(460)에 해당하는 자원에 대한 데이터베이스를 나타내는 DBCB를 참조한다. 이러한 실시예에 있어서, 다른 실시예와 같이, 소정의 레코드 또는 객체의 단 하나의 물리적인 사본만이 있지만, 그 레코드가 하나 이상의 데이터베이스에 액세스될 수 있도록 시스템을 구현할 수 있고, 단하나의 시점에서 하나 이상의 데이터베이스에 액세스할 수 없는 경우, 다른 시점에서 액세스될 수 있다. 따라서, 트랜잭션이 문제의 자원을 액세스할 때, 어떤 데이터베이스가 그 자원에 액세스하는지를 바람직하게 지시하고, 문제의 자원이 속하는 각각의 데이터베이스에 대한 하나의 LCB(또는 SLCB)가 될 것이며, LCB(또는 SLCB)는 바람직하게는 문제의 데이터베이스가 해당하는 것을 명확하게 식별할 수 있어야 한다. 이것은 데이터베이스 필드(470)용이다.This data structure 460 typically includes a lock ID field 462 that will contain a copy of the resource identifier for other identification of the locked resource or part of the resource in question. The mode field 464 represents the most restrictive access mode of all locks granted for the database resource represented by this LCB. The allowed request bit map field 466 and the pending request bit map field 468 each contain a bit map of sufficient size (e.g., 64 bits or 128 bits), so that the maximum number of concurrent transactions (e.g., Or sub-database level). Each transaction is assigned to one of the bitmap transaction identifiers. The allowed bit map 466 includes an aggregate bit for each active transaction that granted the lock resource indicated by the LCB (or SLCB) 460. Similarly, the hold request bit map 468 includes an aggregate bit for each active transaction that indicates a hold lock request (or access request) on the resource by the LCB 460. The database field 470 refers to a DBCB representing a database for a resource corresponding to the LCB 460. In this embodiment, as in other embodiments, there is only one physical copy of a given record or object, but the system can be implemented such that the record can be accessed from more than one database, and at one point in time If one or more databases are inaccessible, they can be accessed at different times. Thus, when a transaction accesses a resource in question, it will preferably indicate which database accesses that resource, and will be one LCB (or SLCB) for each database to which the resource in question belongs, and the LCB (or SLCB). ) Should preferably be able to clearly identify the database in question. This is for database field 470.

다음 레벨 LCB(472)에 관하여, 이러한 필드는 높은 계층 레벨 SLCB들의 참조에 관하여 도 4 및 도 6에 도시된 것과 동일한 방법으로 다음 레벨 LCB를 참조한다. 필드(474)는 추가적으로 필드들을 LCB/SLCB(460)에 포함할 수 있다는 것을 나타낸다. 예컨대, 미국 특허 제5,983,225의 도 2의 요소(172, 173)에 도시된 바와같은 판독 및 기록 파라메터 비트 맵들은 LCB(460)에 의해 나타내는 데이터베이스 자원 상에서 허락된 판독 및 기록 파라메터로 되는 액세스 모드를 나타내기 위해서 이용될 수 있다. 추가적으로, 다른 필드들은 LCB(460)의 영역(474)에 포함될 수 있다. 다음 LCB 필드(476)는 다음 LCB를 나타내는데 이용될 수 있고, 도 2의 필드 (176)에 해당할 수 있다. 또한, 이 데이터베이스 필드(470) 및 다음 레벨 LCB (472)는 데이터베이스 필드(477)와 비슷한 방법으로 구현될 수 있고, 그 다음 레벨 LCB 필드(178)는 도 2에 관하여 구현될 수 있다. LCB 또는 SLCB(460)의 대안의 구현은 LCB 또는 SLCB를 이용하는 앞선 도면 중 하나로 대체될 수 있으며, 이것은 그 실시예에 바람직하게 이용되는 LRB들을 제거할 수 있다.With respect to the next level LCB 472, this field refers to the next level LCB in the same way as shown in Figs. 4 and 6 with reference to higher hierarchical level SLCBs. Field 474 further indicates that fields may be included in LCB / SLCB 460. For example, the read and write parameter bit maps, as shown in element 172, 173 of FIG. 2 of US Pat. No. 5,983,225, indicate an access mode that becomes the allowed read and write parameters on the database resource represented by LCB 460. Can be used to wager. In addition, other fields may be included in region 474 of LCB 460. The next LCB field 476 may be used to indicate the next LCB and may correspond to field 176 of FIG. 2. In addition, this database field 470 and next level LCB 472 may be implemented in a manner similar to database field 477, and the next level LCB field 178 may be implemented with respect to FIG. An alternative implementation of LCB or SLCB 460 may be replaced with one of the preceding figures using LCB or SLCB, which may eliminate LRBs that are preferably used in that embodiment.

본 발명은 트랜잭션에 관한 것으로써, 트랜잭션은 작업의 논리 단위로 고려될 수 있다. 이러한 트랜잭션은 작업을 행하는 단말기에서 사람의 설정에 기초하거나, 현존하는 컴퓨터 프로그램을 실행하거나 또는 제출하는 것을 토대로 그 프로그램의 명령을 실행할 수 있다. 보조 트랜잭션은 하나의 트랜잭션으로 작업하거나, 하나의 트랜잭션 하에서 작업하거나, 하나의 트랜잭션과 결합하여 작업하는 아이디어에 관한 것이다. 하나의 트랜잭션을 보조 단위로 분할하는 것은 보조 트랜잭션을 생성하는 것으로 고려될 수 있다. 바람직한 구현예로서, 트랜잭션은 다른 트랜잭션과 독립되고, 작업의 자발적인 단위가 될 수 있다. 다른 방식으로, 보조 트랜잭션은 비자발적이거나 비독립적인 트랜잭션이 될 수 있다. 따라서, 보조 트랜잭션은 고레벨에서 트랜잭션의 일부분으로 고려될 수 있다.The present invention relates to a transaction, where a transaction can be considered a logical unit of work. Such a transaction may execute a command of the program based on a person's setting at the terminal performing the work, or based on executing or submitting an existing computer program. A secondary transaction relates to the idea of working in one transaction, working under one transaction, or working in conjunction with one transaction. Dividing one transaction into auxiliary units may be considered to create a secondary transaction. In a preferred embodiment, a transaction is independent of other transactions and can be a voluntary unit of work. Alternatively, the secondary transaction can be an involuntary or non-independent transaction. Thus, auxiliary transactions can be considered part of a transaction at a high level.

데이터베이스는 데이터를 수집하는 과정으로 생각될 수 있다. 또한, 보조 데이터베이스도 데이터를 수집하는 과정이지만, 보조 데이터베이스는 일반적으로 동적으로 작성되어 비상주 엔티티가 되도록 고려될 수 있다. 바람직한 실시예에 있어서, 그 보조 데이터베이스는 그 작성한 트랜잭션이 살아있는 동안 및 보조 데이터베이스를 작성한 엔티티가 존재하지 않는 경우에만 살아있도록 구현될 수 있으며, 그 보조 데이터베이스도 또한 존재하지 않을 수 있다. 이 보조 데이터베이스는 데이터의 부분 집합 주변에 장벽 또는 라인을 설치한 제어 영역과 관련되는 것으로 고려될 수 있다. 이 보조 데이터베이스는 또한 가상 데이터베이스로 고려될 수 있다. 여기서, 데이터베이스란 보조 데이터베이스 또는 가상 데이터베이스를 참조하는데 이용될 수 있다. 이 보조 데이터베이스는 형체가 없이 감각상에서 가상적으로 고려될 수 있다. 본 발명을 구현하는 것에 의해 보조 데이터베이스의 데이터를 각각 물리적으로 복사할 필요가 없다. 따라서, 글로벌 데이터베이스에 속하는 데이터를 한번 복사할 수 있는 동시에, 그 데이터를 각각 물리적으로 복사할 필요없이 글로벌 데이터베이스 제어 블록(192)에 해당하는 하나 이상의 보조 데이터베이스에 속할 수 있다.A database can be thought of as a process of collecting data. In addition, the secondary database is also a process of collecting data, but the secondary database can generally be considered to be dynamically created and non-resident entity. In a preferred embodiment, the secondary database can be implemented to live while the transaction it created is live and only if the entity that created the secondary database does not exist, and the secondary database may also not exist. This secondary database may be considered to be associated with a control area that has a barrier or line installed around a subset of the data. This secondary database can also be considered a virtual database. Here, the database may be used to refer to a secondary database or a virtual database. This auxiliary database can be considered virtually in the sense without shape. By implementing the present invention, there is no need to physically copy the data of the secondary databases individually. Thus, data belonging to the global database can be copied once, and at the same time, it can belong to one or more secondary databases corresponding to the global database control block 192 without having to physically copy the data.

이 데이터는 바람직하게는 도 1의 데이터베이스와 같은 글로벌 데이터베이스에 저장될 수 있다. 글로벌 데이터베이스(192)는 DBMS의 잠금 관리자를 관리하고 동작시키는 프로세스 동안에 이용되는 데이터베이스 제어 블록으로써 바람직하게 구현된다. 그 데이터베이스에 실제로 저장되는 데이터를 얻기 위해서, 글로벌 데이터베이스(192) 및 기타 DBCB, DB1, DB2, .. DBn은 그 소정의 데이터를 얻기 위한 엔트리 포인트로서 직접 이용되지 않고, 그 데이터는 바람직하게는 이러한 데이터 구조에 저장되지 않는다. 본 발명의 실시예에 있어서, 바람직하게는 데이터를 취득하기 위하여(데이터에 액세스하는데 이용되는 잠금 정보를 얻기 위해서) LCB 및 SLCB를 통하여 진행하는 것이 좋다. 레코드 ID("RID")가 있고, RID에 해당하는 특정 레코드에 액세스하길 원하는 경우에, 그 레코드로의 액세스는 소정의 데이터베이스 또는 보조 데이터베이스에 있을 것이다. 기본적인 방법으로서, 예컨대, 도 2 내지 도 10에 도시된 데이터 구조에 관하여, 해시 테이블은 발견했을 때 LCB들 또는 특정 RID에 대응하는 LCB의 빈 체인을 가르키는 RID용 엔트리를 얻는데 이용된다. 다른 RID에 속하는 LCB들은 무시될 수 있다. 보조 데이터베이스들이 관심이 없거나, 글로벌 데이터베이스의 레벨에 있는 경우, 해시 테이블을 통하여 발견되는 LCB에 해당하는 LRB들은 어떠한 잠금 충돌이 있는 경우 및 그 잠금 요청이 허락될 수 있는 경우를 알기 위하여 검사된다. 그러한 경우에, 그 요청된 잠금에 해당하는 LRB는 허락된 LRB들의 체인으로 유도될 것이고, 데이터의 액세스는 허락될 것이다. 이 때, 널리 알려져 있지만 도시되지 않았고 시스템의 다른 구성 부품으로 진행할 수 있으며, 실제 데이터를 취득하기 위해 레코드를 불러올 디스크 및 물리적인 어드레스로 액세스할 수 있는 버퍼 관리자 또는 기타 항목으로 참조될 수 있다. 내포 데이터베이스 또는 보조 데이터베이스들이 존재하는 경우에, 데이터베이스 제어 블록들은 데이터의 액세스 허가를 취득하는데 이용된다. 그 데이터 제어 블록들은 바람직하게는 그 데이터를 직접 액세스하는데에는 이용되지 않는다. 전술한 바와 같이, 데이터를 취득하기 위해서, 해시 테이블을 이용하여 전술한 바와 같이 해시 테이블이 행오프(hang off)하는 대응하는 LCB들을 찾는다. 문의시 RID용 엔트리가 취득되고, 문의시 RID용 LCB를 찾기 위하여 도면의 오른쪽으로 이동한다. 데이터 취득 방법을 보기 위해서 도 4가 참조된다. 도 4에는 제1 레벨 LCB(160-1 내지 160-2)가 있다. 도 4의 해시 레벨(152)로부터, 참조(154-1)는 LCB(160-1)로 유도된다. LCB(160-1)는 글로벌 데이터베이스 DBCB(192)를 참조한다. 데이터의 일부분이 데이터베이스(2)(예컨대, DB2)에 넣어지거나, 질의시 트랜잭션이 데이터베이스(2)의 문맥에서 실행중인 경우에, 정확한 자원에 대한 SLCB를 찾을 필요가 있다. 제1 레벨 LCB(160-1)로부터 제2 레벨 LCB(164-1)로 이동할 필요가 있다. SLCB (164-1)는 관심있는 데이터베이스가 아닌 DB1을 참조한다. 따라서, LCB/SLCB 계층을 LCB들의 제1 레벨로부터 제3 레벨까지 지속하면, SLCB(164-2)가 DB2를 참조하고, DB2에 관심이 있기 때문에, 정확한 LCB 레벨에 도달되는 것을 알 수 있다. 잠금 관리자는 SLCB(164-2)에서 어떤 잠금이 이러한 데이터베이스 및 이러한 자원에 나타나는지를 검사한다. 새로운 잠금 요청이 이미 거기에 있는 어떤 것과 호환성이 있는 경우에, 그 잠금 요청은 허락된다. 그 잠금 요청이 허락될 때, 그 잠금은 데이터 상에서 취득되지만, 그 데이터 자체가 액세스되어야 한다. 그 데이터를 액세스하기 위해서,그 DBCB는 바람직한 실시예에는 이용되지 않는다. 그 데이터베이스 제어 블록은 바람직하게는 동시성 제어에 이용되고, 잠금 관리자에 의해 이용되지만, 바람직하게는 데이터를 불러서 밖으로 내보내는 그 시스템 내의 버퍼 관리자 또는 일부의 다른 메커니즘에 의해 이용되지는 않는다. 바람직한 실시예에 있어서, 데이터베이스 제어 블록은 단지 제어 블록이고, 데이터를 포함하지 않고, 제어 정보를 포함한다. 그래서, 그 잠금이 허락될 때, 그 시스템은 특정 트랜잭션이 특정 RID에 칭호를 주는 표시를 제공한다. 종래의 기술 및 데이터베이스 구현에 따르면, 예컨대, 데이터로의 잠금이 허락되는 표시가 있으며, RID에 의해 식별되는 데이터를 취득하기 위해서 버퍼 관리자 또는 기타 엔티티를 이용할 수 있다. 그 버퍼 관리자는 바람직하게는 필요없거나, 데이터를 취득하가 위하여 DBCB들을 이용한다. 데이터를 취득하는 것은 소정의 데이터가 잔류하고 있는 디스크 상의 물리적인 액세스 경로의 문제이다.This data may preferably be stored in a global database such as the database of FIG. 1. The global database 192 is preferably implemented as a database control block used during the process of managing and operating the lock manager of the DBMS. In order to obtain the data actually stored in the database, the global database 192 and other DBCBs, DB1, DB2, .. DBn are not directly used as entry points for obtaining the predetermined data, and the data is preferably such It is not stored in the data structure. In an embodiment of the present invention, it is preferable to proceed through the LCB and SLCB, preferably to obtain the data (to obtain the lock information used to access the data). If you have a record ID (“RID”) and you want to access a particular record that corresponds to the RID, access to that record will be in a given database or secondary database. As a basic method, for example, with respect to the data structure shown in Figs. 2-10, a hash table is used to obtain an entry for the RID which, when found, points to an empty chain of LCBs or LCBs corresponding to a particular RID. LCBs belonging to other RIDs can be ignored. If the secondary databases are not interested or are at the level of the global database, the LRBs corresponding to the LCB found through the hash table are checked to see if there are any lock conflicts and if the lock request can be granted. In such a case, the LRB corresponding to the requested lock will be derived into the chain of allowed LRBs, and access to the data will be allowed. At this time, it is well known but not shown and can proceed to other components of the system, and can be referred to as a buffer manager or other item that can be accessed by the disk and physical address from which records are to be retrieved to obtain actual data. If there are embedded or secondary databases, database control blocks are used to obtain access permission of the data. The data control blocks are preferably not used to directly access the data. As mentioned above, to obtain data, the hash table is used to find the corresponding LCBs to which the hash table hangs off as described above. An entry for the RID is obtained at the time of inquiry and moves to the right side of the figure to find the LCB for the RID at the time of inquiry. Reference is made to FIG. 4 to see the data acquisition method. There are first level LCBs 160-1 through 160-2 in FIG. From hash level 152 of FIG. 4, reference 154-1 is directed to LCB 160-1. LCB 160-1 refers to global database DBCB 192. If a portion of the data is put in database 2 (e.g. DB2), or if a transaction is running in the context of database 2 at query time, then it is necessary to find the SLCB for the correct resource. It is necessary to move from the first level LCB 160-1 to the second level LCB 164-1. SLCB 164-1 references DB1, not the database of interest. Thus, if the LCB / SLCB layer continues from the first level to the third level of LCBs, it can be seen that the SLCB 164-2 refers to DB2 and is at the correct LCB level since it is interested in DB2. The lock manager checks in SLCB 164-2 which locks appear in these databases and these resources. If a new lock request is compatible with something already there, the lock request is granted. When the lock request is granted, the lock is acquired on the data, but the data itself must be accessed. In order to access that data, the DBCB is not used in the preferred embodiment. The database control block is preferably used for concurrency control and is used by the lock manager, but preferably not by a buffer manager or some other mechanism in the system that retrieves data out of it. In a preferred embodiment, the database control block is just a control block, does not contain data, and contains control information. Thus, when the lock is granted, the system provides an indication that a particular transaction refers to a particular RID. According to the prior art and database implementations, for example, there is an indication that locking to data is allowed, and a buffer manager or other entity can be used to obtain data identified by the RID. The buffer manager preferably does not need or uses DBCBs to obtain data. Acquiring data is a matter of the physical access path on the disk where certain data remains.

대안이 실시예가 하나 이상의 데이터 사본의 이용을 계획하더라도, 바람직한 실시예에서는 단 하나의 데이터 사본만이 있다. 원하는 어떤 것의 레코드 또는 객체는 하나의 사본으로서 존재한다. 디스크 상에는 물리 어드레스들이 있고, 버퍼 관리자는 RID를 제공한 그 물리 어드레스를 나타내며, 그 데이터가 속하는 보조 데이터베이스가 어떤 것이고, 어떤 경우에 그 물리 어드레스가 동일한지는 그 버퍼 관리자에게는 중요하지 않다.Although alternatives plan the use of more than one copy of data, in the preferred embodiment there is only one copy of data. The record or object of anything you want exists as a copy. There are physical addresses on the disk, the buffer manager indicates the physical address that provided the RID, and what auxiliary database the data belongs to and in which case the physical address is the same is not important to the buffer manager.

SLCB 및 LCB들은 DBCB에 참조 또는 포인터를 포함하여 도시되었다. 주목할 점은 대안의 실시예에서는 SLCB가 특정 데이터베이스 또는 보조 데이터베이스에 속하는 것을 지시하는 숫자 또는 식별이 있는 LCB 또는 SLCB 내에 필드를 포함하여 이러한 참조 또는 포인터를 제거할 수 있다. LCB 또는 SLCB를 참조하여 다르게 구현할 수 있다.SLCBs and LCBs are shown including a reference or pointer to a DBCB. It should be noted that in alternative embodiments, such references or pointers may be removed by including fields within the LCB or SLCB with numbers or identifications indicating that the SLCB belongs to a particular database or secondary database. Other implementations may be made with reference to LCB or SLCB.

본 발명의 보조 데이터베이스를 구현하는데 이용되는 데이터 구조는 잠금과 같이 널리 공지된 동시성 제어 기법으로 순환을 시작한다. 순환은 소정의 원리들을 다시 적용하고, 이러한 특별한 문맥에서, 데이터 항목들의 광범위한 수집, 예컨대 워드 프로세싱 또는 공학 설계 또는 CAM/CAM 설계 문서 또는 구조를 저장하는 글로벌 데이터베이스를 기동하는 것으로 행한다. 그 동시성 제어는 한 사람 또는 트랜잭션이 다른 사람이 작업하고 있는 데이터를 파손 또는 부적합하게 만드는 것을 잠그는 것에 의해 수행된다. 본 발명에 따른 원리는 미니 데이터베이스로서 고려될 수 있는 내포 데이터베이스 또는 보조 데이터베이스를 작성하여, 글로벌 데이터베이스에 대하여 행해지는 보조 데이터베이스에 대한 동일한 기본 개념 및 잠금을 수행하는 것이다. 따라서, 본 발명은 글로벌 데이터베이스의 원리를 보조 데이터베이스의 가상적인 수집에 적용한다. 따라서, 본 발명은 반복 동시성 제어의 원리를 협동의 문제에 적용하며, 이것에 의해 가상 데이터베이스 또는 가상 샌드박스 (sandbox) 환경을 생성할 수 있다. 이러한 가상 환경 또는 보조 데이터베이스에대하여, 본 발명은 통상적인 동시성 제어를 할 수 있으며, 협동하길 원하는 2 이상의 유저사이에 상호 작용의 임의적으로 복잡한 패턴의 설정이 행할 수 있다.The data structures used to implement the secondary database of the present invention begin to cycle with well known concurrency control techniques such as locking. Cycling again applies certain principles, and in this particular context is done by launching a global database that stores a wide collection of data items, such as word processing or engineering design or CAM / CAM design documents or structures. The concurrency control is performed by locking one person or a transaction from corrupting or making inappropriate the data the other person is working on. The principle according to the invention is to create a nested or secondary database, which can be considered as a mini database, to carry out the same basic concepts and locks on the secondary database done against the global database. Thus, the present invention applies the principles of the global database to the virtual collection of secondary databases. Thus, the present invention applies the principle of iterative concurrency control to the problem of collaboration, thereby creating a virtual database or virtual sandbox environment. For such a virtual environment or ancillary database, the present invention allows for normal concurrency control, and the setting up of arbitrarily complex patterns of interaction between two or more users who wish to cooperate.

데이터의 수정을 취소하거나 자발 특성에 관한 데이터의 이전 상태로 복귀하기를 원하는 경우, 본 발명은 트랜잭션의 범위하에서 데이터마다 행하여지는 모든것의 로그를 유지하기 위하여 구현될 수 있다. 그 로그의 내용은 수정되는 어떤 항목을 전방 복구 및 후방 복구할 수 있다. 이것은 복구력으로써 알려져 있으며, 널리 알려진 구현 기술이다. 그러나, 복수의 라이터 사이에 협조하는 대부분의 기법들은 트랜잭션들을 복수의 보다 작은 트랜잭션으로 분할함으로써 트랜잭션의 자발성을 희생할 것이다. 이러한 기법으로 널리 알려진 예들은 오픈 내포 트랜잭션 (open nasted transaction), 소위 세가(saga)를 포함한다. 이것은 이것보다 훨씬 적은 원자 트랜잭션 내에서 복구할 수 있는 반면, 그 복구력은 유저가 보기를 원함으로써 트랜잭션을 구성하는 매우 커다란 작업의 논리 단위에 대하여 손상된다. 이러한 이유때문에, 애플리케이션 개발자에 의해 작성되어야 할 트랜잭션인 보상 트랜잭션을 도입할 필요가 있다. 즉, 이것은 복구하는데 필수적인 기법이다.If one wishes to cancel the modification of the data or to return to the previous state of the data regarding the spontaneous nature, the present invention can be implemented to keep a log of everything that is done per data within the scope of the transaction. The contents of the log can forward and backward recover any item that is modified. This is known as resilience and is a well known implementation technique. However, most techniques for cooperating between multiple writers will sacrifice the spontaneity of a transaction by dividing the transactions into a plurality of smaller transactions. Examples well known for this technique include open nasted transactions, so-called saga. It can recover in much less atomic transactions than this, while its resilience is compromised for the logical unit of very large work that constitutes a transaction as the user wants to see it. For this reason, you need to introduce a reward transaction, which is a transaction that must be written by the application developer. In other words, this is an essential technique for recovery.

이것은 내포 데이터베이스의 경우와 반대이며, 그 복구력은 손상되지 않고, 보상 트랜잭션의 사용은 불필요하다. 더욱더, 널리 공지된 기술을 이용하여 내포 데이터베이스의 면전에 복구력을 구현할 수 있으며, 이러한 용도로 새로운 알고리즘, 데이터 구조, 또는 기법들을 개발할 필요가 없다. 표준 기술에 의해 이것을 제공함으로써 결합된 내포 데이터베이스의 모든 레벨에서 복구력을 유지하는 것은 협동 작업의 문제가 있는 다른 작업에 비하여 본 발명의 장점이다.This is the opposite of the case of nested databases, whose resilience is not compromised and the use of compensating transactions is unnecessary. Moreover, well-known techniques can be used to implement resilience in the presence of embedded databases, and there is no need to develop new algorithms, data structures, or techniques for this purpose. Maintaining resilience at all levels of the combined nested database by providing this by standard techniques is an advantage of the present invention over other tasks that have the problem of collaborative tasks.

본 발명의 양호한 실시예에 있어서, 보조 데이터베이스를 생성 또는 개시하기 위하여, 바람직하게는 질의시 객체 또는 보조 데이터베이스 상의 잠금을 기록하는 것이 좋다. 그 트랜잭션은 특정 객체들을 동적으로 데려오는 제어의 범위를 설정하고, 질의시 이러한 제어 범위의 성질을 토대로 그 객체들의 조작은 가능하다.제어의 기록 범위에 따라, 전체 기록 범위 또는 그 범위의 일부분을 수정할 수 있다. 기록 잠금(write lock)은 데이터의 기록, 삭제, 삽입 및 수정을 허용하고, 양호한 실시예에 따라, 보조 데이터베이스 생성을 사전에 요청한다. 이 보조 데이터베이스는 기록 잠금과 반대로 데이터베이스 잠금을 생성할 수 있다. 네가 데이터베이스 잠금을 행하면, 기록 잠금이 가능한 모든 것을 행하는 것이 불가능하고, 데이터베이스 잠금은 실질적으로 어떤 권리를 포기하기 위하여 기록 잠금을 행하는 엔티티에 기인할 수 있다. 일부의 권리들이 포기되는 반면에, 그 권리들을 포기하고 보조 데이터베이스를 생성하는 것의 이점은 동시성 제어의 개별적인 상황을 발생하는 것인데, 그 이유는 보조 데이터베이스의 오너가 기꺼이 보조 데이터베이스의 객체를 다른 사람 또는 엔티티와 공유하기 때문이다.In a preferred embodiment of the present invention, in order to create or initiate a secondary database, it is preferable to record a lock on the object or secondary database, preferably at query time. The transaction establishes the scope of control that brings certain objects dynamically, and the manipulation of those objects is possible based on the nature of the scope of the control at query time. Can be modified. Write locks allow the writing, deletion, insertion, and modification of data and, in accordance with preferred embodiments, request the creation of a secondary database in advance. This secondary database can generate a database lock as opposed to a write lock. If you do a database lock, it is impossible to do everything possible with a write lock, and the database lock can be attributed to the entity that holds the write lock to actually give up some rights. While some rights are waived, the advantage of relinquishing those rights and creating a secondary database is to create a separate situation of concurrency control, because the owner of the secondary database is willing to take objects of the secondary database to another person or entity. Because I share with.

특정 트랜잭션에 관한 잠금 관리자에 의해 그 트랜잭션은 특정 데이터베이스의 범위 내에서 그것의 생을 살 수 있다. 따라서, 본 발명은 다른 범위를 갖는 트랜잭션 또는 보조 데이터베이스를 인식하는 순환 알고리즘을 이용하기 위하여 구현될 수 있다. 본 발명은 시스템을 보다 강력하고 부가적인 특징들을 갖도록 하기 위해서 미국 특허 제5,983,225호의 기술에 따라 구현되더라도, 미국 특허 제5, 983,225호에 기술된 파라메터로된 관리 시스템과 다르다. 본 발명의 내포 또는 내포된 데이터베이스 및 보조 데이터베이스의 이용에 의해 데이터의 복수의 라이터들은 협조할 수 있다.The lock manager for a particular transaction allows that transaction to live its life within the scope of a particular database. Thus, the present invention can be implemented to use a recursive algorithm that recognizes transactions or auxiliary databases with different scopes. The present invention differs from the parameterized management system described in US Pat. No. 5,983,225, although implemented according to the technique of US Pat. No. 5,983,225 to make the system more powerful and additional features. The use of the nested or nested database and ancillary database of the present invention can cooperate with multiple writers of data.

다시 도 15를 참조하면, 새로운 보조 데이터베이스 및 빈 보조 데이터베이스를 생성하기 위한 흐름도가 도시된다. 도 15의 암시 문맥은 데이터베이스에서 실행하는 하나의 트랜잭션 또는 글로벌 데이터베이스 내의 일부의 다른 보조 데이터베이스가 있고, 이러한 트랜잭션의 제어 상태에 있는 오너 또는 사람은 새로운 데이터베이스를 생성하길 원한다. 도 15에 있어서, 개시 후에, 단계(482)에서는 새로운 DBCB를 생성한다. 이 데이터베이스 제어 블록은 막 생성되는 새로운 보조 데이터베이스가 존재하는 제어점 또는 참조점을 갖도록 생성된다. 앞서 설명된 바와 같이, 양호한 실시예에 있어서, 보조 데이터베이스에 대한 새로운 데이터 사본을 생성할 필요가 없지만, 원하는 경우에는 사본을 생성할 수 있다. 단계(484, 486, 488)들은 존재할 수 있는 다른 데이터 구조로 생성된 DBCB에 관한 것이다. 단계(484)에서는 그 DBCB의 Own TX 필드가 생성 또는 소유 트랜잭션을 참조로 만들어진다. 이러한 단계는 그 생성 트랜잭션과 새로운 DBCB 사이의 관계를 명확하게 하기 위해서 수행된다. 각 흐름도의 모든 단계들은 필수적인 것이 아니라, 이용된 구현에 따라, 특정 단계들이 바람직한 경우 또는 그 명명된 데이터 구조 또는 필드들을 사용하지 않는 경우에 생략될 수 있다. 다음에, 단계(486)에서는 DBCB의 적합한 슈퍼 데이터베이스를 참조하여 DBCB의 슈퍼 데이터베이스 필드를 만든다. 이것은 시스템을 나타내거나, 데이터베이스의 일부가 새로운 보조 데이터베이스인 DBCB 데이터 구조를 명확하게 하기 위해서 수행된다. 단계(488)에서는 DBCB 데이터 구조에서 다음 DB 필드 및 이전 DB 필드에 기록함으로써, 만약 있다면, 시블링 데이터베이스( sibling database)를 참조한다. 이러한 시블링 데이터베이스는 동일한 생성 트랜잭션에 의해 이전에 생성된 다른 보조 데이터베이스가 될 수 있으며, 만약 있다면, 다른 보조 데이터베이스와의 그러한 관계는 정의되거나 생성될 수 있다.Referring again to FIG. 15, a flowchart for creating a new secondary database and an empty secondary database is shown. The suggestive context of FIG. 15 is one transaction running in a database or some other secondary database in a global database, and the owner or person in control of this transaction wants to create a new database. In FIG. 15, after initiation, step 482 creates a new DBCB. This database control block is created to have a control point or reference point at which a new secondary database is just created. As described above, in the preferred embodiment, there is no need to create a new copy of the data for the secondary database, but a copy can be made if desired. Steps 484, 486, and 488 relate to the DBCB created with other data structures that may exist. In step 484, the Own TX field of the DBCB is made with reference to the created or owned transaction. This step is performed to clarify the relationship between the generated transaction and the new DBCB. Not all steps of each flowchart are essential, but may be omitted if certain steps are desired or if they do not use their named data structures or fields, depending on the implementation used. Next, step 486 creates a super database field of the DBCB by referring to the appropriate super database of the DBCB. This is done to represent the system, or to clarify the DBCB data structure where some of the databases are new secondary databases. Step 488 refers to the sibling database, if any, by writing to the next DB field and the previous DB field in the DBCB data structure. This sibling database may be another secondary database previously created by the same creation transaction, and if so, such a relationship with another secondary database may be defined or created.

이후, 도 15에 있어서, 단계(490)에서는 이러한 DBCB가 그 생성 트랜잭션의 TCB의 Sub DB 필드에 의해 참조되도록 적당한 정보를 그 생성 트랜잭션의 TCB에 기록하는 것이 수행된다. 이러한 단계에서는 슈퍼 데이터베이스가 그 자차에 갖고 있는 보조 데이터베이스의 집합에 새로운 데이터베이스를 포함한다. 최종적으로, 단계(492)에서는 LCB들에 대한 새로운 검색 테이블이 할당되고, 이러한 새로운 검색 테이블은 이러한 DBCB로부터 참조된다. 이러한 단계(492)가 모든 실시예에 대하여 수행되는 것이 아니라, 도 11의 데이터 구조 및/또는 도 12의 데이터 구조에 대하여 바람직하다는 것을 주목해야 한다. 도 11 및 도 12의 실시예에 있어서, 바람직하게는 각각의 DBCB는 그것의 도메인 또는 보조 데이터베이스 내에 있는 RID들을 할당하기 위한 엔트리 포인트로써 이용되는 자체의 해시 테이블, 어레이 또는 다른 검색 구조를 갖는 것이 좋다. 그 다음에, 도 15의 프로세스는 종료한다.Then, in Fig. 15, in step 490, the appropriate information is recorded in the TCB of the generating transaction so that such DBCB is referred to by the Sub DB field of the TCB of the generating transaction. At this stage, the super database includes the new database in the set of secondary databases it has in its vehicle. Finally, at 492, a new lookup table for the LCBs is allocated, and this new lookup table is referenced from this DBCB. Note that this step 492 is not performed for all embodiments, but is preferred for the data structure of FIG. 11 and / or the data structure of FIG. 12. In the embodiment of Figures 11 and 12, each DBCB preferably has its own hash table, array or other lookup structure that is used as an entry point for assigning RIDs in its domain or secondary database. . The process of FIG. 15 then ends.

도 16은 그 보조 데이터베이스를 파퓰레이트(populate)하기 위하여 RID를 보조 데이터베이스로 데려가는 프로세스를 도시한다. 도 15에 생성되어 있는 보조 데이터베이스는 초기 생성시에 비워질 것이고, 도 16은 문제의 보조 데이터베이스에서 실행할 미래의 트랜잭션에 객체 또는 데이터 항목을 이용할 수 있도록 보조 데이터베이스에서 객체 또는 데이터 항목이 실행되는 방법을 도시한다. 도 16에 있어서, 개시 후에, 단계(500)에서는 문제의 동작이 유효한지를 판정한다. 이러한 단계는 바람직한 실시예에 있어서, 어떤 객체가 보조 데이터베이스로 이동하지 않고 특정 상태에 있어야 하기 때문에 수행된다. 예컨대, 생성되어 보조 데이터베이스를 소유하는 트랜잭션은 이러한 시점에서 그 보조 데이터베이스로 데려가길 원하는 객체에 소유되도록 참조된다. 다른 질의 또는 테스트는 슈퍼 데이터베이스가 글로벌 데이터베이스 또는 일부의 다른 보조 데이터베이스에 있도록 발생하는지 여부를, 보조 데이터베이스의 슈퍼 데이터베이스에 나타날 때에만 하나의 객체를 보조 데이터베이스로 풀(pull)하도록 수행될 수 있다. 따라서, 바람직한 실시예에 있어서, 데이터베이스 계층에서 직접적인 슈퍼 데이터베이스로부터만 하나의 객체를 풀할 수 있다. 그 동작이 무효로 판정되는 경우, 예컨대, 전술한 2개의 상태가 충족되지 않기 때문에, 도 16의 프로세스는 종료한다.16 shows a process for taking an RID to a secondary database to populate that secondary database. The secondary database created in FIG. 15 will be emptied upon initial creation, and FIG. 16 shows how the object or data item is executed in the secondary database to make the object or data item available for future transactions to execute in the secondary database in question. Illustrated. In Fig. 16, after initiation, step 500 determines whether the operation in question is valid. This step is performed in the preferred embodiment because an object must be in a particular state without moving to a secondary database. For example, a transaction that is created and owns a secondary database is referenced to be owned by the object that it wishes to take to that secondary database at this point. Another query or test may be performed to pull one object into the secondary database only when it appears in the secondary database, whether or not the super database occurs in the global database or some other secondary database. Thus, in a preferred embodiment, one object can be pulled only from a direct super database at the database layer. If the operation is determined to be invalid, for example, the two states described above are not satisfied, so the process of Fig. 16 ends.

단계(500)에서 그 동작이 유효라고 판정하는 경우, 도 16의 프로세스는 종료한다. 문제의 객체는 그 보조 데이터베이스로 가져올 수 있다. 도 16의 실시예는 도 2-4 및 도 6에 도시되는 데이터 구조 배열에 관한 것이다. 따라서, 단계(502)는 슈퍼 데이터베이스에 RID용 LCB를 위치시킨다. 이러한 단계는 바람직하게는 그 해시 테이블로 진행하고, RID를 해싱하며, 해시 테이블 엔트리 또는 참조를 얻은 다음에, 해시 테이블로부터 제1 레벨이 LCB까지 포인터 체인 또는 참조를 따라가도록 수행되는 것이 좋다. 그 LCB는 글로벌 데이터베이스에서 RID를 식별할 것이다. 현재 문제의 객체가 풀되고 있는 이러한 보조 데이터베이스가 글로벌 데이터베이스의 중간 하행성이 아니라, 글로벌 데이터베이스와 그 자체사이에 있는 전술한 일부의 다른 보조 데이터베이스를 갖는 경우에, 이러한 보조 데이터베이스의 중간 슈퍼 데이터베이스의 자원들을 식별하는 LCB가 도착할 때까지, 하나의 LCB로부터 다른 LCB까지 다음 레벨 데이터베이스 참조 또는 다음 레벨 LCB를 가로지르는 것이 바람직하다. 단계(500)에 관하여 실행된 테스트로 인하여, 그러한 LCB가 존재할 것이라는것은 알수있다.If it is determined at step 500 that the operation is valid, the process of FIG. 16 ends. The object in question can be imported into its secondary database. The embodiment of FIG. 16 relates to the data structure arrangement shown in FIGS. 2-4 and 6. Thus, step 502 locates the LCB for RID in the super database. This step is preferably performed to proceed to the hash table, hash the RID, obtain a hash table entry or reference, and then follow the pointer chain or reference from the hash table up to the LCB. The LCB will identify the RID in the global database. If the secondary database in which the object in question is currently being pooled has not some of the intermediate descendants of the global database, but has some other secondary database described above between the global database and itself, the resources of the intermediate super database of this secondary database. It is desirable to cross the next level database reference or next level LCB from one LCB to another until the LCB identifying them arrives. It can be seen that due to the tests performed on step 500, such LCB will be present.

단계(502)후에, 단계(504)에서는 이러한 데이터베이스 또는 보조 데이터베이스에서 문제의 RID에 대하여 새로운 LCB를 할당하는 것이 실행된다. 이러한 새로운 LCB는 우리가 생성한 자원을 가져오는 이러한 새로운 보조 데이터베이스에서 매우 동일한 자원을 나타낼 것이다. 단계(506)에서, 슈터 데이터베이스의 이러한 RID에대한 LCB는 새로운 LCB를 참조로 만들어진다. 마지막으로, 단계(508)에서는 새로운 LCB가 이러한 데이터베이스용 DBCB를 참조한다. 즉, 바람직하게는 새로운 LCB가 나의 데이터베이스 또는 나의 문맥 데이터베이스인 것을 나타냄으로써 데이터베이스로의 접속을 명확하게 나타낸다. 그 다음에, 도 16의 프로세스는 종료한다.After step 502, step 504 is performed to allocate a new LCB for the RID in question in this database or in a secondary database. This new LCB will represent the very same resource in this new secondary database that brings in the resources we created. In step 506, the LCB for this RID of the shooter database is made with reference to the new LCB. Finally, in step 508 the new LCB references the DBCB for this database. In other words, it clearly indicates a connection to the database, preferably by indicating that the new LCB is my database or my context database. The process of FIG. 16 then ends.

도 17은 데이터베이스 또는 보조 데이터베이스를 파퓰레이트하는 방법을 도시하는 흐름도이지만, 예컨대 도 11 및 도 12에 도시되는 데이터 구조를 갖는 변경 구현에 이용된다. 이러한 파퓰레이팅의 중요한 목적은 자원의 잠금 상태를 판정하기 위해 LCB를 생성함으로써 잠금 구조를 구현한다. 도 17의 개시 후에, 단계(510)에서는 문제의 동작이 유효한지 여부가 판정된다. 이러한 단계는 도 16의 단계와 동일한 단계이기 때문에, 이러한 단계에 대한 설명은 생략된다. 다음, 단계(512)에서는 이러한 데이터베이스용 DBCB가 위치된다. 이 때, 관심있는 글로벌 데이터베이스 또는 일부의 보조 데이터베이스 등의 데이터베이스가 알려져있다. 바람직하게는 하나의 객체로 풀링을 시도하는 데이터베이스를 나타내는 데이터베이스 제어 블록이 있다. 더욱더, 바람직하게는 소정이 데이터베이스에 대하여 DBCB를 위치시키는 방법이 좋고, 데이터베이스 제어 블록을 참조하도록 실행되는 것이 좋다. 다음, 단계(514)에서는 이러한 데이터베이스 안의 문제의 RID에 대하여 새로운 LCB(또는 SLCB)를 할당한다. 이러한 단계에서, 새로운 LCB는 새로운 객체를 데이터베이스로 가져감으로써 생성된다. 즉, 하나의 객체가 복수의 데이터베이스에 있는 경우에, 현재의 데이터베이스가 있는 만큼 객체를 나타내는 많은 CLB들을 가질 것이다. 마지막으로, 단계(516)에서는 LCB가 데이터베이스의 검색 테이블로 삽입된다. 이것은, 전술한 바와 같이 어레이 또는 테이블 등을 대안으로 이용하더라도, 레코드 ID를 해싱하고, 해시 테이블이 이용되는 것을 가정하여 해시 테이블 엔트리를 얻음으로써 수행될 수 있고, 새로운 LCB는 해시 기능을 삽입해야 하는 해시 테이블 엔트리에 삽입될 것이다. 이러한 시간에 LCB들의 빈 체인이 있는 경우에(예컨대, CLB들이 없는), LCB는 그 체인의 제1 항목으로써 삽입된다. 그 체인이 비어있지 않은 경우에, 그 LCB는, 그 엔트리가 특정 해시 테이블 또는 문제의 어레이 엔트리로부터 도달가능하게 삽입되는 동안, 제1 항목 또는 마지막 항목 또는 중간 항목과 같은 체인의 다른 항목 중 하나에 삽입될 수 있다.FIG. 17 is a flow chart illustrating a method of populating a database or an auxiliary database, but used for example for a change implementation with the data structures shown in FIGS. 11 and 12. An important purpose of this populating is to implement a lock structure by creating an LCB to determine the lock state of a resource. After initiation of FIG. 17, in step 510 it is determined whether the operation in question is valid. Since this step is the same step as that of Fig. 16, the description of this step is omitted. Next, in step 512, the DBCB for this database is located. At this time, a database such as a global database or some secondary database of interest is known. Preferably there is a database control block that represents a database attempting to pool to one object. Furthermore, preferably a method of locating the DBCB relative to the database is preferred, and may be executed to refer to a database control block. Next, step 514 assigns a new LCB (or SLCB) to the RID of the problem in this database. In this step, a new LCB is created by bringing a new object into the database. That is, if an object is in multiple databases, it will have as many CLBs as representing the object as there is a current database. Finally, in step 516 the LCB is inserted into the lookup table of the database. This can be done by hashing the record ID and obtaining a hash table entry assuming that the hash table is used, even if the array or table or the like is alternatively used as described above, and a new LCB must insert a hash function. Will be inserted into the hash table entry. If there is an empty chain of LCBs at this time (eg without CLBs), the LCB is inserted as the first item of the chain. If the chain is not empty, the LCB can be inserted into one of the first item or one of the other items in the chain, such as the last item or the middle item, while the entry is reachably inserted from the particular hash table or array entry in question. Can be inserted.

도 18은 도 2-4 및 도 6에 도시된 본 발명의 실시예에 따른 데이터 구조를 이용하는 잠금 요청 프로세싱의 전형적인 단계들을 도시하는 흐름도이다. 도 18에 있어서, 기동 후에, 단계(520)에서는 문제의 RID에 대하여 해시 테이블 슬롯을 위치시킨다. 잠금 요청은 일부의 데이터로 액세스를 요청하는 트랜잭션을 식별할 것이고, 이러한 RID가 발견될 데이터베이스를 따라 문제의 데이터의 RID 또는 레코드 ID를 식별할 것이다. 더욱더, 그 데이터가 판독 또는 기록에 대하여 바람직한지 여부와 같은 액세스 모드를 지시할 것이다. 이러한 정보는 잠금 요청을 처리할 때 잠금 관리자에 이용가능하다. 따라서, RID에 대한 해시 테이블 슬롯을 위치시키기 위해서, RID의 해싱이 있고, 해시 테이블 엔트리가 발견되며, 그 해시 테이블 엔트리의 참조는 글로벌 데이터베이스 안에 이러한 RID에 대한 LCB가 있는지 여부를 판정하기 위해서 검사된다. 단계(522)에서 RID용 LCB가 글로벌 데이터베이스에 존재하지 않는다고 판정하는 경우, 그 흐름은 단계(530)로 진행하여, LCB를 생성하고 그것을 제1 레벨 LCB 체인에 삽입한다. 단계(522)에서 RID에 대한 LCB가 그 글로벌 데이터베이스 내에 존재하지 않는다고 판정한 경우, 그 잠금 요청은 시스템과 어떤 오류가 있을 수 있기 때문에 글로벌 데이터베이스 내의 RID에 대하여 결정될 수 있고, 현존하지 않는 보조 데이터베이스 안의 데이터 항목에 대하여 잠금 요청을 생성하는 것이 불가능할 수 있다. 따라서, 잠금 관리자가 실질적으로 잠금 요청을 수신하는 경우, 이러한 잠금 요청이 데이터 구조의 배치에서 현실적으로 일치한다고 가정할 수 있다. 따라서, 글로벌 데이터베이스 내에 RID에 대한 LCB가 없으면, 바람직하게는 문제의 데이터 항목이 속하는 보조 데이터베이스도 없다. 따라서, 단계(522)에서 대답이 "NO" 이면, 글로벌 데이터베이스내에는 질의의 자원에 액세스하거나 자원에 대안 잠금 요청이 있다. 이것은 존재하지 않는 LCB를 생성하는 것과 같은 매우 단순한 상황이고, LCB가 존재하지 않음으로서, 그 데이터 항목에 관한 잠금을 갖는 다른 트랜잭션이 없기 때문에, 요청되는 잠금이 무조건 허락될 것이라는 것을 쉽게 알 수 있다. 따라서, 글로벌 데이터베이스에 관한 제1 레벨 LCB 체인에 LCB를 삽입한다. 단계(530) 다음에, 단계(532)에서는 그 요청을 허락하고, 이 허락된 요청에 대응하는 LRB를 생성한다.18 is a flow diagram illustrating exemplary steps of lock request processing using the data structure according to the embodiment of the present invention shown in FIGS. 2-4 and 6. In Figure 18, after startup, step 520 locates a hash table slot with respect to the RID in question. The lock request will identify a transaction requesting access to some data and will identify the RID or record ID of the data in question along the database where such RID will be found. Further, it will indicate an access mode, such as whether the data is desirable for reading or writing. This information is available to the lock manager when processing the lock request. Thus, to locate a hash table slot for a RID, there is a hash of the RID, a hash table entry is found, and a reference to that hash table entry is checked to determine whether there is an LCB for this RID in the global database. . If in step 522 it is determined that the LCB for RID is not present in the global database, the flow proceeds to step 530 to generate the LCB and insert it into the first level LCB chain. If in step 522 it is determined that the LCB for the RID does not exist in the global database, the lock request may be determined for the RID in the global database because there may be some error with the system, and in the non-existent secondary database It may be impossible to create a lock request for a data item. Thus, if the lock manager receives a lock request substantially, it can be assumed that this lock request is realistically matched in the arrangement of the data structure. Thus, if there is no LCB for the RID in the global database, then there is also no secondary database to which the data item in question belongs. Thus, if the answer to step 522 is "NO", then there is an alternative lock request on the resource or access to the resource of the query in the global database. This is a very simple situation, such as creating an LCB that does not exist, and since the LCB does not exist, it is easy to see that the requested lock will be granted unconditionally because there is no other transaction with a lock on that data item. Thus, insert the LCB into the first level LCB chain for the global database. Following step 530, step 532 grants the request and generates an LRB corresponding to the granted request.

대안으로, 단계(522)에서 RID에 대한 LCB가 글로벌 데이터베이스 내에 존재한다고 판정하는 경우, 단계(524)에서는 정확한 데이터베이스 또는 보조 데이터베이스가 발견될 때까지 "다음 레벨 LCB"의 다음에 오도록 수행된다. 단계(524)에서는 0 번 실행될 수 있고, 글로벌 데이터베이스 안에 자원의 요청이 있을지라도, 볼 수 있는 LCB가 원하거나 정확한 LCB라는 것을 즉시 알 수 있기 때문에, 이러한 LCB를 중지하여 또 다른 것을 처리하지 않을 수 있다. 다음, 단계(526)에서는 충돌 잠금이 존재하는지 여부를 판정한다. 이것은 이미 데이터 항목 상에 허락된 현존하는 잠금과 그 요청이 호환성이 있는지 여부를 검사함으로써 쉽게 판정된다. 단계(526)에서 충돌 잠금이 있다고 판정하는 경우, 그 요청을 대기하거나 거절하는 단계(528)로 진행한다. 그 요청된 잠금을 허락할 것인지 여부를 잠금 관리자가 이후의 어떤 시점에서 다시 고려할 수 있도록 현재의 잠금을 해제하길 희망하는 대기 기간이 될 수 있도록 시스템을 구현할 수 있다. 대안으로, 단계(528)에서는 그 요청된 잠금을 간단히 거절할 수 있고, 이러한 문제를 취급하는 방법에 대하여 설계시에 선택하는 것은 중요한 문제이다. 그 요청을 중간에 거절하는 것은 원하는 잠금으로 액세스하길 희망하는 임의의 시간을 기다리는 것을 예방한다.Alternatively, if it is determined at step 522 that the LCB for the RID exists in the global database, then step 524 is performed to follow the "next level LCB" until the correct database or secondary database is found. In step 524, it can be executed 0 times, and even if there are requests for resources in the global database, it can be immediately known that the visible LCB is the desired or correct LCB, so that it can stop and not process another. have. Next, in step 526, it is determined whether a collision lock exists. This is easily determined by checking whether the request is compatible with an existing lock already granted on the data item. If at step 526 it is determined that there is a conflict lock, the process proceeds to step 528 where the request is waited or rejected. The system can be implemented such that there is a waiting period during which the lock manager wishes to release the current lock so that the lock manager can reconsider at some later point in time whether to grant the requested lock. Alternatively, step 528 may simply reject the requested lock and it is a matter of choice at design time about how to handle this problem. Rejecting the request halfway prevents you from waiting for any time you want to access the desired lock.

단계(526)에서 현존하는 충돌 블록이 없는 경우, 그 자원 또는 관련 데이터의 잠금을 적당하게 지시하기 위하여 그 요청을 허락하고 그 요청에 관한 LRB를 생성하는 단계(532)로 진행한다.If there is no existing conflicting block at step 526, then proceed to step 532 to grant the request and generate an LRB for the request to properly indicate the lock of the resource or related data.

도 19는 도 18과 같이 내포 데이터베이스의 출현시에 잠금 요청을 취급하는 방법을 도시하지만, 모든 데이터베이스 또는 보조 데이터베이스 제어 블록이 자체의 검색 테이블을 갖고 있는 도 11 및 도 12의 데이터 구조에 관한 것이다. 도 19에 있어서, 개시 후에, 질의시 데이터베이스에 대하여 LCB 검색 테이블이 위치된다. 이것은 그 잠금 요청에 의해 식별된 데이터베이스의 DBCB로부터 검색 테이블 참조에 후속하게 함으로써 수행될 수 있다. 다음, 단계(536)에 있어서, RID에 대한 해시 테이블 슬롯은 그러한 데이터 구조가 그 실시예에 대하여 존재하는 경우에 위치된다. 해시 테이블을 갖는 것을 피하는 대안으로써, 본 실시예는 LCB들을 더욱 직접적으로 기술(representation)하거나 할당하도록 구현될 수 있다. 다음의 단계 (538)에서는 RID용 LCB가 이미 존재하고 있는지를 판정한다. LCB가 존재하지 않는 경우에, 글로벌 데이터베이스 안의 자원에 대한 요청이 있는지 여부를 판정하는 단계(537)로 진행한다. LCB가 존재하는 경우에, 단계(544)로 진행한다. 그러나, 일부의 보조 데이터베이스 안의 자원에 대한 요청은 있지만, 그 자원에 대한 LDB가 그 자원의 검색 테이블에 나타나지 않으면, 우리는 트랜잭션이 문맥 데이터베이스의 범위를 벗어나서 어떤 것을 요청하고 있는 특별한 상황에 직면한다. 정상적으로, 그러한 요청은 거절될 수 있으며, 이것은 단계(539)의 NO 분기에 의해 표시된다. 그러나, 이 시스템은 이 시점에서 그 요청된 자원을 동적으로 불러서 질의시 그 보조 데이터베이스를 동적으로 성장시킬 확률이 오픈 상태로 유지되는 그러한 방법으로 프로그램될 수 있으며, 단계(539)에서는 그 보조 데이터베이스의 성장을 허용하는지 여부를 판정한다. 그러한 판정은 인간의 중재로 또는 중재없이도 이루어질 수 있다. 단계(539)의 대답이 "YES" 인 경우에, 단계(544)로 진행한다. 원하는 경우에, 도 18의 흐름도는 도 19의 단계(522)와 단계(530)사이, 단계(537)와 단계(539)에 삽입하기 위하여 수정될 수 있다. 이것에 의해 단계(537, 539)의 기능은 도 18의 프로세스에서 수행될 수 있다.FIG. 19 illustrates a method of handling a lock request upon the appearance of a nested database as in FIG. 18, but relates to the data structures of FIGS. 11 and 12 in which every database or auxiliary database control block has its own lookup table. In Figure 19, after initiation, the LCB lookup table is located relative to the database at the time of query. This can be done by following the lookup table reference from the DBCB of the database identified by the lock request. Next, in step 536, a hash table slot for the RID is located if such a data structure exists for that embodiment. As an alternative to avoiding having a hash table, this embodiment may be implemented to more directly represent or assign LCBs. In a next step 538, it is determined whether the LCB for RID already exists. If the LCB does not exist, proceed to step 537 to determine whether there is a request for a resource in the global database. If LCB is present, proceed to step 544. However, if there is a request for a resource in some secondary database, but the LDB for that resource does not appear in the resource's lookup table, we face a special situation where the transaction is requesting something outside the scope of the context database. Normally, such a request can be rejected, which is indicated by the NO branch of step 539. However, the system can be programmed in such a way that the probability of dynamically calling the requested resource at this point and dynamically growing the secondary database at query time remains open, and in step 539 Determine whether to allow growth. Such determination may be made with or without human intervention. If the answer to step 539 is "YES", then step 544 is reached. If desired, the flowchart of FIG. 18 may be modified to insert between step 522 and step 530 of FIG. 19, in steps 537 and 539. This allows the function of steps 537 and 539 to be performed in the process of FIG.

단계(538)에 있어서, RID에 대한 LCB가 이미 존재하는 경우에, 어떤 충돌 잠금이 존재하는지 여부를 판정하는 단계(540)로 진행한다. 충돌 잠금이 존재하는 경우, 그 잠금 요청은 도 18의 단계(528)에 설명된 바와 같이 대기 또는 거절된다. 충돌 잠금이 존재하지 않는 경우에, 전술한 바와 같이, 잠금 요청이 허락되어 LRB가 생성되는 단계(546)로 진행한다. 그 다음에, 도 19의 프로세스는 종료한다.In step 538, if there is already an LCB for the RID, then proceed to step 540 to determine if there is any conflict lock. If there is a conflict lock, the lock request is waited or rejected as described in step 528 of FIG. If there is no conflict lock, as described above, the lock request is granted and the process proceeds to step 546 where an LRB is created. The process of FIG. 19 then ends.

도 20은 보조 데이터베이스의 종료 동안에 수행되는 단계들을 도시하는 흐름도이다. 기동 후에, 단계(550)에서는 이러한 데이터베이스의 특정 트랜잭션 또는 보조 데이터베이스가 존재하는지 여부를 판정한다. 그 대답이 "YES"인 경우에, 이러한 프로세스를 계속하길 원하는지 여부를 묻는 단계(552)로 진행한다. 단계(552)의 판정 블록은 어떤 소정의 방법으로 수행될 수 있고, 유저가 그 보조 데이터베이스를 종료하길 원하는 경우에 그 시스템의 유저에게 문의한 후 유저에 의해 수동으로 판정될 수 있다. 대안으로, 그 보조 데이터베이스의 종료를 수락할 것인지 여부를 지시하는 자발적인 판정이 이루어질 수 있다. 이러한 데이터베이스의 트랜잭션 또는 보조 트랜잭션이 존재하기 때문에 그 보조 데이터베이스를 유지하길 원하는 경우에, 단계(552)로부터 진행하고, 이 프로세스는 문제의 데이터가 유지되길 원하면 종료한다. 단계(552)의 연속 판정은 사전에 프로그램되거나 컴퓨터 프로그램 판정이 이루어지거나, 수동으로 판정될 수 있다. 단계(554)에서 종료되길 원하는 경우에, 단계(554)는 이러한 데이터베이스의 모든 보조 데이터베이스 및 트랜잭션이종료되도록 실행된다.이러한 종료는 순환의 다른 일예인데, 그 이유는 단계(554)의 동작 실행에 의해 도 20의 흐름도가 단계(554)에서 종료되는 항목에 대하여 다시 실행되도록 하기 때문이다.20 is a flowchart showing the steps performed during the termination of the secondary database. After activation, step 550 determines whether a particular transaction or secondary database of such a database exists. If the answer is " YES ", then proceed to step 552, asking whether or not you want to continue this process. The decision block of step 552 may be performed in any desired manner and may be determined manually by the user after consulting the user of the system if the user wishes to exit the secondary database. Alternatively, a voluntary decision may be made indicating whether to accept the termination of the secondary database. If there is a transaction or secondary transaction of such a database and wishes to maintain that secondary database, it proceeds from step 552, where the process ends if the data in question is desired to be maintained. Successive determinations of step 552 may be pre-programmed, computer program decisions may be made, or may be determined manually. If it is desired to exit at step 554, step 554 is executed such that all secondary databases and transactions of this database are terminated. This termination is another example of a recursion, because the operation of step 554 This is because the flowchart of FIG. 20 is executed again for the item ending in step 554.

단계(550)에서 문제의 데이터베이스에 대하여 트랜잭션 또는 보조 데이터베이스가 없다고 판정하는 경우에, 또는 단계(554)를 수행한 후에, 단계(556)에서는 문제의 데이터베이스에 대한 모든 LCB들의 재할당을 수행한다. 단계(556)의 이러한 재할당은 이러한 LCB들에 의존하는 트랜잭션 또는 보조 데이터베이스가 없고, LRB들이 없기 때문에, 그들을 제거하거나 재할당할 수 있어(컴퓨터의 메모리로부터 제거), 안전하게 수행될 수 있다. 다음에, 단계(558)에서는 검색 테이블이 이용되는 경우, 검색 테이블을 재할당한다. 일부의 예에 있어서, 검색 테이블이 재할당되지 않을 수 있기 때문에, 단계(558)를 수행할 필요가 없다는 것에 주목해야 한다. 최종적으로, 단계(560)에서는 문제의 데이터베이스에 대하여 DBCB의 재할당을 수행하고, 단계(560)를 수행할 때, 이러한 보조 데이터베이스에 전용된 컴퓨터 메모리 안에 통상적으로 메모리 구조가 적고, 그 보조 데이터베이스는 존재하지 않을 것이다. 도 20의 프로세스는 종료한다.If at step 550 it is determined that there is no transaction or secondary database for the database in question, or after performing step 554, step 556 performs reallocation of all LCBs to the database in question. This reassignment of step 556 can be performed safely, since there are no transactions or secondary databases that depend on these LCBs, and there are no LRBs, so they can be removed or reallocated (removed from the computer's memory). Next, in step 558, if a lookup table is used, the lookup table is reallocated. Note that in some examples, step 558 need not be performed because the lookup table may not be reassigned. Finally, in step 560, the DBCB is reallocated to the database in question, and when performing step 560, there is typically less memory structure in the computer memory dedicated to this secondary database, and the secondary database is Will not exist. The process of FIG. 20 ends.

본 발명의 가능한 애플리케이션, 결과 및 특징들을 더욱 쉽게 이해하기 위해서, 본 발명이 행할 수 있는 일예가 도 21a-21d에 도시된다. 이러한 예는 문서를 공유하는 일예이지만, 본 발명은 보다 많은 애플리케이션을 갖고, 복수의 유저들 사이에 데이터를 공유하길 원하는 특정 상황에 이용될 수 있다. 더욱더, 본 발명은 복수의 유저들이 하나의 문서 상에서 동시에 작업될 수 있도록 유저들 사이에 문서의 일부분을 공유시키는데 이용될 수 있다. 예컨대, 단 하나의 스크린 또는 컴퓨터 디스플레이는 유저마다 보여주고, 그 유저가 이용할 수 있는 각각의 문서 또는 데이터 항목들은 그 스크린에 보여진다. 그러나, 이것은 단지 하나의 전형적인 구현이며, 실제로, 단 하나의 컴퓨터 스크린 상에 디스플레이되도록 질의시 데이터 항목마다 필요한 것은 아니다. 도 21a를 참조하면, 4개의 문서, 즉 문서 1(572), 문서 2(574), 문서 3(576), 및 문서 4(578)을 갖는 게일(Gail)의 컴퓨터 스크린(570)이 도시된다. 도 21a의 이러한 스크린(570)에 있어서, 게일은 기록 잠금된 문서(1, 2, 3, 4)를 갖고, 이러한 문서들의 내용을 판독 및 기록할 수 있다. 도 21a 내지 21d의 일예를 구현한 것을 도시하는 데이터 구조에 관하여 이후에 설명되겠지만, 게일은 글로벌 데이터베이스 안에 최상 레벨 트랜잭션을 갖는다.In order to more easily understand the possible applications, results and features of the present invention, one example that the present invention may perform is shown in FIGS. 21A-21D. This example is an example of sharing a document, but the present invention can be used in a particular situation with more applications and wants to share data among multiple users. Moreover, the present invention can be used to share a portion of a document among users such that a plurality of users can be simultaneously worked on one document. For example, only one screen or computer display is shown per user, and each document or data item available to that user is shown on that screen. However, this is just one typical implementation, and in fact, it is not necessary for each data item in a query to be displayed on only one computer screen. Referring to FIG. 21A, Gail's computer screen 570 with four documents, namely Document 1 572, Document 2 574, Document 3 576, and Document 4 578, is shown. . In this screen 570 of FIG. 21A, Gale has record locked documents 1, 2, 3, 4, and can read and write the contents of these documents. As will be described later with respect to a data structure illustrating an implementation of the example of FIGS. 21A-21D, Gale has a top level transaction in a global database.

도 21b에 있어서, 게일은 보조 데이터베이스를 생성하여, 논리적으로 말하자면, 이러한 보조 데이터베이스 안에 문서(2,3,4)들을 풀링한다. 이것에 의해 그 문서들이 각 문서의 위의 오른쪽 모서리에 "R/O" 로 표시된 바와 같이 오로지 판독된다.In FIG. 21B, Gail creates a secondary database, logically speaking, pooling documents (2, 3, 4) into this secondary database. This allows the documents to be read only as indicated by " R / O " in the upper right corner of each document.

도 21c에 있어서, 게일에 대한 스크린 슬롯(570)이 도시되고, 또한 이 스크린(580)에 지시된 바와 같이 브라이언이 문서2(582) 및 문서4(584) 상에서 작업할 능력을 갖는 것이 도시된다.In FIG. 21C, a screen slot 570 for Gale is shown, and also Brian has the ability to work on Document 2 582 and Document 4 584 as indicated on this screen 580. .

도 21c에 있어서, 브라이언은 게일의 보조 데이터베이스 내에서 트랜잭션을 개시하여 잠금 문서(2, 4)를 기록한다. 이제, 브라이언은 모든 이러한 문서들의 편집 능력을 가진 반면에, 게일은 브라이언이 제어하는 문서(2, 4)를 기록할 수 없고, 원하는 경우에, 그들을 판독하고 브라이언이 수행하고 있는 작업을 관찰할 수있다.In FIG. 21C, Brian initiates a transaction in Gale's secondary database to record locked documents 2 and 4. Now, Brian has the ability to edit all of these documents, while Gale can't record the documents that he controls (2, 4) and, if desired, can read them and observe what Brian is doing. have.

도 21d에 있어서, 게일의 스크린(570) 및 브라이언의 스크린(580)은 볼 수 있지만, 추가적으로, 앤은 판독 전용 문서인 문서2 (592) 및 문서3 (594)를 도시하는 스크린(590)을 갖는다. 도 21d의 시나리오에 있어서, 앤은 게일의 보조 데이터베이스에서 트랜잭션을 시작한다. 앤은 앤에 의해서만 문서(3)가 수정될 수 있는 문서(2) 상의 판독 잠금 및 문서(3) 상의 기록 잠금을 갖는다.In FIG. 21D, Gale's screen 570 and Brian's screen 580 are visible, but in addition, Anne shows a screen 590 showing Document 2 592 and Document 3 594, which are read-only documents. Have In the scenario of FIG. 21D, Ann starts a transaction at Gale's secondary database. The ann has a read lock on the document 2 and a write lock on the document 3, which can only be modified by the ann.

도 21d에 있어서, 주목할 점은 브라이언이 문서 2(582) 상에 기록 잠금을 갖는 반면에, 앤은 문서 2 상에서 판독 잠금을 갖는다는 것이다. 종래의 시스템에 있어서, 브라이언의 기록 잠금 및 앤의 판독 잠금은 정상적으로 호환될 수 있다. 앤이 브라인언의 작업을 브라우징하게 하기 위해서, 파라메터로된 잠금 또는 기타 메커니즘이 이용될 수 있다. 따라서, 본 발명의 주요 촛점, 즉, 내포 데이터베이스는 파라메터로된 잠금에 결합되어, 또 다른 호환성을 갖는 시스템을 달성하는 것이다.In FIG. 21D, it is noted that Brian has a write lock on document 2 582, while Anne has a read lock on document 2. In conventional systems, Brian's write lock and Anne's read lock can be normally compatible. In order for Anne to browse the work of Bryan, a parameterized lock or other mechanism can be used. Thus, the main focus of the present invention, namely the containment database, is coupled to parameterized locks, to achieve a system with yet another compatibility.

도 21a 및 도 21d의 일예에 존재하는 시나리오를 구현하기 위해서, 전형적인 데이터 구조는 보조 데이터베이스 및 그 데이터의 공유가 발생할 수 있는 방법을 나타내기 위해 도 22a-22d 및 23a-23d에 도시한다. 도 22a-22d는 도 21a-21d의 일예를 구현하는데 이용될 수 있는 데이터 구조의 제1 예를 도시한다. 도 22a에 있어서, 게일은 트랜잭션 제어 블록("TCB")(600)을 갖는다. 또한, 각각의 번호 160-1 내지 160-4가 붙여진 잠금 제어 블록("LCB")도 있다. 잠금 요청 블록("LRB")(162-1 내지 162-4)은 각각의 LCB들과 결합하여 그 문서의 잠금을 구현하는데 이용된다.도 22a의 각각의 LCB(160)는 글로벌 데이터베이스(192)(실질적으로 글로벌 데이터베이스 제어 블록)를 참조하기 때문에, 게일이 글로벌 데이터베이스 안에 최상의 레벨 트랜잭션을 갖는 것을 나타낸다. 게일의 최상의 레벨 트랜잭션인 TCB(600)에 대하여, 각각의 문서(1-4)에 대한 완전한 편집 능력이 있다. 이러한 문서들에 대한 LCB 및 그 자체의 데이터는 일부분이거나 글로벌 데이터베이스와 관련된다.To implement the scenario present in the examples of FIGS. 21A and 21D, a typical data structure is shown in FIGS. 22A-22D and 23A-23D to illustrate how a secondary database and the sharing of that data may occur. 22A-22D show a first example of a data structure that can be used to implement the example of FIGS. 21A-21D. In FIG. 22A, Gail has a transaction control block (“TCB”) 600. There is also a lock control block (" LCB ") numbered 160-1 to 160-4, respectively. Lock request blocks (“LRBs”) 162-1 through 162-4 are used in conjunction with respective LCBs to implement locking of the document. Each LCB 160 of FIG. 22A is a global database 192. By referencing (actually a global database control block), it indicates that Gale has the highest level transaction in the global database. For Gale's best-level transaction TCB 600, there is full editing capability for each document 1-4. The LCB and its own data for these documents are either partial or related to the global database.

도 21b에 해당하는 도 22b에 있어서, 게일은 보조 데이터베이스를 생성하고, 논리적으로 말하자면, 문서들(2, 3, 4)을 보조 데이터베이스로 이동시킨다. 보조 데이터베이스는 게일이 그녀와 협조할 다른 사람을 초청하기 위하여 생성될 수 있다. 게일이 보조 데이터베이스를 생성함으로써, 추가적인 데이터 구조가 도 22b에 도시된다. 특히, 문서들(2, 3, 4)이 그 보조 데이터베이스의 일부분이기때문에, 또한, SLCB로 언급되는 제2 레벨 LCB들은 문서들(2, 3, 4)에 대하여 생성되고, 도면 번호(164-2, 164-4, 164-1)로 나타낸다. 각각의 이러한 SLCB들이 게일의 보조 데이터베이스 제어 블록(DBCB)(602)을 참조하는 것이 보여진다. 그 문서를 그녀의 보조 데이터베이스로 이동시키지 않기 때문에, 문서 1에는 제2 레벨(LCB 또는 SLCB)이 없다. 따라서, 이러한 시점에, 문서 1은 단지 게일이 편집할 수 있는 문서이고, 다른 문서들은 단지 브라우징될 수 있다. 다른 문서들이 다른 보조 데이터베이스로 이동되도록 게일이 문서 1만을 단지 편집할 수 있는 것을 데이터 구조들이 나타내기 위해서, 게일의 보조 데이터베이스로 이동되는 문서들에 대한 LRB들의 모드 필드들은 그들의 잠금에 관하여 그 문서들과 관련된 능력을 지시하기 위해서 수정될 수 있다. 도 22b에 있어서, 게일의 보조 데이터베이스에서는 트랜잭션을 수행하지않는다. 추가적으로, 도 22b에 있어서, 게일의 TCB에 대한 문맥 데이터베이스는 글로벌 데이터베이스(192)를 남기고, 게일의 보조 데이터베이스 DBCB(602)는 게일의 보조 데이터베이스가 게일의 트랜잭션에 의해 소유되는 것을 지시하기 위하여 게일의 TCB(600)를 참조한다. 도 22c를 참조하면, 브라이언은 게일의 보조 데이터베이스 내에서 하나의 트랜잭션을 시작하고, 브라이언의 트랜잭션은 도 22의 상부 오른쪽에 브라이언의 TCB(604)에 의해 나타낸다. 이러한 특정 예에 있어서, 브라이언의 트랜잭션은 브라이언의 트랜잭션이 액세스를 허용하는 게일의 보조 데이터베이스의 문서로서 문서(2, 3, 4)만을 액세스할 수 있다. 그러나, 본 발명을 구현하는 것에 의해 브라이언이 보조 데이터베이스 내에서 하나의 트랜잭션을 시작하는 것과 같이 다른 트랜잭션 후에도 더 많은 문서를 데이터베이스에 부가함으로써 게일은 그녀의 데이터베이스를 동적으로 성장시킬 수 있다. 도 22c에 있어서, 브라이언은 문서(2, 4)상에 기록 잠금을 위치시키고, 이들 문서에 대한 모든 편집 능력을 갖는다. 따라서, 게일은 브라이언이 그 문서에 무엇을 행하는지를 알 수 있지만, 직접 브라이언의 변경 사항에 겹쳐서 쓸 수 없다. 브라이언이 문서(2, 4)상에 기록 잠금을 할 수 있는 능력은 파선 화살표로 나타내고, 브라이언의 TCB(604)로부터 문서 4에 대한 LRB(162-5)까지 참조하여, 문서 2에 대한 LRB(162-6)를 참조한다. 또한, 도 22c에 도시된 것은 게일의 보조 데이터베이스(또는 DBCB)(602)를 참조하는 브라이언의 TCB(604)이며, 이것은 브라이언의 TCB에 대한 문맥 데이터베이스가 게일의 데이터베이스인 것을 지시한다.In FIG. 22B, which corresponds to FIG. 21B, Gail creates a secondary database and, logically speaking, moves documents 2, 3, and 4 to the secondary database. A secondary database can be created to invite others to whom Gail will cooperate with her. As Gail creates a secondary database, an additional data structure is shown in FIG. 22B. In particular, since the documents 2, 3, 4 are part of its secondary database, second level LCBs, also referred to as SLCBs, are generated for the documents 2, 3, 4, and reference numerals 164-. 2, 164-4, 164-1). It is shown that each of these SLCBs references Gail's secondary database control block (DBCB) 602. Since the document is not moved to her secondary database, there is no second level (LCB or SLCB) in Document 1. Thus, at this point, document 1 is only a document that Gail can edit, and other documents can only be browsed. In order for the data structures to indicate that Gail can only edit Document 1 so that other documents are moved to another secondary database, the mode fields of the LRBs for the documents moved to Gail's secondary database are displayed in relation to their locks. Can be modified to indicate capabilities associated with the. In Figure 22B, Gale's secondary database does not perform a transaction. Additionally, in FIG. 22B, the context database for Gale's TCB leaves a global database 192, and Gale's secondary database DBCB 602 indicates that Gale's secondary database is owned by Gale's transaction. See TCB 600. Referring to FIG. 22C, Brian starts one transaction in Gale's secondary database, and Brian's transaction is represented by Brian's TCB 604 on the upper right of FIG. In this particular example, Brian's transaction can only access documents 2, 3, 4 as a document in Gail's secondary database that Brian's transaction allows access to. However, by implementing the present invention, Gail can dynamically grow her database by adding more documents to the database after another transaction, such as Brian starting one transaction in a secondary database. In Fig. 22C, Brian places a record lock on the documents 2 and 4, and has all the editing capabilities for these documents. Thus, Gail knows what Brian is doing with the document, but can't directly overwrite Brian's changes. The ability of Brian to write lock on documents 2 and 4 is indicated by dashed arrows, and from Brian's TCB 604 to LRB 162-5 for Document 4, the LRB for Document 2 ( 162-6). Also shown in FIG. 22C is Brian's TCB 604, which references Gail's secondary database (or DBCB) 602, which indicates that the context database for Brian's TCB is Gale's database.

도 21d에 시시된 배치 및 액세스 능력에 대응하는 도 22d를 참조하면, 앤은게일의 보조 데이터베이스에서 하나의 트랜잭션을 시작한다. 브라이언의 트랜잭션과 마찬가지로, 앤의 트랜잭션은, 게일이 더 많은 문서를 그녀의 보조 데이터베이스에 부가하여 그녀의 보조 데이터베이스를 동적으로 성장시키도록 선택하지 않으면, 단지 문서(2, 3, 4)만을 액세스할 수 있다. 이 때, 앤은 문서 3 상에 기록 잠금 및 문서 2 상에 판독 잠금을 갖는다. 이러한 정보는 LRB(162-7) 및 LRB(162-8)에 의해 나타낼 수 있다. 문서 2에 대한 SLCB용인 LRB(162-7)는 판독 잠금을 나타낼 것이고, 문서 3에 대한 LRB(162-8)는 기록 잠금을 나타내기 위하여 설정된 모드를 가질 것이다. 이러한 시점에서, 앤은 단지 문서 3만을 편집할 수 있지만, 브라이언이 문서 2를 만드는 중의 모든 변경 사항을 브라우징할 수 있다. 원하는 경우, 앤은 또한 문서 4를 브라우징 할 수 있고, 유사하게, 브라이언은 원하는 경우에 문서 3을 브라우징할 수 있다. LRB(162-7, 162-8)를 참조하는 것 이외에, 앤의 TCB (606)는 문맥 데이터베이스 참조에 의해 게일의 보조 데이터베이스(602)를 참조한다.Referring to FIG. 22D, which corresponds to the deployment and access capabilities illustrated in FIG. 21D, Ann starts one transaction in Gale's secondary database. Like Brian's transaction, Anne's transaction will only access documents (2, 3, 4) unless Gale chooses to add more documents to her secondary database to grow her secondary database dynamically. Can be. At this time, Anne has a write lock on document 3 and a read lock on document 2. This information can be represented by the LRB 162-7 and the LRB 162-8. LRB 162-7 for SLCB for Document 2 will indicate a read lock and LRB 162-8 for Document 3 will have a mode set to indicate a write lock. At this point, Anne can only edit Document 3, but Brian can browse all the changes that are being made to Document 2. Ann may also browse document 4 if desired, and similarly, Brian may browse document 3 if desired. In addition to referring to LRBs 162-7 and 162-8, Anne's TCB 606 references Gail's secondary database 602 by contextual database reference.

도 23a 내지 23d는 도 11에 도시된 데이터 구조를 이용하여 도 21a 내지 도 21의 예를 수행하는 대안의 구현을 도시한다. 도 21a에 대응하는 도 23a에는 문제의 4개의 문서에 대한 LCB(160-1 내지 160-4)가 있고, 각각의 LCB는 대응하는 LRB(152)를 참조한다. 게일의 TCB(650)는 LRB(162)를 참조하고, 또 게일의 TCB (650)는 그 문맥 데이터베이스가 글로벌 데이터베이스(192)라는 것을 참조 또는 지시한다.23A-23D illustrate alternative implementations of performing the example of FIGS. 21A-21 using the data structure shown in FIG. 11. In FIG. 23A, corresponding to FIG. 21A, there are LCBs 160-1 through 160-4 for the four documents in question, each LCB referring to a corresponding LRB 152. Gail's TCB 650 refers to LRB 162, and Gale's TCB 650 references or indicates that the context database is a global database 192.

도 21b에 대응하는 도 23b에 있어서, 게일은 보조 데이터베이스를 생성하고,이것에 의해, 데이터베이스 제어 블록(652)은 게일의 보조 데이터베이스에 대하여 생성된다. 게일의 보조 데이터베이스(652)는 게일의 보조 데이터베이스가 게일의 트랜잭션에 의해 소유되는 것을 지시하는 게일의 TCB(650)를 참조하고, 또 게일의 보조 데이터베이스(652)는 해시 테이블, 어레이 또는 다른 구조(654)를 참조한다. 이러한 구조(654)는 게일의 보조 데이터베이스의 일부분인 3개의 문서에 대한 SLCB(164-1, 164-2, 164-3)를 갖는다. SLCB(164)는 테이블(654)의 참조(656, 658, 660)에 의해 참조된다.In FIG. 23B corresponding to FIG. 21B, Gail creates a secondary database, whereby a database control block 652 is generated for Gale's secondary database. Gale's secondary database 652 refers to Gale's TCB 650 indicating that Gale's secondary database is owned by Gale's transaction, and Gale's secondary database 652 also provides a hash table, array or other structure ( 654). This structure 654 has SLCBs 164-1, 164-2, and 164-3 for three documents that are part of Gale's secondary database. SLCB 164 is referenced by references 656, 658, and 660 of table 654.

도 21c에 대응하는 도 23c에 있어서, 브라이언의 트랜잭션은 생기고, 게일의 보조 데이터베이스 제어 블록(652)을 참조하는 블라이언의 TCB(670)에 의해 나타내며, 브라이언의 TCB(670)의 문맥 데이터베이스 또는 트랜잭션이 게일의 보조 데이터베이스(652)라는 것을 지시한다. 브라이언은 LRB(160-5, 160-6)에 의해 각각 나타내는 문서(2, 4) 상의 잠금을 얻는다.In FIG. 23C corresponding to FIG. 21C, Brian's transaction occurs, represented by Brian's TCB 670 referring to Gale's secondary database control block 652, and is a context database or transaction of Brian's TCB 670. This is called Gale's secondary database 652. Brian obtains locks on documents 2 and 4 represented by LRBs 160-5 and 160-6, respectively.

도 21d의 배치에 해당하는 도 23d에 있어서, 앤의 트랜잭션이 발생하고, 그것의 문맥 데이터베이스로서 게일의 보조 데이터베이스를 갖는다. 이것은 게일의 DBCB(652)를 참조하는 앤의 TCB(680)를 참조하여 문맥 DB에 의해 나타낸다. 추가적으로, 앤은 문서(2,3)에 특정 권리를 갖고, 이것은 문서(2,3)에 대하여 LRB(160-7, 160-8)를 참조하는 앤의 TCB(680)에 의해 데이터 구조 내에 나타내어 진다. LRB (160-7, 160-8)는 앤이 갖고 있는 액세스의 판독 전용 또는 기록 능력을 나타내기 위하여 그들의 필드를 설정할 것이다.In FIG. 23D corresponding to the arrangement of FIG. 21D, Ann's transaction occurs and has Gale's secondary database as its context database. This is represented by the context DB with reference to Anne's TCB 680, which refers to Gale's DBCB 652. In addition, Anne has certain rights in document 2,3, which is represented in the data structure by Anne's TCB 680, which references LRBs 160-7, 160-8 for document 2,3. Lose. The LRBs 160-7 and 160-8 will set their fields to indicate the read-only or write capability of the access that Ann has.

도 21a 내지 23d에 관하여 기술된 전술한 예들은 다른 문서들의 참금 및 공유를 포함한다. 그러나, 본 발명은 하나의 파일 또는 문서 레벨을 공유하는 것에 국한되지 않고, 복수의 유저 또는 엔티티사이에 단 하나의 파일, 문서, 공학 설계 등을 공유하는데 이용될 수 있다. 본원에 개시된 내포 데이터베이스의 프레임워크 내에 단 하나의 파일, 문서 또는 기타 데이터 항목이 공유되는 구현을 달성하는 것은 잠금 세분성의 문제에 관한 것이며, 즉 잠금 데이터 구조 또는 LCB들이 나타나는 어떤 자원들에 관한 것이다. 따라서, 본 발명은 개별 워드, 문자 또는 비트들을 잠그는 극단적인 수단에 의존한다. 더욱더, 문서 처리 또는 워드 처리 환경 밖에서, 공학 도면의 다른 부분은 CAM/CAM 시스템 또는 어떤 다른 시스템 상에서 공유될 수 있다.The foregoing examples described with respect to FIGS. 21A-23D include snoozing and sharing of other documents. However, the present invention is not limited to sharing one file or document level, but can be used to share only one file, document, engineering design, etc. among a plurality of users or entities. Achieving an implementation in which only one file, document, or other data item is shared within the framework of the implied database disclosed herein relates to the issue of lock granularity, that is, to any resources in which a lock data structure or LCBs appear. Thus, the present invention relies on extreme means of locking individual words, characters or bits. Moreover, outside of a document processing or word processing environment, other portions of the engineering drawings may be shared on a CAM / CAM system or any other system.

도 24a 내지 도 24d에 나타난 예(바람직하게는, 초기의 예들)에 있어서, 브라이언의 트랜잭션 및 앤의 트랜잭션은 실제로 게일의 트랜잭션의 보조 트랜잭션이다. 따라서, 잘못된 가정은 각각의 트랜잭션, 즉 게일, 브라이언 및 앤이 게일의 최상의 레벨 트랜잭션과 동일한 세분성으로 모두 잠금될 수 있게 한다. 그러나, 대안으로써, 그 섹션 레벨에서 게일을 잠금시키기 쉽고, 동일한 시간에, 문서 또는 그래프 레벨에서 잠금되는 다른 독립적인 최상위 레벨 트랜잭션을 갖기가 쉬울 것이다. 멀티 세분성을 갖는 잠금의 개념은 알려져 있지만, 본 발명에 따르면, 멀티 세분성 잠금 및 내포 데이터베이스의 개념은 함께 이용될 수 있으며, 이들 개념은 일반적으로 서로 직교하는(예컨대, 서로 독립적인) 것으로 고려될 수 있다. 멀티 세분성 잠금에 관한 또 다른 정보는 Anfindsen 논문에 개시되어 있으며, 이 논문은 이후에 참조된다.In the example shown in FIGS. 24A-24D (preferably, initial examples), Brian's transaction and Ann's transaction are actually secondary transactions of Gale's transaction. Thus, a false assumption would allow each transaction, ie Gale, Brian, and Anne, to be locked together with the same granularity as Gale's top-level transaction. As an alternative, however, it is easy to lock the Gale at that section level, and at the same time, it will be easy to have other independent top level transactions that are locked at the document or graph level. Although the concept of locks with multiple granularity is known, in accordance with the present invention, the concepts of multiple granularity locking and nested database may be used together, and these concepts may generally be considered to be orthogonal to each other (eg, independent of one another). have. Further information on multiparticulate locking is disclosed in the Anfindsen paper, which is referred to later.

이후, 도 24a-24d의 예를 살펴보면, 도 24a는 게일 텍스트 편집기의 전형적인 스크린 이미지(710)를 도시한다. 문제의 문서의 텍스트는 섹션 1, 섹션 2, 섹션 3, 및 섹션 4로 지시된 4개의 섹션을 갖는다. 도 24a에 있어서, 게일은 그 도시된 섹션이 모든 섹션을 잠그고, 전체 문서에 대한 완벽한 편집 능력을 갖는다. 각 섹션에서, 샘플 텍스트는 설명되지만, 어떤 원하는 텍스트가 이용될 수도 있다.Turning now to the example of FIGS. 24A-24D, FIG. 24A shows a typical screen image 710 of a Gale text editor. The text of the document in question has four sections, indicated by section 1, section 2, section 3, and section 4. In Fig. 24A, Gale has the illustrated section lock all sections and have complete editing capabilities for the entire document. In each section, sample text is described, but any desired text may be used.

도 24b에 있어서, 스크린 이미지(720)는 게일의 텍스트 편집기를 나타내지만, 이러한 이미지 안에서 게일은 섹션(2, 3, 4)을 보조 데이터베이스에 위임했고, 이들 섹션은 이제 그녀의 편집기 안에서 판독 전용이 되었으며, 이것은 섹션(2, 3, 4)들에 대각선으로 표시된다.In FIG. 24B, screen image 720 represents Gale's text editor, but within this image Gale has delegated sections (2, 3, 4) to the secondary database, and these sections are now read-only within her editor. Which is indicated diagonally in sections 2, 3 and 4.

도 24c에 있어서, 스크린 이미지(730)는 브라이언의 텍스트 편집기를 도시한다. 도 24c에 관하여, 브라이언은 그녀의 보조 데이터베이스를 통해 게일의 문서에 액세스한다(그는 게일에 의해 작업할 권한이 위임되었다). 브라이언이 섹션(2, 4) 상의 기록 잠금을 성공적으로 요청함으로써, 그들은 그의 편집기에서 편집할 수 있는 반면에, 섹션(1, 3)은 판독전용이다. 주목할 점은 문서의 판독 전용 섹션을 통한 대각선들이 오로지 설명용이며, 텍스트를 통하여 대각선을 그릴 필요가 없다는 것이다. 그러나, 바람직한 실시예에 있어서, 바람직하게는 특정 섹션들이 잠금되고 다른 섹션들은 잠금되지 않는다는 것을 알 수 있다. 이것은 다른 색상의 텍스트, 텍스트의 다른 종류의 배경, 잠금 모드, 또는 액세스 능력을 이용함으로써 수행될 수 있다. 예컨대, 사람마다 색상을 할당하고, 문서의 각 섹션 또는 다른 부분은 데이터 상에 기록 잠금을 갖는 사람 또는 엔티티에 따라 색이 칠해질 것이다. 대안으로, 단색은 판독 전용인 문서의 섹션을 지정하기 위해서 이용될 수 있다.In FIG. 24C, screen image 730 shows Brian's text editor. With respect to FIG. 24C, Brian accesses Gale's document through her secondary database (he was authorized to work by Gale). By successfully requesting the write lock on sections 2 and 4, they can edit in their editor, while sections 1 and 3 are read only. Note that the diagonal lines through the read-only section of the document are for illustrative purposes only and there is no need to draw the diagonal lines through the text. However, in the preferred embodiment, it can be seen that certain sections are preferably locked and other sections are not locked. This can be done by using different colored text, different kinds of background of the text, lock mode, or access capabilities. For example, color is assigned per person, and each section or other portion of the document will be colored according to the person or entity that has the write lock on the data. Alternatively, monochrome can be used to designate sections of the document that are read only.

마지막으로, 도 24d에 있어서, 스크린 이미지(740)는 앤의 텍스트 편집기를 나타낸다. 앤은 그녀의 보조 데이터베이스를 통해 게일의 문서에 액세스한다(그녀는 게일에 의해 작업할 권한이 위임되었다). 앤은 섹션(3) 상에 기록 잠금을 성공적으로 요청함으로써, 그것을 그녀의 편집기에서 편집할 수 있는 반면, 섹션(1, 2, 4)은 판독 전용이다.Finally, in FIG. 24D, screen image 740 shows Anne's text editor. Anne accesses Gale's documents through her secondary database (she was delegated to work by Gale). Anne successfully requests a write lock on section 3, so she can edit it in her editor, while sections 1, 2 and 4 are read only.

본 발명은 컴퓨터 기술의 당업자라면 명백히 알 수 있는 바와 같이 명세서의 교시에 따라 프로그래밍된 하나 이상의 종래의 범용 디지털 컴퓨터를 이용하여 적당하게 구현될 수 있다. 적당한 소프트웨어 코딩은 현재 교시한 것을 토대로 숙련된 프로그래머에 의해 쉽게 이루어질 수 있으며, 이것에 대하여는 당업자라면 명백히 알 수 있을 것이다. 본 발명은 또한 당업자라면 명백히 알 수 있는 바와 같이, 애플리케이션 특정 집적 회로를 준비하거나 종래의 부품 회로들의 적합한 네트워크를 접속함으로써 구현될 수 있다. 더욱더, 본 발명은 복수의 컴퓨터, 컴퓨팅 장치 또는 다른 타입의 장치들을 이용하여 구현될 수 있다. 이러한 장치들은 특정 타입의 네트워크를 통하여 접속되어, 데이터 관리 시스템의 동작과 관련된 데이터, 명령, 데이터 요청 및 기타 정보를 전달하기 위해서 특정 타입의 네트워크를 통해 접속될 수 있다. 이러한 컴퓨터 네트워크는 바람직하게는 유선 네트워크와, 무선주파수, 적외선 또는 초음파 타입 네트워크 등의 무선 네트워크를 이용하여 구현될 수 있다. 대안으로 범용 컴퓨터를 이용하거나 범용 컴퓨터를 이용하는 것 이외에, 본 발명은 팜 파일럿, 인터넷 서비스, 특정 용도 컴퓨터, 및 전화기 브라우저를 포함하는 특정 타입의 인터넷 브라우저 등의 개인용 디지털 보조 수단을 포함하는 어떤 타입의 장치를 이용하여 구현되는 것을 계획된다.The present invention may be suitably implemented using one or more conventional general-purpose digital computers programmed according to the teachings of the specification, as will be apparent to one of ordinary skill in the computer arts. Appropriate software coding can be readily made by experienced programmers based on the present teachings, as will be apparent to those skilled in the art. The invention may also be implemented by preparing an application specific integrated circuit or by connecting a suitable network of conventional component circuits, as will be apparent to one skilled in the art. Moreover, the present invention can be implemented using a plurality of computers, computing devices or other types of devices. Such devices may be connected via a particular type of network to connect data, commands, data requests, and other information related to the operation of the data management system. Such a computer network may preferably be implemented using a wired network and a wireless network such as a radio frequency, infrared or ultrasonic type network. Alternatively, in addition to using a general purpose computer or using a general purpose computer, the present invention is not limited to any type of personal digital assistant, including a palm pilot, an Internet service, a special purpose computer, and a particular type of internet browser including a telephone browser. It is planned to be implemented using the device.

본 발명은 본 발명의 프로세스를 실행할 컴퓨터를 프로그램하는데 이용될 수 있는 명령들을 포함하는 저장 매체인 컴퓨터 프로그램 제품을 포함한다. 이 저장 매체는 플로피 디스크, 광디스크, CD-ROM, 자기 광디시크, ROM, RAM, EPROM, EEPROM, 프래쉬 메모리, 자기 카드 또는 광 카드, 또는 하드 디스크 드라이브를 포함하는 전자 명령들을 저장하는데 적합한 특정 타입의 매체를 포함하는 디스크의 타입에 국한되지 않고 포함할 수 있다. 본 발명은 또한 본원에 기술된 데이터 구조를 포함하고, 본원에서 기술된 메모리 또는 저장 매체에 저장될 수 있다.The invention includes a computer program product, which is a storage medium containing instructions that can be used to program a computer to execute the process of the invention. This storage medium is a particular type suitable for storing electronic instructions including floppy disk, optical disk, CD-ROM, magnetic optical disk, ROM, RAM, EPROM, EEPROM, flash memory, magnetic card or optical card, or hard disk drive. It can include without being limited to the type of the disk containing the medium of the. The invention also includes a data structure described herein and may be stored in a memory or storage medium described herein.

본 발명을 특정 실시예를 토대로 설명하는 동안, 당업자라면 다양한 변경이 이루어지고, 본 발명의 사상 및 범위를 벗어남이 없이 동등하게 소자들이 대체될 수 있다는 것을 이해할 수 있을 것이다. 예컨대, 본 발명이 메모리에 기억된 데이터 구조를 설명하였지만, 그 데이터 구조들은 복수의 메모리에 동등하게 저장될 수 있을 것이다. 더욱더, 본 발명은 바람직하게는 데이터 구조를 결합하는 것을 고려한다.While the present invention is described with reference to specific embodiments, those skilled in the art will recognize that various changes may be made and elements may be replaced equivalently without departing from the spirit and scope of the invention. For example, although the present invention has described a data structure stored in a memory, the data structures may be equally stored in a plurality of memories. Moreover, the present invention preferably contemplates combining data structures.

본 발명은 다양한 공보에 발명자가 이전에 기술하였던 기술 및 이론들을 토대로 만들어진다. 이러한 공보들에는 공보들["Apotram-an Application Oriented Transaction Mode", Doctor Scient Thesis, Ole Jorgen Anfindsen, 1997, "Supporting Cooperative Work in Multimeadia Conference by Means of Nested Database", Ole Jorgen Anfindsen, Proceedings of Norwegian Computer ScienceConference-NIK'96, 1996, pp. 311-322, 및 "Cooperative Work Support in Engineering Environment by Means of Nested Databases", Ole Jorgen Anfindsen, Proceedings of CEEDA, 1996, Poole, UK, pp. 325-330]을 포함하고, 각각의 공보들은 이러한 공보에 각각 참조용으로 인용된다. 각각의 공보 및 이러한 공보에 대한 설명은 본 발명에 의해서 구현되거나 이용될 수 있다. 또한, 미국 특허 제5,983, 225호 및 제6,044,370호는 참조용으로 포함되고, 본 발명과 함께 또는 별개로 이용될 수 있다.The present invention is made in the various publications based on the techniques and theories previously described by the inventors. These publications include "Apotram-an Application Oriented Transaction Mode", Doctor Scient Thesis, Ole Jorgen Anfindsen, 1997, "Supporting Cooperative Work in Multimeadia Conference by Means of Nested Database", Ole Jorgen Anfindsen, Proceedings of Norwegian Computer Science Conference -NIK'96, 1996, pp. 311-322, and "Cooperative Work Support in Engineering Environment by Means of Nested Databases", Ole Jorgen Anfindsen, Proceedings of CEEDA, 1996, Poole, UK, pp. 325-330, each of which is incorporated herein by reference in its entirety. Each publication and its description may be embodied or used by the present invention. In addition, US Pat. Nos. 5,983, 225 and 6,044,370 are incorporated by reference and may be used with or separately from the present invention.

Claims (72)

데이터 처리 시스템에 의해 액세스하기 위한 데이터를 저장하는 메모리에 있어서,A memory for storing data for access by a data processing system, the memory comprising: 트랜잭션 정보를 포함하는 데이터 구조와,A data structure containing transaction information, 상기 트랜잭션의 데이터의 잠금 정보를 포함하는 데이터 구조와,A data structure containing lock information of data of the transaction; 복수의 데이터베이스의 정보를 포함하는 복수의 데이터 구조를 포함하고,A plurality of data structures containing information of a plurality of databases, 상기 복수의 데이터 구조 중 적어도 하나, 즉 하나의 데이터베이스 데이터 구조는 상기 트랜잭션 및 상기 데이터와 관련된 상기 복수의 데이터베이스 중 적어도 하나의 정보를 포함하는 것인 메모리.At least one of the plurality of data structures, i.e., one database data structure, includes information of at least one of the transaction and the plurality of databases associated with the data. 제1항에 있어서, 상기 데이터베이스 데이터 구조는 상기 트랜잭션의 정보를 포함하는 상기 데이터 구조와 관련이 있는 것인 메모리.2. The memory of claim 1 wherein the database data structure is associated with the data structure containing information of the transaction. 제2항에 있어서, 상기 데이터베이스 데이터 구조는 상기 트랜잭션의 정보를 포함하는 상기 데이터 구조에 관한 참조를 포함하는 것인 메모리.3. The memory of claim 2 wherein the database data structure includes a reference to the data structure that contains information of the transaction. 제3항에 있어서, 상기 트랜잭션의 정보를 포함하는 상기 데이터 구조에 관한 참조는 소유 트랜잭션(owing transaction)에 관한 참조를 포함하는 것인 메모리.4. The memory of claim 3 wherein the reference to the data structure containing information of the transaction comprises a reference to a owning transaction. 제4항에 있어서, 상기 데이터베이스 데이터 구조는 상기 트랜잭션의 정보를 포함하는 상기 데이터 구조와 다른 데이터 구조인 것인 메모리.5. The memory of claim 4 wherein the database data structure is a different data structure than the data structure containing information of the transaction. 제1항에 있어서, 상기 데이터베이스 데이터 구조는 상기 데이터베이스에서 능동 상태인 적어도 하나의 트랜잭션의 표시를 저장하는 필드를 포함하는 것인 메모리.2. The memory of claim 1 wherein the database data structure includes a field for storing an indication of at least one transaction that is active in the database. 제1항에 있어서, 상기 트랜잭션의 정보를 포함하는 상기 데이터 구조는 상기 데이터베이스 데이터 구조와의 관련성을 표시하는 필드를 포함하는 것인 메모리.2. The memory of claim 1 wherein the data structure containing information of the transaction includes a field indicating association with the database data structure. 제7항에 있어서, 상기 트랜잭션의 상기 정보를 포함하는 상기 데이터 구조는 상기 트랜잭션의 적어도 하나의 보조 데이터베이스와 관련성을 표시하는 필드를 포함하는 것인 메모리.8. The memory of claim 7, wherein the data structure that includes the information of the transaction includes a field indicating association with at least one secondary database of the transaction. 제7항에 있어서, 상기 데이터베이스 데이터 구조와 관련성을 표시하는 상기 필드는 문맥 데이터베이스와 관련성을 표시하는 것인 메모리.8. The memory of claim 7, wherein the field indicating relevance with the database data structure indicates relevance with a context database. 제9항에 있어서, 상기 데이터베이스 데이터 구조와 관련성을 표시하는 상기 필드는 상기 데이터베이스 데이터 구조에 관한 참조를 포함하는 것인 메모리.10. The memory of claim 9 wherein the field indicating association with the database data structure includes a reference to the database data structure. 제10항에 있어서, 상기 데이터베이스 데이터 구조와 관련성을 표시하는 상기 필드는 상기 데이터베이스 데이터 구조에 관한 포인터를 포함하는 것인 메모리.12. The memory of claim 10 wherein the field indicating association with the database data structure includes a pointer to the database data structure. 제11항에 있어서, 상기 데이터베이스 데이터 구조는 상기 트랜잭션의 정보를 포함하는 상기 데이터 구조와 다른 데이터 구조인 것인 메모리.12. The memory of claim 11 wherein the database data structure is a different data structure than the data structure containing information of the transaction. 제1항에 있어서, 상기 트랜잭션의 정보를 포함하는 상기 데이터 구조는 적어도 하나의 보조 데이터베이스와 관련성을 표시하는 필드를 포함하는 것인 메모리.The memory of claim 1, wherein the data structure including information of the transaction includes a field indicating association with at least one secondary database. 제1항에 있어서, 상기 트랜잭션의 정보를 포함하는 상기 데이터 구조는 잠금 정보를 포함하는 상기 데이터 구조와 관련된 필드를 포함하는 것인 메모리.2. The memory of claim 1 wherein the data structure that includes information of the transaction includes a field associated with the data structure that includes lock information. 제14항에 있어서, 잠금 정보를 포함하는 상기 데이터 구조와 관련된 상기 필드는 상기 잠금 정보를 포함하는 상기 데이터 구조에 관한 참조를 포함하는 것인 메모리.15. The memory of claim 14 wherein the field associated with the data structure that includes lock information includes a reference to the data structure that includes the lock information. 제15항에 있어서, 잠금 정보를 포함하는 상기 데이터 구조는 적어도 2개의 개별 데이터 구조들을 포함하는 것인 메모리.16. The memory of claim 15 wherein the data structure comprising lock information comprises at least two separate data structures. 제16항에 있어서, 상기 2개의 개별 데이터 구조는 잠금 제어 블록 및 잠금요청 블록을 포함하는 것인 메모리.17. The memory of claim 16 wherein the two separate data structures comprise a lock control block and a lock request block. 제17항에 있어서, 상기 잠금 정보를 포함하는 상기 데이터 구조에 관한 참조는 상기 잠금 요청 블록에 관한 참조인 것인 메모리.18. The memory of claim 17 wherein a reference to the data structure that includes the lock information is a reference to the lock request block. 제18항에 있어서, 상기 잠금 요청 블록은 다른 잠금 요청 블록에 관한 참조를 포함하는 것인 메모리.19. The memory of claim 18 wherein the lock request block includes a reference to another lock request block. 제1항에 있어서, 데이터의 잠금 정보를 포함하는 상기 데이터 구조는 상기 데이터베이스 데이터 구조와 관련된 필드를 포함하는 것인 메모리.2. The memory of claim 1 wherein the data structure that includes lock information for data includes a field associated with the database data structure. 제20항에 있어서, 상기 데이터베이스 데이터 구조와 관련된 상기 필드는 상기 복수의 데이터베이스 중 어느 것이 상기 잠금에 속하는지를 표시하는 것인 메모리.21. The memory of claim 20 wherein the field associated with the database data structure indicates which of the plurality of databases belongs to the lock. 제21항에 있어서, 상기 데이터베이스 데이터 구조와 관련된 상기 필드는 상기 데이터베이스 데이터 구조에 관한 참조를 포함하는 것인 메모리.22. The memory of claim 21 wherein the field associated with the database data structure includes a reference to the database data structure. 제22항에 있어서, 상기 데이터베이스 데이터 구조와 관련된 상기 필드는 상기 데이터베이스 데이터 구조에 관한 포인터를 포함하는 것인 메모리.23. The memory of claim 22 wherein the field associated with the database data structure includes a pointer to the database data structure. 제1항에 있어서, 잠금 정보를 포함하는 상기 데이터 구조는 적어도 2개의 개별 데이터 구조를 포함하는 것인 메모리.2. The memory of claim 1 wherein the data structure comprising lock information comprises at least two separate data structures. 제24항에 있어서, 상기 2개의 개별 데이터 구조는 잠금 제어 블록 및 잠금 요청 블록을 포함하는 것인 메모리.25. The memory of claim 24 wherein the two separate data structures comprise a lock control block and a lock request block. 제25항에 있어서, 상기 잠금 요청 블록은 다른 잠금 요청 블록에 관한 참조를 포함하는 것인 메모리.27. The memory of claim 25 wherein the lock request block includes a reference to another lock request block. 제1항에 있어서, 잠금 정보를 포함하는 상기 데이터 구조는 허락된 잠금 정보를 저장하는 적어도 하나의 필드를 갖는 단일 데이터 구조를 포함하는 것인 메모리.2. The memory of claim 1 wherein the data structure including lock information comprises a single data structure having at least one field for storing the permitted lock information. 제27항에 있어서, 허락된 잠금 정보를 저장하는 상기 적어도 하나의 필드는 상기 허락된 잠금 정보에 대한 비트맵을 저장하는 것인 메모리.28. The memory of claim 27 wherein the at least one field for storing the allowed lock information stores a bitmap for the allowed lock information. 제1항에 있어서, 상기 트랜잭션 데이터의 잠금 정보를 포함하는 상기 데이터 구조는 상기 데이터의 잠금을 다른 데이터베이스에 대한 데이터의 다른 잠금과 관련시키는 필드를 포함하는 것인 메모리.The memory of claim 1, wherein the data structure including lock information of the transaction data includes a field that associates the lock of data with another lock of data to another database. 제29항에 있어서, 상기 데이터의 잠금을 다른 데이터베이스에 대한 상기 데이터의 다른 잠금과 관련시키는 상기 필드에 의해 참조되는 상기 다른 데이터베이스에 대하여 다른 잠금 정보를 포함하는 데이터 구조를 더 포함하는 것인 메모리.30. The memory of claim 29 further comprising a data structure comprising different lock information for the other database referenced by the field that associates the lock of the data with another lock of the data for another database. 제1항에 있어서, 상기 데이터의 잠금 정보를 포함하는 데이터 구조는 상기 잠금과 관련된 데이터베이스의 표시를 포함하는 것인 메모리.2. The memory of claim 1 wherein the data structure containing lock information of the data includes an indication of a database associated with the lock. 제31항에 있어서, 상기 데이터의 잠금 정보를 포함하는 상기 데이터 구조는 상기 잠금과 관련된 상기 데이터에 관한 참조를 포함하고, 상기 참조는 상기 잠금과 관련된 상기 데이터베이스의 표시인 것인 메모리.32. The memory of claim 31 wherein the data structure including lock information of the data comprises a reference to the data associated with the lock, wherein the reference is an indication of the database associated with the lock. 제32항에 있어서, 상기 잠금과 관련된 상기 데이터베이스에 관한 상기 참조는 포인터를 포함하는 것인 메모리.33. The memory of claim 32 wherein the reference to the database associated with the lock comprises a pointer. 제1항에 있어서, 검색 목적으로 이용되고, 데이터의 잠금 정보를 포함하는 상기 데이터 구조와 관련성을 표시하는 정보를 포함하는 데이터 구조를 더 포함하는 것인 메모리.2. The memory of claim 1, further comprising a data structure used for retrieval purposes and including information indicating relevance to the data structure including lock information of the data. 제34항에 있어서, 상기 검색 목적으로 이용된 데이터 구조는 상기 관련성이있는 잠금 정보를 포함하는 상기 데이터 구조에 관한 참조를 포함하는 것인 메모리.35. The memory of claim 34 wherein the data structure used for retrieval purposes includes a reference to the data structure that includes the relevant lock information. 제35항에 있어서, 상기 검색 목적으로 이용된 데이터 구조는 상기 참조인 잠금 정보를 포함하는 상기 데이터 구조에 관한 포인터를 포함하는 것인 메모리.36. The memory of claim 35 wherein the data structure used for retrieval purposes includes a pointer to the data structure that contains lock information that is the reference. 제34항에 있어서, 상기 검색 목적으로 이용된 데이터 구조는 해시 테이블을 포함하는 것인 메모리.35. The memory of claim 34 wherein the data structure used for search purposes comprises a hash table. 제34항에 있어서, 상기 검색 목적으로 이용된 데이터 구조는 어레이를 포함하는 것인 메모리.35. The memory of claim 34 wherein the data structure used for search purposes comprises an array. 제34항에 있어서, 상기 검색 목적으로 이용된 데이터 구조는 테이블을 포함하는 것인 메모리.35. The memory of claim 34 wherein the data structure used for search purposes comprises a table. 제34항에 있어서, 상기 데이터베이스 데이터 구조는 상기 검색 목적으로 이용된 데이터 구조에 관한 참조를 포함하는 것인 메모리.35. The memory of claim 34 wherein the database data structure includes a reference to a data structure used for the search purpose. 제40항에 있어서, 상기 검색 목적으로 이용된 데이터 구조와 다른 검색 목적에 이용된 제2 데이터 구조와,41. The method of claim 40, further comprising: a second data structure used for a search purpose different from that used for the search purpose; 상기 검색 목적으로 이용된 제2 데이터 구조를 참조하는 제2 데이터베이스 데이터 구조를 포함하는 것인 메모리.And a second database data structure referencing a second data structure used for the search purpose. 제34항에 있어서, 상기 검색 목적으로 이용된 상기 데이터 구조는 상기 잠금 정보를 포함하는 상기 데이터 구조를 포함하는 것인 메모리.35. The memory of claim 34 wherein the data structure used for the retrieval purpose includes the data structure including the lock information. 제1항에 있어서, 상기 데이터 구조는 상기 트랜잭션의 정보를 포함하고, 상기 데이터 구조 및 데이터베이스 데이터 구조는 동일한 계층에 포함되는 것인 메모리.2. The memory of claim 1 wherein the data structure includes information of the transaction and the data structure and database data structure are included in the same layer. 제43항에 있어서, 트랜잭션 및 상기 복수의 데이터베이스 구조와 관련된 다른 데이터 구조들을 참조하는 트랜잭션과 관련된 데이터 구조와,44. The data structure of claim 43, further comprising: a data structure associated with a transaction that references a transaction and other data structures associated with the plurality of database structures; 트랜잭션 정보를 포함하는 적어도 하나의 데이터 구조를 참조하는 복수의 데이터베이스 구조를 더 포함하는 것인 메모리.And a plurality of database structures referencing at least one data structure containing transaction information. 제1항에 있어서, 상기 데이터 구조는 트랜잭션의 정보를 포함하고, 상기 데이터 구조는 상기 트랜잭션의 데이터의 잠금 정보를 포함하며, 상기 데이터베이스 데이터 구조는 데이터 구조와 다른 것인 메모리.The memory of claim 1, wherein the data structure includes information of a transaction, the data structure includes lock information of data of the transaction, and the database data structure is different from the data structure. 데이터 항목이 잠금되는 것을 표시하는 방법에 있어서,A method of indicating that a data item is locked, the method comprising: 제1 계층 레벨과 관련된 제1 트랜잭션에 의해 상기 데이터 항목이 잠금되는 것을 표시하는 데이터 구조를 제1 계층 레벨에 생성하는 단계와,Creating a data structure at a first hierarchy level indicating that the data item is locked by a first transaction associated with a first hierarchy level; 제2 계층 레벨과 관련된 제2 트랜잭션에 의해 상기 데이터 항목이 잠금되는 것을 표시하는 데이터 구조를 제2 계층 레벨에 생성하는 단계를 포함하는 것인 방법.Creating a data structure at a second hierarchy level indicating that the data item is locked by a second transaction associated with a second hierarchy level. 제46항에 있어서, 상기 제1 계층 레벨에 생성된 데이터 구조와 상기 제2 계층 레벨에 생성된 데이터 구조 사이의 관련성을 생성하는 단계를 더 포함하는 것인 방법.47. The method of claim 46, further comprising creating an association between a data structure created at the first hierarchical level and a data structure created at the second hierarchical level. 제47항에 있어서, 상기 관련성 생성 단계는 상기 제2 계층 레벨에 생성된 상기 데이터 구조를 참조하는 상기 제1 계층 레벨에 생성된 상기 데이터 구조의 필드에 참조를 생성하는 단계를 포함하는 것인 방법.48. The method of claim 47, wherein the creating the association comprises generating a reference to a field of the data structure created at the first hierarchy level that references the data structure created at the second hierarchy level. . 제46항에 있어서, 상기 제2 계층 레벨에서 상기 데이터 구조를 생성하는 단계는 상기 제2 계층 레벨과 관련된 데이터베이스에 관한 참조를 포함하도록 상기 제2 계층 레벨에 상기 데이터 구조를 생성하는 단계를 포함하는 것인 방법.47. The method of claim 46, wherein generating the data structure at the second hierarchical level includes generating the data structure at the second hierarchical level to include a reference to a database associated with the second hierarchical level. How. 제49항에 있어서, 상기 제1 계층 레벨에서 상기 데이터 구조를 생성하는 단계는 상기 제1 계층 레벨에서 상기 데이터 구조가 상기 제2 계층 레벨과 관련된 데이터베이스에 관한 참조를 포함하지 않도록 상기 제1 계층에서 상기 데이터 구조를 생성하는 단계를 포함하는 것인 방법.50. The method of claim 49, wherein generating the data structure at the first hierarchical level comprises: at the first hierarchical level such that the data structure does not include a reference to a database associated with the second hierarchical level. Generating the data structure. 제49항에 있어서, 상기 제1 계층 레벨에서 상기 데이터 구조를 생성하는 단계는 상기 제1 계층 레벨에서 상기 데이터 구조가 제1 계층 레벨과 관련된 데이터베이스와 관련성을 포함하도록 상기 제1 계층에 상기 데이터 구조를 생성하는 단계를 포함하는 것인 방법.50. The method of claim 49, wherein generating the data structure at the first hierarchical level further comprises: configuring the data structure at the first hierarchical level such that the data structure includes relevance to a database associated with a first hierarchical level. Generating a method. 데이터 항목에 관한 잠금이 존재하는지 여부를 판정하는 방법에 있어서,A method of determining whether a lock exists on a data item, the method comprising: (a) 상기 데이터 항목에 대한 잠금이 제1 계층 레벨에 존재하는지 여부를 판정하는 단계와,(a) determining whether a lock on the data item exists at a first hierarchical level; (b) 단계(a)에서 상기 데이터 항목에 대한 잠금이 존재하지 않는 경우에, 상기 제1 계층 레벨에서 상기 데이터 항목에 대한 잠금을 생성하는 단계와,(b) if there is no lock on the data item in step (a), generating a lock on the data item at the first hierarchical level; (c) 단계(a)에서 상기 데이터 항목에 대한 잠금이 존재하지 않는다고 판정하는 경우에, 제2 계층 레벨에 상기 데이터 항목에 대한 잠금이 존재하는지를 판정하는 단계와,(c) if it is determined in step (a) that there is no lock on the data item, determining whether there is a lock on the data item at a second hierarchical level; (d) 상기 제2 계층 레벨에 상기 데이터 항목에 대한 잠금이 존재하지 않는 경우에, 상기 데이터 항목에 대한 잠금을 생성하는 단계를 포함하는 것인 방법.(d) generating a lock on the data item if there is no lock on the data item at the second hierarchical level. 제52항에 있어서, 상기 생성 단계(b)는 상기 잠금을 표시하는 제1 계층 레벨에서 데이터 구조를 생성하는 단계(b+1)를 포함하는 것인 방법.53. The method of claim 52, wherein generating (b) comprises generating (b + 1) a data structure at a first hierarchical level indicating the lock. 제53항에 있어서, 상기 단계(b)는 상기 잠금을 표시하는 상기 제1 계층 레벨에서 검색 데이터 구조로부터 상기 데이터 구조까지의 참조를 생성하는 단계(b+2)를 더 포함하는 것인 방법.54. The method of claim 53, wherein step (b) further comprises generating (b + 2) a reference from a search data structure to the data structure at the first hierarchical level indicating the lock. 데이터 항목이 잠금되는 것을 표시하는 시스템에 있어서,In a system indicating that a data item is locked, 제1 계층 레벨과 관련된 제1 트랜잭션에 의해 상기 데이터 항목이 잠금되는 것을 표시하는 데이터 구조를 제1 계층 레벨에 생성하는 수단과,Means for creating a data structure at a first hierarchical level indicating that the data item is locked by a first transaction associated with a first hierarchical level; 제2 계층 레벨과 관련된 제2 트랜잭션에 의해 데이터 항목이 잠금되는 것을 표시하는 데이터 구조를 제2 계층 레벨에 생성하는 수단을 포함하는 것인 시스템.Means for generating a data structure at the second hierarchical level indicating that the data item is locked by a second transaction associated with the second hierarchical level. 제55항에 있어서, 상기 제1 계층 레벨에서 생성된 상기 데이터 구조와 상기 제2 계층 레벨에서 생성된 상기 데이터 구조사이에 관계를 생성하는 단계를 더 포함하는 것인 시스템.56. The system of claim 55, further comprising creating a relationship between the data structure created at the first hierarchical level and the data structure generated at the second hierarchical level. 제56항에 있어서, 상기 관계 생성 수단은 상기 제2 계층 레벨에서 생성된 상기 데이터 구조를 참조하는 상기 제1 계층 레벨에서 생성된 상기 데이터 구조의 필드에 참조를 생성하는 수단을 포함하는 것인 시스템.59. The system of claim 56, wherein said relationship generating means comprises means for generating a reference to a field of said data structure created at said first hierarchy level referencing said data structure created at said second hierarchy level. . 제55항에 있어서, 상기 제2 계층 레벨에서 상기 데이터 구조를 생성하는 수단은 상기 제2 계층 레벨과 관련된 데이터베이스에 대한 참조를 포함하도록 상기 제2 계층 레벨에서 상기 데이터 구조를 생성하는 수단을 포함하는 것인 시스템.56. The apparatus of claim 55, wherein the means for generating the data structure at the second hierarchical level comprises means for generating the data structure at the second hierarchical level to include a reference to a database associated with the second hierarchical level. System. 제58항에 있어서, 상기 제1 계층 레벨에서 상기 데이터 구조를 생성하는 수단은 상기 제1 계층 레벨에서 상기 데이터 구조가 상기 제2 계층 레벨과 관련된 데이터베이스에 대한 참조를 포함하지 않도록 상기 제1 계층에서 상기 데이터 구조를 생성하는 수단을 포함하는 것인 시스템.59. The apparatus of claim 58, wherein the means for generating the data structure at the first hierarchical level comprises: at the first hierarchical level such that the data structure does not include a reference to a database associated with the second hierarchical level. Means for generating the data structure. 제58항에 있어서, 상기 제1 계층 레벨에서 상기 데이터 구조를 생성하는 수단은 상기 제1 계층 레벨에서 상기 데이터 구조가 상기 제1 계층 레벨과 관련된 데이터베이스와의 관계를 포함하도록 상기 제1 계층에서 상기 데이터 구조를 생성하는 수단을 포함하는 것인 시스템.59. The apparatus of claim 58, wherein the means for generating the data structure at the first hierarchical level comprises: at the first hierarchical level the data structure comprises a relationship with a database associated with the first hierarchical level; And means for generating a data structure. 데이터 항목에 관한 잠금이 존재하는지 여부를 판정하는 시스템에 있어서,A system for determining whether a lock exists on a data item, 상기 데이터 항목에 대한 잠금이 제1 계층 레벨에 존재하는지 여부를 판정하는 수단과,Means for determining whether a lock on the data item exists at a first hierarchical level; 상기 데이터 항목에 대한 잠금이 제1 계층 레벨에 존재하는지 여부를 판정하는 수단이 상기 데이터 항목에 대한 잠금이 존재하지 않는다고 판정하는 경우에, 상기 제1 계층 레벨에서 상기 데이터 항목에 대한 잠금을 생성하는 수단과,If the means for determining whether a lock on the data item exists at a first hierarchical level determines that no lock on the data item exists, generating a lock on the data item at the first hierarchical level. Sudan, 상기 데이터 항목에 대한 잠금이 제1 계층 레벨에 존재하는지 여부를 판정하는 수단이 상기 데이터 항목에 대한 잠금이 존재하지 않는다고 판정하는 경우에, 상기 데이터 항목에 대한 잠금이 제2 계층 레벨에 존재하는지 여부를 판정하는 수단과,If the means for determining whether a lock on the data item exists at the first hierarchical level determines that a lock on the data item exists at the second hierarchical level when the means for determining that no lock on the data item exists. Means for determining, 상기 데이터 항목에 대한 잠금이 상기 제2 계층 레벨에 존재하지 않는 경우에, 상기 데이터 항목에 대한 잠금을 생성하는 수단을 포함하는 것인 시스템.Means for generating a lock on the data item if the lock on the data item does not exist at the second hierarchical level. 제61항에 있어서, 상기 제1 계층 레벨에 상기 데이터 항목에 대한 잠금을 생성하는 수단은 상기 잠금을 표시하는 제1 계층 레벨에서 데이터 구조를 생성하는 수단을 포함하는 것인 시스템.62. The system of claim 61, wherein the means for generating a lock on the data item at the first hierarchical level comprises means for generating a data structure at a first hierarchical level indicating the lock. 제62항에 있어서, 상기 제1 계층 레벨에 상기 데이터 항목에 대한 잠금을 생성하는 수단은 상기 잠금을 표시하는 상기 제1 계층 레벨에서 검색 데이터 구조로부터 상기 데이터 구조까지 참조를 생성하는 수단을 포함하는 것인 시스템.63. The apparatus of claim 62, wherein the means for generating a lock on the data item at the first hierarchical level comprises means for generating a reference from a search data structure to the data structure at the first hierarchical level indicating the lock. System. 데이터 항목이 잠금되는 것을 표시하는 컴퓨터 판독가능한 프로그램 코드 수단을 갖는 컴퓨터 프로그램 제품에 있어서,A computer program product having computer readable program code means for indicating that a data item is locked, 제1 계층 레벨과 관련된 제1 트랜잭션에 의해 상기 데이터 항목이 잠금되는 것을 표시하는 데이터 구조를 제1 계층 레벨에 생성하는 수단과,Means for creating a data structure at a first hierarchical level indicating that the data item is locked by a first transaction associated with a first hierarchical level; 제2 계층 레벨과 관련된 제2 트랜잭션에 의해 상기 데이터 항목이 잠금되는것을 표시하는 데이터 구조를 제2 계층 레벨에서 생성하는 수단를 포함하는 것인 컴퓨터 프로그램 제품.And means for generating a data structure at a second hierarchy level indicating that the data item is locked by a second transaction associated with a second hierarchy level. 제64항에 있어서, 상기 제1 계층 레벨에서 생성된 상기 데이터 구조와 상기 제2 계층 레벨에서 생성된 상기 데이터 구조사이에 관계를 생성하는 단계를 더 포함하는 것인 컴퓨터 프로그램 제품.65. The computer program product of claim 64, further comprising creating a relationship between the data structure generated at the first hierarchical level and the data structure generated at the second hierarchical level. 제65항에 있어서, 상기 관계 생성 수단은 상기 제2 계층 레벨에서 생성된 상기 데이터 구조를 참조하는 상기 제1 계층 레벨에서 생성된 상기 데이터 구조의 필드에 참조를 생성하는 수단을 포함하는 것인 컴퓨터 프로그램 제품.66. The computer of claim 65 wherein the means for generating relationships comprises means for generating a reference to a field of the data structure created at the first hierarchical level that references the data structure created at the second hierarchical level. Program product. 제64항에 있어서, 상기 제2 계층 레벨에서 상기 데이터 구조를 생성하는 수단은 상기 제2 계층 레벨과 관련된 데이터베이스에 관한 참조를 포함하는 것인 컴퓨터 프로그램 제품.65. The computer program product of claim 64, wherein the means for generating the data structure at the second hierarchical level comprises a reference to a database associated with the second hierarchical level. 제67항에 있어서, 상기 제1 계층 레벨에서 상기 데이터 구조를 생성하는 수단은 상기 제1 계층 레벨에서 상기 데이터 구조가 상기 제2 계층 레벨과 관련된 데이터베이스에 관한 참조를 포함하지 않도록 상기 제1 계층 레벨에서 상기 데이터 구조를 생성하는 수단을 포함하는 것인 컴퓨터 프로그램 제품.68. The method of claim 67, wherein the means for generating the data structure at the first hierarchical level comprises: so that the data structure at the first hierarchical level does not include a reference to a database associated with the second hierarchical level. And means for generating the data structure in a table. 제67항에 있어서, 상기 제1 계층 레벨에서 상기 데이터 구조를 생성하는 수단은 상기 제1 계층 레벨에서 상기 데이터 구조가 상기 제1 계층 레벨과 관련된 데이터베이스와 관련성을 포함하도록 상기 제1 계층에서 상기 데이터 구조를 생성하는 수단을 포함하는 것인 컴퓨터 프로그램 제품.68. The apparatus of claim 67, wherein the means for generating the data structure at the first hierarchical level comprises the data at the first hierarchy such that the data structure at the first hierarchical level includes relevance to a database associated with the first hierarchical level. And means for generating a structure. 데이터 항목에 대한 잠금이 존재하는지 여부를 판정하기 위하여 컴퓨터 판독가능한 프로그램 코드 수단을 갖는 컴퓨터 프로그램 제품에 있어서,A computer program product having computer readable program code means for determining whether a lock on a data item exists; 상기 데이터 항목에 대한 잠금이 제1 계층 레벨에 존재하는지 여부를 판정하는 수단과,Means for determining whether a lock on the data item exists at a first hierarchical level; 상기 데이터 항목에 대한 잠금이 제1 계층 레벨에 존재하는지 여부를 판정하는 상기 수단이 상기 데이터 항목에 대한 잠금이 존재하지 않는다고 판정할 때, 상기 제1 계층 레벨에서 상기 데이터 항목에 대한 잠금을 생성하는 수단과,Generating a lock on the data item at the first hierarchical level when the means for determining whether a lock on the data item is present at the first hierarchical level determines that no lock on the data item exists. Sudan, 상기 데이터 항목에 대한 잠금이 제1 계층 레벨에 존재하는지 여부를 판정하는 상기 수단이 상기 데이터 항목에 대한 잠금이 존재하지 않는다고 판정하는 경우에, 상기 데이터 항목에 대한 잠금이 제2 계층 레벨에 존재하는지 여부를 판정하는 수단과,If the means for determining whether a lock on the data item is present at the first hierarchical level determines that a lock on the data item is present at the second hierarchical level, Means for determining whether or not, 상기 데이터 항목에 대한 잠금이 상기 제2 계층 레벨에 존재하지 않는 경우에, 상기 데이터 항목 상에 잠금을 생성하는 수단을 포함하는 것인 컴퓨터 프로그램 제품.And means for generating a lock on the data item if a lock on the data item is not present at the second hierarchical level. 제70항에 있어서, 상기 제1 계층 레벨에서 상기 데이터 항목에 대한 잠금을 생성하는 수단은 상기 잠금을 표시하는 상기 제1 계층 레벨에서 검색 데이터 구조로부터 상기 데이터 구조까지의 참조를 생성하는 수단을 포함하는 것인 컴퓨터 프로그램 제품.71. The apparatus of claim 70, wherein the means for generating a lock on the data item at the first hierarchical level comprises means for generating a reference from a search data structure to the data structure at the first hierarchical level indicating the lock. Computer program product. 제71항에 있어서, 상기 제1 계층 레벨에서 상기 데이터 항목에 대하여 잠금을 생성하는 수단은 상기 잠금을 표시하는 제1 계층 레벨에서 검색 데이터 구조로부터 상기 데이터 구조까지의 참조를 생성하는 수단을 포함하는 것인 컴퓨터 프로그램 제품.72. The apparatus of claim 71, wherein the means for generating a lock on the data item at the first hierarchical level comprises means for generating a reference from a search data structure to the data structure at a first hierarchical level indicating the lock. Computer program product.
KR10-2003-7001266A 2000-07-28 2001-07-16 Method, system and data structures for implementing nested databases KR20030047996A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/628,728 2000-07-28
US09/628,728 US6751617B1 (en) 1999-07-12 2000-07-28 Method, system, and data structures for implementing nested databases
PCT/NO2001/000304 WO2002010978A2 (en) 2000-07-28 2001-07-16 Method, system and data structures for implementing nested databases

Publications (1)

Publication Number Publication Date
KR20030047996A true KR20030047996A (en) 2003-06-18

Family

ID=24520055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7001266A KR20030047996A (en) 2000-07-28 2001-07-16 Method, system and data structures for implementing nested databases

Country Status (10)

Country Link
EP (1) EP1323071A2 (en)
JP (1) JP2004505380A (en)
KR (1) KR20030047996A (en)
CN (1) CN1539110A (en)
AU (2) AU7286301A (en)
BR (1) BR0112967A (en)
CA (1) CA2416909A1 (en)
MX (1) MXPA03000756A (en)
RU (1) RU2003105686A (en)
WO (1) WO2002010978A2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140147812A (en) * 2012-03-16 2014-12-30 오라클 인터내셔날 코포레이션 Systems and methods for supporting inline delegation of middle-tier transaction logs to database
KR20170090594A (en) * 2016-01-29 2017-08-08 한국전자통신연구원 Data server device configured to manage distributed lock of file together with client device in storage system employing distributed file system

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040044648A1 (en) * 2002-06-24 2004-03-04 Xmyphonic System As Method for data-centric collaboration
US7392335B2 (en) * 2006-02-10 2008-06-24 Oracle International Corporation Anticipatory changes to resources managed by locks
US7899999B2 (en) * 2007-06-27 2011-03-01 Microsoft Corporation Handling falsely doomed parents of nested transactions
US7890472B2 (en) * 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
CN101650646B (en) * 2009-09-22 2012-02-08 杭州华三通信技术有限公司 Method and device for realizing shared data consistency
CN104572077B (en) * 2014-12-12 2018-03-06 百度在线网络技术(北京)有限公司 The processing method and operation system of db transaction
CN111190908B (en) * 2018-11-15 2023-09-22 华为技术有限公司 Data management method, device and system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4965719A (en) * 1988-02-16 1990-10-23 International Business Machines Corporation Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US5226143A (en) * 1990-03-14 1993-07-06 International Business Machines Corporation Multiprocessor system includes operating system for notifying only those cache managers who are holders of shared locks on a designated page by global lock manager
JP2533266B2 (en) * 1991-06-14 1996-09-11 インターナショナル・ビジネス・マシーンズ・コーポレイション Locking method of data resource in shared data system and data lock management method between systems
US6044370A (en) * 1998-01-26 2000-03-28 Telenor As Database management system and method for combining meta-data of varying degrees of reliability
US5983225A (en) * 1998-01-26 1999-11-09 Telenor As Parameterized lock management system and method for conditional conflict serializability of transactions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140147812A (en) * 2012-03-16 2014-12-30 오라클 인터내셔날 코포레이션 Systems and methods for supporting inline delegation of middle-tier transaction logs to database
KR20170090594A (en) * 2016-01-29 2017-08-08 한국전자통신연구원 Data server device configured to manage distributed lock of file together with client device in storage system employing distributed file system

Also Published As

Publication number Publication date
MXPA03000756A (en) 2004-11-01
AU7286301A (en) 2002-02-13
AU2001272863B2 (en) 2004-11-18
RU2003105686A (en) 2004-06-20
WO2002010978A9 (en) 2003-11-06
CN1539110A (en) 2004-10-20
EP1323071A2 (en) 2003-07-02
BR0112967A (en) 2004-02-25
WO2002010978A2 (en) 2002-02-07
WO2002010978A3 (en) 2002-08-08
JP2004505380A (en) 2004-02-19
CA2416909A1 (en) 2002-02-07

Similar Documents

Publication Publication Date Title
US6751617B1 (en) Method, system, and data structures for implementing nested databases
US7305386B2 (en) Controlling visibility in multi-version database systems
US7103588B2 (en) Range-clustered tables in a database management system
US5276872A (en) Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions
US7680794B2 (en) Neighboring locking technique for increasing concurrency among transactions
CA2537411C (en) A database management system with efficient version control
US5555388A (en) Multi-user system and methods providing improved file management by reading
US7421458B1 (en) Querying, versioning, and dynamic deployment of database objects
US6393435B1 (en) Method and means for evaluating the performance of a database system referencing files external to the database system
US6772155B1 (en) Looking data in a database system
Lomet et al. Access method concurrency with recovery
US6449607B1 (en) Disk storage with modifiable data management function
US5162992A (en) Vector relational characteristical object
US6647391B1 (en) System, method and article of manufacture for fast mapping from a propertied document management system to a relational database
Lomet et al. Concurrency and recovery for index trees
US20100146017A1 (en) Information processing apparatus and information processing method
JP2001527243A (en) Method and apparatus for generating an index in a relational database corresponding to a class in an object-oriented application
Taniar et al. A taxonomy of indexing schemes for parallel database systems
US6591275B1 (en) Object-relational mapping for tables without primary keys
CN112867999A (en) Version-based table locking
US6535895B2 (en) Technique to avoid processing well clustered LOB's during reorganization of a LOB table space
KR20030047996A (en) Method, system and data structures for implementing nested databases
AU2001272863A1 (en) Method, system and data structures for implementing nested databases
JP2001282599A (en) Method and device for managing data and recording medium with data management program stored therein
JP3666907B2 (en) Database file storage management system

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination