본문 바로가기

공부하자/IT

[DB] DBMS시스템의 구성

728x90
반응형


데이터베이스 시스템의 구성



3단계 데이터 베이스 구조

 

데이터베이스 시스템이 기초로 하고 있는 가장 기본적이 요소는 데이터베이스인데, 이 데이터베이스의 논리적 정의, 데이터 구조와 제약조건에 대한 명세(sepecification)를 기술한 것을 스키마(schema)라 한다.

 

스키마에는 데이터 구조를 표현하는 데이터 객체(data object), 즉 개체(entity), 개체의 특성을 표현하는 속성(attribute), 이들 간에 존재하는 관계(relationship)에 대한 정의와 이들이 유지해야 될 제약 조건(constraints)이 포함 된다.

 

그런데 데이터의 공용을 전제로 하는 데이터베이스 환경에서 개개 사용자가 사용하는 데이터는 보통 그 기관 전체 데이터베이스의 일부분이고, 이것은 곧 실제 저장 장치에 저장되어 있는 물리적 데이터베이스의 일부분이 되는 것이다.

어떤 입장에서 데이터베이스를 보느냐에 따라 데이터베이스 스키마는 모두 상이할 수 밖에 없다.

그렇기 때문에 데이터베이스 관리 측면에서는 데이터를 이용하는 각 개인의 뷰(view), 이런 각 개인의 모든 뷰가 종합된 기간 전체의 뷰, 그리고 시스템 즉 물리적 저장 장치의 입장에서 보는 저장 장치의 뷰 등 세 단계로 구별하여 데이터베이스를 기술하고 이들 간의 관계를 정의하고 있다.

이 세 단계를 보통 외부 단계(external level), 개념 단계(conceptual level), 내부 단계(internal level)라 한다.

 

하나의 데이터베이스를 세 단계로 나누어 기술하는 것을 3단계 데이터베이스 구조(3-level database architecture)라 하고 각 단계에서의 스키마를 외부 스키마, 개념 스키마, 내부 스키마라 한다.

 


외부 스키마

 외부 단계는 개개 사용자 단계로서 개개 사용자가 생각하는 개인적 데이터베이스 구조에 관한 것이다.

이 외부 단계는 개개 사용자를 위한 여러 형태의 외부 스키마가 있게 된다.

각 외부 스키마(external schema)는 데이터베이스의 개개 사용자나 응용 프로그래머가 접근하는 데이터베이스를 정의한 것이다.

이것은 공용의 의미보다는 어느 한 개인이나 특정 응용에 한정된 논리적 데이터 구조이기 때문에

여기에는 해당 응용 프로그램이나 사용자에 관련된 개체와 관계만이 포함된다.

따라서 시스템의 입장에서 보면 이러한 구조는 데이터베이스의 한 외적인 면을 표현한 것이 되기 때문에 외부 스키마라 한다.

또한 이것은 보통 전체 데이터베이스의 한 논리적 부분이 되는 것이기 때문에 서브 스키마(sub schema)라고도 한다.


개념 스키마 (= 그냥 스키마)

개념 단계에는 하나의 개념 스키마(conceptual schema)가 있는데, 이것은 범 기관적 입장에서 데이터베이스를 정의한 것이다.

여기서 개념적(conceptual)이란 의미는 추상적인 것이 아니라, 전체적이고 종합적이란 뜻이다.

따라서 이것은 모든 응용 시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스를 기술한 것이다.

그렇기 때문에 하나의 데이터베이스 시스템에는 자연히 하나만 존재하게 되고, 각 사용자나 응용 프로그램은 바로 이 개념 스키마의 일부를 사용하는 것이 된다.

이 개념 스키마로부터 모든 외부 스키마가 생성되고 지원되는 것이다.

개념 스키마는 그 기관이 필요로 하는 정보를 생성할 수 있는 모든 데이터 객체들, 즉 개체, 관계, 제약조건을 포함할 뿐만 아니라 추가로 이들을 효율적으로 관리하는데 필수적인 정보, 즉 데이터베이스 접근 관한, 보안정책, 무결성 규칙에 관한 명세도 포함된다.

경우에 따라서는 이 개념 스키마를 단순히 스키마(schema)라고도 한다.

 

내부 스키마

내부 단계에는 하나의 내부 스키마가 있다.

내부 스키마(internal schema)는 저장 장치(storage)의 입장에서 전체 데이터베이스가 저장되는 방법을 명세한 것이다.

, 개념 스키마에 대한 저장 구조를 정의한 것이다.

여기에는 실제로 저장될 내부 레코드의 형식, 인덱스의 유무,

저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등에 관한 명세를 포함한다.

이 내부 스키마는 실제로 물리적 단계(physical level)보다 한 단계 위에 있다.

이 스키마는 아직 물리적 레코드, 즉 블록이나 페이지 또는 트랙이나 실린더를 이용하여

특정 물리적 저장 장치에 기술하는 것은 아니기 때문이다.

따라서 이것은 이 내부 단계 밑에 구현에 관한 또 다른 단계, 즉 물리적 단계가 있어야 된다는 것을 암시해준다.

 


3단계 학생 데이터베이스의 예





위의 그림은 학생(STUDENT) 개체 하나로만 구성된 데이터베이스의 개념 스키마, 내부 스키마, 그리고 '학적과' '학생과' 두 사용자를 위한 두 개의 외부 스키마를 보여준다.

 개념 단계의 개념스키마에서는 STUDENT라는 개체를 정의하고 있다. STUDENT Snumber, Name, Year, Grade, Dept, Address 6개의 속성으로 구성되어 있다는 것과 각 속성에 대한 데이터 타입들을 정의하고 있다.

 

내부 스키마에서는 STUDENT 개체는 STORED - STUDENT라는 내부 레코드 타입으로 명세 되어 있다. 레코드 타입은 한 레코드가 71바이트로 되어 있으며, 7개의 내부 필드로 구성되어 있다.

첫 번째 prefix 필드는 레코드 저장에 따른 제어 정보, 즉 포인터나 플래그 등을 위한 것이고, 나머지 6개의 내부 필드는 개념 스키마의 STUDENT 개체를 구성하고 있는 6개의 속성(attribute)과 대응 관계를 가지고 있다. 그리고 이 레코드 타입의 레코드들은 Sno 필드에 대해서 인덱스 STINDEX가 정의되어 있는데, 이것은 STORED - STUDENT 레코드에 대한 접근 방법을 명세한 것이 된다.

 

외부 단계에서의 외부 스키마를 보면, 두 사용자(학적과, 학생과)가 각각 자신의 데이터 구조를 정의하고 있다. 학적과의 사용자는 학생을 Sn, Name, Grade, Dept 4개의 속성으로 정의하고 있다. 4필드는 각각 개념 스키마에서의 Snumber, Name, Grade, Dept의 속성에 대응 된다. 학적과에서 응용 프로그램을 작성할 때는 이 외부 스키마의 범위에서만 작성할 수 있다. 여기서 주의할 것은 '학적과' ST Sn은 개념 스키마의 STUDENT Snumber와 그 이름이 다르고, 또 개념 스키마에 있는 Year, Address 속성이 개념 스키마에 있는지 알 수 없다. 알아서도 안된다. 학생과의 외부스키마에서는 학생을 Sno, Sname, Year, Addr로 정의하고 있다.

-------------------------------------

한 응용 프로그램이 DBMS를 통해 데이터베이스를 접근하려 할 때, DBMS는 이 3단계 스키마에 있는 모든 개체와 속성간의 대응 관계를 알아야 한다예를 들어, 외부 스키마의 Sn은 개념 스키마의 Snumber에 대응되고, 개념 스키마의 Snumber는 내부 스키마의 Sno에 대응 된다. 이러한 대응 관계에 대한 정의를 사상(mapping)이라고 하는데, DBMS는 바로 이 사상 정보를 정확하게 유지하고 관리하고 있는 것이다.



각 단계의 사상


 

 

외부/개념 사상(externam/conceptual mapping)

어느 특정 외부 스키마와 개념 스키마간의 대응 관계를 정의하는데, 이를 응용 인터페이스(application interface)라 한다. 만약 개념 스키마에 개체의 삽입이나 속성의 첨가와 같은 변화가 생긴다고 하더라도, 그 변화에 따라 이 사상(응용 인터페이스)만 올바르게 변경해 준다면, 외부 스키마에는 아무런 영향을 미치지 않는다. 응용 프로그램을 변경시키지 않고도 개념 스키마를 변경 시킬 수 있으므로, 결과적으로 논리적 데이터 독립성을 제공해 준다.

 

개념/내부 사상(conceptual/internal mapping)

개념 스키마와 내부 스키마간의 대응 관계를 정의하는 것인데, 이것을 저장 인터페이스(storage interface)라고 한다. 이것은 개체의 각 속성이 내부 필드와 어떻게 대응되는가를 정의하고 있다. 만약, 어떤 불가피한 경우에 내부 스키마를 변경해야 한다고 하면, 이 변화에 따라 개념/내부 사상(저장 인터페이스)만 정확히 변경시켜 주면 개념 스키마에는 아무런 영향을 미치지 않는다.

내부 스키마를 변경시키더라도, 이 사상을 이용하면 개념 스키마에 아무런 영향을 주지 않게 되고 응용 프로그램에도 아무런 영향을 주지 않게 되므로 물리적 데이터 독립성을 제공해 준다.

 

데이터 사전(data dictionary)

이것은 시스템 카탈로그(system catalog)라고도 하는데, 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 관한 정보를 유지, 관리하고 있는 시스템이다. 여러 스키마와 이들 속에 포함된 사상들에 관한 정보도 컴파일 되어 저장, 관리되고 있다. 이러한 정보는 데이터 관리뿐만 아니라 데이터베이스를 이용하는 데도 사용된다. 데이터 사전은 그 자체가 하나의 데이터베이스로 간주되기도 하지만, 사용자 데이터베이스와는 구별되는 시스템 데이터베이스(system database)이다. 데이터베이스에 수록된 데이터를 실제로 접근하는데 필요한 위치 정보를 관리하는 시스템을 데이터 디렉토리(data directory)라 한다. 데이터 사전과 데이터 디렉토리는 모두가 사용자 응용을 위한 데이터가 아니고 주로 시스템을 위한 시스템 데이터베이스라는 점에서는 같지만데이터 사전은 사용자와 시스템이 다같이 공동으로 접근할 수 있는 반면에, 데이터 디렉토리는 시스템만 접근할 수 있다.

 

시스템 데이터베이스에 저장되어 있는 데이터는 시스템에 저장되어 있는 "데이터에 관한 데이터(data about data)"라는 의미로 메타 데이터(meta data)라고 부르기도 한다.


 

 

 

반응형