데이터베이스 리뷰 가이드라인
GitLab 머지 리퀘스트에서 데이터베이스 스키마 변경, 마이그레이션, 쿼리 추가 시 필요한 데이터베이스 리뷰 절차와 준비 사항을 설명합니다.
이 페이지는 데이터베이스 리뷰에 대한 내용입니다. 코드 리뷰 전반에 대한 더 폭넓은 조언과 모범 사례는 코드 리뷰 가이드 를 참고합니다. 일반 프로세스 # 다음 경우에는 데이터베이스 리뷰가 필요합니다. 데이터베이스 스키마를 건드리거나 데이터 마이그레이션을 수행하는 변경. 다음 위치의 파일이 여기에 해당합니다. db/ lib/gitlab/background_migration/ 데이터베이스 도구 변경. 예를 들면 다음과 같습니다. lib/gitlab/database/ 의 마이그레이션 또는 ActiveRecord 헬퍼 로드 밸런싱 단순하지 않은 SQL 쿼리를 생성하는 변경. 복잡한 쿼리가 도입되는지, 그리고 데이터베이스 리뷰가 필요한지는 일반적으로 머지 리퀘스트 작성자가 판단합니다. count , distinct_count , estimate_batch_distinct_count , sum 을 사용하는 Service Data 메트릭 변경. 이러한 메트릭은 큰 테이블에 대해 복잡한 쿼리를 수행할 수 있습니다. 구현 상세는 Analytics Instrumentation Guide 를 참고합니다. ActiveRecord 객체에 update , upsert , delete , update_all , upsert_all , delete_all , destroy_all 메서드를 사용하는 변경. 데이터베이스 리뷰어는 변경 사항에서 지나치게 복잡한 쿼리를 찾아내 더 꼼꼼히 검토해야 합니다. 작성자가 검토할 쿼리를 따로 지목하지 않았고 지나치게 복잡한 쿼리도 없다면, 마이그레이션만 검토하는 것으로 충분합니다. 필수 항목 # ~database 리뷰를 요청할 때는 다음 산출물을 제공해야 합니다. 머지 리퀘스트 설명에 이 항목이 없으면 리뷰는 작성자에게 다시 배정됩니다. 마이그레이션 # 새 마이그레이션이 도입되면 데이터베이스 리뷰어는 모든 마이그레이션에 대해 마이그레이션 실행( db:migrate )과 롤백( db:rollback ) 결과를 모두 검토해야 합니다. GitLab 에는 이 결과를 CI job 로그에 남기는 자동화 도구가 있습니다( db:check-migrations 파이프라인 job 이 제공합니다). 작성자가 이 결과를 머지 리퀘스트 설명에 넣을 필요는 없지만, 넣어 두면 리뷰어에게 도움이 됩니다. 이 봇은 마이그레이션이 올바르게 되돌려지는지도 확인합니다. 쿼리 # 새 쿼리를 도입했거나 기존 쿼리를 변경했다면 다음을 제공해야 합니다. 머지 리퀘스트에 포함된 각 원시 SQL 쿼리에 대한 쿼리 플랜 . 각 원시 SQL 조각 뒤에 쿼리 플랜 링크를 함께 넣습니다. 변경했거나 추가한 모든 쿼리의 원시 SQL (ActiveRecord 쿼리에서 변환한 것). 기존 쿼리를 변경하는 경우에는 이전 버전과 새 버전 쿼리의 원시 SQL을 각각의 쿼리 플랜과 함께 제공해야 합니다. 이 정보를 제공하는 방법은 쿼리 추가 또는 수정 시 준비 사항 을 참고합니다. 역할 및 프로세스 # 머지 리퀘스트 작성자 의 역할은 다음과 같습니다. 데이터베이스 리뷰가 필요한지 판단합니다.