データストリーム管理システム
論理クエリ計画は最適化することができるが、これはストリーミング計画に強く依存する。連続的なクエリの最適化の基本的概念は関係データベースシステムのものと同じである。もしリレーショナルデーターストリームがあり、論理クエリ計画が関係代数からの関係演算子に基づいているならば、クエリオプティマイザは同じ代数処理でクエリを最適化するであろう。たとえば、選択演算子は結合演算子ほどには計算処理を必要としないので、ソースにまで落とし込む。
さらに、DBMSのようなコストベースの最適化技術もあり、同等のいくつかのクエリ計画の中からコストが最低のものが選択される。一つの例は二つの連続した結合演算子の順序を選択するものである。DBMSではこの選択は対象となるデータベースの統計情報に基づいて決定される。しかし、データストリームのデータは前もって知ることができないため、DBMSのような統計は存在しない。だが、データストリームを観察することによって何らかの統計を得ることはできる。この統計を使用してその後でのクエリを最適化することができる。したがってDSMSには実行されているクエリ計画を新しいものに置き換える、計画移行戦略が必要である。
ウィンドウ技術では、データの概略を使用して全てのデータストリームの特徴を圧縮するのではなく、データの一部分だけを扱う。このアプローチは一番直近のデータのみが関連しているという考え方に基づいている。ウィンドウによりデータストリームは連続的に切り出される。例えば最後のデータ要素を10個だけ取り出し、処理にはそれらだけを考慮する。ウィンドウには他にFIFOリストに似たスライディングウィンドや、直近の10秒のデータだけを考慮するような時間ベースのウィンドウなどがある。ウィンドウの実装方法にもいろいろなアプローチがある。例えば、システム全体のウィンドウにはタイムスタンプや時間隔を使用し、単一処理のステップにはバッファベースのウィンドウをするというものがある。