ck_fm0211のブログ

書きたいことを書く。

『Google Cloudではじめる実践データエンジニアリング入門[業務で使えるデータ基盤構築]』を読んだ

この本を読んだ。

前の記事の通り、メモりながら読んでみたので、それを参考にしつつ読書メモをブログにも残す。 ck-fm0211.hatenablog.com

読書メモ

この本はBigQueryを中心としたデータ基盤について書かれた本。
BigQueryの強みを紹介しつつ、周辺プロダクトとの連携などもかんたんなハンズオンを交えながら紹介されている。

章立てとサマリ

章立てとしては以下の通り。それぞれにかんたんな要約をつけてみる。

  • 第1章 データ基盤の概要
    • 昨今話題のDX(デジタルトランスフォーメーション)とデータ基盤の関係。
    • データ基盤とそこに出てくる各要素の言葉の定義、目線合わせ。
  • 第2章 BigQueryのコンセプトと利用方法
    • DWHとして利用するBigQueryの基礎知識、使い方の紹介。
    • BigQueryの内部構造を解説し、なぜ高いパフォーマンスが出せるのか、他のDWH製品とは何が違うのかを示している。
    • また、BigQueryをうまく活用するためのユースケースの紹介。
  • 第3章 データウェアハウスの構築
    • BigQueryの可用性について解説。
    • BQでマート作成する際のベストプラクティスや、マート作成やDMLを流す際に使える便利機能を紹介。
  • 第4章 データレイクの構築
    • データレイクの概念の説明。
    • GCPでどのようにデータレイク・ウェアハウスを構成するか。既存のしくみ(Hadoop等)をどのように載せ替えるか・なぜそれができるか(どのようなサービスがGCPに存在しているか)
    • また、GCPでこれを構築するメリットはなにか(vs. オンプレ)
  • 第5章 ETL/ELT処理
    • ETL/ELTの違い、使い分けについて解説。
    • Dataflow/Dataproc/BigQueryでETL/ELTをするときのそれぞれの特徴がまとまってる
  • 第6章 ワークフロー管理とデータ統合
    • Cloud Composer/Dataflowの関係性について解説。
      • それぞれの用途とハンズオン
      • ハンズオンはQwiklabsにもありそう
  • 第7章 データ分析基盤におけるセキュリティとコスト管理の設計
    • データ基盤の運営を念頭に置いた、GCPにおける基本的な監査・コスト管理の方法
  • 第8章 BigQuery へのデータ集約
    • BigQueryへのデータパイプラインを作成する方法の例
      • 単純なデータ転送
      • Dataflowをつかった加工まで実施するパイプライン
      • 他サービスとの連携
  • 第9章 ビジネスインテリジェンス
    • BIツールの紹介
      • コネクテッドシート(GoogleSpreadsheet)
      • DataPortal
      • Looker
        • Lookerでの設定方法
    • BIツールを使うときのbqの便利機能
  • 第10章 リアルタイム分析
    • ストリーミング処理の実装方法
      • サンプルとしてPub/Sub->Dataflow->BigQuery
    • ストリーミング処理の概要の説明・ハンズオン
      • ハンズオンはQwiklabsにありそう
  • 第11章 発展的な分析
    • BigQuery GISの紹介
    • BigQueryで使える機械学習サービスの紹介とそれぞれの特徴使い方の説明
      • BigQuery ML
      • Auto ML Tables
    • AI Platformについても少し。

感想

一番タメになったこと

特に序盤のBigQueryの内部構造について解説されている部分がタメになった。
普段の業務でBigQueryを使っているが、内部構造についてあまり踏み込んで理解しておらず、他に利用したことのあるAWS RedshiftやOracle Exadataに比べて「すごく早い!」くらいの感想で済ませていた。
おそらくここで出てくる「インメモリシャッフル機構」がBigQueryをBigQueryたらしめる最重要要素であると理解した。
先週あたり、#bq_sushiのイベントでBigQuery高速化のLTを聞いたが、そのときは「なんでこんなことがわかるん??」という気持ちだったが、この本を読んで内部構造を理解することの重要性を理解した。

その他タメになったこと

細かい話だが、知らないコマンドや機能・仕様についても書かれており、これらは本番運用の中でもすぐにでも活用できるなと思うものが多かった。一例を以下に挙げる。

  • bq headコマンドでBigQueryのWebUIと同様のプレビューが参照できる
  • テーブルへのリストアは2パターン。
    • CTAS(CREATE TABLE AS SELECT
      • タイムトラベルに必要なテーブルメタデータが一度消去されるため、それ以前のタイムトラベルができなくなる
    • クエリ結果を別テーブルとして保存し、復旧対象テーブルの該当するデータをDELETEしてからINSERTする
      • タイムトラベルを考慮するとこっちを使ったほうがいい
  • 承認済みビューのクエリのWHERE句で、クエリ実行者のメールアドレスを返すSESSION_USER関数を使用することで、このビューが取得するデータをユーザーに応じて動的に変更できる。これによりユーザーに応じた行レベルのアクセス制御が可能。

反省

この本で紹介される機能はあくまで一例で、基本的には良いことしか書いてない。公式ドキュメントや実際に動かしてみると様々な制約事項などがあり、必ずしもその機能が万能ということではない(当然のことだが)。
たとえばこの本を読んでる最中、BigQueryのマテリアライズドビューの解説があり、それを読んでるとあたかも万能な機能にも思えた。そんなようなことをTwitterでつぶやいたら、ドキュメントをちゃんと読んでいる人(検証している人)からフルボッコにされた。

ちゃんとドキュメントは読もう。

この本の使い方

GCPでデータ基盤を構築したい、という人はもちろんだが、「データ基盤を作ったほうがいいと思うけど上司・会社にどう説明したらいいか」のサンプルにもなるなと思った。
特に第一章ではDXの話題からデータ基盤・データ分析の重要性について説いており、この文章はそのまま社内稟議を通すための資料にも使えるんじゃないかと思うほど一般化されていたように思う。
ここだけ引用させてもらって、実際の構築はAWSSnowflakeなんかを使う使うっていうのもアリだと感じた。

また、GCPにおける各サービスやその中の機能の比較が表・図になってわかりやすくまとまっている。この図をかき集めて社内wikiとかに貼り付けておくだけでもかなり有用な気がする。やってみよ。