Tableau Tips: ホワイトペーパー『In-Memory or Live Data: Which is Better?』を読んでみた
Tableau製品(ここではTableau Desktopをメインに考えます)では、『ライブ接続』と『抽出』という2つの接続・データ操作に関する手法が存在します。『ライブ接続』はその名の通りDesktopからそのままデータベースに繋ぎ、接続・クエリ実行時点での情報を取得して利用する方法です。一方『抽出』とはTableau独自のインメモリアーキテクチャで、Tableauの高速データエンジンにデータを"抽出"し、そのデータを使って分析する事が出来ます。データを端末上にファイルとして保存しておき、そのファイルをデータソースとして活用する方法です。
これら2つの手法について、『使いどころ』をまとめたホワイトペーパーがあったので当エントリではその内容についてざっと読んでみて理解を深めてみたいと思います。
インメモリデータ(→抽出ファイル)の方が良い場合
ホワイトペーパーでは、初っ端で『両方使おう』と述べられています。状況に応じて大量データの扱いに対応するためには、インメモリ/ライブ接続の双方を活用する事がTableauの場合、求められてきます。
BIツールを扱うユーザーにとって、『データ分析』の作業はこれまでの伝統的なツールでは遅く・面倒になりがちな作業でありました。このため、新たにデータ分析を行う際はチャレンジングな部分も出て来ます。
ある企業では、トランザクションシステムとは異なる高速な分析データベースに投資する事でデータ分析に取り組んでいます。また、ある企業では、ユーザーが一連のデータを抽出し、分析をスピードアップするためにローカルコンピュータのコンピューティング能力を活用する『メモリ内分析』の手法を用いています。
これらの手法は『どちらが良い』というものでは無く、状況に応じて使い分けるべきです。以降のセクションで、インメモリ接続・ライブ接続それぞれのケースについて見て行きたいと思います。
まずは『インメモリ接続』を使った方が良いケースです。ここでのインメモリ接続は『抽出』を指します。
データベースが、インタラクティブな分析を行うには遅すぎる場合
扱うデータベース全てが、我々が臨むような処理能力を持っている訳ではありません。もし、ライブ接続を行なっていてインタラクティブな処理を行うには遅すぎる、という場合、あなたはローカルマシン上のインメモリにデータを持って来たくなる事でしょう。抽出作業を行う事でデータを手元に確保する事が出来ます。(データの件数にもよりますが)抽出ファイルを使う事でデータをより対話形式で操作出来るようになり、クエリの実行を待つ事無く、思うままに新しいアイデアを探求して行く事が出来るようになります。
トランザクションデータベースの負荷軽減を行う必要がある場合
接続先のデータベースが常に早いレスポンスを返すものとは限りません。また、状況によっては、データベースへのトランザクションの負荷軽減を行う必要があります。分析の際に用いるクエリはトランザクションデータベースに負荷を掛け、パフォーマンスを遅くさせる原因となります。スムーズな分析を行うために、データをメモリ上に持ってくる(抽出ファイルを作成する)事で、重要なビジネスシステムの速度を損なう事を防げます。
オフライン接続の必要が有る場合
インターネット接続環境が世界中のあらゆる場所で利用可能となるまでは、しばしばオフラインで接続を行う必要もある事でしょう。当然その場合だとライブ接続は行えませんので、抽出ファイルを使った形で作業を継続出来るようにしておく必要があります。
ライブ接続&ダイレクトなデータ接続が良いケース
次いで、ライブ接続が必要とされるケース・良いケースです。
高速なデータベースを持っている場合
高速なデータインフラへの投資を行っている場合、分析を行うために、その環境から別のシステムにデータを移動させる必要はありません。直接データベースへの接続(ライブ接続)を行う事によって、データベースを充分に活用出来ます。
分単位で更新・追加されるデータの閲覧が必要な場合
分析の際、データが分単位で追加されるようなサイクルのデータベースを観測する必要があるのならば、ライブ接続を使うべきでしょう。ライブ接続を行なっているダッシュボードは直接生データを参照しに行くので、あなたは知りたい情報を即座に把握する事が出来ます。
抽出・ライブ接続を状況に応じて使う
Tableauに於けるインメモリ(抽出)・ライブ接続双方の活用ケースについて上記で言及して来ましたが、実利用のシナリオではこれら双方の方法を状況に応じて切り替えて使っていくのがオススメです。想定シナリオを以下に記してみました。
- 1.あなたはとあるデータからトレンド・傾向を見つけたいと思っています。しかしそのデータは膨大な件数です。そこで、メモリ内のサンプルデータのうち5%を使ってその傾向を探り、共有したいビューを作成する事にしました。抽出作業を行い、サンプルデータの5%を取得した上でビューを作成、全てのビューが作成出来た時点で接続方法をライブ接続に切り替え、データ100%に対してビューの表示・分析結果の可視化を行いました。
- 2.あなたは移動中にTableauで幾つかの分析を行いたいと考えていますが、飛行機での移動となるのでインターネットを使ったライブ接続は行え無さそうです。離陸前にデータ全体を抽出ファイルに落とし、移動中はオフラインで作業を行います。着陸後、再び接続をライブ接続に戻し、作業を継続しました。
このような形で状況に応じた活用方法を選択する事が出来ます。抽出ファイルの利用・ライブ接続の切替については、数手で簡単に行えます。
Tableau Data Engine
Tableau Data Engineは数百万のデータを秒単位でアドホック分析能力を提供します。PC上で稼働する高パフォーマンス分析データベースのようなものと言っても良いでしょう。Tabelau Data Engineを使う際にカスタムスクリプトは必要ありません。そしていつでもクリック1つで『データベースへのライブ接続』と『読み込まれたデータの抽出を取得』を切り替える事が出来ます。
アーキテクチャを意識したデザイン
Tableau Data Engineのコアデータエンジン構造は、解凍無しでのクエリ実行をサポートした圧縮技術を用いたカラムベースの構造となっています。コンピュータ・グラフィックス由来の新しいアプローチを活用し、最新のプロセッサのアルゴリズムをフル活用出来るように注意深く設計されました。
PC上の様々なメモリ全てを活用するように構築されているので、大きなデータセットであっても作業が出来るのです。
"真の"アドホッククエリ
Tableau Data Engineはクエリ言語と、典型的なオンザフライビジネス分析をサポートするクエリオプティマイザを使って設計されています。分析の際は多次元フィルタ複雑なクエリを実行する必要があるのが一般的で、この種のクエリを実行すると一般的にはパフォーマンスは低下しますが、Tableau Data Engineではそれらを即座に処理します。これは、以前は見過ごされていた分析の洞察や気付きを発見する事にも繋がって来ます。
柔軟なデータモデル
他のインメモリソリューションと比較した上でのTableau Data Engineの重要な違いの1つは、それがデータをディスク上のデータベースに表示されているように直接操作できるという点です。なので、データモデリングは必要はありません。データエンジンを使うためのスクリプトも必要ありません。
インスタンスの負荷と接続時間
Tableau Data Engineは、一旦データがデータエンジンにロードされると、非常に高速に起動するようになるという点が特徴的です。
まとめ
以上、Tableauに於ける『ライブ接続』と『インメモリ(ここでは"抽出"作業及びそのファイルとなるので、厳密には"メモリ"ではないのかも知れませんが)』、どちらを活用すべきか?という点についてのご紹介でした。
実際には上記の内容に加えて以下の様な判断・切替のポイントもあるかと思われます。(ざっと思いつく内容を書いてみました)
- 件数が然程多く無く、直ぐに結果が返ってくる様な場合ではライブ接続で良いかも知れない。
- 件数が多くなり、レスポンスを返すのに時間が掛かる様な場合、抽出ファイルへのアクセスとした方が良いのかも知れない。(※また、この場合はサマリテーブルを用意させてライブ接続、という案も考えられるかもしれない)
- データベースへの同時アクセスが問題となる場合、そもそもデータベースにアクセスさせない方式を取らざる得ないかも知れない。例えばAmazon Redshiftへの接続を行う際、クラスタで対応出来る『同時実行数』は50となっている。(※参考)このため、この数値を超える様なアクセスがRedshiftクラスタに来るようであれば、その事態を避けるべく、端から抽出ファイルにアクセスさせる等の『データソースにアクセスさせない』手法を取る必要が出てくるかも知れない。
また、抽出ファイルについてはTableau Server上での共有及び抽出ファイルの内容更新等も行えます。この辺りまで踏まえつつ、利用状況と照らし合わせて効率的なデータアクセス、データ活用を進めて行きたいところですね。こちらからは以上です。