(Translated by https://www.hiragana.jp/)
Indexed Sequential Access Method - Wikipedia

Indexed Sequential Access Method

ISAMから転送てんそう

Indexed Sequential Access Method (索引さくいん順次じゅんじアクセス方式ほうしき、さくいんつきじゅんじあくせすほうしき、一般いっぱんISAM)とは高速こうそくにアクセスが可能かのうなデータの格納かくのう方法ほうほう (ファイル編成へんせいほう) のひとつである。1つ以上いじょうのキーによってレコードをシーケンシャルまたはランダムに取得しゅとくできる。キーフィールドのインデックスは、インデックスファイルうち必要ひつようなファイルレコードの高速こうそく検索けんさく実現じつげんするために維持いじされる。元々もともとIBMメインフレームよう開発かいはつされたものだが、今日きょうでは関係かんけいデータベース管理かんりシステム (RDBMS、関係かんけいデータベース) をはじめとするほとんどすべてのデータベース管理かんりシステム (DBMS) でのデータの格納かくのうもちいられている。

ISAMという用語ようごは、いくつかの関連かんれんする概念がいねん使用しようされる。

  • IBM ISAM製品せいひん、およびそれが採用さいようするアルゴリズム[1]
  • アプリケーション開発かいはつしゃAPI直接ちょくせつ使用しようしてインデックスを検索けんさくし、データファイルないのレコードを検索けんさくするデータベースシステム対照たいしょうてきに、関係かんけいデータベースは、インデックスを自動的じどうてき選択せんたくするクエリ最適さいてき使用しようする[2]
  • データへのシーケンシャルアクセスとキーアクセスの両方りょうほう可能かのうにするインデックスけアルゴリズム[3]。 ほとんどのデータベースは、この目的もくてきのためにBのいくつかの変種へんしゅ使用しようするが、もとのIBM ISAM実装じっそうVSAM実装じっそうでは使用しようしていない。
  • もっと一般いっぱんてきには、データベースの任意にんいのインデックス。インデックスは、ほとんどすべてのデータベースで使用しようされる。

概要がいよう

編集へんしゅう

ISAMをもちいたシステムではデータは固定こていちょうレコードとして格納かくのうされる。元々もともとはキーシーケンスで順番じゅんばん格納かくのうされていた。インデックスばれるレコードのセカンダリセットには、かくレコードの場所ばしょへのポインタがふくまれているため、ぜんデータを検索けんさくすることなく目的もくてきのデータをすことを可能かのうとした。

ISAMの実現じつげんのデータへのポインタがレコードない格納かくのうされていたナビゲーショナルデータベースからの脱却だっきゃく実現じつげんした。ISAMによる主要しゅよう利点りてん索引さくいんのサイズがちいさく、高速こうそく検索けんさく可能かのうで、必要ひつようなデータのみに直接ちょくせつアクセス可能かのうとしたことにある。それにくわえてデータの変更へんこうおこなわれた場合ばあいにも、該当がいとうするデータのみの変更へんこうますことが可能かのうであり、関連かんれんするほかのデータまで波及はきゅうして変更へんこうくわえる必要ひつようがないことも利点りてんとなった。

ISAMファイルが作成さくせいされると、インデックスノードは修正しゅうせいされ、あと発生はっせいする挿入そうにゅうおよび削除さくじょちゅうにそれらのポインタは変更へんこうされない(リーフノードのコンテンツのみがあと変更へんこうされる)。この結果けっか一部いちぶのリーフノードへの挿入そうにゅうがノードの容量ようりょうえると、あたらしいレコードがオーバーフローチェーンに格納かくのうされる。テーブルからの削除さくじょよりも挿入そうにゅうかずおお場合ばあい、これらのオーバーフローチェーンは徐々じょじょ非常ひじょうおおきくなる可能かのうせいがあり、これはレコードの取得しゅとく必要ひつよう時間じかん影響えいきょうする[4]

関係かんけいデータベースはテーブル同士どうしのリンクを正常せいじょう維持いじするロジックが追加ついかされるISAM方式ほうしきわせての実装じっそうおこないやすい。代表だいひょうてきれいとして、外部がいぶキーとして使つかわれるフィールド高速こうそく検索けんさくのために索引さくいんもちいられる。 これは関連かんれんするデータへのポインタをレコードに直接ちょくせつ格納かくのうする方法ほうほうよりもおそ処理しょりとなるが、データの物理ぶつりてき構成こうせい変更へんこうがあった場合ばあいでもリンクが正常せいじょうたもたれるため、ポインタをえる必要ひつようがない。

ISAMはファイルへの直接ちょくせつの、順番じゅんばんしたがったアクセス方式ほうしきであり,非常ひじょうにわかりやすく実装じっそう容易よういである。ぎゃくにISAMの欠点けってんはそれぞれのクライアントマシンがアクセスしているファイルへの自身じしん接続せつぞく状態じょうたい管理かんりしなければならないことにある。これは一方いっぽう複数ふくすうのデータの追加ついか動作どうさ衝突しょうとつし、データが矛盾むじゅんした状態じょうたいおちい可能かのうせいにつながる。一般いっぱんてきにこの問題もんだいクライアントサーバモデル導入どうにゅうによってサーバがクライアントの要求ようきゅう直列ちょくれつしてあつかうことによって解決かいけつされている。これは格納かくのうされたデータにたいしてクライアントがわのレイヤーに存在そんざいしているデータベース管理かんりシステム(DBMS)やSQLトランザクション概念がいねん基礎きそとなっている。

IBMではISAMのわりにVSAM (Virtual Storage Access Method; 仮想かそう記憶きおくアクセス方式ほうしき)とばれる技術ぎじゅつもちいるようになった。さらにその、IBMはDB2開発かいはつした。2004ねん時点じてんで、IBMはDB2を主要しゅようデータベース管理かんりシステムとして推進すいしんしている。 VSAMは、DB2で使用しようされる物理ぶつりアクセス方式ほうしきである[よう出典しゅってん]

OpenVMSオペレーティングシステムは、 Files-11ファイルシステムをRMS(レコード管理かんりサービス)とわせて使用しようする。 RMSは、アプリケーションとディスクじょうのファイルのあいだ追加ついかのレイヤーを提供ていきょうし、複数ふくすうの3GLおよび4GL言語げんごあいだでデータ編成へんせいとアクセスの一貫いっかんした方法ほうほう提供ていきょうする。 RMSでは、シーケンシャル、相対そうたいレコード番号ばんごうアクセス、レコードファイルアドレスアクセス、インデックスきアクセスの4つのことなるデータアクセス方法ほうほう提供ていきょうする。

データのりまたはみのインデックスきアクセス方法ほうほうは、実際じっさいにファイルが適切てきせつ事前じぜん定義ていぎされたキーをつISAMファイルとして編成へんせいされている場合ばあいにのみ、のぞましい結果けっか提供ていきょうする。以前いぜん定義ていぎされたキーをかいしたデータへのアクセスは非常ひじょう高速こうそくである。複数ふくすうのキー、重複じゅうふくするキー、およびハッシュテーブルないのキー圧縮あっしゅくがサポートされている。既存きそんのファイルのキーを定義ていぎ/さい定義ていぎするユーティリティが提供ていきょうされている。 「ガベージコレクション」はべつのユーティリティをかいしておこなわれるが、レコードは削除さくじょできる。

設計せっけいじょう考慮こうりょ事項じこう

編集へんしゅう

ISAMは、コンピュータメモリ不足ふそくしていた時代じだい開発かいはつされた。IBMは、メモリ使用しようりょう最小限さいしょうげんになるようシステムを設計せっけいした。その反面はんめん入出力にゅうしゅつりょくチャネル制御せいぎょユニット、ディスクがビジー状態じょうたいたもたれてしまう。 ISAMファイルは、データレコードのコレクションと2つまたは3つのレベルのインデックスで構成こうせいされる。トラックインデックスには、インデックスを作成さくせいするシリンダーうえかくディスクトラック最高さいこうのキーがふくまれる。シリンダーインデックスには、シリンダーのさい上位じょういのキーと、対応たいおうするトラックインデックスのディスクアドレス格納かくのうされる。オプションのマスターインデックスは通常つうじょうおおきなファイルにのみ使用しようされ、シリンダーインデックストラックのさい上位じょういのキーとそのシリンダーインデックスのディスクアドレスをふくむ。ファイルがロードされると、データレコードは移動いどうされなくなる。挿入そうにゅうされたレコードは、べつオーバーフロー領域りょういき配置はいちされる。キーでレコードをつけるために、ディスクじょうのインデックスは複雑ふくざつ自己じこチャネルプログラムによって検索けんさくされる[5]。 これにより、チャネル、コントロールユニット、およびディスクのビジー時間じかん増加ぞうかした。のシステムで物理ぶつりメモリと仮想かそうメモリのサイズがおおきくなると、これは効率こうりつてきであるとなされ、VSAMは、メモリ使用しようりょうとディスクアクティビティのあいだのトレードオフを変更へんこうするために開発かいはつされた。

I/O操作そうさ開始かいしCP-67がチャネルプログラム全体ぜんたい固定こていメモリにコピーし、仮想かそうアドレスをじつアドレスに変換へんかんしたため、ISAMが自己じこえチャネルプログラムを使用しようすることで、あとOS/360のCP-67サポートが困難こんなんとなった[6]

ISAMスタイルの実装じっそう

編集へんしゅう

関連かんれん項目こうもく

編集へんしゅう

脚注きゃくちゅう

編集へんしゅう
  1. ^ Chin, Y.H. (1975). “Analysis of VSAM's free-space behavior”. VLDB '75: Proceedings of the 1st International Conference on Very Large Data Bases: 514–515. 
  2. ^ Bogue, Robert L. (2004ねん2がつ13にち). “Explore the differences between ISAM and relational databases”. 17 October 2014閲覧えつらん
  3. ^ Larson, Per-Åke (1981). “Analysis of index-sequential files with overflow chaining”. ACM Transactions on Database Systems 6 (4). 
  4. ^ Ramakrishnan Raghu, Gehrke Johannes - Database Management Systems, McGraw-Hill Higher Education (2000), 2nd edition (en) page 252
  5. ^ IBM Corporation (1973). DOS/VS LIOCS Volume 3: DAM and ISAM Logic. pp. 63–72. https://archive.org/details/bitsavers_ibm370DOSVIOCSVolume3DAMandISAMLogicRel28Jun73_36886118 Dec 30, 2018閲覧えつらん 
  6. ^ IBM Corporation (1972). IBM Virtual Machine Facility /370: Planning Guide. p. 45. http://www.bitsavers.org/pdf/ibm/370/VM_370/Release_1/GC20-1801-0_VM370_Planning_Guide_Aug72.pdf Jan 8, 2018閲覧えつらん 
  7. ^ Graf. “pblIsamFile Implementation”. mission-base.com. Sep 8, 2017閲覧えつらん