この記事は Ateam LifeDesign Advent Calendar 2024 の、24日目の記事となります。
はじめに
この記事の対象者
主にデータ分析に関わる方と、分析に必要なデータを蓄積しているエンジニアの方向けの記事です。
データレイク・データウェアハウス・データマートの概念を正しく理解することで、よりデータ分析が捗ることを目的にしています。
また、エンジニアの方で、既にこれらの用語は知っているよ。という方が、非エンジニアの方に説明するとき「こう説明するとわかりやすい」といった視点も含まれます。
この概念を知るメリット
- エンジニアがデータ蓄積するとき楽になる
- データの蓄積ルールが明確になることで、蓄積時に都度設計する手間がなくなる
- データの収集速度が上がる
- どこに、どんなデータが入っているかが明確なので、データ収集が早い
- エンジニアの収集工数を抑えることが出来る
- 毎回、非エンジニアの人からデータ抽出の依頼を受けて、データを加工・抽出する手間がなくなる
データレイクとは?
データレイクは、英語にすると「Data Lake」。直訳すると「データの池」となります。
釣ってきた魚をそのまま池に放り込んでいるイメージです。
データの世界では、取得したデータをそのまま保存している状態を指します。
少し難しい用語を使うと「非構造化データ」といいます。
つまり、Excelやスプレッドシート等のデータが、GoogleドライブやAmazonS3のようなストレージにそのまま加工せず保存されている状態を指します。
データウェアハウスとは?
一言でいうと「図鑑」のイメージを持ってもらえるとよいのではと思います。
例えば、魚には背骨があり、内臓があり、目があり、エラがあり...と多くの要素で構成されています。
それらの構成要素が整理され、まとまっている状態がデータウェアハウスです。
データの世界では、これを「構造化データ」といいます。例えばデータベース内のテーブルやカラムといった形で定義れた状態。定義に沿ってデータが蓄積されている状態を指します。
データマートとは?
データマートは英語にすると「Data Mart」。直訳すると「データ売り場」となります。
つまり、釣ってきた魚が買い手にとって扱いやすい状態で販売されている状態です。
例えば、お刺身用の切り身、焼き魚用の切り身や開きになっている状態です。
スーパーマーケットの魚売り場のイメージですね。
データの世界では、目的に応じてデータを抽出・加工して保存されている状態を指します。例えば営業の売上分析をしたい、マーケティングの市場分析をしたいという目的が合った場合、目的に沿った情報のみが過不足なく蓄積されている状態を指します。また、目的によってはあえて非構造データに戻すこともあります。
データウェアハウスとは別のデータベースもしくはテーブルを用意し、目的に沿った構造でデータが蓄積される状態を作り出すのが一般的です。また、データウェアハウス側にデータが蓄積されると、自動的にデータマート側も更新される仕組みが理想です。
データ蓄積の流れ
データレイク、データウェアハウス、データマートにデータを保存する際には、以下の流れで行います。
- まずは取得したデータをそのまま保存する(データレイク)
- 取得したデータを構造化して保存(データウェアハウス)
- 構造化されたデータを目的別に加工して保存(データマート)
メリット・デメリット
データレイク
メリット
データの源泉を正しく保持しておくことで、万が一データウェアハウス・データマート側に何かしらのでデータ不備・問題が合った際に、改めてデータを作り直すことが可能となります。
デメリット
データの分析には適していません。生データをそのまま集計に使うことによる集計結果の散乱、データ源泉と加工データの散在といった事象が発生し、分析の効率を落とす結果になります。
データウェアハウス
メリット
データが構造化されているため、データレイクと比較するとデータ分析が行いやすいです。特に、SQLを使えるデータサイエンティストにとって扱いやすい点が特徴です。
デメリット
データを扱うためにはデータベースの基本的な概念や、SQL等の知識が必要となります。エンジニアやデータサイエンティスト以外の方にとってはやや取り扱いのハードルが高いです。
データマート
メリット
特にデータサイエンティスト以外のビジネスユーザーにとっての扱いやすさ、言い換えるとデータ取得の速さが一番のメリットです。また、データを取り扱うエンジニアに取っては、都度必要なデータを加工して用意する手間(工数)の削減に繋がります。
デメリット
目的を絞って、データマート化を行わないと、データマートが散乱し逆にエンジニアの工数を必要以上に消費してしまう結果に繋がります。定常的に行わなければいけない主要な分析目的に絞ってデータマート化することが重要です。
終わりに
いかがでしたでしょうか?
とても簡単な説明ではありますが、概念は理解できたのではないかと思います。
また、概念を理解することで、非エンジニアの方がエンジニアと会話するときに共通言語で会話することが出来るようになると思います。
また、エンジニアの方は、データの専門家ではない人たちに、用語の意味を理解してもらうだけで、会話はかなり捗るのではないかなと思います。「あ、このことを行っているのね」と相手が理解してくれるだけで、コミュニケーションの速度も上がるし、時間の短縮にもなります。
データの専門家ではない非エンジニアの方は、上記の概念だけでも抑えて頂けると、エンジニアはとても助かると思います。ぜひご活用いただけると幸いです。