데이터베이스 개발 지침

데이터베이스 리뷰

  • 작업 중인 기능의 설계 단계에서 데이터베이스 관련 변경 사항을 추가하는 경우, 쿼리를 추가하거나 수정하는 경우, 검토 단계에서 늦은 시간에 놀라운 사실을 피하기 위해 빨리 explain 플랜을 살펴봐야 합니다.
  • 언제든지 쿼리의 최적화나 explain 플랜 이해에 도움이 필요한 경우 #database에서 지원을 요청하세요.
  • 리뷰를 위해 데이터베이스 MR을 생성하는 경우, 데이터베이스 리뷰 지침을 확인하세요.

    이 문서는 데이터베이스 관련 변경, 마이그레이션 및 복잡한 SQL 쿼리에 대한 소개를 제공합니다.

  • 데이터베이스 리뷰어이거나 리뷰어가 되고 싶은 경우, 데이터베이스 변경 사항 리뷰 소개를 확인하세요.

도구

마이그레이션

테이블 파티셔닝

  • 개요
  • 날짜 범위
  • 해시(hash) (partitioning/hash.md)
  • 정수 범위(int range) (partitioning/int_range.md)
  • 디렉터리(list) (partitioning/list.md)

디버깅

  • 데이터베이스 접근(databse_debugging.md#manually-access-the-database)
  • 데이터베이스 재설정(database_debugging.md#delete-everything-and-start-over)
  • 데이터베이스 문제 해결 및 디버깅(database_debugging.md)
  • SQL 쿼리의 출처를 추적하는 방법:

모범 관행

  • 데이터베이스 인덱스 추가(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)

사례 연구

  • 데이터베이스 사례 연구: 라벨별 필터링(filtering_by_label.md)
  • 데이터베이스 사례 연구: 네임스페이스 저장 통계(namespaces_storage_statistics.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)
  • 복제 및 장애 조치(../../administration/postgresql/replication_and_failover.md)

ClickHouse

  • 소개
  • GitLab 내에서의 ClickHouse 사용(clickhouse/clickhouse_within_gitlab.md)
  • 쿼리 실행 최적화(clickhouse/optimization.md)
  • ClickHouse를 사용한 GitLab 기능 재구성 1: 활동 데이터(clickhouse/gitlab_activity_data.md)
  • ClickHouse를 사용한 GitLab 기능 재구성 2: Merge Request 분석(clickhouse/merge_request_analytics.md)
  • ClickHouse에서의 Tiered Storage(clickhouse/tiered_storage.md)

기타

  • 유지 보수 작업(maintenance_operations.md)
  • 다수의 데이터베이스 객체 업데이트(setting_multiple_values.md)
  • 트리 계층 구조의 일괄 반복 증명(poc_tree_iterator.md)