Loading article…

コンピュータ サイエンスでは、ストリームとは、時間の経過とともに利用可能になる、潜在的に無制限のデータ要素のシーケンスです。ストリームは、大きなバッチではなく、一度に 1 つずつ処理されるコンベア ベルト上のアイテムと考えることができます。ストリームは、バッチ データとは異なる方法で処理されます。
ストリームには潜在的に無制限のデータがあるため、通常の関数はストリーム全体を操作することはできません。 形式的には、ストリームはコデータ(潜在的に無制限) であり、データ (有限) ではありません。
ストリームを操作して別のストリームを生成する関数はフィルターと呼ばれ、関数合成に類似した方法でパイプラインに接続できます。フィルターは、一度にストリームの 1 つの項目を操作することも、移動平均などの複数の入力項目に基づいて出力項目を作成することもできます。
例
「ストリーム」という用語は、次のようないくつかの類似した方法で使用されます。
- sed、awk、perlなどの「ストリーム編集」。ストリーム編集では、ファイルをユーザー インターフェイスにロードせずに、ファイルをその場で処理します。このような使用法の 1 つの例としては、コマンド ラインからディレクトリ内のすべてのファイルを検索して置換することが挙げられます。
- UnixおよびC 言語に基づく関連システムでは、ストリームはデータのソースまたはシンクであり、通常は個々のバイトまたは文字です。ストリームは、ファイルの読み取りや書き込み、またはネットワーク ソケットを介した通信を行うときに使用される抽象化です。標準ストリームは、すべてのプログラムで使用できる 3 つのストリームです。
- I/O デバイスは、時間の経過とともに潜在的に無制限のデータを生成または消費するため、ストリームとして解釈できます。
- オブジェクト指向プログラミングでは、入力ストリームは通常、反復子として実装されます。
- Scheme言語やその他の言語では、ストリームは遅延評価または遅延されたデータ要素のシーケンスです。ストリームはリストと同様に使用できますが、後続の要素は必要なときにのみ計算されます。したがって、ストリームは無限のシーケンスとシリーズを表すことができます。[1]
- Smalltalk 標準ライブラリや他のプログラミング言語でも、ストリームは外部反復子です。Scheme と同様に、ストリームは有限または無限のシーケンスを表すことができます。
- ストリーム処理—並列処理、特にグラフィック処理では、ストリームという用語はハードウェアとソフトウェアの両方に適用されます。ここでは、プログラム状態がストリームの開始条件を満たすとすぐに、データフロー プログラミング言語で処理されるデータの準連続フローを定義します。
アプリケーション
ストリームは、プロセス間通信のチャネルの基になるデータ型として使用できます。
その他の用途
「ストリーム」という用語は、複数のデータセットが単一のファイル名に関連付けられているファイル システム フォークにも適用されます。ほとんどの場合、通常のファイル データを構成するメイン ストリームが 1 つあり、追加のストリームにはメタデータが含まれます。ここで「ストリーム」は、拡張属性などの固定サイズのメタデータではなく、「可変サイズのデータ」を示すために使用されますが、それ以外の「ストリーム」とは異なり、「時間の経過とともに利用可能で、潜在的に無限のデータ」を意味します。
参照
- ビットストリーム
- コデータ
- データストリーム
- データストリームマイニング
- トラフィックフロー(コンピュータネットワーク)
- ネットワークソケット
- ストリーミングアルゴリズム
- ストリーミングメディア
- ストリーム処理
参考文献
- ^ SRFI 41: ストリーム
外部リンク
- 大規模データ ストリーム向けの近似 L1 差分アルゴリズム、1995 年 Feigenbaum 他
