Indexed Sequential Access Method

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

Indexed Sequential Access Method(索引付き順次アクセス方式、さくいんつきじゅんじあくせすほうしき、一般にISAM)とは高速にアクセスが可能なデータの格納方法 (ファイル編成法) の一つである。IBMで開発され、今日ではリレーショナルデータベース管理システム (RDBMS、リレーショナルデータベース) をはじめとするほとんど全てのデータベース管理システム (DBMS) でのデータの格納に用いられている。

ISAMを用いたシステムではデータは固定長レコードとして格納される。当時の設計思想は磁気テープ記憶装置に高速で書き込むためにレコードを連続的に格納していくものだった。もう一つのデータとしてテーブルの内容へのポインタを格納したハッシュテーブル索引として用いることで、全データを検索することなく目的のデータを取り出すことを可能とした。

ISAMの実現は他のデータへのポインタがレコード内に格納されていたナビゲーショナルデータベースからの脱却を実現した。ISAMによる主要な利点は索引のサイズが小さく、高速な検索が可能で、必要なデータのみに直接アクセス可能としたことにある。それに加えてデータの変更が行われた場合にも、該当するデータのみの変更で済ますことが可能であり、関連する他のデータまで波及して変更を加える必要がないことも利点となった。

リレーショナルデータベースはテーブル同士のリンクを正常に維持するロジックが追加されるISAM方式と組み合わせての実装が行いやすい。代表的な例として、外部キーとして使われるフィールドの高速な検索のために索引が用いられる。 これは関連するデータへのポインタをレコードに直接格納する方法よりも遅い処理となるが、データの物理的な構成の変更があった場合でもリンクが正常に保たれるため、ポインタを書き換える必要がない。

ISAMはファイルへの直接の、順番に従ったアクセス方式であり,非常にわかりやすく実装も容易である。また、非常に高速なアクセス方式でもある。逆にISAMの欠点はそれぞれのクライアントマシンがアクセスしているファイルへの自身の接続状態を管理しなければならないことにある。これは一方で複数のデータの追加動作が衝突し、データが矛盾した状態に陥る可能性につながっている。一般的にこの問題はクライアントサーバモデルの導入によってサーバがクライアントの要求を直列化して扱うことによって解決されている。これは格納されたデータに対してクライアント側のレイヤーに存在しているSQLトランザクション概念の基礎となっている。

IBMではISAMの代わりにVSAM (Virtual Storage Access Method; 仮想記憶アクセス方式)と呼ばれる技術を用いるようになった。