Yellowfin 選定ガイド
Yellowfinは、エンタープライズアナリティクス、および組み込みアナリティクス両方のユースケースで使用され、独自のアナリティクスアプリケーションを構築します。本ガイドを活用することで、Yellowfinが要件に対して技術的に最適であるかどうかを確認できます。
スケーラビリティ&パフォーマンス概要
-
はじめに
Yellowfinはどのように拡張できますか?
Yellowfin アプリケーションは、クラスタリングをサポートしています。クラスタリングにより、複数のアプリケーションサーバがひとつのYellowfin リポジトリを共有できます。
Yellowfinは「Cluster aware」で、新しいノードは既存のYellowfin クラスタを見つけて参加します。Cluster Messagingにより、Yellowfinはノード間でメッセージを送信し、正しいアプリケーション状態を維持することができます。
バックグラウンドタスクをノード間に分散して、ブロードキャストやシグナルジョブのスループットを向上させることができます。
クラスタリングについて、より詳細な情報は、こちらを参照してください。
拡張のためにどのような測定基準を監視しますか?
Yellowfin アプリケーションのパフォーマンスは、主に次の2つの要因に影響を受けます。
- 任意の時点でアクティブなプロセスの数
- これらのプロセスが消費するリソースの量
最も分かりやすいプロセスは、既存のレポートの閲覧や新規レポートの作成など、アプリケーション内のユーザーから生成されるプロセスです。あまり目立たないタスクとして、シグナルジョブ、電子メールブロードキャスト、データトランスフォーメーションフローなど、アプリケーションのバックグラウンドで実行されるタスクがあります。Yellowfinは、サーバ上で使用可能なスレッドの数だけタスクを実行できます。これは、Yellowfin アプリケーションに利用可能な「サーバコア」の数により、大まかにトラッキングされます。
これらのプロセスが消費するリソースの量は、返されるロウ(行)数や生成されるグラフのタイプなど、個別に監視する必要がある数多くの要因により影響を受ける可能性があります。これはJVM上のメモリを消費します。
ワークフローの増加に対応するために、Yellowfin アプリケーションを拡張するには、通常これらのリソースを監視し、必要に応じてさらにリソースを割り当てる必要があります。大規模環境では、クラスタリングを有効にして、これらのプロセスを複数のサーバに分散させることを推奨します。
-
サーバのサイジング
適切なサーバサイズはどのように選択しますか?
適切なサーバを選択するには、上記の測定基準に基づき、現在(そして将来の)ユーザーワークフローを分析する必要があります。ユーザー数を確認する場合、任意の時点でアプリケーション内に存在するユーザー数だけでなく、アプリケーション内でこれらのユーザーがどの程度アクティブであるのかも確認する必要があります。彼らはひとつのダッシュボードを素早く確認するためにログインしているのか、それとも何時間もかけてデータセットを調査し、アドホックレポートを作成するためにログインしているのでしょうか。
適切なサーバの選択について、より詳細な情報は、こちらを参照してください。
Yellowfinのライセンスはサーバのサイズに基づいていますか?
Yellowfinには、使用可能なサーバコア数のライセンスを取得するオプションがあります。このモデルでは、ユーザー数で制限するのではなく、任意の時点でユーザーに割り当てることができるリソースを制限します。
データストアを拡張できますか?
Yellowfinは主に読み取りアプリケーションであるため、データベースをサポートするようにサーバを構成する必要はありません。
レポートデータベースの拡張は、Yellowfin アプリケーションとは別にクライアントによって完全に管理されます。
-
クラスタリング
アプリケーションサーバをクラスタリングすることで水平方向に拡張できますか?
Yellowfin アプリケーションは、クラスタリングをサポートしています。クラスタリングにより、複数のアプリケーションサーバがひとつのYellowfin リポジトリを共有できます。
Yellowfinは「Cluster aware」で、新しいノードは既存のYellowfin クラスタを見つけて参加します。Cluster Messagingにより、Yellowfinはノード間でメッセージを送信し、正しいアプリケーション状態を維持することができます。
バックグラウンドタスクをノード間に分散して、ブロードキャストやシグナルジョブのスループットを向上させることができます。
高可用性を実現するためにYellowfinをクラスタリングするにはどのようにすればよいですか?
Yellowfinは、単一の共有構成データベースの上に、複数のアプリケーションサーバを重ねることで、クラスタ化することができます。アプリケーションノードは、相互に通信できる限り、どこにでも配置できます。また、各クラスタノードを特定のタスクを実行するように構成して、サーバをシグナルやブロードキャストなどの高リソースプロセス専用にすることもできます。
ライセンスはどのように機能しますか?
Yellowfinは単一のライセンスファイルを提供し、アプリケーションのUI(webサービスを介して行うことも可能)を介してアップロードされます。ライセンスが適用されると、ライセンスパラメーターが共有構成データベースに保存されます。新しいアプリケーションノードがそのデータベースに接続すると、格納されているライセンスと比較されます。
-
キャッシュ
アプリケーションキャッシュ
コンテンツのメタデータをインメモリに保存するために、いくつかのキャッシュが使用されています。
これらのキャッシュには、次のようなものがあります。
- レポート定義キャッシュ
- ビューキャッシュ
- キャッシュされたフィルターのキャッシュ
これらのキャッシュを使用すると、負荷が高い場合でもアプリケーションのパフォーマンスを向上させることができます。格納されるデータの量とキャッシュの最大時間は、ユースケースとシステム環境に最適になるように構成できます。
データキャッシュ
Yellowfinは、一般的に実行されるレポートのデータをメモリにキャッシュできます。これにより、同時接続ユーザーが同じコンテンツを閲覧しているときのパフォーマンスが向上します。
データキャッシュにより、特定の時間枠内でソースデータベースに対して同じクエリーが実行されなくなります。Yellowfin レポートは、特定の時刻に実行されるようにスケジュールすることもでき、キャッシュされた結果は、次にスケジュールされた実行までエンドユーザーに提供されます。
-
リソース管理
データベース接続プールはどのように管理しますか?
Yellowfinは、接続プールを使用してデータベース接続を管理し、可能であればデータベース接続を再利用します。各接続には、接続プールの制限とサイズを個別に設定できます。接続プールを使用することで、Yellowfinからのレポートクエリーでデータベースが氾濫するのをを防ぐことができます。接続プールの設定は、管理コンソールで管理します。