본문 바로가기
데이터베이스

데이터베이스 관리시스템의 구조

by jinjinie 2024. 2. 27.

다수 사용자 요청 처리
DBMS는 여러 사용자가 동시에 데이터베이스에 접근할 수 있는 기능을 제공한다. 대규모 시스템의 경우 수백 또는 수천 명의 사용자에 의해 데이터 조작 요청이 발생하는데, 이때 별도의 관리 없이 동일한 데이터를 대상으로 다수의 요청을 처리할 경우 데이터 일관성의 문제가 발생할 수 있다. 따라서 다수 사용자용 DBMS에는 단일 논리적인 작업을 수행하는 일련의 명령문의 집합인 트랜잭션(transaction)과 동시성 제어(concurrency control)라는 기능이 내장되어 있다. 이러한 기능 덕분에 다수 사용자가 동일한 데이터를 동시에 변경하는 경우에도 데이터의 일관성을 보장할 수 있다.

데이터베이스 관리 시스템의 구조
DBMS의 내부는 사용자에 의해 접근이 이루어지는 개념적 단계로부터 구체적인 저장구조의 정의가 작성되는 물리적 단계까지 3단계로 구조화된다. 이러한 구조를 갖게 된 이유는 앞서 설명한 바와 같이 DBMS가 하나의 데이터베이스에 대해 서로 다른 관점을 가지고 있는 여러 사용자에게 데이터 검색 및 수정 기능을 제공하기 때문이다. 이러한 기능을 제공하기 위해 고려해야 할 두 가지 사항이 있다.

첫째, DBMS를 통해 데이터베이스를 이용하려는 사용자들은 대부분 비전문가이므로 복잡한 관점에서 데이터에 접근하는 것이 아니라 자신의 목적에 부합하는 관점에서만 데이터에 접근하기를 원한다는 것이다. 그러므로 DBMS는 데이터베이스 내부의 복잡한 구조를 감추어 추상화된 데이터만을 보여 줄 필요성이 있다.

둘째. 데이터 독립성 문제를 고려해야 한다. 실제 사용자들이 필요로 하는 데이터 관점은 수시로 바뀐다. 이때 특정 사용자의 필요에 따라 데이터베이스의 구조를 바꾸어야 한다면 상당한 비용이 필요할 것이다. 사용자 관점은 변하지 않았지만, 데이터 추적이나 검색 효율 향상을 위해 데이터베이스 내의 구조를 재구성하는 경우가 있는데, 이런 경우에도 구조 변경에 따라 사용자에게 영향이 미쳐서는 안 된다

따라서 DBMS는 데이터 추상화(data abstraction)와 데이터 독립성(data independency)을 확보하기 위한 3단계 구조(3-level architecture), 즉 개념적 단계(conceptual level), 논리적 단계(logical level), 물리적 단계(physical level)로 구성된다.

데이터 추상화
데이터베이스 시스템에서는 데이터가 효율적으로 관리되어야 한다. 이러한 효율성에 대한 요구로 많은 기술이 도입되면서, 데이터베이스 시스템의 데이터 표현 구조는 매우 복잡한 형태로 발전하게 되었다. 그러나 컴퓨터에 능숙하지 않은 대다수의 DBMS 사용자를 위해 DBMS는 내부의 복잡성을 감추도록 설계되었다. 이를 위해 DBMS는 물리적 단계, 논리적 단계, 개념적 단계의 데이터 추상화(cate albsracton)를 통해 사용자의 시스템 인터페이스를 단순화한다.

물리적 단계 : 물리적 단계(physical level)는 가장 낮은 추상화 단계로 물리적 스키마에 의해 기술된다. 이 단계는 데이터가 실제로 어떻게 저장되는지 원시 수준(raw level)의 데이터 구조를 구체적으로 기술한다. 저장된 레코드의 다양한 유형을 정의할 뿐만 아니라 어떤 인덱스(index)가 있는지, 저장된 필드가 어떻게 표현되고, 저장된 레코드의 물리적 순서는 어떤지 등에 대해 정의한다. 하지만 물리적인 레코드 용어(페이지 또는 블럭이라고 함)나 실린더 또는 트랙 크기와 같은 장치 특성의 고려 사항까지 기술하지는 않는다.

  논리적 단계 : 논리적 단계(logical level)는 데이터베이스의 전체 구조를 추상화하는 단계로 논리적 스키마(logical schema)를 통해 기술된다. 논리적 스키마에서는 물리적인 상세 사항 등은 언급되지 않으며, 데이터베이스에 무엇이 저장되어 있는지와 데이터 간에 어떤 관계가 있지만 기술한다.
따라서 논리적 단계는 여러 간단한 데이터의 구조로 전체 데이터베이스를 기술하게 된다. 또한 논리적 스키마에서의 정의는 보안성 검사, 무결성 검사와 같은 부가적인 특징을 포함하기도 한다.
  개념적 단계 : 개념적 단계(conceptual level)는 추상화의 최상위 단계로, 개념적 스키마에 의해 기술된다. 개념적 스키마를 뷰(view)라고도 한다.
뷰는 특정 사용자 그룹이 관심을 갖는 데이터베이스의 일부분만 기술하고, 데이터베이스의 다른 부분은 은폐한다. 사용자에게 제공되는 뷰는 사용자가 복잡한 시스템 지식 없이도 시스템을 사용할 수 있도록 데이터를 추상화한다.
프로그래밍 언어에서 사용하는 추상화 단계 간의 관계에 비유하면 데이터 추상화가 명확해진다. 고급 프로그래밍 언어의 경우 구조체(structure) 타입을 지원한다. 

인스턴스와 스키마
특정 시점에서의 데이터베이스에 저장된 정보 집합을 인스턴스(instance)라고 한다. 데이터베이스 인스턴스는 시간이 지남에 따라 달라지는 반면, 데이터가 저장되는 형식을 결정하는 전반적인 구조는 드물게 변경되는데, 이를 데이터베이스 스키마(schema)라고 한다.

데이터베이스 스키마와 인스턴스에 대한 개념은 프로그램 언어로 작성된 프로그램에 비유하면 쉽게 이해된다. 데이터베이스 스키마는 타입 정의에 따른 변수 선언(variable declaration)에 비유될 수 있고 각 변수는 어떠한 값(value)을 저장하는데, 특정 시점에서 변수에 저장된 값은 곧 데이터베이스 스키마의 인스턴스로 비유된다.

데이터베이스 시스템은 추상화 단계에 따라 구분되는 다수의 스키마를 포함한다. 애플리케이션 프로그램에 끼치는 영향력 관점에서는 스키마 중에서 프로그래머가 개발 시에 사용하는 논리적 스키마가 가장 중요하다. 물리적 스키마는 논리적 스키마에 의해 은닉되어 있기 때문에, 애플리케이션 프로그램에 영향 없이 변경이 가능하다. 애플리케이션 프로그램이 물리적 스키마에 의해 종속되어 있지 않으며 물리적 스키마 변경에 재작성될 필요가 없다면, 물리적 데이터 독립성(physical data dependency)을 유지하고 있다고 할 수 있다.