データ工学
データ工学・ビッグデータ
バッチ/ストリーム処理・Spark・列指向・レイクハウス・CDC… ビッグデータ基盤の仕組みを、まず TL;DR でつかみ、そこから原理まで。
解説記事
原理・深掘り
分散データ処理と分析基盤の仕組みを、まず TL;DR で要点をつかみ、そこから原理まで。
ETLとELTパイプライン
分析基盤へのデータ流し込みが壊れる・重複する・遅い、を根本から断ちたい人へ。ETLからELTへ移った理由、依存管理と再実行、冪等な設計とバックフィル、データ品質を原理から整理します。
Kafkaの内部構造
分析基盤のイベント収集やCDCの土台であるKafkaを、なぜ速く壊れにくいのか原理から腑に落とせます。分散コミットログ、パーティション、ISRとリーダー選出、オフセットと順序保証、ログ保持とコンパクションを内部動作から解きほぐします。
MapReduceとシャッフル
なぜ分散集計はシャッフルで詰まるのか、その正体をつかむために。map/reduceの処理モデルとシャッフル・ソートの役割、データ局所性による転送削減、そして全対全通信がボトルネックになる原理を解きほぐします。
MPPデータウェアハウス
テラバイト級の集計が数十秒で返る理由を、内部から理解したい人へ。シェアードナッシングによる大規模並列処理、分散キー・ソートキー設計、データ再分散(シャッフル)、クエリの並列実行プランの原理を解きほぐします。
OLAPとOLTPの違い
分析基盤の設計を任されたとき、なぜ本番DBをそのまま集計に使うと詰まるのかがわかります。取引系と分析系のワークロード特性の根本差、スタースキーマとディメンションの狙い、列指向がなぜ分析に効くのかを原理から解説します。
SparkのRDDとDAG実行
SparkがなぜMapReduceより速いのかを原理からつかむために。遅延評価で変換を系譜(lineage)として溜め、DAGスケジューラがシャッフル境界でステージへ切り、パーティションをタスクとして並列実行する仕組みを解説します。
オブジェクトストレージとデータレイク
データレイクの土台であるS3的オブジェクトストレージが、なぜファイルシステムと違う挙動をするのかが腑に落ちます。結果整合性・リスト操作・小ファイル問題・強整合性化までを、分析基盤の設計視点で原理から押さえられます。
ストリーム結合と状態管理
終わりのない二つのストリームを、遅れて届くレコードも取りこぼさず突き合わせたい人へ。ストリーム同士・ストリームとテーブルの結合を状態ストアとRocksDBがどう支え、保持期間とTTLで状態の肥大化をどう抑えるかを原理から押さえられます。
ストリーム処理のexactly-once
「二重課金も取りこぼしもない」ストリーム集計を、なぜ・どう作るのか腑に落とせます。at-least-once/at-most-onceの限界、チェックポイントとバリア、冪等書き込み、トランザクショナルシンクを原理から解きほぐします。
ストリーム処理のウォーターマークと窓
無限に流れ続けるイベントを、遅れて届くデータも取りこぼさず正しく集計したい人へ。イベント時間とウォーターマークで「もう来ない」を判定し、窓を閉じる原理と、遅延と完全性のトレードオフを設計として選ぶ方法がわかります。
データスキューの検出と対処
分散ジョブが「99%で止まる」あの現象を根本から潰すために。ホットキーによる偏りがなぜ1タスクを詰まらせるのかを解き、ソルティング・スキュー結合・再分配・事前集約という対処を原理から使い分けられます。
データメッシュ
中央データチームがボトルネックになり分析要望が数か月詰まる状況を抜け出したい人へ。ドメインへ所有権を分散しデータをプロダクト化、セルフサービス基盤と連合ガバナンスで統治する原理を中央集権レイクとの対比で解きます。
データリネージとカタログ
何百ものテーブルとパイプラインの中で「この数字はどこから来たのか」「この列を変えたら何が壊れるのか」に即答したい人へ。メタデータを収集し、リネージで依存を追跡し、カタログで発見可能にする原理と、影響分析・ガバナンスへの効かせ方がわかります。
データ品質とデータコントラクト
上流の何気ない列名変更で下流のダッシュボードとMLが静かに壊れる、を止めたい人へ。品質を測る四つのディメンション、期待値テスト、生産者と消費者が結ぶデータコントラクト、破壊的スキーマ変更を出荷前に弾く原理がわかります。
パーティショニングとバケッティング
分析基盤のクエリが遅いのは、多くの場合スキャン量とシャッフル量が過大だからです。パーティションで読む前に捨て、バケットでシャッフルを消し、スキューと小ファイル問題を避ける設計の勘所を原理から押さえられます。
バッチ処理とストリーム処理
日次バッチとリアルタイム処理のどちらを選ぶかで迷う人へ。有界データと無界データという根本の違いから、レイテンシとスループットのトレードオフ、Lambda/Kappaアーキテクチャの是非までを原理で整理し、使い分けの判断軸が持てます。
フィーチャーストア(ML特徴量基盤)
学習では高精度なのに本番で精度が崩れる、同じ特徴量を各チームが作り直す、を根本から断ちたい人へ。特徴量の一元管理、オンライン・オフライン一貫性、point-in-time結合による学習・推論の乖離防止を原理から解説します。
ベクトル化クエリ実行
分析クエリが同じCPUで数倍速くなる理由を原理から掴みたい人へ。行を1件ずつ処理するVolcanoモデルの限界、列指向の一括処理・SIMD・キャッシュ効率・コード生成が効くメカニズムを、分析基盤の観点で解きほぐします。
レイクハウスとテーブルフォーマット
安価なオブジェクトストレージ上のParquetの山に、ウェアハウス並みのACID・タイムトラベル・スキーマ進化を後付けしたい人へ。Iceberg/Delta/Hudiがメタデータ層でこれをどう実現するかを内部構造から解説します。
ログベースCDC(変更データキャプチャ)
夜間バッチのフルロードをやめ、業務DBの変更を数秒で分析基盤やデータレイクへ届けたい人へ。トランザクションログ(binlog/WAL)を読むログベースCDCの仕組みと、初期スナップショット・順序保証・下流配信の原理がわかります。
ワークフローオーケストレーション(DAG)
数百のバッチが絡み合う分析基盤で、依存の取りこぼし・二重実行・過去分の作り直しに悩む人へ。パイプラインをDAGで表し、論理日付で駆動し、センサーで外部依存を待ち、冪等な再試行で安全に回す原理を解きます。
確率的データ構造(Bloom・HLL・Count-Min)
テラバイトの基数や頻度を、正確な集計の数千分の一のメモリで概算できます。誤り率を数式で保証しつつ、分散パーティションをそのまま足し合わせられる集約スケッチの原理を、ビッグデータ集計の観点でつかめます。
緩やかに変化するディメンション(SCD)
顧客の引っ越しや商品分類の変更で、過去の分析集計が今の属性に塗り替わってしまう問題を根絶したい人へ。SCDのType1/2/3、サロゲートキーと有効期間、ファクトとの結合を原理から整理します。
増分マテリアライズドビュー
巨大なファクトテーブルへの集計クエリが毎回数十秒かかる、を根本から解く仕組みがわかります。結果を事前計算してキャッシュし、元データの差分だけで更新する増分メンテナンスの原理と、鮮度とコストのトレードオフの設計法を解説します。
分散クエリプランニングと最適化
同じSQLでも書き方や設計次第で分析クエリのコストが桁で変わる理由を内部から掴む。論理・物理プラン、コストベース最適化、プッシュダウンとプルーニング、シャッフル境界でのステージ分割の原理を分析基盤の視点で解きほぐします。
分散結合戦略(broadcast・shuffle・sort-merge)
分散JOINが遅いのは、たいてい結合戦略の選択を誤っているからです。小表を配るブロードキャスト、両表を再分配するシャッフル、大表どうしのソートマージを、いつ何が選ばれるかの判断基準ごと原理から押さえられます。
分析SQLとウィンドウ関数
ランキング・移動平均・累積・前期比を、自己結合やアプリ側ループなしに1パスで書きたい人へ。集約との違い、PARTITION BY/ORDER BY/フレームの意味、分析基盤での実行コストとシャッフルの原理を解きほぐします。
列指向フォーマット(Parquet・ORC)
分析基盤で「なぜ Parquet に置くと速く安くなるのか」が腑に落ちます。オブジェクトストレージ上のオープンな列指向ファイルが、スキャン量課金を桁で減らし、複数エンジンで同じデータを共有できる原理を分析基盤の視点で押さえられます。