KR100688121B1 - 표형식 데이터의 검색,집계,소트방법 및 장치 - Google Patents

표형식 데이터의 검색,집계,소트방법 및 장치 Download PDF

Info

Publication number
KR100688121B1
KR100688121B1 KR1020017001701A KR20017001701A KR100688121B1 KR 100688121 B1 KR100688121 B1 KR 100688121B1 KR 1020017001701 A KR1020017001701 A KR 1020017001701A KR 20017001701 A KR20017001701 A KR 20017001701A KR 100688121 B1 KR100688121 B1 KR 100688121B1
Authority
KR
South Korea
Prior art keywords
item
item value
value
record
value number
Prior art date
Application number
KR1020017001701A
Other languages
English (en)
Other versions
KR20010085359A (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 가부시키가이샤 터보 데이터 라보라토리
Publication of KR20010085359A publication Critical patent/KR20010085359A/ko
Application granted granted Critical
Publication of KR100688121B1 publication Critical patent/KR100688121B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • 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/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access
    • 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/99942Manipulating data structure, e.g. compression, compaction, compilation

Abstract

종래의 데이터표의 기능을 갖는 동시에 대량의 데이터의 검색, 집계의 스피드가 대폭 향상한 표형식 데이터의 검색, 집계방법 및 장치를 제공한다. 본 발명에 의한 정보의 항목에 대응한 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터의 검색, 집계방법은 특정의 항목에 속하는 항목값에 대응한 항목값번호의 순으로 항목값이 격납되어 있는 값관리테이블과, 레코드의 순으로 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 기억장치에 유지하고, 항목값번호 지정정보배열로부터 특정의 레코드에 대응한 항목값번호를 취득하고, 값관리테이블에 격납된 항목값중에서 취득된 항목값번호에 대응한 항목값을 얻는다.

Description

표형식 데이터의 검색,집계,소트방법 및 장치{METHOD AND APPARATUS FOR RETRIEVING, ACCUMULATING, AND SORTING TABLE-FORMATTED DATA}
본 발명은 컴퓨터와 같은 정보처리장치를 이용해서 대량의 데이터를 처리하는 데이터처리방법 및 데이터처리장치에 관한 것으로, 특히, 표형식의 데이터를 검색,집계,소트하는 방법 및 장치에 관한 것이다.
종래, 대량의 정보를 축적하여, 축적된 정보를 검색, 집계하는 데이터처리가 행해지고 있다. 이들 데이터처리는 예를 들면, CPU, 메모리, 주변기기 인터페이스 및 하드디스크와 같은 보조기억장치와, 디스플레이 및 프린터와 같은 표시장치와, 키보드 및 마우스와 같은 입력장치와, 전원유닛이 버스를 통해 접속된 주지의 컴퓨터시스템에 의해 사용되고, 특히, 시장에서 용이하게 입수가능한 컴퓨터시스템으로 동작가능한 소프트웨어로서 제공된다. 상기 검색, 집계 등의 데이터처리를 행하기 위해, 특히, 대량의 데이터를 축적하는 각종 데이터베이스가 알려져 있다. 대량의 데이터중에서도 특히 표형식으로 표현될 수 있는 데이터를 처리하고 싶다라는 요구는 강하다. 도 1은 처리될 데이터를 표형식으로 표현한 예를 나타낸 도면이다. 도 1에는 예를 들면, 100만명의 많은 사람에 관해서 각 사람의 성별, 연령 및 직업의 데이터를 축적한 데이터가 나타내어져 있다. 도 1에 있어서, 표의 가로방향의 행, 즉 소위 레코드는 레코드번호와, 레코드번호에 대응한 성별, 연령 및 직업의 항목으로 이루어진다. 표의 세로방향의 열은 레코드번호, 성별의 항목, 연령의 항목 및 직업의 항목으로 이루어진다. 레코드번호「0」인 사람은 성별이 여성, 연령이 18세, 직업이 프로그래머인 것을 나타낸다. 이하의 설명에서는, 「여성」, 「18세」,「프로그래머」 등과 같이 각 항목에 설정된 데이터를 항목값이라고 부른다. 또, 이하에 설명에서는, 특히 별다른 설명이 없는 한, 대량의 데이터의 구체적인 예로서, 도 1에 나타낸 100면명 레코드로 이루어진 표형식 데이터를 사용한다.
대량의 데이터를 효율좋게 검색, 집계할 수 있는지의 여부는 대량의 데이터를 격납하는 형식에 의존한다. 종래, 일반적인 격납기술로서 도 2의 (A) 및 (B)에 각각 나타낸 소위 「행단위」격납기술 및 「항목단위」격납기술이 알려져 있다.
도 2의 (A) 및 도 2의 (B)는 기억장치, 예를 들면 하드디스크상의 데이터격납 이미지를 나타내고 있다. 도 2의 (A)의 행단위격납기술의 경우, 각 레코드번호마다 구성된 성별, 연령 및 직업의 항목값의 조가 레코드번호순으로, 논리적 어드레스가 증가하는 순으로 디스크상에 격납되어 있다. 한편, 도 2의 (B)의 항목단위격납기술의 경우, 각 항목마다 레코드번호순으로 항목값이 논리적 어드레스가 증가하는 방향으로 디스크상에 격납되어 있다. 즉, 한편, 도 2의 (B)의 예에서는, 성별에 관해서 레코드번호「0」에서 「999999」까지의 항목값이 차례로 나열되고, 다음에, 연령에 관해서 레코드번호순으로 항목값이 나열되고, 그것에 계속해서, 직업에 관해서 레코드번호순으로 항목값이 나열되어 있다.
상기 종래기술의 경우, 모든 레코드번호의 모든 항목에 대한 항목값이 그대 로, (레코드번호의 1차원과, 그 이외의 항목값의 1차원으로 이루어진)2차원의 데이터구조에 격납되어 있다. 이하, 이러한 데이터구조를 특히 「데이터표」라고 부른다. 종래기술의 경우, 축적된 데이터를 검색, 집계할 때에는, 이 데이터표를 액세스하는 것에 의해 행해지고 있다.
또, 항목의 값을 그대로 항목값으로 해서 격납하는 방법이외에, 값을 코드변환해서 항목값으로서 코드를 격납하는 방법도 알려져 있다. 예를 들면, 성별에 관해서 값「남성」을 「0」으로, 값「여성」을 「1」로 코드변환하고, 「남성」또는 「여성」대신에 「0」또는 「1」의 값이 항목값으로서 격납된다. 이 경우에서도, 코드변환된 코드가 항목값으로서 데이터표에 격납되어 있는 점에 변함은 없다.
상기 종래기술의 데이터표타입의 데이터구조를 이용해서 격납된 대량의 데이터를 검색, 집계하는 경우, 이러한 데이터표를 액세스하기 위한 액세스시간에 기인해서 검색, 집계의 처리시간이 길어진다라는 문제점이 있다.
또, 데이터표에는 적어도 이하에 서술하는 본질적인 결점이 있다.
(1)데이터표는 사이즈가 거대화하기 쉽고, 또한 예를 들면 항목마다 등으로 (물리적으로) 분할하는 것이 곤란하다. 예를 들면, 성별이 「남성」인 레코드를 추출할 때, 연령이나 직업의 정보는 필요로 되지 않으므로, 성별이라는 항목만으로 이루어진 표로 분할해서 액세스할 수 있으면 효율적이다. 도 2의 (B)에 나타낸 항목단위격납기술의 경우, 항목마다로의 분할은 쉽지만, 대량의 데이터를 취급할 때에는 데이터표의 사이즈가 거대화하는 것은 같고, 실제상, 집계, 검색을 위해 데이터표를 메모리 등의 고속의 기억장치상에 전개하는 것은 곤란하다.
(2)데이터표는 각 항목값을 동시에 소트한 형태로 보존할 수 없다. 예를 들면, 도 2의 (A) 및 도 2의 (B)에 나타낸 종래기술의 경우, 항목값은 성별에 관해서 「여성, 남성, 여성, ..., 여성」과 같이 레코드번호순으로 나열되어 있다. 그러나, 검색, 집계처리를 행하는 경우, 일반적으로, 「여성, 여성, 여성, 남성, ..., 남성」과 같이 나열되어 있는 쪽이 편리하다. 그런데, 데이터표에서는, 항목값은 소정의 배열순서, 즉, 레코드번호순으로 나열되어 있으므로, 특정의 항목에 관해서 항목값을 소트하는 것은 허용되지 않는다. 그 때문에, 종래기술의 경우, 검색, 집계에 용이한 항목값의 나열법을 선택할 수 없다.
(3)데이터표에는 동일값이 몇번이나 출현한다. 예를 들면, 도 2의 (A) 및 도 2의 (B)에 기재된 종래의 데이터표의 경우, 성별이 『「남성」이거나 「남」』인 레코드, 즉, 레코드번호를 추출하는 조작일 때에, 「남성」이라는 항목값이 몇번이나 출현하는 것에 기인해서, 「남성」이라는 항목값과 비교조건인 『「남성」이거나 「남」』과의 대조를 몇번이나 행하지 않으면 안되게 된다. 본래적으로는, 동일값에 대해서 그것이 해당하는지의 여부는 1회판정하면 되는 것이다.
본 발명의 목적은, 대량의 데이터의 검색, 집계의 스피드를 대폭 향상시키기 위해, 종래의 데이터표의 기능을 갖는 동시에, 데이터표에 근거한 데이터구조의 상기 문제점이 해결된 데이터관리기구를 설치함으로써, 표형식 데이터를 검색, 집계, 소트하는 방법 및 그 방법을 실시하는 장치를 제공하는 것이다.
상기 목적을 달성하기 위해, 본 발명의 표형식 데이터를 검색, 집계하는 방 법 및 장치는 통상의 컴퓨터시스템에 의해 사용가능한 새로운 데이터관리기구를 제안한다. 본 발명에 따른 데이터관리기구는 원칙적으로 값관리테이블과 값관리테이블로의 포인터배열을 갖는다.
도 3은 본 발명의 원리를 설명하는 도이고, 값관리테이블(10)과 값관리테이블로의 포인터배열(20)이 나타내어져 있다. 값관리테이블(10)이란 표형식 데이터의 각 항목에 대해서, 그 항목에 속하는 항목값이 순서가 정해진(정수(整數)화된) 항목값번호의 순으로 상기 항목값번호에 대응한 항목값(부호 11참조)과, 상기 항목값에 관련된 분류번호(부호 12참조)가 격납된 테이블이다. 값관리테이블로의 포인터배열(20)은 표형식 데이터의 어느 열(즉, 항목)의 항목값번호, 즉 값관리테이블(10)로의 포인터가 표형식데이터의 레코드번호순으로 격납된 배열이다.
값관리테이블로의 포인터배열(20)과 값관리테이블(10)을 조합함으로써, 어느 레코드번호가 부여되었을 때, 소정의 항목에 관한 값관리테이블로의 포인터배열(20)로부터 그 레코드번호에 대응해서 격납된 항목값번호를 꺼내고, 다음에, 값관리테이블(10)안에서 그 항목값번호에 대응해서 격납된 항목값을 꺼냄으로써, 레코드번호로부터 항목값을 얻을 수 있다. 따라서, 종래의 데이터표와 마찬가지로, 레코드번호(행)와 항목(열)이라는 좌표를 이용해서 모든 데이터(항목값)를 참조할 수 있다.
이와 같이 표형식 데이터의 항목중의 어느 항목에 대해서 생성된 값관리테이블과, 값관리테이블로의 포인터배열을 포함하는 본 발명에 따른 데이터관리기구는 이하의 설명에서는 특히 정보블록이라고 부르는 경우가 있다.
종래의 데이터표는 레코드에 대응한 행과, 항목에 대응한 열로 이루어진 좌표를 이용해서 모든 데이터를 일체적으로 관리하고 있는 것에 비해, 본 발명에 따른 정보블록은 표형식의 열, 즉, 항목마다 데이터를 완전하게 분리하고 있는 점에 특징이 있다. 이렇게, 본 발명에 의하면, 대량의 데이터가 항목마다 분리되어 있으므로, 검색, 집계에 필요한 항목에 관한 데이터만을 메모리 등의 고속 기억장치상에 입력하는 것이 가능하고, 그 결과로서 데이터로의 액세스시간이 단축되므로, 검색, 집계의 처리가 고속화되어, 항목수가 매우 많은 데이터의 경우라도 퍼포먼스를 저하시키는 일없이 취급할 수 있도록 된다.
또, 본 발명에 따른 정보블록의 경우, 항목값은 값관리테이블에 격납되고, 값이 존재하는 위치를 나타내는 레코드번호는 값관리테이블로의 포인터배열에 관련지어져 있으므로, 항목값이 레코드번호순으로 나열되어 있을 필요가 없다. 따라서, 검색, 집계에 적합하도록 데이터를 항목값에 관해서 소트할 수 있도록 된다. 이것에 의해, 목적의 값과 일치하는 항목값이 데이터안에 존재하는지 안하는지의 판정을 고속으로 행할 수 있도록 된다. 또한, 항목값은 항목값번호와 대응하고 있으므로, 항목값이 긴 데이터나 문자열 등이어도 정수로서 취급할 수 있다.
또한, 본 발명에 의하면, 값관리테이블(10)의 모든 항목값번호는 다른 항목값과 대응하고 있으므로, 특정 값을 갖는 항목값을 포함하는 레코드를 추출할 경우에 필요로 되는 특정의 값과 항목값과의 비교 회수는 최대로 항목값 종류의 수, 즉, 항목값번호의 개수이고, 비교연산의 회수가 현저히 저감되고, 검색,집계의 고 속화가 도모된다. 그 때에는, 어느 항목값이 해당하는지의 여부를 조사한 결과를 격납하는 장소가 필요하지만, 예를 들면 분류번호(12)를 그 격납장소로서 사용할 수 있다.
도 4에는, 항목값을 격납한 항목값배열(11)과, 분류번호를 격납한 분류번호배열(12)과, 존재수를 격납한 존재수배열(14)로 이루어진 값관리테이블(10)을 포함하는 본 발명에 의한 정보블록이 나타내어져 있다. 존재수배열(14)에는 어느 항목에 관한 각 항목값이 전체데이터중에 몇개씩 존재하는 가를 나타낸 수, 바꿔말하면, 소정의 항목값을 갖는 레코드의 개수가 격납된다. 이러한 존재수배열(14)을 값관리테이블(10)에 준비해 둠으로써, 검색, 집계시에 필요로 되는 「어떠한 데이터가 (몇개)존재하는가」라는 정보를 바로 얻을 수 있게 되어 검색, 집계의 고속화가 도모된다.
도 5에는, 값관리테이블(10)과, 값관리테이블로의 포인터배열(20)과, 레코드로의 포인터배열(30)로 이루어진 정보블록이 나타내어져 있다. 레코드로의 포인터배열(30)은 항목값번호, 즉, 항목값마다 그 항목값을 갖는 레코드로의 포인터(레코드번호에 대응한다)가 격납된 배열이다. 각 항목값마다 레코드로의 포인터배열(30)에 격납되는 포인터의 개수는 값관리테이블(10)의 존재수배열(14)에 격납된 수와 일치한다. 또, 레코드로의 포인터배열(30)안에서 각 항목값마다의 포인터군의 선두의 어드레스를 지정하는 개시위치를 격납한 개시위치배열(13)을 값관리테이블(10)에 설치해도 좋다. 이러한 레코드로의 포인터배열(30)을 정보블록에 설치함으로써, 소정의 항목에 관해서 특정의 항목값을 갖는 레코드의 집합을 고속으로 추출할 수 있도록 된다. 값관리테이블(10)에 레코드로의 포인터배열(30)에 격납되는 포인터의 존재수(부호 14참조) 및 그 개시위치(부호 13참조)가 설정되어 있으므로, 집계시에 이용가능한 값, 개수가 정보블록에 그대로 존재하고 있는 점이 유리하다.
다음에, 본 발명에 의한 표형식 데이터의 검색, 집계방법에 대해서 설명한다. 또, 이하의 발명에서는 개별항목정보는 상기 「정보블록」을 나타내고, 항목값번호지정 정보배열은 상기 「값관리테이블로의 포인터배열」을 나타내며, 레코드식별정보배열은 상기 「레코드로의 포인터배열」을 나타낸다.
본 발명에 따른 정보의 항목에 대응한 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식데이터로부터 특정의 항목 및 특정의 레코드에 대응한 항목값을 얻는 방법은,
특정의 항목에 속하는 항목값에 대응한 항목값번호의 순으로 항목값이 격납되어 있는 값관리테이블과, 레코드의 순으로 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 기억장치에 유지하고,
항목값번호 지정정보배열로부터 특정의 레코드에 대응한 항목값번호를 취득하고,
값관리테이블에 격납된 항목값중에서 취득된 항목값번호에 대응한 항목값을 얻는 단계를 포함한다.
또, 본 발명에 따른 항목값을 얻는 방법에 의하면, 항목값번호에 대응한 항목값을 분류하기 위한 분류번호가 항목값번호에 대응해서 값관리테이블에 격납되고, 항목값번호에 대응한 항목값을 얻을 때에 분류번호가 참조된다.
본 발명에 따른 정보의 항목에 대응한 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터로부터 검색조건에 적합한 항목값을 포함하는 레코드를 검색하는 단일항목검색방법은,
검색조건에 관련된 항목에 속하는 항목값에 대응한 항목값번호의 순으로 항목값이 격납되어 있는 값관리테이블과, 레코드의 순으로 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열과, 같은 항목값번호에 대응한 상기 레코드의 식별정보가 항목값번호마다 별개로 격납된 레코드식별정보배열을 포함하고, 값관리테이블은 레코드식별정보배열중에서 같은 항목값번호에 대응한 레코드의 식별정보가 격납되어 있는 장소를 나타내는 레코드식별정보 지정정보가 항목값번호마다 격납되어 있는 개별항목정보를 기억장치에 유지하고,
값관리테이블에 격납된 항목값중에서 검색조건에 적합한 항목값과 관련된 항목값번호에 대응해서 격납된 레코드식별정보 지정정보를 이용하여 레코드식별정보배열로부터 검색조건에 적합한 레코드의 식별정보를 꺼내는 단계를 포함한다.
또, 본 발명에 따른 복수항목검색방법은
본 발명의 단일항목검색방법에 따라 얻어진 상기 검색조건에 적합한 레코드의 식별정보에 근거해서 상기 검색조건에 적합한 레코드를 지정하는 결과집합을 기억장치에 유지하고,
다른 검색조건과 관련된 항목에 관한 다른 개별항목정보를 선택하고,
다른 개별항목정보의 항목값번호 지정정보배열로부터 상기 결과집합에서 지정된 상기 검색조건에 적합한 레코드의 식별정보에 대응한 항목값번호를 꺼내고,
다른 개별항목정보에 대해서 꺼내어진 항목값번호와 관련된 항목값이 다른 검색조건과 적합한지의 여부를 판정하고,
다른 개별항목정보에 대해서 항목값번호와 관련된 항목값이 다른 검색조건과 적합한 경우에, 항목값번호에 대응한 상기 레코드의 식별정보를 다른 검색조건에 적합한 레코드의 식별정보로서 꺼내는 단계를 포함한다.
또는, 복수항목검색방법을 변형함으로써, 소위 OR검색을 실현할 수도 있다. 보다 상세하게는 검색조건에 적합한 레코드의 식별정보에 근거해서 검색조건에 적합한 레코드를 지정하는 결과집합을 기억장치에 유지하고,
다른 검색조건과 관련된 항목에 관한 다른 개별항목정보를 기억장치에 유지하고,
다른 개별항목정보의 값관리테이블에 격납된 항목값중에서 검색조건에 적합한 항목값과 관련된 항목값에 대응하는 레코드식별정보 지정정보를 이용해서 레코드식별정보배열로부터 다른 검색조건에 적합한 레코드식별정보를 꺼내어, 검색조건에 적합한 레코드를 지정하는 다른 결과집합을 기억하고,
필요한 경우에, 또 다른 검색조건에 관해서 또 다른 개별항목정보에 대해서 개별항목정보의 기억, 레코드식별정보의 꺼내기, 및, 또 다른 결과집합의 기억을 반복해서 얻어진 결과집합으로부터 중복된 레코드를 제거한 최종적인 결과집합을 얻는다.
본 발명에 따른 정보의 항목에 대응한 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터를 항목값마다 집계하는 방법은,
n이 1이상의 정수를 나타내는 경우에, 집계에 이용되는 n개의 항목에 대해서, 상기 항목에 속하는 항목값에 대응한 항목값번호의 순으로 상기 항목값이 격납되어 있는 값관리테이블과, 레코드의 순으로 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열에 의해 나타내어진 n개의 개별항목정보를 기억장치에 유지하고,
i가 1≤i≤n인 정수를 나타낼 때, i번째의 개별항목정보에 대해서 항목값번호의 총수가 Ni로 나타내어지고, ki가 0≤ki≤Ni-1인 정수를 나타내며, M이 1이상의 정수를 나타내며, m이 1≤m≤M인 정수일 때, N1×N2×...×Ni×...Nn의 사이즈를 갖는 n차원의 M개의 데이터공간의 각 요소Pm(k1, k2, ..., ki, ..., kn)을 초기화하고,
n개의 개별항목정보에 대해서, j가 0≤j≤(레코드의 총수-1)인 정수를 나타낼 때, 각 항목값번호 지정정보배열의 j번째에 격납된 각각의 항목값번호를 꺼내고, i번째의 개별항목정보에서 꺼내어진 항목값번호가 qi로 나타내어질 때, 데이터공간의 요소Pm(q1, q2, ..., qi, ..., qn)을 특정하고,
특정된 요소 Pm(q1, q2, ..., qi, ..., qn)의 값을 처리하는 단계를 포함한다.
또, 본 발명에 따른 정보의 항목에 대응한 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터를 항목값의 분류마다 집계하는 방법은,
n이 1이상의 정수를 나타내며, 집계에 이용되는 n개의 항목에 대해서, 항목에 속하는 항목값에 대응한 항목값번호의 순으로 항목값 및 항목값의 분류번호가 격납되어 있는 값관리테이블과, 레코드의 순으로 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열에 의해 나타내어진 n개의 개별항목정보를 기억장치에 유지하고,
삭제
삭제
삭제
삭제
삭제
i가 1≤i≤n인 정수를 나타낼 때, i번째의 개별항목정보에 대해서 항목값번호 또는 분류번호 중 어느 한 쪽의 번호의 총수가 Ni로 나타내어지고, ki가 0≤ki≤Ni-1인 정수를 나타내며, M이 1이상의 정수를 나타내며, m이 1≤m≤M인 정수일 때, N1×N2×...×Ni×...Nn의 사이즈를 갖는 n차원의 M개의 데이터공간의 각 요소Pm(k1, k2, ..., ki, ..., kn)을 초기화하고,
n개의 개별항목정보에 대해서, j가 0≤j≤(레코드의 총수-1)인 정수를 나타낼 때, 각 항목값번호 지정정보배열의 j번째에 격납된 각각의 항목값번호를 꺼내고, i번째의 개별항목정보에서 꺼내어진 항목값번호 또는 상기 i번째의 개별항목정보의 값관리테이블에 그 항목값번호와 대응해서 격납된 분류번호가 qi로 나타내어질 때, 상기 데이터공간의 요소Pm(q1, q2, ..., qi, ..., qn)을 특정하고,
특정된 요소 Pm(q1, q2, ..., qi, ..., qn)의 값을 처리하는 단계를 포함한다.
특히, 본 발명에 따른 개수를 집계하는 방법에 의하면, M=1이고, 특정된 요소 Pm의 값을 처리하는 단계에서는 요소 Pm의 현재의 값에 1을 더한다.
또, 본 발명에 따른 통계적인 양을 집계하는 방법에 의하면, 특정된 요소 Pm의 값을 처리하는 단계는 M개의 요소 Pm중의 적어도 1개의 요소Pm에 대해서,
기억장치에 유지된 다른 개별항목정보에 대해서 항목값번호 지정정보배열의 j번째에 격납된 항목값번호를 취득하고,
다른 개별항목정보의 값관리테이블에 격납된 항목값중에서 취득된 항목값번호에 대응한 항목값을 취득하고,
요소 Pm의 현재의 값과 상기 취득된 항목값을 조합해서, 요소Pm의 값을 갱신한다.
본 발명에 의하면, 항목값번호를 지정하는 정보는 항목값번호자체라도 좋다.
또는, 어느 레코드의 하나의 항목에 대해서 복수의 항목값이 할당될 것같지 않은 소위 멀티앤서항목을 실현하기 위해 본 발명에 의하면, 상기 항목값번호를 지정하는 정보는 각 항목값번호마다 1비트이상이 할당되고, 지정의 유무가 설정되는 2진값이어도 상관없다.
또, 본 발명에 의한 정보의 항목에 대응한 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터를 검색, 집계하는 장치는
항목에 속하는 항목값에 대응한 항목값번호의 순으로 항목값이 격납되어 있는 값관리테이블과, 레코드의 순으로 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 유지하는 기억장치와,
기억장치에 유지된 항목값번호 지정정보배열로부터 특정의 레코드에 대응한 항목값번호를 취득하는 수단과,
기억장치에 유지된 값관리테이블에 격납된 항목값중에서 취득된 항목값번호에 대응한 항목값을 얻는 수단을 갖는 것을 특징으로 한다.
또, 본 발명에 따른 정보의 항목에 대응한 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터를 검색, 집계하는 프로그램을 기록한 기억매체는,
항목에 속하는 항목값에 대응한 항목값번호의 순으로 항목값이 격납되어 있는 값관리테이블과, 레코드의 순으로 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 기억장치에 유지시키는 단계와,
기억장치에 유지된 항목값번호 지정정보배열로부터 특정의 레코드에 대응한 항목값번호를 취득시키는 단계와,
기억장치에 유지된 상기 값관리테이블에 격납된 항목값중에서 상기 취득된 항목값번호에 대응한 항목값을 얻게 하는 단계를 갖는 것을 특징으로 하는 프로그램을 기록한 기억매체이다.
본 발명은 또한, 정보의 항목에 대응한 항목값을 포함하는 레코드를 지정하는 레코드식별정보, 예를 들면, 레코드번호의 배열을 항목에 관해서 재정렬하는 레코드의 소트방법을 제안한다. 본 발명의 소트방법에 의하면, 레코드마다 레코드식별정보와 어느 항목의 항목값에 대응한 항목값번호가 관련지어진 값관리테이블로의 포인터배열이 형성된다. 다음에, 항목값번호마다 레코드식별정보의 재정렬후의 격납장소가 값관리테이블중에 정의된다. 배열로부터 상기 레코드식별정보가 차례로 꺼내어지고, 꺼내어진 레코드식별정보에 대응한 상기 항목값번호가 판정되고, 꺼내어진 레코드식별정보는 판정된 항목값번호에 대응해서 정의되는 격납장소에 격납되고, 레코드식별정보가 격납되는 격납장소가 다음의 레코드식별정보가 격납될 수 있 도록 갱신된다.
본 발명에 따른 소트방법의 바람직한 실시형태에 있어서는 검색조건과 관련된 항목에 속하는 항목값에 대응한 항목값번호의 순으로 항목값이 격납되어 있는 값관리테이블과, 레코드의 순으로 항목값번호를 지정하는 정보가 격납된 항목값번호지정정보배열을 포함하는 개별항목정보를 기억장치에 유지하고, 값관리테이블이 다시 항목값번호마다 레코드식별정보배열에 있어서 서로 같은 항목값번호에 관련되는 하나이상의 레코드식별정보를 격납한 영역을 나타내는 레코드식별정보 지정정보를 포함하고, 격납하는 단계가 레코드식별정보 지정정보에 따라 레코드식별정보를 격납장소에 격납하도록 구성되어 있다.
또한, 본 발명의 목적은 상기 방법을 실현하기 위한 장치, 방법에 관한 프로그램을 격납한 컴퓨터에 의해 읽기가능한 기억매체, 또는 그 방법에 따른 컴퓨터에 의해 로드가능한 프로그램프로덕트에 의해 달성된다.
도 1은 일반적인 표형식 데이터의 설명도이다.
도 2의 (A) 및 도 2의 (B)는 종래기술에 따른 표형식 데이터의 격납기술의 설명도이다.
도 3은 본 발명의 원리설명도이다.
도 4는 본 발명에 따른 정보블록의 설명도이다.
도 5는 본 발명에 따른 정보블록의 설명도이다.
도 6은 본 발명의 실시예에서 사용되는 「성별」에 관한 정보블록의 설명도 이다.
도 7은 본 발명의 실시예에서 사용되는 「연령」에 관한 정보블록의 설명도이다.
도 8은 본 발명의 실시예에서 사용되는 「성별」에 관한 정보블록의 설명도이다.
도 9는 본 발명의 제1실시예에 따른 단일항목내의 검색방법의 동작플로챠트이다.
도 10은 본 발명의 제1실시예에 따른 정보블록의 설명도이다.
도 11은 본 발명의 제1실시예에 따른 정보블록의 설명도이다.
도 12는 본 발명의 제2실시예에 따른 정보항목의 AND검색방법의 동작플로챠트이다.
도 13은 본 발명의 제2실시예에 따른 정보블록의 설명도이다.
도 14는 본 발명의 제2실시예에 따른 정보블록의 설명도이다.
도 15는 본 발명의 제3실시예에 따른 비트플래그를 이용한 복수항목 논리연산검색방법의 설명도이다.
도 16은 본 발명의 제3실시예에 따른 비트플래그를 이용한 복수항목 논리연산검색방법의 설명도이다.
도 17은 본 발명의 제5실시예에 따른 집계방법의 동작플로챠트이다.
도 18은 본 발명의 제6실시예의 개념적인 설명도이다.
도 19는 본 발명의 제6실시예의 동작플로챠트이다.
도 20은 본 발명의 제7실시예에 따른 크로스집계의 동작플로챠트이다.
도 21은 본 발명의 제8실시예에 따른 정보블록의 설명도이다.
도 22는 본 발명의 제9실시예에 따른 크로스집계의 동작플로챠트이다.
도 23의 (A) 및 도 23의 (B)는 크로스집계표의 개념설명도이다.
도 24는 멀티앤서형식의 항목의 설명도이다.
도 25는 본 발명의 제10실시예에 따른 멀티앤서항목대응형 정보블록의 설명도이다.
도 26은 본 발명의 제11실시예에 따른 특수값의 취급방법의 설명도이다.
도 27은 본 발명의 제12실시예에 따른 복수항목검색방법의 동작플로챠트이다.
도 28은 본 발명의 일실시예에 따른 표형식 데이터의 검색, 집계시스템의 구성도이다.
도 29는 정보블록의 구축방법의 설명도이다.
도 30은 데이터투입의 준비와 초기화의 설명도이다.
도 31은 데이터투입의 제1버스의 설명도이다.
도 32는 데이터투입의 제2버스의 설명도이다.
도 33은 데이터투입의 제3버스의 설명도이다.
도 34는 데이터투입의 제3버스의 설명도이다.
도 35는 데이터투입의 제3버스의 설명도이다.
도 36은 정보블록에 대한 데이터추가의 설명도이다.
도 37은 본 발명의 다른 실시예에 따른 정보블록의 구조를 나타낸 도이다.
도 38은 본 발명의 제13실시예에 따른 소트의 초기상태의 설명도이다.
도 39는 본 발명의 제13실시예에 따른 소트의 제1단계의 설명도이다.
도 40은 본 발명의 제13실시예에 따른 소트의 제2단계의 설명도이다.
도 41은 본 발명의 제13실시예에 따른 소트의 최종상태의 설명도이다.
도 42는 부분집계에 대한 소트의 설명도이다.
도 43은 부분집계에 대한 소트의 후처리의 설명도이다.
도 44는 검색, 집계테스트에 사용한 100만건의 데이터의 설명도이다.
도 45는 100만건의 데이터의 검색, 집계테스트의 측정결과를 나타낸 도이다.
도 46의 (A) 및 도 46의 (B)는 본 발명의 제2실시예의 변형에 따른 복수항목의 OR검색처리를 나타낸 플로챠트이다.
도 47은 본 발명의 제3실시예에 따른 검색처리를 나타낸 플로챠트이다.
도 48은 본 발명의 제4실시예에 따른 집계처리를 나타낸 플로챠트이다.
도 49는 본 발명의 제7실시예에 따른 집계처리를 나타낸 플로챠트이다.
도 50은 본 발명의 제13실시예에 따른 소트처리를 나타낸 플로챠트이다.
이하, 본 발명을 보다 잘 이해할 수 있도록 도 1에 나타낸 표형식 데이터를 데이터의 예로서 사용해서, 본 발명에 따른 검색방법, 집계방법 및 소트방법의 각종 실시예를 상세하게 설명한다. 도 1의 예에 나타내는 데이터는 「성별」, 「연령」 및 「직업」의 항목을 포함하므로, 정보블록으로서, 도 6 내지 도 8에 각각 나 타내어져 있듯이, 「성별」에 관한 정보블록, 「연령」에 관한 정보블록 및 「직업」에 관한 정보블록이 얻어진다. 이하의 실시예의 설명에서는 이들 정보블록이 얻어진 상황을 상정하고 있다. 또, 정보블록을 구축하는 방법의 일례는 후술하지만, 본 발명은 정보블록을 구축하는 방법에 의해 제한되지 않는 것에 주의할 필요가 있다.
후술하는 바와 같이, 본 발명의 실시예에 따른 표형식 데이터의 검색, 집계장치는 도 28에 나타내는 구성을 구비하고 있다. 도 28에 나타내듯이, 표형식 데이터의 검색, 집계장치는 통상의 퍼스널컴퓨터와 같은 컴퓨터시스템에 의해 실현된다. 이 컴퓨터시스템은 프로그램을 실행함으로써, 시스템전체 및 각각의 구성부분을 제어하는 CPU(100), 프로그램 등을 기억하는 ROM(Read Only Memory)(110), 워크데이터 등을 기억하는 RAM(Random Access Memory)(120), 하드디스크기억장치(130), 표시장치(140) 및 키보드나 마우스로 이루어진 입력장치(150)를 구비하고 있다. 이들 CPU(100), ROM(110), RAM(120) 등은 버스(160)을 통해 서로 접속되어 있다. 또, 버스에는 CD-ROM을 액세스하기 위한 CD-ROM드라이버(도시생략), 외부네트워크(도시생략)와 접속된 외부단자와의 사이에 설치된 인터페이스(도시생략) 등이 접속되어 있어도 좋다.
본 실시형태에 따른 표형식 데이터를 검색, 집계(경우에 따라서는 이것에 추가해서 소트)하는 프로그램은 CO-ROM(도시생략)에 수용되고, CD-ROM드라이버(도시생략)에 입력되어도 좋고, ROM(110)에 미리 기억되어 있어도 좋다. 또, 일단 CD-ROM으로부터 판독한 것을, 하드디스크기억장치(130)의 소정 영역에 기억해 두어도 좋다. 또는, 상기 프로그램은 네트워크, 외부단자 및 I/F(모두 도시생략)를 거쳐 외부로부터 공급되는 것이어도 좋다.
또, 상기 검색, 집계장치에 있어서, 표형식 데이터의 검색, 집계(경우에 따라서는 이것에 추가해서 소트)처리를 실행하기 위해, 후술하듯이, 표형식 데이터에 기초해서, 소정의 데이터형식의 정보블록을 생성할 필요가 있다. 이 정보블록생성프로그램도 마찬가지로, CO-ROM에 수용되고, ROM(110)에 기억되고, 또는, 하드디스크기억장치(130)에 기억되어도 좋다. 또는, 이들 프로그램은 네트워크(도시생략)를 통해 외부로부터 공급되어도 좋은 것은 말할 필요도 없다. 또, 본 실시형태에 있어서, 상기 정보블록을 생성하는 정보블록생성프로그램으로 생성된 데이터(정보블록)는, RAM(120), 또는 하드디스크기억장치(130)의 소정 영역에 기억된다. 이하에, 「연령」의 항목값이 「16세」 또는 「19세」인 레코드를 검색하는 경우에 관해서, 본 발명의 제1실시예에 따른 단일항목내의 검색방법을 설명한다. 도 9는 단일항목내의 검색방법의 동작플로챠트이다. 이것은 CPU(100)가 상술한 절차로 취득하고, 소정 위치에 기억한 검색프로그램을 실행함으로써 실현된다.
처음에, 표형식 데이터에 관한 정보블록중에서 도 7에 나타낸 「연령」에 관한 정보블록을 특정정보블록으로서 선택한다(단계100).
다음에, 특정정보블록의 값관리테이블중에서 항목값이 상기 검색조건인 「16」또는 「19」에 합치하는 행의 분류번호를 「1」로 셋트하고, 그이외의 행의 분류번호를 「0」으로 셋트한다(단계102). 도 10에 나타내듯이 본 실시예의 경우, 항목값번호「0」 및 항목값번호「3」에 대응하는 행의 분류번호가 「1」로 셋트된다.
계속해서, 분류번호가 「1」로 셋트되어 있는 행(즉, 항목값번호「0」 및 「3」이 부여되어 있는 행)에 대응한 개시위치 및 존재수를 포인터꺼냄정보로서 취득한다(단계104). 본 실시예의 경우, 항목값번호「0」에 대응하는 개시위치는 「0」이고, 그 존재수는 「45898」이다. 한편, 항목값번호「3」에 대응하는 개시위치는 「238137」이고, 그 존재수는 「189653」이다.
레코드로의 포인터배열중에서, 상기 개시위치로부터 존재수로 지정된 개수분의 포인터를 꺼냄으로써, 상기 검색조건에 합치한 레코드로의 포인터를 나타낸 레코드번호가 꺼내어진다(단계106). 본 실시예의 경우, 도 10에 나타내어져 있듯이, 항목값번호「0」에 대응한 레코드로의 포인터는 레코드로의 포인터배열의 개시위치「0」, 즉, 선두로부터 45898개째까지의 장소에 격납되고, 항목값번호「3」에 대응한 레코드로의 포인터는 레코드로의 포인터배열의 2383137번째로부터 189653개분의 장소에 격납되어 있는 것을 알 수 있다. 예를 들면, 도 1의 표형식 데이터를 참조하면, 마지막의 레코드번호「999999」의 레코드에 대응하는 「연령」은 「16세」이므로, 도 11에 나타내는 바와 같이, 레코드포인터로의 배열내에서 항목값번호「0」, 즉, 「16세」의 「연령」에 대응해서 격납된 포인터중에서 마지막의 포인터는 「999999」이다.
마지막으로, 후처리에서 이용하기 위해, 꺼내어진 레코드번호의 배열을 결과집합으로서 작성, 유지한다(단계108).
본 발명에 있어서는, 상술한 바와 같은 단일항목에 의한 검색뿐만 아니라, 복수항목의 AND검색을 실현할 수도 있다. 이하, 본 발명의 제2실시예에 따른 복수항목의 AND검색방법을 설명한다. 본 실시예에서는 「연령」이 「16세」 또는 「19세」라는 제1검색조건과, 「직업」이 「학생」이라는 제2검색조건을 만족하는 레코드의 집합을 얻는 경우를 고려한다. 도 12는 복수항목의 AND검색방법의 동작플로챠트이다.
이미 설명한 바와 같이, 제1항목인 「연령」에 관한 정보블록인 제1특정정보블록에 대해서, 「연령」이 「16세」 또는 「19세」인 레코드의 결과집합은 제1실시예에 따른 처리에 따라 얻어진다(단계120). 따라서, 이 단계120의 처리는 도 9에 나타낸 것과 대략 대응한다.
다음에, 도 8에 나타내어져 있는 제2항목인 「직업」에 관한 정보블록인 제2특정정보블록으로서 선택한다(단계122).
다음에, 제2특정정보블록의 값관리테이블중에서 항목값이 상기 검색조건인 「학생」에 합치하는 행의 분류번호를 「1」로 셋트하고, 그 이외의 행의 분류번호를 「0」으로 셋트한다(단계124). 도 13에 나타내듯이 본 실시예의 경우, 항목값번호「0」에 대응하는 행의 분류번호가 「1」로 셋트되고, 그이외의 행은 「0」으로 셋트된다.
다음에, 제1검색조건에 관한 결과집합으로부터, 레코드로의 포인터를 나타내는 레코드번호를 차례로 꺼낸다(단계126). 예를 들면, 도 14에 나타내듯이, 레코드번호「999999」가 꺼내어진다.
다음에, 제2특정정보블록에 관해서, 값관리테이블로의 포인터배열로부터 상기 제1검색조건에 대해서 얻어진 레코드번호에 대응한 항목값번호를 꺼낸다(단계128). 예를 들면, 도 14에 나타내어지듯이, 레코드번호「999999」에 대응한 항목값번호「0」이 꺼내어진다.
다음에, 제2특정정보블록에 관해서 꺼내어진 항목값번호에 대응하는 분류번호가 「1」로 셋트되어 있는지의 여부를 판정한다(단계130). 예를 들면, 도 14에 나타내어져 있듯이 항목값번호「0」에 대응하는 분류번호는 「1」로 셋트되어 있는 것을 알 수 있다.
분류번호가 「1」로 셋트되어 있는 경우, 값관리테이블로의 포인터배열내에서, 분류번호가 「1」로 셋트되어 있는 상기 항목값번호를 가리키는 포인터가 격납되어 있는 장소에 대응한 레코드로의 포인터, 예를 들면, 레코드번호를 최종적인 결과집합에 추가한다(단계132). 예를 들면, 도 14에 나타내어져 있듯이, 레코드번호「999999」가 최종적인 결과집합에 추가된다.
분류번호가 「0」인 경우에는, 최종적인 결과집합은 갱신되지 않는다.
또, 당업자이면 용이하게 알 수 있듯이, 상기 본 발명의 제2실시예에 따른 복수항목AND검색방법은, AND이외의 검색, 예를 들면 복수항목OR검색방법으로 변형하는 것이 가능하다. 도 46의 (A)는 복수항목의 OR검색방법의 처리의 일례를 나타낸 플로챠트이다. 이 처리도 CPU(100)가 소정 영역에 격납된 프로그램을 실행함으로써 실현된다. 도 46에 나타내듯이, 먼저, 제1검색조건에 대해서 결과집합을 취득한(단계4601) 후에, 제2검색조건에 따른 정보블록을 선택한다(단계4602). 계속해서, 이 정보블록에 관해서 제2검색조건에 대해서 분류번호를 셋트한다(단계4603). 그리고, 제1검색조건의 결과집합에 격납된 레코드번호를 스킵하면서, 제2특정정보 블록에 대한 값관리테이블로의 포인터배열을 차례로 조사한다(단계4604). 보다 상세하게는, 제2검색조건에 관해서 분류번호가 「1」로 되어 있는 레코드번호를 참조하여, 이 레코드번호가 제1검색조건에 의한 결과집합속에 발견되는지의 여부가 판정된다(단계4611∼4615참조). 제1검색조건에 의한 결과집합속에 그 번호가 발견되지 않은 경우에는, 결과집합에 그 번호가 추가된다(단계4614). 이러한 처리가 종료된 후에, 제1검색조건의 결과집합에 격납된 레코드번호와, 제2정보블록에 대해서 분류번호가 셋트된 항목값번호에 속하는 레코드번호를 아울러 제2결과집합으로서 생성하고(단계4615), 이것을 출력할 수 있다.
또는, 도 46의 (B)에 나타낸 처리를 실행해도 좋다. 이 예에서는, 제1특정정보에 관한 검색조건에 의해 제1결과집합이 얻어진 후에, 이것과는 독립해서, 제2특정정보에 관한 제2검색조건에 의해 제2결과집합을 얻고(단계4621∼단계4624), 제1결과집합과, 제1결과집합(단계4625참조)사이에서 비트맵을 이용한 OR처리를 실시해서(단계4626), 이것에 의해 새로운 결과집합이 작성된다(단계4627). 또, 도 46의 (B)의 처리에 있어서, 단계4602, 4603은 도 46의 (A)의 단계4621, 4622에 대응하고, 단계4625는 도 46의 (A)의 단계4601에 대응한다.
도 15 및 도 16은 본 발명의 제3실시예에 의한 비트플래그를 이용한 복수항목 논리연산검색방법의 설명도이고, 상기 본 발명의 제2실시예에 의한 검색과 동일한 검색조건으로 검색을 행하는 경우를 나타내고 있다. 비트플래그를 이용한 복수항목 논리연산검색이란 검색조건이 항목마다의 검색조건사이의 논리연산에 의해 나타내어지는 검색을 의미한다. 이 경우, 단일항목의 검색에 의해 얻어지는 결과집합 을 제1실시예와 같이, 레코드번호의 배열에 의해 구성하는 것은 아니고, 결과집합을 비트플래그의 형식으로 구성하는 쪽이 유리하다. 즉, 도 47에 나타내는 처리에 따라 전체레코드에 대해서 1비트씩을 할당하고, 각 레코드가 검색조건에 적합한지의 여부를 비트값「1」 또는 「0」에 의해 나타내어지는 결과집합을 생성한다. 보다 상세하게는 먼저, 다른 실시예와 마찬가지로, 검색조건에 따른 항목값을 포함하는 정보블록이 선택되고(단계4701), 검색조건에 합치하는 행의 분류번호를 「1」로 셋트한다(단계4702). 계속해서, 각 레코드에 대해서 대응하는 분류번호를 참조해서 결과집합에 격납할 비트값을 결정한다(단계4703∼단계4707). 결과집합을 이와 같이 구성함으로써, 각 항목마다의 결과집합의 사이즈가 표형식 데이터의 레코드수와 대응하므로, 각 항목마다의 결과집합의 사이즈가 일치하고, 그 결과로서 결과집합중의 요소간의 논리연산, 예를 들면 AND, OR, XOR를 간단하게 행할 수 있다.
본 실시예에서는, 도 15에 나타낸 결과집합A와 도 16에 나타낸 결과집합B를 AND조건으로 결합함으로써 원하는 검색결과집합이 비트플래그형식으로 얻어진다. 또, 얻어진 비트플래그형식의 검색결과집합은 레코드로의 포인터배열형식의 결과집합으로 변환함으로써, 상기 본 발명의 제2실시예에 의한 복수항목검색방법과 조합해서 이용할 수 있다.
다음에, 본 발명에 따른 각종 표형식 데이터의 집계방법에 대해 설명을 추가한다. 본 발명의 제4실시예에 의한 집계방법은 특정의 항목에 관해서 특정의 항목값을 갖는 레코드수를 카운트한다. 본 발명의 제4실시예에서는 특히, 도 1의 표형식 데이터에 관해서, 항목「성별」에 대해서 「남성」이라는 항목값 및 「여성」이 라는 항목값을 갖는 레코드의 수를 각각 카운트하는 경우를 고려한다. 이미, 도 6에 나타냈듯이, 본 발명의 바람직한 실시예에 의하면, 「성별」에 관한 정보블록에는 항목값 「남성」을 포함하는 레코드의 존재수(그 값은 「632564」이다), 및 항목값「여성」을 포함하는 레코드의 존재수(그 값은 「367436」이다)가 격납되어 있으므로, 단순한 레코드수의 집계는 정보블록중의 존재수 배열을 참조함으로써 바로 얻을 수 있다.
또, 단일 항목의 검색방법에 관련해서 설명한 분류번호를 상기 본 발명의 제4실시예에 의한 집계방법과 조합함으로써, 더욱 복잡한 조건인 경우에도 레코드수의 카운트를 간단하게 행할 수 있다. 예를 들면 본 발명의 제1실시예에서 설명한 「연령」의 항목값이 「16세」 또는 「19세」인 레코드를 검색하는 단일항목검색방법에 있어서, 분류번호가 「1」로 셋트된 항목값번호에 대응한 존재수를 합계함으로써, 검색조건에 적합한 레코드수를 집계하는 것이 가능하다. 이와 같이, 분류번호를 사용함으로써, 값관리테이블의 사이즈가 큰 경우, 또는, 복잡한 조건이 부여된 경우이어도 존재수를 효율적으로 구할 수 있게 된다. 보다 일반적으로는 도 48에 나타내듯이, 분류번호가 「1」로 셋트된 항목값번호를 찾고(단계4802참조), 대응하는 존재수를 가산해 가면 좋다(단계4803참조).
다음에, 본 발명의 제5실시예에 대해 설명을 추가한다. 이 실시예에서는 「남성」의 평균연령이 산출되어 있다. 평균연령은 (남성의 「연령」의 총합)/(남성의 존재수)에 의해 구할 수 있고, 또, 남성의 존재수는 상기 본 발명의 제4실시예에서 설명한 집계방법에 의해 얻을 수 있다. 따라서, 본 실시예는 남성의 「연령」 의 총합을 구하는 문제에 귀착된다. 도 17은 본 발명의 제5실시예의 동작을 나타내는 플로챠트이다. 이 처리도 다른 실시예와 마찬가지로, CPU(100)이 소정 영역에 기억된 프로그램을 판독하고 이것을 실행함으로써 실현된다.
처음에, 도 6에 나타낸 「성별」에 관한 정보블록을 제1정보블록으로서 선택하고(단계140), 제1특정정보블록의 값관리테이블중에서, 항목값「남성」에 대응한 항목값번호「0」을 검출한다(단계142). 다음에, 항목값번호「0」에 대응한 존재수가 「632564」인 것으로부터 남성의 총수가 632564명인 것을 판정하고(단계144), 또, 항목값번호「0」에 대응한 개시위치가 「0」인 것으로부터 성별이 남성인 레코드로의 포인터는 레코드로의 포인터배열의 선두로부터 632564개째까지의 장소에 격납되어 있는 것을 판정하고, 이 레코드로의 포인터의 일람, 즉, 레코드번호의 배열을 결과집합으로서 유지한다(단계146).
다음에, 도 7에 나타낸 「연령」에 관한 정보블록을 제2특정정보블록으로서 선택하고(단계148), 제2특정정보블록의 값관리테이블로의 포인터배열로부터 제1특정정보블록에 관한 결과집합에서 지정된 레코드에 대응한 항목값번호를 꺼내고(단계150), 꺼내어진 항목값번호와 관련된 항목값, 즉, 「연령」을 꺼낸다(단계152). 마지막으로, 꺼내어진 「연령」을 차례로 가산해서 연령의 총합을 구하고(단계154), 상기 결과집합에서 지정된 레코드를 모두 처리할 때까지 단계150, 152, 154를 반복한다(단계156). 얻어진 연령의 총합을 존재수로 나눗셈함으로써 연령의 평균이 구해진다(단계158).
다음에, 본 발명의 제6실시예에 대해 설명을 추가한다. 이 예에서는 학생인 남성의 평균연령, 및 학생인 여성의 평균연령을 구하고 있다. 도 18은 본 발명의 제6실시예를 개념적으로 설명하는 도이고, 도 19는 본 발명의 제6실시예에 따른 동작을 나타내는 플로챠트이다.
본 실시예의 집계는 처음에, 제1정보블록으로서 「직업」에 관한 정보블록에 관한 정보블록을 선택하고(단계170), 「직업이 학생이다」라는 검색조건을 이용해서 모든 레코드중에서 「직업이 학생이다」라는 레코드를 포함하는 결과집합을 작성한다(단계172).
다음에, 「성별」에 관한 정보블록을 제2정보블록으로서 선택하는 동시에, 「연령」에 관한 정보블록을 제3정보블록으로서 선택하고(단계174), 결과집합의 선두로부터 차례로 레코드로의 포인터를 꺼낸다(단계176).
꺼내어진 레코드로의 포인터를 이용해서, 제2정보블록의 값관리테이블로의 포인터배열을 참조해서 꺼내어진 레코드로의 포인터에 대응한 성별을 획득하고, 또, 제3정보블록의 값관리테이블로의 포인터배열을 참조해서 꺼내어진 코드로의 포인터에 대응한 연령을 꺼낸다(단계178). 꺼내어진 성별의 남녀별의 총수를 1개씩 증가하고, 꺼내어진 연령의 합계를 남녀별로 계산한다(단계180).
결과집합의 모든 레코드로의 포인터가 처리되었는지의 여부를 검사하고(단계182), 모든 레코드로의 포인터가 처리된 경우에 남녀별로 연령의 합계를 총수로 나눗셈함으로써 학생의 남녀별의 평균연령을 계산한다(단계184).
다음에, 도 20에 나타낸 동작플로챠트를 참조해서 본 발명의 제7실시예에 대해 설명을 추가한다. 이 실시예에서는 소위 크로스집계를 실현하고 있다. 또, 도 20에 나타낸 처리프로그램도 다른 실시예와 마찬가지로, CPU(100)에 의해 판독되어 실행된다. 본 실시예에서는 도 1의 표형식 데이터에 관해서 레코드전체를 대상으로서, 성별/직업별의 존재수를 구하는 경우를 고려한다.
집계에 이용되는 「성별」 및 「직업」의 2개의 항목에 대해서, 각각의 값관리테이블과, 항목값번호 지정정보배열, 즉, 값관리테이블로의 포인터배열에 의해 나타낸 2개의 개별항목정보, 즉, 제1 및 제2정보블록을 기억장치에 유지한다(단계190). 기억장치는 예를 들면 메모리, 가상기억, 메모리맵파일 등의 형태로 실현된다.
성별에 관한 제1정보블록에 대해서, 도 6에 나타내는 바와 같이 성별의 항목값번호의 총수는 「2」이고, 또, 직업에 관한 제2정보블록에 대해서, 도 8에 나타내는 바와 같이, 직업의 항목값번호의 총수는 「4」인 것을 알 수 있다. 여기에서, 집계데이터를 격납하는 공간으로서 초기적인 2×4(2행 4열)의 2차원 배열을 생성한다(단계192).
제1 및 제2정보블록에 대해서, 각각의 값관리테이블로의 포인터배열의 선두로부터 차례로 각각의 항목값번호(q1, q2)를 꺼내고, 이것에 의해, 2차원배열의 1개의 요소P(q1, q2)를 특정하고(단계194), 특정된 요소 P(q1, q2)의 값을 1만큼 증가시킨다(단계196).
값관리테이블로의 포인터배열로부터 모든 항목값번호(즉, 레코드총개수의 항목값번호)가 꺼내졌는지의 여부를 검사하고(단계198), 아직 항목값번호가 남겨져 있을 때에는 단계194로 돌아가고, 그렇지 않으면, 집계처리를 종료한다. 이때, 2차원의 크로스표가 완성된다.
상기 본 발명의 제7실시예에서는 도 1의 표형식 데이터의 레코드전체를 대상으로서 집계를 행하고 있지만, 레코드의 부분집합을 대상으로서 동일한 집계, 예를 들면 연령이 16세인 사람의 성별/직업별의 존재수를 집계하는 것이 가능하다. 그 때문에, 처음에, 연령 16세를 검색조건으로서 단일항목검색을 행하여, 연령16세에 해당하는 레코드의 식별정보를 결과집합으로서 취득, 유지한다. 다음에, 이미, 복수항목AND검색에 관해서 설명한 바와 같이, 이 결과집합에 포함되는 레코드, 즉, 레코드의 부분집합을 대상으로서 이 결과집합에 포함되는 레코드의 식별정보를 선두로부터 차례로 꺼내고, 레코드의 식별정보에 대응한 항목값번호를 값관리테이블로의 포인터배열로부터 꺼내고, 얻어진 항목값번호를 2차원배열의 행과 열의 좌표로 하는 요소값의 카운트를 「1」씩 가산하면 좋다. 즉, 이 처리에서는 도 49에 나타내듯이, 먼저, 도 9에 나타낸 것과 대략 동등한 처리를 실행해서 레코드로의 포인터가 격납된 결과집합이 생성된다(단계4901). 계속해서 이 결과집합을 이용해서 도 20과 대략 동등한 처리가 실행된다. 여기에서는 먼저, 도 20의 처리와 마찬가지로, 집계에 이용되는 항목에 관한 제1 및 제2의 정보블록이 유지되고(단계4902), 계속해서 초기적인 2차원 배열이 생성된다(단계4903).
그후에, 결과집합에 있어서 포인터의 격납위치를 나타낸 번호(이하, 경우에 따라서는 「격납위치번호」라고 부름)가 초기화된다(단계4904). CPU(100)는 프로그램에 따라서, 각 격납위치번호에 관해서 제1 및 제2정보블록에 있어서의 값관리테 이블로의 대응하는 포인터배열을 꺼내고, 2차원 배열중의 요소P(q1, q2)를 특정하고(단계4905), 계속해서 그 요소 P(q1, q2)를 증분한다(단계4906). 이러한 처리가 모든 격납위치번호에 관해서 실행됨으로써(즉, 결과집합중의 앞항목값번호에 관해서 처리가 실시됨으로써), 검색등에 의해 얻어지는 부분집합에 관한 크로스집계를 이룰 수 있다.
다음에, 본 발명의 제8실시예에 대해서 설명을 추가한다. 이 실시예에 있어서는 항목의 항목값이 몇개의 카테고리로 분류되어 있는 상황에서 항목값의 분류마다 존재수를 카운트함으로써, 크로스집계를 실현하고 있다. 예를 들면, 도 8에 나타낸 「직업」에 관한 정보블록을 참조하면, 「직업」에는 「학생」, 「프로그래머」, 「교사」 및 「기타」의 4종류의 항목값이 등록되어 있는 것을 알 수 있다. 이 항목값에 근거한 분류를 새로운 기준, 예를 들면, 수입의 유무에 따라 「소득자」, 「무소득자」 및 「불분명」의 3타입으로 재분류한 경우를 상정한다. 본 실시예에서는 이 상황에서, 「수입의 유무」라는 새로운 카테고리를 작성하여, 성별/수입의 유무에 의한 존재수의 크로스집계를 작성한다.
도 21에 나타낸 「직업」에 관한 정보블록은 특히, 「수입의 유무」에 근거해서 각 항목값번호마다 분류번호가 부여된 값관리테이블을 포함한다. 본 실시예에서는 학생에게는 분류번호「1」(무소득)이 할당되고, 프로그래머 및 교사에게는 분류번호「0」(유소득), 기타에는 분류번호「2」(불분명)이 할당되어 있다.
본 발명의 제8실시예에 따른 크로스집계는 원칙으로서 제7실시예에 따른 크 로스집계와 대략 동등한 처리절차를 갖지만, 집계데이터를 격납하는 2차원 배열의 요소를 지정하는 좌표로서 성별에 관한 제1정보블록의 항목값번호와, 직업에 관한 제2정보블록의 분류번호를 사용하는 점이 상이하다.
2차원배열의 요소의 좌표로서 항목값번호 또는 분류번호 어느것이나 사용할 수 있도록 하기위해, 본 발명의 제8실시예에서는 제1 및 제2정보블록에 대해서, 각 값관리테이블로의 포인터배열에 격납된 각각의 항목값번호를 차례로 꺼내고, 값관리테이블로의 포인터배열로부터 꺼내어진 항목값번호자체 또는 그 항목값번호에 대응해서 값관리테이블에 격납된 분류번호 중 어느 하나에 의해 2차원 배열의 요소P의 좌표를 특정한다.
상술한 예에서는 제1정보블록으로서 「성별」의 정보블록이 이용되고, 제2정보블록으로서 「직업」의 정보블록이 이용된다(도 20의 단계190참조). 다음의 처리단계(단계191)에서는 「성별」의 정보블록에는 2개의 항목값번호가 포함되고, 한편, 「직업」의 정보블록에서는 3개의 분류번호가 포함되므로, 2×3(2행 3열)의 초기적 2차원인 배열이 생성된다.
이것에 계속되는 처리단계에서도, 제1블록의 항목값번호(q1)와, 제2블록의 분류번호(q2)가 꺼내지고, 이것에 의해 2차원 배열중의 1개의 요소P(q1, q2)가 특정되고, 요소P의 값이 증가되도록 되어 있다(단계194, 196참조).
상기 제7실시예 및 제8실시예에 의한 크로스집계는 특히, 존재수를 구하는 형태의 집계이지만, 본 발명은 복수항목별(예를 들면 성별/직업별)로 평균연령을 구하는 크로스집계에도 확장될 수 있는 것에 주의해야할 것이다. 제9실시예는 상술한 타입의 크로스집계를 이룬 것이다.
상기 본 발명의 제7실시예와 같이, 2차원 배열의 요소를 1개씩 증분함으로써 실현되는 존재수를 구하는 타입의 집계방법은 평균연령을 구하는 존재수의 총합이외의 연산을 요하는 타입의 크로스집계로 확장하기 위해 도 22의 동작플로챠트에 나타내도록 변형된다.
즉, 본 발명의 제9실시예에 의하면, 집계를 위해 2개의 2차원 배열이 이용되고, 제1의 2차원 배열에 관해서는 상기 제7실시예와 마찬가지로 성별/직업별의 존재수를 카운트하고, 제2의 2차원 배열에 관해서는 성별/직업별의 연령의 총합을 계산한다. 상세하게 설명하면,
먼저, 성별, 직업 및 연령의 3개의 항목에 대해서 제1, 제2 및 제3의 정보블록을 기억장치에 유지한다(단계200).
성별 및 직업의 항목값번호의 각각의 총수「2」 및 「4」에 대응해서 집계데이터를 격납하는 2개의 2×4(2행 4열)의 초기적인 2차원 배열을 작성한다(단계202).
제1 및 제2정보블록의 값관리테이블로의 포인터배열의 선두로부터 차례로 항목값번호(q1, q2, q3)를 꺼내고, 2차원 배열의 요소의 좌표(q1, q2)를 특정하고(단계204), 특정된 제1의 2차원 배열의 요소P1(q1, q2) 및 의 값을 1개씩 증가한다(단계206).
또한, 「연령」에 관한 정보블록에 대해서, 항목값번호(q3)에 대응한 항목값(즉, 연령)을 취득하고(단계208), 특정된 제2의 2차원 배열의 요소P2(q1, q2 )의 값에 취득된 연령을 가산한다(단계210).
이러한 처리후에 대상이 되는 모든 레코드가 처리되었는지의 여부를 검사하고(단계212), 처리되지 않은 경우에 단계204로 돌아가고, 처리되어 있는 경우에, 2차원배열P1과 2차원배열P2의 각 요소사이에서 연산, 즉 P2(q1, q2)/P1(q1, q2)을 산출한다(단계206). 이것에 의해, 성별/직업별의 평균연령이 얻어지고, 평균의 크로스집계표가 작성된다.
도 23의 (A)는 상기 본 발명의 제7실시예에서 얻어진 크로스집계표의 개념도이다. 이와 같이, 상기 제7실시예에서는 모든 성별/직업의 조합에 관한 존재수가 집계된다. 그러나, 도 23의 (B)에 나타내는 바와 같이 성별/직업별중에서 예를 들면 특히 성별이 여성이고, 직업이 학생인 사람의 존재수만을 알고 싶은 경우가 있다. 본 발명에 의하면, 이 경우의 존재수는 「여성」AND「학생」이라는 복수항목AND검색의 결과집합의 사이즈를 구함으로써 획득된다.
마찬가지로, 상기 본 발명의 제9실시예에서는 모든 성별/직업의 조합에 관해서 평균연령의 크로스집계표를 구하고 있지만, 특히 성별이 여성이고, 직업이 학생인 사람의 평균연령만을 구하는 것이 가능하다. 그 경우, 「여성」AND「학생」이라는 복수항목AND검색의 결과집합의 사이즈로부터 존재수를 구하는 동시에, 그 결과집합에 포함되는 레코드의 식별정보에 의해 지정되는 레코드에 속하는 연령을 가산 해서 연령의 총합을 구하고,(연령의 총합)/(존재수)를 계산함으로써 평균연령의 크로스집계표에 있어서의 특정의 셀에 관한 원하는 값(예를 들면, 평균연령)을 구할 수 있다.
다음에, 본 발명의 제10실시예에 대해서 설명을 추가한다. 도 24는 멀티앤서형식의 항목을 나타낸 도이고, 도 25는 본 발명의 제10실시예에 의한 멀티앤서항목 대응형 정보블록의 설명도이다. 멀티앤서란 예를 들면 「지금, 책상위에 있는 문구류는 무엇입니까?」라는 질문에 대한 회답을 얻은 경우에 「연필, 지우개」또는 「종이, 연필」과 같이 같은 사람으로부터 복수의 회답이 얻어지는 상황을 의미한다. 즉, 멀티앤서의 경우, 하나의 레코드가 하나의 항목에 관해서 복수의 항목값을 지정하는 일이 발생할 수 있다. 도 24는 상기 질문에 대해서, 100만명으로부터 얻은 회답을 그대로 일람표로 한 것이다.
이러한 데이터를 처리하기 위해, 본 발명의 제10실시예에 의하면, 도 25에 나타내듯이, 정보블록의 값관리테이블로의 포인터배열은 전술한 항목값번호자체의 배열과 달리 배열중의 포인터에 항목값번호마다 1비트가 할당되어져 있다. 따라서, 레코드가 그 항목값번호를 지정하고 있는지의 여부를 비트의 온/오프(즉 2진값)에 의해 나타낼 수 있다. 이것에 의해, 하나의 레코드에 대해서, 하나의 항목에 포함되는 복수의 항목값을 지정하는 것이 가능하게 된다. 예를 들면, 도 25에 있어서, 포인터배열중의 포인터(비트포인터)는 4비트이고, 최상위비트가 온(즉 「1」)일 때에, 「종이」라는 회답이 포함된 것을 의미하고, 2번째의 비트가 온일 때에는 「자」라는 회답이 포함되고, 3번재의 비트가 온일 때에는 「지우개」라는 회답이 포함 되는 것을 의미하고 있다. 또한, 최하위비트가 온일 때에는 「연필」이라는 회답이 포함되는 것을 의미하고 있다.
레코드번호「0」에 대응하는 포인터는 「3」이다. 이것은 「21+20」이라고 생각할 수 있다. 따라서, 이 레코드번호에 대응해서, 「연필」및 「지우개」라는 회답이 포함되어 있는 것을 이해할 수 있다. 또, 레코드번호「1」 및 레코드번호「2」에 대응하는 포인터는 각각 「4」, 「10」이고, 이들은 각각 「22」및 「23+21 」이라고 생각할 수 있다. 따라서, 이들 레코드번호에 대응해서 「자」라는 회답, 및 「지우개」및 「종이」라는 회답이 각각 포함되는 것을 알 수 있다.
이 실시예에 의하면, 포인터값의 각 비트에 의미를 부여하고, 복수의 항목값번호를 나타낼 수 있도록 되어 있다. 따라서, 레코드가 복수의 항목값을 갖는 경우이어도, 포인터값에 의해 이것을 표현하는 것이 가능하게 된다.
또, 본 발명에 의하면, 정보블록의 일부분의 구성을 변형하는 것만으로 멀티앤서에 용이하게 대응할 수 있는 점이 유리하다. 실제상, 이러한 변형을 가한 정보블록에 상기 본 발명의 여러 실시예에서 채용된 정보블록을 치환할 수 있다.
다음에, 본 발명의 제11실시예에 대해 설명을 추가한다. 도 26은 본 발명의 제1실시예에 따라, 집계처리시에 발생하는 블랭크, 에러값 등의 특수값의 취급방법을 설명하는 도이다. 도 26에 나타내듯이, 제11실시예에 있어서는 블랭크를 카테고리의 하나로 간주해서 크로스집계를 실행하고 있다. 실제의 데이터를 취급하는 경우에는, 블랭크나, Log(-1)와 같은 숫자적인 에러가 출현하는 일이 있다. 본 발명 에 의하면, 이러한 특수값(블랭크, 에러 등)이어도 값관리테이블에 항목값으로서 등록하고, 등록된 특수값을 그대로 검색이나 집계의 카테고리로서 사용할 수 있는 점이 유리하다.
다음에, 본 발명의 제12실시예에 대해 설명을 추가한다. 도 27에 나타낸 본 발명의 제12실시예에 의한 복수항목검색방법의 동작플로챠트를 참조해서 지연평가에 대해서 설명한다. 본 실시예에서는 본 발명의 제2실시예와 마찬가지로, 도 1에 나타낸 표형식 데이터에 관해서 「연령」이 「16세」또는「19세」이다라는 제1의 검색조건과, 「직업」이 「학생」이다라는 제2검색조건을 만족하는 레코드의 집합을 얻는 경우를 고려한다.
상기 본 발명의 제2실시예에서는 제2검색조건에 관해서 모든 레코드의 분류번호를 미리 설정하고 있지만(도 12의 단계124), 제12실시예의 경우에, 분류번호의 설정은 제1검색조건에 의한 검색의 결과집합에 근거해서 실제로 액세스된 항목값번호에 대응한 분류번호만에 대해서 행해진다.
이미 설명한 바와 같이, 제1의 항목인 「연령」에 관한 정보블록인 제1의 특정정보블록에 대해서, 「연령」이 「16세」또는 「19세」인 레코드의 결과집합은 본 발명의 제1실시예에 따라서 얻어진다(단계220).
다음에, 도 8에 나타내어 있는 제2항목인 「직업」에 관한 정보블록인 제2의 특정정보블록으로서 선택하고(단계222), 제2의 특정정보블록의 값관리테이블에 있어서의 모든 분류번호의 값을 예를 들면, 「-1」로 초기화한다(단계224).
다음에, 제1검색조건에 관한 결과집합으로부터, 레코드로의 포인터를 나타낸 레코드번호를 차례로 꺼낸다(단계226). 본 실시예의 경우, 도 14에 나타내듯이, 예를 들면 레코드번호「999999」가 꺼내어진다.
다음에, 제2의 특정정보블록에 관해서 값관리테이블로의 포인터배열로부터 상기 제1검색조건에 대해서 얻어진 레코드번호에 대응한 항목값번호를 꺼낸다(단계228). 본 실시예의 경우, 도 14에 나타내듯이, 예를 들면, 레코드번호「999999」에 대응한 항목값번호「0」가 꺼내어진다.
다음에, 제2의 특정정보블록에 대해서 꺼내어진 항목값번호에 대응하는 분류번호의 값이 「-1」인지 아닌지를 검사한다(단계230).
분류번호가 「-1」인 경우에는, 상기 항목값번호에 대해서 아직 분류번호가 설정되어 있지 않으므로, 이 항목값번호에 대응한 항목값이 상기 제2의 검색조건에 합치하는지의 여부를 판정하고(단계232), 합치하는 경우에는 분류번호로서 「1」을 설정하고(단계234), 합치하지 않은 경우에는 분류번호로서 「0」을 설정한다(단계236).
분류번호의 값이 「-1」이 아닌 경우, 상기 꺼내어진 항목값번호에 대응하는 분류번호의 값이 「1」로 설정되어 있는지의 여부를 판정한다(단계238). 분류번호의 값이 「1」로 설정되어 있는 경우, 값관리테이블로의 포인터배열중에서, 분류번호가 「1」로 셋트되어 있는 상기 항목값번호를 가리키는 포인터가 격납되어 있는 장소에 대응한 레코드로의 포인터, 예를 들면, 레코드번호를 최종적인 결과집합에 추가한다(단계240). 본 실시예에서는 도 14에 나타내듯이, 예를 들면 레코드번호「999999」가 최종적인 결과집합에 추가된다. 분류번호가 「0」인 경우에는, 최종적인 결과집합은 갱신되지 않는다.
상기 제12실시예와 같은 지연평가는 이하와 같은 경우에 유효하다. 예를 들면, 100만명의 고객명부가 존재하고, 실태조사를 위한 히어링을 실현하고 싶지만, 사정에 의해, 100명의 샘플을 추출하는 경우를 생각한다. 예를 들면, 소정의 조건(성별, 연령, 직업 등)을 만족하는 사람을 한정해 넣은 결과, 만명으로 할 수 있고, 또한 무작위성을 확보하기 위해 전화번호의 말미를 어느 수(예를 들면, 「12」)로 해서 검색을 한다라고 하자.
이 경우에, 제12실시예에 있어서는, 먼저, 「분류번호배열」의 요소를 「-1」로 채우고, 상기 만명의 집합만을 평가한다. 즉, 만명이라는 사이즈의 결과집합에 대해서, 그 분류번호배열의 요소를 참조하고, 그것이 「-1」이면, 그때 비로소 전화번호를 참조하도록 구성하고, 참조결과가 「분류번호배열」의 요소로서 부여된다. 이것에 의해, 체크의 회수를 만명으로 억제하는 것이 가능하게 된다. 이렇게 해서, 제12실시예에 의하면, 통상의 AND검색과 비교해서 처리단계수를 대폭 감소시키는 것이 가능하게 된다.
또, 본 발명에 따른 정보블록을 이용하면, 전화번호와 같이「국가번호+시외국번+국번+번호」와 같은 구조를 갖는 데이터를 복수의 정보블록으로 분할해서 등록함으로써, 국가번호, 시외국번 등의 일부의 데이터에 관한 검색, 집계를 용이하게 행할 수 있는 잇점이 얻어진다.
또, 이미 설명한 본 발명의 실시예에 의한 분류번호를 이용함으로써, 예를 들면, 연령에 관해서, 「10∼19세」를 「10대」로 하고, 「20∼29세」를 「20대」 로 하고, 이하 마찬가지로 정리해서 새로운 카테고리구분을 생성할 수 있고, 또한, 생성된 새로운 카테고리에 관해서 전술과 동일한 검색, 집계방법을 적용할 수 있다.
전술한 바와 같이, 본 발명의 실시예에 따른 검색, 집계방법을 실현하는 장치는 도 28에 나타낸 일반적인 컴퓨터시스템, 예를 들면, CPU(100), ROM(110), RAM(120), 하드디스크(130), 디스플레이(140)와 같은 출력장치와, KB/마우스(150) 등의 입력장치가 버스(160)를 통해 접속되어 있는 퍼스널컴퓨터상에 실장되는 것이 가능하다. 따라서, 전술한 바와 같이, 상기 실시예를 실현하기 위한 정보블록의 구축을 위한 프로그램(정보블록생성프로그램)도, CD-ROM이나 ROM(110), 하드디스크기억장치(130)에 기억되어도 좋고, 또는, 네트워크(도시생략)를 통해 외부로부터 공급되어도 좋다.
도 29에 나타낸 플로챠트를 참조해서, 일례로서 도 2의 (B)에 나타낸 표형식 데이터에 대해서, 도 5에 나타낸 형식의 정보블록을 구축하는 방법을 이하에 설명한다.
단계300: 데이터 준비
먼저, 도 2의 (B)에 나타낸 형태의 데이터를 준비한다. 다음에, 이것을 항목마다 분해한다. 도 2의 (B)에서는 「성별」, 「연령」및 「직업」의 항목으로 분해할 수 있다.
단계311: 「성별」항목용 정보블록의 생성
하나의 정보블록을 생성하고, 이것을 예를 들면 「성별」항목의 정보블록으 로 한다.
단계312: 값관리테이블의 작성
다음에, 값관리테이블을 초기화하고, 「성별」항목데이터를 선두로부터 말미까지 조사함으로써, 어떠한 항목이 몇 건 있는지를 세어서 격납한다. 본 실시예의 경우, 여기까지의 단계에서, 상기 값관리테이블의 항목값 배열(11)에는 항목값으로서 「여성」및「남성」이 셋트되고, 상기 값관리테이블의 존재수 배열(14)에는 상기 항목값에 대응해서 각각 「367436」및「632564」가 셋트되게 된다.
다음에, 항목값배열(11)중의 항목값(「여성」및「남성」)을 소정 기준에 따라 소트한다. 물론, 그 소트시에는 존재수배열(14)도 항목값배열(11)의 소트에 따라 재정렬되지 않으면 안된다.
또한, 값관리테이블의 개시위치배열(13)중의 개시위치를 셋트한다. 이 개시위치는 값관리테이블중의 존재수배열(14)에 있어서의 처음의 존재수로부터 상기 개시위치에 대응하는 존재수의 누계로서 구해진다. 물론, 선두의 개시위치의 값은 「0」이다.
다음에, 개시위치배열(13)의 내용을 분류번호배열(12)에 복사한다. 분류번호배열(12)은 나중에 레코드로의 포인터배열을 작성할 때의 작업영역으로서 사용한다.
단계313: 값관리테이블로의 포인터배열의 작성
다음에, 값관리테이블로의 포인터배열(20)을 위한 영역을 확보한다.(영역의 사이즈는 상기 존재수배열(14)에 있어서의 존재수의 총합이다.)
또한, 「성별」항목데이터를 선두로부터 말미까지, 항목값을 1개씩 꺼내고, 각 항목값이 값관리테이블의 몇번째의 항목값과 일치하는 가를 조사하고, 「n」번째의 항목값이었던 경우, 「n-1」을 값관리테이블로의 포인터로서 상기 값관리테이블로의 포인터배열에 격납한다.
단계314: 레코드로의 포인터배열의 작성
다음에, 레코드로의 포인터배열(30)을 위한 영역을 확보한다. 본 실시예에서는 영역의 사이즈는 상기 존재수배열(14)에 있어서의 존재수의 총합이다. 값관리테이블로의 포인터배열(20)에 있어서, 선두의 행에서 말미의 행까지, 1개씩 값관리테이블로의 포인터를 꺼낸다. 값관리테이블로의 포인터배열(20)의 「J」번째의 값을 꺼내고, 그 값이 「K」이고, 값관리테이블의 「K+1」번째의 레코드에 대응하는 분류번호를 꺼내고, 그 값이 「L」이었다라고 하면, 레코드로의 포인터배열(30)의 「L+1」번째의 요소에 「J-1」를 격납하고, 값관리테이블의 「K+1」번째의 레코드에 대응하는 분류번호를 1만큼 증가시킨다.
이상의 조작에 의해, 「성별」항목의 정보블록의 작성이 완료되었다(단계310). 「연령」항목, 「직업」항목도 마찬가지로 정보블록을 작성할 수 있고(단계320 및 단계330), 이것에 의해, 표형식 데이터의 전체에 대한 정보블록이 얻어진다.
도 30 내지 도 35는 도 1에 나타낸 표형식 데이터의 「직업」에 관한 정보블록을 작성하는 절차의 설명도이다.
도 30에는 속성값의 종류가 미리 나누어져 있는 카테고리정의가 끝난 경우의 새로운 데이터투입을 나타낸 도이다. 여기에서는, 기존의 카테고리정의에 따라, 값관리테이블이 작성된다. 개시위치, 존재수는 불분명하기 때문에, 「0」으로 초기화된다. 또, 값관리테이블로의 포인터배열, 레코드로의 포인터배열을 위한 영역을 확보하고, 이들도 마찬가지로 초기화해 둔다.
도 31에는 값관리테이블로의 포인터배열과, 값관리테이블의 존재수를 완성시키는 패스가 나타내어져 있다. 투입하고 싶은 데이터를 선두로부터 하나씩 꺼내고, 그것이 값관리테이블의 몇번째의 값인지(즉, 항목값번호)를 조사하고, 값관리테이블로의 포인터배열에 격납하고, 값관리테이블중의 대응하는 존재수를 「+1」씩 갱신한다. 도 31의 예는 투입데이터의 위에서 2번째까지의 처리가 끝난 상태를 나타내고 있다.
도 32에는 값관리테이블을 완성시키는 제2패스가 나타내어져 있다. 존재수의 누계는 개시위치에 대응하는 것을 이용해서, 개시위치가 구해진다. 또한, 분류번호에는 개시위치의 값이 복사된다. 도 32에서는 분류번호의 설정이 종료되었다.
도 33 내지 도 35에는 데이터투입의 제3패스가 나타내어져 있다. 이 패스는 값관리테이블로의 포인터배열의 선두로부터 1개씩 값(포인터)을 꺼내고, 그 값이 참조하는 값관리테이블내의 분류번호에 의해 특정되는 레코드로의 포인터배열중의 위치에, 값관리테이블로의 포인터배열의 오프셋, 즉, 레코드번호를 격납한다. 도 33, 34 및 35에는 각각 「직업」에 관한 정보블록의 값관리테이블로의 포인터배열의 선두, 2번째 및 마지막 데이터에 대한 처리가 나타내어져 있다.
또, 상기 설명에서는 분류번호의 필드가 작업영역으로서 사용되고 있지만, 값관리테이블의 행수, 즉, 항목값번호의 총수와 동수이상의 요소를 갖는 정수배열이면 어떠한 배열이라도 작업영역으로서 사용할 수 있다.
한편, 미리 카테고리정의가 이루어져 있지 않은 경우의 신규투입은 투입데이터를 조사해서 값관리테이블에 등록할 값의 일람을 획득한 후, 상기 카테고리정의가 있는 경우의 신규투입의 처리를 행함으로써 실현된다.
다음에, 도 35에 나타내는 신규투입이 완료된 후의 「직업」에 관한 정보블록에 대해서, 「학생」이라는 다른 데이터를 추가하는 경우를 생각한다. 도 36은 이러한 데이터추가를 설명하는 도이다.
이 경우, 처음에, 값관리테이블로의 포인터배열의 말미에 「학생」을 나타낸 항목값번호0을 추가하고, 값관리테이블중의 학생의 존재수를 「1」만큼 증가한다. 다음에, 값관리테이블로의 포인터값(=1000000), 즉, 레코드번호를 격납하기 위한 영역을 레코드로의 포인터배열내에 확보할 필요가 있다. 그 때문에, 레코드로의 포인터배열 중의 「학생」에 대응한 영역의 말미의 값(본 실시예에서는 999999)를 꺼내고, 거기에 확장처의 어드레스인 「1000000」을 격납한다. 단, 확장처의 어드레스임을 식별할 수 있도록, 예를 들면, 부호를 반전시켜 「-1000000」로서 격납한다. 계속해서, 확장처에 먼저 꺼내어진 말미의 값인 「999999」를 격납하고, 마지막에 새롭게 추가된 데이터에 대응한 포인터값「1000000」을 격납한다.
이러한 추가방법을 채용하면, 데이터를 추가할 때에 대량의 데이터를 이동시킬 필요가 없어진다. 또, 다수의 데이터추가가 행해진 경우에, 포인터의 수가 증가하는 것에 기인한 액세스의 효율저하를 억제하기 위해 적당한 타이밍으로 신규투입 의 제3패스와 같은 처리를 반복해도 좋다.
도 37에는 본 발명의 다른 실시예에 의한 정보블록의 구조가 나타내어져 있다. 도 37에 나타낸 구조를 채용한 경우, 포인터 수의 증가는 회피되어 용이하게 데이터변경을 행하는 것이 가능하다. 도 37에 있어서, 개시위치배열에는 레코드로의 포인터배열이 배치되어 있는 영역의 선두를 나타내는 어드레스가 격납되어 있다. 예를 들면, 「학생」이라는 항목값에 관해서는 개시위치로서 「0」이 격납되어 있다. 한편, 「프로그래머」라는 항목값에 관해서는 개시위치로서 「n(단, n>455214」라는 값이 할당되어 있다.
다음에, 본 발명의 제13실시예에 대해서 설명을 추가한다. 이 실시예에서는 상기 정보블록을 이용한 레코드의 소트를 실현하고 있다. 도 38에는 「직업」이라는 항목에 관한 레코드의 소트의 초기상태가 나타내어져 있다. 도 38에 나타낸 원데이터는 소트되야할 레코드번호의 배열을 나타낸다. 예를 들면, 「직업」이외의 항목에 대해서 얻어진 레코드로의 포인터배열, 또는 검색의 결과집합이 원데이터로서 이용될 수 있다. 본 실시예의 경우, 설명의 편의상, 원데이터의 레코드번호는 "0,1,2,...,9"의 순으로 배열되어 있지만, 일반적으로 소트전의 레코드번호의 나열은 난잡한 것에 주의할 필요가 있다. 각 레코드번호에 대응한 「직업」의 항목값이 "교사, 프로그래머, 학생, ..., 기타"와 같이 차례로 배열되어 있다.
도 38의 우측에는 「직업」에 관한 정보블록에 포함되는 여러가지 배열의 초기상태가 나타내어져 있다. 「직업」에 관한 정보블록은 예를 들면, 도 29 내지 도 35를 참조해서 설명한 정보블록의 구축방법에 따라 작성되어 있다. 「직업」에 관 한 레코드의 소트를 행할 때, 미리 작성된 「직업」에 관한 정보블록의 값관리테이블, 및, 값관리테이블로의 포인터배열이 이용된다. 개시위치로서, 정보블록의 구축시에 설정된 개시위치가 그대로 사용된다. 종료위치에는 대응하는 개시위치의 값이 복사되어 있다. 종료위치를 격납하는 영역은 예를 들면, 존재수를 위해 확보된 영역(존재수배열)을 이용해도 상관없다. 값관리테이블로의 포인터배열은 예를 들면, 레코드번호순으로 미리 작성되어 있다. 본 실시예의 경우, 원데이터의 레코드번호의 배열이 레코드번호의 오름차순이므로, 원데이터의 레코드번호와, 값관리테이블로의 포인터배열의 연결은 단순한 관계로 나타내어져 있다. 또, 레코드로의 포인터배열은 소트된 결과집합을 격납하기 위한 배열이고, 소트되는 데이터와 같은 사이즈가 확보된다. 상기 종료위치는 레코드로의 포인터배열에 소트된 결과를 격납하기 위한 어드레스로서 사용된다.
도 39는 본 발명의 제13실시예에 의한 소트의 제1단계의 상태를 설명하는 도이다. 제1단계에서는 원데이터의 선두의 레코드(본 실시예에서는 레코드번호=0)가 처리된다. 레코드번호「0」의 레코드의 항목「직업」에 관한 항목값은 「교사」이다. 이때, 레코드번호「0」에 대응한 값관리테이블로의 포인터배열에는, 항목값「교사」를 지정하는 항목값번호「2」가 격납되어 있다. 여기에서, 항목값번호「2」에 대응한 종료위치의 값 「5」을 꺼내고, 이 값「5」을 어드레스로 해서, 소트된 결과집합이 격납되는 레코드로의 포인터배열의 5번째에 상기 레코드번호「0」을 설정한다. 다음에, 상기 항목값번호「2」에 대응한 종료위치의 값은 「+1」이 되고, 「5」에서「6」으로 증가한다.
도 40은 본 발명의 제13실시예에 의한 소트의 제2단계의 상태를 설명하는 도이다. 제2단계에서는 원데이터의 2번째의 레코드(본 실시예에서는 레코드번호=1)이 처리된다. 레코드번호「1」의 레코드의 항목「직업」에 관한 항목값은 「프로그래머」이다. 이때, 레코드번호「1」에 대응한 값관리테이블로의 포인터배열에는 항목값「프로그래머」를 지정하는 항목값번호「1」이 격납되어 있다. 여기에서, 항목값번호「1」에 대응한 종료위치의 값「3」을 꺼내고, 이 값「3」을 어드레스로 해서, 소트된 결과집합이 격납되는 레코드로의 포인터배열의 3번째에 상기 레코드번호「1」를 설정한다. 다음에, 상기 항목값번호「1」에 대응한 종료위치의 값은 「+1」로 되어 「3」에서 「4」로 증가한다.
이하, 원데이터의 나머지의 레코드번호 "2,3,4,5,6,7,8,9,"에 대해서 상기 제1 또는 제2단계와 같은 동작을 반복적용한다. 이렇게 해서 얻어진 소트의 최종상태가 도 41에 나타내어져 있다. 도 41의 소트된 결과집합으로부터 알 수 있듯이, 본 발명의 제13실시예에 의한 소트의 결과로서 레코드는 「직업」에 관한 항목값번호의 순으로 소트되고, 레코드번호"2,4,6,1,7,0,3,5,8,9"의 순으로 재정열되어 있다.
상기 제13실시예의 설명에서는 원데이터가 원래의 표형식 데이터의 모든 레코드를 포함하는 경우, 즉, 전체집합을 상정하고 있다. 그러나, 본 발명에 의한 소트는 일부 레코드, 즉, 부분집합에 대해서도 유효하다. 이하, 도 42 및 도 43을 참조해서 부분집합에 대한 소트를 설명한다.
도 42에는 부분집합의 전체요소에 대해서 상기 소트처리가 완료된 상태를 나 타낸 도이다. 본 실시예의 경우, 원데이터는 「직업」에 대한 항목값이 「교사」인 레코드번호「0」의 레코드와, 항목값이「프로그래머」인 레코드번호「1」의 레코드가 원데이터로서 부여되어 있다. 이들 양쪽의 레코드에 대해서 소트처리를 적용하면, 도 42의 소트된 결과집합에 나타내는 소트결과가 얻어진다. 이 시점에서는 결과집합은 레코드로의 포인터배열에 격납되어 있다. 따라서, 부분집합의 소트결과를 격납하기 위해 전체집합과 같은 사이즈의 영역이 확보되어 있다.
그래서, 부분집합에 대한 소트의 경우, 결과집합을 부분집합과 같은 사이즈로 압축하는 것이 바람직하다. 도 43에는 이러한 부분집합에 대한 소트의 후처리가 나타내어져 있다. 이 후처리, 즉, 결과집합의 압축은 값관리테이블의 각 항목값에 관한 개시위치와 종료위치의 차에서 상기 항목값에 대응한 소트결과의 존재수 및 격납위치를 취득하고, 취득된 존재수 및 격납위치에 근거해서 소트결과를 꺼내서 나열한다.
상기 전체집합 또는 부분집합에 관한 소트처리에 대해서, 다시, 도 50의 플로챠트를 이용해서 일반적인 설명을 추가한다. 여기에서는 전체집합 및 부분집합의 어느 경우에도 원데이터에는 선두부터 차례로 격납위치번호가 부여되어 있다라고 생각한다. 예를 들면, 도 38 및 도 41에서는 격납위치번호는 레코드번호와 일치한다. 그러나, 원데이터의 나열순이 레코드번호에 따르지 않는 경우에는, 격납위치번호와 레코드번호는 상이하다. 또, 상기 실시예에 관해서 구체적으로 설명한 소트처리 등이 CPU(100)가 소정 영역에 격납된 프로그램을 실행함으로써 실현할 수 있는 것은 말할 필요도 없다.
소트처리에 있어서는, 먼저, 격납위치번호가 초기화된다(단계5001). 계속해서, 어느 격납위치번호에 관해서, 값관리테이블로의 포인터배열중의 대응하는 포인터가 참조되고(단계5002), 상기 포인터가 지정하는 항목값번호에 위치하는 종료위치의 값이 특정된다(단계5003).
그 후에, 상기 종료위치에서 특정되는, 레코드로의 포인터배열중의 위치에 대응하는 레코드번호가 격납된다(단계5004). 그 후, 단계5003에서 특정된 종료위치의 값이 증분된다(단계5005). 상기 단계5002 내지 단계5005의 처리는 모든 원데이터에 관해서 실시되고(단계5006, 5007참조), 이것에 의해 소정의 레코드번호가 배치된 레코드로의 포인터배열을 얻을 수 있다. 도 39의 예는 도 50의 처리 중, 격납위치번호가 「0」인 경우의 단계5002∼단계5005에 대응하는 것을 이해할 수 있고, 또한, 도 40은 격납위치번호가 「1」인 경우의 단계5002∼단계5005에 대응하는 것을 이해할 수 있을 것이다.
또, 부분집합에 대한 소트처리의 경우에는 단계5001∼단계5007이 실행된 후에 소트의 후처리(단계5008참조)에 의해 결과집합을 압축하면 된다.
상기 본 발명의 제13실시예에 의한 소트는 소위 「오름차순」의 소트이고, 즉, 소트결과는 소트되는 항목값의 항목값번호가 증가하는 순으로 나열되어 있다. 그러나, 소트결과는 「내림차순」즉, 소트되는 항목값의 항목값번호가 감소하는 순으로 나열할 수도 있다. 「내림차순」소트는 「오름차순」소트의 경우에 사용된 개시위치를 수정함으로써 실현된다. 본 실시예의 경우, 「오름차순」소트의 개시위치는
학생 0
프로그래머 3
교사 5
기타 6
이다. 이것에 대해서, 「내림차순」소트의 개시위치는
기타 0
교사 10-6=4
프로그래머 10-5=5
학생 10-3=7
과 같이 된다.
이와 같은 본 발명의 제13실시예에 따른 소트에 의하면, 이하의 잇점이 얻어진다.
첫째로, 고속소트가 실현된다. 예를 들면, Pentium Pro(등록상표)200MHz/Windows95(등록상표)라는 동작환경에 있어서, 본 발명에 의한 새로운 소트는 100만건당 소트시간이 145msec였다. 한편, 종래의 퀵 소트의 경우, 100만개의 정수를 소트하기 위해 걸리는 시간은 1530msec였다.
둘째로, 값으로서 격납되는 항목값의 종류에 상관없이 일정한 성능이 얻어진다. 본 소트에 의하면, 예를 들면 항목값의 데이터형이 문자열형 또는 유동소수점형이어도, 정수형의 경우와 변함없는 성능을 얻을 수 있다. 이것에 대해서, 종래의 퀵 소트 등의 방식의 경우, 취급하는 데이터가 정수형인 경우에 가장 고속이고, 가 변길이의 문자열형인 경우에 가장 늦어진다.
셋째로, 데이터사이즈가 증가해도 소트속도가 저하하지 않는다. 본 소트에서는 소트의 속도는 데이터사이즈를 n으로 해서 O(n)으로 나타낸다. 한편, 종래의 예를 들면 퀵 소트와 같은 고속소트법에서는 소트의 속도는 O(n·log(n))이다.
넷째로, 복수항목의 소트를 항목마다의 소트로 분할할 수 있다. 예를 들면, 도 38 내지 도 41을 참조해서 설명한 본 발명의 제13실시예에 있어서, 원데이터중, 같은 항목값「학생」에 대응한 레코드는 레코드번호「2」, 레코드번호「4」및 레코드번호「6」의 순으로 나열되어 있다. 그리고, 최종적인 소트된 결과집합에 있어서, 이 레코드번호의 나열순(즉, 레코드번호「2」, 레코드번호「4」 및 레코드번호「6」)이 보존되어 있다. 이것은 소트된 결과의 레코드의 나열순은 소트전의 레코드의 나열순을 소트의 목적을 만족하는 범위내에서 반영하고 있는 것을 의미한다. 이러한 본 소트의 특징을 이용함으로써, 항목마다의 소트를 차례로 행함으로써, 복수의 항목이 소트가 실현된다. 이것에 비해 종래의 퀵 소트에서는 소트결과의 나열순으로 소트전의 상태는 반영되지 않는 것이 알려져 있다.
(구체예)
상기 본 발명의 각종 실시예에 있어서, 값관리테이블에는 항목값에 관한 값리스트가 부여되어 있다. 예를 들면, 도 7에 나타낸 예에서는 항목값의 열에는 「16세」,「17세」,「18세」,...라는 값을 갖는 리스트가 존재한다. 또, 값관리테이블에는 항목값번호마다 분류번호가 설정되어 있다. 이하, 이러한 항목값에 관한 값리스트와 분류번호의 조합이 어느 항목에 관한 다수의 값에 대해서 소수회의 비교판단에 의해 검색조건의 가부를 바로 결정할 수 있는 것을 나타낸 구체예를 이하에 설명한다.
예를 들면, 값리스트로서, 값의 크기에 관해서 소트된 이하의 리스트:
0.1, 0.2, ...,
100.0, 100.1, 100.2,...,
1000.0
이 부여되고, 검색조건으로서 예를 들면 「값이 100보다 큼」이 부여된 경우를 상정한다.
처음에, 조건을 만족하지 않는 최소의 값(본 예에서는 100)을 값리스트로부터 찾는다. 그리고, 최소의 값, 즉, 「100」보다 앞에 있는 값리스트중의 값에 대응한 분류번호를 모두 「0」으로 셋트한다. 또, 「100」보다 뒤에 있는 값리스트중의 값에 대응한 분류번호를 모두 1로 셋트한다. 이것에 의해, 최소의 값을 찾을 수 있으면, 그 이후, 일제히 비교연산을 행하는 일없이 분류번호가 셋트되고, 검색조건을 만족하는 값을 갖는 항목값 또는 항목값번호가 얻어진다.
최소의 값은 종래기술에 있어서 공지의 2분법 등의 방법을 이용함으로써 소수회의 비교연산에서 찾을 수 있다. 예를 들면, 값리스트중에 존재하는 값의 바리에이션이 N개라고 하면, 2분법에 의해 상기 최소값을 찾기 위해 필요한 비교연산의 회수는 log2(N)회 정도이다.
한편, 값리스트가 값의 크기에 관해서 소트되어 있지 않은 경우, 마찬가지로 값리스트속에 존재하는 값의 바리에이션이 N개일 때, 검색조건을 만족하는 값을 찾기 위해서는 N회의 비교연산이 필요하게 된다.
이와 같이 값관리테이블에 있어서, 값리스트가 소트되고, 또한 분류번호가 설정됨으로써 소정의 검색조건의 가부의 판정이 고속화된다.
또, 당업자에게는 당연히 이해되듯이, 상기 값리스트의 내용, 및 검색조건은 본 예를 설명하기 위한 구체적인 일례에 지나지 않고, 본 발명에 의하면, 여러가지의 값리스트, 및 여러가지의 검색조건의 조합에 대해서도 마찬가지로 검색조건의 가부의 결정이 고속화된다.
다음에, 100만건의 데이터의 검색, 집계의 테스트에 대해서 설명한다. 테스트에 사용한 플랫폼은 Pentium Pro(등록상표)200MHz와, 128MB메모리를 탑재한 일반적인 퍼스널컴퓨터이다. 도 44는 테스트에 사용한 데이터의 일람을 나타낸 도표이다. 「000000」∼「999999」까지의 100만개의 숫자를 10000의 단위, 100단위, 1의 단위의 3항목으로 분해한 표형식 데이터이다. 각 항목에 「00」∼「99」까지의 항목값이 1만회씩 출현한다.
도 45는 100만건의 검색/집계에 필요한 시간을 사용한 결과집합의 타입마다 측정한 측정결과의 일람이다. 결과집합의 타입은 상기 비트플래그형식과 포인터배열형식의 2종류이다. 측정결과의 시간은 밀리세컨드(1/1000초)단위이다.
상기 테스트에서 행한 검색은 「×1만」, 「×100」, 「×1」의 3항목을 AND조건으로 접속한 복수항목AND검색이다. 검색은 「×1만」, 「×100」, 「×1」의 항목순으로 캐스케이드했다. 검색의 중간 및 최종의 결과집합은 상기와 같은 비트 플래그 또는 포인터배열 중 어느 한 형식이다. 측정시간은 5회측정한 평균이다.
또, 상기 테스트의 집계는 검색의 테스트에 의해 얻어진 결과집합에 대해서 「×100」, 「×1」의 각 값(00∼99)이 출현한 회수의 계수이다. 이 크로스집계의 표의 사이즈는 (100×100=)1만셀이다. 시간은 모두 밀리세컨드단위이고, 5회측정의 평균을 측정시간으로 했다.
또, 표형식 데이터의 검색, 집계시스템의 구성은 상기 실시예에서 설명된 예에 한정되는 것은 아니고, 검색, 집계시스템의 각각의 구성요건을 소프트웨어(프로그램)로 구축하여, 디스크장치 등에 격납해 두고, 필요에 따라 검색, 집계시스템의 컴퓨터에 인스톨해서 표형식데이터의 검색, 집계를 행하는 것도 가능하다. 또한, 구축된 프로그램을 플로피디스크나 CD-ROM 등의 가반기억매체에 격납하고, 이러한 시스템을 이용하는 경우에 범용적으로 사용하는 것도 가능하다.
본 발명은 이상이 실시형태에 한정되는 것은 아니고, 특허청구의 범위에 기재된 발명의 범위내에서 여러가지 변경이 가능하고, 이들도 본 발명의 범위내에 포함되는 것은 말할 필요도 없다.
예를 들면, 상기 제2실시예에 나타낸 AND검색 및 OR검색에 있어서는 2종류의 항목에 관한 검색을 실행하고 있지만, 이것에 한정되는 것은 아니고, 3이상의 복수종류의 항목에 관한 검색도 실현할 수 있는 것은 분명하다.
또, 상기 제7실시예 및 제8실시예에 있어서는 2종류의 항목에 관한 집계를 위해, 2차원 배열을 생성하고 있지만, 이것에 한정되는 것은 아니고, 3종류이상의 항목에 관한 집계를 위해 3차원이상의 다차원배열을 생성하고, 이것을 이용해서 상 기 집계가 가능한 것은 말할 필요도 없다. 3종류의 항목에 관한 집계를 고려하면, 3개의 정보블록의 각각에 있어서의 항목값번호q1, q2, q3를 꺼내고, 이것에 의해 3차원배열의 한 개의 요소P(q1, q2, q3)가 특정된다.
또한, 상기 제9실시예에 관해서도 제7실시예 및 제8실시예와 마찬가지로 3종류이상의 항목에 관한 집계를 이룰 수 있는 것은 말할 필요도 없다.
또, 상기 실시형태에 있어서는, 일반적인 컴퓨터시스템중에 소정 프로그램을 판독하고, 그 프로그램을 실행함으로써, 검색처리, 집계처리 및/또는 소트처리를 실현하고 있지만, 본 발명은 이것에 한정되는 것은 아니고, 퍼스널컴퓨터 등과 같은 일반적인 컴퓨터시스템에 데이터처리전용의 보드컴퓨터를 접속하고, 그 보드컴퓨터가 상기 처리를 실행할 수 있도록 구성해도 좋은 것은 말할 필요도 없다. 따라서, 본 명세서에 있어서, 수단은 반드시 물리적수단을 의미하는 것은 아니고, 각 수단의 기능이 소프트웨어에 의해 실현되는 경우 또는 그 일부 또는 전부가 하드웨어에 의해 실현되는 경우를 포함한다. 또한, 하나의 수단의 기능이 두개의 물리적수단에 의해 실현되어도 또는 두개이상의 수단의 기능이 하나의 물리적수단에 의해 실현되어도 좋다. 상기 설명과 같이, 본 발명에 의하면 표형식으로 표현되는 대량의 데이터를 액세스에 시간이 걸리는 종래의 데이터료를 이용하지 않고 처리할 수 있으므로, 집계, 검색의 스피드를 대폭 향상시킬 수 있다.
본 발명은 특히 대량의 데이터를 관리하는 시스템, 예를 들면, 데이터베이스, 데이터웨어하우스에 이용할 수 있다. 보다 구체적으로는 대규모의 과학기술계산, 플랜트나 전력공급 등의 제어시스템, 배송이나 자원분배 등의 계획법, 수발주관리나 증권거래 등의 사무관리에 이용가능하다.

Claims (31)

  1. 각 항목에 관련된 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터로부터 특정의 항목 및 특정의 레코드에 대응한 항목값을 얻는 방법으로서,
    각각의 항목에 있어서, 초기값으로부터 소정 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되어 있는 값관리테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 기억장치에 유지하는 단계;
    상기 항목값번호 지정정보배열로부터 상기 특정의 레코드에 대응한 항목값번호를 취득하는 단계; 및,
    상기 값관리테이블에 격납된 항목값중에서 상기 취득된 항목값번호에 대응한 항목값을 얻는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 항목값번호에 대응한 항목값을 분류하기 위해 분류번호가 상기 항목값번호에 대응해서 상기 값관리테이블에 격납되는 단계를 더 포함하고,
    상기 항목값번호에 대응한 항목값을 얻는 단계에서, 상기 분류번호가 참조되는 것을 특징으로 하는 방법.
  3. 각 항목에 관련된 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식데이터로부터 특정의 검색조건에 적합한 항목값을 포함하는 레코드를 검색하는 방법으로서,
    각각의 항목에 있어서, 초기값으로부터 소정 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되어 있는 값관리테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 기억장치에 유지하는 단계;,
    특정의 항목 및 그 항목에 있어서 검색할 항목값을 포함하는 검색조건을 설정하는 단계;,
    상기 검색조건과 관련된 항목에 관해서, 상기 레코드의 순으로, 대응하는 항목값번호 지정정보배열중의 항목값번호를 조사하는 단계;
    상기 항목값번호로 지정되는 상기 값관리테이블중의 항목값이 상기 설정된 검색조건에 적합한지를 판단하는 단계; 및
    상기 검색조건에 적합한 레코드를 결과집합으로서 축적하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서, 상기 검색조건에 적합한 레코드의 결과집합을 기억장치에 유지하는 단계;
    다른 검색조건과 관련된 항목에 관해서,
    상기 다른 항목에 관한 항목값번호 지정정보배열로부터 상기 결과집합에서 지정된 상기 검색조건에 적합한 레코드에 대응한 항목값번호를 꺼내는 단계;
    상기 다른 항목에 관해서, 상기 꺼내어진 항목값번호에 의해 특정되는 항목값이 상기 다른 검색조건과 적합한지의 여부를 판정하는 단계;
    상기 다른 항목에 관해서, 상기 항목값번호에 의해 특정되는 항목값이 상기 다른 검색조건과 적합한 경우에, 상기 항목값번호에 대응한 상기 레코드를, 상기 다른 검색조건에 적합한 레코드로서 꺼내는 단계; 및
    필요한 경우에, 또 다른 검색조건에 관련된 또 다른 항목에 관해서, 상기 항목값번호의 꺼내기, 적합판정 및 레코드의 꺼내기를 반복하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제3항에 있어서, 상기 검색조건에 적합한 레코드의 결과집합을 기억장치에 유지하는 단계;
    다른 검색조건과 관련된 항목에 관해서,
    다른 값관리테이블에 격납된 항목값중에서 상기 검색조건에 적합한 항목값과 관련된 항목값에 대응하는 레코드식별정보 지정정보를 이용해서 레코드식별정보배열로부터 상기 다른 검색조건에 적합한 레코드를 꺼내어 검색조건에 적합한 레코드를 지정하는 다른 결과집합을 기억하는 단계; 및
    필요한 경우에, 또 다른 검색조건에 관해서, 또 다른 레코드식별정보 지정정보를 이용한, 또 다른 검색조건에 적합한 레코드의 꺼내기, 및 또 다른 결과집합의 기억을 반복해서, 얻어진 결과집합으로부터 중복된 레코드를 제거한 최종적인 결과집합을 얻는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제3항 내지 제5항 중 어느 한 항에 있어서, 상기 값관리테이블이 상기 항목값번호마다 상기 고유의 영역의 시점을 나타내는 개시위치와, 서로 같은 항목값번호를 구비한 레코드수를 나타내는 존재수를 포함하고,
    상기 개시위치 및 존재수를 참조해서 소정의 레코드식별정보배열을 특정하는 것을 특징으로 하는 방법.
  7. 제3항 내지 제5항 중 어느 한 항에 있어서, 상기 항목값번호에 대응한 항목값을 분류하기 위한 분류번호가 상기 항목값번호에 대응해서 상기 값관리테이블에 격납되고,
    상기 분류번호를 이용해서 검색조건에 적합한 항목값을 특정하는 것을 특징으로 하는 방법.
  8. 각 항목에 관련된 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터를 집계하는 방법으로서,
    n이 1이상의 정수를 나타내는 경우에, 집계에 이용되는 n개의 항목의 각각에 있어서, 초기값으로부터 소정 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되어 있는 값관리 테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열로 이루어진 개별항목정보를 기억장치에 유지하는 단계;
    i가 1≤i≤n인 정수를 나타낼 때, i번째의 개별항목정보에 대해서 상기 항목값번호의 총수가 Ni로 나타내어지고, ki가 0≤ki≤Ni-1인 정수를 나타내며, M이 1이상의 정수를 나타내며, m이 1≤m≤M인 정수일 때, N1×N2×...×Ni×...Nn의 사이즈를 갖는 n차원의 M개의 데이터공간의 각 요소Pm(k1, k2, ..., ki, ..., kn)을 초기화하는 단계;
    상기 n개의 개별항목정보에 대해서, j가 0≤j≤(레코드의 총수-1)인 정수를 나타낼 때, 각 항목값번호 지정정보배열의 j번째에 격납된 각각의 항목값번호를 꺼내고, i번째의 개별항목정보에서 꺼내어진 항목값번호가 qi로 나타내어질 때, 상기 데이터공간의 요소Pm(q1, q2, ..., qi, ..., qn)을 특정하는 단계; 및
    상기 특정된 요소 Pm(q1, q2, ..., qi, ..., qn)의 값을 처리하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 각 항목에 관련된 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터를 집계하는 방법으로서,
    n이 1이상의 정수를 나타내며, 집계에 이용되는 n개의 항목의 각각에 있어서, 초기값으로부터 소정 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값 및 상기 항목값의 분류번호가 격납되어 있는 값관리 테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열로 이루어진 개별항목정보를 기억장치에 유지하는 단계;
    i가 1≤i≤n인 정수를 나타낼 때, i번째의 개별항목정보에 대해서 상기 항목값번호 또는 상기 분류번호 중 어느 한 쪽의 번호의 총수가 Ni로 나타내어지고, ki가 0≤ki≤Ni-1인 정수를 나타내며, M이 1이상의 정수를 나타내며, m이 1≤m≤M인 정수일 때, N1×N2×...×Ni×...Nn의 사이즈를 갖는 n차원의 M개의 데이터공간의 각 요소Pm(k1, k2, ..., ki, ..., kn)을 초기화하는 단계;
    상기 n개의 개별항목정보에 대해서, j가 0≤j≤(레코드의 총수-1)인 정수를 나타낼 때, 각 항목값번호 지정정보배열의 j번째에 격납된 각각의 항목값번호를 꺼내고, i번째의 개별항목정보에서 꺼내어진 항목값번호 또는 상기 i번째의 개별항목정보의 값관리테이블에 그 항목값번호와 대응해서 격납된 분류번호가 qi로 나타내어질 때, 상기 데이터공간의 요소Pm(q1, q2, ..., qi, ..., qn)을 특정하는 단계; 및
    상기 특정된 요소 Pm(q1, q2, ..., qi, ..., qn)의 값을 처리하는 단계를 포함하는 것을 특징으로 하는 방법.
  10. 제8항 또는 제9항에 있어서, M=1이고, 또한 상기 특정된 요소 Pm의 값을 처리하는 단계가 상기 요소 Pm의 현재의 값에 1을 더하는 것을 특징으로 하는 방법.
  11. 제8항 또는 제9항에 있어서, 상기 특정된 요소 Pm의 값을 처리하는 단계가,
    M개의 요소 Pm중의 적어도 1개의 요소Pm에 대해서,
    기억장치에 유지된 다른 개별항목정보에 대해서 항목값번호 지정정보배열의 j번째에 격납된 항목값번호를 취득하고,
    상기 다른 개별항목정보의 값관리테이블에 격납된 항목값중에서 상기 취득된 항목값번호에 대응한 항목값을 취득하고,
    상기 요소 Pm의 현재의 값과 상기 취득된 항목값을 조합해서, 상기 요소Pm의 값을 갱신하는 것을 특징으로 하는 방법.
  12. 제1항 또는 제2항에 있어서, 상기 항목값번호를 지정하는 정보가 항목값번호자체인 것을 특징으로 하는 방법.
  13. 제1항 또는 제2항에 있어서, 상기 항목값번호를 지정하는 정보가 각 항목값번호마다 1비트이상이 할당되고, 지정의 유무가 설정되는 2진값인 것을 특징으로 하는 방법.
  14. 각 항목에 관련된 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터를 검색, 집계하는 장치로서,
    각각의 항목에 있어서, 초기값으로부터 소정 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되어 있는 값관리테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 유지하는 기억장치;
    상기 기억장치에 유지된 상기 항목값번호 지정정보배열로부터 상기 특정의 레코드에 대응한 항목값번호를 취득하는 항목값번호 취득수단; 및
    상기 기억장치에 유지된 상기 값관리테이블에 격납된 항목값중에서 상기 취득된 항목값번호에 대응한 항목값을 얻는 항목값 취득수단을 갖는 것을 특징으로 하는 장치.
  15. 제14항에 있어서, 상기 기억장치가 서로 같은 항목값번호에 관련된 하나이상의 레코드식별정보를 상기 항목값번호마다 고유의 영역에 격납한 레코드식별정보배열을 더 유지하고, 또한, 상기 값관리테이블이 상기 항목값번호마다 상기 레코드식별정보배열에 있어서 서로 같은 항목값번호에 관련된 상기 하나이상의 레코드식별정보를 격납한 영역을 나타내는 레코드식별정보 지정정보를 포함하고,
    상기 값관리테이블에 격납된 항목값중에서 소정의 검색조건에 적합한 항목값과 관련된 항목값번호에 대응하는 상기 레코드식별정보 지정정보를 이용해서 상기 레코드식별정보배열로부터 상기 검색조건에 적합한 레코드식별정보를 취득하는 검색수단을 더 갖는 것을 특징으로 하는 장치.
  16. 각 항목에 관련된 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터를 검색, 집계하는 프로그램을 기록한 컴퓨터에 의해 판독가능한 기억매체로서, 상기 프로그램이,
    각각의 항목에 있어서, 초기값으로부터 소정 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되어 있는 값관리테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 기억장치에 유지하는 단계;
    상기 기억장치에 유지된 상기 항목값번호 지정정보배열로부터 상기 특정의 레코드에 대응한 항목값번호를 취득하는 단계; 및
    상기 기억장치에 유지된 상기 값관리테이블에 격납된 항목값 중에서 상기 취득된 항목값번호에 대응한 항목값을 얻는 단계를 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터에 의해 판독가능한 기억매체.
  17. 각 항목에 관련된 항목값을 포함하는 레코드의 배열로서 나타내어지는 표형식 데이터로부터 검색조건에 적합한 항목값을 포함하는 레코드를 검색하는 프로그램을 기억한 컴퓨터에 의해 판독가능한 기억매체로서, 상기 프로그램이,
    각각의 항목에 있어서, 초기값으로부터 소정 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되어 있는 값관리테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열과, 서로 같은 항목값번호에 관련된 하나이상의 레코드식별정보를 상기 항목값번호마다 고유의 영역에 격납한 레코드식별정보배열을 포함하고, 상기 값관리테이블이 상기 항목값번호마다 상기 레코드식별정보배열에 있어서 서로 같은 항목값번호에 관련된 상기 하나이상의 레코드식별정보를 격납한 영역을 나타내는 레코드식별정보 지정정보를 포함하는 개별항목정보를 기억장치에 유지하는 단계; 및
    상기 값관리테이블에 격납된 항목값중에서 상기 검색조건에 적합한 항목값과 관련된 항목값번호에 대응하는 상기 레코드식별정보 지정정보를 이용해서, 상기 레코드식별정보배열로부터 상기 검색조건에 적합한 레코드식별정보를 꺼내는 단계를 포함하는 것을 특징으로 하는 프로그램을 기억한 컴퓨터에 의해 판독가능한 기억매체.
  18. 삭제
  19. 각 항목에 관련된 항목값을 포함하는 레코드를 지정하는 레코드식별정보의 배열을 특정의 항목에 관해서 재정렬하는 레코드의 소트방법으로서,
    각각의 항목에 있어서, 초기값으로부터 소정의 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되고 또한 상기 항목값번호에 대응해서 상기 레코드식별정보배열에 있어서 서로 같은 항목값번호에 관련된 상기 하나이상의 레코드식별정보를 격납한 영역을 나타내는 레코드식별정보 지정정보가 격납되어 있는 값관리테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 기억장치에 유지하는 단계;
    상기 레코드마다 상기 레코드식별정보와 상기 항목의 항목값에 대응한 항목값번호를 관련짓는 단계;
    상기 항목값번호마다 상기 레코드식별정보의 재정렬후의 격납장소를 정의하는 단계;
    상기 배열로부터 상기 레코드식별정보를 차례로 꺼내는 단계;
    상기 꺼내어진 레코드식별정보에 대응한 상기 항목값번호를 판정하는 단계;
    상기 꺼내어진 레코드식별정보를 상기 판정된 항목값번호에 대응하는 레코드식별정보 지정정보에 따라서 상기 격납장소에 격납하는 단계; 및
    상기 레코드식별정보가 격납되는 상기 격납장소를 다음의 레코드식별정보의 격납을 위해 갱신하는 단계를 포함하는 것을 특징으로 하는 방법.
  20. 삭제
  21. 제19항에 있어서, 상기 레코드식별정보 지정정보가 상기 격납장소의 영역의 시점을 나타내는 개시위치와, 초기적으로는 개시위치와 등가이고, 상기 갱신에 의해 그 값이 증분되는 종료위치를 포함하는 것을 특징으로 하는 방법.
  22. 각 항목에 관련된 항목값을 포함하는 레코드를 지정하는 레코드식별정보의 배열을 특정의 항목에 관해서 재정렬하는 레코드의 소트장치로서,
    각각의 항목에 있어서, 초기값으로부터 소정의 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되고 또한 상기 항목값번호에 대응해서 상기 레코드식별정보배열에 있어서 서로 같은 항목값번호에 관련된 상기 하나이상의 레코드식별정보를 격납한 영역을 나타내는 레코드식별정보 지정정보가 격납되어 있는 값관리테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 유지하는 기억장치를 구비하고,
    상기 레코드마다 상기 레코드식별정보와 상기 항목의 항목값에 대응한 항목값번호를 관련짓는 수단;
    상기 항목값번호마다 상기 레코드식별정보의 재정렬후의 격납장소를 정의하는 정의수단;
    상기 배열로부터 상기 레코드식별정보를 차례로 꺼내어, 꺼내어진 레코드식별정보에 대응한 상기 항목값번호를 판정하는 항목값번호 판정수단;
    상기 꺼내어진 레코드식별정보를 상기 판정된 항목값번호에 대응하는 레코드식별정보 지정정보에 따라서 상기 격납장소에 격납하는 레코드식별정보 격납수단; 및
    상기 레코드식별정보가 격납되는 상기 격납장소를 다음의 레코드식별정보의 격납을 위해 갱신하는 갱신수단을 더 구비한 것을 특징으로 하는 장치.
  23. 삭제
  24. 각 항목에 관련된 항목값을 포함하는 레코드를 지정하는 레코드식별정보의 배열을 상기 항목에 관해서 재정렬하는 레코드의 소트프로그램을 기억한 컴퓨터에 의해 판독가능한 기억매체로서, 상기 소트프로그램이,
    각각의 항목에 있어서, 초기값으로부터 소정의 순서를 갖고 상기 항목값을 일의적으로 특정하는 항목값번호에 대응해서, 그 항목에 있어서의 항목값이 격납되고 또한 상기 항목값번호에 대응해서 상기 레코드식별정보배열에 있어서 서로 같은 항목값번호에 관련된 상기 하나이상의 레코드식별정보를 격납한 영역을 나타내는 레코드식별정보 지정정보가 격납되어 있는 값관리테이블과, 상기 레코드의 순으로 상기 항목값번호를 지정하는 정보가 격납된 항목값번호 지정정보배열을 기억장치에 유지하는 단계;
    상기 레코드마다 상기 레코드식별정보와 상기 항목의 항목값에 대응한 항목값번호를 관련짓는 단계;
    상기 항목값번호마다 상기 레코드식별정보의 재정렬후의 격납장소를 정의하는 단계;
    상기 배열로부터 상기 레코드식별정보를 차례로 꺼내는 단계;
    상기 꺼내어진 레코드식별정보에 대응한 상기 항목값번호를 판정하는 단계;
    상기 꺼내어진 레코드식별정보를 상기 판정된 항목값번호에 대응하는 레코드식별정보 지정정보에 따라서 상기 격납장소에 격납하는 단계; 및
    상기 레코드식별정보가 격납되는 상기 격납장소를 다음의 레코드식별정보의 격납을 위해 갱신하는 단계를 더 포함하는 것을 특징으로 하는 기억매체.
  25. 삭제
  26. 제3항 내지 제5항 중 어느 한 항에 있어서, 상기 항목값번호를 지정하는 정보가 항목값번호자체인 것을 특징으로 하는 방법.
  27. 제8항 또는 제9항에 있어서, 상기 항목값번호를 지정하는 정보가 항목값번호자체인 것을 특징으로 하는 방법.
  28. 제3항 내지 제5항 중 어느 한 항에 있어서, 상기 항목값번호를 지정하는 정보가 각 항목값번호마다 1비트이상이 할당되고, 지정의 유무가 설정되는 2진값인 것을 특징으로 하는 방법.
  29. 제8항 또는 제9항에 있어서, 상기 항목값번호를 지정하는 정보가 각 항목값번호마다 1비트이상이 할당되고, 지정의 유무가 설정되는 2진값인 것을 특징으로 하는 방법.
  30. 삭제
  31. 삭제
KR1020017001701A 1998-08-11 1999-08-09 표형식 데이터의 검색,집계,소트방법 및 장치 KR100688121B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP22727898 1998-08-11
JP98-227278 1998-08-11
JP98-338133 1998-11-27
JP33813398 1998-11-27

Publications (2)

Publication Number Publication Date
KR20010085359A KR20010085359A (ko) 2001-09-07
KR100688121B1 true KR100688121B1 (ko) 2007-03-09

Family

ID=26527589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017001701A KR100688121B1 (ko) 1998-08-11 1999-08-09 표형식 데이터의 검색,집계,소트방법 및 장치

Country Status (7)

Country Link
US (2) US6643644B1 (ko)
EP (1) EP1136918A4 (ko)
JP (1) JP3581831B2 (ko)
KR (1) KR100688121B1 (ko)
CN (1) CN1194319C (ko)
CA (1) CA2340008C (ko)
WO (1) WO2000010103A1 (ko)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4563558B2 (ja) 2000-07-31 2010-10-13 株式会社ターボデータラボラトリー データのコンパイル方法、および、コンパイル方法を記憶した記憶媒体
GB0100331D0 (en) * 2001-01-06 2001-02-14 Secr Defence Method of querying a structure of compressed data
JP3860992B2 (ja) 2001-11-09 2006-12-20 株式会社ターボデータラボラトリー データの結合・提示方法、および、データ結合・提示プログラム
JP3861044B2 (ja) 2002-10-24 2006-12-20 株式会社ターボデータラボラトリー 連鎖したジョインテーブルのツリー構造への変換方法、および、変換プログラム
JP4136594B2 (ja) 2002-10-25 2008-08-20 株式会社ターボデータラボラトリー データ処理方法およびデータ処理プログラム
EP1615121A4 (en) * 2003-04-16 2008-10-08 Turbo Data Lab Inc SYSTEM AND METHOD FOR INFORMATION PROCESSING
US20050027790A1 (en) * 2003-07-28 2005-02-03 Alan Dziejma System and method for an intelligent blotter engine
US20070174843A1 (en) * 2003-10-24 2007-07-26 Shinji Furusho Distributed memory type information processing system
US7849289B2 (en) 2003-10-27 2010-12-07 Turbo Data Laboratories, Inc. Distributed memory type information processing system
JP2005135221A (ja) * 2003-10-31 2005-05-26 Turbo Data Laboratory:Kk 表形式データの結合方法、結合装置およびプログラム
US7774377B2 (en) * 2003-12-03 2010-08-10 The Trizetto Group, Inc. Range definition method and system
JP4772506B2 (ja) * 2003-12-25 2011-09-14 株式会社ターボデータラボラトリー 情報処理方法、情報処理システムおよびプログラム
JP2005202535A (ja) * 2004-01-14 2005-07-28 Hitachi Ltd 文書集計方法及び装置並びにそれらに用いるプログラムを記憶した媒体
WO2005073880A1 (ja) * 2004-01-29 2005-08-11 Shinji Furusho 分散メモリ型情報処理システム
JP3935889B2 (ja) * 2004-02-27 2007-06-27 シャープ株式会社 データ処理装置、データ処理方法、データ処理プログラム、およびデータ処理プログラムを記録した記録媒体
WO2005106713A1 (ja) * 2004-04-28 2005-11-10 Shinji Furusho 情報処理方法及び情報処理システム
US7890492B2 (en) * 2004-11-15 2011-02-15 Zi Corporation Of Canada, Inc. Organizing pointers to objects in an array to improve the speed of object retrieval
US7725468B2 (en) * 2005-04-08 2010-05-25 Oracle International Corporation Improving efficiency in processing queries directed to static data sets
CN101133414B (zh) * 2005-05-24 2011-05-04 特博数据实验室公司 多处理器系统及其信息处理方法
JP2007034878A (ja) * 2005-07-29 2007-02-08 Turbo Data Laboratory:Kk 情報処理方法、情報処理装置および情報処理プログラム
WO2007020849A1 (ja) 2005-08-15 2007-02-22 Turbo Data Laboratories Inc. 共有メモリ型マルチプロセッサシステム及びその情報処理方法
US7565349B2 (en) * 2005-11-10 2009-07-21 International Business Machines Corporation Method for computing frequency distribution for many fields in one pass in parallel
JP4992301B2 (ja) * 2006-06-05 2012-08-08 富士通株式会社 検索処理方法及び装置
JP4005108B2 (ja) * 2006-09-26 2007-11-07 富士通株式会社 表示制御プログラムおよび記録媒体
JP2008250546A (ja) * 2007-03-29 2008-10-16 Fujitsu Broad Solution & Consulting Inc データ検索方法、プログラム及び装置
JP5008720B2 (ja) * 2007-04-19 2012-08-22 株式会社ターボデータラボラトリー メモリ間接参照をメモリ直接参照に変換する方法及び装置
JP2009003605A (ja) * 2007-06-20 2009-01-08 Fujitsu Broad Solution & Consulting Inc データベース管理装置,データベースシステム及びデータベース管理プログラム
US8620880B2 (en) 2008-05-30 2013-12-31 Nec Corporation Database system, method of managing database, and computer-readable storage medium
JP5392254B2 (ja) 2008-05-30 2014-01-22 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
WO2010013320A1 (ja) * 2008-07-30 2010-02-04 株式会社ターボデータラボラトリー 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム
CN101355560B (zh) * 2008-09-12 2011-12-14 深圳市联软科技有限公司 一种数据传输方法及系统
US20100180057A1 (en) * 2009-01-09 2010-07-15 Yahoo! Inc. Data Structure For Implementing Priority Queues
US8438173B2 (en) * 2009-01-09 2013-05-07 Microsoft Corporation Indexing and querying data stores using concatenated terms
WO2010083217A1 (en) * 2009-01-13 2010-07-22 Ensoco, Inc. Method and computer program product for geophysical and geologic data identification, geodetic classification, and organization
US8667026B1 (en) 2009-01-22 2014-03-04 American Express Travel Related Services Company, Inc. Method and system for ranking multiple data sources
JP5352310B2 (ja) * 2009-03-30 2013-11-27 株式会社日立製作所 バッチ処理実行システム及びその方法
CN101853263B (zh) * 2009-04-03 2012-09-19 鸿富锦精密工业(深圳)有限公司 资料结构化处理系统及方法
JP5499825B2 (ja) * 2010-03-29 2014-05-21 日本電気株式会社 データベース管理方法、データベースシステム、プログラム及びデータベースのデータ構造
CN101894133B (zh) * 2010-06-08 2011-12-07 用友软件股份有限公司 用于批量修改表单数据的方法和装置
US8738583B2 (en) * 2011-02-09 2014-05-27 Cisco Technology, Inc. Efficiently delivering event messages using compiled indexing and paginated reporting
US11972865B1 (en) * 2012-07-25 2024-04-30 Azad Alamgir Kabir High probability differential diagnoses generator and smart electronic medical record
AU2013335231B2 (en) 2012-10-22 2018-08-09 Ab Initio Technology Llc Profiling data with location information
WO2014065918A1 (en) * 2012-10-22 2014-05-01 Ab Initio Technology Llc Characterizing data sources in a data storage system
US9607039B2 (en) * 2013-07-18 2017-03-28 International Business Machines Corporation Subject-matter analysis of tabular data
JP6052801B2 (ja) 2013-07-31 2016-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 文書間における記載事項関連付けシステム、方法、及び、プログラム
CA2939915C (en) 2014-03-07 2021-02-16 Ab Initio Technology Llc Managing data profiling operations related to data type
US9870382B2 (en) * 2014-03-25 2018-01-16 Sap Se Data encoding and corresponding data structure
CN107066564B (zh) * 2017-03-31 2020-10-16 武汉斗鱼网络科技有限公司 一种基于安卓列表的数据处理方法及装置
CN113220688A (zh) * 2017-07-04 2021-08-06 第四范式(北京)技术有限公司 拼接数据记录的方法及装置
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods
CN110264331B (zh) * 2019-04-22 2023-01-17 创新先进技术有限公司 资金数据的分析方法、装置及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04128972A (ja) * 1990-09-20 1992-04-30 Fujitsu Ltd ジョイン処理方式

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5583962A (en) 1978-12-19 1980-06-24 Sharp Corp Data retrieving system
JPS63298626A (ja) 1987-05-29 1988-12-06 Matsushita Electric Ind Co Ltd デ−タベ−ス管理方法
JPH01219927A (ja) 1988-02-29 1989-09-01 Hitachi Ltd データベースの情報検索方式
JPH03252858A (ja) * 1990-03-02 1991-11-12 Nippon Telegr & Teleph Corp <Ntt> 日本語長文検出装置
US5204958A (en) * 1991-06-27 1993-04-20 Digital Equipment Corporation System and method for efficiently indexing and storing a large database with high data insertion frequency
JP2905661B2 (ja) 1993-03-26 1999-06-14 富士通株式会社 情報の抽出方法
JPH07319924A (ja) * 1994-05-24 1995-12-08 Matsushita Electric Ind Co Ltd 手書き電子文書のインデックス付けおよび探索方法
US6513041B2 (en) * 1998-07-08 2003-01-28 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
US6523027B1 (en) 1999-07-30 2003-02-18 Accenture Llp Interfacing servers in a Java based e-commerce architecture
US6550057B1 (en) * 1999-08-31 2003-04-15 Accenture Llp Piecemeal retrieval in an information services patterns environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04128972A (ja) * 1990-09-20 1992-04-30 Fujitsu Ltd ジョイン処理方式

Also Published As

Publication number Publication date
JP3581831B2 (ja) 2004-10-27
EP1136918A4 (en) 2006-03-29
USRE41901E1 (en) 2010-10-26
US6643644B1 (en) 2003-11-04
CA2340008C (en) 2008-09-23
CN1317117A (zh) 2001-10-10
KR20010085359A (ko) 2001-09-07
EP1136918A1 (en) 2001-09-26
CN1194319C (zh) 2005-03-23
CA2340008A1 (en) 2000-02-24
WO2000010103A1 (fr) 2000-02-24

Similar Documents

Publication Publication Date Title
KR100688121B1 (ko) 표형식 데이터의 검색,집계,소트방법 및 장치
US5864857A (en) Method for processing multi-dimensional data
US6662189B2 (en) Method of performing data mining tasks for generating decision tree and apparatus therefor
US9652467B2 (en) Inline tree data structure for high-speed searching and filtering of large datasets
CN107103032B (zh) 一种分布式环境下避免全局排序的海量数据分页查询方法
US5710915A (en) Method for accelerating access to a database clustered partitioning
US6665661B1 (en) System and method for use in text analysis of documents and records
US5995962A (en) Sort system for merging database entries
EP2045731A1 (en) Automatic generation of ontologies using word affinities
JPH10320411A (ja) 文書分類装置、方法及び文書分類プログラムを記録した記録媒体
US20140082021A1 (en) Hierarchical ordering of strings
CN112463774B (zh) 文本数据的去重方法、设备及存储介质
JP4143234B2 (ja) 文書分類装置、文書分類方法及び記憶媒体
JP2007535009A (ja) リレーショナルデータベースの超集合のためのデータ構造と管理システム
US9817855B2 (en) Method and system for determining a measure of overlap between data entries
Howard et al. Phonetic spelling algorithm implementations for R
CN106776704A (zh) 统计信息收集方法和装置
Jaro UNIMATCH: a computer system for generalized record linkage under conditions of uncertainty
JP2000148770A (ja) 問合せ文書の分類装置および方法ならびに当該方法を記述したプログラムを記録した記録媒体
JP3288063B2 (ja) 可変長データの格納および参照システム
CN110866088A (zh) 一种语料库之间的快速全文检索方法及系统
JP2003108576A (ja) データベース管理装置およびデータベース管理方法
CN117454017B (zh) 课程推荐方法、设备及存储介质
JP2003058559A (ja) 文書分類方法、検索方法、分類システム及び検索システム
JP2002092008A (ja) データ分割処理装置及び方法

Legal Events

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

Payment date: 20091109

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20121218

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 12

EXPY Expiration of term