3 분 소요

Reference

아는 만큼 보이는 데이터베이스 데이터 독립성의 실무적용

FastCampus: 개발자 취업 합격 패스 with 코딩테스트, 기술면접


📌 데이터 독립성의 정의

  • 하위 단계의 데이터의 논리적, 물리적 구조가 변경되어도 상위 단계에 영향을 미치지 않도록 구성하는 데이터베이스 특징
  • 데이터 독립성은 어떤 단위에 독립적인 의미가 부여되고 그것을 효과적으로 구현하게 되면 자신이 가지는 고유한 특징을 명확하게 할 수 있을뿐만 아니라 다른 기능의 변경으로부터도 자신의 고유한 기능과 그 기능이 제공하는 장점을 유지할 수 있다는 특징에서 시작되었다.
  • 왜 필요한가? 데이터 독립성이 지켜지지 않으면 유지보수 비용 증가, 데이터의 복잡성중복성이 증가, 요구사항 대응 저하가 발생


📌 데이터 독립성 개념도(3 Level 스키마 구조)

  • 총 세 단계인 외부단계, 개념단계, 내부단계는 서로 간섭하지 않는다.
    • 외부단계: 사용자와 가까운 단계, 사용자가 처리하고자 하는 데이터 유형이나 관점 방법에 따라 다른 스키마 구조를 가지고 있음
    • 개념단계: 사용자가 처리하는 데이터 유형의 공통적인 사항을 처리하는 통합 뷰를 스키마 구조로 디자인한 형태, 사용자가 처리하는 통합 뷰를 설계하는 구조로 이해
    • 내부단계: 데이터가 물리적으로 저장된 방법의 스키마 구조
  • 제일 하위에 물리적으로 데이터가 DB에 저장되어 있음
  • 스키마(Schema): 데이터베이스의 구조(데이터 객체, 관계)와 제약조건의 명세
  • 외부 스키마(External Schema): 뷰 단계가 여러 사용자 관점으로 구성, 각 사용자가 보는 개인적인 DB 스키마
    • DB의 개별 사용자나 응용프로그래머가 접근하는 DB를 정의
    • 사용자 관점으로 접근하는 특성에 따른 스키마 구성
  • 개념 스키마(Conceptual Schema): 개념 단계 하나마다 개념적 스키마로 구성, 모든 사용자 관점을 통합한 조직 전체의 DB를 기술한 것
    • DB에 저장되는 데이터와 그들의 관계를 표현한 스키마
    • 통합관점
  • 내부 스키마(Internal Schema): 내부 단계와 내부 스키마로 구성, DB가 물리적으로 저장된 형식
    • 물리적 장치에 데이터가 실제로 저장되는 방법을 표현한 스키마
    • 익히 아는 MySQL, Oracle, MongoDB등을 뜻함(물리적 저장구조)


📌 데이터 독립성을 준수하지 않을 때 문제점

  • 데이터 독립성의 반대말은 데이터 종속성이라고 정의할 수 있다. 여기서 종속의 주체는 보통 응용프로그램(Application)을 지칭, 응용프로그램은 사용자 요구사항을 처리하는 사용자 접점의 인터페이스 오브젝트.
  • 과거 파일방식으로 데이터를 구성할 때 데이터가 있는 파일과 데이터 접근을 위해 인덱스를 별도로 구현해 접근했음. 이때 사용자의 접근 방법(트랜잭션 유형)에 따라 파일 순서, 인덱스 순서 등이 별도로 구현할 필요가 있었음. 즉, 사용자 접근 유형에 따라 데이터를 구성하는 방법에 영향이 미침


📌 데이터 독립성의 목적

  • 지속적으로 증가하는 유지보수 비용을 절감하고 데이터 복잡도를 낮추며 중복된 데이터를 줄인다. 또 끊임없이 요구되는 사용자 요구사항에 대응하기 위해 화면과 데이터베이스간 독립성을 유지할 필요가 있음.
  • 데이터 독립성을 확보하면 일어나는 일
    • 각 뷰의 독립성이 유지되고 계층별 뷰에 영향을 주지 않고 변경할 수 있다.
    • 단계별 스키마에 따라 데이터 정의어(DDL)와 데이터 조작어(DML)가 달라진다.


📌 Mapping(사상)

  • 상호 독립적인 개념을 연결시켜주는 가교(bridge)라고 정의할 수 있음
    • 독립적인 두 개념을 연결시켜 준다고 생각하면 됨
  • 데이터 독립성에는 크게 두 가지 Mapping(사상)이 도출된다.
    • 외부적/개념적 Mapping(논리적 Mapping): 외부적 뷰와 개념적 뷰의 상호 관련성을 정의
      • ex: 사용자가 접근하는 형식에 따라 다른 타입의 필드를 가질 수 있음. 개념적 뷰의 필드 타입은 변화 없음
    • 개념적/내부적 Mapping(물리적 Mapping): 개념적 뷰와 저장된 데이터베이스의 상호관련성 정의
      • ex: 저장된 데이터베이스 구조가 바뀐다면 개념적/내부적 Mapping이 바뀌어야 함. 그래야 개념적 스키마가 그대로 남아있게 됨
  • 데이터 독립성을 보장하기 위해서는 Mapping하는 DDL(데이터 정의어)을 DBA가 필요할 때마다 변경해줘야 한다. 즉, 각 단계(외부, 개념, 내부)의 독립성을 보장하기 위해서는 변경사항이 발생하면 DBA가 적절하게 작업해줘야 하고, 이를 통해 독립성을 보장받을 수 있다.


📌 물리적 데이터 독립성

  • 응용 프로그램과 논리적 구조에 영향을 주지 않고(상위에 영향을 주지 않고), 데이터베이스의 물리적 구조를 변경시킬 수 있는 것
    • 내부스키마가 변경돼도 내외부 및 개념 스키마는 영향을 받지 않도록 지원하는 것
    • 저장장치의 구조변경은 응용프로그램과 개념 스키마에 영향이 없음
  • 하나의 논리적 구조로부터 여러 가지 상이한 물리적 구조를 지원할 수 있는 Mapping 능력이 있어야 한다.
  • 물리적 데이터 독립성의 목적
    • 물리적 구조변경 없이 개념 구조 변경 가능
    • 개념구조의 영향력없이 물리적인 구조 변경 가능
    • 물리적 구조 Mapping


📌 논리적 데이터 독립성

  • 데이터베이스의 논리적 구조를 변경시키더라도 기존 응용 프로그램에 영향을 주지 않는 것을 뜻한다. 즉, 응용 프로그램과 자료구조를 독립시키는 것
    • 개념 스키마가 변경돼도 외부 스키마에는 영향을 미치지 않도록 지원
    • 논리적 구조가 변경돼도 응용프로그램에 영향 없음
  • 데이터베이스 관리시스템(DBMS)이 하나의 논리적데이터 구조를 가지고 많은 응용 프로그램이 제 각각 요구하는 다양한 형태의 논리적 구조로 Mapping될 수 있어야 한다.
  • 논리적 데이터 독립성의 목적
    • 사용자 특성에 맞는 변경 가능
    • 통합구조 변경 가능
    • 논리적 구조 Mapping


📌 데이터 독립성이 적용된 예시

  • 하위 단계의 통합된 구조인 인사 기본 스키마를 인사팀, 회계팀, 사용자로 구분
  • 만약 사용자가 접근하는 인사 기본 필드가 증가하면, 뷰 생성 스크립트에서 DBA가 재생성작업을 수행하면 된다. 또 인사 기본 스키마에 새로운 필드가 추개돼도 각 사용자 뷰에는 추가적인 영향 없이 인사 기본 스키마 구조를 변경할 수 있다(논리적 독립성).


📌 Summary

  • 데이터 독립성이란?
    • 키워드: 논리적 독립성, 물리적 독립성
    • 정의: 하위 단계의 데이터의 논리적, 물리적 구조가 변경되어도 상위 단계에 영향을 미치지 않도록 구성하는 데이터베이스의 특징. 논리적 독립성과 물리적 독립성이 존재한다.
  • 논리적 독립성과 물리적 독립성이 무엇인가?
    • 키워드: 영향력, 논리적 구조, 응용 프로그램, 물리적 구조
    • 논리적 독립성은 데이터베이스의 논리적 구조를 변경시키더라도 기존 응용 프로그램에 영향을 주지 않는 것을 뜻한다. 물리적 독립성은 응용 프로그램과 논리적 구조에 영향을 주지 않고(상위에 영향을 주지 않고), 데이터베이스의 물리적 구조를 변경시킬 수 있는 것을 뜻한다.
  • 데이터 독립성이 필요한 이유는?
    • 키워드: 유지보수, 복잡성, 중복성, 요구사항 대응
    • 데이터 독립성이 지켜지지 않으면 유지보수 비용 증가, 데이터의 복잡성과 중복성이 증가, 요구사항 대응 저하가 발생한다.

댓글남기기