JP4351530B2 - リレーショナルデータベースシステム内の階層型データにアクセスするための効率的な索引構造 - Google Patents

リレーショナルデータベースシステム内の階層型データにアクセスするための効率的な索引構造 Download PDF

Info

Publication number
JP4351530B2
JP4351530B2 JP2003533164A JP2003533164A JP4351530B2 JP 4351530 B2 JP4351530 B2 JP 4351530B2 JP 2003533164 A JP2003533164 A JP 2003533164A JP 2003533164 A JP2003533164 A JP 2003533164A JP 4351530 B2 JP4351530 B2 JP 4351530B2
Authority
JP
Japan
Prior art keywords
index
access
node
path
user
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.)
Expired - Lifetime
Application number
JP2003533164A
Other languages
English (en)
Other versions
JP2005505059A (ja
JP2005505059A5 (ja
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
Priority claimed from US10/171,728 external-priority patent/US6571231B2/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2005505059A publication Critical patent/JP2005505059A/ja
Publication of JP2005505059A5 publication Critical patent/JP2005505059A5/ja
Application granted granted Critical
Publication of JP4351530B2 publication Critical patent/JP4351530B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

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

Description

関連出願
本願は、2002年5月28日にエリック・セドラー(Eric Sedlar)により出願され「リレーショナルシステムにおける階層索引の維持(Maintenance of Hierarchical Index in a Relational System)」と題された米国特許出願番号第10/171,728号(代理人事件番号第50277−1985号)の一部継続出願であり、これの内容はその全体においてここに引用により援用される。
本願は、1999年2月18日にエリック・セドラーにより出願され、「リレーショナルシステム内の階層型として組織された情報にアクセスするための階層的索引付け(Hierarchical Indexing for Accessing Hierarchically Organized Information in a Relational System)」と題された米国特許出願番号第09/251,757号、米国特許第6,427,123号(代理人事件番号第0288号)の一部継続出願であり、これの内容はその全体においてここに引用により援用され、かつこれは先に参照した米国特許出願番号第10/171,728号と同時係属である。
本願は、エリック・セドラーおよびビスワナサン・クリシュナマーシー(Viswanathan Krishnamurthy)による「データベースシステムで提供されるファイルベースのアクセス(File Based Access Provided With a Database System)」と題された、2001年9月28日出願の米国仮特許出願番号第60/326,052号の優先権を主張する。
本願は、ニプン・アガーウォル(Nipun Agarwal)、ラビ・マーシー(Ravi Murthy)、エリック・セドラー、シバサンカラン・チャンドラセカル(Sivasankaran Chandrasekar)、フェイ・ゲー(Fei Ge)、シアム・パンナラ(Syam Pannala)、ニーマ・ジャラリ(Neema Jalali)およびムラリドハル・クリシュナプラサド(Muralidhar Krishnaprasad)による「ファイルシステム抽出を提供するデータへのSQLアクセス(SQL Access to Data that Provides a File System Abstraction)」と題された、2002年5月7日出願の米国仮特許出願番号第60/378,800号の優先権を主張する。
本願はまた以下の米国特許出願に関連し、これらの内容全体はすべての目的についてここに引用により援用される。
ニプン・アガーウォル、ラビ・マーシー、エリック・セドラー、シバサンカラン・チャンドラセカルおよびフェイ・ゲーによる「リレーショナルシステムにおける階層型データにアクセスするための演算子(OPERATORS FOR ACCESSING HIERARCHICAL DATA IN A RELATIONAL SYSTEM)」と題された、同日出願の米国特許出願番号第 号(代理人事件番号第50277−1975号)、
ニプン・アガーウォル、エリック・セドラー、ラビ・マーシーおよびナミット・ジェイン(Namit Jain)による「リレーショナルデータの整合的な階層抽出の提供(PROVIDING A CONSISTENT HIERARCHICAL ABSTRACTION OF RELATIONAL DATA)」と題された、同日出願の米国特許出願第 号(代理人事件番号第50277−1976号)、
ラビ・マーシー、ムラリドハル・クリシュナプラサド、シバサンカラン・チャンドラセカル、エリック・セドラー、ビシュ・クリシュナマーシー(Vishu Krishnamurthy)およびニプン・アガーウォルによる「XMLスキーマをオブジェクト・リレーショナルデータベースシステムに対応付けるための機構(MECHANISM FOR MAPPING XML SCHEMAS TO OBJECT-RELATIONAL DATABASE SYSTEMS)」と題された、同日出願の米国特許出願番号第
(代理人事件番号第50277−1977号)、
ニプン・アガーウォル、エリック・セドラーおよびラビ・マーシーによる「バージョンによるデータをデータベースシステムで効率的に管理するための索引付け(INDEXING TO EFFICIENTLY MANAGE VERSIONED DATA IN A DATABASE SYSTEM)」と題された、同日出願の米国特許出願番号第 号(代理人事件番号第50277−1978号)、
ラビ・マーシー、エリック・セドラー、ニプン・アガーウォルおよびニーマ・ジャラリによる「階層型として組織されたリソースの内容およびプロパティを記憶するための機構(MECHANISMS FOR STORING CONTENT AND PROPERTIES OF HIERARCHICALLY ORGANIZED RESOURCES)」と題された、 に出願された米国特許出願番号第 号(代理人事件番号第50277−1979号)、
ラビ・マーシー、エリック・セドラー、ニプン・アガーウォル、サム・イディキュラ(Sam Idicula)およびニコラス・モントーヤ(Nicolas Montoya)による「データベースシステムにおける均一なアクセス制御のための機構(MECHANISM FOR UNIFORM ACCESS CONTROL IN A DATABASE SYSTEM)」と題された、同日出願の米国特許出願番号第 号(代理人事件番号第50277−1980号)、
シアム・パンナラ、エリック・セドラー、ブシャン・カラドカル(Bhushan Khaladkar)、ラビ・マーシー、シバサンカラン・チャンドラセカルおよびニプン・アガーウォルによる「XML文書のレイジー表明のためのロード可能ユニット(LOADABLE UNITS FOR LAZY MANIFESTATION OF XML DOCUMENTS)」と題された、同日出願の米国特許出願番号第 号(代理人事件番号第50277−1981号)。
発明の分野
この発明はリレーショナルデータベースシステムに関し、より特定的に、リレーショナルデータベースシステム内の階層型データを索引付けするための技術に関する。
発明の背景
人間には情報を範疇に従って組織するという性向がある。そして情報を組織するのに用いる範疇自体もまた、或る形の階層内で互いに関連させて組織されることが多い。たとえば個々の動物は或る種に属し、この種は属に属し、属は科に属し、科は目に属し、そして目は綱に属する、といった具合である。
コンピュータシステムの到来に伴い、電子情報を格納するための技術は、この階層型組織に対する人間の欲求を大部分反映するように開発されてきた。たとえば一般的に、従来のコンピュータファイルシステムは階層に基づく組織原理を用いて実現されている。具体的には、典型的なファイルシステムは階層内に配置されたディレクトリを有し、文書がこのディレクトリに格納される。ディレクトリ間の階層関係は、ディレクトリに割当てられた意味同士の或る直感的にわかる関係を反映していることが理想的である。同様に、各々の文書をディレクトリ内に格納する際、この文書の内容と、この文書が格納されるディレクトリに割当てられた意味との或る直感的にわかる関係に基づいていることが理想的である。
図1は典型的なファイルシステムの一例を示す。ここに例示するファイルシステムは階層内に配置された数多くのディレクトリを含む。2つの文書118,122がディレクトリ内に格納される。具体的には、文書118,122の両方とも“Example.doc”と名称を与えられてそれぞれディレクトリ116,124内に格納され、これらはそれぞれ“Word”および“App4”と名称を与えられている。
このディレクトリ階層において、ディレクトリ116は、“Windows”と名称を与えられたディレクトリ114の子であり、ディレクトリ114はディレクトリ110の子であ
る。同様に、ディレクトリ124は“VMS”と名称を与えられたディレクトリ126の子であり、ディレクトリ126はディレクトリ110の子である。ディレクトリ110は「根(root)」ディレクトリと称されるが、それはこのディレクトリからその他すべてのディレクトリが降りていくからである。多くのシステムでは根ディレクトリを参照するのに記号“/”が用いられる。
電子情報が階層内に組織される場合、各々の情報項目の場所を探し当てるには、「パス」に従って階層内を通り、この項目が入っている実体にたどり着くことになる。階層型ファイルシステムにおいては、或る項目に至るパスは根ディレクトリから始まってディレクトリ階層を下って進み、最終的に当該の項目が入っているディレクトリに到着する。たとえば、ファイル118へのパスは順にディレクトリ110,114,116から構成される。
階層型記憶システムでは、異なる項目が同一名称を有してもよいことが多い。たとえば、図1に示すファイルシステムでは、文書118と文書122とは両方とも“Example.doc”の名称が与えられている。したがって、所与の文書を一義的に識別するには文書の名称以上のものが必要である。
階層型記憶システムに格納された情報の特定の項目を識別しその場所を突き止める従来のやり方として「パス名」を使用することが挙げられる。パス名は、或る項目を、階層を通じてこの項目に至るパスに基づいて一意に識別する簡潔な方策である。パス名は、パス要素と称される一連の名称から構成される。ファイルシステムに関しては、一連の名称における各々の名称は「ファイル名」である。「ファイル名」という用語はディレクトリの名称と文書の名称との両方を指すが、それはディレクトリも文書も「ファイル」とみなされるからである。
ファイルシステム内では、所与のパス名における一連のファイル名は根ディレクトリの名称から始まり、根ディレクトリから当該の項目に至るパス上にあるディレクトリすべての名称を含み、当該の項目の名称で終わる。一般的には、探査するディレクトリのリストは、或る種の分離子(たとえば‘/’、‘\’または‘;’)によって互いに連結されてパス名をなす。したがって文書118についてのパス名は/Windows/Word/Example.docとなり、文書122についてのパス名は/VMS/App4/Example.docとなる。
ディレクトリ(ファイル)同士およびそこに入っている内容同士の関係は、階層型として組織されたシステムのタイプによって大幅に変わってくる。Windows(登録商標)およびDOSファイルシステムなどさまざまな実現例で採用される1つのモデルでは、各々のファイルは正しく1つの親を有して木をなすことが必要である。より複雑なモデルにおいては、階層は、ファイルに多数の親がある有向グラフの形をとり、これはたとえばハードリンクを使用するUNIX(登録商標)ファイルシステムに見られる。
電子情報を組織するための階層型の手法とは対照的に、リレーショナルデータベースでは情報は行および列からなる表(table)に格納される。各々の行は一意の行IDによって識別される。各々の列はレコードの属性を表わし、各々の行は特定のレコードを表わす。データをデータベースから検索するには、データベースを管理するデータベースサーバに問合せを提出する。問合せは、データベースサーバがサポートするデータベース言語に適合している必要がある。多くの既存のデータベース管理システムがサポートするデータベース言語の一例として構造化問合せ言語(SQL)がある。
記憶システムについての各々のタイプには利点と限界とがある。階層型として組織された記憶システムは単純で直感的にわかりやすく、かつ実現が容易であるため、ほとんどの
アプリケーションプログラムで用いられる標準的なモデルとなっている。しかし残念ながら、この単純な階層型組織では複雑なデータ検索動作に必要なサポートが得られない。たとえば、特定のファイル名を有する特定の日に作成された文書すべてを検索するには各々のディレクトリの内容を調べなければならないであろう。ディレクトリをすべて探索しなければならないので、階層型組織は検索プロセスを容易にするのに全く寄与していない。
一方、リレーショナルデータベースは大量の情報の記憶および極めて柔軟なデータアクセスによく適している。階層型として組織されたシステムに対して、リレーショナルデータベースシステムからは、複雑な探索基準に合致するデータも容易かつ効率的に検索され得る。しかし問合せを作成してデータベースに提出するプロセスは、階層をなすディレクトリを単に探査するよりも直感的にわかりにくく、多くのコンピュータユーザにとっての技術的な快適度の埒外である。
過去において、階層型として組織されたシステムとリレーショナル型として組織されたシステムとは、互いに相容れない異なるやり方で実現されていた。しかしながら、リレーショナル型として組織されたシステムのいくつかには、このシステムが階層型として組織されたシステムを模倣できるようにする機能が組込まれている。この種のエミュレーションは、リレーショナルシステムの記憶能力および柔軟性が必要でありかつ階層型システムの直感的なわかりやすさおよび遍在性が望まれる場合に特に望まれている。
このような機能としては、SQLにより定義されるCONNECT BY句に基づくものがある。CONNECT BY句によりユーザは、階層型組織に基づきデータを要求する問合せを発行することができる。データは階層型組織を反映するやり方でリレーショナルデータベースによって返される。CONNECT BYは、階層型組織が基づく階層関係を定義する条件を指定するために使用される。
しかしながら、CONNECT BY句を用いて問合せを作成することには欠点もある。第1に、このような問合せの処理には多数のJOIN演算の処理が伴うことがあるが、このプロセスはこの問合せを処理するデータベースサーバにとって多大なコストがかかるおそれがあるものである。さらに、CONNECT BY句の使用はより多くの負担をユーザに強いる。CONNECT BY句を問合せに組込むことで、そうでなくても複雑な作業である問合せの作成がさらに複雑になる。
したがって、リレーショナルデータベースシステムが階層型として組織されたシステムを模倣できるようにする機構であって、この種のエミュレーションについて従来の機構よりも効率的なやり方によるものを提供することが望まれている。さらに、この種のエミュレーションが、階層型として組織されたデータを要求しかつ返す問合せを作成する複雑さを軽減させるやり方で提供されることが望まれている。
添付の図面の各図においてこの発明を示すが、これは例示的なものであって限定的なものではない。図面においては同様の参照番号は同様の要素を指す。
発明の詳細な説明
リレーショナルデータベースシステム内に格納された階層型情報にアクセスするための方法および装置について説明する。以下の記載においては、この発明の完全な理解をもたらすために説明上数多くの特定の詳細について述べる。しかしながら、この発明はこれら特定の詳細なしに実施可能であることが明らかであろう。他の場合には、この発明を不必要に不明瞭にすることを避けるために、周知の構造および装置をブロック図の形で示す。
概観
リレーショナルデータベースシステムにより模倣された階層の階層関係を捕捉する階層索引の新たな実現法をここに記載する。この階層索引は、階層索引のエントリとなる行が入っているデータベース表を用いて実現される。もう1つの表には、この階層内のノードに関連付けられた行がある。階層索引内の各々のエントリは、階層内の或るノードに対応する行へ対応付けする。階層内のノードは、1つ以上の子ノードを有する親ノードであり得る。この場合、階層索引内の対応するエントリには索引内の他のエントリを識別する識別子が入っており、これら他のエントリは当該の親ノードの子ノードに関連付けられた行に対応する。
さらに、索引には、階層に関連付けられた行にユーザがどのようにアクセスできるかについての情報が入っている。この情報を用いることで、この索引が関わる演算を行なう間におけるユーザのアクセス権限を判定し、こうして演算と、アクセス権限の判定の作業との両方を全体的により効率的に行なうことが可能となる。
さらに、データベースサーバは階層索引を用いて、データベースサーバのサポートする在来の索引のように文を実行することができる。このようにサポートされ得る種類の文には、データ定義言語(DDL)文およびデータ操作言語(DML)文が含まれる。両方の種類の文がSQLなどのデータベース言語によって書かれる。
システム概観
図2は、この発明の実施例の理解を容易にするためにここに記載される例で用いられる階層200を例示するブロック図である。階層200は8個のノードを含む。階層内の最高のノードは「根」ノードと称される。階層内の各々の枝の端にあるノードは「葉」ノードである。根ノードと葉ノードとの間にあるノードは「中間」ノードである。ここに示す階層では、ノード1,2,3が中間ノードであり、ノード4,5,6,7は葉ノードである。
情報階層においてノードは情報に対応する。一般的に、各々のノードに関連付けられた1つの情報は或る形の名称および或るタイプの内容を有することになる。たとえば、階層型ファイルシステムに対応する階層では、一般的にノードはファイルに対応する(「フォルダ」または「ディレクトリ」はファイルの一種である)。各々のこのようなファイルは名称および或る形の内容を有する。
図3は、階層型データベースシステムにおける階層200を表現するのに用いられ得る2つの表302,350のブロック図である。表302は階層200内の各々のノードにつき1つの行を含む。行IDの擬似列である<R行ID>は、表302内の行を識別する行IDを有する。列<ノード>には、階層200内のノードを一意に識別する論理識別子(ここでは「ノードID」)が入っている。列<ノード>は主キー値が入っている主キーであり得る。列<データ>には、或るノードに関連付けられたデータを表わす値が入っている。表302内の所与のノードについての行は、この行の行IDと、このノードを識別するノードIDと、このノードに関連付けられたデータとを含む。たとえば、「行ID」のR1で識別される行304は、ノード1と、ノード1に関連付けられたデータ306と、その内容とに対応する。表302内の行をここではそのそれぞれの行IDで参照する。
表350は、階層200内の親子関係を各々定義する行を含む。<親>および<子>の列にはノード識別子が入っている。列<子名>には、階層200内の特定の親子関係についての子の「子名」が入っている。表350内の或る行により定義される特定の親子関係につき、列<親>には親ノードを識別するノードIDが入っており、列<子>には子ノードを識別するノードIDが入っており、<子名>にはこの特定の親子関係における当該の
子の子名が入っている。そのように行354および行356はそれぞれ、ノード1がノード2およびノード3の親であることを示す。行354において<子名>は、行354で表わされる親子関係におけるノード2の名称は“b”であることを指定する。
階層200では明示的に示さないが、ノードは階層内に多数の親を有し、これら親子関係の各々につき異なる子名を有することがある。たとえばノード4はノード1の子であって、この親子関係については子名Zを有することがあり得る。したがって、この親子関係で表わされるパスは“/a/Z”である。この親子関係を表わす表350の行について、<親>には1、<子>には4、および<子名>にはZが入っている。
子名はリンクプロパティの一例であり、すなわち親または子ではなくて親子関係に特有のプロパティである。別の実施例では、表350には他のリンクプロパティについての他の列が入っていることもある。たとえばリンクプロパティは、システムのアクセス局の最高レベルを有する者(たとえばシステム管理者)以外の者に親子関係が見えるかどうかを指定し得る。または、リンクプロパティは、親子関係が固定であり、すなわちエンドユーザによって変更不可能であると指定することもある。このような固定の親子関係についての表350内の行は変更される見込みが極めて低いため、揮発性メモリで半永久的にキャッシュされ得る。
階層索引
図4は、この発明の一実施例に従う表302および表350で表わされる階層200の階層関係を記述する階層索引402を示す。索引402は、多数の列および多数の行を含む表である。各々の行は索引エントリである。階層200内の各々の中間ノードにつき、索引402内のその対応するエントリは、中間ノードの子ノードの索引エントリと、この子ノードに対応する表302内の行とを識別する。索引402には葉ノードについてのエントリは入っていない。
索引402内の列<I行ID>は、索引402内の或るエントリを識別する行IDを有する行IDの擬似列である。列<ノードIDキー>には索引402についての主キー値が入っており、これらキー値は表302の列<ノード>におけるノードIDである。列<子ID>には複合IDの集合が入っており、各々の複合IDには、子ノードの子名と、もしあればこの子ノードに対応する索引402内のエントリを識別する行IDと、この子ノードに対応する表302内の行を識別する行IDとが入っている。子IDはたとえば「文字大バイナリオブジェクト(character large binary object)」のデータタイプの列として実現され得る。このデータタイプでは、所与のエントリにつき多くの複合IDを或る列に格納することができる。列<アクセス情報>には、ノードと、表302内のその対応する行とにアクセスするためのアクセス情報が入っている。
所与のノードと、索引402内のその対応するエントリとにつき、エントリには、所与のノードの子ノードに対応する索引402内の他のエントリを識別する複合IDが入っているが、これはこれら子ノードが中間ノードである場合に限られる。たとえばエントリ408では、列<ノードIDキー>にはノードID値1が入っている。したがってエントリ408はノード1に対応する。エントリ408内の<子ID>には複合ID{“b”,r2,R2}および{“c”,r3,R3}が入っており、これら複合IDは、それぞれ中間ノード2,3に各々が対応するエントリ412,414を識別する。ノード2はノード1の子である。複合ID{“b”,r2,R2}は、表302内の行R2が子ノード2に対応しその子名が“b”であると指定する。エントリ412では、<ノードIDキー>には値2が入っており、<子ID>には{“d”,,R4},{“e”,,R5}が入っている。複合ID{“d”,,R4}および{“e”,,R5}は索引402内のいずれのエントリも識別せず、対応する子ノードが葉ノードであることを示している。複合ID{
“d”,,R4}は、表402内の行R4に対応するノード、すなわちノード4を子ノードとして識別する。ノード4は葉ノードである。
表302,350および索引402は階層200の情報をリレーショナル形式で捕捉する。以下にこの発明のいくつかの実施例について、階層200、表302,350および索引402を参照した例を用いて説明するが、このような実施例は単に例示的なものである。リレーショナルデータベースシステムが階層についての情報を格納するやり方は実現例によって変わり得るため、この技術はいかなる特定の実現例にも限定されない。
索引の探査例
索引402を探査することにより、階層200内のノードの位置に基づいた要求に応答して階層200内のノードにアクセスできる。たとえば、パス“/a/b”で識別されるノードであるノード2の子ノードに関連付けられたデータを要求する問合せを発行する。このような問合せを作成するには、ニプン・アガーウォル、ラビ・マーシー、エリック・セドラー、シバサンカラン・チャンドラセカルおよびフェイ・ゲーによる「リレーショナルシステムにおける階層型データにアクセスするための演算子」と題された、同日出願の米国特許出願番号第 号(代理人事件番号第50277−1975号)に記載の演算子を用いることができる。子ノードを得るには、“a”の名称を有するノードに対応する索引エントリであるエントリ408にアクセスする。このパス内の次のノードに対応する索引402内のエントリは、エントリ408の列<子ID>内の複合IDを調べることで判定される。複合ID{“b”,r2,R2}はパス“/a/b”内の次のノードに合致する子名が入っており、エントリ412の行IDである行IDr2を識別する。次にエントリ412にアクセスする。エントリ412の<子ID>内の複合IDは{“d”,,R4}および{“e”,,R5}であり、これらは、子ノードとしてノード2に関連付けられた表302内の行、すなわち行R4,R5を識別する。行R4,R5はノード4,5に対応し、それぞれパス“/a/b/d”,“/a/b/f”で識別される。これら行へその行IDを用いてアクセスし、これら行内の要求されたデータを検索する。
多数の行IDを1つのセル内に格納する利益
索引402の利点として、或る親ノードの子ノードの表302内の行および索引エントリを識別するデータが1つのデータブロック内に常駐できることが挙げられる。データブロックはデータベースにより管理されるデータベースデータを格納するための記憶のアトミックな単位であり、静的記憶装置から揮発性メモリへロードされ得る粒度の最低のレベルでのデータの単位である。データブロックは静的記憶装置から揮発性メモリへロードされなければならないことがあるため、データブロックへのアクセスは多大なコストのかかる動作であり得る。データブロックにアクセスするプロセスについては、このプロセスの実行に必要なデータブロックの数を減少させることで大幅な効率性の向上が実現され得る。したがって、或る親ノードの子ノードの表302内の行および索引エントリを識別するのに必要なデータすべてを格納できれば、このデータを得るにはただ1つのデータブロックにアクセスするだけでよく、これは有利な特徴である。
この特徴は特に、「パス解決(path resolution)」または「パスを解決する」と呼ばれるプロセスで有利である。パス解決とは、或るパスによって1つ以上のどの実体が識別されるかを判断するために行なわれる1組の演算を指す。これは或るパスに基づく階層型として組織されたデータにアクセスするあらゆるシステムによって行なわれる一般的で重要な機能である。したがってその効率の向上は特に重要である。
たとえば、パス“/a/b”を解決するには、ノードaに対応する索引エントリであるエントリ408にアクセスする。エントリ408の<子ID>にある複合IDを評価し、これらがノードbについてのエントリを識別するr2を含んでいると判断する。こうして
パスは有効なノードを識別し、表302内の行R4が、パス“/a/b”を解決して得られるデータ構造である。
上述のように、パス“/a/b”の解決には、最後を除きパス内の各々のレベルにつき、1つの索引エントリおよび1つのデータブロックへアクセスすることが必要である。したがって、索引402を用いてパスを解決するためにアクセスされるデータブロックの数は、このパス内のレベルの数に線形比例する。
この線形比例が存在するのは、すべての子ノード索引エントリを識別するのに必要な行IDが1つのデータブロックに格納され得る場合であり、この条件はデータベースサーバに典型的に記憶される階層型として組織されたデータについてほぼ当てはまる。たとえば、一般的なデータベースサーバの平均ブロックサイズは8k(キロバイト)であり、平均行IDサイズは16バイトであり得る。したがって1つのデータブロックには、およそ500の子ノードのエントリを識別するために十分な行IDを格納できる。子ノード数についてのこのしきい値が、所与の親につき、データベースサーバによって表現されるほとんどの階層において超過される見込みは低い。
索引402のもう1つの有利な特徴は、これがデータベースサーバによって表として構成および管理されることである。これによって、データベース表への効率的な同時アクセスを可能にする在来の強力な機能を用いて索引402へ同時的にアクセスすることが可能となる。このような機能の一例が行レベル同時実行である。行レベル同時実行では、表内の行にアクセスするにはプロセスはこの行をロックするだけでよい。もう1つの形の、効率性に劣り得る同時実行が表レベル同時実行である。表レベル同時実行では、表またはその任意の部分にある行にアクセスするには、プロセスは表全体をロックしなければならない。一般的に、多数の同時実行プロセスは、同じデータ構造に同時的にアクセスできる場合においてより効率的に実行され得る。行レベル同時実行では、多数のプロセスは表内の異なる行にアクセスする場合にテーブルへ同時的にアクセスできる。行をロックするプロセスは、別の行へのアクセスを必要とするプロセスをブロックしない。しかし表レベル同時実行では、行にアクセスするには、プロセスは表全体をロックして、表内のいずれかの行へのアクセスを必要とする他のプロセスもブロックしなければならず、表をロックしているプロセスによって必要とされていないまたはアクセスされない行にアクセスする必要のあるプロセスすらもブロックしてしまう。
コミット前キャッシュ
データベースシステム上で実行するトランザクションは、親子関係と、この親子関係を表わす表302,350内の行とを変化させる。一般的に、トランザクションが行を変化させると、この行はトランザクションのコミット前にロックされる。たとえば、或るトランザクションによってノード1とノード2との間の親子関係が変化させられると、行354およびエントリ408がロックされる。行354のロックにより、ノード1とノード2との間の親子関係を変化させようとする他のプロセスがブロックされる。しかしエントリ408へのロックによって、この親子関係を変化させようとしているプロセスだけでなく、その他の、ノード1とノード3との間の親子関係についてのものもブロックされる。親子関係を変化させる目的のために、表402にある行のロックは親レベルで生じ、一方で表350にある行のロックは、より低い粒度のレベルである親子関係レベルで起こる。
親子関係の変化を反映させるためになされる表402内の行の変化に付随するブロックの影響を減少させると同時に同時実行性を向上させるために、トランザクションが変化させる行のロックは、トランザクションがコミットしようとするときまで据え置かれる。トランザクションによりなされる行の変化は「コミット前キャッシュ」において追跡される。トランザクションがコミットしようとするときになってはじめて、変化した行はロック
され、こうしてトランザクションのために行がロックされる全体的な時間と、他では生じるであろう付随的なブロックの影響とが減少する。
階層索引の探査中におけるアクセス制御データの使用
列<アクセス情報>には、ユーザアクセス権限、すなわち、ユーザ、ユーザグループまたはユーザクラスが階層200内のノードにどのようにアクセスできるか、について判断するために用いられるアクセス制御データが入っている。索引402内の特定のエントリにつき<アクセス情報>には、或るノードについてのユーザ権限と、このノードに対応する行とを判定するために用いられるデータが入っている。このデータは、ユーザアクセス権限を明示的に指定するデータか、アクセス制御データのソースに関するデータか、これらの組合せかの形を取り得る。
この発明の一実施例に従うと、データベースサーバによって、表350およびその他このデータベースサーバの管理する表にアクセスするためのアクセス制御データが管理および維持される。このようなアクセス制御データをここで表アクセス制御データと称する。或る表についての表アクセス制御データは、たとえば表内の1つ以上の列に少なくとも部分的に格納され得る。
<アクセス情報>に格納されたデータは、表350についての表アクセス制御データを反映(すなわちこれと整合)する。したがって、特定のエントリについて、<アクセス情報>に格納されたアクセス制御データは、当該の行についての表アクセス制御データにより指定されるユーザ権限と整合するユーザアクセス権限を示す。たとえばエントリ408についての<アクセス情報>内のデータにおいて、ユーザがノード1内のデータを読出すことはできても書込むことができないと示されていれば、行R1についての表アクセス制御データには、同じユーザが行R1から読出すことはできてもここにデータを書込むことはできないことが示される。
この発明の一実施例に従うと、階層型およびリレーショナル型として組織されたデータへのアクセスを支配するアクセス制御データは、ラビ・マーシー、エリック・セドラー、ニプン・アガーウォル、サム・イディキュラ(Sam Idicula)およびニコラス・モントーヤ(Nicolas Montoya)による「データベースシステムにおける均一なアクセス制御のための機構」と題された、同日出願の米国特許出願番号第 号(代理人事件番号第50277−1980号)に記載されたように実現され得る。
<アクセス情報>内のアクセス制御により定義されるユーザアクセス権限には、ノードの内容を読出す権利、ノードの内容を書込む権利、ノードについてのユーザ権限を定義する権利、ノードを削除する権利、およびノードを探査する権利が含まれるが、これに限定はされない。ノードを探査する権利とは、ノードの子孫へのあらゆる種類のアクセスを行なう能力を指す。たとえばノード1に関して、ユーザはノード1を探査する権利を有するが、その内容を読出しまたは書込みする権利を有さない。ユーザはノード1の子であるノード2およびノード3にアクセスできるが、ノード1の内容を読出す、すなわち行R1を読出すことはできない。
<アクセス情報>にアクセス制御データを格納することで、パス解決など索引402の探査が関わる演算を行なう間においてユーザアクセス権限をより効率よく判定することができる。探査中に既にアクセスされている索引402のエントリの中にアクセス制御データが格納されるため、パスの最後のノードを除き別のソースからのアクセス制御データ、たとえば表302に格納されたアクセス制御データを得る必要がなくなる。たとえば、パス“/a/b”を解決するには、エントリ408にアクセスするが、パスの最後のノードであるノード2についての<アクセス情報>内のアクセス制御情報が入っているエントリ
412にはアクセスしない。その代わりにこの情報はテーブル302から入手される。
パス解決は、パスにより指定されるノードを識別することだけでなく、このノードが関わる特定の種類の演算を行なうために必要な特定のユーザ権限をユーザが有しているかどうかを判断することをも含むアトミックな演算として行なわれ得る。<アクセス情報>内のアクセス制御データによって、この種のパス解決はより効率的に行なわれ得る。たとえば、階層索引402を探査して或るユーザについてのパス“a/b/c”を解決している間にエントリ408へのアクセスが行なわれる。<アクセス情報>内のデータを調べて、ユーザがノード1を探査できると判断する。次にエントリ412にアクセスする。エントリ412についての<アクセス情報>内のデータを調べて、ユーザがノード2を探査できないと判断する。こうしてユーザは、ノード2の、パスにより識別される子ノードであるノード3も含む子のいずれを見ることもできない。パス解決は終了し、索引402を引続き探査する必要はない。このようにして、パス解決を行なう際、表350についての表アクセス制御データへのアクセスを回避するだけでなく、パスにおける各々のパス要素に対応するエントリを完全に探査することを回避している。
アクセス制御データの階層索引での格納は、アクセス制御情報を入れることができる索引の種類の一例である。他の種類の索引、たとえばB木索引には、索引付けされる項目についてのアクセス制御情報を入れることができる。索引探査およびアクセス制御の両方が関わるプロセスを改良するためには他の種類の索引に格納されたアクセス制御情報を使用してもよい。したがってこの発明は、アクセス制御情報を階層索引に格納することには限定されない。
階層索引の統合
データベースサーバによりサポートされる在来の索引の利点としては、データベースサーバがこれら索引を用いて、索引を使用できるかどうかおよびどのように使用するかを指定していないデータベース文を実行できることがある。これができることにより、ユーザは索引を使用するのに必要な演算を指定する問合せを作成する作業の負担から解放される。たとえばデータベースサーバは、索引を使用するかどうかまたはどのように使用するかを指定していない問合せを実行する要求を受取る。次にデータベースサーバは、演算子と、タスクを実行する1組の演算の定義と、上記演算子を実行する順番とを定義する実行プランを生成する。演算子は、特定の索引にアクセスするための演算子を含む。実行プランを生成する際にデータベースサーバは効率に影響を与えるさまざまな要因を評価する。実行プランが生成されれば、このプランにある、索引のアクセス用の演算子を含む演算子をデータベースが実行する。
索引を使用するかどうかまたはどのように使用するかをデータベース文が指定する必要なしに、データベースサーバが自動的に索引を使用してデータベース文を実行する場合、索引またはその使用は「データベース言語層よりも下」または「SQL層よりも下」にあると呼ばれる。
データベースコマンド層よりも下にある態様の索引をサポートするには、データベースサーバ用のソフトウェアはこのように索引をサポートするようプログラムされ得る。この種のサポートを可能にするもう1つのやり方は、拡張可能な索引付けと称される機構を使用することによるものである。拡張可能な索引付けについては、ジャガナサン・スリニバサン(Jagannathan Srinivasan)、ラビ・マーシー、チン・ホン(Chin Hong)、サミュエル・デファツィオ(Samuel DeFazio)およびアニール・ノリ(Anil Nori)に対して1999年4月6日に発行された「拡張可能索引付け(Extensible Indexing)」と題された米国特許第5,893,104号に記載があり、これの内容はここに引用により援用される。拡張可能な索引付けにより、或る索引タイプをサポートするための組込サポートを
有していないデータベースサーバは、その索引能力を拡張して新たな索引タイプをサポートできるようにすることが可能だが、これのためには、データベースサーバに呼出されると索引タイプの実例である索引を使用およびサポートする索引タイプおよび索引ルーチン(たとえばオブジェクトメソッド)を登録する。一般的に、索引ルーチンには、索引の定義を作成、削除および変更するルーチン(DTL索引ルーチン)、既存の索引にあるデータに変更を加えるルーチン(DML索引ルーチン)、既存の索引からデータを検索するルーチン(問合せ処理索引ルーチン)、および、呼出されると実行プランを生成および評価するルーチン(問合せ最適化索引ルーチン)が含まれる。
拡張可能な索引付けにより、データベースサーバは、特定の索引タイプの索引を使用およびサポートするのに必要な演算を、自動的かつデータベース言語層よりも下で行なうことができる。たとえばデータベースサーバは、表350にDROPまたはTRUNCATEを行なうDDL文を受取る。DDL文は索引402でなく表302を参照する。データベースサーバがDDL文を実行すると、DDL索引ルーチンを呼出して実行することにより索引には自動的にDROPまたはTRUNCATEが行なわれる。データベースサーバは或る問合せを受取ると実行プランを評価して生成し、これを行なっている間に、索引402を使用するかどうかまたはどのように使用するかについての評価に参加する問合せ最適化索引ルーチンを呼出す。データベースサーバは実行プランを生成すると実行プランを実行し、実行プランを行なうのに必要な問合せ処理索引ルーチンを呼出す。
索引を作成するには、ユーザはCREATE INDEXのDDL文を発行する。この発明の一実施例に従うと、階層索引についてのCREATE INDEX文は、リソース表およびリンク表を仮数として指定する。表302などのリソース表には、階層200などの階層内にノードの内容が(論理的、物理的に、またはその組合せで)入っている。表350などのリンク表は、親ノードを表わす行を、この親ノードの子ノードを表わす行にリンクする。データベースサーバはリソース表の表オブジェクトタイプ(リソース表タイプ)と、リンク表についての表オブジェクトタイプ(リンク表タイプ)とを定義する。階層索引についてのCREATE INDEXのDDLコマンドは、リソース表タイプの実例である表と、リンク表タイプの実例である表とを指定する。リンク表タイプは、親ノードを子ノードに対応付けるためのノードIDを保持する列属性(たとえば表302の<親>および<子>)を定義する。リソース表タイプはノードIDについての列属性(表302の<ノード>)を定義する。階層索引を作成するためのDDL索引ルーチンは、タイプリソース表タイプおよびリンク表タイプの仮数を取る。
ハードウェア概観
図5は、この発明の一実施例が実現され得るコンピュータシステム500を例示するブロック図である。コンピュータシステム500は、バス502またはその他の情報通信用通信機構と、バス502と結合され情報を処理するためのプロセッサ504とを含む。コンピュータシステム500はさらに主メモリ506、たとえばランダムアクセスメモリ(RAM)またはその他の動的記憶装置を含み、これはバス502に結合されて、プロセッサ504の実行する命令および情報を記憶する。主メモリ506はさらに、プロセッサ504の実行する命令の実行中に一時変数またはその他の中間情報を記憶するのにも用いられ得る。コンピュータシステム500はさらに、バス502と結合され、プロセッサ504のための静的情報および命令を記憶するための、読出専用メモリ(ROM)508またはその他の静的記憶装置を含む。情報および命令を記憶するための記憶装置510、たとえば磁気ディスクまたは光ディスクが設けられてバス502に結合される。
コンピュータシステム500はバス502を介して、情報をコンピュータユーザに対して表示するための表示装置512、たとえば陰極線管(CRT)などに結合され得る。英数字式キーまたはその他のキーを含む入力装置514がバス502に結合され、情報およ
びコマンド選択をプロセッサ504へ通信する。もう1つの種類のユーザ入力装置としてカーソル操作装置516があり、これにはたとえばマウス、トラックボールまたはカーソルキーなどがあり、方向情報およびコマンド選択をプロセッサ504に通信し、表示装置512上のカーソルの動きを操作する。一般的にこの入力装置は、第1の軸(たとえばx)および第2の軸(たとえばy)の2本の軸上における2自由度を有し、これにより入力装置は或る平面上の位置を指定することができる。
この発明は、コンピュータシステム500を使用してここに記載された技術を実現することに関する。この発明の一実施例に従うと、プロセッサ504が、主メモリ506に入っている1つ以上の命令からなる1つ以上のシーケンスを実行するのに応答して、ここに記載された技術がコンピュータシステム500により実行される。このような命令は別のコンピュータ可読媒体、たとえば記憶装置510から主メモリ506に読込まれ得る。主メモリ506に入っている命令シーケンスの実行は、プロセッサ504がここに記載されたプロセスステップを行なうことを引起す。これに代わる実施例では、ソフトウェア命令の代わりに、またはこれと組合せて、ハードウェア回路を用いてこの発明を実現することもある。したがってこの発明の実施例は、ハードウェア回路およびソフトウェアのいかなる特定の組合せにも限定されない。
ここで用いる「コンピュータ可読媒体」という用語は、命令をプロセッサ504が実行できるようここに供給することに関与するあらゆる媒体を指す。このような媒体は多くの形態をとることができ、これには不揮発性媒体、揮発性媒体および伝送媒体が含まれるがこれに限定されない。不揮発性媒体にはたとえば、記憶装置510などの光ディスクまたは磁気ディスクが含まれる。揮発性媒体には主メモリ506などの動的記憶装置が含まれる。伝送媒体には同軸ケーブル、銅線および光ファイバが含まれ、これにはバス502を構成するワイヤが含まれる。伝送媒体はまた音波または光波の形態をとることもでき、これにはたとえば電波通信および赤外線データ通信の際に生成されるものなどがある。
コンピュータ可読媒体の一般的な形態にはたとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、またはその他任意の磁気媒体、CD−ROM、その他任意の光媒体、パンチカード、紙テープ、その他任意の孔パターンによる物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、その他任意のメモリチップまたはカートリッジ、後に記載する搬送波、またはその他コンピュータが読出可能な任意の媒体が含まれる。
1つ以上の命令からなる1つ以上のシーケンスを、プロセッサ504が実行できるようここへ伝達することには、さまざまな形態のコンピュータ可読媒体が関与し得る。たとえば、命令はまず遠隔コンピュータの磁気ディスクに収められ得る。この遠隔コンピュータは命令を自分の動的メモリにロードして、モデムを用いて電話回線経由でこれら命令を送信し得る。コンピュータシステム500に対してローカルなモデムが電話回線上のデータを受信し、赤外線送信機を用いてこのデータを赤外線信号に変換し得る。赤外線信号で搬送されたデータは赤外線検出器で受信されて、適当な回路がこのデータをバス502に出力することになる。バス502はデータを主メモリ506へと伝達し、ここからプロセッサ504は命令を検索および実行する。任意には、主メモリ506が受取った命令は、プロセッサ504による実行前または実行後に記憶装置510で記憶され得る。
コンピュータシステム500はさらに、バス502に結合された通信インターフェイス518を含む。通信インターフェイス518は、ローカルネットワーク522に接続されたネットワークリンク520に対する2方向データ通信結合を行なうためのものである。たとえば通信インターフェイス518は統合デジタル通信サービス網(ISDN)カードまたはモデムであることがあり、これにより対応する種類の電話回線に対するデータ通信
接続を行なう。別の例として、通信インターフェイス518はローカルエリアネットワーク(LAN)カードであってもよく、これにより対応するLANに対するデータ通信接続を行なう。無線リンクもまた実現可能である。このような実現例のいずれにおいても、通信インターフェイス518は、さまざまな種類の情報を表わすデジタルデータの流れを搬送する電気信号、電磁信号または光信号を送受信する。
一般的にネットワークリンク520は、1つ以上のネットワーク経由で他のデータ装置に対するデータ通信を可能にする。たとえばネットワークリンク520はローカルネットワーク522経由で、ホストコンピュータ524、または、インターネットサービスプロバイダ(ISP)526の動作させるデータ装置に対する接続を行ない得る。このISP526は、現在一般的に「インターネット」と称される全世界規模パケットデータ通信網528を通じてデータ通信サービスを提供する。ローカルネットワーク522およびインターネット528はともに、デジタルデータの流れを搬送する電気信号、電磁信号または光信号を使用する。このようにさまざまなネットワークを経由する信号や、デジタルデータをコンピュータシステム500に入出力するネットワークリンク520上および通信インターフェイス518経由の信号は、情報を運ぶ搬送波の形態の例である。
コンピュータシステム500は、ネットワーク、ネットワークリンク520および通信インターフェイス518を通じてメッセージを送信し、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ530は或るアプリケーションプログラムについての要求されたコードを、インターネット528、ISP526、ローカルネットワーク522、そして通信インターフェイス518経由で送信し得る。
受信されたコードは、受信されるとプロセッサ504により実行され、かつ/または記憶装置510もしくはその他の不揮発性記憶装置内で、後で実行されるように記憶され得る。このようにコンピュータシステム500は搬送波の形でアプリケーションコードを入手し得る。
以上の明細書においては、この発明をその特定の実施例を参照して記載した。しかし、この発明のより広い意味および範囲から逸脱することなく、さまざまな変形および変更がこの発明で可能であることが明らかであろう。したがってこの明細書および図面は、限定としてでなく例示的な意味で考えられるべきである。
階層型ファイルシステムを例示するブロック図である。 情報階層を例示するブロック図である。 この発明の一実施例に従うリレーショナルシステム内で、図2に例示する情報階層を捕捉するために用いられ得る表を例示するブロック図である。 この発明の一実施例に従う階層索引となるデータベース表のブロック図である。 この発明の実施例が実現され得るシステムのブロック図である。

Claims (18)

  1. 索引を有するコンピュータ可読媒体であって、
    前記索引は、1つ以上のフィールドを含む表を索引付けし、
    前記索引は、前記1つ以上のフィールドのうち少なくとも1つに関連付けられたキー値に基づいて配置されて順序付けられ、
    前記索引には複数の索引エントリが入っており、前記索引エントリの各エントリは、
    前記表内の少なくとも1つの対応する行へ対応付けし、かつ、
    前記キー値とは独立に定義されたデータであって、前記少なくとも1つの対応する行にアクセスするためのユーザアクセス権限を定義する第1のアクセス制御データを含む、コンピュータ可読媒体。
  2. 前記表には、階層内のノードに関連付けられた行が入っており、
    前記索引に格納されていない第2のアクセス制御データは、前記表における前記行にアクセスするためのユーザアクセス権限を定義し、
    前記第1のアクセス制御データは、前記第2のアクセス制御データにより定義される前記ユーザアクセス権限を反映する、請求項1に記載のコンピュータ可読媒体。
  3. 前記複数の索引エントリは階層内のノードに関連付けられ、
    前記第1のアクセス制御データは、1人以上のユーザが、前記ノードのうち1つ以上のノードを探査するためのユーザアクセス権限を有することを示す、請求項1に記載のコンピュータ可読媒体。
  4. 一連のパス要素を有するパス名を解決するために用いられる方法であって、
    前記一連のパス要素からの特定のパス要素に対応する索引内の第1のエントリにアクセスするステップと、
    前記第1のエントリ内のアクセス制御データに基づいて、ユーザが、特定のやり方で前記特定のパス要素に関連付けられた第1の項目にアクセスできるかどうかを判断するステップとを含み、
    前記索引は、データベース文に応答してデータベースサーバにより更新可能であり、前記データベースサーバは、前記索引を用いて前記データベース文を実行し、
    前記データベース文は、前記索引を参照することなく、前記一連のパス要素に含まれる少なくとも1つのパス要素の内容を含む表を参照し、前記表を使用する演算を特定する、方法。
  5. 少なくとも1つのパス要素は前記一連のパス要素のうちの前記特定のパス要素に従い、
    前記ユーザが前記特定のやり方で前記第1の項目にアクセスできる場合にのみ、前記少なくとも1つのパス要素に対応する前記索引内のエントリにアクセスすることを試みるステップをさらに含む、請求項4に記載の方法。
  6. 前記第1の項目は、階層内のノードに対応する行が入っている表内の行である、請求項4に記載の方法。
  7. 項目は階層内のノードに対応し、前記第1の項目は前記階層内の特定のノードに対応し、
    ユーザが第1の項目にアクセスできるかどうかを判断する前記ステップは、ユーザが前記特定のノードについてのいずれかの子孫ノードにアクセスすることを許されているかどうかを判断するステップを含む、請求項4に記載の方法。
  8. 一連のパス要素を有するパス名を解決するための方法をコンピュータに実現させるためのプログラムを格納したコンピュータ可読媒体であって、前記プログラムは1つ以上のプロセッサに、
    前記一連のパス要素からの特定のパス要素に対応する索引内の第1のエントリにアクセスするステップと、
    前記第1のエントリ内のアクセス制御データに基づき、ユーザが特定のやり方で前記特定のパス要素に関連付けられた第1の項目にアクセスできるかどうかを判断するステップと、を実行させる、コンピュータ可読媒体。
  9. 少なくとも1つのパス要素は前記一連のパス要素のうちの前記特定のパス要素に従い、
    前記ユーザが前記特定のやり方で前記第1の項目にアクセスできる場合にのみ、前記少なくとも1つのパス要素に対応する前記索引内のエントリにアクセスすることを試みるステップをさらに含む、請求項8に記載のコンピュータ可読媒体。
  10. 前記第1の項目は、階層内のノードに対応する行が入っている表内の行である、請求項8に記載のコンピュータ可読媒体。
  11. 項目は階層内のノードに対応し、前記第1の項目は前記階層内の特定のノードに対応し、
    ユーザが第1の項目にアクセスできるかどうかを判断する前記ステップは、ユーザが前記特定のノードについてのいずれかの子孫ノードにアクセスすることを許されているかどうかを判断するステップを含む、請求項8に記載のコンピュータ可読媒体。
  12. データベースシステムであって、
    索引をデータベースに含み、
    前記索引は、1つ以上のフィールドを含み、
    前記索引は、複数の索引エントリを含み、
    前記索引は、前記1つ以上のフィールドのうちの少なくとも1つに関連付けられたキー値に基づいて配列されて順序付けられており、
    前記複数の検索エントリの各々は、表内の少なくとも1つの対応する行に対応しており、
    前記複数の検索エントリの各々は、前記キー値とは独立に定義された第1のアクセス制
    御データを含み、前記第1のアクセス制御データは、前記少なくとも1つの対応する行にアクセスするための権限を規定しており、
    前記データベースシステムは、データベース文に応答して前記索引を更新するように構成されており、前記データベースシステムは、前記索引を用いて前記データベース文を実行し、
    前記データベース文は、前記索引を参照することなく前記一連のパス要素に含まれる少なくとも1つのパス要素の内容を含む表を参照し、前記表を使用する演算を特定する、データベースシステム。
  13. 前記表は、階層内のノードに関連付けられた行を含み、
    前記データベースは、第2のアクセス制御データを含み、前記第2のアクセス制御データは、前記索引の外部に格納されており、前記行にアクセスするためのユーザアクセス権限を定義しており、
    前記第1のアクセス制御データは、前記第2のアクセス制御データにより定義された前記ユーザアクセス権限を反映している、請求項12に記載のデータベースシステム。
  14. 前記複数の索引エントリは、階層内の複数のノードに関連付けられており、
    前記第1のアクセス制御データは、1人以上のユーザが前記複数のノードのうちの1つ以上のノードを探査するためのユーザアクセス権限を有していることを示している、請求項12に記載のデータベースシステム。
  15. データベースシステムであって、
    索引を含み、
    前記データベースシステムは、一連のパス要素を有するパス名を解決するように構成されており、
    前記データベースシステムは、
    前記一連のパス要素から特定のパス要素に対応する索引において第1のエントリにアクセスするように、および、
    前記第1のエントリにおけるアクセス制御データに基づいて、ユーザが特定の方法で前記特定のパス要素に関連付けられた第1の項目にアクセスできるか否かを判断するように構成されることにより、一連のパス要素を有するパス名を解決するように構成されており、
    前記データベースシステムは、データベース文に応答して前記索引を更新するように構成されており、前記データベースシステムは、前記索引を用いて前記データベース文を実行し、
    前記データベース文は、前記索引を使用することなく、前記一連のパス要素に含まれる少なくとも1つのパス要素の内容を含む表を参照し、前記表を使用する操作を特定する、データベースシステム。
  16. 少なくとも1つのパス要素は、前記一連のパス要素における前記特定のパス要素に続き、
    前記ユーザが前記特定の方法で前記第1の項目にアクセスできる場合にのみ、前記データベースシステムは、前記少なくとも1つのパス要素に対応する前記索引におけるエントリにアクセスすることを試みるように構成されている、請求項15に記載のデータベースシステム。
  17. 前記第1の項目は、階層内のノードに対応する行を含む表の1つの行である、請求項15に記載のデータベースシステム。
  18. 前記第1の項目は、階層内の特定のノードに対応しており、
    前記第1のエントリにおけるアクセス制御データに基づいて、ユーザが、特定の方法で前記特定のパス要素に関連付けられた第1の項目にアクセスできるか否かを判断するように構成されていることは、前記ユーザが、前記特定のノードの子孫ノードのいずれかにアクセスすることが許可されているか否かを判断するように構成されていることを含む、請求項15に記載のデータベースシステム。
JP2003533164A 2001-09-28 2002-09-26 リレーショナルデータベースシステム内の階層型データにアクセスするための効率的な索引構造 Expired - Lifetime JP4351530B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US32605201P 2001-09-28 2001-09-28
US37880002P 2002-05-07 2002-05-07
US10/171,728 US6571231B2 (en) 1999-02-18 2002-05-28 Maintenance of hierarchical index in relational system
PCT/US2002/030875 WO2003030032A2 (en) 2001-09-28 2002-09-26 An index structure to access hierarchical data in a relational database system

Publications (3)

Publication Number Publication Date
JP2005505059A JP2005505059A (ja) 2005-02-17
JP2005505059A5 JP2005505059A5 (ja) 2006-01-05
JP4351530B2 true JP4351530B2 (ja) 2009-10-28

Family

ID=27390012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003533164A Expired - Lifetime JP4351530B2 (ja) 2001-09-28 2002-09-26 リレーショナルデータベースシステム内の階層型データにアクセスするための効率的な索引構造

Country Status (5)

Country Link
EP (1) EP1446737B1 (ja)
JP (1) JP4351530B2 (ja)
CN (1) CN1295636C (ja)
CA (1) CA2461871C (ja)
WO (1) WO2003030032A2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1569132B1 (en) * 2004-02-23 2012-07-04 Sap Ag Computer system and method of performing a database access
CN100498792C (zh) * 2007-06-08 2009-06-10 北京神舟航天软件技术有限公司 数据库表行级数据的自主访问控制方法
US7809751B2 (en) 2007-08-27 2010-10-05 Sap Ag Authorization controlled searching
JP5303935B2 (ja) * 2008-01-08 2013-10-02 日本電気株式会社 データ多重化システムおよびデータ多重化方法
CN101299216B (zh) * 2008-05-28 2010-10-06 华为技术有限公司 权限管理方法、装置及系统
CN101727465B (zh) * 2008-11-03 2011-12-21 中国移动通信集团公司 分布式列存储数据库索引建立、查询方法及装置与系统
CN101751406B (zh) * 2008-12-18 2012-01-04 赵伟 一种实现基于列存储的关系型数据库的方法及装置
CN101706808B (zh) * 2009-11-17 2012-07-04 中国科学院软件研究所 基于索引树的海量数据库访问控制方法
CN101739523B (zh) * 2009-11-25 2013-02-27 金蝶软件(中国)有限公司 一种数据权限的控制方法及装置
US8655894B2 (en) * 2010-04-26 2014-02-18 Nokia Corporation Method and apparatus for index generation and use
US8584047B2 (en) * 2010-05-18 2013-11-12 Microsoft Corporation Orbital representation of hierarchical navigation
CN102063500A (zh) * 2011-01-04 2011-05-18 北京凯铭风尚网络技术有限公司 一种数据迁移的方法及装置
JP5737392B2 (ja) 2011-05-24 2015-06-17 日本電気株式会社 情報処理システム、データ管理方法、情報処理装置およびその制御方法と制御プログラム
KR101440475B1 (ko) * 2012-10-17 2014-09-17 주식회사 리얼타임테크 혼합 질의 처리를 위한 색인 생성 방법, 혼합 질의 처리 방법 및 색인 자료구조를 기록한 기록 매체
CN103853773A (zh) * 2012-12-04 2014-06-11 厦门亿联网络技术股份有限公司 一种Mysql数据库下树形数据结构的检索方法
US9367449B2 (en) 2013-09-11 2016-06-14 Owtware Holdings Limited, BVI Hierarchical garbage collection in an object relational database system
US10635645B1 (en) 2014-05-04 2020-04-28 Veritas Technologies Llc Systems and methods for maintaining aggregate tables in databases
CN109726579B (zh) * 2017-10-27 2023-04-28 阿里巴巴集团控股有限公司 资源访问权限分组方法及设备
US11106698B2 (en) * 2019-06-11 2021-08-31 Sap Se Multi-master with ownership transfer
US10997178B2 (en) * 2019-06-11 2021-05-04 Sap Se Implicit partitioning
CN113204564B (zh) * 2021-05-20 2023-02-28 山东英信计算机技术有限公司 一种数据库高频sql查询方法、系统和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751949A (en) * 1995-05-23 1998-05-12 Mci Corporation Data security system and method
US5893104A (en) * 1996-07-09 1999-04-06 Oracle Corporation Method and system for processing queries in a database system using index structures that are not native to the database system
US5903888A (en) * 1997-02-28 1999-05-11 Oracle Corporation Method and apparatus for using incompatible types of indexes to process a single query
GB2329044B (en) * 1997-09-05 2002-10-09 Ibm Data retrieval system
US6279007B1 (en) * 1998-11-30 2001-08-21 Microsoft Corporation Architecture for managing query friendly hierarchical values
US6427123B1 (en) * 1999-02-18 2002-07-30 Oracle Corporation Hierarchical indexing for accessing hierarchically organized information in a relational system

Also Published As

Publication number Publication date
CN1561496A (zh) 2005-01-05
WO2003030032A3 (en) 2004-04-29
EP1446737B1 (en) 2016-04-27
JP2005505059A (ja) 2005-02-17
WO2003030032A2 (en) 2003-04-10
EP1446737A2 (en) 2004-08-18
CN1295636C (zh) 2007-01-17
CA2461871A1 (en) 2003-04-10
CA2461871C (en) 2012-12-18

Similar Documents

Publication Publication Date Title
US7366708B2 (en) Mechanism to efficiently index structured data that provides hierarchical access in a relational database system
AU2002334721B2 (en) An index structure to access hierarchical data in a relational database system
JP4351530B2 (ja) リレーショナルデータベースシステム内の階層型データにアクセスするための効率的な索引構造
US7051039B1 (en) Mechanism for uniform access control in a database system
AU2002334721A1 (en) An index structure to access hierarchical data in a relational database system
US9898545B2 (en) Path-caching mechanism to improve performance of path-related operations in a repository
US6965903B1 (en) Techniques for managing hierarchical data with link attributes in a relational database
US8176007B2 (en) Performing an action in response to a file system event
US7047253B1 (en) Mechanisms for storing content and properties of hierarchically organized resources
JP5320438B2 (ja) Xmlデータ記憶、クエリー再書込、ビジュアライゼーション、マッピング、および参照のための方法および装置
US7472140B2 (en) Label-aware index for efficient queries in a versioning system
US9229967B2 (en) Efficient processing of path related operations on data organized hierarchically in an RDBMS
US20050055343A1 (en) Storing XML documents efficiently in an RDBMS
AU2002334747A1 (en) Providing a consistent hierarchical abstraction of relational data
KR20070121664A (ko) 데이터 저장 시스템에서 데이터를 조작하는 시스템 및 방법
US7627547B2 (en) Processing path-based database operations
US7849106B1 (en) Efficient mechanism to support user defined resource metadata in a database repository
US7028037B1 (en) Operators for accessing hierarchical data in a relational system
JP4724177B2 (ja) Xmlデータにアクセスするためのインデックス
EP4170516A1 (en) Metadata elements with persistent identifiers
US20080147615A1 (en) Xpath based evaluation for content stored in a hierarchical database repository using xmlindex

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050809

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080722

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081021

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081028

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081121

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090714

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090724

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4351530

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130731

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term