データ ウェアハウス  

ここで紹介するデザイン パターンを用いることで、データ ウェアハウスを安全に、妥当なコストで、そしてより高いパフォーマンスで運用することができます。また、SQL を用いた機械学習モデルの構築や位置情報システム(GIS)データの活用など、Google Cloud のデータ ウェアハウスならではの活用方法も紹介します。

データ ウェアハウス をクラウド上でセキュアに(IP 制限、専用線等)構築するパターン

解決する課題・使い所

個人を特定できる情報 (PII = Personally Identifiable Information) を保管するデータベースに対して、データベース インスタンスを保護単位として、境界型のセキュリティルールによるネットワーク分離等の制約を課す企業があります。

一方で BigQuery や Google Cloud Storage はサーバーインスタンスという概念を持たないサービスです。それらサービスに対して、管理対象をプロジェクトリソースとして切り出し、プロジェクト内リソースへのアクセスを管理することで境界型のセキュリティルールを設定することでセキュリティルールへ準拠することができるようになります。 また、データセキュリティやデータガバナンス ルールにより、データアクセスに対する監査要件への対処が求められることがあります。そういったケースで DWH へのデータアクセスログを必要な粒度で必要な期間に保管する方法を説明します。


アーキテクチャ

利点


注意事項


サンプル コンフィグ


このパターンで作成された事例


参照文献

BigQuery Reservations によるワークロード管理

解決する課題・使い所

BigQuery をデフォルトの設定で使用している場合、オンデマンド料金という料金モデルが適用されます。この料金モデルでは、実行された各クエリの「処理されたバイト数(読み取りバイト数)」に基づいて料金が請求されます。たとえば、東京 (asia-northeast1) リージョンの場合、1 TB あたり $6 の料金が請求されます(最新の料金体系は、公式ドキュメントを参照してください)。また、この料金モデルにおける、プロジェクト内で利用可能な BigQuery スロット数の上限は、基本的に 2,000 スロットとなっています(状況によって、一時的に 2,000 スロット以上が使用可能となる場合もあります )。

このオンデマンド料金は、クエリ実行に応じて、つまりは、利用した分だけ料金が発生する料金モデルであるため、BigQuery の検証時や導入初期など、BigQuery を小規模に使用する段階においては、適切な料金モデルであると言えるでしょう。しかし、複数の部署やワークロードなどで BigQuery を大規模に使用する場合、以下のような課題に対応する必要があります。

前述のような課題を解決し、BigQuery を複数の部署やワークロードなどで大規模に、安定的かつ効率的に利用できるようにするために、BigQuery では、BigQuery Reservations という、クエリ定額料金のスロットを購入してプロジェクトに割り当てることができる機能を提供しています。


アーキテクチャ


BigQuery Reservations の概要

BigQuery Reservations とは、クエリ定額料金のスロットを購入し、また、そのスロットをプロジェクトに割り当てることができる機能です。クエリ定額料金とは、毎月のクエリ料金が固定となる料金モデルであり、購入したスロット数に基づいて料金が請求されます。たとえば、月定額契約の東京 (asia-northeast1) リージョンの場合、100 スロットあたり $2,400 の料金が毎月請求されます(最新の料金体系は、公式ドキュメントを参照してください)。

BigQuery Reservations を利用することのメリットとしては、主に以下のことが挙げられます。

BigQuery Reservations を構成する要素としては、主に以下のものがあります。


BigQuery Reservations によるワークロード管理

BigQuery Reservations で購入したクエリ定額料金のスロット(コミットメント)を、複数の予約に分割して設定し、各予約にプロジェクト(または組織やフォルダ)を割り当てることで、部署やワークロードごとにスロットを分離して利用することができます。

たとえば、合計で 1,000 スロットのコミットメントがあり、データ サイエンス、ELT、BI という 3 つの種類のワークロードがあるとします。


この例における BigQuery Reservations のコミットメント、予約、割り当ての設定のイメージは、以下の図のようになります。

ここでは、前述の例のような BigQuery Reservations のコミットメント、予約、割り当ての設定方法をご紹介します。

1. スロット(コミットメント)の購入 

まず、BigQuery Reservations のコミットメント、予約、割り当ての購入や設定を実施するための管理プロジェクトを用意します。その管理プロジェクトで BigQuery Web UI にアクセスし、左側のメニューの「予約」をクリックします。

「予約」ページへの遷移後、画面上部の「スロットを購入」をクリックします。

「スロットの購入」ページへの遷移後、画面上で「コミット期間」、「ロケーション」、「スロット数」を入力し、「次へ」ボタンをクリックします。

以下の図は、「コミット期間」に「Flex」、「ロケーション」に「United States」、「スロット数」に「1000」を入力したときの例になります。

「注文確認」に「CONFIRM」を入力して「購入」ボタンをクリックし、スロットの購入手続きを完了させます。

購入リクエスト完了の確認メッセージが表示されます。

「スロット コミットメントを表示」ボタンをクリックします。

「予約」ページへ遷移し、画面下部に購入した 1,000 スロットのコミットメントが表示されていることを確認します。

以上の手順で、スロット(コミットメント)の購入手続きが完了しました。

2. 予約の作成

先ほどのスロットの購入により、デフォルトの予約と割り当てが作成されているため、まずはこれらを削除します。
「予約」ページの「ASSIGNMENTS」タブをクリックします。表示されているデフォルトの割り当てを削除します。

同様に、「予約」ページの「RESERVATIONS」タブをクリックします。表示されているデフォルトの予約を削除します。

「予約」ページの上部の「予約を作成」をクリックします。

「予約を作成」ページへの遷移後、「予約名」、「場所」、「スロット数」を入力し、「保存」ボタンをクリックして予約を作成します。

以下の図では、「予約名」に「ds」、「場所」に「United States」、「スロット数」に「500」をそれぞれ入力しています。

「予約」ページの「RESERVATIONS」タブにて、作成した ds 予約が表示されていることを確認します。

次に、「ASSIGNMENTS」タブをクリックし、予約へのプロジェクトの割り当てを実施します。
画面下部の「組織、フォルダ、プロジェクトを選択」欄で、割り当てるプロジェクトを設定します。また、「予約」欄には、前述の手順で作成した ds 予約を設定します。
「作成」ボタンをクリックして、予約へのプロジェクトの割り当てを実施します。右の図では、「組織、フォルダ、プロジェクトを選択」欄に「ds-project-a」というプロジェクトを設定しています。

「予約」ページの「ASSIGNMENTS」タブにて、割り当てが作成されたことを確認します。

以上の手順で、ds 予約に対するプロジェクトの割り当てが完了しました。

このプロジェクトでは、割り当てられている予約のリージョンで BigQuery のクエリを実行すると、割り当てられた予約のクエリ定額料金のスロットを使用して、クエリの処理が実行されるようになります。

BigQuery Web UI の「クエリ結果」の「ジョブ情報」の「予約」欄で、どの予約のスロットが使用されてクエリが処理されたのかを確認することができます。

同様の手順で、elt 予約と bi 予約の作成、および、それらの予約へのプロジェクトの割り当てを実施することができます。

3. 割り当て、予約、コミットメントの削除

最後に、今回の手順で作成、購入した、割り当て、予約、コミットメントを削除します。

まずは、BigQuery Web UI の「予約」ページの「ASSIGNMENTS」タブを選択し、ds 予約へのプロジェクトの割り当てを削除します。 

次に、「予約」ページの「RESERVATIONS」タブを選択し、ds 予約を削除します。

最後に、「予約」ページの「SLOT COMMITMENT」タブを選択し、コミットメントを削除します。

以上で、今回の手順で作成、購入した、割り当て、予約、コミットメントの削除が完了しました。 


備考


参照文献

位置情報を活用したデータ分析のパターン

今日では、スマートフォンをはじめ、さまざまなデバイスで位置情報を取得することが可能になっています。取得した位置情報を利用して、地図や交通情報アプリのみならず、SNS、ゲーム、お店の会員アプリなど、多くのアプリケーションで、実際にサービスが提供されています。

このように、位置情報を利用したサービスは身近になってきていますが、サービスを提供する側でも、位置情報をデータ分析基盤に取り込んで、CRMや購買情報、在庫情報など、業務アプリケーションのデータとかけあわせた分析をすることで、より深い洞察を得ることができ、顧客満足度や収益の向上、コスト削減につながるアクションを取ることもできます。

位置情報を活用した分析例として、下記のようなものが挙げられます。

位置情報を格納して分析するには、大規模なデータでも問題なく収集、格納、分析できるプラットフォームが不可欠となります。SQL で地理情報を分析することができ、ペタバイト規模のデータも分析可能なデータ ウェアハウスである BigQuery、大量のデータをストリーミングで収集することができる Pub/Sub、ストリーミング データを変換、処理するオートスケール可能な Dataflow など、位置情報を含めたさまざまなデータ分析に最適なサービスを提供しています。  

ここでは位置情報を使ったデータ分析基盤を、Google Cloud で構築する際のパターンを解説します。


解決する課題・使い所

位置情報などの新たな分析をする場合、課題になるのが分析基盤を使えるようになるための学習コストや時間です。ここでは、SQL を使った位置情報の分析が可能な BigQuery を使い、データ分析者が既存のスキルセットで学習コストを抑え、すぐにでも始めることができるアーキテクチャを紹介します。

位置情報を収集する場合、課題となるのが大量のデータへの対応です。例えば、モバイル アプリケーションで位置情報を収集する場合、フォアグラウンドで利用時に送信、バックグランドで定期的に送信、特定のジオ フェンスに入ったタイミングで送信など、さまざまな場面で送信することが予想されます。また、ユーザーの増加によってもデータ量の急激な増加が起こりえます。このような状況でも、同一のアーキテクチャで対応できることが必要です。

位置情報などの新たな分析をする場合には、既存のデータを分析することが可能なサービスに移動したり、複製したりする必要があります。規模が大きくなると、移動の時間がかかったり、コストが非常に高くなったりと無視できなくなります。ここで紹介する BigQuery は、ペタバイト規模のデータを分析する処理能力をもちながら、BigQuery 内で位置情報の分析が可能なため、これらの課題にも対応することができます。 


アーキテクチャ

位置情報データ分析基盤を構成する要素は、主に下記の 4 つになります。 

利点

このように地理関数を使うことで、複雑な位置情報の計算も簡単に行うことができます。また、GEOGRAPHY 型は、可視化ツールを使って地図上にマッピングして可視化することもできます。下の図は、BigQuery Geo Viz の例となります。 

BigQuery では、位置情報の分析以外に機械学習もできるので、大規模なデータに対して多様な分析を行い、より深い洞察を得ることもできます。 

 

関係するデザイン パターン

 

このパターンで作成された事例

 

参考文献