KR100287065B1 - 객체지향데이터베이스시스템의영속객체관리방법 - Google Patents

객체지향데이터베이스시스템의영속객체관리방법 Download PDF

Info

Publication number
KR100287065B1
KR100287065B1 KR1019970059302A KR19970059302A KR100287065B1 KR 100287065 B1 KR100287065 B1 KR 100287065B1 KR 1019970059302 A KR1019970059302 A KR 1019970059302A KR 19970059302 A KR19970059302 A KR 19970059302A KR 100287065 B1 KR100287065 B1 KR 100287065B1
Authority
KR
South Korea
Prior art keywords
attribute
main memory
database
information
class
Prior art date
Application number
KR1019970059302A
Other languages
English (en)
Other versions
KR19990039270A (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 to KR1019970059302A priority Critical patent/KR100287065B1/ko
Publication of KR19990039270A publication Critical patent/KR19990039270A/ko
Application granted granted Critical
Publication of KR100287065B1 publication Critical patent/KR100287065B1/ko

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 객체지향 응용 프로그램의 객체에 지속성을 부여하기 위해 데이터베이스에 저장하고, 데이터베이스에 저장된 객체를 주메모리로 읽어들여 객체지향 응용 프로그램에서 사용할 수 있도록 하는 객체지향 데이터베이스 시스템의 영속 객체 관리 기법에 관한 것이다.
본 발명은 저장 객체와 주 메모리 객체간의 변환 메소드의 생성 및 수행을 시스템에서 자동으로 해 줌으로서, 영속 객체 관리의 용이성과 객체의 일관성을 제공한다. 또한 객체의 실제 클래스의 변환 메소드가 어트리뷰트명에 의한 어트리뷰트별로 값을 추출 및 복사하므로서 새로운 어트리뷰트의 추가와 같은 스키마 변경 혹은 하위 클래스에서 상위 클래스의 어트리뷰트를 재정의한 경우에도 객체지향 응용 프로그램에서 영속 객체를 유연하게 이용할 수 있도록 하는 방법을 제시한다.

Description

객체지향 데이터베이스 시스템의 영속 객체 관리 방법{Method and System for Managing Persistent Object in Object-Oriented Database System}
본 발명은 객체(object)지향 응용 프로그램의 객체에 지속성을 부여하기 위해 데이터베이스에 저장하고, 데이터베이스에 저장된 객체를 주메모리로 읽어들여 객체지향 응용 프로그램에서 사용할 수 있도록 하는 객체지향 데이터베이스 시스템의 영속 객체 관리 기법에 관한 것이다.
일반적으로 객체지향 프로그래밍 시스템에서는 프로그램 동작중에 사용하던 객체를 프로그램이 종료 후에도 유지하기 위한 시도가 있어 왔다. 프로그램이 종료 후에도 사용하던 정보를 잃지 않고 나중에 이를 재사용하기 위해서는 객체의 내용 (이하 자료라 함)을 디스크 저장 장치와 같은 비휘발성 메모리에 구비되는 데이터 베이스에 저장하고, 이를 나중에 읽어와 램(RAM)과 같은 휘발성 메모리인 주메모리에 저장하여 사용하여야 한다. 객체를 주기억장치로 적재하는 것은 객체의 모습을 객체지향 프로그래밍 시스템에서 주메모리에 표현되는 모습으로 만들어 준다는 의미이고, 객체를 데이터베이스에 저장하는 것은 데이터베이스에 저장도는 모습으로 객체를 변환시켜 준다는 의미로, 객체의 저장 방법과 객체의 변환 방법은 서로 상관 관계를 갖는다.
객체에 지속성을 부여하는 가장 간단한 방법은 파일 시스템을 이용하여 자료를 저장, 관리하는 것으로, 이 방법은 사용자가 자료의 쓰기 및 읽기를 직접 수행해 주어야 한다. 즉, 지속적인 자료를 원하는 모든 응용 프로그램은 자료의 저장 관리 및 주메모리로 올리는 기능을 자체적으로 개발하여 이용한다. 그러나 사용자가 사용하는 매 자료마다 이를 실시하기에는 어려움이 있고 자료들의 일관성 유지도 어렵다. 그러므로 이를 시스템이 자동으로 실시함으로서 사용의 용이성 및 객체의 일관성을 제공할 수 있다. 또한 많은 응용 프로그램에서 공통적으로 요구하는 기능을 시스템에서 지원하므로써 개발비용 및 유지 보수 노력을 절감시킬 수 있다.
객체지향 데이터베이스 시스템은 객체와 각 객체를 식별 가능하게 하는 객체 식별자, 클래스, 계승 등의 개념으로 구성된 자료 모델을 지원하고, 객체지향 언어로 작성된 응용 프로그램에서 생성된 객체에 지속성을 부여할 수 있도록 하며, 이를 데이터베이스에 저장 관리하여 여러 사용자가 공유할 수 있도록 한다. 즉, 객체지향 데이터베이스 시스템에는 객체의 저장 및 객체 적재 기능을 수행하는 모듈이 내장되어 객체지향 프로그래밍 시스템에서 영속 객체를 사용할 수 있도록 하고 있다. 그러나 대부분의 객체지향 데이터베이스 시스템은 클래스 구조 변경에 유연하지 못하게 객체를 관리하고 있다. 즉, 클래스 구조가 변경되면 종래의 클래스 구조하에서 사용하던 응용 프로그램을 재컴파일하여야만 이용할 수 있다. 이를 해결하기 위해 제시되고 있는 방법이 클래스 정보에 대한 버전 관리를 이용한 것이나, 이 방법은 비용이 많이 들기 때문에 널리 쓰이지 않고 있다.
객체를 데이터베이스 내에 저장하는 방법과 데이터베이스 내에 저장되어 있던 객체를 읽어와 응용 프로그램이 동작하는 주메모리에 저장하는 방법간에는 서로 상관 관계가 있으며, 객체를 데이터베이스에 어떻게 저장하느냐에 따라 디스크 이용 효율 및 디스크 접근 속도에 영향을 미친다. 또한 응용 프로그램이 동작하는 주 메모리 내 객체로 변환시 변환 방법을 어떻게 하느냐에 따라 클래스 구조 변경이 발생한 경우에도 종래 응용 프로그램을 재컴파일하지 않고 사용할 수 있는 가능성을 제공한다.
그러므로 본 발명에서는 객체지향 프로그래밍 시스템의 객체에 영속성을 부여하며, 디스크 이용 및 접근 속도를 효율적으로 하고, 클래스 구조에 유연한 영속 객체 관리 기능을 제시한다.
따라서, 본 발명은 객체지향 응용 프로그램의 객체에 지속성을 제공하기 위해 데이터베이스에 저장하고, 데이터베이스에 저장된 객체를 객체지향 응용 프로그램에서 사용할 수 있도록 영속 객체를 관리하는데 그 목적이 있으며, 다음과 같은 객체 저장 및 변환 방법을 제시한다.
첫째, 데이터베이스에 객체를 저장시에는 꼭 필요한 정보만 추출하여 저장한다.
둘째, 영속 객체를 데이터베이스에서 주메모리 내로 읽어들일 때와 사용이 끝나 데이터베이스로 하적할 때 해당 모습으로 변환하는 변환 메소드를 시스템이 알아서 자동으로 호출한다.
셋째, 클래스별 변환 메소드를 시스템에서 제공한다.
넷째, 변환 메소드는 변환되고 있는 객체의 주메모리 클래스에 정의된 변환 메소드를 이용한다.
다섯째, 변환 메소드에 사용되는 변환 방법은 어트리뷰트별로 각 어트리뷰트의 명을 이용하여 저장 객체로부터 어트리뷰트 값을 추출 및 저장 객체에 복사하는 방식으로 실시한다.
여섯째, 변환시 사용하는 클래스 구조 정보는 변환되고 있는 객체의 실제 클래스 구조, 즉 저장 객체의 클래스 구조를 참조한다.
상술한 목적을 달성하기 위한 본 발명은 객체지향 응용 프로그램 수행 중 영속 객체 관련 요구 사항을 접수하는 제1단계와,
상기 제1단계로부터 접수된 정보를 영속 객체 생성 요구라고 판독하면, 주메모리내 객체를 생성하고 저장 객체로의 변환 메소드를 호출한 후, 데이터베이스에 저장하고 종료하는 제2단계와,
상기 제1단계로부터 접수된 정보를 기존에 생성된 영속 객체를 접근하려는 요구라고 판독하면, 주메모리내에 해당 객체가 이미 읽어들여 있는가를 확인하는 제3단계와,
상기 제3단계로부터 주메모리내에 해당 객체가 없으면, 주메모리내에 영역을 할당하고, 데이터베이스에서 저장 객체를 읽어, 주메모리 객체로의 변환메소드를 호출하여 변환 후, 주메모리 객체에 대한 포인터를 제공하고 종료하는 제4단계와,
상기 제3단계로부터 주메모리내에 해당 객체가 있으면, 해당 주메모리 객체에 대한 포인터를 제공하고 종료하는 제5단계와,
상기 제1단계로부터 접수된 정보를 주메모리 내에 있는 영속 객체를 변경하려는 요구라고 판독하면, 변경된 내용을 데이터베이스에 반영여부를 확인하는 제6단계와,
상기 제6단계로부터 데이터베이스에 반영하기를 원하면, 저장 객체로의 변환 메소드를 이용하여 변환한 후에, 데이터베이스에 반영하고 종료하는 제7단계와,
상기 제6단계로부터 데이터베이스에 반영하기를 원하지 않으면, 바로 종료하는 제8단계와,
상기 제1단계로부터 접수된 정보를 주메모리내 영속 객체삭제요구라고 판독하면, 주메모리내 해당 객체를 삭제하고 데이터베이스내 반영 여부를 확인하는 제9단계와,
상기 제9단계에서 데이터베이스에 반영하기를 원하면, 데이터베이스내 저장 객체도 삭제하고 종료하는 제10단계와,
상기 제9단계로부터 데이터베이스에 반영하기를 원하지 않으면 바로 종료하는 제11단계를 포함하여 이루어지는 것을 특징으로 한다.
또한 상기 단계에서 호출되는 변환메소드는 객체의 주메모리 클래스에 정의된 변환메소드이고, 상기 변환메소드의 수행은 클래스를 구성하는 어트리뷰트 별로 각 어트리뷰트 명을 이용하여 어트리뷰트 값을 추출 및 복사하는 방식으로 구성되고, 상기 변환 메소드에서 어트리뷰트 값을 얻을 때 객체의 실제 클래스 구조를 참조하는 것을 특징으로 한다.
도 1은 본 발명에 따른 컴퓨터 시스템 구성도,
도 2는 본 발명에 따른 객체지향 데이터베이스 시스템의 모듈 구성도,
도 3은 본 발명인 영속 객체 관리 방법에서 사용되는 주메모리 객체 구조도,
도 4는 본 발명인 영속 객체 관리 방법에서 사용되는 저장 객체 구조도,
도 5는 본 발명에 따른 영속 객체 관리의 동작 흐름도,
도 6은 본 발명에 따른 변환 메소드 생성에 대한 동작 흐름도,
도 7은 본 발명에 따른 어트리뷰트 값 추출 및 복사 함수에 대한 동작 흐름도.
〈도면의 주요 부분에 대한 부호 설명〉
101 : 객체지향 응용 프로그램
102 및 106 : 객체지향 데이터베이스 시스템
103 및 108 : 램(RAM) 104 및 109 : 중앙 처리 장치(CPU)
105 및 110 : 입출력 처리기(IOP)
111 : 비휘발성 저장 장치 112 : 네트워크
201 : 객체지향 응용 프로그램
202 : 클래스 정의문 생성도구(Export_cpp)
203 : 인터페이스 모듈 204 및 208 : 질의 모듈
205 및 209 : 스키마 관리 모듈 206 및 210 : 객체 관리 모듈
207 : 통신 관리 모듈 211 : 자료 저장 관리 시스템
212 : 데이터베이스
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명하면 다음과 같다.
도 1은 본 발명에 따른 컴퓨터 시스템 구성도로서, 컴퓨터 시스템 환경을 도시한 것이다.
영속 객체를 이용하는 객체지향 응용 프로그램(101)이 객체지향 데이터베이스 시스템의 클라이언트 라이브러리(102)와 통합되어 주메모리인 램(RAM)(103), 프로세서인 씨피유(CPU)(104), 입출력 처리기인 아이오피(IOP)(105)가 동작하는 컴퓨터 시스템 환경에서 동작한다.
비휘발성 저장 장치인 디스크(DISK)(111)에 저장되어 있는 영속 객체를 이용하고자 하는 객체지향 응용 프로그램의 요구는 네트워크(112)를 통하여 서버쪽에서 운영체제(107)와 램(RAM)(108), 씨피유(CPU)(109), 아이오피(IOP)(110)의 도움을 받아 영속 객체를 관리하는 객체지향 데이터베이스 시스템(106)에 의해 처리된다.
도 2는 본 발명에 따른 객체지향 데이터베이스 시스템의 모듈 구성도이다. 인터페이스 모듈(203)은 객체지향 응용 프로그램(201)에서 사용할 응용 프로그래밍 인터페이스를 지원하기 위한 모듈이다.
스키마 관리 모듈(205 및 209)은 클래스 정의 및 변경 등의 스키마 관리와 권한 관리를 담당하는데, 클라이언트 스키마 관리 모듈(205)은 스키마 정보 제공 기능을 수행하고, 서버 스키마 관리 모듈(209)은 실제적인 스키마 관리에 필요한 작업을 수행한다.
객체 관리 모듈(206 및 210)은 객체의 생성, 저장, 삭제 및 변경 등과 같은 객체 관리, 객체 식별을 위한 객체 식별자의 관리, 메모리 객체와 디스크 저장 객체간의 형태 변환, 클라이언트 메모리 내 객체의 캐쉬 지원 기능 등을 수행한다.
서버 객체 관리 모듈(210)은 디스크에 저장된 객체에 대한 관리를 수행하며, 클라이언트 객체 관리 모듈(206)은 메모리 객체/디스크 저장 객체간의 변환과 메모리 객체 관리를 담당한다.
질의 모듈(204 및 208)은 질의 처리 기능을 지원하며, 통신 모듈(207)은 클라이언트와 서버사이의 통신을 담당한다.
자료 저장 관리 시스템(211)은 비 휘발성 메모리인 디스크에 저장되어 있는 데이터베이스(212)에 실제 자료를 저장 및 관리하며, 서버 객체 관리 모듈(210)에서 요구하는 자료에 대한 실제 접근을 담당한다.
클래스 정의문 생성도구(Export_cpp)(202)는 객체지향 데이터베이스 시스템의 기능을 이용하여 객체지향 응용 프로그램이 사용하는 클래스 정의문을 자동으로 생성하며, 영속 객체 관리에 필요한 변환 메소드를 자동으로 생성해 주는 시스템이다.
상기와 같이 구성된 모듈 중에서, 본 발명에 포함되는 기술이 내포되어 있는 모듈은 클래스 정의문 생성도구(202)와 인터페이스 모듈(203)과 객체 관리 모듈 (206 및 210)로 기타 다른 모듈의 도움을 받아 작업을 수행한다.
도 3은 본 발명인 영속 객체 관리 방법에서 사용되는 주 메모리 객체 구조도로서, 클래스에 정의된 어트리뷰트의 타입에 따라 실제 주메모리 내에 표현되는 방법을 보여 준다. 주메모리 객체구조도는 사용되는 객체지향 프로그래밍 언어의 규칙에 맞게, 클래스 정의문 생성도구에 의해 생성된 클래스 정의문에 따르며, 본 발명은 어트리뷰트를 전부 계승받는 객체지향 프로그래밍 언어를 대상으로 한다.
모든 값이 고정 길이로 표현되는 타입(정수(integer), 실수(float)와 같은 수치형, 문자(char[n])와 같은 고정길이 문자형)은 어트리뷰트의 위치에 따라 연속되는 메모리 내에 할당 및 저장된다(301, 304 및 305).
반면에 가변 길이로 표현되는 타입은 해당 어트리뷰트의 위치에 따라 연속되는 메모리에 포인터나 구조체 타입으로 할당되어(302, 303 및 306) 실제 값을 저장하기 위해 할당한 메모리 영역(307 및 308)을 직, 간접으로 포인팅하거나, 실제 자료가 저장된 디스크상의 위치 정보에 대한 핸들을 갖고 있다(309).
가변 길이로 표현되는 타입에는 사용자 정의 클래스 타입과 가변길이 문자형, 집합형, 그리고 매우 큰 자료인 LOB(Large Object)형이 있다.
가변길이 문자형과 집합형은 주메모리내 할당된 영역에 값이 저장되어 있고, 해당 어트리뷰트 위치에는 이에대한 정보를 유지한다.
LOB 자료는 자료의 크기 및 속성상 객체가 참조될 때 매 번 쓰일 확률이 높지 않으므로, 자료를 주메모리 내에 같이 읽어들이지 않는다. 그러므로 요구시 따로 주메모리로 읽을 수 있도록, 주메모리 객체의 해당 어트리뷰트에는 디스크상의 위치 정보에 대한 핸들을 구조체 타입으로 유지하고, 사용자 정의 클래스 타입인 경우도 필요시 하도록 간접적으로 포인팅한다.
도 4는 본 발명인 영속 객체 관리 방법에서 사용되는 저장 객체 구조도로서, 클래스에 정의된 어트리뷰트의 타입에 따라 실제 데이터베이스에 저장되는 방법을 보여 준다.
데이터베이스에 객체 저장은 어트리뷰트의 순서대로 어트리뷰트의 값 혹은 실제 어트리뷰트 값이 저장되어 있는 위치정보를 연속적으로 저장하며, 고정 길이로 표현되는 정보들(수치형, 고정길이 문자형을 갖는 정보)은 제위치에 어트리뷰트 값을 저장한다.(401, 404 및 405).
반면에 가변적으로 할당되어야 할 정보(가변길이 문자형, 사용자 정의 클래스, 집합형, LOB형의 자료)는 제위치에 실제 저장된 곳에 대한 정보를 저장한다 (402,403 및 406). 그리고 실제 어트리뷰트 값은 고정 길이 정보들 다음에 연속적으로(407) 혹은 다른 공간(408 및 409)에 저장한다.
LOB 및 사용자 정의 클래스형의 자료는 자료의 관리 방법 혹은 접근하는 형태가 다르므로 다른 공간에 별도의 객체로 저장 후 이에 대한 식별자를 관리하고 (402 및 406), 기타 가변 길이형 자료인 경우에는 저장 객체상의 상대적인 위치 및 저장된 자료 길이에 대한 정보(403)를 관리한다. 클래스 계승에 의해 어트리뷰트가 계승받았을 때, 저장공간 효율성을 위해 하위 클래스에서 재정의되었거나, 하위 클래스에 같은 이름의 어트리뷰트가 존재하는 경우에는 상위 클래스의 해당 어트리뷰트는 저장하지 않고 하위 클래스의 어트리뷰트 정보만 디스크에 저장한다.
도 5는 본 발명에 따른 영속 객체 관리의 동작 흐름도이다.
단계(501)에서 객체지향 응용 프로그램 수행 중 영속 객체 관련 요구 사항을 접수한다. 요구사항 접수방법은 특정 인터페이스를 정의하고, 해당 인터페이스가 호출된 경우를 말하며, 각각의 요구에 따라 다음과 같이 처리한다.
단계(502)에서 단계(501)의 접수된 정보를 영속 객체 생성 요구라고 판독하면, 단계(503)에서 주 메모리 내 객체를 생성하고, 이를 데이터베이스에 반영하기 위해 저장 객체로의 변환 메소드를 단계(504)에서 호출한 후, 이를 단계(505)에서 데이터베이스에 저장하고 종료한다.
단계(506)에서 단계(501)의 접수된 정보를 기존에 생성된 영속 객체를 접근하려는 요구라고 판독하면 단계(507)에서 주 메모리 내에 해당 객체가 적재되어 있는가를 확인한다.
단계(507)에서 주메모리 내에 해당 객체가 없으면 단계(508)에서 주 메모리 내에 영역을 할당하고, 단계(509)에서 데이터베이스에서 저장 객체를 읽어, 단계 (510)에서 주메모리 객체로의 변환 메소드를 호출하여 변환후 단계(511)에서 해당 주메모리 객체 모습으로 만든 후 사용하고 종료한다. 주메모리 객체로의 변환 매소드에서는 이미 변호나되어 있는지를 확인하여 필요한 경우에만 변환한다.
단계(507)에서 주메모리 내에 해당 객체가 있는가를 확인하여, 있으면 단계 (510)에서 주메모리 객체로의 변환 메소드를 호출하여 변환후 단계(511)에서 해당 주메모리 객체에 대한 포인터를 제공하고 종료한다. 주메모리 객체로의 변환 메소드에서는 이미 변환되어 있는지를 확인하여 필요한 경우에만 변환한다.
단계(512)에서 단계(501)의 접수된 정보를 주 메모리 내에 있는 영속 객체를 변경하려는 요구라고 판독하면, 단계(513)에서 변경된 내용을 데이터베이스에 반영할 시점인지 확인한다.
단계(513)에서 데이터베이스에 반영할 시점이면, 단계(514)에서 저장 객체로의 변환 메소드를 이용하여 변환 후, 단계(515)에서 데이터베이스에 반영하고 종료한다.
단계(513)에서 데이터베이스에 반영할 시점이 아니면, 바로 종료한다.
단계(516)에서 단계(501)의 접수된 정보를 주 메모리 내 영속 객체 삭제 요구라고 판독하면 주메모리내 해당 객체가 삭제되었음을 기록하고, 단계(517)에서 데이터베이스에 반영할 시점인지 확인한다.
단계(517)에서 데이터베이스에 반영할 시점이면, 단계(518)에서 데이터베이스 내 저장 객체도 삭제하고 종료한다.
단계(517)에서 데이터베이스에 반영할 시점이 아니면, 바로 종료한다.
주메모리 상의 객체 변동 사항을 데이터베이스에 반영할지 여부를 확인하는 단계(513 및 517)에서 반영 시점 결정은 시스템에서 정한 기준에 따른다. 즉 요구시 바로 데이터베이스에 반영할 수도 있고, 특정 시점에 한꺼번에 반영할 수도 있다.
객체지향 프로그램 시스템에서 영속 객체로 생성된 것을 프로그램이 종료되는 시점 혹은 필요한 시점에 데이터베이스에 저장하기 위해 호출하는 저장 객체로의 변환 메소드(이후 이를 to_disk_object() 변환 메소드라 칭함)와 데이터베이스에 저장되어 있던 객체를 객체지향 프로그램 시스템에서 접근하고자 할 때 주 메모리 모습대로 변환하기 위해 호출하는 주 메모리 객체로의 변환 메소드(이후 이를 to_memory_object() 변환 메소드라 칭함)는 클래스 정의문 생성도구에 의해 생성되는 클래스 정의문 헤더파일에 자동으로 생성하여 포함시키며, 객체지향 응용 프로그램은 클래스 정의문 생성도구에 의해 생성된 클래스 정의문을 사용하여 시스템을 구성한다.
도 6은 본 발명에 따른 변환 메소드 생성에 대한 동작 흐름도로서, 클래스 정의문 생성도구에 의해 변환 메소드인 to_disk_object()와 to_memory_object() 메소드가 생성되는 동작 흐름을 보여 준다.
단계(601)에서 클래스의 to_disk_object() 변환 메소드를 생성하기 위해 클래스 자신 및 상위 클래스에 대한 모든 정보를 얻고, 단계(602)에서 관련된 클래스마다 각 클래스의 어트리뷰트 정보를 얻어 각 어트리뷰트마다 단계(608)까지 수행한다.
단계(603)에서 어트리뷰트가 계승받으면서 재정의된 경우인지 여부를 확인하여 재정의된 어트리뷰트이면, 단계(604)에서 관련된 하위 클래스의 어트리뷰트 정보를 얻고, 단계(607)로 진행한다.
단계(603)에서 재정의된 어트리뷰트가 아니면 단계(605)로 진행한다.
단계(605)에서 계승받지 않은 어트리뷰트인지 여부를 확인하여 같은 어트리뷰트가 하위 클래스에 이미 존재하여 계승하지 않은 어트리뷰트이면, 단계(606)에서 관련된 하위 클래스의 어트리뷰트 정보를 얻고 단계(607)로 진행한다.
단계(605)에서 계승받지 않은 어트리뷰트가 아니면 단계(607)로 진행한다.
단계(607)에서 상기 단계에서 얻어진 정보로부터 주 메모리 객체의 어트리뷰트와 해당되는 저장 객체의 어트리뷰트 관계를 설정한다. to_disk_object()에서 주메모리 객체의 어트리뷰트와 해당되는 저장 객체의 어트리뷰트 관계설정시 재정의되었거나 계승받지 않은 어트리뷰트가 주메모리 객체에서 모두 별도의 어트리뷰트로 존재하지만 저장 객체에서는 하위 클래스에 하나만 존재하므로, 저장 객체의 해당 어트리뷰트에 복사되도록 처리한다.
단계(608)에서 주메모리내 어트리뷰트 값을 저장 객체의 해당 어트리뷰트 자리에 복사하는 함수인 put_attr_value() 함수를 구성하고, 단계(609)에서 모든 어트리뷰트에 대한 처리의 완료 여부를 확인한다.
단계(609)에서 모든 어트리뷰트 처리가 완료되면, 단계(610)에서 to_disk_object() 메소드의 인터페이스를 동적 바인딩이 되도록 구성하고, 단계 (611)에서 이제까지 만들어진 put_attr_value() 함수들로 to_disk_object() 메소드의 구현을 파일에 구성하고 종료한다. 상기 (609)단계에서 동적 바인딩 구성은 예를들어 컴퓨터 프로그래밍 언어의 한 종류인 "C++"에서는 버츄얼(virtual) 함수로 정의하는 방법을 사용할 수 있다.
단계(609)에서 모든 어트리뷰트 처리가 완료되지 않으면, 단계(602)로 궤한되어 반복된 동작을 수행한다.
to_memory_object()는 상기 단계에서 pur_attr_value() 대신 저장 객체의 어트리뷰트 값을 추출하여 이를 주 메모리 객체의 어트리뷰트에 복사하는 함수인 get_attr_value()들로 구성된다. to_memory_object()는 주메모리 객체의 어트리뷰트와 저장 객체의 어트리뷰트 관계를 설정할 대, 계승받으면서 재정의한 경우 혹은 같은 어트리뷰트가 이미 존재하여 계승받지 않은 어트리뷰트가 저장 객체에서는 하위 클래스의 어트리뷰트로만 저장되어 있으므로 이를 추출하여 주메모리 객체의양쪽 어트리뷰트 모두에 복사하도록 get_attr_value() 함수들을 호출한다.
to_disk_object()(혹은 to_memory_object()) 메소드가 동적 바인딩이 되도록 구성하는 것, 즉 객체의 주 메모리 내 현재 모습에 해당되는 클래스에 정의된 to_disk_object()(혹은 to_memory_object())가 사용되도록 하는 것은 객체지향 프로그램에서 하위 클래스는 상위 클래스의 모습으로 변환되어 활용될 수 있기 때문이다. 즉, 주 메모리 객체의 모습이 실제 저장 객체에 있는 모든 어트리뷰트로 구성되는 것이 아니라 상위 클래스에 정의된 어트리뷰트로만 구성될 수 있으므로 이 때에는 상위 클래스의 변환 메소드가 호출되어야 하기 때문이다. 그러나 저장 객체에서 어트리뷰트의 실제 위치는 객체의 실제 클래스에 의해 결정되어야 하므로 put_attr_value()(혹은 get_attr_value())에서 이를 고려하여 수행한다.
도 7은 어트리뷰트 값을 추출하여 복사하는 함수인 put_attr_value()와 get_attr_value() 함수에 대한 동작 흐름을 나타낸 흐름도이다.
put_attr_value() 함수는 현재 이 함수를 수행 중인 객체의 주 메모리 내 표현된 모습에 해당되는 클래스 정보가 아닌 객체의 실제 클래스 정보를 단계(701)에서 얻는다. 여기서, 객체를 구별하는 객체 식별자에는 객체가 실제 속해있는 클래스 정보가 유지되는데, 이를 이용하여 객체의 실제 클래스 정보를 얻을 수 있다. 단계(702)에서 어트리뷰트 명으로 저장 객체에서 위치를 얻어, 단계(703)에서 주메모리 객체의 각 어트리뷰트 값을 저장 객체의 정확한 어트리뷰트 위치에 복사한다.
또한 저장 객체에서의 어트리뷰트의 실제 위치를 구할 때 어트리뷰트 명을 사용하므로써 새로운 어트리뷰트가 추가되어 실제 어트리뷰트의 위치가 변경되더라도 객체지향 프로그램이 동작되는 시점에 어트리뷰트의 위치를 얻으므로서, 새롭게 변경된 위치를 얻는다.
그러므로 어트리뷰트의 추가와 같은 스키마 변경이 발생한 경우에도 스키마 진화에 영향을 받지 않고 기존 응용 프로그램이 정상적으로 동작한다. 각각의 어트리뷰트별 값의 디스크내 복사 방법은 도 4에 설명한 방법에 준하여 실시한다.
마찬가지로 get_attr_value() 함수도 저장 객체로부터 정확한 해당 어트리뷰트 값을 추출하여 주 메모리 내에 복사하기 위해 현재 이 함수를 수행 중인 객체의 주메모리 내 표현된 모습에 해당되는 클래스 정보가 아닌 객체의 실제 클래스 정보를 단계(701)에서 얻는다. 단계(702)에서 저장 객체에서 어트리뷰트 명에 해당되는 어트리뷰트의 위치를 얻어, 단계(703)에서 저장 객체에서 어트리뷰트 값을 추출하여 주 메모리 어트리뷰트에 복사한다. 각각의 어트리뷰트별 값의 주 메모리내 구성 방법은 도 3에 설명한 방법에 준하여 실시한다.
상술한 바와 같이 객체지향 데이터베이스 시스템에 본 발명에서 제시한 영속 객체 관리 기법을 도입하므로서 객체지향 응용 프로그램의 객체에 지속성을 제공하기 위해 데이터베이스에 저장하며, 데이터베이스에 저장된 객체를 응용 프로그램에서 사용하기 위해 주메모리로 읽어 주메모리 객체모습으로 변환하는 것을 사용자가 직접 수행할 필요가 없고, 시스템에서 자동으로 지원하므로 사용의 용이성 및 객체의 일관성을 제공할 수 있다.
또한 제시한 객체 저장 및 변환 기법은 어트리뷰트 추가와 같은 스키마 진화에도 종래 응용 프로그램을 재 컴파일 및 수정할 필요 없이 사용 가능하며, 객체지향 응용 프로그램에서 채택하고 있는 계승 관계의 클래스간의 객체 변환도 용이하게 지원할 수 있는 등의 탁월한 효과를 발휘한다.

Claims (5)

  1. 객체지향 데이터베이스 시스템의 영속 객체 관리방법에 있어서,
    객체지향 응용 프로그램 수행 중 영속 객체 관련 요구사항을 접수하는 제1단계와,
    상기 제1단계로부터 접수된 정보를 영속 객체 생성 요구라고 판독하면, 주메모리내 객체를 생성하고 저장 객체로의 변환 메소드를 호출한 후, 데이터베이스에 저장하고 종료하는 제2단계와,
    상기 제1단계로부터 접수된 정보를 기존에 생성된 영속 객체를 접근하려는 요구라고 판독하면, 주메모리내에 해당 객체가 이미 읽어들여 있는가를 확인하는 제3단계와,
    상기 제3단계로부터 주메모리내에 해당 객체가 없으면, 주메모리내에 영역을 할당하고, 데이터베이스에서 저당 객체를 읽어, 주메모리 객체로의 변환메소드를 호출하여 변환 후, 주메모리 객체에 대한 포인터를 제공하고 종료하는 제4단계와,
    상기 제3단계로부터 주메모리내에 해당 객체가 있으면, 해당 주메모리 객체에 대한 포인터를 제공하고 종료하는 제5단계와,
    상기 제1단계로부터 접수된 정보를 주메모리내에 있는 영속 객체를 변경하려려는 요구라고 판독하면, 변경된 내용을 데이터베이스에 반영여부를 확인하는 제6단계와,
    상기 제6단계로부터 데이터베이스에 반영하기를 원하면, 저장 객체로의 변환메소드를 이용하여 변환한 후에, 데이터베이스에 반영하고 종료하는 제7단계와,
    상기 제6단계로부터 데이터베이스에 반영하기를 원하지 않으면, 바로 종료하는 제8단계와,
    상기 제1단계로부터 접수된 정보를 주메모리내 영속 객체삭제요구라고 판독하면, 주메모리내 해당 객체를 삭제하고 데이터베이스내 반영여부를 확인하는 제9단계와,
    상기 제9단계에서 데이터베이스에 반영하기를 원하면, 데이터베이스내 저장 객체도 삭제하고 종료하는 제10단계와,
    상기 제9단계로부터 데이터베이스에 반영하기를 원하지 않으면 바로 종료하는 제11단계를 포함하여 이루어지는 것을 특징으로 하는 객체지향 데이터베이스 시스템의 영속 객체 관리 방법.
  2. 제1항에 있어서, 상기 주 메모리 객체의 구조는,
    모든 값이 고정길이를 표현되는 타입은 어트리뷰트의 위치에 따라 연속되는 메모리내에 할당 및 저장하며,
    가변 길이로 표현되는 타입은 해당 어트리뷰트의 위치에 따라 연속되는 메모리내에 포인터 타입이나 구조체 타입으로 할당하여 실제 값을 저장하기 위해 할당된 메모리 영역을 직, 간접으로 포인팅하거나, 실제 자료가 저장된 디스크 상의 위치정보를 갖는 것을 특징으로 하는 객체지향 데이터베이스 시스템의 영속 객체 관리방법.
  3. 제1항에 있어서, 상기 저장 객체의 구조는,
    고정 길이로 표현되는 정보들은 해당 어트리뷰트 위치에 값을 저장하고,
    가변적으로 할당되어야 할 정보는 해당 어트리뷰트 위치에는 실제 저장된 곳에 대한 정보를 저장하고, 실제 정보는 마지막 어트리뷰트 다음에 연속적으로 저장하거나 다른 공간에 저장하고 계승시 어트리뷰트가 재정의되었거나, 같은 이름의 어트리뷰트가 존재하면, 상위 클래스의 해당 어트리뷰트를 저장하지 않고 하위 클래스의 어트리뷰트 정보만 디스크에 저장하는 것을 특징으로 하는 객체지향 데이터베이스 시스템의 영속 객체 관리 방법.
  4. 제1항에 있어서, 상기 사용되는 변환 메소드를 생성하는 단계는,
    클래스 자신 및 상위 클래스에 대한 모든 정보를 얻고, 관련된 클래스마다 각 클래스의 어트리뷰트 정보를 얻는 제1단계와,
    상기 제1단계로부터 어트리뷰트가 하위 클래스에서 재정의된 경우인지 여부를 확인하는 제2단계와,
    상기 제2단계로부터 재정의된 어트리뷰트이면, 하위 클래스의 어트리뷰트 정보를 얻는 제3단계와,
    상기 제2단계로부터 재정의된 어트리뷰트가 아니면, 계승받지 않은 어트리뷰트인지 여부를 확인하는 제4단계와,
    상기 제4단계로부터 같은 어트리뷰트가 하위 클래스에 이미 존재하여 계승하지 않은 어트리뷰트이면, 관련된 하위 클래스의 어트리뷰트 정보를 얻는 제 5 단계와,
    상기 제1, 제3 및 제5단계로부터 주메모리 객체의 어트리뷰트와 해당되는 저장 객체의 어트리뷰트 관계를 설정하는 제6단계와,
    상기 제6단계로부터 put_attr_value() 또는 get_attr_value() 함수를 구성하는 제7단계와,
    상기 제7단계로부터 모든 어트리뷰트에 대한 처리의 완료 여부를 확인하는 제8단계와,
    상기 제8단계로부터 모든 어트리뷰트 처리가 완료되면, 얻어진 정보로 객체지향 프로그래밍 시스템의 메소드 인터페이스를 동적 바인딩이 되도록 구성하고, put_attr_value() 또는 get_attr_value() 함수로 메소드의 구현을 파일에 구성하고 종료하는 제9단계와,
    상기 제8단계로부터 모든 어트리뷰트 처리가 완료되지 않으면, 상기 제1단계로 궤한되어 반복된 동작을 수행하는 제9단계를 포함하여 이루어진 것을 특징으로 하는 객체지향 데이터베이스 시스템의 영속 객체 관리 방법.
  5. 제4항에 있어서, 상기 put_attr_value() 또는 get_attr_value() 함수를 구성하는 단계는,
    객체의 실제 클래스 정보를 이용하여 어트리뷰트 명으로 저장 객체에서 위치를 얻는 제1단계와,
    상기 제1단계로부터 주메모리 객체의 각 어트리뷰트 값을 저장 객체의 정확한 어트리뷰트 위치에 복사하는 또는 저장 객체의 해당 위치에서 어트리뷰트 값을 추출하여 주메모리 객체의 어트리뷰트에 복사하는 제2단계를 포함하여 이루어진 것을 특징으로 하는 객체지향 데이터베이스 시스템의 영속 객체 관리 방법.
KR1019970059302A 1997-11-11 1997-11-11 객체지향데이터베이스시스템의영속객체관리방법 KR100287065B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970059302A KR100287065B1 (ko) 1997-11-11 1997-11-11 객체지향데이터베이스시스템의영속객체관리방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970059302A KR100287065B1 (ko) 1997-11-11 1997-11-11 객체지향데이터베이스시스템의영속객체관리방법

Publications (2)

Publication Number Publication Date
KR19990039270A KR19990039270A (ko) 1999-06-05
KR100287065B1 true KR100287065B1 (ko) 2001-04-16

Family

ID=37514915

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970059302A KR100287065B1 (ko) 1997-11-11 1997-11-11 객체지향데이터베이스시스템의영속객체관리방법

Country Status (1)

Country Link
KR (1) KR100287065B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100426620B1 (ko) * 2000-12-26 2004-04-13 한국전자통신연구원 주기억장치 상주 객체관계형 dbms 에서의 클래스 인스턴스 변경 방법
KR100520301B1 (ko) * 2001-10-13 2005-10-13 한국전자통신연구원 객체관계형 데이터베이스 관리 시스템 및 그것의 클래스인스턴스 삭제 방법

Also Published As

Publication number Publication date
KR19990039270A (ko) 1999-06-05

Similar Documents

Publication Publication Date Title
US5848419A (en) Methods and apparatus for providing transparent persistence in a distributed object operating environment
US5864864A (en) Method and apparatus for providing transparent persistent data support to foreign data types
US5729739A (en) Persistent object mapping system and method with abstract schema mapper
US6549955B2 (en) System and method for dynamic generation of remote proxies
US6493719B1 (en) Method and system for scripting for system management information
US7047524B1 (en) Object oriented ADN and method of converting a non-object oriented computer language to an object oriented computer language
US5561799A (en) Extensible file system which layers a new file system with an old file system to provide coherent file data
US7444619B2 (en) Inter-process communication using different programming languages
Shapiro et al. Persistence and migration for C++ objects
US6658461B1 (en) Method of, system for, and computer program product for providing a user interface for configuring connections between a local workstation file system and a remote host file system
US6301582B1 (en) System and method for storage of shared persistent objects
US6792606B2 (en) Method and apparatus for object persistence
US8191077B2 (en) Method for providing stand-in objects
JPH06259472A (ja) マルチメディア情報システム
JPH06231022A (ja) コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法
US6941309B2 (en) Object integrated management system
JP4541877B2 (ja) オブジェクトをプログラミングするための簡略化されたメモリの割当ての取消
US6829761B1 (en) Method and apparatus for managing shared memory in a run-time environment
US6886172B2 (en) Method for mapping procedural C++ code to java object-oriented classes
KR100287065B1 (ko) 객체지향데이터베이스시스템의영속객체관리방법
KR100259447B1 (ko) 객체 지향 서버에서 오브젝트 서비스를 이진 클래스에 부가하기 위한 시스템, 방법 및 제조사항
Crawley et al. Orthogonal persistence and Ada
Thompson et al. Comparisons between corba and dcom: architectures for distributed computing
Emmerich OMG/CORBA: An object-oriented middleware
Balter et al. Experience with object-based distributed computation in the GUIDE operating system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121206

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20131209

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee