JP2005302038A - Bツリー中の連続キーの名前を変更する方法およびシステム - Google Patents

Bツリー中の連続キーの名前を変更する方法およびシステム Download PDF

Info

Publication number
JP2005302038A
JP2005302038A JP2005116626A JP2005116626A JP2005302038A JP 2005302038 A JP2005302038 A JP 2005302038A JP 2005116626 A JP2005116626 A JP 2005116626A JP 2005116626 A JP2005116626 A JP 2005116626A JP 2005302038 A JP2005302038 A JP 2005302038A
Authority
JP
Japan
Prior art keywords
tree
key
directory
computer
keys
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2005116626A
Other languages
English (en)
Inventor
John P Maccormick
フィリップ マッコーミック ジョン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005302038A publication Critical patent/JP2005302038A/ja
Pending legal-status Critical Current

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(logN)で名前変更し、ここでNはBツリーのノードの数である効率的な方法を提供する。
【解決手段】 名前を変更される連続キーはすべて、最初に元のBツリーから削除されて、トリムBツリーを形成し、削除されたノードは、別個の一時的な抽出Bツリーに格納される。抽出Bツリー中のノードは次いで、名前を変更され、名前を変更された抽出Bツリーは、トリムBツリーに挿入されて、名前を変更されたキーを含む最終的なBツリーを形成する。
【選択図】 図3

Description

本発明は一般に、データを格納し組織化するコンピュータデータ構造に属し、より詳細には、階層状の名前空間を表すBツリーデータ構造に格納されているキーに対する名前変更操作に属する。
Bツリーとは、特にデータレコードがハードドライブなどの比較的遅い記憶媒体に格納されている場合、効率的なデータ取出しのために、データレコードの組織化用に設計された特殊な多分木データ構造である。Bツリー中の各ノードは、対応するデータレコード、およびそのノードの子ノードへのポインタを識別する多数のキーを格納する。ノードが格納し得るキーの数は、Bツリーの「オーダー」に依存する。オーダーがKのBツリーにおいて、各ノードは、Kから2K個のキーを含むべきである。より大きいKを使うと、Bツリーは、所与の1組のデータレコードに対して、高さ(すなわち、深さ)をより小さくすることができ、そうすることによって、所望のデータレコードを配置するのに必要とされ得るディスクアクセス回数を減らすことができる。
Bツリーデータ構造は、様々なタイプのデータの組織化に使うことができる。たとえば、Bツリー中のキーとして名前が格納される階層状の名前空間に対して、Bツリーを使うことができる。一例として、ファイルシステムのメタデータを格納するBツリーの使用が提案されている。この適用例において、Bツリーのキーは、各ファイルまたはディレクトリの完全パス名である。このようなデータ構造に対して、ほとんどのファイルシステム操作を効率的に実施することができる。それにも関わらず、重大な例外が、名前変更操作であった。ファイルシステムのディレクトリ名が変更されるとき、そのディレクトリ内のファイルおよびサブディレクトリに対応するBツリー中のノードすべてに対するキーは、それに応じて変更されなければならない。単純に名前変更操作を実施すると、名前を変更されるディレクトリ内のすべてのファイルまたはサブディレクトリに影響を与えることになり、非常に効率が悪くなり得る。従来の手法を用いた名前変更操作は非効率的だったので、Bツリーデータ構造は、ファイルシステムの管理に適さないと見なされていた。
上記のことを鑑みて、本発明は、Bツリー中の連続キーの名前変更操作に関連して、階層状の名前空間を表すBツリーを修正する方法を提供する。本発明によると、階層状の名前空間を表すBツリーに格納されている1組の連続キーの名前が変更されるとき、名前を変更されるキーがすべて、元のBツリーから削除され、別個の一時的な「抽出ツリー」に格納される。削除により、元のBツリーは、「トリム(trimmed)ツリー」となる。抽出ツリー中のキーは次いで、名前を変更され、名前を変更された抽出ツリーは、トリムツリーに挿入されて、名前を変更されたキーを有する、階層状の名前空間を表す最終的なBツリーを形成する。本発明の方法は非常に効率がよく、推定時間計算量はO(logN)であり、NはBツリー中のノードの数である。階層状の名前空間の例は、ファイルシステムであり、名前変更操作は、ファイルシステム内のディレクトリ名を変更することであり、ディレクトリ中のファイルおよびサブディレクトリの名前の修正を含む。本発明の方法の効率性により、Bツリーデータ構造を用いた、ファイルシステムのメタデータの格納が実行可能性の高いものとなる。
本発明の追加の特徴および利点が、添付の図面を参照して進められる、例示的な実施形態の以下の詳細な説明から明らかになるであろう。
添付の特許請求の範囲により本発明の特徴を具体的に定義するが、本発明、ならびにその利点は、以下の詳細な説明を添付の図面と併せ読むことによって最もよく理解されよう。
ファイルシステムなど、階層状の名前空間を表すBツリー中の1組の連続キーの名前変更を反映するようにBツリーを修正する方法およびシステムを、特定の実施形態を参照して説明する。本明細書に記載する方法およびシステムは例示に過ぎず、本発明の精神および範囲から逸脱することなく変形形態も可能であることが、当業者には容易に理解されよう。
本発明は、以下の詳細な説明を添付の図面と併せ読むと、より完全に理解されよう。本説明では、同じ番号は、本発明の様々な実施形態において同様の要素を指す。適切なコンピューティング環境において実施されるものとして、本発明を示す。そうすることが必要なわけではないが、パーソナルコンピュータによって実行される、プロシージャなどのコンピュータ実行可能命令という一般的な状況において、本発明を説明する。概して、プロシージャは、特定のタスクを実施しまたは特定の抽象データタイプを実装するプログラムモジュール、ルーチン、関数、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、本発明は、可搬型デバイス、マルチプロセッサシステム、およびマイクロプロセッサベースのまたはプログラム可能な家電製品などを含む他のコンピュータシステム構成を用いて実施できることが当業者には理解されよう。本発明は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクを実施する分散型コンピューティング環境でも実施することができる。分散型コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートメモリ記憶装置両方に配置することができる。コンピュータシステムという用語は、分散型コンピューティング環境において見ることができるような、コンピュータからなるシステムを指すのに使うことができる。
図1は、本発明を実施することができる、適切なコンピューティングシステム環境100の例を示す。コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に対するどのような限定を示唆することも意図していない。コンピューティング環境100は、例示的な動作環境100に示すどのコンポーネントまたはその組合せに関するどのような依存も要件も有していると解釈されるべきではない。少なくとも本発明の一実施形態は、例示的な動作環境100に示す各コンポーネントを含むが、本発明の、より典型的な別の実施形態では、必須でない一部または全部のコンポーネント、たとえば、ネットワーク通信に必要とされるもの以外の入力/出力デバイスは含まない。
図1を参照すると、本発明を実施する例示的なシステムは、汎用コンピューティングデバイスを、コンピュータ110の形で含む。コンピュータ110のコンポーネントは、処理装置120と、システムメモリ130と、システムメモリなど様々なシステムコンポーネントを処理装置120に結合するシステムバス121とを含むことができるが、それに限定されない。システムバス121は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスなどいくつかのタイプのバス構造のいずれでもよい。
コンピュータ110は通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスすることができるとともに揮発性媒体および不揮発性媒体、取外し可能媒体および固定式媒体両方を含む、使用可能などの媒体でもよい。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するためのどの方法でも技術でも実施される揮発性媒体および不揮発性媒体、取外し可能媒体および固定式媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは、所望の情報を格納するのに使うことができるとともにコンピュータ110によってアクセスすることができる他のどの媒体も含むが、それに限定されない。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、変調されたデータ信号、たとえば搬送波や他の移送機構として具体化し、どの情報配信媒体も含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するようにその特性の1つまたは複数が設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、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など、1つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク接続された環境において動作し、または動作するように適合可能である。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ピアデバイス、または他のネットワークノードでよく、通常、コンピュータ110に関連して上述した要素の一部または全部を含むが、図1にはメモリ記憶装置181のみを示してある。図1に示す論理接続は、LAN171およびWAN173を含むが、他のネットワークを含むこともできる。たとえば、本発明において、コンピュータ110は、データがそこから移行されているソースマシンを含むことができ、リモートコンピュータ180は、宛先マシンを含むことができる。ただし、ソースおよび宛先マシンは、ネットワークまたはそれ以外のものによって最初から接続される必要はなく、データは、ソースプラットフォームによる書込み、および宛先プラットフォームまたはプラットフォーム群による読出しが可能などの媒体によっても移行することができることに留意されたい。たとえば、このような媒体の非限定的な一例が、メモリ「キー」またはメモリ「スティック」と呼ばれることもあるポータブルフラッシュメモリ媒体である。他の非限定的な例を後で挙げる。
LAN環境において使われる場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続可能である。コンピュータ110は、モデム172、または、WAN173を介して通信を確立する他の手段も含む。モデム172は、内部にあっても外部にあってもよく、ユーザ入力インターフェース160または他の適切な機構によってシステムバス121に接続することができる。ネットワーク接続された環境では、コンピュータ110に関連して図示したプログラムモジュールまたはその一部は、リモートメモリ記憶装置に格納することができる。限定ではなく例として、図1では、リモートアプリケーションプログラム185を、メモリ装置181に常駐するものとして示す。図示したネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段も使うことができることが理解されよう。
図2に移ると、本発明は、名前空間の名前がBツリーのノードでキーとして格納される、階層状の名前空間を表すBツリーデータ構造において、連続キーの名前を変更する効率的な方法を対象とする。本明細書で使用する「連続キー」という用語は、所与のキー値の範囲内である、Bツリー中のすべてのキーを意味する。こうしたキーは、キーの値に基づいて順番通りにBツリーに格納されるが、キーが格納されるノードは、Bツリーの異なるレベルにあり得る。階層状の名前空間は、コンピュータ科学においてあらゆる所に存在する。階層状の名前空間の例は、たとえば、インターネット上でコンピュータの名称を探すドメインネームシステム(DNS)、ならびに企業ネットワーク上でエンティティの名前および属性を格納するのに使われるアクティブディレクトリなどを含む。アクティブディレクトリは、マイクロソフトコーポレーションの製品である。以下の説明において、階層状の名前空間はファイルシステムの名前空間であり、名前変更操作がファイルシステムのディレクトリ名を変更する実施形態に関連して、本発明を説明する。名前変更操作において、修正される連続キーの組は、ディレクトリ内でのファイルおよびサブディレクトリの名前を表す。ただし、本発明の方法は、ファイルシステムの名前変更に限定されず、階層状の名前空間を表すどのBツリー構造中の連続キーの名前も変更する広い適用範囲において使用できることが理解されよう。
図2に示すように、Bツリー200は、ルートノード210、1つまたは複数の中間レベルのノード220、および多数のリーフノード230を有するツリー構造でつながっている多数のノードをもつ。Bツリーは、Kという「オーダー」を有し、Kは、1または2以上であり得る整数である。数2Kは、各ノードがもち得る子ノードの最大数である。キーは、ファイルのキーシーケンス順を指すことができるように、たとえばアルファベット順という自然な順序をもつ。
本発明の一実施形態において、Bツリーは、ファイルシステムにおけるディレクトリおよびファイルのメタデータを格納するのに使われて、ディレクトリおよびファイルが迅速に位置決めされアクセスされることを可能にする。Bツリーのキーは、ファイルシステムの対応するファイルおよびサブディレクトリのフルパス名である。たとえば、Bツリー中のあるノードのキーは、A/MyDocuments/Letters/Letter1とすることができ、ここでLetter1は、Lettersというディレクトリ内のファイルであり、Lettersは、MyDocumentsというディレクトリにあり、MyDocumentsは、ディレクトリAにある。各ファイル取出しのためのディスクアクセス数を最少にするようにツリーを最適化するために、Bツリーは、Bツリー中の各ノードがN個のキーおよびN+1個のポインタをもつように「平衡(balanced)」しており、NはKから2Kの間である。各ノードのポインタおよびキーは、p...vの形で配列され、ここでpはi番目のポインタであり、vは、ノードのi番目のキーである。各ポインタは、(ノードがリーフノードである場合を除いて)独自のキーおよびポインタをもち得る子ノードをポイントする。ファイルシステムのディレクトリレベルは、ファイルシステムのディレクトリパスを格納するBツリーのノードレベルに対応しなくてよいことに留意されたい。
Bツリーによって表されるファイルシステム内のディレクトリ名が変更されると、ディレクトリのパス名ならびにそのディレクトリ内のサブディレクトリおよびファイルがすべて変更される。この場合、名前を変更されるべきディレクトリのファイルおよびサブディレクトリすべての名前は、Bツリー中の1組の連続キーを形成するが、キーは、ツリー構造の異なるレベルのノードに格納することができる。ディレクトリ名を変更した結果、新しいパス名用に多数の新しいキーが作成される。Bツリーから、古いパス名用の既存のキーを除去しなければならず、Bツリー中の適切な位置に新しいキーを追加しなければならない。本発明は、1組の連続キーの名前を変更するBツリーの修正を、推定時間計算量O(logN)で効率的に実施させる機構を提供し、NはBツリー中のノードの総数である。
Bツリー中の連続キーの名前を変更する、本発明の方法の概念を、ファイルシステムがBツリーで表され、名前変更操作がファイルシステム内のディレクトリ名の変更を伴う、図3〜5に示す実施形態を参照して説明する。図3において、Bツリー(Tで示す)は、ファイルシステム内のディレクトリ名が変更される前のファイルシステムを表す。ディレクトリ名を変更することによって作成された新しいキーを含むように元のBツリーTを修正するプロセスは、元のBツリーからの、2つの一時的なデータ構造の生成を伴う。2つの一時的なデータ構造は、従来の意味でのBツリーとほぼ同じだが、全く同じではない、ツリーと類似した構造である。具体的には、1つの一時ツリー(T’で示す)が、元のBツリーTから名前変更されるディレクトリのファイルおよびサブディレクトリ用のキーをすべて削除することによって生成される。この一時ツリーT’は、「トリムツリー」と呼ばれる。図3において、元のBツリーから削除されるキーを含むノードの部分は、説明のために分けて示して(hashed)ある。元のBツリーTから削除されたこうしたキーは、「抽出ツリー」と呼ばれる第2のツリーデータ構造(Sで示す)に格納される。
トリムツリーT’および抽出ツリーSは両方とも、過少(under−full)、すなわち、ノードがそれぞれ、少なくともK個のキーをもつことができないので、Bツリーの正規の定義を満たすことができない。本発明の目的のために、オーダーがKの「過少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”は、ディレクトリ名が変更された後のファイルシステムを表す。
次に、本発明の実施形態の命名プロセスを、たとえば図5を参照して高度な概念レベルで要約する。説明しやすくするために、「Y」という名前のディレクトリが、「Z」に名前変更されるものと仮定する。Bツリーの修正は、最初に、「Y/」で始まるすべてのキーをBツリーTから除去する。この例では、ディレクトリコンポーネントは、特殊文字「/」で区切られると仮定する。ディレクトリのキーを除去すると、元のBツリーTは、過少であり得る新しいBツリーT’になり、除去されたキーは、過少であり得る別の新しいBツリーSに格納される(ステップ510)。抽出ツリーS中のキーは次いで、「Y/」ではなく「Z/」という接頭辞をもつように変更される。その結果、過少であり得るBツリーS’が生じる(ステップ520)。その後、修正された抽出ツリーS’がトリムツリーT’に挿入されて、名前を変更されたディレクトリをもつファイルシステムを表す、新しいBツリーT”を形成する(ステップ530)。図5のこうした3つのステップをそれぞれ、後でより詳細に述べる。
次に、図6を参照して削除操作を詳しく説明する。最初に、ディレクトリYの名前変更は、以下の範囲クエリを満たすすべてのキーνに影響を与えることに留意されたい。
「Y/」≦ν≦「Y/∞」 (1)
上式で、記号「∞」は、キーの作成に使われる英数字記号の組の中のすべての文字より大きくなるように定義された特殊文字である。(1)の範囲クエリを満たすキーがすべて、元のBツリーTから削除され、新しいツリーS中に置かれる。
Bツリー中での名前変更を扱う、コンピュータプログラムによって実施される削除プロセスは概して、以下のように説明することができる。名前変更プログラムは、元のBツリーTを下り、範囲クエリを満たすキーを探し、たとえばレベルLで、このようなキーを含むノードを見つけると止まる(ステップ610)。プログラムは、このノードにある、範囲内に収まるキーすべておよびキーの間のポインタを除去し、新しいノード、すなわちSにおいてレベルLとなるように定義される、抽出ツリーSのルートノードに配置する(ステップ620)。プログラムは次いで、ツリーT中の現在のノードから、2つの別個のパスに沿ってツリーTを下る。第1のパスは「Y/」に続き、第2のパスは「Y/∞」に続く。訪れたすべてのノードで、そのノードにある範囲内キーがすべて削除され、キーが除去されたTの同じレベルにある、ツリーSの新しいノードに置かれる。新しいノードの親は、T中のパスを下る際にツリーS中の直前のレベルで作成されたノードである(ステップ630)。プログラムは、2つのパスそれぞれに沿ってリーフノードに到達するまで継続する。その時点で、プログラムは、2つの一時ツリーT’およびS中のすべての過少および過剰ノードを調整する(ステップ640)。
一実施形態で実装される、削除操作の詳細なステップを次に説明する。範囲内キーを含む最上位ノードを見つけるために、プログラムは、変数currentNodeをTのルートに設定する。currentNodeの内容は、p...vと示すことができる。これは、currentNodeとして識別されるノードがk個のキーv、v、...、vを含み、そのノードのk+1個の子ポインタがp、p、p、...、pであることを意味する。ポインタpに従うことによって得られるノードは、f(p)と示される。currentNode中のどのキーも(1)の範囲クエリを満たさない場合、プログラムは、v<「Y/」<「Y/∞」<vi+1となるようなiを見つけ、currentNode=f(p)と設定する。プログラムは次いで、currentLevelをcurrentNodeの高さに設定する。高さは、高さが1である、Bツリーのリーフからカウントされる。
プログラムは、元のBツリーTにおいて範囲クエリを満たすキーを含むノードを見つけると、抽出ツリーSのルートノードを作成する。そのようなノードを見つけるために、プログラムは、v<「Y/」≦vi+1となるようなi、およびv<「Y/∞」<vj+1となるようなjを見つける。プログラムは次いで、currentNodeの内容を
...pi−1j+ij+l...v (2)
となるように設定することによって、currentNodeから範囲内キーを削除する。currentNodeは、そのキーのいくつかが除去された結果、過少になり得ることに留意されたい。この問題は、後で説明するように、後のステップで対処される。
プログラムは次いで、新しい(過少であり得る)BツリーSの新しいノードSrootNodeを作成し、このノードに、currentNodeから削除されたキーおよびポインタからなる、以下の内容を与える。
i+1i+1...pj−1 (3)
この組合せは、最初および最後の子ポインタが欠けているので、まだ有効なBツリーノードではないことに留意されたい。こうした2つのポインタは、最初の子ポインタを新規作成ノード、すなわちSleftNodeのアドレスに設定し、最後の子ポインタを別の新規作成ノード、すなわちSrightNodeのアドレスに設定することによって追加される。SrootNodeは過少であり得るが、構成によってSは過少Bツリーでよいので、それに対するアクションは行われないことに留意されたい。また、currentNodeの元の内容全体が、pを除いて(2)または(3)のどちらかに保存されており、この保存は意図的である。現時点で親のないノードf(p)は、後のステップで救済され、f(p)とマージされる。
名前変更プログラムは次いで、BツリーTの範囲内ノードの左および右側の境界を下り、T中で見つかった範囲内キーをツリーSに転送する。その目的のために、プログラムは、currentLeftNode=f(p)と設定し、currentRightNode=f(p)と設定する。プログラムはさらに、currentLevel=currentLevel−1と設定する。currentLeftNodeの内容は、q...uで示され、currentRightNodeの内容は、r...wで示される。currentLevel≧1である間、プログラムは、u<「Y/」≦ui+1となるようなiを見つけ、w≦「Y/∞」<wj+1となるようなjを見つける。プログラムは次いで、currentLeftNodeおよびcurrentRightNodeから範囲内キーを削除し、currentLeftNodeの内容を
...qi−1r+1j+1...w (4)
となるように設定することによって、残りのすべてのキーをcurrentLeftNodeに転送する。currentLevel=1の場合、プログラムはリーフノードの所におり、子ポインタすべてが(4)から省かれる。currentLeftNodeは、2つの欠乏したノードをマージした結果なので、現時点で過剰または過少であり得るが、この時点では、この平衡していないという問題に対処する対策はとられないことに留意されたい。
プログラムは次いで、SleftNodeの内容を
i+1i+1...ql−1 (5)
となるように設定することによって、currentLeftNodeから削除された範囲内キーをSleftNodeに転送する。この組合せは、最初の子ポインタをもたないので、まだ有効なBツリーノードではない。このことは、newSleftNodeと呼ばれる新しいノードを作成し、最初の子ポインタをそのアドレスに設定することによって調整される。プログラムはまた、SrightNodeの内容を
...rj−1 (6)
となるように設定することによって、currentRightNodeから削除された範囲内キーをSrightNodeに転送する。この組合せは、最後の子ポインタをもたないので、まだ有効なBツリーノードではない。このことは、newSrightNodeと呼ばれる新しいノードを作成し、最後の子ポインタをそのアドレスに設定することによって調整される。やはり、SrightNodeは過少であり得るが、Sは構成によって過少となることが認められているので、それに対するアクションはとられない。currentLeftNodeおよびcurrentRightNodeのすべてのポインタおよびキーは、rを除いて厳密に式(4)、(5)、および(6)の1つとして現れることに留意されたい。これは、意図したものである。すなわち、親のないノードf(r)は、次の反復において式(4)を生成するステップで、f(q)とマージされる。プログラムは次いで、currentRightNode用の記憶域を割振り解除(de−allocate)する。というのは、このノードのキーはすべて、他の所に格納されており、このノードをポイントしているものはないからである。currentLevel>1の場合、プログラムは、currentLeftNode=f(q)、currentRightNode=f(r)、およびcurrentLevel=currentLevel−1と設定することによって、下のレベルに降りていく。プログラムは次いで、Whileループが終わるまで、上記のステップを繰り返す。
このとき、プログラムは、すべての過少および過剰ノードを上述したように調整する。調整のために、プログラムは、ツリーをそれぞれcurrentLeftNodeから上に戻り、必要に応じて標準Bツリーの分割またはマージ操作を適用する。このプロセスにおいて、プログラムは、適正サイズのノードに到達しても、その上位ノードが過少または過剰であるかもしれないので、停止しない。
2つの中間ツリーT’およびSが生成された後、プログラムは、変更されたディレクトリ名を反映するように、抽出ツリーS中のキーの名前を変更する。上述したように、操作の全体としての目標は、ディレクトリ「Y」を「Z」に名前変更することである。上述した詳細なステップは、図5に示す方針のステップ1を実施するためである。すなわち、「Y/」で始まるキーをすべて、元のBツリーTから削除し、削除したキーを、過少であり得るBツリーSに配置する。高水準方針のステップ2は、「Y/」ではなく「Z/」で始まるようにSのキーを変えて、新しいツリーS’を得ることである。
好ましい実施形態では、S中のキーの修正は、キーに共通接頭辞を格納しないBツリーを使うことによって、非常に簡単に行われる。このような配置の場合、各ノードは、ノード中のキーすべての共通接頭辞を含む別個のフィールドをもち、キーは、異なる接尾辞のみを格納する。接頭辞フィールドは、親ノードに格納されている接頭辞を含まないので、所与のキーの添字用の、キーの完全な値は、キーの配置のために、ツリーのルートから開始して、訪れたすべてのノードの接頭辞を連結することによって得られることに留意されたい。このようなBツリーは、接頭辞Bツリーと呼ばれる。ツリーSが接頭辞ツリーの場合、キーが「Y/」ではなく「Z/」で始まるようにキー全体を変えることは非常に簡単である。というのは、ツリーSのルートノードの接頭辞フィールドは元々、「Y/」で始まらなければならないので、所望の新しいツリーS’は、ルートノードの接頭辞フィールドを「Z/」に単に変更するだけで得ることができるからである。
次に、ツリーT’にツリーS’を挿入するステップに移ると、本発明で使用する適切な概念は、「厳密な挿入(strict insertion)」である。BツリーBへのBツリーAの挿入は、Aのキーがすべて、厳密にBの中の2つの連続キーの間にある場合、厳密である。ディレクトリ名を変更する場合、T’へのS’の挿入は厳密である。というのは、元のBツリーTは、ディレクトリ名の変更によって作成された連続キーの範囲内であるキーを含むべきでなく、含む場合は、(既存のパス名と衝突するので)名前変更が不当であり、認められるべきでないからである。後で説明するように、T’へのS’の挿入の厳密性により、挿入操作が大幅に容易になる。
ツリーT’へのツリーS’の挿入は、図7を参照して以下のように簡潔に述べることができる。S’の高さをLとする。挿入を実施するために、プログラムは最初に、ツリーT’中で、ツリーS’のルートが挿入されるべきノードを見つける(ステップ710)。ノードを見つけるために、プログラムは、S’からキーの1つを挿入しようとするかのようにツリーT’を下っていくが、高さLのノードに達すると停止する。この点に関して、挿入は厳密であり、どの選択をしても同じパスにつながるので、S’からキーのどれをプログラムが選ぶかは問題ではない。プログラムは次いで、到達したノードに、S’のルートノードのキーをすべて挿入する(ステップ720)。このノードから、プログラムは、S’からキーの1つを挿入しようとするかのようにツリーT’を下り続ける。この点に関して、プログラムは、左端のパスおよび右端のパスという異なる2つのパスに沿ってツリーS’を下っていき、T’の同じ高さの適切なノードから適切なキーをペーストする(ステップ730)。各レベルで、プログラムは、T’ノード、左側のS’ノード、および右側のS’ノードという3つのノードに働きかける。T’中のノードにあるキーは、S’のキーより小さい「スモール」キー、およびS’のキーより大きい「ラージ」キーという2つのカテゴリに分けられる。こうした3つのノードにあるキーは、以下のように入れ替えられる。T’ノードが削除され、T’ノードのスモールキーが左側のS’ノードに挿入され、T’ノードのラージキーが右側のS’ノードに挿入される。この入替は、ツリーのリーフに及ぶ各レベルで行われ、リーフの所で挿入が完了する。入替に関わるノードの多くは、過剰または過少である可能性があり、その場合、ツリーは平衡していない。BツリーS’のキーがすべて、BツリーT’の適正ノードに挿入された後、マージされたツリーの過剰および/または過少ノードは、標準Bツリー操作を用いて容易に調整される(ステップ740)。
一実装形態における、挿入を実施する詳細なステップを次に説明する。プログラムは、currentNodeをT’のルートに、currentLevelをT’の高さに、LをS’の高さに設定することにより開始する。currentNodeの内容は、p...vと示される。currentLevel>Lの間、プログラムは、v<「Z/」<「Z/∞」<vi+1となるようなiを見つける。プログラムは次いで、currentNode=f(p)、およびcurrentLevel=currentLevel−1と設定する。
プログラムは次いで、S’のルートノードをT’に挿入する。ルートノードS’のS’の内容は、q...uと示される。プログラムは最初に、v<「Z/」<「Z/∞」<vi+1となるようなiを見つけ、次いで、現在のノードの内容を
...pi−1...ui+1r+1...v (7)
となるように設定することによって、S’のルートノードからのキーを現在のノードに挿入する。(7)において、ポインタpには親がないが、ポインタpがポイントするノードの内容は、後のステップで救済される。やはり、currentNodeは過剰になり得るが、後のステップで対処される。
プログラムは次いで、S’の左端および右端ノードを下っていき、T’の同じ高さの適切なノードから適切なキーをペーストする。これは、以下のステップによって遂行される。最初に、プログラムは、SleftNode=f(q)、SrightNode=f(q)、およびcurrentNode=f(p)と設定することによって、両方のツリーの中を1レベル下っていく。ここで、SleftNodeの内容はq...uで示され、SrightNodeの内容はr...wで示される。プログラムは次いで、currentNodeがリーフノードとなるまで、以下の3つのステップを繰り返す。最初に、プログラムは、v<「Z」<「Z/∞」<vi+1となるようなiを見つける。キーv、...、vはスモールキーと呼ばれ、キーvi+1、...、vはラージキーと呼ばれる。プログラムは、SleftNodeの内容を
...pi−1...u (8)
となるように設定することによって、SleftNodeにスモールキーを挿入する。プログラムは次いで、SrightNodeの内容を
...wj+1j+1...v (9)
となるように設定することによって、SrightNodeにラージキーを挿入する。プログラムが既にリーフノードの所にある場合、(8)および(9)中のポインタは省かれる。こうしたステップにおいて、pは(8)および(9)に現れないので、親をもたない。それにも関わらず、親をもたないpの内容は、(8)および(9)の式を生成するステップを次回繰り返す際に救済される。
プログラムは次いで、currentNode用の記憶域を割振り解除する。というのは、このノードのキーはすべて、他の所に格納されており、このノードを指しているノードはないからである。プログラムは、SleftNode=f(q)、SrightNode=f(r)、およびcurrentNodeをf(p)と設定することによって、T’およびS’両方のツリーを同じレベルで下り続ける。プログラムは次いで、リーフノードに到達するまでWhileループを繰り返す。
T’ツリーおよびS’ツリーがマージされた後、SleftNode、SrightNode、およびその上位ノードは、過剰または過少である場合がある。マージしたツリーT”を平衡させるために、プログラムは、SleftNodeから開始してツリーを上がっていき、必要な場合は各ノードを分割またはマージする。プログラムは次いで、SrightNodeから開始して同様にツリーを上がっていく。ツリーT”が適切に平衡された後、ディレクトリ名の変更に応答したファイルシステムのBツリー修正プロセスが完了する。
Bツリー中のディレクトリ名を変更する操作を実施する、新しく効率的な方法を本明細書で開示したことが理解されよう。本発明の原理を適用することができる多くの可能な実施形態を検討したが、図面に関連して本明細書において説明した実施形態は、例示のみを意図しており、本発明の範囲を限定するものととられるべきではないことを理解されたい。たとえば、本発明の精神から逸脱することなく、例示された実施形態を、構成および細部において変更し得ることが当業者には理解されよう。本発明は、ソフトウェアモジュールまたはコンポーネントによって説明したが、ハードウェアコンポーネントで同等に置き換えることができることが当業者には理解されよう。したがって、本明細書に記載した本発明は、このようなすべての実施形態が添付の請求項およびその均等の範囲内であり得ることを企図している。
本発明による、階層状の名前空間を表すBツリー中の連続キーの名前を変更する方法を実施する、コンピューティングデバイスの例示的なアーキテクチャを示す簡略化した概略図である。 名前を変更されるディレクトリのノードを有するファイルシステムに対して、本発明の実施形態で使用するBツリーを示す概略図である。 本発明の実施形態の方法において、名前を変更されるディレクトリのキーを削除することによって、元のBツリーからの、2つの中間ツリー構造の生成を示す概略図である。 本発明の実施形態の方法で形成される2つの中間ツリー構造からの、最終的なBツリーの構成を示す概略図である。 Bツリーデータ構造のディレクトリ名を変更する、本発明の実施形態の方法の高水準ステップを示すフロー図である。 図3の2つの中間ツリーを作成する削除操作を示すフロー図である。 図4の最終的なBツリーを作成するBツリー挿入操作を示すフロー図である。
符号の説明
120 処理装置
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 固定式不揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 取外し可能不揮発性メモリインターフェース
153 USBポート
154 USBフラッシュドライブ
157 SDカードスロット
158 SDカード
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
195 出力周辺インターフェース
196 プリンタ
197 スピーカ

Claims (26)

  1. 複数のキーを格納している元のBツリー中で、ある範囲の連続キーの値を変更する方法であって、
    前記元のBツリーから前記範囲の連続キーを削除するステップであって、前記範囲の連続キーの前記削除は、前記元のBツリーをトリムツリーに変換するステップと、
    前記Bツリーから削除された前記範囲の連続キーを格納して、抽出ツリーを形成するステップと、
    前記抽出ツリーの前記キーの前記値を変更して、修正された抽出ツリーを形成するステップと、
    前記修正された抽出ツリーを前記トリムツリーに挿入して、最終的なBツリーを形成するステップとを備えることを特徴とする方法。
  2. 前記元のBツリーは、階層状の名前空間を表すことを特徴とする請求項1に記載の方法。
  3. 前記元のBツリーは、ファイルシステムの階層状の名前空間を表し、前記範囲の連続キーは、前記ファイルシステムのディレクトリに属し、前記範囲の連続キーの前記値を変更する前記ステップは、名前を変更される前記ディレクトリに関連することを特徴とする請求項2に記載の方法。
  4. 前記元のBツリー中の各キーは、前記ディレクトリの名前を変更する前記ステップ以前の、前記ファイルシステムのファイルまたはディレクトリに対するパス名を含むことを特徴とする請求項3に記載の方法。
  5. 前記挿入するステップに先立って、前記トリムツリーを平衡させるステップを含むことを特徴とする請求項1に記載の方法。
  6. 前記挿入するステップは、前記最終的なBツリーを平衡させるステップを含むことを特徴とする請求項1に記載の方法。
  7. 前記変更するステップは、前記抽出ツリーのルートノードの接頭辞フィールドを変更するステップを含むことを特徴とする請求項1に記載の方法。
  8. 前記修正された抽出ツリーを前記トリムツリーに挿入する前記ステップは、厳密な挿入を伴うことを特徴とする請求項1に記載の方法。
  9. 複数のキーを格納している元のBツリー中で、ある範囲の連続キーの値を変更するステップを実施するコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記ステップは、
    前記元のBツリーから前記範囲の連続キーを削除するステップであって、前記範囲の連続キーの前記削除は、前記元のBツリーをトリムツリーに変換するステップと、
    前記Bツリーから削除された前記範囲の連続キーを格納して、抽出ツリーを形成するステップと、
    前記抽出ツリーの前記キーの前記値を変更して、修正された抽出ツリーを形成するステップと、
    前記修正された抽出ツリーを前記トリムツリーに挿入して、最終的なBツリーを形成するステップとを備えることを特徴とするコンピュータ可読媒体。
  10. 前記元のBツリーは、階層状の名前空間を表すことを特徴とする請求項9に記載のコンピュータ可読媒体。
  11. 前記元のBツリーは、ファイルシステムの階層状の名前空間を表し、前記範囲の連続キーは、前記ファイルシステムのディレクトリに属し、前記範囲の連続キーの前記値を変更する前記ステップは、名前を変更される前記ディレクトリに関連することを特徴とする請求項10に記載のコンピュータ可読媒体。
  12. 前記元のBツリー中の各キーは、前記ディレクトリの名前を変更する前記ステップ以前の、前記ファイルシステムのファイルまたはディレクトリに対するパス名を含むことを特徴とする請求項11に記載のコンピュータ可読媒体。
  13. 前記挿入するステップに先立って、前記トリムツリーおよび抽出ツリーを平衡させるステップを実施するさらなるコンピュータ実行可能命令を有することを特徴とする請求項9に記載のコンピュータ可読媒体。
  14. 前記挿入するステップは、前記最終的なBツリーを平衡させるステップを含むことを特徴とする請求項9に記載のコンピュータ可読媒体。
  15. 前記変更するステップは、前記抽出ツリーのルートノードの接頭辞フィールドを変更するステップを含むことを特徴とする請求項9に記載のコンピュータ可読媒体。
  16. 前記修正された抽出ツリーを前記トリムツリーに挿入する前記ステップは、厳密な挿入を伴うことを特徴とする請求項9に記載のコンピュータ可読媒体。
  17. ファイルシステム内のディレクトリの名前変更に関連して、前記ファイルシステムを表すBツリーを修正する方法であって、
    前記Bツリーから、名前変更される前記ディレクトリのキーを削除するステップであって、前記ディレクトリの前記キーの前記削除は、前記Bツリーをトリムツリーに変換するステップと、
    前記Bツリーから削除された前記ディレクトリの前記キーを、抽出ツリーに格納するステップと、
    前記抽出ツリーの前記キーの前記値を変更して、前記ディレクトリの新しい名前を反映させるステップと、
    前記キーの値が修正された前記抽出ツリーを前記トリムツリーに挿入して、最終的なBツリーを形成するステップとを含むことを特徴とする方法。
  18. 前記Bツリー中の各キーは、前記ファイルシステムのファイルまたはディレクトリに対するパス名を含むことを特徴とする請求項17に記載の方法。
  19. 前記挿入するステップに先立って、前記トリムツリーを平衡させるステップを含むことを特徴とする請求項17に記載の方法。
  20. 前記挿入するステップは、前記最終的なBツリーを平衡させるステップを含むことを特徴とする請求項17に記載の方法。
  21. 前記抽出ツリーの前記キーの前記値を変更する前記ステップは、前記抽出ツリーのルートノードの接頭辞フィールドを変更するステップを含むことを特徴とする請求項17に記載の方法。
  22. ファイルシステム内のディレクトリの名前変更に関連して、前記ファイルシステムを表すBツリーを修正するステップを実施するコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記ステップは、
    前記Bツリーから、名前を変更される前記ディレクトリのキーを削除するステップであって、前記ディレクトリの前記キーの前記削除は、前記Bツリーをトリムツリーに変換するステップと、
    前記Bツリーから削除された前記ディレクトリの前記キーを、抽出ツリーに格納するステップと、
    前記抽出ツリーの前記キーの前記値を変更して、前記ディレクトリの新しい名前を反映させるステップと、
    前記キーの値が修正された前記抽出ツリーを前記トリムツリーに挿入して、最終的なBツリーを形成するステップとを備えることを特徴とするコンピュータ可読媒体。
  23. 前記Bツリー中の各キーは、前記ファイルシステムのファイルまたはディレクトリに対するパス名を含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
  24. 前記挿入するステップに先立って、前記トリムツリーおよび抽出ツリーを平衡させるステップを実施するコンピュータ実行可能命令を有することを特徴とする請求項22に記載のコンピュータ可読媒体。
  25. 前記挿入するステップは、前記最終的なBツリーを平衡させるステップを含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
  26. 前記抽出ツリーの前記キーの前記値を変更する前記ステップは、前記抽出ツリーのルートノードの接頭辞フィールドを変更するステップを含むことを特徴とする請求項22に記載のコンピュータ可読媒体。
JP2005116626A 2004-04-14 2005-04-14 Bツリー中の連続キーの名前を変更する方法およびシステム Pending JP2005302038A (ja)

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
JP2005302038A true JP2005302038A (ja) 2005-10-27

Family

ID=34939139

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005116626A Pending JP2005302038A (ja) 2004-04-14 2005-04-14 Bツリー中の連続キーの名前を変更する方法およびシステム

Country Status (5)

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

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008085989A1 (en) * 2007-01-10 2008-07-17 Richard Garfinkle A software method for data storage and retrieval
KR101714108B1 (ko) * 2009-12-04 2017-03-08 크라이프토그라피 리서치, 인코포레이티드 검증가능 누출 방지 암호화 및 복호화
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
US10579598B2 (en) 2017-01-03 2020-03-03 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
US10592479B2 (en) 2017-01-03 2020-03-17 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
US10585860B2 (en) 2017-01-03 2020-03-10 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
US10649955B2 (en) 2017-01-03 2020-05-12 International Business Machines Corporation Providing unique inodes across multiple file system namespaces
US10649959B2 (en) * 2017-09-27 2020-05-12 Vmware, Inc. Write-optimized nested trees

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132433A (ja) * 1998-10-23 2000-05-12 Matsushita Electric Ind Co Ltd 可変長の電子データを管理する方法及び装置

Family Cites Families (17)

* 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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132433A (ja) * 1998-10-23 2000-05-12 Matsushita Electric Ind Co Ltd 可変長の電子データを管理する方法及び装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2005302038A (ja) Bツリー中の連続キーの名前を変更する方法およびシステム
US6789094B2 (en) Method and apparatus for providing extended file attributes in an extended attribute namespace
US20150302111A1 (en) Method and Apparatus for Constructing File System in Key-Value Storage System, and Electronic Device
US8255398B2 (en) Compression of sorted value indexes using common prefixes
US8321439B2 (en) Quick filename lookup using name hash
US9575770B2 (en) Method of graphical display of hierarchical hardlinks to files in a file system
AU2004279196B2 (en) System and method for managing data using static lists
WO2020211236A1 (zh) 基于b+树的读写冲突解决方法、装置及存储介质
WO2004023310A1 (ja) ネットワーク構造によるファイル管理方法、操作対象表示制限プログラムおよび記録媒体
WO2015134676A1 (en) Distributed consistent database implementation within an object store
WO2017151194A1 (en) Atomic updating of graph database index structures
CN104778192B9 (zh) 表示可内容寻址存储系统的目录结构
CN101178726A (zh) 数据文件解归档的方法和系统
CN111104377A (zh) 文件管理的方法、电子设备和计算机可读存储介质
US9971789B2 (en) Selective disk volume cloning for virtual disk creation
CN115427945A (zh) 基于文件系统目录树或对象存储桶的定制元数据标签继承
US20110107198A1 (en) Information processing apparatus, storage medium, and information processing method
US8977657B2 (en) Finding lost objects in a file system having a namespace
CN112800007B (zh) 适用于fat32文件系统的目录项扩展方法和系统
CN110297781B (zh) 一种基于写时复制来恢复apfs中被删除数据的方法
CN106227830A (zh) 存储和读取文件的方法和装置
JPH04260945A (ja) ファイル・アクセス装置及びファイル・アクセス方法
JP5783010B2 (ja) インデックス管理プログラム、インデックス管理装置及び検索システム
EP2164005B1 (en) Content addressable storage systems and methods employing searchable blocks
CN117349236B (zh) 文件读取方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110708