日本語で情報が少ないトピックの記事を翻訳しています。
今回はLookerでPDTの構築を管理しているリジェネレーターというプロセスについて紹介します。
この記事はこちらの英語バージョンの日本語訳です。
元の記事の最終情報更新日時:2020 年 11 月 4 日
リジェネレーターの役割:
リジェネレーターの役割は、スクラッチスキーマでの PDT の構築を管理することです。主には、datagroupのtriggerをチェックし、本番環境にプッシュされた新しい PDT を構築し、トリガー値が更新された既存の本番環境の PDT を再構築します。
リジェネレーターのスレッド数:
それぞれのConnectionに対して リジェネレータースレッドは1つあります。リジェネレーターは 1 つのスレッドのみであるため、一度に 1 つの操作しか実行できません。つまり、一度に 1 つのトリガーのみをチェックしたり、1 つの PDTのみをビルド/再ビルドしたりできるということです。
(ConnectionのMax PDT Builder Connections設定でParallel PDT が有効になっている場合は一度に複数の PDT をビルドできます)
インスタンス全体では最大 25 個のリジェネレータースレッドが使用できますが、Connectionごとに 1 つのスレッドしか使用できません。つまり、Lookerの インスタンスに 25 の異なるデータベースが接続されている場合にのみ、理論的には 25 の PDT を同時に構築できることを意味します。インスタンスで PDT が有効になっているConnectionが 25 を超える場合、複数のConnectionが同じリジェネレータースレッドを共有します。
Regeneratorの実行スケジュール:
リジェネレーターは、接続設定のPDT And Datagroup Maintenance Scheduleセクションで設定されたスケジュールで実行されます。デフォルト値の実行間隔は5分です。このスケジュールはcron式を使用して設定されます。デフォルトcron 式は、一連の時間を表す空白で区切られた 5 つまたは 6 つのフィールドで構成される文字列です。 cron 式の詳細については、こちらを参照してください。
注意: リジェネレーターの最頻の実行間隔は5分です。「PDT And datagroup Maintenance Schedule」の設定では、5 分よりも頻繁な頻度の cron 文字列を受け入れますが、設定されているように見えてもリジェネレーターは最大で5 分ごとにしか実行されません。
リジェネレータのプロセス:
- datagroupのトリガーをチェックする
- まず初めに、リジェネレーターはすべてのdatagroupトリガーをチェックします。つまり、sql_triggerで設定されたSQLを実行します。返ってきた値が、保存されている前回のトリガー値から変更されていた場合、値を更新し、datagroupを「トリガー済み」としてマークします。すべてのdatagroupトリガーがチェックされた後、リジェネレーターは PDT の構築/再構築に進みます。
- PDTを構築する
- PDTがsql_trigger_valueを使用して永続化されている場合、リジェネレーターは最初にデータベースでトリガーSQLを実行します。トリガーSQL の結果が前回の実行結果の値から変更されていた場合、リジェネレーターは PDT を再構築します。
- PDT が datagroupを使用して永続化されている場合、リジェネレーターは最初にそのdatagroupがトリガー済みとしてマークされているかどうかを確認します。datagroupがトリガー済みとしてマークされている場合、リジェネレーターは PDT を再構築します。
- リジェネレーターが PDT をビルド/再ビルドする順序はランダムですが、依存関係にあるPDTの場合はその関係が優先されます。PDTビルドプロセスの詳細については、The PDT Build Processの記事を参照してください。
この記事の内容は限定的なサポートの対象となります。