KR100529995B1 - 데이터베이스에 엘리먼트를 저장하는 방법 - Google Patents

데이터베이스에 엘리먼트를 저장하는 방법 Download PDF

Info

Publication number
KR100529995B1
KR100529995B1 KR10-2000-7000595A KR20007000595A KR100529995B1 KR 100529995 B1 KR100529995 B1 KR 100529995B1 KR 20007000595 A KR20007000595 A KR 20007000595A KR 100529995 B1 KR100529995 B1 KR 100529995B1
Authority
KR
South Korea
Prior art keywords
container
belonging
database
overfill
page
Prior art date
Application number
KR10-2000-7000595A
Other languages
English (en)
Other versions
KR20010022027A (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 KR20010022027A publication Critical patent/KR20010022027A/ko
Application granted granted Critical
Publication of KR100529995B1 publication Critical patent/KR100529995B1/ko

Links

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/9014Indexing; Data structures therefor; Storage structures hash tables
    • 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/99932Access augmentation or optimizing
    • 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/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

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

Abstract

본 발명은 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법에 관한 것이다. 데이터베이스에 데이터 엘리먼트를 저장하기 위한 저장 스페이스에 대한 참조는 수학적 함수에 의해 계산되고, 함수의 입력 데이터는 엘리먼트에 속하는 외부 키이며, 수학적 함수에 의해 얻어진 결과는 데이터베이스내에서 엘리먼트의 내부 위치를 지시하며, 이 결과는 3개 이상의 부분(A,B,C)으로 분할되는데, 제 1 부분(A)은 데이터베이스에 속하는 프래그먼트(A4)에 대한 참조를 구성하고, 제 2 부분(B)은 프래그먼트(A4)내의 페이지(B4)에 대한 참조를 구성하며, 제 3 부분(C)은 페이지(B4)에 속하는 소위 버킷(C4)에 대한 참조를 구성한다. 버킷(C4)은, 엘리먼트가 저장될 수 있거나, 이미 저장되어 있는 하나 이상의 컨테이너로 구성된다. 컨테이너에는, 컨테이너의 헤더 및 이 컨테이너에 속하는 엘리먼트에 상응하는 사이즈가 주어져 있고, 상기 사이즈는 관련 엘리먼트의 량에 따라 변화한다. 최대 컨테이너의 사이즈는, 데이터베이스 내에서 동작하거나 데이터베이스를 사용하는 프로세서에 속하는 캐시 메모리에 한번에 판독 입력될 수 있는 데이터 정보량과 동등하도록 제한된다.

Description

데이터베이스에 엘리먼트를 저장하는 방법{A METHOD OF STORING ELEMENTS IN A DATABASE}
본 발명은 데이터베이스에 엘리먼트(elements)를 저장하고, 이와 같이 저장된 엘리먼트를 검색하는 방법에 관한 것이다. 데이터베이스에서의 데이터 엘리먼트의 저장을 위한 저장 스페이스로의 참조는 해시 함수(hash function)와 같은 수학적 함수에 의해 계산되며, 여기서, 함수 입력 데이터는 엘리먼트에 속한 외부 키(external key)로 구성되고, 수학적 함수로 획득된 결과는 데이터베이스에서 상기 엘리먼트의 내부 위치를 지시(point)한다. 본 발명은, 또한 함수의 결과를 상이한 부분으로 분할하는 것을 기초로 한다.
상이한 데이터 구조를 이용하여 데이터베이스에 데이터를 저장하는 것은 이미 알려져 있다. 이들 구조는, 예컨대, 사용된 저장 스페이스에 대해 상이한 이점및, 고속 탐색을 실행하는 가능성을 제공한다.
공지된 구조 중 하나는, 데이터베이스에서의 테이블내의 엘리먼트의 랜덤 분산(random distribution)을 계산할 수 있도록 하는 소위 해시 함수에 기초로 하고 있다.
엘리먼트는 데이터베이스에서의 내부 어드레스를 포함할 수 있다. 엘리먼트는, 예컨대 전화 번호 등의 외부 키와 결합된다. 테이블에 새로운 전화 번호를 입력할 경우, 해시 함수의 도움으로, 전화 번호의 내부 어드레스가 배치되는 엘리먼트에 관한 계산이 이루어진다.
해시 함수의 목적은, 어드레스가 테이블 내에 균일하게 분산되도록 테이블 내에 어드레스를 랜덤하게 분산하는 것이다. 그 후, 특정 드레스를 탐색할 시에 정확한 엘리먼트를 검색하기 위해 동일한 해시 함수가 사용된다.
키(key)에 관해 해시 함수를 사용할 시에, 보통 32 비트를 포함하는 데이터 워드(data-word)로 구성되는 해시값(hash value)이 획득된다.
이것에 관해 사용되는 알고리즘의 한가지 타입은, 선형 해싱(linear hashing, LH)인데, 함수로부터 획득된 데이터 워드는 특히 소위 LH-비트를 포함한다. 간단하게 말해서, 획득된 LH-비트는, 데이터베이스내의 한 페이지, 또는 한 페이지를 지시하는 레지스터내의 위치를 지시할 수 있으며, 검색된 엘리먼트는 이 페이지상의 어딘가에 위치된다.
보다 효과적으로 엘리먼트를 검색을 위해, 해싱을 두 단계로 실행하는 것이 공지되어 있다. 획득된 데이터 워드는 이들 두 단계에서 두 그룹의 비트로 분할된다.
제 1 그룹의 비트는, 예컨대, 벡터의 인덱스(index)를 지시하고, 이 인덱스는 새로운 벡터를 지시할 수 있다. 제 2 그룹의 비트는 새로운 벡터의 인덱스를 지시하는데, 이 새로운 인덱스는, 예컨대, 엘리먼트의 링크된 리스트 중의 제 1 엘리먼트를 지시한다. 그 후, 검색된 엘리먼트는, 이 엘리먼트의 링크된 리스트중의 어딘가에서 검색된다.
이러한 링크된 리스트는 서로 상이한 길이를 가질 수 있다. 내부 어드레스는 각 엘리먼트에 존재한다. 다양한 링크가, 메모리 내에서 물리적으로 완전히 상이한 위치에 배치되지만, 포인터(pointer)에 의해 서로 링크된다.
따라서, 어떤 엘리먼트를 탐색할 시에, 엘리먼트의 링크된 리스트의 헤더가 획득된다. 탐색된 내부 어드레스가 제 1 엘리먼트에서 검색되지 않으면, 링크된 리스트내의 다음 엘리먼트에서 탐색이 계속된다. 링크된 리스트내의 다음 엘리먼트가 물리적으로 메모리내의 어딘가에 위치되기 때문에, 다음 엘리먼트를 픽업(pick-up)하기 위해 보통 메모리로의 추가적인 액세스가 요구된다. 잘못된 엘리먼트의 첫번째 픽업은 소위 캐시 미스(cache-miss)이다.
따라서, 어떤 엘리먼트를 탐색하는 사람은 리스트의 길이에 따라 다수의 캐시 미스를 경험할 수 있고, 이는 매우 값비싼 프로세스이다. 차세대 프로세서에서는, 하나의 캐시 미스는 시간적으로 수백의 명령에 대응할 수 있다.
그러므로, 캐시 미스의 수를 최소화하는 것이 바람직하다. 이상적인 상황은, 메모리가 최초에 액세스될 시에 탐색된 엘리먼트가 검색될 수 있는 상황이다.
또한, 전술한 바에 따르면, 공지되어 있는 바와 같이, 해시 값이 레지스터의 위치, 또는 이 위치의 값이 데이터베이스 내에서 추가로 지시하는 벡터를 지시하도록 하여, 데이터 베이스 내에서 동적 변경이 행해지도록 할 수 있으며, 이에 의해 엘리먼트가 예컨대 상이한 페이지 간에 이동될 수 있게 하고, 결과적으로, 새로운 해시 값을 이 엘리먼트에 할당할 필요없이, 이 엘리먼트에 대한 레지스터의 값의 변화가 이루어진다.
또한, 공지되어 있는 바와 같이, 분산형 데이터베이스는 공통 데이터베이스에서 공통 시스템을 형성하는 다수의 노드를 포함하고 있다. 분산형 데이터베이스에서의 정보는 포함된 상이한 노드에 분산된다.
노드는, 데이터베이스의 하나 이상의 부분의 1차 복제(replica) 및, 데이터베이스의 하나 이상의 다른 부분의 2차 복제를 포함할 수 있다. 관련된 2차 복제를 지닌 1차 복제는 통상 프래그먼트(fragment)로 지칭된다.
다음의 간행물은 이 특정 분야에 있어서의 공지된 기술에 대한 이해를 돕기 위한 것으로 고려된다.
1994년, M. Stonebraker(ed.), Morgan Kaufman에 의한 2판인, Reading in Database Systems내의 VLDB-80으로부터 재판된, W. Litwin에 의한 "Linear Hashing: A New Tool for File and Tables Addressing"
1993년, Management of Data에 대한 ACM SIGMOD 국제 회담에 있어서, W. Litwin, M.-A. Neimat, D.A. Schneider에 의한, "LH*-Linear Hashing for Distributed Files"
W. Litwin, M.-A. Neimat.에 의한 "High-Availability LH* Schemes with Mirroring"
Extending Database Technology(EDBT '96)에 대한 5번째 국제 회담에 있어서, J.S. Karlsson, W. Litwin, T. Risch에 의한 "LH*LH: A Scalable High Performance Data Structure for Switched Microcomputers"
1988년 4월 ACM 통신의 P.-A. Larsson에 의한 "Dynamic Hash Tables"
1993년 3월 스웨덴의 링코핑 대학, M. Pettersson에 의한 "Main-Memory Linear Hashing-Some Enhancements of Larson's Algorithm"
도 1은 외부키를 내부키로 변환할 시에 수학적 함수의 사용을 개략적으로 도시한 도면,
도 2는 수학적 함수에 의해 획득된 결과를 엘리먼트의 위치에 대한 간접 참조로 분할한 것을 개략적으로 도시한 도면,
도 3은 버킷 구조를 개략적으로 도시한 도면,
도 4는 프래그먼트에 속하는 페이지의 분할을 개략적으로 도시한 도면,
도 5는 제 1 케이스에서의 엘리먼트의 구조를 개략적으로 도시한 도면,
도 6은 제 2 케이스에서의 엘리먼트의 구조를 개략적으로 도시한 도면이다.
상술한 바와 같이 현재의 기술 수준을 고려할 때, 기술적 과제는, 대부분의 경우에, 캐시 미스를 수반하지 않고, 또는, 어떤 경우에 1회만의 캐시-미스로 엘리먼트가 저장, 탐색 및 재검색될 수 있는 방법을 제공한다는 것을 알 수 있을 것이다.
다른 기술적인 과제는, 엘리먼트를 탐색할 시에 분해능(resolution)을 높임으로써, 캐시-메모리로 판독 입력하는 제 1 경우나, 또는 예외적으로 제 2 판독 입력 경우에, 탐색이 검색된 엘리먼트를 판독 입력할 가능성을 제공할 수 있도록 하는 것이다.
다른 기술적인 과제는, 이와 같은 분해능 및 탐색을 가능하게 하는 데이터 구조를 형성할 수 있는 방법을 제공하는 것이다.
다른 기술적인 과제는, 1차 및 2차 복제와 같은 프래그먼트에 속하는 엘리먼트의 모든 복제가 엘리먼트를 탐색할 시에 검색되도록 하는 것이다.
다른 기술적인 과제는, 다수의 엘리먼트를 저장할 수 있고, 또한 전체적으로 캐시 메모리로 판독 입력될 수 있는 저장 구조 포맷, 즉, 본 명세서에서 컨테이너(container)라 칭하는 것을 고안하는 것이다.
관련된 기술적인 과제는, 수학적 함수에 따라, 이미 가득찬 컨테이너에 저장되는 엘리먼트의 저장을 가능하게 하는 것이다.
또 다른 기술적인 과제는, 수학적 함수에 따라, 이미 가득찬 페이지에 저장되는 엘리먼트의 저장을 가능하게 하는 것에 있다.
또 다른 기술적인 과제는, 엘리먼트의 추가 또는 엘리먼트의 삭제의 결과로서 사이즈가 신축하는 컨테이너의 저장을 위한 이용 가능 페이지 스페이스를 간단하고 효과적으로 취급하는 것이다.
다른 기술적인 과제는, 다수의 컨테이너가 할당된 메모리 스페이스을 채우지 않는 이용 가능한 메모리를 효과적으로 사용할 수 있는 것이다.
이것에 관련하여, 기술적인 과제는, 각각의 컨테이너의 사이즈가 시간이 지남에 따라 증감할 시에 이런 사용을 가능하게 하는 것이다.
따라서, 다른 기술적인 과제는, 특정한 최대 허용 사이즈를 가진 컨테이너, 즉, 최대 컨테이너에 적합한 스페이스를 이중으로 사용할 수 있도록 하는 것이다.
또 다른 기술적인 과제는, 수학적 함수에 따라 컨테이너 내에 존재되어야 하는 모든 엘리먼트가 실제로 존재하는지의 여부에 관한 필요 정보와, 컨테이너내에 수용(accommodation)을 검색할 수 없는 엘리먼트가, 이와 같은 엘리먼트에 대한 탐색이 단일 캐시 미스만을 발생시킬 정도로, 위치되는 곳에 관한 정보를 가진 컨테이너 포맷을 제공하는 것이다.
기술적 과제는, 수용되지 않은 엘리먼트가 컨테이너와 동일한 페이지에 위치하든지, 상이한 페이지에 위치하든지에 관계없이, 이와 같은 정보를 획득할 수 있 는 능력을 제공하는 것이다.
다른 기술적인 과제는, 엘리먼트에 영향을 주는 트랜잭션과 관련하여 상이한 타입의 로킹(locking)을 엘리먼트가 이용할 수 있게 하는 필요 정보를 제공하는 엘리먼트 포맷을 제공한다는 것이다.
다른 기술적인 과제는, 엘리먼트가 서로 상이한 사이즈의 키와 같은 동적 속성을 가질 수 있도록 하는 것이다.
또 다른 기술적 과제는, 다수의 상이한 복제 프로세스에 참여할 수 있는 엘리먼트에 필요 정보를 제공한다는 것이다.
다른 기술적인 과제는, 프래그먼트의 분할 또는 수개의 프래그먼트의 조합에 참여할 수 있는 엘리먼트에 필요 정보를 제공한다는 것이다.
전술한 방법으로부터 시작하여, 하나 이상의 전술한 기술적 과제에 대한 해결책을 제공할 의도로, 본 발명에 따르면, 수학적 함수로 획득된 결과를 적어도 3부분으로 분할하는 것을 제안하는데, 여기서, 제 1 부분은 데이터베이스에 속하는 프래그먼트에 대한 직접 또는 간접 참조(reference)를 구성하고, 제 2 부분은 프래그먼트내의 1 페이지에 대한 직접 또는 간접 참조를 구성하며, 제 3 부분은 상기 페이지에 속하는 버킷(bucket)에 대한 직접 또는 간접 참조를 구성한다.
이와 같은 버킷은 하나 이상의 컨테이너를 포함하며, 이 컨테이너에는 엘리먼트가 저장될 수 있거나, 이미 저장되어 있으며, 또는 상기 엘리먼트에 대한 직접 또는 간접 참조가 저장된다.
수학적 함수로부터 새로운 값을 계산할 필요없이, 영향을 받은 프래그먼트, 페이지, 버킷 또는 엘리먼트를 상이한 방법으로 변경할 수 있도록 하기 위해, 본 발명은 직접 또는 간접 참조를 선택적으로 사용하는 가능성을 제안한다.
직접 참조라는 것은, 어드레스 정보의 재처리(re-processing), 예컨대 다른 수학적 함수를 통해 의도한 위치를 직접적으로 지시하는 내부 어드레스를 의미한다. 간접 참조라는 것은, 의도한 위치를 직접적으로 지시하는 관련 내부 어드레스가 이용할 수 있는 테이블, 레지스터 등을 지시하는 포인터를 의미한다.
의도한 엘리먼트의 액세스 가능성은 다음의 사실에 의해 부분적으로 달성된다:
- 제 1 부분은, 프래그먼트에 속하는 모든 복제에 대한 간접적인 참조를 형성하여, 참조를 통해 모든 복제를 이용 가능하게 한다.
- 제 2 부분은, 상이한 페이지에 대한 포인터의 벡터로 구성되는 레지스터를 지시한다.
- 제 3 부분은, 수학적 함수를 통해 상기 페이지에 속하는 버킷을 지시한다.
이와 같은 버킷은 컨테이너, 혹은 관련된 오버필 컨테이너(overfill-container)를 포함한다.
데이터베이스 내에서 동작하거나, 상기 데이터베이스를 이용하는 프로세서에 속하는 캐시 메모리(cache memory)에 전체 컨테이너가 판독 입력되도록 하기 위해, 본 발명에 따르면, 컨테이너 포맷을 특별한 방법으로 설계할 것을 제안한다. 각각의 컨테이너에는, 컨테이너 헤더의 사이즈 및, 그 컨테이너에 속하는 엘리먼트의 사이즈에 상응하는 사이즈가 할당된다.
사이즈는 컨테이너에 속하는 엘리먼트의 수에 따라 변화하지만, 컨테이너가 확장되는 최대 사이즈는, 여기서 최대 컨테이너로 지칭되며, 이것은 데이터베이스 내에서 동작하는 프로세서, 또는 상기 데이터베이스를 이용하는 프로세서에 속하는 캐시 메모리에 동시에 판독 입력될 수 있는 사이즈로 제한된다.
각각의 페이지 상에서 이용 가능한 저장 스페이스가 효과적인 방법으로 사용될 수 있도록 하고, 또한 탐색된 버킷을 쉽게 검색할 수 있도록 하기 위해, 본 발명에 따르면, 페이지를 다수의 버퍼로 분할하는 것이 제한된다. 각각의 버퍼는 소위 가용성-리스트-한도(availability-list-limit)의 제 1 부분 및 제 2 부분으로 분할된다.
각각의 버퍼는 다음의 것을 포함한다:
- 제 1 및 제 2 부분의 전체를 수용하는 최대 컨테이너; 또는
- 제 1 부분을 시점으로 하여 제 2 부분으로 확장하는 제 1 비최대 컨테이너 (first non-maximum container); 또는
- 제 1 부분을 시점으로 하는 제 1 비최대 컨테이너 및, 제 2 부분을 시점으로 하는 가능한 제 2 비최대 컨테이너(possible second non-maximum container).
제 1 다수의 버퍼는 정적 버퍼(static buffers)로 구성되고, 제 2 다수의 버퍼는 자유 버퍼(free buffers)로 구성된다. 정적 버퍼에 속하는 제 1 부분은 컨테이너를 포함하고, 정적 버퍼에 속하는 제 2 부분 및, 자유 버퍼에 속하는 양 부분은 오버필 컨테이너를 포함하도록 구성된다.
수학적 함수의 효과에 의해, 대부분의 컨테이너는 최대보다 작지만, 다수의 컨테이너는 최대의 절반 이하로 될 것이며, 이것은 이들 후자의 컨테이너가 버퍼의 일부를 점유하는 것을 의미한다.
다시 말해서, 이것은 많은 버퍼가 2개의 컨테이너를 수용할 만큼의 스페이스을 제공할 수 있다는 것을 의미한다. 이 경우에, 본 발명에 따르면, 제 1 부분내에 배치된 컨테이너는, 제 1 부분의 최초에 시작하여, 다른 엘리먼트가 컨테이너에 추가될 시에, 관련 버퍼의 중앙을 향해 확장하며, 제 2 부분내에 배치된 컨테이너는, 상기 제 2 부분의 최후에 시작하여, 다른 엘리먼트가 컨테이너에 추가될 시에, 관련 버퍼의 중앙을 향해 확장하는 것을 제안한다.
그 밖의 모든 것에도 불구하고 수학적 함수가 이미 최대로 채워진 컨테이너내의 위치에 엘리먼트를 할당할 경우, 본 발명에 따르면, 관련 버킷은 오버필 컨테이너를 포함하도록 구성되고, 이런 추가 엘리먼트에는 오버필 컨테이너 내의 위치가 할당되는 것을 제안한다.
페이지내의 이용 가능한 저장 스페이스의 처리를 더욱 간단하게 취급하고, 이와 같은 취급을 보다 효과적으로 하기 위해, 본 발명에 따르면, 가용성-리스트는, 한 페이지상에서, 정적 버퍼에 속하는 모든 이용 가능한 제 2 부분 및, 자유 버퍼에 속하는 모든 이용 가능한 제 1 및 제 2 부분을 포함하는 것을 제안한다.
버퍼에 속하는 이용 가능한 제 2 부분은, 대응하는 제 1 부분내의 비최대 컨테이너의 사이즈가 가용성-리스트-한도를 초과할 경우에, 가용성-리스트로부터 삭제된다.
이전에 가용성-리스트-한도를 초과한 대응하는 제 1 부분내의 컨테이너의 사이즈가 축소하여, 더 이상 가용성-리스트-한도를 초과하지 않을 경우, 버퍼에 속하는 이용 가능한 제 2 부분은 가용성-리스트에 추가된다.
최대 컨테이너에 대한 버퍼내의 양 부분이 점유되기 때문에, 본 발명에 따르면, 가용성-리스트 상에서 이용 가능한 부분내의 위치를 오버필 컨테이너에 할당하고, 상기 이용 가능한 부분은 이런 할당 시에 가용성-리스트로부터 삭제되는 것을 제안한다.
또한, 본 발명에 따르면, 상기 프래그먼트에 속하는 페이지 중 하나는 자유 버퍼만을 포함하는 오버필 페이지로 구성되는 것을 제안한다. 어떠한 부분도 자기 페이지내의 가용성-리스트 상에서 이용할 수 없을 경우, 오버필 페이지 상의 버퍼에 속하는 부분내의 위치가 오버필 컨테이너에 할당된다.
컨테이너 헤더는 4개의 정보 반송 필드(information carrying field)를 포함한다.
제 1 정보 반송 필드는 컨테이너 사이즈에 관한 정보를 포함한다.
버킷이 단지 하나의 컨테이너를 포함할 경우:
- 제 2 정보 반송 필드는 가능한 오버필 컨테이너가 동일한 페이지 상에 존재함을 나타내고;
- 제 3 정보 반송 필드는 어떠한 오버필 컨테이너도 존재하지 않음을 나타내며;
- 제 4 정보 반송 필드는 사용되지 않는다.
버킷이 동일한 페이지 상에 컨테이너 및 오버필 컨테이너를 포함할 경우:
- 제 2 정보 반송 필드는 동일한 페이지 상에 가능한 오버필 컨테이너가 존재함을 나타내고;
- 제 3 정보 반송 필드는 오버필 컨테이너가 존재함을 나타내며;
- 제 4 정보 반송 필드는 오버필 컨테이너를 지시한다.
버킷이 오버필 페이지 상에 오버필 컨테이너를 포함할 경우:
- 제 2 정보 반송 필드는 오버필 페이지 상에 오버필 컨테이너가 존재함을 나타내고;
- 제 3 정보 반송 필드는 오버필 페이지를 지시하는 포인터를 포함하며;
- 제 4 정보 반송 필드는 오버필 컨테이너를 지시하는 포인터를 포함한다.
각각의 필드의 사이즈는 각각의 상황에 적응된다.
컨테이너 내의 스페이스를 최대한으로 사용 가능하게 하기 위하여, 본 발명에 따르면, 컨테이너에 속하는 엘리먼트에는, 헤더 바로 뒤, 상기 컨테이너내에서 서로 연속하는 위치가 할당되는 것을 제안한다.
또한, 수학적 함수를 통해 지시된 컨테이너의 전체가 엘리먼트를 요구하는 프로세서에 속하는 캐시 메모리로 판독 입력되는 것을 제안한다.
캐시 메모리로 판독 입력된 컨테이너 내에서 엘리먼트가 검색되지 않으면, 오버필 컨테이너 전체는 캐시 메모리로 판독 입력된다.
프래그먼트의 복제, 이동, 결합 또는 분할 시에 엘리먼트의 처리를 가능하게 하기 위해, 본 발명에 따르면, 각각의 엘리먼트에 특정 포맷이 할당되는 것을 제안한다.
이 포맷에 따르면, 엘리먼트는 엘리먼트 헤더 및 5개 그룹의 정보를 포함해야 한다.
엘리먼트가 트랜잭션에 이용 가능한 경우:
- 제 1 그룹은 수학적 함수에 의해 획득된 결과의 일부를 포함하고;
- 제 2 그룹은 엘리먼트 상태(status) 비트를 포함하며;
- 제 3 그룹은 엘리먼트가 로크(lock)되지 않았다는 취지(effect)의 정보를 포함하고;
- 제 4 그룹은 상기 엘리먼트에 속하는 로컬 키(local key)의 길이에 관련한 정보를 포함하며;
- 제 5 그룹은 상기 엘리먼트에 속하는 엘리먼트 키의 길이에 관련한 정보를 포함한다.
엘리먼트가 상기 엘리먼트에 영향을 주는 진행중인 트랜잭션으로 인해 트랜잭션에 대해 로크되어 있는 경우:
- 제 1 및 제 2 그룹은, 트랜잭션에 속하는 트랜잭션 레지스터를 지시하는 포인터를 포함하고;
- 제 3 그룹은 엘리먼트가 로크되어 있다는 취지의 정보를 포함하며;
- 제 4 그룹은 로컬 키의 길이에 관련한 정보를 포함하고;
- 제 5 그룹은 엘리먼트 키의 길이에 관련한 정보를 포함한다.
상기 엘리먼트에 영향을 주는 트랜잭션에 속하는 트랜잭션 레지스터는, 함수에 의해 획득된 결과의 일부, 상태 비트, 엘리먼트에 적용된 로크의 타입, 즉 로크 모드를 포함한다.
또한, 엘리먼트는 로컬 키 및 엘리먼트 키를 포함한다.
엘리먼트 헤더는 4 바이트로 구성되어 있고, 제 1 그룹은 19 비트로, 제 2 그룹은 4 비트로, 제 3 그룹은 1 비트로, 제 4 그룹은 4 비트로, 제 5 그룹은 또한 4 비트로 제각기 구성되어 있다.
상태 비트는, 프래그먼트 복제 프로세스와 같이, 엘리먼트 복제 프로세스에 사용된다. 각각의 비트는 엘리먼트가 복제되었는지 복제되지 않았는지를 나타낸다.
따라서, 다수의 동시 복제 프로세스는, 이 예에서는 4개 이하의 프로세스이며, 제각기 각각의 상태 비트를 사용할 수 있다.
수학적 함수에 의해 획득된 결과의 부분은 프래그먼트 분할 프로세스 및 프래그먼트 결합 프로세스에 사용된다.
본 발명의 방법에 의해 주로 제공된 이점은, 원하는 엘리먼트를 단일 메모리 액세스만으로 검색하는 능력, 또는 원하는 엘리먼트가 오버필 컨테이너내에 위치되어 있을 경우에는 2번의 메모리 액세스만으로 검색하는 능력에 있다. 해시 함수를 통해 정확한 컨테이너를 나타낸다.
컨테이너 사이즈는, 컨네이너 전체가 메모리에 대한 단일 액세스로 캐시 메모리에 판독 입력될 수 있도록 적응된다. 캐시 메모리내에서 정확한 컨테이너를 검색하면, 최신 프로세서를 이용하여, 컨테이너 내에서 시리얼로 저장된 엘리먼트 중에서 정확한 엘리먼트를 신속히 검색할 수 있다.
본 발명의 방법의 주요 특징은 다음의 청구항 1의 특징부에서 설명된다.
본 발명과 관련된 특징을 포함하는 방법은, 첨부된 도면을 참조하여 예로서 보다 상세히 설명된다.
도 1은, 엘리먼트(E)에 속하는 외부키, 예컨대 전화 번호(T)를 수학적 함수(f(x))의 입력 데이터로서 사용하는 것을 도시한 것이다.
함수(f(x))에 의해 획득된 결과(y)는 데이터베이스(D)에서 엘리먼트(E)의 내부 위치를 지시한다. 결과(y)는 적어도 3개의 부분(A, B, C)으로 분할된다.
도 2는, 제 1 부분(A)이 데이터베이스(D)에 속하는 프래그먼트(A4)에 대한 간접 참조(A1)를 구성하는 것을 나타내고 있다. 이 참조(A1)는 상이한 프래그먼트를 커버하는 테이블(A2)내의 위치를 지시하고, 여기서 프래그먼트(A4)에 속하는 모든 복사의 저장 장소를 나타내는 정보(A3)가 이용 가능하다.
제 2 부분(B)은 프래그먼트(A4)내에서 페이지(B4)에 대한 간접 참조(B1)를 구성한다. 이 참조(B1)는 레지스터(B2)를 지시하는 포인터로 구성되고, 이 레지스터는 상이한 페이지를 지시하는 포인터(B3)의 벡터로 구성되며, 이 상이한 페이지 중 하나는 페이지(B4)이다.
제 3 부분(C)은 페이지(B4)에 속하는 소위 버킷(C2)에 대한 직접 참조(C1)를 구성한다.
이와 같은 방식으로, 수학적 함수(f(x))에 의해 획득된 값(y)은 특정 버킷(C2)에 직접 어드레스를 제공한다.
도 3에 의하면, 각각의 버킷(C2)은 컨테이너(C5)를 포함하고, 또한 버킷(C4)에 속하는 오버필 컨테이너(C6)를 포함하는 경우도 있다.
도 3은 또한, 헤더(CH)의 사이즈와, 컨테이너(C6)에 속하는 엘리먼트(E1, E2, E3, ...)의 사이즈에 상응하는 사이즈가 각각의 컨테이너(C6)에 할당되는 것을 나타내고 있다.
이 사이즈는 엘리먼트의 수에 따라 변할 수 있지만, 최대 컨테이너의 사이즈는, 데이터베이스 내에서 동작하거나 또는 상기 데이터베이스를 사용하는 프로세서에 속하는 캐시 메모리에 한번에 판독 입력될 수 있는 사이즈를 상한으로 한다.
통상, 최신 프로세서는 캐시 메모리에 한번에 128 바이트를 판독 입력할 수 있고, 다음의 설명은 이 값에 기초로 한다. 그러나, 원하는 효과를 획득하기 위하여, 본 발명에 따른 컨테이너의 사이즈 및, 다음의 설명에 열거된 다른 치수는, 관련 프로세서의 캐시 메모리에 한번에 판독 입력될 수 있는 량에 따라 적응된다.
본 발명의 장래의 응용 시에 어텐션(attention)을 필요로 하는 다른 파라미터로서는, 캐시 메모리에 판독 입력되는 정보의 내용을 처리하는데 걸리는 시간이 있다. 처리 시간이 캐시 미스에 대한 시간을 초과할 경우, 한번에 캐시 메모리에 판독 입력될 수 있는 정보량과는 무관하게, 컨테이너의 사이즈 및 다른 치수를 컨테이너의 처리가 캐시 미스에 대한 시간 경과보다 짧은 시간에 행해지는 사이즈로 제한하는 것이 적당하다.
도 4에 의하면, 페이지(B4)는 다수의 버퍼(B41, B42, B43, ..., B466)로 분할된다. 각각의 버퍼는 소위 가용성-리스트-한도(B4C)의 제 1 부분(B4A) 및 제 2 부분(B4B)으로 분할되고, 각각의 버퍼는 다음을 포함하도록 구성된다:
- 제 1 부분(B4A) 및 제 2 부분(B4B)의 전체를 수용하는 최대 컨테이너(C51);
- 제 1 부분(B4A)에서 시작하여, 제 2 부분(B4B)으로 확장하는 제 1 비최대 컨테이너(C52); 또는
- 제 1 부분(B4A)에서 시작하는 제 1 비최대 컨테이너(C53) 및, 제 2 부분(B4B)에서 시작하는 가능 제 2 비최대 컨테이너(C61).
제 1 다수의 버퍼는 정적 버퍼(B4S)로 구성되어 있고, 제 2 다수의 버퍼는 자유 버퍼(B4F)로 구성되어 있다.
도 4에 따른 예는 8k 바이트(8192 바이트)의 페이지를 포함하고 있다. 이 페이지는, 8 바이트의 헤더(C3)와, 제각기 124 바이트인 64개의 정적 버퍼(B4S) 및 2개의 자유 버퍼(B4F)를 포함하고 있다.
이 구조는, 수학적 함수(f(x))에 의해 획득된 결과(y)의 제 3 부분(C)에 의해 구성된 특정 버킷 및 특정 버퍼의 어드레싱이, 버퍼의 수인 1과 64 사이에 난수 "a"를 형성하는 상기 제 3 부분의 결과를 적응시킴으로써 획득되도록 한다. 이 수"a"에 124(각 버퍼의 바이트 수)를 곱해, 그 적(product)에 8을 가산하며, 이것은 헤더(C3)내의 바이트 수이다.
따라서, 수학적 함수(f(x))의 제 3 부분(C)이 의도된 위치를 직접 지시하는 어드레스를 구성하지만, 다른 수학적 함수의 매체를 통해, 이 함수는 이 예에서 "a"*124+8인 것을 알 수 있다.
따라서, 수학적 함수(f(x))에 따라 랜덤 버퍼 및 이 버퍼 내에 위치하는 버킷이 지시된다.
정적 버퍼(B4S)에 속하는 제 1 부분(B4A)은 컨테이너(C5)를 포함하도록 구성되고, 정적 버퍼(B4S)에 속하는 제 2 부분(B4B)과, 자유 버퍼(B4F)에 속하는 양 부분(B4A, B4B)은 오버필 컨테이너(C6)를 포함하도록 구성된다.
제 1 부분(B4A)에 위치한 컨테이너(C5)는, 제 1 부분(B4A)의 시점에서 개시하고, 다른 엘리먼트(E)가 컨테이너(C5)에 추가될 시에는, 관련 버퍼의 중앙을 향해 확장한다.
제 2 부분(B4B)에 위치한 컨테이너(C6)는, 제 2 부분(B4B)의 종점에서 개시하고, 다른 엘리먼트(E)가 컨테이너(C6)에 추가될 시에는, 관련 버퍼의 중앙을 향해 확장한다.
이것은, 버퍼가 실제로 최대 허용 사이즈의 한 컨테이너만을 수용하도록 구성됨에도 불구하고, 두 개의 컨테이너를 공통 버퍼내에 수용하도록 한다.
효율적인 수학적 함수(f(x))의 경우에, 존재하는 모든 엘리먼트(E)는, 기존의 컨테이너(C5) 내에서 랜덤하고 균등하게 분할될 것이며, 이것은, 컨테이너(C5)의 대부분이 그들의 최대 허용량까지 채워지지 않는다는 것을 의미한다. 또한, 이들 컨테이너의 다수는 가용성-리스트-한도(B4C) 미만이고, 이것은, 다수의 다른 부분(B4B)이 임의의 오버필 컨테이너(C6)에 이용 가능함을 의미한다.
본 발명의 바람직한 실시예에 따르면, 한 컨테이너가 가용성-리스트-한도를 초과하는지의 여부에 관계없이, 버퍼내의 스페이스가 공통 버퍼를 공유하는 두 개의 컨테이너 사이에서 어느 정도 분할되는 지를 확인하는 체크는 이들 두 개의 컨테이너에 의존한다. 따라서, 버퍼에 두 개의 컨테이너를 수용할 만큼 충분한 스페이스가 있다면, 매우 작은 오버필 컨테이너(C6)는, 컨테이너(C5)가 가용성-리스트-한도를 초과하는 범위까지 확장하게 할 수 있다.
관련 버킷(C2)은, 다른 엘리먼트(E)가 상기 버킷에 속하는 최대 허용 사이즈의 컨테이너(C5)에 추가될 시에는, 오버필 컨테이너(C6)를 포함하도록 구성되며, 여기에서 이 다른 엘리먼트에는 오버필 컨테이너(C6)의 위치가 할당된다.
가용성 리스트는, 정적 버퍼(B4S)에 속하는 모든 이용 가능한 제 2 부분(B4B), 페이지(B4)의 자유 버퍼(B4F)에 속하는 모든 이용 가능한 제 1 부분(B4A) 및 이용 가능한 제 2 부분(B4B)을 포함하도록 구성된다. 페이지(B4)의 헤더(C3)는 특히 이 가용성 리스트를 지시하는 포인터를 포함한다.
가용성 리스트는, 이용 가능한 부분의 링크된 리스트 내의 모든 이용 가능한 부분을 포함함으로써 실행될 수 있고, 여기에서 각각의 이용 가능한 부분은 상기 링크된 리스트내의 다음 이용 가능한 부분을 지시하는 포인터를 포함한다. 헤더내의 포인터는 제 1 이용 가능한 부분을 지시한다.
버퍼(B44)에 속하는 이용 가능한 제 2 부분(B4B')은, 대응하는 제 1 부분내의 비최대 컨테이너(C54)의 사이즈가 가용성-리스트-한도(B4C)를 초과할 경우, 가용성-리스트로부터 삭제된다.
이전에 사이즈가 가용성-리스트-한도(B4C)를 초과한 대응하는 제 1 부분내의 컨테이너(C55)가 축소하여, 가용성-리스트-한도를 더 이상 초과하지 않을 경우, 버퍼(B45)에 속하는 이용 가능한 제 2 부분(B4B")은 가용성-리스트에 추가된다.
또한, 제 1 부분의 컨테이너의 사이즈의 확장 또는 축소에 관련하여, 제 2 부분이 가용성-리스트로부터 삭제되거나 가용성-리스트에 추가될 시에는 소정의 히스테리시스(histeresis)를 도입하는 것도 가능하다.
예컨대, 제 1 부분내의 컨테이너가 미리 지정된 값만큼 가용성-리스트-한도를 초과한 후에만, 제 2 부분이 가용성-리스트로부터 삭제될 수 있다.
마찬가지로, 컨테이너의 사이즈가 축소하여, 미리 정해진 마진(margin) 만큼 가용성-리스트-한도 아래에 있는 경우에만, 제 2 부분은 컨테이너의 사이즈의 축소와 관련하여 가용성-리스트에 추가될 수 있다.
이 히스테리시스는, 어떤 이유로 가용성-리스트-한도 부근에서 주기적으로 생기는 컨테이너의 사이즈의 확장 및 축소와 관련하여 발생하는 발진 효과(oscillation effect)를 방지할 수 있다.
가용성-리스트 상에서 이용 가능한 부분(B4B''')내의 위치가 오버필 컨테이너(C61)에 할당되고, 이 할당이 실행될 시에, 이전에 이용 가능한 부분(B4B''')은 가용성-리스트로부터 삭제된다.
어떠한 부분도 가용성-리스트 상에서 이용 가능하지 않는 상황을 보호하기 위해, 본 발명에 따르면, 프래그먼트(A4)에 속하는 페이지 중 하나는 오버필 페이지(B5)로 구성된다. 이 오버필 페이지(B5)는 자유 버퍼(B5F)만을 포함하고 있다. 어떠한 페이지도 가용성-리스트 상에서 이용 가능하지 않는 경우에, 오버필 페이지(B5) 상의 버퍼(B53)에 속하는 부분내의 위치가 오버필 컨테이너(C62)에 할당된다.
도 3에 따르면, 컨테이너(C5)에 속하는 헤더(CH)는 4개의 정보 반송 필드(CH1, CH2, CH3, CH4)을 포함하고, 여기에서 제 1 정보 반송 필드(CH1)는 컨테이너 사이즈에 관한 정보를 포함하고 있다.
버킷(C2)이 단지 하나의 컨테이너를 포함할 경우:
- 제 2 정보 반송 필드(CH2)는 가능한 오버필 컨테이너(C6)가 동일한 페이지(B4)에 존재함을 나타내고;
- 제 3 정보 반송 필드(CH3)는 어떠한 오버필 컨테이너(C6)도 존재하지 않음을 나타내며;
- 제 4 정보 반송 필드(CH4)는 사용되지 않는다.
버킷(C2)이 동일한 페이지(B4)상에서 컨테이너(C5) 및 오버필 컨테이너(C6)를 포함할 경우:
- 제 2 정보 반송 필드(CH2)는 가능한 오버필 컨테이너(C6)가 동일한 페이지(B4) 상에 존재함을 나타내고;
- 제 3 정보 반송 필드(CH3)는 오버필 컨테이너(C6)가 존재함을 나타내며;
- 제 4 정보 반송 필드(CH4)는 오버필 컨테이너(C6)를 지시한다.
버킷(C5)이 오버필 페이지(B5) 상에서 오버필 컨테이너(C6)를 포함할 경우:
- 제 2 정보 반송 필드(CH2)는 오버필 컨테이너(C6)가 오버필 페이지(B5) 상에 존재함을 나타내고;
- 제 3 정보 반송 필드(CH3)는 오버필 페이지(B5)를 지시하는 포인터를 포함하며;
- 제 4 정보 반송 필드(CH4)는 오버필 컨테이너(C6)를 지시하는 포인터를 포함한다.
각각의 필드(CH1, CH2, CH3, CH4)의 사이즈는 각각의 상황에 적응된다.
수학적 함수에 의해 얻어진 결과의 제 3 부분과 유사하게, 제 4 정보 반송 필드내의 포인터는, 버퍼의 수인 1과 64 사이의 수와, 각각의 버퍼의 바이트 수인 124를 곱해, 여기에 헤더의 바이트 수인 8을 가산한 수로 이루어진다. 그러나, 이것은, 랜덤하게 행해지지 않지만, 어느 버퍼가 가용성-리스트 상에서 이용 가능하다는 것에 따른다.
각각의 엘리먼트(E1, E2, E3, ...)에는, 컨테이너 내에서 헤더(CH) 바로 뒤의 연속하는 위치가 할당된다.
이론상, 오버필 컨테이너(C6)는 최대 허용 사이즈에 도달할 수 있고, 이와 함께, 다른 오버필 컨테이너(C6')를 참조할 필요가 있다. 이와 같은 이유로, 오버필 컨테이너를 포함하는 모든 컨테이너는 상술한 헤더를 포함할 것이다. 실제로는 있지도 않지만, 버킷(C2)이 두 개 이상의 오버필 컨테이너를 포함할 필요가 있으면, 이것은, 최종 오버필 컨테이너(C6')내에서 엘리먼트(E1')를 탐색할 시에 동일 수의 캐시-미스를 생기게 한다.
프로세서가 엘리먼트(E)를 탐색할 경우, 수학적 함수(f(x))를 통해 지시된 컨테이너(C5) 전체는 프로세서에 속하는 캐시 메모리에 판독 입력된다.
캐시 메모리내에 판독 입력된 컨테이너(C5)내에서 엘리먼트(E)가 검색되지 않으면, 오버필 컨테이너(C6) 전체는 캐시 메모리에 판독 입력된다.
또한, 엘리먼트(E)는, 헤더, 5개 그룹 정보를 가진 엘리먼트 헤더(EH)를 포함하고 있다. 본 발명에 따르면, 엘리먼트 헤더는 2개의 상이한 케이스에서 엘리먼트(E)를 기술하도록 적응된다.
도 5는, 엘리먼트가 트랜잭션(transaction)에 이용 가능할 시의 엘리먼트(E)의 구성을 도시한 것이다. 이 경우에, 제 1 그룹(G1)은 수학적 함수(f(x))에 의해 얻어진 결과(y')의 일부를 포함하고, 제 2 그룹(G2)은 엘리먼트(E)의 상태 비트(ES)를 포함하며, 제 3 그룹(G3)은 엘리먼트가 로크되지 않은 것을 나타내는 정보(LS)(Lock Status)를 포함하며, 제 4 그룹(G4)은 엘리먼트에 속하는 로컬 키의 길이에 관한 정보를 포함하며, 제 5 그룹(G5)은 엘리먼트에 속하는 엘리먼트 키의 길이에 관한 정보를 포함하고 있다.
또한, 엘리먼트(E)는 로컬 키(G6) 및 엘리먼트 키(G7)를 포함하고 있다.
도 6은, 엘리먼트(E')에 영향을 주는 진행중인 트랜잭션으로 인해, 엘리먼트가 트랜잭션에 대해 로크될 시의 엘리먼트(E')의 구성을 도시한 것이다.
예시된 경우에서, 제 1 및 제 2 그룹(G1', G2')은 모두 트랜잭션에 속하는 트랜잭션 레지스터(TR)를 지시하는 포인터(G12)를 포함하고, 트랜잭션 레지스터(TR)는, 수학적 함수(f(x))로부터 획득된 결과(y')의 부분, 상태 비트(ES) 및, 엘리먼트에 적용된 로크의 타입(LM)(Lock Mode)을 포함하며, 상기 제 3 그룹(G3')은 엘리먼트가 로크되어 있다는 취지에 관한 정보(LS)를 포함하고 있다.
예시된 경우에서, 제 4 그룹(G4')은 또한 로컬 키(G6')의 길이에 관한 정보를 포함하고, 제 5 그룹(G5')은 엘리먼트 키(G7')의 길이에 관한 정보를 포함하고 있다.
엘리먼트 헤더(EH)는 4 바이트로 구성되며, 여기서, 제 1 그룹(G1)은 19 비트, 제 2 그룹(G2)은 4 비트, 제 3 그룹(G3)은 1 비트, 제 4 그룹(G4)은 4 비트, 제 5 그룹(G5)도 또한 4 비트로 제각기 구성된다.
상태 비트(ES)는, 프래그먼트(A4)를 복제할 시와 같은 엘리먼트 복제 프로세스에 사용하기 위한 것이며, 여기서, 각각의 비트는 엘리먼트(E)가 복사되었는지의 여부를 나타낸다. 이것은, 동시에 행하는 다수의 복제 프로세스, 예시된 경우에서는 4개의 프로세스가 제각기 각각의 상태 비트를 이용할 수 있도록 한다.
수학적 함수에 의해 얻어진 결과(y')의 부분은 프래그먼트 분할 프로세스 및 프래그먼트 결합 프로세스에 이용하기 위한 것이다.
데이터베이스 내에서 엘리먼트들을 랜덤하고 균등하게 분배할 수 있는 수학적 함수(f(x))의 한가지 타입은 소위 해시 함수이며, 이것은 본 발명을 실행할 시에 편리하게 사용될 수 있다.
간략화를 위해, 기술된 실시예에서는, 120 바이트까지의 사이즈를 가지는 키의 처리를 예시하도록 제한하였다. 그러나, 이 기술 분야의 숙련자는, 본 발명의 개념 내에서 더욱 큰 키를 사용할 수 있도록, 수정 및 개조가 이루어질 수 있다는 것을 이해할 것이다.
그러므로, 본 발명은 전술하고 예시한 실시예에 제한을 받지 않고, 다음의 청구범위에서 정의된 바와 같은 본 발명의 개념의 범위내에서 수정이 이루어질 수 있음을 이해할 것이다.

Claims (27)

  1. 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법으로서, 데이터베이스에 데이터 엘리먼트를 저장하기 위한 저장 스페이스에 대한 참조는 수학적 함수에 의해 계산되고, 상기 함수의 입력 데이터는 상기 엘리먼트에 속하는 외부 키로 구성되며, 상기 수학적 함수에 의해 얻어진 결과는 데이터베이스내에서 상기 엘리먼트의 내부 위치를 지시하며, 상기 결과는 상이한 부분으로 분할되는, 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법에 있어서,
    상기 결과는 3개 이상의 부분으로 분할되는데, 제 1 부분은 상기 데이터베이스에 속하는 프래그먼트에 대한 직접 또는 간접 참조를 구성하고; 제 2 부분은 상기 프래그먼트내의 페이지에 대한 직접 또는 간접 참조를 구성하며; 제 3 부분은 상기 페이지에 속하는 소위 버킷에 대한 직접 또는 간접 참조를 구성하며; 상기 버킷은, 상기 엘리먼트가 저장될 수 있거나, 이미 저장되어 있으며, 또는 상기 엘리먼트에 대한 직접 또는 간접 참조가 저장되는 하나 이상의 컨테이너를 포함하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  2. 제 1 항에 있어서,
    직접 참조는, 의도된 위치를 직접 지시하거나 수학적 함수를 통해 지시하는 내부 어드레스로 구성되고; 간접 참조는, 의도된 위치를 직접 지시하는 관련 내부 어드레스가 이용 가능한 테이블을 지시하는 포인터를 구성하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  3. 제 1 항에 있어서,
    상기 제 1 부분은 상기 프래그먼트에 속하는 모든 복제에 대한 간접 참조를 구성하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  4. 제 1 항에 있어서,
    상기 제 2 부분은 레지스터를 지시하고; 상기 레지스터는 상이한 페이지를 지시하는 포인터의 벡터로 구성되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  5. 제 1 항에 있어서,
    상기 제 3 부분은 상기 페이지에 속하는 관련 버킷을 지시하고; 지시는 수학적 함수를 통해 행해지는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  6. 제 1 항에 있어서,
    각각의 버킷은 컨테이너를 포함하고, 가능한 경우에는 또한 각각의 버킷에 속하는 오버필 컨테이너를 포함하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  7. 제 1 항에 있어서,
    각각의 컨테이너에는, 헤더의 사이즈 및, 상기 컨테이너에 속하는 엘리먼트의 사이즈에 대응하는 사이즈가 할당하고; 상기 사이즈는 상기 컨테이너에 속하는 엘리먼트의 수에 따라 변화하며; 최대 컨테이너의 사이즈는, 데이터베이스 내에서 동작하거나 상기 데이터베이스를 이용하는 프로세서에 속하는 캐시 메모리로 한번에 판독 입력될 수 있는 데이터 정보량과 동등하도록 제한되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  8. 제 7 항에 있어서,
    캐시 메모리로 한번에 판독 입력될 수 있는 정보량을 처리하는데 걸리는 시간은 캐시 미스에 대한 시간을 초과하며,
    캐시 메모리로 한번에 판독 입력될 수 있는 데이터 정보량과는 관계없이, 최대 사이즈의 컨테이너를 처리하는데 걸리는 시간이 캐시 미스에 대한 시간 경과보다 짧게 되도록, 컨테이너의 최대 확장 사이즈가 제한되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  9. 제 6 항, 제 7 항 또는 제 8 항 중 어느 한 항에 있어서,
    상기 페이지는 다수의 버퍼로 분할되고; 각각의 버퍼는 소위 가용성-리스트-한도의 제 1 부분 및 제 2 부분으로 분할되며; 각각의 버퍼는, 상기 제 1 및 제 2 부분의 전체를 수용하는 최대 사이즈 컨테이너, 상기 제 1 부분에서 시작하여 상기 제 2 부분으로 확장하는 제 1 비최대 컨테이너, 또는 상기 제 1 부분에서 시작하여 상기 제 2 부분으로 확장하지 않는 제 1 비최대 컨테이너, 및 상기 제 2 부분에서 시작하는 가능한 제 2 비최대 컨테이너를 포함하도록 구성되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  10. 제 9 항에 있어서,
    버퍼내의 메모리 스페이스가 공통 버퍼를 공유하는 2개의 컨테이너 사이에서 분할되는지의 여부에 관한 체크는, 상기 컨테이너중의 어느 하나가 가용성-리스트-한도를 초과하는지의 여부에 관계없이, 상기 2개의 컨테이너에 대해 행해지는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  11. 제 9 항에 있어서,
    제 1 다수의 버퍼는 정적 버퍼로 구성되고; 제 2 다수의 버퍼는 자유 버퍼로 구성되며; 상기 정적 버퍼에 속하는 제 1 부분은 컨테이너를 포함하며; 상기 정적 버퍼에 속하는 상기 제 2 부분과 상기 자유 버퍼에 속하는 양 부분은 오버필 컨테이너를 포함하도록 구성되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  12. 제 11 항에 있어서,
    제 1 부분내에 배치된 컨테이너는, 상기 제 1 부분의 시초에서 개시하여, 다른 엘리먼트가 상기 컨테이너에 추가될 시에 관련 버퍼의 중앙을 향해 확장하며; 제 2 부분내에 배치된 컨테이너는, 상기 제 2 부분의 종점에서 시작하여, 다른 엘리먼트가 상기 컨테이너에 추가될 시에 관련 버퍼의 중앙을 향해 확장하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  13. 제 11 항에 있어서,
    관련 버킷은, 다른 엘리먼트가 상기 버킷에 속하는 최대 사이즈 컨테이너에 할당될 시에 오버필 컨테이너를 포함하도록 구성되고; 상기 다른 엘리먼트에는 상기 오버필 컨테이너내의 위치가 할당되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  14. 제 11 항에 있어서,
    가용성 리스트는, 상기 페이지 상에서, 상기 정적 버퍼에 속하는 모든 이용 가능한 제 2 부분 및, 상기 자유 버퍼에 속하는 모든 이용 가능한 제 1 및 제 2 부분을 포함하도록 구성되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  15. 제 14 항에 있어서,
    버퍼에 속하는 이용 가능한 제 2 부분은, 대응하는 제 1 부분내의 비최대 컨테이너의 사이즈가 가용성-리스트-한도를 초과할 시에, 상기 가용성 리스트로부터 삭제되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  16. 제 14 항에 있어서,
    버퍼에 속하는 이용 가능 제 2 부분은, 이전에 상기 가용성-리스트-한도를 초과한 대응하는 제 1 부분내의 컨테이너의 사이즈가 감소하여 더 이상 상기 한도를 초과하지 않을 시에, 가용성 리스트에 추가되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  17. 제 15 항 또는 제 16 항에 있어서,
    상기 제 1 부분내의 컨테이너 사이즈의 확장 또는 축소와 관련하여 이용 가능한 제 2 부분이 상기 가용성 리스트로부터 삭제되거나, 상기 리스트에 추가될 시에, 상기 제 1 부분내의 컨테이너가 미리 지정된 값만큼 가용성-리스트-한도를 초과한 후에 제 2 부분을 상기 가용성 리스트로부터 삭제하도록 하는 히스테리시스를 도입하고; 상기 제 1 부분내의 컨테이너가 축소하여 미리 정해진 값만큼 상기 가용성-리스트-한도 아래에 놓인 후에 제 2 부분이 상기 가용성 리스트에 추가되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  18. 제 13 항 또는 제 15 항에 있어서,
    상기 오버필 컨테이너에는, 상기 가용성 리스트 상에서 이용 가능한 부분내의 위치가 할당되고; 상기 이용 가능한 부분은 상기 할당을 실행할 시에 상기 리스트로부터 삭제되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  19. 제 13 항 또는 제 15 항에 있어서,
    상기 프래그먼트에 속하는 페이지 중 하나는 오버필 페이지이고; 상기 오버필 페이지는 단지 자유 버퍼만을 포함하며; 어떠한 부분도 가용성 리스트에서 이용 가능하지 않을 시에, 상기 오버필 컨테이너에는, 상기 오버필 페이지 상에서 버퍼에 속하는 부분내의 위치가 할당되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  20. 제 19 항에 있어서,
    상기 헤더는 4개의 정보 반송 필드를 포함하고, 그 중 제 1 정보 반송 필드는 상기 컨테이너의 사이즈에 관한 정보를 포함하며, 버킷이 단지 하나의 컨테이너를 포함할 경우:
    - 제 2 정보 반송 필드는 가능한 오버필 컨테이너가 동일한 페이지 상에 존재함을 나타내고;
    - 제 3 정보 반송 필드는 어떠한 오버필 컨테이너도 존재하지 않음을 나타내며;
    - 제 4 정보 필드는 사용되지 않으며;
    버킷이 동일한 페이지 상에서 컨테이너 및 오버필 컨테이너를 포함할 경우:
    - 제 2 정보 반송 필드는 동일한 페이지 상에서 가능한 오버필 컨테이너가 존재함을 나타내고;
    - 제 3 정보 반송 필드는 오버필 컨테이너가 존재함을 나타내며;
    - 제 4 정보 반송 필드는 상기 오버필 컨테이너를 지시하며;
    상기 버킷이 상기 오버필 페이지 상에서 오버필 컨테이너를 포함할 경우:
    - 제 2 정보 반송 필드는 상기 오버필 페이지 상에서 오버필 컨테이너가 존재함을 나타내며;
    - 제 3 정보 반송 필드는 상기 오버필 페이지를 지시하는 포인터를 포함하며;
    - 상기 제 4 정보 반송 필드는 상기 오버필 컨테이너를 지시하는 포인터를 포함하며;
    각각의 필드의 사이즈는 각각의 상황에 적응되고; 상기 컨테이너에 속하는 엘리먼트에는, 상기 헤더 바로 뒤, 상기 컨테이너내에서 연속하는 위치가 할당되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  21. 제 6 항에 있어서,
    상기 수학적 함수에 의해 나타낸 컨테이너 전체는 엘리먼트를 탐색하는 프로세서에 속하는 캐시 메모리에 판독 입력되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  22. 제 21 항에 있어서,
    상기 캐시 메모리에 판독 입력된 컨테이너내에서 상기 엘리먼트가 검색되지 않을 경우, 상기 오버필 컨테이너 전체는 상기 캐시 메모리에 판독 입력되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  23. 제 1 항에 있어서,
    상기 엘리먼트는 5개 그룹의 정보를 가진 헤더를 포함하고; 상기 엘리먼트가 트랜잭션에 이용 가능한 경우, 제 1 그룹은 상기 수학적 함수에 의해 얻어진 결과의 일부를 포함하고, 제 2 그룹은 엘리먼트 상태 비트를 포함하며, 제 3 그룹은 엘리먼트가 로크되지 않음을 나타내는 정보를 포함하며, 제 4 그룹은 상기 엘리먼트에 속하는 로컬 키의 길이에 관한 정보를 포함하며, 제 5 그룹은 상기 엘리먼트에 속하는 엘리먼트 키의 길이에 관한 정보를 포함하며; 상기 엘리먼트는, 또한 상기 로컬 키 및 상기 엘리먼트 키를 포함하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  24. 제 23 항에 있어서,
    엘리먼트에 영향을 주는 진행 중인 트랜잭션으로 인해 상기 엘리먼트가 트랜잭션에 대해 로크될 경우, 제 1 및 제 2 그룹은 모두 상기 트랜잭션에 속하는 트랜잭션 레지스터를 지시하는 포인터를 포함하고; 상기 트랜잭션 레지스터는, 상기 수학적 함수에 의해 얻어진 결과의 상기 부분, 상기 상태 비트 및, 상기 엘리먼트에 적용된 로크의 타입을 포함하며; 상기 제 3 그룹은 상기 엘리먼트가 로크됨을 나타내는 정보를 포함하며; 상기 제 4 그룹은 상기 로컬 키의 길이에 관한 정보를 포함하며; 상기 제 5 그룹은 상기 엘리먼트 키의 길이에 관한 정보를 포함하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  25. 제 24 항에 있어서,
    상기 헤더는 4 바이트로 구성되고; 상기 제 1 그룹은 19 비트를 포함하며, 상기 제 2 그룹은 4 비트를 포함하며, 상기 제 3 그룹은 1 비트를 포함하며, 상기 제 4 그룹은 4 비트를 포함하며, 상기 제 5 그룹은 4 비트를 포함하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  26. 제 23 항에 있어서,
    상기 프래그먼트를 복제할 시와 같은 엘리먼트 복제 프로세스에서 상기 상태 비트가 사용되고; 각각의 비트는 상기 엘리먼트가 복제되었는 지의 여부를 나타내며; 다수의 동시 복제 프로세스는 제각기 각각의 상태 비트를 사용하는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
  27. 제 23 항에 있어서,
    상기 수학적 함수에 의해 얻어진 상기 결과의 부분은 프래그먼트 분할 프로세스 및 프래그먼트 결합 프로세스에서 사용되는 것을 특징으로 하는 데이터베이스에 엘리먼트를 저장하고, 저장된 엘리먼트를 검색하는 방법.
KR10-2000-7000595A 1997-07-21 1998-07-07 데이터베이스에 엘리먼트를 저장하는 방법 KR100529995B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9702760-1 1997-07-21
SE9702760A SE510001C2 (sv) 1997-07-21 1997-07-21 Metod för att lagra element i en databas
PCT/SE1998/001332 WO1999005586A2 (en) 1997-07-21 1998-07-07 A method of storing elements in a database

Publications (2)

Publication Number Publication Date
KR20010022027A KR20010022027A (ko) 2001-03-15
KR100529995B1 true KR100529995B1 (ko) 2005-11-22

Family

ID=20407791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-7000595A KR100529995B1 (ko) 1997-07-21 1998-07-07 데이터베이스에 엘리먼트를 저장하는 방법

Country Status (10)

Country Link
US (1) US6308169B1 (ko)
EP (1) EP0996881B1 (ko)
JP (1) JP2001511553A (ko)
KR (1) KR100529995B1 (ko)
CN (1) CN1111815C (ko)
AU (1) AU8365098A (ko)
BR (1) BR9810767A (ko)
DE (1) DE69826283D1 (ko)
SE (1) SE510001C2 (ko)
WO (1) WO1999005586A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200104033A (ko) * 2019-02-26 2020-09-03 주식회사퍼즐시스템즈 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템
KR20200104035A (ko) * 2019-02-26 2020-09-03 주식회사퍼즐시스템즈 컬럼 별 바이너리 파일 저장 구조를 이용하여 대용량 데이터를 메모리 용량 제약없이 차트로 표시하는 시스템

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389305B1 (en) * 1999-06-01 2008-06-17 Fair Isaac Corporation System and method for managing a database
KR100744378B1 (ko) * 2001-08-17 2007-07-30 삼성전자주식회사 해시함수를 이용한 데이터베이스 검색방법
US7058642B2 (en) 2002-03-20 2006-06-06 Intel Corporation Method and data structure for a low memory overhead database
CA2384185A1 (en) * 2002-04-29 2003-10-29 Ibm Canada Limited-Ibm Canada Limitee Resizable cache sensitive hash table
US7010521B2 (en) 2002-05-13 2006-03-07 Netezza Corporation Optimized database appliance
EP1546928A4 (en) * 2002-09-18 2008-07-09 Netezza Corp Field-Oriented Pipeline Architecture for a Programmable Data Streaming Processor
US7421562B2 (en) * 2004-03-01 2008-09-02 Sybase, Inc. Database system providing methodology for extended memory support
US7774308B2 (en) * 2004-12-15 2010-08-10 Applied Minds, Inc. Anti-item for deletion of content in a distributed datastore
US8996486B2 (en) * 2004-12-15 2015-03-31 Applied Invention, Llc Data store with lock-free stateless paging capability
US8275804B2 (en) * 2004-12-15 2012-09-25 Applied Minds, Llc Distributed data store with a designated master to ensure consistency
US11321408B2 (en) 2004-12-15 2022-05-03 Applied Invention, Llc Data store with lock-free stateless paging capacity
US20070022120A1 (en) * 2005-07-25 2007-01-25 Microsoft Corporation Caching and modifying portions of a multi-dimensional database on a user device
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8527703B1 (en) * 2009-06-19 2013-09-03 Emc Corporation Cache management system and method
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8700842B2 (en) 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US10558705B2 (en) * 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
US20230135583A1 (en) * 2021-11-03 2023-05-04 Netapp, Inc. Distributed storage systems and methods to provide change tracking integrated with scalable databases

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870764A (en) * 1993-05-12 1999-02-09 Apple Computer, Inc. Method of managing a data structure for concurrent serial and parallel revision of a work
US5832131A (en) * 1995-05-03 1998-11-03 National Semiconductor Corporation Hashing-based vector quantization
US5974421A (en) * 1996-12-23 1999-10-26 Microsoft Corporation Cache-efficient object loader
US5897637A (en) * 1997-03-07 1999-04-27 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6134546A (en) * 1998-06-25 2000-10-17 International Business Machines Corporation Method and computer program product for implementing subquery join

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200104033A (ko) * 2019-02-26 2020-09-03 주식회사퍼즐시스템즈 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템
KR20200104035A (ko) * 2019-02-26 2020-09-03 주식회사퍼즐시스템즈 컬럼 별 바이너리 파일 저장 구조를 이용하여 대용량 데이터를 메모리 용량 제약없이 차트로 표시하는 시스템
KR102171430B1 (ko) 2019-02-26 2020-10-29 주식회사 퍼즐시스템즈 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템
KR102177792B1 (ko) 2019-02-26 2020-11-11 주식회사 퍼즐시스템즈 컬럼 별 바이너리 파일 저장 구조를 이용하여 대용량 데이터를 메모리 용량 제약없이 차트로 표시하는 시스템

Also Published As

Publication number Publication date
CN1111815C (zh) 2003-06-18
US6308169B1 (en) 2001-10-23
JP2001511553A (ja) 2001-08-14
EP0996881B1 (en) 2004-09-15
SE9702760D0 (sv) 1997-07-21
SE9702760L (sv) 1999-01-22
KR20010022027A (ko) 2001-03-15
WO1999005586A3 (en) 1999-04-15
AU8365098A (en) 1999-02-16
DE69826283D1 (de) 2004-10-21
SE510001C2 (sv) 1999-03-29
CN1271439A (zh) 2000-10-25
BR9810767A (pt) 2001-01-16
EP0996881A2 (en) 2000-05-03
WO1999005586A2 (en) 1999-02-04

Similar Documents

Publication Publication Date Title
KR100529995B1 (ko) 데이터베이스에 엘리먼트를 저장하는 방법
Litwin Linear Hashing: a new tool for file and table addressing.
Enbody et al. Dynamic hashing schemes
US7827146B1 (en) Storage system
JP4921865B2 (ja) アドレス関連テーブル構造を持つスキップ・リスト
US5487164A (en) Distribution-based replacement selection sorting system
JP3640978B2 (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
US7493464B2 (en) Sparse matrix
CN112000846B (zh) 基于gpu分组lsm树索引的方法
JP3345628B2 (ja) データ格納及び検索方法
CA2429990A1 (en) Method of organising, interrogating and navigating a database
US6654855B1 (en) Method and apparatus for improving the efficiency of cache memories using chained metrics
EP0996902A2 (en) Structure for a data-base
JPS62113234A (ja) レコ−ドセツト分類方法
JPH11507457A (ja) メモリ構造
EP1564640A1 (en) Database accelerator
Martin Spiral storage: Incrementally augmentable hash addressed storage
Omiecinski et al. A global approach to record clustering and file reorganization
EP1327194A2 (en) A data structure, memory allocator and memory management system
US7130857B2 (en) Method for accessing a memory unit in which sequences of notes are stored, corresponding memory unit and corresponding program
NO331821B1 (no) Organisering av data i en database
Omiecinski Concurrent file reorganization: Clustering, conversion and maintenance
JP2871755B2 (ja) ダイナミック・ハッシュにおけるスプリット制御方法
Fossum et al. A 64-GB Sort at 28 GB/s on a 4-GPU POWER9 Node for Uniformly-Distributed 16-Byte Records with 8-Byte Keys
Wang et al. SCMKV: A Lightweight Log-Structured Key-Value Store on SCM

Legal Events

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

Payment date: 20121019

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131017

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141022

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 13

EXPY Expiration of term