Modern Data Stack とはどのようなものなのか、どのような経緯で生まれたのか、どのように実現可能なのか、分かりやすく解説 #Snowflake #Fivetran#dbt#Modern Data Stack
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
皆さんは、Modern Data Stack というワードをご存じでしょうか。
今回は、Modern Data Stack についてどのような意味なのか、どのような経緯で生まれたのか等を説明していきます。
Data Stack とは?
最初に、Modern Data Stack とは、現代風の Data Stack という意味になります。この説明だとよくわかりませんよね。Data Stack って?となりませんか?
Data Stack とは、「様々な場所で発生するデータを、集約・蓄積し意思決定に使えるように分析・可視化をおこなうデータ統合基盤」です。この説明だけだとまだよくわかりませんよね?コンビニを例に説明してみましょう。
例:コンビニ
真ん中にいるコンビニの店員がこれから、明日入荷する商品の発注をするところです。どのような商品をいくつ発注するか、決めるには、レジで収集した売れ筋商品がわかる販売データやコンビニの立地などによる顧客層のデータ、そして、明日晴れるのか、雨が降るのか、寒いのか暑いのかなどの気象データも参考になりますよね。これらのデータを元に、明日は寒くなりそうだし、売れ筋であるおでんが売れそうだな、客層は30代、40代が多いから日本酒も発注しよう、と明日売れそうな商品を発注することができます。
Data Stack とは、「様々な場所で発生するデータを、集約・蓄積し意思決定に使えるように分析・可視化を行うデータ統合基盤」となります。
本題であります Modern Data Stack とは、最初に現代風の Data Stack と説明しました。それでは、現代風のとは何を指しているのでしょう。ものすごくざっくりですが、クラウドサービスを利用して、お手軽に構築できる Data Stack となります。
Modern Data Stackというワードを最初に使ったとされるFivetran社のブログには次のような説明がされています。
「The most important difference between a modern data stack and a legacy data stack is that the modern data stack is hosted in the cloud and requires little technical configuration by the user.」
(訳:モダンデータスタックとレガシーデータスタックの最も重要な違いは、モダンデータスタックはクラウドでホストされユーザによる技術的な設定をほとんど必要としない点にあります)
元記事:What is the modern data stack
https://www.fivetran.com/blog/what-is-the-modern-data-stack
Modern Data StackはData Stack構築の救世主?
Data Stackの構築はとても大変です。様々な場所から発生するデータは種類がバラバラです。販売データや気象データなどデータの種類ごとに集約の仕組みを個別に作成する必要があります。蓄積したデータもデータのサイズが小さいうちはいいですが、テラバイト、ペタバイトのサイズになってくるとHDDが何百個と必要になり、保管のために場所もコストもかかり、データを維持するだけでも一苦労です。分析・可視化についても分析結果やグラフなどの出力に数時間かかるような Data Stack は使い物にならないため、高速化が求められます。システムの高速化を行うためには、サーバの台数も増やし続けなければなりません。
そんな問題を解決するために現れたのが、Modern Data Stackです。
Fivetran、Snowflake、dbtはデータスタックの代表的な各機能を提供するクラウドサービスです。これらのクラウドサービスを利用することで Data Stack を簡単に構築できるようになりました。それでは、これらのサービスについてどんなに簡単に構築できるのか説明します。これらのサービスは弊社のModern Data Stack チームが取り扱っているクラウドサービスとなります。まずは、Fivetran から始めましょう。
Fivetran
データの集約を行うにはデータの種類毎に集約の仕組みを作る必要がありました。
SQLやHTTPというデータにアクセスするための方法ですが、図の通りデータごとに異なり、場合によっては作りこみを行う必要があります。また、集約のそれぞれの仕組みを管理しないとなりません。
Fivetranはデータを集約する仕組みを提供するクラウドサービスです。事前に用意されているデータ集約の仕組みから必要なものを選ぶことができます。Fivetranでは、データ集約の仕組みはConnectorと呼ばれています。2023年7月では、300以上ものConnectorをサポートしています。Connectorの種類に関しては、次のURLを参照ください。
Fivetran URL:https://www.fivetran.com/connectors
Fivetranに対応しているデータであれば、5分程度で利用を開始することが可能です。次はデータウェアハウスの Snowflake です。
Snowflake
Snowflake はデータウェアハウスのクラウドサービスです。
大容量のデータ保存や、分析に使用するコンピューティングの提供を行っています。Snowflake を使用するといかに、データ保存や、データ分析が簡単になるか説明して行きましょう。
データの保存についてはハードディスクを事前に用意する大変さが想像しやすいのでは無いでしょうか。データサイズが大きくなればなるほど、ハードディスクなどの記憶装置を大量に用意する必要があり、装置の数が増えれば増えるほどメンテナンスにかかる時間や費用も増えていきます。
しかし、データをクラウドに保存するSnowflake を使用すれば、データサイズが増えることによるストレージへの影響は、Snowflake の利用料金が増えることのみです。しかも、Snowflake はデータを圧縮し、データ保存量を少なくしてくれます。
追加の記憶装置購入や、装置のメンテナンスは必要ありません。すべて Snowflake がやってくれるのでユーザーは利用料金を支払うだけです。
また、一般的にクラウドサービスのストレージにかかる費用は、事前にマシンを用意するのに比べて設備投資・メンテナンスが必要ありません。使用した分だけの料金になりますので、時間とお金が節約できます。
データの分析についても同様です。データ分析の高速化は分散処理によって実現されてきました。基本的にサーバ台数が増えれば増えるほどデータ分析の処理が速くなります。
しかし、サーバ台数が増えれば増えるほど、サーバ機器の費用やメンテナンスにかかる時間も増加します。データ保存と同じように、Snowflakeはこれも解決します。
クラウドサービスのもう一つの利点として、従量課金制があります。サービスを利用した分だけ利用料金を支払うというものです。Snowflakeではサーバーを使用した時間、秒単位での料金になります。使用していない時間に料金がかかることはありません。サーバ機器の購入やメンテナンスをお客様自身が行う必要はありません。
初期費用に莫大な投資が必要無く、使ったデータ保存量とデータ分析の時間だけを支払えば良いのです。このことにより、高価なサーバーを購入できない会社でも、Data Stack によるデータ分析が行え、効率的なビジネスの運営が可能となります。
Snowflake のもう一つの特徴をご紹介しましょう。
Snowflake 上には様々な企業がデータを保存しています。A社とB社が Snowflake を利用していて、それぞれの企業のデータがA社のデータ、B社のデータとしてSnowflakeに保存されています。ここで Snowflake はこう考えました。「他の会社のデータが見れるようになれば便利じゃない?」と・・・
Snowflake にはデータ共有の機能とデータマーケットプレイスの機能があります。
A社のデータもB社のデータも Snowflake 上に保存されているのでデータを共有することが簡単にできます。A社がデータを見せることを許可した場合B社から自社のデータを見るときと同じようにA社のデータを見ることができます。
Snowflake 上ではデータマーケットプレイスとしてデータ共有で利用可能なデータをサブスクライブすることができます。A社のデータを利用したい場合、データマーケットプレイスからA社のデータを選び、A社と別途契約を結ぶことでA社のデータを利用することができます。実際に利用可能なマーケットプレイス情報を次のURLからご参照ください。https://www.snowflake.com/marketplace/?lang=ja
次は、dbtの説明に移ります。
dbt
dbt (正式名称は、data build tool) はデータを変換しデータウエアハウス、データマートを構築していくことができるツールです。これまで、いろいろなところで発生したデータを一か所に集めて分析を行うといった説明をしてきました。
ここにA店~C店から集めてきた各店舗の売上データがあります。しかし、各店舗のデータは表記がバラバラでそのままでは分析に使いづらい状態です。そこで右の表のようにデータをまとめて、整理すると分析しやすいデータとなります。この右の表ですが自動的に作られるようなものではないのでデータを使う時に使いたい形に整形する必要があります。右の表を作るために、それぞれのデータを変換するような仕組みを作ります。B店の例でいうと売上金額の列を右表の売上の列に入れるといったようなものです。
A店、B店、C店と3店舗の場合は、データ変換の仕組みも3つ必要になります。
店舗が増えていくとどうでしょうか。8店舗になると、データ変換の仕組みも最大8つになる可能性があります。データ変換の仕組みがどんどん増えていくと、一つ一つ作るのも面倒だし、管理も大変です。そこでdbtのデータ変換の仕組みのテンプレート化の出番です。
実は大量に作られたこのデータ分析の仕組みですが、黒文字部分の右表の売上に入れるという部分はすべての仕組みが同じでした。
これをテンプレート化するとこのようになります。**を右表の売上にいれるというテンプレートと各店舗ごとのパラメータにわけることができました。このようにテンプレート化すると新しい店舗が増えた場合に追加する必要があるのは一番右のパラメータ部分のみとなります。このようにテンプレート化することでデータ分析の仕組みの作成や管理を簡単に行うことができます。
dbtにはテンプレート化の機能があることを説明しましたが、代表的な機能として、データをテストできる機能 (https://www.getdbt.com/product/data-testing/) 、データモデルをドキュメント化できる機能 (https://www.getdbt.com/product/data-documentation/) などがあります。これらの機能に関しては、別の機会に説明できたらと思っています。
BIツール
BI ツールとは、データを分析・可視化しデータを利用するユーザーが直接確認するような画面を提供するツールです。BIツールにもいろいろな製品があります。今後は製品それぞれの機能や特徴をブログにてご報告していきたいと思っています。
最後に
これまで紹介してきたクラウドサービスを使用して、Modern Data Stackの構築が可能となります。弊社クリエーションラインのModern Data Stack チームは、お客様のニーズに合った Modern Data Stack を提供できるよう日々邁進してまいります。
お問い合わせはこちらです。