KR20020038575A - Method and apparatus for maintaining data integrity across distributed computer systems - Google Patents

Method and apparatus for maintaining data integrity across distributed computer systems Download PDF

Info

Publication number
KR20020038575A
KR20020038575A KR1020017013760A KR20017013760A KR20020038575A KR 20020038575 A KR20020038575 A KR 20020038575A KR 1020017013760 A KR1020017013760 A KR 1020017013760A KR 20017013760 A KR20017013760 A KR 20017013760A KR 20020038575 A KR20020038575 A KR 20020038575A
Authority
KR
South Korea
Prior art keywords
application
database
server
server application
objects
Prior art date
Application number
KR1020017013760A
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
Application filed by 엘그레시 도론, 컴퓨터 어소시에이츠 싱크, 인코포레이티드 filed Critical 엘그레시 도론
Priority claimed from US09/559,237 external-priority patent/US7003587B1/en
Publication of KR20020038575A publication Critical patent/KR20020038575A/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/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • 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/2365Ensuring data consistency and integrity
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 분산 컴퓨터 시스템을 가로질러 데이터의 완전성을 유지하기 위한 방법 및 장치를 개시한다. 일 실시예에서, 본 발명의 방법은 서버 애플리케이션으로부터 클라이언트 애플리케이션으로 오브젝트를 전송하는 단계를 포함한다. 상기 방법은 또한 서버 애플리케이션으로부터 클라이언트 애플리케이션으로 오브젝트 상태를 전송하는 단계를 포함한다. 상기 방법은 상기 오브젝트와, 상기 서버 애플리케이션과 상기 클라이언트 애플리케이션 간의 오브젝트 상태를 동기화시키는 단계와, 상기 동기화 단계 이후 서버 애플리케이션 방법을 호출함으로써 상기 오브젝트를 갱신하는 단계를 더 포함한다. 상기 방법의 단계들을 수행하기 위한 제조 장치 및 물품이 또한 개시된다.The present invention discloses a method and apparatus for maintaining data integrity across distributed computer systems. In one embodiment, the method includes transferring an object from a server application to a client application. The method also includes transmitting the object state from the server application to the client application. The method further comprises synchronizing the object state between the object, the server application and the client application, and updating the object by invoking a server application method after the synchronizing step. Also disclosed is a manufacturing apparatus and an article for performing the steps of the method.

Description

분산 컴퓨터 시스템을 통하여 저장된 데이터의 완전성을 유지하는 방법{METHOD AND APPARATUS FOR MAINTAINING DATA INTEGRITY ACROSS DISTRIBUTED COMPUTER SYSTEMS}METHOD AND APPARATUS FOR MAINTAINING DATA INTEGRITY ACROSS DISTRIBUTED COMPUTER SYSTEMS

현재, 분산 환경에서 정보 처리를 지원하는 데에는 몇 개의 다른 기술들이 있다. 이들 각 기술은 특정한 목적을 충족시키도록 설계되어 왔다. 원격 절차 통화 시스템은 예를 들어 한 컴퓨터 상에서 다른 컴퓨터 상에서의 기능을 실행시킬 수있는 프로그램을 작동시킬 수 있다. 오브젝트 리퀘스트 브로커들은 유사한 서비스를 제공하지만, 오브젝트 기술을 따르는 몇 가지의 중요치 않은 변형들을 갖는다. 데이터베이스 접속 시스템들은 프로그램으로 하여금 다른 컴퓨터 상의 데이터베이스로부터 데이터를 검색하게 한다. 메세징 시스템은 한 프로그램이 원격 컴퓨터 상에서 서로 통신할 수 있게 하며, 종종 필요한 경우 메세지를 저장하고 통신이 이루어질 수 있을 때 전송한다. 공공 및 가입자 시스템들은 한 프로그램이 메세지를 방송할 수 있게 하며, 그 메세지에 가입된 시스템들 만이 메세지를 수신한다. 본 분야에는 몇 가지의 다른 기술들이 존재한다.Currently, there are several different techniques for supporting information processing in a distributed environment. Each of these techniques has been designed to meet specific purposes. The remote procedure call system may, for example, run a program capable of executing a function on one computer on another computer. Object request brokers provide similar services, but with some minor modifications that follow the object description. Database connection systems allow a program to retrieve data from a database on another computer. The messaging system allows a program to communicate with each other on a remote computer, often storing messages and sending them when communication can be made if necessary. Public and subscriber systems allow a program to broadcast a message, and only the systems subscribed to the message receive the message. There are several different techniques in this field.

많은 경우, 통신 기술은 동일한 컴퓨터 상에서 다른 프로그램과 통신할 때, 또는 다른 컴퓨터 상의 것과 통신할 때 동일한 서비스들을 제공하며; 어떠한 경우에는 심지어 동일한 프로그램 내의 서비스와 통신한다. 다른 경우들에 있어서, 다른 구성들 내에서 통신할 때에는 다른 기술들이 이용되어야 한다.In many cases, communication technology provides the same services when communicating with other programs on the same computer, or when communicating with one on another computer; In some cases it even communicates with services within the same program. In other cases, other techniques should be used when communicating within other configurations.

그러나, 본 기술의 현재 상태는 몇 가지의 실행상의 문제점들을 발생시킨다. 어떠한 기존의 서비스도 현대의 분산 애플리케이션들의 모든 조건들을 만족시키지 못한다. 다른 서비스들은 거의 통합되지 않으며, 이는 서비스들의 어떠한 결합을 필요로 하는 프로그램이 그들을 결합시키기 위해 많은 작업을 해야함을 의미한다. 실제적으로, 데이터의 완전성을 손상시키는 작은 에러들을 유입시키지 않으면서 이를 수행하는 것은 매우 어렵다. 또한, 이러한 많은 서비스들의 배타적인 특성은 종종 개발자가 이들을 결합시키는 것을 불가능하게 한다. 예를 들어, 마이크로소프트사는 종래의 연결-기반 통신에 기초하는 COM으로 일컬어지는 ORB를 제공한다. 마이크로소프트사는 또한 MSMQ로 일컬어지는 저장-및-전송 메세징 시스템을 제공한다. 그러나, COM은 통신에 MSMQ의 이용을 지원하지 않으며, 서비스들의 비동기적인 호출을 허용한다.However, the current state of the art creates some implementation problems. No existing service meets all the requirements of modern distributed applications. Other services are rarely integrated, which means that a program that needs some combination of services will have to do a lot of work to combine them. In practice, it is very difficult to do this without introducing small errors that compromise the integrity of the data. In addition, the exclusive nature of many of these services often makes it impossible for developers to combine them. For example, Microsoft provides an ORB called COM, which is based on conventional connection-based communication. Microsoft also provides a store-and-forward messaging system called MSMQ. However, COM does not support the use of MSMQ for communication and allows asynchronous invocation of services.

상태 전송 기술(State shipping technology)State shipping technology

오브젝트 리퀘스트 브로커들Object request brokers

현재, 원격 서버 내에서 서비스들의 호출을 제공하는 많은 시스템들이 있다. 이들은 종종 원격 절차 호출(RPC) 서비스들로 일컬어진다. 오브젝트 모델을 기초로할 때, 이들은 오브젝트 리퀘스트 브로커들로서 일컬어진다. 이러한 시스템들은 이들이 서버 상에서 오브젝트들의 상태를 유지한다는 점에서 근본적으로 무효화된다. 클라이언트측 프로그램이, 서버측 오브젝트의 상태를 전체적으로 구성하는 개별적인 특성들을 참조하는 것이 바람직한 분산 시스템을 구성할 때, 개발자들은 일반적으로 두 개의 선택권을 갖는데, 이들 모두 흥미롭지 않다.Currently, there are many systems that provide invocation of services within a remote server. These are often referred to as remote procedure call (RPC) services. Based on the object model, they are referred to as object request brokers. These systems are fundamentally invalidated in that they maintain the state of objects on the server. When a client-side program constructs a distributed system where it is desirable to refer to the individual characteristics that make up the state of a server-side object as a whole, developers typically have two choices, both of which are not interesting.

오브젝트 서버는 타입 getCurrentBalance의 특성 검색 방법들 및 setCurrentBalance와 같은 특성 설정 방법들을 이용하여, 개별적인 특성들을 제시한다. 그러나, 이는 매우 비효율적일 수 있다. 즉, 오브젝트 상태의 완전한 화상을 검색하기 위하여, 클라이언트 프로그램은 많은 수의 요구들을 해야할 것이다. 현대의 네트워크 시스템들 및 데이터베이스 처리 시스템들은 많은 수의 작은 요구들을 매우 효율적으로 처리하도록 설계되지 않는다. 즉, 네트워크들 및 데이터베이스들의 오버헤드 및 레이턴시가 이를 매우 비싸게 할 것이다.The object server presents individual properties using property retrieval methods of type getCurrentBalance and property setting methods such as setCurrentBalance. However, this can be very inefficient. In other words, in order to retrieve the complete picture of the object state, the client program will have to make a large number of requests. Modern network systems and database processing systems are not designed to handle a large number of small needs very efficiently. In other words, the overhead and latency of networks and databases will make this very expensive.

오브젝트 서버는 전체 상태를 포함하는 데이터 구조를 되돌리는 getState 방법을 제시할 수 있다. 이는 전체 상태가 한 대화에서 클라이언트로 전달되기 때문에 더 효율적이지만, 이는 오브젝트 모델을 깨뜨린다. 먼저, 상태가 공통 넌-오브젝트 언어들의 전형적인 struct로서 코드화된다면, 프로그래밍 모델이 브레이크다운되어, 오브젝트와 넌-오브젝트 기술을 혼합한다. 만일 상태가 오브젝트로서 코드화된다면, 매우 다른 특성들을 갖는, 즉 상태는 서버와의 어떠한 방법들 및 관계도 갖지 않는 국부적인 클라이언트측 오브젝트이며; 최초의 서비스는 방법들은 갖지만 어떠한 특성들도 없는 오브젝트인 두 개의 다른 타입의 오브젝트들을 갖는다. 서버 오브젝트의 특성들을 변경하기 위하여, 애플리케이션들은 국부 상태 오브젝트를 변경한 다음, setState(theState)와 같은 방법을 호출함으로써 이를 다시 서버로 전달해야 한다. 또한, 클라이언트측 상태가 변경되지만 아직 서버에 다시 기록되지 않은 후, 우리는 두 개의 모순된 상태 변형들을 갖게 되며, 처리 로직은 어떠한 변형이 호출되는 지에 따라 다른 결과들을 얻게 된다. 전송 상태에 있어서의 이러한 제한들 때문에, 상태를 좀 더 효율적으로 처리하는 서비스를 갖는 오브젝트 리퀘스트 브로커들을 이용하는 것이 바람직하다.The object server can suggest a getState method that returns a data structure containing the entire state. This is more efficient because the entire state is passed from one conversation to the client, but it breaks the object model. First, if the state is coded as a typical struct of common non-object languages, the programming model breaks down, mixing object and non-object descriptions. If a state is coded as an object, then it is a local client-side object with very different characteristics, i.e. it has no methods and relationships with the server; The original service has two different types of objects, objects that have methods but no properties. To change the properties of the server object, applications must change the local state object and then pass it back to the server by calling a method like setState (theState). Also, after the client-side state is changed but not yet written back to the server, we have two contradictory state variants, and the processing logic gets different results depending on which variant is called. Because of these limitations in the transmission state, it is desirable to use object request brokers with services that handle the state more efficiently.

데이터베이스 액세스 시스템Database access system

데이터베이스 서버들에 원격 액세스를 제공하는 많은 시스템들이 있다. 이들 시스템들 중 일부는 자동 캐시 처리를 포함한다. 서버로부터 기록이 검색될 때, 애플리케이션은 리-페치를 다시 요구하지 않으면서 기록으로부터 값들을 검색할 수 있으며, 기록들에 대한 변경은 캐시 내에서 유지되고, 커미트 연산(Commit operation)이 실행될 때 다시 서버에 모두 기록된다. 이러한 몇몇 시스템들은 이들이 애플리케이션의 프로그래밍 언어로된 오브젝트 형태로 검색 데이터를 제시한다는 점에서, 오브젝트 기술에 기초를 둔다.There are many systems that provide remote access to database servers. Some of these systems include automatic cache processing. When a record is retrieved from the server, the application can retrieve the values from the record without requiring re-fetch again, changes to the records are kept in the cache, and again when a commit operation is executed. All are written to the server. Some of these systems are based on object descriptions in that they present search data in the form of objects in the application's programming language.

이러한 시스템들은 이들이 클라이언트에 오브젝트를 검색해주지만, 이들은 서버 상에서 오브젝트의 방법들을 호출하지 못한다는 점에서 심각한 제한을 받는다. 서버 상에서의 오브젝트 호출 방법들은, 일단 오브젝트의 상태가 클라이언트로 전송되며, 그속이 오브젝트가 유지되는 곳이고, 그 상태는 클라이언트에 대하여 변경될 수도 있으며, 그리고 서버 상에서의 실행 방법들은 중요하지 않다는 점에서, 이러한 시스템들에 어려움을 준다.These systems are severely limited in that they retrieve the object from the client, but they cannot invoke the object's methods on the server. Object invocation methods on the server are, in that, once the state of the object is sent to the client, where the object is maintained, the state may change for the client, and the methods on the server are not important. This creates a challenge for these systems.

이러한 문제점은 또한, 저장된 절차들을 실행하기 위한 서포트를 공통으로 제공하는 보통 관련(SQL) 데이터베이스에 의해 발생된다는 것을 유념하다. 예를 들어, 만일 기록이 클라이언트에 대하여 검색된다면, 클라이언트측 캐시 내의 기록에대한 변경이 이루어지며, 그리고 이러한 변경들이 서버에는 아직 기록되지 않았다면, 그리고 저장된 절차가 호출되는 서버측을 호출한다면, 저장된 절차는 잘못된 데이터를 작동할 것이다. 분산 처리를 지원함에 있어서 이러한 제한때문에, 분산 처리를 좀 더 일관성있게 처리하는 서비스들을 갖는 데이터베이트 액세스 시스템들을 이용하는 것이 바람직하다.Note that this problem is also caused by a common relational (SQL) database that provides common support for executing stored procedures. For example, if a record is retrieved for a client, a change is made to the record in the client-side cache, and if these changes have not yet been written to the server, and if the stored procedure invokes the server side where the stored procedure is called, the stored procedure Will work the wrong data. Because of this limitation in supporting distributed processing, it is desirable to use database access systems with services that handle distributed processing more consistently.

저장 전송 기술에 의한 캐싱Caching by Store Transfer Technology

캐시 처리Cache processing

캐시 처리는 널리 공지된 캐술이다. 많은 시스템들은 데이터베이스 액세스 툴로부터 웹 브라우저들로 정보의 국부 캐싱을 제공하여, 응답 시간을 개선하고 네트워크 트래픽을 줄인다.Cache processing is a well known casul. Many systems provide local caching of information from database access tools to web browsers, improving response time and reducing network traffic.

판독 캐시는 검색된 정보의 카피들을 유지하는 데에 이용된다. 즉, 애플리케이션이 동일한 정보를 다시 요구한다면, 캐시로부터 이를 페치할 수도 있다. 캐시는 한 세션 동안에만 정보를 저장하는 일시적일 수도 있으며, 또는 세션간의 디스크 상에 정보를 유지하는, 또는 컴퓨터가 커질 때 조차도 정보를 유지하는 영구적일 수도 있다. 물론, 서버 상의 정보가 변경된다면, 캐시는 별 소용이 없게 된다. 이는 웹 브라우저들 같은 경우에는 수용가능하며, 서버로부터 정보를 갱신하는 책임은 사용자에 있다. 다른 경우들에서, 이는 정보가 더 다이내믹하기 때문에, 또는 애플리케이션이 더 중요하기 때문에, 수용불가능하다. 서버측 변경들의 비동기적인 이벤트 통지는 분산 애플리케이션의 요소들 사이에동시성을 유지하기 위한 증명된 기술이다. 애플리케이션 프로그램은 데이터베이스 내에 영구적으로 저장된 오브젝트들에 의해 작동될 수 있으며, 널리 공지된 그의 성능 이득을 위하여 캐싱을 이용한다. 만일 다른 경우에 네트워크 내에서 다른 애플리케이션이 데이터베이스 내의오브젝트의 값을 변경한다면, 시스템은 애플리케이션에 이벤트 통지를 전송하여 오브젝트의 값을 갱신한다. 값은 캐시 내에서 갱신되며, 이벤트 통지는 애플리케이션으로 전달되어 그의 계산 또는 온스크린 내의 값을 갱신할 수 있게 된다.The read cache is used to keep copies of the retrieved information. In other words, if an application requires the same information again, it may fetch it from the cache. The cache may be temporary, storing information only for one session, or it may be persistent to keep information on disk between sessions, or even to keep information even when the computer grows. Of course, if the information on the server changes, the cache is useless. This is acceptable in the case of web browsers, and the user is responsible for updating the information from the server. In other cases, this is unacceptable because the information is more dynamic, or because the application is more important. Asynchronous event notification of server-side changes is a proven technique for maintaining concurrency between elements of distributed applications. The application program can be operated by objects stored permanently in the database, and uses caching for its well-known performance gains. In other cases, if another application in the network changes the value of an object in the database, the system sends an event notification to the application to update the value of the object. The value is updated in the cache, and event notifications can be passed to the application to update its calculations or values in the on-screen.

기록 캐시는 데이터에 대하여 수행된 변경들을 일시적으로 보유하는 데에 이용된다. 클라이언트측 애플리케이션이 그의 캐시 내에 오브젝트들에 대한 변경들을 수행하게 되면, 이들 변경들은 클라이언트측 기록 캐시 내에 보유된다. 궁극적으로, 변경들은 데이터베이스 서버를 통하여 기록된다. 클라이언트와 서버가 연결되어 있는 한, 변경들은 애플리케이션 내에서 커미트 연산이 수행될 때에 기록된다. 캐시 매니저 및 동시발생 제어 매니저의 방법에 의존하여, 변경들은 더 빨리 기록될 수도 있지만, 최소한 기록은 커미트 타임에 완료된다.The write cache is used to temporarily hold the changes made to the data. When a client-side application makes changes to objects in its cache, these changes are retained in the client-side write cache. Ultimately, changes are recorded through the database server. As long as the client and server are connected, changes are recorded when a commit operation is performed within the application. Depending on the cache manager and the concurrent control manager's method, changes may be written faster, but at least the recording is done at commit time.

전형적인 캐시 처리 시스템을 이용하여, (서버로부터 클라이언트로의 변경들을 동기화하는) 이벤트 통지 및 (클라이언트로부터 서버로 동기화하는) 캐시 기록이, 클라이언트 컴퓨터가 데이터베이스 서버에 연결되어 있는 경우에만 효과적으로 작동한다. 그러나, 이러한 시스템들은 연결이 없어질 때의 경우는 처리하지 못한다. 만일 데이터베이스 서버가 커미트 타임에 액세스불가능하다면, 변경들은 기록되지 않으면 유실된다. 유사하게, 어떠한 통지들도 클라이언트로 전송될 수 없기 때문에, 시스템들이 연결되어 있는 않는 동안 데이터베이스 내에서 발생하는 모든 변경들은 유실될 것이다.Using a typical cache processing system, event notification (synchronizing changes from server to client) and cache recording (synchronizing from client to server) work effectively only if the client computer is connected to a database server. However, these systems cannot handle the case when the connection is lost. If the database server is inaccessible at commit time, changes are lost unless they are recorded. Similarly, since no notifications can be sent to the client, any changes that occur in the database while the systems are connected will be lost.

애플리케이션이 펜딩 상태가 됨으로써 고장 예외(failure exception)에 특정하게 응답하는 동안, 연결의 재설정을 기다려 커미트 연산이 완료될 수 있는데, 이는 몇 가지의 이유로 바람직하지 않은 해결책이다. 첫 번째로, 이는 애플리케이션 개발자에게 이러한 문제점의 처리 부담을 준다. 이러한 운전 정지를 정확하게 처리하는 것은 어려우며, 모든 애플리케이션 개발자들이 이를 정확하게 처리하는 기술 또는 예산을 가지고 있을 것 같지는 않다.While the application is in a pending state specifically responding to a failure exception, it can wait for the connection to reset and the commit operation can complete, which is an undesirable solution for several reasons. First, this puts an application developer on the burden of handling this problem. It's difficult to handle these outages accurately, and not all application developers are likely to have the skills or budget to handle them correctly.

두 번째로, 애플리케이션은 이러한 대기하는 동안 본질적으로 정지된다. 완료되지 않은 트랜잭션 펜딩 때문에, 아른 어떠한 데이터베이스 연산들도 수행될 수 없게 되는데, 이는 이들이 동일한 트랜잭션의 일부가 되기 때문이다. 결국, 애플리케이션의 의미를 위배하게 된다.Secondly, the application essentially hangs during this wait. Because of incomplete transaction pending, no other database operations can be performed because they are part of the same transaction. In the end, it violates the meaning of the application.

또한, 애플리케이션이 고의적으로 또는 우연히 정지된다면, 애플리케이션의 펜딩 상태는 유실될 것이며, 모든 변경들 또한 마찬가지로 유실된다.In addition, if the application is intentionally or accidentally stopped, the pending state of the application will be lost, and all changes will be lost as well.

시스템들은 많은 이유들로 인하여 연결이 끊어질 수도 있다. 계획되지 않은 예산들이 있을 수도 있다. 즉, 네트워크 링크들이 하드웨어 또는 소프트웨어 고장, 정체 또는 무선 링크 인터페이스로 인하여 일시적으로 정지될 수도 있다. 이러한 계획되지 않은 예산들은 과거보다 오늘날 더 공통적인데, 이는 더 많은 시스템들이 광범위한 분산 구성에서 작동하여 불확실한 다이얼업 또는 무선 링크들 상에서 통신하기 때문이다. 또한, 계획된 예산들이 있을 수도 있다. 예를 들어 휴대용 컴퓨터는 장차의 클라이언트들에게 가격을 매기기 위하여 기계를 이용하는 판매 대표자에 의해 단지 간헐적으로 연결되며, 그리고 종종 가격 변화를 다운로드하기 위하여 본부에 연결될 수도 있다.Systems may be disconnected for many reasons. There may be unplanned budgets. That is, network links may be temporarily stopped due to hardware or software failures, congestion, or wireless link interfaces. These unplanned budgets are more common today than in the past because more systems operate in a wide range of distributed configurations to communicate over uncertain dial-up or wireless links. There may also be planned budgets. For example, portable computers are only intermittently connected by sales representatives who use the machine to price future clients, and often may be connected to headquarters to download price changes.

요약하면, 기존의 캐시 처리 시스템들도 유용하기는 하지만, 통신 예산의 측면에서 이들의 작동을 개선하는 것이 바람직하다.In summary, existing cache processing systems are useful, but it is desirable to improve their operation in terms of communication budgets.

이벤트 통지Event notification

데이터 완전성의 문제는, 데이터베이스 내의 오브젝트들을 록킹함으로써, 종래의 염세적인 동시발생 제어가 이용되는 애플리케이션의 경우 논쟁의 여지가 있다. 만일 애플리케이션이 오브젝트들 상에서 독점적인 록을 보유한다면, 다른 애플리케이션들은 이들을 갱신할 수 없으며, 이에 따라 어떠한 통지들도 전송될 필요가 없고, 누구도 대기할 필요가 없다. 이에 대하여 적어도 두 개의 실제적인 논쟁이있다.The problem of data integrity is controversial for applications where conventional pessimistic concurrency control is used by locking objects in a database. If the application holds exclusive locks on the objects, other applications cannot update them, so no notifications need to be sent and no one needs to wait. There are at least two practical debates on this.

첫 번째로, 염세적인 동시 제어는 광범위한 분산 환경에서는 실용적이지 못하다. 간헐적인 연결을 갖는 곳에서는 절대로 아니다. 구성은 판매원으로 하여금 본부내 데이터베이스 내의 오브젝트들 상의 록들을 보유하기 위하여 이동할 수 없게 하며, 이는 예를 들어 본부가 가격을 변경하는 것을 막기 위해서이다. 경험은 이러한 광범위한 분산 환경들에서는 단지 실용적인 동시성 제어 모델 만이 최적이라는 것이 경험에 의해 제시되며, 여기서 원격 애플리케이션들은 데이터베이스 내에 록들을 보유하지 못하고 대신에 이벤트 통지에 응답한다.First, pessimistic simultaneous control is not practical in a wide range of distributed environments. Absolutely not where you have intermittent connections. The configuration prevents the salesperson from moving to hold the locks on the objects in the on-premises database, for example to prevent the headquarters from changing the price. Experience suggests by experience that only a practical concurrency control model is optimal in such a wide range of distributed environments, where remote applications do not have locks in the database and instead respond to event notifications.

두 번째로, 록킹의 관리에도 불구하고, 동일한 애플리케이션에 의해 개시되는 호출 방법에 의해 서버 상에서 변경이 수행될 수도 있다. 이후, 이러한 측면 효과들은 이벤트 통지를 이용하여 원격 애플리케이션으로 전파된다. 어떠한 경우에는, 롱-런닝 방법을 이용하여, 방법이 완료되는 시간까지 연결이 끊어질 수도 있으며, 이에 따라 저장 및 전송 시스템 내에서 이벤트 통지가 대기될 필요가 있다.Secondly, despite the management of locking, the change may be performed on the server by the calling method initiated by the same application. These side effects are then propagated to the remote application using event notification. In some cases, using the long-running method, the connection may be disconnected by the time the method is completed, so event notification needs to be waited for in the storage and transmission system.

서버측 방법들이 쇼트-런닝인, 이러한 개요가 전형적인 트랜잭션 처리 애플리케이션에서는 나타날 것 같지 않은 반면, 오늘날에는 이를 필요로 하는 다른 애플리케이션 타입들이 있다. 예를 들어, 애플리케이션은 디스상의 파일들이 기록 상태의 트랙을 유지하며, 호출되는 방법은 백업 작업이 될 수도 있고; 백업 작업이 완료된 후, 변경된 기록 상태 플래그들은 애플리케이션으로 전송되어야 하며, 그리고 이는 대기될 필요가 있는데, 이는 네트워크 링크가 일시적으로 방해되기 때문에 백업 작업을 방해할 어떠한 필요도 없기 때문이다.While this overview is unlikely to appear in typical transaction processing applications, where server-side methods are short-running, there are other application types that require it today. For example, an application may maintain a track of files on disk, and the method called may be a backup operation; After the backup operation is completed, the changed write status flags must be sent to the application, and it needs to be waited because there is no need to interrupt the backup operation because the network link is temporarily interrupted.

저장 및 전송 메세징 시스템(Store-and-forward messaging systems)Store-and-forward messaging systems

저장 및 전송 또한 널리 공지된 기술이며, 여기서 컴퓨터 위치로 전송되는 메세지들은 목적지 컴퓨터가 이용불가능한 경우 일시적으로 대기 저장되며, 연결이 설정되는 즉시 전달된다.Storage and transmission is also a well known technique, where messages sent to a computer location are temporarily queued if the destination computer is unavailable and delivered as soon as a connection is established.

도달가능성 기술에 의한 지속성(Persistence by reachability technology)Persistence by reachability technology

어떠한 시스템들에서, 오브젝트 데이터베이스는 잠정적으로 지속적인 부류의 오브젝트가 애프리케이션 내에 생성될 때 여전히 일시적이라는 규정 하에서 작동한다. 오브젝트는 어떠한 특정한 방법들 또는 상태의 실행을 통하여 명백하게 세이브될 때에만 영구적으로 된다.In some systems, the object database operates under the provision that a potentially persistent class of objects is still temporary when created in the application. An object is permanent only when it is explicitly saved through the execution of any particular method or state.

이러한 시스템에서, 오브젝트들은 또한 서로에 대하여 관련될 수도 있다. 이러한 관련들든 직접적일 수도 있으며, 이에 따라 오브젝트는 직접 포인터 또는 다른 오브젝트에 대한 어드레스 또는 패스를 포함하는 특성을 갖게 된다. 변형적으로, 이들은 간접적일 수도 있으며, 이에 따라 두 오브젝트들 간의 결합 또는 링크와 같이 작용하는 제 3 오브젝트가 있게 된다.In such a system, the objects may also be related to each other. These associations may be direct, such that an object has the property of including a direct pointer or an address or path to another object. Alternatively, they may be indirect, such that there is a third object that acts as a join or link between the two objects.

이러한 시스템들은 적어도 하나의 잠정적인 문제들을 갖는다. 즉, 영구적인 오브젝트는 결코 세이브되지 않았던 오브젝트에 대한 현수(dangling) 참조, 포인터를 가질 수도 있으며, 이에 따라 애플리케이션이 오브젝트 구조를 재생성하고자 할 때 존재하지 않게 된다.Such systems have at least one potential problem. In other words, a persistent object may have a dangling reference, a pointer to an object that has never been saved, so that it does not exist when the application wants to recreate the object structure.

이러한 문제에 대한 공통 해결책은 "과도 지속성(transitive persistence)"으로도 불려지는 접근가능성을 통한 자동 지속성(automatic persistence throughreachability)이다. 이러한 기술을 이용하는 시스템들은 참조를 자동으로 통과하여, 영구적인 오브젝트들로부터 접근가능한 모든 오브젝트들을 발견하며, 이들을 세이브한다.A common solution to this problem is automatic persistence throughreachability, also called "transitive persistence." Systems using this technique automatically pass a reference, find all accessible objects from persistent objects, and save them.

그러나, 이러한 시스템들은 단지 단일 데이터베이스 내에서만 이러한 접근가능성을 통한 지속성을 실행한다. 몇 개의 데이터베이스로부터의 오브젝트들을 수용하고, 개별적인 데이터베이스들 내의 오브젝트들 간의 관계를 지원하는 좀 더 복잡한 애플리케이션 시스템들은 지속성의 자동 처리를 제공하지 않는다.However, these systems implement persistence through this accessibility only within a single database. More complex application systems that accept objects from several databases and support relationships between objects in separate databases do not provide automatic handling of persistence.

이중 오브젝트 해결 기술Dual object resolution technology

데이터베이스로부터 데이터를 검색하는 모든 시스템들에는, 동일한 데이터를 두 번 검색할 가능성이 있다. 이는 파일로부터 데이터를 읽는 가장 단순한 프로그램들, 및 보통의 관련 테이블들을 이용하는 프로그램들 내에서 그렇다. 이중 검색의 가능성은, lost update로서 알려진 잠행성 프로그램 에러 가능성을 생성한다. 의사 코드로 기록된 다음 예를 고려해보자.In all systems that retrieve data from a database, there is a possibility to retrieve the same data twice. This is the case within the simplest programs that read data from a file, and programs that use ordinary related tables. The possibility of double retrieval creates the possibility of a latent program error known as a lost update. Consider the following example written as a pseudo code:

만일 두 개의 첫 번째 상태들이 동일한 아이템을 찾는 데에 동시에 일어난다면, 동일한 아이템의 특성에 적용된 두 개의 변경들을 가질 것으로 기대되며, 이에 따라 특성은 300 만큼 증가되지만, 실제로는 일어나지 않을 것이다. 프로그램은 최초 특성에 대한 두 개의 카피들을 갖는다. 예를 들어, 최초의 값이 10,000이라고하자. 프로그램의 제 3 스테이트먼트는 특성 1100을 형성할 것이다. 제 4 스테이트먼트는 특성 1200을 형성할 것이다. 제 4 스테이트먼트는 데이터베이스에 1100을 기록할 것이다. 마지막 스테이트먼트는 데이터베이스에 1200을 기록할 것이다. 실제적으로, 100의 부가는 유실된다.If two first states occur simultaneously to find the same item, it is expected to have two changes applied to the same item's property, so that the property is increased by 300, but will not actually happen. The program has two copies of the original characteristic. For example, let's say the initial value is 10,000. The third statement of the program will form the characteristic 1100. The fourth statement will form the characteristic 1200. The fourth statement will write 1100 to the database. The last statement will write 1200 to the database. In practice, the addition of 100 is lost.

동일한 트랜잭션 콘텍스트 내에서 모든 연산들이 일어날 때 조차도 에러가 발생하기 때문에, 트랜잭션 처리 또는 동시성 제어는 이 문제를 해결하지 못한다는 것을 유념하자. 동시성 제어는 개별적인 프로그램들이 충돌하는 것을 막지만, 프로그래밍 로직 내에서의 에러 가능성을 없앤다.Note that transaction processing or concurrency control does not solve this problem, because an error occurs even when all operations occur within the same transaction context. Concurrency control prevents individual programs from colliding, but eliminates the possibility of errors in programming logic.

이는 간단한 에러이며 프로그래머는 두 개의 최초 판독 연산들이 실제적으로 동일한 오브젝트에 참조되는 지를 주목하면서 테스트한다는 것이 논의될 수 있다. 그러나, 이는 오브젝트 검색이 매우 간접적일 수도 있기 때문에 어려울 수도 있다. 우리는 두 개의 개별적인 사람들을 초기에 발견하였으며, 이후 그들이 일하고 있는 개별적인 부서들을 위치시킨 다음, 이 부서들의 매니저들을 위치시킨다. 우리가 두 개의 다른 경로들을 통하여 동일한 사람에게 갈 수 있음은 명백하지 않을 수도 있다. 유사하게, 우리는 프로그램의 한 부분에서 오브젝트를 검색한 다음, 아마도 다른 프로그래머에 의해 기록되었을 완전히 관련이 없는 부분들에서, 몇 개의 오브젝트들을 검색하는 질문을 실행하며, 상기 오브젝트들 중 하나는 우리가 이미 페치한 것과 같다.This is a simple error and it can be discussed that the programmer tests, noting that two first read operations are actually referenced to the same object. However, this may be difficult because object retrieval may be very indirect. We initially found two separate people, then locate the individual departments in which they work, and then the managers of these departments. It may not be obvious that we can reach the same person through two different paths. Similarly, we search for an object in one part of the program, and then run a query to search for some objects in parts that are not completely relevant, perhaps possibly written by another programmer, one of the objects Same as already fetched.

유실된 갱신 문제의 복잡성으로 인하여, 어떠한 데이터베이스 시스템들도 해결책을 제공하지 못한다. 그러나, 본 출원인의 시스템을 이용하여 상기 문제를 해결하고 유실 갱신의 가능성을 줄일 수 있다.Due to the complexity of the missing update problem, no database system provides a solution. However, the applicant's system can be used to solve the problem and reduce the likelihood of missing updates.

오브젝트 데이터베이스들Object databases

모든 데이터베이스들, 실제로 모든 영구적인 저장소에서 잠정적인 문제들이 발생할 수 있는 반면, 폐쇄된 언어 결합을 갖는 오브젝트 데이터베이스에 의해 더 방해가 되는 것 같다. 이러한 오브젝트 데이터베이스가 더 높은 레벨을 갖는 것으로 보이기 때문에, 애플리케이션이 결합부없이(seamlessly) 통과할 수 있는 오브젝트들의 넓은 바다와 같은 데이터베이스의 오브젝트들을 제시하기 때문에, 가령 오브젝트 대리 복사로 인한 유실 갱신과 같은 에러들이 더 자극시킨다. 유사하게, 오브젝트 데이터베이스들을 이용하는 개발자들은 더 단순한 관련 데이터베이스들의 사용자들 이상을 기대한다.While potential problems can arise in all databases, in fact in all permanent repositories, it seems to be further hampered by object databases with closed language bindings. Since this object database appears to have a higher level, errors such as lost updates due to object surrogate copies, because applications present objects in the database, such as a large sea of objects that can pass seamlessly. To further stimulate. Similarly, developers using object databases expect more than users of simpler related databases.

다이내믹한 동시성 제어 기술Dynamic Concurrency Control Technology

많은 경우들에서, 애플리케이션 프로그램은 원자수(atomicity), 일관성, 분리 및 데이터 소스들로부터 검색된 데이터 상에서 수행되는 연산들의 내구성을 포함하는 동시성 제어의 전형적인 특성들을 필요로 한다. 많은 애플리케이션들은 트랜잭션 및 비트랜잭션 데이터 소스들을 액세스할 필요가 있으며, 개시된 시스템은 모든 제공자들을 지원하도록 설계된다.In many cases, the application program requires typical properties of concurrency control, including atomicity, consistency, separation, and durability of operations performed on data retrieved from data sources. Many applications need to access transactional and non-transactional data sources, and the disclosed system is designed to support all providers.

데이터베이스 시스템들은 전형적으로 동시에 작동하는 트랜잭션들의 분리를 보장하기 위한 록킹에 의존한다. 전형적인 2-상태 로킹 접근은 트랜잭션이 데이터베이스 리소스를 록킹하고, 커미트 또는 중단될 때 까지 록을 유지할 것을 요구한다. 이는 많은 수의 쇼트 트랜잭션들을 이용하는 애플리케이션들에 대하여 우수하게 작동된다. 2-상태 록킹은 더 긴 트랜잭션들, 더 낮은 트랜잭션 레이트, 및 중간 정도의 티어(tier) 데이터 캐싱에 의해 특징지어지는 현대의 웹-기반 애플리케이션들에 대해서는 덜 적절하다. 유명한 데이터베이스 리소스에 대한 록, 예를 들어 스톡 내의 북(book)들의 수를 유지하는 롱 런닝 트랜잭션은 다른 모든 트랜잭션들을 런닝으로부터 보호하며, 이에 따라 전체 웹 사이트를 마비시킨다. 따라서, 최근헤는 변형적인 동시성 제어 메커니즘들에 대한 관심이 증가하였다. 특히, 최적의 동시성 제어 메커니즘이 다수의 데이터베이스 처리 시스템들 및 애플리케이션 서버들에서 실행되었다.Database systems typically rely on locking to ensure isolation of concurrently running transactions. A typical two-state locking approach requires that a transaction locks a database resource and keeps it locked until it is committed or aborted. This works well for applications that use a large number of short transactions. Two-state locking is less appropriate for modern web-based applications characterized by longer transactions, lower transaction rate, and moderate tier data caching. A lock on a well-known database resource, for example a long running transaction that maintains the number of books in a stock, protects all other transactions from running, thus paralyzing the entire web site. Thus, in recent years there has been an increased interest in alternative concurrency control mechanisms. In particular, optimal concurrency control mechanisms have been implemented in many database processing systems and application servers.

두 개의 별개의 상태들, 즉 쇼트 라이트 위상이 뒤따르는 롱-런닝 판독 상태로 구성되는 최적의 트랜잭션들은 또한 커미트 상태로서 불려진다. 판독 상태 동안, 오브젝트들은 록킹없이 검색되며, 이들이 다른 트랜잭션들을 실행하지 않으면서 변형될 수 있는 개인 트랜잭션 캐시 내에 위치된다. 오브젝트들은 커미트 상태 동안 공유 저장소에 다시 기록된다. 록킹 대신에, 최적의 트랜잭션은, 런닝되는 동안 다른 어떠한 트랜잭션도 오브젝트들을 변형시키지 않는 다는 가정에 의존한다. 이러한 가정은 트랜잭션에 의해 만들어진 변경들이 데이터베이스 내에서 세이브되기 전에 유효해진다. 최적의 동시성 제어는 논쟁을 조정하기 위하여 로우를 갖는 시스템들 내에서 다른 방법들을 능가하는 것으로 믿어진다. 오늘날의 e-상업애플리케이션의 대부분은 이러한 프로파일에 맞춘다.Optimal transactions consisting of two distinct states, a long-running read state followed by a short write phase, are also called a commit state. During the read state, objects are retrieved without locking and placed in a private transaction cache where they can be modified without executing other transactions. The objects are written back to the shared repository during the commit state. Instead of locking, the optimal transaction relies on the assumption that no other transaction deforms the objects while running. This assumption is valid before changes made by the transaction are saved in the database. Optimal concurrency control is believed to outperform other methods in systems with rows to reconcile disputes. Most of today's e-commerce applications fit this profile.

최적의 동시성 제어 메커니즘의 이전의 실행은 더 큰 데이터베이스 처리시스템들의 하위-요소로서 유용하였다. 종종, 이들 시스템들 내에 저장된 데이터 만이록킹없이 최적의 방법으로 액세스될 수 있다. 이러한 상황은 인터넷의 증가된 사용의 결과로 나타난 정보의 시작(portals) 및 과도 데이터 액세스에 대한 추세와 충돌한다. 웹 사이트들은 종종, 가령 관련 및 메인프레임 기반 데이터베이스들과 같은 유산(legacy) 데이터 소스들 내에 저장된 빌트 어라운드 데이터(built around data)이다.Previous implementations of optimal concurrency control mechanisms have been useful as sub-elements of larger database processing systems. Often, only data stored in these systems can be accessed in an optimal manner without locking. This situation clashes with the trend for informational and transient data access resulting from the increased use of the Internet. Web sites are often built around data stored in legacy data sources such as related and mainframe based databases.

현대의 많은 애플리케이션 서버들은 도 1에 도시된 전형적인 "스타" 구조를 따른다. 웹 서버 및 애플리케이션 서버 프로세스들은 스타의 중앙에 있다. 이들은 다수의 웹 브라우저들 및 몇 개의 정보 제공자들에 연결된다. 애플리케이션 서버는 정보 제공자들로부터의 데이터를 웹 서버 클라이언트들에게 가져가야하는 책임이 있다. 데이터 캐싱 및 최적 트랜잭션 프로세싱 또한 애플리케이션 서버가 위치되는 중간 티어(tier)에서 이루어진다.Many modern application servers follow the typical "star" structure shown in FIG. Web server and application server processes are at the center of the star. They are connected to multiple web browsers and several information providers. The application server is responsible for bringing data from the information providers to the web server clients. Data caching and optimal transaction processing are also done in the middle tier where the application server is located.

이러한 구조는 단지 웹-기반, 또는 "씬(thin)" 클라이언트들을 갖는 애플리케이션들, 및 한정된 수의 백 엔드 정보 제공자들 만을 액세스하는 것들에 적절하다. 동시에, "씬" 및 "팻(fat)" 클라이언트들이 혼합되어 있는 애플리케이션들에 대해서는 최적이 아니다. 이러한 세팅에 있어서, "팻" 클라이언트는 원격 애플리케이션 서버의 캐시 내에 존재하는 데이터를 액세스할 필요가 있으며, 이는 전형적인 클라이언트/서버 구조와 비교하여 그리 개선된 것이 아니다. 또한, 많은 수의정보 제공자들로부터 단일의 중앙 위치로 비가공(raw) 데이터를 가져가는 것은, 데이터가 클라이언트들에게 유용하게 되기 전에 변형될 필요가 있을 때에, 낮은 확장가능성 관련을 가질 수 있다.This structure is appropriate only for applications with web-based, or "thin" clients, and those accessing a limited number of back end information providers. At the same time, it is not optimal for applications in which "thin" and "fat" clients are mixed. In this setting, the "pat" client needs to access the data present in the cache of the remote application server, which is not much improved compared to the typical client / server architecture. Also, taking raw data from a large number of information providers to a single central location may have low scalability concerns when the data needs to be transformed before it becomes available to clients.

따라서, 네트워크 내의 분산 컴퓨터 시스템들 사이에서 데이터의 완전성을 좀 더 확실하게 유지시킬 수 있는 방법 및 장치가 필요하게 되었다.Thus, there is a need for a method and apparatus that can more reliably maintain data integrity among distributed computer systems in a network.

관련 출원Related Applications

본 발명은 1999년 4월 26일 출원된 미국 출원 제60/131,019호의 미국 가 특허 출원의 연속 출원이며, 상기 제60/131,019호는 1999년 9월 17일 출원된 미국 특허 출원 제09/408,213호의 부분 연속 출원이고, 상기 제09/408,213호는 1997년 7월 15일 출원된 미국 특허 출원 제08/829,929호의 연속 출원이며, 상기 08/829,929호는 1996년 7월 18일 출원된 미국 가 특허 출원 제60/021,980호의 연속 출원이다. 이들 각 출원들은 본원의 참조로서 인용된다.The present invention is a continuation of US Provisional Patent Application of U.S. Application No. 60 / 131,019, filed Apr. 26, 1999, which discloses US Patent Application No. 09 / 408,213, filed September 17, 1999. Partial Serial Application, 09 / 408,213, which is a continuation of US Patent Application No. 08 / 829,929, filed Jul. 15, 1997, and 08 / 829,929, which is a US Provisional Patent Application, filed Jul. 18, 1996 Serial No. 60 / 021,980. Each of these applications is incorporated herein by reference.

본 발명은 연합 스폰서 연구 및 개발에 기초하지 않는다.The present invention is not based on federated sponsor research and development.

본 발명은 분산 컴퓨터 시스템들을 가로질러 데이터의 완전성을 유지하기 위한 소프트웨어-실행 방법들, 시스템들 및 제조 규정의 분야에 관한 것이다.The present invention relates to the field of software-implementing methods, systems, and manufacturing regulations for maintaining data integrity across distributed computer systems.

도 1은 종래의 스타 구조를 갖는 네트워크를 도시한다.1 shows a network having a conventional star structure.

도 2는 본 발명에 따른 분산 구조를 갖는 네트워크를 도시한다.2 shows a network with a distributed structure in accordance with the present invention.

개시된 기술을 이용하는 시스템들은 분산된 컴퓨터 시스템들의 네트워크가 분산된 컴퓨터 시스템들을 가로질러 저장되는 데이터의 완전성을 유지시킬 수 있다. 개시된 기술을 이용하게 되면, 하기를 포함하는 이러한 목적들 및 다른 목적들, 특징들 및 장점들을 달성할 있게 된다.Systems using the disclosed technology can maintain the integrity of data stored across a network of distributed computer systems. Using the disclosed technology, it is possible to achieve these and other objects, features and advantages, including the following.

ㆍ원격 기능 호출에 의한 상태 전송;• status transfer by remote function call;

ㆍ저장 전송 성능을 갖는 캐싱;Caching with storage transfer capability;

ㆍ도달가능성에 의한 지속성;• persistence by reachability;

ㆍ이중 오브젝트 해결;Double object resolution;

ㆍ분산 방법들; 및Dispersion methods; And

ㆍ다이내믹한 동시성 제어들.Dynamic Concurrency Controls.

본 발명의 시스템은 새로운 방법들로 몇 개의 공지된 기술들을 결합시키며, 종래 시스템들의 문제들을 제기하기 위한 새로운 기술들을 부가한다. 본 발명의 시스템은 기술들의 특정한 결합들 통하여 몇 가지의 특정한 문제들을 제기한다. 시스템은 또항 이러한 서비스들을 유일하게 결합하여 단일 인프라구조를 제공하는데, 이 단일 인프라구조는 전형적인 데이터베이스들(방법들 없이 영구적인 저장소) 및 오브젝트 데이터베이스들(방법들이 있는 영구적인 저장소)에 부가하여, 서비스 제공자들(영구적인 저장소가 없는 방법들)을 지원한다.The system of the present invention combines several known techniques in new ways and adds new techniques to address the problems of conventional systems. The system of the present invention raises several specific problems through specific combinations of techniques. The system also uniquely combines these services to provide a single infrastructure, which, in addition to typical databases (persistent storage without methods) and object databases (persistent storage with methods), Support providers (methods without permanent storage).

완전성의 문제를 유입시키지 않으면서 다른 타입의 서비스들을 통합하는 것은 상당히 어렵다. 실제로, 분산 애플리케이션 시스템을 구성하는 것은 어떠한 모든 경우에 있어서 어려운데, 이는 트래픽 패턴들이 부적당한 방법으로 결합될 때에만 프로그램 로직 내의 에러들이 명백할 수도 있기 때문이다. 본 발명이 시스템은 이들 문제점들을 제기한 몇 개의 방법들을 도입하며, 이에 따라 분산 애플리케이션 형성의 어려움을 줄인다.It is quite difficult to integrate different types of services without introducing a problem of completeness. Indeed, constructing a distributed application system is difficult in any case, since errors in program logic may only be apparent when traffic patterns are combined in an inappropriate way. The present system introduces several methods that address these problems, thus reducing the difficulty of forming distributed applications.

좋은 성능을 갖는 분산 애플리케이션을 구성하는 것 또한 상당히 어렵다. 전체 애플리케이션 시스템이 몇 개의 컴퓨터 시스템들을 가로질러 분할되는 방법, 및 통신이 구성되는 방법은 종종 신중하고 미세한-튜닝을 필요로 한다. 이는 애플리케이션 개발자들에게는 어려운 작업이다. 본 출원의 시스템은 성능 튜닝의 일부를 자동화함으로써, 그리고 애플리케이션의 소스 코드의 광대한 변형없이 분할을 바꾸고 통신을 통조하는 것을 좀 더 쉽게 함으로써, 개발자의 짐을 줄여준다. 본 출원의 시스템은 애플리케이션으로부터의 많은 세팅들을 줄이며, 시스템 매니저로 하여금 특정한 구성 내에서 애플리케이션 시스템의 작동을 최적화할 수 있개 하고, 그리고 소스 코드를 변형하지 않고 에러를 최소한으로 유입시키면서, 유용한 기술의 변화, 사업상의 요구, 분산 구조 및 부하에 응답하여 그의 작동을 변형할 수 있게 한다.It is also quite difficult to construct a distributed application with good performance. How an entire application system is divided across several computer systems, and how communication is configured, often requires careful and fine-tuning. This is a difficult task for application developers. The system of the present application reduces the burden on the developer by automating some of the performance tuning and by making it easier to change the partition and coordinate communication without extensive modification of the application's source code. The system of the present application reduces many settings from the application, allows the system manager to optimize the operation of the application system within a particular configuration, and changes in useful techniques while minimizing errors without modifying the source code. Its ability to modify its operation in response to business needs, distributed structures and loads.

용어Terms

본원에서의 설명의 목적으로, 그들의 공통 의미에 부가하여 하기의 정의를 가질 것이다. "제공자"는 정보 또는 서비스들을 제공하는 소프트웨어 시스템이다. 구별이 중요할 때에는, 주요 기능이 정보를 전달하는 제공자인 "정보 제공자", 또는 주요 기능이 어떠한 종류의 프로세싱 서비스를 전달하는 제공자인 "서비스 제공자"로 언급한다. 정보 제공자들은 전형적이고, 상대적인 오브젝트 데이터베이스들, 디렉토리들, 파일 시스템들, 모니터링 에이젼트들, 인터넷, 및 데이터를 제공하는 다른 프로그램들을 포함한다. 서비스제공자들은 비즈니즈 애플리케이션들, 처리 툴들, 백업 에이젼트들, 및 다른 프로그램들을 포함한다.For purposes of explanation herein, the following definitions will be in addition to their common meaning. A "provider" is a software system that provides information or services. When distinction is important, we refer to "information providers" whose primary functions convey information, or "service providers" whose primary functions convey certain kinds of processing services. Information providers typically include relative object databases, directories, file systems, monitoring agents, the Internet, and other programs that provide data. Service providers include business applications, processing tools, backup agents, and other programs.

그러나, 서비스 제공자들과 정보 제공자들 간의 구별은 거의 엄밀하지 않다. 예를 들어, 가장 최근의 데이터베이스는 저장된 절차들을 호출하기 위한 서포트를 제공하고, 인터넷은 카탈로그 데이터를 검색할 뿐 아니라 명령(order)을 위치시키는 데에도 이용될 수도 있다.However, the distinction between service providers and information providers is rarely exact. For example, most recent databases provide support for invoking stored procedures, and the Internet may be used to locate orders as well as retrieve catalog data.

"소비자"는 데이터를 검색하고, 데이터를 변경하며, 데이터를 저장하거나, 서비스들을 호출하는 프로그램이다. 소비자는 어떠한 종류의 애플리케이션 프로그램, 또는 인간으로 하여금 정보 또는 서비스들과 상호작용을 할 수 있게 하는 브라우저와 같은 단순한 인터랙티브 툴이다.A "consumer" is a program that retrieves data, changes data, stores data, or invokes services. A consumer is a simple interactive tool, such as any kind of application program, or a browser that allows humans to interact with information or services.

유사하게, 제공자들과 소비자들 간의 구별 또한 엄밀하지 않다. 단일 소프트웨어 요소는 동시에 소비자 및 제공자가 될 수도 있다. 제공자는 요구에 응답하지만, 이러한 요구를 충족하면서는 소비자로서 작용하지만, 다른 제공자들로부터 다른 서비스들을 요구한다.Similarly, the distinction between providers and consumers is also not exact. A single software component may be a consumer and a provider at the same time. The provider responds to the request, but acts as a consumer while meeting these needs, but requires different services from other providers.

또한, 소비자와 제공자 간의 정보의 흐름이 항상 전형적인 요구/응답과 같이 구성되는 것은 아니다. 제공자는 이벤트 통지 또는 다른 메세지들을 소비자, 또는 다른 제공자들에게 전송한다.Also, the flow of information between the consumer and the provider is not always organized like a typical request / response. The provider sends event notifications or other messages to the consumer or other providers.

시스템은 소프트웨어 및 하드웨어 시스템들을, 이들이 한 컴퓨터 상에서 동일한 프로세스로, 한 컴퓨터 상에서 다른 프로세스들로, 또는 다른 컴퓨터 상에서 다른 프로세스들로 위치되던지; 이들이 정보 또는 서비스들의 제공자들로서 작동하던지 간에; 이들이 요구들을 전송 또는 응답하던지, 또는 이벤트들을 전송 또는 응답하던지 간에, 통신할 수 있게 하는 서비스들을 제공한다.The system comprises software and hardware systems, whether they are located in the same process on one computer, in different processes on one computer, or in different processes on another computer; Whether they act as providers of information or services; They provide services that enable communication, whether sending or responding to requests or sending or responding to events.

원격 기능 호출에 의해 결합되는 상태 전송State transfer combined by remote function call

본 출원인의 시스템은 원격 방법 호출을 이용하여 상태 전송을 결합시킨다. 오브젝트가 액세스될 때, 그의 상태는 현 기술의 데이터베이스 액세스 시스템들의 방법으로 클라이언트로 전송되며 클라이언트측 캐시 내에 저장된다. 이러한 결합은 엄격한 오브젝트 모델 하에서 이루어지며, 오브젝트들은 언어 결합을 통하여 애플리케이션 언어로 네이티브 오브젝트로서 애플리케이션에 노출된다. 오브젝트들의 상태는 직접적으로 접속될 수도 있으며, 이러한 액세스들은 캐시로부터 국부적으로 분리된다(resolved). 상태는 직접적으로 갱신될 수도 있으며, 이러한 변경들은 캐시 내에서 국부적으로 유지되고, 이후 레이지-라이트 알고리즘(lazy-write algorithm) 하에서 서버에 다시 기록된다. 레이지-라이트 알고리즘은 사용되는 동시성 제어 모델 및 최적화 결정에 따라서, 다양한 시간들에서 라이트-쓰루를 결정할 수도 있지만, 정말로 마지막에서는 커미트 연산이 호출될 때에 기록된다. 서버측 방법들은 애플리케이션 프로그래밍 언어의 표준 방법들의 형태로 결합하는 이러한 언어를 통하여 노출된다.Applicant's system combines the state transfer using remote method calls. When an object is accessed, its state is transmitted to the client in the manner of database access systems of the state of the art and stored in the client side cache. This coupling is done under a strict object model, and objects are exposed to the application as native objects in the application language through language binding. The state of the objects may be directly connected, and these accesses are resolved locally from the cache. The state may be updated directly, and these changes are kept locally in the cache and then written back to the server under a lazy-write algorithm. The lazy-light algorithm may determine the write-through at various times, depending on the concurrency control model and the optimization decision used, but at the end it is really written when the commit operation is called. Server-side methods are exposed through this language, which combines in the form of standard methods of the application programming language.

선- 및 후- 방법 동기화Pre- and after-method synchronization

이러한 방법들은 서버 또는 어떠한 다른 컴퓨터 상에서 실행되기 때문에, 분산 방법들의 경우, 클라이언트 및 서버 또는 다른 영향을 받는 컴퓨터들 간의 상태는 동기화되어야 한다. 이에 따라, 서버측 방법이 호출되면, 캐시 매니저는 서버측 방법이 실제적으로 호출되기전 클라이언트 애플리케이션 내의 오브젝트들의 상태에 대하여 만들어진 모든 변경들을 서버에 기록한다. 물론, 클라이언트측 방법들을 수행할 때에 이러한 동기화가 꼭 필요한 것은 아니다.Since these methods run on a server or some other computer, in the case of distributed methods the state between the client and the server or other affected computers must be synchronized. Thus, when the server-side method is invoked, the cache manager writes to the server all changes made to the state of the objects in the client application before the server-side method is actually invoked. Of course, such synchronization is not necessary when performing client-side methods.

기록되는 정보의 양을 최적화하기 위하여 출원인의 시스템의 상태 동기화 서비스의 로직을 변형할 수 있다. 어떠한 상태 변경들은 이 방법에 적절하지 않으며, 이에 따라 이 시점에서 기록될 필요가 없게 된다. 그러나, 일반적인 경우, 상태 동기화 서비스는 이를 결정할 수 없는데, 이는 상기 방법들이 많은 언어들로 실행될 수도 있으며 마음대로 복잡할 수도 있기 때문이다. 이에 따라, 판매측에서만, 모든 특성 변경들에 대해 기록해야 한다. 물론, 이러한 수동 제어는 출원인의 시스템의 가능한 변형이 될 것이다.The logic of the state synchronization service of Applicant's system can be modified to optimize the amount of information recorded. Some state changes are not appropriate for this method and thus do not need to be recorded at this point. In the general case, however, the state synchronization service cannot determine this because the methods may be implemented in many languages and may be complex at will. Therefore, on the sales side only, all property changes should be recorded. Of course, such manual control would be a possible variant of Applicant's system.

서버측 방법이 호출된 후에는, 클라이언트측 캐시와 데이터베이스를 동기화시킬 필요가 있다. 이 방법은 속해있는 오브젝트의 상태를 변경시키거나, 또는 클라이어트 캐시 내에 있는 다른 오브젝트들의 상태를 변경시키는 사이드 효과를 갖는다. 따라서, 방법이 호출된 후, 상대 동기화 서비스는 서버 내에서 변형된 캐시 내의 모든 오브젝트들을 자동으로 동기화시킨다.After the server-side method is called, it is necessary to synchronize the client-side cache and the database. This method has the side effect of changing the state of the object to which it belongs, or of other objects in the client cache. Thus, after the method is called, the relative synchronization service automatically synchronizes all objects in the modified cache in the server.

본 발명의 인프라구조를 통하여 데이터베이스를 완벽하게 액세스하는 방법은 어떠한 문제도 야기시키지 않는다. 이러한 인프라구조는 진행중인 모든 활동을 추적하며, 어떠한 변경이 이루어졌는 지를 결정한다. 만일 직접적인 기술을 이용하여, 인프라구조가 추적할 수 없는 데이터베이스를 액세스한다면, 인프라구조는 데이터베이스로부터의 이벤트 통지에 의존할 수도 있다. 대부분의 데이터베이스 시스템들은 프로그램으로 하여금, "트리거들(triggers)" 또는 다른 기술을 이용하여, 변경들에 대한 통지를 등록할 수 있게 하며, 인프라구조는 이러한 통지들을 캐시 동기화를 위한 기초로서 이용할 수 있다.The method of fully accessing the database through the infrastructure of the present invention does not cause any problem. This infrastructure tracks all activities in progress and determines what changes have been made. If using direct technology to access a database that the infrastructure cannot track, the infrastructure may rely on event notifications from the database. Most database systems allow a program to register notifications of changes using "triggers" or other techniques, and the infrastructure can use these notifications as a basis for cache synchronization. .

만일 인프라구조가 어떠한 기술도 유용하지 않다고 결정한다면, 전체 캐시를 무효화하고 리프레시하는 염세적인 접근을 취해야 한다. 이러한 경우, 방법이 호출되기 전에 모든 펜딩 변경들이 기록될 것이기 때문에, 캐시 내에서는 어떠한 데이터도 유실되지 않는 다는 것을 유념하자.If the infrastructure decides that no technology is useful, it should take a pessimistic approach to invalidate and refresh the entire cache. Note that in this case, no data is lost in the cache because all pending changes will be recorded before the method is called.

애플리케이션 이벤트 통지Application event notification

방법 호출의 결과로서 일어나는 오브젝트들에 대한 이러한 모든 "사이드 효과"과는 캐시를 리프레시하는 데에 이용될 뿐 아니라, 정규 변경 통지로서 클라이언트측 애플리케이션에 다시 통과되어, 애플리케이션이 그의 계산 결과 내의 어카운트에 새로운 값을 이용할 수 있게 하거나, 또는 이를 사용자 인터페이스 내에 디스플레이할 수 있게 한다. 다른 프로그램에 의해 형성된 변경과 방법의 사이트 효과에 의해 야기되는 변경 사이에는 어떠한 근본적인 차이도 없다. 애플리케이션은 이 둘을 통지할 필요가 있다.All of these "side effects" for objects that occur as a result of a method call are not only used to refresh the cache, but are also passed back to the client-side application as regular change notifications, so that the application is able to update the account in its calculation. Make the value available or display it in the user interface. There is no fundamental difference between changes made by other programs and changes caused by the site effect of the method. The application needs to notify them both.

트랜잭션 처리Transaction processing

전형적인 염세적 동시성 제어 하에서, 애플리케이션은 그가 판독한 기록들에 대한 록을 유지한다. 이러한 경우들에 있어서, 선- 및 후-방법 동기화에 대한 전체적인 설명은 트랜잭션 처리를 전혀 포함하지 않는다. 애플리케이션 내에서의 단계들의 순서는 다음과 같다.Under typical pessimistic concurrency control, the application keeps a lock on the records he reads. In such cases, the overall description of pre- and post-method synchronization does not include transaction processing at all. The order of the steps within the application is as follows.

이러한 모든 연산들은 동일한 염세 트랜잭션 콘텍스트 내에서 작동한다. 유일하게 별다른 효과는 방법 사이드 효과로 인해 나타나는 변경 통지를 다루기 위해 애플리케이션이 준비되어야 한다는 것이다. 보통의 환경하에서, 염세 동시성 제어하에서 작동하는 애플리케이션은 전형적으로, 오늘날의 복잡하고 멀티-쓰레드 애플리케이션들에서, 그것이 제어하는 오브젝트들에 대한 변경 통지들에 관련되지 않지만, 하나의 윈도우 또는 쓰레드 내에 보유되는 일부 데이터는 다른 윈도우 또는 쓰레드에 의해 변형될 수도 있으며, 이에 따라 실제로, 다른 어떠한 엔티티와 공유하는 데이터의 어떠한 조각에 대한 변경 통지들을 수용하는 어떠한 코드 조각이 준비되어야 한다.All these operations operate within the same pessimistic transaction context. The only other effect is that the application must be ready to handle the change notifications resulting from the method side effect. Under normal circumstances, an application operating under pessimistic concurrency control is typically not involved in change notifications for the objects it controls in today's complex and multi-threaded applications, but is held within a window or thread. Some data may be transformed by other windows or threads, so in practice, some piece of code must be prepared to accept change notifications for any piece of data shared with any other entity.

그러나, 최적의 동시성 제어 제도에서 작동할 때, 애플리케이션은 데이터베이스 내의 오브젝트들에 대한 어떠한 록도 보유하지 않는다. 데이터베이스에 변경들이 기록되는 시간 마다, 이들은 유효화되고 즉시 커미트된다. 모든 펜딩 변경들은 방법을 호출하기 전에 데이터베이스에 기록되기 때문에, 방법 호출은 펜딩 트랜잭션들을 자동으로 커미트한다. 클라이언트 애플리케이션으로부터 서버로의 방법 호출의 결과는 다음과 같다:However, when operating in an optimal concurrency control scheme, an application does not hold any locks on objects in the database. Every time changes are written to the database, they are validated and committed immediately. Since all pending changes are written to the database before calling the method, the method call automatically commits pending transactions. The result of the method call from the client application to the server is as follows:

본 출원인의 시스템은 다이내믹 동시성 제어에 관련하여 상세히 설명된 다른 옵션을 제공한다. 트랜잭션 처리 서비스들은 방법이 호출될 때 염세적인 동시성 제어로 스위치시킬 수 있다. 이러한 실행 옵션들은 시스템의 구성 세팅의 일부로 선택된다.Applicant's system provides other options described in detail with respect to dynamic concurrency control. Transaction processing services can switch to pessimistic concurrency control when the method is invoked. These run options are selected as part of the system's configuration settings.

저장 전송에 의한 캐싱Caching by Store Transfer

종래의 시스템들의 한정들을 가정하면, 연결이 끊어졌을 때 조차도 트랜잭션 커미트를 수용할 수 있으며, 지속적인 저장 및 전송 큐 내에 트랜잭션을 유지하여, 연결이 재설정될 때 이를 전송할 수 있는 인프라구조를 갖는 것이 바람직할 수도있다.Given the limitations of conventional systems, it may be desirable to have an infrastructure that can accept transaction commits even when the connection is lost, and keep the transaction in the persistent store and transmission queues to send it when the connection is reestablished. have.

본 출원인의 시스템은 이러한 두 개의 성능들, 즉 캐시 처리와 저장 및 전송을 독특하게 결합한다. 캐시 처리 시스템에 정보를 공급하는 저장 및 전송 메세징을 이용하여, 작동이 정지된 동안 일어나는 서버측 변경들의 모든 통지들이 큐 내에 저장되며, 연결이 재설정되자 마자, 변경들은 캐시 및 애플리케이션 내에 전달되고 반영된다.Applicant's system uniquely combines these two capabilities: cache processing and storage and transfer. Using store and forward messaging to provide information to the cache processing system, all notifications of server-side changes that occur during an outage are stored in a queue, and as soon as the connection is reestablished, the changes are delivered and reflected in the cache and application. .

유사하게, 클라이언트측 변경들의 통지 또한 필요한 경우 저장되며, 연결이 재설정되자 마자 서버로 전송된다. 서버로의 이러한 비동시적인 기록이 동시성 제어 메커니즘고의 문제적인 상호작용을 가질 수도 있기 대문에, 이는 애플리케이션 프로그램에 의해, 또는 관리적인 방법에 의해 디스에이블될 수도 있다.Similarly, notification of client-side changes is also stored if necessary and sent to the server as soon as the connection is reestablished. Since this asynchronous recording to the server may have problematic interactions with the concurrency control mechanism, it may be disabled by an application program or by an administrative method.

애플리케이션 투명성Application transparency

본 발명의 통합의 장점은 애플리케이션이 간헐적인 동기 프로세스를 인식할 필요가 없다는 것이다. 애플리케이션은, 오브젝트들이 막대한 풀(pool)로의 즉시 액세스를 제공하는 언어 결합에 의해, 데이터베이스로의 연속적이고 확실한 액세스를 갖는 것 처럼 기록될 수도 있다. 캐시는 애플리케이션의 성능을 개선시키고, 저장 및 전송 큐잉은 모든 변경들이 애플리케이션으로 전달되는 것을 보장하며, 모두 애플리케이션 내에서의 프로그래밍의 스타일에 있어서 어떠한 변경도 없다.An advantage of the integration of the present invention is that the application does not need to be aware of intermittent synchronous processes. The application may be written as if the objects have continuous and secure access to the database by a language combination that provides immediate access to a huge pool. The cache improves the performance of the application, store and transmit queuing ensures that all changes are delivered to the application, and there are no changes in the style of programming within the application.

우연한 작동 정지에 대한 신속한 복구(resilience)Rapid resilience to accidental downtime

이와 같이 캐시 처리와 저장 및 전송 큐잉을 통합하게 되면, 짧은 기간의 우연한 작동 정지에 대하여 전체 시스템을 더욱 신속하게 복구하게 된다. 이러한 우연한 작동 정치는, 특히 다이얼업 또는 무선 연결에 의해 매우 짧을 수도 있다. 예를 들어, 셀룰러폰 연결은 차량이 다리 밑에 있는 동안 끊어질 수도 있으며, 몇초 또는 몇분 내에 재설정된다. 애플리케이션 및 캐시 매니저는 이러한 작동 정지 동안 계속하여 작동될 수도 있다. 그럼에도 불구하고, 서버로부터의 통지들은 유실될 수도 있다.This integration of cache processing and storage and transmission queuing allows the entire system to recover more quickly in the event of a short period of accidental downtime. This accidental set up may be very short, in particular by dial-up or wireless connection. For example, the cellular phone connection may be disconnected while the vehicle is under the bridge, and reset within seconds or minutes. The application and cache manager may continue to operate during this shutdown. Nevertheless, notifications from the server may be lost.

실제적으로, 대부분의 네트워크 프로토콜들은 유실된 연결을 검출하고, 즉시 데이터베이스 서버로 고장을 신호로 알리며, 이렇게 되면 전체 작동 유실로 간주할 것이다. 그러나, 저장 및 전송 기술을 이용하여, 데이터베이스 서버는 그의 작동을 계속하여, 메세지들이 결국에는 도달하고, 어떠한 고장 메세지들도 데이터베이스로 전달되지 않음을 보장한다.In practice, most network protocols will detect lost connections, signal failures immediately to the database server, and this will be considered a total loss of operation. However, using storage and transfer techniques, the database server continues its operation to ensure that messages eventually arrive and that no failure messages are delivered to the database.

연속적으로 작동하는 애플리케이션Continuously running applications

데이터베이스 서버로의 연결이 간헐적인 동안, 애플리케이션이 연속적으로 작동하는 것은 더욱더 일반적인 것으로 되고 있다. 차량, 배 및 비행기들은 재고(inventory)를 처리하는 연속적으로 작동하는 애플리케이션들, 및 연속적으로 작동할 수도 있는 개인용 디지털 보조물로 일컬어지는 것을 포함하는 디스패치 또는 루팅 울트라-경량 휴대용 컴퓨팅 장치들을 구비할 수도 있다. 이러한 경우들에 있어서, 캐시는 연속적으로 살아있도록 유지될 수도 있으며, 변경 통지는 연결이 다운된 동안 큐잉되어야 한다.While the connection to the database server is intermittent, it is becoming more common for applications to run continuously. Vehicles, ships, and airplanes may have dispatching or routing ultra-lightweight portable computing devices, including continuously operating applications that process inventory, and personal digital assistants that may operate continuously. . In such cases, the cache may be kept alive continuously, and the change notification must be queued while the connection is down.

지속적인 캐싱Continuous caching

캐싱과 저장 및 전송의 이러한 통합의 값은 캐시가 지속적인 것으로 만들어질 때 더욱 증가한다. 지속적인 캐시가 없다면, 상기 설명된 이득들은 애플리케이션, 또는 적어도 캐시 매니저가 작동을 유지하는 동안에만 얻어진다. 종래의 비-지속적인 캐시를 이용하게 되면, 캐시 내의 값들은 캐시 매니저가 셧다운되자 마자 버려진다. 이것이 재시작될 때, 캐시 매니저는 데이터베이스로부터 오브젝트들을 다시 페치해야 하며, 이러한 값들은 당연히 현재의 값을 나타내기 때문에, 그 동안 일어났던 변경 통지들을 큐잉할 필요가 없게 된다. 그러나, 많은 경우들에 있어서, 애플리케이션 또는 캐시 매니저가 셧다운될 때 국부 저장소 상에서 지속적이며, 캐시 매니저가 재시작될 때 국부 저장소로부터 재생성되는 지속 캐시를 이용하는 것이 상당히 이롭다. 어떠한 경우들에 있어서, 캐시를 지속시키는 것은 캐시 매니저의 책임이다. 다른 경우들에 있어서, 예를 들어 휴대용 개인용 컴퓨터 상에서 작동할 때에는, 운용 시스템의 책임이다.The value of this integration of caching, storage and transfer increases even more when the cache is made persistent. If there is no persistent cache, the benefits described above are only obtained while the application, or at least the cache manager, remains operational. Using a conventional non-persistent cache, the values in the cache are discarded as soon as the cache manager is shut down. When it is restarted, the cache manager must fetch the objects from the database again, and since these values naturally represent the current values, there is no need to queue change notifications that have taken place. In many cases, however, it is quite beneficial to use a persistent cache that is persistent on the local store when the application or cache manager is shut down and recreated from the local store when the cache manager is restarted. In some cases, it is the cache manager's responsibility to persist the cache. In other cases, when operating on a portable personal computer, for example, it is the responsibility of the operating system.

어떠한 것이 캐시를 지속시키는 데에 책임이 있던지 간에, 상황은 롱-런닝 캐시와 논리적으로 동등하며, 변경 통지들의 저장 및 전송 큐잉은 캐시 내의 정보의 커런시(currency)를 유지하는 데에 이용된다.Whatever was responsible for persisting the cache, the situation is logically equivalent to the long-running cache, and the storage and transmission queuing of change notifications is used to maintain the currency of the information in the cache.

본 출원인의 시스템은 어떠한 유사한 이득들을 제공하도록 구성될 수 있는 복제된 데이터베이스와 대조적일 수도 있다. 그러나, 데이터베이스 복제 기술은 데이터베이스 동질성에 의존하며, 이는 동일한, 또는 적어도 구조적으로 그리고 의미적으로 유사한 데이터베이스가 모든 노드에서 이용될 수 있음을 의미한다. 이는, 가령 휴대용 개인용 컴퓨터 또는 팜탑과 같은 작은 컴퓨터들에 대해서는 실용적이지 않다. 어떠한 경우에 있어서, 본 출원인의 시스템은 단지 지속적인 또는 비-지속적인 캐시에 의한 이득들을 제공하며, 이는 데이터베이스 보다 훨씬 더 쓸모없는 부담되는 기술이다.Applicant's system may be in contrast to a replicated database, which may be configured to provide any similar benefits. However, database replication techniques rely on database homogeneity, which means that identical, or at least structurally and semantically similar databases can be used at all nodes. This is not practical for small computers, such as portable personal computers or palmtops, for example. In some cases, Applicant's system only provides benefits by persistent or non-persistent cache, which is a much more useless technology than a database.

도달가능성에 의한 지속성Sustainability by Reachability

본 출원인의 시스템은 몇 개의 정보 제공자들을 가로지르는 도달가능성을 통하여 지속성의 개념을 넓힌다. 인프라구조가 오브젝트가 지속적일 필요가 있음을 결정할 때 마다, 지속성-쓰루-도달가능성 알고리즘을 통하여, 또는 애플리케이션 프로그램이 그것이 지속적으로 될 것을 명백히 요구하기 때문에, 데이터베이스 제공자에 오브젝트가 지속이될 것임을 결정한다. 이는 다음과 같은 예제들을 포함하는 다수의 기법들 중 어느 하나를 통해 선택된다.Applicant's system broadens the concept of persistence through reachability across several information providers. Whenever the infrastructure determines that an object needs to be persistent, it determines that the object will be persisted through the persistence-through-reachability algorithm, or because the application program explicitly requires it to be persistent. . This is selected through any one of a number of techniques, including the following examples.

상기 대상이 속한 클래스는 특정 데이터 베이스에 정의된 스키마(schema)와 연관되어질 수 있고, 상기 대상은 상기 동일한 데이터 베이스에 저장된다 The class to which the object belongs may be associated with a schema defined in a specific database, and the object is stored in the same database.

상기 대상이 속한 클래스는 어디서 상기 스키마가 왔는지 상관없이 특정 데이터 베이스 저장부로 분류된다 The class to which the object belongs is classified as a specific database storage regardless of where the schema comes from.

상기 대상 또는 특정 대상이 속한 클래스는 특정한 저장과 동적으로 연관되어질 수 있다 The object or class to which a specific object belongs may be dynamically associated with a particular storage.

상기 시스템은 그 자체의 특정 기준을 기반으로 사용되는 저장부를 결정할 수 있다 The system can determine the storage to be used based on its own specific criteria.

이러한 경우들에서, 도달가능한 관계를 갖는 상기 두개의 대상들은 상이한 데이터 베이스에 둘 수 있다. 이들 간의 상호관계는 상이한 저장부에 저장할 수 있는 참조를 통해 적용될 수 있다.In such cases, the two objects with an reachable relationship may be placed in different databases. The interrelationship between them can be applied through references that can be stored in different storage.

이러한 환경에서, 상기 도달할 수 있는 알고리즘에 의한 지속성은 상기 대상들이 저장될 수 있는 곳에 상관 없이 실질적으로 동일한 방식과 부합한다. 상기 대상들이 상기 캐시 메모리 또는 상기 애플리케이션의 자체 메모리에 있는 한, 상기 대상들 간의 상호관계들은 지속성 인프라구조로 공지된다. 본 출원인의 시스템의 도달성 측면에 의한 지속성은 각 지속 대상으로브터 도달할 수 있는 모든 대상들을 식별하여 이들을 지속적으로 만드는 것으로 이러한 참조들을 조정(navigate)하고, 대상들이 상기 일반적인 방식으로 지속된다고 결정한다. 그 다음, 상기 나열된 기법들 중 하나를 이용하여 데이터 베이스의 대상에 대한 지속성을 결정하고 일반적인 방식으로 상기 지속성에 영향을 준다.In this environment, the persistence by the reachable algorithm conforms to substantially the same way regardless of where the objects can be stored. As long as the objects are in the cache memory or the application's own memory, the correlations between the objects are known as a persistence infrastructure. The persistence by the reachability aspect of Applicant's system navigates these references by identifying all the objects that can be reached by each persistent object and making them persistent, and determines that the objects persist in the above general manner. . Then, one of the techniques listed above is used to determine the persistence for the subject of the database and affect the persistence in a general manner.

대상 복제 해법(Duplicate Object Resolution)Duplicate Object Resolution

본 출원인의 시스템은 대상 복제 해법의 문제를 상기 데이터베이스로부터 이미 활성화 되었거나 상기 클라이언트에서 서버로 패치된 대상이 검색된 것을 자동으로 검출하는 것으로 해결한다. 상기 시스템은 현재 활성화 된 모든 대상들을 캐시에 유지하기 때문에, 대상이 패치되기만 하면 상기 시스템은 상기 새롭게 패치된 대상이 상기 캐시에 존재하는 대상을 복재한 것인지 결정하고, 만일 그렇다면 상기 새로운 복제를 버리고 상기 캐시에 존재하는 것을 이용한다.Applicant's system solves the problem of a subject replication solution by automatically detecting that a subject has already been retrieved from the database or patched from the client to the server. Since the system keeps all currently active targets in the cache, once the targets are patched, the system determines whether the newly patched target has replicated the existing objects in the cache, and if so discards the new replica and the Use what exists in the cache.

상기 기법은 상기 대상이 상기 데이터베이스에서 직접 패치되는 경우마다 이름에 의해서, 한 대상에서 다른 것으로의 내부-대상 관련, 상관 관계 또는 포인터를 따르는 것에 의해서, 어떠한 특정 기준과 일치되는 대상들의 수를 돌려주는 쿼리의 수행에 의해서, 최근에 사용된 대상들의 목록을 참조하는 것에 의해서, 또는다른 기법에 의해서 적용될 수 있다. 대상들이 어떻게 도달하는 가는 문제가 되지 않으며, 도달하는 경우, 상기 시스템은 이것이 복제된 것으로 검출되면 새로운 복사본을 버린다.The technique returns the number of subjects that match a certain criterion by name, by following an in-object association, correlation or pointer from one subject to another whenever the subject is patched directly from the database. It can be applied by performing a query, by referencing a list of recently used objects, or by other techniques. It does not matter how the objects arrive, and if so, the system discards the new copy if it is detected as a duplicate.

성능 개선 편차들(Performance Improvement Variations)Performance Improvement Variations

물론, 많은 경우에서, 상기 시스템은 이미 패치되어 상기 캐시에 존재하는 대상을 검출하여 상기 데이터베이스 서버에 대한 요청까지 모두 제거할 수 있고, 그로인해 네트워크 혼잡과 데이터베이스 부하를 줄이며 반응 시간을 개선할 수 있다. 다른 경우에서, 쿼리를 실행하는 경우와 같이, 상기 데이터 베이스의 이용을 피할 수 없는 경우도 있다. 임의의 경우에서, 이러한 편차들은 성능에만 영향을 미치며, 상기 시스템의 기본적 조작에 영향을 주지는 않는다.Of course, in many cases, the system can detect objects already patched and present in the cache to eliminate all requests to the database server, thereby reducing network congestion and database load and improving response time. . In other cases, the use of the database may be unavoidable, such as when executing a query. In any case, these deviations only affect performance and do not affect the basic operation of the system.

분산된 방법들Distributed methods

대상들을 저장하는 대상 데이터베이스, 그리고 이러한 대상들은 모두 특성들과 방법들을 가진다. 상기 스키마는 대상의 주어진 클래스에 대해 존재하는 방법들을 정의한다.Object databases that store objects, and these objects all have properties and methods. The schema defines the methods that exist for a given class of objects.

일반적인 대상 데이터베이스에서, 상기 방법들은 상기 동일한 대상 데이터베이스에 적용된다. 상기 방법의 정의는 간단하게 그 이름, 이것이 속한 클래스을 주고 특정한 위치 특정은 요청되지 않는데, 그 위치는 상기 대상의 위치에 포함되기 때문이다.In a general target database, the methods apply to the same target database. The definition of the method simply gives the name, the class to which it belongs and no specific location specification is required, since the location is included in the location of the object.

그러나, 이러한 환경에서, 이는 어떤 부분에서 적용될 필요가 있을 수 있으다. 예를 들어서:In this environment, however, this may need to be applied in some part. For example:

상기 데이터베이스는 완전하게 사용될 수 없을 수 있다. 예를 들어서, 만일 대상들이 연관되는 데이터베이스에 저장되면, 상기 실행 방법들의 능력은 제한될 수 있다. 이러한 경우, 상기 방법들은 분리된 프로그램으로 적용될 수 있으며, 상기 데이터베이스가 존재하는 동일한 장비에서 실행될 것이고, 다른 것을 실행할 것이다. The database may not be fully usable. For example, if objects are stored in the associated database, the capabilities of the methods of execution may be limited. In this case, the methods can be applied as separate programs, and will run on the same equipment where the database is present, and will do something else.

주어진 대상 데이터베이스에 대한 완전한 방법 실행 능력은 작은 용량의 저장부에 대한 데이터를 복제할 필요가 있을 수 있다. 복제는 개선된 허용성, 줄어든 네터워크 혼잡 그리고 개선된 응답시간을 이유로 종종 사용된다. 그러나, 만일 상기 복제된 데이터베이스가 방법 실행을 지원하지 않으면, 상기 시스템은 돌아가서 원본 대상 데이터베이스들에서 방법들을 실행한다. Full method execution capability for a given target database may need to replicate data for a small amount of storage. Replication is often used because of improved tolerance, reduced network congestion, and improved response time. However, if the replicated database does not support method execution, the system goes back and executes the methods on the source target databases.

상기 데이터베이스에 저장된 대상들은 상기 시스템의 소프트웨어나 물리적 장비들을 나타낼 수 있다. 이러한 대상들,-예를 들어 라우터-,는 상기 대상 자체에서 조작을 프로그램으로 적용할 수 있는 능력이 있고, 관리 서비스들은 다른 곳에 적용되는 기능들을 제공할 수 있으며, 그리고 상기 애플리케이션은 그래픽 사용자 인터페이스를 포함하는 기능을 제공할수 있고, 그로인해 상기 사용자 워크 스테이션에서 조작된다. 이러한 모든 경우에서, 이러한 서비스들은 비록 이들이 모두 네트워크 상에서 적용되더라도, 대상의 방법으로 본다. Objects stored in the database may represent software or physical equipment of the system. These objects, such as routers, have the ability to programmatically manipulate operations on the object itself, management services can provide functions that apply elsewhere, and the application provides a graphical user interface. It is possible to provide a function to include, thereby operating at the user workstation. In all these cases, these services are viewed in a targeted way, even though they all apply on the network.

클래스의 방법들은 상속 프로그램들 또는 개발자가 제어할 필요가 줄어든 외부 프로그램들(Third-party)을 적용할 수 있다. 상기 방법들은 상이한 프로그램 언어들, 데이터베이스들 또는 운영체계에 적용될 수 있다. 그럼에도 불구하고, 애플리케이션 개발에서 이러한 방법들의 사용을 간단하게 하기위해서, 전체와 융합되는 한 부분으로서 이러한 다양한 방법들이 제공되어야한다. 당연히 이러한 개별 방법 적용들과 상호 연관된 소프트웨어 일부를 생성할 수 있지만, 이러한 연결 서비스들의 생성은 많은 작업이 필요하며, 구성에서의 모든 변화들은 상기 코드의 변화들이 필요하다. 상기 방법들의 위치와 종류에 상관 없이, 스키마들의 등록을 통해서 외부적으로 상기 관계들을 정의하고 유지할 필요가 있다. The methods of the class can apply to third-party inherited programs or external programs that require less developer control. The methods can be applied to different programming languages, databases or operating systems. Nevertheless, to simplify the use of these methods in application development, these various methods must be provided as part of the integration with the whole. Naturally, it is possible to generate a piece of software that is correlated with these individual method applications, but the creation of such connection services requires a lot of work, and all changes in configuration require changes in the code. Regardless of the location and type of the methods, there is a need to define and maintain the relationships externally through the registration of schemas.

그래서, 본 출원인의 시스템은 단지 그 이름 만이 아닌 상기 방법의 위치를 특정하는 방법의 정의들을 포함하는 스키마들을 허용한다. 실행 중에, 상기 시스템은 애플리케이션들이 상기 데이터 베이스의 대상을 억세스하는 것을 허용하며, 간단히 표준인 것처럼 상기 대상에서 방법을 호출하는 것을 허용하고, 내장 방법을 허용한다. 상기 시스템은 상기 적절한 위치에 대해 요구되는 방법 호출의 디스패칭을 관리할 것이다.Thus, Applicant's system allows schemas that include definitions of the method of specifying the location of the method, not just its name. In execution, the system allows applications to access a subject of the database, simply to invoke a method on the subject as standard, and to allow a built-in method. The system will manage the dispatching of method calls required for the appropriate location.

방법 적용Apply method

방법의 정의는 상기 방법이 어떻게 적용될 것인가 역시 특정해야만 한다. 이는 예를 들어서, 일반적인 서브루틴 호출로 호출되는 C 또는 C++ DLL일 수 있다. 이는 또한 자바 프로그램, 실행 가능한 프로그램 또는 BAT 파일일 수 있다. 상기 스키마는 사용된 기술을 식별하고 어떻게 방법이 호출되는 지를 식별한다.The definition of the method must also specify how the method will be applied. This can be, for example, a C or C ++ DLL that is called by a normal subroutine call. It can also be a Java program, an executable program, or a BAT file. The schema identifies the technique used and how the method is invoked.

또한, 상기 방법은 어떻게 상기 대상이 식별되는 지를 특정해야만 한다. 방법이 외부 프로그램으로서 적용되는 경우, 이는 당연히 원본 대상의 내용(context)을 가지지 못한다. 상기 방법 스키마는 어떻게 상기 호출이 실행되었는가를 특정하고, 이러한 방식으로 상기 내용이 유지될 수 있다.In addition, the method must specify how the object is identified. If the method is applied as an external program, it naturally does not have the context of the source object. The method schema specifies how the call is executed and in this way the content can be maintained.

클래스 및 인스턴스 레벨 방법들Class and instance level methods

방법들의 외부적 적용들을 다루기위한 상기 기법은 상기 클래스에 부가된 클래스-레벨 방법들를 위해서 상기 대상에 부가되는 인스턴스 레벨의 방법들에서와 동일하게 동작한다. 인스턴스 레벨 방법으로 구성된 외부적 방법을 호출하는 경우, 상기 원본 대상의 식별은 상기 방법으로 전달된다. 상기 방법은 예를 들어, 상기 전달될 수 있는 식별이 상기 스키마에서 상기 호출에서의 충돌과 같은 방법 정의의 일부로서 식별되는 것으로 실행되고, 이는 실행 가능한 것의 런칭시 명령 라인 파라메터 또는 적절한 모든 특정 구성이 된다.The technique for dealing with external applications of the methods works the same as in the instance level methods added to the object for the class-level methods added to the class. When invoking an external method configured as an instance level method, the identification of the original subject is passed to the method. The method is implemented, for example, as the conveyable identification is identified as part of a method definition, such as a conflict in the call in the schema, which means that the command line parameter or any suitable specific configuration at launch of the executable is do.

선 및 후속 방법 동기화Line and follow-up methods

이전에 논의된 바와 같이, 상태 전송과 함께 원격 방법 호출을 병합하는 시스템은 방법의 수행 전과 후에 상기 클라이언트와 서버 간의 상태를 동기화하도록 해야한다. 분산된 방법에있어서, 상기 상태 동기화는 분산된 방법이 실행되는 컴퓨터를 포함해야만 한다.As previously discussed, a system that merges remote method calls with state transfers should attempt to synchronize the state between the client and server before and after the method is performed. In a distributed method, the state synchronization must include a computer on which the distributed method is executed.

이는 적어도 다음과 같은 방식들로 실행될 수 있다.This can be done in at least the following ways.

상기 상태는 대상의 지속 저장을 제공하는 상기 데이터베이스와 동기되어야 한다. 그 다음, 상기 방법은 실행 전에 상기 데이터베이스로브터 상기 상태를 검색할 수 있다. 상기 방법의 실행 동안, 상기 시스템은 상기 데이터베이스에 모든 지속성 상태 변화들을 기록한다. 상기 클라이언트측 캐시 관리자는 이러한 상태 변화들을 인식하고, 이들을 후속 방법 상태 동기화의 기초로 사용한다. 만일 상기 방법이 대상의 복사본을 이미 그 캐시에 가지는 컴퓨터 상에서 수행되면, 이는 상기 데이터베이스에서 상기 데이터를 패치할 필요가 없다는 것을 유의한다. The state must be synchronized with the database providing persistent storage of the subject. The method can then retrieve the state of the database logger prior to execution. During the execution of the method, the system records all persistent state changes in the database. The client side cache manager recognizes these state changes and uses them as a basis for subsequent method state synchronization. Note that if the method is performed on a computer that already has a copy of the object in its cache, it does not need to patch the data in the database.

상기 상태는 상기 방법을 실행하는 상기 서버의 캐시와 동기화 될 수 있다 The state can be synchronized with the cache of the server executing the method.

동적 동시 제어Dynamic simultaneous control

본 출원인의 시스템은 록킹(비관적)과 언록킹(낙관적) 동시 제어 전략들의 조합을 기반으로 하는 특별한 동적 동시 제어 메커니즘을 적용한다.Applicant's system applies a special dynamic simultaneous control mechanism based on a combination of locking (pessimistic) and unlocking (optimistic) simultaneous control strategies.

상기 런타임 시스템의 각 인스턴스는 그 자체의 대상 캐시와 그 자체의 트랜잭션 관리자를 포함한다. 이는 웹을 기반으로 하지 않는 애플리케이션들에 대한 국부적 데이터 억세스를 제공할 수 있는 클라이언트 장비에서 실행된다. 상기 런타임의 몇몇 인스턴스들은 그 미들 티어에서 함께 묶여질 수 있다. 이들은 상기 웹 클라이언트들과 다른 런타임 인스턴스들에의해 억세스될 수 있다. 자동 적재 발란싱은 확장성의 개선을 보장한다. 분리 런타임 인스턴스는 상속 데이터베이스에 인접하게 위치되어 대상-관련 매핑을 수행하는데 사용될 수 있다. 대상들은 상기 미들 타이어로 조립된 형태로 전달되고, 이는 상기 대상들에 억세스하는데 요구되는 네트워크 메세지들의 수를 줄인다.Each instance of the runtime system has its own target cache and its own transaction manager. It runs on a client device capable of providing local data access for non-web based applications. Some instances of the runtime may be bundled together in the middle tier. They can be accessed by the web clients and other runtime instances. Automatic load balancing ensures improved scalability. A detached runtime instance can be located adjacent to the inheritance database and used to perform object-related mappings. Objects are delivered in assembled form in the middle tire, which reduces the number of network messages required to access the objects.

상기 구조는 분산된 환경에 억세스할 수 있는 투명 정보와 관련되는 많은 평범하지 않은(non-trivial) 문제들 성공적으로 해결할 수있다.The structure can successfully solve many non-trivial problems associated with transparent information that can be accessed in a distributed environment.

분산 확인Variance Check

모든 존재하는 애플리케이션 서버들과 투명 데이터 억세스 프레임 워크들은 미들 타이어에서 낙관적 트랜잭션 확인을 수행하는데, 이 위치는 공유된 대상 캐시와 개인적 트랜잭션 캐시들이 위치된 곳이다. 확인은 종종 상기 개인적 트랜잭션 캐시의 대상에 대한 날자 스탬프들을 상기 공유된 캐시의 동일한 대상에 대한 날자 스탬프들과 비교하는 것으로 달성된다. 만일 상기 스탬프들이 상이하면 확인은 실패이다. 어떠한 시스템들은 상기 애플리케이션 서버 환경의 상이한 캐시들의 대상들에 대한 이전 및 이후 이미지들을 비교하는 것으로 확인을 수행한다.All existing application servers and transparent data access frameworks perform optimistic transaction verification in the middle tier, where shared target caches and private transaction caches are located. Verification is often accomplished by comparing date stamps for the subject of the private transaction cache with date stamps for the same subject of the shared cache. If the stamps are different then the verification is unsuccessful. Some systems perform verification by comparing before and after images for objects of different caches of the application server environment.

낙관적 트랜잭션은 상기 런타임 시스템의 다수의 인스턴스들을 통해 데이터에 억세스 할 수 있다. 예를 들어, 도 2에 도시된 "App1" 애플리케이션에 의해 시작된 어떠한 트랜잭션은 정보 제공자 "DB1"의 데이터를 억세스하는 경우 적어도 3개의 런타임 인스턴스를 통해 전달된다.Optimistic transactions can access data through multiple instances of the runtime system. For example, any transaction initiated by the "App1" application shown in FIG. 2 is passed through at least three runtime instances when accessing data of the information provider "DB1".

바람직한 실시예에서, 상기 각 런타임 인스턴스들은 상기 트랜잭션의 읽기 및 기록 설정을 유지한다. 상기 트랜잭션이 실시되면, 그 읽기 설정들은 이미 실시된 트랜잭션들의 기록 설정들과 비교된다. 상기 트랜잭션은 만일 상기 설정들의 비어있지 않은 교차점이 적어도 하나의 런타임 인스턴스에서 검출되면 거부된다.In a preferred embodiment, each of these runtime instances maintains read and write settings of the transaction. When the transaction is executed, the read settings are compared with the write settings of the transactions already performed. The transaction is rejected if a non-empty intersection of the settings is detected in at least one runtime instance.

제공자-특정 확인Provider-specific confirmation

몇몇 경우에서, 트랜잭션이 확인되어야만 하는 방법에 대한 법칙들은 상기 애플리케이션들에 대해 특정될 수 있다. 예를 들어서, 피고용자 기록들의 데이터 베이스를 고려한다. 만일 어떠한 애플리케이션이 기록의 전화번호가 변경되면, 만일 동일한 전화번호를 변경하는 것이 아닌 이상, 다른 애플리케이션들이 확인으로 간주될 수 있다. 하지만, 만일 상기 피고용자 이름이 변경되면, 모든 기록의 일부가 변경되기위해 시도되는 트랜잭션의 식별은 의문시되며, 모든 이러한 트랜잭션은무효화된다. 전화번호는 중요하지 않지만 이름은 중요하다는 이러한 지식은 상기 애플리케이션을 특정할 수 있다.In some cases, the rules for how a transaction must be confirmed can be specified for the applications. For example, consider a database of employee records. If an application changes the phone number of a record, other applications may be considered a confirmation unless they change the same phone number. However, if the employee name is changed, the identification of the transaction in which part of every record is attempted to be changed is questioned, and all such transactions are invalidated. This knowledge that phone numbers are not important but names are important can specify the application.

본 출원인의 시스템은 제공자와 상기 런타임 간에 표준 인터페이스를 제공하여 이를 수행할 수 있도록 그 자신을 등록하는 것으로 상기 제공자가 트랜잭션 확인에 대한 신뢰성을 인계받도록 한다. 만일 상기 제공자가 이 책임을 주장하면, 상기 런타임 시스템은 상기 제공자에게 확인을 요청한다. 상기 제공자가 확인에 실패하면 상기 런타임은 이를 그 자체로 놔두고 좀더 소극적인 방법이 이용된다. 몇몇 제공자들의 구성에서, 다른것들은 그들 자신 애플리케이션-특정 확인을 수행하는 반면, 어떠한 것은 상기 런타임 시스템에 대한 확인을 연기할 수 있다.Applicant's system provides a standard interface between the provider and the runtime and registers itself to perform this, allowing the provider to take over the reliability of transaction confirmation. If the provider claims this responsibility, the runtime system asks the provider for confirmation. If the provider fails verification, the runtime leaves it as is and a more passive approach is used. In the configuration of some providers, others perform their own application-specific checks, while others may postpone checking for the runtime system.

병렬 확인Parallel check

분산 트랜잭션의 읽기 및 기록 설정들은 상기 런타임 시스템의 다중 인스턴스들을 나눈다. 상기 트랜잭션이 실시되면, 그 확인은 모든 포함된 런타임 인스턴스들에서 병렬로 수행된다. 이상적인 경우에서, 트랜잭션이 N개의 상이한 CPU들에서 수행되는 N개의 상이한 런타임 인스턴스를 통해 N개의 정보 소스들을 억세스하는 경우, 상기 확인은 하나의 중앙 애플리케이션 서버만이 포함된 경우와 비교해서 N배까지 빠를 수 있다. 기업체 광역 데이터 억세스에서 상기 주어진 분산 특성은 빠르게 일반적이 될 것이다.The read and write settings of a distributed transaction divide multiple instances of the runtime system. When the transaction is executed, the confirmation is performed in parallel in all included runtime instances. Ideally, if a transaction accesses N information sources through N different runtime instances running on N different CPUs, the confirmation may be up to N times faster than when only one central application server is involved. Can be. The distribution characteristics given above in enterprise wide area data access will quickly become common.

확인전 빠른 중단Quick stop before confirmation

낙관적화 트랜잭션이 실행 중이면, 다른 프로그램들은 상기 트랜잭션에의해 사용되는 데이터를 변경할 수 있다-이는 낙관적 동시 제어의 기본 원리이다. 상기데이터에 대한 충돌 변경들이 상기 확인 상태에서 검출되면, 다수의 기법들 중 하나를 이용한다. 또한, 이는 본 출원인의 시스템을 이용하는 낙관적와 시스템에서 일반적이다. 그러나, 상기 이벤트 검출 시스템은 이러한 모든 충돌 변경들에 대한 검출들을 상기 런타임 시스템으로 전송할 수 있으며, 상기 진행중인 트랜잭션을 미리 중단할 수 있다. 이러한 빠른 중단 특징은 상기 인간 조작자에 대해서 이후 무효화될 트랜잭션으로 데이터를 입력하는데 소모되는 헛된 노력을 줄인다. 이러한 빠른 중단 특징은 컴퓨터, 네트워크 그리고 데이터베이스의 헛된 부하 역시 줄인다.If an optimizing transaction is running, other programs can change the data used by the transaction—this is the basic principle of optimistic concurrent control. If collision changes to the data are detected in the confirmation state, use one of a number of techniques. This is also common in optimism and systems using Applicants' systems. However, the event detection system may send detections for all these conflicting changes to the runtime system and may abort the ongoing transaction in advance. This fast abort feature reduces the wasteful effort spent entering data into a transaction that will later be invalidated for the human operator. This fast shutdown feature also reduces the wasted load on computers, networks, and databases.

분산된 확인 중 빠른 중단Quick interruption during distributed verification

긴-실행 낙관적화 트랜잭션은 다른 트랜잭션에의해 무효화된 것을 발견하기위해 그의 읽기 상태의 종단까지 기다릴 필요가 없다. 실행 트랜잭션이 상기 확인 상태를 지나면, 이는 그의 기록 설정을 현재 활성화 된 트랜잭션의 기록 설정들과 비교하고, 상기 설정들의 교차가 비어있지 않다는 것에 대한 모든 트랜잭션으로 무효 이벤트들을 전송한다. 상기 무효 이벤트들은 이벤트 전송과 보증을 제공하도록 설계된 다른 특징들 중에서 분산된 이벤트 관리자를 통해 전파된다.Long-running optimizing transactions do not have to wait until the end of their read state to find invalidated by other transactions. When an executing transaction passes the confirmation state, it compares its write settings with the write settings of the currently active transaction and sends invalid events to all transactions that the intersection of the settings is not empty. The invalid events are propagated through a distributed event manager, among other features designed to provide event delivery and assurance.

하이브리드 트랜잭션Hybrid transaction

초적화 트랜잭션 관리를 지원하는 시스템들은 모든 트랜잭션 기반으로 실행된다. 애플리케이션은 트랜잭션이 시작되는 경우 트랜잭션의 모드를 나타낸다. 새로운 트랜잭션은 비관적 또는 낙관적 모드 중 하나로 시작될 수 있다.Systems that support fragmentation transaction management run on a per- transaction basis. The application indicates the mode of the transaction when it begins. The new transaction can be started in either pessimistic or optimistic mode.

트랜잭션의 모드는 모든 트랜잭션 상 뿐만 아니라 모든 제공자 기반에서도상이할 수 있다. 예를 들어서, 어떠한 애플리케이션은 두개의 데이터 저장부들을 억세스할 수 있는데, 이들은 국부적 지속 대상 캐시로 사용되는 개인적 덜 중요한 데이터베이스, 그리고 공유 데이터를 포함하는 원격 부분적 데이터베이스이다. 본 출원인의 시스템은 상기 애플리케이션이 비관적 모드로 상기 국부 데이터베이스에 억세스하도록 허용함으로서 필요없는 확인 과중을 피한다. 상기 공유 데이터베이스는 여전히 록킹되지 않은 낙관적 모드로 억세스될 수 있다.The mode of transaction can be different on every provider as well as on every transaction. For example, some applications may have access to two data stores, one of which is a less personal personal database used as a local persistent cache, and a remote partial database containing shared data. Applicant's system avoids unnecessary confirmation overload by allowing the application to access the local database in a pessimistic mode. The shared database can still be accessed in an optimistic mode that is not locked.

이러한 특징은 특히 본 발명이 LDAP, ADSI, MAPI, 그리고 NT 파일 시스템과 같은 트랜잭션하지 않는 제공자에 억세스하기위해 사용되는 경우 중요하다. 낙관적 동시 제어는 이러한 제공자들이 직렬화가 필요한 경우 트랜잭션 억세싱에 대한 격리를 제공할 수 있다. 이는 필요없는 경우 사용하지 않을 수 있다.This feature is particularly important when the invention is used to access non-transactional providers such as LDAP, ADSI, MAPI, and the NT file system. Optimistic concurrent control can provide isolation for transaction accessing if these providers need serialization. This can be disabled if not needed.

유일한 래퍼 API(Unique wrapper API)Unique wrapper API

현대 데이터베이스 시스템들은 다양한 정도로 낙관적 트랜잭션 관리에 대한 지원을 제공한다. 낙관적 트랜잭션의 다양한 상태들을 관리하기위한 자신만의 알고리즘을 이용하는 다른 투명 데이터 억세스 프레임 워크들과 다르게, 본 출원인의 시스템은 사용자 래퍼의 개발을 통해서 상이한 정보 제공자들의 유일한 능력들을 만들 수 있다. 상기 래퍼 API는 상기 래퍼 개발자에 의해 재정의 될 수 있는 기본 낙관적 동시 제어 함수를 포함한다. 이는 다른 프로그램들에서 사용되는 ODBC, JDBC, 그리고 OLE DB API들에서는 볼 수 없다.Modern database systems provide support for optimistic transaction management to varying degrees. Unlike other transparent data access frameworks that use their own algorithms for managing various states of optimistic transactions, Applicants' systems can create unique capabilities of different information providers through the development of user wrappers. The wrapper API includes a basic optimistic concurrent control function that can be overridden by the wrapper developer. This is not seen in the ODBC, JDBC, and OLE DB APIs used by other programs.

동적 트랜잭션Dynamic transaction

본 출원인의 시스템에 있어서, 대상의 상태(즉, 그 특성들의 값들)는 상기대상이 사용되는 지점으로 전송된다. 예를 들어, 도 2에 도시되는 애플리케이션 "App1"은 국부 런타임 인스턴스의 캐시의 억세싱 대상들이다. 이는 상기 서버측 또는 상기 미들 타이어 중 하나에서 상기 대상이 이격되는 다른 시스템과 비교하여 명백한 대선이다. 물론, 서버측 대상 방법이 호출될 필요가 있는 경우 상기 대상의 상태는 상기 클라이언트에 있고, 이는 상기 방법을 실행하기 위해서 서버에서 요구될 수 있다.In the applicant's system, the state of the object (ie, the values of its characteristics) is transmitted to the point at which the object is used. For example, the application "App1" shown in FIG. 2 is the accessing objects of the cache of the local runtime instance. This is a clear presidential election compared to other systems in which the subject is spaced either on the server side or on the middle tire. Of course, if a server-side target method needs to be called, the state of the target is at the client, which may be required at the server to execute the method.

본 출원인의 시스템은 이를 해결하기 위해서 상기 트랜잭션이 실행 중에 상기 트랜잭션 관리자를 동적으로 낙관적 모드에서 비관적 모드로 변경한다. 상기 모드 변경은 상기 애플리케이션이 서버측 방법을 호출하는 경우 상기 애플리케이션에 대해서 투명하게 수행된다. 상기 방법을 수행하기위해 사용되는 제공자만 영향을 받는다. 모든 다른 제공자들은 낙관적 모드로 계속 수행된다.Applicants' system dynamically changes the transaction manager from an optimistic mode to a pessimistic mode while the transaction is running to solve this. The mode change is transparent to the application when the application invokes a server-side method. Only the providers used to perform the method are affected. All other providers continue to run in optimistic mode.

상기 모드 스위치는 만일 상기 제공자 자신이 낙관적 동시 제어의 형태를 지원하지 않는 경우에만 필요하다. 아니면, 상기 변경들은 상기 분산된 낙관적 트랜잭션의 일부로서 상기 제공자에 저장될 수 있다. 예를 들어서, 상기 분산된 트랜잭션은 대상의 상태가 상기 런타임 시스템의 다양한 인스턴스들 중으로 전달되는 경우 변경되지 않는다. 상기 특징은 사스템의 자체 카탈로그 관리자와 같은 플러그-인 서비스 제공자들을 지원하는데 필요하다.The mode switch is only necessary if the provider itself does not support some form of optimistic simultaneous control. Otherwise, the changes may be stored at the provider as part of the distributed optimistic transaction. For example, the distributed transaction does not change if the state of the subject is passed among various instances of the runtime system. This feature is necessary to support plug-in service providers such as System's own catalog manager.

적응성 트랜잭션Adaptive transaction

낙관적 트랜잭션들은 클라이언트들에의해 억세스되는 데이터 항목들 상의 높의 분쟁을 가진 애플리케이션으로는 적당하지 못하다. 이러한 애플리케이션에서,다수의 낙관적 트랜잭션들은 허용할 수 없이 높은 롤백 비율을 유발하는 확인 절차를 통과할 수 없을 것이다. 모든 트랜잭션들이 비관적 모드로 시작한다는 직설적 해법은 다른 시스템에서 일반적으로 사용된다. 이는 만일 상기 분쟁 레벨이 시간에 따라 달라지는 경우 너무 제한적이다. 예를 들어, 실제 상황에서의 분쟁은 오전 8시에서 오후 6시 까지 높고, 나머지 시간에서는 낮다.Optimistic transactions are not suitable for high-conflict applications on data items accessed by clients. In such an application, a number of optimistic transactions will not be able to pass the verification process which causes an unacceptably high rollback rate. The straightforward solution of all transactions starting in pessimistic mode is commonly used in other systems. This is too limited if the dispute level varies over time. For example, disputes in the real world are high from 8:00 am to 6:00 pm and low at rest.

본 출원인의 시스템은 상기 문제에 대한 해법을 제공하는데, 이는 상기 신경 네트워크 에이전트 기술이 적용된다. 이러한 기술의 한 예는 미국 특허 제 09/084,620호에 더욱 자세히 설명되며, 여기서는 참조로서 관계한다. 트랜잭션들은 항상 그들의 모드를 명백히 정의하지 않은 채 시작된다. 상기 분쟁이 낮으면, 이들은 낙관적인 모드로 동작한다. 상기 롤백 비율이 특정 한계를 넘으면, 상기 기본 모드는 자동적으로 비관적 모드로 변경된다. 상기 신경 에이전트가 층분히 지식을 축적하면 신뢰성 있는 예측을 허용하기 때문에 상기 롤백 비율은 허용할 수 있는 한계들 내에서 지속적으로 유지될 수 있다.Applicant's system provides a solution to this problem, which applies the neural network agent technology. One example of such a technique is described in more detail in US Pat. No. 09 / 084,620, which is hereby incorporated by reference. Transactions always start without explicitly defining their mode. If the dispute is low, they operate in an optimistic mode. If the rollback rate exceeds a certain limit, the default mode is automatically changed to pessimistic mode. The rollback rate can be maintained continuously within acceptable limits because the neural agent allows for reliable prediction if it accumulates enough knowledge.

실행 전 세션-폭 이벤트 확인Check for session-width events before execution

본 출원인의 시스템의 인프라구조는 일반적으로 제공자에서 소비자까지 이벤트를 식별하는데 광범위하게 사용된다. 예를 들어서, 소비자는 낙관적 동일 관리 하에서 상기 클라이언트측 캐시에 유지되는 대상들이 상기 데이터베이스에서 변경되었다는 것을 식별할 수 있고, 그로인해 상기 동일 트랜잭션은 무효화 될 수 있다. 애플리케이션들과 제공자들은 이벤트들을 상호간에 포괄적 방식으로 전송할 수 있다.The infrastructure of Applicant's system is generally used extensively to identify events from provider to consumer. For example, a consumer may identify that objects maintained in the client side cache have changed in the database under optimistic same management, whereby the same transaction may be invalidated. Applications and providers can send events to each other in a comprehensive way.

부가적으로, 상기 상호간에 통신할 필요가 있는 클라이언트측 애플리케이션을 만드는 상이한 구성원들은 일반적이다. 예를 들어서, GUI 애플리케이션은 다중 창들로 구성되며, 이들 중 몇몇은 동일한 쓰레드에서 동작하고, 어떠한 것들은 동일한 과정에서 상이한 쓰레드에서 동작하며, 어떠한 것들은 상이한 과정에서 동작한다.In addition, different members that make client-side applications that need to communicate with each other are common. For example, a GUI application consists of multiple windows, some of which run on the same thread, some run on different threads in the same process, and some run on different processes.

이러한 상이한 애플리케이션 구성원들은 예를 들어, 상이한 외관 또는 상이한 내용으로 동일한 데이터 할목을 나타낼 수 있다. 물론, 상기 애플리케이션 구성원이 변경되고 이것이 제공자에게 전달되면, 상기 대상에 관계되는 모든 애플리케이션들은 상기 변화를 식별한다. 그러나, 한 클라이언트측 애플리케이션 내에서, 이벤트 식별은 만드시 상기 변화가 전달되기 전에 발생되어야만 한다. 당연히, 만일 모든 애플리케이션 구성원들이 동일한 과정의 일부하면, 이들은 공통 세션과 공통 캐시를 통해 데이터를 공유할 것이다. 이는 다음과 같은 것들을 고려해야 한다.These different application members may, for example, represent the same data segment with different appearances or different content. Of course, if the application member is changed and it is passed to the provider, all applications related to the subject identify the change. However, within one client-side application, event identification must be generated before the change is propagated at creation time. Naturally, if all application members are part of the same process, they will share data through a common session and a common cache. This should take into account:

구성원들은 이들이 상이한 과정들에 존재하는 경우 협조되어야만 하는가? 상기 사용자는 상이한 창들은 동일한 애플리케이션의 일부로 보고, 쓰레드나 과정들과 같은 그 자세한 구성은 모르거나 관심이 없다. 사용자에 대해서, 어떠한 애플리케이션은 데이터 한 셋이 제공되어야 한다. Should members cooperate if they exist in different processes? The user sees different windows as part of the same application and does not know or care about its detailed configuration, such as threads or processes. For a user, some application must provide one set of data.

데이터 공유의 물리적 구성에 관계 없이, GUI들과 같은 상기 다양한 애플리케이션 구성원들은 일부 데이터가 변경되는 경우 식별되어야 한다. 이러한 부하는 상기 개발자에의해 만들어지지 않아야 하는데, 응용 프로그램의 구성원들 수가 늘어남에 따라 식별 관계들의 수 역시 조합론적으로 증가한다. 새로운 구성원이 상기 애플리케이션에 부가될 때 마다, 부가적으로 변경되는 새로운 구성원으로서 동일한 데이터에 억세스할 가능성이 있다. 이는 개발자에게 있어서는 비싸고 효과적으로 관리할 수 없는 구조가 될 수 있다. 대신에, 상기 인프라구조는 어떠한 데이터가 변경되는 경우 쓰레드 및 과정을 고려하지 않으면서 전달 시점을 기다리지 않고 구성원들로 식별을 자동적으로 전달할 수있는 식별 서비스를 제공해야만 한다. 당연히, 세션 경계들은 트랜잭션 관리에 대한 기본이 되며, 상기 세션들은 변경이 전달될 때까지 각각으로부터 격리된다. Regardless of the physical configuration of data sharing, the various application members, such as GUIs, must be identified when some data changes. This load should not be created by the developer, and as the number of members of the application increases, the number of identifying relationships also increases combinatorially. Each time a new member is added to the application, there is a possibility of accessing the same data as a new member that is additionally changed. This can be an expensive and inefficiently managed structure for developers. Instead, the infrastructure must provide an identification service that can automatically pass identification to members without waiting for the point of delivery if any data changes without considering the thread and process. Naturally, session boundaries are the basis for transaction management, and the sessions are isolated from each other until a change is delivered.

이러한 문제들을 해결하기 위해서, 본 출원인의 시스템은 두 가지 방법을 제공한다.To solve these problems, Applicant's system provides two methods.

1. 애플리케이션 구성원이 상기 인프라구조에 연결되는 경우, 이는 현존하는 세션과 결합된다.1. When an application member is connected to the infrastructure, it is combined with an existing session.

2, 변경 이벤트 식별들은 전달 시점 전에 제공자를 포함하지 않고 상기 세션 내에서 전달된다.2, change event identifications are delivered within the session without including the provider before the delivery point.

바람직한 실시예의 요약Summary of Preferred Embodiments

힌트hint

상기 대상 인프라구조는 개발 노력을 줄이고, 프로그래밍 오류들을 줄이며, 일반적으로 상기 애플리케이션 프로그래머에게 남아있는 책임들의 많은 부분들을 상기 인프라구조로 전달하는 것으로 성능을 개선하는 획기적인 이점을 제공하도록 설계되었다. 이는 그래픽 사용자 인터페이스들(GUIs)을 개발하는 일에도 이점이 있다. 본 출원인의 시스템은 구성된 대상들의 상태를 나타내는 것을 기반으로 생성되는 포괄적 사용자 인터페이스가 가능하도록 하며, 이들 간을 이동하고 방법들을 실행하는 모든 일들을 메뉴들 또는 버튼들로 가능하게 한다.The target infrastructure is designed to reduce development effort, reduce programming errors, and generally provide a significant advantage in improving performance by transferring many of the remaining responsibilities to the application programmer to the infrastructure. This is also advantageous for developing graphical user interfaces (GUIs). Applicant's system enables a comprehensive user interface that is generated based on indicating the status of configured objects, and enables all tasks to move between them and execute methods with menus or buttons.

본 출원인의 시스템은 상기 데이터 베이스 설계자 또는 애플리케이션 개발자가 상기 힌트들의 정의를 통해 인프라구조의 작업을 유도하기 위한 방법을 제공한다.Applicant's system provides a method for the database designer or application developer to guide the work of the infrastructure through the definition of the hints.

실행으로부터의 애플리케이션 격리Application isolation from execution

본 발명의 힌트들은 상기 인프라구조의 작업을 개선하거나 개발의 노력을 줄이는 직접적인 이점 말고도 상기 개발자가 저수준의 추상으로 드롭 다운하지 않고서도 상기 애플리케이션의 행동을 조절할 수 있도록 한다. 상기 프로그램을 고수준의 추상으로 규정하는 것에 의해서, 상기 시스템의 대부분의 개선된 기능성들은 기능적으로 잔류한다. 이러한 고수준 기능성들의 예들은 다음을 포함하는 저수준 추상들에서 명백하게 조절되는 것에의해 손상될 수도 있다.The hints of the present invention allow the developer to control the behavior of the application without dropping down to a low level abstraction, as well as the direct benefit of improving the infrastructure's work or reducing development effort. By defining the program as a high level of abstraction, most of the improved functionality of the system remains functional. Examples of such high level functionality may be compromised by being explicitly controlled in low level abstractions, including:

캐시 관리 Cache management

이전 읽기 Read previous

이후 기록 Record since

복제 대상 제거 Remove replication target

힌트들을 이용하는 것으로 상시 개발자나 데이터베이서 디자이너는 상기 애플리케이션 프로그램의 어떠한 명백한 조절-종속 상태들 없이 상기 시스템의 동작을 조절할 수 있다. 상기 시스템은 애플리케이션의 어떠한 변경 없이도 적절한 하드웨어, 분산된 구성, 부하 패턴들 또는 요소들의 변경에 대한 응답으로 재-조절될수 있는 장점이 있다.By using the hints, a constant developer or database designer can adjust the behavior of the system without any apparent coordination-dependent states of the application program. The system has the advantage that it can be reconditioned in response to changes in the appropriate hardware, distributed configuration, load patterns or elements without any change in the application.

외부 대상 모델에 대한 적용Apply to external target model

본 출원인의 시스템의 일반적인 대상 관리 시스템은 상이한 종류의 정보들과 서비스들을 제공할 수 있는 능력이 있다. 그 일반적인 대상 모델은 대상 시스템의 최소화된 특성들을 만족하는 모든 시스템에 적용될 수 있다.The general object management system of the Applicant's system is capable of providing different kinds of information and services. The general object model can be applied to any system that satisfies the minimized characteristics of the object system.

본 출원인의 시스템, 래퍼, 제공자를 위한 인터페이싱 모듈을 이용하는 것은 상기 제공자의 특징들을 설명하는 다수의 특별 힌트들을 제공할 수 있다. 이러한 힌트들을 인식하는 애플리케이션들은 상기 제공자의 개선된 특징들의 전체적인 이점을 취할 수 있다. 상기 제공자에 대한 정보가 없는 애플리케이션들은 표준 대상 모델을 기반으로 일반적인 방법으로 조작된다. 주석 종료.Using an interfacing module for Applicants' systems, wrappers, and providers may provide a number of special hints describing the features of the provider. Applications recognizing these hints can take full advantage of the improved features of the provider. Applications without information about the provider are manipulated in a general manner based on the standard target model. End comment.

힌트들의 예제들Examples of hints

성능 조절 힌트들: 다수의 제공자들은 정보를 처리하기위한 최적 방식을 설명하는 힌트들을 분류할 수 있으며, 상기 상기 정보의 주어진 의미들은 다음과 같다.Performance tuning hints: A number of providers can classify hints that describe the optimal way to process information, the meanings of which are given below.

예측 목록-상기 애플리케이션에 사용되기위한 적절한 특성들의 목록, 그로인해 임의의 검색에 포함되도록 추천됨 Prediction List-A list of suitable characteristics for use in the application, which is recommended to be included in any search.

읽기를 위해 사용되는 프레임들-이전 읽기에 대한 대상들의 집단화에 사용되기위한 연관성들 또는 다른 관계들의 목록 Frames used for reading-a list of associations or other relationships for use in the grouping of objects for previous reading.

GUI 힌트들: 제공자는 자동 GUI 생성기가 어떻게 예를 들어 다음과 같은 정보를 표시해야만 하는 가를 제안하는 힌트들을 분류할 수 있다.GUI hints: The provider can classify hints suggesting how the automatic GUI generator should display the following information, for example:

폼의 탭들 상 특성들의 집단화 Grouping of properties on tabs of a form

관련되는 대상들이 트리 또는 네트워크 탐색기, 또는 특정한 화면 또는 폼 상의 탭과 같은 일반적인 검색기 구조로 표시되도록 할 지의 여부 Whether related objects are displayed in a common browser structure, such as a tree or network explorer, or a tab on a particular screen or form.

대상이 표시되는 경우 어떠한 기본 특성이 사용되어야만 하는가 What default properties should be used when targets are displayed

이름, "도구 팁" 문서, 긴 설명, 도움말 문서, 아이콘, 3-D 표현, 음향 또는 대성의 비디오로서 사용될 특성들이 무엇인가 What characteristics will be used as the name, "tool tip" document, long description, help document, icon, 3-D representation, sound or video of the voice

대상에 대한 내용 메뉴상에 나타날 구성원들은 무엇인가 What members will appear on the content menu for the object

대상의 기입과 같은 탐색을 GUI에서 처리하는 방법 How the GUI handles navigation such as writing a target

어떠한 특정 결합 종류 하에서, 대상의 내용을 배열하는 자동-배열 기법들을 어떻게 적용할 것인가 How to apply auto-arrangement techniques to arrange the contents of an object under any particular type of combination

수치 값을 화면상에 어떠한 포멧으로 나타낼 것인가 What format the numeric value will appear on the screen

데이터 입력으로 허용 가능한 값들은 무엇인가 What are the acceptable values for data entry

드래그-앤-드롭 조작을 어떻게 이해할 것인가 How to understand drag-and-drop operation

힌트들의 소스Source of hints

이러한 힌트들은 상기 제공자 또는 상기 소비자 중 하나에 의해 제공될 수 있다. 힌트 없이, 상기 시스템은 표준 방식으로 동작할 것이다. 상기 제공자 또는 상기 소비자 중 하나에 의한 힌트들은 다양한 시스템 서비스들의 작업을 유도할 것이다. 만일 상기 다양한 힌트들이 중돌하면, 이러한 힌트들 중 어떠한 것을 사용할 지 선택하는 것은 상기 서비스에 따라 다르다.Such hints may be provided by either the provider or the consumer. Without hints, the system will operate in a standard manner. Hints by either the provider or the consumer will drive the operation of various system services. If the various hints overlap, the choice of which of these hints to use depends on the service.

개방 및 확장Open and expand

힌트들은 상기 인프라구조의 다양한 서비스들, 또는 제공자, 또는 상기 애플리케이션 자체에의해 직접적으로 읽어지거나 해석될 수 있다. 힌트들이 상기 인프라구조의 데이터 모델의 공식적 일부이기 때문에, 모든 구성요소들은 힌트들을 생성라고 이들을 이용할 수 있다. 또한, 상기 전체 인프라구조가 개방 및 확작성이 있기 때문에, 모든 서비스는 다른 것으로 대체될 수 있으며 상기 힌트들을 해석하기위해 다른 전략을 사용할 수 있다.The hints may be read or interpreted directly by various services or providers of the infrastructure, or by the application itself. Since the hints are an official part of the infrastructure's data model, all components can use them to generate hints. In addition, since the entire infrastructure is open and extensible, all services can be replaced with others and other strategies can be used to interpret the hints.

힌트들은 실패를 초래하지 않는다Hints do not cause failure

상기 대상 인프라구조는 제공하는 조작의 의미를 정의한다. 상기 힌트들은 상기 조작을 최적화 하기위한 방법으로 상기 인프라구조 유도를 제공하지만, 이들은 제한되도록 허용되어서는 안된다.The target infrastructure defines the meaning of the operations provided. The hints provide the infrastructure derivation in a way to optimize the manipulation, but they should not be allowed to be limited.

의미론적으로, 힌트들은 측-대역 통신의 형태이다. 이들은 일반적인 대상 특성들과 혼돈되지 않는다. 본 출원인의 시스템은 힌트들과 일반적 대상 특성들 간의 차이점을 유지한다. 결론적으로 새로운 힌트들의 정의 또는 어떠한 힌트들의 제거는 상기 스키마를 변경시키지 않으며, 프로그램의 재컴파일을 요구하지 않는다.Semantically, hints are a form of side-band communication. These are not confused with the general object characteristics. Applicant's system maintains the difference between the hints and general object characteristics. In conclusion, the definition of new hints or the removal of any hints does not alter the schema and does not require recompilation of the program.

애플리케이션 처리 힌트Application processing hints

상기 힌트들이 데이터 또는 상기 시스템에서 일반적으로 처리되는 메타데이터의 일부로 조작되기 때문에, 모든 구성요소는 이들을 정의하거나 사용할 수 있다. 이 의미는 분산된 애플리케이션의 다양한 부분들이 처리가 완료된 방법에 관한 통신을 하는데 힌트들을 사용할 수 있다는 것이다. 상호 정의된 메세지 규약을 이용하여, 제공자는 직접 GUI 구성원에게 관련되는 대상들을 가져오고 상기 관셰의구조를 분석하도록 할 수 있다.Since the hints are manipulated as part of the data or metadata that is generally processed in the system, any component can define or use them. This means that various parts of a distributed application can use hints to communicate how the processing is done. Using a mutually defined message protocol, the provider can directly retrieve the objects relevant to the GUI member and analyze the structure of the Guess.

존재하는 애플리케이션 시스템들에 사용되는 이로한 특정 코드들은 종종 복잡한 측대역 통신의 특별 기겁들을 요구한다. 이러한 특별 코드들은 유지되어야만 한다. 예를 들어서, 만일 상기 시스템이 SNA 에서 TCP/IP로 전환되면, 상기 주 데이터베이스는 포트되어야하는 프로토콜을 억세스하고 상기 측대역 프로토콜 역시 포트되어야 한다. 상기 본 출원인의 시스템의 애플리케이션 처리 힌트 기능을 통해서, 상기 특별 힌트들은 논리적으로 측대역 내부, 상기 일반적인 데이터베이스 혼잡의 외부에 존재하지만, 기술적으로 이들은 메인스트림 프로토콜의 일부이며 특별한 관리나 유지가 필요 없다.These particular codes used in existing application systems often require special stimuli of complex sideband communication. These special codes must be maintained. For example, if the system switches from SNA to TCP / IP, the main database has access to the protocol that should be ported and the sideband protocol must also be ported. Through the application processing hint function of the Applicant's system, the special hints are logically inside the sideband, outside the general database congestion, but technically they are part of the mainstream protocol and do not require special management or maintenance.

취소cancel

캐시 관리자의 취소 지원Cache Manager's Cancel Support

자원자 시스템에서, 상기 시스템은 상기 데이터베이스에서 패치된 모든 대상들의 캐시를 유지할 수 있다. 상기 데이터베이스에 대한 변경시, 상기 새로운 값들은 상기 캐시에 기록된다.In the volunteer system, the system may maintain a cache of all the objects patched in the database. Upon a change to the database, the new values are written to the cache.

취소 관리 기능은 상기 캐시 관리자에 부가된다. 상기 서비스는 취소 큐의 모든 변경들을 기록한다. 특성 값들의 전형적인 변경에 대해서, 상기 취소 큐는 간단히 이전 값을 기록한다. 대상의 생성 또는 소멸과 같은 수명 변경에 있어서, 상기 취소 큐는 다음의 조작을 복구할 수 있는 동등한 조작을 기록한다: 생성에 대한 삭제, 삭제에 대한 생성. 실제적으로, 변경들을 복구할 수 있는 상기 조작들은 대단히 복잡한데: 예를 들어서, 클래스가 삭제된 경우, 상기 클래스의 모든 인스턴스들, 모든 하부 클래스들, 모든 하부 클래스들의 인스턴스들, 모든 방법들 그리고 이러한 클래스들의 다른 기능들 역시 제거된다. 상기 취소 관리자는 가능한 경우마다 반대 조작들을 저장한다. 몇몇 경우들에서, 취소 조작은 불가능 하거나 실용적이지 않을 수 있고, 이러한 경우들에서 상기 적절한 기록이 상기 취소 큐에 저장된다.A cancellation management function is added to the cache manager. The service records all changes in the cancellation queue. For a typical change of characteristic values, the cancellation queue simply records the previous value. For life changes, such as creation or destruction of objects, the cancellation queue records equivalent operations that can recover the following operations: delete for create, create for delete. In practice, the operations that can recover changes are very complex: for example, if a class is deleted, all instances of the class, all subclasses, all instances of all subclasses, all methods and such Other features of the classes are also removed. The cancellation manager stores reverse operations whenever possible. In some cases, a cancel operation may not be possible or practical, and in such cases the appropriate record is stored in the cancellation queue.

상기 취소 관리자는 상기 애플리케이션이 직접적으로 호출할 수 있는 취소 및 재실행 기능들을 제공하고, 인간이 읽으 수 있는 형태로 상기 취소 큐의 조작 순서들의 목록과 같이 GUI에 유용한 서비스들을 제공할 수 있다.The cancellation manager provides cancellation and redo functions that the application can call directly, and can provide useful services to the GUI, such as a list of operation sequences of the cancellation queue, in a human readable form.

취소 및 트랜잭션 관리Cancel and Transaction Management

상기 취소 능력은 데이터베이스 트랜잭션 관리 시스템들의 롤백 허용량에의해 효과적으로 제공될 수 없다는 것을 유의한다. 데이터베이스 롤백은 대단히 고가의 조작으로, 마우스 클릭을 통해 가능한 실행-오차 사용자 조작을 통해 연결된다. 부가적으로, 재실행을 제공하는 데이터베이스 트랜잭션 시스템은 없으며, 대단히 소수만이 다중 취소를 제공한다.Note that the cancellation capability cannot be effectively provided by the rollback allowance of database transaction management systems. Database rollback is a very expensive operation, linked through a run-error user operation that is possible with a mouse click. In addition, no database transaction system provides redo, and very few provide multiple cancellations.

트랜잭션에서 한 셋의 조작들이 전송되면, 이는 상기 트랜잭션의 개별적 단계에 대한 취소를 실행하는데 문제가 발생할 수 있다. 예를 들어서, 만일 사용자가 한 계좌에서 다른 계좌로 돈을 송금하길 원한다면, 이는 하나의 감산과 아나의 가산 조작을 포함하는 하나의 트랜잭션이 되며, 상기 조작의 개별적 단계들을 취소하는데 문제가 생길 수 있다. 그래서, 전형적으로, 전송 조작은 상기 취소 큐를 합병조작하며, 현재 트랜잭션의 모든 경과 조작들을 하나의 취소 가능한 조작으로 한다. 몇몇 경우에 있어서, 특정 반대-조작은 특정 조작으로 공지될 수 있으며: 이는 특정 방법이 해당하는 반대-방법인 상기 데이터베이스 스키마에서 특정되기 위해서이다. 다른 경우, 상기 트랜잭션은 전혀 취소될 수 없을 수 있다. 그러나, 상기 트랜잭션이 처리되는 제세한 방법은 임의의 특정한 시스템 적용에서 변경될 수 있다.If a set of operations is sent in a transaction, this may cause problems in executing the cancellation of individual steps of the transaction. For example, if a user wants to transfer money from one account to another, it becomes a transaction involving one subtraction and the addition operation of Ana, which can cause problems in canceling the individual steps of the operation. . So, typically, a transfer operation merges the cancellation queue and makes all past operations of the current transaction into one cancelable operation. In some cases, certain counter-manipulations may be known as specific operations: in order for a particular method to be specified in the database schema that is the corresponding counter-method. In other cases, the transaction may not be canceled at all. However, the specific way in which the transaction is processed may vary in any particular system application.

스택없는 취소 모델Stackless cancellation model

취소 조작에 대한 일반적인 접근은 스택 모델이며:행위들은 생성된 역순으로 취소되며 만들어진 순서대로 재실행된다. 그러나, 원칙에 있어서, 이들은 독단적인 순서로 취소된 개별적 행위들을 방지할 수 없다. 임의 억세스 취소 조작들은 원칙적으로 가는하며 어떠한 경우에 있어서는 대단히 유용하다.The general approach to the cancel operation is the stack model: actions are canceled in the reverse order in which they were created and redone in the order in which they were created. In principle, however, they cannot prevent individual acts canceled in an arbitrary order. Random access revocation operations go in principle and are very useful in some cases.

상기 임의 억세스 취소는 당 업계의 현재 상태에서 종종 배제되는데, 많은 경우에 잇어서 불가능하기 때문이다. 예를 들어서, 만일 대상을 생성하는 큐의 조작(6), 그리고 조작(11)이 상기 대상의 특성을 변경했다면, 조작 6만의 취소는 조작 11을 무효로 하기 때문에 불가능하다. 하지만, 이러한 간단한 해석 만이 가능한 것은 아니다. 만일 상기 행위들의 내부-종속성들이 유지되면 임의 억세스 취소가 허용될 수 있다. 예를 들어서, 행위(6)은 자동적으로 행위(11)를 취소하도록하지만, 만일 행위(7)는 행위(11)과 관계가 없고, 혹은 상기 큐의 다른 조작과 관계가 있으므로 이는 그 자체가 취소된다.Such random access cancellation is often excluded from the state of the art, because in many cases it is impossible. For example, if the operation 6 of the queue for creating the object and the operation 11 have changed the characteristics of the object, cancellation of only the operation 6 is impossible because the operation 11 is invalidated. However, this simple interpretation is not only possible. Any access cancellation may be allowed if the inner-dependencies of the actions are maintained. For example, act 6 automatically cancels act 11, but if act 7 is not related to act 11, or is related to other manipulations of the queue, this is itself canceled. do.

이러한 임의 억세스 취소는 점점 일반적이 되어가는 복잡한 애플리케이션들에 있어서 많은 경우 대단히 유용하다. 전통적 온라인 트랜잭션 처리에 있어서, 조작의 순서는 종종 대단히 간략화되고 상기 임의 억세스 취소는 제한되어왔으나, 좀더 복잡한 지식-집약 애플리케이션에서는 대단히 유용하다.Such random access revocation is very useful in many cases for increasingly complex applications. In traditional online transaction processing, the order of operations is often greatly simplified and the random access cancellation has been limited, but is very useful in more complex knowledge-intensive applications.

스키마 관용(tolerance)Schema Tolerance

이론적으로, 이상적 경우에서, 모든 관련 대상들은 단일 데이터베이스에 저장될 수 있으며, 단일 스키마 하에서 관리될 수 있다. 그러나, 존재하는 시스템들은 몇몇 분산된 데이터베이스들을 이용하며, 이러한 경우, 일관된 스키마가 가정되지만, 실질적인 스키마 일관성은 달성하기 어렵다. 기술적으로, 경제적으로, 실용및 관리적 이유로, 정보는 일관적이지 않은 스키마들 하에서 데이터베이스에 저장될 수 있다. 예를 들어서, 거래가 달성된 후, 그 정부의 대부분은 상기 달성자 스키마와 일치하지 않는 현재 데이터베이스에 유지될 필요가 있다. 예를 들어서, 베네주엘라 또는 러시아 조직을 획득한 미국 회사는 상이한 이름의 정의를 처리할 필요가 있는데, 베네주엘라에서는 성, 이름, 어머니의 가족명, 러시아에서는 성, 조상명(patonymic), 이름이다.In theory, in an ideal case, all relevant objects could be stored in a single database and managed under a single schema. However, existing systems use several distributed databases, in which case a consistent schema is assumed, but substantial schema consistency is difficult to achieve. Technically, economically, for practical and administrative reasons, information can be stored in a database under inconsistent schemas. For example, after a transaction is accomplished, most of the government needs to be maintained in a current database that does not match the achiever schema. For example, a US company that has acquired Venezuela or a Russian organization needs to deal with the definition of different names, such as last name, first name, family name of mother, last name, patonymic, name in Russia.

본 출원인의 시스템은 이러한 스키마 불일치들을 수용하고, 애플리케이션이 상이한 데이터베이스 간을 이상없이 탐색하도록 한다. 다음 예제를 고려하자:Applicant's system accepts these schema inconsistencies and allows the application to seamlessly navigate between different databases. Consider the following example:

만일 상기 초기 대상 boss가 데이터베이스 A에 특정 스키마 하에서 저장된다면, 상기 스태프로 결정된 고용자는 다른 데이터베이스 B에 상이한 스키마 하에서 존재할 수 있다. 다시 말해서, 어떠한 고용자들은 A에 다른 이들은 B에 저장될 수 있다. 상기 시스템은 이러한 구별을 숨기며, 상기 애플리케이션이 상기 대상들의특성들과 방법들을 저장된 위치에 관계없이 검색하도록 한다.If the initial target boss is stored in database A under a specific schema, the employee determined as the staff may exist in different database B under a different schema. In other words, some employees may be stored in A and others in B. The system hides this distinction and allows the application to retrieve the properties and methods of the objects regardless of the stored location.

만일 두 데이터베이스들 간의 구별이 심하다면, 상기 애플리케이션은 상기 대상에 신호를 보내어 그 위치를 검출할 수 있으여, 그 자신을 예를 들어 존재하는 경우 조상이름을 검색하는 특정한 스키마에 적응시킬 수 있다.If the distinction between the two databases is severe, the application can signal the object to detect its location, adapting itself to a particular schema that retrieves, for example, the ancestor name.

본체들 간의 조합(Associations Among Entities)Associations Among Entities

조합 추상화Combination abstraction

본 출원인의 시스템은 조합으로서 본체들 간의 상호관계들의 개념을 추상한다. 이러한 조합은 상기 스키마의 일부로 정의되고, 어떠한 애플리케이션 프로그램은 상기 발명의 서비스들이 상기 조합을 탐색하도록 한다. 상기 정의가 추상이므로, 상기 물리적 적용에서 제거되고, 조합의 의미를 유지하는 방식에 노출되어 있는 한, 제공자는 관련된 데이터베이스의 외부키(foreign Key)들과 같이 이러한 상호관계들, 대상 데이터베이스의 대상 참조, 큐들을 실행하는 방법들을 유지할 수 있는 어떠한 기법도 사용할 수 있다.Applicant's system abstracts the concept of interrelationships between bodies as a combination. This combination is defined as part of the schema and some application programs allow the services of the invention to search for the combination. Since the definition is abstract, as long as it is removed from the physical application and exposed to a manner that preserves the meaning of the combination, the provider may refer to these correlations, such as foreign keys of the associated database, the target reference of the target database. For example, you can use any technique that can maintain ways of executing queues.

상기 상호관계가 조합으로 나타내어지면, 상기 애플리케이션은 쉽게 상기 상호관계를 탐색할 수 있다. 상기 조합된 대상들은 간단히 애플리케이션 프로그래밍 언어의 관련 대상들로 나타난다. 상기 애플리케이션 코드는 다음의 유사-코드와 같은 모습일 수 있다.If the correlations are represented in combination, the application can easily explore the correlations. The combined objects simply appear as related objects in the application programming language. The application code may look like the following pseudo-code.

조합은 두개의 실체들 간의 양방향 참조를 제공하는 추상 개념이다.Combination is an abstraction that provides a bidirectional reference between two entities.

대부분의 경우에서, 상기 조합된 실체들은 대상들이지만, 상기 개념은 대상에 대해 제한적이 아니다. 조합들은 예를 들어 파일 경로, 웹 페이지 URL, UUID 대상과 같은 전체적으로 유일한 이름을 가지는 대상들의 모든 쌍에서 존재한다. 예를 들어서, 클래스의 속성들로부터의 조합은 확인 방법 또는 속성들에 대한 시각적 서비스에 할당될 수 있다.In most cases, the combined entities are objects, but the concept is not limited to the object. Combinations exist in every pair of objects with globally unique names, such as file paths, web page URLs, and UUID objects. For example, a combination from the attributes of a class can be assigned to a visual service for the verification method or attributes.

또한, 조합은 생성일과 같은 그 자신의 부가적인 속성들을 가진다. 인간에 의해 사용되는 데이터베이스 관리 도구일 프로그램은 조합들의 종류들을 정의할 수 있고, 상기 이름지어진 본체들 간의 개별적 조합들을 생성할 수 있다. 상기 프로그램은 이러한 조합들을 이용하여 탐색되고, 상기 조합된 본체들 도는 조합된 자신들 중 하나를 검색한다.The combination also has its own additional attributes, such as creation date. A program that is a database management tool used by a human can define types of combinations and create individual combinations between the named bodies. The program is searched using these combinations and searches for either the combined bodies or the combined ones.

상기 조합된 본체들은 필요시 자동적으로 패치되며:상기 조합은 자동적으로 조합된 본체들의 셋 상을 탐색하는 애플리케이션으로서 참조해제된다.The combined bodies are automatically patched as needed: the combination is automatically dereferenced as an application that searches for a set of combined bodies.

상기 자동 참조해제는 자동 최적화와 자체-조정 기법들을 통해 효율적이 되는데, 예를 들어:The automatic dereference is efficient through automatic optimization and self-tuning techniques, for example:

시스템은 getAssocoatedItems 문 상에서 모든 대상들을 즉시 패치하지 않는다. 늦은 패치가 사용되어, 필요시 대상들이 데이터베이스에서 패치된다. The system does not immediately patch all targets on the getAssocoatedItems statement. Late patches are used so that targets are patched from the database if necessary.

상기 늦은 패치는 필요시 각 대상에 대해 사용되지 않는다. 상기 늦은 패치 관리자는 일괄적으로 대상들을 패치한다. The late patch is not used for each subject as needed. The late patch manager patches the targets in batches.

상기 시스템은 자체-조정되며, 상기 일괄 묶음의 크기를 상기 관찰되는 환경의 성능에 적용시킨다. 빠른 소요시간은 일괄 묶음의 크기를 증가시킨다. 늦은 소요시간은 일괄 묶음의 크기를 감소시킨다. 좀더 복잡한 조정 알고리즘도 당연히 여기 삽입될 수 있다. The system is self-tuning and adapts the size of the batch to the performance of the observed environment. Fast lead times increase the size of a batch. Late lead times reduce the size of the batch. More complex tuning algorithms can of course also be inserted here.

성능 조정 하부시스템 역시 개발자가 힌트들을 제공하도록 하여 상기 시스템을 조정 상태로 인도한다. The performance tuning subsystem also allows developers to provide hints to bring the system into tune.

조합 등록Combination registration

참조되는 대상들, 외부 키 테이블들, 방법들 또는 쿼리들과 같이 조합에 대해 사용될 수있는 다양한 적용들은 추가되는 특정이나 메타데이터 없이 탐색에 직접적으로 사용될 수 있다. 예를 들어서, 조합을 적용하는데 사용되는 격납(Containment)이라 불리는 클래스가 고려된다. 이는 컨테이너 대상과 상기 포함된 항목에 대한 두개의 참조들을 유지한다:Various applications that can be used for the combination, such as the referenced objects, foreign key tables, methods or queries, can be used directly in the search without specific or metadata added. For example, consider a class called containment that is used to apply combinations. It maintains two references to the container object and the contained item:

이러한 클래스는 다음과 같은 프로그램에 의한 탐색을 위해 직접적으로 사용될 수 있다.These classes can be used directly for navigation by programs such as:

상기 최종 선언은 상기 시스템이 현재 대상에 대한 참조들을 검출할 수 있는컨테이너라 이름지어진 속성을 이용하는 것으로 클래스 격납의 대상을 검색한다는 것을 말하며, 이후, 상기 속성 포함된 항목에 의해 참조되는 모든 대상들을 검출한다.The final declaration says that the system searches for the object of class storage by using an attribute named container that can detect references to the current object, and then detects all objects referenced by the attribute included item. do.

상기 클래스 격납은 모든 방식에서 특별한 것이 아니며, 단지 일반적인 클래스이다.(이는 특정한 특징들 없이 일반적인 테이블을 이용하는 SQL에서의 결합 방식과 유사하다.)The class storage is not special in every way, it is just a generic class. (This is similar to the concatenation in SQL with generic tables without specific features.)

그러나, 본 발명은 이러한 개념을 상기 격납 클래스을 상기 조합 등록에 등록하는 것을 허용함으로써 좀더 일반적으로 만들었다. 이는 상기 클래스가 일반적으로 조합으로서 사용되는 인프라구조는 어떠한 방법으로도 상기 클래스의 사용을 제한하지 않는다.However, the present invention has made this concept more general by allowing the containment class to register with the combination registration. This does not limit the use of the class in any way by the infrastructure in which the class is generally used in combination.

유사한 등록은 연관들(associations)의 다른 형태를 위해 이루어지고, (1 대 1 연관을 위해) 한 쌍의 직접적인 객체 대 객체 레퍼런스들에; (1 대 N 및 N 대 N 연관들을 위해) 객체 대 객체 레퍼런스들의 집합들과 연관된 객체들을 논리적으로 검색하는 검색 방법들에 제한되지 않는다.Similar registrations are made for other forms of associations, for a pair of direct object-to-object references (for one-to-one associations); It is not limited to search methods that logically search for objects associated with sets of object to object references (for 1 to N and N to N associations).

상기 연관 레지스트리는 수많은 잇점들을 제공하며, 예를 들면:The associative registry provides numerous advantages, for example:

*소비자 애플리케이션들은 특정 제공자에 의해 사용된 실현 모델을 알고 있을 필요가 없다; 그들은 연관들의 추상적인 개념을 단순히 참조하고, 상기 인프러구조(infrastructure)는 상기 레퍼런스를 상기 연관의 특정 실현에 주어진 적절한 동작들로 번역한다.* Consumer applications do not need to know the implementation model used by a particular provider; They simply refer to the abstract concept of associations, and the infrastructure translates the reference into the appropriate actions given for the particular realization of the association.

*상기 연관의 실현으로부터 상기 애플리케이션을 분리하는 것은 상기 제공자의 데이터 모델에서의 변화들에 대하여 보다 탄력적이도록 하고, 또한 매우 다른 형태의 데이터베이스 제공자로 데이터베이스 제공자의 교체를 도모할 수 있도록 한다.Decoupling the application from the realization of the association makes it more resilient to changes in the provider's data model and allows for the replacement of the database provider with a very different type of database provider.

*상기 제공자의 애플리케이션-레벨 도식에 대한 어떤 것도 알지 못하는 범용툴들은 내성(耐性)을 위해 상기 연관 레지스트리를 사용하여, 어떤 형태의 연관들이 존재하는 지를 발견할 수 있다; 이것은 그래픽 브라우저를 위해 특히 유용하다.General purpose tools that do not know anything about the provider's application-level schema can use the association registry for immunity to discover what types of associations exist; This is especially useful for graphic browsers.

*레이어 2 모델을 생성하는 때, 상기 레이어 2 생성기는 등록된 연관 형태들을 근거로 한 가상 특성들을 생성할 수 있다; 예를 들면, 우리는 상기 명칭 컨텐츠 하의 억제 클래스를 통하여 상기 연관을 등록할 수 있고, 그럼으로써 상기 레이어 2 코드 생성기가 상기 연관들을 항해하는 보다 용이한 방법으로 애플리케이션을 부여하고, 상기 컨테이너 클래스에 대한 가상 특성 컨텐츠를 생성하도록 한다.When generating a layer 2 model, the layer 2 generator may generate virtual properties based on registered association types; For example, we can register the association via a suppression class under the name content, thereby granting the application in an easier way the layer 2 code generator navigates the associations, and for the container class. Create virtual property content.

외부 객체들에 대한 레퍼런스Reference to external objects

객체들 간의 연관들은 외부 제공자들내에 저장된 정보를 참조할 것이다. 예를 들면, 이전 예에서의 보스(boss)는 데이터베이스(A)에 저장될 수 있고, 스태프(staff)는 데이터베이스(B)에 저장될 수 있다.Associations between objects will refer to information stored in external providers. For example, the boss in the previous example may be stored in database A, and the staff may be stored in database B.

연관들의 자동 항해 및 상기 객체들의 자동 디-레퍼렌싱(de-referencing)은 상기 애플리케이션으로부터 상기 차이를 완전히 숨긴다. 상기 애플리케이션은 서로서로 이동하면서, 상기 객체들이 위치된 장소에 대한 염려없이 상기 객체들 간을 항해할 수 있다.Automatic navigation of the associations and automatic de-referencing of the objects completely hides the difference from the application. The application can navigate between the objects, moving with each other, without worrying about where the objects are located.

상기 시스템의 구조가 상기 애플리케이션으로부터 상기 제공자의 성질을 숨기기 때문에, 이러한 외부 레퍼런스들은 어느 형태의 데이터 소스를 지적하는 것이 가능하다; 또한, 비-객체 데이터베이스와, 디렉토리 내의 사람, 파일 또는 인터넷 상의 페이지에서의 데이터에 제한되지 않는다.Since the structure of the system hides the nature of the provider from the application, it is possible that these external references point to any form of data source; It is also not limited to non-object databases and data in people, files in a directory, or pages on the Internet.

외부적으로 저장된 연관들Externally Stored Associations

많은 경우, 애플리케이션은 변화시킬 수 없는 도식(schema)의 현존하는 데이터베이스 제공자를 사용할 수 있다.In many cases, an application can use an existing database provider with a schema that cannot be changed.

이러한 경우, 상기 제공자들 내의 이러한 객체들 간의 관련성을 유지하는 것이 바람직하다. 실제적인 예로서, 정보는 상업적 재정 운영 시스템의 데이터베이스 내에 저장될 것이고, 사람 또는 부서들을 참조하고, 상기 레퍼런스들을 디렉토리 내의 대응하는 구성원들에 링크시키는 것이 바람직하다. 상기 링크는 상기 디렉토리 내의 조직 데이터를 근거로 하여 데이터베이스 내의 데이터에 작용하고 결정하는 애플리케이션을 가정하면, 이메일을 보내는 것이 만들어지도록 한다. 그러나, 만약 데이터베이스나 상기 디렉토리 모두가 변경될 수 없으면, 상기 연관을 저장하고 상기 데이터베이스들 간의 간단한 연결이 가능하지 않을 수 있다. 출원인의 시스템은 상기 연관들이 다른 데이터베이스들에 저장되도록 허용한다. 따라서, 서로 참조하지 않고 서로 참조될 수 없는 2개의 데이터베이스들은 그럼에도 불구하고 연결될 수 있다.In such cases, it is desirable to maintain the association between these objects in the providers. As a practical example, the information would be stored in a database of a commercial financial operations system, and it is desirable to refer to a person or departments and link the references to corresponding members in the directory. The link allows an email to be created, assuming an application that acts on and determines data in the database based on organizational data in the directory. However, if neither the database nor the directory can be changed, it may not be possible to store the association and simple connection between the databases. Applicant's system allows the associations to be stored in other databases. Thus, two databases that do not refer to each other and cannot be referenced to each other may nevertheless be linked.

출원인의 시스템에서, 상기 애플리케이션은 표준 방법으로 상기 연관들을 항해하고, 해야하는 일은 상기 애플리케이션이 상기 연관을 상기 항해를 위해 사용되도록 지명한 때, 상기 연관이 저장되는 장소를 명확하게 하는 것이다. 이러한 적은불편은 상기 연관을 레지스트리(registry)에 등록시킴으로써 제거될 수 있다. 이 방법으로, 상기 연관은 표준 방법으로, 명칭에 의해 언급될 수 있고, 상기 시스템은 상기 레지스트리에서 검색하고, 상기 연관이 실제적으로 저장된 장소를 찾고, 링크를 획득하기 위해 외부 연관 저장소로 가서, 상기 링크를 다른 객체에 따르도록 한다.In Applicant's system, the application navigates the associations in a standard way, and the task is to clarify where the association is stored when the application names the association to be used for the navigation. This minor inconvenience can be eliminated by registering the association in a registry. In this way, the association can be referred to by name, in a standard way, and the system searches in the registry, finds where the association is actually stored, and goes to an external association repository to obtain a link, Follow links to other objects.

외부 루프백(Loopback) 연관들Outer Loopback Associations

동일 기술이 도식이 상기 연관의 직접적인 저장을 수용하기 위해 변화될 수 없는 때, 단일 데이터베이스 내에서 객체들을 참조하는 연관들을 저장하기 위해 사용될 수 있다.The same technique can be used to store associations that reference objects within a single database when the scheme cannot be changed to accommodate direct storage of the association.

언어 결합(Language Bindings)Language Bindings

출원인의 시스템은 비쥬얼 베이직을 포함하고, 자바, C++ 및 다른 COM을 지원하는 언어를 포함하는 일반 프로그램밍 언어들로 이용가능한 애플리케이션 프로그래밍 인터페이스를 통하여 서비스들을 제공한다.Applicant's system provides services through an application programming interface that includes Visual Basic and is available in common programming languages, including languages that support Java, C ++, and other COM.

레이어 1 언어 결합Layer 1 Language Combination

정보 제공자 또는 서비스 제공자에 접근하는 모든 시스템은 코어(core) 데이터 모델을 사용한다. ODBC 및 JDBC와 같은 SQL-기반 시스템에서, 상기 데이터 모델은 저장된 과정으로 확장되는, 셀들 내의 원자 구성요소로 이루어진 테이블들이다. ORB에서, 상기 데이터 모델은 인터페이스이고, 본질적으로 과정 호출(procedure call)을 위한 설명이다. 데이터 모델의 선택은 일부 트레이드오프(tradeoff)를 구체화하기 때문에, 모든 설계의 본질적인 부분이다:Every system that accesses an information provider or service provider uses a core data model. In SQL-based systems such as ODBC and JDBC, the data model is tables of atomic components in cells that extend to stored processes. In an ORB, the data model is an interface and is essentially a description for a procedure call. Since the choice of data model embodies some tradeoffs, it is an essential part of any design:

*만약 상기 데이터 모델이 원시적이면, 상기 시스템(예를 들면, SQL)의 용량을 제한한다.If the data model is primitive, it limits the capacity of the system (e.g. SQL).

*만약 상기 데이터 모델이 풍부하면, 함께 동작하는 제공자의 많은 용량을 요구하고, 원시 제공자들을 연결하는데 어려움을 준다(예를 들면, 자바 RMI).* If the data model is abundant, it requires a lot of capacity of providers working together and makes it difficult to connect native providers (eg Java RMI).

*만약 상기 데이터 모델이 매우 특정적이면, 다른 설계에 적응하도록 적용될 수 없다(예를 들면, 마이크로소프트 WMI).* If the data model is very specific, it cannot be adapted to adapt to other designs (eg Microsoft WMI).

*만약 상기 데이터 모델이 매우 범용적이면, 낮은 레벨의 서비스들을 제공하고 상기 애플리케이션으로의 모든 경계 지능을 잔존시킨다.If the data model is very general, it provides low levels of services and leaves all boundary intelligence to the application.

상기 현재 객체 모델은 항목으로 불리는 것으로 개시하고 항목들의 집합을 한정하기 위해 진행하고 항목의 명칭들의 개념화를, 최종적으로 명칭된 집합 및 항목 소유권을 유도한다. 이러한 방법으로, 소형이고 정밀한 토대(foundation)는 데이터를 저장하고 이동시키고 참조하도록 사용될 수 있는 자기-설명 데이터 포맷을 위해 만들어진다. 상기 데이터 모델은 레이어 0으로 불린다.The current object model starts with what is called an item and proceeds to define a set of items and leads to the conceptualization of the names of the items, finally leading to named sets and item ownership. In this way, a compact and precise foundation is created for a self-describing data format that can be used to store, move and reference data. The data model is called layer 0.

상기 포맷은 클래스 및 객체들과 같은 고-레벨 개념들과, 특성 및 방법(레이어 1)을 정의하기 위해 만들어지고, 이때 상기 포맷의 최상에 컴퓨터 및 피고용자들과 같은 특정 클래스들을 만든다(레이어 2).The format is created to define high-level concepts, such as classes and objects, and properties and methods (layer 1), with specific classes such as computers and employees on top of the format (layer 2). .

이러한 설계의 독특한 장점은 하기와 같다:The unique advantages of this design are:

*상기 기본 데이터 모델(레이어 0)은 충분히 단순하여 객체 모델에 어떤 필요조건들을 가중함이 없이, 현존하는 시스템을 적응시킬 수 있다.The basic data model (layer 0) is simple enough to adapt existing systems without weighting any requirements on the object model.

*고-레벨 모델(레이어 1)은 단순한 레이어 0 모델을 근거로 하기 때문에, 보다 단순한 제공자들의 용량을 요구함이 없이, 이러한 용량을 제시하는 상기 제공자들을 위해 보다 현대적인 객체 모델과 보다 풍부한 경계를 제공할 수 있다.Since the high-level model (Layer 1) is based on a simple Layer 0 model, it provides a more modern object model and richer boundaries for those providers who present this capacity without requiring simpler provider capacity. can do.

*상기 레이어 1 결합의 실현은 동적 처리를 근거로 하며, 따라서 불일치와 변경에 강하다. 만약 제공자가 데이터 모델을 변화시키면, 예를 들어 만약 데이터베이스 도식이 변경되면, 상기 레이어 0 모델은 상기 변화에 자동적으로 적응하고, 상기 레이어 1 모델도 마찬가지이다. 상기 제공자를 사용하는 애플리케이션은 변화 또는 재편집(recompilation)을 요구하지 않고, 만약 그럴필요가 없으면 실패하지 않는다. 특히, 부가된 용량들은 만약 상기 애플리케이션이 관심이 없으면 단순하게 무시될 수 있으나, 만약 상기 애플리케이션이 내성을 수행하기 위해 출원인의 시스템의 서비스들을 사용하면, 새로운 용량들에 대하여 발견하여 조사할 것이다. 제거된 용량들은 이러한 용량들을 사용하지 않는 애플리케이션에 대하여 영향을 미치지 않는다. 만약 애플리케이션이 제거되어지는 용량을 사용하려 한다고 하더라도, 단순히 예외(exception) 메시지을 얻고 회복을 시도할 수 있다.The realization of layer 1 combining is based on dynamic processing and thus is resistant to inconsistencies and changes. If the provider changes the data model, for example if the database schema changes, the layer 0 model automatically adapts to the change, and so does the layer 1 model. An application using the provider does not require change or recompilation and will not fail if it does not need to. In particular, the added capacities can simply be ignored if the application is not interested, but if the application uses the services of Applicant's system to perform immunity, new capacities will be discovered and investigated. The removed capacities do not affect applications that do not use these capacities. If an application tries to use the capacity being removed, it can simply get an exception message and try to recover.

레이어 2 프록시 결합Layer 2 proxy binding

문제: 복원(resilience) 대 확증(Assurance)Issue: resilience vs Assurance

커다란 애플리케이션 시스템을 구성하고 관리하는 때, 전체 시스템의 일치를 관리하면서 이전에 존재하는 구성요소들 또는 다른 애플리케이션 시스템들로부터의 구성요소를 포함하는 시스템이 요구된다. 용어인 배치 관리(Configuration Management) (또는, 버전 관리)는 상기 시스템의 다양한 구성요소들이 조화되어, 그래서 상호동작하고, 일치하여 동일한 가정으로부터 작동하는 것을 확증하는 활동을 나타낸다. 현존하는 시스템에서, 배치 관리는 건설-시간(build-time) 활동으로서 일반적으로 보여진다.When constructing and managing large application systems, there is a need for a system that includes components from previously existing components or components from other application systems while managing the consistency of the entire system. The term Configuration Management (or Version Management) refers to an activity that confirms that the various components of the system are coordinated, so that they interact and work together from the same assumption. In existing systems, batch management is generally seen as a build-time activity.

출원인의 시스템에서, 배치 관리는 작동시간 활동이다: 상기 시스템의 구성요소들은 일반적인 버전으로 통신하고, 협상하여 동의하도록 되어야 한다; 각 구성요소는 복원가능하여야 하고 통신자가 불일치할 때조차 작동을 계속할 수 있어야 한다.In Applicant's system, batch management is an uptime activity: the components of the system must communicate, negotiate and agree in a generic version; Each component must be resilient and able to continue operation even when the communicator is inconsistent.

현존하는 시스템들에서, 이러한 복원은 만성(late) 결합으로 종종 불리는 동적 인터페이스를 통하여 성취될 수 있다. COM의 IDispatch-기반 인터페이스와 같이, 만성-범위(late-bound) 시스템은 구성요소가 제시하는 모든 인터페이스에 적응할 수 있다.In existing systems, this restoration can be accomplished through a dynamic interface, often referred to as late bond. Like COM's IDispatch-based interface, a late-bound system can adapt to any interface presented by a component.

그러나, 소프트웨어 시스템을 만들 때, 전체 만성-범위는 조기 결합으로 컴파일 시간에서 상기 배치의 일치를 확인하는 가능성을 제거하기 때문에, 종종 바람직하지 않다. 컴파일-시간 확인은 동작시간 시험이 소모적인 것으로 보여지지 않기때문에, 만성-범위 시스템으로 성취될 수 없는 레벨의 확증을 허용한다.However, when creating a software system, the full chronic-range is often undesirable because it eliminates the possibility of confirming the consistency of the batch at compile time with early coupling. Compile-time checking allows for a level of assurance that cannot be achieved with a chronic-range system, since run-time testing does not appear to be exhaustive.

출원인의 시스템은 만성 결합의 복원과 조기 결합의 확증을 결합한다.Applicant's system combines restoration of chronic binding with confirmation of early binding.

문제: 복원 대 편리Problem: Restoration vs. Convenient

동적 인터페이스는 소비자로 하여금 내성 및 반성 서비스를 통하여 상기 제공자에게 질문함으로써, 제공자의 설명을 개작할 수 있도록 한다. 이러한 서비스들은 COM과 같은 구성요소 아키텍쳐 내에서, 또한 ODBC 및 임베드된 SQL과 같은 데이터베이스 접근 서비스에서 일반적으로 제공된다.The dynamic interface allows the consumer to modify the provider's description by asking the provider through introspection and reflection services. These services are typically provided within component architectures such as COM and also in database access services such as ODBC and embedded SQL.

상기 시스템의 잇점은 고가를 의미한다. 이러한 인터페이스들에 대한 프로그래밍은 매우 곤란하고 오류가 발생하기 쉽다. 애플리케이션 개발자에 대한 부담을 감소시키기 위해, 우리는 상기 프로그램 환경에서 직접적으로 상기 데이터 모델을 집적시키면서, 바람직한 비지니스 애플리케이션의 데이터 모델을 노출하는 인터페이스를 선호한다. 이것은 특히 상대적으로 풍부한 범위 모델을 지원하는, C++, 자바 및 비쥬얼 베이직과 같은 현대 객체-지향 언어들에서 장점이 있다.The advantage of the system is that it is expensive. Programming for these interfaces is very difficult and error prone. To reduce the burden on application developers, we prefer an interface that exposes the data model of the desired business application while integrating the data model directly in the program environment. This is particularly advantageous in modern object-oriented languages such as C ++, Java and Visual Basic, which support a relatively rich range model.

해결책solution

현존하는 시스템에서, 이러한 두 방법의 잇점은 동시에 사용될 수 없다. COM과 같은 조기-범위 시스템은 만성 결합의 복원 또는 유동성을 제공하지 않는다. 동적 SQL과 같은 유동 시스템들은 조기 결합의 확증과 편리를 제공하지 않는다.In existing systems, the advantages of these two methods cannot be used simultaneously. Early-range systems such as COM do not provide restoration or fluidity of chronic binding. Flow systems such as dynamic SQL do not provide confirmation and convenience of early joining.

출원인의 시스템은 고-레벨 언어 결합을 통하여 이러한 잇점들을 겹합한다. 상기 레이어 2 프록시 결합은 특정 프로그래밍 언어로 고유(native) 클래스의 형태로 정보 제공자에게 사용가능한 객체들을 노출시킨다. 개발자는 상기 데이터베이스 내의 도식을 정의하고 상기 애플리케이션 언어로 상기 도식을 사용한다: 상기 프록시 결합은 중앙 데이터 제공자이다.Applicant's system combines these benefits through high-level language combining. The layer 2 proxy association exposes the objects available to the information provider in the form of native classes in a particular programming language. A developer defines a scheme in the database and uses the scheme in the application language: The proxy association is a central data provider.

결합의 이러한 형태는 코어의 장점을 감소시킴이 없이, 상기 레이어 1 결합에 대한 여러 장점들을 제공한다.This form of bonding provides several advantages over the layer 1 bonding without reducing the advantages of the core.

*상기 레이어 1 결합의 유동성과, 내성을 통하여 제공자를 동적으로 적응시키는 능력은 상기 개발자에 대한 무거운 짐을 수반한다. 상기 레이어 2 결합은 개발 및 관리 노력을 감소시키면서, 상기 애플리케이션 영역의 경계 구성을 상기 개발자에게 제시한다.The fluidity of the layer 1 coupling and the ability to dynamically adapt providers through immunity carries a heavy burden on the developer. The layer 2 coupling presents the developer with a boundary configuration of the application area while reducing development and management effort.

*레이어 1의 동적 적응성은, 즉 제공자 도식에서의 변화에 적응하는 능력은 컴파일 시간에 소비자들 및 제공자들 간의 일치성을 확인하는 것을 어렵게 한다. 상기 레이어 2 결합은 목표 프로그래밍 언어 또는 인프라구조에서 클래스들을 생성하고, 이러한 클래스들은 컴파일-시간 확인을 위해 사용될 수 있다.Layer 1's dynamic adaptability, ie its ability to adapt to changes in the provider schema, makes it difficult to verify the correspondence between consumers and providers at compile time. The layer 2 combination creates classes in the target programming language or infrastructure, and these classes can be used for compile-time checking.

*동시에, 상기 레이어 2 결합이 레이어 1의 최상에 구현되기 때문에, 레이어 1 애플리케이션과 같은 동적 적응을 가능하게 한다. 따라서, 원거리 배치, 관리상의 어려움 또는 비용문제로 인하여 상기 개발자가 제어할 수 없는 현존하는 애플리케이션은 레이어 1의 복원으로 작동을 지속할 수 있다. 컴파일-시간 확인을 받을 가치가 있는 애플리케이션들은 표준 레이어 2 확인 프로세스를 통하여 작동될 수 있다.At the same time, the layer 2 combination is implemented on top of layer 1, enabling dynamic adaptation such as layer 1 applications. Thus, existing applications beyond the developer's control due to remote deployment, management difficulties, or cost issues can continue to operate with restoration of Layer 1. Applications that deserve compile-time verification can be run through the standard Layer 2 verification process.

통합된 프록시 및 지속(Persistence) 결합Integrated Proxy and Persistence Combination

문제: 지속 결합의 제한Problem: Limitation of Persistent Bonds

통합된 결합들Integrated combinations

출원인의 시스템에서, 상기 레이어 2 지속 및 프록시 결합은 하나의 집적된 전체로 통합되어, 불일치의 위험을 감소시킨다.In Applicants' system, the Layer 2 persistence and proxy bindings are integrated into one integrated whole, reducing the risk of inconsistencies.

개발자는 상기 애플리케이션 프로그램으로 또는 데이터베이스 툴로 상기 개시 도식(initial schema)를 정의할 수 있다. 유틸리티는 상기 도식 정의를 하나의 환경에서 다른 환경으로 이동시킨다. 만약 상기 원시 정의가 상기 애플리케이션 프로그램이었다면, 데이터베이스 도식은 상기 데이터베이스에 구성되고 설치된다. 만약 상기 개시 정의가 상기 데이터베이스이었다면, 소스 코드는 상기 애플리케이션 프로그램 내에서의 사용을 위해 생성된다. 상기 개발자는 어느 위치에서 상기 정의를 개량한다; 예를 들면, 색인화(indexing) 및 집단화(clustering) 정의들을 부가하고, 상기 특성 및 그것들의 형태 및 특징들을 변화시키고, 서버 또는 클라이언트편 방법을 부가하거나 변경함으로써. 출원인의 시스템의 유용성은 하나의 언어로부터 다른 언어로 상기 정의를 번역하고, 상기 2개의 환경을 동기화시킨다.A developer can define the initial schema with the application program or with a database tool. The utility moves the schematic definition from one environment to another. If the source definition was the application program, a database schema is constructed and installed in the database. If the disclosure definition was the database, source code is generated for use in the application program. The developer improves the definition at some point; For example, by adding indexing and clustering definitions, changing the properties and their forms and features, and adding or changing server or client side methods. The utility of Applicant's system translates the definition from one language to another and synchronizes the two environments.

본 발명의 특징Features of the present invention

이러한 통합은 본 발명의 하기의 특징을 통하여 성취된다:This integration is achieved through the following features of the present invention:

*상기 애플리케이션 프로그램의 신택스(syntax)는 상기 2개의 언어 결합(상기 프록시 및 지속 모델들)에 대하여 동일하다;Syntax of the application program is the same for the two language combinations (the proxy and persistence models);

*상기 데이터베이스 도식은 상기 2개의 결합 모델들에 대하여 동일하다;The database scheme is the same for the two combined models;

*양 모델들에서의 애플리케이션은 동일한 동작시 지원 라이브러리를 사용한다;The application in both models uses the support library for the same operation;

*양 모델들에서의 애플리케이션은 동일한 경계를 구비한다;The application in both models has the same boundary;

*상기 프록시 모델에서 사용된 상기 코드 생성기는 상기 지속 모델 프리프로세서와 양립하는 코드를 생성한다;The code generator used in the proxy model generates code compatible with the persistence model preprocessor;

*상기 지속 모델에서 사용된 상기 도식 생성기 및 코드 생성기는 상기 프록시 시스템과 양립하는 도식과 코드를 생성한다;The schematic generator and code generator used in the persistence model generate a scheme and code compatible with the proxy system;

*양 코드 프리프로세서와 코드 생성기는 사용자 확장을 허용하고 보호한다.Both code preprocessors and code generators allow and protect user extensions.

장점들Advantages

이 통합은 적어도 매우 중요한 2개의 장점을 제공한다:This integration offers at least two very important advantages:

첫째로, 통합된 결합들은 반복적인 개발을 지원한다. 따라서, 개발자는 2개의 작동 방법 사이에서 전진하고 후진하여 상기 2개의 모델들을 반복적으로 사용할 수 있다.First, integrated combinations support iterative development. Thus, the developer can use the two models repeatedly by moving forward and backward between the two operating methods.

둘째로, 통합된 결합들은 상기 시스템을 학습하기 용이하게 하는 단일 소스 코드 모델에 애플리케이션을 제한하여 교육적 통합을 제공한다.Second, integrated combinations provide educational integration by limiting the application to a single source code model that facilitates learning the system.

본 발명을 수행하기 위한 바람직한 실시예가 상세히 개시되지만, 본 발명이 속하는 종래 기술에 익숙한 사람은 본 발명을 실시하기 위한 다양한 다른 설계 및 실시예를 인식할 것이다. 이러한 대안 실시예들은 본 발명의 범위에 있다.While preferred embodiments for carrying out the invention are disclosed in detail, those skilled in the art will recognize various other designs and embodiments for carrying out the invention. Such alternative embodiments are within the scope of the present invention.

Claims (11)

분산 컴퓨터 시스템을 통하여 저장된 데이터의 완전성을 유지하는 방법으로서,A method of maintaining the integrity of data stored through distributed computer systems, 서버 애플리케이션으로부터 클라이언트 애플리케이션으로 오브젝트를 전송하는 단계와;Sending the object from the server application to the client application; 상기 서버 애플리케이션으로부터 상기 클라이언트 애플리케이션으로 오브젝트 상태를 전송하는 단계와;Sending an object state from the server application to the client application; 상기 오브젝트와, 상기 서버 애플리케이션과 상기 클라이언트 애플리케이션 간의 상기 오브젝트 상태를 동기화시키는 단계와; 그리고Synchronizing the object state between the object and the server application and the client application; And 상기 동기화 방법 이후 서버 애플리케이션 방법을 호출함으로써 상기 오브젝트를 갱신하는 단계를 포함하는 것을 특징으로 하는 방법.Updating the object by invoking a server application method after the synchronization method. 제 1 항에 있어서, 상기 갱신 단계 이후, 상기 오브젝트와, 상기 서버 애플리케이션과 상기 클라이언트 애플리케이션 간의 상기 오브젝트 상태를 재동기화시키는 단계를 더 포함하는 것을 특징으로 하는 방법.2. The method of claim 1, further comprising, after the updating step, resynchronizing the object state between the object and the server application and the client application. 분산 컴퓨터 시스템을 통하여 저장된 데이터의 완전성을 유지하는 방법으로서,A method of maintaining the integrity of data stored through distributed computer systems, 서버 애플리케이션에 의해 상기 서버 애플리케이션과 클라이언트 애플리케이션 간의 연결 정지를 검출하는 단계와;Detecting a connection stop between the server application and a client application by a server application; 상기 서버 애플리케이션에 의해, 상기 연결 정지 동안 상기 클라이언트 애플리케이션에 의한 모든 트랜잭션들을 저장하는 단계와;Storing, by the server application, all transactions by the client application during the connection outage; 상기 클라이언트 애플리케이션에 의해, 상기 서버 애플리케이션과 상기 클라이언트 애플리케이션 간의 연결 정지를 검출하는 단계와;Detecting, by the client application, a connection stop between the server application and the client application; 상기 클라이언트 애플리케이션에 의해, 상기 연결 정지 동안 상기 서버 애플리케이션에 의한 모든 트랜잭션들을 저장하는 단계와; 그리고Storing, by the client application, all transactions by the server application during the connection outage; And 상기 서버 애플리케이션과 상기 클라이언트 애플리케이션 간의 연결이 복구된 후, 상기 서버 애플리케이션과 상기 클라이언트 애플리케이션 간의 모든 트랜잭션들을 전달하는 단계를 포함하는 것을 특징으로 하는 방법.And after the connection between the server application and the client application has been restored, forwarding all transactions between the server application and the client application. 분산 컴퓨터 시스템을 통하여 저장된 데이터의 완전성을 유지하는 방법으로서,A method of maintaining the integrity of data stored through distributed computer systems, 지속될 오브젝트를 확인하는 단계와;Identifying an object to be persisted; 상기 오브젝트를 저장하기 위한 데이터베이스 제공자를 결정하는 단계와; 그리고Determining a database provider for storing the object; And 상기 데이터베이스 제공자에 상기 오브젝트를 저장하는 단계를 포함하는 것을 특징으로 하는 방법.Storing the object in the database provider. 제 4 항에 있어서, 상기 결정 단계는 상기 데이터베이스 제공자에 의해 유지되는 데이터베이스 내에 규정된 개요와의 관련을 기초로 상기 데이터베이스 제공자를 선택하는 단계를 포함하는 것을 특징으로 하는 방법.5. The method of claim 4, wherein the determining step includes selecting the database provider based on an association with an outline defined in a database maintained by the database provider. 제 4 항에 있어서, 상기 결정 단계는 상기 오브젝트가 속해있는 부류와 관련된 데이터베이스를 기초로 상기 데이터베이스 제공자를 선택하는 단계를 포함하는 것을 특징으로 하는 방법.5. The method of claim 4, wherein the determining step includes selecting the database provider based on a database associated with the class to which the object belongs. 제 4 항에 있어서, 상기 결정 단계는 상기 오브젝트가 속해있는 부류에 대한 상기 데이터베이스의 다이내믹한 관련을 기초로 상기 데이터베이스 제공자를 선택하는 단계를 포함하는 것을 특징으로 하는 방법.5. The method of claim 4, wherein the determining step includes selecting the database provider based on the dynamic association of the database with the class to which the object belongs. 분산 컴퓨터 시스템을 통하여 저장된 데이터의 완전성을 유지하는 방법으로서,A method of maintaining the integrity of data stored through distributed computer systems, 클라이언트 애플리케이션에서, 서버 애플리케이션으로부터 페치될 오브젝트를 확인하는 단계와;At the client application, identifying an object to be fetched from the server application; 상기 오브젝트의 액티브 버전이 상기 서버 애플리케이션으로부터 이전에 페치되었었는 지를 결정하는 단계와;Determining if an active version of the object was previously fetched from the server application; 상기 서버 애플리케이션으로부터 상기 오브젝트를 요구하는 단계와; 그리고Requesting the object from the server application; And 상기 요구 단계를 기초로 상기 서버 애플리케이션으로부터 상기 오브젝트를 수신하는 단계를 포함하는 것을 특징으로 하는 방법.Receiving the object from the server application based on the requesting step. 제 8 항에 있어서, 상기 서버 애플리케이션으로부터 이전에 페치된 상기 오브젝트의 액티브 버전을 수신하는 단계에 의해, 상기 서버로부터 수신된 오브젝트를 버리는 단계를 더 포함하는 것을 특징으로 하는 방법.9. The method of claim 8, further comprising discarding an object received from the server by receiving an active version of the object previously fetched from the server application. 제 8 항에 있어서, 상기 요구 단계 및 수신 단계는 상기 오브젝트의 액티브 버전이 상기 서버 애플리케이션으로부터 이전에 페치되지 않은 경우에만 수행되는 것을 특징으로 하는 방법.9. The method of claim 8, wherein said requesting and receiving steps are performed only if an active version of said object has not been fetched previously from said server application. 분산 컴퓨터 시스템을 통하여 저장된 데이터의 완전성을 유지하는 방법으로서,A method of maintaining the integrity of data stored through distributed computer systems, 오브젝트의 방법과 관련된 위치 식별자를 저장하는 단계와, 여기서 상기 위치 식별자는 상기 방법을 처리하기 위한 위치를 나타내며;Storing a location identifier associated with the method of the object, wherein the location identifier represents a location for processing the method; 상기 방법을 호출하는 단계와; 그리고Invoking the method; And 상기 위치 식별자에 의해 표시되는 방법을 처리하는 단계를 포함하는 것을 특징으로 하는 방법.Processing the method indicated by the location identifier.
KR1020017013760A 1999-04-26 2000-04-26 Method and apparatus for maintaining data integrity across distributed computer systems KR20020038575A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13101999P 1999-04-26 1999-04-26
US60/131,019 1999-04-26
PCT/US2000/011554 WO2000065458A1 (en) 1999-04-26 2000-04-26 Method and apparatus for maintaining data integrity across distributed computer systems
US09/559,237 2000-04-26
US09/559,237 US7003587B1 (en) 1996-07-18 2000-04-26 Method and apparatus for maintaining data integrity across distributed computer systems

Publications (1)

Publication Number Publication Date
KR20020038575A true KR20020038575A (en) 2002-05-23

Family

ID=26829056

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017013760A KR20020038575A (en) 1999-04-26 2000-04-26 Method and apparatus for maintaining data integrity across distributed computer systems

Country Status (6)

Country Link
KR (1) KR20020038575A (en)
AU (3) AU779943B2 (en)
BR (1) BR0010094A (en)
CA (1) CA2371397A1 (en)
IL (1) IL146180A0 (en)
WO (1) WO2000065458A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100738534B1 (en) 2005-12-12 2007-07-11 삼성전자주식회사 Apparatus and method for download of dual module
KR100956637B1 (en) * 2007-12-07 2010-05-11 한국전자통신연구원 Method for asynchronous data replication in distributed file system and system thereof

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10058391C2 (en) 2000-11-24 2003-06-18 Siemens Ag Object processing device
GB2377345B (en) * 2001-07-02 2004-06-16 Motorola Inc Time synchronisation system and method
US7308465B2 (en) 2003-04-03 2007-12-11 Microsoft Corporation Playback graph for data synchronization
US9519528B2 (en) 2013-04-19 2016-12-13 National Ict Australia Limited Checking undoability of an API-controlled computing system
CN113176876B (en) * 2021-04-23 2023-08-11 网易(杭州)网络有限公司 Data reading and writing method and device and electronic equipment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2227431C (en) * 1995-07-20 2001-05-15 Novell, Inc. Transaction log management in a disconnectable computer and network
US5867650A (en) * 1996-07-10 1999-02-02 Microsoft Corporation Out-of-band data transmission
US5948060A (en) * 1997-01-24 1999-09-07 International Business Machines Corporation Speeding-up communication rates on links transferring data structures by a method of handing scatter/gather of storage blocks in commanded computer systems
US6061714A (en) * 1997-05-07 2000-05-09 International Business Machines Corporation Persistent cache synchronization and start up system
US5987376A (en) * 1997-07-16 1999-11-16 Microsoft Corporation System and method for the distribution and synchronization of data and state information between clients in a distributed processing system
US6070184A (en) * 1997-08-28 2000-05-30 International Business Machines Corporation Server-side asynchronous form management
US6029177A (en) * 1997-11-13 2000-02-22 Electronic Data Systems Corporation Method and system for maintaining the integrity of a database providing persistent storage for objects

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100738534B1 (en) 2005-12-12 2007-07-11 삼성전자주식회사 Apparatus and method for download of dual module
KR100956637B1 (en) * 2007-12-07 2010-05-11 한국전자통신연구원 Method for asynchronous data replication in distributed file system and system thereof

Also Published As

Publication number Publication date
CA2371397A1 (en) 2000-11-02
AU2005200028A1 (en) 2005-02-17
AU4500400A (en) 2000-11-10
IL146180A0 (en) 2002-07-25
AU2005200029A1 (en) 2005-02-17
WO2000065458A8 (en) 2001-03-22
AU779943B2 (en) 2005-02-17
BR0010094A (en) 2002-07-02
WO2000065458A1 (en) 2000-11-02

Similar Documents

Publication Publication Date Title
US7003587B1 (en) Method and apparatus for maintaining data integrity across distributed computer systems
US7680879B2 (en) Method and apparatus for maintaining data integrity across distributed computer systems
US6298478B1 (en) Technique for managing enterprise JavaBeans (™) which are the target of multiple concurrent and/or nested transactions
US6560609B1 (en) Delegating instance management functions to underlying resource managers
US8606877B2 (en) Java virtual machine having integrated transaction management system
US6567818B1 (en) Employing management policies to manage instances of objects
US9398077B2 (en) Mobile applications
US6502103B1 (en) Providing composed containers and data objects to support multiple resources
US6594671B1 (en) Separating privileged functions from non-privileged functions in a server instance
US6553384B1 (en) Transactional name service
US8407723B2 (en) JAVA virtual machine having integrated transaction management system and facility to query managed objects
US6418447B1 (en) Registration of object factories under multiple interface names
US6442564B1 (en) Facilitating workload management by using a location forwarding capability
US20060167999A1 (en) Ensuring a given transactional unit of work arrives at an appropriate server instance
CA2624270A1 (en) Interfaces for a productivity suite application and a hosted user interface
US6505210B1 (en) Federation of naming contexts across multiple and/or diverse underlying directory technologies
US20040019898A1 (en) Accessing local objects using local access proxies
US7827135B2 (en) Method and apparatus for relaxed transactional isolation in a client-server caching architecture
AU779943B2 (en) Method and apparatus for maintaining data integrity across distributed computer systems
EP1203296B1 (en) Method and apparatus for maintaining data integrity across distributed computer systems
Procházka Advanced transactions in component-based software architectures
AU2007202679A1 (en) Method and apparatus for maintaining data integrity across distributed computer systems
AU2007202676A1 (en) Method and apparatus for maintaining data integrity across distributed computer systems
Leff et al. Programming models and synchronization techniques for disconnected business applications
Lins Event-based information sharing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application