Database Trainee Maintainer : Alper Akgun
Basic Setup
Thank you for becoming a database trainee! Please work on the list below to complete your setup.
-
Change issue title to include your name: Database Trainee Maintainer: Your Name
-
Review general code review guidelines -
Familiarize with database review process -
Familiarize with migration helpers and review usage in existing migrations -
Familiarize with best practices in database guides -
Watch Optimising Rails Database Queries: Episode 1 -
Read Understanding EXPLAIN plans -
Review how we use database instances restored from a backup for testing and make sure you're set up to execute pipelines (check README.md and reach out to @abrandl
since this is currently subject to being changed) -
Get yourself added to @gl-database
group and respond to @-mentions to the group (reach out to any maintainer on the group to get added). You will get TODOs on gitlab.com for group mentions. -
Make sure you have proper access to at least a read-only replica in staging and production -
Indicate in data/team.yml
your role as a database reviewer (example MR). Assign MR to your manager for merge. -
Once you are comfortable as a reviewer add trainee_maintainer database
to your role indata/team.yml
. Trainee maintainers count as reviewers and are three times as likely to be picked as other reviewers -
Send one MR to improve the review documentation
Note that approving and accepting merge requests is restricted to Database Maintainers only. As a reviewer, pass the MR to a maintainer for approval.
You're all set! Watch out for TODOs on GitLab.com.
Some achievements
1. Over 70 database reviews
I had over 70 reviews mostly on gitlab app, and few on version & customers apps moving a lot of helpers and standards there.
~65%
of reviews merged with no maintainer additions or nitpics/optional/backend comments
1.a 1.b None of the MRs created production issues or feedback
2. Batch counting and usage data query optimizations
I was indeed in the growth conversion team when I have become a database reviewer. I voluntarily jumped to the telemetry team to resolve usage ping, batch counting and index optimization issues because they were database related issues.
- Implemented the batch counters to overcome usage data count issues gitlab-org/gitlab!22705 (merged) - this allowed hundreds existing queries usage data to work fine and new ones to be authored
- Led the efforts, to optimized the query plans for usage data 30+ MRs with a lot of indexes
- Contributed to the solution for less conflict and conflict-free rails schema handling gitlab-org/gitlab!27885 (merged) gitlab-org/gitlab!30109 (merged)
3. Identifying Missing & Redundant Indexes
- Fix mis-used arguments for remove_concurrent_index_by_name gitlab-org/gitlab!36673 (merged)
- Fix
index_exists?
related uncreated indexes gitlab-org/gitlab#214466 (closed)
4. Database documentation & Office hours discussions
- Contributed several database documentation MR 1 and [MR 2] gitlab-org/gitlab!28649 (merged), MR3, MR4
5. Move gitlab app database helpers into other applications.
- Move migration helpers, and standards from gitlab app into versions and subscriptions portal apps https://gitlab.com/gitlab-services/version-gitlab-com/-/merge_requests/504
When you're ready to make it official
When reviews have accumulated, and recent reviews consistently fulfill maintainer responsibilities, any maintainer can take the next step. The trainee should also feel free to discuss their progress with their manager or any maintainer at any time.
-
Create a merge request for team page proposing yourself as a database maintainer. -
Get yourself added to @gitlab-org/maintainers/database
group (this group is recognized in CODEOWNERS). Reach out to any existing maintainer. -
Keep reviewing, start merging 🤘