ヘルスデータパイプラインはコートを羽織った三つの部品です。センサーが測定値を生成します。変換ステップがそれをデータベースが受け入れる形に変えます。配信層がそれを研究者、臨床医、またはダッシュボードに渡します。それぞれの部品に独自の方言、独自の故障モード、そして「この数値が何を意味するか」についての独自の意見があります。エンジニアリングは継ぎ目に住んでいます。
システム(実際に何をしているか)
マーケティングを剥ぎ取れば、パイプラインは自動化された一連の流れです。一つ以上のソースから抽出し、目標の構造に変換し、宛先にロードする。これが正統な抽出—変換—ロードのパターンであり、その反転版——抽出—ロード—変換——は、ストレージが安く計算が秒単位で借りられるクラウドウェアハウスで今や一般的です。
ヘルスデータはこの流れを難しくします。ソースは異質——ウェアラブル、電子カルテ、検査システム、アンケート——であり、単位、タイムスタンプ、何を欠損と見なすかについて意見が食い違います。パイプラインの本当の仕事はバイトを運ぶことではありません。データを収集する価値にした情報を静かに失うことなく、それらの不一致を調和させることです。FHIR などの標準に基づくチームが労力を注ぐのはまさにこの調和であり、データが一つの形で届いてしまえば、科学上の問いは簡単な部分になるからです。
各層(センサー/モデル/アプリ)
センサーから始めます。手首のデバイスは信号をサンプリングし、独自のフィルタを適用し、何を有効な測定値と見なすかを決めます。その決定はすでに一つのモデルです。動作、接触、信号品質の閾値であり、あなたには見えません。センサーは正直です。手首は優れた測定点ではなく、ファームウェアもそれを知っています。
次は変換で、測定値が標準オントロジーにマッピングされます。構造化フィールドも自由記述の注記も調和が必要で、調和のルールこそが互換性の勝敗を分けます。毎分の心拍数とヘルツは同じ測定の異なる装いです。パイプラインが間違って推測すれば、もっともらしく見えて六十倍ずれた数値を生み出します。
アプリ層は誰もが見て、誰も監査しない層です。集約し、重複を排除し、欠損を埋めます。それぞれの動詞がポリシーの選択を隠しています。タイムスタンプによる重複排除は時計が一致していると仮定します。欠損の補完は欠損値がランダムだったと仮定します。どちらの仮定も無料ではありません。
エッジケース(面白くなるところ)
エッジケースは珍しくありません。火曜日のことです。デバイスが遅れて同期し、測定値が順不同で届く。参加者が二つのデバイスを着け、毎分十拍ずれる。研究の途中でタイムゾーンが変わる。スキーマが整数を期待した場所に散文が入っている。
ここで調和が価値を発揮します。構造化レコードと非構造化レコードの両方を共有オントロジーにマッピングするパイプラインは、手作業を強いていた変動を吸収します。しかし調和は翻訳であり、翻訳は何かを失います。注意深い問いは、マッピングが正しいかどうかではなく、そのマッピングがどのエラーを安くし、どのエラーを高くするかです。捨てられた外れ値は、生データが保持されていれば回復できます。静かに強制変換された単位は回復できません。
現代の設計はパイプライン自体の周りに監視を置きます。異常をフラグする決定論的チェック、悪い値をソースまでたどるリネージ、即興ではなく許可リスト化された修復ステップ。リスクのあるものは人間が承認し、調査はすでに済んだ状態で受け取ります。
何が壊れるか(そしてなぜ知っておくと役立つか)
パイプラインは退屈な壊れ方をします。上流ベンダーが更新を出せばスキーマがドリフトする。認証情報が期限切れになる。先月のデータで動いた変換が、コードが文字列を仮定した場所で null に出会う。バッチジョブは大声で失敗し、ストリーミングジョブは静かに失敗します。後者のほうが悪い。
役立つのは、各故障モードが設計上の決定を指し示すことです。スキーマ変更がパイプライン全体を落とせるなら、結合が強すぎたのです。悪い値が誰も気づく前にダッシュボードに届くなら、チェックは損害の下流に座っていました。ステージ間の疎結合——それぞれが独立に進化できること——はアーキテクチャの流行ではなく、一つの層を直すのに他の二つと再交渉せずに済むようにするものです。
これらはうまく動いているときには見えません。それでいいのです。継ぎ目を見せるパイプラインは、修理できるパイプラインです。コートは多くの仕事をしていますが、少なくとも下の三つの部品は見えます。
FAQ
なぜ心拍の測定値が六十倍ずれるのですか?
毎分の心拍数とヘルツは同じ信号を異なる単位で表しており、間違った単位を仮定するマッピングは完全にもっともらしい数値を生み出すからです。下流では何もフラグを立てません——値は範囲内で、型は正しく、物理だけがずれています。だからこそ単位の強制変換は私が最も信用しない故障です。
ストリーミングは本当にバッチより悪いのですか?
悪いのではなく、静かなだけです。失敗したバッチジョブは目に見える欠損を残します。レコードを落とすストリーミングジョブはダッシュボードを緑のままにし、データセットはその下で薄くなっていきます。ストリーミングを動かすなら、チェックはエラーだけでなくスループットとレコード数を見なければなりません。
生データから何を保持すべきですか?
負担できるものはすべて、少なくとも調和ルールが数か月の実レコードに耐えるまでは保持してください。生データは、捨てられた外れ値を回復し、強制変換された単位を再導出するための拠り所です。捨てた瞬間、すべてのマッピング決定が永久になります。




