エントリー
はるか昔、1989年に草がより緑になり、ITのすべてが少し簡単になったとき、人々はデータベースが書き込みおよび読み取り要求を満たすだけでなく、何らかの形で困難であることを考え始めました着信データに応答します。 すべては、いわゆるアクティブデータベースシステムで始まりました。これは、特定の事前定義された条件が満たされたときに、指定された命令セットを実行できます。 つまり 実際、外部トリガー用の組み込みプロシージャの起動でした。 このアイデアを開発するために、 データストリーム管理システムが90年代に登場しました。 彼らはすでに、着信データの連続ストリームを扱う方法を知っていました。 すでに珍しいリクエストではなく、リアルタイムデータの正直なストリームである可能性があります。 ほぼ同時期に、人々はデータベースに送られるデータがイベントではなく、イベントを登録するセンサーの読み取り値、通知、通知などのイベントの外部表現であると考えていました。 そのようなシステムは、 複合イベント処理と呼ばれるようになりました。
このようなシステムは、着信データを分析することで、イベントを検出し(外部データと埋め込まれた内部ロジックに基づいて発生の事実を判断)、分析値を計算します(たとえば、一定期間に発生するイベントの平均数をカウントします)。 したがって、これらのシステムの使用は、内部ロジックが外部にある「実際の」イベントを認識し、それらに「目」をつけて着信データを分析する必要があることを暗示しています。
StreamInsight
Microsoft Researchの腸に由来するStreamInsightプロジェクトは、もともとこの特定のパターンの実装でした。 一方では、解決に別の(リレーショナルデータベースと比較して)アプローチを必要とするデータストリームを処理するタスクのクラスがあります。 一方、最近では、ストレージデバイスの価格が桁違いに低下しており、企業はシステム運用のさまざまな側面に関する膨大な量のデータを保持しています。 さらに、ビジネスの言語では、このデータの価値は時間の経過とともに急速に低下することがあります。イベントに対応できなかった場合、利益を失います。
StreamInsightは、ストリーミングデータを処理するアプリケーションを構築するためのプラットフォームです。 ほとんどの処理はRAMで行われるため、高スループットと低レイテンシが実現します。 このプラットフォームの心臓部は、いわゆる 宣言型LINQで記述された永続キュー。 着信イベントはすべて、これらのキューにすぐに処理されます。
このシステムにより、「正しい」CEPが行うべきことすべてを行うことができます。 例:
- あらゆる種類の整数値を読み取る
- データフローの変更とフィルタリング、重複イベントの削除
- 複雑なイベントパターンを検出する
- 外部イベントの「不在」を追跡する
- 最新バージョンから、発行/購読ニュースレターを実装できます
このシステムの可能性と用途は、アカデミックCEPよりも広いことがわかります。 同時に、Web分析、ロジスティクスおよび運用分析、ビジネス取引、マネーロンダリングの検出、支払いカード詐欺、ビジネスアクティビティとセキュリティの監視など、商用アプリケーションのリストも非常に多くなっています。
ユースケースのより完全なリストはここにあります。
ここで、SIが保存されたログのデータを使用してパターンをマイニングし、リアルタイムデータストリームでこれらのパターンを検出する興味深いユーザーケースを考えてみましょう。
建築の詳細
内部SIデバイスを説明する別の美しいMSDNの写真を次に示します。
既に述べたように、エンジンはスタンディングキューに基づいており、エンジン内で常に回転しています。 アダプターはもう1つの基本コンポーネントです。入力と出力です。 これにより、SIを外部と接続し、あらゆる種類のデータソースを使用できます。 最も人気のあるアダプタの一部はプラットフォームに付属しており、残りは自分でC#で作成する必要があります。
内部でキューがどのように機能するかについては、次のドキュメントのすべての詳細を読むことができます:
まず、StreamInsightエンジン内のすべてのイベント(アトミックであっても)には、特定の期間、イベントデータ、およびペイロード(意味のある負荷)があります。 そして、これらのイベントで動作するほとんどのオペランドは、いわゆるイベントウィンドウ、つまりデータ操作が発生する時間ウィンドウを考慮しています。
このプラットフォーム(LINQを使用)では、次のことができます。
- イベント選択(フィルター)
- ペイロード(プロジェクト)の計算
- スレッド相関(結合)
- フローのグループ化と適用
- タイムウィンドウ内の集計(合計、カウント、...)
- 時間枠内のランキング(topK)
重要な点は、 1つのキューからの出力を別のキューに送信できることです。これにより、データ処理のより柔軟な制御が可能になります(パブリッシュ/サブスクライブなど)。
展開とコスト
これらすべてにより、StreamInsightは、開発されたインフラストラクチャを必要とする大規模でかさばるシステムではありません。 dllとして埋め込むことにより、アプリケーションで直接使用できます。 この場合、パフォーマンスの制限は、割り当てられたRAMの量のみになります。 StreamInsightエンジンをスタンドアロンモードで個別に起動することもできます。 したがって、製品をさまざまな場所で使用するシステムを作成できます。フィルタリング用の情報ソースの近く、およびストリームから必要なデータを抽出する際の処理センターです。
しかし、ライセンスとコストでは、すべてがそれほど良いわけではありません。 StreamInsightはMS SQLサーバーの一部としてのみ販売されており、いくつかの疑問が生じます。 これは、SIがデータベースエンジンにまったく依存せず、これらの製品間の接続がかなり条件付きであるという事実にもかかわらずです。 SIはMS SQL Serverから個別にダウンロードできますが、メイン製品のアクティベーションキーが必要です。 StandardとPremiumの2つのエディションがあります。 詳細についてはこちらをご覧ください 。 マーケティング担当者には率直な問題があります。技術部門の人たちは優れた技術を思いつきましたが、それをうまく売る方法を思いつきませんでした。 そのため、上の図を実装するには、かなりの量のMS SQLライセンスを購入する必要があります。 また、ライセンスがエンタープライズよりも低い場合、StreamInsightエンジンのパフォーマンスを人為的に制限することに注意してください。 しばらくすると状況が変わり、この技術を比例的なお金で使用できるようになることを期待することしかできません。
オースティン-クラウド内のStreamInsight
そしてもちろん、一部のシナリオでは、SaaSモードで同様の分析を使用する必要があります。 Microsoftは、Azureで適切なサービスを作成しようとしました。 確かに、製品はまだクローズドベータ版であり、情報のほとんどはNDAによって閉じられています。 したがって、ここでは、オープンソースから何を学んだかを説明します(PluralSightコースなど)。
第一に、この面でStreamInsightが通常価格で手頃な価格で購入できるようになるという希望があります。それでも、このことは完全なデータベースをドラッグしません。
第二に、オースティンは受信データの処理に関してスケーリングを処理します。ここで水平スケーリングについて考える必要はありません。 残りの構造は同じままです。入力アダプター、持続クエリ、出力アダプターです。
第三に、主なシナリオは次のとおりです。データのクラウドがあり、それらをクランチし、必要な知識を引き出して永続的なストレージに入れます。 したがって、入力アダプターはスケーリングロードバランサーが背後にあるRESTエンドポイントであり、出力アダプターはAzure StorageまたはAzure SQLに処理結果を直接追加できます。
このサービスの範囲は、一般的なクラウドの使用と一致します。
- データソースは地理的に分散しているか、クラウドに配置されています
- 柔軟で簡単に拡張可能な電力が必要
- 大量のデータの不規則な処理とピーク処理
既に述べたように、ほとんどの資料は現在NDAの下にあり、Microsoft Confidentialマークがないと有用な写真を見つけることができません。 :)
参照:
ビデオの一般的なレビュー:
Microsoft StreamInsight:リアルタイムリレーショナルデータストリームからの知識の取得
StreamInsightのプログラミングの内部構造とすべての種類の側面を説明する優れたドキュメント。
StreamInsightクエリのヒッチハイクガイド
別の優れた情報源:文字通りすべての興味深い場所のデモを含む有料ビデオコース:
Pluralsightコース
公式開発者ブログ:
StreamInsightの開発チームの公式ブログ。