JPWO2005086003A1 - データベース・システム - Google Patents
データベース・システム Download PDFInfo
- Publication number
- JPWO2005086003A1 JPWO2005086003A1 JP2006510776A JP2006510776A JPWO2005086003A1 JP WO2005086003 A1 JPWO2005086003 A1 JP WO2005086003A1 JP 2006510776 A JP2006510776 A JP 2006510776A JP 2006510776 A JP2006510776 A JP 2006510776A JP WO2005086003 A1 JPWO2005086003 A1 JP WO2005086003A1
- Authority
- JP
- Japan
- Prior art keywords
- record
- database
- column
- location table
- block
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
Abstract
Description
このような従来のデータベース格納検索方式によれば、(1)インデックスの創生や維持に負荷がかかること、(2)最終的に使用されると想定される最大のブロックを予め生成しておかなければならないこと、(3)インデックスが階層構造をとっているため、データの挿入や削除によってインデックスの更新が行われる場合に、上位インデックスまで変更される場合が発生するために排他範囲が広くなり、デッドロックを引き起こしやすいこと、などの不都合があった。
1.データベース・システムの性能を向上することにある。
2.データベース・システムの列の追加、削除、又は変更を容易に行えるようにすることにある。
3.列の追加、削除、又は変更を行う場合にデータベースの稼動を止めることなく、運用しながら実行できるようにする。
4.列の追加、削除、又は変更を行った場合でも、アプリケーション・プログラムを変更することなく稼動することにある。
5.同一のテーブルのレコードに関して、列の追加、削除、変更が行われると、新たなレコード形式となるが、従来のデータベースでは最新のレコード形式のものしか扱えなかった。それらの複数の形式のレコードを格納し、それらのレコードに対して、検索、追加、更新、削除が行えるので、これまでに無かった履歴型のデータ格納管理を行うことにある。
レコードとは、必ず1つのユニークな主キーとゼロ個若しくは1個以上のノンユニークなキー(代替キー。結果的にユニークであっても問題はない)を持つ。この他に、キーとはならない項目(列)を持つことができる。主キーは、例えば従業員データベースの場合、従業員コードなど従業員を識別できるコードであり、代替キーは、氏名や生年月日などであり、データベースによっては、無くても良いし、複数あっても構わない。また、意味を持った主キーとなるべき項目存在しないレコードに関しては、格納順の連番などを付与して、それを主キーとしても良い。項目(列)は、情報の単位であり、キーとなるものとキーとならないものがある。レコード中に1つ以上存在する。列は、固定長形式でも良いが、可変長形式とすることも可能である。可変長形式の場合は、列毎に可変長とすることが可能であり、列情報が存在しない列も、列として認識することが可能である。レコードは論理的な集合体として捉えることができる。主キーに従属する項目の集合を広義の論理レコードと定義できる。しかしながら、常に主キーに従属する項目すべてを1つの論理レコードとするわけではない。例えば、従業員コードに従属する項目を考えた場合に、氏名や生年月日、所属入社年月日、電子メールアドレス、内線電話番号などの情報がある。更に、住所や出身学校、家族といった情報もある。その他に、給与や賞与の情報もある。また、更に評価結果情報もある。
過去遡及型は、列の追加を行う際に、それまでに作成されたレコードに対して、追加する列の値を予め用意し、それらの値を既存のレコードに追加していくものである。このようにすることによって、既存のレコードも追加列の値を保有することになる方式である。過去非遡及型は、列の追加を行う際に、それまで作成されたレコードに対して、追加する列の値を用意せず、新たに作成されるレコードに関しては追加列の値を持つが、列追加を行う以前に作成されたレコードに関しては、追加列に値を持たない方式である。追加列に値が無いレコードの追加列の値は、初期値やヌル値、または情報を持たない列としてアプリケーション・プログラムに渡す。また、特定のリターンコードを渡すことも可能である。これは、以下の説明でも同様である。
図46は、過去非遡及型のREAD処理に関する図である。また、図50は過去遡及型のREAD処理に関する図である。ここでは、列追加の場合を例にとって、過去遡及型と過去非遡及型の説明を行う。過去非遡及型とは、既に作成されたレコードに対して、新たに追加する列を反映させない(遡及させない)ものである。つまり、過去のレコードは、そのレコードが作成された形式のままである。新たに作成されるレコードは、列の追加を行ったデータベース定義体を使用しているアプリケーション・プログラムからは、追加列を含んだ形式のレコードが追加され、以前のバージョンのアプリケーション・プログラムからは、追加列を含まない形式のレコードが追加されることになる。つまり、異なる形式のレコードが混在することになる。
[過去非遡及型:READ]
図46では、過去非遡及型のREAD処理(読み出し処理:SQLでは、多くの場合SELECT)を図示している。アプリケーション・プログラム30からREAD命令をデータベース・システムに指示する。データベース・システムでは、リクエスト受け処理31を行う。SQLの解析、データベースの種別(どのデータベース・ファイルに対するアクセスか)、アプリケーション・プログラムのデータベース定義体とそのバージョンの確認、アクセス種別(この場合はREAD処理)、キー種別(主キーか代替キーか、代替キーの場合はどの代替キーか)、そのキー値(ターゲット・キー値)、キー条件(ターゲット・キー値と等しい、大きい、小さいなど)が間違いないかの確認である。その後、インデックス検索処理32を行い、目的のレコードが格納されている位置を検出する。ここまでは、従来のデータベース・システムと同様である。データ(レコード)が格納されている部分(データ格納部)33から目的のレコードを見つける。そのレコード内またはレコード外の特定の場所には、そのレコードが作成された時のデータベース定義体のバージョン情報(レコード・バージョン情報)を予め格納しておくものとする。このレコード・バージョン情報は、データベースを作成する時点で行い、その後、アプリケーション・プログラムからレコードを追加・変更する都度、格納するものとする。図17が、レコード形式の例である。ここでは、レコード長、データベース定義体バージョン情報の他に、列の値が並んでいる。図18は、レコード外の特定の場所にデータベース定義体バージョン情報を持つ場合の例である。
次に図47に関して説明する。これは、過去非遡及型のREWRITE(更新処理。多くのSQLでは、UPDATE)に関して図示したものである。REWITEとは、一旦読込んだレコードに対し、更新を加えて書き戻す処理である。この図では、既にレコードの読込みと更新処理が終了しているものとする。アプリケーション・プログラム30からREWITEの要求をデータベース・システム2に対して行う。データベース・システムでは、リクエスト受付処理31を実行する。ここでは、SQL解析、データベースの種別、アプリケーション・プログラムのデータベース定義体バージョンの確認、アクセス種別(ここではREWRITE)、レコード情報が間違いないかの確認を行う。次に、アプリケーション・プログラムのデータベース定義体バージョンによる振分け処理37を行う。アプリケーション・プログラムのデータベース定義体がV1であれば、V1のデータベース定義体にレコード情報を割振る。データベース定義体では、レコードから、物理構造に変換する。次に、格納位置設定を行う。このレコードはREAD処理によって読込まれており、その時点から排他が行われていれば格納位置に変化が無いので、READ時の格納位置を設定する。READが排他されていない場合には、REWRITEを行うまでの間に、格納位置が変化している可能性があるため、格納位置の検索を行う。次に、そのレコードを格納するブロック内で、格納するレコードが以前に占めていたスペースと新たに必要となるスペースが異なる場合に、ブロック内で後続のレコードを移動する。更に、格納するレコードにバージョン情報設定を行う(38)。その後、レコードの格納を行う。次に、代替キーに関して変更が生じた場合は、当該代替キーに関する変更を行う。
図48は、過去非遡及型のDELETE処理を示したものである。REWRITEと似ている。DELETE処理の場合も、一旦、レコードを読込んだ上でDELETEすることが一般的であるが、いきなりキー値を与えてDELETEすることも可能である。リクエスト処理受付31、データベースの種別、アプリケーション・プログラムのデータベース定義体バージョンによる振分け37、各バージョンのデータベース定義体による物理構造変換は、REWRITE処理と同様である。次に、格納位置設定または格納位置検索を行う。これも、REWRITE処理と同様である。レコード削除の場合は、そのレコードが占めていたスペースが空くため、当該レコード以降のレコードの移動が必要となる。そして、レコードの削除を実施する。次に、代替キーがあれば、そのレコードに関する代替キー・エントリーの削除を行う。
図49は、過去非遡及型のINSERT(レコードの追加)処理である。上記例と同様に、リクエスト受付処理を行う。INSERTの場合は、レコード情報が必要となる。キーに関する情報はレコードに含まれるので、必要ない。データベース定義体バージョンによる振分けを行う。その後、データベース定義体により、論理構造と物理構造の変換を行う。次に格納位置を検索した上、当該レコードが格納されるブロックで、そのレコード以降のレコードを移動し、レコードの格納を行う。更に、代替キー・エントリーを追加する。
次に、論理構造を変換することに関して説明を行う。まず、論理構造変換部の一例として論理構造変換テーブルに関して説明を行う。図54は、論理構造変換テーブルの例である。この論理構造変換テーブルでは、データベース定義のV1からV4までに関して、論理構造の変換を行えるように設定されている。一番左側にあるのが列名称である。その右に、データベース定義V1の論理構造が記述されている。列aは、レコードのオフセット0バイトから8バイト、列bは存在せず、列cは、レコードのオフセット8バイトから12バイト、列dはレコードのオフセット20バイトから14バイト、列eは、レコードのオフセット34バイトから16バイト、列fは、レコードのオフセット50バイトから18バイト、となっている。同様に、V2、V3、V4の論理構造が記述されている。V4の列eは列履歴が削除となっているが、これは、列削除がこのバージョンで行われたことを示している。また、オフセットと長さが括弧付きで表現されているが、これは、V4の論理レコード中には存在しないが、列eの値が過去データとして保存されていることを表している。レコードがV4で作成され、アプリケーション・プログラムがV4以外である場合に、アプリケーション・プログラムに列eの値を渡すために使用される。V4のアプリケーション・プログラムが要求元である場合には列eを含まないレコードを渡すことは当然のことである。列履歴は、その列が、そのデータベース定義体バージョンで作成されたり、削除されたりしたかの履歴情報となっている。この論理構造変換テーブルの一番左にある列は、そのデータベースに対する複数のデータベース定義体の各々が保有している列を「OR」条件で抜き出したものとなる。
上記では、論理構造変換テーブルを用いて論理構造の変換を行うことについて説明を行った。しかしながら、論理構造を変換するには、このような論理構造変換テーブルを用いずに行うことも可能である。一つ目の方法は、バージョン間の論理変換を、プログラム・ロジックとして保持する方法である。図55にその事例を図示する。この場合には、各バージョン間の論理構造変換をすべて1対1で記述すると、バージョンが多くなった場合には、その論理構造変換式の数が幾何級数的に多くなるので問題がある。中間的な形式に一旦変換して、その後、目的の形式に変換する方式とすることで、論理構造返還式の数を少なくすることが可能となる。二つ目の方法は、各バージョンのデータベース定義体にある論理構造同士を比較して、同じ列同士を移動する方法である。列の属性や長さが変更されている可能性もあるため、単純に列を移動するだけでなく、属性変更や長さの変更を行うことも必要な場合がある。この説明は、以降の論理構造変換テーブルに関する説明全体に適用するものである。
次に過去遡及型に関して説明する。過去遡及型は、既に作成されたレコードに対して、新たに追加する列の値を用意し、それを既存のレコードに適用して、追加列が含まれたレコードとする。また、新たに作成されるレコードは、追加列が含まれたレコードのみとする。
図50は、過去遡及型のREAD処理を図示している。アプリケーション・プログラム30からREAD命令をデータベース・システムに指示する。データベース・システムでは、リクエスト受け処理31を行う。その後、インデックス検索処理32を行い、目的のレコードが格納されている位置を検出する。ここまでは、従来のデータベース・システムや過去非遡及型のREADと同様である。データ(レコード)が格納されている部分33から目的のレコードを見つける。過去遡及型では、レコードのデータベース定義体のバージョン情報は最新のもの(この場合はV4)のみしか存在しないので、レコード内にデータベース定義体のバージョン情報を格納しておく必要は無い。
次に図51に関して説明する。これは、過去遡及型のREWRITEに関して図示したものである。アプリケーション・プログラム30からREWITEの要求をデータベース・システム2に対して行う。データベース・システムでは、リクエスト受付処理31を実行する。次に、論理構造変換テーブル36を用いて、アプリケーション・プログラムのデータベース定義体バージョンの論理構造変換を行う。この場合、変換先の論理構造は最新のV4のみである。次に、V4のデータベース定義体35により、論理構造から物理構造への変換を行う。次に、格納位置設定を行う。このレコードはREAD処理によって読込まれており、その時点から排他が行われていれば格納位置に変化が無いので、READ時の格納位置を設定する。READが排他されていない場合には、REWRITEを行うまでの間に、格納位置が変化している可能性があるため、格納位置の検索を行う。次に、そのレコードを格納するブロック内で、格納するレコードが以前に占めていたスペースと新たに必要となるスペースが異なる場合に、ブロック内で後続のレコードを移動する。更に、格納するレコードにバージョン情報設定38を行う。その後、レコードの格納を行う。次に、代替キーに関して変更が生じた場合は、当該代替キーに関する変更39を行う。
図52は、過去遡及型のDELETE処理を示したものである。REWRITEと似ている。DELETE処理の場合も、一旦、レコードを読込んだ上でDELETEすることが一般的であるが、いきなりキー値を与えてDELETEすることも可能である。リクエスト処理受付31、論理構造変換テーブル36による、各バージョンからV4への論理構造の変換を行い、V4のデータベース定義体による物理構造変換を行う。これらは、REWRITE処理と同様である。次に、格納位置設定または格納位置検索を行う。これも、REWRITE処理と同様である。レコード削除の場合は、そのレコードが占めていたスペースが空くため、当該レコード以降のレコードの移動が必要となる。そして、レコードの削除を実施する。次に、代替キーがあれば、そのレコードに関する代替キー・エントリーの削除を行う。
図53は、過去遡及型のINSERT(レコードの追加)処理である。上記例と同様に、リクエスト受付処理を行う。INSERTの場合は、レコード情報が必要となる。キーに関する情報はレコードに含まれるので、必要ない。データベース定義体バージョンによる振分けを行う。その後、データベース定義体により、論理構造と物理構造の変換を行う。次に格納位置を検索した上、当該レコードが格納されるブロックで、そのレコード以降のレコードを移動し、レコードの格納を行う。更に、代替キー・エントリーを追加する。構造変換に関する方式は、過去非遡及型と同様である。
ところで、殆どのデータベース・システムでは、既存のレコードに列を追加するには、一旦、データベースを停止させないと実施できない。本発明者が発明した、「データベース検索格納方式(日本国特許第3345628、米国特許第6654868号参照)」、または、「データベース格納検索システム」にて発明されたデータベースを用いることで、データベースを停止させることなく稼動させたままで、既存のレコードに対して列の追加を行うことが可能である。
また、「データベースのアクセラレーター機能(以下、「アクセラレーター機能」と呼ぶ。特許出願PCT/JP03/13443)」では、ロケーション・テーブルや代替キー・ロケーション・テーブルのコピーをアクセラレーター・システムが保持し、レコードを検索する際に、アクセラレーター・システムのロケーション・テーブルや代替キー・ロケーション・テーブルを使用することで、アクセスが並行処理できることを発明している。
また、「データ格納検索システム」では、プライマリー・ブロックからオーバーフロー・ブロック、オーバーフロー・ブロックからオーバーフロー・ブロックへの連結を、オーバーフロー・ブロック管理テーブルを用いて行う方式を発明している。「オーバーフロー・ブロック管理テーブル」では、代替キー・ブロックと代替キー・オーバーフロー・ブロックの連結、代替キー・オーバーフロー・ブロックと代替キー・オーバーフロー・ブロックの連結も同様に、代替キー・オーバーフロー・ブロック管理テーブルを用いて行う方式である。
ここで、本発明者が提案した「データ格納検索方式」の内容について、図1を用いて簡単に説明しておくことにする。プライマリー・システム1は、「データ格納検索方式」を適用するシステムのうち、主となるものである。データ・レコードは、ブロック11に主キーの順に格納する。ブロック11は、プライマリー・ブロックとオーバーフロー・ブロックとからなるが、図1では、プライマリー・ブロックのみを図示してある。そのプライマリー・ブロックにデータ・レコードを追加する場合に、プライマリー・ブロックが満杯である場合に、オーバーフロー・ブロックを、そのプライマリー・ブロックに連結して、データ・レコードを格納する。オーバーフロー・ブロックに、更にオーバーフロー・ブロックを連結することが可能である。各プライマリー・ブロックのアドレスが記載されたロケーション・テーブル・レコード(または、ロケーション・テーブル・エントリー)を連続領域に有するロケーション・テーブルLCを有する。ロケーション・テーブルLCは連続した領域に予め確保する。ここで連続した領域とは、論理的な順序であり、物理的な領域では、離れていても良い。このような場合には、アドレス変換テーブルを用いて、論理的に連続していると扱うことができる。これは、以下の説明でも同様である。ロケーション・テーブルの使用領域の最後を示すために、最終ポインター101を用いる。
次に、「データベース再編成システム」に関して、図2を用いて説明する。「データベース再編成システム」は、「データ格納検索方式」で提案された、構造がシンプルな点を利用して、データベースを停止することなく、再編成を行う仕組を提案している。この「データベース再編成システム」について簡単に説明をする。再編成とは、オーバーフロー・ブロックの解消、適正な初期格納率の確保、フラグメンテーションの解消の3つを行うことである。オーバーフロー・ブロックの解消とは、次のようなことである。プライマリー・ブロックにオーバーフロー・ブロックが多数連結されると、それらのブロックに対してレコードを挿入しようとしたときに、プライマリー・ブロックとオーバーフロー・ブロックにまたがってレコードが主キー値の順に並んでいなければならないので、移動すべきレコードの数が多くなってしまう。レコードの検索をする場合でも、複数のブロックにまたがって検索を行わなければならないので、効率が低下してしまう。このようなことを避けるために、オーバーフロー・ブロックを無くして、プライマリー・ブロックにする。
上記では、プライマリー・ブロックとオーバーフロー・ブロック、オーバーフロー・ブロックとオーバーフロー・ブロックの連結は、当該ブロックの直前のブロックが、当該ブロックのアドレスを保持するという形式であった。これに対して、「データ格納検索システム」では、プライマリー・ブロックとオーバーフロー・ブロック、オーバーフロー・ブロックとオーバーフロー・ブロックの連結に関して、図36にあるように、オーバーフロー・ブロック管理テーブルを用いて行うものである。図36の場合、ロケーション・テーブル・エントリー4が指しているプライマリー・ブロックには、3つのオーバーフロー・ブロックが連結されている。これらのアドレスをオーバーフロー・ブロック管理テーブルのエントリー1,2,4が保持している。このような形式を採った場合、ブロックやオーバーフロー・ブロックがロケーション・テーブルに比較して低速な記憶装置に格納されている場合に、オーバーフロー・ブロックを次々に読んでいく必要が無いため高速なアクセスが可能となる。
[過去遡及型]
過去遡及型は、列の追加を行う際に、既に作成されたレコードに対して、追加する列の値を予め用意し、それらの値を既存のレコードに追加していくものである。このようにすることによって、既存のレコードも追加列の値を保有することになる方式である。
図5、図6を用いて、図3のデータベースに、新たに列(項目)bを追加する場合を説明する。ここで説明する方式は、追加する列を子データベースとして作成する方法である。この方式を、過去遡及型・子データベース方式と呼ぶ。まず、過去遡及型・子データベース方式で列bを、列aの直後に追加することを、システム管理者がデータベース・システムに指令する。指令する方法は、画面を用いて対話型に行う方法が好ましい。データベース・システムでは、列bが追加された後のデータベースの定義体V2(図6のD2とD21)を作成する。図6では、定義体クロス・リファレンス・テーブルX6が、併せて記述してある。データベース定義体V2と定義体クロス・リファレンス・テーブルの作成方法に関しては後ほど説明する。図6のD21ではDB_Aに対して、DB_A1が別のデータベースとして追加されている。DB_Aを親データベース、DB_A1を子データベースとする。図6では、V1も併せて記載してあるが、過去遡及型では基本的に最新のデータベース定義体のみがあれば、それより前のバージョンのデータベース定義体は不要である。次に、DB_A1用の子ロケーション・テーブル15を作成する。最終ポインター151を用意し、子ロケーション・テーブル15の先頭を指すようにする。DB_A1用の子ブロック16は、レコードを格納する都度確保していってもよいが、予め必要な数のブロックを確保しても良い。以上が準備作業となる。DB_A1では、列bが実際の意味を持っているが、列bだけでは検索や更新が出来ないので、DB_Aの主キーの列aと組み合わせてレコードとし、ブロック中16に格納する。
しかしながら、列操作ポインターを使用しなくとも、DB_A1にレコードが存在していない場合は、列bの追加が未完であると判断することも可能である。
次に、列追加が完了した後で、レコードの追加を行う場合に関して、図8を用いて説明する。過去遡及型で新たに作成されるレコードは、追加列が含まれたレコードのみとすることが好ましい。過去遡及型の場合には、以前のバージョンのデータベース定義体を使用しているアプリケーション・プログラムの内、レコードを追加するものは、追加列に関する情報を持っていないため、その列の値に関しては初期値かヌル値、または情報を持たない列をセットすることが好ましい。または、最新以外のデータベース定義体を使用しているアプリケーション・プログラムの内、レコードを追加するものを稼動させないようにするとしてもよい。
次に、このような列追加を行っている最中に、レコードに対するアクセスが可能であることを説明する。基本的な仕組は、図50から図53を用いて複数バージョンのデータベース定義体を使用している別々のアプリケーション・プログラムからのアクセスが可能である、という説明にあるとおりである。図5が、列追加の途中の状態を示しているので、この図を用いて説明を行う。併せて、図6も使用する。最新のデータベース定義体V2を使用するアプリケーション・プログラムが、データベースに対してアクセス可能であることは勿論、それに加えて、データベース定義体の各バージョンと論理構造変換テーブルを保持することにより、データベース定義体V1を使用していたアプリケーション・プログラムと、データベース定義体V2を使用するアプリケーション・プログラムの双方が、同じデータベースに対して、アクセス可能であることも説明する。
上記では、列を追加中のデータベースへのアクセスに関して説明を行ったが、前記の方法を応用すれば、列追加を完了した時点での、データベースへのアクセスが問題なく行える。列追加中との相違は、列追加完了後のアクセスでは、データベース定義体V2からの検索で列bの追加が完了していない、という状態が発生しないことである。
以上の説明では、プライマリー・ブロックとオーバーフロー・ブロック、オーバーフロー・ブロックとオーバーフロー・ブロックの連結、及び、代替キー・ブロックと代替キー・オーバーフロー・ブロック、代替キー・オーバーフロー・ブロックと代替キー・オーバーフロー・ブロックの連結に関しては、「データ格納検索方式」で示された方法によっていた。これを、「データ格納検索システム」で示された、オーバーフロー・ブロック管理テーブルを用いたデータベースに適用する場合には、次のようになる。
次に、列追加を現用のデータベースに対して、直接的に行う方法に関して述べる。ここでは、プライマリー・ブロックとオーバーフロー・ブロック、オーバーフロー・ブロックとオーバーフロー・ブロックの連結、及び、代替キー・ブロックと代替キー・オーバーフロー・ブロック、代替キー・オーバーフロー・ブロックと代替キー・オーバーフロー・ブロックの連結に関しては、「データ格納検索方式」で示された方法に関して述べる。これも、「データベース再編成システム」の機能を用いて実現する。図9、図10を用いて、図3のデータベースに、新たに列(項目)bを追加する場合を説明する。ここで説明する方式は、追加する列を直接、現用のデータベースに追加する方法である。この方式を、直接追加方式と呼ぶ。まず、子データベース方式と同様に、直接追加方式で列bを追加することを、データベース・システムに指令する。データベース・システムでは、列bが追加された新たなデータベースの定義体V2(図10のD210)を作成する。データベース定義体V2(図10のD210)では、DB_Aに対して、列bが追加されてレコードの列数が5から6になっている。V2(図10のD210)の列bの「列状況欄」は、「追加中」となっているが、これは、列を追加している最中であることを示すもので、列追加が完了すればブランク状態になる。過去遡及型・子データベース方式と同様に論理構造変換テーブルX6を作成する。次に、DB_A用の列追加ロケーション・テーブル8を作成する。更に、現用のロケーション・テーブル10と列追加ロケーション・テーブル8に対して、列操作ポインター(103と83)を1つずつ設ける。更に、列追加を開始する直前の最終ポインター(図9の101)と同じ値を持つ、列操作完了ポインター(図9の104)を設ける。列操作完了ポインターの目的は、直接追加方式による列追加を行っている間に、新しいレコードの追加が行われると、最終ポインター(図9の101)の指す位置が後方にずれてしまい、どこまでのレコードに対して列追加を行う必要があるか判別できなくなることを避けるためである。列操作完了ポインターは、列追加が完了するまで、その指している位置は変更されない。また、列追加が完了した場合には不要となる。直接列追加を行う場合には、列追加を開始した後のレコード追加は、列操作完了ポインターが指しているロケーション・テーブル・エントリーの直前のエントリーが指しているブロックには格納せず、列操作完了ポインターが指しているブロック以降に格納することが好ましい。以上が準備作業となる。
上記のようにして、列の追加を行うが、列追加の完了は、列操作完了ポインターが指している現用ロケーション・テーブル・エントリーの直前のブロックに対する列追加が終了した時点とする。
次に、このような列追加を行っている最中に、レコードに対するアクセスが可能であることを説明する。また、過去遡及型・子データベース方式で述べたように、複数のバージョンのデータベース定義体と論理構造変換テーブルを使用することにより、旧バージョンの定義体を使用しているアプリケーション・プログラムからのアクセスが問題なく行えることも同時に説明する。図9が、列追加の途中の状態を示しているので、この図を用いて説明を行う。過去遡及型・子データベース方式で説明したように、図50から図53までに記載してある論理は、本方式でも同様である。
列追加が完了した後で、データベース定義体の異なるバージョンを使用しているアプリケーション・プログラムから、データベースに対するアクセスが可能であることを説明する。図11は、列追加が完了した状態を示している。また、データベース定義体は図12に示すようになる。図12のデータベース定義体は、基本的には図10と同じものであるが、列追加が完了しているので、V2(D210)の列bの列状況欄が空欄となっている。図11では、以前の現用ロケーション・テーブル10が点線で図示されているが、実際に不要となっているためである。新規ロケーション・テーブル8が現用ロケーション・テーブルであることになる。しかしながら、直接追加方式での列追加が完了した状態であることを強調するために、ここでは新規ロケーション・テーブルの名称を用いて説明する。アクセスが主キーに対するものであり、ターゲット・キー値がa1である場合、まず、リクエスト受付処理を行う。次に、新規ロケーション・テーブル8に対して、バイナリー・サーチを行い、ブロック0の中のrecord1を見つけ出す。このレコードは過去遡及型・直接追加方式により列追加がされているので、レコードの形式はV2であることが分かる。また、子データベース方式のところで記述したように、レコード中にそのレコードが作成されたデータベース定義体のバージョンを入れておけば、より確実に容易に判別が行える。
以上の説明では、プライマリー・ブロックとオーバーフロー・ブロック、オーバーフロー・ブロックとオーバーフロー・ブロックの連結、及び、代替キー・ブロックと代替キー・オーバーフロー・ブロック、代替キー・オーバーフロー・ブロックと代替キー・オーバーフロー・ブロックの連結に関しては、「データ格納検索方式」で示された方法によっていた。これを、「データ格納検索システム」で示された、オーバーフロー・ブロック管理テーブルを用いたデータベースに適用する場合には、次のようになる。
次に、過去非遡及型・子データベース方式による列追加に関して、図13から図16を用いて説明する。過去非遡及型・子データベース方式とは、過去遡及型・子データベース方式と基本的には似ているが、新たに追加する列に関して、過去に作成されたレコードに対して値を追加することをせず、データベース定義体の変更後に作成されるレコードから、追加列を追加する方式である。また、データベース定義体の変更後に作成されるレコードは、列追加されたもののみとすることも可能であるが、以前のバージョンのデータベース定義体で作成されたレコードを混在させることも可能である。単一のバージョンのレコードのみを追加するのは、複数のバージョンのレコードを追加することに包含されるので、ここでは、複数のバージョンのレコードが追加される場合に関して主に説明を行う。
次に、この方式を用いた場合のレコードに対するアクセスに関して説明する。図15が、データベース定義体V1を用いたアプリケーション・プログラムと、V2を用いたアプリケーション・プログラムから書き出されたレコードが混在しているので、この図15と図16を用いて説明する。また、図46から図49が理解の参考となる。要求元がアプリケーション・プログラムであるとする。また、アクセスが主キーに対してであり、その主キー値がa1である場合とする。まず、リクエスト受付処理を行い、その中で要求元がデータベース定義のV1を使用しているかV2を使用しているかの判別を行う。次に、DB_Aのロケーション・テーブル10に対して、バイナリー・サーチを行い、ブロック0の中のrecord1を見つけ出す。次に、このレコードがどのデータベース定義体を使用して作成されたかを、レコード中のデータベース定義体のバージョン情報により判別する。この場合はV1を使用して作成されているとする。そのバージョンのデータベース定義体を使用して、物理構造から論理構造に変換を行う。
オーバーフロー・ブロック管理テーブルを用いた格納やアクセスは、過去遡及型・子データベース方式で述べた方法と同様であるので、ここでは詳しい説明を省略する。
次に、過去非遡及型・直接追加方式に関して説明する。この方式は、過去遡及型・直接追加方式と似ているが、データベース定義体を変更する以前に作成されたレコードに対して、追加する列の値を持たないことである。つまり、過去に作成されたレコードは、作成された時点の形式のままであり、新たに作成されるレコードは、列の追加が行われた形式と列の追加がされる以前の形式と混在することになる。この方式の場合も、新たなデータベース定義体を作成した後に追加するレコードは、新しい形式のみとすることは可能であるが、それは、形式が混合する場合に含まれるので、ここでは、形式が混合する場合を説明する。
次に、このような状態で、レコードの読み出しや更新に関して説明する。まず、データベース定義体V1を使用した要求元からの検索の場合を説明する。図46が参考となる。まず、リクエスト受付処理を行う。その後、ロケーション・テーブルのバイナリー・サーチを行い、目的のレコードを見つける。レコードが作成されたデータベース定義体のバージョンにより、各バージョンのデータベース定義体に割振る。各データベース定義体では、物理構造と論理構造の変換を行う。更に、変換されたレコードを、要求元のデータベース定義体のバージョンに、論理構造変換テーブルを使用して変換する。
オーバーフロー・ブロック管理テーブルを用いた格納やアクセスは、過去遡及型・直接列追加方式で述べた方法と同様であるので、ここでは詳しい説明を省略する。
次に、列追加・過去遡及型・子データベース方式または過去非遡及型・子データベース方式によって作成された子データベースを、「データベース再編成システム」の手法を応用することによって親データベースに統合することが可能である。この方法に関して過去遡及型を例にとって説明を行う。図7が、再編成を行う直前のデータベースを示した図である。このデータベースは、過去遡及型・子データベース方式によって作成されたものである。図7の他に、図21、23、24を用いて説明する。ここでは、親データベースに子データベースを統合することにするが、逆に子データベースに親データベースを統合することも可能である。
再編成中のデータベースに対するアクセスは、列追加中と同様に可能である。DB_Aの現用ロケーション・テーブル10と新規ロケーション・テーブル9の何れを使用するかは、目的レコードの主キー値が、再編成ポインターが指しているロケーション・テーブル・エントリーの主キー値より大きいか、それ以下であるかによって使い分ける。これは「データベース再編成システム」で述べた方法である。目的レコードの主キー値が、再編成ポインターが指しているロケーション・テーブル・エントリーの主キー値より大きい場合は、現用ロケーション・テーブル10を使用し、以下である場合は新規ロケーション・テーブル9を使用する。
再編成が完了した状態を、図23に示している。ここでは、現用ロケーション・テーブル10を点線で表示してあるが、再編成が完了しているため不要となったものである。新規ロケーション・テーブル9は、実際には現用ロケーション・テーブルとして機能しているが、ここでは、新規ロケーション・テーブル9として説明を行う。また、データベース定義体と論理構造変換テーブルは、図24に示してある。これは、再編成中のアクセスで説明したとおりである。再編成完了後のアクセスは、再編成中のアクセスで説明を行った、新規ロケーション・テーブルに対するアクセスと同じである。若干の相違は、再編成が完了しているので、再編成ポインターを用いて、現用ロケーション・テーブルを使用するのか、新規ロケーション・テーブルを使用するかの判別を行わないこと、バイナリー・サーチの対象が、新規ロケーション・テーブルの先頭から、最終ポインターが指している間にある、ロケーション・テーブル・エントリーに対するものであることである。
オーバーフロー・ブロック管理テーブルを用いた場合の再編成に関しては、「データ格納検索システム」に記載されている再編成の方法を適用すればよい。再編成中のレコード追加やアクセスは、再編成前のレコードに対する場合は、子データベース方式で述べた方法を使用し、再編成後のレコードに対する場合は、直接列追加方式で述べた方法を使用すればよいので、ここでは詳しい説明を省略する。何れの方式の場合でも、再編成中のデータベースへのアクセスは可能である。
「データベース再編成システム」では、新規ロケーション・テーブルの大きさに関して、再編成後のプライマリー・ブロックの数よりも大きいロケーション・テーブル・エントリーを格納できるものとしている。しかしながら、この方法では、再編成のために現用ロケーション・テーブルとほぼ同じ大きさの新規ロケーション・テーブル用のスペースが常に必要となることになる。
次に、列の削除に関して述べる。列の削除も3つの方法がある。過去保持型と過去非保持型の2つになる。過去保持型は、更に、定義削除方式と子データベース方式に分かれる。過去非保持型は直接列削除方式のみである。過去保持型・定義削除方式は、データベースの実体からは列の削除を行わず、データベース定義上でのみ列の削除を行う方法である。この方式は、削除に伴う時間が瞬間的であるという利点があるが、実体としては列の削除を行わないため、データベースの領域が大きいままである、レコードの読み込みに、レコードが長い分と、列の削除をして要求元に転送する分、処理時間が長く掛かる、という欠点がある。この方式では、再編成の際に、削除対象の列を実際に削除することが可能である。
図25は、過去保持型・定義削除方式により列eを削除する場合の図である。図25では、列eに網掛けを施しているが、この意味は以下の説明で詳述する。データベース定義体と論理構造変換テーブルX27は図26に記述してある。列eを削除する直前の状態に対するデータベース定義体をV3とし、列eを削除した後のデータベース定義体をV4としている。データベース定義体V1、V2、V3は、図24に記載したものと同じである。また、図46から図49が参考となる。
以上のように、定義削除方式による列削除は瞬時に完了するので、列追加の場合のように、列削除中のアクセスに関する問題は無い。列削除後のアクセスに関して説明を行う。列削除後の要求元が、どのバージョンのデータベース定義体を使用しているかの識別を行う。リクエスト受付処理、インデックス検索を行い、レコードを検出するまでは、他の場合と同様である。読み取ったレコードのバージョンの判別を行う。そのバージョンのデータベース定義体35により、物理構造と論理構造の変換を行う。更に、要求元のデータベース定義体のバージョンに対して、論理構造変換テーブルを使用して論理構造の変換を行い、作成されたレコードを要求元に渡す。他の方式の場合と同様に、この方法に従って、レコードの更新、追加、削除が行える。代替キーによるアクセスも他の方式と同様に実行できる。
オーバーフロー・ブロック管理テーブルを用いた場合の格納やアクセスに関しては、データベースの物理構造が変更されていないので、定義削除を行う前と同様に実施可能である。
図27、29、30、31、32を用いて、過去保持型・子データベース方式の列削除に関して説明する。図27は、列削除を行うとするデータベースである。ここには、record0からrecord6までの7つのレコードが格納されている。各レコードは、列a,b,c,d,e,fからなっている。このレコードに対して列eの削除を行う。列削除を過去保持型・子データベース方式で行うことを、データベース・システムに対して指令する。データベース・システムでは、この指令により準備作業を行う。新規ロケーション・テーブル(図28の9)と、新規ロケーション・テーブル用の最終ポインター(図28の101)を作成する。更に、子データベースDB_A1(図28の3)を作成し、子ロケーション・テーブル(図28の15)と子ロケーション・テーブル用の最終ポインター(図28の151)を作成する。現用ロケーション・テーブル用に列操作ポインター(図30の102)を作成し、その中身は現用ロケーション・テーブルの先頭アドレスとする。新規ロケーション・テーブル用にも列操作ポインター(図30の92)を作成し、その中身は新規ロケーション・テーブルの先頭アドレスとする。新規ロケーション・テーブルの列操作ポインターは最終ポインターでも代用可能である。現用ロケーション・テーブルの最終ポインター101が指しているエントリーと同じエントリーを指す列操作完了ポインター104を作成する。1更に、データベース定義体V4(図29のD430とD4130)、論理構造変換テーブル(図29のX30)を作成する。データベース定義体V1(図29のD1)、V2(図29のD225)、V3(図29のD325)は、図24のものと同じである。つまり、図27のデータベースは、図23のデータベースと同じものである。
この状態は、列追加・子データベース方式の逆の動作を行っているので、図30に示した状態は、図5の列追加:過去遡及型・子データベース方式と図9の列追加:過去遡及型・直接追加方式を組み合わせたものになっており、列削除を行っている状態であっても、アクセスは問題なく実行できる。図式としては図46から図49が適用される。また、論理構造変換テーブルによる論理構造変換で、V4から他のバージョンへの変換は、過去保持型・定義削除方式で説明したと同様に、列eの論理位置と長さに特別の意味を持たせて、論理構造変換を可能としている。
オーバーフロー・ブロック管理テーブルを用いたデータベース形式に対して本方式を適用する場合の、データの格納やアクセスは、列追加・子データベース方式と同様であるので、ここでは詳しい説明を省略する。
過去非保持型・直接列削除方式に関して説明する。この方式は、既存のレコードから削除列を削除したレコードのみを、新たなレコードとして、ブロックに書き戻す方法である。この方式は、列追加における直接列追加方式と類似点が多い。この方法を図32を使用して説明する。まず、現用ロケーション・テーブル10に対して、新規ロケーション・テーブル9を用意する。次に、現用ロケーション・テーブルと新規ロケーション・テーブルに対して、列操作ポインターを1つづつ用意する。列操作ポインターは、最初は各々のロケーション・テーブルの最初のエントリーを指している。更に、現用ロケーション・テーブルの最終ポインター101が指しているロケーション・テーブル・エントリーと同一の場所を指す列操作完了ポインター104を設ける。列操作完了ポインターの値は、列削除が完了するまで変更されない。
オーバーフロー・ブロック管理テーブルを用いた形式のデータベースに対して本方式を適用する場合は、列追加:過去遡及型で述べた方法を適用すればよいので、ここでは詳細な説明は省略する。データの追加や変更・削除がいつでも可能なのは言うまでも無い。
次に、列削除を定義削除方式によって実行した場合に、その後の再編成時に列eをどう扱うかで、再編成は3通りの方法をとることができる。
一つ目は、列eをそのまま保持し続ける方式である。この方式のメリットは、再編成に必要な時間を短縮できる、列eを使用しているプログラムの稼動を保証できる、という点にある。一方で、列eを実体データベースから削除した場合に比較して、レコードのアクセスに時間が掛かる、データベースの格納容量が列eの分だけ余分に必要となる、というデメリットがある。
2つ目の方法は、実体データベースから列eを削除するが、列eを子データベースとして作成しておく、という方式である。子データベースは、列追加で子データベース方式に関して説明を行ったが、その説明と同じとなる。新規データベースは列eと主キーである列aからなる子レコードとして格納される。この方式のメリットは、列eを使用していたプログラムの稼動を保証できる、という点と、データベース定義体V4を使用しているプログラムからのアクセスが早くなる、という点である。一方で、再編成時に新たにデータベースを作成するので、再編成にかかる時間が増加する、という点と、新規データベースのための領域が余分に必要である、というデメリットがある。実施方法は過去保持型・子データベース方式で説明した方法を適用する。
3つ目の方法は、実体データベースから列eを削除してしまう方法である。この方法は、列削除・直接削除方式と方式的には全く同じである。データベース領域が最も少なくて済むことである。一方で、列eを使用しているプログラムの稼動が保証できない、というデメリットがある。実施方法は過去非保持型・直接削除方式で説明した方法を適用する。
オーバーフロー・ブロック管理テーブルを用いた形式のデータベースに本方式を適用する場合は、これまで説明してきた方法と変わる所が無いので詳細な説明は省略する。再編成を行っている間の、データの追加や変更・削除が可能であるのは言うまでも無い。
図40を用いて、アクセラレーター・システムの説明を行う。アクセラレーター・システムの原理は次のようなものである。ロケーション・テーブルや代替キー・ロケーション・テーブルに対して、バイナリー・サーチを行って目的のレコードを見つける。ロケーション・テーブルに対してバイナリー・サーチを行う際には、二分割点を幾度も探すことになり、この回数は、ブロック内でレコードを探すための回数よりも多くなることが一般的である。また、同時に複数のプロセスから、同じブロック内のレコードを要求する可能性は相当に低いものである。よって、ロケーション・テーブルと代替キー・ロケーション・テーブルのコピーを複数保有し、各々に対して並行してバイナリー・サーチが行えるようにすれば、レコードに対するアクセス要求を数多く実行することが可能となる。
次に、「アクセラレーター機能」を用いたシステムで、プライマリー・システムとアクセラレーター・システムの同期に関して適用に関して図41を用いて説明する。プライマリー・システムでは、ロケーション・テーブル10、代替キー・ロケーション・テーブルALAO、代替キー・ロケーション・テーブルALB0、代替キー・ロケーション・テーブルALC0、を持っている。更に、最終ポインター(101、10A1、10B1、10C1)を持っている。データベースがオーバーフロー・ブロック管理テーブルを用いた形式である場合には、オーバーフロー・ブロック管理テーブル20、代替キー・オーバーフロー・ブロック管理テーブル20A、代替キー・オーバーフロー・ブロック管理テーブル20B、代替キー・オーバーフロー・ブロック管理テーブル20C、を持つ。また、オーバーフロー・ブロック管理テーブルには、オーバーフロー・ブロック管理テーブル・ポインター201を設け、代替キー・オーバーフロー・ブロック管理テーブル20Aに対して、代替キー・オーバーフロー・ブロック管理テーブル・ポインター20A1を設け、同様に、代替キー・オーバーフロー・ブロック管理テーブル・ポインター20B、20Cを設けている。
列を追加する場合や再編成中のデータベースに対するアクセスの説明で、データベース定義体を変更したり、作成したりすることを説明した。このようなデータベース定義体を人手によって作成したり、変更したりすることは、手間が掛かり、間違いを発生させる可能性も大きくなるため、好ましくない。本システムによって自動的に作成、変更されることが好ましいのは当然である。以下では、データベース定義体の作成、変更を自動的に行う方法について説明する。図4で示した、V1に付いては人手で作成する以外に方法はない。自動的に作成、変更を行うのは、V2以降を作成する場合や、新しいバージョンのデータベース定義体を作成する際に、それよりも前のバージョンのデータベース定義体を変更する場合である。まず、列の追加の場合の図6を例にとってみる。ここでは、V1に対してV2では、列fが追加されている。また、その追加方法は列追加・子データベース方式によるものである。これらの、列を追加すること、および列を追加する方式の決定は、システム管理者が行うべき事項である。列を追加すること、および列を追加する方式がシステム管理者によって決定されて、データベース・システムに通知されると、データベース・システムでは次のようにして、V2のデータベース定義体の作成と、必要あればV1の変更を行う。図6の場合は、V1の変更は無い。
再編成が開始する前に必要なデータベース定義体を作成する必要がある。この場合の論理を次に説明する。V2のデータベース2つを、再編成を行って1つにするのであるから、データベース定義体の変更が必要であることはすぐに判定できる。これをV3とする。V3では、2つであったデータベースが1つになるが、論理的にはV2と変わらない。論理構造は、V2をそのまま引き継ぐ。物理的には、列bが外出しになっていたのが、新規レコードには含まれることになる。子データベースは不要となり、物理レコードも一つとなる。
Claims (19)
- データを格納し、検索するデータベース・システムにおいて、
或るバージョンのデータベース定義体により定義されたレコードを、別のバージョンのデータベース定義体により定義されたレコードに変換する構造変換部と、
或る1種類のテーブルのレコードに対して複数のバージョンのデータベース定義体と、
そのデータベース定義体により定義された複数のバージョンのレコードを格納するデータ格納部と、を備えたデータベース・システム。 - 請求項1に記載のデータベース・システムにおいて、
データベース定義体により定義されたレコードを、そのデータベース定義体に振り分ける手段、を備えたデータベース・システム。 - 請求項1に記載のデータベース・システムにおいて、
或るデータベース定義体によって定義されたレコードに対応した要求元からのアクセス要求に対して、その要求元が要求しているデータベース定義体によって定義されたレコードに変換する手段、を備えたデータベース・システム。 - データを格納し、検索するデータベース・システムにおいて、
或るバージョンのデータベース定義体により定義されたレコードを、別のバージョンのデータベース定義体により定義されたレコードに変換する構造変換部と、
或る1種類のテーブルのレコードに対して単一のバージョンのデータベース定義体と、
そのデータベース定義体により定義された単一のバージョンのレコードを格納するデータ格納部と、を備えたデータベース・システム。 - 請求項1に記載のデータベース・システムにおいて、
前記レコードは、主キー項目を含むデータ項目を持ち、
データレコードを主キーの順に格納するプライマリー・ブロックとオーバーフロー・ブロックと、
プライマリー・ブロックのアドレスを格納するロケーション・テーブル・レコードと、
ロケーション・テーブル・レコードを主キーの順に格納するロケーション・テーブルと、
ロケーション・テーブルの使用領域の最後を示す最終ポインターと、
追加列と主キーとからなる子レコードを格納する、子プライマリー・ブロックと子オーバーフロー・ブロックと、
子プライマリー・ブロックのアドレスを格納する子ロケーション・テーブル・レコードと、
子ロケーション・テーブル・レコードを主キーの順に格納する子ロケーション・テーブルと、
子ロケーション・テーブルの使用領域の最後を示す最終ポインターと、を備えたデータベース・システム。 - 請求項4に記載のデータベース・システムにおいて、
前記レコードは、主キー項目を含むデータ項目を持ち、
データレコードを主キーの順に格納するプライマリー・ブロックとオーバーフロー・ブロックと、
プライマリー・ブロックのアドレスを格納するロケーション・テーブル・レコードと、
ロケーション・テーブル・レコードを主キーの順に格納するロケーション・テーブルと、
ロケーション・テーブルの使用領域の最後を示す最終ポインターと、
追加列と主キーとからなる子レコードを格納する、子プライマリー・ブロックと子オーバーフロー・ブロックと、
子プライマリー・ブロックのアドレスを格納する子ロケーション・テーブル・レコードと、
子ロケーション・テーブル・レコードを主キーの順に格納する子ロケーション・テーブルと、
子ロケーション・テーブルの使用領域の最後を示す最終ポインターと、
列操作ポインターと、を備えたデータベース・システム。 - 請求項5又は請求項6に記載のデータベース・システムにおいて、
オーバーフロー・ブロック管理テーブルと、
オーバーフロー・ブロック管理テーブル・ポインターと、を備えたデータベース・システム。 - 請求項1又は請求項4に記載のデータベース・システムにおいて、
主キー項目を含むデータ項目を持つデータレコードと、
データレコードを主キーの順に格納するプライマリー・ブロックとオーバーフロー・ブロックと、
プライマリー・ブロックのアドレスを格納するロケーション・テーブル・レコードと、
ロケーション・テーブル・レコードを主キーの順に格納するロケーション・テーブルと、
ロケーション・テーブルの使用領域の最後を示す最終ポインターと、
列追加後のレコードが格納されたプライマリー・ブロックのアドレスを格納する新規ロケーション・テーブル・レコードと、
新規ロケーション・テーブル・レコードを主キーの順に格納する新規ロケーション・テーブルと、
新規ロケーション・テーブルの使用領域の最後を示す最終ポインターと、を備えたデータベース・システム。 - 請求項8に記載のデータベース・システムにおいて、
現用ロケーション・テーブル用列操作ポインターと、
新規ロケーション・テーブル用列操作ポインターと、
列操作完了ポインターと、を備えたデータベース・システム。 - 請求項8に記載のデータベース・システムにおいて、
現用オーバーフロー・ブロック管理テーブルと、
現用オーバーフロー・ブロック管理テーブル・ポインターと、
新規オーバーフロー・ブロック管理テーブルと、
新規オーバーフロー・ブロック管理テーブル・ポインターと、を備えたデータベース・システム。 - 請求項5又は請求項6に記載のデータベース・システムにおいて、
新規ロケーション・テーブルと、
新規ロケーション・テーブルの使用領域の最後を示す新規最終ポインターと、
現用ロケーション・テーブル用の列操作ポインターと、
新規ロケーション・テーブル用の列操作ポインターと、を備えたデータベース・システム。 - 請求項1に記載のデータベース・システムにおいて、
主キー項目を含むデータ項目を持つデータレコードと、
データレコードを主キーの順に格納するプライマリー・ブロックとオーバーフロー・ブロックと、
プライマリー・ブロックのアドレスを格納するロケーション・テーブル・レコードと、
ロケーション・テーブル・レコードを主キーの順に格納するロケーション・テーブルと、
ロケーション・テーブルの使用領域の最後を示す最終ポインターと、
削除列と主キーとからなる子レコードを格納する、子プライマリー・ブロックと子オーバーフロー・ブロックと、
子プライマリー・ブロックのアドレスを格納する子ロケーション・テーブル・レコードと、
子ロケーション・テーブル・レコードを主キーの順に格納する子ロケーション・テーブルと、
子ロケーション・テーブルの使用領域の最後を示す最終ポインターと、を備えたデータベース・システム。 - 請求項12に記載のデータベース・システムにおいて、
オーバーフロー・ブロック管理テーブルと、
オーバーフロー・ブロック管理テーブル・ポインターと、を備えたデータベース・システム。 - 請求項1又は請求項4に記載のデータベース・システムにおいて、
主キー項目を含むデータ項目を持つデータレコードと、
データレコードを主キーの順に格納するプライマリー・ブロックとオーバーフロー・ブロックと、
プライマリー・ブロックのアドレスを格納するロケーション・テーブル・レコードと、
ロケーション・テーブル・レコードを主キーの順に格納するロケーション・テーブルと、
ロケーション・テーブルの使用領域の最後を示す最終ポインターと、
列削除後のレコードが格納されたプライマリー・ブロックのアドレスを格納する新規ロケーション・テーブル・レコードと、
新規ロケーション・テーブル・レコードを主キーの順に格納する新規ロケーション・テーブルと、
新規ロケーション・テーブルの使用領域の最後を示す最終ポインターと、を備えたデータベース・システム。 - 請求項14に記載のデータベース・システムにおいて、
現用オーバーフロー・ブロック管理テーブルと、
現用オーバーフロー・ブロック管理テーブル・ポインターと、
新規オーバーフロー・ブロック管理テーブルと、
新規オーバーフロー・ブロック管理テーブル・ポインターと、を備えたデータベース・システム。 - 請求項1又は請求項4に記載のデータベース・システムにおいて、
主キー項目を含むデータ項目を持つデータレコードと、
データレコードを主キーの順に格納するプライマリー・ブロックとオーバーフロー・ブロックと、
プライマリー・ブロックのアドレスを格納するロケーション・テーブル・レコードと、
ロケーション・テーブル・レコードを主キーの順に格納するロケーション・テーブルと、
ロケーション・テーブルの使用領域の最後を示す最終ポインターと、
フランド・ロケーション・テーブルと、
フランド・ロケーション・テーブルの使用領域の最後を示すフランド最終ポインターと、
フランド列操作ポインターと、
フランド列操作完了ポインターと、を備えたデータベース・システム。 - 請求項1又は請求項4に記載のデータベース・システムにおいて、
代替キー値と主キー値からなる代替キー・レコードと、
代替キー・レコードを代替キーの順に格納する代替キー・ブロックと代替キー・オーバーフロー・ブロックと、
代替キー・ブロックのアドレスを格納する代替キー・ロケーション・テーブル・レコードと、
代替キー・ロケーション・テーブル・レコードを代替キーの順に格納する代替キー・ロケーション・テーブルと、
代替キー・ロケーション・テーブルの使用領域の最後を示す最終ポインターと、
フランド代替キー・ロケーション・テーブルと
フランド代替キー・ロケーション・テーブルの使用領域の最後を示すフランド代替キー最終ポインターと、
フランド列操作ポインターと、
フ ランド列操作完了ポインターと、を備えたデータベース・システム。 - 請求項1又は請求項4に記載のデータベース・システムにおいて、
レコードの一部またはレコード外に、そのレコードが作成されたデータベース定義体のバージョン情報を保持するデータベース・システム。 - 請求項1又は請求項4に記載のデータベース・システムにおいて、
任意のバージョンのデータベース定義体に対して変更を加えることにより、新たなバージョンのデータベース定義体を作成するデータベース・システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004063772 | 2004-03-08 | ||
JP2004063772 | 2004-03-08 | ||
PCT/JP2005/003914 WO2005086003A1 (ja) | 2004-03-08 | 2005-03-07 | データベース・システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2005086003A1 true JPWO2005086003A1 (ja) | 2008-01-24 |
Family
ID=34918171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006510776A Pending JPWO2005086003A1 (ja) | 2004-03-08 | 2005-03-07 | データベース・システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070078909A1 (ja) |
JP (1) | JPWO2005086003A1 (ja) |
WO (1) | WO2005086003A1 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4854973B2 (ja) * | 2005-03-09 | 2012-01-18 | 富士通株式会社 | 記憶制御プログラム、記憶制御方法、記憶制御装置および記憶制御システム |
US8713009B2 (en) * | 2008-09-25 | 2014-04-29 | Yahoo! Inc. | Associating objects in databases by rate-based tagging |
JP5322706B2 (ja) * | 2009-03-10 | 2013-10-23 | キヤノン株式会社 | 情報処理システム、情報処理方法およびプログラム |
JP5357068B2 (ja) | 2010-01-20 | 2013-12-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法 |
US8473515B2 (en) * | 2010-05-10 | 2013-06-25 | International Business Machines Corporation | Multi-tenancy in database namespace |
US20120036166A1 (en) * | 2010-08-06 | 2012-02-09 | Oracle International Corporation | Effective dating for table or relationship modifications |
JP5594120B2 (ja) | 2010-12-17 | 2014-09-24 | 富士通株式会社 | データ変換プログラム、データ変換装置およびデータ変換方法 |
US10338947B2 (en) * | 2011-03-15 | 2019-07-02 | Microsoft Technology Licensing, Llc | Extent virtualization |
US9171027B2 (en) | 2013-05-29 | 2015-10-27 | International Business Machines Corporation | Managing a multi-version database |
US10114878B2 (en) * | 2013-12-16 | 2018-10-30 | International Business Machines Corporation | Index utilization in ETL tools |
JP2016099709A (ja) | 2014-11-19 | 2016-05-30 | 富士通株式会社 | アクセス制御プログラム、アクセス制御方法、及び、アクセス制御装置 |
EP3304954A4 (en) * | 2015-05-29 | 2018-08-08 | Telefonaktiebolaget LM Ericsson (publ) | Method and apparatus for client side encoding in a data processing system |
WO2018216346A1 (ja) * | 2017-05-24 | 2018-11-29 | 株式会社東新システム | データ交換システム、データ交換方法、及びデータ交換プログラム |
US10628402B2 (en) * | 2017-09-27 | 2020-04-21 | International Business Machines Corporation | Full data set avoidance |
US20220012236A1 (en) * | 2020-07-10 | 2022-01-13 | Salesforce.Com, Inc. | Performing intelligent affinity-based field updates |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04112242A (ja) * | 1990-08-31 | 1992-04-14 | Fujitsu Ltd | データベース処理装置および定義変更処理方法 |
JPH04243437A (ja) * | 1991-01-18 | 1992-08-31 | Nec Corp | データベース移行方式 |
JPH06175897A (ja) * | 1992-12-02 | 1994-06-24 | Fujitsu Ltd | データベース |
JPH07210435A (ja) * | 1994-01-26 | 1995-08-11 | Fuji Xerox Co Ltd | データベース管理装置 |
JPH1131096A (ja) * | 1997-07-11 | 1999-02-02 | Anetsukusu Syst Kk | データ格納検索方式 |
JP2001356945A (ja) * | 2000-04-12 | 2001-12-26 | Anetsukusu Syst Kk | データバックアップ・リカバリー方式 |
JP2002268930A (ja) * | 2001-03-08 | 2002-09-20 | Ricoh Co Ltd | データベース構成変更装置、方法及び記録媒体 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0360387B1 (en) * | 1988-09-23 | 1996-05-08 | International Business Machines Corporation | Data base management system |
US5179701A (en) * | 1989-06-15 | 1993-01-12 | Intellution, Incorporation | Organizing a process database having different types of data blocks by maintaining separate tables for generic routines and for block-type specific routines |
CA2066724C (en) * | 1989-09-01 | 2000-12-05 | Helge Knudsen | Operating system and data base |
US5257365A (en) * | 1990-03-16 | 1993-10-26 | Powers Frederick A | Database system with multi-dimensional summary search tree nodes for reducing the necessity to access records |
US5263160A (en) * | 1991-01-31 | 1993-11-16 | Digital Equipment Corporation | Augmented doubly-linked list search and management method for a system having data stored in a list of data elements in memory |
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 |
JPH05233720A (ja) * | 1992-02-20 | 1993-09-10 | Fujitsu Ltd | Dbにおけるデータベースアシスト方法 |
US5555388A (en) * | 1992-08-20 | 1996-09-10 | Borland International, Inc. | Multi-user system and methods providing improved file management by reading |
US5446881A (en) * | 1992-09-25 | 1995-08-29 | At&T Corp. | Database storage and retrieval method using a declining stage size and repetitive searches |
US5794229A (en) * | 1993-04-16 | 1998-08-11 | Sybase, Inc. | Database system with methodology for storing a database table by vertically partitioning all columns of the table |
US5615367A (en) * | 1993-05-25 | 1997-03-25 | Borland International, Inc. | System and methods including automatic linking of tables for improved relational database modeling with interface |
CA2117846C (en) * | 1993-10-20 | 2001-02-20 | Allen Reiter | Computer method and storage structure for storing and accessing multidimensional data |
US5499358A (en) * | 1993-12-10 | 1996-03-12 | Novell, Inc. | Method for storing a database in extended attributes of a file system |
US5499359A (en) * | 1994-01-18 | 1996-03-12 | Borland International, Inc. | Methods for improved referential integrity in a relational database management system |
US5666524A (en) * | 1994-08-31 | 1997-09-09 | Price Waterhouse Llp | Parallel processing system for traversing a transactional database |
US5611076A (en) * | 1994-09-21 | 1997-03-11 | Micro Data Base Systems, Inc. | Multi-model database management system engine for databases having complex data models |
CA2167790A1 (en) * | 1995-01-23 | 1996-07-24 | Donald S. Maier | Relational database system and method with high data availability during table data restructuring |
JPH0916607A (ja) * | 1995-06-26 | 1997-01-17 | Hitachi Ltd | データベース管理システムにおけるインデクス管理方法 |
US5644763A (en) * | 1995-06-28 | 1997-07-01 | Sybase, Inc. | Database system with improved methods for B-tree maintenance |
US5842196A (en) * | 1996-04-03 | 1998-11-24 | Sybase, Inc. | Database system with improved methods for updating records |
US5933820A (en) * | 1996-05-20 | 1999-08-03 | International Business Machines Corporation | System, method, and program for using direct and indirect pointers to logically related data and targets of indexes |
US5881379A (en) * | 1996-05-20 | 1999-03-09 | International Business Machines Corporation | System, method, and program for using duplicated direct pointer sets in keyed database records to enhance data recoverability without logging |
US5870747A (en) * | 1996-07-09 | 1999-02-09 | Informix Software, Inc. | Generalized key indexes |
US6175835B1 (en) * | 1996-07-26 | 2001-01-16 | Ori Software Development, Ltd. | Layered index with a basic unbalanced partitioned index that allows a balanced structure of blocks |
US6208993B1 (en) * | 1996-07-26 | 2001-03-27 | Ori Software Development Ltd. | Method for organizing directories |
US6321234B1 (en) * | 1996-09-18 | 2001-11-20 | Sybase, Inc. | Database server system with improved methods for logging transactions |
US5852822A (en) * | 1996-12-09 | 1998-12-22 | Oracle Corporation | Index-only tables with nested group keys |
US5893120A (en) * | 1997-01-02 | 1999-04-06 | Nemes; Richard Michael | Methods and apparatus for information storage and retrieval using a hashing technique with external chaining and on-the-fly removal of expired data |
JPH10333953A (ja) * | 1997-04-01 | 1998-12-18 | Kokusai Zunou Sangyo Kk | 統合データベースシステムおよびそのデータベース構造を管理するプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP3734334B2 (ja) * | 1997-05-07 | 2006-01-11 | 富士通株式会社 | データ移行システム、データ移行用プログラムを格納したコンピュータ読み取り可能な記録媒体、及びデータ移行方法 |
US5974407A (en) * | 1997-09-29 | 1999-10-26 | Sacks; Jerome E. | Method and apparatus for implementing a hierarchical database management system (HDBMS) using a relational database management system (RDBMS) as the implementing apparatus |
US6018742A (en) * | 1998-07-07 | 2000-01-25 | Perigis Corporation | Constructing a bifurcated database of context-dependent and context-independent data items |
US6457021B1 (en) * | 1998-08-18 | 2002-09-24 | Microsoft Corporation | In-memory database system |
US6438652B1 (en) * | 1998-10-09 | 2002-08-20 | International Business Machines Corporation | Load balancing cooperating cache servers by shifting forwarded request |
US6886012B1 (en) * | 1998-11-18 | 2005-04-26 | International Business Machines Corporation | Providing traditional update semantics when updates change the location of data records |
US6279004B1 (en) * | 1998-12-22 | 2001-08-21 | International Business Machines Corporation | Database index key versioning |
US6381605B1 (en) * | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
US6301646B1 (en) * | 1999-07-30 | 2001-10-09 | Curl Corporation | Pointer verification system and method |
US6470354B1 (en) * | 1999-08-05 | 2002-10-22 | International Business Machines Corporation | Implementing persistent object services (POS) on top of a relational database |
US6418448B1 (en) * | 1999-12-06 | 2002-07-09 | Shyam Sundar Sarkar | Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web |
US20020013779A1 (en) * | 2000-03-20 | 2002-01-31 | Sridhar Mandayam Andampillai | Reverse foreign key techniques in website development |
US6694325B2 (en) * | 2000-10-16 | 2004-02-17 | Frank Jas | Database method implementing attribute refinement model |
EP1248206A1 (en) * | 2001-04-05 | 2002-10-09 | Sun Microsystems, Inc. | Method and apparatus for database table definition |
US20030229610A1 (en) * | 2002-06-07 | 2003-12-11 | Van Treeck George Michael | Simpler and more concise interface to relational databases |
JP4467257B2 (ja) * | 2002-06-28 | 2010-05-26 | 株式会社日立製作所 | データベース管理方法および装置並びにその処理プログラム |
WO2004025475A1 (ja) * | 2002-09-10 | 2004-03-25 | Annex Systems Incorporated | データベースの再編成システム、並びに、データベース |
AU2003301358A1 (en) * | 2002-10-21 | 2004-05-04 | Annex Systems Incorporated | Database accelerator |
US20040163041A1 (en) * | 2003-02-13 | 2004-08-19 | Paterra, Inc. | Relational database structures for structured documents |
US7386563B1 (en) * | 2003-12-11 | 2008-06-10 | Unisys Corporation | Method for using deferred column retrieval to improve row retrieval and query performance of OLE DB applications |
US20070005612A1 (en) * | 2005-06-29 | 2007-01-04 | International Business Machines Corporation | Methods and systems for optimizing searches within relational databases having hierarchical data |
-
2005
- 2005-03-07 WO PCT/JP2005/003914 patent/WO2005086003A1/ja active Application Filing
- 2005-03-07 JP JP2006510776A patent/JPWO2005086003A1/ja active Pending
-
2006
- 2006-09-08 US US11/530,342 patent/US20070078909A1/en not_active Abandoned
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04112242A (ja) * | 1990-08-31 | 1992-04-14 | Fujitsu Ltd | データベース処理装置および定義変更処理方法 |
JPH04243437A (ja) * | 1991-01-18 | 1992-08-31 | Nec Corp | データベース移行方式 |
JPH06175897A (ja) * | 1992-12-02 | 1994-06-24 | Fujitsu Ltd | データベース |
JPH07210435A (ja) * | 1994-01-26 | 1995-08-11 | Fuji Xerox Co Ltd | データベース管理装置 |
JPH1131096A (ja) * | 1997-07-11 | 1999-02-02 | Anetsukusu Syst Kk | データ格納検索方式 |
JP2001356945A (ja) * | 2000-04-12 | 2001-12-26 | Anetsukusu Syst Kk | データバックアップ・リカバリー方式 |
JP2002268930A (ja) * | 2001-03-08 | 2002-09-20 | Ricoh Co Ltd | データベース構成変更装置、方法及び記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
WO2005086003A1 (ja) | 2005-09-15 |
US20070078909A1 (en) | 2007-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2005086003A1 (ja) | データベース・システム | |
US6029170A (en) | Hybrid tree array data structure and method | |
CN105868228B (zh) | 为olap和oltp事务提供无锁读取和写入操作的内存数据库系统 | |
US11169978B2 (en) | Distributed pipeline optimization for data preparation | |
US6711563B1 (en) | Methods of organizing data and processing queries in a database system, and database system and software product for implementing such methods | |
US6633883B2 (en) | Methods of organizing data and processing queries in a database system, and database system and software product for implementing such methods | |
US7376658B1 (en) | Managing cross-store relationships to data objects | |
US11461304B2 (en) | Signature-based cache optimization for data preparation | |
EP2077512A1 (en) | Method and system for implementing an enhanced database | |
US20030074348A1 (en) | Partitioned database system | |
EA007209B1 (ru) | Способ управления ключами в базе данных, база данных и способ организации базы данных | |
ZA200303415B (en) | Method and apparatus for data processing. | |
JP7395227B2 (ja) | データバックアップ方法、装置、サーバ及びコンピュータプログラム | |
JPH11143755A (ja) | 階層構成情報のコピーおよび共有方法 | |
WO1996024102A1 (en) | Method and apparatus for a physical storage architecture for a shared file environment | |
AU2009246432A1 (en) | Managing storage of individually accessible data units | |
US7912869B1 (en) | Database component packet manager | |
US8682872B2 (en) | Index page split avoidance with mass insert processing | |
EP3362808B1 (en) | Cache optimization for data preparation | |
WO2017065888A1 (en) | Step editor for data preparation | |
JPH0212464A (ja) | データベース・システム | |
US20210056090A1 (en) | Cache optimization for data preparation | |
Adamanskiy et al. | EJDB-Embedded JSON database engine | |
US11288447B2 (en) | Step editor for data preparation | |
US20220335030A1 (en) | Cache optimization for data preparation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A527 Effective date: 20060629 |
|
AA64 | Notification of invalidation of claim of internal priority (with term) |
Free format text: JAPANESE INTERMEDIATE CODE: A241764 Effective date: 20070424 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091104 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100413 |