KR20100080817A - 데이터베이스에 대한 액세스를 제어하는 기술 - Google Patents

데이터베이스에 대한 액세스를 제어하는 기술 Download PDF

Info

Publication number
KR20100080817A
KR20100080817A KR1020107009254A KR20107009254A KR20100080817A KR 20100080817 A KR20100080817 A KR 20100080817A KR 1020107009254 A KR1020107009254 A KR 1020107009254A KR 20107009254 A KR20107009254 A KR 20107009254A KR 20100080817 A KR20100080817 A KR 20100080817A
Authority
KR
South Korea
Prior art keywords
data
access
storage device
unit
moving
Prior art date
Application number
KR1020107009254A
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 KR20100080817A publication Critical patent/KR20100080817A/ko

Links

Images

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/25Integrating or interfacing systems involving database management systems
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

본 발명은 기억장치에 기억된 데이터베이스의 일부를 다른 기억장치로 이동시키는 경우, 데이터베이스 전체에 대해서 효율적으로 액세스하는 것에 관한 것이다. 데이터베이스에 대한 액세스를 제어하는 시스템에 있어서, 제 1의 기억장치에 기억된 데이터베이스 중, 사용자가 입력한 이동조건을 만족하는 데이터를, 제 2의 기억장치로 이동하는 데이터 이동부, 상기 데이터베이스에 대해 액세스 커맨드의 입력을 수신하는 커맨드 입력부, 및 입력된 상기 커맨드에 의해 액세스 되어야하는 데이터가 이미 상기 제 2의 기억장치로 이동되었는지 아닌지를, 입력된 상기 액세스 커맨드 및 입력된 상기 이동 조건에 기초하여 판단하는 이동 판단부, 및, 상기 이동 판단부의 판단에 기초하여, 상기 데이터베이스에 포함된 데이터 또는 상기 제 2의 기억장치로 이동된 데이터를 상기 액세스 커맨드에 따라 액세스하는 액세스부를 포함하는 시스템을 제공한다.

Description

데이터베이스에 대한 액세스를 제어하는 기술{TECHNIQUE OF CONTROLLING ACCESS OF DATABASE}
본 발명은, 데이터베이스에 대한 액세스를 제어하는 기술에 관한 것이다. 특히, 본 발명은, 복수의 기억 장치에 걸쳐 기억된 데이터베이스에 대한 액세스를 제어하는 기술에 관한 것이다.
다수의 데이터를 포함하는 데이터베이스를, 고속 처리의 기억 매체 및 저속 처리의 기억 매체로 구분하여 기억하는 방법이 제안되어 있다(특허문헌1을 참조). 이 방법은, 검색 빈도가 높은 데이터는 고속 처리의 기억 매체에, 검색 빈도가 낮은 데이터는 저속 처리의 기억 매체에 각각 기억시킴으로써, 데이터베이스에 대한 효율적인 액세스를 구현할 수 있다. 특허문헌1: 특허공개 2000-112983호 공보.
그러나, 특허문헌1의 기술에 있어서, 저속 처리의 기억 매체(예컨대 자기 테이프)로 액세스하기 위해서는, 그 기억 매체내의 데이터를 고속 처리의 기억 매체(예컨대 하드 디스크 장치)로 복사해야 한다(특허문헌1의 도 5의 S4 및 위에서 10번째 단락을 참조). 이 때문에, 데이터의 검색 지령을 발행하고나서 데이터가 참조 가능하게 될 때까지 대기시간이 발생한다.
또한, 최근에, 기업이 법령 준수를 지원해야하는 상황 때문에, 데이터를 변경 불가능한 상태로 장기간 보존해야 하는 경우가 있다. 이 경우, 사용자는, 하드 디스크 장치 등에 기억된 데이터의 일부를 선택해서, 이른바 WORM(Write Once Read Many) 미디어 등에 이동시킨다. 또한, 하드 디스크 장치의 빈공간이 많지 않은 경우에도, 거기에 기억된 일부 데이터를 WORM 미디어에 이동시킬 수 있다.
이와 같은 WORM 미디어도 데이터베이스의 일부로서 참조하는 것이 가능하다면, 하드 디스크 장치는 그 이동시킨 데이터를 계속 기억하고 있을 필요가 없으므로, 하드 디스크 장치 등의 필요 용량을 삭감할 수 있어서 효율이 좋게 된다. 그러나, 비특허문헌1에는, 하드 디스크 장치로부터 필요한 데이터를 WORM 미디어에 이동시키는 것, 그리고, 이동시킨 데이터에 대해 어떻게 액세스할 것인가에 관해서는 기재되어 있지 않다.
따라서 본 발명은, 상기 과제를 해결할 수 있는 시스템, 방법 및 프로그램을 제공하는 것을 목적으로 한다. 이 목적은 특허청구범위에서 독립항에 기재된 발명에 의해 달성된다. 또 종속항은 본 발명의 한층 더 바람직한 구체적 실시예를 기재한다.
상기 과제를 해결하기 위해서, 본 발명의 일 실시예는, 데이터베이스에 대한 액세스를 제어하는 시스템에서, 제 1의 기억 장치에 기억된 데이터베이스 중, 사용자가 입력한 이동 조건을 만족하는 데이터를, 제 2의 기억 장치로 이동시키는 데이터 이동부, 상기 데이터베이스에 대한 액세스 커맨드의 입력을 수신하는 커맨드 입력부, 입력된 상기 액세스 커맨드에 의해 액세스되어야 하는 데이터가, 이미 상기 제 2의 기억 장치로 이동되었는지 안되었는지를, 입력된 상기 액세스 커맨드 및 입력된 상기 이동 조건에 기초하여 판단하는 이동 판단부, 상기 이동 판단부에 의한 판단에 기초하여, 상기 데이터베이스에 포함된 데이터 또는 상기 제 2의 기억 장치로 이동된 데이터를 상기 액세스 커맨드에 따라 액세스하는 액세스부를 포함하는 시스템을 제공한다. 또한, 상기 시스템에 의해서 데이터베이스에 대한 액세스를 제어하는 방법, 및, 상기 시스템으로 컴퓨터를 실행시키는 프로그램을 제공한다. 또한, 상기 발명의 일 실시예는, 본 발명의 필수적인 특징들의 전부를 열거한 것이 아니며, 또한, 이 특징들의 일부로 구성된 서브 콤비네이션도 본 발명에 포함될 수 있다.
도 1은, 본 실시예에 따른 시스템(10)의 기능 구성을 나타낸다.
도 2는, 본 실시예에 따른 시스템(10)이 데이터베이스로부터 데이터를 이동하고, 그 다음 이동한 데이터에 액세스하는 처리의 흐름을 나타낸다.
도 3은, 도 2의 S220에서의 처리의 흐름의 상세를 나타낸다.
도 4는, 본 실시예에 따른 제 1의 기억 장치(150)에 기억된 데이터베이스의 한 예를 나타낸다.
도 5는, 본 실시예에 따른 제 2의 기억장치(160)에 대응하여 생성한 가상(假想) 테이블의 한 예를 나타낸다.
도 6은, 본 실시예에 따른 제어용 기억 장치(110)에 기억된, 데이터 이동 후의 이동 조건 및 대응 정보를 나타낸다.
도 7은, 본 실시예에 따른 제 1의 기억장치(150)에 기억된, 데이터 이동 후의 데이터베이스의 한 예를 나타낸다.
도 8은, 본 실시예에 따른 제 2의 기억 장치(160)에 기억된, 데이터 이동 후의 가상 테이블의 한 예를 나타낸다.
도 9는, 도 2의 S280에서의 처리의 흐름의 상세를 나타낸다.
도 10은, 본 실시예에 따른 액세스부(140)에 의해 변경할 수 있는 액세스 커맨드의 한 예를 나타낸다.
도 11은, 도 2의 S240에서의 처리의 흐름의 상세를 나타낸다.
도 12는, 본 실시예에 따른 제어용 기억 장치(110)에 기억된, 데이터를 추가하여 이동한 후의 이동 조건 및 대응 정보를 나타낸다.
도 13은, 본 실시예에 따른 제 1의 기억 장치(150)에 기억된, 데이터를 추가하여 이동한 후의 데이터베이스의 한 예를 나타낸다.
도 14는, 본 실시예에 따른 제 2의 기억 장치(160)에 기억된, 데이터를 추가하여 이동한 후의 가상 테이블의 한 예를 나타낸다.
도 15는, 본 실시예에 따른 액세스부(140)의 다른 예를 나타낸다.
도 16은, 본 실시예에 따른 제어 시스템(10)이 새롭게 작성한 다른 테이블에 데이터를 추가하여 이동하는 처리의 흐름을 나타낸다.
도 17은, 본 실시예에 따른 제어용 기억 장치(110)에 기억된, 새롭게 작성한 다른 테이블로 데이터를 이동한 후의 이동 조건 및 대응 정보를 나타낸다.
도 18은, 본 실시예에 따른 제 1의 기억 장치(150)에 기억된, 새롭게 작성한 다른 테이블로 데이터를 이동한 후의 데이터베이스의 한 예를 나타낸다.
도 19는, 본 실시예에 따른 제 2의 기억 장치(160)에 기억된, 새롭게 작성한 다른 테이블로 데이터를 이동한 후의 데이터베이스의 한 예를 나타낸다.
도 20은, 본 실시예에 따른 제 3의 기억 장치(166)에 기억된, 새롭게 작성한 다른 테이블로 데이터를 이동한 후의 데이터베이스의 한 예를 나타낸다.
도 21은, 본 실시예에 따른 제어 시스템(10)으로 기능하는 컴퓨터(500)의 하드웨어 구성의 한 예를 나타낸다.
이하, 발명의 실시예를 통해서 본 발명을 설명하겠지만, 이하의 실시예는 특허청구범위에 관한 발명을 한정하는 것이 아니며, 또한 실시예에서 설명되는 특징들의 조합 전부가 발명의 해결 수단에 필수적으로 있어야한다는 것은 아니다.
도 1은, 본 실시예에 따른 제어 시스템(10)의 기능 구성을 나타낸다. 제어 시스템(10)은, 예컨대 하드 디스크 드라이브 등에 의해 구현되는 제 1의 기억 장치(150)과, 예컨대 테이프 기억 장치 또는 광 자기 디스크 드라이브 등에 의해 구현되는 제 2의 기억 장치(160)을 포함한다. 또한, 제 2의 기억 장치(160)은, 예컨대 IBM 코포레이션의 DR550 등의, 데이터를 장기적으로 보존하기 위한 전용 장치로 할 수도 있다.
제어 시스템(10)은, 사용자로부터 수신한 데이터의 이동 지시에 따라, 제 1의 기억 장치(150)에 기억된 데이터베이스의 일부를 제 2의 기억 장치(160)으로 이동시킨다. 본 실시예에서 제어 시스템(10)은, 그와 같이 데이터를 이동시킨 후라도, 사용자로부터 수신한 액세스 커맨드에 따라 제 1의 기억 장치(150) 및/ 또는 제 2의 기억 장치(160)에 적절하게 액세스하는 것을 목적으로 한다.
제어 시스템(10)은, RAM 등의 주 기억 장치에 의해 구현되는 제어용 기억 장치(110) 및 커맨드 캐시(125)를 포함한다. 또한, 제어 시스템(10)은, CPU 또는 마이크로 컴퓨터 등의 연산 장치가 RAM 등의 주 기억 장치로부터 프로그램을 읽어서 실행할 때, 데이터 이동부(100), 커맨드 입력부(120), 이동 판단부(130), 액세스부(140), 및 설정부(170)도 동작하도록 한다. 이 프로그램은, IBM 코포레이션의 DB2 서버에 포함된 기능을 확장해서 개발될 수 있다. 또한, 이 프로그램의 제 2 제어부(145)는, IBM 코포레이션의 Federation Server의 non-relational wrapper SDK를 사용해서 개발될 수 있다.
데이터 이동부(100)은, 제 1의 기억 장치(150)에 기억된 데이터베이스 중, 사용자가 입력한 이동 조건을 만족하는 데이터를 제 2의 기억 장치(160)으로 이동시킨다. 구체적으로 설명하면, 제 1의 기억 장치(150)은, 예컨대 테이블 구조의 데이터베이스를 기억하고 있다. 이 테이블을 제 1의 테이블이라 한다. 그 다음, 데이터 이동부(100)은, 이동 조건으로서, 제 1의 테이블내에 칼럼명, 및, 그 칼럼에 포함될 수 있는 값의 범위를 입력으로 수신한다. 그러면, 데이터 이동부(100)은, 그 칼럼에 포함될 수 있는 값의 범위에 해당하는 레코드를, 제 1의 테이블로부터 읽는다.
그 다음, 데이터 이동부(100)은, 읽은 그 레코드를 포함하는 새로운 제 2의 테이블을 생성하여 제 2의 기억 장치(160)에 저장한다. 제 2의 기억 장치(160)은, 예컨대 광 자기 디스크인 WORM 미디어(165)에, 새로운 제 2 테이블을 저장한다. 제 2 테이블은, WORM 미디어(165)내의 복수의 파일(162-1~N)에 분산하여 기억될 수 있다. 이와 동시에, 데이터 이동부(100)은, 읽혀진 그 레코드를 제 1의 테이블로부터 삭제한다. 또한, 데이터 이동부(100)은, 데이터를 이동하기 위해 입력된 이동 조건을 제어용 기억 장치(110)에 저장한다.
제어용 기억 장치(110)은, 상기 이동 조건 등, 각종의 제어용 데이터를 기억하기 위해서 설정되어 있다. 기억할 이동 조건은, 예컨대, 상기의 예와 같이, 조건 설정의 대상이 되는 칼럼의 칼럼명, 및, 그 칼럼내의 데이터가 만족시켜야 할 값의 범위이다. 또한, 이동 조건은, 복수의 칼럼 및 각각의 칼럼내의 데이터가 만족시켜야 할 값의 범위의 조합으로 될 수도 있다.
커맨드 입력부(120)은, 데이터베이스에 대한 액세스 커맨드의 입력을 수신한다. 예컨대, 액세스 커맨드는, 액세스의 종류, 액세스 대상으로 하는 테이블의 지정, 및, 액세스 대상으로 하는 레코드가 만족시켜야 할 조건들을 포함한다. 액세스의 종류는, 참조, 갱신 또는 삽입 등이다. 한 예로서, 이 액세스 커맨드는, 예컨대 SQL(Structured Query Language)등의 언어로 기술될 수 있다.
이동 판단부(130)은, 입력된 그 액세스 커맨드에 의해 액세스되어야 하는 데이터가, 이미 제 2의 기억 장치(160)으로 이동되었는지 안되었는지를, 입력된 그 액세스 커맨드 및 입력된 그 이동 조건에 기초하여 판단한다. 더 구체적으로 설명하면, 먼저, 이동 판단부(130)은, 액세스 커맨드의 입력에 응답하여 이동 조건을 커맨드 입력부(120)으로부터 읽는다. 그 다음, 이동 판단부(130)은, 그 액세스 커맨드에 기초하여, 그 액세스 커맨드에 의해 액세스되어야 하는 데이터가, 이동 조건을 만족하는지 아닌지를 판단한다.
액세스되어야 하는 데이터가 이동 조건을 만족하는 것을 조건으로, 이동 판단부(130)은, 그 데이터가 제 2의 기억 장치(160)에 이미 이동되었다고 판단한다. 구체적으로 예를 들어서 설명하면, 이동 조건이, 어떤 칼럼의 수치가 정수 10000 이상인 경우, 그 액세스 커맨드에 포함된 조건이, 그 칼럼의 수치가 정수 20000 이상이라는 조건이면, 액세스되어야 하는 데이터는 이동되었다고 판단한다.
한편, 이동 조건이, 어떤 칼럼의 수치가 정수 10000 이상인 경우, 그 액세스 커맨드에 포함되는 조건이, 그 칼럼의 수치가 정수 9000 이상이면, 액세스되어야 하는 데이터는 이동되지 않았다고 판단한다. 또, 이동 조건이, 어떤 칼럼의 수치가 정수 10000 이상인 경우, 그 액세스 커맨드에 포함되는 조건이, 그 칼럼의 수치가 정수 5000 이상이면, 액세스되어야 하는 데이터는 일부 이동되었다고 판단한다. 이와 같이, 이동 판단부(130)은, 단순히 데이터가 이동되었는지 아닌지 뿐만 아니라, 일부의 데이터가 이동되었는지 아닌지에 대해서도 판단할 수 있다.
액세스부(140)은, 이동 판단부(130)에 의한 판단에 기초하여, 제 1의 기억 장치(150)에 기억된 데이터 및 제 2의 기억 장치(160)에 이동된 데이터의 적어도 한 쪽을, 액세스 커맨드에 따라 액세스한다. 구체적으로 설명하면, 액세스부(140)은, 입력된 그 액세스 커맨드를 변경하여, 제 1의 기억 장치(150) 또는 제 2의 기억 장치(160)에 액세스할 수 있다. 한 예로서, 액세스되어야 하는 데이터가 제 2의 기억 장치(160)에 이미 이동된 경우, 액세스부(140)은, 액세스 커맨드내에 액세스 대상으로 하는 테이블의 지정을, 제 1의 기억 장치(150)내의 제 1의 테이블로부터, 제 2의 기억 장치(160)내의 제 2의 테이블로 변경할 수 있다.
다른 예에서, 액세스되어야 하는 데이터가 제 1의 기억 장치(150) 및 제 2의 기억 장치(160) 모두에 걸쳐있는 경우에, 액세스부(140)은, 액세스 커맨드내의 액세스 대상으로 하는 테이블의 지정을, 제 1의 테이블로부터, 제 1의 테이블 및 제 1의 테이블을 결합한 테이블로 변경할 수 있다. 액세스 커맨드가 SQL의 경우, 그와 같은 테이블의 결합은「UNION ALL」커맨드에 의해 표시된다. 이로 인해, 제 1의 기억 장치(150)내의 데이터베이스 및 이미 이동된 데이터 각각에 대해 적절하게 액세스하는 것이 가능하다.
또한, 액세스부(140)은, 기본적인 기능으로서 SQL 등으로 작성된 액세스 커맨드를, 컴파일하여, 제 1의 기억 장치(150) 또는 제 2의 기억 장치(160)에 의해 직접 해석가능한 커맨드로 변환한 후, 컴파일을 마친 커맨드를 제 1의 기억 장치(150) 및 제 2의 기억 장치(160)에 대해 발행한다. 커맨드 캐시(125)는, 그와 같은 컴파일 처리를 효율적으로 하기 위해서, 과거에 입력된 액세스 커맨드와, 현재 액세스 커맨드를 액세스부(140)이 컴파일하여 데이터베이스에 대해 발행한 커맨드(컴파일을 마친 커맨드)를, 대응하여 기억시킨다.
여기서, 컴파일을 마친 커맨드는, 이른바 액세스 플랜이라 하며, 어떠한 처리를 어떠한 순서로 행할지, 뿐만 아니라, 어떤 기억 장치로부터 어떤 정보를 취득해야 하는가를 보여줄 수 있다. 그 예는 아래와 같다.
단계(1): 칼럼(A)의 값이 5000 에서 10000 까지의 데이터를 제 1의 기억 장치(150)으로부터 취득한다.
단계(2): 칼럼(A)의 값이 10000 이상의 데이터를 제 2의 기억 장치(160)으로부터 취득한다.
단계(3): .......(이후 같은 처리가 계속된다)
그 다음, 액세스부(140)은, 커맨드 입력부(120)이 새롭게 입력한 액세스 커맨드가, 이미 커맨드 캐시(125)에 기억되어 있는 경우, 그 액세스 커맨드에 대응하여 커맨드 캐시(125)에 기억되어있는 컴파일을 마친 커맨드를 읽는다. 그 경우, 액세스부(140)은, 그 액세스 커맨드를 다시 한번 컴파일하지 않고, 읽은 그 컴파일을 마친 커맨드가 보여주는 복수의 처리를 차례로 실행한다. 그 결과, 필요에 따라 제 1의 기억 장치(150) 및 제 2의 기억 장치(160)은 액세스된다. 이 때문에, 이미 캐시되고 있는 일부 커맨드에 대해서는 컴파일 처리가 불필요하게 되기 때문에, 커맨드 발행에서 액세스 완료까지의 대기 시간을 단축할 수 있다.
단, 데이터 이동부(100)이 데이터를 새롭게 이동시키는 경우에 있어서는, 이동 전후에 커맨드 입력부(120)이 만약 같은 액세스 커맨드의 입력을 수신했다고 해도, 액세스부(140)이 실제로 발행하는 컴파일을 마친 커맨드가 다른 경우가 있다. 이 때문에, 데이터 이동부(100)은, 데이터를 이동할 때마다 커맨드 캐시(125)를 클리어한다. 클리어하는 부분은, 새롭게 입력한 이동 조건에 대한 부분만으로 하는 것이 바람직하다.
설정부(170)은, 제 2의 기억 장치(160)에 이미 이동한 데이터에 대한 액세스를 허가할지 어떨지를, 사용자마다 설정한다. 예컨대, 어떤 사용자(1)에 대해, 이동한 데이터에 대한 액세스를 허가하지 않는 경우에 있어서, 그 사용자(1)로부터, 이동된 데이터에 대한 액세스 커맨드가 발행되어도, 액세스부(140)은, 에러 응답으로 받는다. 또한, 이 사용자(1)로부터, 제 2의 테이블을 액세스 대상으로 명시한 액세스 커맨드가 입력되어도, 액세스부(140)은, 에러 응답으로 받는다.
그러나 이와 달리, 이동된 데이터에 대한 액세스를 허가하지 않는 경우에 있어서, 그 사용자(1)로부터, 이동된 데이터에 대한 액세스 커맨드가 발행되면, 액세스부(140)은, 그 이동된 데이터를 무시하고 액세스 가능한 데이터에만 액세스할 수도 있다. 예컨대, 테이블(T1)에서 테이블(T2)에 일부 데이터가 이동된 경우에 있어서,「SELECT * FROM T1」이라고 하는 커맨드가 발행되면, 테이블(T2)에 이동된 데이터는 무시되고, 테이블(T1)에 이동된 데이터만 액세스될 수도 있다.
제 1의 기억 장치(150) 및 제 2의 기억 장치(160)에 대한 액세스는, 액세스 커맨드의 변경뿐만 아니라, 액세스부(140)이 포함하는 체크 제약이라는 기능과 함께 구현될 수도 있다. 구체적으로 설명하면, 액세스부(140)은, 제 1 제어부(142) 및 제 2 제어부(145)를 포함한다.
제 1 제어부(142)는, 제 1의 기억 장치(150)에 대응하여 구성되어 있다. 제 1 제어부(142)는, 입력된 액세스 커맨드에 의해 액세스되어야 하는 데이터가, 사전에 설정된 제 1 체크 제약을 만족하는지 아닌지를 판단하여, 상기 체크 제약을 만족하는 것을 조건으로, 제 1의 테이블에 액세스를 허가하고, 상기 체크 제약을 만족하지 않는 것을 조건으로, 제 1의 테이블에 액세스를 금지한다.
제 2 제어부(145)는, 제 2의 기억 장치(160)에 대응해서 구성되어 있다. 제 2 제어부(145)는, 입력된 액세스 커맨드에 의해 액세스되어야 하는 데이터가, 사전에 설정된 제 2 체크 제약을 만족하는지 아닌지를 판단하여, 상기 체크 제약을 만족하는 것을 조건으로, 제 2의 테이블에 액세스를 허가하고, 상기 체크 제약을 만족하지 않는 것을 조건으로, 제 2의 테이블에 액세스를 금지한다.
즉, 액세스 커맨드에 포함되는 액세스 조건은, 제 1 및 제 2 체크 제약과 각각 차례로 비교되어, 어느 쪽인지를 만족하면, 만족하는 체크 제약에 대응하는 기억 장치가 자동적으로 선택되어 그것에 대한 액세스가 이루어진다. 예컨대, 제 1 체크 제약이「칼럼(C1)<1000」이고, 또한, 제 2 체크 제약이「칼럼(C1)>=1000」이며, 입력된 SQL의 SELECT 커맨드 등에서 액세스 조건 부분이「C1<2000」이라면, 제 1의 기억 장치(150)으로부터 해당하는 모든 데이터가 취득되고, 또한 제 2의 기억 장치(160)으로부터 칼럼(C1)이 2000 미만의 데이터가 취득된다. 한편, 정보를 참조하는 커맨드에서 액세스 조건 부분이「C1<500」이라면, 제1 기억장치(150) 중 칼럼 C1<500 의 데이터가 취득되며, 제 2의 기억 장치(160)으로부터 데이터는 취득되지 않는다.
또한, 어느 쪽의 체크 제약도 만족되지 않는다면, 액세스에 실패했다는 것을 뜻하는 에러가 나온다. 예컨대, 입력된 커맨드가 정보의 참조를 표시하는데(SQL의 SELECT문), 해당하는 데이터가 없는 경우, 레코드 없이 정상적으로 종료한다. 입력된 커맨드가 정보의 삽입이 있는 경우에는, 어느 쪽이든지 하나만 해당하지 않아도 에러가 된다. 또한, 갱신, 삭제는 해당하는 데이터가 없는 경우에, 에러가 된다. 이러한 에러 발생의 조건들은, 기존의 데이터베이스의 설계에 기초하여 정할 수 있다.
액세스부(140)은, 이들 체크 제약들을 이용하여 제 1의 기억 장치(150) 및 제 2의 기억 장치(160) 각각에 존재하는 적절한 데이터에 액세스한다. 구제적으로 설명하면, 데이터 이동시, 데이터 이동부(100)은, 입력된 이동 조건을 제 2 체크 제약으로 하여 제 2의 제어부(145)의 제 2 체크 제약 기억부(148)에 설정한다. 그리고, 데이터 이동부(100)은, 입력된 이동 조건의 논리 부정을 제 1 체크 제약으로 하여 제 1의 제어부(142)의 제 1 체크 제약 기억부(146)에 설정한다. 또한, 전술한 바와 같이, 액세스부(140)은, 입력된 액세스 커맨드내 액세스 대상으로 할 테이블의 지정을, 제 1의 테이블 대신, 제 1의 테이블 및 제 2의 테이블을 결합한 테이블로 한다. 그렇게 하면, 이후에 입력되는 액세스 커맨드에 대해서는, 그것에 포함되는 액세스 조건에 따라, 제 1의 기억 장치(150) 및 제 2의 기억 장치(160)의 어느 쪽 또는 쌍방 모두를 액세스 대상으로서 적절하게 선택하게 된다.
도 2는, 본 실시예에 따른 제어 시스템(10)이 데이터베이스에서 데이터를 이동하고, 이동한 데이터에 액세스하는 처리의 흐름을 나타낸다. 우선, 데이터 이동부(100)은, 제 1의 기억 장치(150)에 기억된 데이터베이스의 일부를 제 2의 기억 장치(160)에 이동시키는 지시를 수신했는지 안했는지를 판단한다(S200). 이동시키는 지시란, 예컨대, 이동원(移行 元: 이동 출발지)이되는 데이터베이스의 테이블(본 실시예에 있어서는 T1), 이동 조건(예컨대, 칼럼과 그 칼럼의 수치의 범위), 및, 이동처(移行 先: 이동 도착지)의 데이터를 읽기 전용으로 할 것인지 아닌지에 대한 설정을 포함한다.
이동시키는 지시를 수신한 것에 응답하여(S200: YES), 데이터 이동부(100)은, 이동원의 테이블에서 그 이동 지시가 신규인지, 즉, 과거에 그 이동원의 테이블로부터 어떤 데이터도 아직 이동되어 있지 않은지를 판단한다(S210). 그 이동 지시가 신규라면(S210: YES), 데이터 이동부(100)은, 제 1의 기억 장치(150)에 기억된 데이터베이스 중, 사용자가 입력한 이동 조건을 만족하는 데이터를, 제 2의 기억 장치(160)으로 이동한다(S220). 이 처리의 구체적인 예를, 도 3 내지 도 8을 참조하여 설명한다.
도 3은, 도 2의 S220에서의 처리의 흐름을 상세하게 나타낸다. 도 4는, 본 실시예에 따른 제 1의 기억 장치(150)에 기억된 데이터베이스의 한 예를 나타낸다. 도 3의 처리 시작 시점에서, 도 4에 나타낸 것과 같이, 제 1의 기억 장치(150)은, 예컨대, 릴레이셔널 데이터베이스 등의, 테이블 구조의 데이터베이스를 기억하고 있다.
제 1의 기억 장치(150)은, 테이블(T1)을 기억하고 있다. 테이블(T1)은, 칼럼(C1 및 C2)을 포함한다. 칼럼(C1)의 데이터 형식은 날짜(Date)형식이며, 칼럼(C2)의 데이터 형식은 문자열(Char)형식이다.
도 4에는 테이블(T1) 중 3 개의 레코드를 나타낸다. 제 1의 레코드는, 칼럼(C1)에「1999-06-15」을 포함하고, 칼럼(C2)에「AAA1」을 포함한다. 제 2의 레코드는, 칼럼(C1)에「2000-08-22」을 포함하고, 칼럼(C2)에「AAA2」을 포함한다. 제 3의 레코드는, 칼럼(C1)에「2002-12-01」을 포함하고, 칼럼(C2)에「AAA3」을 포함한다.
도 3으로 돌아가서 설명한다. 먼저, 데이터 이동부(100)은, 제 2의 기억 장치(160)에 이동한 데이터의 데이터 구조를 규정하기 위한 제 2의 테이블을 생성한다(S300). 이 테이블을 가상(假想) 테이블이라고 한다. 이 가상 테이블의 한 예를 도 5에 나타내었다.
도 5는, 본 실시예에 따른 제 2의 기억 장치(160)에 대응하여 생성한 가상(假想) 테이블의 한 예를 나타낸다. 이 가상 테이블의 이름은 T1_WORM이다. 이 가상 테이블은, 테이블(T1)과 똑같이, 칼럼(C1 및 C2)을 포함한다. 칼럼(C1)의 데이터 형식은 날짜(Date)형식이며, 칼럼(C2)의 데이터 형식은 문자열(Char)형식이다. 단, 테이블(T1_WORM)은 아무런 레코드를 포함하지 않는다.
예컨대, IBM 코포레이션의 Federation Server의 기능을 사용하여, 제 2의 기억 장치(160)(여기에서는 예컨대 IBM 코포레이션의 제품 DR550)에 액세스하기 위한 wrapper을 개발하여, IBM 코포레이션의 DB2 서버에 대하여 이하와 같은 커맨드를 차례로 발행하면, t1_worm이라고 하는 가상(假想) 테이블이 생성된다. 이 테이블을 사용해서 DR550에 액세스하는 것이 가능하다.
create wrapper worm_wrapper library ’db2
qgjava. dll’ options(unfenced_wrapper_class ‘UnfencedTapeWrapper’);
create server worm_sever wrapper worm_wrapper options (target ‘DR550’);
create nickname user1. t1_worm for sever worm_sever options (base_schema ‘USER1’, base_table ‘T1’, num_worm_file_records ‘100’, cache_dir ‘/var/cache/db1/t1_worm’, cache_size ‘1G’);
도 3으로 돌아가서 설명한다. 다음에, 데이터 이동부(100)은, 입력을 받은 데이터 이동 지시에 기초하여, 각종의 정보를 등록한다(S310). 예컨대, 데이터 이동부(100)은, 입력된 이동 조건을 제 2 체크 제약으로 하여 제 2 제어부(145)에 설정한다. 또한, 데이터 이동부(100)은, 그 이동 조건을 제어용 기억 장치(110)에 저장함과 동시에, 이동원인 테이블(T1) 및 이동처인 테이블(T1_WORM)에 대응하는 대응 정보를 제어용 기억 장치(110)에 저장한다. 그리고, 데이터 이동부(100)은, 이동처의 데이터에 읽기 전용의 속성을 설정하는 지시를 받은 경우에는, 테이블(T1_WORM)에 읽기 전용 속성을 설정할 수 있다. 그 한 예를 도 6에 나타내었다.
도 6은, 본 실시예에 따른 제어용 기억 장치(110)에 기억된, 데이터 이동 후의 이동 조건 및 대응 정보를 나타낸다. 제어용 기억 장치(110)은, 이동 조건으로「C1<=1999-12-31」을 기억한다. 또한, 제어용 기억 장치(110)은, 대응 정보로서 베이스 테이블과 이동처 테이블의 대응관계를 기억하고 있다. 베이스 테이블은, USER. T1이며, 이동처 테이블은, USER. T1_WORM이다. 이 때문에, 액세스부(140)은, 테이블(T1)에 대한 액세스 커맨드를, 테이블(T1 및 T1_WORM)에 대한 액세스 커맨드로 간주하는 것이 가능하다. 또한, 제어용 기억 장치(110)은, 읽기 전용 속성 및 첨부(Attach) 유효 속성도 기억하고 있다. 읽기 전용 속성은, 이동처 테이블의 액세스 제한을 나타낸다. 첨부 유효 속성은, 상기 대응 정보에 의해 대응시키는 것이 유효인지 아닌지를 나타낸다.
이상의 처리를, 예컨대 IBM 코포레이션의 DB2 서버용의 커맨드를 확장해서 구현하면, 이하와 같이 된다. 우선, 데이터 이동처 가상(假想) 테이블의 작성에 관해서는, 이미 예시한 그대로이다.
데이터 이동 조건의 등록(T1_WORM에 대해 도 6에 나타낸 각종 정보를 정의한다).
alter nickname user1. t1_worm add attach info (base_schema‘USER1’, base_table‘ T1’, range_key‘C1’, ending‘1999-12-31’, readonly‘Y’);
T1_WORM 테이블의 체크 제약을 등록한다(상기에서 등록한 이동 조건을, 체크 제약으로 하여 등록한다).
alter nickname user1. t1_worm add constraint c1 check (c1<=’1999-12-31’) not enforced;
T1 테이블을 잠금(lock)한다.
lock table user1. T1 in execlusive mode;
T1 테이블의 이동 대상 데이터를 T1_WORM 테이블에 이동한다(도 6의 정보를 사용하여 데이터를 이동한다.)
archive table user1. t1;
T1 테이블의 체크 제약을 등록한다(도 6의 이동 조건과 반대의 조건을 T1 테이블의 체크 제약으로하여 등록한다)
alter table user1. t1 add constraint c1 check(c1>’1999-12-31’);
T1 테이블에 T1_WORM 테이블을 첨부(Attach)한다(도 6의 첨부 유효 속성을, 「무효」에서 「유효」로 변경한다)
alter table user1. t1 attach table user1. t1_worm;
T1 테이블과 T1_WORM 테이블에 관련된 SQL문(文)(structured query language statement)의 캐시를 클리어한다
flush statement cache for table user1. t1;
flush statement cache for table user1. t1_worm;
상기 설정 정보를 확정하고, T1 테이블의 잠금(lock) 해제를 행한다
commit;
또한, 이상의 각종 기능은 이상과 같은 복수의 커맨드에 의해 구현될 수 있고, 이들의 기능을 한꺼번에 구현하기 위한 단 하나의 커맨드에 의해서 구현될 수도 있다.
또한, 데이터 이동부(100)은, 이동한 데이터를 제 2의 기억 장치(160)에서 복수의 파일로 분할하여 보존할 수 있다. 이들 복수의 파일 각각에는, 복수의 부분 데이터 각각이 저장된다. 그래서 이들 복수의 부분 데이터는, 각각 다른 조건을 만족한다. 예컨대, 어떤 파일에는, 칼럼(C1)이 1998-01-01부터 1998-12-31까지의 범위에 존재하는 레코드가 저장되고, 다른 파일에는, 칼럼(C1)이 1997-01-01에서 1997-12-31까지의 범위에 존재하는 레코드가 저장될 수 있다. 이 경우에, 데이터 이동부(100)은, 이와 같은 각 부분 데이터가 만족해야 하는 조건을 제어용 기억 장치(110)에 기억시킬 수 있다.
도 3으로 돌아가서 설명한다. 그 다음에, 데이터 이동부(100)은, 배타(排他) 제어에 의해 이동원의 데이터베이스를 잠금(lock)하여 액세스를 금지한다(S320). 그리고, 데이터 이동부(100)은, 제 1의 기억 장치(150)에 기억된 데이터베이스 중 이동 조건을 만족하는 데이터를 제 2의 기억 장치(160)에 이동한다(S330). 이동된 데이터는, 필요에 따라 암호화되거나, 또는, 데이터 압축될 수 있다. 또한, 데이터 이동부(100)은, 입력된 이동 조건의 논리 부정을 제 1 체크 제약으로 하여 제 1 제어부(142)에 설정한다(S340).
데이터 이동부(100)은, 다음으로 이동원의 테이블을 이동처의 테이블에 첨부(Attach)한다(S350). 첨부란, 대응관계를 나타내는 대응 정보를 유효로 설정하는 것을 말하는데, 구체적으로는 상기 도 6의 첨부 유효 속성을 유효로 설정하는 것이다. 이와 동시에, 데이터 이동부(100)은, 커맨드 캐시(125)를 클리어한다(S360). 그리고, 데이터 이동부(100)은, 데이터베이스를 잠금해제(unlock)하여 액세스를 허가한다(S370). 이상의 처리에 의해 데이터가 제 1의 기억 장치(150)으로부터 제 2의 기억 장치(160)에 이동한 후의 제 1의 기억 장치(150) 및 제 2의 기억 장치(160)의 예를 도 7 및 도 8에 나타내었다.
도 7은, 본 실시 예에 따른 제 1의 기억 장치(150)에 기억된, 데이터 이동 후의 데이터베이스의 한 예를 나타낸다. 제 1의 기억 장치(150)은, C1의 수치가 1999-12-31 보다 새로운 날짜를 나타낸 레코드를 기억하고, 상기 수치가 1999-12-31 이전의 날짜를 나타내는 레코드는 제 1의 기억 장치(150)에서 삭제되어 있다. 또한, 제 1 체크 제약 기억부(146)은, 이동 조건의 논리 부정인「C1>1999-12-31」을 제 1 체크 제약으로 기억한다.
도 8은, 본 실시예에 따른 제 2의 기억 장치(160)에 기억된, 데이터 이동 후의 가상 테이블의 한 예를 나타낸다. 제 2의 기억 장치(160)은, C1의 수치가 1999-12-31 이전의 날짜를 나타내는 레코드를 기억하고, 상기 수치가 1999-12-31보다도 새로운 날짜를 나타내는 레코드는 제 2의 기억 장치(160)에 이동되어 있지 않다. 또한, 제 2 체크 제약 기억부(148)은, 이동 조건인「C1<=1999-12-31」을 제 2 체크 제약으로 기억한다.
도 2로 돌아가서 설명한다. 한편, 이동 지시를 수신하고 있지 않은 경우에는, 커맨드 입력부(120)은, 데이터베이스에 대한 액세스 커맨드의 입력을 수신했는지 안했는지를 판단한다(S260). 액세스 커맨드의 입력을 수신한 것에 응답하여(S260: YES), 액세스부(140)은, 제 1의 기억 장치(150) 및 제 2의 기억 장치(160) 중 적어도 하나에 대해 액세스한다(S280). 그 처리의 상세를 도 9에 나타내었다.
도 9는, 도 2의 S280에서의 처리의 흐름을 나타낸다. 우선, 액세스부(140)은, 액세스 커맨드를 발행한 사용자에 대해, 이동처의 데이터에 대한 액세스가 허가되어있는지 아닌지를 판단한다(S900). 이 허가는, 예컨대 전술한 설정부(170)에 의해 설정된 것이다.
이동처의 데이터로 액세스가 허가되어 있지 않은 경우에(S900: NO), 액세스부(140)은, 그 데이터로의 참조를 에러로 하도록 설정되어 있는지, 또는, 그 데이터로의 참조는 무시하도록 설정되어 있는지를 판단한다(S930).
무시하도록 설정되어 있는 경우에는(S930: 무시한다), 액세스부(140)은, 입력된 액세스 커맨드를 그대로 발행한다(S935). 그 결과, 혹시 액세스의 대상이 이동처의 데이터라면, 그 액세스는 무시되고, 이동원의 데이터만이 액세스된다.
한편, 이동처의 데이터로의 액세스를 에러로 하는 설정이 되어 있는 경우에는(S930: 에러로 한다), 액세스부(140)은, 커맨드 입력부(120)이 입력한 액세스 커맨드를 변경하여 실행한다(S940). 상기 변경의 한 예에 대해서는, 도 10을 참조하여 나중에 설명한다.
다음으로, 이동 판단부(130)은, 상기 액세스 커맨드에 따라 액세스되어야 하는 데이터의 적어도 일부가, 이미 제 2의 기억 장치(160)에 이동되었는지 안되었는지를, 입력된 상기 액세스 커맨드 및 입력된 상기 이동 조건에 기초하여 판단한다(S950). 실제로는 제 2의 기억 장치(160)에 이동된 것을 조건으로(S950: YES), 액세스부(140)은, 액세스 커맨드를 입력한 사용자에 대해 에러를 통지한다(S960).
또한, 이동처의 데이터로의 액세스가 허가되어 있는 경우에는(S900: YES), 액세스부(140)은, 입력된 액세스 커맨드를 변경하여 실행한다(S910). 그 경우에 있어서, 액세스부(140)은, 제 2의 기억 장치(160)에 이동된 데이터에 읽기 전용의 속성이 설정되어있는지 뿐만 아니라, 동시에, 그 데이터에 대한 액세스가 그 데이터를 갱신하라는 요구가 있는지를 판단한다(S920). 그와 같은 경우에는(S920: YES), 액세스부(140)은, S960으로 진행하여 에러를 통지한다.
도 10은, 본 실시예에 따른 액세스부(140)에 의해 변경된 액세스 커맨드의 한 예를 나타낸다. 도 10(a)에, 변경되기 전의 액세스 커맨드를 나타내었다. 이 액세스 커맨드는, 칼럼(C1)의 값이「1900-01-01」보다 더 큰(즉 날짜가 새로운) 레코드를 테이블(T1)에서 선택하는 커맨드를 나타낸다. 이 액세스 커맨드의 변경의 예를 이하에 설명한다.
체크 제약이 설정되어 있는 경우, 각각의 테이블로부터 읽어야하는 레코드가 만족하는 조건은 체크 제약에 의해서 판단된다. 따라서, 액세스부(140)은, 액세스 커맨드내에 지정된 액세스 대상이 되는 테이블을 변경하면 충분하며, 액세스 커맨드내에 지정된 액세스 조건을 변경할 필요는 없다.
예컨대, 도 10(b)에 나타낸 것과 같이, 액세스부(140)은, 액세스 대상이 되는 테이블의 지정을「T1」에서,「SELECT * FROM USER1, T1, UNION ALL SELECT * FROM USER1. T1_WORM」으로 변경한다. 그 결과, 제 1의 기억 장치(150) 및 제 2의 기억 장치(160) 각각을 액세스 대상으로 할 수 있다.
이상에서 보는 바와 같이, 액세스부(140)에 의해, 입력된 액세스 커맨드에 의해서 지정되는 데이터 중, 데이터 이동 시에 입력된 이동 조건을 만족하지 않는 레코드는 제 1의 테이블로부터 읽고, 상기 이동 조건을 만족하는 레코드는 제 2의 테이블로부터 읽을 수 있다.
또한, 이상의 예에 더하여, 제 2의 기억 장치(160)에 대한 설정에 의해 레코드 갱신 또는 레코드 삽입의 동작이 허가되어 있는 경우에는, 액세스부(140)은, SELECT 커맨드뿐만 아니라, INSERT 커맨드 또는 UPDATE 커맨드로 변경할 수 있다. 단, 입력되는 커맨드가 UPDATE 커맨드인 경우에는, 데이터의 이동 조건으로 설정되어있는 칼럼의 내용을 변경하려면, 그저 상기의 변경을 행하는 것만으로는 불충분하다. 그 구체적인 예는 도 10(c, d, e)에서 보여준다.
도 10(c)는, 변경 전의 UPDATE 커맨드를 보여준다. 이 액세스 커맨드는, 테이블(T1) 중, 칼럼(C2)의 값이「100」인 레코드의 칼럼(C1)에「2000-10-10」을 설정하는 커맨드를 보여준다. 칼럼(C1)이 2000-10-10인 레코드는, 테이블(T1)에 속할 필요가 있기 때문에, T1_WORM 에 해당하는 레코드가 있는 경우, 그것들을 T1에 이동할 필요가 있다. 따라서, 액세스부(140)은, 이 커맨드를, 도 10(d)-(f)에 나타낸 3개의 커맨드로 변경한다. 그 결과, 도 10(d)에 나타낸 것과 같이, 변경된 커맨드는, 우선 테이블(USER1. T1) 중, 칼럼(C2)의 값이「100」인 레코드의 칼럼(C1)에「2000-10-10」을 설정한다.
그 다음, T1_WORM 에 해당하는 데이터를 UPDATE 하여, USER1. T1 테이블에 이동할 필요가 있기 때문에, 도 10(e)에 나타낸 커맨드의 실행이 필요하다. 그 결과, USER1. T1_WORM 중 해당하는 레코드가 취득되어, 그 레코드의 칼럼(C1)에「2000-10-10」이 세트되면, 그 레코드가 테이블(USER1. T1)에 삽입된다. 단, 여기에서는 테이블(T1)의 레코드가 칼럼(C1, C2 및 C3)만을 포함한다고 가정하였다. 한편, 도 10(f)에 나타낸 것같이, 테이블(USER1. T1_WORM)로부터 불필요한 데이터는 삭제된다.
이상, 도 9 및 도 10에서 보여준 것과 같이, 입력된 액세스 커맨드가, 데이터 이동 전의 데이터베이스에 대한 것이라도, 데이터 이동 후의 데이터를 포함하는 데이터베이스에 적절하게 액세스할 수 있다. 또한, 액세스 결과 읽은 데이터는, 그 후 동일 레코드에 대한 액세스를 위해서, RAM 등의 기억 장치내에 설정된 기억 장소에 캐시될 수 있다.
도 2로 돌아가서 설명한다. 커맨드 입력부(120)이 입력한 커맨드에 액세스 커맨드가 없는 경우(S260: NO), 제어 시스템(10)은, 그 커맨드에 따르는 종래의 처리를 수행한다(S270). 한편, 수신한 이동 지시가 신규의 이동 지시가 아닌 경우(S210: NO), 제어 시스템(10)은, 이동 지시가, 새롭게 테이블을 생성해서 그 테이블에 데이터를 이동하라는 지시인지, 또는, 이미 데이터를 이동한 이동처의 테이블에 데이터를 추가할지를 판단한다(S230).
이동처의 테이블에 데이터를 추가하는 것을 조건으로 하여(S230: NO), 데이터 이동부(100)은, 제 1의 기억 장치(150)으로부터 데이터베이스의 일부를 읽어서 제 2의 기억 장치(160)에 추가하여 이동하는 처리를 수행한다(S240). 상기 처리의 상세한 설명은 도 11을 참조하여 설명한다.
도 11은, 도 2의 S240에서의 처리의 흐름을 상세히 보여준다. 데이터 이동부(100)은, 우선, 배타 제어에 의해 데이터베이스를 잠금하여 액세스를 금지한다(S1100). 이것은, 예컨대 이하의 커맨드에 의해 구현된다.
lock table user1. t1 in execlusive mode;
다음으로, 데이터 이동부(100)은, 데이터 이동원의 테이블(예컨대 T1)을 데이터 이동처의 테이블(예컨대 T1_WORM)로부터 분리(detach)한다(S1100). 이것은, 예컨대, 제어용 기억 장치(110)에 기억된 첨부 속성을 무효로 설정하는 것에 의해 구현된다. 그 커맨드 예는 이하와 같다.
alter table user1. t1 detach table user1. t1_worm;
다음으로, 데이터 이동부(100)은, 입력된 데이터 이동 지시에 기초하여, 각종 정보를 등록한다(S1120). 예컨대, 데이터 이동부(100)은, 이미 제 2 체크 제약으로서 제 2 제어부(145)에 설정되어 있는 조건 및, 추가해서 이동해야하는 입력된 조건의 논리화(論理和)를, 새로운 제 2 체크 제약으로서 제 2 제어부(145)에 설정한다. 또한, 데이터 이동부(100)은, 이미 제어용 기억 장치(110)에 기억된 이동 조건과 새로운 이동 조건과의 논리화(論理和)를 생성해서 제어용 기억 장치(110)에 저장함과 동시에, 이동원인 테이블 T1 및 이동처인 테이블(T1_WORM)을 대응시킨 대응 정보를 제어용 기억 장치(110)에 저장한다. 더 나아가, 데이터 이동부(100)은, 필요에 따라, 이동처의 가상 테이블에 읽기 전용 속성을 설정할 수 있다. 그 커맨드 예는 아래와 같다.
alter table user1. t1 drop check c1;
alter table user1. t1 add constraint c1 check (c1>’2000-12-31’);
그 결과로서 등록된 정보의 한 예를 도 12에 나타내었다.
도 12는, 본 실시예에 따른 제어용 기억 장치(110)에 기억된, 데이터를 추가하여 이동한 후의 이동 조건 및 대응 정보를 나타낸다. 제어용 기억 장치(110)은, 이동 조건으로서「C1<=2000-12-31」을 기억한다. 또한, 제어용 기억 장치(110)은, 대응 정보로서 베이스 테이블과 이동처 테이블을 대응시켜서 기억한다. 베이스 테이블은, USER. T1이며, 이동처 테이블은, USER. T1_WORM이다. 또한, 제어용 기억 장치(110)은, 읽기 전용 속성 및 첨부 유효 속성을 기억한다. 액세스 조건을 제외하고는 도 6에 나타낸 제어용 기억 장치(110)의 구체예와 거의 동일하므로, 설명을 생략한다.
도 11로 돌아가 설명한다. 다음으로, 데이터 이동부(100)은, 제 1의 기억 장치(150)에 기억된 데이터베이스 중, 추가로 이동해야 하는 입력된 조건을 만족하는 데이터를 읽어서, 제 2의 기억장치(160)에 또한 이동한다(S1130). 그 커맨드 예는 아래와 같다.
archive table user1. t1;
이동된 데이터는, 필요에 따라 암호화되거나, 또는, 데이터 압축될 수 있다. 또한, 데이터 이동부(100)은, 이미 제 1 체크 제약으로서 제 1 제어부(142)에 설정되어 있는 조건 및, 추가로 이동해야 하는 입력된 조건의 부정 논리화(論理和)를, 새로운 제 1 체크 제약으로서 설정한다(S1140). 그 커맨드 예는 아래와 같다.
alter table user1. t1 drop check c1;
alter table user1. t1 add constraint c1 check (c1>’2000-12-31’);
그 다음, 데이터 이동부(100)은, 이동원의 테이블을 이동처의 테이블에 첨부한다(S1150). 이것은, 구체적으로는 상기 제어용 기억 장치의 첨부 유효 속성을 유효로 설정하는 것으로 구현될 수 있다. 그 커맨드 예는 아래와 같다.
alter table user1. t1 attach table user1. t1_worm;
이와 동시에, 데이터 이동부(100)은, 커맨드 캐시(125)를 클리어한다(S1160). 그 커맨드 예는 아래와 같다.
flush statement cache for table user1. t1;
flush statement cache for table user1. t1_worm;
그 다음, 데이터 이동부(100)은, 데이터베이스를 잠금해제하여 액세스를 허가한다(S1170). 그 커맨드 예는 아래와 같다.
commit;
이상의 처리에 의해 데이터를 추가하여 제 1의 기억 장치(150)으로부터 제 2의 기억 장치(160)에 이동한 후의 제 1의 기억 장치(150) 및 제 2의 기억 장치(160)의 예를 도 13 및 도 14에 나타내었다.
도 13은, 본 실시예에 따른 제 1의 기억 장치(150)에 기억된, 데이터를 추가하여 이동한 후의 데이터베이스의 한 예를 나타낸다. 제 1의 기억 장치(150)은, C1의 수치가 2000-12-31보다 새로운 날짜를 나타내는 레코드를 기억하고, 상기 수치가 2000-12-31 이전의 날짜를 나타내는 레코드는 제 1의 기억 장치(150)으로부터 삭제되어있다. 또한, 제 1 체크 제약 기억부(146)은, 추가의 이동 조건의 논리 부정인「C1>2000-12-31」을 제 1 체크 제약으로 기억한다.
도 14는, 본 실시예에 따른 제 2의 기억 장치(160)에 기억된, 데이터를 추가하여 이동한 후의 가상 테이블의 한 예를 나타낸다. 제 2의 기억 장치(160)은, C1의 수치가 2000-12-31 이전의 날짜를 나타내는 레코드를 기억하고, 상기 수치가 2000-12-31보다 더 새로운 날짜를 나타내는 레코드는 제 2의 기억 장치(160)에 이동되어 있지 않다. 또한, 제 2 체크 제약 기억부(148)은, 이동 조건인「C1<=2000-12-31」을 제 2 체크 제약으로 기억한다.
도 2로 돌아가서 설명한다. 입력한 이동 지시가, 새롭게 테이블을 생성하여 그 테이블로 데이터를 이동하는 지시일 것을 조건으로(S230: YES), 데이터 이동부(100)은, 예컨대 상기 T1_WORM에 더하여 새로운 테이블을 생성해서, 그 테이블로 테이블(T1)로부터 데이터를 이동한다(S240). 새로운 테이블은, 제 3의 기억 장치(166)내에 생성될 수 있다. 그 경우에서의 액세스부(140)의 하드웨어 구성의 한 예를 도 15에 나타내었다.
도 15는, 본 실시예에 따른 액세스부(140)의 다른 예를 나타낸다. 이 예에 있어서, 제어 시스템(10)은, 도 1에 도시한 구성에 더하여, 제 3의 기억 장치(166)을 포함할 수 있다. 제 3의 기억 장치(166)은, 제 2의 기억 장치(160)과는 성질이 다른 것이 바람직하다.
예컨대, 제 3의 기억 장치(166)은, 제 2의 기억 장치(160)과 비교해서 고속으로 동작하는 것이 바람직하며, 그 경우, 액세스 지연 시간이 적고 또 처리량(throughput)이 많다. 한편으로, 제 2의 기억 장치(160)은 제 3의 기억 장치(166)과 비교해서 가격이 저렴하고 또한 대용량인 것이 바람직하다. 이와 같이, 이동처의 복수의 기억 장치의 성질이 다르면, 사용자는 이동하려는 데이터의 성질에 따라서(예컨대 빈번하게 액세스되는지, 또는, 사이즈가 큰지에 따라서) 이동해야하는 기억 장치를 선택할 수 있다.
그리고 이 예의 경우, 액세스부(140)은, 도 1에 도시한 구성에 더하여, 제 3 제어부(146)을 포함할 수 있다. 제 3 제어부(146)은, 제 3의 기억 장치(166)에 대응하는 체크 제약을 기억하기 위한 제 3 체크 제약 기억부(149)를 포함할 수 있다. 제어 시스템(10)의 그 외의 구성은, 도 1을 참조하여 설명한 제어 시스템(10)과 거의 동일하기 때문에 설명을 생략한다.
도 16은, 본 실시예에 따른 제어 시스템(10)이 새롭게 작성한 다른 테이블에 데이터를 추가하여 이동하는 처리의 흐름을 나타낸다. 먼저, 데이터 이동부(100)은, 제 3의 기억 장치(166)내에, 새로운 가상 테이블(T1_WORM2)을 생성한다(S1600). 다음으로, 데이터 이동부(100)은, 입력된 이동 조건 기타의 각종 정보를 제어용 기억 장치(110)에 등록한다(S1610). 이 등록의 처리는, 예컨대 이하의 커맨드에 의해서 구현된다.
alter nickname user1. t1_worm2 add attach info (base_schema ‘USER1’, base_table ’T1’, range_key ’C1’, ending ‘1999-12-31’, readonly ‘Y’);
다음으로, 데이터 이동부(100)은, 새로운 이동처 테이블인 T1_WORM2의 체크 제약을 제 3 체크 제약 기억부(149)에 등록한다(S1620). 이 등록의 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
alter nickname user1. t1_worm2 add constraint c1 check (c1<=’1999-12-31’) not enforced;
그 다음, 데이터 이동부(100)은, 이동원 테이블(T1)을 잠금하여 액세스를 금지한다(S1625). 이 잠금의 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
lock table user1. t1 in execlusive mode;
다음으로, 데이터 이동부(100)은, 이동처 테이블인 T1_WORM을 이동원 테이블인 T1으로부터 분리한다(detach)(S1630). 이 분리 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
alter nickname user1. t1 detach table user1. t1_worm;
그 다음, 데이터 이동부(100)은, 데이터 이동 조건을 변경한다. 이 변경의 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
alter nickname user1. t1_worm alter attach info (starting ‘2000-01-01’, ending ‘2004-12-31’);
그 결과로 등록되는 정보의 한 예를 도 17에 나타내었다.
도 17은, 본 실시예에 따른 제어용 기억 장치(110)에 기억된, 새롭게 작성한 다른 테이블로 데이터를 이동한 후의 이동 조건 및 대응 정보를 나타낸다. 이 예에서, 이동처 테이블(T1_WORM 및 T1_WORM2) 각각에 대응하여 이동 조건이 입력된다. 여기서, T1_WORM에 대응하는 이동 조건은, 칼럼(C1)의 수치가 1999-12-31 이전의 날짜이다, 라는 조건이며, 이동 지시는, 그 이동 조건을 만족하는 레코드를 테이블(T1_WORM2)로 이동한다는 지시이다. 또한, T1_WORM2에 대응하는 이동 조건은, 칼럼(C1)의 수치가 2001-01-01 이상이고 동시에 2004-12-31 이하이다라는 조건이고, 이동 지시는, 그 이동 조건을 만족하는 레코드를 테이블(T1_WORM)로 이동한다라는 지시이다.
제어용 기억 장치(110)은, 이동처 테이블인 테이블(USER1. T1_WORM 및 USER1. T1_WORM2) 각각에 대해서, 이동 조건을 기억한다. USER1. T1_WORM에 대해서, 제어용 기억 장치(110)은, 이동 조건으로서「C1>=2000-01-01 AND C1<=2004-12-31」을 기억한다. 또한, USER1. T1_WORM2에 대해서, 제어용 기억 장치(110)은, 이동 조건으로서「C1<=1999-12-31」을 기억한다.
또한, 도 6의 예와 같이, 제어용 기억 장치(110)은, 각각의 이동처 테이블에 대응하여, 읽기 전용 속성 및 첨부 유효 속성을 기억한다. 읽기 전용 속성은, 이동처 테이블의 액세스 제한을 나타낸다. 첨부 유효 속성은, 상기 대응 정보에 의한 대응관계가 유효한지 아닌지를 나타낸다.
도 16으로 돌아가서 설명한다. 다음으로, 데이터 이동부(100)은, 이동처 테이블(T1_WORM)의 체크 제약을 변경한다(S1650). 이 변경의 처리는, 예컨대, 이하의 커맨드에 의해 구현된다.
alter nickname user1. t1_worm drop check c1;
alter nickname user1. t1_worm add constraint c1 check (c1>=’2000-01-01’ and c1<=’2004-12-31’) not enforced;
그 다음, 데이터 이동 부(100)은, 이동을 지시한 데이터를, 제 1의 기억 장치(150)으로부터 읽어서 제 3의 기억 장치(166)으로 이동한다(S1660). 이 이후의 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
archive table user1. t1;
이 처리에 의해, 테이블(T1)에 원래부터 기억되어있던 데이터는, 입력된 이동 조건에 따라, 테이블(T1, T1_WORM 및 T1_WORM2)에 분산되어 기억된다.
그 다음, 데이터 이동부(100)은, 테이블(T1)의 체크 제약을 변경한다(S1670). 이 변경의 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
alter table user1. t1 drop check c1;
alter table user1. t1 add constraint c1 check (c1>’2004-12-31’);
그 다음, 데이터 이동부(100)은, 테이블(T1)에 테이블(T1_WORM 및 T1_WORM2) 각각을 첨부한다(attach)(S1680). 이 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
alter table user1. t1 attach table user1. t1_worm;
alter table user1. t1 attach table user1. t1_worm2;
그 다음, 데이터 이동부(100)은, 커맨드 캐시(125)를 클리어한다(S1690). 이 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
flush statement cache for table user1. t1;
그 다음, 데이터 이동부(100)은, 테이블(T1)을 잠금해제하여 테이블(T1)에의 액세스를 허가한다(S1695). 이 처리는, 예컨대 이하의 커맨드에 의해 구현된다.
Commit;
도 18은, 본 실시예에 따른 제 1의 기억 장치(150)에 기억된, 새롭게 작성한 다른 테이블로 데이터를 이동한 후의 데이터베이스의 한 예를 나타낸다. 제 1의 기억 장치(150)은, C1의 수치가 2005-01-01 보다 더 이후의 날짜를 나타내는 레코드를 기억하고, 상기 수치가 2004-12-31 이전의 날짜를 나타내는 레코드는 제 1의 기억 장치(150)으로부터 삭제한다. 또한, 제 1 체크 제약 기억부(146)은, T1_WORM 및 T1_WORM2 각각에 대응하는 이동 조건의 논리화(論理和)의 논리 부정인「C1>=2005-01-01」을 제 1 체크 제약으로 기억하고 있다.
도 19는, 본 실시예에 따른 제 2의 기억 장치(160)에 기억된, 새롭게 작성한 다른 테이블에 데이터를 이동한 후의 데이터베이스의 한 예를 나타낸다. 제 2의 기억 장치(160)은, C1의 수치가 2001-01-01 이후 및 2004-12-31 이전인 날짜를 나타내는 레코드를 기억하고, 상기 수치가 그 범위 외의 날짜를 나타내는 레코드는 제 2의 기억 장치(160)에 이동되어 있지 않다. 또한, 제 2 체크 제약 기억부(148)은, 이동 조건인「C1>=2000-01-01 AND C1<=2004-12-31」을 제 2 체크 제약으로 기억한다.
도 20은, 본 실시예에 따른 제 3의 기억 장치(166)에 기억된, 새롭게 작성한 다른 테이블에 데이터를 이동한 후의 데이터베이스의 한 예를 나타낸다. 제 3의 기억 장치(166)은, C1의 수치가 1999-12-31 이전의 날짜를 나타내는 레코드를 기억하고, 상기 수치가 그 범위 외의 날짜를 나타내는 레코드는 제 3의 기억 장치(166)에 이동되어 있지 않다. 또한, 제 3 체크 제약 기억부(149)는, 이동 조건인「C1<=1999-12-31」을 제 3 체크 제약으로 기억하고 있다.
이상, 도 15 내지 도 20을 참조하여 설명한 것과 같이, 본 실시예에 따른 제어 시스템(10)에 의하면, 베이스 테이블에 기억된 데이터를 나누어서, 성질이 다른 복수의 기억 장치에 이동시키는 것이 가능하다. 이로 인해, 예컨대, 비교적 고속 동작하는 기억 장치에는 액세스 빈도가 높은 데이터를 기억하고, 저속이지만 대용량의 기억 장치에는 액세스 빈도가 낮은 데이터를 기억시키는 등과 같이, 데이터의 용도에 따라 기억 장치를 나누어 사용할 수 있다.
도 21은, 본 실시예에 따른 제어 시스템(10)으로 기능 하는 컴퓨터(500)의 하드웨어 구성의 한 예를 나타낸다. 컴퓨터(500)은, 호스트 컨트롤러(1082)에 의해 상호 접속되는 CPU(1000), RAM(1020), 및 그래픽 컨트롤러(1075)를 가진 CPU 주변부와, 입출력 컨트롤러(1084)에 의해 호스트 컨트롤러(1082)에 접속되는 통신 인터페이스(1030), 하드 디스크 드라이브(1040), 및 CD-ROM 드라이브(1060)을 갖는 입출력부와, 입출력 컨트롤러(1084)에 접속되는 ROM(1010), 플렉시블 디스크 드라이브(1050), 및 입출력칩(1070)을 갖는 레거시(legacy) 입출력부를 포함한다.
호스트 컨트롤러(1082)는, RAM(1020)과, 높은 전송 비율(rate)로 RAM(1020)을 액세스하는 CPU(1000) 및 그래픽 컨트롤러(1075)를 접속한다. CPU(1000)은, ROM(1010) 및 RAM(1020)에 저장된 프로그램에 기초하여 동작하고, 각 부의 제어를 행한다. 그래픽 컨트롤러(1075)는, CPU(1000) 등이 RAM(1020)내에 설정된 프레임 버퍼 상에 생성하는 화상 데이터를 취득하여, 표시 장치(1080)상에 표시한다. 또한, 그래픽 컨트롤러(1075)는, CPU(1000)등이 생성하는 화상 데이터를 저장하는 프레임 버퍼를, 내부에 포함할 수도 있다.
입출력 컨트롤러(1084)는, 호스트 컨트롤러(1082)와, 비교적 고속의 입출력 장치인 통신 인터페이스(1030), 하드 디스크(1040), 및 CD-ROM 드라이브(1060)을 접속한다. 통신 인터페이스(1030)은, 네트워크를 통해서 외부의 장치와 통신한다. 하드 디스크 드라이브(1040)은, 컴퓨터(500)이 사용하는 프로그램 및 데이터를 저장한다. CD-ROM 드라이브(1060)은, CD-ROM(1095)에서 프로그램 또는 데이터를 읽어서, RAM(1020) 또는 하드 디스크 드라이브(1040)에 제공한다.
또한, 입출력 컨트롤러(1084)에는, ROM(1010)과, 플렉시블 디스크 드라이브(1050)이나 입출력칩(1070)등의 비교적 저속인 입출력 장치가 접속된다. ROM(1010)은, 컴퓨터(500)의 기동 때에 CPU(1000)가 실행하는 부팅 프로그램이나, 컴퓨터(500)의 하드웨어에 의존하는 프로그램 등을 저장한다. 플렉시블 디스크 드라이브(1050)은, 플렉시블 디스크(1090)에서 프로그램 또는 데이터를 읽어서, 입출력칩(1070)을 통해 RAM(1020) 또는 하드 디스크 드라이브(1040)에 제공한다. 입출력칩(1070)은, 플렉시블 디스크(1090)이나, 예컨대 병열 포트, 시리얼 포트, 키보드 포트, 마우스 포트 등을 통해서 각종의 입출력 장치를 접속한다.
컴퓨터(500)에 제공되는 프로그램은, 플렉시블 디스크(1090), CD-ROM(1095), 또는 IC 카드 등의 기록 매체에 저장되어 사용자에 의해서 제공된다. 프로그램은, 입출력칩(1070) 및/ 또는 입출력 컨트롤러(1084)를 통해서, 기록 매체로부터 읽혀져서 컴퓨터(500)에 인스톨되고 실행된다. 프로그램이 컴퓨터(500)등을 실행하는 동작은, 도 1로부터 도 14까지에서 설명한 제어 시스템(10)에서의 동작과 거의 동일하기 때문에, 설명을 생략한다.
이상에서 설명한 프로그램은, 외부의 기억 매체에 저장될 수도 있다. 기억 매체로서는, 플렉시블 디스크(1090), CD-ROM(1095)외에, DVD나 PD 등의 광학 기록 매체, MD 등의 광자기 기록 매체, 테이프 매체, IC 카드 등의 반도체 메모리 등을 사용하는 것도 가능하다. 또한, 전용 통신 네트워크나 인터넷에 접속된 서버 시스템에 설정된 하드 디스크 또는 RAM 등의 기억 매체를 기록 매체로서 사용하고, 네트워크를 통해서 프로그램을 컴퓨터(500)에 제공할 수도 있다.
이상에서 설명한, 본 실시예에 따른 제어 시스템(10)에 의하면, WORM 미디어 등에 이동한 데이터를, 이전의 하드 디스크에 복귀시키지 않고도, 직접 읽는 것이 가능하다. 이 때문에, 액세스의 대기 시간을 단축하여 처리를 효율화할 수 있을 뿐만 아니라, 비교적 대용량 그리고 싼 가격인 WORM 미디어 등을 사용해서 대규모 데이터베이스를 저렴한 비용으로 구축할 수 있다. 또한, WORM 미디어 등으로부터 데이터를 읽는 경우에도, 액세스 커맨드는 종전의 하드 디스크에 대한 커맨드를 그대로 적용해도 된다. 이 때문에, 하드 디스크 드라이브용으로 이미 개발된 SQL 애플리케이션 프로그램을 변경하지 않아도 가능하다.
이상에서, 본 발명을 실시예를 사용하여 설명하였는데, 본 발명의 기술적 범위는 상기 실시 예에 기재한 범위에 한정되는 것은 아니다. 상기 실시예에, 다양한 변경 또는 개량을 더하는 것이 가능하다는 것을 당업자(當業者)는 알 수 있다. 또한 그와 같은 변경 또는 개량을 더한 실시예도 본 발명의 기술적 범위에 포함될 수 있다는 것이, 특허청구범위의 기재로부터 확실히 알 수 있다.
10 - 제어시스템 145 - 제 2 제어부
100 - 데이터 이동부 146 - 제 1 체크 제약 기억부
110 - 제어용 기억 장치 148 - 제 2 체크 제약 기억부
120 - 커맨드 입력부 150 - 제 1의 기억 장치
125 - 커맨드 캐시 160 - 제 2의 기억 장치
130 - 이동 판단부 162 - 파일
140 - 액세스부 165 - WORM 미디어
142 - 제 1 제어부 170 - 설정부
500 - 컴퓨터
166 - 제 3의 기억 장치.

Claims (10)

  1. 데이터베이스에 대한 액세스를 제어하는 시스템에서,
    제 1의 기억 장치에 기억된 데이터베이스 중, 사용자가 입력한 이동 조건을 만족하는 데이터를 제 2의 기억 장치에 이동하는 데이터 이동부,
    상기 데이 베이스에 대한 액세스 커맨드의 입력을 수신하는 커맨드 입력부,
    입력된 상기 액세스 커맨드에 의해 액세스 되어야하는 데이터가, 이미 상기 제 2의 기억 장치에 이동되었는지 안되었는지를, 입력된 상기 액세스 커맨드 및 입력된 상기 이동 조건에 기초하여 판단하는 이동 판단부, 및
    상기 이동 판단부에 의한 판단에 기초하여, 상기 데이터베이스에 포함되는 데이터 또는 상기 제 2의 기억 장치로 이동된 데이터를 상기 액세스 커맨드에 따라 액세스하는 액세스부를 포함하는
    시스템.
  2. 제 1항에서,
    상기 제 2의 기억 장치에 이미 이동한 데이터에 대한 액세스를 허가할지 안할지를, 사용자마다 설정하는 설정부를 더 포함하되,
    상기 액세스부는, 입력된 상기 액세스 커맨드에 의해서 액세스 되어야하는 데이터가, 상기 데이터 이동부에 의해 이미 상기 제 2의 기억 장치에 이동된 경우에도, 상기 액세스 커맨드를 입력한 사용자가, 상기 설정부에 의해 액세스의 허가가 되어있지 않은 사용자인 경우에는, 상기 제 2의 기억 장치에 이동된 상기 데이터에 액세스하지 않는
    시스템.
  3. 제 1항에서,
    제어용 데이터를 기억하기 위한 제어용 기억 장치를 더 포함하되,
    상기 데이터 이동부는, 상기 제 2의 기억 장치에 데이터를 이동하기 위해서 입력된 상기 이동 조건을, 상기 제어용 기억 장치에 저장하고,
    상기 액세스부는, 상기 제어용 기억 장치에 기억된 상기 이동 조건, 및 입력된 상기 액세스 커맨드에 기초하여, 상기 액세스 커맨드에 의해서 액세스되어야 하는 데이터가, 상기 이동 조건을 만족하는지 안하는지를 판단하고, 만족하는 것을 조건으로 상기 제 2의 기억 장치에 액세스하는
    시스템.
  4. 제 1항에서,
    상기 제 1의 기억장치에 기억된 상기 데이터베이스는, 제 1의 테이블을 포함하고,
    상기 데이터 이동부는, 상기 제 1의 테이블의 일부를 읽어 새로운 제 2의 테이블로서 상기 제 2의 기억 장치에 저장함과 동시에, 상기 제 1의 테이블의 일부를 상기 데이터베이스로부터 삭제하고,
    상기 액세스부는, 입력된 상기 액세스 커맨드내에 액세스 대상으로 할 테이블의 지정을, 상기 제 1의 테이블로부터, 상기 제 1의 테이블 및 상기 제 2의 테이블을 결합한 테이블로 변경해서 기록하고, 상기 데이터베이스 또는 이미 이동된 상기 데이터에 액세스하는
    시스템.
  5. 제 4항에서,
    과거에 입력된 액세스 커맨드 및 현재 액세스 커맨드를 상기 액세스부가 컴파일하여 상기 데이터베이스에 대해 발행한 커맨드인 컴파일을 마친 커맨드를, 대응하여 기억하고 있는 커맨드 캐시를 더 포함하되,
    상기 데이터 이동부는, 상기 데이터베이스로부터 상기 제 2의 기억 장치로 추가하여 이동해야 하는 데이터가 만족해야하는 이동 조건의 입력을 더 수신한 것에 응답하여, 상기 데이터베이스 중 상기 이동 조건을 만족하는 데이터를 상기 제 2의 기억 장치에 더 이동함과 동시에, 상기 커맨드 캐시를 클리어하는
    시스템.
  6. 제 4항에서,
    상기 액세스부는,
    입력된 상기 액세스 커맨드에 의해 액세스 되어야하는 데이터가, 사전에 설정된 제 1 체크 제약을 만족하는지 안하는지를 판단하여, 상기 체크 제약을 만족하는 것을 조건으로, 상기 제 1의 테이블로의 액세스를 허가하고, 상기 체크 제약을 만족하지 않는 것을 조건으로, 상기 제 1의 테이블에 액세스를 금지하는, 제 1의 제어부, 및
    입력된 전기 액세스 커맨드에 의해서 액세스 되어야하는 데이터가, 사전에 설정된 제 2의 체크 제약을 만족하는지 안하는지를 판단하여, 상기 체크 제약을 만족하는 것을 조건으로, 상기 제 2의 테이블로의 액세스를 허가하고, 상기 체크 제약을 만족하지 않는 것을 조건으로, 상기 제 2의 테이블로의 액세스를 금지하는 제 2의 제어부를 포함하되,
    상기 데이터 이동부는, 입력된 상기 이동 조건을 상기 제 2 체크 제약으로서 상기 제 2의 제어부에 설정하고, 입력된 상기 이동 조건의 부정을 상기 제 1 체크 제약으로서 상기 제 1의 제어부에 설정하는
    시스템.
  7. 제 6항에서,
    상기 데이터 이동부는,
    상기 데이터베이스로부터 상기 제 2의 기억 장치로 추가하여 이동해야 하는 데이터가 만족해야 하는 조건의 입력을 더 수신해서, 상기 데이터베이스 중 상기 조건을 만족하는 데이터를 상기 제 2의 기억 장치로 더 이동하고, 또한 이미 상기 제 2 체크 제약으로서 설정하고 있는 조건 및, 추가하여 이동해야 하는 입력된 조건의 논리화(論理和)를, 새로운 상기 제 2 체크 제약으로 설정함과 동시에, 이미 상기 제 1 체크 제약으로 설정되어 있는 조건 및, 추가하여 이동해야 하는 입력된 조건의 부정 논리화(論理和)를, 새로운 상기 제 1 체크 제약으로 설정하는
    시스템.
  8. 제 1항에서,
    상기 데이터 이동부는, 사용자의 지시에 기초하여, 상기 제 2의 기억 장치로 이동한 데이터에 읽기 전용의 속성을 설정하고,
    상기 액세스부는, 상기 이동 판단부에 의해, 상기 액세스 커맨드에 따라 액세스 되어야하는 데이터가, 상기 제 2의 기억 장치로 이동되었다고 판단된 경우라도, 상기 제 2의 기억 장치로 이동한 데이터에 상기 읽기 전용 속성이 설정되어 있는 것을 조건으로, 상기 액세스 커맨드에 의한 갱신을 위한 액세스를 금지하는
    시스템.
  9. 데이터베이스에 대한 액세스를 제어하는 방법에서,
    제 1의 기억 장치에 기억된 데이터베이스 중, 사용자가 입력한 이동 조건을 만족하는 데이터를 제 2의 기억 장치로 이동하는 단계,
    상기 데이터베이스에 대한 액세스 커맨드의 입력을 수신하는 단계,
    입력된 상기 액세스 커맨드에 의해 액세스 되어야하는 데이터가, 이미 상기 제 2의 기억 장치로 이동되었는지 안되었는지를, 입력된 상기 액세스 커맨드 및 입력된 상기 이동 조건에 기초하여 판단하는 단계, 및
    상기 판단하는 단계에서의 판단에 기초하여, 상기 데이터베이스에 포함되는 데이터 또는 상기 제 2의 기억 장치로 이동된 데이터를 상기 액세스 커맨드에 따라 액세스하는 단계를 포함하는
    방법.
  10. 데이터 베이스에 대한 액세스를 제어하는 시스템에서,
    컴퓨터를 동작시키는 프로그램에 있어서,
    상기 컴퓨터를 제 1의 기억 장치에 기억된 데이터베이스 중, 사용자가 입력한 이동 조건을 만족하는 데이터를, 제 2의 기억 장치로 이동하는 데이터 이동부,
    상기 데이터베이스에 대한 액세스 커맨드의 입력을 수신하는 커맨드 입력부,
    입력된 상기 액세스 커맨드에 의해 액세스 되어야 하는 데이터가, 이미 상기 제 2의 기억 장치로 이동되었는지 안되었는지를, 입력된 상기 액세스 커맨드 및 입력된 상기 이동 조건에 기초하여 판단하는 이동 판단부, 및
    상기 이동 판단부에 의한 판단에 기초하여, 상기 데이터베이스에 포함되는 데이터 또는 상기 제 2의 기억 장치로 이동한 데이터를 상기 액세스 커맨드에 따라 액세스하는 액세스부를 동작하게 하는
    컴퓨터 프로그램.
KR1020107009254A 2007-11-19 2008-11-19 데이터베이스에 대한 액세스를 제어하는 기술 KR20100080817A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2007-299450 2007-11-19
JP2007299450 2007-11-19

Publications (1)

Publication Number Publication Date
KR20100080817A true KR20100080817A (ko) 2010-07-12

Family

ID=40667513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107009254A KR20100080817A (ko) 2007-11-19 2008-11-19 데이터베이스에 대한 액세스를 제어하는 기술

Country Status (6)

Country Link
US (1) US8949192B2 (ko)
EP (1) EP2224342A4 (ko)
JP (1) JP5166439B2 (ko)
KR (1) KR20100080817A (ko)
CN (1) CN101861572B (ko)
WO (1) WO2009066691A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160001167A (ko) 2014-06-26 2016-01-06 주식회사 알티베이스 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5357068B2 (ja) 2010-01-20 2013-12-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法
US8266126B2 (en) * 2010-03-24 2012-09-11 Matrixx Software, Inc. System with multiple conditional commit databases
KR20120082176A (ko) * 2011-01-13 2012-07-23 삼성전자주식회사 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템
JP5631839B2 (ja) * 2011-10-18 2014-11-26 富士通テレコムネットワークス株式会社 データ管理システム、センター装置およびデータ管理方法
CN102722535B (zh) * 2012-05-21 2016-04-13 周明 一种避免modbus实时数据库访问冲突的方法
US9081806B2 (en) * 2012-09-07 2015-07-14 Sap Se Automated Database Archiving
US20140136486A1 (en) * 2012-11-15 2014-05-15 Nicolas Roy Method and system for data lifecycle management of manufacturing test data
CN104462119B (zh) * 2013-09-18 2019-11-05 腾讯科技(深圳)有限公司 数据迁移方法及装置
GB2521197A (en) * 2013-12-13 2015-06-17 Ibm Incremental and collocated redistribution for expansion of an online shared nothing database
CN104881443B (zh) * 2015-05-14 2018-11-27 新浪网技术(中国)有限公司 一种在数据库间迁移数据的方法和系统
CN106294387B (zh) * 2015-05-19 2020-06-02 深圳市腾讯计算机系统有限公司 数据迁移方法和装置
CN105183852B (zh) * 2015-09-08 2018-05-22 网易(杭州)网络有限公司 一种数据库迁移方法和装置
US11100046B2 (en) 2016-01-25 2021-08-24 International Business Machines Corporation Intelligent security context aware elastic storage
US9595291B1 (en) 2016-04-27 2017-03-14 International Business Machines Corporation Columnar data storage on tape partition
US10838934B2 (en) * 2017-08-30 2020-11-17 International Business Machines Corporation Modifying archive data without table changes
CN109542872B (zh) * 2018-10-26 2021-01-22 金蝶软件(中国)有限公司 数据读取方法、装置、计算机设备和存储介质
CN113661451B (zh) * 2019-04-16 2022-11-25 三菱电机株式会社 程序创建辅助装置、程序创建辅助方法及计算机可读取的记录介质
JP2021110861A (ja) * 2020-01-14 2021-08-02 富士通株式会社 制御方法、制御プログラム、および情報処理装置
US11163782B2 (en) * 2020-03-10 2021-11-02 EMC IP Holding Company LLC Storage of time series data using dynamic schema
CN111506749B (zh) * 2020-04-15 2024-01-02 北京金山云网络技术有限公司 一种监控数据归档方法、装置、电子设备及存储介质
CN113194026A (zh) * 2021-04-20 2021-07-30 北京异乡旅行网络科技有限公司 消息处理方法及装置
WO2023201653A1 (zh) * 2022-04-21 2023-10-26 宇龙计算机通信科技(深圳)有限公司 文件的操作方法、装置、计算机设备和可读存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5968115A (en) * 1997-02-03 1999-10-19 Complementary Systems, Inc. Complementary concurrent cooperative multi-processing multi-tasking processing system (C3M2)
US20020069077A1 (en) * 1997-05-19 2002-06-06 Westport Benefits, L.L.C. Computerized system for customizing and managing benefits
US6269382B1 (en) * 1998-08-31 2001-07-31 Microsoft Corporation Systems and methods for migration and recall of data from local and remote storage
JP2000112983A (ja) 1998-10-07 2000-04-21 Hitachi Building Systems Co Ltd データベースのデータ格納方法
JP3226891B2 (ja) 1999-02-25 2001-11-05 中国日本電気ソフトウェア株式会社 分散データベースシステムおよび分散データベースシステムの拡張方法
US6963875B2 (en) * 2000-03-23 2005-11-08 General Atomics Persistent archives
US7587428B2 (en) * 2000-10-13 2009-09-08 Microsoft Corporation Maintaining a relationship between two different items of data
US7251661B1 (en) * 2002-03-29 2007-07-31 Ncr Corp. Movable objects in a database
US7269733B1 (en) * 2003-04-10 2007-09-11 Cisco Technology, Inc. Reliable embedded file content addressing
US7412489B2 (en) * 2003-08-21 2008-08-12 Ameriprise Financial, Inc. Method and system for electronic archival and retrieval of electronic communications
US7287048B2 (en) * 2004-01-07 2007-10-23 International Business Machines Corporation Transparent archiving
US7296024B2 (en) * 2004-08-19 2007-11-13 Storage Technology Corporation Method, apparatus, and computer program product for automatically migrating and managing migrated data transparently to requesting applications
JP2006072789A (ja) * 2004-09-03 2006-03-16 Hitachi Ltd ストレージシステム及びストレージシステムのデータ管理装置
JP4349301B2 (ja) 2004-11-12 2009-10-21 日本電気株式会社 ストレージ管理システムと方法並びにプログラム
GB0425857D0 (en) * 2004-11-25 2004-12-29 Ibm A method and apparatus for controlling data access
JP2007272721A (ja) 2006-03-31 2007-10-18 Nec Corp ストレージ装置及びその制御方法
JP5088735B2 (ja) * 2007-12-07 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースへのアクセスを制御する技術

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160001167A (ko) 2014-06-26 2016-01-06 주식회사 알티베이스 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치

Also Published As

Publication number Publication date
CN101861572B (zh) 2012-08-08
CN101861572A (zh) 2010-10-13
EP2224342A4 (en) 2013-10-09
WO2009066691A1 (ja) 2009-05-28
EP2224342A1 (en) 2010-09-01
US20090187612A1 (en) 2009-07-23
US8949192B2 (en) 2015-02-03
JPWO2009066691A1 (ja) 2011-04-07
JP5166439B2 (ja) 2013-03-21

Similar Documents

Publication Publication Date Title
KR20100080817A (ko) 데이터베이스에 대한 액세스를 제어하는 기술
US11169981B2 (en) Managing data with flexible schema
EP0284664B1 (en) Method of rapidly opening disc files identified by path names
US9286300B2 (en) Archiving data in database management systems
US6349305B1 (en) Method and system for database processing by invoking a function related to index type definition, generating an execution plan based on index type name
CA2858680C (en) Systems and methods for improving database performance
US20060206507A1 (en) Hierarchal data management
US6598055B1 (en) Generic code for manipulating data of a structured object
JPWO2002056179A1 (ja) 仮想ドライブを使用したパーティションの再生成方法、データ処理装置及びデータ記憶装置
JP5186270B2 (ja) データベースのキャッシュシステム
JP2018085042A (ja) データベース管理装置、情報処理システム、データベース管理方法及びデータベース管理プログラム
US7685107B2 (en) Apparatus, system, and method for scanning a partitioned data set
US11681705B2 (en) Trie data structure with subtrie data structures
JP3016255B2 (ja) データベース管理システム
CN115859348A (zh) 数据库管理软件中数据权限的控制方法、系统以及设备
CT1TANA IBM Informix R-Tree Index
Cebollero et al. Foundations of T-SQL
Huang The implementation of relational data base management systems on micro-computers
Gobin File handling in programming languages
JPH11338639A (ja) Cd−rに対するデータ書き込み方法ならびにシステム及び同方法がプログラムされ記録される記録媒体
JPH0916445A (ja) 元帳ファイルアクセス方法及びそれを適用したバンキングシステム
JP2005011048A (ja) データベース管理方法及び実施装置並びに処理プログラム
JP2001014195A (ja) 情報処理装置及びデータベースへのレコード挿入方法
JP2003248602A (ja) リレーショナルデータベースシステム、プログラムおよび記録媒体

Legal Events

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