Table of Contents
優れた分析のためのエンジニアリングデータプラットフォームのリファクタリング
既存のコードを外部の動作を変更することなく再構築する——ソフトウェアの品質を向上させるための実証済みの技術です。 パイプライン、スキーマ、モデルが圧力の下で進化するエンジニアリングデータプラットフォームでは、規準的な再構築は、分析性能、維持性、スケーラビリティを直接向上させます。 この記事では、エンジニアリングデータからより深い洞察を解放する方法を説明します。コンクリート戦略、実際の例、および実用的な検討。
なぜエンジニアリング分析のための重要な要素をリファクタリングするのか
エンジニアリングデータプラットフォームは、タイムシリーズのセンサー読み取り、機器のログ、シミュレーションの出力、およびIoTストリームを処理します。これらのデータセットが成長するにつれて、低構造のコードとデータ設計は、低速なクエリ、脆弱な変換、および信頼性の低いダッシュボードにつながります。これらの問題は、新しい機能を導入することなく、ソースで解決します。そのため、分析チームは、よりクリーンで高速でより信頼できるデータを扱うことができます。
データプラットフォームにおけるリファクタリングのコアタイプ
コード 再ファクタリング
ETLスクリプト内の条件ロジックを簡素化し、変数の名前を変更し、関数を抽出し、読みやすくし、バグを減らすことができます。例えば、モジュール式で500ラインのPython抽出ルーチンを有形に置き換える、よく名前付けされた関数は、データエンジニアがパフォーマンスボトルネックを識別するのが容易になります。
シェマリファクタリング
データベーススキーマは、冗長テーブルの正規化、インデックスの追加、または未使用カラムの非推奨化などの変更が、分析クエリを劇的に高速化できます。 一般的なリファクタリングは、事実と寸法表に、ワイドでオールインワンテーブルを分割し、星のschemaクエリを有効にして、倍率の注文を高速化します。
パイプラインのRefactoring
データのパイプラインは、多くの場合、デッドエンド、冗長ステージ、または壊れやすい依存関係を蓄積します。 パイプラインを再構築することは、バッチ処理から増分負荷への切り替え、不要な中間ストレージの削除、またはリソース消費を減らすための変換手順の再オーダーを伴う場合があります。
系統的リファクタリングの主な利点
- クエリパフォーマンス:]]最適化されたスキーマとクリーナーコードは、複雑な分析クエリの実行時間を短縮します。 1つのエンジニアリング会社では、センサーメタデータを秒から秒までの時間を正規化します。
- ]のスケール性:]]のリファクタリングプラットフォームは、比例したコストが増加することなく、より大きなデータ量を処理する。 カルチェシアンの結合と最適化の分割は、クラスターがより効果的にスケールアップすることができます。
- データ品質:]]フィールド名を標準化し、タイプを強制し、リファクタリング中に重複レコードを排除することで、ダッシュボードや機械学習モデルの精度が向上します。
- [ 開発者生産性:]] チームは、レガシーコードの解読時間を短縮し、新しい分析機能を構築する時間が増えています。 モジュラーコードベースは、並列開発を可能にし、オンボーディングを高速化します。
- [] 柔軟性:[]] クリーナーインターフェイスは、従来のSQL倉庫から列ストアに移動したり、リアルタイムストリームプロセッサーを追加したりするなどの新しい分析エンジンを簡単に統合できます。
再ファクタリングへの戦略的アプローチ
データ・ラインアージュと評価
再ファクター化する前に、データ ライン ツール (例えば、OpenLineage、DataHub) を使用して、現在のシステムをマップします。どのテーブルや変換が分析チームによって最も使用されるかを特定します。技術的な債務が高まると、価値が最も大きい再ファクター 努力を優先します。
計画の増減変化
再ファクタリングは、大強大な書き換えではなく、連続的であるべきである。 独立して解放することができる小さなステップに作業を破棄します。 例えば、スプリントごとに1列の名前を変更したり、週に1つの関数を抽出したりします。 各ステップには、下流の消費者を破壊することを避けるために、後方互換性テストが含まれるはずです。
自動化テスト
自動化されたユニットテストと統合テストは、非交渉可能です。 Directusのテストフレームワークやdbtのデータテスト[]]のようなツールを使用して、変換が再ファクタリング後に同じ結果をもたらすことを検証します。 エンジニアリングデータの場合、歴史的なセンサーデータでサンプル比較を実行して、回帰をキャッチすることを検討してください。
文書の意図
明確なコミットメッセージと各リファクタリングステップのドキュメントを更新します。内部構造の変更をリファクタリングするため、ドキュメント作成の履歴は、将来のエンジニア(または将来の自己)が変更が行われた理由を理解するのに役立ちます。非忠実な論理のみ、インラインコメントを使用してください。コードは、可能な限りその意図を表現してみましょう。
データプラットフォームのエンジニアリングのための実用的なパターン
抽出の変形の論理
多くのエンジニアリングパイプラインは、抽出物、変換、および単一のスクリプトで読み込みを混合します。 変換ロジックを分離して、独自にテストできる純粋な機能に分離します。 例えば、さまざまなSQLクエリを繰り返して、専用のモジュールにタイムゾーンのコンバージョンを分離します。
中間層の導入
生の摂取と消費の間にステージングまたはクリーンアップされたレイヤーを追加します。これにより、上流スキーマの変更から分析をシールドするバッファが作成されます。Directusベースのプラットフォームでは、既存のAPIエンドポイントに影響を与えずに、エンジニアが生データを変換できるように、テーブルをステージングとして機能するコレクションを作成できます。
メタデータを正規化
エンジニアリングデータは、多くの場合、繰り返しメタデータ(リピートメタデータ)、センサーID、キャリブレーション定数、位置座標を含みます。 メタデータをディメンションテーブルに分けることにより、ストレージのオーバーヘッドを削減し、更新が容易になります。 例えば、センサーが再校正されると、寸法表の1列だけが、事実列の数百万人未満ではなく変化する必要があります。
隔離されたパイプラインを採用します
複数の回を走るリファクタパイプラインは、同じ結果をもたらします。 これは、デバッグと遅延比例したデータを処理するために不可欠です。 不活性なパターン、重複論理、および一貫性のある注文を使用して、落差を防止します。 直接的に、あなたはきれいな再処理のために、APIの能力をの項目に活用することができます。
事例:予測メンテナンスパイプラインの再現
製造会社は、センサーデータを振動解析のために管理するためにDirectusを使用していました。 元のパイプラインは、生のCSVファイルを摂取し、単義のPythonスクリプトで数十の変換を行い、単一のワイドテーブルに結果をロードしました。 分析は、テーブルに対するクエリは30秒以上かかり、800行のコードを横断する失敗をデバッグしました。
3ヶ月以上、チームは増分再ファクタリングを適用しました。
- []テーブル]を、実際のテーブル(各レコード= 1つのセンサー読み取りを1つのタイムスタンプ)に分割し、寸法表(センサー、マシン、場所)。
- ウィンドウの解析、アウターの検出、周波数解析の変換関数[を抽出しました。各関数は既知の入出力ペアに対して単体テストされました。
- ] 変換前の原データを保存したDirectusでステージングレイヤー[を導入し、データロスなしで再処理が可能になりました。
- [] モノリシックスクリプトをApache Airflowで編成された軽量タスクのDAGで置き換えました。
結果: クエリタイムは2秒未満に低下し、パイプラインの故障は70%減少し、データサイエンティストは、生産に影響を与えずに、新しい変換を独立してテストすることができます。 同社は、後で、クリーンな事実テーブルを再利用することにより、リアルタイムのアラート機能を追加しました。
共通の課題とテーマを克服する方法
技術的な Debt の蓄積
エンジニアリングチームは、多くの場合、クリーンアップ上の新しい分析機能の優先順位付け. これに対処するために, 各スプリントの20%を割り当てる (または “ボーイスカウトルール”: 発見したよりもコードクリーナーを残します). 利害関係者が気にしているKPIを直接リファクタリングする ダッシュボードのロード時間やデータの鮮度など.
複雑性のテスト
テストなしで再ファクタリングすることは危険です。 複雑な変換のために、前後の結果を比較する統合レベルのテストを追加することによって開始します。 スナップショットテスト(例、大きな期待)を使用してください。 時間が経つにつれて、新しい抽出された関数のユニットテストをビルドします。
分析チームからの抵抗
データの科学者やエンジニアは、リファクタリングがクエリやダッシュボードを破る心配を抱えるかもしれません。リリースノートやログの変更で初期に変更を伝えます。 古いバージョンと新しいバージョンの共存が優れている猶予期間を提供します。 たとえば、スキーマの変更後、レガシービューまたはAPIエンドポイントを2週間保持します。
CI/CD によるリファクタリングの統合
再ファクタリングは、継続的な統合と配送パイプラインに統合する際に最も効果的です。スキーマのライニング(例えば、dbtの契約テスト)をすべてのプルリクエストで実行します。DirectusのCLを使用して、デプロイ中にスキーマの変更をプログラム的に適用します。各マージ前後のクエリ時間を比較するパフォーマンス回帰テストを自動化します。これにより、開発の習慣的な部分が、リスクの低下ではなく、安全に再ファクタリングできます。
ディープラーニングの外部リソース
- []: マーティン・フローラーによる既存のコードのデザインの改善 - パターンを再現するための基礎テキスト。
- [dbtデータテスト[] – データ変換のための自動検証への実用的なアプローチ。
- [Directus Data Model 最適化ガイド – スキーマの設計のヒントは、エンジニアリングデータプラットフォームに直接適用されます。
コンテンツ
再ファクタリングは、ワンタイムクリーンアップではありません。それは、エンジニアリングデータプラットフォームを適応可能かつ信頼できる状態に保つ、規準的な実践です。 体系的にコード、スキーマ、パイプラインを改善することにより、分析チームはより迅速なクエリ、クリーナーデータ、および革新する自由を得る。 開始:ボトルネックを1個選び、増分的な変更を計画し、検証を自動化します。 時間が経つにつれて、化合物の利点は、データプラットフォームをエンジニアリングインサイトのための強力なエンジンにします。