데이터베이스 구조
데이터베이스를 구성할 때는 ANSI/SPARC에서 제안한 3단계 구조로 구성하여 쉽게 이해하고 관리하도록 한다. 이는 관점에 따라 데이터베이스를 나눈다.
구조를 보기 전에 기본 개념을 알아야 한다. 스키마(schema)는 데이터베이스에 저장되는 데이터 구조와 제약 조건을 정의한 것으로 일종의 설계도로 생각하면 편하다. 테이블, 칼럼, 데이터 타입, 제약 조건, 관계, 인덱스 등을 설정하는 것이다. 데이터베이스를 생성하거나 변경하면 스키마를 수정하게 된다. 인스턴스(instance)는 스키마에 따라 실제 저장된 데이터 값이다.
다시 돌아와 데이터베이스의 구조를 확인하면 크게 외부 단계(external level), 개념 단계(conceptual level), 내부 단계(internal level)로 나뉜다. 외부 단계는 개별 사용자 관점이고, 개념 단계는 조직 전체 관점, 내부 단계는 물리적 저장 장치 관점이다. 각 단계별 다른 추상화(abstraction)를 제공함으로써 관리, 보안 측면에서 유리해진다.
• 외부 단계
데이터베이스를 개별 사용자 관점에서 표현한 것이다. 전체 데이터베이스는 존재하지만, 개별 사용자 입장에서 전체 데이터가 필요한 것은 아니기에 필요한 데이터에 대한 내용만 다룬다. 이를 통해 사용자에게 불필요하고, 민감할 수 있는 정보는 숨겨 보안 측면에서 유리하게 데이터를 관리할 수 있게 된다. 예를 들어 인사팀에서 고객 데이터베이스를 굳이 볼 필요가 없다면 인사팀에서는 이를 다룰 수 없게 해놓을 수 있다.
외부 스키마(external schema)는 외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것으로 각 사용자가 사용하는 데이터베이스의 논리적 구조가 다르다. 하나의 데이터베이스에 여러 외부 스키마가 있을 수 있기 때문에 서브 스키마(sub schema)라고도 한다.
• 개념 단계
데이터베이스를 조직 전체 관점에서 표현한 것이다. 모든 사용자와 응용 프로그램의 요구를 종합한 데이터 모델을 표현한다. 논리 단계(logical level)이라 하기도 한다.
당연히 하나의 데이터베이스에 하나의 개념 스키마(conceptual schema)만 존재한다. 전체 데이터베이스에 어떤 데이터가 저장, 관리되는지와 각 데이터들의 관계, 제약조건 등에 대해 정의된다. 또한 데이터 보안 정책이나 접근 권한에 대한 정의도 이 단계에서 이뤄진다.
• 내부 단계
데이터베이스를 저장 장치 관점에서 표현한 것이다. 즉 실제 데이터가 물리적 저장 장치에 어떻게 저장되는지를 설명한다. 효율적인 데이터 검색 및 저장을 통한 성능 최적화를 위해 사용되며 사용자나 응용 프로그램에서는 직접적으로 다루지 않는 부분이다.
내부 스키마(internal schema)는 전체 데이터베이스가 저장 장치에 실제로 저장되는 방법을 정의한 것으로 레코드 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조가 이 부분에서 정의된다.
위 그림과 같이 구성되어 있다고 보면 편하다.
데이터 독립성 (Data Independency)
각 데이터 단계를 연결하는 것을 사상 혹은 매핑(mapping)이라 한다. 위 그림에서도 나오지만, 외부 단계와 개념 단계를 연결하는 외부/개념 사상(external/conceptual mapping)과 개념 단계와 내부 단계를 연결하는 개념/내부 사상(conceptual/internal mapping)이 존재한다. 외부/개념 사상을 응용 인터페이스(application interface)라고 하기도 하고, 개념/내부 사상을 저장 인터페이스(storage interface)라고 하기도 한다.
그리고 이러한 스키마는 하위 스키마가 변경되어도 매핑만 적절히 수정해준다면 상위 스키마가 영향을 받지 않아야 하는데, 이러한 특성을 데이터 독립성(data independenty)이라 한다.
• 논리적 데이터 독립성 (Logical Data Independence)
개념 스키마가 변경되어도 외부 스키마가 영향을 받지 않는 것을 말한다. 즉 개념 단계에서 테이블 구조 변경, 속성 추가/삭제, 관계 수정이 발생하더라도, 외부 단계에서 정의된 사용자 뷰나 응용 프로그램이 영향을 받지 않아야 한다. 예를 들어, 기존 데이터베이스에 새로운 속성을 추가하거나, 테이블 간의 관계를 변경해도 기존 응용 프로그램이 수정 없이 정상 작동하도록 보장한다. 예를 들어 직원 테이블에 전화번호 속성을 추가해도 기존 이름, 직급 정보만 사용하면 응용 프로그램에는 영향을 주지 않아야 한다.
이를 통해 데이터 모델 수정 시 응용 프로그램 및 사용자 관점에서 안정성을 보장받을 수 있고, 덕분에 유지보수 비용이 감소한다는 장점이 있다. 또 굳이 사용자나 응용 프로그램에 변경 사항을 알리지 않아도 된다.
• 물리적 데이터 독립성 (Physical Data Independence)
내부 스키마가 변경되어도 개념 스키마가 영향을 받지 않는 것을 말한다. 즉 내부 단계에서 저장 방식, 저장 위치 등이 바뀌어도 개념 단계에서 정의된 것에 영향을 주지 않아야 한다. 이를 충족하면 내부 스키마가 개념 스키마에 영향을 주지 않고, 개념 스키마는 논리적 독립성으로 외부 스키마에 영향을 주지 않기 때문에 내부 스키마는 외부 스키마에 영향을 주지 않는다.
저장소 최적화 및 내부 구조 변경에도 애플리케이션 등을 그대로 사용할 수 있다는 장점이 있다. 덕분에 시스템 성능 개선, 하드웨어 변경이 자유로워진다.
데이터 사전 (Data Dictionary)
데이터베이스에서 앞선 구조 정보들, 즉 스키마와 매핑 정보를 포함해서 각 데이터가 어떤 데이터인지에 대한 데이터도 관리해야 한다. 즉 부가 정보에 대한 데이터베이스 역시 필요하다.
이러한 정보를 저장하는 곳을 데이터 사전 혹은 시스템 카탈로그(system catalog)라 한다. 데이터에 대한 데이터를 의미하기에 메타 데이터(meta data)라고 하기도 하고, 일반 사용자들이 사용하는 데이터베이스와 구분하기 위해 일반 사용자나 응용 프로그램이 사용하는 데이터베이스를 사용자 데이터베이스(user database)라고 하고, 데이터 사전을 시스템 데이터베이스(system database)라고 하기도 한다.
데이터 사전은 데이터베이스 관리 시스템이 스스로 생성하고 유지하는 것이지만, 일반 사용자도 접근은 가능하다. 단 수정, 삭제, 추가 등은 불가능하다.
데이터 사전에 있는 데이터에 실제 접근하는 데 필요한 위치 정보를 또 따로 저장하고 관리하는데, 이를 데이터 디렉토리(data directory)라 한다. 역시 시스템을 위한 데이터베이스이지만, 데이터사전은 사용자가 접근은 할 수 있었던 반면, 데이터 디렉토리는 사용자의 접근도 막혀있다.
'Computer Science and Engineering > Database' 카테고리의 다른 글
[DB] 관계 데이터 모델(relation data model) (0) | 2025.04.01 |
---|---|
[DB] 데이터 모델링(data modeling) 및 표기법(notation) (0) | 2025.03.26 |
[DB] 데이터 정의어(DDL),데이터 조작어(DML), 데이터 제어어(DCL) (0) | 2025.03.19 |
[DB] 데이터베이스 관리 시스템(DBMS, database management system) (0) | 2025.03.12 |
[DB] 데이터베이스(database) 및 데이터(data) (0) | 2025.03.10 |