데이터베이스 리뷰 가이드라인
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 을 위한 자동화 도구가 있으며 ( db:check-migrations 파이프라인 job으로 제공), 해당 도구가 CI job 로그에 이 출력을 제공합니다. 작성자가 머지 리퀘스트 설명에 이 출력을 제공할 필요는 없지만, 리뷰어에게 도움이 될 수 있습니다. 봇은 또한 마이그레이션이 올바르게 되돌릴 수 있는지도 확인합니다. 쿼리 # 새 쿼리가 도입되었거나 기존 쿼리가 업데이트된 경우, 다음을 제공해야 합니다 : 머지 리퀘스트에 포함된 각 원시 SQL 쿼리에 대한 쿼리 플랜 과 각 원시 SQL 스니펫 다음에 쿼리 플랜 링크. 변경되거나 추가된 모든 쿼리의 원시 SQL (ActiveRecord 쿼리에서 변환된 것). 기존 쿼리를 업데이트하는 경우, 이전 버전과 새 버전 쿼리의 원시 SQL을 해당 쿼리 플랜과 함께 제공해야 합니다. 이 정보를 제공하는 방법은 쿼리 추가 또는 수정 시 준비 사항 을 참조하세요.