Tech × Books plusシリーズ改訂新版[エンジニアのための]データ分析基盤入門<基本編> データ活用を促進する! プラットフォーム&データ品質の考え方

[表紙]改訂新版[エンジニアのための]データ分析基盤入門<基本編> データ活用を促進する! プラットフォーム&データ品質の考え方

紙版発売

B5変形判/368ページ

定価3,300円(本体3,000円+税10%)

ISBN 978-4-297-14563-7

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

システムとデータの両面にスポットを当て,データ分析基盤の整備/運用/活用の指針をまとめた入門書。

データ分析の中心にある「データ分析基盤」を取り巻く環境は,大きく変わりました。機械学習/ディープラーニング,マーケティング,需給予測,不正検知を筆頭にデータ利用が多角化し,データ分析基盤に求められる役割も多様化が進んでいます。

本書では,データ分析基盤の「今」に焦点を合わせ,基本用語の整理から歴史,クラウドをはじめとしたインフラ,主要な技術スタック,システムモデル,データドリブンのための可視化&測定術まで徹底解説。

合わせて,長期視点に立ったユーザー中心の運用に欠かせない「セルフサービス」「SSoT」に基づいたルール作り,それらを実現するためのゾーン/タグ管理,メタデータ管理,データの品質管理も平易にまとめました。

今回の改訂では新たに第0章「[速習]データ分析基盤と周辺知識」&第9章「[事例で考える]データ分析基盤のアーキテクチャ設計」を収録。より基本に忠実にかつ実践への道しるべとなる入門書を目指し解説を強化しました。

広くデータ分析基盤に関わるエンジニア/ユーザーの方々へ,ユーザーが自然と集まり,データ活用を促進するシステムの実現のために,実践で活かせる考え方をお届けします。

こんな方におすすめ

  • データ活用のために,データ分析基盤の開発に携わっているエンジニア
  • データ分析基盤を利用して分析を行い,より良いデータ活用環境を実現したいとお考えのユーザーの方々
  • データ分析基盤に関心をお持ちのインフラエンジニア,プログラマ,データ分析者

関連サイト(サンプルコードなど)

本書著者の斎藤友樹氏による関連サイト(GitHub)は次のとおりです。サンプルコードなども以下のURLから参照可能です。

https://yk-st.github.io/2nd_edition_bigdataplatform_and_engineering/

この書籍に関連する記事があります!

はじめに

本書のサンプル

本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。

サンプル画像1

サンプル画像2

サンプル画像3

サンプル画像4

サンプル画像5

目次

第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図 データやテーブルの表現方法

A.4 Appendixのまとめ

著者プロフィール

斎藤友樹(さいとうゆうき)

SIerで官公庁,年金,広告などのシステムの要件定義〜保守運用まで,SEやマネージャーとしてフロントエンド〜サーバーサイドまでひととおり経験。現在は,事業会社にてビッグデータ分析に関するシステムの構築,蓄積したデータの活用を行う仕事に従事している。直近では利用者が数千万を超える環境で,ストリーミングデータの処理や一日あたり5000超のETLジョブを捌くデータ分析基盤のアーキテクチャ設計やデータ活用のためのしくみ作りを担当。また,AWSなどのパブリッククラウドイベントの登壇などを通して積極的に情報発信を行っている。