パイプとフィルタ
一連のデータ処理を独立した処理部品であるフィルタに分け、各部品の出力を次の部品の入力へパイプでつなぐアーキテクチャパターン。部品ごとに処理を変更したり、再利用したりしやすい。
イマシルちゃんの解説
「パイプとフィルタ」は、データの加工を段階に分けて組み立てるアーキテクチャパターンだよ。
例えば、集めた記録から必要な行を選び、並べ替えて件数を数える処理を考えてみよう。
それぞれの仕事を担う独立した部品をフィルタ、部品どうしでデータを渡すつなぎ目をパイプというんだ。
一つの部品が出した結果を次の部品が受け取って、順番に加工していくの。
受け渡すデータの形式が合えば部品を交換したり足したりできるから、処理の変更や再利用がしやすくなるよ。
この解説はわかりやすかったですか?
より深い解説
定義
パイプとフィルタは、POSAで紹介されたアーキテクチャパターンの1つで、データストリーム(データの流れ)を処理するシステムの構造を定める。処理を段階ごとに独立したフィルタに分け、フィルタの出力を次のフィルタの入力へパイプでつなぐ。
構成要素
| 要素 | 役割 |
|---|---|
| データソース | 処理するデータを供給する |
| フィルタ | データを受け取り、変換、選別、加工などを1つ行って、次へ渡す |
| パイプ | フィルタとフィルタをつなぎ、データを受け渡す |
| データシンク | 最終的な結果を受け取る |
利点と欠点
| 利点 | 欠点 |
|---|---|
| フィルタを追加・削除・入れ替えするだけで、処理の流れを変えられる | フィルタ間でデータの形式をそろえる必要がある |
| フィルタを別のシステムでも再利用できる | 全体で共有する状態を扱いにくい |
| 独立したフィルタを並行して動かせる | データの受渡しの手間がかかる |
例
- UNIXのシェル:
cat access.log | grep 404 | sort | uniq -cのように、コマンド(フィルタ)を「|」(パイプ)でつないで処理する - コンパイラ:字句解析、構文解析、意味解析、コード生成と、段階的に処理する
- データの加工処理:取込み、変換、集計を段階に分けて行う処理(ETLなど)
POSAのほかのパターンとの見分け方
「データストリームに対する一連の処理」「段階的に実施する」「追加又は削除できるように分割」といった言葉があれば、パイプとフィルタである。
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午前Ⅱ