目次
第0章 [速習]データ分析基盤と周辺知識 データ分析基盤入門プロローグ
0.1 データ分析基盤とサービスの提供先 サービスの提供先は4つに分類される
- SoR/SoE/SoI システムは3つに分類される
 - データ分析基盤とSoR/SoE/SoI/人 SoIはサービスの提供先とのハブ
 
0.2 データ分析基盤と周辺技術 データ開発以外でも利用するツールも活躍
- データ分析基盤から見たデータベースとストレージ 役割が異なるストレージとデータベースを使いこなそう
- オブジェクトストレージ データ分析基盤でデータを保存するといったらここ
 - RDB オーソドックスなデータベース
 - KVS 高速なアクセスを提供するデータベース
 - Web API システムを疎結合するためのインターフェース
 
 
0.3 データ分析基盤と外部との接点を理解しよう データ分析基盤もユーザー接点が大事
- データの可視化 データの可視化により行動の変革を促す
 - 外部への付加価値の提供 データをアプリケーションと連携していこう
 
0.4 データ分析基盤開発とサポートツール データ開発以外でも利用するツールも活躍
- 単体テスト テストの基本はデータ分析基盤も同じ
 - CI/CD 自動化してデータとシステムの品質を上げよう
 - コマンドライン オペレーションの効率を高める
 - 監視/運用 監視対象を決め継続的に状況を可視化し対策する
 
0.5 本章のまとめ
第1章 [入門]データ分析基盤 データ分析基盤を取り巻く「人」「技術」「環境」
1.1 データ分析基盤の変遷 多様化を受け入れるために進化する
- データとは何か パターンと関係を捉えるための情報源
- 構造データと非構造データ
 
 - データ分析基盤とは何か パターンと関係を知るためのツールの一つ
 - データ分析基盤の変遷 単一のノードから複数ノードへ
- シングルノード時代 個人のPCで分析する時代
 - マルチノード/クラスター時代 限られたグループで基盤を利用して分析する時代
 - クラウド時代 全社員が分析する時代
 - 主要なクラウド関連のプロダクトとデータ利用の流れ
 
 - データ分析基盤が持つ役割 データレイク,データウェアハウス,データマートという名称
- データレイク 非構造データを保持する役割
 - データウェアハウス 構造化されたデータを保持する役割
 - データマート テーブルを掛け合わせたデータを保持する役割
 - データレイク,データウェアハウス,データマートの違い データ量の規模は関係ない
 
 
1.2 処理基盤/クラスターの変遷 よりマネージレスにしてコストを減らし,より本来の業務へ集中する時代
- 分散処理の登場 Hadoop MPP,そしてオンプレミスからクラウドへ
 - スレッド処理と,マルチノードにおける分散処理 従来のスレッド処理との違いに注目
 - Hadoopの登場 Hadoopエコシステムとその進化
 - MPPDBの登場 RDBの技術要素をビッグデータにも
 - クラウドでのマネージレスなクラスターの登場(Hadoop,Kubernetes,MPPDB) Hadoopがクラウドへ
 
1.3 データの変遷 ExcelからWeb,IoT,そして何でもあり(!?)へ
- 増え続けているデータ 有り余るほどあるデータ
 - 重要性や認知を増すデータ 意思決定の大半はデータにより行われる
 - 機密性を増すデータ 個人識別情報が含まれるのが普通
 - 種類の増すデータ 決済情報,ログデータ,ストリーミングなど
 - 活用方法の拡大 不正検知,パーソナライズ,機械学習,AI,検索
 
1.4 データ分析基盤に関わる人の変遷 データにまつわる多様な人材
- データエンジニアのスキルセット 全米で急上昇な仕事8位(IT業界以外含む)
- データエンジニアリング領域
 - データエンジニアに求められる知識 データエンジニアとスモールシステムの知識
 
 - データサイエンティストのスキルセット データから価値を掘り出す
 - データアナリストのスキルセット データから価値を見い出す
 
1.5 データへの価値観の変化 データ品質の重要度が高まってきた
- 量より質=Quality beats quantity
 - データ品質とデータ管理への注目度が高まっている
 
1.6 データに関わる開発の変遷 複雑化するプロダクトと人の関係
- データエンジニア中心のシステム 何をするにもデータエンジニアを介さなければならなかった
 - とりあえずエンジニアに頼む 一部の玄人しか利用できない基盤
 - DataOpsチームの登場 価値のあるものを選択し素早くデータを届けることに価値を置く
 - セルフサービスモデルの登場 各個人に権限を委譲,大人数で長期間運用することを前提とした構成
 
1.7 本章のまとめ
第2章 データエンジニアリングの基礎知識 4つのレイヤー
2.1 データエンジニアリングの基本 ポイントと本書内の関連章について
- みんなにデータを届けよう ニーズを押さえた品質の高いインターフェース
 - パフォーマンスとコストの最適化 パーティション,圧縮,ディストリビューション
 - データドリブンの土台 数値で語る
 - シンプルイズベスト
 
2.2 データの世界のレイヤー データ分析基盤の世界を俯瞰する
- データ分析基盤の基本構造 データ分析基盤を俯瞰する
 - コレクティングレイヤー データを収集するレイヤー
 - プロセシングレイヤー 収集したデータを処理するレイヤー
 - ストレージレイヤー 収集したデータを保存するレイヤー
 - アクセスレイヤー ユーザーとの接点となるレイヤー
 
2.3 コレクティングレイヤー データを集める
- ストリーミング 絶え間なくデータを処理する
 - バッチ 一定以上の塊のデータを処理する
 - プロビジョニング ひとまず仮にデータを配置する
 - イベントドリブン イベントが発生したら都度処理を行う
 
2.4 プロセシングレイヤー データを変換する
- ETL 次の入力のためにデータを変換する
 - データラングリング データに対する付加価値をつける
- データラングリングの3つの作業
 - データストラクチャリング データを構造化する
 - データクレンジング データの精度を高める
 - データエンリッチング データ分析のための準備作業
 
 - ETLとデータラングリングの違い データに対する付加価値をつける
 - 暗号化/難読化/匿名化 データを推測しづらくしてセキュリティやプライバシーに配慮する
- トランスペアレントエンクリプション シンプルな暗号化方式
 - エクスプリシットエンクリプション 機密データの暗号方式
 - ハッシュ化 元のデータをわかりにくく変換する
 - ディアイデンティフィケーション 特定しにくくする難読化手法の一つ
 - 匿名化と匿名加工 個人情報を復元できないようにする加工
 
 - データ品質/メタデータ計算 データの状態を可視化する
 - モデルの作成 世の中の事象をルールに当てはめる
 - モデルを利用した推論 データをルールに通したらどうなったのか
- リバースETL データを外部システムに連携する
 
 
2.5 データ分析基盤におけるデータの種別とストレージ戦略 プロセスデータ,プレゼンテーションデータ,メタデータにおける保存先の選択
- プロセスデータ/プレゼンテーションデータ/メタデータ データの種別と利用用途の組み合わせにより格納場所が変わる
 - 各種データとデータ置き場オーバービュー データの種類とアクティビティによって保存先を使い分けよう
 
2.6 ストレージレイヤー データやメタデータを貯蔵する
- データレイク/DWH プロセスデータをメインとして管理する場所
- マスターデータ管理 マスターデータによってデータはもっと活きる
 - データ活用型のマスターデータ管理 既存のシステムが大量にある場合はこの方式がお勧め
 - データのライフサイクル管理 データの誕生から役目の終わりまで
 - データのゾーン管理 データを管理するときの基本
 
 - プレゼンテーションデータストア 外部アプリケーションとの連携を前提とした保存場所
 - メタデータストア メタデータを管理/保存する場所
 
2.7 アクセスレイヤー データ分析基盤と外の世界との連携
- GUI Web画面の提供
- GUIを通したメタデータの参照/更新 みんなの強い味方
 - GUIを通したデータ分析基盤へのオペレーションの提供
 
 - BIツール(SQL)アクセス データアクセスの王道
 - ストレージへの直接アクセス データの貯蔵庫へ直接アクセスをする
- [参考]Sparkにて,プロセシングレイヤーからストレージレイヤーのParquetファイルを読み込む
 - ファイル連携 ファイルを介したデータの連携
 - データエンリッチング データに付加価値をつける
 - クロスアカウントによるアクセス アカウントを分けてアクセス
 
 - API連携 データ分析基盤へのアクセスをラップする
- データ分析基盤をAPIを通して操作可能にする ジョブの実行から指標提供まで
 - プレゼンテーションデータ向けのAPI活用 活用データを利用して改善サイクルを回そう
 - メタデータアクセス 指標提供を行う
 
 - 分散メッセージングシステム ストリーミングデータを一時保存するところ
 
2.8 セマンティックレイヤーとヘッドレスBI アクセスレイヤーを拡張して外部へのデータ提供をより効率的に行う
- セマンティックレイヤー アクセスレイヤーを拡張して指標を統一しよう
- データ利用における不確実性 同一目的に対するアプローチのばらつき
 - セマンティックレイヤーの効果と配置パターン データの一貫性を確保するための最適なアプローチ
 
 - ヘッドレスBI データ提供をより確実に簡単にするソリューション
 
2.9 本章のまとめ
第3章 データ分析基盤の管理&構築 セルフサービス,SSoT,タグ,ゾーン,メタデータ管理
3.1 セルフサービスの登場 全員参加時代への移行期
- データ利用の多様化 データに対する価値観が異なる人たち
 - 従来のエンジニア中心のモデル Analytics as IT Service
 - セルフサービスモデル Analytics as Self-Service
- セルフサービスモデルの特徴 ユーザーごとに適切なインターフェースを提供する
 
 
3.2 SSoT データは1ヵ所に集めよう
- データのサイロ化 とくに避けるべき事態
 - フィジカルSSoT 実際にデータを1ヵ所に集める
 - ロジカルSSoT 1ヵ所に集めたようにユーザーに見せる
 
3.3 データ管理デザインパターン ゾーンとタグ
- タグとゾーンを組み合わせる 管理の汎用性を向上させる
 - タグを使った論理ゾーン化によるゾーンの管理 物理的ロケーションに囚われずに管理する
 - タグによるデータ管理 物理ゾーン化の弱点を解消する
 - GAパターン 一般公開は少し待ってから
- GAパターンにおけるデータの動き データは手続きを得て公開される
 
 - プロビジョニングパターン お好きなときにお好きにどうぞ
- プロビジョニングパターンにおけるデータの動き ユーザー主体で分析可能
 - プロビジョニングパターンとGAパターンの弱点 人のボトルネック
 
 - システムによる自動チェック データのチェックは機械(システム)にまかせる
 
3.4 データの管理とバックアップ データ整理と,もしものときの準備
- テーブルによる管理 ビッグデータの世界でもテーブル
- ロケーション テーブル定義と物理データの分離に対応する
 - パーティション ビッグデータでは必須。データの配置を分割する
 
 - データのバックアップと復元 一番怖いのは「人」
- フルバックアップ すべてのデータをバックアップしておく
 - 一部のデータをバックアップするパターン しくみやルールで解決
 - 復元方法も考えておく いざ戻せないと意味がない
 - バージョニング 効率的なバックアップ&復元手段
 
 
3.5 データのアクセス制御 ほど良いアクセス権限の適用
- データのアクセス権限 できる限りオープンな環境作り
- アクセス制御の種類 アクセス制御が必要になる背景にも注目
 
 
3.6 One Size Fits All問題 デカップリングで数々の問題を解決しよう
- デカップリングを前提に考える One Size Fits All問題への対応
 - 障害時の影響の最小化 できる限り持続可能なシステムに
 - 計算リソースの最適化 システムによって,元々の要件が異なる
 - ストレージレイヤーとプロセシングレイヤーの分離 デカップリングの基本戦略
 - コレクティングレイヤーやアクセスレイヤーの分離 ソフトウェアやミドルウェアのアップデートを簡単に
 
3.7 データのライフサイクル管理 不要なデータを残さないために
- データの発生 絶え間なく生まれるデータ
 - データの成長 データのバトン
 - データの最後 そして,生まれ変わる
- サマリー化 サマリーによるデータ圧縮
 - コールドストレージへデータをアーカイブ 使用頻度の低いものは,アクセス速度の遅い場所に配置
 - 不要なデータは削除する データマートやデータウェアハウスのデータ
 
 
3.8 メタデータとデータ品質による管理 データを知る基本ツール
- メタデータストアはどのように管理される データベースやマネージドツールなど
 
3.9 ハイブリット構成 柔軟に技術を選択しよう
- ハイブリット構成の大きなメリット 柔軟な機能実現と,データ統合コスト削減
 - データバーチャライゼーション そもそも取り込まない(!?)
 - ハイブリッドのデメリット 迷わせないことがデメリット解消の一歩
- ❶データの所在,オーナーが不明になりやすい
 - ❷管理対象の増加によるコスト増大や障害復旧の複雑化
 
 
3.10 データ分析基盤とSLO/SLA データ分析基盤の説明書を作る
- SLO/SLAとは? システムのお約束
 - データ分析基盤とSLO より目線を上げて規定する
 - 可用性 どれだけ継続可能か
 - データの取り扱い データはどのように管理されている?
 - パフォーマンス/拡張性 どこまでの規模を想定する?
 - セキュリティ 基本的な対策で思わぬ落とし穴を防ごう
 - 技術/環境要件 データ分析基盤を構成する要素と動いている場所は?
 
3.11 本章のまとめ
第4章 データ分析基盤の技術スタック データソースからアクセスレイヤー,クラスター,ワークフローエンジンまで
4.1 データ分析基盤の技術スタック 全体像を俯瞰する
- データ分析基盤のクラスター選択 データ分析基盤における計算能力の要
- クラスターの計算能力 インプットを処理してアウトプットするための能力
 
 - コレクティングレイヤーの技術スタック 多種多様なデータを取り込む入り口
 - プロセシングレイヤーの技術スタック 多種多様なデータを処理する場所
 - ストレージレイヤーの技術スタック 多種多様なデータを格納する場所
 - アクセスレイヤーの技術スタック 多種多様なアクセスを提供する場所
 - 全体を通して利用する技術スタック 堅牢なデータ分析基盤運用を支えるツール
 
4.2 データ分析基盤のためのクラスター選択 無理な利用にも耐えられる必要がある
- Hadoop ビッグデータの黎明期,オンプレミスのHadoopの問題
 - デカップリングの登場 クラウド環境のクラスター
 - Hadoop on クラウド Hadoopのマネージドは今でも便利
 - EMRとDataproc クラウド上で簡単に分散処理を実現する
 - Kubernetes コンテナライズされた環境
 - MPPDB ビッグデータシステムでも使えるスモールデータシステムの技術
 - HA環境下のLinuxサーバー 切っても切り離せないLinuxサーバー
 - SaaS型データプラットフォーム インフラの構築/管理の手間を省き別作業へシフトする
 
4.3 コレクティングレイヤーの技術スタック セルフサービス時代のデータの取り込み
- コレクティングレイヤーオーバービュー データソースによって技術を使い分けよう
 - バッチ処理のデータ取り込み データの塊を一度に処理する
- Embulkを活用したデータ収集 プラグインが豊富な取り込みの王道
 - CLIを活用したデータ収集 さまざまなコマンドを使いこなしてデータ収集しよう
 - API経由でのデータ収集 制限や速度に注意しながら取り込み方法を工夫しよう
 
 - ストリーミングのデータ取り込み 組み合わせの基本
- 分散メッセージングシステム Kafka pub/sub kinesissなど
 
 - プロビジョニング データを簡単に素早く取り込む
 - イベントドリブンにおけるデータ取り込み 応答性を確保して逐次処理する
 
4.4 プロセシングレイヤーの技術スタック データ変換を行うレイヤー
- バッチ処理のデータ変換 王道のデータ変換
- Apache Spark 最強のコンピューティングエンジンの登場
 - Apache Hive
 
 - ストリーミング処理のデータ変換 データを1行ずつ処理する
- ストリーミングETL データに付加価値をつける
 - Spark Structured Streamingと分散メッセージングシステム ストリーミングにおける組み合わせの基本
 
 - データ転送 データ分析基盤間,プロダクト間,クラウドベンダー間の連携
- データをバッチで転送する際に気をつけるポイント 正しく送られているか確認しよう
 
 - プロダクトの連携時によく使われるファイルのバッチ転送方法 クラウドベンダーのコマンド
 - クラウド間でよく使われる転送方法 オンプレミス,クラウド間で使われるツール
 - ストリーミング処理における転送方法
 - ストリーミングデータの送受信で気をつける点 データの重複,遅延,偏りに注意
 - リバースETL データ分析基盤から外部システムへデータを連携する
 
4.5 ワークフローエンジン データ取り込みと変換を統括する
- データパイプラインとワークフローエンジン 次へつながるインプットに着目する
- 汎用型と特化型 大まかな分類
 
 - データ分析基盤向けのワークフローエンジン選択 5つのポイント
 - Digdag 汎用型ワークフローエンジン
 - Apache Airflow Pythonで定義可能
 - Rundeck GUIが直感的で使いやすい
 
4.6 ストレージレイヤーの技術スタック データの保存方法
- データレイクやDWHで扱う技術スタック データ保存の効率化と最適化
 - ❶ストレージレイヤーが扱うフォーマット データウェアハウス,データマートで何を使うか
 - ❷列指向フォーマットと行指向フォーマット パフォーマンスと用途の違い
- Parquet 多くのデータ分析基盤はこのフォーマットで事足りる
 - Avro ストリーミングや,部門間にまたがり開発する際に有効
 
 - ❸データ分析基盤が扱う圧縮形式 特性と選択基準に注目
 - ❹その形式は「スプリッタブル」か 分散処理可能な組み合わせを選ぼう
- スプリッタブル 適度に分割したほうが処理しやすい
 - 圧縮形式とフォーマットの組み合わせ スプリッタブルな組み合わせかどうかが重要
 
 - ❺データストレージの種類 基本的なストレージから,データ分析基盤に特化したストレージまで
- オブジェクトストレージ データレイク/DWHにおけるデータ保存候補としての筆頭
 - プロダクトストレージ オブジェクトストレージより早い処理が可能
 - オンプレミスにおけるストレージ 安価になったSSD
 
 - ❻データストレージへのデータ配置で気をつけたいポイント 偏りをできる限りなくそう
- 1ファイルの大きさ スモールファイルに注意
 - データスキューネス データやファイルサイズの偏りに注意
 
 - ❼オープンテーブルフォーマット 既存フォーマットを拡張するソフトウェア
 
4.7 プレゼンテーションデータを扱う技術スタック 効果的なデータ参照のための設計戦略
- データモデル設計 データ分析基盤では参照要件を気にしよう
 - プレゼンテーションデータストアにおけるデータ保存 データ分析基盤から外部システムへデータを書き込む
 
4.8 アクセスレイヤー構築の技術スタック セルフサービス時代のユーザーへのデータ提供
- BIツールを提供する 万人とつながる可視化ツール
- 参照者が多い場合に利用するBIツール シンプルなダッシュボード向け
 - 編集者が多い場合に利用するBIツール 大半のBIツールはこの部類
 - SQLの提供 最強のデータ分析/活用技術
 - Presto(Trino) BIツールを通して,よく実行されるSQLのタイプ❶
 - PostgreSQL BIツールを通して,よく実行されるSQLのタイプ❷
 
 - ノートブック 多様なデータアクセスを提供するインターフェース
- Jupyter Notebook オープンソースの対話型ツール
 
 - APIを提供する データ分析基盤へのインターフェースとして活躍
 
4.9 セマンティックレイヤー 統一的なデータを提供しよう
- セマンティックレイヤーとは何か アクセスレイヤーを拡張する
- BIツールと連携したセマンティックレイヤー セマンティックレイヤーの意義を実例を使って理解しよう
 - ヘッドレスBIの活用 データ提供をより確実に簡単に実現する
 
 
4.10 アクセス制御 アクセスレイヤーに対するアクセス制御
- ユーザーの認証と制御の歴史 大きなデータ(大量のファイル)を持つデータ分析基盤特有の悩み
 - chmod/chown ジェネラルアクセスパーミッション
 - IAM ロールベースパーミッション
- タグ(属性)による管理
 
 
4.11 コーディネーションサービス 分散システムを支える影の立役者
- コーディネーションサービスとは何か ノード間の同期を円滑にする要
 - コーディネーションサービスの役割 システムの安定性を支えるしくみ
 - アンサンブル構成 コーディネーションサービスも冗長化する
 
4.12 本章のまとめ
第5章 メタデータ管理 データを管理する「データ」の重要性
5.1 データより深いメタデータの世界 データは氷山の一角
- メタデータとは何者なのか データを表すデータ
 - なぜメタデータを提供する必要があるのか データを見つけるためにデータを検索するのは非効率
- ❶疑問点の解消につながる 解答の糸口を持っている
 - ❷データに対するドメイン知識のギャップを緩和できる 暗黙のルールは言語化しにくく,またできる人が限られている
 - ❸データを利用するシステムや人の動きを統一する 指標を用いて統一感を出す
 - ❹非同期にデータを利用する状況を作る 生産性向上に寄与
 - ❺アクセス権限に縛られずデータを見つけるヒントになる データを見つけられないジレンマ
 
 
5.2 メタデータとデータ 3つのメタデータを整理/整備しよう
- データより深いメタデータ データ理解へのインターフェースとなる
 - ビジネスメタデータ テーブルやデータベースの意味を表すメタデータ
- データプロファイリング データの形はどのような形か
 
 - テクニカルメタデータ 技術的な内容を表すメタデータ
- テーブルの抽出条件 実はオリジナルデータと違うかもしれない
 - リネージュとプロバナンス テーブルのデータはどこから取得しているか
 - テーブルのフォーマットタイプ フォーマットの違いがもたらす課題に注目
 - テーブルのロケーション テーブルが参照しているデータはどこにあるか
 - ETLの完了時間 処理は終わっているか
 - テーブルの生成予定時間 次はいつ実行されるか
 - データの最終更新日時 データの鮮度を確認する
 
 - オペレーショナルメタデータ データの5w1hを表すメタデータ
- テーブルステータス そのテーブルは使えるか,使えないか
 - メタデータの更新日時 ドキュメントはいつ更新したか
 - 1ファイルのデータのサイズ スモールファイルは常に気をつける
 - 更新頻度 データ更新の誤解を防ぐ
 - 誰がアクセスしているか オペレーショナルメタデータにおける5W1H
 
 
5.3 データプロファイリング データの状態を知る
- データプロファイリングの基礎 データの特性からデータそのものを推論
 - データプロファイリング結果の表現方法 大別すると2パターン
 - データプロファイリングをどのレベル(単位)で表現するか カラムレベルからデータベースレベルまで
- カーディナリティ どれくらい値はばらけている?
 - セレクティビティ ユニークさを表現する。1なら,そのカラムはユニークである
 - デンシティNull NullもしくはNullに匹敵するものの密度
 - コンシステンシー 一貫性があるか?
 - リファレンシャルインテグレティ(参照整合性) データにはお互いに結合(SQLなどでJOIN)できるのか
 - コンプリートネス 値はNullではないか
 - データ型 年齢は数字か
 - レンジ 特定の範囲内か?
 - フォーマット 郵便番号は7桁かなど
 - フォーマットフリークエンシー(形式出現頻度) フォーマットのパターンはどれくらいある?
 - その他の基本的なプロファイリング項目 年齢は数字か
 - データリダンダンシー データが何ヵ所に存在しているか
 - バリディティレベル 有効か否か
 - フリークエンシーアクセス どれだけアクセスされているか?
 
 
5.4 データカタログ 手元にないメタデータはカタログ化しよう
- データカタログとは カタログを見て注文する
 - データカタログの必要性 データには3種類の認知が存在する
 - データカタログはECサイト データを取り寄せる
 
5.5 データアーキテクチャ メタデータの総合力としてのリネージュとプロバナンス
- データアーキテクチャ データフローの設計書
 - リネージュ テーブルの紐付きを表す
- ❶データ生成の方法が記載されているので,利用している技術スタックの見通しが良くなる 改善のヒントになる場合も
 - ❷障害時のトラッキングが行いやすくなる もしもの事態に備えよう
 - ❸オーナーの明確化が可能 いざという時の問い合わせ先
 - ❹データの設計書を残せる データ分析基盤ユーザーのための設計書
 - ❺プロバナンスやメタデータと統合する データのルーツをめぐる
 
 - プロバナンス データのDNAを表す
 - データモデル 表現の粒度
 
5.6 本章のまとめ
第6章 データマート&データウェアハウスとデータ整備 DIKWモデル,データ設計,スキーマ設計,最小限のルール
6.1 データを整備するためのモデル DIKWモデル
- DIKWモデル データの整備されていくステージを示す
- Data 断片的なデータ
 - Information(情報) 分類されたデータ
 - Knowledge(知識) データからパターンと関係を見つける
 - Wisdom(知恵) ルールから新たなひらめきを産む
 
 
6.2 データマートの役割 「Data」を整備して知恵の創出をサポートする
- データマートとは何か 「Data」を「Information」にすること
 - KnowledgeやWisdomのない世界 知識と知恵を生み出すための土台がない
 - データマートとデータウェアハウスの違い データを掛け合わせて新価値を作る
 - 中間テーブルとデータマートの違い 中間テーブルで十分な場合が多い
 - データマートを生み出す苦しみ 使ってもらうのは大変です
 
6.3 スキーマ設計 データに関するルールを設計する
- スキーマ設計の考え方 スキーマ設計によりデータの利活用効率を上げよう
 - スタースキーマ オーソドックスなスキーマ設計の一つ
 - 非正規化 データ分析基盤特有のテーブル設計
- データ分析基盤でJOINはコストの高い操作
 
 
6.4 データマートの生成サポート コミュニケーションの省略&活用
- データ分析基盤ができるサポート データマートを代わりに作ることではない
 - コミュニケーションの不要な中間テーブルの生成方法 粛々と中間テーブルを作成する
 - アクセスログとExplainを使って機械的に生成する アクセスの分析結果を活用する
- アクセスログを利用した方法のさらなるメリット
 
 - コミュニケーションの必要な中間テーブルの生成方法 ビジネスに直結したクエリーしやすいテーブルを作成する
 - Viewによる中間テーブルの作成 手軽にクエリーしやすくする
 - 履歴テーブルを作ろう 過去に遡る分析に備えよう
- オープンテーブルフォーマットを利用しない場合(データレイクそのままの場合)
 - オープンテーブルフォーマットを用いた場合
 
 
6.5 データマートのプロパゲーション メタデータやルールの作成
- データマートを自由に作成してもらうために 作りっぱなしを防ぐ
 - アクセス頻度を確認 要不要はアクセスログが知っている
 - データマート生成停止の条件を定める 作った後もしっかりとメンテナンスをする
 - アクセス数が減ってきたときの対応策 データマートは時間の経過とともに劣化する
 - 環境整備におけるメタデータの役割 情報伝搬のツールとして使う
- オペレーショナルメタデータ 活用例❶
 - ビジネスメタデータとしてデータマートのテーブル定義を管理 活用例❷
 
 
6.6 ストリーミングとデータマート 瞬時にKnowledge化する
- ストリーミング処理におけるデータマート作成 バッチとは処理単位が違うだけ
 - ストリーミングにおけるデータマート作成の流れ Avroフォーマットの活用
- Avroフォーマットとデータマート作成
 
 - 分散メッセージングシステムの連鎖 Aの出力はBへの入力
 
6.7 本章のまとめ
第7章 データ品質管理 質の高いデータを提供する
7.1 データ品質管理の基礎 データ蓄積から次の段階へ進む
- 本書で扱うデータ品質管理について
 - データ品質管理の三原則 事前に防ぐ。見つける。修正する
 - 三原則の適切な割合 どれかに偏り過ぎるのはNG
 - データ品質について データの状態を継続的に可視化し改善を示唆する
 - データ分析基盤におけるデータ品質担保の難しさ ステークホルダーがあちらこちらにも
 - データ品質を測定する 6つの要素
- データ品質の指標とデータの見方
 
 - データ品質 システム観点での重要性+コスト削減効果も
 - 分析観点での「データ品質」の重要性 分析のための煩雑な作業を緩和する
 - 不確実性観点での「データ品質」の重要性 揺らぎを排除できるか?
 - 生産性観点での「データ品質」の重要性 「ちょっと違う」に要注意!
 
7.2 データの劣化 データは放置するだけで劣化する
- データの劣化の原因 データの移動時と時間の経過に注意
- データの往来 データ分析基盤に到着する前にも劣化する
 - データの変換 システムの守備範囲,データマートの作成
 - 時間の経過 10年前のデータは正しいデータか
 - 人的要因 人にはミスがある
 - さまざまな劣化に早く気づき修正する
 
 
7.3 データ品質テスト 劣化に気づくための品質チェック
- データ品質テスト実施の流れ
 - レベル 品質テストを行う粒度の設定
 - カラムレベルで行うことができるテスト データの単体テスト
- 正確性のテスト 基本的なデータ品質の項目
 - ユニーク性と有効性のテスト 社内の常識の範囲
 - 一貫性のテスト 一貫性は取れているか
 - 適時性のテスト 必要なときに正しいデータが存在しているか
 - 完全性のテスト データはしっかりと情報を持っているか
 
 - テーブル間で行うことができる一貫性のテスト データを整えるために必要なテスト
- ナチュラルキーの特定を行う トランザクションIDなど
 - エクスターナルコンシステンシー 外部と一貫性をテストする
 
 - テーブル単位で行うことができるテスト シンプルなテストでも効果絶大
 - その他のテスト データの基本的な特徴を表す
 - 単体テストとデータ品質のテストは違う(?!) 2つのテストで相乗効果を狙おう
 
7.4 メタデータ品質 生産性を向上させるために
- メタデータの名寄せ テーブルの名称やカラムは統一されているか
 - 言語の認識合わせ あなたの第一クォーターは,あの人の第一クォーターか
 
7.5 データ品質を向上させる 品質テストの結果を活かす
- データのリペア データ不備を修正する/未然に防ぐ
- データ品質管理におけるプリベンションにつなげる リペア方法❶
 - すでにストレージレイヤーに存在するデータの不備を見つけて修正する リペア方法❷
 - ユーザーからのデータ修正依頼 リペア方法❸
 
 - インサイドアウトとアウトサイドイン 内から,外からデータを修正する
 - チェックし過ぎに注意 80%を善しとする
 - メタデータと連携したデータ品質の表現方法
- データの品質を事実で表現する
 - データの品質を数値で表現する
 
 
7.6 本章のまとめ
第8章 データ分析基盤から始まるデータドリブン データ分析基盤の可視化&測定
8.1 データ分析基盤とデータドリブン エンジニアもデータドリブンに行こう
- データドリブンと狭義のデータドリブン データのみを元に行動を起こす
 - 広義のデータドリブン メタデータとデータ,両方用いて行動する
 
8.2 データドリブンを実現するための準備 データ分析基盤のPDCAと数値
- データドリブンのためのPDCA
 - KGI/(CSF)/KPIを定義して課題設定する まずは目標設定から
- データ分析基盤におけるKGI/(CSF)/KPIの設定
 
 - 測定用のツールで改善前後の数値を測定 事前の数値取得は忘れずに
- BIツールでの可視化 ベーシックな可視化手法
 - 監視ツールでの可視化 便利なツールはいっぱいあります
 - 他ツールでの可視化 見やすくすることを意識しよう
 
 - アクションを決める 簡単にできて効果の高いものを選ぶ
- アクションの実施 複数チームや組織における実行
 
 - SLO システムが交わすユーザーに対して守るべきKPI
- コレクティングレイヤーにおけるSLO
 - プロセシングレイヤーにおけるSLO
 - ストレージレイヤーにおけるSLO
 - アクセスレイヤーにおけるSLO
 
 
8.3 KPIをどのように開発に活かすのか データ分析基盤の「コスト削減KGI」の例
- PDCAを高速に回す Planに時間をかけ過ぎない
 - コスト削減KGI 間接部門のわかりやすい成果指標
 - データ分析基盤のためのPDCAの例
- コスト削減KGIの設定 コストは安いほうが良い
 - コスト削減CSFの設定 どのような課題があるか
 - コスト削減KPIの設定 重要な指標を選択する
 - KPI改善のためのアクション設定 意外とある簡単でも効果の高いもの
 - アクションから得る学び 成功や失敗を次に活かそう
 
 
8.4 データ分析基盤観点のKGI/(CSF)/KPI 改善の着眼点
- クエリーのしやすさKGI SQLの実行しやすさ
- JOINの数 一体いくつのテーブルが結合されているのか
 - クエリーの実行時間 クエリーが遅過ぎる
 - データスキャン量 どれくらいのデータがスキャンされているか
 
 - フリクションKGI データを利用するまでにかかる時間
- データパイプラインの処理時間 データを早く届ける
 - 調整コスト より合理的に無駄を省く
 
 - データマネジメントKGI データをしっかりと守っています
- データリダンダンシー データの冗長性はどれくらいある?
 - データ品質 データの「良さ」を定量的に表現する
 
 - データエンゲージメントKGI データ利用はどれくらい広がっている?
- 配置率 センサーやJavaScriptファイルなど
 - 参画人数 メタデータのエンゲージメントはどのくらいか
 - SQLの発行数 全体で発行されているSQLの数
 - 発行ジョブ数 データ分析基盤の成長指標
 - 参画人数 アクセスログを使う
 
 - さまざまな数値がKPIになり得る 数値管理との違い
 
8.5 本章のまとめ
第9章 [事例で考える]データ分析基盤のアーキテクチャ設計 豊富な知識と柔軟な思考で最適解を目指そう
9.1 テーマとゴールを考えてみよう 基本的な要件で思考の順番を掴もう
- テーマとゴール 基本的な要件でアーキテクチャのイメージを掴もう
 - 技術的な前提条件の整理 基本的な要件でアーキテクチャのイメージを掴もう
 
9.2 データ分析基盤の骨格を考えよう まずは大きなデータの流れについて考慮しよう
- データのアウトプットを起点に考えよう 目的のないデータ分析基盤の構築はやめよう
 - インプットとアウトプットを見比べて全体のロジックをつなげる データソースとインプットは整合性が取れているだろうか
- アウトプットとインプットデータの整合性確認
 - どのようなBIツールを利用するか
 - 為替の考慮
 
 - どのようにデータを収集するか 技術的に達成可能か
- データ取得および処理は時間内に終わるか
 - APIトークンはどのように扱うか
 - スケジューラーやワークフローの有無
 
 - どのようなストレージが最適か,どのように保存するか
- データの保存先をどこにするか
 - メタデータストア
 - データのゾーン管理
 - ゴールドゾーンへ作成するテーブルのパーティションはどうするか
 - 保存フォーマットをどうする?
 
 - データ処理をどのように行うか 目的に向けてどのようなデータ変換を実施するか
- メタデータ テーブルの定義はどのようにするか
 
 - [補足]設定のポイント整理&リファレンス
- データパイプラインはどのようになったか
 
 
9.3 データ分析基盤構築における不確実性に備えよう ソフトスキルも大事にしよう
- パズル台紙にはめられない場合はどうする? ソフトスキルやソフトウェアエンジニアリングが必要な場面も
- 制約もアーキテクチャの考慮に入れよう 一つ違うだけで大局が変わることもある
 
 
9.4 データ分析基盤に必要な機能を揃えよう 非機能についても目を向けよう
- データ品質実行アプリを付け足す データを常に監視しよう
 - アーキテクチャにメタデータの管理の考慮を入れてみよう データを多くの人に知ってもらおう
 
9.5 本章のまとめ
Appendix [ビッグデータでも役立つ]RDB基礎講座
A.1 データベースとは何か? 検索,更新,制約機能を持った入れ物
- データベースの機能と形態
 - Excelデータベースの限界 データベースの基本機能を満たせるか
 - RDBの誕生 データベースと言えばコレ
 
A.2 RDBの基本 データベースの基本を振り返る
- RDB 現実世界を表す表形式のデータ集合体
 - テーブル テーブルを定義するのは3つの要素
- 行(レコード) 横方向のデータ塊
 - 列(カラム) 縦方向のデータの塊
 - スキーマ 行と列に制約を課す
 - 型情報 データの特性を決める
 - 主キーと外部キー RDBにおける大事な制約
 
 - SQL データを操作する最も汎用的な技術
- SELECT(検索) 目的のデータを見つける
 - INSERT/UPDATE/DELETE(登録,更新,削除) 対象のデータを更新する
 - CREATE TABLE テーブルを作成する
 - CREATE View 別名を付ける
 
 - トランザクション 同時実行性を解決する
 - インデックス 検索性能を向上させる
 - 代表的なRDB 概念理解が大事
- クエリーエンジン SQLを動かすソフトウェアやミドルウェア
 
 
A.3 RDBにおけるアーキテクチャ RDBの設計
- アーキテクチャとは何か 構成を考える
 - データアーキテクトとデータアーキテクチャ データの保持方法と表現方法
 - 正規化と正規型 データの保存方法の整理
- 非正規型 横方向にカラムが増えていく
 - 第1正規化 横方向のカラム整理
 - 第2正規化 主キー属性における従属関係の分離
 - 第3正規化 非キー属性における従属関係の分離
 
 - 正規化のメリットとデメリット 手順に囚われすぎないようにしよう
 - ER図 データやテーブルの表現方法