本書はデータエンジニアリングにおいて頻繁に直面する、データの品質、スケーラビリティ、性能、コスト削減といった共通の課題に対し、実践的なデザインパターンを提示します。データパイプラインの設計、データストレージの最適化、データ処理の効率化、データガバナンスの強化、といった代表的な課題ごとにまとめ、本番運用に耐えうる高品質で低コストのデータシステムを構築する上で必要なノウハウを紹介しています。サンプルコードはGitHubから利用可能。
データエンジニアリングデザインパターン
―データの問題を解決するベストプラクティス
Bartosz Konieczny 著、中田 秀基 訳
- TOPICS
- Database
- 発行年月日
- 2026年11月25日
- PRINT LENGTH
- 344
- ISBN
- 978-4-8144-0185-7
- 原書
- Data Engineering Design Patterns
- FORMAT
目次
はじめに
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 データ観測に関するデザインパターン
索引