KR20040103495A - b-트리를 사용한 위치 액세스 - Google Patents

b-트리를 사용한 위치 액세스 Download PDF

Info

Publication number
KR20040103495A
KR20040103495A KR1020040039243A KR20040039243A KR20040103495A KR 20040103495 A KR20040103495 A KR 20040103495A KR 1020040039243 A KR1020040039243 A KR 1020040039243A KR 20040039243 A KR20040039243 A KR 20040039243A KR 20040103495 A KR20040103495 A KR 20040103495A
Authority
KR
South Korea
Prior art keywords
leaf
value
level
tree
count
Prior art date
Application number
KR1020040039243A
Other languages
English (en)
Inventor
스티븐제이. 바일리
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040103495A publication Critical patent/KR20040103495A/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/9027Trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • 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/99943Generating database or data structure, e.g. via user interface

Abstract

그 안에 정보를 저장하고 있는 b-트리는 b-트리의 리프들에 저장되어 있는 요소들의 위치 액세스를 용이하게 하기 위해 이용된다. b-트리는 각각의 비리프 레벨 값에 대해 그의 바로 좌측에 카운트가 배치되고 그의 바로 우측에 값이 배치되도록 구조화되어 있다. 이들 좌측 및 우측 카운트는 값의 바로 좌측 및 바로 우측에 있는 서브 트리의 리프들에 위치하는 리프 레벨 값의 개수를 나타낸다. 좌측 및 우측 카운트는 특정의 위치를 찾아서 b-트리를 따라 하강할 때 취할 경로를 결정하기 위해 사용된다. 이 카운트는 또한 b-트리의 리프 레벨에 있는 값들의 총 개수를 결정하기 위해 이용될 수도 있다.

Description

b-트리를 사용한 위치 액세스{POSITIONAL ACCESS USING A B-TREE}
본 발명은 일반적으로 데이터 처리에 관한 것으로서, 보다 상세하게는 b-트리에서의 요소의 위치 액세스에 관한 것이다.
균형 트리(balanced tree)(b-트리)는 데이터를 정렬된 순서로(in a sorted order) 저장하기 위해 종종 사용되는 데이터 구조이다. b-트리는 특히 대량의 데이터에 정렬된 순서로 액세스하는 일이 일반적으로 요구되는 데이터베이스 연산에 적용할 수 있다. 데이터를 저장하기 위해 b-트리를 사용하면 b-트리 내의 데이터를 정렬된 순서로 용이하게 검색할 수 있게 된다. 또한, 정렬된 순서 내에서의 그의 순번 위치(예를 들어, 정렬된 데이터 집합에서 n번째 항목)에 기초하여 b-트리 내의 개개의 데이터 항목에 액세스하기 위해 정렬된 순서를 사용하는 것도 가능하다. 이러한 유형의 액세스를 위치 액세스(positional access)라고 한다.
b-트리를 이용하는 위치 액세스는 통상적으로 b-트리에서의 데이터 항목의 위치를 계산하는 것 또는 그에 접근하는 것을 포함한다. 예를 들어, b-트리가 그의 리프(leaf)들에 2n개의 서로 다른 값을 저장하는 경우, b-트리가 왼쪽에서 오른쪽으로 데이터를 거의 균일하게 분포시키고 있다는 가정을 사용할 때, n번째의 정렬된 항목은 b-트리의 리프 레벨(leaf level)에서 대략 중간쯤에 나타날 것으로 추정될 수 있다. 그렇지만, 검색이 시작할 때, b-트리의 정확한 크기 및 b-트리에서의 데이터의 정확한 분포는 일반적으로 모르고 있다. 즉, b-트리의 리프 노드에 있는 값의 정확한 개수는 물론 이들 값이 얼마나 균일하게 분포되어 있는지를 모르고 있을 수 있다. 따라서, 탐색 항목(sought item)에 관해 아는 것이라곤 그것이 정렬된 순서에서 n번째 항목이라는 것이 전부인 경우, 그 항목을 정확하게 찾아내는 일은 여전히 어려울 수 있다. 게다가, 그 추정이 얼마나 정확한지를 확인하는 것조차도 어려운 일인데, 왜냐하면 일반적으로 주어진 데이터 항목이 n번째 데이터 항목인지 여부를 판정하는 일은 몇개의 데이터 항목이 그 주어진 데이터 항목보다 선행하는지를 판정하기 위해 트리를 아래쪽으로 그의 리프들에 이르기까지 순회하는 것을 필요로 하기 때문이다. 따라서, 상기한 단점을 겪지 않는 b-트리를 이용한 위치 액세스 기술이 요망된다.
본 발명에 따른 b-트리는 특정의 순번 위치에 있는 값 또는 데이터 항목을 찾아내는 일을 용이하게 해주기 위해 또는 다른 위치 액세스 동작을 수행하기 위해 사용될 수 있는 정보를 저장하도록 구성되어 있다. b-트리는 비리프 레벨 노드(non-leaf-level node)에 있는 각각의 인덱스 값이 좌측 카운트(left count) 및 우측 카운트(right count)와 관련되도록 구조화되어 있다. 이 좌측 카운트와 우측 카운트는 각각 인덱스 값의 바로 좌측 및 바로 우측에 있는 서브 트리에 위치하는 리프-레벨 값의 개수를 나타낸다. 이 좌측값 및 우측값은 특정의 순번 위치를 갖는 데이터 항목을 찾아서 b-트리를 따라 하강할 때 취할 경로를 결정하는 데 사용된다.
b-트리의 미리 정해진 장소에 위치하는 요소를 검색하는 방법은 좌측에서 우측으로 b-트리의 루트 노드에 있는 인덱스 값을 평가하는 단계를 포함한다. 만나는 첫번째 좌측 카운트(first left count encountered)보다 탐색 데이터 항목의 순번 위치가 작거나 같은 경우, 루트의 최좌측 서브 트리가 선택된다. 그렇지 않은 경우, 좌측 카운트가 현재의 카운트에 가산된다. 탐색 데이터 항목의 순번 위치가 현재의 카운트와 우측 카운트의 합보다 작거나 같을 경우, 현재의 인덱스 값의 바로 우측에 있는 서브 트리가 선택된다. 그렇지만, 탐색 데이터 항목의 순번 위치가 상기 합보다 큰 경우, 우측 카운트가 현재의 카운트에 가산되고 인덱스 값이 좌측에서 우측으로 고려되면서 탐색 데이터 항목의 순번 위치가 새로운 합보다 작거나 같은지를 판정한다. 각각의 인덱스 값의 우측 카운트를 현재의 카운트에 가산하고 탐색 순번 위치가 현재의 카운트와 현재의 인덱스 값의 우측 카운트의 합보다 작거나 같은지를 판정하는 프로세스는 그 조건을 충족시키는 인덱스 값이 발견될 때까지 반복된다. 이어서, 그 인덱스 값의 바로 우측 서브 트리가 선택된다. 이어서, 선택된 서브 트리를 따라 하강하고, 이 프로세스는 b-트리의 리프 레벨을 만나게 될 때까지 반복된다(현재의 카운트는 반복때마다 유지됨). 현재의 카운트는 현재의 노드의 좌측에 있는 리프 노드에 저장되어 있는 데이터 항목들에 대응한다. 따라서, 탐색 데이터 항목의 순번 위치에서 현재의 카운트를 감산하고 그 차이를 사용하여 현재의 리프-레벨 노드 내의 특정의 항목을 선택함으로써, b-트리의 리프 레벨에서의 요소의 미리 정해진 위치를 찾아낸다.
본 발명의 다른 특징에 대해 이하에서 설명한다.
도 1은 본 발명의 전형적인 실시예에 따른 b-트리를 사용한 위치 액세스 방법 및 시스템이 구현될 수 있는 적합한 컴퓨팅 시스템 환경의 일례를 나타낸 도면.
도 2는 전형적인 b-트리 구조를 나타낸 도면.
도 3은 본 발명의 전형적인 실시예에 따른 b-트리의 위치 액세스를 이용하여 상대적으로 큰 항목 리스트로부터 상대적으로 작은 항목 그룹을 선택하는 것을 나타낸 도면.
도 4는 본 발명의 전형적인 실시예에 따른, 좌측 및 우측 리프-레벨-카운트 요소를 포함하는 b-트리를 나타낸 도면.
도 5는 본 발명의 전형적인 실시예에 따라 b-트리 내의 미리 정해진 위치에 배치되어 있는 요소를 찾아내는 전형적인 프로세스의 흐름도.
도 6은 본 발명의 전형적인 실시예에 따라 리프-레벨 루트 노드(leaf-level root node)가 유가 요소(valued element)를 삽입하기 위해 분할되는 것과 리프-레벨-카운트 요소를 갱신하는 것을 나타낸 도면.
도 7은 본 발명의 전형적인 실시예에 따라 비리프-레벨 루트 노드(non-leaf-level root node)가 값을 삽입하기 위해 2개의 노드로 분할되는 것과 리프-레벨-카운트 요소를 갱신하는 것을 나타낸 도면.
도 8은 본 발명의 전형적인 실시예에 따라 리프 노드를 결합시키는 것과 리프-레벨-카운트 요소 값을 갱신하는 것을 나타낸 도면.
도 9는 본 발명의 전형적인 실시예에 따라 결합된 노드를 형성하기 위해 비리프 노드를 그의 좌측 형제(sibling)와 결합시키는 것과 리프-레벨-카운트 요소를 갱신하는 것을 나타낸 도면.
도 10은 본 발명의 전형적인 실시예에 따라 리프 레벨 노드의 값을 재분포시키는 것과 리프-레벨-카운트 요소를 갱신하는 것을 나타낸 도면.
도 11은 본 발명의 전형적인 실시예에 따라 비리프 레벨 노드의 값을 재분포시키는 것과 리프-레벨-카운트 요소를 갱신하는 것을 나타낸 도면.
도 12는 본 발명의 전형적인 실시예에 따라 b-트리에서 리프-레벨-카운트 요소의 값을 갱신하는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
110: 컴퓨터
130: 시스템 메모리
12: 루트 레벨
14: 비리프 레벨
16: 리프 레벨
21: 노드
200: b-트리
38: 좌측 리프-레벨 카운트 요소
40: 우측 리프-레벨 카운트 요소
본 발명의 특징 및 이점은 첨부 도면과 연계하여 기술된 이하의 설명을 살펴보면 가장 잘 이해될 것이다.
균형 트리("b-트리")의 요소의 위치 액세스는 본 명세서에 기술하는 바와 같이 b-트리 기반 인덱스를 바탕으로 효율적이고 정확한 위치 액세스 동작을 제공한다. 본 발명의 일 실시예에서, 카운트 정보는 b-트리에서 특정의 요소를 찾아내는 것과 같은 위치 액세스 동작을 효율적으로 지원하는 데 사용될 수 있는 하부 b-트리 데이터 구조에 저장된다. b-트리에서의 각각의 비리프-레벨 인덱스 값에 대해, 카운트가 인덱스 값의 좌측 및 우측에 저장된다. 이들 좌측 및 우측 카운트는 각각 좌측-리프-카운트(또는 "좌측 카운트") 및 우측-리프-카운트(또는, "우측 카운트")라고 불리운다. 좌측-리프-카운트 요소는 인덱스 값의 바로 좌측에 있는 서브 트리의 리프 레벨에 있는 데이터 항목의 개수를 나타낸다. 우측-리프-카운트 요소는 b-트리의 우측 서브 트리의 루트 노드를 나타내고, 또한 우측 서브 트리의 리프 레벨에 있는 값의 개수를 나타낸다. 카운트 정보는 주어진 노드를 검사함으로써 노드의 어느쪽 서브 트리가 특정의 순번 위치를 갖는 데이터 항목을 포함하는지가 판정될 수 있게 함으로써 위치 액세스에 도움을 준다. 카운트 정보는 또한 루트 노드에 있는 카운트 전부를 합산함으로써 b-트리의 리프 레벨에 있는 유가 요소(valued element)의 총 개수를 결정하는 데 사용될 수도 있다.
적당한 컴퓨팅 시스템 환경의 개요
도 1은 b-트리를 사용하는 위치 액세스 방법 및 시스템이 구현될 수 있는 적당한 컴퓨팅 시스템 환경(100)의 일례를 나타낸 것이다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 환경의 한 일례에 불과한 것으로서, 디스플레이 요소를 동적이고 개별적으로 제어하기 위한 본 방법 및 시스템의 사용 또는 기능의 범위에 관한 어떤 한정을 제안하기 위한 것이 아니다. 컴퓨팅 환경(100)은 또한 전형적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서도 안된다.
b-트리를 사용하는 위치 액세스 방법 및 시스템은 많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작될 수 있다. 디스플레이 요소를 동적이고 개별적으로 제어하기 위한 본 방법 및 시스템과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 탑 박스(set top box), 프로그램가능한 가전제품(programmable consumber electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산 컴퓨팅 환경 등이 포함되지만, 이에 한정되지 않는다.
b-트리를 사용하는 위치 액세스 방법 및 시스템은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령과 일반적으로 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. b-트리를 사용하는 위치 액세스 방법 및 시스템은 또한 작업들이 통신 네트워크 또는 기타 데이터 전송 매체를 통해 링크되어 있는 원격 처리 장치들에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈 및 기타 데이터는 메모리 저장 장치를 비롯한 국부 및 원격 컴퓨터 저장 매체 양쪽 모두에 위치할 수 있다.
도 1을 참조하면, b-트리를 사용하는 위치 액세스 방법 및 시스템을 구현하기 위한 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리(130)를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 기타 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이상 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상기 매체 중의 임의의 것의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함됨을 이해할 것이다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 의해 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, 도 1에는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)가 도시되어 있지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM, CDRW, 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그의 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 다를 수도 있음에 유의한다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)는 이들이 최소한 서로 다른 복사본(different copies)임을 나타내기 위하여 다른 번호가 부기되어 있다. 사용자는 마우스, 트랙볼, 또는 터치 패드라고 통상 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 버스(USB)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터 외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치도 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용하여 네트워크 환경에서 운영될 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드(common network node)일 수 있으며, 비록 도 1에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함한다. 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1에서는 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 상주하는 것으로 도시되어 있지만, 이에 한정되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있음을 잘 알 것이다.
다양한 분산 컴퓨팅 프레임워크는 퍼스널 컴퓨팅과 인터넷의 융합의 관점에서 개발되어 왔으며 또 개발 중에 있다. 개인 및 기업 사용자 모두는 애플리케이션 및 컴퓨팅 장치에 대한 원활한 상호 연동성이 있는 웹 지원 인터페이스(seamlessly interoperable and web-enabled interface)를 제공받게 되어, 컴퓨팅 활동이 점점 웹 브라우저 지향적 또는 네트워크 지향적으로 되고 있다.
예를 들어, MICROSOFT의 .NET 플랫폼은 서버, 웹-기반 데이터 저장과 같은 빌딩-블록 서비스, 및 다운로드 가능한 장치 소프트웨어를 포함한다. 일반적으로, .NET 플랫폼은 (1) 전 기종의 컴퓨팅 장치들이 작업을 함께 수행하도록 하며 또 사용자 정보가 자동적으로 업데이트되어 그 장치들 모두에서 동기화되도록 하는 기능, (2) HTML보다는 XML을 더 많이 사용함으로 인해 가능하게 된, 웹 사이트의 대화 기능 향상, (3) Office.NET와 같은 소프트웨어 또는 예를 들어 이메일 등의 다양한 애플리케이션의 관리를 위하여, 중앙 시작점(central starting point)으로부터 사용자에게로의 제품 및 서비스의 커스터마이즈된 액세스 및 전달을 특징으로 갖는 온라인 서비스, (4) 사용자와 장치간의 정보의 동기화 뿐만 아니라 정보 액세스의 효율성과 용이성을 증가시키게 될 중앙 집중식 데이터 저장, (5) 이메일, 팩스, 및 전화 등의 다양한 통신 매체를 통합하는 기능, (6) 개발자의 경우, 재사용가능한 모듈을 생성함으로써 프로그래밍 에러의 수를 감소시키고 생산성을 향상시키는 기능, 및 (7) 많은 다른 플랫폼간 통합 기능도 제공한다.
본 명세서의 전형적인 실시예는 컴퓨팅 장치 상에 상주하는 소프트웨어와 관련하여 기재되어 있지만, 디스플레이 요소를 동적이고 개별적으로 제어하는 본 방법 및 시스템의 하나 이상의 부분은, 서비스가 모든 .NET의 언어 및 서비스에 의해수행될 수 있거나, 그 언어 및 서비스에서 지원될 수 있거나, 그 언어 및 서비스를 통해 액세스될 수 있도록, 운영 시스템, 애플리케이션 프로그래밍 인터페이스(API), 또는 코프로세서(coprocessor)와 요구 오브젝트간의 "미들 맨(middle man)" 오브젝트를 통해 구현될 수 있을 뿐 아니라, 기타 분산 컴퓨팅 프레임워크에서도 구현될 수 있다.
카운트 정보를 사용하는 b-트리에서의 위치 액세스
b-트리는 값의 집합체(a collection of values)를 정렬된 순서로 보유하기 위해 사용되는 데이터 구조이다. 각각의 값은 b-트리의 리프-레벨에 있는 요소에 저장되거나 그에 의해 참조된다. b-트리의 각각의 노드는 일반적으로 n개의 값(예를 들어, n=4)을 위한 공간을 갖는다. 값들 중 일부는 사용되지 않거나 "비어"(empty) 있을 수 있다. 본 명세서에서 사용되는 바와 같이, 값을 가지고 있는 공간 또는 요소는 "유가 요소"(valued element)라고 부르기로 하고, 비어있는 공간 또는 요소는 "무가 요소"(non-valued element)라고 부르기로 한다. 도 2는 전형적인 b-트리 구조(200)를 나타낸 것이다. b-트리(200)는 레벨(12, 14, 16)로서 나타낸 레벨들을 포함한다. 상단 레벨(top level)(12)은 루트 레벨(root level)이라고 부른다. 하단 레벨(bottom level)(16)은 리프 레벨(leaf level)이라고 부른다. 리프 레벨(16) 이외의 모든 레벨은 비리프 레벨(non-leaf level)이라고 부른다. 레벨(14)는 루트 레벨(12)과 마찬가지로 비리프 레벨이다. 트리는 많은 비리프 레벨을 가질 수 있다. b-트리는 단 하나의 레벨만을 가질 수 있다(따라서, 이는 루트 레벨이면서 리프 레벨임). 각 레벨은 하나 이상의 노드(21)를 가지며, 각 노드(21)는 하나 이상의 요소(18)를 포함할 수 있다. 루트 레벨(12)은 단 하나의 노드만을 가지며, 이는 루트 노드(root node)라고 부른다. 리프 레벨(16)에 있는 노드는 리프 노드(leaf node)라고 부르며, 비리프 레벨에 있는 노드는 비리프 노드(non-leaf node)라고 부른다. 실제로, 리프 레벨에 저장된 값은 애플리케이션에 의해 탐색될 수 있는 실제값이며, 비리프 레벨에 저장된 값은 실제 값이 리프 레벨에서 어디에 위치하고 있는지를 식별하기 위해 사용되는 "인덱스 값"이다. (그렇지만, 인덱스 값과 실제 값은 일반적으로 동일한 도메인을 가짐을 이해해야 한다. 예를 들어, 트리가 문자 A-Z를 저장하기 위해 사용되는 경우, 비록 이러한 문자를 비리프 레벨에 저장하는 목적은 일반적으로 탐색되는 문자가 비리프 레벨 노드의 어느쪽 서브트리에 포함되어 있는지를 식별하기 위해서이지만, 리프 레벨 및 비리프 레벨 양쪽 모두에 있는 요소들은 A-Z 범위에 있는 문자를 저장한다.)
전형적인 트리(200)는 3개의 비리프 노드와 6개의 리프 노드를 갖는다. 노드는 하나 이상의 요소(18)를 가질 수 있다. 루트 레벨(12)의 루트 노드에 있는 단지 하나의 요소(18)만이 표시되어 있는 것은 그 자체로서 간명함을 위해서이다. 요소는 트리 내에 어떤 위치 순서로 배치될 수 있는 값을 포함한다. 각각의 요소(18)는 값을 포함할 수 있으며, 이는 도 2에서 문자 A, B, C, D, E, F, G, H, I, J, K 및 L로 표시되어 있다. 도 2의 예에서, 요소(18)는 무가 요소이고(왜냐하면, 값을 포함하지 않기 때문임), 노드(21)에서 최좌측 요소는 유가 요소이다(왜냐하면, 값 G를 포함하기 때문임). 트리 구조는 값들의 유기적 조직을 나타내며 그자체로서 값들은 다같이 문자 그대로 저장될 필요가 없고 트리 구조(200)에 부합하는 방식으로 논리적으로 연관되어 있기만 하면 됨을 잘 알 것이다. 따라서, 트리에 "내포" 또는 "저장"되어 있는 값에 대한 참조는 값들이 트리 구조에 따라 서로 연관되어 있는, 또는 조직되어 있는 어떤 상태를 나타내는 것임을 이해해야 할 것이다.
전형적인 b-트리(200)는 값 "G"를 내포하는 루트 노드(레벨 12에 있음)로 시작한다. 5개의 값(G, C, E, I, K)은 비리프 노드에 저장되어 있고 12개의 값(A, B, C, D, E, F, G, H, I, J, K, L)은 리프 노드에 저장되어 있다. 비리프 노드 및 값은 특정의 값 또는 위치를 찾을 때 리프 노드까지의 검색을 용이하게 하기 위한 디렉토리로서 사용된다. b-트리를 사용하는 대부분의 검색 알고리즘은 탐색값을 찾기 위해 리프까지 계속 트리를 따라 내려가도록 요청하지만, 다른 유형의 검색 기술은 일치하는 것이 발견되면 검색이 완료되고 리프 노드에 도달하기 전에 종료될 수 있도록 b-트리의 모든 레벨에 있는 값들을 이용할 수도 있다.
b-트리는 다양한 애플리케이션에서 위치 액세스를 수행하는 데 사용될 수 있다. 위치 기반 동작으로는 지정된 순번 위치에 있는 값을 찾아내는 것(locating), 새로운 값을 삽입할 때 그 값이 삽입되었던 위치를 가져오는 것(getting), 및 값을 삭제할 때 그 값이 삭제되었던 위치를 가져오는 것이 있다. 지정된 위치에 있는 값을 찾아내는 것의 예로는 특정의 순번 위치에 있는 단일 항목(예를 들어, 정렬된 집합에서 n번째 항목)을 찾아내는 것 또는 많은 수의 순서 정렬된 항목(ordered item)을 포함하는 리스트에서 그 항목의 부분시퀀스(subsequence)(예를 들어, 어떤순서로 정렬되어 있는 다수의 이메일을 포함하는 리스트에서 m번에서 n번까지의 이메일)를 찾아내는 것이 있다. 도 3은 어떤 애플리케이션(예를 들어, 이메일 애플리케이션)에 의해 디스플레이(28) 상에 렌더링될 더 작은 항목 그룹, 즉 그룹(22, 24)을 대규모 값 리스트(26)로부터 선택하는 것을 나타낸 도면이다. 이 전형적인 애플리케이션은 이메일 메시지 리스트와 같은 값 리스트를 디스플레이(28) 상에 렌더링하는 것을 포함한다. 예를 들어, 리스트(26) 내의 항목들 각각은 이메일 메시지의 요약일 수 있으며, 그룹(22, 24) 각각은 디스플레이 윈도우에 맞게 들어갈 수 있는 개수의 이메일 메시지 요약을 포함할 수 있다. 이러한 유형의 리스트가 아주 큰 것(예를 들어, 10,000개 이상의 값)은 보통 있는 일이다. 성능에 대한 악영향을 완화시키고 사용되는 메모리의 양을 줄이기 위해, 전체 리스트(26)가 한꺼번에 메모리에 로드되어 렌더링되지 않는다. 오히려, 그 리스트의 일부분이 메모리에 로드되어 렌더링된다. 도 3에 도시한 바와 같이, 디스플레이(28)는 언제든지 한번에 리스트(26)로부터 단지 4개의 항목만을 렌더링한다. 이 예에서, 한번에 리스트(26) 중 단지 4개의 값만이 메모리에 저장 및/또는 디스플레이되는 경우도 있을 수 있다. 2개의 항목 그룹(22, 24)은 사용자가 처음에 그룹(22)을 보고 그 다음에 리스트(26)를 앞쪽으로 2개의 항목만큼 스크롤하는 경우에 그 사용자가 볼 수 있는 것을 나타낸 것이다. 처음에, 항목 그룹(22)이 렌더링되고, 이어서 항목 그룹(24)이 렌더링된다. 항목 그룹(22)은 위치 0와 관련된 값 A, 위치 1과 관련된 값 B, 위치 2와 관련된 값 C, 및 위치 3과 관련된 값 D를 포함한다. 항목 그룹(24)은 위치 2와 관련된 값 C, 위치 3과 관련된 값 D, 위치 4와 관련된 값 E,및 위치 5와 관련된 값 F를 포함한다. 위치 액세스를 사용하는 상기 애플리케이션은 단지 예시적인 것에 불과하며, 위치 액세스를 활용하는 애플리케이션의 다수의 다른 일례를 생각해볼 수 있음을 이해할 것이다.
도 4는 본 발명의 전형적인 실시예에 따른, 리프-레벨-카운트 요소를 포함하는 b-트리를 나타낸 것이다. 이들 리프-레벨-카운트 요소는 도 5와 관련하여 이하에 기재하는 기술을 사용하여 요소를 그의 순번 위치로 식별하는 데 사용될 수 있다. 정보는 하부 b-트리 데이터 구조에 리프-레벨-카운트 요소(예를 들어, 38 및 40)의 형태로 저장된다. 리프-레벨-카운트 요소는 각각의 비리프 유가 요소(non-leaf valued element)의 좌측 및 우측에 위치된다. [트리는 일반적으로 논리적 좌-우 구성(logical left-to-right organization)을 갖는 것으로 간주되고 카운트 요소를 요소의 "좌측"과 "우측"에 배치하는 것이 이 논리적 좌-우 구성에 대응하는 것으로 이해되어야 함을 잘 알 것이다. 또한, 본 발명은 데이터의 물리적 좌-우 구성을 필요로 하지 않는다.] 도 4에 도시한 바와 같이, 좌측-리프-카운트(38)는 유가 요소(30)(값 G)에 인접하여 그 좌측에 배치되어 있는 것으로 도시되어 있다. 우측-리프-레벨-카운트 요소(40)는 유가 요소(30)에 인접하여 그 우측에 배치되어 있는 것으로 도시되어 있다. (본 발명에서는 각각의 유가 요소가 좌측 카운트와 우측 카운트를 가지고 있는 한, 좌측 및 우측 카운트가 유가 요소에 "인접하여" 배치될 필요는 없음을 잘 알 것이다.) 일반적으로, 리프-레벨-카운트 요소(최좌측 카운트와 최우측 카운트 제외)는 하나의 유가 요소에 대한 좌측 카운트와 또하나의 유가 요소에 대한 우측 카운트 둘다로서 기능한다. 예를 들어,리프-레벨-카운트(46)는 유가 요소(43)의 우측-리프-레벨-카운트 요소로서 기능하고 유가 요소(45)의 좌측-리프-레벨-카운트 요소로서 기능한다. 리프-레벨 카운트는 여러가지 다른 방식으로 구현될 수 있다.
각각의 리프-레벨-카운트 요소는 노드의 서브 트리들 중 하나의 리프 레벨에 있는 데이터 항목의 총 개수를 나타내는 값을 포함한다. 구체적으로 설명하면, 유가 요소의 좌측 및 우측 카운트가 각각 n과 m인 경우, 그 유가 요소의 바로 좌측에 있는 서브 트리는 그의 리프 레벨에 n개의 데이터 항목을 포함하고 있고 그 유가 요소의 바로 우측에 있는 서브 트리는 그의 리프 레벨에 m개의 요소를 포함하고 있다. 예를 들어, 좌측-리프-카운트(38)는 루트 노드(44)를 갖는 서브 트리(42)에 대응한다. 좌측-리프-카운트 요소(38)는 또한 값 6을 포함하며, 이는 서브 트리(42)의 리프-레벨에 있는 데이터 항목(예를 들어, 유가 요소)의 개수를 나타낸다. 도 4에 도시한 바와 같이, 서브 트리(42)는 그의 리프 레벨에 6개의 유가 요소(A, B, C, D, E, F)를 가지며, 이는 좌측-리프-카운트(38)에 배치된 값과 일치한다. 서브 트리는 리프 레벨에 있는 모든 노드를 포함하며, b-트리의 리프 레벨로 분기하는 모든 요소를 포함한다. 도 4로부터 알 수 있는 바와 같이, 각각의 리프-레벨-카운트 요소("0"으로 표시된 것 제외)는 개별적인 서브 트리에 대응한다. 예를 들어, 좌측-리프-레벨-카운트 요소(41)는 2개의 유가 요소(값 A 및 B)와 2개의 무가 요소를 포함하는 노드만을 포함하는 서브 트리(47)를 가리킨다. 간명함을 위해, 도 4에서는 모든 서브 트리에 그 자체로서 도면 부호가 부기되어 있지 않다.
도 5는 b-트리의 리프 레벨에서의 미리 정해진 순번 위치에 배치되어 있는요소를 식별하기 위한 전형적인 프로세스의 흐름도이다. 일반적으로, 좌측 및 우측 리프-레벨-카운트 요소는 b-트리를 따라 내려가기 위해 어느 경로를 취해야 하는지를 결정하고 또 현재의 위치의 좌측에 몇개의 값이 있는지를 결정하기 위해 사용된다. b-트리의 리프 레벨에 도달하면, (a) 현재의 리프 노드의 좌측에 있는 리프 레벨 값의 개수와 (b) 탐색되는 순번 위치 사이의 차이를 사용하여 미리 정해진 위치를 찾아낸다. b-트리가 일반적으로 좌측에서 우측으로 순회되지만, 도 5에 도시한 프로세스의 방향은 프로세스를 우측에서 좌측으로 수행하기 위해 반대로 될 수도 있음을 잘 알 것이다. 또한 좌-우 방향은 물리적이 아닌 논리적인 방향이며 따라서 무엇이 "좌측"이고 무엇이 "우측"인지는 트리의 설계자의 정의에 의한다는 것을 잘 알 것이다. (일반적으로, 트리는 논리적 "좌측"의 값이 논리적 "우측"의 값보다 선행하도록 구성되어 있다.) 도 5에 도시한 프로세스에 대한 이하의 설명은 그의 일례로서 포함하고 있는 도 4를 참조하면 보다 용이하게 이해될 수 있을 것이다. 이하의 약어가 도 5에서 사용된다.
PP - 탐색 데이터 항목의 미리 정해진 순번 위치
LL - 좌측-리프-카운트 요소 값
RL - 우측-리프-카운트 요소 값
VE - 유가 요소(valued element)
b-트리 순회를 시작하기 이전에, 미리 정해진 순번 위치가 범위 내에 있도록 하기 위해, 즉 미리 정해진 순번 위치가 b-트리의 리프 레벨에 있는 유가 요소의 개수보다 크지 않도록 하기 위해 그 미리 정해진 위치를 검사할 수 있다. 선택적인 단계 50에서, 미리 정해진 위치 값이 b-트리의 루트 노드에 있는 리프-레벨-카운트 요소 값들의 합보다 큰지를 결정된다. b-트리의 루트 노드에 있는 모든 리프-레벨-카운트 요소 값의 합이 b-트리의 리프 레벨 유가 요소의 전체 개수와 같기 때문에, 미리 정해진 위치가 이 합보다 큰 경우, 그 미리 정해진 순번 위치는 범위 밖에 있다. 미리 정해진 순번 위치가 이 합보다 큰 경우(단계 50), 검색은 단계 54에서 종료하고, 미리 정해진 위치가 범위 밖에 있음을 나타내는 표시가 제공될 수도 있다. 단계 60에서, 카운터, 즉 skipcount가 초기화된다. 이 카운터는 0(영) 등의 적당한 값으로 초기화될 수 있다. skipcount는 b-트리의 순회 도중에 건너뛰게 되는 리프 유가 요소(즉, 현재의 노드의 좌측에 있는 것으로 알려진 요소)의 값을 누적하는 카운터이다. 이 누적된 값이 b-트리의 리프 레벨에 도달할 때 미리 정해진 위치를 찾아내는 데 사용된다.
단계 52에서는, b-트리의 루트 노드에 있는 최좌측 유가 요소[예를 들어, 도 4의 유가 요소(30)]에서 시작하여, 루트 노드를 좌측에서 우측으로 검사한다. 미리 정해진 위치는 현재의 유가 요소(예를 들면, 30)에 인접하여 그 좌측에 위치하는 좌측-리프-카운트 요소의 값(예를 들어, 6)과 skipcount의 현재의 값의 합과 비교된다. 미리 정해진 위치의 순번 번호가 이 합보다 작거나 같은 경우, 단계 76에서 b-트리는 좌측-리프-레벨-카운트 요소(예를 들어, 38)에 의해 참조되는 노드로 순회된다. 이 노드는 b-트리의 그 다음 하위 레벨에 위치되어 있을 것이다. 단계 66에서, 현재의 레벨이 리프 레벨인지가 결정된다. 현재의 레벨이 리프 레벨인 경우, 단계 68에서 미리 정해진 위치에서 skipcount 값을 뺀 차이가 결정된다. 리프레벨에 있는 최좌측 유가 요소에서 시작하여 그 차이와 동일한 개수의 유가 요소만큼 우측으로 이동함으로써 미리 정해진 탐색 위치를 찾아낸다. 단계 66에서 현재의 레벨이 리프 레벨이 아닌 경우, 순회 프로세스는 현재 레벨의 최좌측 유가 요소에서 다시 시작한다(단계 52).
단계 58로 돌아가서, 그 대신에 미리 정해진 위치가 좌측-리프-레벨-카운트 요소 값과 카운터 skipcount의 합보다 큰 것으로 결정된 경우, 단계 56에서 skipcount는 좌측-리프-레벨-카운트 요소의 값만큼 증가된다. 따라서, 각각의 좌측-리프-레벨-카운트 요소를 좌측에서 우측으로 만나게 될 때, skipcount는 만나는 좌측-리프-레벨-카운트 요소 값의 현재의 합을 유지하며(누적하며), 이 합은 트리의 특정의 브랜치를 순회함으로써 "건너뛴" 리프-레벨 값 요소의 총 개수를 나타낸다. 단계 62에서, 미리 정해진 위치가 우측-리프-레벨-카운트 요소 값 + skipcount 값의 합보다 작거나 같은지가 결정된다. 작거나 같은 경우, 단계 64에서 b-트리는 우측-리프-레벨-카운트 요소에 의해 참조되는 노드로 순회된다. 단계 66에서 현재의 레벨이 리프 레벨인지가 판정된다. 이 단계(66)로부터, 프로세스는 전술한 바와 같다. 단계 62에서, 미리 정해진 위치가 우측-리프-레벨-카운트 요소 값보다 크지 않은 경우, 단계 73에서 skipcount는 현재의 우측-리프-레벨-카운트 요소의 값만큼 증가되고, 단계 74에서 현재의 노드 레벨은 우측에서 좌측으로 그 다음 유가 요소로 순회된다. 프로세스는 단계 62로 진행되어 전술한 바와 같이 계속된다.
검색 프로세스 일례에 대해 도 4 및 도 5 둘다를 참조하여 이하에서 설명한다. 이 예의 목적상, 탐색되는 데이터가 b-트리의 리프들에 저장되어 있는 모든 정렬된 데이터의 10번째 순번 위치(도 4에서 값 J에 대응함)에 나타나는 것으로 가정한다. 처음에, 값 10이 6 + 6의 합과 비교된다(단계 50). 6 + 6 = 12이고, 이는 10보다 크기 때문에, 카운터, 즉 skipcount는 0으로 초기화되고, 프로세스는 단계 52에서 계속되며, 이 단계 52에서 검색 프로세스는 유가 요소(30)에서 시작한다. 단계 58에서, 값 10이 6(즉, 유가 요소(30)의 왼쪽에 나타나는 카운트)과 비교된다. 10이 6보다 크기 때문에, 프로세스는 단계 56에서 계속되고, 이 단계 56에서 카운터, 즉 skipcount는 6만큼 증가되고, 그 결과 skipcount는 6이 된다. 그 다음에, 단계 62에서 값 10은 값 6 + 6과 비교된다. 10이 12보다 작기 때문에, 프로세스는 단계 64에서 계속된다. b-트리는 이어서 리프-레벨-카운트 40에 의해 참조되는 노드[즉, 비리프 레벨 34에서 최우측 노드(값 I와 K를 포함하는 노드)]에서 시작하여 순회된다(단계 64). 현재의 레벨(레벨 34)이 리프 레벨이 아니기 때문에(단계 66), 프로세스는 단계 52에서 계속된다. 값 I를 포함하는 유가 요소에서 시작하여(단계 52), 값 10이 값 2 + 6 = 8과 비교된다(단계 58). 10이 8보다 크기 때문에, 단계 56에서, skipcount는 6 + 2 = 8로 증가된다. 단계 62에서, 값 10은 2(우측-리프-레벨-카운트 값) + 8(skipcount의 현재 값)의 합과 비교된다. 10(합)이 10(미리 정해진 탐색 위치의 순번 번호)과 같기 때문에, 프로세스는 단계 64에서 계속되고, 이 단계 64에서 b-트리는 리프 레벨 36에 있는 리프 노드(I와 J를 포함함)에서 시작하여 순회된다. 이것이 리프 레벨이기 때문에(단계 66), skipcount의 값(8)이 소정의 위치의 값(10)으로부터 감산되어 2가 얻어진다(단계68). 단계 68에 따라, 검색 프로세스는 이어서 현재의 리프 노드에서의 최좌측 유가 요소(값 I)로 진행하고 좌측에서 우측으로 계산된 차이(2)의 수를 카운트한다. 이 결과, 미리 정해진 위치가 있는 곳이 값 J를 포함하는 유가 요소가 된다.
다른 실시예에서, 본 명세서에 기술한 바와 같은 b-트리의 루트 노드에 좌측 및 우측 리프-카운트 요소를 포함하는 b-트리는 b-트리의 리프 레벨에 있는 유가 요소의 총 개수를 결정할 수 있는 기능을 제공한다. 이것은 b-트리의 루트 노드에 위치하는 좌측 및 우측 리프-레벨-카운트 요소의 값을 합산함으로써 달성된다.
전술한 바와 같이, 위치 기반 동작은 지정된 위치에 있는 값을 찾아내는 것, 새로운 값을 삽입할 때 그 값이 삽입되었던 위치를 가져오는 것, 및 값을 삭제할 때 그 값이 삭제되었던 위치를 가져오는 것을 포함한다. 유가 요소가 삽입 및/또는 삭제될 때, b-트리는 모든 해당 레벨에서 해당 좌측 및 우측 리프-레벨-카운트 요소 내의 값을 갱신함으로써 갱신된다. 리프-레벨-카운트 요소 값의 실제 변경은 b-트리를 갱신하기 위한 임의의 적절한 수단에 의해 달성될 수 있다. 리프-레벨-카운트 요소 값은 b-트리 내의 요소 값이 갱신되고 있을 때 동시에 갱신될 수 있다.
유가 요소가 추가 및/또는 삭제될 때, b-트리는 확장(expand) 및/또는 축소(shrink)될 수 있다. 일반적으로, b-트리는 레벨을 분할하고 따라서 더 많은 노드를 갖게 함으로써 확장된다. 일반적으로, b-트리는 노드를 결합시킴으로써 축소된다. b-트리 내의 노드는 노드 내의 값의 개수가 지정된 임계값[종종 분할 임계값(split threshold)이라 함]을 초과할 때 분할된다. b-트리 내의 노드는 노드내의 값의 개수가 지정된 임계값[종종 축소 임계값(shrink threshold)이라 함] 이하로 될 때 축소된다. 일반적으로, 노드가 그의 축소 임계값이 도달하였을 때, 먼저 그 노드를 그의 좌측 또는 우측 형제(sibling)와 결합시키려는 시도가 행해진다. 그렇지만, 그 노드가 형제와 결합될 수 없는 경우, 좌측 또는 우측 형제로부터의 값이 재분포된다. 삽입 및 삭제된 요소를 갖는 b-트리의 일례에 대해 이하에서 설명한다. 이들 일례는 리프 레벨의 루트 노드를 분할하는 것, 비리프 레벨의 루트 노드를 분할하는 것, 리프 레벨 노드와 좌측 형제 노드를 결합시키는 것, 비리프 레벨 노드와 좌측 형제 노드를 결합시키는 것, 리프 레벨 노드로부터의 값을 재분포시키는 것, 비리프 레벨 노드로부터의 값을 재분포시키는 것을 포함한다. 실제로 b-트리를 분할 및 축소하는 알고리즘이 사용되는 b-트리의 특정 유형에 따라 크게 달라진다는 것을 이해해야 한다.
도 6은 리프 레벨 루트 노드(69)가 값 "E"을 갖는 유가 요소를 삽입시키기 위해 분할되고, 그 결과 리프 레벨 노드(70, 71)와 비리프 레벨 노드(72)가 얻어지는 것을 나타낸 것이다. 값 "E"를 다 채워진 노드(full node)(69)에 삽입하려는 시도가 행해진다. 도 6에 도시한 바와 같이, 2개의 새로운 리프 노드(70, 71)가 할당되고, 값이 이들 2개의 새로운 리프 노드(70, 71) 사이에 균일하게 분포된다. 중간값 "C"는 새로운 루트 노드(72)로 격상(promote)되고, 그에 따라 "C"의 좌측에 2개의 리프-레벨 값이 있고 "C"의 우측에 3개의 리프-레벨 값이 있는 것을 반영하도록 좌측-리프-카운트(61)와 우측-리프-카운트(63)의 값은 갱신된다(리프-레벨 값 "C"는 루트 노드에 있는 "C"의 우측에 있는 서브 트리에 저장되고, 관례에 따라 인덱스보다 크거나 같은 값은 우측에 저장된다.). 도 6에 도시한 바와 같이, 갱신된 b-트리 구조는 리프 노드에 있는 값의 개수를 나타내는 좌측 및 우측 리프 카운트 값을 포함하고, 각각의 좌측/우측 리프 카운트 값은 서브 트리의 루트 노드를 나타낸다, 즉 표시한다. 예를 들어, 노드(72)는 2와 3의 리프-카운트 값을 포함하며, 이는 노드가 각각 유가 요소 AB와 CDE를 가짐을 나타낸다.
도 7은 b-트리의 리프 레벨에 값 "M"을 삽입시키기 위해 비리프-레벨 루트 노드(75)가 2개의 노드(76, 77)로 분할되는 것을 나타낸 도면이다. 도 7에 도시된 b-트리는 최초에 2 레벨 깊이이다. 루트 노드(75)는 다 채워져 있고, 새로운 값 'M'이 삽입될 리프 노드(78)도 또한 다 채워져 있다. 'M'을 이 b-트리에 삽입시키려면 그 결과 2번의 노드 분할이 있게 된다. 루트 노드(75)는 노드(76, 77)로 분할되고, 노드(78)는 노드(79, 80)로 분할된다. 다 채워진 루트 노드(75)로부터의 값은 2개의 새로운 노드(76, 77) 사이에 균등하게 분포되고, 이들 노드(76, 77)는 이제 각각 'C', 'E'와 'I', 'K'를 포함한다. 값 'G'는 새로운 루트 노드(81)로 격상된다. 루트 노드(81)에 저장되어 있는 리프-레벨-카운트 요소 값은 리프 노드에 있는 값의 개수를 나타낸다. "M"을 삽입시킬 원하는 리프 노드는 다 채워져 있다. 새로운 노드(80). 값, "I", "J", "K", "L" 및 "M"은 2개의 노드(79, 80)에 걸쳐 균등하게 분포된다. 중간값 "K"는 부모 노드(77)로 격상되고, 부모 노드(77)에 있는 리프 카운트는 이 분할을 반영하도록, 예를 들면 도 12와 관련하여 이하에 기술되는 프로세스에 의해 갱신된다. 도 7에 도시한 바와 같이, 갱신된 b-트리 구조는 리프 노드에 있는 값의 개수를 나타내는 좌측 및 우측 리프 카운트 값을 포함하고,각각의 좌측/우측 리프 카운트 값은 서브 트리의 루트 노드를 나타낸다, 즉 표시한다. 예를 들어, 노드(76)는 2, 2, 및 2의 리프-카운트 값을 포함하며, 그 각각은 노드가 2개의 유가 요소 AB, CD, 및 EF를 가짐을 나타낸다.
도 8은 리프 노드(82, 83)를 노드(82)로 결합시키고 그에 따라 리프-레벨-카운트 요소 값을 갱신하는 것을 나타낸 도면이다. 노드를 결합시키는 것은 노드의 값이 그 노드의 좌측 또는 우측 형제로 이동될 수 있는 경우에(예를 들어, 좌측 또는 우측 형제에 충분한 자유 공간이 있는 경우) 적합하다. 이하의 예는 노드를 좌측 형제 노드와 결합시키는 것을 나타낸 것이다. 노드를 우측 형제 노드와 결합시키는 것은 노드를 좌측 형제 노드와 결합시키는 것과 유사하며, 이하에서 설명하지 않는다. 도 8에 도시한 바와 같이, 노드(83)는 그의 우측 형제와 결합될 수 없는데, 왜냐하면 우측 형제에는 여유가 없기 때문이다. 값 "C"가 좌측 형제 노드(82)로 이동되고, 이어서 노드(83)이 삭제된다. 그 노드(83)가 부모 노드에 있는 항목을 참조하는 것은 삭제된다(예를 들어, 값 "C"를 갖는 항목이 부모 노드로부터 삭제된다). 마지막으로, 노드(84) 내의 좌측 및 우측 리프 카운트가 예를 들면 도 12를 참조하여 이하에서 기술되는 프로세스에 의해 갱신된다. 도 8에 도시한 바와 같이, 갱신된 b-트리 구조는 리프 노드 내의 값의 개수를 나타내는 좌측 및 우측 리프 카운트 값을 포함하며, 각각의 좌측/우측 리프 카운트 값은 서브 트리의 루트 노드를 나타낸다, 즉 표시한다. 예를 들어, 노드(84)는 2와 4의 리프-카운트 값을 포함하며, 이는 노드가 각각 유가 요소 ABC, 및 EFGH를 가짐을 나타낸다.
도 9는 비리프 노드(86)를 그의 좌측 형제(85)와 결합시켜 결합 노드(87)를형성하는 것을 나타낸 도면이다. 값 "I"를 포함하는 노드(86)는 우측 형제를 갖지 않으며, 따라서 이 노드(86)는 그의 좌측 형제 노드(85)와 결합된다. 값 "G"는 루트 노드로부터 좌측 형제 노드(85)로 격하(demote)되며, 값 "T"는 좌측 형제 노드(85)에 첨부되고, "G", "H", 및 "I", "J"를 포함하는 자식 노드에 대한 포인터는 좌측 형제 노드(85)로 이동된다. 값 "G"가 루트 노드로부터 삭제되었기 때문에, 루트 노드는 이제 비게 되어 삭제된다. 최초의 좌측 형제 노드(85)가 트리의 새로운 루트 노드(87)가 된다. 루트를 소멸(collapse)시키는 것은 루트 노드에 더 이상 값이 없는 경우에 적합하다. 도 9에 도시한 바와 같이, 갱신된 b-트리 구조는 리프 노드 내의 값의 개수를 나타내는 좌측 및 우측 리프 카운트 값을 포함하며, 각각의 좌측/우측 리프-카운트 값은 서브 트리의 루트 노드를 나타낸다, 즉 표시한다. 예를 들어, 노드(87)는 2, 2, 2, 2, 및 2의 리프-카운트 값을 포함하며, 이는 노드들이 각각 유가 요소 AB, CD, EF, GH 및 IJ를 가짐을 나타낸다.
노드 내의 값을 재분포시키는 2가지 예에 대해 이하에서 기술한다. 노드와 그의 형제 사이에서 값을 재분포시키는 방법은 많이 있다. 좌측 형제로부터만 어떤 값을 이동시킬 수도 있고, 우측 형제로부터만 어떤 값을 이동시킬 수도 있으며 양쪽 형제로부터의 값을 이동시킬 수도 있다. 이하의 2가지 예는 형제로부터 한개의 값을 재분포시키는 것에 대해 설명하고 있으며, 설명된 프로세스가 한개 이상의 값을 분포시키는 일을 수행하기 위해 일반화될 수 있다는 것을 이해할 것이다.
도 10은 리프 레벨 노드의 값을 재분포시키는 것을 나타낸 도면이다. 리프 레벨 노드(88)은 한개의 값 "E"를 갖는다. 노드(88)가 그의 축소 임계값(예를 들면, 한개의 값)에 도달한 것으로 가정하면, 그 노드는 축소된다. 노드(88)의 형제 둘다가 다 채워져 있기 때문에, 값은 그 노드의 형제 중 하나로부터 재분포된다. 이 예에서, 값들은 좌측 형제와 나누어 가지게 되지만, 이것은 우측 형제에 대해서도 마찬가지로 용이하게 행해질 수 있다. 값을 재분포시키기 위해, 값 "D"는 좌측 형제로부터 이동되어 값 "E"를 포함하는 노드에 삽입된다. 그 다음에, 부모 노드 내의 값은 값의 정확한 이동을 반영하기 위해 값 "D"로 갱신된다. 이것은 부모 노드가 리프 노드에서의 정확한 정렬 순서를 반영하게 한다. 마지막으로, 부모/루트 노드에서 리프 카운트가 갱신된다. 도 10에 도시한 바와 같이, 갱신된 b-트리 구조는 리프 노드 내의 값의 개수를 나타내는 좌측 및 우측 리프 카운트 값을 포함하고, 각각의 좌측/우측 리프 카운트 값은 서브 트리의 루트 노드를 나타낸다, 즉 표시한다. 예를 들어, 재분포된 b-트리의 루트 노드는 3, 2, 및 4의 리프-카운트 값을 포함하며, 이는 노드들이 각각 유가 요소 ABC, DE, 및 FGHI를 가짐을 나타낸다.
도 11은 비리프 레벨 노드로부터의 값을 재분포시키는 것을 나타낸 도면이다. 비리프 레벨 노드(89)는 한개의 값 "M"을 갖는다. 이 노드(89)가 그의 축소 임계값에 도달한 것으로 가정할 때, 이 노드(89)는 그의 좌측 형제와 결합될 수 없고 또 우측 형제가 없기 때문에, 좌측 비리프 형제로부터의 값들이 재분포된다. 값 "K"는 루트 노드로부터 "M"을 포함하는 비리프 노드(89)로 격하된다. 그 다음에, 좌측 형제 내의 마지막 값 "I"는 루트 노드로 격상된다. 마지막으로, "K"와 "M"을 포함하는 노드에서 자식 노드 포인터가 갱신되고, 영향을 받은 노드 전부에서 모든 리프 카운트가 갱신된다. 도 11에 도시한 바와 같이, 갱신된 b-트리 구조는 리프 노드 내의 값의 개수를 나타내는 좌측 및 우측 리프 카운트 값을 포함하며, 각각의 좌측/우측 리프 카운트 값은 서브 트리의 루트 노드를 나타낸다, 즉, 표시한다. 예를 들어, 노드(1101)는 2, 2, 2, 및 2의 리프-카운트 값을 포함하며, 이는 노드들이 각각 유가 원소 AB, CD, EF, 및 GH를 가짐을 나타낸다.
도 12는 b-트리에 있는 리프-레벨-카운트 요소 내의 값을 갱신하는 전형적인 프로세스의 흐름도이다. 도 12에 도시한 프로세스는 유가 요소가 이미 삽입 또는 삭제되고 전술한 바와 같이 좌측 및 우측 카운트를 포함하는 b-트리에 적용된다. 단계 90에서, 유가 요소가 추가 또는 삭제된다. 이어서, 단계 91에서 b-트리는 거꾸로 직계 부모 리프-레벨-카운트 요소로 순회된다. 즉, 프로세스는 유가 요소가 삭제 또는 추가되었던 현재의 노드를 참조하는 리프-레벨-카운트 요소로 진행한다. 단계 92에서, 유가 요소가 추가 또는 삭제되었는지가 판정된다. 유가 요소가 추가된 경우, 단계 93에서 현재의 리프 카운트의 값은 1만큼 증가된다. 유의할 점은 단계 93 및 단계 94에서 언급된 현재의 리프 카운트는 단계 91에서 언급된 직계 부모 리프-레벨-카운트 요소이다. 유가 요소가 삭제된 경우, 단계 94에서 현재의 리프 카운트 요소는 1만큼 감소된다. 그 다음에, 단계 95에서 조상 노드(ancestor node)가 존재하는지가 판정된다. 즉, 현재의 리프-레벨-카운트 요소가 부모 리프-레벨-카운트 요소에 의해 참조되는지를 결정한다. 존재하는 경우, 프로세스는 단계 91로 진행하여 전술한 바와 같이 수행한다. 조상 노드가 없는 경우, 프로세스는 단계 96에서 종료한다.
본 명세서에 기술한 b-트리의 위치 액세스 방법은 상기 프로세스를 실행하기 위한 컴퓨터 구현 프로세스 및 시스템의 형태로 실시될 수 있다. 본 명세서에 기술한 b-트리의 위치 액세스 방법은 또한 플로피 디스켓, ROM, CD-ROM, 하드 드라이브, 고밀도 디스크, 또는 임의의 다른 컴퓨터 판독가능 저장 매체 등의 유형 매체로 구현된 컴퓨터 프로그램 코드의 형태로 실시될 수도 있으며, 이 경우, 컴퓨터 프로그램 코드가 컴퓨터로 로드되어 그에 의해 실행될 때, 컴퓨터는 본 발명을 실시하기 위한 시스템이 된다. 본 명세서에 기술된 b-트리의 위치 액세스 방법은 또한 예를 들면 저장 매체에 저장되어 있거나, 컴퓨터로 로드 및/또는 그 컴퓨터에 의해 실행되거나, 또는 전기 배선 또는 케이블을 통해, 광 섬유를 통해, 또는 전자기 방사를 통해서와 같은 어떤 전송 매체를 거쳐 전송되든지에 상관없이 컴퓨터 프로그램 코드의 형태로 실시될 수도 있으며, 이 경우 컴퓨터 프로그램 코드가 컴퓨터로 로드되어 그에 의해 실행될 때, 컴퓨터는 본 발명을 실시하기 위한 시스템이 된다. 범용 프로세서 상에서 실시될 때, 컴퓨터 프로그램 코드 세그먼트는 특정의 논리 회로를 생성하도록 프로세서를 구성한다.
본 명세서에 기술된 여러가지 기술은 하드웨어 또는 소프트웨어와 연계하여 또는 적당한 경우 이 둘의 조합과 연계하여 실시될 수 있다. 따라서, 본 발명의 방법 및 장치 또는 본 발명의 어떤 측면 또는 일부분은 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 기계 판독가능 저장 매체 등의 유형 매체에 구현된 프로그램 코드(즉, 명령어)의 형태를 취할 수 있으며, 이 경우 프로그램 코드가 컴퓨터 등의 기계로 로드되어 그에 의해 실행될 때, 그 기계는 본 발명을 실시하기위한 장치가 된다. 프로그램가능한 컴퓨터 상에서의 프로그램 코드 실행의 경우, 컴퓨팅 장치는 일반적으로 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 소자를 포함함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함한다. 예를 들어 데이터 처리 API 등을 사용하여 본 발명의 신호 처리 서비스를 이용할 수 있는 하나 이상의 프로그램은 양호하게는 컴퓨터와 통신하기 위해 고수준의 절차 또는 객체 지향 프로그래밍 언어(high level procedural or object oriented programming language)로 구현된다. 그렇지만, 프로그램은 원하는 바에 따라 어셈블리어 또는 기계어로 구현될 수 있다. 어느 경우든지, 언어는 컴파일된 또는 인터프리트된 언어일 수 있으며, 또 하드웨어 구현과 결합될 수 있다.
본 발명의 방법 및 장치는 또한 전기 배선 또는 케이블을 통해, 광 섬유를 통해, 또는 임의의 다른 형태의 전송을 통해서와 같은 어떤 전송 매체를 통해 전송되는 프로그램 코드의 형태로 구현된 통신을 통해 실시될 수도 있으며, 이 경우 프로그램 코드가 EPROM, 게이트 어레이, 프로그램가능 논리 소자(PLD), 클라이언트 컴퓨터, 비디오 레코더 등 기계에 의해 수신되고 그에 로드되어 실행될 때, 상기 전형적인 실시예에서 기술한 신호 처리 기능을 갖는 수신측 기계는 본 발명을 실시하기 위한 장치가 된다. 범용 프로세서 상에서 구현될 때, 프로그램 코드는 프로세스와 결합되어 본 발명의 기능을 기동시키는 동작을 하는 독자적인 장치를 제공한다. 게다가, 본 발명과 연계하여 사용되는 임의의 저장 기술은 항상 하드웨어와 소프트웨어의 결합일 수 있다.
본 발명의 실시예들이 여러 도면의 양호한 실시예들과 연계하여 기술되어 있지만, 다른 유사한 실시예들이 사용되거나 본 발명을 벗어나지 않고 본 발명의 동일한 기능을 수행하기 위해 전술한 실시예에 수정 및 부가가 이루어질 수 있음을 잘 알 것이다. 게다가, 특히 무선 네트워크 장치의 수가 계속 증가함에 따라 핸드헬드 장치 운영 체제 및 다른 애플리케이션 고유 운영 체제를 포함하는 각종의 컴퓨터 플랫폼이 생각되고 있음도 강조되어야만 한다. 따라서, 본 발명은 임의의 단일 실시예에 한정되는 것이 아니라 첨부된 청구항들에 따른 폭 및 범위에서 해석되어야만 한다.

Claims (22)

  1. 미리 정해진 순번 위치에 배치되어 있는 요소를 찾아 균형 트리(b-트리)를 검색하는 방법으로서,
    상기 b-트리의 루트 노드에 있는 요소들을 좌측에서 우측으로 평가하는 단계,
    서브 트리들 각각에 포함되어 있는 리프-레벨 요소의 개수를 나타내는 리프-레벨 카운트에 기초하여 상기 루트 노드의 서브 트리를 선택하고 상기 선택된 서브 트리의 루트 노드로 하강하는 단계,
    상기 b-트리의 리프 노드를 만날 때까지 상기 평가 단계, 상기 선택 단계, 및 상기 하강 단계를 반복하는 단계, 및
    상기 리프 노드 내의 요소들의 상대 위치 및 상기 리프 노드보다 선행하는 다른 리프 노드에 저장된 요소들의 총 개수에 따라, 상기 리프 노드에서 상기 미리 정해진 순번 위치에 있는 요소를 찾아내는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 미리 정해진 순번 위치를 나타내는 번호가 상기 b-트리의 상기 루트 노드에 있는 모든 리프-레벨 카운트의 합보다 큰지를 판정하는 단계, 및
    상기 미리 정해진 위치의 상기 값이 상기 합보다 큰 경우 상기 미리 정해진 위치 값이 범위 밖에 있음을 표시하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 선택하는 단계는,
    상기 루트 노드 내의 각 요소에 대해, 상기 미리 정해진 순번 위치를 나타내는 번호가 상기 만나는 유가 요소에 인접하여 그 좌측에 위치하는 리프-레벨 카운트의 값과 이전에 만난 모든 좌측 및 우측 리프-레벨 카운트의 누적값을 나타내는 skipcount 카운터의 값의 제1 합보다 작거나 같은지를 판정하는 단계,
    상기 번호가 상기 제1 합보다 작거나 같은 경우 서브 트리를 선택하는 단계, 및
    상기 번호가 상기 제1 합보다 큰 경우,
    상기 skipcount 값을 가장 최근에 만난 좌측 리프-레벨 카운트의 값만큼 증가시키는 단계, 및
    상기 번호가 상기 만나는 유가 요소에 인접하여 그 우측에 위치하는 우측 리프-레벨 카운트의 값과 상기 skipcount 값의 제2 합보다 작거나 같은지를 판정하는 단계,
    상기 번호가 상기 제2 합보다 큰 경우,
    상기 skipcount 값을 가장 최근에 순회한 우측 리프-레벨 카운트의 값만큼 증가시키는 단계,
    좌측에서 우측으로 그 다음으로 만나는 유가 요소로 이동하는 단계, 및
    상기 번호가 상기 제2 합보다 작거나 같은지를 판정하는 상기단계를 반복하는 단계, 및
    상기 번호가 상기 제2 합보다 작거나 같은 경우,
    서브 트리를 선택하는 단계를 포함하는 방법.
  4. 제3항에 있어서, 상기 번호가 상기 제1 합보다 작거나 같은 경우, 상기 만나는 유가 요소에 인접하여 그의 좌측에 위치하는 리프-레벨 카운트에 대응하는 서브 트리가 선택되고,
    상기 번호가 상기 제2 합보다 큰 경우, 상기 만나는 유가 요소에 인접하여 그의 우측에 위치하는 리프-레벨 카운트에 대응하는 서브 트리가 선택되는 것인 방법.
  5. 제1항에 있어서, 상기 b-트리의 상기 리프 레벨에 있는 상기 요소의 상기 미리 정해진 위치를 찾아내는 상기 단계는, 상기 미리 정해진 순번 위치를 나타내는 번호와 모든 순회된 리프-레벨 카운트의 값들의 합 간의 차이를 구하는 단계를 포함하는 것인 방법.
  6. 제1항에 있어서, 상기 b-트리의 비리프 레벨에 있는 노드 내의 각각의 유가 요소에 대해,
    좌측 리프-레벨 카운트 요소는 각각의 비리프 레벨 유가 요소에 인접하여 그 우측에 위치하고, 상기 좌측 리프-레벨 카운트 각각은 상기 b-트리의 좌측 서브 트리의 리프 레벨에 있는 유가 요소의 총 개수, 및 상기 좌측 서브 트리의 개별적인 루트 노드를 나타내며,
    우측 리프-레벨 카운트 요소는 각각의 비리프 레벨 유가 요소에 인접하여 그 좌측에 위치하고, 상기 우측 리프-레벨 카운트 요소 각각은 상기 b-트리의 우측 서브 트리의 리프 레벨에 있는 유가 요소의 총 개수, 및 상기 우측 서브 트리의 개별적인 루트 노드를 나타내는 것인 방법.
  7. 제6항에 있어서, 각각의 좌측 서브 트리는 상기 좌측 리프-레벨 카운트 요소가 가리키고 있는 개별적인 루트 노드에서 시작하여 상기 b-트리로부터 분기하는 모든 요소를 포함하고,
    각각의 우측 서브 트리는 상기 우측 리프-레벨 카운트 요소가 가리키고 있는 개별적인 루트 노드에서 시작하여 상기 b-트리로부터 분기하는 모든 요소를 포함하는 것인 방법.
  8. 제1항에 있어서, 상기 b-트리는,
    상기 b-트리의 상기 리프 레벨에 있는 각각의 유가 요소에 인접하여 그 좌측에 위치하는 좌측 리프-레벨 카운트 요소, 및
    상기 b-트리의 상기 리프 레벨에 있는 각각의 유가 요소에 인접하여 그 우측에 위치하는 우측 리프-레벨 카운트 요소를 더 포함하는 것인 방법.
  9. 제1항에 있어서, 상기 루트 노드의 각각의 요소는 제1 및 제2 리프-레벨 카운트와 관련되어 있고,
    상기 제1 리프-레벨 카운트는 상기 요소의 바로 좌측에 있는 서브 트리를 따라 하강함으로써 도달가능한 리프-레벨 유가 요소의 개수를 나타내고,
    상기 제2 리프-레벨 카운트는 상기 요소의 바로 우측에 있는 서브 트리를 따라 하강함으로써 도달가능한 리프-레벨 유가 요소의 개수를 나타내는 것인 방법.
  10. 제9항에 있어서, 상기 선택 단계는,
    (ⅰ) 카운터를 초기화하는 단계,
    (ⅱ) 상기 루트 노드의 최좌측 요소에서 시작하여, (a) 상기 요소의 제1 카운트와 (b) 상기 카운터의 합이 상기 미리 정해진 순번 위치를 나타내는 번호보다 더 큰지를 판정하는 단계,
    (ⅲ) 상기 제1 카운트가 상기 번호보다 큰 경우, 상기 요소의 바로 좌측에 있는 서브 트리를 따라 하강하는 단계,
    (ⅳ) 상기 제1 카운트가 상기 번호보다 크지 않은 경우, 상기 제1 카운트를 카운터에 가산하고 우측으로 상기 루트 노드에 있는 그 다음 요소로 이동하는 단계,
    (ⅴ) 상기 루트 노드 내의 각각의 요소에 대해, 상기 루트 노드 내의 최우측 요소에 도달될 때까지 또는 서브 트리를 따라 하강할 때까지 상기 단계 (ⅱ), 단계 (ⅲ), 및 단계 (ⅳ)를 반복하는 단계, 및
    (ⅵ) 서브 트리를 따라 하강하지 않고 상기 루트 노드 내의 최우측 요소에 도달한 경우, 상기 루트 노드 내의 최우측 요소의 바로 우측에 있는 서브 트리를 따라 하강하는 단계를 포함하는 것인 방법.
  11. 제10항에 있어서, 상기 찾아내는 단계는,
    차이를 구하기 위해 상기 번호에서 상기 카운터를 감산하는 단계, 및
    상기 리프 노드에서 상기 차이와 같은 개수의 위치만큼 상기 리프 노드 내의 최좌측 요소의 우측에 나타나는 요소를 찾아내는 단계를 포함하는 것인 방법.
  12. b-트리 데이터 구조를 저장하고 있는 컴퓨터 판독 가능 매체로서,
    상기 b-트리 데이터 구조는,
    하나 이상의 비리프 노드, 및
    하나 이상의 리프 노드를 포함하며,
    상기 리프 노드 각각은 복수의 정렬 가능 값(orderable values) 중 하나 이상을 저장하거나 그와 관련되어 있고,
    상기 비리프 노드 각각은,
    상기 복수의 정렬 가능 값 중 하나 이상,
    리프 노드 또는 다른 비리프 노드에 대한 하나 이상의 참조, 및
    하나 이상의 카운트 데이터를 저장하거나 그와 관련되어 있으며,
    상기 카운트 데이터 각각은 상기 참조 중 하나에 대응하고 상기 대응하는 참조를 따라감으로써 도달할 수 있는 리프 노드에 저장되거나 그와 관련된 값의 개수를 나타내는 것인 컴퓨터 판독가능 매체.
  13. 제12항에 있어서, 각각의 리프 노드 내의 정렬 가능 값들은 순서에 따라 구성되어 있고,
    각각의 비리프 노드 내의 정렬가능 값들은 상기 순서에 따라 구성되어 있으며,
    각각의 비리프 노드 내의 참조들은 주어진 참조로부터 도달가능한 노드에 저장되거나 그와 관련되어 있는 상기 주어진 참조에서의 모든 값들이 상기 순서로 상기 주어진 참조를 따라가는 모든 참조들로부터 도달가능한 노드 내에 저장된 값들보다 선행하도록 상기 순서로 구성되어 있는 것인 컴퓨터 판독 가능 매체.
  14. 제13항에 있어서, 비리프 노드 내의 정렬 가능 값들 각각은 상기 순서에서 상기 정렬 가능 값보다 선행하는 값들만이 상기 제1 참조로부터 도달가능하고 또 상기 순서에서 상기 정렬 가능 값보다 선행하거나 상기 순서에서 상기 정렬 가능 값과 동일한 위치에 있는 값들만이 상기 제2 참조로부터 도달가능하도록 상기 비리프 노드 내의 참조들 중 제1 및 제2 참조와 관련되어 있는 것인 컴퓨터 판독 가능 매체.
  15. 균형 트리(b-트리)의 미리 정해진 위치에 배치된 요소를 찾아내도록 컴퓨터프로세서에 지시하는 컴퓨터 프로그램 코드로 인코딩된 컴퓨터 판독 가능 매체로서,
    상기 프로그램 코드는,
    상기 컴퓨터 프로세서로 하여금 상기 b-트리의 루트 노드 내의 요소들을 좌측에서 우측으로 순회하도록 하기 위한 b-트리 순회(traverse b-tree) 코드 세그먼트,
    상기 컴퓨터 프로세서로 하여금 값을 갖는 각각의 만나는 요소(유가 요소)에서 상기 미리 정해진 위치의 값을 좌측-리프-카운트 요소가 나타내는 값 및 우측-리프-카운트 요소가 나타내는 값과 비교하도록 하기 위한 비교(compare) 코드 세그먼트,
    상기 컴퓨터 프로세서로 하여금 상기 비교 단계의 결과에 따라 상기 b-트리의 서브 트리를 선택하도록 하기 위한 선택(select) 코드 세그먼트,
    상기 선택된 서브 트리의 루트 노드에 있는 요소들을 좌측에서 우측으로 순회하도록 하기 위한 서브 트리 순회(traverse sub-tree) 코드 세그먼트,
    상기 컴퓨터 프로세서로 하여금 상기 b-트리의 상기 리프 레벨을 만나게 될 때까지 상기 비교 단계, 선택 단계 및 선택된 서브 트리의 루트 노드에 있는 요소들을 순회하는 단계를 반복하도록 하는 반복(repeat) 코드 세그먼트, 및
    상기 컴퓨터 프로세서로 하여금 상기 미리 정해진 위치의 상기 값과 순회된 좌측 리프-카운트 요소에 따라 상기 b-트리의 상기 리프 레벨에 있는 상기 요소의 상기 미리 정해진 위치를 찾아내도록 하는 찾아내기(locate) 코드 세그먼트를 포함하는 것인 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서, 상기 프로그램 코드는,
    상기 컴퓨터 프로세서로 하여금 상기 미리 정해진 위치의 상기 값이 상기 b-트리의 상기 루트 노드에 있는 모든 좌측-리프-레벨 카운트 요소 값과 상기 b-트리의 상기 루트 노드에 있는 모든 우측-리프-레벨 카운트 요소 값의 합보다 큰지를 판정하도록 하기 위한 판정(determine) 코드 세그먼트, 및
    상기 컴퓨터 프로세서로 하여금 상기 미리 정해진 위치의 상기 값이 상기 합보다 큰 경우 상기 미리 정해진 위치 값이 범위 밖에 있음을 표시하도록 하기 위한 표시(indicate) 코드 세그먼트를 더 포함하는 것인 컴퓨터 판독 가능 매체.
  17. 제15항에 있어서, 상기 비교 단계는,
    상기 미리 정해진 위치 값이 상기 만나는 유가 요소에 인접하여 그 좌측에 위치해 있는 좌측 리프-레벨 카운트 요소의 값과 이전에 순회된 좌측 및 우측 리프-레벨 카운트 요소 값의 누적값을 나타내는 skipcount 카운터의 값의 제1 합보다 작거나 같은지를 판정하는 단계로서 상기 skipcount 카운터는 좌측 리프-레벨 카운터 요소의 처음 순회에 앞서 0(영)으로 초기화되는 것인 판정 단계,
    상기 미리 정해진 위치 값이 상기 제1 합보다 작거나 같은 경우, 서브 트리를 선택하는 단계, 및
    상기 미리 정해진 위치가 상기 제1 합보다 큰 경우,
    상기 skipcount 값을 가장 최근에 순회한 좌측 리프-레벨 카운트 요소의 값만큼 증가시키는 단계, 및
    상기 미리 정해진 위치 값이 상기 만나는 유가 요소에 인접하여 그 우측에 위치하는 우측 리프-레벨 카운트 요소의 값과 상기 skipcount 값의 제2 합보다 작거나 같은지를 판정하는 단계,
    상기 미리 정해진 위치 값이 상기 제2 합보다 작거나 같은 경우,
    상기 skipcount 값을 가장 최근에 순회한 우측 리프-레벨 카운트 요소의 값만큼 증가시키는 단계,
    좌측에서 우측으로 그 다음으로 만나는 유가 요소로 순회하는 단계, 및
    상기 미리 정해진 위치 값이 상기 제2 합보다 작거나 같은지를 판정하는 상기 단계에서 시작하여 상기 비교 단계를 반복하는 단계를 포함하는 것인 컴퓨터 판독 가능 매체.
  18. 제17항에 있어서, 상기 선택 단계는,
    상기 미리 정해진 위치 값이 상기 제1 합보다 작거나 같은 경우, 상기 만나는 유가 요소에 인접하여 그의 좌측에 위치하는 좌측-리프-레벨 카운트 요소가 가리키는 서브 트리를 선택하는 단계, 및
    상기 미리 정해진 위치 값이 상기 제2 합보다 큰 경우, 상기 만나는 유가 요소에 인접하여 그의 우측에 위치하는 우측-리프-레벨 카운트 요소가 가리키는 서브트리를 선택하는 단계를 포함하는 것인 컴퓨터 판독 가능 매체.
  19. 제15항에 있어서, 상기 b-트리의 상기 리프 레벨에 있는 상기 요소의 상기 미리 정해진 위치를 찾아내는 상기 단계는, 상기 미리 정해진 위치 값과 모든 순회된 리프-레벨 카운트 요소의 값들의 합 간의 차이를 결정하는 단계를 포함하는 것인 컴퓨터 판독 가능 매체.
  20. 제15항에 있어서, 상기 b-트리의 비리프 레벨에 있는 노드 내의 각각의 유가 요소에 대해,
    좌측 리프-레벨 카운트 요소는 각각의 비리프 레벨 유가 요소에 인접하여 그 우측에 위치하고, 상기 좌측 리프-레벨 카운트 요소 각각은 상기 b-트리의 좌측 서브 트리의 리프 레벨에 있는 유가 요소의 총 개수, 및 상기 좌측 서브 트리의 개별적인 루트 노드를 나타내며,
    우측 리프-레벨 카운트 요소는 각각의 비리프 레벨 유가 요소에 인접하여 그 좌측에 위치하고, 상기 우측 리프-레벨 카운트 요소 각각은 상기 b-트리의 우측 서브 트리의 리프 레벨에 있는 유가 요소의 총 개수, 및 상기 우측 서브 트리의 개별적인 루트 노드를 나타내는 것인 컴퓨터 판독 가능 매체.
  21. 제15항에 있어서, 각각의 좌측 서브 트리는 상기 좌측 리프-레벨 카운트 요소가 가리키고 있는 개별적인 루트 노드에서 시작하여 상기 b-트리로부터 분기하는모든 요소를 포함하고,
    각각의 우측 서브 트리는 상기 우측 리프-레벨 카운트 요소가 가리키고 있는 개별적인 루트 노드에서 시작하여 상기 b-트리로부터 분기하는 모든 요소를 포함하는 것인 컴퓨터 판독 가능 매체.
  22. 제15항에 있어서, 상기 b-트리는,
    상기 b-트리의 상기 리프 레벨에 있는 각각의 유가 요소에 인접하여 그 좌측에 위치하는 좌측 리프-레벨 카운트 요소, 및
    상기 b-트리의 상기 리프 레벨에 있는 각각의 유가 요소에 인접하여 그 우측에 위치하는 우측 리프-레벨 카운트 요소를 더 포함하는 것인 컴퓨터 판독 가능 매체.
KR1020040039243A 2003-05-30 2004-05-31 b-트리를 사용한 위치 액세스 KR20040103495A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/448,584 2003-05-30
US10/448,584 US7120637B2 (en) 2003-05-30 2003-05-30 Positional access using a b-tree

Publications (1)

Publication Number Publication Date
KR20040103495A true KR20040103495A (ko) 2004-12-08

Family

ID=33131612

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040039243A KR20040103495A (ko) 2003-05-30 2004-05-31 b-트리를 사용한 위치 액세스

Country Status (5)

Country Link
US (2) US7120637B2 (ko)
EP (1) EP1482421A3 (ko)
JP (1) JP2004362574A (ko)
KR (1) KR20040103495A (ko)
CN (1) CN1573746A (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150094044A (ko) * 2014-02-10 2015-08-19 주식회사 티맥스데이터 트리 인덱스를 이용하는 노드 탐색 방법 및 장치
KR20190117001A (ko) * 2017-02-09 2019-10-15 마이크론 테크놀로지, 인크. 유지관리 동작들을 위한 병합 트리 수정들
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US11334270B2 (en) 2018-12-14 2022-05-17 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US11599552B2 (en) 2018-10-10 2023-03-07 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US11657092B2 (en) 2018-12-26 2023-05-23 Micron Technology, Inc. Data tree with order-based node traversal

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7792866B2 (en) * 2003-08-25 2010-09-07 International Business Machines Corporation Method and system for querying structured documents stored in their native format in a database
US7519574B2 (en) * 2003-08-25 2009-04-14 International Business Machines Corporation Associating information related to components in structured documents stored in their native format in a database
US8150818B2 (en) * 2003-08-25 2012-04-03 International Business Machines Corporation Method and system for storing structured documents in their native format in a database
US8250093B2 (en) 2003-08-25 2012-08-21 International Business Machines Corporation Method and system for utilizing a cache for path-level access control to structured documents stored in a database
US8775468B2 (en) 2003-08-29 2014-07-08 International Business Machines Corporation Method and system for providing path-level access control for structured documents stored in a database
US8516004B2 (en) * 2003-09-19 2013-08-20 Unisys Corporation Method for processing K node count fields using an intensity variable
US7363284B1 (en) * 2004-04-30 2008-04-22 Unisys Corporation System and method for building a balanced B-tree
US20070162508A1 (en) * 2004-11-08 2007-07-12 Mazzagatti Jane C Updating information in an interlocking trees datastore
CN100452722C (zh) * 2006-02-21 2009-01-14 南京中兴软创科技有限责任公司 一种在资源树中实现对通信资源快速定位的方法
US8195683B2 (en) * 2006-02-28 2012-06-05 Ebay Inc. Expansion of database search queries
JP4956757B2 (ja) * 2006-03-15 2012-06-20 国立大学法人大阪大学 数式記述構造化言語オブジェクト検索システムおよび検索方法
WO2007124513A2 (en) * 2006-04-25 2007-11-01 Google, Inc. Ranking and clustering of geo-located objects
US7765494B2 (en) * 2006-05-24 2010-07-27 Sap Ag Harmonized theme definition language
KR100922389B1 (ko) * 2007-07-04 2009-10-19 삼성전자주식회사 플래시 메모리를 위한 색인 스킴
US20100235208A1 (en) * 2009-03-12 2010-09-16 Naim Valensi System and methods for balancing binary trees
CN101515298B (zh) * 2009-03-30 2013-09-25 华为技术有限公司 基于树形数据结构节点的插入的方法和存储装置
US8914731B2 (en) * 2009-03-31 2014-12-16 Oracle International Corporation Analyzing user behavior to enhance data display
US8209353B2 (en) * 2009-03-31 2012-06-26 Oracle International Corporation Storing hierarchical data to enable paging
US20110078199A1 (en) * 2009-09-30 2011-03-31 Eric Williamson Systems and methods for the distribution of data in a hierarchical database via placeholder nodes
US8996453B2 (en) 2009-09-30 2015-03-31 Red Hat, Inc. Distribution of data in a lattice-based database via placeholder nodes
US8984013B2 (en) * 2009-09-30 2015-03-17 Red Hat, Inc. Conditioning the distribution of data in a hierarchical database
US9031987B2 (en) * 2009-09-30 2015-05-12 Red Hat, Inc. Propagation of data changes in distribution operations in hierarchical database
US8589344B2 (en) * 2009-11-30 2013-11-19 Red Hat, Inc. Systems and methods for generating iterated distributions of data in a hierarchical database
US8396880B2 (en) * 2009-11-30 2013-03-12 Red Hat, Inc. Systems and methods for generating an optimized output range for a data distribution in a hierarchical database
US8412881B2 (en) * 2009-12-22 2013-04-02 Intel Corporation Modified B+ tree to store NAND memory indirection maps
US8315174B2 (en) * 2009-12-31 2012-11-20 Red Hat, Inc. Systems and methods for generating a push-up alert of fault conditions in the distribution of data in a hierarchical database
CN103229070B (zh) * 2010-07-15 2016-10-12 泽布拉企业解决方案公司 用于确定系统节点位置并且执行温度补偿的方法和装置
US9155320B2 (en) * 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
US9720927B2 (en) * 2011-07-12 2017-08-01 The Board Of Trustees Of The Leland Stanford Junior University Method and system for database storage management
US8856138B1 (en) * 2012-08-09 2014-10-07 Google Inc. Faster substring searching using hybrid range query data structures
CN103870456B (zh) * 2012-12-07 2017-03-29 华东师范大学 一种面向大规模数据的索引方法及其系统
CN104424204B (zh) * 2013-08-21 2017-08-11 华为技术有限公司 索引机制合并方法、搜索方法、装置及设备
WO2015029969A1 (ja) * 2013-08-28 2015-03-05 三菱電機株式会社 データ処理装置及びデータ処理方法及びプログラム
EP2849099B1 (en) * 2013-09-11 2021-07-28 Dassault Systèmes A computer-implemented method for designing an industrial product modeled with a binary tree.
US10146806B2 (en) * 2015-02-12 2018-12-04 Oracle International Corporation Adaptive resolution hsitogram
SG10201503755QA (en) * 2015-05-13 2016-12-29 Dataesp Private Ltd Searching large data space for statistically significant patterns
KR20170073944A (ko) * 2015-12-21 2017-06-29 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
US10621271B2 (en) * 2017-05-25 2020-04-14 Microsoft Technology Licensing, Llc Reordering a multi-level layout using a hierarchical tree
US11048679B2 (en) 2017-10-31 2021-06-29 Oracle International Corporation Adaptive resolution histogram on complex datatypes
KR102057055B1 (ko) 2018-06-27 2019-12-18 주식회사 티맥스데이터 인덱스 관리 방법
CN111385111B (zh) * 2018-12-28 2023-03-24 中国电信股份有限公司 告警方法、装置、系统及计算机可读存储介质
KR102195836B1 (ko) 2019-02-07 2020-12-28 주식회사 티맥스티베로 인덱스 관리 방법
CN110162525B (zh) * 2019-04-17 2023-09-26 平安科技(深圳)有限公司 基于b+树的读写冲突解决方法、装置及存储介质
CN112446594B (zh) * 2020-11-12 2023-07-21 书丸子科技(云南)有限公司 一种用于学前儿童综合能力分析的多层级可量化计算方法
CN117472852A (zh) * 2022-07-20 2024-01-30 腾讯科技(成都)有限公司 日志数据查询方法、装置、设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990042386A (ko) * 1997-11-26 1999-06-15 이계철 다중 균형 트리 구조를 이용한 관리정보 트리에서의 노드 검색,생성 및 삭제 방법
JPH11212980A (ja) * 1998-01-23 1999-08-06 Fuji Xerox Co Ltd インデクス作成方法および検索方法
EP1211612A2 (en) * 2000-11-29 2002-06-05 Hewlett-Packard Company (a Delaware corporation) A data structure and storage and retrieval method supporting ordinality based searching and data retrieval
KR20030075016A (ko) * 2002-03-15 2003-09-22 한국전자통신연구원 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치
JP2004110216A (ja) * 2002-09-17 2004-04-08 Fuji Xerox Co Ltd 検索装置および方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371885A (en) * 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
US5355473A (en) * 1991-06-20 1994-10-11 Lawrence Au Indexed record locating and counting mechanism
US5613105A (en) 1993-06-30 1997-03-18 Microsoft Corporation Efficient storage of objects in a file system
US5878410A (en) 1996-09-13 1999-03-02 Microsoft Corporation File system sort order indexes
US6711562B1 (en) * 1999-12-01 2004-03-23 The Trustees Of Columbia University In The City Of New York Cache sensitive search (CSS) tree indexing system and method
US6553370B1 (en) * 2000-10-04 2003-04-22 Lsi Logic Corporation Flexible search engine having sorted binary search tree for perfect match

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990042386A (ko) * 1997-11-26 1999-06-15 이계철 다중 균형 트리 구조를 이용한 관리정보 트리에서의 노드 검색,생성 및 삭제 방법
JPH11212980A (ja) * 1998-01-23 1999-08-06 Fuji Xerox Co Ltd インデクス作成方法および検索方法
EP1211612A2 (en) * 2000-11-29 2002-06-05 Hewlett-Packard Company (a Delaware corporation) A data structure and storage and retrieval method supporting ordinality based searching and data retrieval
KR20030075016A (ko) * 2002-03-15 2003-09-22 한국전자통신연구원 클래스 분할 기법을 이용한 라우팅 테이블 자료구조,라우팅 테이블을 이용한 라우팅 경로 검색방법 및 장치
JP2004110216A (ja) * 2002-09-17 2004-04-08 Fuji Xerox Co Ltd 検索装置および方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문(SIMON TATHAM) *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150094044A (ko) * 2014-02-10 2015-08-19 주식회사 티맥스데이터 트리 인덱스를 이용하는 노드 탐색 방법 및 장치
KR20190117001A (ko) * 2017-02-09 2019-10-15 마이크론 테크놀로지, 인크. 유지관리 동작들을 위한 병합 트리 수정들
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US11599552B2 (en) 2018-10-10 2023-03-07 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US11334270B2 (en) 2018-12-14 2022-05-17 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US11657092B2 (en) 2018-12-26 2023-05-23 Micron Technology, Inc. Data tree with order-based node traversal

Also Published As

Publication number Publication date
EP1482421A2 (en) 2004-12-01
US7120637B2 (en) 2006-10-10
US20040243553A1 (en) 2004-12-02
US20060122996A1 (en) 2006-06-08
JP2004362574A (ja) 2004-12-24
CN1573746A (zh) 2005-02-02
EP1482421A3 (en) 2006-05-24
US7657556B2 (en) 2010-02-02

Similar Documents

Publication Publication Date Title
KR20040103495A (ko) b-트리를 사용한 위치 액세스
EP1393206B1 (en) Data structure for information systems
KR101301380B1 (ko) 네트워크 상에서의 문서의 바이어스된 클릭 거리를사용하는 순위 함수
US7505965B2 (en) Systems and methods for providing a user interface with an automatic search menu
US10095698B2 (en) Managing changes to one or more files via linked mapping records
US6006236A (en) Virtual navigator that produces virtual links at run time for identifying links in an electronic file
AU2002229734A1 (en) Database system and query optimiser
EP1890241A1 (en) Business object search using multi-join indexes and extended join indexes
JPH11184837A (ja) 最短経路探索システム
AU2002249161A1 (en) Data structure for information systems
CN109471838B (zh) 目录文档的操作方法、装置、电子设备、可读存储介质
CN110442584B (zh) 一种基于异步加载的树形结构资源检索的方法
US7469255B2 (en) Entry points for navigation of hierarchical information structures
EP1483690B1 (en) Hybrid and dynamic representation of data structures
EP1050829A2 (en) Visualization of graph-structured name spaces
US20080162508A1 (en) Smart links and dynamic favorites
EP1973047A1 (en) Information retrieval system and information retrieval method
JP4498342B2 (ja) 情報推薦システム及び情報推薦プログラム
JP5505207B2 (ja) 情報検索装置、情報検索方法及び情報検索プログラム
US11210357B2 (en) Automatically categorizing bookmarks from customized folders and implementation based on web browsing activity
JP2021033695A (ja) 計算機システム及び業務の支援方法
Müller et al. Efficient Assembly of Product Structures in Worldwide Distributed Client/Server Environments
CA2300706A1 (en) Visualization of graph-structured name spaces

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee