データエンジニアリングデザインパターン

―データの問題を解決するベストプラクティス

[cover photo]
TOPICS
Database
発行年月日
PRINT LENGTH
344
ISBN
978-4-8144-0185-7
原書
Data Engineering Design Patterns
FORMAT
Print
Print
4,840円

本書はデータエンジニアリングにおいて頻繁に直面する、データの品質、スケーラビリティ、性能、コスト削減といった共通の課題に対し、実践的なデザインパターンを提示します。データパイプラインの設計、データストレージの最適化、データ処理の効率化、データガバナンスの強化、といった代表的な課題ごとにまとめ、本番運用に耐えうる高品質で低コストのデータシステムを構築する上で必要なノウハウを紹介しています。サンプルコードはGitHubから利用可能。

目次

はじめに

1章 データエンジニアリングデザインパターンとは
    1.1 デザインパターンとは
    1.2 まだデザインパターンが必要なのか?
    1.3 よくあるデータエンジニアリングパターン
    1.4 本書で使用するケーススタディ
    1.5 まとめ

2章 データ取り込みに関するデザインパターン
    2.1 フルロード(Full Load)
        2.1.1 パターン:フルローダ(Full Loader)
    2.2 インクリメンタルロード(Incremental Load)
        2.2.1 パターン:インクリメンタルローダ(Incremental Loader)
        2.2.2 パターン:CDC(変更データキャプチャ:Change Data Capture)
    2.3 複製(Replication)
        2.3.1 パターン:パススルー複製(Passthrough Replicator)
        2.3.2 パターン:変換複製(Transformation Replicator)
    2.4 データコンパクション(Data Compaction)
        2.4.1 パターン:コンパクタ(Compactor)
    2.5 データ準備(Data Readiness)
        2.5.1 パターン:準備マーカ(Readiness Marker)
    2.6 イベント駆動(Event Driven)
        2.6.1 パターン:外部トリガ(External Trigger)
    2.7 まとめ

3章 エラー管理に関するデザインパターン
    3.1 処理できなかったレコード(Unprocessable Records)
        3.1.1 パターン:デッドレター(Dead-Letter)
    3.2 重複レコード(Duplicated Records)
        3.2.1 パターン:ウィンドウ内重複排除(Windowed Deduplicator)
    3.3 遅延データ(Late Data)
        3.3.1 パターン:遅延データ検出(Late Data Detector)
        3.3.2 パターン:静的遅延データ統合(Static Late Data Integrator)
        3.3.3 パターン:動的遅延データ統合(Dynamic Late Data Integrator)
    3.4 フィルタ(Filtering)
        3.4.1 パターン:フィルタ傍受(Filter Interceptor)
    3.5 耐故障性(Fault Tolerance)
        3.5.1 パターン:チェックポインタ(Checkpointer)
    3.6 まとめ

4章 冪等性に関するデザインパターン
    4.1 上書き(Overwriting)
        4.1.1 パターン:高速メタデータクリーナ(Fast Metadata Cleaner)
        4.1.2 パターン:データ上書き(Data Overwrite)
    4.2 更新(Updates)
        4.2.1 パターン:マージ(Merger)
        4.2.2 パターン:ステートフルマージ(Stateful Merger)
    4.3 データベース(Database)
        4.3.1 パターン:キーによる冪等(Keyed Idempotency)
        4.3.2 パターン:トランザクションライタ(Transactional Writer)
    4.4 不変データセット(Immutable Dataset)
        4.4.1 パターン:プロキシ(Proxy)
    4.5 まとめ

5章 データの価値に関するデザインパターン
    5.1 データリッチ化(Data Enrichment)
        5.1.1 パターン:静的ジョイン(Static Joiner)
        5.1.2 パターン:動的ジョイン(Dynamic Joiner)
    5.2 データ装飾(Data Decoration)
        5.2.1 パターン:ラッパ(Wrapper)
        5.2.2 パターン:メタデータ装飾(Metadata Decorator)
    5.3 データ集約(Data Aggregation)
        5.3.1 パターン:分散集約(Distributed Aggregator)
        5.3.2 パターン:ローカル集約(Local Aggregator)
    5.4 セッション分割(Sessionization)
        5.4.1 パターン:インクリメンタルセッション分割(Incremental Sessionizer)
        5.4.2 パターン:ステートフルセッション分割(Stateful Sessionizer)
    5.5 データの順序(Data Ordering)
        5.5.1 パターン:ビンパック順序付け(Bin Pack Orderer)
        5.5.2 パターン:FIFO順序付け(FIFO Orderer)
    5.6 まとめ

6章 データフローに関するデザインパターン
    6.1 シーケンス(Sequence)
        6.1.1 パターン:ローカルシーケンサ(Local Sequencer)
        6.1.2 パターン:分離シーケンサ(Isolated Sequencer)
    6.2 ファンイン(Fan-In)
        6.2.1 パターン:整列ファンイン(Aligned Fan-In)
        6.2.2 パターン:非整列ファンイン(Unaligned Fan-In)
    6.3 ファンアウト(Fan-Out)
        6.3.1 パターン:並列分岐(Parallel Split)
        6.3.2 パターン:排他的選択(Exclusive Choice)
    6.4 オーケストレーション(Orchestration)
        6.4.1 パターン:シングルランナ(Single Runner)
        6.4.2 パターン:並列ランナ(Concurrent Runner)
    6.5 まとめ

7章 データセキュリティに関するデザインパターン
    7.1 データ削除(Data Removal)
        7.1.1 パターン:垂直分割(Vertical Partitioner)
        7.1.2 パターン:インプレース上書き(In-Place Overwriter)
    7.2 アクセス制御(Access Control)
        7.2.1 パターン:テーブルへの細粒度アクセス制御(Fine-Grained Accessor for Tables)
        7.2.2 パターン:リソースへの細粒度アクセス制御(Fine-Grained Accessor for Resources)
    7.3 データ保護(Data Protection)
        7.3.1 パターン:暗号化(Encryptor)
        7.3.2 パターン:匿名化(Anonymizer)
        7.3.3 パターン:擬似匿名化(Pseudo-Anonymizer)
    7.4 接続(Connectivity)
        7.4.1 パターン:シークレットポインタ(Secrets Pointer)
        7.4.2 パターン:シークレットレス接続(Secretless Connector)
    7.5 まとめ

8章 データストレージに関するデザインパターン
    8.1 パーティション分割(Partitioning)
        8.1.1 パターン:水平分割(Horizontal Partitioner)
        8.1.2 パターン:垂直分割(Vertical Partitioner)
    8.2 レコードの構成(Records Organization)
        8.2.1 パターン:バケット(Bucket)
        8.2.2 パターン:ソート(Sorter)
    8.3 読み込み性能の最適化(Read Performance Optimization)
        8.3.1 パターン:メタデータ拡張(Metadata Enhancer)
        8.3.2 パターン:データセット実体化(Dataset Materializer)
        8.3.3 パターン:マニフェスト(Manifest)
    8.4 データ表現(Data Representation)
        8.4.1 パターン:正規化(Normalizer)
        8.4.2 パターン:非正規化(Denormalizer)
    8.5 まとめ

9章 データ品質に関するデザインパターン
    9.1 品質の強制(Quality Enforcement)
        9.1.1 パターン:AWAP(Audit-Write-Audit-Publish:監査-書き出し-監査-公開)
        9.1.2 パターン:制約強制(Constraints Enforcer)
    9.2 スキーマの一貫性(Schema Consistency)
        9.2.1 パターン:スキーマ互換性強制(Schema Compatibility Enforcer)
        9.2.2 パターン:スキーマ移行(Schema Migrator)
    9.3 品質観測(Quality Observation)
        9.3.1 パターン:オフライン観測(Offline Observer)
        9.3.2 パターン:オンライン観測(Online Observer)
    9.4 まとめ

10章 データ観測に関するデザインパターン
    10.1 データ検出(Data Detector)
        10.1.1 パターン:フロー中断検出(Flow Interruption Detector)
        10.1.2 パターン:スキュー検出(Skew Detector)
    10.2 時間に関する検出(Time Detector)
        10.2.1 パターン:ラグ検出(Lag Detector)
        10.2.2 パターン:SLAミス検出(SLA Misses Detector)
    10.3 データリネージ(Data Lineage)
        10.3.1 パターン:データセット追跡(Dataset Tracker)
        10.3.2 パターン:細粒度追跡(Fine-Grained Tracker)
    10.4 まとめ

あとがき

付録A パターンのまとめ
    A.1 データ取り込みに関するデザインパターン
    A.2 エラー管理に関するデザインパターン
    A.3 冪等性に関するデザインパターン
    A.4 データの価値に関するデザインパターン
    A.5 データフローに関するデザインパターン
    A.6 データセキュリティに関するデザインパターン
    A.7 データストレージに関するデザインパターン
    A.8 データ品質に関するデザインパターン
    A.9 データ観測に関するデザインパターン

索引