ERD Schema of the Database

Here is the current Database schema diagram.

Warning

The ER diagram shows the snapshot of the database structure valid for Airflow version 3.4.0 and it should be treated as an internal detail. It might be changed at any time and you should not directly access the database to retrieve information from it or modify the data - you should use Airflow public REST API reference to do that instead. The main purpose of this diagram is to help with troubleshooting and understanding of the internal Airflow DB architecture in case you have any problems with the database - for example when dealing with problems with migrations. See also Reference for Database Migrations for list of detailed database migrations that are applied when running migration script and db command for the commands that you can use to manage the migrations.

        erDiagram
connection {
 INTEGER id PK
   VARCHAR(250) conn_id 
   VARCHAR(500) conn_type 
   TEXT description 
   TEXT extra 
   VARCHAR(500) host 
   BOOLEAN is_encrypted 
   BOOLEAN is_extra_encrypted 
   TEXT login 
   TEXT password 
   INTEGER port 
   VARCHAR(500) schema 
   VARCHAR(50) team_name FK
}
dag_bundle_team {
 VARCHAR(250) dag_bundle_name PK, FK
   VARCHAR(50) team_name PK, FK
}
team {
 VARCHAR(50) name PK
}
dag_bundle {
 VARCHAR(250) name PK
   BOOLEAN active 
   TIMESTAMP last_refreshed 
   TEXT signed_url_template 
   JSON template_params 
   VARCHAR(200) version 
}
job {
 INTEGER id PK
   JSON bundle_names 
   VARCHAR(250) dag_id 
   TIMESTAMP end_date 
   VARCHAR(500) executor_class 
   VARCHAR(500) hostname 
   VARCHAR(30) job_type 
   TIMESTAMP latest_heartbeat 
   TIMESTAMP start_date 
   VARCHAR(20) state 
   VARCHAR(50) team_name FK
   VARCHAR(1000) unixname 
}
connection_test_request {
 CHAR(32) id PK
   VARCHAR(250) active_connection_id 
   BOOLEAN commit_on_success 
   VARCHAR(500) conn_type 
   VARCHAR(250) connection_id 
   TIMESTAMP created_at 
   VARCHAR(256) executor 
   TEXT extra 
   VARCHAR(500) host 
   BOOLEAN is_encrypted 
   BOOLEAN is_extra_encrypted 
   TEXT login 
   TEXT password 
   INTEGER port 
   VARCHAR(256) queue 
   VARCHAR(2000) result_message 
   VARCHAR(500) schema 
   VARCHAR(20) state 
   VARCHAR(50) team_name 
   VARCHAR(64) token 
   TIMESTAMP updated_at 
}
callback {
 CHAR(32) id PK
   VARCHAR(250) bundle_name 
   TIMESTAMP created_at 
   JSON data 
   VARCHAR(20) fetch_method 
   TEXT output 
   INTEGER priority_weight 
   VARCHAR(10) state 
   INTEGER trigger_id FK
   VARCHAR(20) type 
}
slot_pool {
 INTEGER id PK
   TEXT description 
   BOOLEAN include_deferred 
   VARCHAR(256) pool 
   INTEGER slots 
   VARCHAR(50) team_name FK
}
deadline {
 CHAR(32) id PK
   CHAR(32) callback_id FK
   TIMESTAMP created_at 
   INTEGER dagrun_id FK
   CHAR(32) deadline_alert_id FK
   TIMESTAMP deadline_time 
   TIMESTAMP last_updated_at 
   BOOLEAN missed 
}
variable {
 INTEGER id PK
   TEXT description 
   BOOLEAN is_encrypted 
   VARCHAR(250) key 
   VARCHAR(50) team_name FK
   TEXT val 
}
asset_alias_asset {
 INTEGER alias_id PK, FK
   INTEGER asset_id PK, FK
}
asset_alias_asset_event {
 INTEGER alias_id PK, FK
   INTEGER event_id PK, FK
}
asset_watcher {
 INTEGER asset_id PK, FK
   INTEGER trigger_id PK, FK
   VARCHAR(1500) name 
}
asset_alias {
 INTEGER id PK
   VARCHAR(1500) group 
   VARCHAR(1500) name 
}
asset {
 INTEGER id PK
   TIMESTAMP created_at 
   JSON extra 
   VARCHAR(1500) group 
   VARCHAR(1500) name 
   TIMESTAMP updated_at 
   VARCHAR(1500) uri 
}
asset_active {
 VARCHAR(1500) name PK, FK
   VARCHAR(1500) uri PK, FK
}
dag_schedule_asset_name_reference {
 VARCHAR(250) dag_id PK, FK
   VARCHAR(1500) name PK
   TIMESTAMP created_at 
}
dag_schedule_asset_uri_reference {
 VARCHAR(250) dag_id PK, FK
   VARCHAR(1500) uri PK
   TIMESTAMP created_at 
}
dag_schedule_asset_alias_reference {
 INTEGER alias_id PK, FK
   VARCHAR(250) dag_id PK, FK
   TIMESTAMP created_at 
   TIMESTAMP updated_at 
}
dag_schedule_asset_reference {
 INTEGER asset_id PK, FK
   VARCHAR(250) dag_id PK, FK
   BOOLEAN allow_global_producers 
   JSON allow_producer_teams 
   TIMESTAMP created_at 
   TIMESTAMP updated_at 
}
task_outlet_asset_reference {
 INTEGER asset_id PK, FK
   VARCHAR(250) dag_id PK, FK
   VARCHAR(250) task_id PK
   JSON allow_consumer_teams 
   BOOLEAN allow_global_consumers 
   TIMESTAMP created_at 
   TIMESTAMP updated_at 
}
task_inlet_asset_reference {
 INTEGER asset_id PK, FK
   VARCHAR(250) dag_id PK, FK
   VARCHAR(250) task_id PK
   TIMESTAMP created_at 
   TIMESTAMP updated_at 
}
asset_dag_run_queue {
 INTEGER asset_event_id PK, FK
   VARCHAR(250) target_dag_id PK, FK
   INTEGER asset_id FK
   TIMESTAMP created_at 
}
dagrun_asset_event {
 INTEGER dag_run_id PK, FK
   INTEGER event_id PK, FK
}
asset_event {
 INTEGER id PK
   INTEGER asset_id 
   JSON extra 
   VARCHAR(250) partition_key 
   VARCHAR(250) source_dag_id 
   INTEGER source_map_index 
   VARCHAR(250) source_run_id 
   VARCHAR(250) source_task_id 
   TIMESTAMP timestamp 
}
asset_partition_dag_run {
 INTEGER id PK
   TIMESTAMP created_at 
   INTEGER created_dag_run_id FK
   TIMESTAMP partition_date 
   VARCHAR(250) partition_key 
   JSON rollup_fingerprint 
   VARCHAR(250) target_dag_id 
   TIMESTAMP updated_at 
}
partitioned_asset_key_log {
 INTEGER id PK
   INTEGER asset_event_id 
   INTEGER asset_id 
   INTEGER asset_partition_dag_run_id 
   TIMESTAMP created_at 
   VARCHAR(250) source_partition_key 
   VARCHAR(250) target_dag_id 
   VARCHAR(250) target_partition_key 
}
log {
 INTEGER id PK
   VARCHAR(250) dag_id 
   TIMESTAMP dttm 
   VARCHAR(60) event 
   TEXT extra 
   TIMESTAMP logical_date 
   INTEGER map_index 
   VARCHAR(500) owner 
   VARCHAR(500) owner_display_name 
   VARCHAR(250) run_id 
   VARCHAR(250) task_id 
   VARCHAR(50) team_name 
   INTEGER try_number 
}
dag_version {
 CHAR(32) id PK
   VARCHAR(250) bundle_name 
   VARCHAR(250) bundle_version 
   TIMESTAMP created_at 
   VARCHAR(250) dag_id FK
   TIMESTAMP last_updated 
   JSON version_data 
   INTEGER version_number 
}
deadline_alert {
 CHAR(32) id PK
   JSON callback_def 
   TIMESTAMP created_at 
   TEXT description 
   JSON interval 
   VARCHAR(250) name 
   JSON reference 
   CHAR(32) serialized_dag_id FK
}
hitl_detail {
 CHAR(32) ti_id PK, FK
   JSON assignees 
   TEXT body 
   JSON chosen_options 
   TIMESTAMP created_at 
   JSON defaults 
   BOOLEAN multiple 
   JSON options 
   JSON params 
   JSON params_input 
   TIMESTAMP responded_at 
   JSON responded_by 
   TEXT subject 
}
task_map {
 VARCHAR(250) dag_id PK, FK
   INTEGER map_index PK, FK
   VARCHAR(250) run_id PK, FK
   VARCHAR(250) task_id PK, FK
   JSON keys 
   INTEGER length 
}
task_reschedule {
 INTEGER id PK
   INTEGER duration 
   TIMESTAMP end_date 
   TIMESTAMP reschedule_date 
   TIMESTAMP start_date 
   CHAR(32) ti_id FK
}
xcom {
 INTEGER dag_run_id PK
   VARCHAR(512) key PK
   INTEGER map_index PK, FK
   VARCHAR(250) task_id PK, FK
   VARCHAR(250) dag_id FK
   BOOLEAN dag_result 
   VARCHAR(250) run_id FK
   TIMESTAMP timestamp 
   JSON value 
}
task_instance {
 CHAR(32) id PK
   JSON context_carrier 
   VARCHAR(1000) custom_operator_name 
   VARCHAR(250) dag_id FK
   CHAR(32) dag_version_id FK
   FLOAT duration 
   TIMESTAMP end_date 
   VARCHAR(1000) executor 
   BLOB executor_config 
   TEXT external_executor_id 
   VARCHAR(1000) hostname 
   TIMESTAMP last_heartbeat_at 
   INTEGER map_index 
   INTEGER max_tries 
   JSON next_kwargs 
   VARCHAR(1000) next_method 
   VARCHAR(1000) operator 
   INTEGER pid 
   VARCHAR(256) pool 
   INTEGER pool_slots 
   INTEGER priority_weight 
   VARCHAR(256) queue 
   INTEGER queued_by_job_id 
   TIMESTAMP queued_dttm 
   VARCHAR(250) rendered_map_index 
   FLOAT retry_delay_override 
   VARCHAR(500) retry_reason 
   VARCHAR(250) run_id FK
   TIMESTAMP scheduled_dttm 
   TIMESTAMP start_date 
   VARCHAR(20) state 
   VARCHAR(2000) task_display_name 
   VARCHAR(250) task_id 
   INTEGER trigger_id FK
   TIMESTAMP trigger_timeout 
   INTEGER try_number 
   VARCHAR(1000) unixname 
   TIMESTAMP updated_at 
}
task_instance_note {
 CHAR(32) ti_id PK, FK
   VARCHAR(1000) content 
   TIMESTAMP created_at 
   TIMESTAMP updated_at 
   VARCHAR(128) user_id 
}
backfill {
 INTEGER id PK
   TIMESTAMP completed_at 
   TIMESTAMP created_at 
   VARCHAR(250) dag_id 
   JSON dag_run_conf 
   TIMESTAMP from_date 
   BOOLEAN is_paused 
   INTEGER max_active_runs 
   VARCHAR(250) reprocess_behavior 
   TIMESTAMP to_date 
   VARCHAR(512) triggering_user_name 
   TIMESTAMP updated_at 
}
backfill_dag_run {
 INTEGER id PK
   INTEGER backfill_id FK
   INTEGER dag_run_id FK
   VARCHAR(250) exception_reason 
   TIMESTAMP logical_date 
   VARCHAR(250) partition_key 
   INTEGER sort_ordinal 
}
hitl_detail_history {
 CHAR(32) ti_history_id PK, FK
   JSON assignees 
   TEXT body 
   JSON chosen_options 
   TIMESTAMP created_at 
   JSON defaults 
   BOOLEAN multiple 
   JSON options 
   JSON params 
   JSON params_input 
   TIMESTAMP responded_at 
   JSON responded_by 
   TEXT subject 
}
task_instance_history {
 CHAR(32) task_instance_id PK
   JSON context_carrier 
   VARCHAR(1000) custom_operator_name 
   VARCHAR(250) dag_id FK
   CHAR(32) dag_version_id 
   FLOAT duration 
   TIMESTAMP end_date 
   VARCHAR(1000) executor 
   BLOB executor_config 
   TEXT external_executor_id 
   VARCHAR(1000) hostname 
   INTEGER map_index FK
   INTEGER max_tries 
   JSON next_kwargs 
   VARCHAR(1000) next_method 
   VARCHAR(1000) operator 
   INTEGER pid 
   VARCHAR(256) pool 
   INTEGER pool_slots 
   INTEGER priority_weight 
   VARCHAR(256) queue 
   INTEGER queued_by_job_id 
   TIMESTAMP queued_dttm 
   VARCHAR(250) rendered_map_index 
   FLOAT retry_delay_override 
   VARCHAR(500) retry_reason 
   VARCHAR(250) run_id FK
   TIMESTAMP scheduled_dttm 
   TIMESTAMP start_date 
   VARCHAR(20) state 
   VARCHAR(2000) task_display_name 
   VARCHAR(250) task_id FK
   INTEGER trigger_id 
   DATETIME trigger_timeout 
   INTEGER try_number 
   VARCHAR(1000) unixname 
   TIMESTAMP updated_at 
}
log_template {
 INTEGER id PK
   TIMESTAMP created_at 
   TEXT elasticsearch_id 
   TEXT filename 
}
dag_run {
 INTEGER id PK
   INTEGER backfill_id FK
   VARCHAR(250) bundle_version 
   INTEGER clear_number 
   JSON conf 
   JSON context_carrier 
   TIMESTAMP created_at 
   CHAR(32) created_dag_version_id FK
   INTEGER creating_job_id 
   VARCHAR(250) dag_id 
   TIMESTAMP data_interval_end 
   TIMESTAMP data_interval_start 
   TIMESTAMP end_date 
   TIMESTAMP last_scheduling_decision 
   INTEGER log_template_id FK
   TIMESTAMP logical_date 
   TIMESTAMP partition_date 
   VARCHAR(250) partition_key 
   TIMESTAMP queued_at 
   TIMESTAMP run_after 
   VARCHAR(250) run_id 
   VARCHAR(50) run_type 
   INTEGER scheduled_by_job_id 
   TIMESTAMP start_date 
   VARCHAR(50) state 
   VARCHAR(50) triggered_by 
   VARCHAR(512) triggering_user_name 
   TIMESTAMP updated_at 
}
dag_run_note {
 INTEGER dag_run_id PK, FK
   VARCHAR(1000) content 
   TIMESTAMP created_at 
   TIMESTAMP updated_at 
   VARCHAR(128) user_id 
}
dag_tag {
 VARCHAR(250) dag_id PK, FK
   VARCHAR(100) name PK
}
dag_owner_attributes {
 VARCHAR(250) dag_id PK, FK
   VARCHAR(500) owner PK
   VARCHAR(500) link 
}
dag {
 VARCHAR(250) dag_id PK
   JSON allowed_run_types 
   JSON asset_expression 
   VARCHAR(250) bundle_name FK
   VARCHAR(200) bundle_version 
   VARCHAR(2000) dag_display_name 
   JSON deadline 
   TEXT description 
   BOOLEAN exceeds_max_non_backfill 
   BOOLEAN fail_fast 
   VARCHAR(2000) fileloc 
   BOOLEAN has_import_errors 
   BOOLEAN has_task_concurrency_limits 
   BOOLEAN is_draining 
   BOOLEAN is_paused 
   BOOLEAN is_stale 
   TIMESTAMP last_expired 
   FLOAT last_parse_duration 
   TIMESTAMP last_parsed_time 
   INTEGER max_active_runs 
   INTEGER max_active_tasks 
   INTEGER max_consecutive_failed_dag_runs 
   TIMESTAMP next_dagrun 
   TIMESTAMP next_dagrun_create_after 
   TIMESTAMP next_dagrun_data_interval_end 
   TIMESTAMP next_dagrun_data_interval_start 
   TIMESTAMP next_dagrun_partition_date 
   VARCHAR(255) next_dagrun_partition_key 
   VARCHAR(2000) owners 
   JSON partition_mapper_info 
   VARCHAR(2000) relative_fileloc 
   VARCHAR(1000) timetable_description 
   BOOLEAN timetable_partitioned 
   BOOLEAN timetable_periodic 
   TEXT timetable_summary 
   VARCHAR(255) timetable_type 
}
dag_warning {
 VARCHAR(250) dag_id PK, FK
   VARCHAR(50) warning_type PK
   TEXT message 
   TIMESTAMP timestamp 
}
rendered_task_instance_fields {
 VARCHAR(250) dag_id PK, FK
   INTEGER map_index PK, FK
   VARCHAR(250) run_id PK, FK
   VARCHAR(250) task_id PK, FK
   JSON k8s_pod_yaml 
   JSON rendered_fields 
}
trigger {
 INTEGER id PK
   VARCHAR(1000) classpath 
   TIMESTAMP created_date 
   TEXT kwargs 
   VARCHAR(256) queue 
   VARCHAR(50) team_name FK
   INTEGER triggerer_id 
}
asset_state_store {
 INTEGER asset_id PK, FK
   VARCHAR(512) key PK
   VARCHAR(250) last_updated_by_dag_id 
   VARCHAR(16) last_updated_by_kind 
   INTEGER last_updated_by_map_index 
   VARCHAR(250) last_updated_by_run_id 
   VARCHAR(250) last_updated_by_task_id 
   TIMESTAMP updated_at 
   TEXT value 
}
dag_favorite {
 VARCHAR(250) dag_id PK, FK
   VARCHAR(250) user_id PK
}
dag_priority_parsing_request {
 VARCHAR(32) id PK
   VARCHAR(250) bundle_name 
   VARCHAR(2000) relative_fileloc 
}
import_error {
 INTEGER id PK
   VARCHAR(250) bundle_name 
   VARCHAR(1024) filename 
   TEXT stacktrace 
   TIMESTAMP timestamp 
}
revoked_token {
 VARCHAR(32) jti PK
   TIMESTAMP exp 
}
dag_code {
 CHAR(32) id PK
   TIMESTAMP created_at 
   VARCHAR(250) dag_id 
   CHAR(32) dag_version_id FK
   VARCHAR(2000) fileloc 
   TIMESTAMP last_updated 
   TEXT source_code 
   VARCHAR(32) source_code_hash 
}
serialized_dag {
 CHAR(32) id PK
   TIMESTAMP created_at 
   VARCHAR(32) dag_hash 
   VARCHAR(250) dag_id 
   CHAR(32) dag_version_id FK
   JSON data 
   BLOB data_compressed 
   TIMESTAMP last_updated 
}
task_state_store {
 INTEGER id PK
   VARCHAR(250) dag_id 
   INTEGER dag_run_id FK
   TIMESTAMP expires_at 
   VARCHAR(512) key 
   INTEGER map_index 
   VARCHAR(250) run_id 
   VARCHAR(250) task_id 
   TIMESTAMP updated_at 
   TEXT value 
}
team one or zero--0+ connection : has
dag_bundle 1--0+ dag_bundle_team : has
team 1--0+ dag_bundle_team : has
team one or zero--0+ job : has
trigger one or zero--0+ callback : has
team one or zero--0+ slot_pool : has
deadline_alert one or zero--0+ deadline : has
callback 1--0+ deadline : has
dag_run one or zero--0+ deadline : has
team one or zero--0+ variable : has
asset 1--0+ asset_alias_asset : has
asset_alias 1--0+ asset_alias_asset : has
asset_alias 1--0+ asset_alias_asset_event : has
asset_event 1--0+ asset_alias_asset_event : has
trigger 1--0+ asset_watcher : has
asset 1--0+ asset_watcher : has
asset 1--1 asset_active : has
asset 1--1 asset_active : has
dag 1--0+ dag_schedule_asset_name_reference : has
dag 1--0+ dag_schedule_asset_uri_reference : has
asset_alias 1--0+ dag_schedule_asset_alias_reference : has
dag 1--0+ dag_schedule_asset_alias_reference : has
dag 1--0+ dag_schedule_asset_reference : has
asset 1--0+ dag_schedule_asset_reference : has
dag 1--0+ task_outlet_asset_reference : has
asset 1--0+ task_outlet_asset_reference : has
asset 1--0+ task_inlet_asset_reference : has
dag 1--0+ task_inlet_asset_reference : has
asset 1--0+ asset_dag_run_queue : has
dag 1--0+ asset_dag_run_queue : has
asset_event 1--0+ asset_dag_run_queue : has
dag_run 1--0+ dagrun_asset_event : has
asset_event 1--0+ dagrun_asset_event : has
dag_run one or zero--0+ asset_partition_dag_run : has
dag 1--0+ dag_version : has
serialized_dag 1--0+ deadline_alert : has
task_instance 1--1 hitl_detail : has
task_instance 1--0+ task_map : has
task_instance 1--0+ task_map : has
task_instance 1--0+ task_map : has
task_instance 1--0+ task_map : has
task_instance 1--0+ task_reschedule : has
task_instance 1--0+ xcom : has
task_instance 1--0+ xcom : has
task_instance 1--0+ xcom : has
task_instance 1--0+ xcom : has
dag_version one or zero--0+ task_instance : has
dag_run 1--0+ task_instance : has
dag_run 1--0+ task_instance : has
trigger one or zero--0+ task_instance : has
task_instance 1--1 task_instance_note : has
dag_run one or zero--0+ backfill_dag_run : has
backfill 1--0+ backfill_dag_run : has
task_instance_history 1--1 hitl_detail_history : has
task_instance 1--0+ task_instance_history : has
task_instance 1--0+ task_instance_history : has
task_instance 1--0+ task_instance_history : has
task_instance 1--0+ task_instance_history : has
dag_version one or zero--0+ dag_run : has
log_template one or zero--0+ dag_run : has
backfill one or zero--0+ dag_run : has
dag_run 1--1 dag_run_note : has
dag 1--0+ dag_tag : has
dag 1--0+ dag_owner_attributes : has
dag_bundle 1--0+ dag : has
dag 1--0+ dag_warning : has
task_instance 1--0+ rendered_task_instance_fields : has
task_instance 1--0+ rendered_task_instance_fields : has
task_instance 1--0+ rendered_task_instance_fields : has
task_instance 1--0+ rendered_task_instance_fields : has
team one or zero--0+ trigger : has
asset 1--0+ asset_state_store : has
dag 1--0+ dag_favorite : has
dag_version 1--1 dag_code : has
dag_version 1--1 serialized_dag : has
dag_run 1--0+ task_state_store : has
    

Was this entry helpful?