- 데이터베이스 리뷰
- 도구
- 마이그레이션
- 테이블 파티셔닝
- 디버깅
- Best practices
- 사례 연구
- GitLab 관리자를 위한 PostgreSQL 정보
- 확장을 위한 사용자 정보
- ClickHouse
- 기타
데이터베이스 개발 가이드라인
데이터베이스 리뷰
- 기능 설계 단계에서 작업 중인 기능에 데이터베이스 관련 변경 사항을 추가하는 경우 주의하세요. 쿼리를 추가하거나 수정하는 경우, 리뷰 단계에서 늦은 시점의 놀라움을 피하기 위해 초기에
explain
계획을 살펴보세요. - 언제든지 쿼리의 최적화나
explain
계획을 이해하는 데 도움이 필요하면#database
에서 도움을 요청하세요. - 리뷰용 데이터베이스 MR을 작성하는 경우 Database review guidelines을 확인하세요.
- 이 문서는 데이터베이스 관련 변경 사항, 마이그레이션, 복잡한 SQL 쿼리에 대한 소개를 제공합니다.
- 데이터베이스 리뷰어이거나 리뷰어가 되고 싶다면 데이터베이스 변경 사항 리뷰 소개를 확인하세요.
도구
- EXPLAIN 계획 이해
-
EXPLAIN
출력을 시각화하는 데 explain.depesz.com 또는 explain.dalibo.com 사용 - PostgreSQL SQL 구문 미화를 위한 pgFormatter
- db:check-migrations job
- 데이터베이스 마이그레이션 파이프라인(database_migration_pipeline.md)
마이그레이션
- 필수 중지 추가
- 마이그레이션 중 다운타임 방지(avoiding_downtime_in_migrations.md)
- 배치 배경 마이그레이션 가이드라인(batched_background_migrations.md)
- 일반 마이그레이션 작성(../migration_style_guide.md#create-a-regular-schema-migration), 새 모델 생성 포함
- 마이그레이션 삭제(deleting_migrations.md)
- 다양한 종류의 마이그레이션(../migration_style_guide.md#choose-an-appropriate-migration-type)
- 여러 데이터베이스용 마이그레이션(migrations_for_multiple_databases.md)
- 안전한 SQL 마이그레이션을 위한 마이그레이션 스타일 가이드(../migration_style_guide.md)
- 테이블 파티셔닝(partitioning/index.md)
- 사후 배포 마이그레이션 가이드라인(post_deployment_migrations.md) 및 마이그레이션 작성 방법(post_deployment_migrations.md#creating-migrations)
- 데이터베이스 마이그레이션 실행(database_debugging.md#migration-wrangling)
- SQL 쿼리 처리를 위한 SQL 가이드라인
- 테이블 스왑(swapping_tables.md)
- Rails 마이그레이션 테스트(../testing_guide/testing_migrations_guide.md) 가이드
- Rails 마이그레이션 테스트 작성 시기 및 방법(../testing_guide/testing_migrations_guide.md)
테이블 파티셔닝
- 개요
- 날짜 범위(partitioning/date_range.md)
- 해시(partitioning/hash.md)
- int 범위(partitioning/int_range.md)
- 디렉터리(partitioning/list.md)
디버깅
- 데이터베이스 접근(database_debugging.md#manually-access-the-database)
- 데이터베이스 재설정(database_debugging.md#delete-everything-and-start-over)
- 데이터베이스 문제 해결 및 디버깅(database_debugging.md)
- SQL 쿼리의 원본 추적:
- Verbose Query Logs를 사용한 Rails 콘솔
- Marginalia를 사용한 쿼리 주석
Best practices
- 데이터베이스 인덱스 추가(adding_database_indexes.md)
- 기존 열에 외래 키 제약 추가(add_foreign_key_to_existing_column.md)
- 업그레이드 전에 백그라운드 마이그레이션 확인하기(../../update/background_migrations.md)
- 클라이언트 측 연결 풀(client_side_connection_pool.md)
- 제약 조건 네이밍 규칙(constraint_naming_convention.md)
- Enum 생성(creating_enums.md)
- 데이터 레이아웃 및 액세스 패턴(layout_and_access_patterns.md)
- 효율적인
IN
연산자 쿼리(efficient_in_operator_queries.md) - 외래 키 및 연관성(foreign_keys.md)
- 해시 인덱스(hash_indexes.md)
- 배치로 테이블에 삽입(insert_into_tables_in_batches.md)
- 테이블을 배치로 반복(iterating_tables_in_batches.md)
- 로드 밸런싱(load_balancing.md)
-
NOT NULL
제약 조건(not_null_constraints.md) - 테이블 열 정렬(ordering_table_columns.md)
- 페이지네이션 가이드라인(pagination_guidelines.md)
- 페이지네이션 성능 가이드라인(pagination_performance_guidelines.md)
- 다형성 연관 관계(polymorphic_associations.md)
- 쿼리 카운트 제한(query_count_limits.md)
- 쿼리 성능 가이드라인(query_performance.md)
- 데이터 직렬화(serializing_data.md)
- 단일 테이블 상속(single_table_inheritance.md)
- 이진으로 SHA1 해시 저장하기(sha1_as_binary.md)
- 문자열 및 텍스트 데이터 유형(strings_and_the_text_data_type.md)
- 여러 값 업데이트(setting_multiple_values.md)
- 데이터베이스 기능 확인(verifying_database_capabilities.md)
사례 연구
GitLab 관리자를 위한 PostgreSQL 정보
- 외부 PostgreSQL 서비스를 사용하여 GitLab 구성하기(../../administration/postgresql/external.md)
- 확장을 위한 PostgreSQL 구성(../../administration/postgresql/index.md)
- 데이터베이스 로드 밸런싱(../../administration/postgresql/database_load_balancing.md)
- GitLab 데이터베이스를 다른 PostgreSQL 인스턴스로 이동하기(../../administration/postgresql/moving.md)
- Omnibus GitLab으로 복제 및 장애 조치(../../administration/postgresql/replication_and_failover.md)
- Omnibus GitLab을 사용한 독립형 PostgreSQL(../../administration/postgresql/standalone.md)
- PostgreSQL 문제 해결(../../administration/troubleshooting/postgresql.md)
- 번들된 PgBouncer 서비스 사용법(../../administration/postgresql/pgbouncer.md)
확장을 위한 사용자 정보
GitLab 관리자를 위한 확장을 위한 PostgreSQL 구성에 관한 정보는 다음과 같습니다. 주요 방법을 포함하여 다음을 확인하세요:
- 독립형 PostgreSQL(../../administration/postgresql/standalone.md)
- 외부 PostgreSQL 인스턴스(../../administration/postgresql/external.md)
- Replication 및 장애 조치(../../administration/postgresql/replication_and_failover.md)
ClickHouse
- 소개
- GitLab 내 ClickHouse
- 쿼리 실행 최적화
- ClickHouse 1을 사용하여 GitLab 기능 재구축: 활동 데이터
- ClickHouse 2를 사용하여 GitLab 기능 재구축: Merge Request 분석
- ClickHouse의 Tiered Storage