위클리 페이퍼 17주차 정리

코드잇
이 글은 읽는데 약 4분이 걸립니다.

Q1. 관계형 데이터베이스에서 무결성이 무엇인지 설명해 주세요.

개념

관계형 데이터베이스에서 무결성은 데이터베이스 내의 데이터가 항상 정확하고, 일관되며, 유효한 상태를 유지하도록 보장하는 성질을 말한다. 즉, 데이터베이스에 결점이 없는 상태, 신뢰할 수 있는 데이터만 저장되도록 하는 규칙이자 제약 조건이다.

데이터 무결성이 중요한 이유는 사용자가 데이터를 신뢰하고 이를 바탕으로 올바른 결정을 내릴 수 있게 하기 때문이다.

데이터베이스는 여러 가지 제약 조건을 통해 무결성을 강제한다.

  • 개체 무결성 (Entity Integrity):
    • 테이블의 모든 행(row)이 고유하게 식별되어야 한다는 규칙.
    • 이를 위해 기본 키(Primary Key, PK)를 사용하며, 기본 키로 지정된 열은 NULL 값을 가질 수 없고 항상 고유한 값을 가져야 함.
  • 참조 무결성 (Referential Integrity):
    • 두 테이블 간의 관계가 항상 일관성을 유지하도록 보장하는 규칙.
    • 외래 키(Foreign Key, FK)를 사용하여 구현. 외래 키는 한 테이블의 열이 다른 테이블의 기본 키를 참조할 때, 이 외래 키의 값은 참조하는 테이블의 기본 키 값이거나 NULL이어야 함.
    • 예를 들어, ‘주문’ 테이블의 ‘고객ID’는 반드시 ‘고객’ 테이블에 존재하는 ‘고객ID’여야 하며, 존재하지 않는 고객의 주문을 생성할 수 없음.
  • 도메인 무결성 (Domain Integrity):
    • 테이블의 특정 열(column)에 입력될 수 있는 값의 범위를 제한하는 규칙.
    • 데이터 타입(예: 숫자, 문자열), 허용되는 값의 범위(예: ‘성별’ 열에는 ‘남’ 또는 ‘여’만 가능), 또는 형식을 지정하여 데이터가 유효한 범위 내에 있도록 보장.
  • 사용자 정의 무결성 (User-Defined Integrity):
    • 위의 세 가지 유형 외에, 특정 비즈니스 논리나 규칙을 데이터베이스에 적용.
    • 예를 들어, ‘월급’ 열의 값은 항상 0보다 커야 한다는 규칙 등을 설정할 수 있음.

Q2. 관계형 데이터베이스에서 마이그레이션이란 무엇인지 설명해 주세요.

개념

마이그레이션은 데이터를 한 시스템에서 다른 시스템으로 이전하거나 이동하는 전체 과정을 의미한다. 데이터베이스의 맥락에서는 기존 데이터베이스 시스템을 새로운 시스템으로 옮기거나 업그레이드하는 작업을 말한다.

마이그레이션의 주요 목적
  • 시스템 업그레이드: 오래된(legacy) 데이터베이스 시스템을 더 새롭고 성능이 좋은 시스템으로 교체할 때 (예: 구버전 MySQL에서 최신 버전 PostgreSQL로 이전)
  • 클라우드 이전: 기업 내부 서버(On-premise)에서 운영하던 데이터베이스를 AWS, Google Cloud, Azure 등 클라우드 환경으로 이전할 때
  • 비용 절감: 라이선스 비용이 비싼 상용 데이터베이스에서 오픈소스 데이터베이스로 전환하여 운영 비용을 줄이고자 할 때
  • 데이터 통합: 여러 곳에 흩어져 있던 데이터베이스를 하나의 중앙 데이터베이스로 통합할 때
마이그레이션 과정

데이터 마이그레이션은 단순히 데이터를 복사-붙여넣기 하는 작업이 아니며, 데이터 손실이나 서비스 중단을 최소화하기 위해 다음과 같은 체계적인 계획과 절차가 필요하다.

  1. 계획 및 평가: 현재 시스템을 분석하고, 새로운 시스템의 요구사항을 정의하며, 마이그레이션 전략(일시 중단 후 전체 이전 vs. 단계적 이전)을 수립.
  2. 데이터 추출 및 변환: 기존 시스템에서 데이터를 추출하고, 새로운 시스템의 구조(스키마)에 맞게 데이터를 변환하거나 정제.
  3. 테스트: 실제 데이터의 일부를 이용해 마이그레이션 테스트를 수행하여 데이터가 정확하게 옮겨지는지, 성능에 문제는 없는지 검증.
  4. 실행: 계획된 절차에 따라 실제 데이터 마이그레이션을 실행.
  5. 검증: 마이그레이션 완료 후, 모든 데이터가 누락되거나 변형되지 않았는지 최종적으로 확인하고 검증.