シーケンシャル
アクセスとは、
データ構造や
記憶装置において、データの先頭から順番に
アクセスしていく方式です。この方式では、目的のデータにたどり着くまでに、その手前にあるすべてのデータを順に読み進める必要があります。そのため、特に後方に位置するデータへの
アクセスには時間がかかるという特徴があります。これは、順次
アクセスとも呼ばれます。
この方式と対照的なのが、ランダム
アクセスです。ランダム
アクセスでは、データが格納されている位置を直接指定して、瞬時に
アクセスできます。しかし、シーケンシャル
アクセスには、ランダム
アクセスにはない利点も存在します。
シーケンシャルアクセスの利用例
かつては、カセットテープやビデオテープなどのオーディオ・ビデオメディアで広く利用されていました。これらのメディアでは、データの記録順序に従って再生を行うため、シーケンシャル
アクセスが適していました。
コンピュータの周辺機器においては、利便性の面からランダム
アクセスが可能な機器が主流です。しかし、業務用の
磁気テープ(LTOなど)は、依然としてシーケンシャル
アクセスが採用されています。また、ランダム
アクセスでは、シーク時間と呼ばれるデータの読み出し開始までの遅延が発生します。そのため、大容量のバックアップなど、大量のデータを連続的に処理する場面では、シーケンシャル
アクセスの方が高速に読み書きできる場合があります。
連結リストは、シーケンシャル
アクセスのみが可能な
データ構造の代表例です。連結リストでは、各要素(ノード)が次の要素への参照を持っており、目的の要素に
アクセスするには、先頭の要素から順に参照をたどっていく必要があります。この操作の計算量は、要素数に比例する線形時間O(n)となります。しかし、連結リストには、要素の追加や削除が
配列などの
データ構造よりも高速に実行できるというメリットがあります。
シーケンシャルアクセスのメディア
シーケンシャル
アクセスが用いられる主なメディアには、以下のようなものがあります。
紙テープ
パンチカード
磁気テープ
クイックディスク
ファイルへのシーケンシャルアクセス
多くの
オペレーティングシステムは、ハードディスクやSSDなどの記憶媒体に
ファイルシステムを提供し、データをファイル単位で管理しています。通常のファイルであれば、シーク操作によってランダム
アクセスが可能です。しかし、パイプなどの特殊なファイルや、シークができないファイルに対しては、シーケンシャル
アクセスのみが可能です。
また、一部の
オペレーティングシステムでは、シーケンシャル
アクセスが想定される場合に、ファイルオープン時にキャッシュの最適化ヒントを指定できるAPIが提供されています。Windows APIには、シーケンシャル
アクセスのみを許可するストリームを表すISequentialStreamインターフェースが存在し、ランダム
アクセスも許可するIStreamインターフェースは、ISequentialStreamから派生しています。
まとめ
シーケンシャル
アクセスは、データの先頭から順に読み書きする方式であり、ランダム
アクセスと比較して、特定の状況下では効率的なデータ処理を可能にします。特に、大容量データの連続的な読み書きが必要な場面や、
磁気テープのような特定のメディアでは、重要な役割を果たしています。
関連項目
* ランダム
アクセス