いくつかのジョブ、依存関係、および経過時間を含むいくつかのテーブルがあります。このエンジンの目的は、ジョブの名前を挿入すると、ジョブを高速化するためにどのプロセスをチェックすればよいかを推奨することです。
たとえば、次の表があるとします。
jobs
+----+-------------------------+------------+-----+
| id | job_name | parent_job |type |
+----+-------------------------+------------+-----+
| 1 | delete_everything_box | |b |
| 2 | delete_everything | 2 |j |
| 3 | another_job | |j |
| 4 | dependant_box | |b |
| 5 | dependant_job_1 | 4 |j |
| 6 | dependant_job_2 | 4 |j |
+----+-------------------------+------------+-----+
Jobdependent_box には、別の表で説明されているように、いくつかの依存関係がある場合があります。
dependencies
+--------+-------------------------+------+
| job_id | condition_job | type |
+--------+-------------------------+------+
| 4 | delete_everything_box | b |
+--------+-------------------------+------+
次に、すべての経過時間が格納されるテーブルがあります (A):
timings
+--------+----------------------+---------------------+----------+-----------------+
| job_id | start_time | end_time | status | elapsed_time |
+--------+----------------------+---------------------+----------+-----------------+
| 1 | 2012/09/19 02:57:35 | 2012/09/20 02:59:38 | success | 86523 |
| 2 | 2012/09/19 02:57:36 | 2012/09/20 02:59:37 | success | 86521 |
| 3 | 2012/09/19 02:57:36 | 2012/09/19 02:59:37 | success | 121 |
| 4 | 2012/09/20 02:59:39 | 2012/09/20 03:05:02 | success | 323 |
| 5 | 2012/09/20 02:59:40 | 2012/09/20 03:01:01 | success | 81 |
| 6 | 2012/09/20 02:59:40 | 2012/09/20 03:05:01 | success | 321 |
+--------+----------------------+---------------------+----------+-----------------+
ジョブ名を入力するとします。この場合は「delete_everything_box」です。A から、*delete_everything* が原因であると推測できます。しかし、別のシナリオ (B) があります。
timings
+--------+----------------------+---------------------+----------+-----------------+
| job_id | start_time | end_time | status | elapsed_time |
+--------+----------------------+---------------------+----------+-----------------+
| 1 | 2012/09/19 02:57:35 | 2012/09/20 02:59:38 | success | 86523 |
| 2 | 2012/09/19 02:57:36 | 2012/09/20 02:59:37 | success | 86521 |
| 3 | 2012/09/19 02:57:36 | 2012/09/19 02:59:37 | success | 121 |
| 4 | 2012/09/19 02:57:35 | 2012/09/20 03:05:02 | success | 86847 |
| 5 | 2012/09/20 02:59:39 | 2012/09/20 03:01:01 | success | 82 |
| 6 | 2012/09/20 02:59:39 | 2012/09/20 03:05:01 | success | 322 |
+--------+----------------------+---------------------+----------+-----------------+
B で、dependent_box という名前を入力すると、*delete_everything* が原因であることがわかります。これは、依存関係があるため、すべての依存関係が満たされるまで待機して実行を開始するためです。また、複数のジョブが連鎖しているため、すべてのジョブ、または少なくとも経過時間が長い 5 つのジョブを確認する必要がある場合もあります。
したがって、与えられた情報があれば、最適化する 10 の候補が表示され、エンジンに入力されます。一部のジョブを修正できなかったため、表示されない場合もあります。また、一部のジョブには時間がかかるか、連鎖している可能性がありますが、重みは経過時間に基づいています。
テーブルは oracle に格納され、言語は Java である必要があります。
何を指示してるんですか?チームが時間のかかるジョブをチェックするための自動化されたツールの開発について話し合っています。アルゴリズム、ライブラリなどを教えていただければ幸いです。
言い忘れましたが、bは 1 つ以上のジョブ (j) を含むボックスを意味します。jは単一のジョブ エントリです。