데이터베이스 개발 가이드라인

데이터베이스 리뷰

  • 기능 설계 단계에서 작업 중인 기능에 데이터베이스 관련 변경 사항을 추가하는 경우 주의하세요. 쿼리를 추가하거나 수정하는 경우, 리뷰 단계에서 늦은 시점의 놀라움을 피하기 위해 초기에 explain 계획을 살펴보세요.
  • 언제든지 쿼리의 최적화나 explain 계획을 이해하는 데 도움이 필요하면 #database에서 도움을 요청하세요.
  • 리뷰용 데이터베이스 MR을 작성하는 경우 Database review guidelines을 확인하세요.
    • 이 문서는 데이터베이스 관련 변경 사항, 마이그레이션, 복잡한 SQL 쿼리에 대한 소개를 제공합니다.
  • 데이터베이스 리뷰어이거나 리뷰어가 되고 싶다면 데이터베이스 변경 사항 리뷰 소개를 확인하세요.

도구

마이그레이션

  • 필수 중지 추가
  • 마이그레이션 중 다운타임 방지(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 쿼리의 원본 추적:

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

기타