我有一些表包含多个作业,依赖项和已用时间。引擎的目的是当您插入作业的名称时,它会为您提供有关要检查哪些过程以使其更快的建议。
例如,给出下一个表格:
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 |
+----+-------------------------+------------+-----+
Job dependant_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 |
+--------+----------------------+---------------------+----------+-----------------+
如果你输入名称dependant_box,它会告诉你* delete_everything *是罪魁祸首。这是因为它具有依赖关系,它将等待所有依赖关系满足以开始运行。也可能会发生多个作业被链接,因此您必须检查所有作业,或者至少检查5个作业时间。
因此,根据给定的信息,它应该显示10个要优化的候选者,这些候选者将被输入引擎。也可能发生一些工作无法修复,因此不应该显示它们。此外,可能会有一些工作需要更长时间或链接,但权重是基于已用时间。
表存储在oracle中,语言应该是java。
你有什么建议?我们正在讨论为团队开发自动化工具来检查花费更长时间的工作。如果您能指出算法,库等,我们将不胜感激。
我忘记提及: b 表示包含1个或多个作业(j)的框。 j 是一个单一的职位。