Database Dictionary

This page documents the database schema for GitLab, so data analysts and other groups can locate the feature categories responsible for specific database tables.

Location

Database dictionary metadata files are stored in the gitlab project under db/docs/.

Example dictionary file

---
table_name: terraform_states
classes:
- Terraform::State
feature_categories:
- infrastructure_as_code
description: Represents a Terraform state backend
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26619
milestone: '13.0'

Schema

Attribute Type Required Description
table_name String yes Database table name
classes Array(String) no List of classes that respond to .table_name with the table_name
feature_categories Array(String) yes List of feature categories using this table
description String no Text description of the information stored in the table and it's purpose
introduced_by_url URL no URL to the merge request or commit which introduced this table
milestone String no The milestone that introduced this table

Adding tables

When adding a new table, create a new file under db/docs/ named <table_name>.yml containing as much information as you know about the table.

Include this file in the commit with the migration that creates the table.

Dropping tables

When dropping a table, you must remove the metadata file from db/docs/ in the same commit with the migration that drops the table.