Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/development/database/database_reviewer_guidelines.md')
-rw-r--r--doc/development/database/database_reviewer_guidelines.md95
1 files changed, 95 insertions, 0 deletions
diff --git a/doc/development/database/database_reviewer_guidelines.md b/doc/development/database/database_reviewer_guidelines.md
new file mode 100644
index 00000000000..894b1ea15f0
--- /dev/null
+++ b/doc/development/database/database_reviewer_guidelines.md
@@ -0,0 +1,95 @@
+# Database Reviewer Guidelines
+
+This page includes introductory material for new database reviewers.
+
+If you are interested in getting an application update reviewed,
+check the [database review guidelines](../database_review.md).
+
+## Scope of work done by a database reviewer
+
+Database reviewers are domain experts who have substantial experience with databases,
+`SQL`, and query performance optimization.
+
+A database review is required whenever an application update [touches the database](../database_review.md#general-process).
+
+The database reviewer is tasked with reviewing the database specific updates and
+making sure that any queries or modifications will perform without issues
+at the scale of GitLab.com.
+
+For more information on the database review process, check the [database review guidelines](../database_review.md).
+
+## How to apply for becoming a database reviewer
+
+Team members are encouraged to self-identify as database domain experts and add it to their [team profile](https://gitlab.com/gitlab-com/www-gitlab-com/-/blob/master/data/team.yml)
+
+```yaml
+ projects:
+ gitlab:
+ - reviewer database
+```
+
+Assign the MR which adds your expertise to the `team.yml` file to a database maintainer
+or the [Database Team's Engineering Manager](https://about.gitlab.com/handbook/engineering/development/enablement/database/).
+
+Once the `team.yml` update is merged, the [Reviewer roulette](../code_review.md#reviewer-roulette)
+may recommend you as a database reviewer.
+
+## Resources for database reviewers
+
+As a database reviewer, join the internal `#database` Slack channel and ask questions or discuss
+database related issues with other database reviewers and maintainers.
+
+There is also an optional database office hours call held bi-weekly, alternating between
+European/US and APAC friendly hours. You can join the office hours call and bring topics
+that require a more in-depth discussion between the database reviewers and maintainers:
+
+- [Database Office Hours Agenda](https://docs.google.com/document/d/1wgfmVL30F8SdMg-9yY6Y8djPSxWNvKmhR5XmsvYX1EI/edit).
+- [Youtube playlist with past recordings](https://www.youtube.com/playlist?list=PL05JrBw4t0Kp-kqXeiF7fF7cFYaKtdqXM).
+
+You should also join the [#database-labs](../understanding_explain_plans.md#database-lab)
+Slack channel and get familiar with how to use Joe, the slackbot that provides developers
+with their own clone of the production database.
+
+Understanding and efficiently using `EXPLAIN` plans is at the core of the database review process.
+The following guides provide a quick introduction and links to follow on more advanced topics:
+
+- Guide on [understanding EXPLAIN plans](../understanding_explain_plans.md).
+- [Explaining the unexplainable series in depesz](https://www.depesz.com/tag/unexplainable/).
+
+Finally, you can find various guides in the [Database guides](index.md) page that cover more specific
+topics and use cases. The most frequently required during database reviewing are the following:
+
+- [Migrations style guide](../migration_style_guide.md) for creating safe SQL migrations.
+- [What requires downtime?](../what_requires_downtime.md).
+- [SQL guidelines](../sql.md) for working with SQL queries.
+
+## How to apply for becoming a database maintainer
+
+Once a database reviewer feels confident on switching to a database maintainer,
+they can update their [team profile](https://gitlab.com/gitlab-com/www-gitlab-com/-/blob/master/data/team.yml)
+to a `trainee_maintainer database`:
+
+```yaml
+ projects:
+ gitlab:
+ - trainee_maintainer database
+```
+
+The first step is to a create a [Trainee Database Maintainer Issue](https://gitlab.com/gitlab-com/www-gitlab-com/-/issues/new?issuable_template=trainee-database-maintainer).
+Use and follow the process described in the 'Trainee database maintainer' template.
+
+Note that [trainee maintainers](https://about.gitlab.com/handbook/engineering/workflow/code-review/#trainee-maintainer)
+are three times as likely to be picked by the [Danger bot](../dangerbot.md) as other reviewers.
+
+## What to do if you feel overwhelmed
+
+Similar to all types of reviews, [unblocking others is always a top priority](https://about.gitlab.com/handbook/values/#global-optimization).
+Database reviewers are expected to [review assigned merge requests in a timely manner](../code_review.md#review-turnaround-time)
+or let the author know as soon as possible and help them find another reviewer or maintainer.
+
+We are doing reviews to help the rest of the GitLab team and, at the same time, get exposed
+to more use cases, get a lot of insights and hone our database and data management skills.
+
+If you are feeling overwhelmed, think you are at capacity, and are unable to accept any more
+reviews until some have been completed, communicate this through your GitLab status by setting
+the `:red_circle:` emoji and mentioning that you are at capacity in the status text.