Fundamentals of Data Engineering 輪読会資料 第15回分 20230724開催

# 本記事の位置付け
こちらの勉強会　[英語で技術書を読もう：Fundamentals of Data Engineering 第15回](https://gaisaba.connpass.com/event/290705/)　に参加し、発表するためにまとめたもの。

- 今回の対象
    - Chapter2 The Data Engineering Lifecycle
        - Major Undercurrents Across the Data Engineering Lifecycle より
            - Data Management 配下の、以下の①と②と③が今回の対象です。
                - ①Data governance
                - ②Discoverability
                - ③Metadata
                - （Data accountability の手前まで）

# Chapter2 The Data Engineering Lifecycle

## Major Undercurrents Across the Data Engineering Lifecycle

### Data Management

#### ①Data governance

- [Data Governance: The Definitive Guide](https://oreil.ly/LFT4d)によれば、
    - Data Governance とは、
        - 第一にして最重要なデータ管理機能。
        - 組織によって収集されたデータの以下項目を保証する。
            - 品質
            - 統合
            - 安全
            - 使いやすさ

---

- この定義を拡大すると、以下のようになる。
    - Data Governance とは、
        - 組織全体のデータ価値を最大化するために
        - 適切なセキュリティ制御でデータを保護しながら、
        - 以下の３つを関与させることである。
            - 人
            - プロセス
            - テクノロジー

        - 効果的なデータガバナンスは、
            - 意図をもって開発される
            - 組織によってサポートされる

        - データガバナンスが偶発的かつ無計画に行われた場合、
            - その副作用はその周辺のいろんなものに及ぶ可能性がある。
                - 信頼できないデータから
                - セキュリティ侵害まで

        - データガバナンスを意識的に行うことで、
            - 組織のデータ機能とデータから生成される価値が最大化される。
            - ちゃんとデータを処理していなかった組織として（汚名が）ニュースに載るのを防ぐ。
---

- データガバナンスが不十分に行われている典型例。
    - ビジネスアナリストはレポート作成するよう指示されるが、
        - どのデータを使用すればよいかわからない。
            - DB内の数十のテーブルを調査するのに何時間も費やし
            - どのフィールドが役立つかを適当に推測する。
        - 「指示には正しく従った」レポートを作成する。
        - しかしレポートの基礎となるデータが正確・健全であるかは疑わしい。
    - レポートを受けた者もデータの有効性に疑問を抱いている。
    - アナリスト、そして企業システム内のすべてのデータの整合性が問われている。
    - 会社は業績について混乱しており、事業計画ができない。

---
- データガバナンスは、
    - データ駆動ビジネスの実践の基礎
    - データエンジニアリングライフサイクルのミッションクリティカルな部分

- データ ガバナンスが適切に実践されていれば、
    - 人材、プロセス、テクノロジーが連携してデータを主要なビジネス推進力として扱うことができる。
    - データの問題が発生した場合は、すぐに対処される。

    - データ ガバナンスの中心となるカテゴリは、以下。
        - 見つけやすさ
        - セキュリティ
        - 説明責任

    - これらカテゴリには、以下のサブカテゴリがある。
        - データ品質
        - メタデータ
        - プライバシー


#### ②Discoverability（見つけやすさ）
- データドリブンな企業では、
    - データは利用可能であり、
    - 発見可能でなければならない。

- エンドユーザーは、業務を遂行するために
    - 必要なデータに迅速かつ確実にアクセスできる必要がある。
    - 以下を知っている必要がある。
        - データがどこから来たのか
        - 他のデータとどのように関係しているのか
        - データが何を意味するのか
- データの見つけやすさは、以下を含む。
    - メタデータ管理
    - マスターデータ管理

#### ③Metadata

- メタデータとは
    - データについてのデータである
    - データエンジニアリングのライフサイクルのあらゆるセクションを支えるもの
    - データを検出、管理可能にするために必要なデータ
---
- メタデータは 2つの主要なカテゴリに分類される。
    - 自動的に生成されたもの。
    - 人間が生み出したもの。
---

- 最新のデータエンジニアリングは、
    - 「自動化」を中心に展開している。
- 実際のメタデータの収集は、
    - 多くの場合手動で行われ、エラーが発生しやすい。
---

- テクノロジーはこのプロセスを支援し、手動によるメタデータ収集のエラーを取り除ける。
    - 以下のようなメタデータ管理ツールがたくさん出てきている。
        - データカタログ
            - データベースをクロールして関係を検索できる
![スクリーンショット 2023-07-24 17.29.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/b4c9dc87-5597-f051-f930-34161ba7fa15.png)


        - データリネージ追跡システム
            - データパイプラインを監視してデータがどこから来てどこへ行くのかを追跡できる。
![スクリーンショット 2023-07-24 17.31.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/717c1933-2045-d81e-64f3-90c26eb430dd.png)


---
　
- 手動アプローチでは、さまざまな関係者が組織内のメタデータ収集を人海戦術で対応する内部主導の取り組みが多い。
- データ管理ツールは、データエンジニアリングのライフサイクルの多くを省力化できるため、本書全体で詳しく取り上げる。
---
- メタデータはデータとデータプロセスの副産物。
    - ただし重要な課題があって、特に、相互運用性と標準が不足している。

- メタデータツールの優れた点
    - データシステムへのコネクタとメタデータを共有する機能によって定まる。

- 自動メタデータツールは人間の活動を無視してはならない。
    - データにはソーシャルな要素がある。
        - 組織が積み上げた以下の要素を考慮しましょう。
            - プロセス
            - データセット
            - パイプラインに関するソーシャルキャピタルと知識。
![スクリーンショット 2023-07-24 17.33.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/49562c0e-3e9e-3567-1965-5a9752312e0e.png)



---

- 人間指向のメタデータシステムは、メタデータの社会的側面に焦点を当てている。
    - Airbnbは、データツール「データポータル」に関するブログ投稿で強調している。
    - [こちらの記事より](https://medium.com/airbnb-engineering/democratizing-data-at-airbnb-852d76c51770)
        - データ所有者、データ消費者、およびドメイン専門家を開示する場所を提供すべきである。
        - ドキュメントや内部Wikiツールはメタデータ管理の重要な基盤を提供すべきである。
        - これらのツールは自動データカタログ作成とも統合する必要がある。
            - たとえば、データスキャンツールは、関連するデータオブジェクトへのリンクを含むWikiページを生成する等。

---
- 一度メタデータシステムとプロセスができてしまえば、データエンジニアはメタデータを有用な方法で利用できるようになる。
- メタデータは、パイプラインを設計し、ライフサイクル全体にわたってデータを管理するための基盤になる。

---
- DMBOK は、データ エンジニアにとって役立つメタデータの 4 つの主要なカテゴリを特定します。
    - ビジネスメタデータ
    - 技術メタデータ
    - 運用メタデータ
    - 参照メタデータ

---

- ビジネスメタデータ
    - データがビジネスで使用される方法に関連する。
    - ビジネスやデータの定義、ルールやロジック、どこでどのようにデータが使用されるか、誰が所有者か、等。
    - データエンジニアは、技術的ではない質問に対して、誰が何をどこでどうやって、と回答する際にビジネスメタデータを使用する。
    - 例
        - データエンジニアは顧客販売分析者向けのデータパイプライン作成を指示される。
        - だが、その場合の「顧客」とは誰を指すのか？
        - 過去９０日以内に製品を購入した者を指すのか？
        - 当該ビジネスが開始されてから購入した者であれば誰でも良いのか？
    - データエンジニアは、「顧客」がどのように定義されているかを探す為に（データ辞書やデータカタログを使って）ビジネスメタデータを参照して、正しいデータを作成する。
    - ビジネスメタデータは、データエンジニアに対して、データを使用するにあたっての正しいコンテキストと定義を提供する。
    - 参考資料として、以下訳者のブログを記載する。
        - [正しい言葉のモノサシ、使っていますか？](https://www.ibm.com/blogs/solutions/jp-ja/terminology_definition/)
        - 用語集の例
![スクリーンショット 2023-07-24 15.49.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/ad30790b-8345-f1f3-dfd7-02a5e5391ea5.png)



- テクニカルメタデータ
    - データエンジニアリングライフサイクルを通じてシステムにより作られ使われるデータについて記述したもの。
    - 以下を含む。
        - データモデル
        - スキーマ
        - リネージュ
        - フィールドマッピング(?)
        - パイプラインワークフロー
    - データエンジニアは、データエンジニアリングライフサイクルを通じて様々なシステムを作成、接続、監視するためにテクニカルメタデータを使用する。
    - データエンジニアが使用するテクニカルメタデータの例
        - パイプラインメタデータ（オーケストレーションシステムで作成される）
        - データリネージュ
        - スキーマ
    - オーケストレーションとは
        - 多様なシステム間を調整する中心となるハブのようなもの
        - オーケストレーションシステム内で捕捉されたパイプラインメタデータは、以下の情報を提供する。
            - ワークフローのスケジュール
            - システムやデータの依存関係
            - 設定
            - 接続の詳細
            - などなど
        - 以下はとあるETL製品の画面
![スクリーンショット 2023-07-24 18.55.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/ccea21da-138e-cb3d-da05-b9e12b6c01d3.png)



- データリネージュメタデータ
    - データの生成元やその変更、依存関係、などを時系列で捕捉する。
    - データの流れは、そのライフサイクルを通じてデータの変更や他のデータと組み合わさって進化していく。
    - データリネージュはデータの流れに応じた監査情報を提供してくれる。
    - 以下はとあるリネージュ製品の画面
![スクリーンショット 2023-07-24 17.37.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/5ff1b507-d5de-34a8-07f3-223554c7dc60.png)

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/IBM?src=hash&amp;ref_src=twsrc%5Etfw">#IBM</a> のデータリネージュのデモ動画です。<a href="https://twitter.com/hashtag/%E6%97%A5%E6%9C%ACIBM?src=hash&amp;ref_src=twsrc%5Etfw">#日本IBM</a>　<a href="https://twitter.com/hashtag/DataOps?src=hash&amp;ref_src=twsrc%5Etfw">#DataOps</a> <a href="https://twitter.com/hashtag/CP4D?src=hash&amp;ref_src=twsrc%5Etfw">#CP4D</a> <a href="https://twitter.com/hashtag/WatsonKnowledgeCatalog?src=hash&amp;ref_src=twsrc%5Etfw">#WatsonKnowledgeCatalog</a> <a href="https://twitter.com/hashtag/WKC?src=hash&amp;ref_src=twsrc%5Etfw">#WKC</a> <a href="https://twitter.com/hashtag/%E3%83%87%E3%83%BC%E3%82%BF%E3%82%AB%E3%82%BF%E3%83%AD%E3%82%B0?src=hash&amp;ref_src=twsrc%5Etfw">#データカタログ</a> <a href="https://twitter.com/hashtag/MANTA?src=hash&amp;ref_src=twsrc%5Etfw">#MANTA</a> <a href="https://twitter.com/hashtag/DataLineage?src=hash&amp;ref_src=twsrc%5Etfw">#DataLineage</a> <a href="https://twitter.com/hashtag/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AA%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A5?src=hash&amp;ref_src=twsrc%5Etfw">#データリネージュ</a> <a href="https://t.co/HA3jdQtOOK">https://t.co/HA3jdQtOOK</a> <a href="https://t.co/FYFKepS7qR">pic.twitter.com/FYFKepS7qR</a></p>&mdash; ぼうさん / 外資IT魔法戦士 / Shumpei Kubo (@_bou_3) <a href="https://twitter.com/_bou_3/status/1646776162599997443?ref_src=twsrc%5Etfw">April 14, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



- スキーマメタデータ
    - 以下のようなシステムに貯蔵されるデータの構造を記述する
    - ストレージシステムの差別化要因
        - データベース
        - データウェアハウス
        - データレイク
        - ファイルシステム
    - 例
        - オブジェクトストレージ
            - スキーマメタデータを管理しない。
            - メタストア（？）で管理されるべきもの
        - データウェアハウス
            - 内部的にスキーマを管理する。
    - これらはテクニカルメタデータの一例であって、全てではない。この本を通じてその他のテクニカルメタデータにも触れていく。

    - スキーマメタデータの例？
        - 以下はとあるデータカタログの画面
![スクリーンショット 2023-07-24 15.48.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/dc16fb97-db9d-26e7-ddc9-03fc7ad3c0db.png)

- オペレーショナル（運用/操作）メタデータ
    - 様々なシステムの運用・操作の結果
    - 以下の統計情報
        - プロセス
        - ジョブID
        - アプリケーションランタイムログ
        - プロセスで使用されたデータ
        - エラーログ
    - データエンジニアは、以下の確認の為にオペレーショナルメタデータを確認する。
        - プロセスの成功
        - プロセスの失敗
        - 関連するデータ
    - （訳者感想）
        - [databand.ai](https://databand.ai/)のようなデータオブザーバビリティ製品がこれに該当するのであろうか。
![スクリーンショット 2023-07-24 15.44.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/53c4d5bf-c7e6-0710-491c-01aa9416bb62.png)


    - オーケストレーションシステムはオペレーショナルメタデータの限られた部分しか提供できないが、そのメタデータはシステムごとに分散してしまっている。
    - より良い品質のオペレーショナルメタデータとその管理を求める声が、次世代オーケストレーションシステム、メタデータ管理システムへの開発のモチベーションとなっている。

- 参照メタデータ
    - 他のデータを分類する為に使用する。
    - また参考用として参照される。
    - 一般的な例
        - 内部コード
        - 地理コード
            - （訳者感想：郵便番号みたいなやつ？）
        - 測定単位
        - 内部カレンダー標準
    - 参照データの多くは内部で完全に管理されてる。
    - 地理コードなどの項目は標準の外部参照から取得される場合がある。
    - 参照データは基本的に他のデータを解釈するための標準であるため、変更される場合、この変更はゆっくり進行する。
    - 参照データの例
![スクリーンショット 2023-07-24 15.52.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/23e61b4e-ec20-f52c-f08a-530f1d161823.png)