メルマガ登録
データ活用・DXに欠かせないのがデータ基盤です。ブレインパッドには、クラウドプラットフォームの知識・スキルを深化させるべく、Google Cloud 、AWS、Microsoft Azure、Snowflakeの4つのクラウドプラットフォームチームから成る「クロスファンクショナルチーム(CFT)」があります。今回は、便利な機能を多数備え、単なるDWHサービスではない機能の広がり・独自性を持つクラウド型DWHサービス「Snowflake」について、データレイクとの接続方法(認証方法)をご紹介します!
こんにちは、ソリューション開発部の藤田です。
顧客企業のデータ活用を、システム開発や基盤構築の面から支えている当社のデータエンジニアリング本部(DE本部)。そのDE本部には、 Google Cloud 、AWS、Azure、Snowflakeの4つのクラウドプラットフォームチームから成る「クロスファンクショナルチーム(CFT)」があり、今回はSnowflakeチームの活動紹介となります。
(CFTの詳細は、こちらの記事を参照ください)
前回のブログでSnowflakeの概要についてご紹介した際に、今後のテーマとして「Snowflakeと各種サービスとの連携の調査」を掲げていましたが、今回は下図の赤枠のデータレイクにあるデータをSnowflakeに取り込んだり参照したりするために必要な「データレイクとSnowflake間の接続方法(認証方法)」についてご紹介します。(前回の記事の詳細は、こちらを参照ください)
このデータレイクとSnowflakeの活用事例として、分析官目線で考えると「機械学習案件で、データを受領してからすぐに解析できるよう、まずはデータレイクに受領データを格納し、外部テーブルを定義して最低限の工数で分析作業を開始する」といったことや、「データ移行時などで大量データをやり取りする際に、一先ずデータレイクに格納し、外部テーブルから参照することで、大量データでも作業がしやすい、抜け漏れが発生しにくい」などといった恩恵を受けられると考えています。
データレイクとSnowflakeの話をするにあたり、まずデータレイクとDWH(データウェアハウス)の関係性について話をします。
AWS、Microsoft Azure、Google Cloud といった3大クラウドサービスの普及に伴い、安価で手軽なデータレイク(Amazon S3やAzure Blob Storage、Google Cloud Storage等)に、大量のデータを溜めていき、それらのデータをDWHに連携して、分析・活用する事例が増えていきました。Amazon RedshiftやAzure Synapse Analytics、Google BigQueryなどといったDWHは、各種データレイクのデータを直接参照するような仕組みができるなど、データレイクとDWHの相性が良くなっており、データレイクとDWHの連携は、分析サービスを行う上での王道パターンとして定着してきていると感じています。
一般的に、データレイクからDWHへデータ連携する方法は、DWHに直接データを取り込んで連携する方法と、外部テーブルを作成してデータを参照して連携する方法の2種類があります。各種DWHサービス(Amazon Redshift、Azure Synapse Analytics、Google BigQuery)と同様に、Snowflakeもそのどちらにも対応しています。
連携方法①:データレイクのデータをDWH上のテーブルに取り込む方法
連携方法②:データレイクのデータを参照し、DWH上のテーブルには取り込まない方法(外部テーブル)
DWH上にデータを取り込んだ方が、その後のクエリスピードにおいてはメリットがあります。一方で、データを取り込まずに外部テーブルで参照する方法は、データレイク内で更新された最新のデータを参照しやすく、DWH側でデータを管理していないため、運用面で管理が楽になるメリットがあります。どちらの方法も一長一短でケースバーケースです。直近の案件では、ガバナンスの観点からデータはデータレイクで管理したい、という要望により、外部テーブルを採用する事例もありました。世の中のトレンドとして、ETLよりもELTという流れもあり、Snowflakeの加工機能を活かして、Snowflake側で加工すれば良いという考えもあったのかと思います。
※クエリスピードを向上させる方法として、マテリアルビューを活用し、外部テーブルのデータをマテリアルビューに反映させる方法もありますが、データ量やテーブル数、反映の頻度を考慮し、費用を見積った上でご活用ください。
一般的なデータレイクとDWHの連携に少し触れたところで、ここからはデータレイクとSnowflakeの接続の話になります。
Snowflakeは各種3大クラウドのデータレイクと接続が可能です。例えば、各種データレイクとSnowflake間で接続の認証設定をすることで、AWS上に存在するSnowflakeが、Amazon S3へのアクセスだけでなく、Azure Blob Storage、Google Cloud Storageに対してもデータの取得、参照が可能です。接続の認証方法は、下表のとおり各種データレイクにおいて複数の方法がありますが、STORAGE INTEGRATION(ストレージ統合)を使用した接続方法がセキュリティレベルも高く、Snowflake社としても推奨している方法となります。STORAGE INTEGRATIONとは、データレイクとの接続に必要な情報をまとめたもの、と考えれば良いと思います。
Amazon S3とSnowflakeの接続方法として、以下の2つの方法があります。
No | 方法 | ユースケース | メリット/デメリット |
1 | STORAGE INTEGRATION(ストレージ統合)を使用した接続 | 基本的にこの方法を使用する。 | クエリ実行時にキー情報を記載しなくて済むため、No.2の方法と比べてセキュリティレベルが高い。 一度設定をすれば、その後は簡易にクエリ実行が可能。 Snowflake、AWSのそれぞれで管理者アカウントにて設定作業が必要。 |
2 | AWSのIAMユーザーのAWS キーと秘密キーを使用した接続 | 一時的なテストなどで、すぐに利用したい場合に使用する。 | 設定が簡易。 文字列のキー情報のみの認証のため、セキュリティレベルが方式1に比べて低い。 |
上記の表のNo.1の接続方法を図に表すと以下のようなイメージになります。(AWS側にRole、Snowflake側にSTORAGE INTEGRATIONを作成し、Snowflake側でクエリ実行時にSTORAGE INTEGRATIONを指定して取得します)
※データ抽出時のコマンドイメージですが、外部ステージというものを作成して、データをロードする処理が入ります。外部ステージについては、後述の補足にて説明をします。
上記の表のNo.2の接続方法を図に表すと以下のようなイメージになります。(AWS側でアクセスキーを発行し、Snowflake側でSQL実行時にアクセスキーを指定して取得します)
<補足: 外部ステージについて>
外部ステージとは、下図のように3大クラウド上のデータレイクとSnowflakeを接続する際に、ファイルを格納するための領域で、STORAGE INTEGRATIONが正しく作成されていない(接続の認証がされていない)とこの領域にアクセスできません。
Azure Blob StorageとSnowflakeの接続方法として、以下の2つの方法があります。
No | 方法 | ユースケース | メリット/デメリット |
1 | STORAGE INTEGRATION(ストレージ統合)を使用した接続 | 基本的にこの方法を使用する。 | クエリ実行時にキー情報を記載しなくて済むため、No.2の方法に比べてセキュリティレベルが高い。 一度設定をすれば、その後は簡易にクエリ実行が可能。 Snowflakeで管理者アカウントにて設定作業が必要。 Azureではストレージアカウントを管理するAzureの権限(ストレージ BLOB データ共同作成者)が必要。 |
2 | 共有アクセス署名(SAS)トークンを使用した接続 | 一時的なテストなどで、すぐに利用したい場合に使用する。 | 設定が簡易。 有効期限付きのSASトークン(文字列のキー情報)のみの認証のため、セキュリティレベルが方式1に比べて低い。 |
上記の表のNo.1の接続方法を図に表すと以下のようなイメージになります。(Azure側にBlob Storageに対するアクセス制御(IAM)、Snowflake側にSTORAGE INTEGRATIONを作成し、Snowflake側でSQL実行時にSTORAGE INTEGRATIONを指定して取得します)
上記の表のNo.2の接続方法を図に表すと以下のようなイメージになります。(Azure側でSASトークンを発行し、Snowflake側でSQL実行時にアクセスキーを指定して取得します)
Google Cloud StorageとSnowflakeの接続方法は以下になります。
No | 方法 | ユースケース | メリット/デメリット |
1 | STORAGE INTEGRATION(ストレージ統合)を使用した接続 | ー | 一度設定をすれば、その後は簡易にクエリ実行が可能。 Snowflakeで管理者アカウントにて設定作業が必要。 Google Cloud ではProject Editor権限が必要。 |
上記の表のNo.1の接続方法を図に表すと以下のようなイメージになります。(GCP側にCloud Storageに対するアクセス制御(プリンシパルとロール)、Snowflake側にSTORAGE INTEGRATIONを作成し、Snowflake側でSQL実行時にSTORAGE INTEGRATIONを指定して取得します)
(参考)上記の接続方法の詳細は、以下のSnowflake社のドキュメントに記載されています。
Amazon S3(https://docs.snowflake.com/ja/user-guide/data-load-s3-config.html)
Azure Blob Storage(https://docs.snowflake.com/ja/user-guide/data-load-azure-config.html)
Google Cloud Storage(https://docs.snowflake.com/ja/user-guide/data-load-gcs.html)
今回は、データレイクとSnowflakeの接続方法をテーマに整理をしてみました。Snowflakeは3大クラウドのように自身でデータレイクを持っているわけではありませんが、3大クラウドの全てのデータレイクと接続が可能です。3大クラウド上にデータレイクの環境があれば、Snowflakeは今後の利用検討の対象になりうるサービスだと思いますので、興味のある方は是非データレイクにテストデータを配置し、Snowflakeの使用感を試してみてください。その際、AWSやAzureの場合は、STORAGE INTEGRATIONを使用した本格的な設定で無くてもAWSキーやSASトークン等の設定のみで簡易に始めることも可能です。
実際に設定画面や手順の詳細を見てみないとイメージが沸きにくいというところもあるかもしれないので、次回は、具体的なデータレイクとSnowflakeの設定手順をまとめた記事を公開予定です。画面を見たい方はそれまでお待ちください。
データエンジニアリング本部では、中途採用を積極的に行っています。
ご興味がある方はお気軽にご連絡ください!
■データエンジニアリング部の紹介資料
https://speakerdeck.com/brainpadpr/brainpad-de-202107ver
あなたにオススメの記事
2023.12.01
生成AI(ジェネレーティブAI)とは?ChatGPTとの違いや仕組み・種類・活用事例
2023.09.21
DX(デジタルトランスフォーメーション)とは?今さら聞けない意味・定義を分かりやすく解説【2024年最新】
2023.11.24
【現役社員が解説】データサイエンティストとは?仕事内容やAI・DX時代に必要なスキル
2023.09.08
DX事例26選:6つの業界別に紹介~有名企業はどんなDXをやっている?~【2024年最新版】
2023.08.23
LLM(大規模言語モデル)とは?生成AIとの違いや活用事例・課題
2024.03.22
生成AIの評価指標・ベンチマークとそれらに関連する問題点や限界を解説