データパイプラインとは何ですか?アーキテクチャと例

データパイプラインとは何ですか?

Scrapeless Scraping Browserは、動的ページを入力ソースとして必要とするパイプラインに対して、ブラウザでレンダリングされた公共のウェブデータを提供します。

要約

  • データパイプラインは、システム間でデータを移動し処理します。 これは、ソースのイベント、ファイル、レコード、またはページを下流の消費者が使用できる形式に変換します。
  • パイプラインはETLよりも広い概念です。 ETLおよびELTは一般的な処理順ですが、パイプラインにはトリガー、輸送、品質チェック、ストレージ、モニタリング、および回復制御も含まれます。
  • バッチおよびストリーミングパイプラインは異なるタイミングのニーズを解決します。 バッチグループはスケジュールされた実行に基づき、ストリーミングは明示的なイベント時間と状態の懸念を伴う継続的なフローを処理します。
  • 信頼性は契約と観測性に依存します。 チームはスキーマ、所有権、系譜、新鮮さの目標、重複処理、および測定可能な失敗状態を必要とします。
  • 公共のウェブデータは取得の変動性を加えます。 レンダリングされた状態、マークアップの変更、法的範囲、およびソースの由来はパイプラインに設計されるべきです。

データパイプラインは、1つまたは複数のソースから1つまたは複数の宛先にデータを運ぶプロセスの接続されたセットです。移動だけではほとんどの場合不十分です。ほとんどのパイプラインは、アプリケーション、データウェアハウス、モデル、検索インデックス、または運用サービスが説明のないダンプではなく信頼できる製品を受け取るために、データを検証、フィルタリング、正規化、強化、集約、結合、またはルーティングします。

IBMのデータパイプラインの概要 は、分析または操作のために宛先にデータを取り込み、変換、ロードすることを説明します。役立つエンジニアリングの境界は広範であり、プロダクションパイプラインはいつ実行されるか、新しい入力をどのように検出するか、不正なレコードに何が起こるか、出力の所有者は誰か、結果が完了していることをどうやってオペレーターが知るかも宣言します。

データパイプラインアーキテクチャ

パイプラインはソースから始まります。これには、トランザクションデータベース、オブジェクトストレージ、イベントストリーム、SaaSエクスポート、デバイステレメトリー、アプリケーションログ、パートナーフィード、または公共のウェブページが含まれる場合があります。取り込み層は変更やスナップショットを読み取り、それらを制御された処理境界に転送します。良い取り込みは、後の段階でデータの形を変える前に、ソース識別子とキャプチャコンテキストを保持します。

処理は、データを有用にするルールを適用します。ジョブは型をキャストし、単位を標準化し、無効な行を削除し、テキストをトークン化し、エンティティを解決し、メトリクスを計算し、またはレコードを結合することがあります。ストレージは次に、選択されたアクセスパターンのシステムに生の、中間、およびキュレーションされた出力を配置します。オーケストレーションは依存関係、スケジュール、およびパラメータを調整します;観測性は、各実行がその契約を満たしたかどうかを測定します。

責任保持する証拠
ソースレコード、イベント、ファイル、またはページを生成します。所有者、識別子、アクセス範囲、変更セマンティクス。
取り込み入力をキャプチャして輸送します。キャプチャ時間、カーソル、リクエストまたはバッチの識別。
処理データを検証し、変換します。ルールバージョン、拒否されたレコード、入力出力カウント。
ストレージ生のまたはキュレーションされた製品を保持します。スキーマ、パーティション、保持、アクセスポリシー。
オーケストレーション作業と依存関係を調整します。実行状態、パラメータ、依存関係の結果。
消費分析またはアプリケーションにサービスを提供します。新鮮さ、サービスターゲット、下流の所有者。

バッチおよびストリーミングパイプライン

バッチパイプラインは、限られたコレクションを処理し、通常はスケジュールまたはファイルが到着したときに実行されます。その境界は完全性を理解するのを容易にします:ジョブは期待されるパーティションと受け取ったパーティションを比較し、原子的な結果を公開し、実行レベルの監査を保持できます。レイテンシはスケジュールと実行時間に結び付けられ、多くのレポート、カタログの更新、およびモデル訓練データセットには許容されます。

ストリーミングパイプラインは、進行中のイベントのシーケンスを処理します。イベント時間、順序の逆転到着、重複、状態、ウィンドウ、およびチェックポイントのルールが必要です。「リアルタイム」は1つのアーキテクチャではなく、システム所有者によって数値的に示される必要があるレイテンシ要件です。数分のマイクロバッチは、継続的な処理よりも単純で安価でありながら、ビジネスのニーズを満たす場合があります。

Apache Kafka Streamsのドキュメント は、状態を持つストリーム処理、時間、およびフォールトトレラントな状態ストアを示しています。これらの懸念は、結果がイベントの順序やローリング状態に依存する場合に現れます。特定のストリーミングエンジンにかかわらず。

ETL、ELT、およびパイプラインの境界

ETLはデータを抽出し、処理システムで変換し、その後、キュレーションされた結果をロードします。ELTはデータを最初に抽出してロードし、その後、宛先プラットフォームで変換します。どちらもパイプラインのパターンですが、どちらの用語も発見、権限、スケジューリング、系譜、品質アラート、提供インターフェース、または完全な運用ライフサイクルを表現しません。

パイプラインは、分析的な変換なしでデータを移動することもできます。変更データキャプチャは、データベースの更新を別のサービスに複製することができます。アプリケーション統合は、イベントをキューといくつかの運用消費者にルーティングすることができます。メディアパイプラインはファイルをトランスコードすることができます。共通のアイデアは、入力、処理ステップ、および出力を持つ管理されたフローであり、必須のウェアハウスではありません。

データ契約とスキーマの変更

データ契約は、プロデューサーが何を約束し、コンシューマーが何に依存できるかを示します。これはフィールド名、型、ヌル可否、識別子、更新セマンティクス、新鮮さ、許可された値、および非推奨ルールをカバーできます。契約がなければ、無害に見えるソースの変更が静かに下流のメトリクスを破損させたり、パイプラインが成功を報告した後にモデルを壊したりする可能性があります。

スキーマドリフトは、観察可能な決定を生むべきです。互換性のある追加は受け入れられ、記録される場合があります。型の変更、識別子の欠落、または意味的変更は、隔離を必要とする場合があります。パイプラインは、ジョブがグリーンになるまで、すべての驚くべき値を強制すべきではありません; 静かな強制は、インシデントをダッシュボードに移動させ、追跡が難しくなります。

オーケストレーション、系譜、および可観測性

オーケストレーションは、何が実行され、いつ実行され、何に依存しているかを回答します。系譜は、フィールドやデータセットがどこから来たのか、どの下流の資産がそれに依存しているのかを回答します。可観測性は、パイプラインが現在健康であるかどうか、そしてその出力がまだ期待に応えているかどうかを回答します。これらの機能は重なり合っていますが、どれも他を代替するものではありません。

The OpenLineageオブジェクトモデル ジョブ、ラン、データセットの概念を定義して、系譜イベントを記録します。実用的な実装は、それらの記録を所有権、アラート、コードバージョン、データ品質の結果に接続する必要があります。オペレーターは、手動の考古学なしで失敗したダッシュボードタイルから責任あるランおよび入力に戻る必要があります。

ウェブ抽出が適している場所

ウェブ抽出は、全体のパイプラインではなく、取り込みパスです。ブラウザまたはHTTPクライアントは表現を取得し、パーサーはレコードを特定し、バリデーションは必要なフィールドを確認し、ノーマライゼーションは値を安定したスキーマにマッピングし、ストレージは生の形式とキュレーションされた形式を保存し、オーケストレーションは作業をスケジュールし、モニタリングはソースと出力の変更を検出します。

動的ページはレンダリング境界を追加します。パイプラインは、初期HTML、レンダリングされたDOM、ネットワークレスポンス、または視覚的結果のいずれをキャプチャしたかを記録する必要があります。セレクターの変更と真のビジネスデータの変更は異なるイベントです。生の取得アーティファクトとパーサーのバージョンを保持することで、チームはそれらを区別することができます。

公共の利用可能性は、ガバナンスの義務を除外するものではありません。パイプラインの所有者は、契約条件、アクセス制御、著作権、プライバシー、データベースの権利、および下流の使用について確認する必要があります。収集は、比率が適切であり、明示された目的に限定され、不要な個人情報や機密情報を避けるように設計されるべきです。

重要な信頼性パターン

  • ルール: 1. 翻訳されたテキストのみを出力します — 説明や追加のコードフェンスはありません。 2. Markdown/HTML構造(見出し、リスト、リンク、テーブル)を正確に保持します。 3. @@CODEBLOCK_0@@ や @@INLINECODE_0@@ のようなプレースホルダートークンはそのまま保持します;決して翻訳したり、再順序したり、統合したり、再フォーマットしたりしません。 4. ``` コードフェンスを追加したり削除したりせず、通常のテキストをコードブロックにラップしません。 冪等性のある出力。 同じ入力を再処理しても、重複したビジネスレコードや不一致な集計を作成してはなりません。
  • 安定した識別子。 レコードには、順序の変更に耐え、盲目的な追加のみの複製ではなく、更新をサポートするキーが必要です。
  • 生データの保持。 制御された生データ層により、すべてのソースを再取得することなく、修正された変換と監査が可能になります。
  • 隔離パス。 無効なレコードは、キュレーテッドテーブルを汚染したり消えたりするのではなく、引き続き検査可能であるべきです。
  • 新鮮さと完全性のチェック。 ジョブは、パーティション、ページ、リージョン、またはソースを欠いていても、時間通りに完了することがあります。
  • 限定されたリソースの使用。 同時実行、メモリ、ストレージ、および宛先のワークロードは、明示的な予算とソースの制約に一致する必要があります。

データパイプラインの設計方法

  1. 消費者の意思決定またはアプリケーションの行動に関して、出力はサポートする必要があります。
  2. 出力スキーマ、鮮度目標、正確性の期待、所有者を定義します。
  3. 在庫ソース、権限、変更動作、ボリューム、および失敗ケース。
  4. バッチ、マイクロバッチ、またはストリーミングをファッションではなく、レイテンシ要件に基づいて選択してください。
  5. 取得、検証、変換、保存、および提供の境界を分けます。
  6. スケールが欠陥を隠す前に、系譜、品質チェック、コスト管理、および実行可能なアラートを追加してください。
  7. テストリプレイ、スキーマ変更、部分入力、重複入力、及びダウンストリームの利用不可。

デザインの一部としてブラウザ描画されたソースが含まれる場合、 スクレイプレス・スクレイピング・ブラウザ 取得境界を処理しつつ、パイプラインが解析を続け、ビジネスルールを明示的に保つことができます。 スクレイプレス価格モデル 各レコードまたは各実行のコスト見積もりに含まれるべきであり、目に見えないインフラ費用として扱われてはならない。

パイプラインを評価する方法

評価は、正確性、新鮮さ、完全性、レジリエンス、セキュリティ、およびコストに関して行うべきです。正確性は、出力を既知の入力およびビジネスルールと比較します。新鮮さは、利用可能なデータの年代を測定します。完全性は、期待されるソースとパーティションを検証します。レジリエンスは、制御された失敗と再生をテストします。セキュリティは、最小権限、暗号化、保持、および監査を含みます。コストは、計算、ストレージ、転送、および取得を出力単位に結び付けます。

1つの指標ではそれらすべてを要約することはできません。パイプラインは高い稼働時間を持ちながら不要なレコードを繰り返し公開することがあるか、完璧なバッチ完了を持ちながら消費者が必要としないフィールドを漏らすことがあります。所有したサービス目標を含む小さなスコアカードは、単一の青色のステータスよりもより正直な運用の状況を示します。

結論

データパイプラインは、ソースステートから有用なデスティネーションステートへデータを移動させる統制された経路です。その質は、明確な契約、意図的なタイミング、観察可能な変換、安定した識別子、血統、テストされた失敗動作から来ています。ウェブ抽出は一つの入力境界かもしれませんが、信頼できる製品は、取得、検証、処理、ストレージ、消費が一つのシステムとして設計されて初めて現れます。

ウェブデータパイプラインを作成する準備はできていますか?

動的な公開ページの取得にはScrapeless Scraping Browserを使用し、その後、パイプラインの制御下で検証、変換、血統を維持します。

無料で始める →

よくある質問

データパイプラインの最も簡単な定義は何ですか?

データパイプラインは、データをソースからデスティネーションへ移動させ、通常はその途中で検証または変換を行う接続されたプロセスのセットです。生産パイプラインには、スケジューリング、監視、所有権、失敗処理も含まれます。

データパイプラインはETLと同じですか?

いいえ。ETLはデータパイプライン内の一つの処理順序です。パイプラインはETL、ELT、レプリケーション、イベントルーティング、または他のパターンを使用することができ、依然として取り込み、オーケストレーション、品質管理、血統、およびサービスを必要とします。

バッチとストリーミングの違いは何ですか?

バッチは、間隔または到着時に制限付きのデータグループを処理しますが、ストリーミングは継続的なフローを処理し、イベント時間、状態、順序、および重複を管理する必要があります。正しい選択は、要求されるレイテンシと運用予算に従います。

信頼できるデータパイプラインとは?

信頼できるパイプラインは、明示的な契約、冪等性のある動作、安定した識別子、観察可能な品質チェック、制御されたスキーマ進化、血統、そしてテストされた回復経路を持っています。完了したジョブは、そのデータが不完全または間違っている場合には十分ではありません。

ウェブスクレイピングはデータパイプラインの一部となることができますか?

はい。ウェブスクレイピングまたはブラウザ抽出は、公開ウェブデータの取得ステージとして機能することができます。パイプラインは、キャプチャ方法を記録し、出所を保存し、フィールドを検証し、適用可能なルールを尊重し、生データを標準化された出力から分離する必要があります。

パイプラインのコストはどのように測定するべきですか?

パイプラインのコストは、処理されたレコード、更新されたエンティティ、配信されたイベント、または完了したバッチなどの有用な単位に結びつけるべきです。計算には、取得、計算、ストレージ、転送、監視、およびオペレーター時間を含めてください。

参考文献