データエンジニアリング MOC
1. データエンジニアリング入門 MOC
- データエンジニアリングとは
- データエンジニアの役割と責任
[[データパイプラインの設計、構築、運用]][[データストレージシステムの管理]][[データ品質と信頼性の確保]][[スケーラビリティとパフォーマンスの最適化]][[データガバナンスとセキュリティの実践]]
- 関連職種との役割分担
[[データエンジニア vs. データアナリスト]][[データエンジニア vs. データサイエンティスト]][[データエンジニア vs. ソフトウェアエンジニア]][[データエンジニア vs. データベース管理者 (DBA)]][[アナリティクスエンジニアの登場]]
- データライフサイクルとデータエンジニアリング MOC
[[データ生成 (Generation)]][[データ収集 (Collection / Ingestion)]][[データ処理 (Processing)]][[データ保存 (Storage)]][[データ管理 (Management)]][[データ分析 (Analysis)]][[データ可視化 (Visualization)]]
- モダンデータエンジニアリングの原則
[[クラウドネイティブ]][[ELTパラダイムの採用]][[コードとしてのインフラ/パイプライン (IaC, Pipeline as Code)]][[自動化とテスト]][[分離とモジュール性 (Modern Data Stack)]]
- データエンジニアリングの学習ロードマップ (例)
2. データモデリング (Data Modeling) MOC
- データモデリングの重要性 (分析のしやすさ、パフォーマンス、保守性)
- データモデリングのレベル
[[概念データモデル (Conceptual Data Model)]][[論理データモデル (Logical Data Model)]][[物理データモデル (Physical Data Model)]]
- リレーショナルデータベースのモデリング
- 正規化 (Normalization) (第一〜第五正規形、ボイス・コッド正規形)
[[正規化の目的 (データ冗長性の排除、更新時異常の防止)]]
- 非正規化 (Denormalization)
[[非正規化の目的 (クエリパフォーマンスの向上)]][[正規化と非正規化のトレードオフ]]
- 正規化 (Normalization) (第一〜第五正規形、ボイス・コッド正規形)
- データウェアハウスのモデリング
- スタースキーマ (Star Schema) MOC
[[ファクトテーブル (Fact Table)]][[ディメンションテーブル (Dimension Table)]][[スタースキーマの利点と欠点]]
- スノーフレークスキーマ (Snowflake Schema) MOC
[[ディメンションテーブルの正規化]][[スノーフレークスキーマとスタースキーマの比較]]
- Fact Constellation)
- slowly changing dimensions (SCD) の種類と実装 (Type 1, 2, 3, 4, 6)
- スタースキーマ (Star Schema) MOC
- データヴォールト (Data Vault) モデリング MOC
[[ハブ (Hub), リンク (Link), サテライト (Satellite)]][[データヴォールトの目的 (監査可能性、拡張性)]]
- スキーマ定義と進化 (Schema Evolution)
3. データ収集とインジェスト (Data Collection and Ingestion) MOC
- データインジェストのパターン
[[バッチインジェスト (Batch Ingestion)]][[マイクロバッチインジェスト (Micro-batch Ingestion)]][[ストリーミングインジェスト (Streaming Ingestion)]]
- データソース別の収集方法
[[リレーショナルデータベースからのデータ収集]][[JDBC/ODBC経由のバッチ取得]]- CDC (Change Data Capture) MOC (Debezium, Maxwell’s demonなど)
[[Web APIからのデータ取得]][[ファイル (CSV, JSON, XML, Log) のインジェスト]][[イベントストリームのインジェスト (Kafka, Kinesisなど)]]
- データインジェストツール
[[Fluentd / Fluent Bit]](ログ収集)[[Apache Sqoop]](Hadoopエコシステム)[[SaaSベースのデータインテグレーションツール]][[Fivetran]][[Stitch]][[Airbyte]](オープンソース)
- データインジェスト層の設計 (スケーラビリティ、耐障害性、監視)
4. ELT パイプライン MOC
- ETL (Extract, Transform, Load) MOC
[[ETLのプロセスフロー (抽出→変換→ロード)]][[ETLの伝統的なアーキテクチャとツール (Informatica, Talendなど)]][[ETLのユースケースと課題]]
- ELT (Extract, Load, Transform) MOC
[[ELTのプロセスフロー (抽出→ロード→変換)]][[ELTが主流になった背景 (クラウドDWHの台頭)]]- dbt (data build tool) MOC
[[dbtの役割 (データウェアハウス内でのT(変換)に特化)]][[SQLベースのデータ変換、テスト、ドキュメンテーション]][[アナリティクスエンジニアリングとdbt]]
- ETL vs. ELT の比較 MOC
[[処理場所 (中間サーバ vs. DWH)]][[データ量と柔軟性]][[ツールとスキルセット]]
- リバースETL (Reverse ETL) MOC
[[DWHから業務システム (Salesforce, Marketoなど) へのデータ同期]]
- データパイプラインの設計
[[冪等性 (Idempotency) の確保]][[エラーハンドリングと再試行ロジック]][[依存関係の管理]][[モニタリングとアラート]]
- (オプション) Apache NiFiによるデータフロー自動化
5. データストレージとウェアハウジング MOC
5.1. データウェアハウス (DWH - Data Warehouse) MOC
- DWHの定義と目的 (分析目的で統合・整理された時系列データのリポジトリ)
- DWHの4つの特性 (S.I.T.V)
[[主題指向 (Subject-Oriented)]][[統合 (Integrated)]][[時系列 (Time-Variant)]][[不揮発性 (Non-Volatile)]]
- クラウドデータウェアハウス
[[Amazon Redshift MOC]][[Google BigQuery MOC]][[Snowflake MOC]][[クラウドDWHの特徴 (コンピューティングとストレージの分離、スケーラビリティ)]]
- DWHのアーキテクチャ (インプレス、エンタープライズ、データマート)
5.2. データレイク (Data Lake) MOC
- データレイクの定義と目的 (構造化・半構造化・非構造化データをそのままの形式で保存するリポジトリ)
- データレイクの特性
[[スキーマオンリード (Schema-on-Read)]][[高い柔軟性とスケーラビリティ]]
- データレイクの課題
[["データスワンプ (Data Swamp)"化のリスク]][[データガバナンスとセキュリティの複雑性]]
- データレイクの構築 (AWS S3, Azure Data Lake Storage, Google Cloud Storage)
5.3. データレイクハウス (Data Lakehouse) MOC
- データレイクハウスの定義 (データレイクの柔軟性とDWHの管理機能・性能を両立)
- データレイクハウスを支える技術
[[オープンなテーブルフォーマット (Delta Lake, Apache Iceberg, Apache Hudi)]][[ACIDトランザクション、タイムトラベル、スキーマ進化の実現]]
[[クエリエンジン (Spark, Trino/Presto)]]
[[Databricks Lakehouse Platformの概要]][[SnowflakeのUnistoreとデータレイクハウス]]
5.4. データストレージのファイルフォーマット MOC
- 行指向フォーマット
[[CSV, TSV, JSON]](可読性、柔軟性)
- 列指向フォーマット (カラムナフォーマット)
- Apache Parquet MOC
- Apache ORC (Optimized Row Columnar) MOC
[[列指向フォーマットの利点 (分析クエリの高速化、高い圧縮率)]]
- Apache Avro MOC (スキーマ埋め込み、行指向、スキーマ進化に強い)
- フォーマット選択の基準
6. データ処理システム MOC
6.1. バッチ処理 (Batch Processing) MOC
- バッチ処理の定義 (データをまとめて一括処理)
- Apache Spark MOC
[[Sparkのアーキテクチャ (Driver, Executor, Cluster Manager)]][[RDD (Resilient Distributed Dataset)]][[DataFrame と DataSet API]][[遅延評価 (Lazy Evaluation) とDAG (有向非巡回グラフ)]][[Spark SQL]][[PySpark (Python API)]]
- Hadoop MapReduce MOC (歴史的意義と基本概念)
[[MapperとReducer]]
6.2. ストリーム処理 (Stream Processing) MOC
- ストリーム処理の定義 (データを発生と同時に継続的に処理)
- ストリーム処理の基本概念
[[イベント時間 (Event Time) vs. 処理時間 (Processing Time)]][[ウィンドウ処理 (Tumbling, Sliding, Session Windows)]][[ウォーターマーク (Watermarks)]](遅延データの扱い)[[状態管理 (Stateful Streaming)]]
- ストリーム処理フレームワーク
- Apache Spark Structured Streaming MOC (マイクロバッチ)
- Apache Flink MOC (ネイティブストリーム処理)
- Apache Kafka Streams MOC (Kafkaと統合されたライブラリ)
- ストリーム処理のユースケース (リアルタイムモニタリング、不正検知、リアルタイム推薦)
6.3. データ処理アーキテクチャ MOC
- ラムダアーキテクチャ (Lambda Architecture)
[[バッチ層、スピード層、サービング層]][[利点と複雑性]]
- カッパアーキテクチャ (Kappa Architecture)
[[ストリーム処理に一本化]][[ラムダアーキテクチャとの比較]]
7. ワークフローオーケストレーション MOC
- オーケストレーションの必要性 (複雑なデータパイプラインの管理)
- Apache Airflow MOC
[[Airflowのコアコンセプト (DAG, Operator, Sensor, Hook, XCom)]][[PythonによるDAG定義]][[Airflowのアーキテクチャ (Scheduler, Webserver, Executor, Worker)]]
- モダンなオーケストレーションツール
[[Prefect MOC]][[Dagster MOC]](データアウェアなオーケストレータ)
- (オプション) Luigi, Argo Workflows
- オーケストレーションツールの選定基準
8. データ品質とガバナンス MOC
8.1. データ品質 (Data Quality) MOC
- データ品質の6つの側面
[[完全性 (Completeness)]][[一意性 (Uniqueness)]][[適時性 (Timeliness)]][[妥当性 (Validity)]][[正確性 (Accuracy)]][[一貫性 (Consistency)]]
- データプロファイリングツールの活用
- データ品質テストと監視
[[dbt tests]][[Great Expectations]][[パイプラインへのテスト組み込み]]
8.2. データガバナンス (Data Governance) MOC
- データガバナンスの定義と目的
- データスチュワードシップと役割分担
- メタデータ管理とデータカタログ
[[技術的メタデータ、ビジネスメタデータ、運用メタデータ]][[データカタログツール (Amundsen, DataHub, Alation, Collibra)]]
- データリネージ (Data Lineage)
[[データリネージの重要性 (トレーサビリティ、影響分析)]]
- アクセスコントロールとデータセキュリティ
- データプライバシーと法規制 (GDPR, CCPA) (再掲・データエンジニアリング文脈)
9. データエンジニアリングのインフラとツール MOC (再掲・集約)
- クラウドデータプラットフォームの活用 (AWS, GCP, Azureの主要サービス)
- コンテナ化 (Docker) とオーケストレーション (Kubernetes) (データパイプラインでの利用)
- プログラミング言語
[[SQL (データエンジニアリングにおける最重要言語)]][[Python (スクリプティング、PySpark, Airflowなど)]][[JVM言語 (Java, Scala) (Spark, Flink, Kafkaなど)]]
- Infrastructure as Code (IaC) for Data Platforms (Terraform)
- CD for Data Pipelines (DataOps) MOC
[[データパイプラインのテスト (ユニット、インテグレーション)]][[ステージング環境の構築]][[パイプラインの自動デプロイ]]
10. モダンデータスタック (The Modern Data Stack) MOC
- モダンデータスタックの概念 (ELT中心、クラウドネイティブ、分離・専門化されたツール群)
- 構成要素の例
[[データインジェスト: Fivetran, Airbyte]][[データウェアハウス: Snowflake, BigQuery, Redshift]][[データ変換: dbt]][[BI/分析: Looker, Tableau, Power BI]][[リバースETL: Census, Hightouch]][[オーケストレーション: Airflow, Prefect, Dagster]]
- モダンデータスタックの利点と課題
11. データエンジニアリングのベストプラクティスとアンチパターン MOC
- ベストプラクティス
[[コードとして全てを管理する (SQL, パイプライン定義, IaC)]][[テストを徹底する]][[ドキュメントを整備する]][[モニタリングとアラートを設定する]][[スケーラビリティを考慮して設計する]][[コストを意識する]]
- アンチパターン
[[データスワンプの構築]][[過度な最適化または最適化の欠如]][[テストとモニタリングの軽視]][[パイプラインの過度な複雑化 ("スパゲッティパイプライン")]][[セキュリティとガバナンスの無視]]
12. データエンジニアリングの将来とトレンド MOC
- Data Mesh MOC
[[Data Meshの4つの原則 (ドメイン指向の所有権, 製品としてのデータ, セルフサービスデータプラットフォーム, フェデレーション計算ガバナンス)]]
- ストリーミング処理の普及とリアルタイム分析
- アナリティクスエンジニアリングの台頭
- MLOpsとDataOpsの統合
- データエンジニアの役割のさらなる進化