メインコンテンツへジャンプ

データストリーミング入門

過去数年間で、リアルタイムデータの需要は急速に増加しています。組織はますます、データストリームを活用したアプリケーションやプラットフォームを構築し、リアルタイムの分析と機械学習を提供してビジネスの成長を促進しています。データを継続的に収集、処理、分析することで、リーダーは即時の洞察を得ることができ、より迅速な意思決定を可能にし、より正確な予測を行うことができます。

企業はリアルタイムデータストリーミングを活用して、運用システムのビジネス取引や潜在的な詐欺を追跡したり、ダイナミックな価格モデルを通知したりすることができます。一方、インターネット・オブ・シングス(IoT)の普及により、日常のデバイスやセンサーから大量の生データが送信され、これらのデータセットへの即時アクセスは潜在的な問題のトラブルシューティングや場所特定の推奨を行うのに役立ちます。

要するに、リアルタイムデータは、新たな革新的な機会を生み出すか、進行中のデータセットに洞察を提供することで、組織を変革する可能性があります。

Databricks についてさらに詳しく

データエンジニアリングのビッグブック

AI 時代に必須の専門知識を迅速に習得するためのガイドブック

読む

ETL をはじめよう

オライリーのテクニカルガイドで ETL パイプラインについて学びましょう。

ダウンロード

データエンジニアリングを学ぶ

4 つの動画を視聴してクイズに答え、バッジをもらいましょう。

無料トライアル

ストリーミング対バッチ処理  

データを取り扱うために、組織は伝統的にバッチ処理に依存してきました。これは、大量のデータを一定の間隔で「バッチ」として収集・処理することを指します。今日、企業はタイムリーなデータが必要な場合、リアルタイムではない場合にバッチ処理を活用することができます。これには、売上予測、在庫管理、メインフレームからのデータ取り込み、さらには消費者調査の処理などのアプリケーションが含まれます。

しかし、今日のグローバルなビジネス環境で競争するためには、組織はデータが収集されると同時にそれにアクセスする必要がますます増しています。ストリーミングデータは、データが迅速かつ正確に、ほぼリアルタイムで処理されることを保証することで、組織がタイムリーな決定を下すのに役立ちます。データを秒単位またはミリ秒単位で処理することにより、ストリーミングは高頻度取引、リアルタイム入札、ログ処理、リアルタイム分析、または詐欺検出などのユースケースに最適な解決策となります。

組織がストリーミングデータの必要性を認識している一方で、バッチからストリーミングデータへの移行は以下の理由から困難な場合があります:

  1. 新しいAPIと学ぶべき言語。既存のデータチームがすでに知っている言語やツールを有効にするのは難しいことがあります。
  2. 複雑な運用ツールを構築する。組織は、本番環境で信頼性を持って動作するストリーミングデータパイプラインのデプロイと維持が難しいと感じるかもしれません。
  3. リアルタイムと履歴データを別々のシステムで。適切なユーザーやグループへのアクセス制御能力を制限する互換性のないガバナンスモデルが存在するかもしれません。

Databricksは、データインテリジェンスプラットフォームを使用して、顧客が伝統的なバッチ対ストリーミングデータの二分法を超えるのを支援しています。リアルタイム分析、機械学習(ML)、アプリケーションを一つのプラットフォームに統合することで、組織はバッチとストリーミングデータの両方を処理する単一のプラットフォームでデータ処理が簡素化される利点を得ます。

Databricksデータインテリジェンスプラットフォームを使用すると、ユーザーは次のことができます:

  1. ストリーミングパイプライン、アプリケーションの構築を高速化お客様は、SQLやPythonの統一されたバッチおよびストリーミングAPIを使用して、既に知っている言語やツールを使用することができます。彼らは、組織全体のリアルタイムの分析MLアプリケーションを解放することができます。
  2. 自動化されたツールで運用を簡素化リアルタイムパイプラインやアプリケーションの本番環境への導入と管理を容易にします。自動化されたツールにより、タスクのオーケストレーション、フォールトトレランス/リカバリ、自動チェックポイント、パフォーマンスの最適化、オートスケールを簡素化します。
  3. クラウド上のリアルタイムデータに対する統合ガバナンスUnity Catalog は、あらゆるストリーミングデータとバッチデータに対して一貫したガバナンスモデルを提供し、リアルタイムデータの発見、アクセス、 共有 の方法を簡素化します。

Databricks Processing

ストリーミング対リアルタイム処理

ストリーミングとリアルタイム処理は密接に関連した概念であり、しばしば同義語として使用されます。しかし、それらには微妙だが重要な違いがあります。
 
「ストリーミングデータ」は、データが動いて生成される連続的なデータストリームを指します。これは、データが生成されると同時に小さなチャンクまたはイベントで処理されるデータパイプラインのアプローチです。一方、「リアルタイム処理」は、分析と反応の即時性を強調し、データが受信された直後に最小限の遅延で洞察を提供することを目指します。言い換えれば、ストリーミングデータシステムはリアルタイムデータを取り込み、到着すると同時にそれを処理します。
 
「リアルタイムストリーミング」の範囲内でも、「リアルタイム」と「ニアリアルタイム」の間には、主にレイテンシに関してさらなる区別があることに注意が必要です。リアルタイムデータとは、データ生成から通常ミリ秒以内に、データを分析し、遅延をほとんど伴わずに行動するシステムを指します。これらのシステムは、自動株取引、医療監視システム、金融取引における詐欺検出など、即時の行動が重要なシナリオのために設計されています。
 
一方、ニアリアルタイム処理では、通常数秒のわずかな遅延が発生します。このアプローチは、即時の応答が必要でない場合でも、タイムリーな更新が好ましい場合、例えばソーシャルメディアのフィード更新、物流追跡、運用ダッシュボードのためのデータ集約などに適しています。

データパイプラインにおける増分処理

ストリーム処理は一部の組織にとって適切な選択肢となることがありますが、実行するためにはコストとリソースが大量に必要となることがあります。データストリーミングの利点を得る一つの方法は、連続的なデータ処理なしでインクリメンテーションを行うことです。この方法は、完全なデータセットではなく、新しく追加された、変更された、または変更されたデータのみを処理します。

インクリメンタル化がどのように実行されるかの一例は、Databricksのマテリアライズドビューを通じてです。マテリアライズドビューは、クエリの結果を物理的なテーブルとして保存するデータベースオブジェクトです。これは通常のデータベースビューとは異なり、データベースビューは仮想的であり、そのデータは基礎となるテーブルから派生していますが、マテリアライズドビューには、スケジュールまたはオンデマンドでインクリメンタルに更新される事前計算されたデータが含まれています。このデータの事前計算により、特定のシナリオでのクエリ応答時間の短縮とパフォーマンスの向上が可能になります。
 
マテリアライズドビューは、全体のデータセットではなく、より小さなデータセットを処理する際に役立つことがあります。全体として、パイプライン内のデータの増分化は、計算労力、時間、リソース消費を削減することで効率を向上させることができます。これは特に大規模なパイプラインに理想的で、処理の更新が分析と意思決定を速めることができます。

ストリーミングにおける考慮事項とトレードオフ  

組織がリアルタイムのデータストリームを実装する際には、データ処理アーキテクチャ内で考慮すべき重要な要素がいくつかあります。システムの設計方法は重要なトレードオフを導入し、組織のワークロード要求とビジネス結果によります。考慮すべきいくつかの特徴は次のとおりです:

レイテンシ:これは、データが受信された瞬間から処理され配信されるまでの時間を指します。低レイテンシデータは、詐欺検出やライブビデオストリーミングなどのリアルタイムアプリケーションにとって重要ですが、維持するのはコストがかかることがあります。

データのレイテンシを高く設定することは、定期的なレポートのみが必要なワークフロー、または即時の処理と意思決定が重要でない場合に理想的かもしれません。ログデータを保存するシステムや、日次または週次の売上レポートを生成するシステムは、通常、高レイテンシのデータストリームを活用します。
 
スループット: これは、システムが時間経過で処理できるデータの量を測定するもので、通常は秒あたりのイベント数として表されます。IoTにとっては、大量のデータフローを効率的に処理するために、高いスループットが重要です。しかし、スループットのレベルが高いと、レイテンシーに一部の妥協が生じます。

コスト:多くの組織では、コストがシステムのレイテンシとスループットの適切なレベルを決定する主要な要因となります。タイムリーなデータ処理が必要なワークロードに対しては、低レイテンシ、高スループットのシステムを設計する投資が価値があるかもしれません。しかし、あなたのデータニーズが即時でない、またはあなたのワークロードが大量のデータを必要とする場合、高レイテンシのシステムが適切な選択かもしれません。
 
すべてのストリーミングアーキテクチャが同じように作られているわけではなく、ワークロードと予算の要求を満たすための適切なバランスを見つけることが重要です。リアルタイムではなく、必要なときに、つまり適切なタイミングでデータにアクセスすると考えてみてください。

Spark Streamingアーキテクチャ  

Apache SparkTM Structured Streamingは、Databricks Data Intelligence Platformでデータストリーミングを解放するコアテクノロジーであり、バッチ処理とストリーム処理の統一されたAPIを提供します。Sparkは、連続したデータストリームを小さく、管理可能なバッチに分割するオープンソースプロジェクトです。構造化ストリーミングでは、Spark の構造化 API を使用してバッチモードで実行するのと同じ操作が、ストリーミング形式で実行可能です。これによりレイテンシを減らし、250msまでの低レイテンシでのインクリメンタルな処理を可能にします。
 
Structured Streamingでは、データは無限のテーブルとして扱われ、増分的に処理されます。Sparkは短時間の間に受信したデータを集め、バッチを形成し、それを伝統的なバッチジョブのように処理します。このアプローチは、バッチ処理のシンプルさとほぼリアルタイムの機能を組み合わせ、フォールトトレランスと障害復旧を可能にするチェックポイントを備えています。
 
Sparkのデータパイプラインへのアプローチは、リソースを効率的に使用するように設計されています。パイプラインは、生のデータの取り込みから始まり、データシンクへの道のりでフィルタリング、集約、またはマッピングされます。しかし、各ステージでは、データがパイプラインを通過するにつれてインクリメンタルにデータを処理し、データベースに格納される前に異常やエラーを探します。
 
高い応答性を求めるワークロードに対して、SparkはContinuous Processingモードを提供し、各レコードを到着次第に個別に処理することでリアルタイムの機能を提供します。Databricksでストリーミングデータの管理についてはここで詳しく学ぶことができます。

ストリーミングETL

ストリーミングETL(抽出、変換、ロード)は、組織がデータをリアルタイムまたはニアリアルタイムで処理し、分析するのを助け、データ駆動型のアプリケーションとワークフローの要求を満たします。ETLは通常、バッチで実行されてきましたが、ストリーミングETLは生成されると同時にデータを取り込むことで、データがほぼ即座に分析可能な状態になることを保証します。

ストリーミングETLは、データを逐次的に処理することで遅延を最小限に抑え、データセットをバッチ処理するのを待つのではなく、継続的に更新することが可能です。これにより、古いデータや関連性のないデータに関連するリスクが減少し、決定が最新の利用可能な情報に基づいていることが確保されます。

任意のETLツールには、ビジネスが成長するにつれてスケールする能力が必要です。Databricksは、信頼性の高いデータパイプラインを構築するためのシンプルな宣言的アプローチを使用する最初のETLフレームワークとしてDLTを立ち上げました。チームは既に知っている言語やツール、例えばSQLやPythonを使用して、制御可能で自動更新設定のある一箇所でバッチとストリーミングデータパイプラインを構築し、実行することができます。これにより時間を節約するだけでなく、運用の複雑さも減らすことができます。Databricks データインテリジェンスプラットフォームでストリーミングデータパイプラインを構築すれば、データの送信先を問わず、ローデータからクリーンデータへの変換にかかる時間を短縮できます。

ストリーミング分析

我々が見てきたように、データストリーミングは低レイテンシでデータを連続的に処理し、イベントが発生するとリアルタイムの分析を伝送する能力を提供します。リアルタイム(またはほぼリアルタイム)の生データへのアクセスは、ビジネス運営にとって重要であり、それは意思決定者に最新で最も関連性のあるデータへのアクセスを提供します。ストリーミング分析のいくつかの利点には以下のようなものがあります:
 
データの視覚化。企業の最も重要な情報の把握は、企業における日常的な重要業績評価指標(KPI)の管理に役立ちます。ストリーミングデータをリアルタイムで監視することで、企さまざまな事象を即座に認識することができます。 ビジネスインサイトリアルタイムのダッシュボードは、通常とは異なるビジネスイベントが発生したときに警告を送るのに役立ちます。例えば、ビジネスの脅威への検出と対応を自動化したり、異常な行動が調査されるべきエリアをフラグ付けするために使用されるかもしれません。競争力の強化競争力での優位性を望む企業は、ストリーミングデータを使用することで、迅速に傾向を把握し、ベンチマークを定めることが可能となります。これにより、バッチ分析に依存している競合他社に対して優位性を持つことができます。回避可能な損失を排除ストリーミング分析の助けを借りて、組織はセキュリティ侵害、製造問題、顧客の離反などのインシデントのダメージを防ぐか、または減らすことができます。日常業務の分析ストリーミング分析は、組織がデータをリアルタイムで取り込み、即時の行動可能な洞察を得るのを助けます。リーダーが関連性のある、タイムリーで信頼性のあるデータにアクセスできると、彼らは確実に適切な決定を下していると確信できます。

AI/MLのためのストリーミング

人工知能(AI)とMLモデルが発展し成熟するにつれて、伝統的なバッチ処理は、これらのアプリケーションが必要とするデータのサイズと多様性に追いつくのが難しくなることがあります。データ伝送の遅延は、不正確な反応やアプリケーションの効率性の低下を引き起こす可能性があります。
 
ストリーミングデータは、最新の利用可能なデータに基づいたリアルタイム情報の連続的な流れを提供し、AI/MLモデルがイベントが発生するときに適応し、予測を行うことを保証します。ストリーミングデータがAIモデルの準備に役立つ2つの方法があります:

AIトレーニング: AI/ML開発の初期段階では、大量の構造化データや非構造化データを提供するストリーミングデータがモデルのトレーニングに重要です。モデルはパターンや相関関係を認識し、ランダムまたは事前に定義されたパラメータに基づいて初期の予測を行うように訓練されています。このプロセスは、大量のデータを用いて繰り返し精緻化され、モデルの精度と信頼性を時間とともに向上させます。パターンやトレンドから学び、それらのパターンの逸脱を学ぶことで、これらのモデルはより精密な出力と予測を開発します。

AI推論: AI/MLシステムが訓練された後、訓練から学習したパラメータを使用して入力データに基づいた予測(推論)を行う本番環境にデプロイすることができます。ストリーミングデータは新鮮で未見のデータを提供し、モデルはほぼ即時の洞察と予測を生成します。

各セクターの組織は、ストリーミングデータセットに基づいたAIの洞察を活用しています。ヘルスケアおよびウェルネスの小売業者は、顧客データのリアルタイムレポートを活用して、薬剤師がパーソナライズされた推奨事項とアドバイスを提供するのに役立てます。通信会社は、リアルタイムの機械学習を使用して、違法なデバイスのロック解除や身元盗難などの不正行為を検出することができます。一方、小売業者はストリーミングデータを活用して、在庫や市場の要素に基づいたリアルタイムの価格設定を自動化することができます。
 
ストリーミングデータはこれらのモデルにとって重要ですが、AI/MLとデータストリーミングの統合は独自の一連の課題を提示することに注意することが重要です。これらの課題には次のようなものがあります:
 
データ量: 組織は、顧客情報、取引データ、デバイス使用データなど、手元に大量のデータを持っています。すべてのこのデータを管理し、それをAI/MLモデルに統合するためには、スケーラブルでレジリエントなデータアーキテクチャと処理能力が必要です。

データ品質:データの量は指数関数的に増加していますが、すべてのデータが高品質で正確なわけではありません。データはしばしば様々なシステムから取得され、異なる形式であり、不完全または一貫性がない場合があります。AI/MLモデルが適切に機能するためには、データは継続的にテストされ、信頼性を確保するために検証されなければなりません。

データパイプライン:リアルタイムのデータ取り込み、変換、配信を処理するための堅牢で効率的なデータパイプラインを構築することは、AI/MLにとって複雑な作業です。大量のデータ取り込みとデータ処理モデルを処理するために、組織がスケーラブルなインフラストラクチャに投資することが重要です。

Databricksは、Mosaic AIを通じてこれらの問題に対処しており、これにより顧客はAIとMLのソリューションを構築、デプロイ、評価、管理するための統一されたツールを提供しています。ユーザーは、エンタープライズデータでカスタマイズされた正確な出力を受け取り、自分自身のカスタム大規模学習モデル(LLM)を10倍低いコストで訓練し、提供することができます。 

Databricksでのストリーミング

組織内でデータストリーミングをデプロイするには、かなりの努力が必要となる場合があります。Databricksはデータストリーミングを簡素化することで、これを容易にします。Databricks Data Intelligence Platformは、リアルタイム分析、機械学習、アプリケーションを一つのプラットフォームで提供します。Databricks上でストリーミングアプリケーションを構築することで、あなたは次のことができます:

  1. すべてのデータチームを有効にする すでに知っている言語やツール、すでに使用しているAPIを使って、ストリーミングデータのワークロードを簡単に構築できます。
  2. 開発と運用を簡素化する ボックス内の機能を活用して、リアルタイムのデータパイプラインの構築と維持に関連する生産面を自動化します。
  3. データのサイロ化を排除し、ストリーミングとバッチデータのための単一のプラットフォームでセキュリティとガバナンスモデルを集約します。

さらに、DLTの助けを借りて、顧客はデータの取り込みとETLを簡素化する自動化ツールを受け取り、リアルタイム分析、ML、運用アプリケーションにデータセットをデプロイするための準備をします。

Spark Structured Streamingは、Databricksのリアルタイム機能の中心に位置しています。数十万人の個人と組織に広く採用されており、バッチとストリーム処理のための単一で統一されたAPIを提供し、データエンジニアや開発者がコードを変更したり新しいスキルを学ぶことなくリアルタイムアプリケーションを構築するのが容易になります。

世界中の組織は、Databricks Data Intelligence Platform上でデータストリーミングを活用して、運用システムを最適化デジタル決済ネットワークを管理再生可能エネルギーの新たな革新を探求し、消費者を詐欺から保護しています。
 
Databricksは、これらすべての機能を一つのプラットフォームで緊密に統合して、リアルタイムのユースケースをサポートします。

    用語集に戻る