KR20000047630A - 데이터베이스 동작 정렬 방법, 시스템 및 컴퓨터 프로그램제품 - Google Patents

데이터베이스 동작 정렬 방법, 시스템 및 컴퓨터 프로그램제품 Download PDF

Info

Publication number
KR20000047630A
KR20000047630A KR1019990050394A KR19990050394A KR20000047630A KR 20000047630 A KR20000047630 A KR 20000047630A KR 1019990050394 A KR1019990050394 A KR 1019990050394A KR 19990050394 A KR19990050394 A KR 19990050394A KR 20000047630 A KR20000047630 A KR 20000047630A
Authority
KR
South Korea
Prior art keywords
deleted
current
relational database
identifying
current object
Prior art date
Application number
KR1019990050394A
Other languages
English (en)
Inventor
살로티모제이
윌리암스케빈제이
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR20000047630A publication Critical patent/KR20000047630A/ko

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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/954Relational
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/955Object-oriented
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure

Landscapes

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

Abstract

본 발명은 객체 지향 트랜잭션 시스템에 의해 데이터베이스 트랜잭션(database transaction)을 자동으로 정렬하는 시스템, 방법, 컴퓨터 프로그램 제품에 관한 것이다. 완료된 트랜잭션 내의 객체는 관계 데이터베이스(relational database)로 삽입될 객체, 관계 데이터베이스로부터 삭제될 객체, 관계 데이터베이스 내에서 갱신될 객체의 그룹으로 군집화(cluster)된다. 관계 데이터베이스로 삽입될 객체는 객체의 관계 데이터베이스로의 삽입 우선 순위에 따라 정렬되어 삽입 순서를 정의한다. 관계 데이터베이스로부터 삭제될 객체는 객체의 관계 데이터베이스로부터의 삭제 우선 순위에 따라 정렬되어 삭제 순서를 정의한다. 관계 데이터베이스로 삽입될 객체는 삽입 순서대로 관계 데이터베이스로 삽입된다. 이어서, 관계 데이터베이스 내에서 갱신될 객체는 임의의 순서로 갱신된다. 마지막으로, 관계 데이터베이스로부터 삭제될 객체는 삭제 순서대로 관계 데이터베이스로부터 삭제된다.

Description

데이터베이스 동작 정렬 방법, 시스템 및 컴퓨터 프로그램 제품{SYSTEMS, METHODS AND COMPUTER PROGRAM PRODUCTS FOR ORDERING OBJECTS CORRESPONDING TO DATABASE OPERATIONS THAT ARE PERFORMED ON A RELATIONAL DATABASE UPON COMPLETION OF A TRANSACTION BY AN OBJECT-ORIENTED TRANSACTION SYSTEM}
본 발명은 데이터 처리 시스템, 방법, 컴퓨터 프로그램 제품에 관한 것으로, 보다 구체적으로는, 데이터베이스 시스템, 방법, 컴퓨터 프로그램 제품에 관한 것이다.
관계 데이터베이스는 데이터 처리 환경에서 데이터를 저장하는 데 널리 사용되고 있다. 당업자에게 주지되어 있듯이, 관계 데이터베이스 내에서 데이터는 자신의 데이터베이스 내의 실제 위치보다는 다른 데이터에 대한 자신의 관계에 기초하여 어드레스(address)된다. 관계 데이터베이스 내에서의 데이터 사이의 관계는 관계 키(relationship keys)를 이용하여 표시될 수 있다. 예를 들어, 오너 클래스(owner class)의 각 데이터 요소(data element)는 자신과 연관된 주 키(primary key)를 가질 수 있고, 멤버 클래스(member class) 내의 각 데이터 요소는 그 멤버 요소를 소유하는 데이터 요소의 주 키를 지시(points to)하는 외래 키(foreign key)를 포함할 수 있다. 관계 데이터베이스의 설계 및 동작은 당업자에게 주지되어 있으므로, 본 명세서에서는 상세히 다룰 필요가 없다.
객체 지향 프로그래밍 시스템, 방법, 컴퓨터 프로그램 제품도 데이터 처리 환경에서 널리 사용되고 있다. 당업자에게 주지되어 있듯이, 객체 지향 프로그래밍 시스템, 방법, 컴퓨터 프로그램 제품은 많은 수의 "객체(objects)"로 구성된다. 객체는 데이터 구조(data structure) 및 그 데이터 구조를 액세스할 수 있는 연산이나 함수들의 집합이다. 동일한 데이터 구조와 공통적인 행태(common behavior)를 갖는 객체는 군집화되고 총괄하여 클래스로 다루어질 수 있다. 객체 지향 계산 환경에서, 데이터는 객체로 하여금 자신의 방법 중 하나를 수행하도록 요청함으로써 처리된다. 두 개 이상의 객체 사이에는 상속 관계(inheritance relationship)도 존재할 수 있어서, 제 1 클래스가 제 2 클래스의 부모(parent)로 여겨지고, 제 2 클래스는 제 1 클래스의 자녀(child)로 여겨질 수 있다. 자녀 클래스의 데이터 구조체는 부모 클래스의 모든 속성을 포함한다. 객체 지향 프로그래밍 시스템, 방법, 컴퓨터 프로그램 제품의 설계와 동작은 당업자에게 주지되어 있으므로, 본 명세서에서는 상세히 다룰 필요가 없다.
객체 지향 계산 환경은 이제 융통성있고 사용자에게 친숙한 객체 지향 트랜잭션 시스템을 이루는 데 사용되고 있다. 당업자에게 주지되어 있듯이, 트랜잭션은 일반적으로 원자적인 방식으로(in an atomic manner) 수행되는 하나 이상의 객체에 대한 변경의 논리적 그룹(a logical group of changes)을 지칭한다. 달리 말하면, 트랜잭션 내의 모든 동작이 수행되거나, 트랜잭션 내의 어떤 동작도 수행되지 않는다. 트랜잭션 접근 방식을 이용하면, 트랜잭션 범위 내에서의 사용자에 의한 객체의 모든 변경은, 영속 저장된 객체 자체(persistent, stored object itself)를 갱신하지 않고, 먼저 그 객체의 내부 복사본(internal copy)으로 만들어진다. 사용자는 그 트랜잭션에 의해 포섭(encompass)된 변경을 영구히 행(commit)할 것인지, 변경을 폐기할 것인지 여부를 결정할 수도 있다. 사용자가 행할 것을 선택하면, 영속 저장된 객체가 갱신된다. 사용자가 변화를 폐기할 것을 선택하면, 영속 저장된 객체는 변함없이 남게 된다.
객체 지향 트랜잭션 시스템을 복잡한 사업 운영을 반영하는 사업 애플리케이션에 사용하여, 사용자는 사용자 인터페이스의 서로 다른 요소 사이를 자유롭게 네비게이션(navigate)할 수 있다. 예를 들어, 사용자는 동시에 디스플레이 상에 하나의 애플리케이션을 위한 여러 개의 윈도우를 열기 원할 수도 있다. 이러한 애플리케이션의 사용자는, 자신이 서로 다른 윈도우 사이의 데이터의 일관성을 보장하기 위해 특별한 예방조치를 취하지 않고도, 한 윈도우 내에서의 정보 처리로부터 다른 윈도우 내에서의 정보 처리로 변경할 수 있도록 기대할 수도 있다. 이러한 객체 지향 트랜잭션 시스템은 년 월 일에 출원되고, 본 발명의 양수인에게 양도된 낼리(Nally) 등의 "Technique for Managing Enterprise JavaBeans which are the Target of Multiple Concurrent and/or Nested Transactions"라는 명칭의 계류 중인 미국 특허 출원 제 호에 설명되어 있으며, 본 명세서에서는 그 개시 내용을 참조로서 인용한다.
관계 데이터베이스는 데이터베이스의 영속성을 유지하기 위해 일반적으로 참조 무결성 제한(referential integrity constraints)을 포함한다. 이들 제한은 일반적으로 데이터베이스 저장 및 삭제 동작이 특정 순서로 실행될 것을 요구한다. 불행하게도, 이 순서는 그 객체가 객체 지향 트랜잭션 내에서 생성, 수정, 삭제되는 순서와 부합하지는 않는다. 더욱이, 데이터베이스 참조 무결성 제한은 일반적으로 일관된 방식으로(in a consistent manner) 논리적 객체 관계에 맵핑(map)되지는 않는다. 참조 무결성 제한은 일반적으로, 관계 외래 키(relational foreign key)를 이용하여 어느 실체(entity)가 참조되고(referred to) 있고 어느 실체가 참조하고(referring) 있는지 등의 키 정보(key information)에 기초하도록 강요된다. 이러한 키 정보는 객체 관계에 맵핑될 때 하나 이상의 가능한 변환을 가질 수 있다. 따라서, 객체의 트리(trees of objects)가 관계 데이터베이스에 저장되거나 관계 데이터베이스로부터 삭제되는 순서를, 애플리케이션 이벤트 흐름(application event flow)이나 객체 관계 논리 방향(object relationship logical directions)에 기초하여 추론하는 것은 어려울 것이다.
그러므로, 데이터 베이스 동작이 객체 지향 트랜잭션 시스템에 의한 트랜잭션의 완료 시에 적절하게 정렬되도록, 객체 지향 트랜잭션 시스템을 관계 데이터베이스에 인터페이스하는 것은 어려울 것이다. 관계 데이터베이스 참조 무결성 제한을 유지하면서 객체 지향 트랜잭션 시스템을 관계 데이터베이스에 인터페이스하기 위해, 동작 순서의 주문형 코딩(customized coding)이 객체 지향 트랜잭션 시스템에 제공될 수 있다. 그러나, 이러한 주문형 코딩은 시간을 많이 소모할 수도 있고, 프로젝트 자원(projects resources)의 30 % 이상을 소비할 수도 있다. 본 발명자와 힐(Hill)에 의한 "Scalable Object-Persistence Frameworks", Journal of Object-Oriented Programming (1998년 11/12월)이라는 제목의 출판물 18 - 24 쪽을 보면 알 수 있다. 이와는 달리, 참조 무결성 제한 강제는 관계 데이터베이스 내에서는 디스에이블(disable)될 수도 있다. 불행하게도, 참조 무결성 제한이 관계 데이터베이스 내에서 디스에이블되면, 전체 관계 데이터베이스가 변질(corrupted)되어 내부적으로 비일관적(inconsistent)이 될 수 있다.
따라서, 본 발명의 목적은 객체 지향 트랜잭션 시스템을 관계 데이터베이스에 인터페이스할 수 있는 시스템, 방법, 컴퓨터 프로그램 제품을 제공하는 것이다.
본 발명의 다른 목적은 관계 데이터베이스의 참조 무결성 제한을 유지하면서 객체 지향 트랜잭션 시스템을 관계 데이터베이스에 인터페이스할 수 있는 시스템, 방법, 컴퓨터 프로그램 제품을 제공하는 것이다.
도 1은 본 발명에 따라 객체 지향 트랜잭션 시스템(an object-oriented transaction system)에 의한 트랜잭션의 완료 시 관계 데이터베이스(a relational database) 상에서 수행되는 데이터베이스 동작을 정렬하기 위한 시스템, 방법, 컴퓨터 프로그램 제품의 블럭도,
도 2는 관계 데이터베이스 내의 관계(relationship)를 도시하는 도면,
도 3은 객체 지향 트랜잭션에서의 논리적 객체 연관(logical object associations)을 도시하는 도면,
도 4 내지 도 8은 본 발명에 따른 데이터베이스 동작 정렬을 나타내는 흐름도,
도 9는 본 발명에 따른 객체 리스트를 도시하는 도면,
도 10은 도 3의 객체 지향 트랜잭션의 예시적인 연관을 도시하는 도면.
도면의 주요 부분에 대한 부호의 설명
100 : 관계 데이터베이스 시스템 110 : 관계 데이터베이스
120 : 객체 지향 트랜잭션 시스템 130 : 트랜잭션 처리 시스템
140 : 제 1 인터페이스 150 : 데이터베이스 동작 정렬
160 : 제 2 인터페이스
본 발명에 따른 이들 및 기타 목적은 객체 지향 트랜잭션 시스템에 의한 트랜잭션의 완료 시 관계 데이터베이스 상에서 수행되는 데이터베이스 동작에 따라 자동으로 객체를 정렬하는 시스템, 방법, 컴퓨터 프로그램 제품에 의해 성취된다. 완료된 트랜잭션 내의 객체는 관계 데이터베이스로 삽입될 객체, 관계 데이터베이스로부터 삭제될 객체, 관계 데이터베이스 내에서 갱신될 객체의 그룹으로 군집화(cluster)된다. 관계 데이터베이스로 삽입될 객체는 객체의 관계 데이터베이스로의 삽입 우선 순위(insert precedence)에 따라 정렬되어 삽입 순서를 정의한다. 관계 데이터베이스로부터 삭제될 객체는 객체의 관계 데이터베이스로부터의 삭제 우선 순위에 따라 정렬되어 삭제 순서를 정의한다. 관계 데이터베이스로 삽입될 객체는 삽입 순서대로 관계 데이터베이스로 삽입된다. 이어서, 관계 데이터베이스 내에서 갱신될 객체는 임의의 순서로 갱신된다. 마지막으로, 관계 데이터베이스로부터 삭제될 객체는 삭제 순서대로 관계 데이터베이스로부터 삭제된다.
서로 다른 데이터베이스 동작 사이의 우선 순위는 복잡한 사전요건 트리(complex prerequisite trees)를 이룬다. 그러나, 본 발명에 의하면, 이들 사전요건이 동작 실행을 위한 올바른 순서를 결정할 수 있도록 완전히 해결(resolve)될 필요는 없다는 것이 발견됐다. 오히려, 사전요건은 삽입 동작 사이와 삭제 동작 사이에서만 해결되면 되고, 서로 다른 동작 유형 사이에서는 해결될 필요가 없다. 이 동작은 이어서, 먼저 삽입 동작, 다음에는 갱신 동작, 마지막으로 삭제 동작의 세 단계로 실행될 수 있다.
본 발명의 다른 측면에 의하면, 삽입 및 갱신 동작에 대한 우선 순위를 결정하는 데 동일한 동작이 사용될 수 있다. 예컨대, 관계 데이터베이스로부터 삭제될 객체를 정렬하기 위해, 삭제될 객체 사이의 연관(association)이 식별된다. 삭제될 현재 객체가 정의되고, 삭제될 현재 객체가 삭제될 연관 객체에 대해 삭제 우선 순위가 있는지 여부가 판단된다. 삭제될 현재 객체가 삭제될 연관 객체에 대해 삭제 우선 순위가 있으면, 삭제될 현재 객체는 삭제될 연관 객체 앞에 정렬된다. 삭제될 현재 객체가 삭제될 연관 객체에 대해 삭제 우선 순위가 없으면, 삭제될 현재 객체는 삭제될 연관 객체 뒤에 삭제된다. 이들 동작은 삭제될 현재 객체와 연관된 나머지 객체에 대해서 반복적으로 수행될 것이다. 또, 이들 동작은 삭제될 연관 객체 앞에 정렬된 삭제될 현재 객체와 연관된 각 객체에 대해 순환적으로(recursively) 수행될 수 있다.
삭제될 객체 사이의 연관은 삭제될 객체 중의 현재 및 연관 객체를 식별하고, 삭제될 객체 내의 외래 키 및 주 키를 식별하며, 외래 키와 주 키 사이의 관계 데이터베이스 내의 제한을 식별함으로써 식별될 수 있다. 삭제 우선 순위는 삭제될 현재 객체의 외래 키가 삭제될 연관 객체의 주 키를 참조하는지 여부를 판단함으로써 판단될 수 있다. 삭제될 현재 객체의 외래 키와 삭제될 연관 객체의 주 키 사이에서 식별된 제한이 존재하면, 삭제될 현재 객체는 삭제될 연관 객체에 대해 삭제 우선 순위를 갖는다. 반대로, 삭제될 현재 객체의 외래 키와 삭제될 연관 객체의 주 키 사이에서 식별된 제한이 존재하지 않으면, 삭제될 현재 객체는 삭제될 연관 객체에 대해 삭제 우선 순위를 갖지 못한다. 삽입될 객체에 대해서도 동일한 동작이 수행될 것이다.
이들 동작을 완료하면, 관계 데이터베이스 상에서 수행될 삽입 및 삭제 동작 순서는 관계 데이터베이스에 대한 참조 무결성 제한에 자동으로 부합한다. 따라서, 객체 지향 트랜잭션에 의한 트랜잭션의 완료 시, 데이터베이스 동작은 관계 데이터베이스 참조 무결성 제한을 유지하는 순서로 관계 데이터베이스 상에서 자동으로 수행된다. 특정 애플리케이션 각각을 위한 동작 순서의 주문화된 코딩이 제공될 필요가 없고, 트랜잭션 중에 객체 지향 트랜잭션 시스템에 의해 수행된 일련의 동작에 의해 데이터베이스가 손상될 필요가 없다.
이제, 본 발명의 바람직한 실시예가 도시된 첨부하는 도면을 참조하여 본 발명을 보다 충분히 설명할 것이다. 그러나, 본 발명은 다양한 다른 형태로 실시될 수 있고, 본 명세서에서 개시한 실시예에 제한되는 것으로 해석되어서는 안 되며, 오히려, 이들 실시예는 본 개시 내용이 철저하고 완전하게 되도록, 또 당업자에게 본 발명의 범위를 충분히 전달하도록 제공되는 것이다. 동일한 부호는 동일한 구성 요소를 가리킨다.
이제, 도 1을 참조하면, 본 발명에 따라 객체 지향 트랜잭션 시스템에 의한 트랜잭션의 완료 시 관계 데이터베이스 상에서 수행되는 데이터베이스 동작을 정렬하기 위한 시스템, 방법, 컴퓨터 프로그램 제품이 도시되어 있다. 도 1에 도시한 바와 같이, 관계 데이터베이스 시스템(100)은 관계 데이터베이스(110)를 포함하고 있다. 관계 데이터베이스 시스템(100)은 하나 이상의 메인프레임(mainframe), 중형(midrange) 및/또는 개인용 컴퓨터를 포함할 수 있고, 관계 데이터베이스(110)는 단일 관계 데이터베이스 또는 하나 이상의 데이터 프로세서 상에 상주하는 다수의 관계 데이터베이스일 수 있다. 관계 데이터베이스의 예로는, 본 발명의 양수인인 IBM 사의 DB2 및 SQL 컴퓨터 프로그램 제품이 있다.
여전히 도 1을 참조하면, 객체 지향 트랜잭션 시스템(120)도 하나 이상의 메인프레임, 중형 및/또는 개인용 컴퓨터를 포함하는 하나 이상의 데이터 처리 시스템 상에서 실행될 수 있다. 객체 지향 트랜잭션 시스템(120)은 한 명 이상의 사용자에 의해 사용되어 하나의 트랜잭션을 수행하는 트랜잭션 처리 시스템(130)을 포함하고 있다. 트랜잭션 처리 시스템(130)은 그래픽 사용자 인터페이스(graphical user interfaces)와 같은 적절한 사용자 인터페이스를 포함하여 트랜잭션이 유연하게 수행되도록 한다. 객체 지향 트랜잭션 시스템(130)의 설계는 당업자에게 주지되어 있으므로, 본 명세서에서는 더 설명할 필요가 없다.
도 1에 도시한 바와 같이, 트랜잭션 처리 시스템(130)은 인터페이스(140)를 통해 관계 데이터베이스 시스템에 인터페이스된다. 관계 데이터베이스 시스템(100)과 트랜잭션 처리 시스템(130)이 상이하거나, 중첩되거나, 동일한 데이터 처리 시스템(들) 상에서 실행될 수 있으므로, 통신 네트워크(140)는 유선 및 무선 통신 네트워크, 근거리 통신망, 인터넷, 둘 이상의 컴퓨터를 접속시키는 버스, 단일 컴퓨터 내의 둘 이상의 애플리케이션을 접속시키는 애플리케이션 인터페이스, 그 조합을 포함할 수 있다.
여전히 도 1을 참조하면, 객체 지향 트랜잭션 시스템(120)은 데이터베이스 동작 정렬 시스템, 방법 및/또는 컴퓨터 프로그램 제품을 포함하고 있다. 데이터베이스 동작 정렬(150)은 객체 지향 트랜잭션 처리 시스템(130)에 의한 트랜잭션의 완료 시 관계 데이터베이스(110) 상에서 수행되는 데이터베이스 동작을 정렬한다. 데이터베이스 동작 정렬(150)이 트랜잭션 처리 시스템(130) 및 관계 데이터베이스 시스템(100)과 상이하거나, 중첩되거나, 동일한 하나 이상의 메인프레임, 중형 및/또는 개인용 컴퓨터 상에 상주할 수 있다는 것을 이해할 것이다. 데이터베이스 동작 정렬(150)은 제 2 인터페이스(160)를 이용하여 관계 데이터베이스(110)와 통신한다. 제 2 인터페이스(160)는 제 1 인터페이스(140)와 상이하거나, 중첩되거나, 동일한 인터페이스일 수 있고, 유선 및 무선 통신 네트워크, 근거리 통신망, 인터넷, 둘 이상의 데이터 프로세서를 접속시키는 버스, 애플리케이션 인터페이스, 그들의 조합을 포함할 수 있다.
데이터베이스 동작 정렬(150)은 방법, 시스템(장치) 및 컴퓨터 프로그램 제품으로 실시될 수 있다. 따라서, 본 발명은 전적으로 하드웨어 실시예의 형태를 취할 수도 있고, 전적으로 소프트웨어 실시예의 형태를 취할 수도 있으며, 소프트웨어와 하드웨어의 측면을 조합한 실시예의 형태를 취할 수도 있다. 나아가, 본 발명은 자체 내에서 실시되는 컴퓨터 판독가능 프로그램 코드 수단을 구비하는 컴퓨터 판독가능 저장 매체(computer-readable storage medium) 상의 컴퓨터 프로그램 제품 형태를 취할 수도 있다. 적절한 컴퓨터 판독가능 매체로는, 하드 디스크, CD-ROM, 광학 저장 장치(optical storage devices), 자기 저장 장치(magnetic storage devices) 등이 있다.
도 2는 통상적인 관계 데이터베이스 내의 관계를 도시하고 있다. 설명을 용이하게 하기 위해, 관계 데이터베이스는 테이블 A, 테이블 B, 테이블 C라고 표시된 세 개의 테이블을 포함하는 것으로 가정한다. 또한, 특정한 예를 제공하기 위해, 테이블 A는 조직의 부서 리스트를 포함하고 있고, 테이블 B는 조직의 피고용인 리스트를 포함하고 있으며, 테이블 C는 조직의 피고용인 주소 리스트를 포함하고 있다고 가정한다. 관계 데이터베이스는 테이블과는 다른 기법을 이용하여 나타낼 수도 있다는 것을 이해할 것이다. 또한, 관계 데이터베이스는 도 2에 도시한 것과는 다른 더 많은 테이블과 데이터 엔트리를 일반적으로 포함한다는 것도 이해할 것이다.
도 2에 도시한 바와 같이, 부서 테이블 A는 부서 d1 내지 dn을 포함하고 있다. 피고용인 테이블 B는 피고용인 e1 내지 en을 포함하고 있고, 주소 테이블 C는 주소 a1 내지 an을 포함하고 있다. 부서 테이블 A의 피고용인 테이블 B에 대한 관계는 오너-멤버 관계이다. 부서와 피고용인 사이의 관계가 1 대 다수(one to many)이므로, 부서 테이블 A는 주 키를 포함하고 있고, 피고용인 테이블 B는 부서 테이블 A의 적절한 주 키를 참조하는 외래 키를 포함하고 있다. 달리 말하면, 테이블 A와 테이블 B사이의 관계는 멤버 테이블(member table) 내의 외래 키가 오너 테이블(owner table) 내의 적절한 주 키를 참조하는 오너 대 멤버(ower to member) 관계이다. 이와는 대조적으로, 피고용인 테이블 B와 주소 테이블 C 사이의 관계는 실선 화살표로 나타낸 바와 같이 주소 테이블 C를 참조하는 피고용인 테이블 B 내의 외래 키, 또는 점선 화살표로 나타낸 바와 같이 피고용인 테이블 B를 참조하는 주소 테이블 C 내의 외래 키를 이용하여 관계가 정의되는 1 대 1(one to one) 관계이다.
관계 데이터베이스는 일반적으로 데이터베이스의 일관성을 유지하기 위한 참조 무결성 제한을 포함하고 있다. 이들 제한은 일반적으로 데이터베이스 저장 및 삭제 동작이 특정 순서로 실행될 것을 요구한다. 예를 들어, 도 2에 대한 참조 무결성 제한은, 피고용인의 부서가 이미 존재하지 않으면 피고용인은 추가될 수 없다는 것일 수 있다. 역으로, 자신의 피고용인이 모두 삭제되거나 다른 부서를 참조하도록 갱신되지 않으면 부서는 삭제될 수 없다.
불행하게도, 이들 동작 순서는 객체가 객체 재향 트랜잭션 처리 시스템(130) 내에서 생성되거나 삭제되는 순서와 반드시 정합되지는 않는다. 이를테면, 도 3을 참조하면, 객체 지향 트랜잭션 처리 시스템은 피고용인 객체 그룹을 참조하는 집합 객체(collection object)를 참조하는 부서 객체를 참조하는 트랜잭션 객체를 포함할 수도 있다. 도 3과 도 2를 비교하면, 객체, 포인터, 포인터의 방향이 전반적으로 상이하다.
참조 무결성 규칙(referential integrity rules)이 일반적으로 논리적 관계가 아니라 키 정보에 기초하도록 강요되므로, 데이터베이스 참조 무결성 제한은 일관된 방식으로 논리적 부모-자녀 객체 관계(logical parent-child object relationships)에 일반적으로 맵핑되지는 않는다. 예컨대, 피고용인으로부터 주소로의 연관 포인팅(association pointing)은 피고용인으로부터 주소로의 또는 주소로부터 피고용인으로의 외래 키 참조로서 데이터베이스 내에서 구현될 수 있다. 또한, 객체 사이의 관계는 객체가 데이터베이스에 저장되거나 데이터베이스로부터 삭제되는 순서와는 일반적으로 무관하다. 그러므로, 객체 트리(trees of objects)가 관계 데이터베이스에 저장되거나 관계 데이터베이스로부터 삭제되는 순서는 트랜잭션 처리 시스템(130) 내의 이벤트 흐름이나 객체 관계 논리 방향으로부터 일반적으로 추론될 수 없다.
따라서, 트랜잭션 처리 시스템(130)에 의한 객체 지향 트랜잭션의 종료 시, 객체는 일반적으로 알려지고, 수행된 동작도 일반적으로 알려지며, 결과 데이터도 일반적으로 알려진다. 그러나, 참조 무결성 제한을 보존하기 위해 관계 데이터베이스(110)에 변경이 일어나는 순서는 알려지지 않는다.
일반적으로 영속적인 객체 상에서 수행될 수 있는 관계 동작(relational operation)으로는 삽입, 갱신, 삭제 세 가지가 있다. 이들 동작 유형 사이의 의존 관계는 다음과 같다.
(1) 삽입 동작은 다른 삽입 동작에 의존하지만, 다른 유형의 동작에는 의존하지 않는다. 예를 들어, 삽입될 데이터는 삽입될 다른 데이터를 참조할 수 있다.
(2) 갱신 동작은 다른 갱신 동작에는 의존하지 않지만, 삽입 동작에는 의존할 수 있다. 예를 들어, 데이터는 삽입될 데이터를 참조하도록 갱신될 수 있다.
(3) 삭제 동작은 다른 삭제 동작에 의존적일 수 있다. 예를 들어, 삭제될 데이터는 삭제될 다른 데이터를 참조할 수 있다. 삭제 동작은 갱신 동작에도 의존적일 수 있다. 예를 들어, 데이터는 삭제될 데이터를 참조해제(dereference)하도록 갱신될 수 있다.
객체에 데이터를 삽입할 때, 참조되는 데이터는 참조하는 데이터보다 먼저 삽입되어야 한다. 데이터를 갱신할 때, 참조되는 데이터는 참조하는 데이터를 갱신하기 전에 삽입되어야 한다. 데이터를 삭제할 때, 참조하는 데이터는 참조되는 데이터를 삭제하기 전에 참조되는 데이터를 참조해제하도록 삭제되거나 갱신되어야 한다.
서로 다른 데이터베이스 동작 사이의 우선 순위는 복잡한 사전요건 트리를 형성한다. 관계 참조 무결성 제한의 속성 상, 일반적으로 데이터 베이스 내에서 정의된 원형 제한(circular constraints)은 존재하지 않는다.
본 발명에 의한 데이터베이스 동작 정렬(150)은 객체 트리가 데이터베이스에 저장되거나 데이터베이스로부터 삭제될 때, 관계 데이터베이스(110)에 대해 정의된 참조 무결성 제한에 따라 관계 삽입 및 삭제 동작을 자동으로 정렬하는 메커니즘을 제공한다. 정렬 메커니즘은 객체 사이의 관계가 데이터베이스 내의 주 키/외래 키 쌍에 맵핑되는 방법 및 그 쌍에 대한 무결성 규칙에 관한 정보를 활용하는 것이 바람직하다.
도 4 내지 도 8은 본 발명에 따른 데이터베이스 동작 정렬을 도시하는 흐름도이다. 흐름도의 각 블럭 및 블럭들의 조합이 컴퓨터 프로그램 인스트럭션에 의해 구현될 수 있다는 점을 이해할 것이다. 이들 컴퓨터 프로그램 인스트럭션은 프로세서나 기타 프로그램가능한 데이터 처리 장치로 제공되어 머신(machine)을 생성하므로써, 그 프로세서나 기타 프로그램가능한 데이터 처리 장치 상에서 실행되는 인스트럭션이 흐름도 블럭 또는 블럭들에서 특정된 기능을 구현하는 수단을 생성하도록 할 수 있다. 또한, 이들 컴퓨터 프로그램 인스트럭션은 프로세서나 기타 프로그램가능한 데이터 처리 장치가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 메모리에 저장되어, 컴퓨터 판독가능 메모리에 저장된 인스트럭션이 흐름도 블럭 또는 블럭들에서 특정된 기능을 구현하는 인스트럭션 수단을 포함하는 제품(an article of manufacture)을 생성하도록 할 수도 있다.
따라서, 흐름도의 블럭은 특정 기능을 수행하는 수단의 조합, 특정 기능을 수행하는 단계의 조합, 특정 기능을 수행하는 프로그램 인스트럭션 수단을 지원한다. 또한, 흐름도의 각 블럭과 블럭의 조합은 특정 기능이나 단계를 수행하는 특정 목적의 하드웨어 기반 컴퓨터 시스템 또는 특정 목적의 하드웨어 및 컴퓨터 인스트럭션의 조합에 의해 구현될 수 있다는 것을 이해할 것이다.
도 4를 참조하면, 본 발명에 따르면, 관계 데이터베이스 내에서의 동작 실행을 위한 적절한 순서를 결정할 수 있기 위해 사전요건이 완전히 해결되어야 할 필요는 없다는 것을 인식하게 된다. 오히려, 사전요건은 삽입 동작 사이나 삭제 동작 사이에서만 세부적으로 해결될 필요가 있다. 사전요건은 서로 다른 동작 유형 사이에서는 세부적으로 해결될 필요가 없다. 따라서, 도 4에 도시한 바와 같이 블럭(410)에서, 데이터베이스 동작 정렬(150)은 완료된 트랜잭션 내의 객체들을 관계 데이터베이스로 삽입될 객체 그룹, 관계 데이터베이스로부터 삭제될 그룹, 관계 데이터베이스 내에서 갱신될 그룹으로 군집화함으로써 시작된다. 군집화를 위한 상세한 동작은 아래에서 설명될 것이다.
여전히 도 4를 참조하면, 블럭(420)에서는 관계 데이터베이스로 삽입될 객체가 객체의 관계 데이터베이스로의 삽입 우선 순위에 따라 정렬되어 삽입 리스트 내에 삽입 순서를 정의한다. 블럭(430)에서는, 관계 데이터베이스로부터 삭제될 객체가 객체의 관계 데이터베이스로부터의 삭제 우선 순위에 따라 정렬되어 삭제 리스트 내의 삭제 순서를 정의한다. 블럭(420)과 블럭(430)의 동작이 도시한 것과 반대 순서로 수행될 수도 있다는 것을 이해할 것이다. 이들 동작을 수행하는 세부 사항은 아래에서 설명될 것이다.
도 4를 계속 참조하면, 관계 데이터베이스 동작은 이어서 세 단계로 실행될 수 있다. 먼저, 블럭(440)에서는 관계 데이터베이스로 삽입될 객체를 삽입 순서대로 관계 데이터베이스로 삽입함으로써 삽입 동작이 수행된다. 이어서, 블럭(450)에서는 관계 데이터베이스 내에서 갱신될 객체로 관계 데이터베이스를 갱신함으로써 갱신 동작이 수행된다. 마지막으로, 블럭(460)에서는 관계 데이터베이스로부터 삭제될 객체를 삭제 순서대로 관계 데이터베이스로부터 삭제함으로써 삭제 동작이 수행된다.
도 4에 도시한 바와 같이, 갱신된 객체에 의해 참조될 수 있는 모든 객체가 이미 관계 데이터베이스 내에 삽입되어 있으므로, 갱신 동작은 삽입 동작 후에 실행되는 것이 안전하다. 모든 가능한 참조해제는 갱신 단계 중에 발생하였을 것이므로, 삭제 동작은 갱신 동작 후에 실행될 수 있다.
도 5는 데이터베이스 동작 유형에 따른 객체의 군집화(도 4의 블럭(410))를 도시하고 있다. 이들 동작은 본 명세서에서 CO라 지칭하는 현재 객체(current object)를 지시하는, 본 명세서에서 COP라고 지칭하는 현재 객체 포인터(Current Object Pointer)를 이용하여, 본 명세서에서 UC 리스트라고 지칭하는 비군집화된 객체 리스트 상에서 수행된다.
도 5의 블럭(510)에서 도시한 바와 같이, COP는 비군집화된 객체 리스트 내의 제 1 위치에 세팅된다. 블럭(515)에서는 CO가 새로운 것인지 여부를 테스트한다. CO가 새로운 것이면, 블럭(535)에서는 삽입 리스트에 CO가 추가된다. CO가 새로운 것이 아니면, 블럭(520)에서는 CO가 삭제될 것인지 여부에 대해 테스트한다. CO가 삭제될 것이면, 블럭(540)에서는 CO가 삭제 리스트에 추가된다. CO가 삭제될 것이 아니면, 블럭(525)에서는 CO가 갱신 리스트에 추가된다. 이들 동작은 블럭(545)에서 비군집화된 객체 리스트의 끝에 도달할 때까지 반복 수행된다. 비군집화된 객체 리스트의 끝에 도달하면, 삽입 리스트에는 관계 데이터베이스로 삽입될 객체가 존재하고, 삭제 리스트에는 데이터베이스로부터 삭제될 객체가 존재하며, 갱신 리스트에는 관계 데이터베이스 내에서 갱신될 객체가 존재하게 된다.
삽입 및 갱신 동작에 대한 세부적인 사전요건을 해결하기 위해 동일한 동작이 수행될 수 있다. 따라서, 이들 동작은 도 6에 전반적으로 도시되어 있다. 그러나, 이들 동작은 객체의 관계 데이터베이스로의 삽입 우선 순위에 따라 관계 데이터베이스로 삽입될 객체를 정렬하기 위해 별도로 수행되어 삽입 순서를 정의하고, 객체의 관계 데이터베이스로부터의 삭제 우선 순위에 따라 관계 데이터베이스로부터 삭제될 객체를 정렬하기 위해 별도로 수행되어 삭제 순서를 정의한다는 것을 이해할 것이다.
또한, 삽입될 객체의 정렬은 삭제될 객체의 정렬 이전에 수행될 수 있다는 것을 이해할 것이다. 이와는 달리, 삭제될 객체의 정렬은 삽입될 객체의 정렬 이전에 수행될 수 있다. 또한, 삽입될 객체의 정렬은 삭제될 객체의 정렬과 동시에 두 개의 독립된 프로세스로 수행될 수 있다.
마지막으로, 관계 데이터베이스 내에서 갱신될 객체의 정렬은 수행될 필요가 없다는 것을 이해할 것이다. 달리 말하면, 관계 데이터베이스 내에서 갱신될 객체는 임의 순서로 갱신될 수 있다. 갱신된 객체에 의해 참조될 수 있는 모든 객체가 이미 관계 데이터베이스 내에 삽입되어 있어서, 삽입 동작 실행 후에 임의의 순서로 갱신 동작을 실행하는 것은 안전하므로 정렬이 필요하지 않다.
도 9를 참조하면, 도 6의 동작은 트랜잭션에 참여하는 두 개의 객체 리스트, 즉, 비정렬 객체 리스트(unsorted object list)로 지칭하는 비정렬된 객체 리스트와 정렬 객체 리스트(sorted object list) 또는 S 리스트로 지칭하는 정렬된 객체 리스트를 이용한다. 정렬 객체 리스트는 초기에 비어 있고, 비정렬 객체 리스트는 초기에 관계 데이터베이스로 삽입될 모든 객체 또는 관계 데이터베이스로부터 삭제될 모든 객체를 포함하고 있다. 객체를 정렬하는 동작은 현재 객체 포인터(Current Object Pointer : COP)를 이용하여 비정렬 객체 리스트 내에 있는 현재 객체(Current Object : CO) 상에서 수행된다.
여전히 도 9를 참조하면, 연관 리스트(associations list) 또는 A 리스트는 현재 객체로부터 그의 연관 객체로의 연관들의 리스팅을 포함하고 있다. 현재 연관 포인터(Current Association Pointer : CAP)는 현재 연관(Current Association)을 지시한다.
객체 사이의 연관이라는 개념은 이 기술 분야에서는 일반적으로 주지되어 있다. 연관은 관계와 동일한 개념일 수도 있는데, 사실 상, '연관(associations)'이라는 용어는 객체를 이용하는 애플리케이션을 설계할 때 객체 모델링에서 일반적으로 사용되고, '관계(relationship)'라는 용어는 데이터베이스에 데이터가 저장되는 방법을 논의할 때 데이터 모델링에서 사용된다. 객체를 모델링하는 기법으로는 연합된 모델링 언어(Unified Modeling Language : UML)가 있는데, 이 언어는 객체 사이의 연관을 도식적으로(diagrammatically) 나타낸다. UML은 객체 관리 그룹(Object Management Group)의 표준이며 (John Wiley and Sons에서 1997년 출판한) 에이치 에릭슨(H. Eriksson), 엠 펜커(M. Penker)의 UML Toolkit에서 설명되어 있다.
UML 모델에 의하면, 연관 모델은 연관으로 이루어져 있는데, 연관은 이름으로 식별되며 하나 이상의 연관단(association ends)을 포함한다. 연관단은 다음 특성, 즉, 이 연관단이 참조하는 클래스를 특정하는 유형(type), 클래스를 참조하는 모든 연관단에 대해 고유한 롤 이름(role name), 연관단 내의 멤버의 수를 정의하는 다중성(multiplicity)을 갖는다. 또한, 연관은 본 발명의 양수인에게 양도되고 리치(Rich) 등에 의해 년 월 일 출원된 "Technique for Managing Associations Between Enterprise JavaBeans Which Are the Target of Multiple Concurrent and/or Nested Transactions"라는 명칭의 미국 특허 출원 제 호에 더 설명되어 있으며, 본 명세서에서 참조로서 인용한다.
도 6을 참조하면, 객체 정렬은 비정렬 객체 리스트에 대해 객체를 반복함으로써 수행된다. 따라서, 블럭(602)에서는 US 리스트 내의 제 1 위치가 현재 객체(Current Object : CO)가 되도록 현재 객체 포인터(Current Object Pointer : COP)를 US 리스트의 제 1 위치에 세팅한다. 또한, 블럭(604)에서는 현재 객체가 S 리스트의 끝에 추가된다. 이어서, 동작은 현재 객체가 다른 객체에 대해 갖는 연관에 대해 반복된다. 따라서, 블럭(606)에서는 현재 연관 포인터(Current Association Pointer : CAP)가 A 리스트의 제 1 위치에 세팅된다. 블럭(612)에서는 각각의 연관에 대해 현재 객체가 삽입 우선 순위를 갖는지(객체가 데이터베이스로 삽입될 경우) 또는 삭제 우선 순위를 갖는지(객체가 데이터베이스로부터 삭제될 경우)를 현재 연관에 대해 테스트한다. 현재 객체가 현재 연관 및 연관 객체에 대해 우선 순위를 갖거나 데이터가 현재 객체 보다 앞 위치에서 S 리스트 내에 이미 포함되어 있으면(블럭(614)), 블럭(616)에서 연관 객체 및 그보다 낮은 우선 순위를 갖는 연관 객체는 S 리스트의 끝으로 순환적으로 이동된다.
블럭(618)에서 연관 객체가 다른 연관 객체를 포함하면, 연관 객체는 블럭(608)에서 임시 현재 객체가 되고, 연관 객체를 우선 순위 테스트하고 S 리스트의 끝으로 이동시키는 과정이 순환적으로 수행된다. 블럭(618)에서 모든 연관 객체가 테스트되고, 블럭(620)에서 A 리스트의 끝에 도달하지 않으면, 블럭(622)에서 CAP가 A 리스트 내에서 전진하고 순환 동작이 다시 수행된다. 블럭(620)에서 A 리스트의 끝에 도달하고, 블럭(624)에서 US 리스트의 끝에 도달하지 않으면, 블럭(610)에서 COP는 US 리스트에서 1 만큼 전진한다. 따라서, 도 6의 과정의 완료 시, 군집화된 리스트 내의 객체에 대해 수행될 삽입 또는 삭제 동작 순서는 관계 데이터베이스 내에서 정의된 참조 무결성 규칙에 부합한다.
도 7 및 도 8은 각각 연관 현재 객체와 연관 객체 사이의 삽입 우선 순서를 결정하고 연관 현재 객체와 연관 객체 사이의 삭제 우선 순위를 결정하는 상세한 동작을 나타내고 있다. 도 7 및 도 8의 동작은 삽입되거나(블럭(612a)) 삭제될(블럭(612b)) 객체의 정렬이 도 6의 블럭(612)에서 수행 중인지 여부에 따라 수행될 것이다.
도 7에 도시한 바와 같이, 연관 객체 또는 객체들을 유지하고 있는 테이블이 현재 객체를 유지하고 있는 테이블 내의 주 키 열(primary key column)을 참조하는 외래 키 열(a foreign key column)을 갖고 있으면 현재 객체는 연관에 대해 삽입 우선 순위를 갖고, 이 주 키/외래 키 열 쌍에 대해 정의된 제한이 존재한다. 도 8에 도시한 바와 같이, 현재 객체를 유지하고 있는 테이블이 연관 객체/객체들을 유지하고 있는 테이블 내의 주 키 열을 참조하는 외래 키 열을 갖고 있으면, 현재 객체는 연관에 대해 삭제 우선 순위를 갖고, 이 주 키/외래 키 열 쌍에 대해 정의된 제한이 존재한다.
따라서, 블럭(702/802)에서는 연관이 제한을 갖는지 여부가 테스트된다. 제한을 갖지 않으면, 블럭(708/808)에서는 현재 객체가 우선 순위를 갖지 않는다. 제한을 갖으면, 블럭(704)에서는 연관 객체가 외래 키를 갖는지 여부가 테스트되고, 블럭(804)에서는 현재 객체가 외래 키를 갖는지 여부가 테스트된다. 외래 키를 갖으면, 블럭(710/810)에서는 현재 객체가 우선 순위를 갖는다. 외래 키를 갖지 않으면, 블럭(706/806)에서는 현재 객체가 우선 순위를 갖지 않는다. 우선 순위가 결정되고 나면 객체를 정렬하기 위해 많은 다른 정렬 동작이 수행될 수 있다는 것을 이해할 것이다.
따라서, 연관은 객체 지향 트랜잭션 시스템에 의한 트랜잭션 완료 시, 관계 데이터베이스에 삽입되고 관계 데이터베이스로부터 삭제될 객체의 상대적인 위치를 결정하는 데 사용된다. 동작 정렬은, 주문화된 프로그램을 생성할 필요 없이, 또 객체 지향 트랜잭션 처리 시스템의 유용성을 인위적으로 제한할 필요 없이 자동으로 수행될 수 있다.
도면과 명세서에서, 본 발명의 전형적인 바람직한 실시예를 개시하였고, 특정 용어를 채용하였지만, 이들은 일반적이고 설명적으로 사용되었을 뿐이고 제한하려는 목적으로 사용되지는 않았으며, 본 발명의 범위는 후속하는 청구 범위에 의해 진술된다.
본 발명에 의하면, 객체 지향 트랜잭션 시스템에 의한 트랜잭션 완료 시, 관계 데이터베이스에 삽입되고 관계 데이터베이스로부터 삭제될 객체의 상대적인 위치를 결정하는 데 연관을 사용하여, 주문화된 프로그램을 생성할 필요 없이, 또 객체 지향 트랜잭션 처리 시스템의 유용성을 인위적으로 제한할 필요 없이 동작 정렬을 자동으로 수행할 수 있다.

Claims (27)

  1. 객체 지향 트랜잭션 시스템(an object-oriented transaction system)에 의한 트랜잭션의 완료 시 관계 데이터베이스(a relational database) 상에서 수행되는 데이터베이스 동작을 정렬(ordering)하는 방법에 있어서,
    ① 완료된 트랜잭션 내의 객체를 상기 관계 데이터베이스로 삽입될 객체, 상기 관계 데이터베이스로부터 삭제될 객체, 상기 관계 데이터베이스 내에서 갱신될 객체의 그룹으로 군집화(clustering)하는 단계와,
    ② 상기 객체의 상기 관계 데이터베이스로의 삽입 우선 순위(an insert precedence)에 따라 상기 관계 데이터베이스로 삽입될 상기 객체를 정렬하여 삽입 순서를 정의하는 단계와,
    ③ 상기 객체의 상기 관계 데이터베이스로부터의 삭제 우선 순위(a delete precedence)에 따라 상기 관계 데이터베이스로부터 삭제될 상기 객체를 정렬하여 삭제 순서를 정의하는 단계와,
    ④ 상기 관계 데이터베이스로 삽입될 상기 객체를 상기 삽입 순서에 따라 상기 관계 데이터베이스로 삽입하는 단계와,
    ⑤ 상기 관계 데이터베이스 내에서 갱신될 상기 객체로 상기 관계 데이터베이스를 갱신하는 단계와,
    ⑥ 상기 관계 데이터베이스로부터 삭제될 상기 객체를 상기 삭제 순서에 따라 상기 관계 데이터베이스로부터 삭제하는 단계
    를 포함하는 데이터베이스 동작 정렬 방법.
  2. 제 1 항에 있어서,
    상기 갱신 단계는 임의 순서에 따라 상기 관계 데이터베이스 내에서 갱신될 상기 객체로 상기 관계 데이터베이스를 갱신하는 단계를 포함하는 데이터베이스 동작 정렬 방법.
  3. 제 1 항에 있어서,
    상기 관계 데이터베이스로부터 삭제될 상기 객체를 정렬하는 단계는,
    삭제될 상기 객체 사이의 연관(associations)을 식별하는 단계와,
    삭제될 현재 객체가 삭제될 연관 객체(an associated object)에 대해 삭제 우선 순위를 갖는지 여부를 판단하는 단계와,
    상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위를 갖으면, 상기 삭제될 현재 객체를 상기 삭제될 연관 객체 앞에 정렬하는 전방 정렬 단계와,
    상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위를 갖지 않으면, 상기 삭제될 현재 객체를 상기 삭제될 연관 객체 뒤에 정렬하는 후방 정렬 단계와,
    상기 삭제될 현재 객체와 연관된 나머지 객체에 대해, 판단, 전방 정렬, 후방 정렬 단계를 반복 수행하는 단계
    를 포함하는 데이터베이스 동작 정렬 방법.
  4. 제 3 항에 있어서,
    상기 관계 데이터베이스로부터 삭제될 상기 객체를 정렬하는 단계는,
    상기 삭제될 연관 객체 앞에 정렬된 상기 삭제될 현재 객체와 연관된 각각의 연관 객체의 상기 연관 객체에 대해, 판단, 전방 정렬, 후방 정렬 단계를 반복 수행하는 단계를 더 포함하는 데이터베이스 동작 정렬 방법.
  5. 제 3 항에 있어서,
    상기 삭제될 객체 사이의 연관을 식별하는 단계는,
    상기 삭제될 객체에 대한 현재 및 연관 객체를 식별하는 단계와,
    상기 삭제될 객체 내의 외래 키(foreign keys) 및 주 키(primary keys)를 식별하는 단계와,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한(constraints)을 식별하는 단계
    를 포함하고,
    상기 삭제될 현재 객체가 그의 삭제될 연관 객체에 대해 삭제 우선 순위를 갖는지 여부를 판단하는 단계는,
    상기 삭제될 현재 객체의 외래 키가 상기 삭제될 연관 객체의 주 키를 참조(refer to)하는지 여부를 판단하는 단계와,
    상기 삭제될 현재 객체의 상기 외래 키와 상기 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위가 있다고 판단하는 단계와,
    상기 삭제될 현재 객체의 상기 외래 키와 상기 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위가 없다고 판단하는 단계
    를 포함하는 데이터베이스 동작 정렬 방법.
  6. 제 1 항에 있어서,
    상기 관계 데이터베이스로 삽입될 상기 객체를 정렬하는 단계는,
    상기 삽입될 객체 사이의 연관을 식별하는 단계와,
    삽입될 현재 객체가 삽입될 연관 객체에 대해 삽입 우선 순위를 갖는지 여부를 판단하는 단계와,
    상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위를 갖으면, 상기 삽입될 현재 객체를 상기 삽입될 연관 객체 앞에 정렬하는 단계와,
    상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위를 갖지 않으면, 상기 삽입될 현재 객체를 상기 삽입될 연관 객체 뒤에 정렬하는 단계와,
    상기 삽입될 현재 객체와 연관된 나머지 객체에 대해, 판단, 전방 정렬, 후방 정렬 단계를 반복 수행하는 단계
    를 포함하는 데이터베이스 동작 정렬 방법.
  7. 제 6 항에 있어서,
    상기 관계 데이터베이스로부터 삽입될 상기 객체를 정렬하는 단계는,
    상기 삽입될 연관 객체 앞에 정렬된 상기 삽입될 현재 객체와 연관된 각각의 연관 객체의 상기 연관 객체에 대해, 판단, 전방 정렬, 후방 정렬 단계를 반복 수행하는 단계를 더 포함하는 데이터베이스 동작 정렬 방법.
  8. 제 6 항에 있어서,
    상기 삽입될 객체 사이의 연관을 식별하는 단계는,
    상기 삽입될 객체에 대한 현재 및 연관 객체를 식별하는 단계와,
    상기 삽입될 객체 내의 외래 키 및 주 키를 식별하는 단계와,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한을 식별하는 단계
    를 포함하고,
    상기 삽입될 현재 객체가 그의 삽입될 연관 객체에 대해 삽입 우선 순위를 갖는지 여부를 판단하는 단계는,
    상기 삽입될 연관 객체의 외래 키가 상기 삽입될 현재 객체의 주 키를 참조하는지 여부를 판단하는 단계와,
    상기 삽입될 현재 객체의 상기 외래 키와 상기 삽입될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위가 있다고 판단하는 단계와,
    상기 삽입될 현재 객체의 상기 외래 키와 상기 삽입될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위가 없다고 판단하는 단계
    를 포함하는 데이터베이스 동작 정렬 방법.
  9. 객체 지향 트랜잭션 시스템에 의한 트랜잭션의 완료 시 관계 데이터베이스로 삽입되거나 관계 데이터베이스로부터 삭제될 객체를 정렬하는 방법에 있어서,
    ① 삽입 또는 삭제될 상기 객체 사이의 연관을 식별하는 단계와,
    ② 삽입 또는 삭제될 현재 객체가 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖는지 여부를 판단하는 단계와,
    ③ 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖으면, 상기 삽입 또는 삭제될 현재 객체를 상기 삽입 또는 삭제될 연관 객체 앞에 정렬하는 전방 정렬 단계와,
    ④ 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖지 않으면, 상기 삽입 또는 삭제될 현재 객체를 상기 삽입 또는 삭제될 연관 객체 뒤에 정렬하는 후방 정렬 단계와,
    ⑤ 상기 삽입 또는 삭제될 현재 객체와 연관된 나머지 객체에 대해, 판단, 전방 정렬, 후방 정렬 단계를 반복 수행하는 단계
    를 포함하는 삽입 또는 삭제될 객체 정렬 방법.
  10. 제 9 항에 있어서,
    상기 삽입 또는 삭제될 연관 객체 앞에 정렬된 상기 삽입 또는 삭제될 현재 객체와 연관된 각각의 연관 객체의 상기 연관 객체에 대해, 판단, 전방 정렬, 후방 정렬 단계를 반복 수행하는 단계를 더 포함하는 삽입 또는 삭제될 객체 정렬 방법.
  11. 제 9 항에 있어서,
    상기 삽입 또는 삭제될 객체 사이의 연관을 식별하는 단계는,
    상기 삽입 또는 삭제될 객체에 대한 현재 및 연관 객체를 식별하는 단계와,
    상기 삽입 또는 삭제될 객체 내의 외래 키 및 주 키를 식별하는 단계와,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한을 식별하는 단계
    를 포함하고,
    상기 삽입 또는 삭제될 현재 객체가 삽입 또는 삭제될 모든 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖는지 여부를 판단하는 단계는,
    상기 삽입될 연관 객체의 외래 키가 상기 삽입될 현재 객체의 주 키를 참조하는지 여부를 판단하는 단계와,
    상기 삭제될 현재 객체의 외래 키가 상기 삭제될 연관 객체의 주 키를 참조하는지 여부를 판단하는 단계와,
    상기 삽입 또는 삭제될 현재 객체의 상기 외래 키와 상기 삽입 또는 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위가 있다고 판단하는 단계와,
    상기 삽입 또는 삭제될 현재 객체의 상기 외래 키와 상기 삽입 또는 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위가 없다고 판단하는 단계
    를 포함하는 삽입 또는 삭제될 객체 정렬 방법.
  12. 데이터 처리 시스템에 있어서,
    ① 관계 데이터베이스와,
    ② 객체 지향 트랜잭션 시스템과,
    ③ 완료된 트랜잭션 내의 객체를 상기 관계 데이터베이스로 삽입될 객체, 상기 관계 데이터베이스로부터 삭제될 객체, 상기 관계 데이터베이스 내에서 갱신될 객체의 그룹으로 군집화하는 수단과,
    ④ 상기 객체의 상기 관계 데이터베이스로의 삽입 우선 순위에 따라 상기 관계 데이터베이스로 삽입될 상기 객체를 정렬하여 삽입 순서를 정의하는 수단과,
    ⑤ 상기 객체의 상기 관계 데이터베이스로부터의 삭제 우선 순위에 따라 상기 관계 데이터베이스로부터 삭제될 상기 객체를 정렬하여 삭제 순서를 정의하는 수단과.
    ⑥ 상기 관계 데이터베이스로 삽입될 상기 객체를 상기 삽입 순서에 따라 상기 관계 데이터베이스로 삽입하는 수단과,
    ⑦ 상기 삽입 수단에 응답하여 상기 관계 데이터베이스 내에서 갱신될 상기 객체로 상기 관계 데이터베이스를 갱신하는 수단과,
    ⑧ 상기 관계 데이터베이스로부터 삭제될 상기 객체를 상기 갱신 수단에 응답하여 상기 삭제 순서에 따라 상기 관계 데이터베이스로부터 삭제하는 수단
    을 포함하는 데이터 처리 시스템.
  13. 제 12 항에 있어서,
    상기 갱신 수단은 임의 순서에 따라 상기 관계 데이터베이스 내에서 갱신될 상기 객체로 상기 관계 데이터베이스를 갱신하는 수단을 포함하는 데이터 처리 시스템.
  14. 제 12 항에 있어서,
    상기 관계 데이터베이스로부터 삭제될 상기 객체를 정렬하는 수단은,
    삭제될 상기 객체 사이의 연관을 식별하는 수단과,
    삭제될 현재 객체가 삭제될 연관 객체에 대해 삭제 우선 순위를 갖는지 여부를 판단하는 수단과,
    상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위를 갖으면, 상기 삭제될 현재 객체를 상기 삭제될 연관 객체 앞에 정렬하는 전방 정렬 수단과,
    상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위를 갖지 않으면, 상기 삭제될 현재 객체를 상기 삭제될 연관 객체 뒤에 정렬하는 후방 정렬 수단과,
    상기 삭제될 현재 객체와 연관된 나머지 객체에 대해, 판단, 전방 정렬, 후방 정렬 수단을 반복 수행하는 수단
    을 포함하는 데이터 처리 시스템.
  15. 제 14 항에 있어서,
    상기 삭제될 객체 사이의 연관을 식별하는 수단은,
    상기 삭제될 객체에 대한 현재 및 연관 객체를 식별하는 수단과,
    상기 삭제될 객체 내의 외래 키 및 주 키를 식별하는 수단과,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한을 식별하는 수단
    을 포함하고,
    상기 삭제될 현재 객체가 삭제될 연관 객체에 대해 삭제 우선 순위를 갖는지 여부를 판단하는 수단은,
    상기 삭제될 현재 객체의 외래 키가 상기 삭제될 연관 객체의 주 키를 참조하는지 여부를 판단하는 수단과,
    상기 삭제될 현재 객체의 상기 외래 키와 상기 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위가 있다고 판단하는 수단과,
    상기 삭제될 현재 객체의 상기 외래 키와 상기 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위가 없다고 판단하는 수단
    를 포함하는 데이터 처리 시스템.
  16. 제 12 항에 있어서,
    상기 관계 데이터베이스로 삽입될 상기 객체를 정렬하는 수단은.
    상기 삽입될 객체 사이의 연관을 식별하는 수단과,
    삽입될 현재 객체가 삽입될 연관 객체에 대해 삽입 우선 순위를 갖는지 여부를 판단하는 수단과,
    상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위를 갖으면, 상기 삽입될 현재 객체를 상기 삽입될 연관 객체 앞에 정렬하는 정렬 수단과,
    상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위를 갖지 않으면, 상기 삽입될 현재 객체를 상기 삽입될 연관 객체 뒤에 정렬하는 수단
    을 포함하는 데이터 처리 시스템.
  17. 제 16 항에 있어서,
    상기 삽입될 객체 사이의 연관을 식별하는 수단은,
    상기 삽입될 객체에 대한 현재 및 연관 객체를 식별하는 수단과,
    상기 삽입될 객체 내의 외래 키 및 주 키를 식별하는 수단과,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한을 식별하는 수단
    을 포함하고,
    상기 삽입될 현재 객체가 그의 삽입될 연관 객체에 대해 삽입 우선 순위를 갖는지 여부를 판단하는 수단은,
    상기 삽입될 연관 객체의 외래 키가 상기 삽입될 현재 객체의 주 키를 참조하는지 여부를 판단하는 수단과,
    상기 삽입될 현재 객체의 상기 외래 키와 상기 삽입될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위가 있다고 판단하는 수단과,
    상기 삽입될 현재 객체의 상기 외래 키와 상기 삽입될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위가 없다고 판단하는 수단
    을 포함하는 데이터베이스 동작 정렬 방법.
  18. 데이터 처리 시스템에 있어서,
    ① 관계 데이터베이스와,
    ② 객체 지향 트랜잭션 시스템과,
    ③ 삽입 또는 삭제될 상기 객체 사이의 연관을 식별하는 수단과,
    ④ 삽입 또는 삭제될 현재 객체가 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖는지 여부를 판단하는 수단과,
    ⑤ 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖으면, 상기 삽입 또는 삭제될 현재 객체를 상기 삽입 또는 삭제될 연관 객체 앞에 정렬하는 수단과,
    ⑥ 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖지 않으면, 상기 삽입 또는 삭제될 현재 객체를 상기 삽입 또는 삭제될 연관 객체 뒤에 정렬하는 수단
    을 포함하는 데이터 처리 시스템.
  19. 제 18 항에 있어서,
    상기 삽입 또는 삭제될 객체 사이의 연관을 식별하는 수단은,
    상기 삽입 또는 삭제될 객체에 대한 현재 및 연관 객체를 식별하는 수단과,
    상기 삽입 또는 삭제될 객체 내의 외래 키 및 주 키를 식별하는 수단과,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한을 식별하는 수단
    을 포함하고,
    상기 삽입 또는 삭제될 현재 객체가 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖는지 여부를 판단하는 수단은,
    상기 삽입될 연관 객체의 외래 키가 상기 삽입될 현재 객체의 주 키를 참조하는지 여부를 판단하는 수단과,
    상기 삭제될 현재 객체의 외래 키가 상기 삭제될 연관 객체의 주 키를 참조하는지 여부를 판단하는 수단과,
    상기 삽입 또는 삭제될 현재 객체의 상기 외래 키와 상기 삽입 또는 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위가 있다고 판단하는 수단과,
    상기 삽입 또는 삭제될 현재 객체의 상기 외래 키와 상기 삽입 또는 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위가 없다고 판단하는 수단
    을 포함하는 데이터 처리 시스템.
  20. 객체 지향 트랜잭션 시스템에 의한 트랜잭션의 완료 시 관계 데이터베이스 상에서 수행되는 데이터베이스 동작을 정렬하는 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 자체 내에 구현된 컴퓨터 판독가능 프로그램 코드 수단을 구비하는 컴퓨터 판독가능 저장 매체를 포함하고, 상기 컴퓨터 판독가능 프로그램 코드는,
    ① 완료된 트랜잭션 내의 객체를 상기 관계 데이터베이스로 삽입될 객체, 상기 관계 데이터베이스로부터 삭제될 객체, 상기 관계 데이터베이스 내에서 갱신될 객체의 그룹으로 군집화하는 컴퓨터 판독가능 프로그램 코드 수단과,
    ② 상기 객체의 상기 관계 데이터베이스로의 삽입 우선 순위에 따라 상기 관계 데이터베이스로 삽입될 상기 객체를 정렬하여 삽입 순서를 정의하는 컴퓨터 판독가능 프로그램 코드 수단과,
    ③ 상기 객체의 상기 관계 데이터베이스로부터의 삭제 우선 순위에 따라 상기 관계 데이터베이스로부터 삭제될 상기 객체를 정렬하여 삭제 순서를 정의하는 컴퓨터 판독가능 프로그램 코드 수단과,
    ④ 상기 관계 데이터베이스로 삽입될 상기 객체를 상기 삽입 순서에 따라 상기 관계 데이터베이스로 삽입하는 컴퓨터 판독가능 프로그램 코드 수단과,
    ⑤ 상기 삽입 수단에 응답하여 상기 관계 데이터베이스 내에서 갱신될 상기 객체로 상기 관계 데이터베이스를 갱신하는 컴퓨터 판독가능 프로그램 코드 수단과,
    ⑥ 상기 관계 데이터베이스로부터 삭제될 상기 객체를 상기 갱신 수단에 응답하여 상기 삭제 순서에 따라 상기 관계 데이터베이스로부터 삭제하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하는 컴퓨터 프로그램 제품.
  21. 제 20 항에 있어서,
    상기 갱신 수단은 임의 순서에 따라 상기 관계 데이터베이스 내에서 갱신될 상기 객체로 상기 관계 데이터베이스를 갱신하는 컴퓨터 판독가능 프로그램 코드 수단을 포함하는 컴퓨터 프로그램 제품.
  22. 제 20 항에 있어서,
    상기 관계 데이터베이스로부터 삭제될 상기 객체를 정렬하는 수단은,
    삭제될 상기 객체 사이의 연관을 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    삭제될 현재 객체가 삭제될 연관 객체에 대해 삭제 우선 순위를 갖는지 여부를 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위를 갖으면, 상기 삭제될 현재 객체를 상기 삭제될 연관 객체 앞에 정렬하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위를 갖지 않으면, 상기 삭제될 현재 객체를 상기 삭제될 연관 객체 뒤에 정렬하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하는 컴퓨터 프로그램 제품.
  23. 제 22 항에 있어서,
    상기 삭제될 객체 사이의 연관을 식별하는 수단은,
    상기 삭제될 객체에 대한 현재 및 연관 객체를 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삭제될 객체 내의 외래 키 및 주 키를 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한을 식별하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하고,
    상기 삭제될 현재 객체가 그의 삭제될 연관 객체에 대해 삭제 우선 순위를 갖는지 여부를 판단하는 컴퓨터 판독가능 프로그램 코드 수단은,
    상기 삭제될 현재 객체의 외래 키가 상기 삭제될 연관 객체의 주 키를 참조하는지 여부를 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삭제될 현재 객체의 상기 외래 키와 상기 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위가 있다고 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삭제될 현재 객체의 상기 외래 키와 상기 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삭제될 현재 객체가 상기 삭제될 연관 객체에 대해 삭제 우선 순위가 없다고 판단하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하는 컴퓨터 프로그램 제품.
  24. 제 20 항에 있어서,
    상기 관계 데이터베이스로 삽입될 상기 객체를 정렬하는 수단은,
    상기 삽입될 객체 사이의 연관을 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    삽입될 현재 객체가 삽입될 연관 객체에 대해 삽입 우선 순위를 갖는지 여부를 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위를 갖으면, 상기 삽입될 현재 객체를 상기 삽입될 연관 객체 앞에 정렬하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위를 갖지 않으면, 상기 삽입될 현재 객체를 상기 삽입될 연관 객체 뒤에 정렬하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하는 컴퓨터 프로그램 제품.
  25. 제 24 항에 있어서,
    상기 삽입될 객체 사이의 연관을 식별하는 수단은,
    상기 삽입될 객체에 대한 현재 및 연관 객체를 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삽입될 객체 내의 외래 키 및 주 키를 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한을 식별하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하고,
    상기 삽입될 현재 객체가 삽입될 모든 연관 객체에 대해 삽입 우선 순위를 갖는지 여부를 판단하는 수단은,
    상기 삽입될 연관 객체의 외래 키가 상기 삽입될 현재 객체의 주 키를 참조하는지 여부를 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삽입될 현재 객체의 상기 외래 키와 상기 삽입될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위가 있다고 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삽입될 현재 객체의 상기 외래 키와 상기 삽입될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삽입될 현재 객체가 상기 삽입될 연관 객체에 대해 삽입 우선 순위가 없다고 판단하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하는 컴퓨터 프로그램 제품.
  26. 객체 지향 트랜잭션 시스템에 의한 트랜잭션의 완료 시 관계 데이터베이스 상에서 수행되는 데이터베이스 동작을 정렬하는 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 자체 내에서 실시되는 컴퓨터 판독가능 코드 수단을 구비하는 컴퓨터 판독가능 저장 매체를 포함하고, 상기 컴퓨터 판독가능 프로그램 코드 수단은,
    ① 삽입 또는 삭제될 상기 객체 사이의 연관을 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    ② 삽입 또는 삭제될 현재 객체가 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖는지 여부를 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    ③ 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖으면, 상기 삽입 또는 삭제될 현재 객체를 상기 삽입 또는 삭제될 연관 객체 앞에 정렬하는 컴퓨터 판독가능 프로그램 코드 수단과,
    ④ 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖지 않으면, 상기 삽입 또는 삭제될 현재 객체를 상기 삽입 또는 삭제될 연관 객체 뒤에 정렬하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하는 컴퓨터 프로그램 제품.
  27. 제 26 항에 있어서,
    상기 삽입 또는 삭제될 객체 사이의 연관을 식별하는 수단은,
    상기 삽입 또는 삭제될 객체에 대한 현재 및 연관 객체를 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삽입 또는 삭제될 객체 내의 외래 키 및 주 키를 식별하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 식별된 외래 키 및 주 키 쌍 사이의 상기 관계 데이터베이스 내의 제한을 식별하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하고,
    상기 삽입 또는 삭제될 현재 객체가 삽입 또는 삭제될 모든 연관 객체에 대해 삽입 또는 삭제 우선 순위를 갖는지 여부를 판단하는 수단은,
    상기 삽입될 연관 객체의 외래 키가 상기 삽입될 현재 객체의 주 키를 참조하는지 여부를 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삭제될 현재 객체의 외래 키가 상기 삭제될 연관 객체의 주 키를 참조하는지 여부를 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삽입 또는 삭제될 현재 객체의 상기 외래 키와 상기 삽입 또는 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하면, 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위가 있다고 판단하는 컴퓨터 판독가능 프로그램 코드 수단과,
    상기 삽입 또는 삭제될 현재 객체의 상기 외래 키와 상기 삽입 또는 삭제될 연관 객체의 상기 주 키 사이에 식별된 제한이 존재하지 않으면, 상기 삽입 또는 삭제될 현재 객체가 상기 삽입 또는 삭제될 연관 객체에 대해 삽입 또는 삭제 우선 순위가 없다고 판단하는 컴퓨터 판독가능 프로그램 코드 수단
    을 포함하는 컴퓨터 프로그램 제품.
KR1019990050394A 1998-12-31 1999-11-13 데이터베이스 동작 정렬 방법, 시스템 및 컴퓨터 프로그램제품 KR20000047630A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/224,427 US6456995B1 (en) 1998-12-31 1998-12-31 System, method and computer program products for ordering objects corresponding to database operations that are performed on a relational database upon completion of a transaction by an object-oriented transaction system
US09/224,427 1998-12-31

Publications (1)

Publication Number Publication Date
KR20000047630A true KR20000047630A (ko) 2000-07-25

Family

ID=22840633

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990050394A KR20000047630A (ko) 1998-12-31 1999-11-13 데이터베이스 동작 정렬 방법, 시스템 및 컴퓨터 프로그램제품

Country Status (4)

Country Link
US (1) US6456995B1 (ko)
JP (1) JP3790650B2 (ko)
KR (1) KR20000047630A (ko)
GB (1) GB2347243B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020028132A (ko) * 2000-10-07 2002-04-16 김성헌 데이터베이스의 데이터 인덱싱 장치 및 그 방법

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062456B1 (en) 1999-02-09 2006-06-13 The Chase Manhattan Bank System and method for back office processing of banking transactions using electronic files
US6542883B1 (en) 2000-03-09 2003-04-01 International Business Machines Corporation Ordering relational database operations according to referential integrity constraints
US7143108B1 (en) * 2000-04-06 2006-11-28 International Business Machines Corporation Apparatus and method for deletion of objects from an object-relational system in a customizable and database independent manner
JP2001344524A (ja) * 2000-05-30 2001-12-14 Konami Co Ltd データ提供装置及びデータ提供方法
US7328211B2 (en) 2000-09-21 2008-02-05 Jpmorgan Chase Bank, N.A. System and methods for improved linguistic pattern matching
GB2381154B (en) * 2001-10-15 2004-06-30 Jacobs Rimell Ltd Object distribution
US7987246B2 (en) * 2002-05-23 2011-07-26 Jpmorgan Chase Bank Method and system for client browser update
US7139690B2 (en) * 2002-07-22 2006-11-21 Microsoft Corporation Object-level conflict detection in an object-relational database system
US20040103199A1 (en) * 2002-11-22 2004-05-27 Anthony Chao Method and system for client browser update from a lite cache
US7305410B2 (en) * 2002-12-26 2007-12-04 Rocket Software, Inc. Low-latency method to replace SQL insert for bulk data transfer to relational database
US20040230555A1 (en) * 2003-05-16 2004-11-18 John Phenix System and method for representing a relational database as a java object
WO2005015361A2 (en) 2003-08-08 2005-02-17 Jp Morgan Chase Bank System for archive integrity management and related methods
US7516139B2 (en) 2003-09-19 2009-04-07 Jp Morgan Chase Bank Processing of tree data structures
US10049127B1 (en) * 2003-12-19 2018-08-14 Oracle America, Inc. Meta-transactional synchronization
US7366974B2 (en) 2004-09-03 2008-04-29 Jp Morgan Chase Bank System and method for managing template attributes
US7677441B2 (en) * 2005-04-01 2010-03-16 Microsoft Corporation Relaxed currency constraints
US8065606B1 (en) 2005-09-16 2011-11-22 Jpmorgan Chase Bank, N.A. System and method for automating document generation
US10289728B2 (en) * 2006-05-15 2019-05-14 Avaya Inc. Garbage collection of persistent objects with dynamic multikeys
US8104076B1 (en) 2006-11-13 2012-01-24 Jpmorgan Chase Bank, N.A. Application access control system
US7711678B2 (en) 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
US8214797B2 (en) * 2007-02-01 2012-07-03 Microsoft Corporation Visual association creation for object relational class development
US7761475B2 (en) * 2007-07-13 2010-07-20 Objectivity, Inc. Method, system and computer-readable media for managing dynamic object associations as a variable-length array of object references of heterogeneous types binding
US8775441B2 (en) * 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
US8108360B2 (en) * 2008-04-17 2012-01-31 Microsoft Corporation Database object update order determination
KR101607178B1 (ko) 2008-10-23 2016-03-29 아브 이니티오 테크놀로지 엘엘시 데이터 조작 수행, 데이터 품질 측정, 또는 데이터 요소 결합을 위한 방법, 시스템, 및 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 매체
US8010521B2 (en) * 2009-03-23 2011-08-30 Sap Ag Systems and methods for managing foreign key constraints
US9038177B1 (en) 2010-11-30 2015-05-19 Jpmorgan Chase Bank, N.A. Method and system for implementing multi-level data fusion
US9292588B1 (en) 2011-07-20 2016-03-22 Jpmorgan Chase Bank, N.A. Safe storing data for disaster recovery
KR102031392B1 (ko) 2011-11-15 2019-11-08 아브 이니티오 테크놀로지 엘엘시 후보 쿼리들에 기반한 데이터 클러스터링
US10540373B1 (en) 2013-03-04 2020-01-21 Jpmorgan Chase Bank, N.A. Clause library manager
GB2522832A (en) 2013-10-10 2015-08-12 Ibm A method and a system for loading data with complex relationships

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0667957A (ja) * 1992-08-20 1994-03-11 Kobe Nippon Denki Software Kk トランザクションの処理装置
JPH07182222A (ja) * 1993-12-24 1995-07-21 Fuji Xerox Co Ltd オブジェクト指向データベース管理装置
JPH07248948A (ja) * 1994-03-10 1995-09-26 Fujitsu Ltd データベースの動的構成方式
US5832498A (en) * 1994-09-13 1998-11-03 Bull, S.A. Device for generating object-oriented interfaces for relational data bases and a process implemented by this device

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947320A (en) * 1988-07-15 1990-08-07 International Business Machines Corporation Method for referential constraint enforcement in a database management system
US5448727A (en) 1991-04-30 1995-09-05 Hewlett-Packard Company Domain based partitioning and reclustering of relations in object-oriented relational database management systems
JP2720754B2 (ja) * 1993-05-18 1998-03-04 日本電気株式会社 グループウェア開発支援システム
WO1995003586A1 (en) 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
WO1996034350A1 (en) 1995-04-24 1996-10-31 Aspect Development, Inc. Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
US6106569A (en) * 1997-08-14 2000-08-22 International Business Machines Corporation Method of developing a software system using object oriented technology
US6134558A (en) * 1997-10-31 2000-10-17 Oracle Corporation References that indicate where global database objects reside
US6108664A (en) * 1997-10-31 2000-08-22 Oracle Corporation Object views for relational data
US6119126A (en) * 1998-05-29 2000-09-12 Oracle Corporation Object-relational query builder which determines existence of structures from information loaded from the server and cached locally on the client computing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0667957A (ja) * 1992-08-20 1994-03-11 Kobe Nippon Denki Software Kk トランザクションの処理装置
JPH07182222A (ja) * 1993-12-24 1995-07-21 Fuji Xerox Co Ltd オブジェクト指向データベース管理装置
JPH07248948A (ja) * 1994-03-10 1995-09-26 Fujitsu Ltd データベースの動的構成方式
US5832498A (en) * 1994-09-13 1998-11-03 Bull, S.A. Device for generating object-oriented interfaces for relational data bases and a process implemented by this device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020028132A (ko) * 2000-10-07 2002-04-16 김성헌 데이터베이스의 데이터 인덱싱 장치 및 그 방법

Also Published As

Publication number Publication date
GB2347243B (en) 2003-04-02
US6456995B1 (en) 2002-09-24
JP2000207271A (ja) 2000-07-28
GB2347243A (en) 2000-08-30
GB9927417D0 (en) 2000-01-19
JP3790650B2 (ja) 2006-06-28

Similar Documents

Publication Publication Date Title
KR20000047630A (ko) 데이터베이스 동작 정렬 방법, 시스템 및 컴퓨터 프로그램제품
CN112470141B (zh) 数据库中的数据共享和实例化视图
US7734657B2 (en) Containment hierarchy in a database system
US6356913B1 (en) Generic (database-independent) and dynamically-modifiable schema
US10127260B2 (en) In-memory database system providing lockless read and write operations for OLAP and OLTP transactions
US6240422B1 (en) Object to relational database mapping infrastructure in a customer care and billing system
US10552402B2 (en) Database lockless index for accessing multi-version concurrency control data
AU743821B2 (en) Object model mapping and runtime engine for employing relational database with object oriented software
US6339777B1 (en) Method and system for handling foreign key update in an object-oriented database environment
US7533136B2 (en) Efficient implementation of multiple work areas in a file system like repository that supports file versioning
US7376658B1 (en) Managing cross-store relationships to data objects
US20040015516A1 (en) Object graph faulting and trimming in an object-relational database system
US7480661B2 (en) Query services for database system
US7949685B2 (en) Modeling and implementing complex data access operations based on lower level traditional operations
US20080040367A1 (en) Methods, systems, and computer program products for using graphs to solve circular dependency in object persistence
KR20010012305A (ko) 정보처리 시스템내 데이터를 저장하고 조작하기 위한시스템 및 방법
AU2003227293A1 (en) Database management system and method for conditional conflict serializability of transactions and for combining meta-data of varying degrees of reliability
CA2398148C (en) System and method for managing bi-directional relationships between objects
US20060235867A1 (en) Map and data location provider
US9171036B2 (en) Batching heterogeneous database commands
US8010568B2 (en) Enforcing constraints from a parent table to a child table
US7509332B1 (en) Customized indexes for user defined data types
US7752181B2 (en) System and method for performing a data uniqueness check in a sorted data set
Shekita High Performance Implementation Techniques for Next Generation Database Systems
Wang Relational database model and its application to the bookstore database A Microsoft platform implementation

Legal Events

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