注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Funnel パイプライン

Object Storage V2 アーキテクチャでは、Object Data Funnel サービス(「Funnel」)がインデックス作成を監督します。Funnel パイプラインは、内部のジョブパイプラインであり、Foundry のデータソースおよびユーザーの編集からのデータを効率的に OSv2 にインデックス作成し、オントロジーのデータとメタデータを最新の状態に保つ役割を果たします。

Funnel パイプラインのコンポーネント

Funnel パイプラインは、一連の Foundry ビルドジョブ で構成されています。

以下のスクリーンショットは、Funnel パイプラインの例を示しています。

パイプラインのランディングページ

Changelog

changelog ジョブでは、Funnel は、データソースが新しいデータやトランザクションを受け取るたびに、すべてのデータソースのデータ差分を自動的に計算し、Funnel パイプラインの中間 changelog データセットを作成します。Changelog データセットは、各トランザクションでのデータ差分を含む APPEND トランザクション を受け取り、インクリメンタル計算セマンティクス を提供します。これらの changelog データセットは Funnel が所有・管理しており、ユーザーがアクセスすることはできません。

Merge changes

Merge changes ジョブでは、changelog ステップからのすべての changelog データセットと、Actions からの最近のユーザー編集が、オブジェクトタイプの主キーで結合され、すべての変更がマージされて別のデータセットに保存されます。これらのマージされたデータセットも、Funnel が所有・管理しており、ユーザーがアクセスすることはできません。

Indexing

変更がマージされた後、Funnel はインデックス作成ジョブを開始し、マージされた変更をすべて含む最終データセットのすべての行を、オブジェクトタイプに設定されたオブジェクトデータベースと互換性のある形式に変換します。たとえば、標準の OSv2 データベースでは、前のステップのマージされた変更データセットのすべての行がインデックスファイルに変換され、これらのファイルは別のインデックスデータセットに保存されます。これらのインデックスデータセットも Funnel が所有・管理しており、ユーザーがアクセスすることはできません。

Hydration

インデックス作成ジョブが完了すると、オブジェクトデータベースは、インデックス作成されたデータをクエリの準備をします。OSv2 を例にすると、この準備ステップでは、データセットからインデックスファイルを OSv2 データベースの検索ノードのディスクにダウンロードすることが含まれます。このプロセスは、hydration と呼ばれており、オブジェクトタイプのデータを更新するための例の Funnel パイプラインの最後のステップです。

Hydration ジョブの進行状況は、オントロジーマネージャーアプリケーションで報告されます。以下のスクリーンショットがその例です。

パイプラインの hydration ステータス

これらのステップが完了すると、オブジェクトタイプは使用する準備が整い、他のサービスや Foundry 内でクエリすることができます。

Live および replacement Funnel パイプライン

オブジェクトタイプにデータ更新またはスキーマ更新がある場合、2 つの別々の Funnel パイプラインが関与します。以下のスクリーンショットは、これら 2 つの Funnel パイプラインを表示しています。

パイプラインのランディングページ

Live パイプライン

Funnel の live パイプライン は、Foundry データソースからの新しいデータを使用して、プロダクションでオブジェクトタイプを更新します。データソースが更新されるたびに、live パイプラインが実行されます。また、オブジェクトのユーザー編集が検出された場合、live パイプラインは、明示的な元データセットの更新がなくても、6 時間ごとに実行されます。これにより、インデックス作成の merge changes ステップ中に、ユーザー編集が Funnel 所有のデータセットに永続化されることが保証されます。

ユーザー編集は、オブジェクトデータベース のインデックスにすぐに適用されます。定期的な 6 時間のジョブ間隔は、Foundry でこのデータを永続的に保存するための組み込み制御メカニズムを許可します。

Replacement パイプライン

オブジェクトタイプのスキーマが変更され、以前のパイプラインのスキーマが最新でなくなった場合、オブジェクトタイプの更新を調整するために新しい replacement パイプライン をプロビジョニングする必要があります。スキーマの変更には、オブジェクトタイプに新しいプロパティタイプを追加する、既存のプロパティタイプを変更する、またはオブジェクトタイプの入力データソースを別のデータソースに置き換えることが含まれます。

Live パイプラインが通常の間隔で実行され続ける間、Funnel は、ユーザーに提供されるライブデータに影響を与えることなく、バックグラウンドで replacement パイプラインを調整します。replacement パイプラインが初めて正常に実行された後、live パイプラインは破棄され、replacement パイプラインに置き換えられます。オブジェクトタイプのスキーマとデータがそれに応じて更新されます。

Funnel パイプラインを監視する

Funnel パイプラインは複数のビルドジョブで構成されており、監視ビュー を使用して、Funnel パイプラインの特定のジョブの健康状態を追跡するための 監視ルール セットを作成することができます。

ユーザーは、オントロジーマネージャーで Monitor the health of this object type を選択することで、監視ビューを作成できます。これにより、ユーザーは Data Health アプリケーションの 監視ビュー タブに移動します。以下のスクリーンショットがその例です。

パイプラインモニタ

監視ビュータブから、ユーザーは、live パイプラインと replacement パイプラインの両方のジョブを監視するためのルールを作成できます。また、ユーザーは、Sync Propagation Delay ルールを追加して、オブジェクトデータベースのインデックスデータの最新性がルールで定義されたしきい値を超えたときに通知を受け取ることができます。

対照的に、Object Storage V1(フォノグラフ)では、オントロジーのエンティティに対して同期を監視するために ヘルスチェック を使用しています。OSv1 では、オブジェクトタイプに対して単一の同期ジョブがあり、ユーザーは同期ジョブに直接これらのヘルスチェックを定義することができます。

パイプラインをデバッグする

Foundry ビルドジョブは、さまざまな理由で失敗することがあります。オブジェクトタイプの元データソースに対して View 権限を持つユーザーは、オブジェクトタイプの Datasources タブの Live pipeline ダッシュボードを通じて、パイプラインエラーを確認できます。パイプライングラフで失敗したジョブを選択し、Failed job を選択します。以下のスクリーンショットがその例です。

パイプラインのデバッグ

また、ユーザーは、特定のオブジェクトタイプのすべてのビルドジョブを一覧表示するために、Builds アプリケーション に移動し、左パネルの検索フィルターでオブジェクトタイプをフィルタリングすることもできます。

ビルド検索