azkaban 数据库设计

版本:v3.1.0
azkaban有17张表,分成6类project,scheduler,triggers,executions,executors,sla.
其中project中最为丰富,project包含有什么工程,工程包括哪些工作流,工程更改记录,工程版本记录,以及权限.

*表project_properties
用于存储project下所有任务的属性,比如noop/last.job

type=noop
dependencies=first1,first2,first3

存储在project_properties就会形成

       project_id|version|name           |modified_time   |encoding_type|property
       -------------|----------|----------------|---------------------|--------------------|-----------   
                33|         8    |noop/last.job |1483669665276|                       2|      {"type":"noop","dependencies":"first1,first2,first3"}
  • 表project_flows
    用于存储project中的所有flow内的job之间的关系,一行记录表示一个flow的job的内部关系.
    列名 | 解释
    -----------|-------------
    project_id | 标识
    version | 版本号
    flow_id | flow唯一标识
    modified_time |修改时间
    encoding_type | 存储格式(GZIP|PLAIN)
    json|dag关系
    json存储类型是blob,以下我解析出来的例子:
{
    "metadata":{

    },
    "project.id":33,
    "nodes":[
        {
            "layout":{
                "level":1
            },
            "propSource":null,
            "jobSource":"noop/last.job",
            "expectedRuntime":1,
            "id":"last",
            "jobType":"noop"
        },
        {
            "layout":{
                "level":0
            },
            "propSource":null,
            "jobSource":"noop/first3.job",
            "expectedRuntime":1,
            "id":"first3",
            "jobType":"command"
        },
        {
            "layout":{
                "level":0
            },
            "propSource":null,
            "jobSource":"noop/first2.job",
            "expectedRuntime":1,
            "id":"first2",
            "jobType":"command"
        },
        {
            "layout":{
                "level":0
            },
            "propSource":null,
            "jobSource":"noop/first1.job",
            "expectedRuntime":1,
            "id":"first1",
            "jobType":"command"
        }
    ],
    "edges":[
        {
            "source":"first2",
            "target":"last"
        },
        {
            "source":"first1",
            "target":"last"
        },
        {
            "source":"first3",
            "target":"last"
        }
    ],
    "failure.email":[

    ],
    "success.email":[

    ],
    "id":"last",
    "type":"flow",
    "version":7,
    "mailCreator":"default",
    "props":[

    ],
    "layedout":false
}

内嵌流

{
    "metadata":{

    },
    "project.id":3,
    "nodes":[
        {
            "layout":{
                "level":1
            },
            "propSource":null,
            "jobSource":"longDemo/flow3.job",
            "expectedRuntime":1,
            "id":"flow3",
            "jobType":"command"
        },
        {
            "layout":{
                "level":0
            },
            "propSource":null,
            "embeddedFlowId":"long",
            "jobSource":"longDemo/nextflow.job",
            "expectedRuntime":1,
            "id":"nextflow",
            "jobType":"flow"
        }
    ],
    "edges":[
        {
            "source":"nextflow",
            "target":"flow3"
        }
    ],
    "failure.email":[

    ],
    "success.email":[

    ],
    "id":"flow3",
    "type":"flow",
    "version":8,
    "mailCreator":"default",
    "props":[

    ],
    "layedout":false
}

你可能感兴趣的:(azkaban 数据库设计)