KR20060045659A - B-트리의 연속키들을 재명명하는 방법 및 시스템 - Google Patents

B-트리의 연속키들을 재명명하는 방법 및 시스템 Download PDF

Info

Publication number
KR20060045659A
KR20060045659A KR1020050030694A KR20050030694A KR20060045659A KR 20060045659 A KR20060045659 A KR 20060045659A KR 1020050030694 A KR1020050030694 A KR 1020050030694A KR 20050030694 A KR20050030694 A KR 20050030694A KR 20060045659 A KR20060045659 A KR 20060045659A
Authority
KR
South Korea
Prior art keywords
tree
keys
directory
extraction
trim
Prior art date
Application number
KR1020050030694A
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 KR20060045659A publication Critical patent/KR20060045659A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B61/00Tennis nets or accessories for tennis or like games, e.g. volley-ball
    • A63B61/02Posts; Revolvably-mounted posts ; Straining or adjusting devices on the posts, e.g. coin- or time operated
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B61/00Tennis nets or accessories for tennis or like games, e.g. volley-ball
    • A63B61/003Nets for tennis or like games or accessories therefor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2225/00Miscellaneous features of sport apparatus, devices or equipment
    • A63B2225/09Adjustable dimensions
    • A63B2225/093Height
    • 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/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Physical Education & Sports Medicine (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

파일 시스템과 같은, 계층적 네임스페이스를 나타내는 B-트리의 연속키들을 재명명하는 한 가지 효율적 방법은 O(log N)의 추정된 시간 효율성을 가지며, 여기서, N 은 B-트리에서 노드들의 수이다. 모든 재명명될 연속키들은 우선 원래 B-트리로부터 적출되어(excised) 트림(trimmed) B-트리를 형성하고, 적출된 노드들은 개별적인 임시의 추출(extracted) B-트리에 저장된다. 그 다음, 추출 B-트리의 노드들은 재명명되고, 재명명된 추출 B-트리는 트림 B-트리에 삽입되어 재명명된 키들을 포함하는 최종 B-트리를 형성한다.
B-트리, 계층적 네임스페이스, 추출 트리, 트림 트리, 루트 노드

Description

B-트리의 연속키들을 재명명하는 방법 및 시스템{METHOD AND SYSTEM FOR RENAMING CONSECUTIVE KEYS IN A B-TREE}
도 1은 본 발명에 따라 계층적 네임스페이스를 나타내는 B-트리의 연속키들을 재명명하는 방법을 수행하는 컴퓨팅 디바이스의 아키텍쳐의 예를 도시하는 단순화된 개략도.
도 2는 재명명될 디렉토리의 노드들을 갖는 파일 시스템을 위한 본 발명의 일 구현에서 사용되는 B-트리를 도시하는 개략도.
도 3은 본 발명의 일 구현의 방법에서 재명명될 디렉토리의 키들을 적출하여 원래 B-트리로부터 2개의 중간단계 트리 구조들을 생성하는 것을 도시하는 개략도.
도 4는 본 발명의 일 실시예의 방법으로 형성된 2개의 중간단계 트리 구조들로부터 최종 B-트리를 구성하는 것을 도시하는 개략도.
도 5는 B-트리 데이타 구조에서 디렉토리를 재명명하는 본 발명의 일 실시예의 방법의 고 레벨 단계들을 도시하는 흐름도.
도 6은 도 3에서 2개의 중간단계 트리들을 생성하는 적출(excision) 동작을 도시하는 흐름도.
도 7은 도 4의 최종 B-트리를 생성하는 B-트리 삽입 동작을 도시하는 흐름도.
<주요 도면 부호 설명>
200 : B-트리
210 : 루트 노드
220 : 중긴 레벨의 노드
230 : 종단(leaf) 노드들
본 발명은 일반적으로 데이타를 저장하고 조직화하는 컴퓨터 데이타 구조들에 관한 것이고, 더 구체적으로는, 계층적 네임스페이스를 나타내는 B-트리 데이타 구조에 저장된 키들에 대한 재명명 동작들에 관한 것이다.
B-트리는, 특히 데이타 레코드들이 하드 드라이브와 같은 비교적 느린 저장 매체에 저장될 때, 효율적 데이타 검색을 위해 데이타 레코드들을 조직화하기 위해 고안된 특수 복수방식 트리 데이타 구조이다. B-트리의 각각의 노드는 대응하는 데이타 레코드들과 그 노드의 자식 노드들로의 포인터들을 식별하는 복수 개의 키들을 저장한다. 노드가 저장할 수 있는 키들의 수는 B-트리의 "차수(order)"에 따른다. 차수 K의 B-트리에서, 각각의 노드는 K에서 2K 키들을 포함해야 한다. 더 큰 K의 사용은 주어진 데이타 레코드들의 세트에 대해 B-트리가 더 낮은 높이(또는 깊이)를 갖도록 하여, 원하는 데이타 레코드의 위치를 파악하기 위해 요구될 수 있는 디스크 액세스의 수를 감소시킨다.
B-트리 데이타 구조는 다양한 유형들의 데이타를 조직화하기 위해 사용될 수 있다. 예를 들어, B-트리는 이름들이 B-트리의 키들로서 저장되는 계층적 네임스페이스를 위해 사용될 수 있다. 예를 들어, 파일 시스템의 메타데이타를 저장하기 위해 B-트리를 사용하는 것이 제안되었다. 그 응용에서, B-트리의 키들은 각각의 파일 또는 디렉토리의 전체 경로들이다. 대부분의 파일 시스템 동작들은 이러한 데이타 구조 상에서 효율적으로 수행될 수 있다. 그럼에도 불구하고, 한 가지 중요한 예외는 재명명 동작이었다. 파일 시스템의 디렉토리가 재명명될 때, 그 디렉토리의 파일들과 서브디렉토리들에 대응하는 B-트리의 모든 노드들에 대한 키들은 대응하여 변경되어야 한다. 재명명 동작의 한 가지 고지식한 구현은 재명명되는 디렉토리의 모든 파일들이나 서브디렉토리들을 접촉할 것이고, 이것은 매우 비효율적일 것이다. 종래에, 종래 접근법을 사용하는 재명명 동작의 비효율성 때문에, B-트리 데이타 구조가 파일 시스템을 관리하기에 부적합하다는 관점이 있어왔다.
상술된 관점에서, 본 발명은 B-트리에서의 연속키들을 재명명하는 동작과 연결하여 계층적 네임스페이스를 나타내는 B-트리를 수정하는 방법을 제공한다. 본 발명에 따르면, 계층적 네임스페이스를 나타내는 B-트리에 저장된 연속키들의 세트가 재명명되어야 할 때, 재명명될 모든 키들은 원래 B-트리로부터 적출되고, 개별적인 임시의 "추출 트리(extracted tree)"에 저장된다. 적출은 원래 B-트리를 "트림 트리(trimmed tree)"로 변경한다. 그 다음, 추출 트리의 키들은 재명명되고, 재명명된 추출 트리는 트림 트리에 삽입되어 재명명된 키들을 갖는 계층적 네임스페이스를 나타내는 최종 B-트리를 형성한다. 본 발명의 방법은, O(log N)의 추정 시간 복잡도로, 매우 효율적이고, 여기서 N은 B-트리에서의 노드들의 수이다. 계층적 네임스페이스의 일 예는 파일 시스템이고, 재명명 동작은 디렉토리의 파일들과 서브디렉토리들의 이름을 수정하는 것을 포함하는, 파일 시스템에서 디렉토리를 재명명하기 위한 것이다. 본 발명의 방법의 효율성은 파일 시스템의 메타데이타를 저장하기 위해 B-트리 데이타 구조를 사용하는 것을 매우 실행가능하게 한다.
본 발명의 추가 특징들과 장점들은 첨부된 도면을 참조하여 진행되는 실시예들의 이하의 상세한 설명으로부터 명백해질 것이다.
<실시예>
첨부된 청구범위가 구체적으로 본 발명의 특징들을 기재하는 반면, 본 발명 및 그것의 장점들은 첨부된 도면들과 함께 기재된 다음의 상세한 설명으로부터 가장 잘 이해할 수 있을 것이다.
파일 시스템과 같은, 계층적 네임스페이스를 나타내는 B-트리의 연속키들의 세트를 재명명하는 것을 반영하기 위해 B-트리를 수정하는 방법 및 시스템이 이하에 특정 실시예들에 대해 기재될 것이다. 당업자들은 본 명세서에 기재된 방법 및 시스템이 단지 예일 뿐이며, 본 발명의 취지 및 범위를 벗어나지 않고 변경이 이루어질 수 있음을 쉽게 이해할 것이다.
본 발명은 첨부된 도면들과 연결하여 읽혀져야 하는 다음의 상세한 설명을 통해 더 완전히 이해될 수 있을 것이다. 이 설명에서, 유사한 참조번호들은 본 발 명의 다양한 실시예들 내에서 유사한 구성요소들을 나타낸다. 본 발명은 적합한 컴퓨팅 환경에서 구현되는 것으로서 설명된다. 요구사항은 아니지만, 본 발명은 개인용 컴퓨터에 의해 실행되는, 프로시져들과 같은, 컴퓨터 실행가능 명령어들의 일반적인 문맥으로 기재될 것이다. 일반적으로, 프로시져들은 특정 작업들을 수행하거나 특정 추상 데이타 유형들을 구현하는 프로그램 모듈, 루틴, 함수, 프로그램, 오브젝트, 컴포넌트, 데이타 구조 등을 포함한다. 더욱이, 당업자라면 본 발명이 핸드헬드 디바이스, 멀티프로세서 시스템, 및 마이크로프로세서-기반이나 프로그램가능한 가전제품 장치를 포함하는 기타 컴퓨터 시스템 구성과 함께 실시될 수 있음을 이해할 것이다. 본 발명은 또한 작업들이 통신망을 통해 링크된 원격 프로세싱 디바이스들에 의해 수행되는 분산 컴퓨팅 환경들에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 디바이스들 모두에 위치될 수 있다. 컴퓨터 시스템이라는 용어는 분산 컴퓨팅 환경에서 발견될 수 있는 것과 같은 컴퓨터들의 시스템을 일컫기 위해 사용될 수 있다.
도 1은 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 시스템 환경의 일 예일 뿐이고, 본 발명의 사용이나 기능의 범위에 대한 임의의 제한을 제안하도록 의도되지는 않는다. 컴퓨팅 시스템 환경(100)은 컴퓨팅 시스템 환경(100)의 예에서 도시된 컴포넌트들 중의 임의의 것이나 조합에 관련된 임의의 종속성이나 요구사항을 갖는 것으로 해석되어서는 안된다. 본 발명의 적어도 일 실시예는 컴퓨팅 시스템 환경(100)의 예에서 도시된 각각의 컴포넌트를 포함하지만, 본 발명의 다른 더 전형적 인 실시예는, 예를 들어, 통신망 통신을 위해 필요한 것들 이외의 입력/출력 디바이스들과 같은, 비본질적 컴포넌트들의 일부 또는 전체를 제외한다.
도 1을 참조하면, 본 발명을 구현하는 시스템의 예는 컴퓨터(110)의 형태로 범용 컴퓨팅 시스템을 포함한다. 컴퓨터(110)의 컴포넌트들은 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(120)에 결합하는 시스템 버스(121)를 포함할 수 있지만, 이에 제한되지는 않는다. 시스템 버스(121)는 메모리 버스나 메모리 제어기, 주변기기 버스, 및 다양한 버스 아키텍쳐들 중의 임의의 것을 사용하는 로컬 버스를 포함하는 여러 유형들의 버스 구조들 중의 임의의 것일 수 있다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체들을 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스가능한 임의의 이용가능한 매체일 수 있고, 휘발성과 비휘발성 매체 및 분리형과 비분리형 매체를 모두 포함한다. 예를 들어, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체와 통신 매체를 포함할 수 있지만, 이에 제한되지는 않는다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이타 구조, 프로그램 모듈, 또는 기타 데이타와 같은 정보 저장을 위한 임의의 방법이나 기술로 구현되는 휘발성과 비휘발성, 분리형과 비분리형 매체들을 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리나 기타 메모리 기술, 광 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치나 기타 자기 저장 디바이스들, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(110)에 의해 액세스가능한 임의의 기타 매체를 포함하지만, 이에 제한되지는 않는 다. 통신 매체는 통상적으로 컴퓨터 판독가능 명령어, 데이타 구조, 프로그램 모듈, 또는 반송파나 기타 전송 메카니즘과 같은 변조 데이타 신호의 기타 데이타를 구현할 수 있고, 임의의 정보 전달 매체를 포함한다. "변조 데이타 신호"라는 용어는 신호에 정보를 인코딩하는 방식으로 한 개 이상의 그것의 특성들이 설정되거나 변경되는 신호를 의미한다. 예를 들어, 통신 매체는 유선 통신망이나 직접 유선 연결과 같은 유선 매체, 및 음향, RF, 적외선, 및 기타 무선 매체과 같은 무선 매체를 포함한다. 상술된 것들 중의 임의의 것의 조합들은 컴퓨터 판독가능 매체의 범위 내에 포함된다.
시스템 메모리(130)는 리드온리 메모리(ROM)(131)와 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 예를 들어, 도 1은 운영 시스템(134), 응용 프로그램들(135), 기타 프로그램 모듈들(136), 및 프로그램 데이타(137)를 도시하지만, 이에 제한되지는 않는다.
컴퓨터(110)는 또한 다른 분리형과 비분리형, 휘발성과 비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 도 1은 비분리형 비휘발성 자기 매체에 판독 및 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)에 판독 및 기록하는 자기 디스크 드라이브(151), 및 CDROM과 같은 분리형 비휘발성 광 디스크(156)에 판독 및 기록하는 광 디스크 드라이브(155)를 도시한다. 운영 환경의 예에서 사용될 수 있는 기타 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지탈 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 포함하 지만, 이에 제한되지는 않는다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 연결되고, 자기 디스크 드라이브(151)와 광 디스크 드라이브(155)는 통상적으로, 인터페이스(150)와 같은, 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 연결된다. 컴퓨터 시스템은 추가 유형들의 분리형 비휘발성 저장 디바이스들을 위한 인터페이스들을 포함할 수 있다. 예를 들어, 컴퓨터는 USB 플래쉬 드라이브(UFD)(154)를 수용할 수 있는 USB 포트(153), 또는 SD 메모리 카드(158)를 수용할 수 있는 SD 카드 슬롯(157)을 가질 수 있다. 다른 유형들의 분리형 저장 매체들이 또한 본 발명을 구현하기 위해 사용될 수 있다.
상술되고 도 1에서 도시된, 드라이버들과 그들의 연관된 컴퓨터 저장 매체들은 컴퓨터 판독가능 명령어, 데이타 구조, 프로그램 모듈, 및 컴퓨터(110)를 위한 기타 데이타의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 시스템(144), 응용 프로그램들(145), 기타 프로그램 모듈들(146), 및 프로그램 데이타(147)를 저장하는 것으로 도시된다. 이들 컴포넌트들은 운영 시스템(134), 응용 프로그램들(135), 기타 프로그램 모듈들(136), 및 프로그램 데이타(137)와 동일하거나 상이할 수 있음을 주목해야 한다. 운영 시스템(144), 응용 프로그램들(145), 기타 프로그램 모듈들(146), 및 프로그램 데이타(147)는 최소한 그들이 다른 복사본들임을 나타내기 위하여 본 명세서에서 다른 참조번호들을 부여하였다. 사용자는 태블릿이나 전자 디지타이져(164), 마이크로폰(163), 키보드(162), 및 일반적으로 마우스, 트랙볼, 또는 터치 패드라고 일컬어지는 포인팅 디 바이스(161)와 같은 입력 디바이스들 통해 컴퓨터(110)로 커맨드와 정보를 입력할 수 있다. 이들과 다른 입력 디바이스들은 종종 시스템 버스와 결합된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)으로 연결되지만, 병렬 포트, 게임 포트, 또는 범용 직렬 버스(USB)와 같은 다른 인터페이스나 버스 구조들에 의해 연결될 수도 있다. 모니터(191) 또는 기타 유형의 디스플레이 디바이스는 또한, 비디오 인터페이스(190)와 같은, 인터페이스를 통해 시스템 버스(121)에 연결된다. 모니터(191)는 또한 터치-스크린 패널 등과 통합될 수 있다. 모니터 및/또는 터치 스크린 패널은 컴퓨팅 디바이스(110)가 태블릿-유형의 개인용 컴퓨터에서와 같이 통합되는 하우징에 물리적으로 결합될 수 있음을 주목해야 한다. 추가로, 컴퓨팅 디바이스(110)와 같은 컴퓨터들은 또한, 출력 주변기기 인터페이스(194) 등을 통해 연결될 수 있는 스피커들(197) 및 프린터(196)과 같은 기타 주변 출력 디바이스들을 포함할 수 있다.
컴퓨터(110)는, 원격 컴퓨터(180)와 같은, 한 개 이상의 원격 컴퓨터들로의 논리 접속을 사용하여 통신망 환경에서 동작하기를 선호하거나 동작하도록 적응될 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 피어 디바이스, 또는 기타 통신망 노드일 수 있고, 단지 메모리 저장 디바이스(181)만이 도 1에 도시되었지만, 통상적으로 컴퓨터(110)에 관련한 상술된 소자들의 일부 또는 전부를 포함한다. 도 1에 도시된 논리 접속들은 LAN(171)과 WAN(172)을 포함하고, 또한 다른 통신망들을 포함할 수 있다. 예를 들어, 본 발명에서, 컴퓨터(110)는 데이타가 이동되는 소스 머신을 포함할 수 있고, 원격 컴퓨터(180)는 목적지 머신을 포함할 수 있다. 그러나, 소스와 목적지 머신들은 통신망에 의해 초기에 접속될 필요는 없고 그렇지 않으면, 대신에, 데이타는 소스 플랫폼에 의해 작성되고 목적지 플랫폼이나 플랫폼들에 의해 판독될 수 있는 임의의 매체를 통해 이동될 수 있음을 주목해야 한다. 예를 들어, 그런 매체의 한 개의 비제한적인 예는, 때때로 메모리 "키(key)" 또는 메모리 "스틱(stick)"이라고 일컬어지는, 휴대용 플래쉬 메모리 매체이다. 다른 비제한적 예들이 아래 주어진다.
LAN 환경에서 사용될 때, 컴퓨터(110)는 통신망 인터페이스나 어댑터(170)를 통해 LAN(171)에 접속될 수 있다. 컴퓨터(110)는 또한 WAN(173)을 통해 통신을 개설하는 모뎀(172)이나 기타 수단을 포함할 수 있다. 내장이거나 외장일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적합한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 통신망 환경에서, 컴퓨터(110), 또는 그 일부, 에 관련되어 도시된 프로그램 모듈들은 원격 메모리 저장 디바이스에 저장될 수 있다. 예를 들어, 도 1은 원격 응용 프로그램들(185)을 메모리 디바이스(181)에 상주하는 것으로 도시한다. 도시된 통신망 접속들은 예일 뿐이고, 컴퓨터들 간의 통신 링크를 개설하는 기타 수단이 사용될 수 있음을 이해할 것이다.
도 2를 참조하면, 본 발명은 네임스페이스의 이름들이 B-트리의 노드들에 키들로서 저장되는 계층적 네임스페이스를 나타내는 B-트리 데이타 구조에서 연속키들을 재명명하는 효율적 방법에 관한 것이다. 본 명세서에 사용되는 바와 같이, "연속키들"이라는 용어는 키 값들의 주어진 범위의 내에 있는 B-트리의 모든 키들을 의미한다. 이들 키들이 저장된 노드들은 B-트리의 다른 레벨들에 있을 수 있지만, 이들 키들은 그들의 값들에 기초하여 연속적인 순서로 B-트리에 저장된다. 계층적 네임스페이스들은 전산학에서 범용적이다. 계층적 네임스페이스들의 예들은, 예를 들어, 인터넷 상의 컴퓨터들의 이름들을 찾는 도메인명 시스템(DNS), 및 기업 통신망 등에서 개체들의 이름들과 속성들을 저장하기 위해 사용되는 액티브 디렉토리들을 포함한다. 액티브 디렉토리는 마이크로소프트사의 제품이다. 다음 설명에서, 본 발명은 계층적 네임스페이스가 파일 시스템의 것인 일 실시예와 연결하여 기재될 것이고, 재명명 동작은 파일 시스템의 디렉토리를 재명명하고, 수정되는 연속키들의 세트는 디렉토리의 파일들과 서브디렉토리들의 이름들을 나타낸다. 그러나, 본 발명의 방법은 파일 시스템들을 재명명하는 것에 제한되지 않고, 계층적 네임스페이스들을 나타내는 임의의 B-트리 구조에서 연속키들을 재명명하는 넓은 범위의 응용에서 사용될 수 있음을 이해할 것이다.
도 2에 도시된 바와 같이, B-트리(200)는 루트 노드(210), 한 개 이상의 중간 레벨들의 노드들(220), 및 복수 개의 종단(leaf) 노드들(230)을 갖는 트리 구조에 연결된 복수 개의 노드들을 갖는다. B-트리는 K "차수"를 가지며, 여기서 K는 1 이상일 수 있는 정수이다. 2K의 수는 각각의 노드가 가질 수 있는 최대 자식 노드들의 수이다. 키들은, 예를 들어 알파벳 순과 같은, 자연적 순서를 가져서, 파일의 키-시퀀스 순서를 참조할 수 있다.
본 발명의 일 실시예에서, B-트리는 파일 시스템의 디렉토리들과 파일들에 대한 메타데이타를 저장하기 위해 사용되어 디렉토리들과 파일들이 신속하게 위치파악되고 액세스되도록 한다. B-트리의 키들은 파일 시스템의 대응하는 파일들과 서브디렉토리들의 전체 경로명들이다. 예를 들어, B-트리의 한 개의 노드의 키는 A/MyDocuments/Letters/Letter1이고, 여기서 Letter1은 디렉토리 A 내의 MyDocuments 디렉토리 내에 있는 Letters 디렉토리 내의 파일이다. 각각의 파일 검색을 위한 디스크 액세스들의 수를 최소화하기 위해 트리를 최적화하기 위해, B-트리는 B-트리의 각각의 노드가 N-키들을 가지며 "균형적(balanced)"이고, 여기서 N은 K와 2K 사이에 있고 N+1 포인터들이 있다. 각각의 노드의 포인터들과 키들은 p0v1p1v2p2...vNpN의 형태로 배열되고, 여기서 pi는 i번째 포인터이고, vi는 노드의 i번째 키이다. 각각의 포인터는 그 자신의 키들과 포인터들(노드가 종단 노드일 때를 제외함)을 가질 수 있는 자식 노드를 가리킨다. 파일 시스템의 디렉토리 레벨들은 파일 시스템의 디렉토리 경로들을 저장하는 B-트리의 노드 레벨들에 대응할 필요가 없음을 주목해야 한다.
B-트리에 의해 표현된 파일 시스템의 디렉토리가 재명명될 때, 그 디렉토리의 경로명들 및 그 디렉토리의 모든 서브디렉토리들과 파일들은 변경된다. 이 경우, 키들은 트리 구조의 다른 레벨들의 노드들에 저장될 수 있지만, 재명명되는 디렉토리의 모든 파일들과 서브디렉토리들의 이름들은 B-트리에서 연속키들의 세트를 형성한다. 디렉토리를 재명명하는 결과로서, 복수 개의 새로운 키들은 새 경로명들을 위해 생성된다. 구 경로명들에 대한 기존의 키들은 B-트리로부터 제거되어야 하고, 새 키들은 B-트리의 적절한 위치들에 추가되어야 한다. 본 발명은 연속키들의 세트를 재명명하기 위해 B-트리의 수정이 O(log N)의 추정 시간 복잡도로, 여기 서 N은 B-트리의 노드들의 총 수, 효율적으로 수행되도록 하는, 메카니즘을 제공한다.
B-트리의 연속키들을 재명명하는 본 발명의 방법의 개념은 이제 파일 시스템이 B-트리에 의해 표현되는 도 3 내지 도 5에서 도시된 일 실시예를 참조하여 기재되고, 재명명 동작은 파일 시스템에서 디렉토리를 재명명하는 것과 관련이 있다. 도 3에서, B-트리(T라고 레이블됨)는 파일 시스템의 디렉토리가 재명명되기 전의 파일 시스템을 나타낸다. 디렉토리를 재명명하여 생성되는 새 키들을 포함하기 위해 원래 B-트리 T를 수정하는 프로세스는 원래 B-트리로부터 2개의 임시 데이타 구조들을 생성하는 것과 관련이 있다. 2개의 임시 데이타 구조들은, 가까울 수는 있지만, 종래 개념의 B-트리들이 아닌 트리-유사(tree-like) 구조들이다. 더 구체적으로, 한 개의 임시 트리(T'이라고 레이블됨)는 원래 B-트리 T로부터 재명명되는 디렉토리의 파일들과 서브디렉토리들에 대한 모든 키들을 적출하여 생성된다. 이 임시 트리 T'는 "트림 트리"로서 일컬어진다. 도 3에서, 원래 B-트리로부터 적출되는 키들을 포함하는 노드들의 부분들은 설명 목적으로 해쉬(hash)된다. 원래 B-트리 T로부터 적출되는 이들 키들은 "추출 트리(extracted tree)"라고 일컬어지는 제2 트리 데이타 구조(S라고 레이블됨)에 저장된다.
트림 트리 T'과 추출 트리 S 모두는 그들이 언더풀(under-full)일 수 있으므로, 즉, 그들 노드들의 각각은 적어도 K 키들을 갖지 않을 수 있으므로, B-트리의 일반 정의에 맞지 않을 수 있다. 본 발명의 목적을 위해, 차수 K의 "언더풀 B-트리"는, B-트리의 노드들이 K보다 적은 수의 키들을 포함할 수 있다는 점만 제외하 고, K-차수 B-트리의 모든 조건들을 만족시키는 데이타 구조로서 정의된다. 그러므로, 트림 트리 T'과 추출 트리 S는 언더-풀 B-트리들일 수 있다. B-트리 T를 수정하는 프로세스에서 생성되는 임시 트리 T'과 S는, 그들이 프로세스의 일부 시점들에서 언더-풀 또는 오버-풀(over-full)일 수 있음을 이해하여, "B-트리들"로서 일컬어질 것이다.
도 4를 이제 참조하면, 트림 트리 T'과 추출 트리 S가 구성된 후에, 추출 트리 S의 키들은 디렉토리의 재명명을 반영하기 위해 수정된다. 키 수정은 S'라고 레이블된 수정된 추출 트리로 결과가 되어진다. S'의 각각의 키는 재명명된 디렉토리의 대응하는 파일이나 디렉토리의 새 경로명이다. 그 다음, 수정된 추출 트리 S'은 트림 트리 T'으로 삽입된다. 키들의 값들이 변경되므로, 트리 S'의 키들이 삽입되는 트림 트리의 위치들은 원래 트리로부터 적출된 키들이 취해진 위치들과는 다름을 이해할 것이다. 트림 트리 T'으로 트리 S'의 삽입의 결과인 최종 B-트리 T"는 이제 디렉토리가 재명명된 후에 파일 시스템을 나타낸다.
본 발명의 실시예의 명명(naming) 프로세스는 이제 예로써 도 5를 참조하여 고 개념 수준에서 요약된다. 설명을 용이하게 하기 위해, "Y"라고 명명된 디렉토리가 "Z"로 재명명될 것임을 가정한다. B-트리 수정은 B-트리 T로부터 "Y/"로 시작하는 모든 키들을 제거하는 것을 시작한다. 이 예에서, 디렉토리 컴포넌트들이 특수 문자 "/"에 의해 한정됨을 가정한다. 디렉토리의 키들의 제거로, 원래 B-트리 T는 새로운, 언더-풀일 수 있는, B-트리 T'이 되고, 제거된 키들은 다른 새로운, 언더-풀일 수 있는, B-트리 S에 저장된다(단계(510)). 그 다음, 추출 트리 S 의 키들은 그들이 "Y/" 대신에 접두어 "Z/"를 갖도록 변경된다. 이것은 언더-풀 B-트리 S'의 결과를 가져올 수 있다(단계(520)). 그 후에, 수정된 추출 트리 S'는 트림 트리 T'에 삽입되어, 재명명된 디렉토리를 갖는 파일 시스템을 나타내는 새 B-트리 T"를 형성한다(단계(530)). 도 5의 이들 3개의 단계들의 각각은 더 상세히 아래 기재된다.
적출(excision) 동작이 이제 도 6을 참조하여 상세히 기재된다. 우선, 디렉토리 Y의 재명명은 범위 질의를 만족시키는 모든 키들 v에 영향을 미침을 주목해야 한다:
Figure 112005019195239-PAT00001
Figure 112005019195239-PAT00002
Figure 112005019195239-PAT00003
"Y/" v "Y/"
여기서, 부호 "
Figure 112005019195239-PAT00004
"는 키들을 생성하기 위해 사용되는 영숫자 부호들의 세트에서 모든 문자들 보다 크도록 정의되는 특수 문자이다. 수학식 1의 범위 질의를 만족시키는 모든 키들은 원래 B-트리 T로부터 적출되어 새 트리 S에 배치된다.
B-트리의 재명명을 핸들링하기 위해 컴퓨터 프로그램에 의해 수행되는 적출 프로세스는 일반적으로 아래와 같이 기재될 수 있다. 재명명 프로그램은 원래 B-트리 T를 워크다운(walkdown)하고, 범위 질의를 만족시키는 키들을 찾고, 예를 들어 레벨 L에서와 같이, 그것이 그런 키를 포함하는 노드를 발견할 때 중지한다(단계(610)). 프로그램은 이 범주 내에 속하는 이 노드의 모든 키들 및 키들 간의 포인터들을 모두 적출하고, 그들을 새 노드에 배치시킨다 -S의 레벨 L에 있도록 정의된 추출 트리 S의 루트 노드-(단계(620)). 트리 T의 현재 노드로부터, 그 다음 프 로그램은 2개의 개별적 경로들을 따라 트리 T를 워크다운한다. 제1 경로는 "Y/"를 따라가는 한편, 제2 경로는 "Y/
Figure 112005019195239-PAT00005
"를 따라간다. 방문되는 각각의 노드에서, 그 노드의 모든 범주내(in-range) 키들은 적출되어, 키들이 적출되는 T의 동일 레벨에 트리 S의 새 노드를 배치한다. 새 노드의 부모는 T의 경로를 워크다운하는 동안 트리 S의 이전 레벨에 생성된 노드이다(단계(630)). 프로그램이 그 2개의 경로들의 각각을 따라 종단 노드들에 도달할 때까지 프로그램은 계속된다. 이 시점에서, 프로그램은 2개의 임시 트리들 T'과 S의 모든 언더-풀과 오버-풀 노드들을 고정시킨다(단계(640)).
일 실시예에서, 적출 동작 구현의 상세한 단계들이 이제 기재된다. 범위내키들을 포함하는 가장 높은 노드를 찾기 위해, 프로그램은 변수 currentNode = T의 루트로 설정한다. currentNode의 내용은 p0v1p1v2p2...vkpk로서 나타낼 수 있다. 이것은 currentNode라고 식별된 노드가 k 키들, v1,v2,..., vK, 을 포함하고, 그것의 k+1 자식 포인터들은 p0,p1,p2,...,pk임을 의미한다. 포인터 pi를 따라서 얻어지는 노드는 f(pi)로 표현된다. 모든 currentNode의 키들이 수학식 1의 범위 질의를 만족시키지 않으면, 프로그램은 vi < "Y/" < "Y/
Figure 112005019195239-PAT00006
" < vi+ 1이도록 i를 찾고, currentNode = f(pi)로 설정한다. 그 다음, 그것은 currentLevel = currentNode의 높이로 설정한다. 높이는, 1의 높이를 갖는, B-트리의 종단점들로부터 카운트된다.
일단 프로그램이 범위 질의를 만족시키는 원래 B-트리 T의 키를 포함하는 노드를 발견하면, 그것은 추출 트리 S의 루트 노드를 생성한다. 이를 위해, 그것은 vi < "Y/"
Figure 112005019195239-PAT00007
vi+1 이도록 i, 및 vj < "Y/
Figure 112005019195239-PAT00008
" < vj + 1이도록 j를 찾는다. 그 다음, 그것은 그것의 내용이 다음식이 되도록 설정하여 currentNode로부터의 범위내 키들을 적출한다:
p0v1p1v2p2...pi-1vipivj +1pj +1...vkpk
currentNode는 그것의 키들의 일부를 적출한 결과로서 언더-풀이 될 수 있음을 주목해야 한다. 이 쟁점은 아래 기재되는 바와 같이 추후 단계에서 논의될 것이다.
그 다음, 프로그램은 새 B-트리 S(언더-풀일 수 있음)의 새 노드 SrootNode를 생성하고, currentNode로부터의 적출된 키들과 포인터들로 구성된 내용을 그것에 삽입한다:
vi+1pi+1...pj -1vj
이 조합은, 시작과 끝의 자식 노드 포인터들이 생략되었으므로, 유효한 B-트리 노드가 아직 아님을 주목해야 한다. 이들 2개의 포인터들은 새로 생성된 노드, SleftNode, 의 주소에 초기 자식 포인터를 설정하고, 또 다른 새로 생성된 노드, SrightNode, 의 주소에 최종 자식 포인터를 설정하여 추가된다. SrootNode는 언더-풀일 수 있지만, 구성에 의한 S가 언더-풀 B-트리일 수 있으므로, 그것에 대해 아 무런 액션도 취해지지 않음을 주목해야 한다. 또한, currentNode의 원래 전체 내용은 pj를 제외한 수학식 2 또는 수학식 3에 저장되고, 이것은 의도적이다. 현재 오펀 노드(orphaned node) f(pj)는 추후 단계에서 구출되고 f(pi)와 병합될 것이다.
그 다음, 재명명 프로그램은 B-트리 T의 범위내 노드들의 좌우 경계들을 워크다운하여, T에서 발견된 범위내 키들을 트리 S로 전송한다. 이를 위해, 프로그램은 currentLeftNode = f(pi)로 설정하고, currentRightNode = f(pj)로 설정한다. 그것은 또한 currentLevel = currentLevel - 1로 설정한다. currentLeftNode의 내용은 q0u1q1u2...ulql에 의해 표현되는 한편, currentrightNode의 내용은 r0w1r1w2...wmrm에 의해 표현된다. currentLevel
Figure 112005019195239-PAT00009
1인 동안, 프로그램은 ui < "Y/"
Figure 112005019195239-PAT00010
ui+ 1이도록 i를 찾고, wj
Figure 112005019195239-PAT00011
"Y/
Figure 112005019195239-PAT00012
" < wj + 1이도록 j를 찾는다. 그 다음, 프로그램은 currentLeftNode와 currentRightNode로부터 범위내 키들을 적출하고, 그것의 내용을 다음식과 같이 설정하여 currentLeftNode로 모든 남아있는 키들을 전송한다:
q0u1q1u2q2...qi -1uiqiwr +1rj +1...wkrk
currentLevel = 1이면, 프로그램은 종단 노드에 있고, 모든 자식 포인터들은 수학식 4로부터 생략된다. currentLeftNode가 2개의 고갈된(depleted) 노드들을 병합시킨 결과이므로, 그것은 이제 오버-풀이나 언더-풀일 수 있지만, 이 시점에서 이 비균형적 쟁점을 해결하기 위해 아무런 대책이 취해지지 않음을 주목해야 한다.
그 다음, SleftNode의 내용을 다음식과 같이 설정하여, 프로그램은 currentLeftNode에서 SleftNode로 적출된 범위내 키들을 전송한다:
ui+1qi +1...ql -1ul
이 조합은 초기 자식 포인터를 갖지 않으므로 유효한 B-트리 노드가 아직 아니다. 이것은 newSleftNode라고 불리우는 새 노드를 생성하고, 그것의 주소에 초기 자식 포인터를 설정하여 고정된다. 프로그램은 또한 SrightNode의 내용을 다음식과 같이 설정하여 currentRightNode에서 SrightNode로 적출되는 범위내 키들을 전송한다:
r0w1r1w2...rj -1wj
이 조합은 최종 자식 포인터를 갖지 않으므로, 유효한 B-트리 노드가 아직 아니다. 이것은 newSrightNode라는 새 노드를 생성하고, 그것의 주소에 최종 자식 포인터를 설정하여 고정된다. 또한, SrightNode는 언더-풀일 수 있지만, S가 구성에 의해 언더-풀이 되도록 하였으므로 그것에 대해 아무런 액션이 취해지지 않는다. currentLeftNode와 currentRightNode로부터 모든 포인터와 키가 rj를 제외하여 수학식 4, 수학식 5, 및 수학식 6의 표현들 중의 하나에 정확하게 나타남을 주목해야 한다. 이것은 의도적이다 -오펀 노드 f(rj)는 다음 반복에서 수학식 4를 생성하는 단계에서 f(qi)와 병합될 것이다. 그 다음, 프로그램은 모든 currentRightNode의 노드들이 다른 곳에 저장되고 그것을 가리키는 것이 더 이상 없으므로 currentRightNode에 대한 저장을 할당해제(de-allocate)시킨다. currentLevel > 1이면, 프로그램은 currentLeftNode = f(qi), currentRightNode = f(rj), 및 currentLevel = currentLevel -1로 설정하여 한 레벨 아래로 이동한다. 그 다음, 프로그램은 While 루프가 종료할 때까지 상술된 단계들을 반복한다.
이 시점에서, 프로그램은 위에 언급된 바와 같이 모든 언더-풀과 오버-풀 노드들을 고정시킨다. 이를 위해, 프로그램은 currentLeftNode로부터 트리의 각각의 노드를 다시 워크업(walk up)하여 필요하면 표준 B-트리 분할 또는 병합 동작들을 적용한다. 이 프로세스에서, 프로그램은 합법적 크기의 노드에 도달해도 그것의 조상들이 여전히 언더-풀이나 오버-풀일 수 있으므로 중지하지 않는다.
2개의 중간단계 트리들 T'과 S가 생성된 후에, 프로그램은 추출 트리 S의 키들을 재명명하여 디렉토리의 변경된 이름을 반영한다. 위에 언급된 바와 같이, 전체 동작의 목적은 디렉토리 "Y"를 "Z"로 재명명하는 것이다. 위에서 논의된 상세한 단계들은 도 5에서와 같이 전략의 단계 1을 수행하기 위한 것으로, 즉, 원래 B-트리 T로부터 "Y/"로 시작하는 모든 키들을 적출하여, 언더-풀일 수 있는 B-트리 S에 그들을 배치시킨다. 고 레벨 전략의 단계 2는 S의 키들을 변경하여, 그들이 "Y/" 대신에 "Z/"로 시작하여 새 트리 S'을 얻도록 하는 것이다.
바람직한 일 실시예에서, S의 키들의 수정은 키들에 공통 접두어들을 저장하 지 않는 B-트리들을 사용하여 매우 단순하게 만들어진다. 이러한 구성에서, 각각의 노드는 노드에서 모든 키들의 공통 접두어를 포함하는 개별 필드를 갖는 한편, 키들은 구별되는 접미어들만을 저장한다. 접두어 필드는 부모 노드에 저장된 접두어를 포함하지 않고, 주어진 키의 접미어를 위한 키의 전체 값은, 트리의 루트로부터 시작하여, 키의 위치를 파악하기 위해 방문되는 모든 노드들의 접두어들을 연결하여 얻어짐을 주목해야 한다. 그런 B-트리는 접두어 B-트리라고 일컬어진다. 트리 S가 접두어-트리일 때, 전체 키들을 변경하는 것은 매우 쉬워서, 그들은 "Y/" 대신에 "Z/"로 시작한다. 이것은 트리 S의 루트 노드의 접두어 필드는 "Y/"로 원래 시작해야 하고, 원하는 새 트리 S'는 "루트 노드의 접두어 필드를 Z/"로 단순히 변경하여 얻어질 수 있다.
이제 트리 T'으로 트리 S'을 삽입하는 단계를 논의하자면, 본 발명에서 사용되는 한 가지 관련있는 개념은 "엄격 삽입(strict insertion)"이다. B-트리 A의 B-트리 B로의 삽입은 A의 모든 키들이 B의 2개의 연속키들 간에 엄격하게 놓이면 엄격하다. 디렉토리를 재명명하는 경우에, T'으로의 S'의 삽입은 엄격하다. 이것은 원래 B-트리 T가 디렉토리를 재명명하여 생성된 연속키들의 범위에 속하는 키를 포함하지 않아야 하기 때문이고, 그렇지 않으면 재명명은 비합법적이고(그것이 기존 경로명과 충돌하므로), 허용되지 않아야 한다. 아래 기재되는 바와 같이, T'으로 S'의 삽입의 엄격성은 삽입 동작을 크게 단순화시킨다.
트리 T'으로의 트리 S'의 삽입은 도 7을 참조하여 아래와 같이 간략하게 요약될 수 있을 것이다. S'의 높이가 L이라고 가정한다. 이 삽입을 수행하기 위해, 프로그램은 우선 트리 S'의 루트가 삽입되어야 하는 트리 T'의 노드를 찾는다(단계(710)). 이를 위해, 프로그램은 S'으로부터 키들 중의 하나를 삽입하려는 것처럼 트리 T'을 워크다운하지만, 그것이 높이 L의 노드에 도달할 때 중지한다. 이 관점에서, 삽입이 엄격하므로, 프로그램이 S'으로부터의 키들 중의 어느 키를 선택하는지는 문제가 되지 않아서, 임의의 선택이라도 동일 경로에 이르도록 할 것이다. 그 다음, 프로그램은 S'의 루트 노드의 모든 키들을 그것이 방금 도달한 노드에 삽입한다(단계(720)). 거기에서부터, 프로그램은 S'으로부터의 키들 중의 하나를 삽입하려는 것처럼 트리 T'을 워크다운하기를 계속한다. 이 관점에서, 프로그램은 2개의 상이한 경로들, 최좌측(left-most) 경로와 최우측(right-most) 경로를 따라 트리 S'을 워크다운하여, T'의 동일 높이에 적합한 노드로부터의 적합한 키들을 부착시킨다(단계(730)). 각각의 레벨에서, 프로그램은 3개의 노드들, T' 노드, 좌측 S'노드, 및 우측 S' 노드와 동작한다. T'의 노드의 키들은 2개의 범주들, S'의 키들보다 작은 "소형" 키들 및 S'의 키들보다 큰 "대형" 키들에 속한다. 이들 3개의 노드들의 키들은 다음과 같이 다시 뒤섞인다: T'의 노드는 적출되고, 그것의 소형 키들은 좌측 S' 노드에 삽입되고, 그것의 대형 키들은 우측 S' 노드에 삽입된다. 이것은 삽입이 완료되는 지점인 트리의 종단점들에 이르기까지 각각의 레벨에서 수행된다. 다시 뒤섞기에 관련된 노드들 중의 다수는, 트리가 비균형임을 의미하는 오버-풀이나 언더-풀일 수 있다. B-트리 S'의 모든 키들이 B-트리 T'의 적합한 노드들에 삽입된 후에, 병합된 트리의 오버-풀 및/또는 언더-풀 노드들은 표준 B-트리 동작들로 쉽게 고정된다(단계(740)).
삽입을 구현하는 일 실시예의 상세한 단계들이 이제 기재된다. 프로그램은 currentNode = T'의 루트, currentLevel = T'의 높이, 및 L = S'의 높이로 설정하여 시작한다. currentNode의 내용은 p0v1p1v2p2...vkpk와 같이 표현된다. currentLevel > L인 동안, 프로그램은 vi < "Z/" < "Z/
Figure 112005019195239-PAT00013
" < vi+ 1와 같은 i를 찾는다. 그 다음, 프로그램은 currentNode = f(pi)와 currentLevel = currentLevel -1을 설정한다.
그 다음, 프로그램은 T'에 S'의 루트 노드를 삽입한다. S'의 루트 노드의 내용은 q0u1q1u2...ulql과 같이 표현된다. 프로그램은 우선 vi < "Z/" < "Z/
Figure 112005019195239-PAT00014
" < vi+1인 i를 찾고, 그 다음, 노드 내용이 다음식과 같도록 설정하여 현재 노드에 S'의 루트 노드로부터의 키들을 삽입한다:
p0v1p1...pi-1viq0u1q1u2...ulqlvi +1pr+1...vkpk
여기서, 포인터 pi는 오펀화되고, 추후 단계에서 그것이 가리키는 노드의 내용에 의해 구출될 것이다. 또한, curremtNode는 오버-풀이 될 수 있지만, 추후 단계에서 해결될 것이다.
그 다음, 프로그램은 S'의 최좌측과 최우측 노드들을 워크다운하여, T'의 동일 높이에 적합한 노드로부터의 적합한 키들을 부착시킨다. 이것은 다음 단계들에 서 성취된다. 우선, 프로그램은 SleftNode = f(q0), SrightNode = f(ql), 및 currentNode = f(pi)를 설정하여 두 개 트리들 모두에서 한 레벨을 워크다운한다. 여기서, SleftNode의 내용은 q0u1q1u2...ulql로 표현되고, SrightNode의 내용은 r0w1r1w2...wmrm로 표현된다. 그 다음, 프로그램은 currentNode가 종단 노드일 때까지 다음 3단계를 반복한다. 우선, 프로그램은 vi < "Z/" < "Z/
Figure 112005019195239-PAT00015
" < vi+1인 i를 찾는다. 키들 v1,..., vi는 소형 키들이라고 불리우고, 키들 vi+1,...,vk는 대형 키들이라고 불리운다. 프로그램은 노드 내용이 다음식이 되도록 설정하여 SleftNode에 소형 키들을 삽입한다.
p0v1...pi-1viq0u1q1u2...ulql
그 다음, 프로그램은 노드 내용이 다음식이 되도록 설정하여 SrightNode에 대형 키들을 삽입한다.
r0w1r1w2...wmrmvj +1pj +1...vkpk
프로그램이 이미 종단 노드에 있으면, 수학식 8과 수학식 9의 포인터들은 생략된다. 이들 단계들에서, pj가 수학식 8과 수학식 9에 나타나지 않으므로 오펀이 된다. 그럼에도 불구하고, 그 오펀의 내용은 수학식 8과 수학식 9를 생성하는 단계 들의 다음 반복에서 구출될 것이다.
그 다음, 프로그램은 currentNode의 모든 키들이 다른 곳에 저장되고 그것을 가리키는 노드가 더 이상 존재하지 않으므로 currentNode의 저장을 할당해제한다. 프로그램은 SleftNode = f(q0), SrightNode = f(rm), 및 currentNode = f(pi)로 설정하여 T'과 S' 트리들 모두에서 한 레벨을 워크다운하여 계속한다. 그 다음, 프로그램은 그것이 종단 노드들에 도달하기까지 While 루프를 반복한다.
T' 트리와 S' 트리가 병합된 후에, SleftNode, SrightNode, 및 그들의 조상들은 오버-풀이거나 언더-풀일 것이다. 병합된 트리 T"을 균형잡기 위해, 프로그램은 SleftNode로부터 시작하여 필요하면 각각의 노드를 분할하고 병합하며 트리를 워크업한다. 그 다음, 프로그램은 SrightNode로부터 시작하여 유사한 워크(walk)를 수행한다. 트리 T"이 적절히 균형이 잡힌 후에, 디렉토리의 재명명에 응답하여 파일 시스템의 B-트리를 수정하는 프로세스가 완료된다.
B-트리의 디렉토리 재명명의 동작을 수행하는 새롭고 효율적인 방법이 본 명세서에 개시되었음을 이해할 것이다. 본 발명의 원칙들이 적용될 수 있는 다수의 가능한 실시예들의 관점에서, 도면들에 대해 본 명세서에 기재된 실시예들은 설명을 위한 것일 뿐이고 본 발명의 범위를 제한하려는 의도로 받아들여져서는 안됨을 인식해야 한다. 예를 들어, 당업자들은 설명된 실시예들이 본 발명의 취지를 벗어나지 않고 배치와 세부사항에서 수정가능함을 인식할 것이다. 본 발명이 소프트웨어 모듈들이나 컴포넌트들의 형태로 기재되지만, 당업자들은 그런 것들이 하드웨어 컴포넌트들에 의해 동등하게 대체될 수 있음을 인식할 것이다. 그러므로, 본 명세서에 기재된 바와 같이 본 발명은 다음의 청구범위와 그것의 동등물의 범위 내에 속할 수 있는 모든 실시예들을 고려한다.
본 발명은 B-트리에서의 연속키들을 재명명하는 동작과 연결하여 계층적 네임스페이스를 나타내는 B-트리를 수정하는 방법을 제공한다. 본 발명의 방법은, O(log N)의 추정 시간 복잡도로, 매우 효율적이고, 여기서 N은 B-트리에서의 노드들의 수이다. 계층적 네임스페이스의 일 예는 파일 시스템이고, 디렉토리의 파일들과 서브디렉토리들의 이름을 수정하는 것을 포함하며, 재명명 동작은 파일 시스템에서 디렉토리를 재명명하기 위한 것이다. 본 발명의 방법의 효율성은 파일 시스템의 메타데이타를 저장하기 위해 B-트리 데이타 구조를 사용하는 것을 매우 실행가능하게 한다.

Claims (26)

  1. 저장된 복수 개의 키들을 갖는 원래의 B-트리에서 연속키들의 범위의 값들을 변경시키는 방법으로서,
    상기 원래의 B-트리로부터의 상기 연속키들의 범위를 적출하는(excising) 단계 -상기 연속키들의 범위의 적출은 상기 원래의 B-트리를 트림 트리(trimmed tree)로 변환시킴-;
    추출 트리(extracted tree)를 형성하기 위해 상기 B-트리로부터 적출된 상기 연속키들의 범위를 저장하는 단계;
    수정된 추출 트리를 형성하기 위해 상기 추출 트리의 상기 키들의 값들을 변경하는 단계; 및
    최종 B-트리를 형성하기 위해 상기 트림 트리에 상기 수정된 추출 트리를 삽입하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 원래 B-트리는 계층적 네임스페이스(hierarchical namespace)를 나타내는 방법.
  3. 제2항에 있어서, 상기 원래 B-트리는 파일 시스템의 계층적 네임스페이스를 나타내고, 상기 연속키들의 상기 범위는 상기 파일 시스템의 디렉토리에 속하고, 상기 연속키들의 범위의 값들의 변경은 재명명되는 상기 디렉토리와 연결되는 방법.
  4. 제3항에 있어서, 상기 원래 B-트리의 각각의 키는 상기 디렉토리의 재명명 전에 상기 파일 시스템의 파일이나 디렉토리에 대한 경로명을 포함하는 방법.
  5. 제1항에 있어서, 상기 삽입 단계 전에 상기 트림 트리를 균형잡는 단계를 포함하는 방법.
  6. 제1항에 있어서, 상기 삽입 단계는 상기 최종 B-트리를 균형잡는 단계를 포함하는 방법.
  7. 제1항에 있어서, 상기 변경 단계는 상기 추출 트리의 루트 노드의 접두어 필드를 변경시키는 단계를 포함하는 방법.
  8. 제1항에 있어서, 상기 트림 트리에 상기 수정된 추출 트리를 삽입하는 단계는 엄격 삽입(strict insertion)과 관련되는 방법.
  9. 저장된 복수 개의 키들을 갖는 원래 B-트리의 연속키들의 범위의 값들을 변경시키는 단계들을 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가 능 매체로서,
    상기 원래 B-트리로부터 상기 연속키들의 범위를 적출하는 단계 -상기 연속키들의 범위의 상기 적출은 상기 원래 B-트리를 트림 트리로 변환시킴-;
    추출 트리를 형성하기 위해 상기 B-트리로부터 적출된 상기 연속키들의 범위를 저장하는 단계;
    수정된 추출 트리를 형성하기 위해 상기 추출 트리의 키들의 값들을 변경하는 단계; 및
    최종 B-트리를 형성하기 위해 상기 트림 트리에 상기 수정된 추출 트리를 삽입하는 단계를 포함하는 컴퓨터 판독가능 매체.
  10. 제9항에 있어서, 상기 원래 B-트리는 계층적 네임스페이스를 나타내는 컴퓨터 판독가능 매체.
  11. 제10항에 있어서, 상기 원래 B-트리는 파일 시스템의 계층적 네임스페이스를 나타내고, 상기 연속키들의 범위는 상기 파일 시스템의 디렉토리에 속하고, 상기 연속키들의 범위의 값들의 변경은 재명명되는 상기 디렉토리와 연결되는 컴퓨터 판독가능 매체.
  12. 제11항에 있어서, 상기 원래 B-트리의 각각의 키는 상기 디렉토리의 재명명 전에 상기 파일 시스템의 파일이나 디렉토리에 대한 경로명을 포함하는 컴퓨터 판 독가능 매체.
  13. 제9항에 있어서, 상기 삽입 단계 전에, 상기 트림 트리와 추출 트리를 균형잡는 단계를 수행하는 컴퓨터 실행가능 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
  14. 제9항에 있어서, 상기 삽입 단계는 상기 최종 B-트리를 균형잡는 단계를 포함하는 컴퓨터 판독가능 매체.
  15. 제9항에 있어서, 상기 변경 단계는 상기 추출 트리의 루트 노드의 접두어 필드를 변경하는 단계를 포함하는 컴퓨터 판독가능 매체.
  16. 제9항에 있어서, 상기 트림 트리에 상기 수정된 추출 트리를 삽입하는 상기 단계는 엄격 삽입과 관련되는 컴퓨터 판독가능 매체.
  17. 파일 시스템의 디렉토리를 재명명하는 것과 연결하여 상기 파일 시스템을 나타내는 B-트리를 수정하는 방법으로서,
    상기 B-트리로부터 재명명된 상기 디렉토리의 키들을 적출하는 단계 -상기 디렉토리의 상기 키들의 적출은 상기 B-트리를 트림 트리로 변환함-;
    추출 트리에 상기 B-트리로부터 적출된 상기 디렉토리의 상기 키들을 저장하 는 단계;
    상기 디렉토리의 새 이름을 반영하기 위해 상기 추출 트리의 상기 키들의 값들을 변경하는 단계; 및
    최종 B-트리를 형성하기 위해 상기 트림 트리에 상기 키들의 변경된 값들을 갖는 상기 추출 트리를 삽입하는 단계
    를 포함하는 방법.
  18. 제17항에 있어서, 상기 B-트리의 각각의 키는 상기 파일 시스템의 파일이나 디렉토리에 대한 경로명을 포함하는 방법.
  19. 제17항에 있어서, 상기 삽입 단계 전에 상기 트림 트리를 균형잡는 단계를 포함하는 방법.
  20. 제17항에 있어서, 상기 삽입 단계는 상기 최종 B-트리를 균형잡는 단계를 포함하는 방법.
  21. 제17항에 있어서, 상기 추출 트리의 상기 키들의 상기 값들을 변경시키는 단계는 상기 추출 트리의 루트 노드의 접두어 필드를 변경시키는 단계를 포함하는 방법.
  22. 파일 시스템에서 디렉토리를 재명명하는 것과 연결하여 상기 파일 시스템을 나타내는 B-트리를 수정하는 단계들을 수행하는 컴퓨터 판독가능 명령어들을 갖는 컴퓨터 판독가능 매체로서,
    상기 B-트리로부터 재명명되는 상기 디렉토리의 키들을 적출하는 단계 -상기 디렉토리의 상기 키들의 적출은 상기 B-트리를 트림 트리로 변환함-;
    추출 트리에 상기 B-트리로부터 적출된 상기 디렉토리의 상기 키들을 저장하는 단계;
    상기 디렉토리의 새 이름을 반영하기 위해 상기 추출 트리의 상기 키들의 값들을 변경시키는 단계; 및
    최종 B-트리를 형성하기 위해 상기 트림 트리에 상기 키들의 변경된 값들을 갖는 상기 추출 트리를 삽입하는 단계
    를 포함하는 컴퓨터 판독가능 매체.
  23. 제22항에 있어서, 상기 B-트리의 각각의 키는 상기 파일 시스템의 파일이나 디렉토리에 대한 경로명을 포함하는 컴퓨터 판독가능 매체.
  24. 제22항에 있어서, 상기 삽입 단계 전에 상기 트림 트리와 추출 트리를 균형잡는 단계를 수행하는 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체.
  25. 제22항에 있어서, 상기 삽입 단계는 상기 최종 B-트리를 균형잡는 단계를 포 함하는 컴퓨터 판독가능 매체.
  26. 제22항에 있어서, 상기 추출 트리의 상기 키들의 값들을 변경시키는 단계는 상기 추출 트리의 루트 노드의 접두어 필드를 변경시키는 단계를 포함하는 컴퓨터 판독가능 매체.
KR1020050030694A 2004-04-14 2005-04-13 B-트리의 연속키들을 재명명하는 방법 및 시스템 KR20060045659A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/823,870 US7483906B2 (en) 2004-04-14 2004-04-14 Method and system for renaming consecutive keys in a B-tree
US10/823,870 2004-04-14

Publications (1)

Publication Number Publication Date
KR20060045659A true KR20060045659A (ko) 2006-05-17

Family

ID=34939139

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050030694A KR20060045659A (ko) 2004-04-14 2005-04-13 B-트리의 연속키들을 재명명하는 방법 및 시스템

Country Status (5)

Country Link
US (1) US7483906B2 (ko)
EP (1) EP1587006A3 (ko)
JP (1) JP2005302038A (ko)
KR (1) KR20060045659A (ko)
CN (1) CN1691016A (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940345B2 (en) * 2007-01-10 2018-04-10 Norton Garfinkle Software method for data storage and retrieval
EP2507708B1 (en) * 2009-12-04 2019-03-27 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
CN102024020B (zh) * 2010-11-04 2013-02-06 曙光信息产业(北京)有限公司 一种分布式文件系统中高效的元数据访存方法
US9104713B2 (en) 2011-10-05 2015-08-11 International Business Machines Corporation Managing a temporal key property in a database management system
US8965849B1 (en) * 2012-08-06 2015-02-24 Amazon Technologies, Inc. Static sorted index replication
US9323771B2 (en) 2013-04-24 2016-04-26 Dell Products, Lp Efficient rename in a lock-coupled traversal of B+tree
US9400819B2 (en) 2013-06-07 2016-07-26 Dell Products, Lp Updating object attributes in a lock-coupled namespace traversal
US10496611B1 (en) * 2015-03-20 2019-12-03 EMC IP Holding Company LLC Method and system for file name based command execution in a storage system
US10929419B2 (en) 2015-09-25 2021-02-23 Netapp, Inc. Object storage backed file system
US11334540B2 (en) * 2015-09-25 2022-05-17 Netapp, Inc. Namespace hierarchy preservation with multiple object storage objects
US20180181581A1 (en) * 2016-12-23 2018-06-28 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Systems and methods for implementing object storage and fast metadata search using extended attributes
US10585860B2 (en) 2017-01-03 2020-03-10 International Business Machines Corporation Global namespace for a hierarchical set of file systems
US10657102B2 (en) 2017-01-03 2020-05-19 International Business Machines Corporation Storage space management in union mounted file systems
US10649955B2 (en) 2017-01-03 2020-05-12 International Business Machines Corporation Providing unique inodes across multiple file system namespaces
US10592479B2 (en) 2017-01-03 2020-03-17 International Business Machines Corporation Space management for a hierarchical set of file systems
US10579598B2 (en) 2017-01-03 2020-03-03 International Business Machines Corporation Global namespace for a hierarchical set of file systems
US10579587B2 (en) 2017-01-03 2020-03-03 International Business Machines Corporation Space management for a hierarchical set of file systems
US20180189124A1 (en) * 2017-01-03 2018-07-05 International Business Machines Corporation Rebuilding the namespace in a hierarchical union mounted file system
US10649959B2 (en) * 2017-09-27 2020-05-12 Vmware, Inc. Write-optimized nested trees

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5689706A (en) * 1993-06-18 1997-11-18 Lucent Technologies Inc. Distributed systems with replicated files
CA2117846C (en) * 1993-10-20 2001-02-20 Allen Reiter Computer method and storage structure for storing and accessing multidimensional data
US5619693A (en) * 1994-05-02 1997-04-08 Tandem Computers Incorporated Method for sorting and storing data employing dynamic sort tree reconfiguration in volatile memory
US5832487A (en) * 1994-12-15 1998-11-03 Novell, Inc. Replicated object identification in a partitioned hierarchy
DE69624359D1 (de) * 1995-07-20 2002-11-21 Novell Inc Transaktionslogverwaltung in einem netz abtrennbarer rechner
US6208999B1 (en) 1996-12-12 2001-03-27 Network Associates, Inc. Recoverable computer file system with a signature area containing file integrity information located in the storage blocks
JP2000132433A (ja) * 1998-10-23 2000-05-12 Matsushita Electric Ind Co Ltd 可変長の電子データを管理する方法及び装置
US6675157B1 (en) * 1999-11-01 2004-01-06 International Business Machines Corporation System and method for balancing binary search trees
US7103838B1 (en) * 2000-08-18 2006-09-05 Firstrain, Inc. Method and apparatus for extracting relevant data
US7185013B2 (en) * 2001-04-12 2007-02-27 International Business Machines Corporation Method for constructing and caching a chain of file identifiers and enabling inheritance of resource properties in file systems
US6757678B2 (en) * 2001-04-12 2004-06-29 International Business Machines Corporation Generalized method and system of merging and pruning of data trees
US6697818B2 (en) * 2001-06-14 2004-02-24 International Business Machines Corporation Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database
JP3773426B2 (ja) * 2001-07-18 2006-05-10 株式会社日立製作所 データマイニングにおける前処理方法及び前処理システム
US6944818B2 (en) * 2001-09-10 2005-09-13 Xerox Corporation Method and apparatus for the viewing and exploration of the content of hierarchical information
US6694323B2 (en) * 2002-04-25 2004-02-17 Sybase, Inc. System and methodology for providing compact B-Tree
US7849112B2 (en) * 2003-09-03 2010-12-07 Emc Corporation Using a file handle for associating the file with a tree quota in a file server
US8180802B2 (en) * 2003-09-30 2012-05-15 International Business Machines Corporation Extensible decimal identification system for ordered nodes

Also Published As

Publication number Publication date
CN1691016A (zh) 2005-11-02
US7483906B2 (en) 2009-01-27
EP1587006A2 (en) 2005-10-19
EP1587006A3 (en) 2006-11-08
US20050234951A1 (en) 2005-10-20
JP2005302038A (ja) 2005-10-27

Similar Documents

Publication Publication Date Title
KR20060045659A (ko) B-트리의 연속키들을 재명명하는 방법 및 시스템
Gagie et al. Optimal-time text indexing in BWT-runs bounded space
US6789094B2 (en) Method and apparatus for providing extended file attributes in an extended attribute namespace
US7516422B2 (en) Graphical display of hierarchical hardlinks to files in a file system
US9047330B2 (en) Index compression in databases
US20150302111A1 (en) Method and Apparatus for Constructing File System in Key-Value Storage System, and Electronic Device
US8412731B2 (en) File management method and system
US8161371B2 (en) Method and system for defining a heirarchical structure
JP4438448B2 (ja) 構造化文書表示処理装置、構造化文書表示方法、構造化文書表示プログラム
US6330567B1 (en) Searching system for searching files stored in a hard disk of a personal computer
US20070276848A1 (en) Apparatus and method for managing data
AU2021266178B2 (en) Custom metadata tag inheritance based on a filesystem directory tree or object storage bucket
US20090319478A1 (en) Method for improving the performance of a file system in a computing device
US8977657B2 (en) Finding lost objects in a file system having a namespace
US8510350B2 (en) Methods and apparatus for distinguishing files from one another in a file system in a computing environment
KR20060063653A (ko) 모호한 네임을 허용하는 컴퓨터 파일 시스템
CN106227830A (zh) 存储和读取文件的方法和装置
JP2007516487A (ja) 取り外し可能な記憶媒体に格納されたファイルに対してアプリケーションでアクセスする方法
EP2164005B1 (en) Content addressable storage systems and methods employing searchable blocks
EP0981096A1 (en) Searching system for searching files stored in a hard disc of a personal computer
KR20050087349A (ko) 리소스 관리를 위한 패키지 파일 포맷 및 리소스 관리 방법
KR20080069071A (ko) 개선된 파일 시스템과 이를 이용한 파일 관리 방법
CN108874820A (zh) 一种系统文件搜索方法
JP2007148566A (ja) データ書込装置及びデータ読出装置
JP2005346344A (ja) 部品情報表示方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid